{"version":3,"sources":["unknown"],"names":["global","factory","exports","module","define","amd","self","echarts","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__spreadArrays","il","r","k","a","j","jl","Browser","firefox","ie","edge","weChat","Env","browser","node","wxa","worker","canvasSupported","svgSupported","touchEventsSupported","pointerEventsSupported","domSupported","env","wx","getSystemInfoSync","document","navigator","detect","userAgent","ua","match","test","version","createElement","getContext","SVGRect","window","BUILTIN_OBJECT","TYPED_ARRAY","objToString","toString","arrayProto","nativeForEach","forEach","nativeFilter","filter","nativeSlice","slice","nativeMap","map","ctorFunction","protoFunction","methods","$override","name","fn","idStart","guid","logError","args","_i","console","error","clone","source","result","typeStr","isPrimitive","len","Ctor","from","isDom","key","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","mergeAll","targetAndSources","extend","defaults","overlay","keysArr","keys","createCanvas","indexOf","array","value","inherits","clazz","baseClazz","clazzPrototype","F","prop","superClass","mixin","override","getOwnPropertyNames","keyList","isArrayLike","data","each","arr","cb","context","push","reduce","memo","find","obj","bindPolyfill","func","concat","bind","isFunction","curry","isString","isStringSafe","isNumber","type","isTypedArray","nodeType","ownerDocument","isGradientObject","colorStops","isPatternObject","image","isRegExp","eqNaN","retrieve","retrieve2","value0","value1","retrieve3","value2","normalizeCssArray","val","assert","condition","message","Error","trim","str","replace","primitiveKey","setAsPrimitive","HashMap","isArr","thisMap","visit","set","get","removeKey","createHashMap","concatArray","newArray","offset","createObject","proto","properties","StyleCtor","hasOwn","own","noop","zrUtil","freeze","x","y","copy","out","v","clone$1","add","v1","v2","scaleAndAdd","sub","Math","sqrt","lenSquare","lengthSquare","mul","div","dot","scale","normalize","distance","dist","distanceSquare","distSquare","negate","lerp","applyTransform","m","min","max","vector","Param","e","topTarget","Draggable","handler","on","_dragStart","_drag","_dragEnd","draggingTarget","draggable","parent","_draggingTarget","dragging","_x","offsetX","_y","offsetY","dispatchToElement","event","dx","dy","drift","dropTarget","findHover","lastDropTarget","_dropTarget","Eventful","eventProcessors","_$eventProcessor","query","_$handlers","_h","eventProcessor","normalizeQuery","h","wrap","ctx","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","splice","isSilent","eventName","off","eventType","newList","l","trigger","argLen","hItem","afterTrigger","triggerWithContext","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","round","subRowMask","subRowStart","sum","colLocalIdx","colTag","buildTransformer","src","dest","mA","det","vh","srcPointX","srcPointY","pk","EVENT_SAVED_PROP","_calcOut","transformLocalCoord","elFrom","elTarget","inX","inY","transformCoordWithViewport","el","inverse","getBoundingClientRect","isCanvasEl","saved","markers","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","marker","stl","style","idxLR","idxTB","cssText","join","appendChild","transformerName","oldSrcCoords","srcCoords","destCoords","oldCoordTheSame","rect","ii","left","top","offsetLeft","offsetTop","nodeName","toUpperCase","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut$1","clientToLocal","calculate","calculateZrXY","layerX","zrX","zrY","layerY","ex","clientX","ey","clientY","box","getNativeEvent","normalizeEvent","isTouch","wheelDelta","getWheelDeltaMayPolyfill","zrDelta","detail","touch","targetTouches","changedTouches","button","which","undefined","rawWheelDelta","deltaX","deltaY","delta","abs","sign","opt","attachEvent","removeEventListener","detachEvent","stop","preventDefault","stopPropagation","cancelBubble","returnValue","isMiddleOrRightButtonOnMouseUpDown","GestureMgr","_track","recognize","root","_doTrack","_recognize","clear","touches","trackItem","points","pos","recognizers","gestureInfo","dist$1","pointPair","center","pinch","tracks","trackLen","pinchEnd","pinchPre","pinchScale","isFinite","pinchCenter","pinchX","pinchY","SILENT","makeEventPacket","eveType","targetInfo","gestureEvent","zrByTouch","stopEvent","EmptyProxy","_super","_this","dispose","setCursor","HoveredResult","handlerNames","Handler","storage","painter","proxy","painterRoot","_hovered","setHandlerProxy","_draggingMgr","mousemove","isOutside","isOutsideBoundary","lastHovered","lastHoveredTarget","__zr","hovered","hoveredTarget","cursor","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","resize","dispatch","eventArgs","setCursorStyle","cursorStyle","silent","eventKey","eventPacket","__hostTarget","eachOtherLayer","layer","exclude","list","getDisplayList","hoverCheckResult","ignore","isHover","processGesture","stage","_gestureMgr","gestureMgr","dom","res","_downEl","_downPoint","_upEl","displayable","rectHover","ignoreClip","clipPath","getClipPath","contain","hostEl","handlerInstance","getWidth","getHeight","create$1","identity","copy$1","mul$1","m1","m2","out0","out1","out2","out3","out4","out5","translate","rotate","rad","aa","ac","atx","ab","ad","aty","st","sin","ct","cos","scale$1","vx","vy","invert","clone$2","matrix","mIdentity","EPSILON","isNotAroundZero","scaleTmp","tmpTransform","originTransform","Transformable","setPosition","setScale","scaleX","scaleY","setOrigin","originX","originY","needLocalTransform","rotation","updateTransform","parentHasTransform","transform","getLocalTransform","_resolveGlobalScaleRatio","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","getComputedTransform","transformNode","ancestors","pop","setLocalTransform","atan2","PI","decomposeTransform","ox","oy","transformCoordToLocal","transformCoordToGlobal","getLineScale","initDefaultProps","easing","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","pow","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","Clip","opts","_initialized","_startTime","_pausedTime","_paused","_life","life","_delay","delay","loop","gap","onframe","ondestroy","onrestart","step","globalTime","deltaTime","percent","easing$1","easingFunc","schedule","_restart","remainder","pause","resume","Entry","LinkedList","_len","insert","entry","insertEntry","head","tail","next","prev","remove","LRU","maxSize","_list","_maxSize","_map","put","removed","_lastRemovedEntry","leastUsedEntry","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","f","parseCssInt","charAt","parseFloat","parseInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","g","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","parse","cached","toLowerCase","strLen","iv","op","ep","fname","substr","params","split","alpha","hsla2rgba","hsla","rgba","rgba2hsla","R","G","B","vMin","vMax","L","H","S","deltaR","deltaG","deltaB","lift","color","level","colorArr","stringify","toHex","fastLerp","normalizedValue","colors","leftIndex","floor","rightIndex","ceil","leftColor","rightColor","dv","fastMapToColor","lerp$1","fullOutput","mapToColor","modifyHSL","modifyAlpha","arrColor","lum","backgroundLum","random","arraySlice","interpolateNumber","p0","p1","interpolate1DArray","interpolate2DArray","len2","add1DArray","add2DArray","fillArray","val0","val1","arrDim","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","isNaN","is1DArraySame","catmullRomInterpolate","p2","p3","t2","t3","v0","catmullRomInterpolate1DArray","catmullRomInterpolate2DArray","cloneValue","ret","rgba2String","guessArrayDim","tmpRgba","Track","propName","keyframes","maxTime","interpolable","_needsSort","_isAllValueEqual","_lastFrame","_lastFramePercent","isFinished","_finished","setFinished","_additiveTrack","needsAnimate","getAdditiveTrack","addKeyframe","time","arrayDim","lastFrame","colorArray","isValueColor","kf","prepare","additiveTrack","kfs","sort","kfsLen","lastKf","startValue","additiveValue","isAdditive","valueKey","kfsNum","frameIdx","start","nextFrame","frame","range","w","targetArr","_additiveValue","useSpline","_addToTarget","Animator","additiveTo","_tracks","_trackKeys","_maxTime","_started","_clip","_target","_loop","_additiveAnimators","getTarget","changeTarget","when","props","whenWithKeys","propNames","track","initialValue","_getAdditiveTrack","lastFinalKf","isPaused","_doneCallback","_setTracksFinished","doneList","_doneList","_abortedCallback","animation","abortedList","_abortedList","removeClip","tracksKeys","trackName","additiveAnimators","getTrack","forceAnimate","clip","stillHasAdditiveAnimator","onframeList","_onframeList","addClip","forwardToLast","during","done","aborted","getClip","stopTracks","allAborted","saveFinalToTarget","trackKeys","__changeFinalValue","finalProps","Point","other","equal","scalar","toArray","fromArray","input","onet","mathMin","mathMax","lt","rb","lb","rt","minTv","maxTv","BoundingRect","width","height","union","calculateTransform","intersect","mtv","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","overlap","dMin","Infinity","dMax","d0","d1","d2","d3","plain","isZero","tx","ty","maxX","maxY","textWidthCache","DEFAULT_FONT","_ctx","_cachedFont","defaultMeasureText","text","font","measureText","methods$1","cacheOfFont","innerGetBoundingRect","textAlign","textBaseline","getLineHeight","adjustTextX","adjustTextY","getBoundingRect","textLines","uniondRect","verticalAlign","parsePercent","maxValue","lastIndexOf","calculateTextPosition","textPosition","position","halfHeight","textVerticalAlign","align","dpr","devicePixelRatio","screen","deviceXDPI","logicalXDPI","DARK_MODE_THRESHOLD","DARK_LABEL_COLOR","LIGHT_LABEL_COLOR","LIGHTER_LABEL_COLOR","PRESERVED_NORMAL_STATE","PRIMARY_STATES_KEYS","DEFAULT_ANIMATABLE_MAP","tmpTextPosCalcRes","tmpBoundingRect","Element","id","animators","currentStates","states","_init","attr","markRedraw","beforeUpdate","afterUpdate","update","__dirty","updateInnerText","forceUpdate","textEl","_textContent","textConfig","isLocal","local","attachedTransform","textStyleChanged","innerOrigin","layoutRect","textOrigin","origin","relOriginX","relOriginY","textOffset","isInside","inside","innerTextDefaultStyle","_innerTextDefaultStyle","textFill","textStroke","autoStroke","canBeInsideText","insideFill","insideStroke","getInsideTextFill","getInsideTextStroke","outsideFill","outsideStroke","getOutsideFill","getOutsideStroke","fill","stroke","setDefaultTextStyle","dirtyStyle","isDarkMode","backgroundColor","getBackgroundColor","isDark","traverse","attrKV","setTextConfig","setTextContent","setClipPath","extra","hide","show","keyOrObj","saveCurrentToNormalState","toState","_innerSaveToNormal","normalState","_normalState","animator","fromStateTransition","__fromStateTransition","targetName","_savePrimaryToNormal","primaryKeys","hasState","getState","ensureState","clearStates","noAnimation","useState","stateName","keepCurrentStates","toNormalState","hasStates","animationCfg","stateTransition","state","stateProxy","useHoverLayer","hoverLayer","_toggleHoverLayerFlag","_applyStateObj","__inHover","duration","_textGuide","_updateAnimationTargets","REDARAW_BIT","useStates","stateObjects","notChange","stateObj","mergedState","_mergeStates","removeState","idx","replaceState","oldState","newState","forceAdd","newStateExists","toggleState","enable","mergedTextConfig","transition","needsRestoreToNormal","transitionTarget","hasTransition","propNeedsTransition","_transitionState","_attachComponent","componentEl","zr","addSelfToZr","_detachComponent","removeSelfFromZr","_clipPath","removeClipPath","getTextContent","previousTextContent","removeTextContent","cfg","getTextGuideLine","setTextGuideLine","guideLine","removeTextGuideLine","textGuide","refreshHover","refresh","dirty","inHover","textContent","addAnimator","removeAnimator","animate","updateDuringAnimation","wakeUp","stopAnimation","scope","leftAnimators","animateTo","animationProps","animateFrom","getPaintRect","elProto","isGroup","logs","logDeprecatedError","xKey","yKey","warn","createLegacyProperty","privateKey","defineProperty","enhanceArray","animatable","reverse","animateToShallow","finishCount","doneHappened","cfgDone","cfgAborted","doneCb","abortedCb","force","copyArrShallow","is2DArray","copyValue","sourceArr","len0","len1","topKey","animatableKeys","changedKeys","targetKeys","additive","setToFinal","animateAll","innerKey","keyLen","existsAnimators","existsAnimatorsOnSameTarget","revertedSource","reversedTarget","sourceClone","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","makeAscendingRun","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","pivot","right","mid","gallopLeft","hint","lastOffset","maxOffset","tmp","gallopRight","TimSort","minGallop","runStart","runLength","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","mergeLow","mergeHigh","cursor1","cursor2","_minGallop","count1","count2","exit","customCursor","customDest","remaining","ts","minRun","invalidZErrorLogged","logInvalidZError","shapeCompareFunc","zlevel","z","z2","Storage","_roots","_displayList","_displayListLen","displayableSortFunc","includeIgnore","displayList","updateDisplayList","roots","_updateAndAddDisplayable","clipPaths","userSetClipPath","currentClipPath","parentClipPath","childrenRef","children","child","disp","__clipPaths","decalEl","getDecalElement","addRoot","delRoot","delAllRoots","getRoots","requestAnimationFrame","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","setTimeout","requestAnimationFrame$1","Animation","_running","_time","_pauseStart","_clipsHead","_clipsTail","notTriggerFrameAndStageUpdate","Date","getTime","nextClip","finished","_startLoop","options","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","pointer","globalNativeListenerNames","wheelEventSupported","isPointerFromTouch","pointerType","setTouchTimer","touching","touchTimer","clearTimeout","markTouch","normalizeGlobalEvent","instance","FakeGlobalEvent","isLocalEl","elTmp","domBelongToZr","parentNode","stopImmediatePropagation","currentTarget","localDOMHandlers","mousedown","__mayPointerCapture","downPoint","__togglePointerCapture","mouseup","__pointerCapturing","element","toElement","relatedTarget","wheel","mousewheel","touchstart","__lastTouchMoment","touchmove","touchend","click","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","capture","listener","mounted","listenerOpts","domTarget","unmountDOMEventListeners","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","_globalHandlerScope","isPointerCapturing","globalHandlerScope","STYLE_MAGIC_KEY","DEFAULT_COMMON_STYLE","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","opacity","blend","DEFAULT_COMMON_ANIMATION_PROPS","PRIMARY_STATES_KEYS$1","Displayable","useStyle","beforeBrush","afterBrush","innerBeforeBrush","innerAfterBrush","shouldBePainted","viewWidth","viewHeight","considerClipPath","considerAncestors","invisible","culling","isDisplayableCulled","isZeroArea","parent_1","rectContain","coord","_paintRect","elRect","shadowSize","tolerance","dirtyRectTolerance","setPrevPaintRect","paintRect","_prevPaintRect","getPrevPaintRect","animateStyle","targetKey","setStyle","STYLE_CHANGED_BIT","_rect","styleChanged","styleUpdated","createStyle","__hoverStyle","isStyleObject","_mergeStyle","targetStyle","sourceStyle","getAnimationStyleProps","mergedStyle","dispProto","incremental","tmpRect","viewRect","mathPow","mathSqrt","EPSILON$1","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","isNotAroundZero$1","cubicAt","cubicDerivativeAt","cubicRootAt","c","A","C","t1","disc","K","discSqrt","Y1","Y2","T","theta","acos","ASqrt","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","x0","y0","x1","y1","x2","y2","x3","y3","interval","_t","cubicLength","iteration","px","py","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","quadraticLength","mathMin$1","mathMax$1","mathSin","mathCos","PI2","end","extremity","fromPoints","bottom","fromLine","xDim","yDim","fromCubic","cubicExtrema$1","cubicAt$1","fromQuadratic","quadraticExtremum$1","quadraticAt$1","fromArc","rx","ry","startAngle","endAngle","anticlockwise","min$1","max$1","vec2Min","vec2Max","diff","angle","CMD","M","Q","Z","tmpOutX","tmpOutY","min2","max2","mathMin$2","mathMax$2","mathCos$1","mathSin$1","mathSqrt$1","mathAbs","PI2$1","hasTypedArray","Float32Array","tmpAngles","modPI2","radian","normalizeArcAngles","angles","newStartAngle","newEndAngle","PathProxy","notSaveData","_version","_xi","_yi","_x0","_y0","_saveData","increaseVersion","getVersion","segmentIgnoreThreshold","_ux","_uy","setDPR","setContext","beginPath","reset","_lineDash","_dashOffset","_pathSegLen","_pathLen","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","arcTo","radius","closePath","toStatic","setLineDash","lineDash","_dashIdx","lineDashSum","_dashSum","setLineDashOffset","setData","appendPath","path","appendSize","appendPathData","cmd","_expandData","newData","dashSum","nDash","dash","bezierLen","tmpLen","Number","MAX_VALUE","xi","yi","isFirst","_calculateLength","ux","uy","pathSegLen","pathTotalLen","segCount","rebuildPath","drawPart","accumLength","displayedLength","psi","isEllipse","breakBuild","ellipse","d_1","containStroke","lineWidth","_l","_a","_b","_s","containStroke$1","containStroke$2","PI2$2","normalizeRadian","PI2$3","containStroke$3","windingLine","dir","x_","CMD$1","PI2$4","EPSILON$2","isAroundEqual","swapExtrema","windingCubic","nRoots","nExtrema","y0_","y1_","unit","windingQuadratic","y_","windingArc","dTheta","tmp_1","containPath","isStroke","pathProxy","containStroke$4","DEFAULT_PATH_STYLE","strokePercent","fillOpacity","strokeOpacity","lineDashOffset","lineCap","miterLimit","strokeNoScale","strokeFirst","DEFAULT_PATH_ANIMATION_PROPS","pathCopyParams","Path","decal","_decalEl","buildPath","shape","decalElStyle","getDefaultShape","defaultStyle","getDefaultStyle","hasFill","pathFill","fillLum","isDarkLabel","shapeCfg","inBundle","pathUpdated","SHAPE_CHANGED_BIT","createPathProxy","hasStroke","needsUpdateRect","firstInvoke","rectWithStroke","_rectWithStroke","lineScale","strokeContainThreshold","localPos","dirtyShape","animateShape","setShape","shapeChanged","targetShape","targetShapePrimaryProps","shapeKeys","mergedShape","defaultProps","Sub","init","pathProto","subPixelOptimize","autoBatch","CMD$2","mathSqrt$2","mathAtan2","transformPath","nPoint","p_1","mathSqrt$3","mathSin$2","mathCos$2","PI$1","vMag","vRatio","u","vAngle","processArc","fa","fs","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathProxyFromString","cpx","cpy","subpathX","subpathY","prevCmd","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","pathData","SVGPath","isPathProxy","createPathOptions","innerOpts","createFromString","extendFromString","defaultOpts","mergePath","pathEls","pathList","pathEl","pathBundle","Group","_children","childAt","childOfName","childCount","_doAdd","addBefore","nextSibling","replaceAt","index","old","removeAll","eachChild","stopped","includeChildren","tmpMat","childRect","DEFAULT_IMAGE_STYLE","DEFAULT_IMAGE_ANIMATION_PROPS","sWidth","sHeight","isImageLike","ZRImage","_getSize","dim","size","imageSource","__image","otherDim","otherDimSize","CircleShape","Circle","r1","r2","r3","r4","total","subPixelOptimizeLine","outputShape","inputShape","subPixelOptimizeRect","originWidth","originHeight","positiveOrNegative","doubledPosition","RectShape","subPixelOptimizeOutputShape","Rect","optimizedShape","EllipseShape","Ellipse","subPixelOptimizeOutputShape$1","LineShape","Line","pointAt","interpolate","smoothSpline","isLoop","distance$1","segs","w2","w3","smoothBezier","smooth","constraint","cps","prevPoint","nextPoint","point","cp0","cp1","shift","buildPath$1","controlPoints","smoothConstraint","cp2","PolygonShape","Polygon","PolylineShape","Polyline","Gradient","addColorStop","LinearGradient","globalCoord","DEFAULT_TSPAN_STYLE","TSpan","setBoundingRect","tspanProto","parseXML","svg","parser","DOMParser","parseFromString","svgNode","firstChild","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","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","exec","matchedIndex","pushTokens","substring","pendingList","calculatedHeight","calculatedWidth","stlPadding","truncateLine","finishLine","line","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","fontSize","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","fontFamily","fontWeight","fontStyle","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","count","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","item","idNum","obj1","obj2","key1","convertOptionIdName","key2","idOrName","defaultValue","isNameSpecified","componentModel","makeInternalComponentId","idSuffix","setComponentTypeToKeyInfo","mappingResult","mainType","componentModelCtor","subType","determineSubType","newCmptOption","existComponent","queryDataIndex","payload","dataIndexInside","dataIndex","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","getAttribute","getTooltipRenderMode","renderModeOption","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","method","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","dataIndices","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","img","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","textStyle","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","polygon","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","getLayoutRect","positionInfo","containerRect","containerHeight","verticalMargin","horizontalMargin","positionElement","hv","boundingMode","fetchLayoutMode","layoutMode","mergeLayoutParam","targetOption","ignoreSize","hResult","vResult","names","hvIdx","newParams","newValueCount","merged","mergedValueCount","enoughParamNumber","hasProp","hasValue","getLayoutParams","copyLayoutParams","inner","ComponentModel","uid","mergeDefaultAndTheme","inputPositionParams","themeModel","getTheme","getDefaultOption","optionUpdated","newCptOption","isInit","ctor","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","internalField","seriesIndices","airaOption","enabled","mergeTheme","seriesId","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","toArr","toObj","globalCompatStyle","isTheme","axisName","axisOpt","axisPointer","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radarOpt","nameGap","axisNameGap","geo","geoOpt","regions","regionObj","timelineOpt","toolboxOpt","feature","featureOpt","tooltip","set$1","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","BAR_ITEM_STYLE_MAP","compatBarItemStyle","oldName","newName","compatPieLabel","alignTo","edgeDistance","compatSunburstState","downplay","blur","compatGraphFocus","focusNodeAdjacency","traverseTree","globalBackwardCompat","seriesType","clipOverflow","clockWise","hoverOffset","scaleSize","pointerColor","backgroundStyle","highlightPolicy","mapType","mapLocation","hoverAnimation","dataRange","visualMap","componentName","dataStack","stackInfoMap","stackInfoList","stackInfo","stackResultDimension","getCalculationInfo","stackedOverDimension","stackedDimension","stackedByDimension","isStackedByIndex","setCalculationInfo","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","dims","targetData","byValue","stackedDataRawIndex","getRawIndex","stackedOver","rawIndexOf","getByRawIndex","hostModel","SourceImpl","dimensionsDetectedCount","encodeDefine","isSourceInstance","createSource","sourceData","thisMetaRawOption","detectSourceFormat","determined","determineSourceDimensions","makeEncodeDefine","createSourceFromSeriesDataOption","cloneSourceShallow","normalizeDimensionsOption","arrayRowsTravelFirst","objectRowsCollectDimensions","colArr","firstIndex","dimensions_1","nameMap","rawItem","displayName","exist","_c","providerMethods","mountMethods","DefaultDataProvider","sourceParam","dimSize","_source","_data","_offset","_dimSize","getSource","getItem","appendData","clean","pure","persistent","provider","getMethodMapKey","getItemForTypedArray","countForTypedArray","fillStorage","fillStorageForTypedArray","rawItemGetter","getRawSourceItemGetter","rawCounter","getRawSourceDataCounter","dimExtent","appendDataSimply","newCol","oldCol","getItemSimply","rawData","rawSourceItemGetterMap","col","countSimply","rawSourceDataCounterMap","getRawValueSimply","rawSourceValueGetterMap","getRawSourceValueGetter","retrieveRawValue","getRawDataItem","getProvider","dimInfo","DIMENSION_LABEL_REG","DataFormatMixin","getDataParams","rawValue","getRawValue","rawDataIndex","getName","itemOpt","getItemVisual","isSeries","userOutput","componentSubType","dimensionNames","status","extendParams","getItemModel","dimensionIndex","formatTooltip","multipleSeries","normalizeTooltipFormatResult","markupText","markupFragment","createTask","Task","_reset","_plan","plan","_count","_onDirty","onDirty","_dirty","perform","performArgs","upTask","_upstream","skip","outputData","__pipeline","currentTask","planResult","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","modBy","modDataCount","forceFirstProgress","_doReset","_outputDueEnd","_dueEnd","_progress","_dueIndex","progress","_doProgress","outputDueEnd","_settedOutputEnd","unfinished","iterator","_callingProgress","downstream","_downstream","pipe","downTask","_disposed","getUpstream","getDownstream","setOutputEnd","winCount","it","sStep","sCount","modNext","sequentialNext","parseDataValue","ordinalMeta","parseAndCollect","valueParserMap","SortOrderComparator","order","incomparable","isDesc","_resultLT","_incomparable","evaluate","lval","rval","lvalTypeof","rvalTypeof","lvalFloat","rvalFloat","lvalNotNumeric","rvalNotNumeric","lvalIsStr","rvalIsStr","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","tmpArr","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","PI2$6","CMD$3","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","tmpProjPoint","linePoints","minTurnAngle","angleCos","minTurnAngleCos","tan","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","remained","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","i_1","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","circle","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","url","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","to","finderOpt","fromResult","toResult","toSeries","dimension","dividingMethod","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","newArr","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","prepareLayoutBarSeries","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","cartesian","baseAxis","cnt","axisMinGaps","valuesInAxis","makeColumnLayout","seriesInfoList","axisExtent","bandWidth","getBandWidth","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","axisKey","stackId","doCalBarWidthAndOffset","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","c2","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","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","gradient","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","_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$7","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","isEC4CompatibleStyle","elType","hasOwnTextContentOption","hasOwnTextConfig","legacy","convertFromEC4CompatibleStyle","hostStyle","srcStyle","textContentStyle","hasOwnPos","textDistance","convertEC4CompatibleRichItem","richItem","textStrokeWidth","textLineHeight","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","inner$6","_nonShapeGraphicElements","compoundPath","graphicOption","elements","GraphicComponentModel","existList","flattenedList","_flatten","elOptionsToUpdate","_elOptionsToUpdate","newElOption","setKeyInfoToNewElOption","mergeNewElOptionToExist","setLayoutInfoToExist","$action","optionList","parentOption","useElOptionsToUpdate","els","GraphicComponentView","_elMap","graphicModel","_lastGraphicModel","_updateElements","_relocate","rootGroup","elOption","elExisting","parentId","targetElParent","elOptionStyle","textContentOption","convertResult","elOptionCleaned","getCleanedElOption","createEl","removeEl","textContentExisting","elInner","__ecGraphicWidthOption","__ecGraphicHeightOption","setEventData","elOptions","apiWidth","apiHeight","parentEl","isParentRoot","parentElInner","__ecGraphicWidth","__ecGraphicHeight","containerInfo","bounding","graphicType","__ecGraphicId","existElParent","isSetLoc","isSet","existElOption","newElParentOption","newElOptCopy","newType","existItem","existingGroupOpt","newGroupOpt","findPointFromSeries","getTooltipPosition","isStacked","inner$7","axisTrigger","currTrigger","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","outputPayload","showValueMap","dataByCoordSys","updaters","showPointer","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","coordSysType","coordSysMainType","dataByAxis","valueLabelOpt","seriesDataIndices","outputAxesInfo","valItem","tooltipOption","highDownKey","lastHighlights","newHighlights","toHighlight","toDownplay","inner$8","each$4","initGlobalListeners","initialized","useHandler","doEnter","onLeave","dis","makeDispatchAction","dispatchTooltipFinally","pendings","showLen","showTip","hideLen","hideTip","actuallyPayload","unregister","AxisPointerView","triggerOn","inner$9","clone$3","bind$1","BaseAxisPointer","_dragging","_axisModel","_axisPointerModel","_lastValue","_lastStatus","_group","handle","_handle","makeElOption","graphicKey","_lastGraphicKey","moveAnimation","_moveAnimation","determineAnimation","createPointerEl","createLabelEl","doUpdateProps","updateProps$1","updatePointerEl","updateLabelEl","updateMandatoryProps","_renderHandle","isCategoryAxis","useSnap","pointerOption","pointerEl","labelEl","updateLabelShowHide","updateHandleTransform","handleModel","onmousemove","onmousedown","_onHandleDragMove","ondragend","_onHandleDragEnd","handleSize","_moveHandleToValue","getHandleTransProps","getHandleTransform","trans","_payloadInfo","lastProp","_doDispatchAxisPointer","cursorPoint","buildLabel","xy","xDimIndex","propsEqual","lastProps","equals_1","buildElStyle","axisPointerType","buildLabelElOption","labelPos","getValueLabel","paddings","confineInContainer","bgColor","params_1","axisDimension","seriesData","idxItem","getTransformedPosition","layoutInfo","buildCartesianSingleLabelElOption","textLayout","makeLineShape","makeRectShape","CartesianAxisPointer","otherExtent","pixelValue","elStyle","pointerShapeBuilder","currPosition","cursorOtherValue","tooltipOptions","getAxisDimIndex","shadow","AxisPointerModel","shadowStyle","icon","TooltipModel","showContent","alwaysShowContent","displayMode","confine","showDelay","hideDelay","transitionDuration","enterable","shouldTooltipConfine","tooltipModel","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","getSize","ratioX","ratioY","visibility","isShow","getOuterSize","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","TooltipRichContent","makeStyleCoord$1","shadowOuterSize","calcShadowOuterSize","mathMaxWith0","bind$2","each$5","parsePercent$3","proxyRect","TooltipView","_renderMode","_tooltipContent","_tooltipModel","_ecModel","_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","vAlign","viewSize","boxLayoutPosition","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","lastItem","indexAxis","lastIndices","lastIdxItem","newIdxItem","modelCascade","resultModel","gapH","gapV","domWidth","domHeight","rectWidth","rectHeight","getDefaultSelectorOptions","LegendModel","_updateSelector","_updateData","legendData","hasSelected","potentialData","availableNames","isPotential","_availableNames","unSelect","toggleSelected","allSelect","inverseSelect","getOrient","itemGap","itemWidth","itemHeight","inactiveColor","inactiveBorderColor","selectorLabel","selectorPosition","selectorItemGap","selectorButtonGap","legendSelectActionHandler","isToggleSelect","legendModel","isItemSelected","layout$2","viewportSize","makeBackground","curry$1","each$6","Group$1","LegendView","newlineDisabled","_contentGroup","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","isFirstRender","resetInner","itemAlign","renderInner","mainRect","layoutInner","_backgroundEl","contentGroup","legendDrawnMap","selectMode","legendSymbolType","itemGroup","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","_createSelector","selectorGroup","createSelectorButton","selectorItem","onclick","emphasisLabelModel","legendModelItemStyle","itemIcon","legendGlobalTooltipModel","setSymbolStyle","legendSymbolCenter","hitRect","legendIndex","__legendDataIndex","contentRect","contentPos","selectorRect","selectorPos","orientIdx","hw","yx","dataName","isUseHoverLayer","legendFilter","ScrollableLegendModel","setScrollDataIndex","scrollDataIndex","mergeAndNormalizeLayoutParams","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","horizontal","vertical","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","raw","Group$2","WH","XY","ScrollableLegendView","_currentIndex","_containerGroup","_controllerGroup","__rectSize","controllerGroup","pageIconSizeArr","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","processMaxSize","_layoutContentAndController","containerGroup","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","targetDataIndex","defaultIndex","legendDataIdx","TitleModel","subtext","subtarget","TitleView","titleModel","subtextStyleModel","subText","subTextEl","sublink","groupRect","alignStyle","fillLabel","inner$a","MarkerModel","createdBySelf","hostSeries","__hostSeries","markerOpt","markerModel","createMarkerModelFromSeries","getMarkerModelFromSeries","MarkPointModel","masterMarkerModel","hasXOrY","hasXAndY","markerTypeCalculatorWithExtent","otherDataDim","targetDataDim","otherCoordIndex","targetCoordIndex","coordArr","calcDataDim","numCalculate","coordArrValue","markerTypeCalculator","median","dataTransform","getAxisInfo$1","coordInfo","baseDataDim","valueDataDim","radiusAxis","angleAxis","valueIndex","dataDimToCoordDim","dataFilter$1","sum_1","count_1","inner$b","MarkerView","markerGroupMap","markKeep","drawGroup","seriesModelList","updateMarkerLayout","xPx","yPx","MarkPointView","markPointModel","mpModel","symbolDrawMap","createList$1","coordDimsInfos","dataOpt","MarkLineModel","straightLineProto","bezierCurveProto","StraightLineShape","CurveShape","isStraightLine","ECLinePath","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","createSymbol$1","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","inner$c","markLineTransform","mlModel","itemArray","mlType","mlFrom","mlTo","normalizedItem","isInifinity","ifMarkLineHasOnlyDim","fromCoord","toCoord","otherDimIndex","markLineFilter","updateSingleMarkerEndLayout","MarkLineView","markLineModel","mlData_1","fromData_1","toData_1","lineDrawMap","createList$2","fromData","toData","updateDataVisualAndLayout","fromSymbolRotate","fromSymbolSize","fromSymbol","toSymbolRotate","toSymbolSize","toSymbol","optData","dimValueGetter$1","MarkAreaModel","inner$d","markAreaTransform","maModel","ltCoord","rbCoord","isInifinity$1","ifMarkAreaHasOnlyDim","markAreaFilter","getSingleMarkerEndPoint","dimPermutations","MarkAreaView","markAreaModel","areaData_1","areaGroupMap","polygonGroup","areaData","createList$3","xValue","yValue","DATA_ZOOM_AXIS_DIMENSIONS","SERIES_COORDS","isCoordSupported","coordType","getAxisMainType","findEffectedDataZooms","axisRecords","effectedModels","effectedModelMap","dataZoomModel","addToEffected","foundNewLink","processSingle","isLinked","markAxisControlled","isLink","eachTargetAxis","axisIdxArr","collectReferCoordSysModelInfo","coordSysInfoWrap","infoList","infoMap","coordSysUid","axisModels","DataZoomAxisInfo","indexList","indexMap","axisCmptIdx","DataZoomModel","_autoThrottle","_noTarget","_rangePropMode","inputRawOption","retrieveRawOption","settledOption","_doInit","_setDefaultThrottle","_updateRangeUse","_resetTarget","optionOrient","targetAxisIndexMap","_targetAxisInfoMap","hasAxisSpecified","_fillSpecifiedTargetAxis","_orient","_makeAutoOrientByTargetAxis","_fillAutoTargetAxisByOrient","refering","needAuto","setParallelAxis","gridModel_1","axModel","globalOption","rangePropMode","rangeModeInOption","percentSpecified","valueSpecified","noTarget","getFirstTargetAxisModel","firstAxisModel","getAxisProxy","getAxisModel","__dzAxisProxy","setRawRange","setCalculatedRange","getPercentRange","axisProxy","findRepresentativeAxisProxy","getDataPercentWindow","getValueRange","getDataValueWindow","firstProxy","axisDimList","hostedBy","getRangePropMode","filterMode","DataZoomView","SliderZoomModel","handleIcon","moveHandleSize","moveHandleIcon","showDetail","showDataShadow","realtime","zoomLock","brushSelect","sliderMove","handleEnds","handleIndex","minSpan","maxSpan","restrict","handleSpan","originalDistSign","getSpanSign","extentMinSpan","realExtent","currDistSign","Rect$1","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","_onBrush","_onBrushEnd","_buildView","_updateView","thisGroup","_brushing","brushRect","_resetLocation","_resetInterval","barGroup","sliderGroup","_renderDataShadow","_positionGroup","showMoveHandle","coordRect","_findCoordRect","ecSize","layoutParams","_location","_size","targetAxisModel","otherAxisInverse","_dataShadowInfo","_getViewExtent","clickPanel","_onClickPanel","_onBrushStart","_prepareDataShadowInfo","dataShadowSegs","getShadowDim","otherDataExtent","otherOffset","otherShadowExtent","thisShadowExtent","areaPoints","thisCoord","stride","lastIsEmpty","otherCoord","createDataShadowGroup","isSelectedArea","getTargetSeriesModels","thisAxis","getOtherDim","thisDim","handles","handleLabels","filler","_onDragMove","_onDragEnd","onmouseover","_showDataInfo","onmouseout","bRect","_handleHeight","_handleWidth","handleColor","actualMoveZone","moveHandleHeight","moveHandle_1","moveHandle","iconSize","moveZoneExpandSize","moveZone","ondragstart","_range","viewExtent","_handleEnds","_updateInterval","viewExtend","minMaxSpan","getMinMaxSpan","percentExtent","lastRange","nonRealtime","displaybles","handleInterval","handleHeight","segIntervals","segGroup","_updateDataInfo","dataInterval","calculateDataWindow","valueWindow","_formatLabel","orderedHandleEnds","setLabel","barTransform","textPoint","labelPrecision","valueStr","showOrHide","changed","_dispatchZoomAction","localPoint","_brushStart","_brushStartTime","brushShape","brushEndTime","_updateBrushRect","mouseX","mouseY","brushStart","endPoint","dataZoomId","coordSysInfoList","each$7","asc$1","AxisProxy","_dimName","_axisIndex","_dataZoomModel","_valueWindow","_percentWindow","axisMainType","_minMaxSpan","_dataExtent","percentWindow","hasPropModeValue","boundPercent","boundValue","spans","restrictSet","fromWindow","toWindow","fromExtent","toExtent","toValue","suffix","targetSeries","calculateDataExtent","_updateMinMaxSpan","dataWindow","_setAxisModel","filterData","leftOut","rightOut","thisHasValue","thisLeftOut","thisRightOut","isInWindow","percentSpan","valueSpan","eachAxisModel","proxyList","percentRange","valueRange","InsideZoomModel","disabled","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","ATTR","take","resourceKey","userKey","getStore","release","uKey","isTaken","RoamController","mousedownHandler","_mousedownHandler","mousemoveHandler","_mousemoveHandler","mouseupHandler","_mouseupHandler","mousewheelHandler","_mousewheelHandler","pinchHandler","_pinchHandler","controlType","_opt","isDragging","isPinching","_pinching","setPointerChecker","pointerChecker","isAvailableBehavior","oldX","oldY","newX","newY","shouldZoom","shouldMove","absWheelDeltaDelta","factor","checkPointerAndTrigger","absDelta","scrollDelta","controller","behaviorToCheck","contollerEvent","inner$e","apiInner","coordSysRecordMap","coordSysRecord","dataZoomInfoMap","dzReferCoordSysWrap","dzCoordSysInfo","createCoordSysRecord","dzReferCoordSysInfo","getRange","firstDzInfo","firstDzKey","disposeCoordSysRecord","controllerParams","mergeControllerParams","containsPoint","setViewInfoToCoordSysRecord","dzInfo","disposeCoordSysRecordIfNeeded","coordSysKeyArr","dzUid","typePriority","dataZoomInfo","oneType","InsideZoomView","pan","getRangeHandlers","scrollMove","directionInfo","getDirectionInfo","percentPoint","signal","pixelStart","pixelLength","pixel","makeMover","getPercentDelta","percentDelta","oldPoint","newPoint","radiusExtent","getRadiusAxis","angleExtent","getAngleAxis","ToolboxFeature","registerFeature","getFeature","ToolboxModel","featureName","Feature","itemSize","showTitle","ToolboxView","toolboxModel","featureOpts","_features","featureNames","_featureNames","processFeature","featureModel","newTitle","isUserFeatureName","unusable","createIconPaths","setIconStatus","iconName","iconPaths","iconStatus","iconStyleModel","iconStyleEmphasisModel","icons","getIcons","titles","iconsMap","titlesMap","pathEmphasisState","__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","RegExp","parseTSVContents","tsv","tsvLines","parseListContents","hasName","parseContents","blockMetaList","blockMeta","DataView","viewMain","textarea","optionToContent","contentToOption","htmlOrDom","readOnly","buttonContainer","buttonStyle","closeButton","refreshButton","textareaColor","textareaBorderColor","buttonColor","buttonTextColor","tryMergeDataOption","originalData","newVal","newValIsObject","shouldDeleteName","newSeriesOptList","BRUSH_PANEL_GLOBAL","mathMin$7","mathMax$7","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","getKey","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","nameSequence","updateBaseRect","localRange","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","getLinearBrushOtherExtent","IRRELEVANT_EXCLUDES","onIrrelevantElement","targetCoordSysModel","makeRectPanelClipPath","normalizeRect","localPoints","makeLinearBrushOtherExtent","specifiedXYIndex","brushWidth","makeRectIsTargetByCursor","targetModel","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","geoModel","axisConvert","rangeOrCoordRange","xminymin","xmaxymax","axisNameIndex","axisDiffProcessor","refer","scales","xyMinMaxCurr","xyMinMaxOrigin","sizeCurr","sizeOrigin","each$8","inner$f","newSnapshot","storedSnapshots","getStoreSnapshots","snapshot","clear$1","snapshots","SelectDataZoomModel","SelectDataZoomView","each$9","DATA_ZOOM_ID_BASE","DataZoomFeature","brushController","updateZoomBtnStatus","updateBackBtnStatus","handlers","eventParam","brushTargetManager","makeAxisFinder","setBatch","findDataZoom","minValueSpan","maxValueSpan","dzModel","nextActive","isZoomActive","dataZoomSelectActive","dzFeatureModel","xAxisId","yAxisId","zoomActive","dzOptions","finderResult","buildInternalOptions","axisIndexPropName","$fromToolbox","RestoreOption","DEFAULT_OPTION","inner$g","decalPaletteScope","ariaVisual","ariaModel","setDecal","decalModel","useDecal","paletteScopeGroupByType_1","decalScope","enableAriaDecal","dataAll_1","idxMap_1","decalScope_1","dataCount_1","paletteDecal","specifiedDecal","mergeDecal","resultDecal","labelLocale","seriesCnt","maxDataCnt","maxSeriesCnt","displaySeriesCnt","ariaLabel","getTitle","seriesLabels_1","seriesCount","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$7","PI2$8","degree","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","newLen","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","defs","getElementsByTagName","defs_1","contains","doUpdate","onUpdate","addDom","removeDom","getDoms","doms","tagName","tags","markAllUnused","markDomUsed","markDomUnused","isDomUnused","removeUnused","getSvgProxy","getSvgElement","isLinearGradient","isRadialGradient","isGradient","GradientManager","addWithoutUpdate","that_1","__dom","markUsed","updateDom","stop_1","hex","isPattern","patternDomMap","PatternManager","patternDom","SVGElement","prevImage","imageSrc","HTMLCanvasElement","createdImage","generateClipPathsKey","hasClipPath","ClippathManager","_refGroups","_keyDuplicateCount","_getClipPathGroup","prevDisplayable","keyDuplicateCount","clipPathKey","clipGroup","clipPathEl","svgProxy","newRefGroupsMap","ShadowManager","_shadowDomMap","_shadowDomPool","_getFromPool","shadowDom","domChild","shadowKey","getShadowKey","_shadowDom","globalScale","stdDx","stdDy","stdDeviation","shadowDomsPool","parseInt10$1","checkParentAvailable","insertAfter","prevSibling","prepend","removeFromMyParent","SVGPainter","createMethodNotSupport","svgDom","bgRoot","_gradientManager","_patternManager","_clipPathManager","_shadowManager","viewport","_svgDom","_backgroundRoot","_viewport","_visibleList","_backgroundNode","bgNode","tag","gradientManager","patternManager","clipPathManager","shadowManager","visibleList","listLen","newVisibleList","prevSvgElement","topPrevSvgElement","currentClipGroup","isAdd","_getDefs","viewportStyle","viewportNode","encodeURIComponent","outerHTML","innerDrawElementOnCanvas","util"],"mappings":"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","sourcesContent":["(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = global || self, factory(global.echarts = {}));\n}(this, (function (exports) { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\r\n    /* global Reflect, Promise */\r\n\r\n    var extendStatics = function(d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n\r\n    function __extends(d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    }\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\r\n\r\n    function __spreadArrays() {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    }\n\n    var Browser = (function () {\r\n        function Browser() {\r\n            this.firefox = false;\r\n            this.ie = false;\r\n            this.edge = false;\r\n            this.weChat = false;\r\n        }\r\n        return Browser;\r\n    }());\r\n    var Env = (function () {\r\n        function Env() {\r\n            this.browser = new Browser();\r\n            this.node = false;\r\n            this.wxa = false;\r\n            this.worker = false;\r\n            this.canvasSupported = false;\r\n            this.svgSupported = false;\r\n            this.touchEventsSupported = false;\r\n            this.pointerEventsSupported = false;\r\n            this.domSupported = false;\r\n        }\r\n        return Env;\r\n    }());\r\n    var env = new Env();\r\n    if (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\r\n        env.wxa = true;\r\n        env.canvasSupported = true;\r\n        env.touchEventsSupported = true;\r\n    }\r\n    else if (typeof document === 'undefined' && typeof self !== 'undefined') {\r\n        env.worker = true;\r\n        env.canvasSupported = true;\r\n    }\r\n    else if (typeof navigator === 'undefined') {\r\n        env.node = true;\r\n        env.canvasSupported = true;\r\n        env.svgSupported = true;\r\n    }\r\n    else {\r\n        detect(navigator.userAgent, env);\r\n    }\r\n    function detect(ua, env) {\r\n        var browser = env.browser;\r\n        var firefox = ua.match(/Firefox\\/([\\d.]+)/);\r\n        var ie = ua.match(/MSIE\\s([\\d.]+)/)\r\n            || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\r\n        var edge = ua.match(/Edge\\/([\\d.]+)/);\r\n        var weChat = (/micromessenger/i).test(ua);\r\n        if (firefox) {\r\n            browser.firefox = true;\r\n            browser.version = firefox[1];\r\n        }\r\n        if (ie) {\r\n            browser.ie = true;\r\n            browser.version = ie[1];\r\n        }\r\n        if (edge) {\r\n            browser.edge = true;\r\n            browser.version = edge[1];\r\n        }\r\n        if (weChat) {\r\n            browser.weChat = true;\r\n        }\r\n        env.canvasSupported = !!document.createElement('canvas').getContext;\r\n        env.svgSupported = typeof SVGRect !== 'undefined';\r\n        env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\r\n        env.pointerEventsSupported = 'onpointerdown' in window\r\n            && (browser.edge || (browser.ie && +browser.version >= 11));\r\n        env.domSupported = typeof document !== 'undefined';\r\n    }\n\n    var BUILTIN_OBJECT = {\r\n        '[object Function]': true,\r\n        '[object RegExp]': true,\r\n        '[object Date]': true,\r\n        '[object Error]': true,\r\n        '[object CanvasGradient]': true,\r\n        '[object CanvasPattern]': true,\r\n        '[object Image]': true,\r\n        '[object Canvas]': true\r\n    };\r\n    var TYPED_ARRAY = {\r\n        '[object Int8Array]': true,\r\n        '[object Uint8Array]': true,\r\n        '[object Uint8ClampedArray]': true,\r\n        '[object Int16Array]': true,\r\n        '[object Uint16Array]': true,\r\n        '[object Int32Array]': true,\r\n        '[object Uint32Array]': true,\r\n        '[object Float32Array]': true,\r\n        '[object Float64Array]': true\r\n    };\r\n    var objToString = Object.prototype.toString;\r\n    var arrayProto = Array.prototype;\r\n    var nativeForEach = arrayProto.forEach;\r\n    var nativeFilter = arrayProto.filter;\r\n    var nativeSlice = arrayProto.slice;\r\n    var nativeMap = arrayProto.map;\r\n    var ctorFunction = (function () { }).constructor;\r\n    var protoFunction = ctorFunction ? ctorFunction.prototype : null;\r\n    var methods = {};\r\n    function $override(name, fn) {\r\n        methods[name] = fn;\r\n    }\r\n    var idStart = 0x0907;\r\n    function guid() {\r\n        return idStart++;\r\n    }\r\n    function logError() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (typeof console !== 'undefined') {\r\n            console.error.apply(console, args);\r\n        }\r\n    }\r\n    function clone(source) {\r\n        if (source == null || typeof source !== 'object') {\r\n            return source;\r\n        }\r\n        var result = source;\r\n        var typeStr = objToString.call(source);\r\n        if (typeStr === '[object Array]') {\r\n            if (!isPrimitive(source)) {\r\n                result = [];\r\n                for (var i = 0, len = source.length; i < len; i++) {\r\n                    result[i] = clone(source[i]);\r\n                }\r\n            }\r\n        }\r\n        else if (TYPED_ARRAY[typeStr]) {\r\n            if (!isPrimitive(source)) {\r\n                var Ctor = source.constructor;\r\n                if (Ctor.from) {\r\n                    result = Ctor.from(source);\r\n                }\r\n                else {\r\n                    result = new Ctor(source.length);\r\n                    for (var i = 0, len = source.length; i < len; i++) {\r\n                        result[i] = clone(source[i]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\r\n            result = {};\r\n            for (var key in source) {\r\n                if (source.hasOwnProperty(key)) {\r\n                    result[key] = clone(source[key]);\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function merge(target, source, overwrite) {\r\n        if (!isObject(source) || !isObject(target)) {\r\n            return overwrite ? clone(source) : target;\r\n        }\r\n        for (var key in source) {\r\n            if (source.hasOwnProperty(key)) {\r\n                var targetProp = target[key];\r\n                var sourceProp = source[key];\r\n                if (isObject(sourceProp)\r\n                    && isObject(targetProp)\r\n                    && !isArray(sourceProp)\r\n                    && !isArray(targetProp)\r\n                    && !isDom(sourceProp)\r\n                    && !isDom(targetProp)\r\n                    && !isBuiltInObject(sourceProp)\r\n                    && !isBuiltInObject(targetProp)\r\n                    && !isPrimitive(sourceProp)\r\n                    && !isPrimitive(targetProp)) {\r\n                    merge(targetProp, sourceProp, overwrite);\r\n                }\r\n                else if (overwrite || !(key in target)) {\r\n                    target[key] = clone(source[key]);\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    function mergeAll(targetAndSources, overwrite) {\r\n        var result = targetAndSources[0];\r\n        for (var i = 1, len = targetAndSources.length; i < len; i++) {\r\n            result = merge(result, targetAndSources[i], overwrite);\r\n        }\r\n        return result;\r\n    }\r\n    function extend(target, source) {\r\n        if (Object.assign) {\r\n            Object.assign(target, source);\r\n        }\r\n        else {\r\n            for (var key in source) {\r\n                if (source.hasOwnProperty(key)) {\r\n                    target[key] = source[key];\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    function defaults(target, source, overlay) {\r\n        var keysArr = keys(source);\r\n        for (var i = 0; i < keysArr.length; i++) {\r\n            var key = keysArr[i];\r\n            if ((overlay ? source[key] != null : target[key] == null)) {\r\n                target[key] = source[key];\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    var createCanvas = function () {\r\n        return methods.createCanvas();\r\n    };\r\n    methods.createCanvas = function () {\r\n        return document.createElement('canvas');\r\n    };\r\n    function indexOf(array, value) {\r\n        if (array) {\r\n            if (array.indexOf) {\r\n                return array.indexOf(value);\r\n            }\r\n            for (var i = 0, len = array.length; i < len; i++) {\r\n                if (array[i] === value) {\r\n                    return i;\r\n                }\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n    function inherits(clazz, baseClazz) {\r\n        var clazzPrototype = clazz.prototype;\r\n        function F() { }\r\n        F.prototype = baseClazz.prototype;\r\n        clazz.prototype = new F();\r\n        for (var prop in clazzPrototype) {\r\n            if (clazzPrototype.hasOwnProperty(prop)) {\r\n                clazz.prototype[prop] = clazzPrototype[prop];\r\n            }\r\n        }\r\n        clazz.prototype.constructor = clazz;\r\n        clazz.superClass = baseClazz;\r\n    }\r\n    function mixin(target, source, override) {\r\n        target = 'prototype' in target ? target.prototype : target;\r\n        source = 'prototype' in source ? source.prototype : source;\r\n        if (Object.getOwnPropertyNames) {\r\n            var keyList = Object.getOwnPropertyNames(source);\r\n            for (var i = 0; i < keyList.length; i++) {\r\n                var key = keyList[i];\r\n                if (key !== 'constructor') {\r\n                    if ((override ? source[key] != null : target[key] == null)) {\r\n                        target[key] = source[key];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            defaults(target, source, override);\r\n        }\r\n    }\r\n    function isArrayLike(data) {\r\n        if (!data) {\r\n            return false;\r\n        }\r\n        if (typeof data === 'string') {\r\n            return false;\r\n        }\r\n        return typeof data.length === 'number';\r\n    }\r\n    function each(arr, cb, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        if (arr.forEach && arr.forEach === nativeForEach) {\r\n            arr.forEach(cb, context);\r\n        }\r\n        else if (arr.length === +arr.length) {\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                cb.call(context, arr[i], i, arr);\r\n            }\r\n        }\r\n        else {\r\n            for (var key in arr) {\r\n                if (arr.hasOwnProperty(key)) {\r\n                    cb.call(context, arr[key], key, arr);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function map(arr, cb, context) {\r\n        if (!arr) {\r\n            return [];\r\n        }\r\n        if (!cb) {\r\n            return slice(arr);\r\n        }\r\n        if (arr.map && arr.map === nativeMap) {\r\n            return arr.map(cb, context);\r\n        }\r\n        else {\r\n            var result = [];\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                result.push(cb.call(context, arr[i], i, arr));\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function reduce(arr, cb, memo, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = arr.length; i < len; i++) {\r\n            memo = cb.call(context, memo, arr[i], i, arr);\r\n        }\r\n        return memo;\r\n    }\r\n    function filter(arr, cb, context) {\r\n        if (!arr) {\r\n            return [];\r\n        }\r\n        if (!cb) {\r\n            return slice(arr);\r\n        }\r\n        if (arr.filter && arr.filter === nativeFilter) {\r\n            return arr.filter(cb, context);\r\n        }\r\n        else {\r\n            var result = [];\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                if (cb.call(context, arr[i], i, arr)) {\r\n                    result.push(arr[i]);\r\n                }\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function find(arr, cb, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = arr.length; i < len; i++) {\r\n            if (cb.call(context, arr[i], i, arr)) {\r\n                return arr[i];\r\n            }\r\n        }\r\n    }\r\n    function keys(obj) {\r\n        if (!obj) {\r\n            return [];\r\n        }\r\n        if (Object.keys) {\r\n            return Object.keys(obj);\r\n        }\r\n        var keyList = [];\r\n        for (var key in obj) {\r\n            if (obj.hasOwnProperty(key)) {\r\n                keyList.push(key);\r\n            }\r\n        }\r\n        return keyList;\r\n    }\r\n    function bindPolyfill(func, context) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        return function () {\r\n            return func.apply(context, args.concat(nativeSlice.call(arguments)));\r\n        };\r\n    }\r\n    var bind = (protoFunction && isFunction(protoFunction.bind))\r\n        ? protoFunction.call.bind(protoFunction.bind)\r\n        : bindPolyfill;\r\n    function curry(func) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        return function () {\r\n            return func.apply(this, args.concat(nativeSlice.call(arguments)));\r\n        };\r\n    }\r\n    function isArray(value) {\r\n        if (Array.isArray) {\r\n            return Array.isArray(value);\r\n        }\r\n        return objToString.call(value) === '[object Array]';\r\n    }\r\n    function isFunction(value) {\r\n        return typeof value === 'function';\r\n    }\r\n    function isString(value) {\r\n        return typeof value === 'string';\r\n    }\r\n    function isStringSafe(value) {\r\n        return objToString.call(value) === '[object String]';\r\n    }\r\n    function isNumber(value) {\r\n        return typeof value === 'number';\r\n    }\r\n    function isObject(value) {\r\n        var type = typeof value;\r\n        return type === 'function' || (!!value && type === 'object');\r\n    }\r\n    function isBuiltInObject(value) {\r\n        return !!BUILTIN_OBJECT[objToString.call(value)];\r\n    }\r\n    function isTypedArray(value) {\r\n        return !!TYPED_ARRAY[objToString.call(value)];\r\n    }\r\n    function isDom(value) {\r\n        return typeof value === 'object'\r\n            && typeof value.nodeType === 'number'\r\n            && typeof value.ownerDocument === 'object';\r\n    }\r\n    function isGradientObject(value) {\r\n        return value.colorStops != null;\r\n    }\r\n    function isPatternObject(value) {\r\n        return value.image != null;\r\n    }\r\n    function isRegExp(value) {\r\n        return objToString.call(value) === '[object RegExp]';\r\n    }\r\n    function eqNaN(value) {\r\n        return value !== value;\r\n    }\r\n    function retrieve() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        for (var i = 0, len = args.length; i < len; i++) {\r\n            if (args[i] != null) {\r\n                return args[i];\r\n            }\r\n        }\r\n    }\r\n    function retrieve2(value0, value1) {\r\n        return value0 != null\r\n            ? value0\r\n            : value1;\r\n    }\r\n    function retrieve3(value0, value1, value2) {\r\n        return value0 != null\r\n            ? value0\r\n            : value1 != null\r\n                ? value1\r\n                : value2;\r\n    }\r\n    function slice(arr) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        return nativeSlice.apply(arr, args);\r\n    }\r\n    function normalizeCssArray(val) {\r\n        if (typeof (val) === 'number') {\r\n            return [val, val, val, val];\r\n        }\r\n        var len = val.length;\r\n        if (len === 2) {\r\n            return [val[0], val[1], val[0], val[1]];\r\n        }\r\n        else if (len === 3) {\r\n            return [val[0], val[1], val[2], val[1]];\r\n        }\r\n        return val;\r\n    }\r\n    function assert(condition, message) {\r\n        if (!condition) {\r\n            throw new Error(message);\r\n        }\r\n    }\r\n    function trim(str) {\r\n        if (str == null) {\r\n            return null;\r\n        }\r\n        else if (typeof str.trim === 'function') {\r\n            return str.trim();\r\n        }\r\n        else {\r\n            return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n        }\r\n    }\r\n    var primitiveKey = '__ec_primitive__';\r\n    function setAsPrimitive(obj) {\r\n        obj[primitiveKey] = true;\r\n    }\r\n    function isPrimitive(obj) {\r\n        return obj[primitiveKey];\r\n    }\r\n    var HashMap = (function () {\r\n        function HashMap(obj) {\r\n            this.data = {};\r\n            var isArr = isArray(obj);\r\n            this.data = {};\r\n            var thisMap = this;\r\n            (obj instanceof HashMap)\r\n                ? obj.each(visit)\r\n                : (obj && each(obj, visit));\r\n            function visit(value, key) {\r\n                isArr ? thisMap.set(value, key) : thisMap.set(key, value);\r\n            }\r\n        }\r\n        HashMap.prototype.get = function (key) {\r\n            return this.data.hasOwnProperty(key) ? this.data[key] : null;\r\n        };\r\n        HashMap.prototype.set = function (key, value) {\r\n            return (this.data[key] = value);\r\n        };\r\n        HashMap.prototype.each = function (cb, context) {\r\n            for (var key in this.data) {\r\n                if (this.data.hasOwnProperty(key)) {\r\n                    cb.call(context, this.data[key], key);\r\n                }\r\n            }\r\n        };\r\n        HashMap.prototype.keys = function () {\r\n            return keys(this.data);\r\n        };\r\n        HashMap.prototype.removeKey = function (key) {\r\n            delete this.data[key];\r\n        };\r\n        return HashMap;\r\n    }());\r\n    function createHashMap(obj) {\r\n        return new HashMap(obj);\r\n    }\r\n    function concatArray(a, b) {\r\n        var newArray = new a.constructor(a.length + b.length);\r\n        for (var i = 0; i < a.length; i++) {\r\n            newArray[i] = a[i];\r\n        }\r\n        var offset = a.length;\r\n        for (var i = 0; i < b.length; i++) {\r\n            newArray[i + offset] = b[i];\r\n        }\r\n        return newArray;\r\n    }\r\n    function createObject(proto, properties) {\r\n        var obj;\r\n        if (Object.create) {\r\n            obj = Object.create(proto);\r\n        }\r\n        else {\r\n            var StyleCtor = function () { };\r\n            StyleCtor.prototype = proto;\r\n            obj = new StyleCtor();\r\n        }\r\n        if (properties) {\r\n            extend(obj, properties);\r\n        }\r\n        return obj;\r\n    }\r\n    function hasOwn(own, prop) {\r\n        return own.hasOwnProperty(prop);\r\n    }\r\n    function noop() { }\n\n    var zrUtil = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        $override: $override,\n        guid: guid,\n        logError: logError,\n        clone: clone,\n        merge: merge,\n        mergeAll: mergeAll,\n        extend: extend,\n        defaults: defaults,\n        createCanvas: createCanvas,\n        indexOf: indexOf,\n        inherits: inherits,\n        mixin: mixin,\n        isArrayLike: isArrayLike,\n        each: each,\n        map: map,\n        reduce: reduce,\n        filter: filter,\n        find: find,\n        keys: keys,\n        bind: bind,\n        curry: curry,\n        isArray: isArray,\n        isFunction: isFunction,\n        isString: isString,\n        isStringSafe: isStringSafe,\n        isNumber: isNumber,\n        isObject: isObject,\n        isBuiltInObject: isBuiltInObject,\n        isTypedArray: isTypedArray,\n        isDom: isDom,\n        isGradientObject: isGradientObject,\n        isPatternObject: isPatternObject,\n        isRegExp: isRegExp,\n        eqNaN: eqNaN,\n        retrieve: retrieve,\n        retrieve2: retrieve2,\n        retrieve3: retrieve3,\n        slice: slice,\n        normalizeCssArray: normalizeCssArray,\n        assert: assert,\n        trim: trim,\n        setAsPrimitive: setAsPrimitive,\n        isPrimitive: isPrimitive,\n        HashMap: HashMap,\n        createHashMap: createHashMap,\n        concatArray: concatArray,\n        createObject: createObject,\n        hasOwn: hasOwn,\n        noop: noop\n    });\n\n    function create(x, y) {\r\n        if (x == null) {\r\n            x = 0;\r\n        }\r\n        if (y == null) {\r\n            y = 0;\r\n        }\r\n        return [x, y];\r\n    }\r\n    function copy(out, v) {\r\n        out[0] = v[0];\r\n        out[1] = v[1];\r\n        return out;\r\n    }\r\n    function clone$1(v) {\r\n        return [v[0], v[1]];\r\n    }\r\n    function set(out, a, b) {\r\n        out[0] = a;\r\n        out[1] = b;\r\n        return out;\r\n    }\r\n    function add(out, v1, v2) {\r\n        out[0] = v1[0] + v2[0];\r\n        out[1] = v1[1] + v2[1];\r\n        return out;\r\n    }\r\n    function scaleAndAdd(out, v1, v2, a) {\r\n        out[0] = v1[0] + v2[0] * a;\r\n        out[1] = v1[1] + v2[1] * a;\r\n        return out;\r\n    }\r\n    function sub(out, v1, v2) {\r\n        out[0] = v1[0] - v2[0];\r\n        out[1] = v1[1] - v2[1];\r\n        return out;\r\n    }\r\n    function len(v) {\r\n        return Math.sqrt(lenSquare(v));\r\n    }\r\n    var length = len;\r\n    function lenSquare(v) {\r\n        return v[0] * v[0] + v[1] * v[1];\r\n    }\r\n    var lengthSquare = lenSquare;\r\n    function mul(out, v1, v2) {\r\n        out[0] = v1[0] * v2[0];\r\n        out[1] = v1[1] * v2[1];\r\n        return out;\r\n    }\r\n    function div(out, v1, v2) {\r\n        out[0] = v1[0] / v2[0];\r\n        out[1] = v1[1] / v2[1];\r\n        return out;\r\n    }\r\n    function dot(v1, v2) {\r\n        return v1[0] * v2[0] + v1[1] * v2[1];\r\n    }\r\n    function scale(out, v, s) {\r\n        out[0] = v[0] * s;\r\n        out[1] = v[1] * s;\r\n        return out;\r\n    }\r\n    function normalize(out, v) {\r\n        var d = len(v);\r\n        if (d === 0) {\r\n            out[0] = 0;\r\n            out[1] = 0;\r\n        }\r\n        else {\r\n            out[0] = v[0] / d;\r\n            out[1] = v[1] / d;\r\n        }\r\n        return out;\r\n    }\r\n    function distance(v1, v2) {\r\n        return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\r\n            + (v1[1] - v2[1]) * (v1[1] - v2[1]));\r\n    }\r\n    var dist = distance;\r\n    function distanceSquare(v1, v2) {\r\n        return (v1[0] - v2[0]) * (v1[0] - v2[0])\r\n            + (v1[1] - v2[1]) * (v1[1] - v2[1]);\r\n    }\r\n    var distSquare = distanceSquare;\r\n    function negate(out, v) {\r\n        out[0] = -v[0];\r\n        out[1] = -v[1];\r\n        return out;\r\n    }\r\n    function lerp(out, v1, v2, t) {\r\n        out[0] = v1[0] + t * (v2[0] - v1[0]);\r\n        out[1] = v1[1] + t * (v2[1] - v1[1]);\r\n        return out;\r\n    }\r\n    function applyTransform(out, v, m) {\r\n        var x = v[0];\r\n        var y = v[1];\r\n        out[0] = m[0] * x + m[2] * y + m[4];\r\n        out[1] = m[1] * x + m[3] * y + m[5];\r\n        return out;\r\n    }\r\n    function min(out, v1, v2) {\r\n        out[0] = Math.min(v1[0], v2[0]);\r\n        out[1] = Math.min(v1[1], v2[1]);\r\n        return out;\r\n    }\r\n    function max(out, v1, v2) {\r\n        out[0] = Math.max(v1[0], v2[0]);\r\n        out[1] = Math.max(v1[1], v2[1]);\r\n        return out;\r\n    }\n\n    var vector = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        create: create,\n        copy: copy,\n        clone: clone$1,\n        set: set,\n        add: add,\n        scaleAndAdd: scaleAndAdd,\n        sub: sub,\n        len: len,\n        length: length,\n        lenSquare: lenSquare,\n        lengthSquare: lengthSquare,\n        mul: mul,\n        div: div,\n        dot: dot,\n        scale: scale,\n        normalize: normalize,\n        distance: distance,\n        dist: dist,\n        distanceSquare: distanceSquare,\n        distSquare: distSquare,\n        negate: negate,\n        lerp: lerp,\n        applyTransform: applyTransform,\n        min: min,\n        max: max\n    });\n\n    var Param = (function () {\r\n        function Param(target, e) {\r\n            this.target = target;\r\n            this.topTarget = e && e.topTarget;\r\n        }\r\n        return Param;\r\n    }());\r\n    var Draggable = (function () {\r\n        function Draggable(handler) {\r\n            this.handler = handler;\r\n            handler.on('mousedown', this._dragStart, this);\r\n            handler.on('mousemove', this._drag, this);\r\n            handler.on('mouseup', this._dragEnd, this);\r\n        }\r\n        Draggable.prototype._dragStart = function (e) {\r\n            var draggingTarget = e.target;\r\n            while (draggingTarget && !draggingTarget.draggable) {\r\n                draggingTarget = draggingTarget.parent;\r\n            }\r\n            if (draggingTarget) {\r\n                this._draggingTarget = draggingTarget;\r\n                draggingTarget.dragging = true;\r\n                this._x = e.offsetX;\r\n                this._y = e.offsetY;\r\n                this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\r\n            }\r\n        };\r\n        Draggable.prototype._drag = function (e) {\r\n            var draggingTarget = this._draggingTarget;\r\n            if (draggingTarget) {\r\n                var x = e.offsetX;\r\n                var y = e.offsetY;\r\n                var dx = x - this._x;\r\n                var dy = y - this._y;\r\n                this._x = x;\r\n                this._y = y;\r\n                draggingTarget.drift(dx, dy, e);\r\n                this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\r\n                var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\r\n                var lastDropTarget = this._dropTarget;\r\n                this._dropTarget = dropTarget;\r\n                if (draggingTarget !== dropTarget) {\r\n                    if (lastDropTarget && dropTarget !== lastDropTarget) {\r\n                        this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\r\n                    }\r\n                    if (dropTarget && dropTarget !== lastDropTarget) {\r\n                        this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Draggable.prototype._dragEnd = function (e) {\r\n            var draggingTarget = this._draggingTarget;\r\n            if (draggingTarget) {\r\n                draggingTarget.dragging = false;\r\n            }\r\n            this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\r\n            if (this._dropTarget) {\r\n                this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\r\n            }\r\n            this._draggingTarget = null;\r\n            this._dropTarget = null;\r\n        };\r\n        return Draggable;\r\n    }());\n\n    var Eventful = (function () {\r\n        function Eventful(eventProcessors) {\r\n            if (eventProcessors) {\r\n                this._$eventProcessor = eventProcessors;\r\n            }\r\n        }\r\n        Eventful.prototype.on = function (event, query, handler, context) {\r\n            if (!this._$handlers) {\r\n                this._$handlers = {};\r\n            }\r\n            var _h = this._$handlers;\r\n            if (typeof query === 'function') {\r\n                context = handler;\r\n                handler = query;\r\n                query = null;\r\n            }\r\n            if (!handler || !event) {\r\n                return this;\r\n            }\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\r\n                query = eventProcessor.normalizeQuery(query);\r\n            }\r\n            if (!_h[event]) {\r\n                _h[event] = [];\r\n            }\r\n            for (var i = 0; i < _h[event].length; i++) {\r\n                if (_h[event][i].h === handler) {\r\n                    return this;\r\n                }\r\n            }\r\n            var wrap = {\r\n                h: handler,\r\n                query: query,\r\n                ctx: (context || this),\r\n                callAtLast: handler.zrEventfulCallAtLast\r\n            };\r\n            var lastIndex = _h[event].length - 1;\r\n            var lastWrap = _h[event][lastIndex];\r\n            (lastWrap && lastWrap.callAtLast)\r\n                ? _h[event].splice(lastIndex, 0, wrap)\r\n                : _h[event].push(wrap);\r\n            return this;\r\n        };\r\n        Eventful.prototype.isSilent = function (eventName) {\r\n            var _h = this._$handlers;\r\n            return !_h || !_h[eventName] || !_h[eventName].length;\r\n        };\r\n        Eventful.prototype.off = function (eventType, handler) {\r\n            var _h = this._$handlers;\r\n            if (!_h) {\r\n                return this;\r\n            }\r\n            if (!eventType) {\r\n                this._$handlers = {};\r\n                return this;\r\n            }\r\n            if (handler) {\r\n                if (_h[eventType]) {\r\n                    var newList = [];\r\n                    for (var i = 0, l = _h[eventType].length; i < l; i++) {\r\n                        if (_h[eventType][i].h !== handler) {\r\n                            newList.push(_h[eventType][i]);\r\n                        }\r\n                    }\r\n                    _h[eventType] = newList;\r\n                }\r\n                if (_h[eventType] && _h[eventType].length === 0) {\r\n                    delete _h[eventType];\r\n                }\r\n            }\r\n            else {\r\n                delete _h[eventType];\r\n            }\r\n            return this;\r\n        };\r\n        Eventful.prototype.trigger = function (eventType) {\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments[_i];\r\n            }\r\n            if (!this._$handlers) {\r\n                return this;\r\n            }\r\n            var _h = this._$handlers[eventType];\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (_h) {\r\n                var argLen = args.length;\r\n                var len = _h.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    var hItem = _h[i];\r\n                    if (eventProcessor\r\n                        && eventProcessor.filter\r\n                        && hItem.query != null\r\n                        && !eventProcessor.filter(eventType, hItem.query)) {\r\n                        continue;\r\n                    }\r\n                    switch (argLen) {\r\n                        case 0:\r\n                            hItem.h.call(hItem.ctx);\r\n                            break;\r\n                        case 1:\r\n                            hItem.h.call(hItem.ctx, args[0]);\r\n                            break;\r\n                        case 2:\r\n                            hItem.h.call(hItem.ctx, args[0], args[1]);\r\n                            break;\r\n                        default:\r\n                            hItem.h.apply(hItem.ctx, args);\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            eventProcessor && eventProcessor.afterTrigger\r\n                && eventProcessor.afterTrigger(eventType);\r\n            return this;\r\n        };\r\n        Eventful.prototype.triggerWithContext = function (type) {\r\n            if (!this._$handlers) {\r\n                return this;\r\n            }\r\n            var _h = this._$handlers[type];\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (_h) {\r\n                var args = arguments;\r\n                var argLen = args.length;\r\n                var ctx = args[argLen - 1];\r\n                var len = _h.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    var hItem = _h[i];\r\n                    if (eventProcessor\r\n                        && eventProcessor.filter\r\n                        && hItem.query != null\r\n                        && !eventProcessor.filter(type, hItem.query)) {\r\n                        continue;\r\n                    }\r\n                    switch (argLen) {\r\n                        case 0:\r\n                            hItem.h.call(ctx);\r\n                            break;\r\n                        case 1:\r\n                            hItem.h.call(ctx, args[0]);\r\n                            break;\r\n                        case 2:\r\n                            hItem.h.call(ctx, args[0], args[1]);\r\n                            break;\r\n                        default:\r\n                            hItem.h.apply(ctx, args.slice(1, argLen - 1));\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            eventProcessor && eventProcessor.afterTrigger\r\n                && eventProcessor.afterTrigger(type);\r\n            return this;\r\n        };\r\n        return Eventful;\r\n    }());\n\n    var LN2 = Math.log(2);\r\n    function determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\r\n        var cacheKey = rowMask + '-' + colMask;\r\n        var fullRank = rows.length;\r\n        if (detCache.hasOwnProperty(cacheKey)) {\r\n            return detCache[cacheKey];\r\n        }\r\n        if (rank === 1) {\r\n            var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\r\n            return rows[rowStart][colStart];\r\n        }\r\n        var subRowMask = rowMask | (1 << rowStart);\r\n        var subRowStart = rowStart + 1;\r\n        while (rowMask & (1 << subRowStart)) {\r\n            subRowStart++;\r\n        }\r\n        var sum = 0;\r\n        for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\r\n            var colTag = 1 << j;\r\n            if (!(colTag & colMask)) {\r\n                sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\r\n                    * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\r\n                colLocalIdx++;\r\n            }\r\n        }\r\n        detCache[cacheKey] = sum;\r\n        return sum;\r\n    }\r\n    function buildTransformer(src, dest) {\r\n        var mA = [\r\n            [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\r\n            [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\r\n            [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\r\n            [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\r\n            [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\r\n            [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\r\n            [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\r\n            [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\r\n        ];\r\n        var detCache = {};\r\n        var det = determinant(mA, 8, 0, 0, 0, detCache);\r\n        if (det === 0) {\r\n            return;\r\n        }\r\n        var vh = [];\r\n        for (var i = 0; i < 8; i++) {\r\n            for (var j = 0; j < 8; j++) {\r\n                vh[j] == null && (vh[j] = 0);\r\n                vh[j] += ((i + j) % 2 ? -1 : 1)\r\n                    * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\r\n                    / det * dest[i];\r\n            }\r\n        }\r\n        return function (out, srcPointX, srcPointY) {\r\n            var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\r\n            out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\r\n            out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\r\n        };\r\n    }\n\n    var EVENT_SAVED_PROP = '___zrEVENTSAVED';\r\n    var _calcOut = [];\r\n    function transformLocalCoord(out, elFrom, elTarget, inX, inY) {\r\n        return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true)\r\n            && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\r\n    }\r\n    function transformCoordWithViewport(out, el, inX, inY, inverse) {\r\n        if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\r\n            var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\r\n            var markers = prepareCoordMarkers(el, saved);\r\n            var transformer = preparePointerTransformer(markers, saved, inverse);\r\n            if (transformer) {\r\n                transformer(out, inX, inY);\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function prepareCoordMarkers(el, saved) {\r\n        var markers = saved.markers;\r\n        if (markers) {\r\n            return markers;\r\n        }\r\n        markers = saved.markers = [];\r\n        var propLR = ['left', 'right'];\r\n        var propTB = ['top', 'bottom'];\r\n        for (var i = 0; i < 4; i++) {\r\n            var marker = document.createElement('div');\r\n            var stl = marker.style;\r\n            var idxLR = i % 2;\r\n            var idxTB = (i >> 1) % 2;\r\n            stl.cssText = [\r\n                'position: absolute',\r\n                'visibility: hidden',\r\n                'padding: 0',\r\n                'margin: 0',\r\n                'border-width: 0',\r\n                'user-select: none',\r\n                'width:0',\r\n                'height:0',\r\n                propLR[idxLR] + ':0',\r\n                propTB[idxTB] + ':0',\r\n                propLR[1 - idxLR] + ':auto',\r\n                propTB[1 - idxTB] + ':auto',\r\n                ''\r\n            ].join('!important;');\r\n            el.appendChild(marker);\r\n            markers.push(marker);\r\n        }\r\n        return markers;\r\n    }\r\n    function preparePointerTransformer(markers, saved, inverse) {\r\n        var transformerName = inverse ? 'invTrans' : 'trans';\r\n        var transformer = saved[transformerName];\r\n        var oldSrcCoords = saved.srcCoords;\r\n        var srcCoords = [];\r\n        var destCoords = [];\r\n        var oldCoordTheSame = true;\r\n        for (var i = 0; i < 4; i++) {\r\n            var rect = markers[i].getBoundingClientRect();\r\n            var ii = 2 * i;\r\n            var x = rect.left;\r\n            var y = rect.top;\r\n            srcCoords.push(x, y);\r\n            oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\r\n            destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\r\n        }\r\n        return (oldCoordTheSame && transformer)\r\n            ? transformer\r\n            : (saved.srcCoords = srcCoords,\r\n                saved[transformerName] = inverse\r\n                    ? buildTransformer(destCoords, srcCoords)\r\n                    : buildTransformer(srcCoords, destCoords));\r\n    }\r\n    function isCanvasEl(el) {\r\n        return el.nodeName.toUpperCase() === 'CANVAS';\r\n    }\n\n    var isDomLevel2 = (typeof window !== 'undefined') && !!window.addEventListener;\r\n    var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\r\n    var _calcOut$1 = [];\r\n    function clientToLocal(el, e, out, calculate) {\r\n        out = out || {};\r\n        if (calculate || !env.canvasSupported) {\r\n            calculateZrXY(el, e, out);\r\n        }\r\n        else if (env.browser.firefox\r\n            && e.layerX != null\r\n            && e.layerX !== e.offsetX) {\r\n            out.zrX = e.layerX;\r\n            out.zrY = e.layerY;\r\n        }\r\n        else if (e.offsetX != null) {\r\n            out.zrX = e.offsetX;\r\n            out.zrY = e.offsetY;\r\n        }\r\n        else {\r\n            calculateZrXY(el, e, out);\r\n        }\r\n        return out;\r\n    }\r\n    function calculateZrXY(el, e, out) {\r\n        if (env.domSupported && el.getBoundingClientRect) {\r\n            var ex = e.clientX;\r\n            var ey = e.clientY;\r\n            if (isCanvasEl(el)) {\r\n                var box = el.getBoundingClientRect();\r\n                out.zrX = ex - box.left;\r\n                out.zrY = ey - box.top;\r\n                return;\r\n            }\r\n            else {\r\n                if (transformCoordWithViewport(_calcOut$1, el, ex, ey)) {\r\n                    out.zrX = _calcOut$1[0];\r\n                    out.zrY = _calcOut$1[1];\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        out.zrX = out.zrY = 0;\r\n    }\r\n    function getNativeEvent(e) {\r\n        return e\r\n            || window.event;\r\n    }\r\n    function normalizeEvent(el, e, calculate) {\r\n        e = getNativeEvent(e);\r\n        if (e.zrX != null) {\r\n            return e;\r\n        }\r\n        var eventType = e.type;\r\n        var isTouch = eventType && eventType.indexOf('touch') >= 0;\r\n        if (!isTouch) {\r\n            clientToLocal(el, e, e, calculate);\r\n            var wheelDelta = getWheelDeltaMayPolyfill(e);\r\n            e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\r\n        }\r\n        else {\r\n            var touch = eventType !== 'touchend'\r\n                ? e.targetTouches[0]\r\n                : e.changedTouches[0];\r\n            touch && clientToLocal(el, touch, e, calculate);\r\n        }\r\n        var button = e.button;\r\n        if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\r\n            e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\r\n        }\r\n        return e;\r\n    }\r\n    function getWheelDeltaMayPolyfill(e) {\r\n        var rawWheelDelta = e.wheelDelta;\r\n        if (rawWheelDelta) {\r\n            return rawWheelDelta;\r\n        }\r\n        var deltaX = e.deltaX;\r\n        var deltaY = e.deltaY;\r\n        if (deltaX == null || deltaY == null) {\r\n            return rawWheelDelta;\r\n        }\r\n        var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\r\n        var sign = deltaY > 0 ? -1\r\n            : deltaY < 0 ? 1\r\n                : deltaX > 0 ? -1\r\n                    : 1;\r\n        return 3 * delta * sign;\r\n    }\r\n    function addEventListener(el, name, handler, opt) {\r\n        if (isDomLevel2) {\r\n            el.addEventListener(name, handler, opt);\r\n        }\r\n        else {\r\n            el.attachEvent('on' + name, handler);\r\n        }\r\n    }\r\n    function removeEventListener(el, name, handler, opt) {\r\n        if (isDomLevel2) {\r\n            el.removeEventListener(name, handler, opt);\r\n        }\r\n        else {\r\n            el.detachEvent('on' + name, handler);\r\n        }\r\n    }\r\n    var stop = isDomLevel2\r\n        ? function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            e.cancelBubble = true;\r\n        }\r\n        : function (e) {\r\n            e.returnValue = false;\r\n            e.cancelBubble = true;\r\n        };\r\n    function isMiddleOrRightButtonOnMouseUpDown(e) {\r\n        return e.which === 2 || e.which === 3;\r\n    }\n\n    var GestureMgr = (function () {\r\n        function GestureMgr() {\r\n            this._track = [];\r\n        }\r\n        GestureMgr.prototype.recognize = function (event, target, root) {\r\n            this._doTrack(event, target, root);\r\n            return this._recognize(event);\r\n        };\r\n        GestureMgr.prototype.clear = function () {\r\n            this._track.length = 0;\r\n            return this;\r\n        };\r\n        GestureMgr.prototype._doTrack = function (event, target, root) {\r\n            var touches = event.touches;\r\n            if (!touches) {\r\n                return;\r\n            }\r\n            var trackItem = {\r\n                points: [],\r\n                touches: [],\r\n                target: target,\r\n                event: event\r\n            };\r\n            for (var i = 0, len = touches.length; i < len; i++) {\r\n                var touch = touches[i];\r\n                var pos = clientToLocal(root, touch, {});\r\n                trackItem.points.push([pos.zrX, pos.zrY]);\r\n                trackItem.touches.push(touch);\r\n            }\r\n            this._track.push(trackItem);\r\n        };\r\n        GestureMgr.prototype._recognize = function (event) {\r\n            for (var eventName in recognizers) {\r\n                if (recognizers.hasOwnProperty(eventName)) {\r\n                    var gestureInfo = recognizers[eventName](this._track, event);\r\n                    if (gestureInfo) {\r\n                        return gestureInfo;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        return GestureMgr;\r\n    }());\r\n    function dist$1(pointPair) {\r\n        var dx = pointPair[1][0] - pointPair[0][0];\r\n        var dy = pointPair[1][1] - pointPair[0][1];\r\n        return Math.sqrt(dx * dx + dy * dy);\r\n    }\r\n    function center(pointPair) {\r\n        return [\r\n            (pointPair[0][0] + pointPair[1][0]) / 2,\r\n            (pointPair[0][1] + pointPair[1][1]) / 2\r\n        ];\r\n    }\r\n    var recognizers = {\r\n        pinch: function (tracks, event) {\r\n            var trackLen = tracks.length;\r\n            if (!trackLen) {\r\n                return;\r\n            }\r\n            var pinchEnd = (tracks[trackLen - 1] || {}).points;\r\n            var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\r\n            if (pinchPre\r\n                && pinchPre.length > 1\r\n                && pinchEnd\r\n                && pinchEnd.length > 1) {\r\n                var pinchScale = dist$1(pinchEnd) / dist$1(pinchPre);\r\n                !isFinite(pinchScale) && (pinchScale = 1);\r\n                event.pinchScale = pinchScale;\r\n                var pinchCenter = center(pinchEnd);\r\n                event.pinchX = pinchCenter[0];\r\n                event.pinchY = pinchCenter[1];\r\n                return {\r\n                    type: 'pinch',\r\n                    target: tracks[0].target,\r\n                    event: event\r\n                };\r\n            }\r\n        }\r\n    };\n\n    var SILENT = 'silent';\r\n    function makeEventPacket(eveType, targetInfo, event) {\r\n        return {\r\n            type: eveType,\r\n            event: event,\r\n            target: targetInfo.target,\r\n            topTarget: targetInfo.topTarget,\r\n            cancelBubble: false,\r\n            offsetX: event.zrX,\r\n            offsetY: event.zrY,\r\n            gestureEvent: event.gestureEvent,\r\n            pinchX: event.pinchX,\r\n            pinchY: event.pinchY,\r\n            pinchScale: event.pinchScale,\r\n            wheelDelta: event.zrDelta,\r\n            zrByTouch: event.zrByTouch,\r\n            which: event.which,\r\n            stop: stopEvent\r\n        };\r\n    }\r\n    function stopEvent() {\r\n        stop(this.event);\r\n    }\r\n    var EmptyProxy = (function (_super) {\r\n        __extends(EmptyProxy, _super);\r\n        function EmptyProxy() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.handler = null;\r\n            return _this;\r\n        }\r\n        EmptyProxy.prototype.dispose = function () { };\r\n        EmptyProxy.prototype.setCursor = function () { };\r\n        return EmptyProxy;\r\n    }(Eventful));\r\n    var HoveredResult = (function () {\r\n        function HoveredResult(x, y) {\r\n            this.x = x;\r\n            this.y = y;\r\n        }\r\n        return HoveredResult;\r\n    }());\r\n    var handlerNames = [\r\n        'click', 'dblclick', 'mousewheel', 'mouseout',\r\n        'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n    ];\r\n    var Handler = (function (_super) {\r\n        __extends(Handler, _super);\r\n        function Handler(storage, painter, proxy, painterRoot) {\r\n            var _this = _super.call(this) || this;\r\n            _this._hovered = new HoveredResult(0, 0);\r\n            _this.storage = storage;\r\n            _this.painter = painter;\r\n            _this.painterRoot = painterRoot;\r\n            proxy = proxy || new EmptyProxy();\r\n            _this.proxy = null;\r\n            _this.setHandlerProxy(proxy);\r\n            _this._draggingMgr = new Draggable(_this);\r\n            return _this;\r\n        }\r\n        Handler.prototype.setHandlerProxy = function (proxy) {\r\n            if (this.proxy) {\r\n                this.proxy.dispose();\r\n            }\r\n            if (proxy) {\r\n                each(handlerNames, function (name) {\r\n                    proxy.on && proxy.on(name, this[name], this);\r\n                }, this);\r\n                proxy.handler = this;\r\n            }\r\n            this.proxy = proxy;\r\n        };\r\n        Handler.prototype.mousemove = function (event) {\r\n            var x = event.zrX;\r\n            var y = event.zrY;\r\n            var isOutside = isOutsideBoundary(this, x, y);\r\n            var lastHovered = this._hovered;\r\n            var lastHoveredTarget = lastHovered.target;\r\n            if (lastHoveredTarget && !lastHoveredTarget.__zr) {\r\n                lastHovered = this.findHover(lastHovered.x, lastHovered.y);\r\n                lastHoveredTarget = lastHovered.target;\r\n            }\r\n            var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\r\n            var hoveredTarget = hovered.target;\r\n            var proxy = this.proxy;\r\n            proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\r\n            if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n                this.dispatchToElement(lastHovered, 'mouseout', event);\r\n            }\r\n            this.dispatchToElement(hovered, 'mousemove', event);\r\n            if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n                this.dispatchToElement(hovered, 'mouseover', event);\r\n            }\r\n        };\r\n        Handler.prototype.mouseout = function (event) {\r\n            var eventControl = event.zrEventControl;\r\n            var zrIsToLocalDOM = event.zrIsToLocalDOM;\r\n            if (eventControl !== 'only_globalout') {\r\n                this.dispatchToElement(this._hovered, 'mouseout', event);\r\n            }\r\n            if (eventControl !== 'no_globalout') {\r\n                !zrIsToLocalDOM && this.trigger('globalout', { type: 'globalout', event: event });\r\n            }\r\n        };\r\n        Handler.prototype.resize = function () {\r\n            this._hovered = new HoveredResult(0, 0);\r\n        };\r\n        Handler.prototype.dispatch = function (eventName, eventArgs) {\r\n            var handler = this[eventName];\r\n            handler && handler.call(this, eventArgs);\r\n        };\r\n        Handler.prototype.dispose = function () {\r\n            this.proxy.dispose();\r\n            this.storage = null;\r\n            this.proxy = null;\r\n            this.painter = null;\r\n        };\r\n        Handler.prototype.setCursorStyle = function (cursorStyle) {\r\n            var proxy = this.proxy;\r\n            proxy.setCursor && proxy.setCursor(cursorStyle);\r\n        };\r\n        Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\r\n            targetInfo = targetInfo || {};\r\n            var el = targetInfo.target;\r\n            if (el && el.silent) {\r\n                return;\r\n            }\r\n            var eventKey = ('on' + eventName);\r\n            var eventPacket = makeEventPacket(eventName, targetInfo, event);\r\n            while (el) {\r\n                el[eventKey]\r\n                    && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\r\n                el.trigger(eventName, eventPacket);\r\n                el = el.__hostTarget ? el.__hostTarget : el.parent;\r\n                if (eventPacket.cancelBubble) {\r\n                    break;\r\n                }\r\n            }\r\n            if (!eventPacket.cancelBubble) {\r\n                this.trigger(eventName, eventPacket);\r\n                if (this.painter && this.painter.eachOtherLayer) {\r\n                    this.painter.eachOtherLayer(function (layer) {\r\n                        if (typeof (layer[eventKey]) === 'function') {\r\n                            layer[eventKey].call(layer, eventPacket);\r\n                        }\r\n                        if (layer.trigger) {\r\n                            layer.trigger(eventName, eventPacket);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        };\r\n        Handler.prototype.findHover = function (x, y, exclude) {\r\n            var list = this.storage.getDisplayList();\r\n            var out = new HoveredResult(x, y);\r\n            for (var i = list.length - 1; i >= 0; i--) {\r\n                var hoverCheckResult = void 0;\r\n                if (list[i] !== exclude\r\n                    && !list[i].ignore\r\n                    && (hoverCheckResult = isHover(list[i], x, y))) {\r\n                    !out.topTarget && (out.topTarget = list[i]);\r\n                    if (hoverCheckResult !== SILENT) {\r\n                        out.target = list[i];\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            return out;\r\n        };\r\n        Handler.prototype.processGesture = function (event, stage) {\r\n            if (!this._gestureMgr) {\r\n                this._gestureMgr = new GestureMgr();\r\n            }\r\n            var gestureMgr = this._gestureMgr;\r\n            stage === 'start' && gestureMgr.clear();\r\n            var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\r\n            stage === 'end' && gestureMgr.clear();\r\n            if (gestureInfo) {\r\n                var type = gestureInfo.type;\r\n                event.gestureEvent = type;\r\n                var res = new HoveredResult();\r\n                res.target = gestureInfo.target;\r\n                this.dispatchToElement(res, type, gestureInfo.event);\r\n            }\r\n        };\r\n        return Handler;\r\n    }(Eventful));\r\n    each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\r\n        Handler.prototype[name] = function (event) {\r\n            var x = event.zrX;\r\n            var y = event.zrY;\r\n            var isOutside = isOutsideBoundary(this, x, y);\r\n            var hovered;\r\n            var hoveredTarget;\r\n            if (name !== 'mouseup' || !isOutside) {\r\n                hovered = this.findHover(x, y);\r\n                hoveredTarget = hovered.target;\r\n            }\r\n            if (name === 'mousedown') {\r\n                this._downEl = hoveredTarget;\r\n                this._downPoint = [event.zrX, event.zrY];\r\n                this._upEl = hoveredTarget;\r\n            }\r\n            else if (name === 'mouseup') {\r\n                this._upEl = hoveredTarget;\r\n            }\r\n            else if (name === 'click') {\r\n                if (this._downEl !== this._upEl\r\n                    || !this._downPoint\r\n                    || dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\r\n                    return;\r\n                }\r\n                this._downPoint = null;\r\n            }\r\n            this.dispatchToElement(hovered, name, event);\r\n        };\r\n    });\r\n    function isHover(displayable, x, y) {\r\n        if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\r\n            var el = displayable;\r\n            var isSilent = void 0;\r\n            var ignoreClip = false;\r\n            while (el) {\r\n                if (el.ignoreClip) {\r\n                    ignoreClip = true;\r\n                }\r\n                if (!ignoreClip) {\r\n                    var clipPath = el.getClipPath();\r\n                    if (clipPath && !clipPath.contain(x, y)) {\r\n                        return false;\r\n                    }\r\n                    if (el.silent) {\r\n                        isSilent = true;\r\n                    }\r\n                }\r\n                var hostEl = el.__hostTarget;\r\n                el = hostEl ? hostEl : el.parent;\r\n            }\r\n            return isSilent ? SILENT : true;\r\n        }\r\n        return false;\r\n    }\r\n    function isOutsideBoundary(handlerInstance, x, y) {\r\n        var painter = handlerInstance.painter;\r\n        return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\r\n    }\n\n    function create$1() {\r\n        return [1, 0, 0, 1, 0, 0];\r\n    }\r\n    function identity(out) {\r\n        out[0] = 1;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 1;\r\n        out[4] = 0;\r\n        out[5] = 0;\r\n        return out;\r\n    }\r\n    function copy$1(out, m) {\r\n        out[0] = m[0];\r\n        out[1] = m[1];\r\n        out[2] = m[2];\r\n        out[3] = m[3];\r\n        out[4] = m[4];\r\n        out[5] = m[5];\r\n        return out;\r\n    }\r\n    function mul$1(out, m1, m2) {\r\n        var out0 = m1[0] * m2[0] + m1[2] * m2[1];\r\n        var out1 = m1[1] * m2[0] + m1[3] * m2[1];\r\n        var out2 = m1[0] * m2[2] + m1[2] * m2[3];\r\n        var out3 = m1[1] * m2[2] + m1[3] * m2[3];\r\n        var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\r\n        var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\r\n        out[0] = out0;\r\n        out[1] = out1;\r\n        out[2] = out2;\r\n        out[3] = out3;\r\n        out[4] = out4;\r\n        out[5] = out5;\r\n        return out;\r\n    }\r\n    function translate(out, a, v) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        out[4] = a[4] + v[0];\r\n        out[5] = a[5] + v[1];\r\n        return out;\r\n    }\r\n    function rotate(out, a, rad) {\r\n        var aa = a[0];\r\n        var ac = a[2];\r\n        var atx = a[4];\r\n        var ab = a[1];\r\n        var ad = a[3];\r\n        var aty = a[5];\r\n        var st = Math.sin(rad);\r\n        var ct = Math.cos(rad);\r\n        out[0] = aa * ct + ab * st;\r\n        out[1] = -aa * st + ab * ct;\r\n        out[2] = ac * ct + ad * st;\r\n        out[3] = -ac * st + ct * ad;\r\n        out[4] = ct * atx + st * aty;\r\n        out[5] = ct * aty - st * atx;\r\n        return out;\r\n    }\r\n    function scale$1(out, a, v) {\r\n        var vx = v[0];\r\n        var vy = v[1];\r\n        out[0] = a[0] * vx;\r\n        out[1] = a[1] * vy;\r\n        out[2] = a[2] * vx;\r\n        out[3] = a[3] * vy;\r\n        out[4] = a[4] * vx;\r\n        out[5] = a[5] * vy;\r\n        return out;\r\n    }\r\n    function invert(out, a) {\r\n        var aa = a[0];\r\n        var ac = a[2];\r\n        var atx = a[4];\r\n        var ab = a[1];\r\n        var ad = a[3];\r\n        var aty = a[5];\r\n        var det = aa * ad - ab * ac;\r\n        if (!det) {\r\n            return null;\r\n        }\r\n        det = 1.0 / det;\r\n        out[0] = ad * det;\r\n        out[1] = -ab * det;\r\n        out[2] = -ac * det;\r\n        out[3] = aa * det;\r\n        out[4] = (ac * aty - ad * atx) * det;\r\n        out[5] = (ab * atx - aa * aty) * det;\r\n        return out;\r\n    }\r\n    function clone$2(a) {\r\n        var b = create$1();\r\n        copy$1(b, a);\r\n        return b;\r\n    }\n\n    var matrix = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        create: create$1,\n        identity: identity,\n        copy: copy$1,\n        mul: mul$1,\n        translate: translate,\n        rotate: rotate,\n        scale: scale$1,\n        invert: invert,\n        clone: clone$2\n    });\n\n    var mIdentity = identity;\r\n    var EPSILON = 5e-5;\r\n    function isNotAroundZero(val) {\r\n        return val > EPSILON || val < -EPSILON;\r\n    }\r\n    var scaleTmp = [];\r\n    var tmpTransform = [];\r\n    var originTransform = create$1();\r\n    var abs = Math.abs;\r\n    var Transformable = (function () {\r\n        function Transformable() {\r\n        }\r\n        Transformable.prototype.setPosition = function (arr) {\r\n            this.x = arr[0];\r\n            this.y = arr[1];\r\n        };\r\n        Transformable.prototype.setScale = function (arr) {\r\n            this.scaleX = arr[0];\r\n            this.scaleY = arr[1];\r\n        };\r\n        Transformable.prototype.setOrigin = function (arr) {\r\n            this.originX = arr[0];\r\n            this.originY = arr[1];\r\n        };\r\n        Transformable.prototype.needLocalTransform = function () {\r\n            return isNotAroundZero(this.rotation)\r\n                || isNotAroundZero(this.x)\r\n                || isNotAroundZero(this.y)\r\n                || isNotAroundZero(this.scaleX - 1)\r\n                || isNotAroundZero(this.scaleY - 1);\r\n        };\r\n        Transformable.prototype.updateTransform = function () {\r\n            var parent = this.parent;\r\n            var parentHasTransform = parent && parent.transform;\r\n            var needLocalTransform = this.needLocalTransform();\r\n            var m = this.transform;\r\n            if (!(needLocalTransform || parentHasTransform)) {\r\n                m && mIdentity(m);\r\n                return;\r\n            }\r\n            m = m || create$1();\r\n            if (needLocalTransform) {\r\n                this.getLocalTransform(m);\r\n            }\r\n            else {\r\n                mIdentity(m);\r\n            }\r\n            if (parentHasTransform) {\r\n                if (needLocalTransform) {\r\n                    mul$1(m, parent.transform, m);\r\n                }\r\n                else {\r\n                    copy$1(m, parent.transform);\r\n                }\r\n            }\r\n            this.transform = m;\r\n            this._resolveGlobalScaleRatio(m);\r\n        };\r\n        Transformable.prototype._resolveGlobalScaleRatio = function (m) {\r\n            var globalScaleRatio = this.globalScaleRatio;\r\n            if (globalScaleRatio != null && globalScaleRatio !== 1) {\r\n                this.getGlobalScale(scaleTmp);\r\n                var relX = scaleTmp[0] < 0 ? -1 : 1;\r\n                var relY = scaleTmp[1] < 0 ? -1 : 1;\r\n                var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\r\n                var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\r\n                m[0] *= sx;\r\n                m[1] *= sx;\r\n                m[2] *= sy;\r\n                m[3] *= sy;\r\n            }\r\n            this.invTransform = this.invTransform || create$1();\r\n            invert(this.invTransform, m);\r\n        };\r\n        Transformable.prototype.getLocalTransform = function (m) {\r\n            return Transformable.getLocalTransform(this, m);\r\n        };\r\n        Transformable.prototype.getComputedTransform = function () {\r\n            var transformNode = this;\r\n            var ancestors = [];\r\n            while (transformNode) {\r\n                ancestors.push(transformNode);\r\n                transformNode = transformNode.parent;\r\n            }\r\n            while (transformNode = ancestors.pop()) {\r\n                transformNode.updateTransform();\r\n            }\r\n            return this.transform;\r\n        };\r\n        Transformable.prototype.setLocalTransform = function (m) {\r\n            if (!m) {\r\n                return;\r\n            }\r\n            var sx = m[0] * m[0] + m[1] * m[1];\r\n            var sy = m[2] * m[2] + m[3] * m[3];\r\n            if (isNotAroundZero(sx - 1)) {\r\n                sx = Math.sqrt(sx);\r\n            }\r\n            if (isNotAroundZero(sy - 1)) {\r\n                sy = Math.sqrt(sy);\r\n            }\r\n            if (m[0] < 0) {\r\n                sx = -sx;\r\n            }\r\n            if (m[3] < 0) {\r\n                sy = -sy;\r\n            }\r\n            this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\r\n            if (sx < 0 && sy < 0) {\r\n                this.rotation += Math.PI;\r\n                sx = -sx;\r\n                sy = -sy;\r\n            }\r\n            this.x = m[4];\r\n            this.y = m[5];\r\n            this.scaleX = sx;\r\n            this.scaleY = sy;\r\n        };\r\n        Transformable.prototype.decomposeTransform = function () {\r\n            if (!this.transform) {\r\n                return;\r\n            }\r\n            var parent = this.parent;\r\n            var m = this.transform;\r\n            if (parent && parent.transform) {\r\n                mul$1(tmpTransform, parent.invTransform, m);\r\n                m = tmpTransform;\r\n            }\r\n            var ox = this.originX;\r\n            var oy = this.originY;\r\n            if (ox || oy) {\r\n                originTransform[4] = ox;\r\n                originTransform[5] = oy;\r\n                mul$1(tmpTransform, m, originTransform);\r\n                tmpTransform[4] -= ox;\r\n                tmpTransform[5] -= oy;\r\n                m = tmpTransform;\r\n            }\r\n            this.setLocalTransform(m);\r\n        };\r\n        Transformable.prototype.getGlobalScale = function (out) {\r\n            var m = this.transform;\r\n            out = out || [];\r\n            if (!m) {\r\n                out[0] = 1;\r\n                out[1] = 1;\r\n                return out;\r\n            }\r\n            out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\r\n            out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\r\n            if (m[0] < 0) {\r\n                out[0] = -out[0];\r\n            }\r\n            if (m[3] < 0) {\r\n                out[1] = -out[1];\r\n            }\r\n            return out;\r\n        };\r\n        Transformable.prototype.transformCoordToLocal = function (x, y) {\r\n            var v2 = [x, y];\r\n            var invTransform = this.invTransform;\r\n            if (invTransform) {\r\n                applyTransform(v2, v2, invTransform);\r\n            }\r\n            return v2;\r\n        };\r\n        Transformable.prototype.transformCoordToGlobal = function (x, y) {\r\n            var v2 = [x, y];\r\n            var transform = this.transform;\r\n            if (transform) {\r\n                applyTransform(v2, v2, transform);\r\n            }\r\n            return v2;\r\n        };\r\n        Transformable.prototype.getLineScale = function () {\r\n            var m = this.transform;\r\n            return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\r\n                ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\r\n                : 1;\r\n        };\r\n        Transformable.getLocalTransform = function (target, m) {\r\n            m = m || [];\r\n            mIdentity(m);\r\n            var ox = target.originX || 0;\r\n            var oy = target.originY || 0;\r\n            var sx = target.scaleX;\r\n            var sy = target.scaleY;\r\n            var rotation = target.rotation || 0;\r\n            var x = target.x;\r\n            var y = target.y;\r\n            m[4] -= ox;\r\n            m[5] -= oy;\r\n            m[0] *= sx;\r\n            m[1] *= sy;\r\n            m[2] *= sx;\r\n            m[3] *= sy;\r\n            m[4] *= sx;\r\n            m[5] *= sy;\r\n            if (rotation) {\r\n                rotate(m, m, rotation);\r\n            }\r\n            m[4] += ox;\r\n            m[5] += oy;\r\n            m[4] += x;\r\n            m[5] += y;\r\n            return m;\r\n        };\r\n        Transformable.initDefaultProps = (function () {\r\n            var proto = Transformable.prototype;\r\n            proto.x = 0;\r\n            proto.y = 0;\r\n            proto.scaleX = 1;\r\n            proto.scaleY = 1;\r\n            proto.originX = 0;\r\n            proto.originY = 0;\r\n            proto.rotation = 0;\r\n            proto.globalScaleRatio = 1;\r\n        })();\r\n        return Transformable;\r\n    }());\n\n    var easing = {\r\n        linear: function (k) {\r\n            return k;\r\n        },\r\n        quadraticIn: function (k) {\r\n            return k * k;\r\n        },\r\n        quadraticOut: function (k) {\r\n            return k * (2 - k);\r\n        },\r\n        quadraticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k;\r\n            }\r\n            return -0.5 * (--k * (k - 2) - 1);\r\n        },\r\n        cubicIn: function (k) {\r\n            return k * k * k;\r\n        },\r\n        cubicOut: function (k) {\r\n            return --k * k * k + 1;\r\n        },\r\n        cubicInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k;\r\n            }\r\n            return 0.5 * ((k -= 2) * k * k + 2);\r\n        },\r\n        quarticIn: function (k) {\r\n            return k * k * k * k;\r\n        },\r\n        quarticOut: function (k) {\r\n            return 1 - (--k * k * k * k);\r\n        },\r\n        quarticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k * k;\r\n            }\r\n            return -0.5 * ((k -= 2) * k * k * k - 2);\r\n        },\r\n        quinticIn: function (k) {\r\n            return k * k * k * k * k;\r\n        },\r\n        quinticOut: function (k) {\r\n            return --k * k * k * k * k + 1;\r\n        },\r\n        quinticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k * k * k;\r\n            }\r\n            return 0.5 * ((k -= 2) * k * k * k * k + 2);\r\n        },\r\n        sinusoidalIn: function (k) {\r\n            return 1 - Math.cos(k * Math.PI / 2);\r\n        },\r\n        sinusoidalOut: function (k) {\r\n            return Math.sin(k * Math.PI / 2);\r\n        },\r\n        sinusoidalInOut: function (k) {\r\n            return 0.5 * (1 - Math.cos(Math.PI * k));\r\n        },\r\n        exponentialIn: function (k) {\r\n            return k === 0 ? 0 : Math.pow(1024, k - 1);\r\n        },\r\n        exponentialOut: function (k) {\r\n            return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\r\n        },\r\n        exponentialInOut: function (k) {\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * Math.pow(1024, k - 1);\r\n            }\r\n            return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\r\n        },\r\n        circularIn: function (k) {\r\n            return 1 - Math.sqrt(1 - k * k);\r\n        },\r\n        circularOut: function (k) {\r\n            return Math.sqrt(1 - (--k * k));\r\n        },\r\n        circularInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return -0.5 * (Math.sqrt(1 - k * k) - 1);\r\n            }\r\n            return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\r\n        },\r\n        elasticIn: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            return -(a * Math.pow(2, 10 * (k -= 1))\r\n                * Math.sin((k - s) * (2 * Math.PI) / p));\r\n        },\r\n        elasticOut: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            return (a * Math.pow(2, -10 * k)\r\n                * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\r\n        },\r\n        elasticInOut: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            if ((k *= 2) < 1) {\r\n                return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\r\n                    * Math.sin((k - s) * (2 * Math.PI) / p));\r\n            }\r\n            return a * Math.pow(2, -10 * (k -= 1))\r\n                * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n        },\r\n        backIn: function (k) {\r\n            var s = 1.70158;\r\n            return k * k * ((s + 1) * k - s);\r\n        },\r\n        backOut: function (k) {\r\n            var s = 1.70158;\r\n            return --k * k * ((s + 1) * k + s) + 1;\r\n        },\r\n        backInOut: function (k) {\r\n            var s = 1.70158 * 1.525;\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * (k * k * ((s + 1) * k - s));\r\n            }\r\n            return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\r\n        },\r\n        bounceIn: function (k) {\r\n            return 1 - easing.bounceOut(1 - k);\r\n        },\r\n        bounceOut: function (k) {\r\n            if (k < (1 / 2.75)) {\r\n                return 7.5625 * k * k;\r\n            }\r\n            else if (k < (2 / 2.75)) {\r\n                return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\r\n            }\r\n            else if (k < (2.5 / 2.75)) {\r\n                return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\r\n            }\r\n            else {\r\n                return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\r\n            }\r\n        },\r\n        bounceInOut: function (k) {\r\n            if (k < 0.5) {\r\n                return easing.bounceIn(k * 2) * 0.5;\r\n            }\r\n            return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\r\n        }\r\n    };\n\n    var Clip = (function () {\r\n        function Clip(opts) {\r\n            this._initialized = false;\r\n            this._startTime = 0;\r\n            this._pausedTime = 0;\r\n            this._paused = false;\r\n            this._life = opts.life || 1000;\r\n            this._delay = opts.delay || 0;\r\n            this.loop = opts.loop == null ? false : opts.loop;\r\n            this.gap = opts.gap || 0;\r\n            this.easing = opts.easing || 'linear';\r\n            this.onframe = opts.onframe;\r\n            this.ondestroy = opts.ondestroy;\r\n            this.onrestart = opts.onrestart;\r\n        }\r\n        Clip.prototype.step = function (globalTime, deltaTime) {\r\n            if (!this._initialized) {\r\n                this._startTime = globalTime + this._delay;\r\n                this._initialized = true;\r\n            }\r\n            if (this._paused) {\r\n                this._pausedTime += deltaTime;\r\n                return;\r\n            }\r\n            var percent = (globalTime - this._startTime - this._pausedTime) / this._life;\r\n            if (percent < 0) {\r\n                percent = 0;\r\n            }\r\n            percent = Math.min(percent, 1);\r\n            var easing$1 = this.easing;\r\n            var easingFunc = typeof easing$1 === 'string'\r\n                ? easing[easing$1] : easing$1;\r\n            var schedule = typeof easingFunc === 'function'\r\n                ? easingFunc(percent)\r\n                : percent;\r\n            this.onframe && this.onframe(schedule);\r\n            if (percent === 1) {\r\n                if (this.loop) {\r\n                    this._restart(globalTime);\r\n                    this.onrestart && this.onrestart();\r\n                }\r\n                else {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Clip.prototype._restart = function (globalTime) {\r\n            var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\r\n            this._startTime = globalTime - remainder + this.gap;\r\n            this._pausedTime = 0;\r\n        };\r\n        Clip.prototype.pause = function () {\r\n            this._paused = true;\r\n        };\r\n        Clip.prototype.resume = function () {\r\n            this._paused = false;\r\n        };\r\n        return Clip;\r\n    }());\n\n    var Entry = (function () {\r\n        function Entry(val) {\r\n            this.value = val;\r\n        }\r\n        return Entry;\r\n    }());\r\n    var LinkedList = (function () {\r\n        function LinkedList() {\r\n            this._len = 0;\r\n        }\r\n        LinkedList.prototype.insert = function (val) {\r\n            var entry = new Entry(val);\r\n            this.insertEntry(entry);\r\n            return entry;\r\n        };\r\n        LinkedList.prototype.insertEntry = function (entry) {\r\n            if (!this.head) {\r\n                this.head = this.tail = entry;\r\n            }\r\n            else {\r\n                this.tail.next = entry;\r\n                entry.prev = this.tail;\r\n                entry.next = null;\r\n                this.tail = entry;\r\n            }\r\n            this._len++;\r\n        };\r\n        LinkedList.prototype.remove = function (entry) {\r\n            var prev = entry.prev;\r\n            var next = entry.next;\r\n            if (prev) {\r\n                prev.next = next;\r\n            }\r\n            else {\r\n                this.head = next;\r\n            }\r\n            if (next) {\r\n                next.prev = prev;\r\n            }\r\n            else {\r\n                this.tail = prev;\r\n            }\r\n            entry.next = entry.prev = null;\r\n            this._len--;\r\n        };\r\n        LinkedList.prototype.len = function () {\r\n            return this._len;\r\n        };\r\n        LinkedList.prototype.clear = function () {\r\n            this.head = this.tail = null;\r\n            this._len = 0;\r\n        };\r\n        return LinkedList;\r\n    }());\r\n    var LRU = (function () {\r\n        function LRU(maxSize) {\r\n            this._list = new LinkedList();\r\n            this._maxSize = 10;\r\n            this._map = {};\r\n            this._maxSize = maxSize;\r\n        }\r\n        LRU.prototype.put = function (key, value) {\r\n            var list = this._list;\r\n            var map = this._map;\r\n            var removed = null;\r\n            if (map[key] == null) {\r\n                var len = list.len();\r\n                var entry = this._lastRemovedEntry;\r\n                if (len >= this._maxSize && len > 0) {\r\n                    var leastUsedEntry = list.head;\r\n                    list.remove(leastUsedEntry);\r\n                    delete map[leastUsedEntry.key];\r\n                    removed = leastUsedEntry.value;\r\n                    this._lastRemovedEntry = leastUsedEntry;\r\n                }\r\n                if (entry) {\r\n                    entry.value = value;\r\n                }\r\n                else {\r\n                    entry = new Entry(value);\r\n                }\r\n                entry.key = key;\r\n                list.insertEntry(entry);\r\n                map[key] = entry;\r\n            }\r\n            return removed;\r\n        };\r\n        LRU.prototype.get = function (key) {\r\n            var entry = this._map[key];\r\n            var list = this._list;\r\n            if (entry != null) {\r\n                if (entry !== list.tail) {\r\n                    list.remove(entry);\r\n                    list.insertEntry(entry);\r\n                }\r\n                return entry.value;\r\n            }\r\n        };\r\n        LRU.prototype.clear = function () {\r\n            this._list.clear();\r\n            this._map = {};\r\n        };\r\n        LRU.prototype.len = function () {\r\n            return this._list.len();\r\n        };\r\n        return LRU;\r\n    }());\n\n    var kCSSColorTable = {\r\n        'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\r\n        'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\r\n        'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\r\n        'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\r\n        'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\r\n        'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\r\n        'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\r\n        'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\r\n        'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\r\n        'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\r\n        'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\r\n        'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\r\n        'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\r\n        'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\r\n        'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\r\n        'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\r\n        'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\r\n        'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\r\n        'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\r\n        'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\r\n        'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\r\n        'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\r\n        'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\r\n        'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\r\n        'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\r\n        'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\r\n        'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\r\n        'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\r\n        'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\r\n        'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\r\n        'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\r\n        'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\r\n        'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\r\n        'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\r\n        'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\r\n        'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\r\n        'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\r\n        'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\r\n        'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\r\n        'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\r\n        'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\r\n        'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\r\n        'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\r\n        'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\r\n        'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\r\n        'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\r\n        'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\r\n        'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\r\n        'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\r\n        'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\r\n        'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\r\n        'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\r\n        'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\r\n        'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\r\n        'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\r\n        'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\r\n        'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\r\n        'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\r\n        'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\r\n        'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\r\n        'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\r\n        'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\r\n        'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\r\n        'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\r\n        'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\r\n        'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\r\n        'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\r\n        'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\r\n        'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\r\n        'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\r\n        'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\r\n        'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\r\n        'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\r\n        'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\r\n    };\r\n    function clampCssByte(i) {\r\n        i = Math.round(i);\r\n        return i < 0 ? 0 : i > 255 ? 255 : i;\r\n    }\r\n    function clampCssAngle(i) {\r\n        i = Math.round(i);\r\n        return i < 0 ? 0 : i > 360 ? 360 : i;\r\n    }\r\n    function clampCssFloat(f) {\r\n        return f < 0 ? 0 : f > 1 ? 1 : f;\r\n    }\r\n    function parseCssInt(val) {\r\n        var str = val;\r\n        if (str.length && str.charAt(str.length - 1) === '%') {\r\n            return clampCssByte(parseFloat(str) / 100 * 255);\r\n        }\r\n        return clampCssByte(parseInt(str, 10));\r\n    }\r\n    function parseCssFloat(val) {\r\n        var str = val;\r\n        if (str.length && str.charAt(str.length - 1) === '%') {\r\n            return clampCssFloat(parseFloat(str) / 100);\r\n        }\r\n        return clampCssFloat(parseFloat(str));\r\n    }\r\n    function cssHueToRgb(m1, m2, h) {\r\n        if (h < 0) {\r\n            h += 1;\r\n        }\r\n        else if (h > 1) {\r\n            h -= 1;\r\n        }\r\n        if (h * 6 < 1) {\r\n            return m1 + (m2 - m1) * h * 6;\r\n        }\r\n        if (h * 2 < 1) {\r\n            return m2;\r\n        }\r\n        if (h * 3 < 2) {\r\n            return m1 + (m2 - m1) * (2 / 3 - h) * 6;\r\n        }\r\n        return m1;\r\n    }\r\n    function lerpNumber(a, b, p) {\r\n        return a + (b - a) * p;\r\n    }\r\n    function setRgba(out, r, g, b, a) {\r\n        out[0] = r;\r\n        out[1] = g;\r\n        out[2] = b;\r\n        out[3] = a;\r\n        return out;\r\n    }\r\n    function copyRgba(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    var colorCache = new LRU(20);\r\n    var lastRemovedArr = null;\r\n    function putToCache(colorStr, rgbaArr) {\r\n        if (lastRemovedArr) {\r\n            copyRgba(lastRemovedArr, rgbaArr);\r\n        }\r\n        lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\r\n    }\r\n    function parse(colorStr, rgbaArr) {\r\n        if (!colorStr) {\r\n            return;\r\n        }\r\n        rgbaArr = rgbaArr || [];\r\n        var cached = colorCache.get(colorStr);\r\n        if (cached) {\r\n            return copyRgba(rgbaArr, cached);\r\n        }\r\n        colorStr = colorStr + '';\r\n        var str = colorStr.replace(/ /g, '').toLowerCase();\r\n        if (str in kCSSColorTable) {\r\n            copyRgba(rgbaArr, kCSSColorTable[str]);\r\n            putToCache(colorStr, rgbaArr);\r\n            return rgbaArr;\r\n        }\r\n        var strLen = str.length;\r\n        if (str.charAt(0) === '#') {\r\n            if (strLen === 4 || strLen === 5) {\r\n                var iv = parseInt(str.slice(1, 4), 16);\r\n                if (!(iv >= 0 && iv <= 0xfff)) {\r\n                    setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    return;\r\n                }\r\n                setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1);\r\n                putToCache(colorStr, rgbaArr);\r\n                return rgbaArr;\r\n            }\r\n            else if (strLen === 7 || strLen === 9) {\r\n                var iv = parseInt(str.slice(1, 7), 16);\r\n                if (!(iv >= 0 && iv <= 0xffffff)) {\r\n                    setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    return;\r\n                }\r\n                setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1);\r\n                putToCache(colorStr, rgbaArr);\r\n                return rgbaArr;\r\n            }\r\n            return;\r\n        }\r\n        var op = str.indexOf('(');\r\n        var ep = str.indexOf(')');\r\n        if (op !== -1 && ep + 1 === strLen) {\r\n            var fname = str.substr(0, op);\r\n            var params = str.substr(op + 1, ep - (op + 1)).split(',');\r\n            var alpha = 1;\r\n            switch (fname) {\r\n                case 'rgba':\r\n                    if (params.length !== 4) {\r\n                        return params.length === 3\r\n                            ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1)\r\n                            : setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    }\r\n                    alpha = parseCssFloat(params.pop());\r\n                case 'rgb':\r\n                    if (params.length !== 3) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                case 'hsla':\r\n                    if (params.length !== 4) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    params[3] = parseCssFloat(params[3]);\r\n                    hsla2rgba(params, rgbaArr);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                case 'hsl':\r\n                    if (params.length !== 3) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    hsla2rgba(params, rgbaArr);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                default:\r\n                    return;\r\n            }\r\n        }\r\n        setRgba(rgbaArr, 0, 0, 0, 1);\r\n        return;\r\n    }\r\n    function hsla2rgba(hsla, rgba) {\r\n        var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\r\n        var s = parseCssFloat(hsla[1]);\r\n        var l = parseCssFloat(hsla[2]);\r\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\r\n        var m1 = l * 2 - m2;\r\n        rgba = rgba || [];\r\n        setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\r\n        if (hsla.length === 4) {\r\n            rgba[3] = hsla[3];\r\n        }\r\n        return rgba;\r\n    }\r\n    function rgba2hsla(rgba) {\r\n        if (!rgba) {\r\n            return;\r\n        }\r\n        var R = rgba[0] / 255;\r\n        var G = rgba[1] / 255;\r\n        var B = rgba[2] / 255;\r\n        var vMin = Math.min(R, G, B);\r\n        var vMax = Math.max(R, G, B);\r\n        var delta = vMax - vMin;\r\n        var L = (vMax + vMin) / 2;\r\n        var H;\r\n        var S;\r\n        if (delta === 0) {\r\n            H = 0;\r\n            S = 0;\r\n        }\r\n        else {\r\n            if (L < 0.5) {\r\n                S = delta / (vMax + vMin);\r\n            }\r\n            else {\r\n                S = delta / (2 - vMax - vMin);\r\n            }\r\n            var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta;\r\n            var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta;\r\n            var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta;\r\n            if (R === vMax) {\r\n                H = deltaB - deltaG;\r\n            }\r\n            else if (G === vMax) {\r\n                H = (1 / 3) + deltaR - deltaB;\r\n            }\r\n            else if (B === vMax) {\r\n                H = (2 / 3) + deltaG - deltaR;\r\n            }\r\n            if (H < 0) {\r\n                H += 1;\r\n            }\r\n            if (H > 1) {\r\n                H -= 1;\r\n            }\r\n        }\r\n        var hsla = [H * 360, S, L];\r\n        if (rgba[3] != null) {\r\n            hsla.push(rgba[3]);\r\n        }\r\n        return hsla;\r\n    }\r\n    function lift(color, level) {\r\n        var colorArr = parse(color);\r\n        if (colorArr) {\r\n            for (var i = 0; i < 3; i++) {\r\n                if (level < 0) {\r\n                    colorArr[i] = colorArr[i] * (1 - level) | 0;\r\n                }\r\n                else {\r\n                    colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\r\n                }\r\n                if (colorArr[i] > 255) {\r\n                    colorArr[i] = 255;\r\n                }\r\n                else if (colorArr[i] < 0) {\r\n                    colorArr[i] = 0;\r\n                }\r\n            }\r\n            return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\r\n        }\r\n    }\r\n    function toHex(color) {\r\n        var colorArr = parse(color);\r\n        if (colorArr) {\r\n            return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1);\r\n        }\r\n    }\r\n    function fastLerp(normalizedValue, colors, out) {\r\n        if (!(colors && colors.length)\r\n            || !(normalizedValue >= 0 && normalizedValue <= 1)) {\r\n            return;\r\n        }\r\n        out = out || [];\r\n        var value = normalizedValue * (colors.length - 1);\r\n        var leftIndex = Math.floor(value);\r\n        var rightIndex = Math.ceil(value);\r\n        var leftColor = colors[leftIndex];\r\n        var rightColor = colors[rightIndex];\r\n        var dv = value - leftIndex;\r\n        out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\r\n        out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\r\n        out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\r\n        out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\r\n        return out;\r\n    }\r\n    var fastMapToColor = fastLerp;\r\n    function lerp$1(normalizedValue, colors, fullOutput) {\r\n        if (!(colors && colors.length)\r\n            || !(normalizedValue >= 0 && normalizedValue <= 1)) {\r\n            return;\r\n        }\r\n        var value = normalizedValue * (colors.length - 1);\r\n        var leftIndex = Math.floor(value);\r\n        var rightIndex = Math.ceil(value);\r\n        var leftColor = parse(colors[leftIndex]);\r\n        var rightColor = parse(colors[rightIndex]);\r\n        var dv = value - leftIndex;\r\n        var color = stringify([\r\n            clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),\r\n            clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),\r\n            clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),\r\n            clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))\r\n        ], 'rgba');\r\n        return fullOutput\r\n            ? {\r\n                color: color,\r\n                leftIndex: leftIndex,\r\n                rightIndex: rightIndex,\r\n                value: value\r\n            }\r\n            : color;\r\n    }\r\n    var mapToColor = lerp$1;\r\n    function modifyHSL(color, h, s, l) {\r\n        var colorArr = parse(color);\r\n        if (color) {\r\n            colorArr = rgba2hsla(colorArr);\r\n            h != null && (colorArr[0] = clampCssAngle(h));\r\n            s != null && (colorArr[1] = parseCssFloat(s));\r\n            l != null && (colorArr[2] = parseCssFloat(l));\r\n            return stringify(hsla2rgba(colorArr), 'rgba');\r\n        }\r\n    }\r\n    function modifyAlpha(color, alpha) {\r\n        var colorArr = parse(color);\r\n        if (colorArr && alpha != null) {\r\n            colorArr[3] = clampCssFloat(alpha);\r\n            return stringify(colorArr, 'rgba');\r\n        }\r\n    }\r\n    function stringify(arrColor, type) {\r\n        if (!arrColor || !arrColor.length) {\r\n            return;\r\n        }\r\n        var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\r\n        if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\r\n            colorStr += ',' + arrColor[3];\r\n        }\r\n        return type + '(' + colorStr + ')';\r\n    }\r\n    function lum(color, backgroundLum) {\r\n        var arr = parse(color);\r\n        return arr\r\n            ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\r\n                + (1 - arr[3]) * backgroundLum\r\n            : 0;\r\n    }\r\n    function random() {\r\n        var r = Math.round(Math.random() * 255);\r\n        var g = Math.round(Math.random() * 255);\r\n        var b = Math.round(Math.random() * 255);\r\n        return 'rgb(' + r + ',' + g + ',' + b + ')';\r\n    }\n\n    var color = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        parse: parse,\n        lift: lift,\n        toHex: toHex,\n        fastLerp: fastLerp,\n        fastMapToColor: fastMapToColor,\n        lerp: lerp$1,\n        mapToColor: mapToColor,\n        modifyHSL: modifyHSL,\n        modifyAlpha: modifyAlpha,\n        stringify: stringify,\n        lum: lum,\n        random: random\n    });\n\n    var arraySlice = Array.prototype.slice;\r\n    function interpolateNumber(p0, p1, percent) {\r\n        return (p1 - p0) * percent + p0;\r\n    }\r\n    function step(p0, p1, percent) {\r\n        return percent > 0.5 ? p1 : p0;\r\n    }\r\n    function interpolate1DArray(out, p0, p1, percent) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = interpolateNumber(p0[i], p1[i], percent);\r\n        }\r\n    }\r\n    function interpolate2DArray(out, p0, p1, percent) {\r\n        var len = p0.length;\r\n        var len2 = len && p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[i] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\r\n            }\r\n        }\r\n    }\r\n    function add1DArray(out, p0, p1, sign) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = p0[i] + p1[i] * sign;\r\n        }\r\n        return out;\r\n    }\r\n    function add2DArray(out, p0, p1, sign) {\r\n        var len = p0.length;\r\n        var len2 = len && p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[i] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = p0[i][j] + p1[i][j] * sign;\r\n            }\r\n        }\r\n        return out;\r\n    }\r\n    function fillArray(val0, val1, arrDim) {\r\n        var arr0 = val0;\r\n        var arr1 = val1;\r\n        if (!arr0.push || !arr1.push) {\r\n            return;\r\n        }\r\n        var arr0Len = arr0.length;\r\n        var arr1Len = arr1.length;\r\n        if (arr0Len !== arr1Len) {\r\n            var isPreviousLarger = arr0Len > arr1Len;\r\n            if (isPreviousLarger) {\r\n                arr0.length = arr1Len;\r\n            }\r\n            else {\r\n                for (var i = arr0Len; i < arr1Len; i++) {\r\n                    arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\r\n                }\r\n            }\r\n        }\r\n        var len2 = arr0[0] && arr0[0].length;\r\n        for (var i = 0; i < arr0.length; i++) {\r\n            if (arrDim === 1) {\r\n                if (isNaN(arr0[i])) {\r\n                    arr0[i] = arr1[i];\r\n                }\r\n            }\r\n            else {\r\n                for (var j = 0; j < len2; j++) {\r\n                    if (isNaN(arr0[i][j])) {\r\n                        arr0[i][j] = arr1[i][j];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function is1DArraySame(arr0, arr1) {\r\n        var len = arr0.length;\r\n        if (len !== arr1.length) {\r\n            return false;\r\n        }\r\n        for (var i = 0; i < len; i++) {\r\n            if (arr0[i] !== arr1[i]) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\r\n        var v0 = (p2 - p0) * 0.5;\r\n        var v1 = (p3 - p1) * 0.5;\r\n        return (2 * (p1 - p2) + v0 + v1) * t3\r\n            + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n            + v0 * t + p1;\r\n    }\r\n    function catmullRomInterpolate1DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\r\n        }\r\n    }\r\n    function catmullRomInterpolate2DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n        var len = p0.length;\r\n        var len2 = p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[1] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\r\n            }\r\n        }\r\n    }\r\n    function cloneValue(value) {\r\n        if (isArrayLike(value)) {\r\n            var len = value.length;\r\n            if (isArrayLike(value[0])) {\r\n                var ret = [];\r\n                for (var i = 0; i < len; i++) {\r\n                    ret.push(arraySlice.call(value[i]));\r\n                }\r\n                return ret;\r\n            }\r\n            return arraySlice.call(value);\r\n        }\r\n        return value;\r\n    }\r\n    function rgba2String(rgba) {\r\n        rgba[0] = Math.floor(rgba[0]);\r\n        rgba[1] = Math.floor(rgba[1]);\r\n        rgba[2] = Math.floor(rgba[2]);\r\n        return 'rgba(' + rgba.join(',') + ')';\r\n    }\r\n    function guessArrayDim(value) {\r\n        return isArrayLike(value && value[0]) ? 2 : 1;\r\n    }\r\n    var tmpRgba = [0, 0, 0, 0];\r\n    var Track = (function () {\r\n        function Track(propName) {\r\n            this.keyframes = [];\r\n            this.maxTime = 0;\r\n            this.arrDim = 0;\r\n            this.interpolable = true;\r\n            this._needsSort = false;\r\n            this._isAllValueEqual = true;\r\n            this._lastFrame = 0;\r\n            this._lastFramePercent = 0;\r\n            this.propName = propName;\r\n        }\r\n        Track.prototype.isFinished = function () {\r\n            return this._finished;\r\n        };\r\n        Track.prototype.setFinished = function () {\r\n            this._finished = true;\r\n            if (this._additiveTrack) {\r\n                this._additiveTrack.setFinished();\r\n            }\r\n        };\r\n        Track.prototype.needsAnimate = function () {\r\n            return !this._isAllValueEqual && this.keyframes.length >= 2 && this.interpolable;\r\n        };\r\n        Track.prototype.getAdditiveTrack = function () {\r\n            return this._additiveTrack;\r\n        };\r\n        Track.prototype.addKeyframe = function (time, value) {\r\n            if (time >= this.maxTime) {\r\n                this.maxTime = time;\r\n            }\r\n            else {\r\n                this._needsSort = true;\r\n            }\r\n            var keyframes = this.keyframes;\r\n            var len = keyframes.length;\r\n            if (this.interpolable) {\r\n                if (isArrayLike(value)) {\r\n                    var arrayDim = guessArrayDim(value);\r\n                    if (len > 0 && this.arrDim !== arrayDim) {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (arrayDim === 1 && typeof value[0] !== 'number'\r\n                        || arrayDim === 2 && typeof value[0][0] !== 'number') {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (len > 0) {\r\n                        var lastFrame = keyframes[len - 1];\r\n                        if (this._isAllValueEqual) {\r\n                            if (arrayDim === 1) {\r\n                                if (!is1DArraySame(value, lastFrame.value)) {\r\n                                    this._isAllValueEqual = false;\r\n                                }\r\n                            }\r\n                            else {\r\n                                this._isAllValueEqual = false;\r\n                            }\r\n                        }\r\n                    }\r\n                    this.arrDim = arrayDim;\r\n                }\r\n                else {\r\n                    if (this.arrDim > 0) {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (typeof value === 'string') {\r\n                        var colorArray = parse(value);\r\n                        if (colorArray) {\r\n                            value = colorArray;\r\n                            this.isValueColor = true;\r\n                        }\r\n                        else {\r\n                            this.interpolable = false;\r\n                        }\r\n                    }\r\n                    else if (typeof value !== 'number') {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (this._isAllValueEqual && len > 0) {\r\n                        var lastFrame = keyframes[len - 1];\r\n                        if (this.isValueColor && !is1DArraySame(lastFrame.value, value)) {\r\n                            this._isAllValueEqual = false;\r\n                        }\r\n                        else if (lastFrame.value !== value) {\r\n                            this._isAllValueEqual = false;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            var kf = {\r\n                time: time,\r\n                value: value,\r\n                percent: 0\r\n            };\r\n            this.keyframes.push(kf);\r\n            return kf;\r\n        };\r\n        Track.prototype.prepare = function (additiveTrack) {\r\n            var kfs = this.keyframes;\r\n            if (this._needsSort) {\r\n                kfs.sort(function (a, b) {\r\n                    return a.time - b.time;\r\n                });\r\n            }\r\n            var arrDim = this.arrDim;\r\n            var kfsLen = kfs.length;\r\n            var lastKf = kfs[kfsLen - 1];\r\n            for (var i = 0; i < kfsLen; i++) {\r\n                kfs[i].percent = kfs[i].time / this.maxTime;\r\n                if (arrDim > 0 && i !== kfsLen - 1) {\r\n                    fillArray(kfs[i].value, lastKf.value, arrDim);\r\n                }\r\n            }\r\n            if (additiveTrack\r\n                && this.needsAnimate()\r\n                && additiveTrack.needsAnimate()\r\n                && arrDim === additiveTrack.arrDim\r\n                && this.isValueColor === additiveTrack.isValueColor\r\n                && !additiveTrack._finished) {\r\n                this._additiveTrack = additiveTrack;\r\n                var startValue = kfs[0].value;\r\n                for (var i = 0; i < kfsLen; i++) {\r\n                    if (arrDim === 0) {\r\n                        if (this.isValueColor) {\r\n                            kfs[i].additiveValue\r\n                                = add1DArray([], kfs[i].value, startValue, -1);\r\n                        }\r\n                        else {\r\n                            kfs[i].additiveValue = kfs[i].value - startValue;\r\n                        }\r\n                    }\r\n                    else if (arrDim === 1) {\r\n                        kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1);\r\n                    }\r\n                    else if (arrDim === 2) {\r\n                        kfs[i].additiveValue = add2DArray([], kfs[i].value, startValue, -1);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Track.prototype.step = function (target, percent) {\r\n            if (this._finished) {\r\n                return;\r\n            }\r\n            if (this._additiveTrack && this._additiveTrack._finished) {\r\n                this._additiveTrack = null;\r\n            }\r\n            var isAdditive = this._additiveTrack != null;\r\n            var valueKey = isAdditive ? 'additiveValue' : 'value';\r\n            var keyframes = this.keyframes;\r\n            var kfsNum = this.keyframes.length;\r\n            var propName = this.propName;\r\n            var arrDim = this.arrDim;\r\n            var isValueColor = this.isValueColor;\r\n            var frameIdx;\r\n            if (percent < 0) {\r\n                frameIdx = 0;\r\n            }\r\n            else if (percent < this._lastFramePercent) {\r\n                var start = Math.min(this._lastFrame + 1, kfsNum - 1);\r\n                for (frameIdx = start; frameIdx >= 0; frameIdx--) {\r\n                    if (keyframes[frameIdx].percent <= percent) {\r\n                        break;\r\n                    }\r\n                }\r\n                frameIdx = Math.min(frameIdx, kfsNum - 2);\r\n            }\r\n            else {\r\n                for (frameIdx = this._lastFrame; frameIdx < kfsNum; frameIdx++) {\r\n                    if (keyframes[frameIdx].percent > percent) {\r\n                        break;\r\n                    }\r\n                }\r\n                frameIdx = Math.min(frameIdx - 1, kfsNum - 2);\r\n            }\r\n            var nextFrame = keyframes[frameIdx + 1];\r\n            var frame = keyframes[frameIdx];\r\n            if (!(frame && nextFrame)) {\r\n                return;\r\n            }\r\n            this._lastFrame = frameIdx;\r\n            this._lastFramePercent = percent;\r\n            var range = (nextFrame.percent - frame.percent);\r\n            if (range === 0) {\r\n                return;\r\n            }\r\n            var w = (percent - frame.percent) / range;\r\n            var targetArr = isAdditive ? this._additiveValue\r\n                : (isValueColor ? tmpRgba : target[propName]);\r\n            if ((arrDim > 0 || isValueColor) && !targetArr) {\r\n                targetArr = this._additiveValue = [];\r\n            }\r\n            if (this.useSpline) {\r\n                var p1 = keyframes[frameIdx][valueKey];\r\n                var p0 = keyframes[frameIdx === 0 ? frameIdx : frameIdx - 1][valueKey];\r\n                var p2 = keyframes[frameIdx > kfsNum - 2 ? kfsNum - 1 : frameIdx + 1][valueKey];\r\n                var p3 = keyframes[frameIdx > kfsNum - 3 ? kfsNum - 1 : frameIdx + 2][valueKey];\r\n                if (arrDim > 0) {\r\n                    arrDim === 1\r\n                        ? catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w)\r\n                        : catmullRomInterpolate2DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n                }\r\n                else if (isValueColor) {\r\n                    catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n                    if (!isAdditive) {\r\n                        target[propName] = rgba2String(targetArr);\r\n                    }\r\n                }\r\n                else {\r\n                    var value = void 0;\r\n                    if (!this.interpolable) {\r\n                        value = p2;\r\n                    }\r\n                    else {\r\n                        value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\r\n                    }\r\n                    if (isAdditive) {\r\n                        this._additiveValue = value;\r\n                    }\r\n                    else {\r\n                        target[propName] = value;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (arrDim > 0) {\r\n                    arrDim === 1\r\n                        ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\r\n                        : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n                }\r\n                else if (isValueColor) {\r\n                    interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n                    if (!isAdditive) {\r\n                        target[propName] = rgba2String(targetArr);\r\n                    }\r\n                }\r\n                else {\r\n                    var value = void 0;\r\n                    if (!this.interpolable) {\r\n                        value = step(frame[valueKey], nextFrame[valueKey], w);\r\n                    }\r\n                    else {\r\n                        value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\r\n                    }\r\n                    if (isAdditive) {\r\n                        this._additiveValue = value;\r\n                    }\r\n                    else {\r\n                        target[propName] = value;\r\n                    }\r\n                }\r\n            }\r\n            if (isAdditive) {\r\n                this._addToTarget(target);\r\n            }\r\n        };\r\n        Track.prototype._addToTarget = function (target) {\r\n            var arrDim = this.arrDim;\r\n            var propName = this.propName;\r\n            var additiveValue = this._additiveValue;\r\n            if (arrDim === 0) {\r\n                if (this.isValueColor) {\r\n                    parse(target[propName], tmpRgba);\r\n                    add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\r\n                    target[propName] = rgba2String(tmpRgba);\r\n                }\r\n                else {\r\n                    target[propName] = target[propName] + additiveValue;\r\n                }\r\n            }\r\n            else if (arrDim === 1) {\r\n                add1DArray(target[propName], target[propName], additiveValue, 1);\r\n            }\r\n            else if (arrDim === 2) {\r\n                add2DArray(target[propName], target[propName], additiveValue, 1);\r\n            }\r\n        };\r\n        return Track;\r\n    }());\r\n    var Animator = (function () {\r\n        function Animator(target, loop, additiveTo) {\r\n            this._tracks = {};\r\n            this._trackKeys = [];\r\n            this._delay = 0;\r\n            this._maxTime = 0;\r\n            this._paused = false;\r\n            this._started = 0;\r\n            this._clip = null;\r\n            this._target = target;\r\n            this._loop = loop;\r\n            if (loop && additiveTo) {\r\n                logError('Can\\' use additive animation on looped animation.');\r\n                return;\r\n            }\r\n            this._additiveAnimators = additiveTo;\r\n        }\r\n        Animator.prototype.getTarget = function () {\r\n            return this._target;\r\n        };\r\n        Animator.prototype.changeTarget = function (target) {\r\n            this._target = target;\r\n        };\r\n        Animator.prototype.when = function (time, props) {\r\n            return this.whenWithKeys(time, props, keys(props));\r\n        };\r\n        Animator.prototype.whenWithKeys = function (time, props, propNames) {\r\n            var tracks = this._tracks;\r\n            for (var i = 0; i < propNames.length; i++) {\r\n                var propName = propNames[i];\r\n                var track = tracks[propName];\r\n                if (!track) {\r\n                    track = tracks[propName] = new Track(propName);\r\n                    var initialValue = void 0;\r\n                    var additiveTrack = this._getAdditiveTrack(propName);\r\n                    if (additiveTrack) {\r\n                        var lastFinalKf = additiveTrack.keyframes[additiveTrack.keyframes.length - 1];\r\n                        initialValue = lastFinalKf && lastFinalKf.value;\r\n                        if (additiveTrack.isValueColor && initialValue) {\r\n                            initialValue = rgba2String(initialValue);\r\n                        }\r\n                    }\r\n                    else {\r\n                        initialValue = this._target[propName];\r\n                    }\r\n                    if (initialValue == null) {\r\n                        continue;\r\n                    }\r\n                    if (time !== 0) {\r\n                        track.addKeyframe(0, cloneValue(initialValue));\r\n                    }\r\n                    this._trackKeys.push(propName);\r\n                }\r\n                track.addKeyframe(time, cloneValue(props[propName]));\r\n            }\r\n            this._maxTime = Math.max(this._maxTime, time);\r\n            return this;\r\n        };\r\n        Animator.prototype.pause = function () {\r\n            this._clip.pause();\r\n            this._paused = true;\r\n        };\r\n        Animator.prototype.resume = function () {\r\n            this._clip.resume();\r\n            this._paused = false;\r\n        };\r\n        Animator.prototype.isPaused = function () {\r\n            return !!this._paused;\r\n        };\r\n        Animator.prototype._doneCallback = function () {\r\n            this._setTracksFinished();\r\n            this._clip = null;\r\n            var doneList = this._doneList;\r\n            if (doneList) {\r\n                var len = doneList.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    doneList[i].call(this);\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype._abortedCallback = function () {\r\n            this._setTracksFinished();\r\n            var animation = this.animation;\r\n            var abortedList = this._abortedList;\r\n            if (animation) {\r\n                animation.removeClip(this._clip);\r\n            }\r\n            this._clip = null;\r\n            if (abortedList) {\r\n                for (var i = 0; i < abortedList.length; i++) {\r\n                    abortedList[i].call(this);\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype._setTracksFinished = function () {\r\n            var tracks = this._tracks;\r\n            var tracksKeys = this._trackKeys;\r\n            for (var i = 0; i < tracksKeys.length; i++) {\r\n                tracks[tracksKeys[i]].setFinished();\r\n            }\r\n        };\r\n        Animator.prototype._getAdditiveTrack = function (trackName) {\r\n            var additiveTrack;\r\n            var additiveAnimators = this._additiveAnimators;\r\n            if (additiveAnimators) {\r\n                for (var i = 0; i < additiveAnimators.length; i++) {\r\n                    var track = additiveAnimators[i].getTrack(trackName);\r\n                    if (track) {\r\n                        additiveTrack = track;\r\n                    }\r\n                }\r\n            }\r\n            return additiveTrack;\r\n        };\r\n        Animator.prototype.start = function (easing, forceAnimate) {\r\n            if (this._started > 0) {\r\n                return;\r\n            }\r\n            this._started = 1;\r\n            var self = this;\r\n            var tracks = [];\r\n            for (var i = 0; i < this._trackKeys.length; i++) {\r\n                var propName = this._trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                var additiveTrack = this._getAdditiveTrack(propName);\r\n                var kfs = track.keyframes;\r\n                track.prepare(additiveTrack);\r\n                if (track.needsAnimate()) {\r\n                    tracks.push(track);\r\n                }\r\n                else if (!track.interpolable) {\r\n                    var lastKf = kfs[kfs.length - 1];\r\n                    if (lastKf) {\r\n                        self._target[track.propName] = lastKf.value;\r\n                    }\r\n                }\r\n            }\r\n            if (tracks.length || forceAnimate) {\r\n                var clip = new Clip({\r\n                    life: this._maxTime,\r\n                    loop: this._loop,\r\n                    delay: this._delay,\r\n                    onframe: function (percent) {\r\n                        self._started = 2;\r\n                        var additiveAnimators = self._additiveAnimators;\r\n                        if (additiveAnimators) {\r\n                            var stillHasAdditiveAnimator = false;\r\n                            for (var i = 0; i < additiveAnimators.length; i++) {\r\n                                if (additiveAnimators[i]._clip) {\r\n                                    stillHasAdditiveAnimator = true;\r\n                                    break;\r\n                                }\r\n                            }\r\n                            if (!stillHasAdditiveAnimator) {\r\n                                self._additiveAnimators = null;\r\n                            }\r\n                        }\r\n                        for (var i = 0; i < tracks.length; i++) {\r\n                            tracks[i].step(self._target, percent);\r\n                        }\r\n                        var onframeList = self._onframeList;\r\n                        if (onframeList) {\r\n                            for (var i = 0; i < onframeList.length; i++) {\r\n                                onframeList[i](self._target, percent);\r\n                            }\r\n                        }\r\n                    },\r\n                    ondestroy: function () {\r\n                        self._doneCallback();\r\n                    }\r\n                });\r\n                this._clip = clip;\r\n                if (this.animation) {\r\n                    this.animation.addClip(clip);\r\n                }\r\n                if (easing && easing !== 'spline') {\r\n                    clip.easing = easing;\r\n                }\r\n            }\r\n            else {\r\n                this._doneCallback();\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.stop = function (forwardToLast) {\r\n            if (!this._clip) {\r\n                return;\r\n            }\r\n            var clip = this._clip;\r\n            if (forwardToLast) {\r\n                clip.onframe(1);\r\n            }\r\n            this._abortedCallback();\r\n        };\r\n        Animator.prototype.delay = function (time) {\r\n            this._delay = time;\r\n            return this;\r\n        };\r\n        Animator.prototype.during = function (cb) {\r\n            if (cb) {\r\n                if (!this._onframeList) {\r\n                    this._onframeList = [];\r\n                }\r\n                this._onframeList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.done = function (cb) {\r\n            if (cb) {\r\n                if (!this._doneList) {\r\n                    this._doneList = [];\r\n                }\r\n                this._doneList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.aborted = function (cb) {\r\n            if (cb) {\r\n                if (!this._abortedList) {\r\n                    this._abortedList = [];\r\n                }\r\n                this._abortedList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.getClip = function () {\r\n            return this._clip;\r\n        };\r\n        Animator.prototype.getTrack = function (propName) {\r\n            return this._tracks[propName];\r\n        };\r\n        Animator.prototype.stopTracks = function (propNames, forwardToLast) {\r\n            if (!propNames.length || !this._clip) {\r\n                return true;\r\n            }\r\n            var tracks = this._tracks;\r\n            var tracksKeys = this._trackKeys;\r\n            for (var i = 0; i < propNames.length; i++) {\r\n                var track = tracks[propNames[i]];\r\n                if (track) {\r\n                    if (forwardToLast) {\r\n                        track.step(this._target, 1);\r\n                    }\r\n                    else if (this._started === 1) {\r\n                        track.step(this._target, 0);\r\n                    }\r\n                    track.setFinished();\r\n                }\r\n            }\r\n            var allAborted = true;\r\n            for (var i = 0; i < tracksKeys.length; i++) {\r\n                if (!tracks[tracksKeys[i]].isFinished()) {\r\n                    allAborted = false;\r\n                    break;\r\n                }\r\n            }\r\n            if (allAborted) {\r\n                this._abortedCallback();\r\n            }\r\n            return allAborted;\r\n        };\r\n        Animator.prototype.saveFinalToTarget = function (target, trackKeys) {\r\n            if (!target) {\r\n                return;\r\n            }\r\n            trackKeys = trackKeys || this._trackKeys;\r\n            for (var i = 0; i < trackKeys.length; i++) {\r\n                var propName = trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                if (!track || track.isFinished()) {\r\n                    continue;\r\n                }\r\n                var kfs = track.keyframes;\r\n                var lastKf = kfs[kfs.length - 1];\r\n                if (lastKf) {\r\n                    var val = cloneValue(lastKf.value);\r\n                    if (track.isValueColor) {\r\n                        val = rgba2String(val);\r\n                    }\r\n                    target[propName] = val;\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\r\n            trackKeys = trackKeys || keys(finalProps);\r\n            for (var i = 0; i < trackKeys.length; i++) {\r\n                var propName = trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                if (!track) {\r\n                    continue;\r\n                }\r\n                var kfs = track.keyframes;\r\n                if (kfs.length > 1) {\r\n                    var lastKf = kfs.pop();\r\n                    track.addKeyframe(lastKf.time, finalProps[propName]);\r\n                    track.prepare(track.getAdditiveTrack());\r\n                }\r\n            }\r\n        };\r\n        return Animator;\r\n    }());\n\n    var Point = (function () {\r\n        function Point(x, y) {\r\n            this.x = x || 0;\r\n            this.y = y || 0;\r\n        }\r\n        Point.prototype.copy = function (other) {\r\n            this.x = other.x;\r\n            this.y = other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.clone = function () {\r\n            return new Point(this.x, this.y);\r\n        };\r\n        Point.prototype.set = function (x, y) {\r\n            this.x = x;\r\n            this.y = y;\r\n            return this;\r\n        };\r\n        Point.prototype.equal = function (other) {\r\n            return other.x === this.x && other.y === this.y;\r\n        };\r\n        Point.prototype.add = function (other) {\r\n            this.x += other.x;\r\n            this.y += other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.scale = function (scalar) {\r\n            this.x *= scalar;\r\n            this.y *= scalar;\r\n        };\r\n        Point.prototype.scaleAndAdd = function (other, scalar) {\r\n            this.x += other.x * scalar;\r\n            this.y += other.y * scalar;\r\n        };\r\n        Point.prototype.sub = function (other) {\r\n            this.x -= other.x;\r\n            this.y -= other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.dot = function (other) {\r\n            return this.x * other.x + this.y * other.y;\r\n        };\r\n        Point.prototype.len = function () {\r\n            return Math.sqrt(this.x * this.x + this.y * this.y);\r\n        };\r\n        Point.prototype.lenSquare = function () {\r\n            return this.x * this.x + this.y * this.y;\r\n        };\r\n        Point.prototype.normalize = function () {\r\n            var len = this.len();\r\n            this.x /= len;\r\n            this.y /= len;\r\n            return this;\r\n        };\r\n        Point.prototype.distance = function (other) {\r\n            var dx = this.x - other.x;\r\n            var dy = this.y - other.y;\r\n            return Math.sqrt(dx * dx + dy * dy);\r\n        };\r\n        Point.prototype.distanceSquare = function (other) {\r\n            var dx = this.x - other.x;\r\n            var dy = this.y - other.y;\r\n            return dx * dx + dy * dy;\r\n        };\r\n        Point.prototype.negate = function () {\r\n            this.x = -this.x;\r\n            this.y = -this.y;\r\n            return this;\r\n        };\r\n        Point.prototype.transform = function (m) {\r\n            if (!m) {\r\n                return;\r\n            }\r\n            var x = this.x;\r\n            var y = this.y;\r\n            this.x = m[0] * x + m[2] * y + m[4];\r\n            this.y = m[1] * x + m[3] * y + m[5];\r\n            return this;\r\n        };\r\n        Point.prototype.toArray = function (out) {\r\n            out[0] = this.x;\r\n            out[1] = this.y;\r\n            return out;\r\n        };\r\n        Point.prototype.fromArray = function (input) {\r\n            this.x = input[0];\r\n            this.y = input[1];\r\n        };\r\n        Point.set = function (p, x, y) {\r\n            p.x = x;\r\n            p.y = y;\r\n        };\r\n        Point.copy = function (p, p2) {\r\n            p.x = p2.x;\r\n            p.y = p2.y;\r\n        };\r\n        Point.len = function (p) {\r\n            return Math.sqrt(p.x * p.x + p.y * p.y);\r\n        };\r\n        Point.lenSquare = function (p) {\r\n            return p.x * p.x + p.y * p.y;\r\n        };\r\n        Point.dot = function (p0, p1) {\r\n            return p0.x * p1.x + p0.y * p1.y;\r\n        };\r\n        Point.add = function (out, p0, p1) {\r\n            out.x = p0.x + p1.x;\r\n            out.y = p0.y + p1.y;\r\n        };\r\n        Point.sub = function (out, p0, p1) {\r\n            out.x = p0.x - p1.x;\r\n            out.y = p0.y - p1.y;\r\n        };\r\n        Point.scale = function (out, p0, scalar) {\r\n            out.x = p0.x * scalar;\r\n            out.y = p0.y * scalar;\r\n        };\r\n        Point.scaleAndAdd = function (out, p0, p1, scalar) {\r\n            out.x = p0.x + p1.x * scalar;\r\n            out.y = p0.y + p1.y * scalar;\r\n        };\r\n        Point.lerp = function (out, p0, p1, t) {\r\n            var onet = 1 - t;\r\n            out.x = onet * p0.x + t * p1.x;\r\n            out.y = onet * p0.y + t * p1.y;\r\n        };\r\n        return Point;\r\n    }());\n\n    var mathMin = Math.min;\r\n    var mathMax = Math.max;\r\n    var lt = new Point();\r\n    var rb = new Point();\r\n    var lb = new Point();\r\n    var rt = new Point();\r\n    var minTv = new Point();\r\n    var maxTv = new Point();\r\n    var BoundingRect = (function () {\r\n        function BoundingRect(x, y, width, height) {\r\n            if (width < 0 && isFinite(width)) {\r\n                x = x + width;\r\n                width = -width;\r\n            }\r\n            if (height < 0 && isFinite(height)) {\r\n                y = y + height;\r\n                height = -height;\r\n            }\r\n            this.x = x;\r\n            this.y = y;\r\n            this.width = width;\r\n            this.height = height;\r\n        }\r\n        BoundingRect.prototype.union = function (other) {\r\n            var x = mathMin(other.x, this.x);\r\n            var y = mathMin(other.y, this.y);\r\n            if (isFinite(this.x) && isFinite(this.width)) {\r\n                this.width = mathMax(other.x + other.width, this.x + this.width) - x;\r\n            }\r\n            else {\r\n                this.width = other.width;\r\n            }\r\n            if (isFinite(this.y) && isFinite(this.height)) {\r\n                this.height = mathMax(other.y + other.height, this.y + this.height) - y;\r\n            }\r\n            else {\r\n                this.height = other.height;\r\n            }\r\n            this.x = x;\r\n            this.y = y;\r\n        };\r\n        BoundingRect.prototype.applyTransform = function (m) {\r\n            BoundingRect.applyTransform(this, this, m);\r\n        };\r\n        BoundingRect.prototype.calculateTransform = function (b) {\r\n            var a = this;\r\n            var sx = b.width / a.width;\r\n            var sy = b.height / a.height;\r\n            var m = create$1();\r\n            translate(m, m, [-a.x, -a.y]);\r\n            scale$1(m, m, [sx, sy]);\r\n            translate(m, m, [b.x, b.y]);\r\n            return m;\r\n        };\r\n        BoundingRect.prototype.intersect = function (b, mtv) {\r\n            if (!b) {\r\n                return false;\r\n            }\r\n            if (!(b instanceof BoundingRect)) {\r\n                b = BoundingRect.create(b);\r\n            }\r\n            var a = this;\r\n            var ax0 = a.x;\r\n            var ax1 = a.x + a.width;\r\n            var ay0 = a.y;\r\n            var ay1 = a.y + a.height;\r\n            var bx0 = b.x;\r\n            var bx1 = b.x + b.width;\r\n            var by0 = b.y;\r\n            var by1 = b.y + b.height;\r\n            var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\r\n            if (mtv) {\r\n                var dMin = Infinity;\r\n                var dMax = 0;\r\n                var d0 = Math.abs(ax1 - bx0);\r\n                var d1 = Math.abs(bx1 - ax0);\r\n                var d2 = Math.abs(ay1 - by0);\r\n                var d3 = Math.abs(by1 - ay0);\r\n                var dx = Math.min(d0, d1);\r\n                var dy = Math.min(d2, d3);\r\n                if (ax1 < bx0 || bx1 < ax0) {\r\n                    if (dx > dMax) {\r\n                        dMax = dx;\r\n                        if (d0 < d1) {\r\n                            Point.set(maxTv, -d0, 0);\r\n                        }\r\n                        else {\r\n                            Point.set(maxTv, d1, 0);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    if (dx < dMin) {\r\n                        dMin = dx;\r\n                        if (d0 < d1) {\r\n                            Point.set(minTv, d0, 0);\r\n                        }\r\n                        else {\r\n                            Point.set(minTv, -d1, 0);\r\n                        }\r\n                    }\r\n                }\r\n                if (ay1 < by0 || by1 < ay0) {\r\n                    if (dy > dMax) {\r\n                        dMax = dy;\r\n                        if (d2 < d3) {\r\n                            Point.set(maxTv, 0, -d2);\r\n                        }\r\n                        else {\r\n                            Point.set(maxTv, 0, d3);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    if (dx < dMin) {\r\n                        dMin = dx;\r\n                        if (d2 < d3) {\r\n                            Point.set(minTv, 0, d2);\r\n                        }\r\n                        else {\r\n                            Point.set(minTv, 0, -d3);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (mtv) {\r\n                Point.copy(mtv, overlap ? minTv : maxTv);\r\n            }\r\n            return overlap;\r\n        };\r\n        BoundingRect.prototype.contain = function (x, y) {\r\n            var rect = this;\r\n            return x >= rect.x\r\n                && x <= (rect.x + rect.width)\r\n                && y >= rect.y\r\n                && y <= (rect.y + rect.height);\r\n        };\r\n        BoundingRect.prototype.clone = function () {\r\n            return new BoundingRect(this.x, this.y, this.width, this.height);\r\n        };\r\n        BoundingRect.prototype.copy = function (other) {\r\n            BoundingRect.copy(this, other);\r\n        };\r\n        BoundingRect.prototype.plain = function () {\r\n            return {\r\n                x: this.x,\r\n                y: this.y,\r\n                width: this.width,\r\n                height: this.height\r\n            };\r\n        };\r\n        BoundingRect.prototype.isFinite = function () {\r\n            return isFinite(this.x)\r\n                && isFinite(this.y)\r\n                && isFinite(this.width)\r\n                && isFinite(this.height);\r\n        };\r\n        BoundingRect.prototype.isZero = function () {\r\n            return this.width === 0 || this.height === 0;\r\n        };\r\n        BoundingRect.create = function (rect) {\r\n            return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\r\n        };\r\n        BoundingRect.copy = function (target, source) {\r\n            target.x = source.x;\r\n            target.y = source.y;\r\n            target.width = source.width;\r\n            target.height = source.height;\r\n        };\r\n        BoundingRect.applyTransform = function (target, source, m) {\r\n            if (!m) {\r\n                if (target !== source) {\r\n                    BoundingRect.copy(target, source);\r\n                }\r\n                return;\r\n            }\r\n            if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\r\n                var sx = m[0];\r\n                var sy = m[3];\r\n                var tx = m[4];\r\n                var ty = m[5];\r\n                target.x = source.x * sx + tx;\r\n                target.y = source.y * sy + ty;\r\n                target.width = source.width * sx;\r\n                target.height = source.height * sy;\r\n                if (target.width < 0) {\r\n                    target.x += target.width;\r\n                    target.width = -target.width;\r\n                }\r\n                if (target.height < 0) {\r\n                    target.y += target.height;\r\n                    target.height = -target.height;\r\n                }\r\n                return;\r\n            }\r\n            lt.x = lb.x = source.x;\r\n            lt.y = rt.y = source.y;\r\n            rb.x = rt.x = source.x + source.width;\r\n            rb.y = lb.y = source.y + source.height;\r\n            lt.transform(m);\r\n            rt.transform(m);\r\n            rb.transform(m);\r\n            lb.transform(m);\r\n            target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\r\n            target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\r\n            var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\r\n            var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\r\n            target.width = maxX - target.x;\r\n            target.height = maxY - target.y;\r\n        };\r\n        return BoundingRect;\r\n    }());\n\n    var textWidthCache = {};\r\n    var DEFAULT_FONT = '12px sans-serif';\r\n    var _ctx;\r\n    var _cachedFont;\r\n    function defaultMeasureText(text, font) {\r\n        if (!_ctx) {\r\n            _ctx = createCanvas().getContext('2d');\r\n        }\r\n        if (_cachedFont !== font) {\r\n            _cachedFont = _ctx.font = font || DEFAULT_FONT;\r\n        }\r\n        return _ctx.measureText(text);\r\n    }\r\n    var methods$1 = {\r\n        measureText: defaultMeasureText\r\n    };\r\n    function getWidth(text, font) {\r\n        font = font || DEFAULT_FONT;\r\n        var cacheOfFont = textWidthCache[font];\r\n        if (!cacheOfFont) {\r\n            cacheOfFont = textWidthCache[font] = new LRU(500);\r\n        }\r\n        var width = cacheOfFont.get(text);\r\n        if (width == null) {\r\n            width = methods$1.measureText(text, font).width;\r\n            cacheOfFont.put(text, width);\r\n        }\r\n        return width;\r\n    }\r\n    function innerGetBoundingRect(text, font, textAlign, textBaseline) {\r\n        var width = getWidth(text, font);\r\n        var height = getLineHeight(font);\r\n        var x = adjustTextX(0, width, textAlign);\r\n        var y = adjustTextY(0, height, textBaseline);\r\n        var rect = new BoundingRect(x, y, width, height);\r\n        return rect;\r\n    }\r\n    function getBoundingRect(text, font, textAlign, textBaseline) {\r\n        var textLines = ((text || '') + '').split('\\n');\r\n        var len = textLines.length;\r\n        if (len === 1) {\r\n            return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\r\n        }\r\n        else {\r\n            var uniondRect = new BoundingRect(0, 0, 0, 0);\r\n            for (var i = 0; i < textLines.length; i++) {\r\n                var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\r\n                i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\r\n            }\r\n            return uniondRect;\r\n        }\r\n    }\r\n    function adjustTextX(x, width, textAlign) {\r\n        if (textAlign === 'right') {\r\n            x -= width;\r\n        }\r\n        else if (textAlign === 'center') {\r\n            x -= width / 2;\r\n        }\r\n        return x;\r\n    }\r\n    function adjustTextY(y, height, verticalAlign) {\r\n        if (verticalAlign === 'middle') {\r\n            y -= height / 2;\r\n        }\r\n        else if (verticalAlign === 'bottom') {\r\n            y -= height;\r\n        }\r\n        return y;\r\n    }\r\n    function getLineHeight(font) {\r\n        return getWidth('国', font);\r\n    }\r\n    function parsePercent(value, maxValue) {\r\n        if (typeof value === 'string') {\r\n            if (value.lastIndexOf('%') >= 0) {\r\n                return parseFloat(value) / 100 * maxValue;\r\n            }\r\n            return parseFloat(value);\r\n        }\r\n        return value;\r\n    }\r\n    function calculateTextPosition(out, opts, rect) {\r\n        var textPosition = opts.position || 'inside';\r\n        var distance = opts.distance != null ? opts.distance : 5;\r\n        var height = rect.height;\r\n        var width = rect.width;\r\n        var halfHeight = height / 2;\r\n        var x = rect.x;\r\n        var y = rect.y;\r\n        var textAlign = 'left';\r\n        var textVerticalAlign = 'top';\r\n        if (textPosition instanceof Array) {\r\n            x += parsePercent(textPosition[0], rect.width);\r\n            y += parsePercent(textPosition[1], rect.height);\r\n            textAlign = null;\r\n            textVerticalAlign = null;\r\n        }\r\n        else {\r\n            switch (textPosition) {\r\n                case 'left':\r\n                    x -= distance;\r\n                    y += halfHeight;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'right':\r\n                    x += distance + width;\r\n                    y += halfHeight;\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'top':\r\n                    x += width / 2;\r\n                    y -= distance;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'bottom':\r\n                    x += width / 2;\r\n                    y += height + distance;\r\n                    textAlign = 'center';\r\n                    break;\r\n                case 'inside':\r\n                    x += width / 2;\r\n                    y += halfHeight;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideLeft':\r\n                    x += distance;\r\n                    y += halfHeight;\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideRight':\r\n                    x += width - distance;\r\n                    y += halfHeight;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideTop':\r\n                    x += width / 2;\r\n                    y += distance;\r\n                    textAlign = 'center';\r\n                    break;\r\n                case 'insideBottom':\r\n                    x += width / 2;\r\n                    y += height - distance;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'insideTopLeft':\r\n                    x += distance;\r\n                    y += distance;\r\n                    break;\r\n                case 'insideTopRight':\r\n                    x += width - distance;\r\n                    y += distance;\r\n                    textAlign = 'right';\r\n                    break;\r\n                case 'insideBottomLeft':\r\n                    x += distance;\r\n                    y += height - distance;\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'insideBottomRight':\r\n                    x += width - distance;\r\n                    y += height - distance;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n            }\r\n        }\r\n        out = out || {};\r\n        out.x = x;\r\n        out.y = y;\r\n        out.align = textAlign;\r\n        out.verticalAlign = textVerticalAlign;\r\n        return out;\r\n    }\n\n    var dpr = 1;\r\n    if (typeof window !== 'undefined') {\r\n        dpr = Math.max(window.devicePixelRatio\r\n            || (window.screen.deviceXDPI / window.screen.logicalXDPI)\r\n            || 1, 1);\r\n    }\r\n    var devicePixelRatio = dpr;\r\n    var DARK_MODE_THRESHOLD = 0.4;\r\n    var DARK_LABEL_COLOR = '#333';\r\n    var LIGHT_LABEL_COLOR = '#ccc';\r\n    var LIGHTER_LABEL_COLOR = '#eee';\n\n    var PRESERVED_NORMAL_STATE = '__zr_normal__';\r\n    var PRIMARY_STATES_KEYS = ['x', 'y', 'scaleX', 'scaleY', 'originX', 'originY', 'rotation', 'ignore'];\r\n    var DEFAULT_ANIMATABLE_MAP = {\r\n        x: true,\r\n        y: true,\r\n        scaleX: true,\r\n        scaleY: true,\r\n        originX: true,\r\n        originY: true,\r\n        rotation: true,\r\n        ignore: false\r\n    };\r\n    var tmpTextPosCalcRes = {};\r\n    var tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\r\n    var Element = (function () {\r\n        function Element(props) {\r\n            this.id = guid();\r\n            this.animators = [];\r\n            this.currentStates = [];\r\n            this.states = {};\r\n            this._init(props);\r\n        }\r\n        Element.prototype._init = function (props) {\r\n            this.attr(props);\r\n        };\r\n        Element.prototype.drift = function (dx, dy, e) {\r\n            switch (this.draggable) {\r\n                case 'horizontal':\r\n                    dy = 0;\r\n                    break;\r\n                case 'vertical':\r\n                    dx = 0;\r\n                    break;\r\n            }\r\n            var m = this.transform;\r\n            if (!m) {\r\n                m = this.transform = [1, 0, 0, 1, 0, 0];\r\n            }\r\n            m[4] += dx;\r\n            m[5] += dy;\r\n            this.decomposeTransform();\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.beforeUpdate = function () { };\r\n        Element.prototype.afterUpdate = function () { };\r\n        Element.prototype.update = function () {\r\n            this.updateTransform();\r\n            if (this.__dirty) {\r\n                this.updateInnerText();\r\n            }\r\n        };\r\n        Element.prototype.updateInnerText = function (forceUpdate) {\r\n            var textEl = this._textContent;\r\n            if (textEl && (!textEl.ignore || forceUpdate)) {\r\n                if (!this.textConfig) {\r\n                    this.textConfig = {};\r\n                }\r\n                var textConfig = this.textConfig;\r\n                var isLocal = textConfig.local;\r\n                var attachedTransform = textEl.attachedTransform;\r\n                var textAlign = void 0;\r\n                var textVerticalAlign = void 0;\r\n                var textStyleChanged = false;\r\n                if (isLocal) {\r\n                    attachedTransform.parent = this;\r\n                }\r\n                else {\r\n                    attachedTransform.parent = null;\r\n                }\r\n                var innerOrigin = false;\r\n                attachedTransform.x = textEl.x;\r\n                attachedTransform.y = textEl.y;\r\n                attachedTransform.originX = textEl.originX;\r\n                attachedTransform.originY = textEl.originY;\r\n                attachedTransform.rotation = textEl.rotation;\r\n                attachedTransform.scaleX = textEl.scaleX;\r\n                attachedTransform.scaleY = textEl.scaleY;\r\n                if (textConfig.position != null) {\r\n                    var layoutRect = tmpBoundingRect;\r\n                    if (textConfig.layoutRect) {\r\n                        layoutRect.copy(textConfig.layoutRect);\r\n                    }\r\n                    else {\r\n                        layoutRect.copy(this.getBoundingRect());\r\n                    }\r\n                    if (!isLocal) {\r\n                        layoutRect.applyTransform(this.transform);\r\n                    }\r\n                    if (this.calculateTextPosition) {\r\n                        this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n                    }\r\n                    else {\r\n                        calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n                    }\r\n                    attachedTransform.x = tmpTextPosCalcRes.x;\r\n                    attachedTransform.y = tmpTextPosCalcRes.y;\r\n                    textAlign = tmpTextPosCalcRes.align;\r\n                    textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\r\n                    var textOrigin = textConfig.origin;\r\n                    if (textOrigin && textConfig.rotation != null) {\r\n                        var relOriginX = void 0;\r\n                        var relOriginY = void 0;\r\n                        if (textOrigin === 'center') {\r\n                            relOriginX = layoutRect.width * 0.5;\r\n                            relOriginY = layoutRect.height * 0.5;\r\n                        }\r\n                        else {\r\n                            relOriginX = parsePercent(textOrigin[0], layoutRect.width);\r\n                            relOriginY = parsePercent(textOrigin[1], layoutRect.height);\r\n                        }\r\n                        innerOrigin = true;\r\n                        attachedTransform.originX = -attachedTransform.x + relOriginX + (isLocal ? 0 : layoutRect.x);\r\n                        attachedTransform.originY = -attachedTransform.y + relOriginY + (isLocal ? 0 : layoutRect.y);\r\n                    }\r\n                }\r\n                if (textConfig.rotation != null) {\r\n                    attachedTransform.rotation = textConfig.rotation;\r\n                }\r\n                var textOffset = textConfig.offset;\r\n                if (textOffset) {\r\n                    attachedTransform.x += textOffset[0];\r\n                    attachedTransform.y += textOffset[1];\r\n                    if (!innerOrigin) {\r\n                        attachedTransform.originX = -textOffset[0];\r\n                        attachedTransform.originY = -textOffset[1];\r\n                    }\r\n                }\r\n                var isInside = textConfig.inside == null\r\n                    ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\r\n                    : textConfig.inside;\r\n                var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\r\n                var textFill = void 0;\r\n                var textStroke = void 0;\r\n                var autoStroke = void 0;\r\n                if (isInside && this.canBeInsideText()) {\r\n                    textFill = textConfig.insideFill;\r\n                    textStroke = textConfig.insideStroke;\r\n                    if (textFill == null || textFill === 'auto') {\r\n                        textFill = this.getInsideTextFill();\r\n                    }\r\n                    if (textStroke == null || textStroke === 'auto') {\r\n                        textStroke = this.getInsideTextStroke(textFill);\r\n                        autoStroke = true;\r\n                    }\r\n                }\r\n                else {\r\n                    textFill = textConfig.outsideFill;\r\n                    textStroke = textConfig.outsideStroke;\r\n                    if (textFill == null || textFill === 'auto') {\r\n                        textFill = this.getOutsideFill();\r\n                    }\r\n                    if (textStroke == null || textStroke === 'auto') {\r\n                        textStroke = this.getOutsideStroke(textFill);\r\n                        autoStroke = true;\r\n                    }\r\n                }\r\n                textFill = textFill || '#000';\r\n                if (textFill !== innerTextDefaultStyle.fill\r\n                    || textStroke !== innerTextDefaultStyle.stroke\r\n                    || autoStroke !== innerTextDefaultStyle.autoStroke\r\n                    || textAlign !== innerTextDefaultStyle.align\r\n                    || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\r\n                    textStyleChanged = true;\r\n                    innerTextDefaultStyle.fill = textFill;\r\n                    innerTextDefaultStyle.stroke = textStroke;\r\n                    innerTextDefaultStyle.autoStroke = autoStroke;\r\n                    innerTextDefaultStyle.align = textAlign;\r\n                    innerTextDefaultStyle.verticalAlign = textVerticalAlign;\r\n                    textEl.setDefaultTextStyle(innerTextDefaultStyle);\r\n                }\r\n                if (textStyleChanged) {\r\n                    textEl.dirtyStyle();\r\n                }\r\n                textEl.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.canBeInsideText = function () {\r\n            return true;\r\n        };\r\n        Element.prototype.getInsideTextFill = function () {\r\n            return '#fff';\r\n        };\r\n        Element.prototype.getInsideTextStroke = function (textFill) {\r\n            return '#000';\r\n        };\r\n        Element.prototype.getOutsideFill = function () {\r\n            return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\r\n        };\r\n        Element.prototype.getOutsideStroke = function (textFill) {\r\n            var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\r\n            var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\r\n            if (!colorArr) {\r\n                colorArr = [255, 255, 255, 1];\r\n            }\r\n            var alpha = colorArr[3];\r\n            var isDark = this.__zr.isDarkMode();\r\n            for (var i = 0; i < 3; i++) {\r\n                colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);\r\n            }\r\n            colorArr[3] = 1;\r\n            return stringify(colorArr, 'rgba');\r\n        };\r\n        Element.prototype.traverse = function (cb, context) { };\r\n        Element.prototype.attrKV = function (key, value) {\r\n            if (key === 'textConfig') {\r\n                this.setTextConfig(value);\r\n            }\r\n            else if (key === 'textContent') {\r\n                this.setTextContent(value);\r\n            }\r\n            else if (key === 'clipPath') {\r\n                this.setClipPath(value);\r\n            }\r\n            else if (key === 'extra') {\r\n                this.extra = this.extra || {};\r\n                extend(this.extra, value);\r\n            }\r\n            else {\r\n                this[key] = value;\r\n            }\r\n        };\r\n        Element.prototype.hide = function () {\r\n            this.ignore = true;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.show = function () {\r\n            this.ignore = false;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.attr = function (keyOrObj, value) {\r\n            if (typeof keyOrObj === 'string') {\r\n                this.attrKV(keyOrObj, value);\r\n            }\r\n            else if (isObject(keyOrObj)) {\r\n                var obj = keyOrObj;\r\n                var keysArr = keys(obj);\r\n                for (var i = 0; i < keysArr.length; i++) {\r\n                    var key = keysArr[i];\r\n                    this.attrKV(key, keyOrObj[key]);\r\n                }\r\n            }\r\n            this.markRedraw();\r\n            return this;\r\n        };\r\n        Element.prototype.saveCurrentToNormalState = function (toState) {\r\n            this._innerSaveToNormal(toState);\r\n            var normalState = this._normalState;\r\n            for (var i = 0; i < this.animators.length; i++) {\r\n                var animator = this.animators[i];\r\n                var fromStateTransition = animator.__fromStateTransition;\r\n                if (fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\r\n                    continue;\r\n                }\r\n                var targetName = animator.targetName;\r\n                var target = targetName\r\n                    ? normalState[targetName] : normalState;\r\n                animator.saveFinalToTarget(target);\r\n            }\r\n        };\r\n        Element.prototype._innerSaveToNormal = function (toState) {\r\n            var normalState = this._normalState;\r\n            if (!normalState) {\r\n                normalState = this._normalState = {};\r\n            }\r\n            if (toState.textConfig && !normalState.textConfig) {\r\n                normalState.textConfig = this.textConfig;\r\n            }\r\n            this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\r\n        };\r\n        Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\r\n            for (var i = 0; i < primaryKeys.length; i++) {\r\n                var key = primaryKeys[i];\r\n                if (toState[key] != null && !(key in normalState)) {\r\n                    normalState[key] = this[key];\r\n                }\r\n            }\r\n        };\r\n        Element.prototype.hasState = function () {\r\n            return this.currentStates.length > 0;\r\n        };\r\n        Element.prototype.getState = function (name) {\r\n            return this.states[name];\r\n        };\r\n        Element.prototype.ensureState = function (name) {\r\n            var states = this.states;\r\n            if (!states[name]) {\r\n                states[name] = {};\r\n            }\r\n            return states[name];\r\n        };\r\n        Element.prototype.clearStates = function (noAnimation) {\r\n            this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);\r\n        };\r\n        Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation) {\r\n            var toNormalState = stateName === PRESERVED_NORMAL_STATE;\r\n            var hasStates = this.hasState();\r\n            if (!hasStates && toNormalState) {\r\n                return;\r\n            }\r\n            var currentStates = this.currentStates;\r\n            var animationCfg = this.stateTransition;\r\n            if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\r\n                return;\r\n            }\r\n            var state;\r\n            if (this.stateProxy && !toNormalState) {\r\n                state = this.stateProxy(stateName);\r\n            }\r\n            if (!state) {\r\n                state = (this.states && this.states[stateName]);\r\n            }\r\n            if (!state && !toNormalState) {\r\n                logError(\"State \" + stateName + \" not exists.\");\r\n                return;\r\n            }\r\n            if (!toNormalState) {\r\n                this.saveCurrentToNormalState(state);\r\n            }\r\n            var useHoverLayer = !!(state && state.hoverLayer);\r\n            if (useHoverLayer) {\r\n                this._toggleHoverLayerFlag(true);\r\n            }\r\n            this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n            if (this._textContent) {\r\n                this._textContent.useState(stateName, keepCurrentStates);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.useState(stateName, keepCurrentStates);\r\n            }\r\n            if (toNormalState) {\r\n                this.currentStates = [];\r\n                this._normalState = {};\r\n            }\r\n            else {\r\n                if (!keepCurrentStates) {\r\n                    this.currentStates = [stateName];\r\n                }\r\n                else {\r\n                    this.currentStates.push(stateName);\r\n                }\r\n            }\r\n            this._updateAnimationTargets();\r\n            this.markRedraw();\r\n            if (!useHoverLayer && this.__inHover) {\r\n                this._toggleHoverLayerFlag(false);\r\n                this.__dirty &= ~Element.REDARAW_BIT;\r\n            }\r\n            return state;\r\n        };\r\n        Element.prototype.useStates = function (states, noAnimation) {\r\n            if (!states.length) {\r\n                this.clearStates();\r\n            }\r\n            else {\r\n                var stateObjects = [];\r\n                var currentStates = this.currentStates;\r\n                var len = states.length;\r\n                var notChange = len === currentStates.length;\r\n                if (notChange) {\r\n                    for (var i = 0; i < len; i++) {\r\n                        if (states[i] !== currentStates[i]) {\r\n                            notChange = false;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (notChange) {\r\n                    return;\r\n                }\r\n                for (var i = 0; i < len; i++) {\r\n                    var stateName = states[i];\r\n                    var stateObj = void 0;\r\n                    if (this.stateProxy) {\r\n                        stateObj = this.stateProxy(stateName, states);\r\n                    }\r\n                    if (!stateObj) {\r\n                        stateObj = this.states[stateName];\r\n                    }\r\n                    if (stateObj) {\r\n                        stateObjects.push(stateObj);\r\n                    }\r\n                }\r\n                var useHoverLayer = !!(stateObjects[len - 1] && stateObjects[len - 1].hoverLayer);\r\n                if (useHoverLayer) {\r\n                    this._toggleHoverLayerFlag(true);\r\n                }\r\n                var mergedState = this._mergeStates(stateObjects);\r\n                var animationCfg = this.stateTransition;\r\n                this.saveCurrentToNormalState(mergedState);\r\n                this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n                if (this._textContent) {\r\n                    this._textContent.useStates(states);\r\n                }\r\n                if (this._textGuide) {\r\n                    this._textGuide.useStates(states);\r\n                }\r\n                this._updateAnimationTargets();\r\n                this.currentStates = states.slice();\r\n                this.markRedraw();\r\n                if (!useHoverLayer && this.__inHover) {\r\n                    this._toggleHoverLayerFlag(false);\r\n                    this.__dirty &= ~Element.REDARAW_BIT;\r\n                }\r\n            }\r\n        };\r\n        Element.prototype._updateAnimationTargets = function () {\r\n            for (var i = 0; i < this.animators.length; i++) {\r\n                var animator = this.animators[i];\r\n                if (animator.targetName) {\r\n                    animator.changeTarget(this[animator.targetName]);\r\n                }\r\n            }\r\n        };\r\n        Element.prototype.removeState = function (state) {\r\n            var idx = indexOf(this.currentStates, state);\r\n            if (idx >= 0) {\r\n                var currentStates = this.currentStates.slice();\r\n                currentStates.splice(idx, 1);\r\n                this.useStates(currentStates);\r\n            }\r\n        };\r\n        Element.prototype.replaceState = function (oldState, newState, forceAdd) {\r\n            var currentStates = this.currentStates.slice();\r\n            var idx = indexOf(currentStates, oldState);\r\n            var newStateExists = indexOf(currentStates, newState) >= 0;\r\n            if (idx >= 0) {\r\n                if (!newStateExists) {\r\n                    currentStates[idx] = newState;\r\n                }\r\n                else {\r\n                    currentStates.splice(idx, 1);\r\n                }\r\n            }\r\n            else if (forceAdd && !newStateExists) {\r\n                currentStates.push(newState);\r\n            }\r\n            this.useStates(currentStates);\r\n        };\r\n        Element.prototype.toggleState = function (state, enable) {\r\n            if (enable) {\r\n                this.useState(state, true);\r\n            }\r\n            else {\r\n                this.removeState(state);\r\n            }\r\n        };\r\n        Element.prototype._mergeStates = function (states) {\r\n            var mergedState = {};\r\n            var mergedTextConfig;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                extend(mergedState, state);\r\n                if (state.textConfig) {\r\n                    mergedTextConfig = mergedTextConfig || {};\r\n                    extend(mergedTextConfig, state.textConfig);\r\n                }\r\n            }\r\n            if (mergedTextConfig) {\r\n                mergedState.textConfig = mergedTextConfig;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            if (state && state.textConfig) {\r\n                this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\r\n                extend(this.textConfig, state.textConfig);\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                if (normalState.textConfig) {\r\n                    this.textConfig = normalState.textConfig;\r\n                }\r\n            }\r\n            var transitionTarget = {};\r\n            var hasTransition = false;\r\n            for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\r\n                var key = PRIMARY_STATES_KEYS[i];\r\n                var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\r\n                if (state && state[key] != null) {\r\n                    if (propNeedsTransition) {\r\n                        hasTransition = true;\r\n                        transitionTarget[key] = state[key];\r\n                    }\r\n                    else {\r\n                        this[key] = state[key];\r\n                    }\r\n                }\r\n                else if (needsRestoreToNormal) {\r\n                    if (normalState[key] != null) {\r\n                        if (propNeedsTransition) {\r\n                            hasTransition = true;\r\n                            transitionTarget[key] = normalState[key];\r\n                        }\r\n                        else {\r\n                            this[key] = normalState[key];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (!transition) {\r\n                for (var i = 0; i < this.animators.length; i++) {\r\n                    var animator = this.animators[i];\r\n                    var targetName = animator.targetName;\r\n                    animator.__changeFinalValue(targetName\r\n                        ? (state || normalState)[targetName]\r\n                        : (state || normalState));\r\n                }\r\n            }\r\n            if (hasTransition) {\r\n                this._transitionState(stateName, transitionTarget, animationCfg);\r\n            }\r\n        };\r\n        Element.prototype._attachComponent = function (componentEl) {\r\n            if (componentEl.__zr && !componentEl.__hostTarget) {\r\n                throw new Error('Text element has been added to zrender.');\r\n            }\r\n            if (componentEl === this) {\r\n                throw new Error('Recursive component attachment.');\r\n            }\r\n            var zr = this.__zr;\r\n            if (zr) {\r\n                componentEl.addSelfToZr(zr);\r\n            }\r\n            componentEl.__zr = zr;\r\n            componentEl.__hostTarget = this;\r\n        };\r\n        Element.prototype._detachComponent = function (componentEl) {\r\n            if (componentEl.__zr) {\r\n                componentEl.removeSelfFromZr(componentEl.__zr);\r\n            }\r\n            componentEl.__zr = null;\r\n            componentEl.__hostTarget = null;\r\n        };\r\n        Element.prototype.getClipPath = function () {\r\n            return this._clipPath;\r\n        };\r\n        Element.prototype.setClipPath = function (clipPath) {\r\n            if (this._clipPath && this._clipPath !== clipPath) {\r\n                this.removeClipPath();\r\n            }\r\n            this._attachComponent(clipPath);\r\n            this._clipPath = clipPath;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeClipPath = function () {\r\n            var clipPath = this._clipPath;\r\n            if (clipPath) {\r\n                this._detachComponent(clipPath);\r\n                this._clipPath = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.getTextContent = function () {\r\n            return this._textContent;\r\n        };\r\n        Element.prototype.setTextContent = function (textEl) {\r\n            var previousTextContent = this._textContent;\r\n            if (previousTextContent === textEl) {\r\n                return;\r\n            }\r\n            if (previousTextContent && previousTextContent !== textEl) {\r\n                this.removeTextContent();\r\n            }\r\n            if (textEl.__zr && !textEl.__hostTarget) {\r\n                throw new Error('Text element has been added to zrender.');\r\n            }\r\n            textEl.attachedTransform = new Transformable();\r\n            this._attachComponent(textEl);\r\n            this._textContent = textEl;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.setTextConfig = function (cfg) {\r\n            if (!this.textConfig) {\r\n                this.textConfig = {};\r\n            }\r\n            extend(this.textConfig, cfg);\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeTextContent = function () {\r\n            var textEl = this._textContent;\r\n            if (textEl) {\r\n                textEl.attachedTransform = null;\r\n                this._detachComponent(textEl);\r\n                this._textContent = null;\r\n                this._innerTextDefaultStyle = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.getTextGuideLine = function () {\r\n            return this._textGuide;\r\n        };\r\n        Element.prototype.setTextGuideLine = function (guideLine) {\r\n            if (this._textGuide && this._textGuide !== guideLine) {\r\n                this.removeTextGuideLine();\r\n            }\r\n            this._attachComponent(guideLine);\r\n            this._textGuide = guideLine;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeTextGuideLine = function () {\r\n            var textGuide = this._textGuide;\r\n            if (textGuide) {\r\n                this._detachComponent(textGuide);\r\n                this._textGuide = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.markRedraw = function () {\r\n            this.__dirty |= Element.REDARAW_BIT;\r\n            var zr = this.__zr;\r\n            if (zr) {\r\n                if (this.__inHover) {\r\n                    zr.refreshHover();\r\n                }\r\n                else {\r\n                    zr.refresh();\r\n                }\r\n            }\r\n            if (this.__hostTarget) {\r\n                this.__hostTarget.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.dirty = function () {\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype._toggleHoverLayerFlag = function (inHover) {\r\n            this.__inHover = inHover;\r\n            var textContent = this._textContent;\r\n            var textGuide = this._textGuide;\r\n            if (textContent) {\r\n                textContent.__inHover = inHover;\r\n            }\r\n            if (textGuide) {\r\n                textGuide.__inHover = inHover;\r\n            }\r\n        };\r\n        Element.prototype.addSelfToZr = function (zr) {\r\n            this.__zr = zr;\r\n            var animators = this.animators;\r\n            if (animators) {\r\n                for (var i = 0; i < animators.length; i++) {\r\n                    zr.animation.addAnimator(animators[i]);\r\n                }\r\n            }\r\n            if (this._clipPath) {\r\n                this._clipPath.addSelfToZr(zr);\r\n            }\r\n            if (this._textContent) {\r\n                this._textContent.addSelfToZr(zr);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.addSelfToZr(zr);\r\n            }\r\n        };\r\n        Element.prototype.removeSelfFromZr = function (zr) {\r\n            this.__zr = null;\r\n            var animators = this.animators;\r\n            if (animators) {\r\n                for (var i = 0; i < animators.length; i++) {\r\n                    zr.animation.removeAnimator(animators[i]);\r\n                }\r\n            }\r\n            if (this._clipPath) {\r\n                this._clipPath.removeSelfFromZr(zr);\r\n            }\r\n            if (this._textContent) {\r\n                this._textContent.removeSelfFromZr(zr);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.removeSelfFromZr(zr);\r\n            }\r\n        };\r\n        Element.prototype.animate = function (key, loop) {\r\n            var target = key ? this[key] : this;\r\n            if (!target) {\r\n                logError('Property \"'\r\n                    + key\r\n                    + '\" is not existed in element '\r\n                    + this.id);\r\n                return;\r\n            }\r\n            var animator = new Animator(target, loop);\r\n            this.addAnimator(animator, key);\r\n            return animator;\r\n        };\r\n        Element.prototype.addAnimator = function (animator, key) {\r\n            var zr = this.__zr;\r\n            var el = this;\r\n            animator.during(function () {\r\n                el.updateDuringAnimation(key);\r\n            }).done(function () {\r\n                var animators = el.animators;\r\n                var idx = indexOf(animators, animator);\r\n                if (idx >= 0) {\r\n                    animators.splice(idx, 1);\r\n                }\r\n            });\r\n            this.animators.push(animator);\r\n            if (zr) {\r\n                zr.animation.addAnimator(animator);\r\n            }\r\n            zr && zr.wakeUp();\r\n        };\r\n        Element.prototype.updateDuringAnimation = function (key) {\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.stopAnimation = function (scope, forwardToLast) {\r\n            var animators = this.animators;\r\n            var len = animators.length;\r\n            var leftAnimators = [];\r\n            for (var i = 0; i < len; i++) {\r\n                var animator = animators[i];\r\n                if (!scope || scope === animator.scope) {\r\n                    animator.stop(forwardToLast);\r\n                }\r\n                else {\r\n                    leftAnimators.push(animator);\r\n                }\r\n            }\r\n            this.animators = leftAnimators;\r\n            return this;\r\n        };\r\n        Element.prototype.animateTo = function (target, cfg, animationProps) {\r\n            animateTo(this, target, cfg, animationProps);\r\n        };\r\n        Element.prototype.animateFrom = function (target, cfg, animationProps) {\r\n            animateTo(this, target, cfg, animationProps, true);\r\n        };\r\n        Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\r\n            var animators = animateTo(this, target, cfg, animationProps);\r\n            for (var i = 0; i < animators.length; i++) {\r\n                animators[i].__fromStateTransition = stateName;\r\n            }\r\n        };\r\n        Element.prototype.getBoundingRect = function () {\r\n            return null;\r\n        };\r\n        Element.prototype.getPaintRect = function () {\r\n            return null;\r\n        };\r\n        Element.REDARAW_BIT = 1;\r\n        Element.initDefaultProps = (function () {\r\n            var elProto = Element.prototype;\r\n            elProto.type = 'element';\r\n            elProto.name = '';\r\n            elProto.ignore = false;\r\n            elProto.silent = false;\r\n            elProto.isGroup = false;\r\n            elProto.draggable = false;\r\n            elProto.dragging = false;\r\n            elProto.ignoreClip = false;\r\n            elProto.__inHover = false;\r\n            elProto.__dirty = Element.REDARAW_BIT;\r\n            var logs = {};\r\n            function logDeprecatedError(key, xKey, yKey) {\r\n                if (!logs[key + xKey + yKey]) {\r\n                    console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\r\n                    logs[key + xKey + yKey] = true;\r\n                }\r\n            }\r\n            function createLegacyProperty(key, privateKey, xKey, yKey) {\r\n                Object.defineProperty(elProto, key, {\r\n                    get: function () {\r\n                        logDeprecatedError(key, xKey, yKey);\r\n                        if (!this[privateKey]) {\r\n                            var pos = this[privateKey] = [];\r\n                            enhanceArray(this, pos);\r\n                        }\r\n                        return this[privateKey];\r\n                    },\r\n                    set: function (pos) {\r\n                        logDeprecatedError(key, xKey, yKey);\r\n                        this[xKey] = pos[0];\r\n                        this[yKey] = pos[1];\r\n                        this[privateKey] = pos;\r\n                        enhanceArray(this, pos);\r\n                    }\r\n                });\r\n                function enhanceArray(self, pos) {\r\n                    Object.defineProperty(pos, 0, {\r\n                        get: function () {\r\n                            return self[xKey];\r\n                        },\r\n                        set: function (val) {\r\n                            self[xKey] = val;\r\n                        }\r\n                    });\r\n                    Object.defineProperty(pos, 1, {\r\n                        get: function () {\r\n                            return self[yKey];\r\n                        },\r\n                        set: function (val) {\r\n                            self[yKey] = val;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            if (Object.defineProperty && (!env.browser.ie || env.browser.version > 8)) {\r\n                createLegacyProperty('position', '_legacyPos', 'x', 'y');\r\n                createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\r\n                createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\r\n            }\r\n        })();\r\n        return Element;\r\n    }());\r\n    mixin(Element, Eventful);\r\n    mixin(Element, Transformable);\r\n    function animateTo(animatable, target, cfg, animationProps, reverse) {\r\n        cfg = cfg || {};\r\n        var animators = [];\r\n        animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\r\n        var finishCount = animators.length;\r\n        var doneHappened = false;\r\n        var cfgDone = cfg.done;\r\n        var cfgAborted = cfg.aborted;\r\n        var doneCb = function () {\r\n            doneHappened = true;\r\n            finishCount--;\r\n            if (finishCount <= 0) {\r\n                doneHappened\r\n                    ? (cfgDone && cfgDone())\r\n                    : (cfgAborted && cfgAborted());\r\n            }\r\n        };\r\n        var abortedCb = function () {\r\n            finishCount--;\r\n            if (finishCount <= 0) {\r\n                doneHappened\r\n                    ? (cfgDone && cfgDone())\r\n                    : (cfgAborted && cfgAborted());\r\n            }\r\n        };\r\n        if (!finishCount) {\r\n            cfgDone && cfgDone();\r\n        }\r\n        if (animators.length > 0 && cfg.during) {\r\n            animators[0].during(function (target, percent) {\r\n                cfg.during(percent);\r\n            });\r\n        }\r\n        for (var i = 0; i < animators.length; i++) {\r\n            var animator = animators[i];\r\n            if (doneCb) {\r\n                animator.done(doneCb);\r\n            }\r\n            if (abortedCb) {\r\n                animator.aborted(abortedCb);\r\n            }\r\n            animator.start(cfg.easing, cfg.force);\r\n        }\r\n        return animators;\r\n    }\r\n    function copyArrShallow(source, target, len) {\r\n        for (var i = 0; i < len; i++) {\r\n            source[i] = target[i];\r\n        }\r\n    }\r\n    function is2DArray(value) {\r\n        return isArrayLike(value[0]);\r\n    }\r\n    function copyValue(target, source, key) {\r\n        if (isArrayLike(source[key])) {\r\n            if (!isArrayLike(target[key])) {\r\n                target[key] = [];\r\n            }\r\n            if (isTypedArray(source[key])) {\r\n                var len = source[key].length;\r\n                if (target[key].length !== len) {\r\n                    target[key] = new (source[key].constructor)(len);\r\n                    copyArrShallow(target[key], source[key], len);\r\n                }\r\n            }\r\n            else {\r\n                var sourceArr = source[key];\r\n                var targetArr = target[key];\r\n                var len0 = sourceArr.length;\r\n                if (is2DArray(sourceArr)) {\r\n                    var len1 = sourceArr[0].length;\r\n                    for (var i = 0; i < len0; i++) {\r\n                        if (!targetArr[i]) {\r\n                            targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\r\n                        }\r\n                        else {\r\n                            copyArrShallow(targetArr[i], sourceArr[i], len1);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    copyArrShallow(targetArr, sourceArr, len0);\r\n                }\r\n                targetArr.length = sourceArr.length;\r\n            }\r\n        }\r\n        else {\r\n            target[key] = source[key];\r\n        }\r\n    }\r\n    function animateToShallow(animatable, topKey, source, target, cfg, animationProps, animators, reverse) {\r\n        var animatableKeys = [];\r\n        var changedKeys = [];\r\n        var targetKeys = keys(target);\r\n        var duration = cfg.duration;\r\n        var delay = cfg.delay;\r\n        var additive = cfg.additive;\r\n        var setToFinal = cfg.setToFinal;\r\n        var animateAll = !isObject(animationProps);\r\n        for (var k = 0; k < targetKeys.length; k++) {\r\n            var innerKey = targetKeys[k];\r\n            if (source[innerKey] != null\r\n                && target[innerKey] != null\r\n                && (animateAll || animationProps[innerKey])) {\r\n                if (isObject(target[innerKey]) && !isArrayLike(target[innerKey])) {\r\n                    if (topKey) {\r\n                        if (!reverse) {\r\n                            source[innerKey] = target[innerKey];\r\n                            animatable.updateDuringAnimation(topKey);\r\n                        }\r\n                        continue;\r\n                    }\r\n                    animateToShallow(animatable, innerKey, source[innerKey], target[innerKey], cfg, animationProps && animationProps[innerKey], animators, reverse);\r\n                }\r\n                else {\r\n                    animatableKeys.push(innerKey);\r\n                    changedKeys.push(innerKey);\r\n                }\r\n            }\r\n            else if (!reverse) {\r\n                source[innerKey] = target[innerKey];\r\n                animatable.updateDuringAnimation(topKey);\r\n                changedKeys.push(innerKey);\r\n            }\r\n        }\r\n        var keyLen = animatableKeys.length;\r\n        if (keyLen > 0\r\n            || (cfg.force && !animators.length)) {\r\n            var existsAnimators = animatable.animators;\r\n            var existsAnimatorsOnSameTarget = [];\r\n            for (var i = 0; i < existsAnimators.length; i++) {\r\n                if (existsAnimators[i].targetName === topKey) {\r\n                    existsAnimatorsOnSameTarget.push(existsAnimators[i]);\r\n                }\r\n            }\r\n            if (!additive && existsAnimatorsOnSameTarget.length) {\r\n                for (var i = 0; i < existsAnimatorsOnSameTarget.length; i++) {\r\n                    var allAborted = existsAnimatorsOnSameTarget[i].stopTracks(changedKeys);\r\n                    if (allAborted) {\r\n                        var idx = indexOf(existsAnimators, existsAnimatorsOnSameTarget[i]);\r\n                        existsAnimators.splice(idx, 1);\r\n                    }\r\n                }\r\n            }\r\n            var revertedSource = void 0;\r\n            var reversedTarget = void 0;\r\n            var sourceClone = void 0;\r\n            if (reverse) {\r\n                reversedTarget = {};\r\n                if (setToFinal) {\r\n                    revertedSource = {};\r\n                }\r\n                for (var i = 0; i < keyLen; i++) {\r\n                    var innerKey = animatableKeys[i];\r\n                    reversedTarget[innerKey] = source[innerKey];\r\n                    if (setToFinal) {\r\n                        revertedSource[innerKey] = target[innerKey];\r\n                    }\r\n                    else {\r\n                        source[innerKey] = target[innerKey];\r\n                    }\r\n                }\r\n            }\r\n            else if (setToFinal) {\r\n                sourceClone = {};\r\n                for (var i = 0; i < keyLen; i++) {\r\n                    var innerKey = animatableKeys[i];\r\n                    sourceClone[innerKey] = cloneValue(source[innerKey]);\r\n                    copyValue(source, target, innerKey);\r\n                }\r\n            }\r\n            var animator = new Animator(source, false, additive ? existsAnimatorsOnSameTarget : null);\r\n            animator.targetName = topKey;\r\n            if (cfg.scope) {\r\n                animator.scope = cfg.scope;\r\n            }\r\n            if (setToFinal && revertedSource) {\r\n                animator.whenWithKeys(0, revertedSource, animatableKeys);\r\n            }\r\n            if (sourceClone) {\r\n                animator.whenWithKeys(0, sourceClone, animatableKeys);\r\n            }\r\n            animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animatableKeys).delay(delay || 0);\r\n            animatable.addAnimator(animator, topKey);\r\n            animators.push(animator);\r\n        }\r\n    }\n\n    var DEFAULT_MIN_MERGE = 32;\r\n    var DEFAULT_MIN_GALLOPING = 7;\r\n    function minRunLength(n) {\r\n        var r = 0;\r\n        while (n >= DEFAULT_MIN_MERGE) {\r\n            r |= n & 1;\r\n            n >>= 1;\r\n        }\r\n        return n + r;\r\n    }\r\n    function makeAscendingRun(array, lo, hi, compare) {\r\n        var runHi = lo + 1;\r\n        if (runHi === hi) {\r\n            return 1;\r\n        }\r\n        if (compare(array[runHi++], array[lo]) < 0) {\r\n            while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\r\n                runHi++;\r\n            }\r\n            reverseRun(array, lo, runHi);\r\n        }\r\n        else {\r\n            while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\r\n                runHi++;\r\n            }\r\n        }\r\n        return runHi - lo;\r\n    }\r\n    function reverseRun(array, lo, hi) {\r\n        hi--;\r\n        while (lo < hi) {\r\n            var t = array[lo];\r\n            array[lo++] = array[hi];\r\n            array[hi--] = t;\r\n        }\r\n    }\r\n    function binaryInsertionSort(array, lo, hi, start, compare) {\r\n        if (start === lo) {\r\n            start++;\r\n        }\r\n        for (; start < hi; start++) {\r\n            var pivot = array[start];\r\n            var left = lo;\r\n            var right = start;\r\n            var mid;\r\n            while (left < right) {\r\n                mid = left + right >>> 1;\r\n                if (compare(pivot, array[mid]) < 0) {\r\n                    right = mid;\r\n                }\r\n                else {\r\n                    left = mid + 1;\r\n                }\r\n            }\r\n            var n = start - left;\r\n            switch (n) {\r\n                case 3:\r\n                    array[left + 3] = array[left + 2];\r\n                case 2:\r\n                    array[left + 2] = array[left + 1];\r\n                case 1:\r\n                    array[left + 1] = array[left];\r\n                    break;\r\n                default:\r\n                    while (n > 0) {\r\n                        array[left + n] = array[left + n - 1];\r\n                        n--;\r\n                    }\r\n            }\r\n            array[left] = pivot;\r\n        }\r\n    }\r\n    function gallopLeft(value, array, start, length, hint, compare) {\r\n        var lastOffset = 0;\r\n        var maxOffset = 0;\r\n        var offset = 1;\r\n        if (compare(value, array[start + hint]) > 0) {\r\n            maxOffset = length - hint;\r\n            while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            lastOffset += hint;\r\n            offset += hint;\r\n        }\r\n        else {\r\n            maxOffset = hint + 1;\r\n            while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            var tmp = lastOffset;\r\n            lastOffset = hint - offset;\r\n            offset = hint - tmp;\r\n        }\r\n        lastOffset++;\r\n        while (lastOffset < offset) {\r\n            var m = lastOffset + (offset - lastOffset >>> 1);\r\n            if (compare(value, array[start + m]) > 0) {\r\n                lastOffset = m + 1;\r\n            }\r\n            else {\r\n                offset = m;\r\n            }\r\n        }\r\n        return offset;\r\n    }\r\n    function gallopRight(value, array, start, length, hint, compare) {\r\n        var lastOffset = 0;\r\n        var maxOffset = 0;\r\n        var offset = 1;\r\n        if (compare(value, array[start + hint]) < 0) {\r\n            maxOffset = hint + 1;\r\n            while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            var tmp = lastOffset;\r\n            lastOffset = hint - offset;\r\n            offset = hint - tmp;\r\n        }\r\n        else {\r\n            maxOffset = length - hint;\r\n            while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            lastOffset += hint;\r\n            offset += hint;\r\n        }\r\n        lastOffset++;\r\n        while (lastOffset < offset) {\r\n            var m = lastOffset + (offset - lastOffset >>> 1);\r\n            if (compare(value, array[start + m]) < 0) {\r\n                offset = m;\r\n            }\r\n            else {\r\n                lastOffset = m + 1;\r\n            }\r\n        }\r\n        return offset;\r\n    }\r\n    function TimSort(array, compare) {\r\n        var minGallop = DEFAULT_MIN_GALLOPING;\r\n        var length = 0;\r\n        var runStart;\r\n        var runLength;\r\n        var stackSize = 0;\r\n        length = array.length;\r\n        var tmp = [];\r\n        runStart = [];\r\n        runLength = [];\r\n        function pushRun(_runStart, _runLength) {\r\n            runStart[stackSize] = _runStart;\r\n            runLength[stackSize] = _runLength;\r\n            stackSize += 1;\r\n        }\r\n        function mergeRuns() {\r\n            while (stackSize > 1) {\r\n                var n = stackSize - 2;\r\n                if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\r\n                    || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\r\n                    if (runLength[n - 1] < runLength[n + 1]) {\r\n                        n--;\r\n                    }\r\n                }\r\n                else if (runLength[n] > runLength[n + 1]) {\r\n                    break;\r\n                }\r\n                mergeAt(n);\r\n            }\r\n        }\r\n        function forceMergeRuns() {\r\n            while (stackSize > 1) {\r\n                var n = stackSize - 2;\r\n                if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\r\n                    n--;\r\n                }\r\n                mergeAt(n);\r\n            }\r\n        }\r\n        function mergeAt(i) {\r\n            var start1 = runStart[i];\r\n            var length1 = runLength[i];\r\n            var start2 = runStart[i + 1];\r\n            var length2 = runLength[i + 1];\r\n            runLength[i] = length1 + length2;\r\n            if (i === stackSize - 3) {\r\n                runStart[i + 1] = runStart[i + 2];\r\n                runLength[i + 1] = runLength[i + 2];\r\n            }\r\n            stackSize--;\r\n            var k = gallopRight(array[start2], array, start1, length1, 0, compare);\r\n            start1 += k;\r\n            length1 -= k;\r\n            if (length1 === 0) {\r\n                return;\r\n            }\r\n            length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\r\n            if (length2 === 0) {\r\n                return;\r\n            }\r\n            if (length1 <= length2) {\r\n                mergeLow(start1, length1, start2, length2);\r\n            }\r\n            else {\r\n                mergeHigh(start1, length1, start2, length2);\r\n            }\r\n        }\r\n        function mergeLow(start1, length1, start2, length2) {\r\n            var i = 0;\r\n            for (i = 0; i < length1; i++) {\r\n                tmp[i] = array[start1 + i];\r\n            }\r\n            var cursor1 = 0;\r\n            var cursor2 = start2;\r\n            var dest = start1;\r\n            array[dest++] = array[cursor2++];\r\n            if (--length2 === 0) {\r\n                for (i = 0; i < length1; i++) {\r\n                    array[dest + i] = tmp[cursor1 + i];\r\n                }\r\n                return;\r\n            }\r\n            if (length1 === 1) {\r\n                for (i = 0; i < length2; i++) {\r\n                    array[dest + i] = array[cursor2 + i];\r\n                }\r\n                array[dest + length2] = tmp[cursor1];\r\n                return;\r\n            }\r\n            var _minGallop = minGallop;\r\n            var count1;\r\n            var count2;\r\n            var exit;\r\n            while (1) {\r\n                count1 = 0;\r\n                count2 = 0;\r\n                exit = false;\r\n                do {\r\n                    if (compare(array[cursor2], tmp[cursor1]) < 0) {\r\n                        array[dest++] = array[cursor2++];\r\n                        count2++;\r\n                        count1 = 0;\r\n                        if (--length2 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        array[dest++] = tmp[cursor1++];\r\n                        count1++;\r\n                        count2 = 0;\r\n                        if (--length1 === 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } while ((count1 | count2) < _minGallop);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                do {\r\n                    count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\r\n                    if (count1 !== 0) {\r\n                        for (i = 0; i < count1; i++) {\r\n                            array[dest + i] = tmp[cursor1 + i];\r\n                        }\r\n                        dest += count1;\r\n                        cursor1 += count1;\r\n                        length1 -= count1;\r\n                        if (length1 <= 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest++] = array[cursor2++];\r\n                    if (--length2 === 0) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\r\n                    if (count2 !== 0) {\r\n                        for (i = 0; i < count2; i++) {\r\n                            array[dest + i] = array[cursor2 + i];\r\n                        }\r\n                        dest += count2;\r\n                        cursor2 += count2;\r\n                        length2 -= count2;\r\n                        if (length2 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest++] = tmp[cursor1++];\r\n                    if (--length1 === 1) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    _minGallop--;\r\n                } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                if (_minGallop < 0) {\r\n                    _minGallop = 0;\r\n                }\r\n                _minGallop += 2;\r\n            }\r\n            minGallop = _minGallop;\r\n            minGallop < 1 && (minGallop = 1);\r\n            if (length1 === 1) {\r\n                for (i = 0; i < length2; i++) {\r\n                    array[dest + i] = array[cursor2 + i];\r\n                }\r\n                array[dest + length2] = tmp[cursor1];\r\n            }\r\n            else if (length1 === 0) {\r\n                throw new Error();\r\n            }\r\n            else {\r\n                for (i = 0; i < length1; i++) {\r\n                    array[dest + i] = tmp[cursor1 + i];\r\n                }\r\n            }\r\n        }\r\n        function mergeHigh(start1, length1, start2, length2) {\r\n            var i = 0;\r\n            for (i = 0; i < length2; i++) {\r\n                tmp[i] = array[start2 + i];\r\n            }\r\n            var cursor1 = start1 + length1 - 1;\r\n            var cursor2 = length2 - 1;\r\n            var dest = start2 + length2 - 1;\r\n            var customCursor = 0;\r\n            var customDest = 0;\r\n            array[dest--] = array[cursor1--];\r\n            if (--length1 === 0) {\r\n                customCursor = dest - (length2 - 1);\r\n                for (i = 0; i < length2; i++) {\r\n                    array[customCursor + i] = tmp[i];\r\n                }\r\n                return;\r\n            }\r\n            if (length2 === 1) {\r\n                dest -= length1;\r\n                cursor1 -= length1;\r\n                customDest = dest + 1;\r\n                customCursor = cursor1 + 1;\r\n                for (i = length1 - 1; i >= 0; i--) {\r\n                    array[customDest + i] = array[customCursor + i];\r\n                }\r\n                array[dest] = tmp[cursor2];\r\n                return;\r\n            }\r\n            var _minGallop = minGallop;\r\n            while (true) {\r\n                var count1 = 0;\r\n                var count2 = 0;\r\n                var exit = false;\r\n                do {\r\n                    if (compare(tmp[cursor2], array[cursor1]) < 0) {\r\n                        array[dest--] = array[cursor1--];\r\n                        count1++;\r\n                        count2 = 0;\r\n                        if (--length1 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        array[dest--] = tmp[cursor2--];\r\n                        count2++;\r\n                        count1 = 0;\r\n                        if (--length2 === 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } while ((count1 | count2) < _minGallop);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                do {\r\n                    count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\r\n                    if (count1 !== 0) {\r\n                        dest -= count1;\r\n                        cursor1 -= count1;\r\n                        length1 -= count1;\r\n                        customDest = dest + 1;\r\n                        customCursor = cursor1 + 1;\r\n                        for (i = count1 - 1; i >= 0; i--) {\r\n                            array[customDest + i] = array[customCursor + i];\r\n                        }\r\n                        if (length1 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest--] = tmp[cursor2--];\r\n                    if (--length2 === 1) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\r\n                    if (count2 !== 0) {\r\n                        dest -= count2;\r\n                        cursor2 -= count2;\r\n                        length2 -= count2;\r\n                        customDest = dest + 1;\r\n                        customCursor = cursor2 + 1;\r\n                        for (i = 0; i < count2; i++) {\r\n                            array[customDest + i] = tmp[customCursor + i];\r\n                        }\r\n                        if (length2 <= 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest--] = array[cursor1--];\r\n                    if (--length1 === 0) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    _minGallop--;\r\n                } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                if (_minGallop < 0) {\r\n                    _minGallop = 0;\r\n                }\r\n                _minGallop += 2;\r\n            }\r\n            minGallop = _minGallop;\r\n            if (minGallop < 1) {\r\n                minGallop = 1;\r\n            }\r\n            if (length2 === 1) {\r\n                dest -= length1;\r\n                cursor1 -= length1;\r\n                customDest = dest + 1;\r\n                customCursor = cursor1 + 1;\r\n                for (i = length1 - 1; i >= 0; i--) {\r\n                    array[customDest + i] = array[customCursor + i];\r\n                }\r\n                array[dest] = tmp[cursor2];\r\n            }\r\n            else if (length2 === 0) {\r\n                throw new Error();\r\n            }\r\n            else {\r\n                customCursor = dest - (length2 - 1);\r\n                for (i = 0; i < length2; i++) {\r\n                    array[customCursor + i] = tmp[i];\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            mergeRuns: mergeRuns,\r\n            forceMergeRuns: forceMergeRuns,\r\n            pushRun: pushRun\r\n        };\r\n    }\r\n    function sort(array, compare, lo, hi) {\r\n        if (!lo) {\r\n            lo = 0;\r\n        }\r\n        if (!hi) {\r\n            hi = array.length;\r\n        }\r\n        var remaining = hi - lo;\r\n        if (remaining < 2) {\r\n            return;\r\n        }\r\n        var runLength = 0;\r\n        if (remaining < DEFAULT_MIN_MERGE) {\r\n            runLength = makeAscendingRun(array, lo, hi, compare);\r\n            binaryInsertionSort(array, lo, hi, lo + runLength, compare);\r\n            return;\r\n        }\r\n        var ts = TimSort(array, compare);\r\n        var minRun = minRunLength(remaining);\r\n        do {\r\n            runLength = makeAscendingRun(array, lo, hi, compare);\r\n            if (runLength < minRun) {\r\n                var force = remaining;\r\n                if (force > minRun) {\r\n                    force = minRun;\r\n                }\r\n                binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\r\n                runLength = force;\r\n            }\r\n            ts.pushRun(lo, runLength);\r\n            ts.mergeRuns();\r\n            remaining -= runLength;\r\n            lo += runLength;\r\n        } while (remaining !== 0);\r\n        ts.forceMergeRuns();\r\n    }\n\n    var invalidZErrorLogged = false;\r\n    function logInvalidZError() {\r\n        if (invalidZErrorLogged) {\r\n            return;\r\n        }\r\n        invalidZErrorLogged = true;\r\n        console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\r\n    }\r\n    function shapeCompareFunc(a, b) {\r\n        if (a.zlevel === b.zlevel) {\r\n            if (a.z === b.z) {\r\n                return a.z2 - b.z2;\r\n            }\r\n            return a.z - b.z;\r\n        }\r\n        return a.zlevel - b.zlevel;\r\n    }\r\n    var Storage = (function () {\r\n        function Storage() {\r\n            this._roots = [];\r\n            this._displayList = [];\r\n            this._displayListLen = 0;\r\n            this.displayableSortFunc = shapeCompareFunc;\r\n        }\r\n        Storage.prototype.traverse = function (cb, context) {\r\n            for (var i = 0; i < this._roots.length; i++) {\r\n                this._roots[i].traverse(cb, context);\r\n            }\r\n        };\r\n        Storage.prototype.getDisplayList = function (update, includeIgnore) {\r\n            includeIgnore = includeIgnore || false;\r\n            var displayList = this._displayList;\r\n            if (update || !displayList.length) {\r\n                this.updateDisplayList(includeIgnore);\r\n            }\r\n            return displayList;\r\n        };\r\n        Storage.prototype.updateDisplayList = function (includeIgnore) {\r\n            this._displayListLen = 0;\r\n            var roots = this._roots;\r\n            var displayList = this._displayList;\r\n            for (var i = 0, len = roots.length; i < len; i++) {\r\n                this._updateAndAddDisplayable(roots[i], null, includeIgnore);\r\n            }\r\n            displayList.length = this._displayListLen;\r\n            env.canvasSupported && sort(displayList, shapeCompareFunc);\r\n        };\r\n        Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) {\r\n            if (el.ignore && !includeIgnore) {\r\n                return;\r\n            }\r\n            el.beforeUpdate();\r\n            el.update();\r\n            el.afterUpdate();\r\n            var userSetClipPath = el.getClipPath();\r\n            if (el.ignoreClip) {\r\n                clipPaths = null;\r\n            }\r\n            else if (userSetClipPath) {\r\n                if (clipPaths) {\r\n                    clipPaths = clipPaths.slice();\r\n                }\r\n                else {\r\n                    clipPaths = [];\r\n                }\r\n                var currentClipPath = userSetClipPath;\r\n                var parentClipPath = el;\r\n                while (currentClipPath) {\r\n                    currentClipPath.parent = parentClipPath;\r\n                    currentClipPath.updateTransform();\r\n                    clipPaths.push(currentClipPath);\r\n                    parentClipPath = currentClipPath;\r\n                    currentClipPath = currentClipPath.getClipPath();\r\n                }\r\n            }\r\n            if (el.childrenRef) {\r\n                var children = el.childrenRef();\r\n                for (var i = 0; i < children.length; i++) {\r\n                    var child = children[i];\r\n                    if (el.__dirty) {\r\n                        child.__dirty |= Element.REDARAW_BIT;\r\n                    }\r\n                    this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\r\n                }\r\n                el.__dirty = 0;\r\n            }\r\n            else {\r\n                var disp = el;\r\n                if (clipPaths && clipPaths.length) {\r\n                    disp.__clipPaths = clipPaths;\r\n                }\r\n                else if (disp.__clipPaths && disp.__clipPaths.length > 0) {\r\n                    disp.__clipPaths = [];\r\n                }\r\n                if (isNaN(disp.z)) {\r\n                    logInvalidZError();\r\n                    disp.z = 0;\r\n                }\r\n                if (isNaN(disp.z2)) {\r\n                    logInvalidZError();\r\n                    disp.z2 = 0;\r\n                }\r\n                if (isNaN(disp.zlevel)) {\r\n                    logInvalidZError();\r\n                    disp.zlevel = 0;\r\n                }\r\n                this._displayList[this._displayListLen++] = disp;\r\n            }\r\n            var decalEl = el.getDecalElement && el.getDecalElement();\r\n            if (decalEl) {\r\n                this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);\r\n            }\r\n            var textGuide = el.getTextGuideLine();\r\n            if (textGuide) {\r\n                this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);\r\n            }\r\n            var textEl = el.getTextContent();\r\n            if (textEl) {\r\n                this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);\r\n            }\r\n        };\r\n        Storage.prototype.addRoot = function (el) {\r\n            if (el.__zr && el.__zr.storage === this) {\r\n                return;\r\n            }\r\n            this._roots.push(el);\r\n        };\r\n        Storage.prototype.delRoot = function (el) {\r\n            if (el instanceof Array) {\r\n                for (var i = 0, l = el.length; i < l; i++) {\r\n                    this.delRoot(el[i]);\r\n                }\r\n                return;\r\n            }\r\n            var idx = indexOf(this._roots, el);\r\n            if (idx >= 0) {\r\n                this._roots.splice(idx, 1);\r\n            }\r\n        };\r\n        Storage.prototype.delAllRoots = function () {\r\n            this._roots = [];\r\n            this._displayList = [];\r\n            this._displayListLen = 0;\r\n            return;\r\n        };\r\n        Storage.prototype.getRoots = function () {\r\n            return this._roots;\r\n        };\r\n        Storage.prototype.dispose = function () {\r\n            this._displayList = null;\r\n            this._roots = null;\r\n        };\r\n        return Storage;\r\n    }());\n\n    var requestAnimationFrame;\r\n    requestAnimationFrame = (typeof window !== 'undefined'\r\n        && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\r\n            || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\r\n            || window.mozRequestAnimationFrame\r\n            || window.webkitRequestAnimationFrame)) || function (func) {\r\n        return setTimeout(func, 16);\r\n    };\r\n    var requestAnimationFrame$1 = requestAnimationFrame;\n\n    var Animation = (function (_super) {\r\n        __extends(Animation, _super);\r\n        function Animation(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this._running = false;\r\n            _this._time = 0;\r\n            _this._pausedTime = 0;\r\n            _this._pauseStart = 0;\r\n            _this._paused = false;\r\n            opts = opts || {};\r\n            _this.stage = opts.stage || {};\r\n            _this.onframe = opts.onframe || function () { };\r\n            return _this;\r\n        }\r\n        Animation.prototype.addClip = function (clip) {\r\n            if (clip.animation) {\r\n                this.removeClip(clip);\r\n            }\r\n            if (!this._clipsHead) {\r\n                this._clipsHead = this._clipsTail = clip;\r\n            }\r\n            else {\r\n                this._clipsTail.next = clip;\r\n                clip.prev = this._clipsTail;\r\n                clip.next = null;\r\n                this._clipsTail = clip;\r\n            }\r\n            clip.animation = this;\r\n        };\r\n        Animation.prototype.addAnimator = function (animator) {\r\n            animator.animation = this;\r\n            var clip = animator.getClip();\r\n            if (clip) {\r\n                this.addClip(clip);\r\n            }\r\n        };\r\n        Animation.prototype.removeClip = function (clip) {\r\n            if (!clip.animation) {\r\n                return;\r\n            }\r\n            var prev = clip.prev;\r\n            var next = clip.next;\r\n            if (prev) {\r\n                prev.next = next;\r\n            }\r\n            else {\r\n                this._clipsHead = next;\r\n            }\r\n            if (next) {\r\n                next.prev = prev;\r\n            }\r\n            else {\r\n                this._clipsTail = prev;\r\n            }\r\n            clip.next = clip.prev = clip.animation = null;\r\n        };\r\n        Animation.prototype.removeAnimator = function (animator) {\r\n            var clip = animator.getClip();\r\n            if (clip) {\r\n                this.removeClip(clip);\r\n            }\r\n            animator.animation = null;\r\n        };\r\n        Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\r\n            var time = new Date().getTime() - this._pausedTime;\r\n            var delta = time - this._time;\r\n            var clip = this._clipsHead;\r\n            while (clip) {\r\n                var nextClip = clip.next;\r\n                var finished = clip.step(time, delta);\r\n                if (finished) {\r\n                    clip.ondestroy && clip.ondestroy();\r\n                    this.removeClip(clip);\r\n                    clip = nextClip;\r\n                }\r\n                else {\r\n                    clip = nextClip;\r\n                }\r\n            }\r\n            this._time = time;\r\n            if (!notTriggerFrameAndStageUpdate) {\r\n                this.onframe(delta);\r\n                this.trigger('frame', delta);\r\n                this.stage.update && this.stage.update();\r\n            }\r\n        };\r\n        Animation.prototype._startLoop = function () {\r\n            var self = this;\r\n            this._running = true;\r\n            function step() {\r\n                if (self._running) {\r\n                    requestAnimationFrame$1(step);\r\n                    !self._paused && self.update();\r\n                }\r\n            }\r\n            requestAnimationFrame$1(step);\r\n        };\r\n        Animation.prototype.start = function () {\r\n            if (this._running) {\r\n                return;\r\n            }\r\n            this._time = new Date().getTime();\r\n            this._pausedTime = 0;\r\n            this._startLoop();\r\n        };\r\n        Animation.prototype.stop = function () {\r\n            this._running = false;\r\n        };\r\n        Animation.prototype.pause = function () {\r\n            if (!this._paused) {\r\n                this._pauseStart = new Date().getTime();\r\n                this._paused = true;\r\n            }\r\n        };\r\n        Animation.prototype.resume = function () {\r\n            if (this._paused) {\r\n                this._pausedTime += (new Date().getTime()) - this._pauseStart;\r\n                this._paused = false;\r\n            }\r\n        };\r\n        Animation.prototype.clear = function () {\r\n            var clip = this._clipsHead;\r\n            while (clip) {\r\n                var nextClip = clip.next;\r\n                clip.prev = clip.next = clip.animation = null;\r\n                clip = nextClip;\r\n            }\r\n            this._clipsHead = this._clipsTail = null;\r\n        };\r\n        Animation.prototype.isFinished = function () {\r\n            return this._clipsHead == null;\r\n        };\r\n        Animation.prototype.animate = function (target, options) {\r\n            options = options || {};\r\n            this.start();\r\n            var animator = new Animator(target, options.loop);\r\n            this.addAnimator(animator);\r\n            return animator;\r\n        };\r\n        return Animation;\r\n    }(Eventful));\n\n    var TOUCH_CLICK_DELAY = 300;\r\n    var globalEventSupported = env.domSupported;\r\n    var localNativeListenerNames = (function () {\r\n        var mouseHandlerNames = [\r\n            'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\r\n            'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n        ];\r\n        var touchHandlerNames = [\r\n            'touchstart', 'touchend', 'touchmove'\r\n        ];\r\n        var pointerEventNameMap = {\r\n            pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\r\n        };\r\n        var pointerHandlerNames = map(mouseHandlerNames, function (name) {\r\n            var nm = name.replace('mouse', 'pointer');\r\n            return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\r\n        });\r\n        return {\r\n            mouse: mouseHandlerNames,\r\n            touch: touchHandlerNames,\r\n            pointer: pointerHandlerNames\r\n        };\r\n    })();\r\n    var globalNativeListenerNames = {\r\n        mouse: ['mousemove', 'mouseup'],\r\n        pointer: ['pointermove', 'pointerup']\r\n    };\r\n    var wheelEventSupported = false;\r\n    function isPointerFromTouch(event) {\r\n        var pointerType = event.pointerType;\r\n        return pointerType === 'pen' || pointerType === 'touch';\r\n    }\r\n    function setTouchTimer(scope) {\r\n        scope.touching = true;\r\n        if (scope.touchTimer != null) {\r\n            clearTimeout(scope.touchTimer);\r\n            scope.touchTimer = null;\r\n        }\r\n        scope.touchTimer = setTimeout(function () {\r\n            scope.touching = false;\r\n            scope.touchTimer = null;\r\n        }, 700);\r\n    }\r\n    function markTouch(event) {\r\n        event && (event.zrByTouch = true);\r\n    }\r\n    function normalizeGlobalEvent(instance, event) {\r\n        return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\r\n    }\r\n    function isLocalEl(instance, el) {\r\n        var elTmp = el;\r\n        var isLocal = false;\r\n        while (elTmp && elTmp.nodeType !== 9\r\n            && !(isLocal = elTmp.domBelongToZr\r\n                || (elTmp !== el && elTmp === instance.painterRoot))) {\r\n            elTmp = elTmp.parentNode;\r\n        }\r\n        return isLocal;\r\n    }\r\n    var FakeGlobalEvent = (function () {\r\n        function FakeGlobalEvent(instance, event) {\r\n            this.stopPropagation = noop;\r\n            this.stopImmediatePropagation = noop;\r\n            this.preventDefault = noop;\r\n            this.type = event.type;\r\n            this.target = this.currentTarget = instance.dom;\r\n            this.pointerType = event.pointerType;\r\n            this.clientX = event.clientX;\r\n            this.clientY = event.clientY;\r\n        }\r\n        return FakeGlobalEvent;\r\n    }());\r\n    var localDOMHandlers = {\r\n        mousedown: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.__mayPointerCapture = [event.zrX, event.zrY];\r\n            this.trigger('mousedown', event);\r\n        },\r\n        mousemove: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            var downPoint = this.__mayPointerCapture;\r\n            if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\r\n                this.__togglePointerCapture(true);\r\n            }\r\n            this.trigger('mousemove', event);\r\n        },\r\n        mouseup: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.__togglePointerCapture(false);\r\n            this.trigger('mouseup', event);\r\n        },\r\n        mouseout: function (event) {\r\n            if (event.target !== this.dom) {\r\n                return;\r\n            }\r\n            event = normalizeEvent(this.dom, event);\r\n            if (this.__pointerCapturing) {\r\n                event.zrEventControl = 'no_globalout';\r\n            }\r\n            var element = event.toElement || event.relatedTarget;\r\n            event.zrIsToLocalDOM = isLocalEl(this, element);\r\n            this.trigger('mouseout', event);\r\n        },\r\n        wheel: function (event) {\r\n            wheelEventSupported = true;\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger('mousewheel', event);\r\n        },\r\n        mousewheel: function (event) {\r\n            if (wheelEventSupported) {\r\n                return;\r\n            }\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger('mousewheel', event);\r\n        },\r\n        touchstart: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.__lastTouchMoment = new Date();\r\n            this.handler.processGesture(event, 'start');\r\n            localDOMHandlers.mousemove.call(this, event);\r\n            localDOMHandlers.mousedown.call(this, event);\r\n        },\r\n        touchmove: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.handler.processGesture(event, 'change');\r\n            localDOMHandlers.mousemove.call(this, event);\r\n        },\r\n        touchend: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.handler.processGesture(event, 'end');\r\n            localDOMHandlers.mouseup.call(this, event);\r\n            if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\r\n                localDOMHandlers.click.call(this, event);\r\n            }\r\n        },\r\n        pointerdown: function (event) {\r\n            localDOMHandlers.mousedown.call(this, event);\r\n        },\r\n        pointermove: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                localDOMHandlers.mousemove.call(this, event);\r\n            }\r\n        },\r\n        pointerup: function (event) {\r\n            localDOMHandlers.mouseup.call(this, event);\r\n        },\r\n        pointerout: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                localDOMHandlers.mouseout.call(this, event);\r\n            }\r\n        }\r\n    };\r\n    each(['click', 'dblclick', 'contextmenu'], function (name) {\r\n        localDOMHandlers[name] = function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger(name, event);\r\n        };\r\n    });\r\n    var globalDOMHandlers = {\r\n        pointermove: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                globalDOMHandlers.mousemove.call(this, event);\r\n            }\r\n        },\r\n        pointerup: function (event) {\r\n            globalDOMHandlers.mouseup.call(this, event);\r\n        },\r\n        mousemove: function (event) {\r\n            this.trigger('mousemove', event);\r\n        },\r\n        mouseup: function (event) {\r\n            var pointerCaptureReleasing = this.__pointerCapturing;\r\n            this.__togglePointerCapture(false);\r\n            this.trigger('mouseup', event);\r\n            if (pointerCaptureReleasing) {\r\n                event.zrEventControl = 'only_globalout';\r\n                this.trigger('mouseout', event);\r\n            }\r\n        }\r\n    };\r\n    function mountLocalDOMEventListeners(instance, scope) {\r\n        var domHandlers = scope.domHandlers;\r\n        if (env.pointerEventsSupported) {\r\n            each(localNativeListenerNames.pointer, function (nativeEventName) {\r\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                    domHandlers[nativeEventName].call(instance, event);\r\n                });\r\n            });\r\n        }\r\n        else {\r\n            if (env.touchEventsSupported) {\r\n                each(localNativeListenerNames.touch, function (nativeEventName) {\r\n                    mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                        domHandlers[nativeEventName].call(instance, event);\r\n                        setTouchTimer(scope);\r\n                    });\r\n                });\r\n            }\r\n            each(localNativeListenerNames.mouse, function (nativeEventName) {\r\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                    event = getNativeEvent(event);\r\n                    if (!scope.touching) {\r\n                        domHandlers[nativeEventName].call(instance, event);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    }\r\n    function mountGlobalDOMEventListeners(instance, scope) {\r\n        if (env.pointerEventsSupported) {\r\n            each(globalNativeListenerNames.pointer, mount);\r\n        }\r\n        else if (!env.touchEventsSupported) {\r\n            each(globalNativeListenerNames.mouse, mount);\r\n        }\r\n        function mount(nativeEventName) {\r\n            function nativeEventListener(event) {\r\n                event = getNativeEvent(event);\r\n                if (!isLocalEl(instance, event.target)) {\r\n                    event = normalizeGlobalEvent(instance, event);\r\n                    scope.domHandlers[nativeEventName].call(instance, event);\r\n                }\r\n            }\r\n            mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\r\n        }\r\n    }\r\n    function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\r\n        scope.mounted[nativeEventName] = listener;\r\n        scope.listenerOpts[nativeEventName] = opt;\r\n        addEventListener(scope.domTarget, nativeEventName, listener, opt);\r\n    }\r\n    function unmountDOMEventListeners(scope) {\r\n        var mounted = scope.mounted;\r\n        for (var nativeEventName in mounted) {\r\n            if (mounted.hasOwnProperty(nativeEventName)) {\r\n                removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\r\n            }\r\n        }\r\n        scope.mounted = {};\r\n    }\r\n    var DOMHandlerScope = (function () {\r\n        function DOMHandlerScope(domTarget, domHandlers) {\r\n            this.mounted = {};\r\n            this.listenerOpts = {};\r\n            this.touching = false;\r\n            this.domTarget = domTarget;\r\n            this.domHandlers = domHandlers;\r\n        }\r\n        return DOMHandlerScope;\r\n    }());\r\n    var HandlerDomProxy = (function (_super) {\r\n        __extends(HandlerDomProxy, _super);\r\n        function HandlerDomProxy(dom, painterRoot) {\r\n            var _this = _super.call(this) || this;\r\n            _this.__pointerCapturing = false;\r\n            _this.dom = dom;\r\n            _this.painterRoot = painterRoot;\r\n            _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\r\n            if (globalEventSupported) {\r\n                _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\r\n            }\r\n            mountLocalDOMEventListeners(_this, _this._localHandlerScope);\r\n            return _this;\r\n        }\r\n        HandlerDomProxy.prototype.dispose = function () {\r\n            unmountDOMEventListeners(this._localHandlerScope);\r\n            if (globalEventSupported) {\r\n                unmountDOMEventListeners(this._globalHandlerScope);\r\n            }\r\n        };\r\n        HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\r\n            this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\r\n        };\r\n        HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\r\n            this.__mayPointerCapture = null;\r\n            if (globalEventSupported\r\n                && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\r\n                this.__pointerCapturing = isPointerCapturing;\r\n                var globalHandlerScope = this._globalHandlerScope;\r\n                isPointerCapturing\r\n                    ? mountGlobalDOMEventListeners(this, globalHandlerScope)\r\n                    : unmountDOMEventListeners(globalHandlerScope);\r\n            }\r\n        };\r\n        return HandlerDomProxy;\r\n    }(Eventful));\n\n    var STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\r\n    var DEFAULT_COMMON_STYLE = {\r\n        shadowBlur: 0,\r\n        shadowOffsetX: 0,\r\n        shadowOffsetY: 0,\r\n        shadowColor: '#000',\r\n        opacity: 1,\r\n        blend: 'source-over'\r\n    };\r\n    var DEFAULT_COMMON_ANIMATION_PROPS = {\r\n        style: {\r\n            shadowBlur: true,\r\n            shadowOffsetX: true,\r\n            shadowOffsetY: true,\r\n            shadowColor: true,\r\n            opacity: true\r\n        }\r\n    };\r\n    DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\r\n    var PRIMARY_STATES_KEYS$1 = ['z', 'z2', 'invisible'];\r\n    var Displayable = (function (_super) {\r\n        __extends(Displayable, _super);\r\n        function Displayable(props) {\r\n            return _super.call(this, props) || this;\r\n        }\r\n        Displayable.prototype._init = function (props) {\r\n            var keysArr = keys(props);\r\n            for (var i = 0; i < keysArr.length; i++) {\r\n                var key = keysArr[i];\r\n                if (key === 'style') {\r\n                    this.useStyle(props[key]);\r\n                }\r\n                else {\r\n                    _super.prototype.attrKV.call(this, key, props[key]);\r\n                }\r\n            }\r\n            if (!this.style) {\r\n                this.useStyle({});\r\n            }\r\n        };\r\n        Displayable.prototype.beforeBrush = function () { };\r\n        Displayable.prototype.afterBrush = function () { };\r\n        Displayable.prototype.innerBeforeBrush = function () { };\r\n        Displayable.prototype.innerAfterBrush = function () { };\r\n        Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\r\n            var m = this.transform;\r\n            if (this.ignore\r\n                || this.invisible\r\n                || this.style.opacity === 0\r\n                || (this.culling\r\n                    && isDisplayableCulled(this, viewWidth, viewHeight))\r\n                || (m && !m[0] && !m[3])) {\r\n                return false;\r\n            }\r\n            if (considerClipPath && this.__clipPaths) {\r\n                for (var i = 0; i < this.__clipPaths.length; ++i) {\r\n                    if (this.__clipPaths[i].isZeroArea()) {\r\n                        return false;\r\n                    }\r\n                }\r\n            }\r\n            if (considerAncestors && this.parent) {\r\n                var parent_1 = this.parent;\r\n                while (parent_1) {\r\n                    if (parent_1.ignore) {\r\n                        return false;\r\n                    }\r\n                    parent_1 = parent_1.parent;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        Displayable.prototype.contain = function (x, y) {\r\n            return this.rectContain(x, y);\r\n        };\r\n        Displayable.prototype.traverse = function (cb, context) {\r\n            cb.call(context, this);\r\n        };\r\n        Displayable.prototype.rectContain = function (x, y) {\r\n            var coord = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            return rect.contain(coord[0], coord[1]);\r\n        };\r\n        Displayable.prototype.getPaintRect = function () {\r\n            var rect = this._paintRect;\r\n            if (!this._paintRect || this.__dirty) {\r\n                var transform = this.transform;\r\n                var elRect = this.getBoundingRect();\r\n                var style = this.style;\r\n                var shadowSize = style.shadowBlur || 0;\r\n                var shadowOffsetX = style.shadowOffsetX || 0;\r\n                var shadowOffsetY = style.shadowOffsetY || 0;\r\n                rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\r\n                if (transform) {\r\n                    BoundingRect.applyTransform(rect, elRect, transform);\r\n                }\r\n                else {\r\n                    rect.copy(elRect);\r\n                }\r\n                if (shadowSize || shadowOffsetX || shadowOffsetY) {\r\n                    rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\r\n                    rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\r\n                    rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\r\n                    rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\r\n                }\r\n                var tolerance = this.dirtyRectTolerance;\r\n                if (!rect.isZero()) {\r\n                    rect.x = Math.floor(rect.x - tolerance);\r\n                    rect.y = Math.floor(rect.y - tolerance);\r\n                    rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\r\n                    rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\r\n                }\r\n            }\r\n            return rect;\r\n        };\r\n        Displayable.prototype.setPrevPaintRect = function (paintRect) {\r\n            if (paintRect) {\r\n                this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\r\n                this._prevPaintRect.copy(paintRect);\r\n            }\r\n            else {\r\n                this._prevPaintRect = null;\r\n            }\r\n        };\r\n        Displayable.prototype.getPrevPaintRect = function () {\r\n            return this._prevPaintRect;\r\n        };\r\n        Displayable.prototype.animateStyle = function (loop) {\r\n            return this.animate('style', loop);\r\n        };\r\n        Displayable.prototype.updateDuringAnimation = function (targetKey) {\r\n            if (targetKey === 'style') {\r\n                this.dirtyStyle();\r\n            }\r\n            else {\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Displayable.prototype.attrKV = function (key, value) {\r\n            if (key !== 'style') {\r\n                _super.prototype.attrKV.call(this, key, value);\r\n            }\r\n            else {\r\n                if (!this.style) {\r\n                    this.useStyle(value);\r\n                }\r\n                else {\r\n                    this.setStyle(value);\r\n                }\r\n            }\r\n        };\r\n        Displayable.prototype.setStyle = function (keyOrObj, value) {\r\n            if (typeof keyOrObj === 'string') {\r\n                this.style[keyOrObj] = value;\r\n            }\r\n            else {\r\n                extend(this.style, keyOrObj);\r\n            }\r\n            this.dirtyStyle();\r\n            return this;\r\n        };\r\n        Displayable.prototype.dirtyStyle = function () {\r\n            this.markRedraw();\r\n            this.__dirty |= Displayable.STYLE_CHANGED_BIT;\r\n            if (this._rect) {\r\n                this._rect = null;\r\n            }\r\n        };\r\n        Displayable.prototype.dirty = function () {\r\n            this.dirtyStyle();\r\n        };\r\n        Displayable.prototype.styleChanged = function () {\r\n            return !!(this.__dirty & Displayable.STYLE_CHANGED_BIT);\r\n        };\r\n        Displayable.prototype.styleUpdated = function () {\r\n            this.__dirty &= ~Displayable.STYLE_CHANGED_BIT;\r\n        };\r\n        Displayable.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_COMMON_STYLE, obj);\r\n        };\r\n        Displayable.prototype.useStyle = function (obj) {\r\n            if (!obj[STYLE_MAGIC_KEY]) {\r\n                obj = this.createStyle(obj);\r\n            }\r\n            if (this.__inHover) {\r\n                this.__hoverStyle = obj;\r\n            }\r\n            else {\r\n                this.style = obj;\r\n            }\r\n            this.dirtyStyle();\r\n        };\r\n        Displayable.prototype.isStyleObject = function (obj) {\r\n            return obj[STYLE_MAGIC_KEY];\r\n        };\r\n        Displayable.prototype._innerSaveToNormal = function (toState) {\r\n            _super.prototype._innerSaveToNormal.call(this, toState);\r\n            var normalState = this._normalState;\r\n            if (toState.style && !normalState.style) {\r\n                normalState.style = this._mergeStyle(this.createStyle(), this.style);\r\n            }\r\n            this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1);\r\n        };\r\n        Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            var targetStyle;\r\n            if (state && state.style) {\r\n                if (transition) {\r\n                    if (keepCurrentStates) {\r\n                        targetStyle = state.style;\r\n                    }\r\n                    else {\r\n                        targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\r\n                        this._mergeStyle(targetStyle, state.style);\r\n                    }\r\n                }\r\n                else {\r\n                    targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\r\n                    this._mergeStyle(targetStyle, state.style);\r\n                }\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                targetStyle = normalState.style;\r\n            }\r\n            if (targetStyle) {\r\n                if (transition) {\r\n                    var sourceStyle = this.style;\r\n                    this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\r\n                    if (needsRestoreToNormal) {\r\n                        var changedKeys = keys(sourceStyle);\r\n                        for (var i = 0; i < changedKeys.length; i++) {\r\n                            var key = changedKeys[i];\r\n                            if (key in targetStyle) {\r\n                                targetStyle[key] = targetStyle[key];\r\n                                this.style[key] = sourceStyle[key];\r\n                            }\r\n                        }\r\n                    }\r\n                    var targetKeys = keys(targetStyle);\r\n                    for (var i = 0; i < targetKeys.length; i++) {\r\n                        var key = targetKeys[i];\r\n                        this.style[key] = this.style[key];\r\n                    }\r\n                    this._transitionState(stateName, {\r\n                        style: targetStyle\r\n                    }, animationCfg, this.getAnimationStyleProps());\r\n                }\r\n                else {\r\n                    this.useStyle(targetStyle);\r\n                }\r\n            }\r\n            for (var i = 0; i < PRIMARY_STATES_KEYS$1.length; i++) {\r\n                var key = PRIMARY_STATES_KEYS$1[i];\r\n                if (state && state[key] != null) {\r\n                    this[key] = state[key];\r\n                }\r\n                else if (needsRestoreToNormal) {\r\n                    if (normalState[key] != null) {\r\n                        this[key] = normalState[key];\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Displayable.prototype._mergeStates = function (states) {\r\n            var mergedState = _super.prototype._mergeStates.call(this, states);\r\n            var mergedStyle;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                if (state.style) {\r\n                    mergedStyle = mergedStyle || {};\r\n                    this._mergeStyle(mergedStyle, state.style);\r\n                }\r\n            }\r\n            if (mergedStyle) {\r\n                mergedState.style = mergedStyle;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n            extend(targetStyle, sourceStyle);\r\n            return targetStyle;\r\n        };\r\n        Displayable.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_COMMON_ANIMATION_PROPS;\r\n        };\r\n        Displayable.STYLE_CHANGED_BIT = 2;\r\n        Displayable.initDefaultProps = (function () {\r\n            var dispProto = Displayable.prototype;\r\n            dispProto.type = 'displayable';\r\n            dispProto.invisible = false;\r\n            dispProto.z = 0;\r\n            dispProto.z2 = 0;\r\n            dispProto.zlevel = 0;\r\n            dispProto.culling = false;\r\n            dispProto.cursor = 'pointer';\r\n            dispProto.rectHover = false;\r\n            dispProto.incremental = false;\r\n            dispProto._rect = null;\r\n            dispProto.dirtyRectTolerance = 0;\r\n            dispProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT;\r\n        })();\r\n        return Displayable;\r\n    }(Element));\r\n    var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n    var viewRect = new BoundingRect(0, 0, 0, 0);\r\n    function isDisplayableCulled(el, width, height) {\r\n        tmpRect.copy(el.getBoundingRect());\r\n        if (el.transform) {\r\n            tmpRect.applyTransform(el.transform);\r\n        }\r\n        viewRect.width = width;\r\n        viewRect.height = height;\r\n        return !tmpRect.intersect(viewRect);\r\n    }\n\n    var mathPow = Math.pow;\r\n    var mathSqrt = Math.sqrt;\r\n    var EPSILON$1 = 1e-8;\r\n    var EPSILON_NUMERIC = 1e-4;\r\n    var THREE_SQRT = mathSqrt(3);\r\n    var ONE_THIRD = 1 / 3;\r\n    var _v0 = create();\r\n    var _v1 = create();\r\n    var _v2 = create();\r\n    function isAroundZero(val) {\r\n        return val > -EPSILON$1 && val < EPSILON$1;\r\n    }\r\n    function isNotAroundZero$1(val) {\r\n        return val > EPSILON$1 || val < -EPSILON$1;\r\n    }\r\n    function cubicAt(p0, p1, p2, p3, t) {\r\n        var onet = 1 - t;\r\n        return onet * onet * (onet * p0 + 3 * t * p1)\r\n            + t * t * (t * p3 + 3 * onet * p2);\r\n    }\r\n    function cubicDerivativeAt(p0, p1, p2, p3, t) {\r\n        var onet = 1 - t;\r\n        return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\r\n            + (p3 - p2) * t * t);\r\n    }\r\n    function cubicRootAt(p0, p1, p2, p3, val, roots) {\r\n        var a = p3 + 3 * (p1 - p2) - p0;\r\n        var b = 3 * (p2 - p1 * 2 + p0);\r\n        var c = 3 * (p1 - p0);\r\n        var d = p0 - val;\r\n        var A = b * b - 3 * a * c;\r\n        var B = b * c - 9 * a * d;\r\n        var C = c * c - 3 * b * d;\r\n        var n = 0;\r\n        if (isAroundZero(A) && isAroundZero(B)) {\r\n            if (isAroundZero(b)) {\r\n                roots[0] = 0;\r\n            }\r\n            else {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = B * B - 4 * A * C;\r\n            if (isAroundZero(disc)) {\r\n                var K = B / A;\r\n                var t1 = -b / a + K;\r\n                var t2 = -K / 2;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var Y1 = A * b + 1.5 * a * (-B + discSqrt);\r\n                var Y2 = A * b + 1.5 * a * (-B - discSqrt);\r\n                if (Y1 < 0) {\r\n                    Y1 = -mathPow(-Y1, ONE_THIRD);\r\n                }\r\n                else {\r\n                    Y1 = mathPow(Y1, ONE_THIRD);\r\n                }\r\n                if (Y2 < 0) {\r\n                    Y2 = -mathPow(-Y2, ONE_THIRD);\r\n                }\r\n                else {\r\n                    Y2 = mathPow(Y2, ONE_THIRD);\r\n                }\r\n                var t1 = (-b - (Y1 + Y2)) / (3 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n            else {\r\n                var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\r\n                var theta = Math.acos(T) / 3;\r\n                var ASqrt = mathSqrt(A);\r\n                var tmp = Math.cos(theta);\r\n                var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\r\n                var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n                var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n                if (t3 >= 0 && t3 <= 1) {\r\n                    roots[n++] = t3;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function cubicExtrema(p0, p1, p2, p3, extrema) {\r\n        var b = 6 * p2 - 12 * p1 + 6 * p0;\r\n        var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\r\n        var c = 3 * p1 - 3 * p0;\r\n        var n = 0;\r\n        if (isAroundZero(a)) {\r\n            if (isNotAroundZero$1(b)) {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    extrema[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = b * b - 4 * a * c;\r\n            if (isAroundZero(disc)) {\r\n                extrema[0] = -b / (2 * a);\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var t1 = (-b + discSqrt) / (2 * a);\r\n                var t2 = (-b - discSqrt) / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    extrema[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    extrema[n++] = t2;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function cubicSubdivide(p0, p1, p2, p3, t, out) {\r\n        var p01 = (p1 - p0) * t + p0;\r\n        var p12 = (p2 - p1) * t + p1;\r\n        var p23 = (p3 - p2) * t + p2;\r\n        var p012 = (p12 - p01) * t + p01;\r\n        var p123 = (p23 - p12) * t + p12;\r\n        var p0123 = (p123 - p012) * t + p012;\r\n        out[0] = p0;\r\n        out[1] = p01;\r\n        out[2] = p012;\r\n        out[3] = p0123;\r\n        out[4] = p0123;\r\n        out[5] = p123;\r\n        out[6] = p23;\r\n        out[7] = p3;\r\n    }\r\n    function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\r\n        var t;\r\n        var interval = 0.005;\r\n        var d = Infinity;\r\n        var prev;\r\n        var next;\r\n        var d1;\r\n        var d2;\r\n        _v0[0] = x;\r\n        _v0[1] = y;\r\n        for (var _t = 0; _t < 1; _t += 0.05) {\r\n            _v1[0] = cubicAt(x0, x1, x2, x3, _t);\r\n            _v1[1] = cubicAt(y0, y1, y2, y3, _t);\r\n            d1 = distSquare(_v0, _v1);\r\n            if (d1 < d) {\r\n                t = _t;\r\n                d = d1;\r\n            }\r\n        }\r\n        d = Infinity;\r\n        for (var i = 0; i < 32; i++) {\r\n            if (interval < EPSILON_NUMERIC) {\r\n                break;\r\n            }\r\n            prev = t - interval;\r\n            next = t + interval;\r\n            _v1[0] = cubicAt(x0, x1, x2, x3, prev);\r\n            _v1[1] = cubicAt(y0, y1, y2, y3, prev);\r\n            d1 = distSquare(_v1, _v0);\r\n            if (prev >= 0 && d1 < d) {\r\n                t = prev;\r\n                d = d1;\r\n            }\r\n            else {\r\n                _v2[0] = cubicAt(x0, x1, x2, x3, next);\r\n                _v2[1] = cubicAt(y0, y1, y2, y3, next);\r\n                d2 = distSquare(_v2, _v0);\r\n                if (next <= 1 && d2 < d) {\r\n                    t = next;\r\n                    d = d2;\r\n                }\r\n                else {\r\n                    interval *= 0.5;\r\n                }\r\n            }\r\n        }\r\n        if (out) {\r\n            out[0] = cubicAt(x0, x1, x2, x3, t);\r\n            out[1] = cubicAt(y0, y1, y2, y3, t);\r\n        }\r\n        return mathSqrt(d);\r\n    }\r\n    function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\r\n        var px = x0;\r\n        var py = y0;\r\n        var d = 0;\r\n        var step = 1 / iteration;\r\n        for (var i = 1; i <= iteration; i++) {\r\n            var t = i * step;\r\n            var x = cubicAt(x0, x1, x2, x3, t);\r\n            var y = cubicAt(y0, y1, y2, y3, t);\r\n            var dx = x - px;\r\n            var dy = y - py;\r\n            d += Math.sqrt(dx * dx + dy * dy);\r\n            px = x;\r\n            py = y;\r\n        }\r\n        return d;\r\n    }\r\n    function quadraticAt(p0, p1, p2, t) {\r\n        var onet = 1 - t;\r\n        return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\r\n    }\r\n    function quadraticDerivativeAt(p0, p1, p2, t) {\r\n        return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\r\n    }\r\n    function quadraticRootAt(p0, p1, p2, val, roots) {\r\n        var a = p0 - 2 * p1 + p2;\r\n        var b = 2 * (p1 - p0);\r\n        var c = p0 - val;\r\n        var n = 0;\r\n        if (isAroundZero(a)) {\r\n            if (isNotAroundZero$1(b)) {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = b * b - 4 * a * c;\r\n            if (isAroundZero(disc)) {\r\n                var t1 = -b / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var t1 = (-b + discSqrt) / (2 * a);\r\n                var t2 = (-b - discSqrt) / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function quadraticExtremum(p0, p1, p2) {\r\n        var divider = p0 + p2 - 2 * p1;\r\n        if (divider === 0) {\r\n            return 0.5;\r\n        }\r\n        else {\r\n            return (p0 - p1) / divider;\r\n        }\r\n    }\r\n    function quadraticSubdivide(p0, p1, p2, t, out) {\r\n        var p01 = (p1 - p0) * t + p0;\r\n        var p12 = (p2 - p1) * t + p1;\r\n        var p012 = (p12 - p01) * t + p01;\r\n        out[0] = p0;\r\n        out[1] = p01;\r\n        out[2] = p012;\r\n        out[3] = p012;\r\n        out[4] = p12;\r\n        out[5] = p2;\r\n    }\r\n    function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\r\n        var t;\r\n        var interval = 0.005;\r\n        var d = Infinity;\r\n        _v0[0] = x;\r\n        _v0[1] = y;\r\n        for (var _t = 0; _t < 1; _t += 0.05) {\r\n            _v1[0] = quadraticAt(x0, x1, x2, _t);\r\n            _v1[1] = quadraticAt(y0, y1, y2, _t);\r\n            var d1 = distSquare(_v0, _v1);\r\n            if (d1 < d) {\r\n                t = _t;\r\n                d = d1;\r\n            }\r\n        }\r\n        d = Infinity;\r\n        for (var i = 0; i < 32; i++) {\r\n            if (interval < EPSILON_NUMERIC) {\r\n                break;\r\n            }\r\n            var prev = t - interval;\r\n            var next = t + interval;\r\n            _v1[0] = quadraticAt(x0, x1, x2, prev);\r\n            _v1[1] = quadraticAt(y0, y1, y2, prev);\r\n            var d1 = distSquare(_v1, _v0);\r\n            if (prev >= 0 && d1 < d) {\r\n                t = prev;\r\n                d = d1;\r\n            }\r\n            else {\r\n                _v2[0] = quadraticAt(x0, x1, x2, next);\r\n                _v2[1] = quadraticAt(y0, y1, y2, next);\r\n                var d2 = distSquare(_v2, _v0);\r\n                if (next <= 1 && d2 < d) {\r\n                    t = next;\r\n                    d = d2;\r\n                }\r\n                else {\r\n                    interval *= 0.5;\r\n                }\r\n            }\r\n        }\r\n        if (out) {\r\n            out[0] = quadraticAt(x0, x1, x2, t);\r\n            out[1] = quadraticAt(y0, y1, y2, t);\r\n        }\r\n        return mathSqrt(d);\r\n    }\r\n    function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\r\n        var px = x0;\r\n        var py = y0;\r\n        var d = 0;\r\n        var step = 1 / iteration;\r\n        for (var i = 1; i <= iteration; i++) {\r\n            var t = i * step;\r\n            var x = quadraticAt(x0, x1, x2, t);\r\n            var y = quadraticAt(y0, y1, y2, t);\r\n            var dx = x - px;\r\n            var dy = y - py;\r\n            d += Math.sqrt(dx * dx + dy * dy);\r\n            px = x;\r\n            py = y;\r\n        }\r\n        return d;\r\n    }\n\n    var mathMin$1 = Math.min;\r\n    var mathMax$1 = Math.max;\r\n    var mathSin = Math.sin;\r\n    var mathCos = Math.cos;\r\n    var PI2 = Math.PI * 2;\r\n    var start = create();\r\n    var end = create();\r\n    var extremity = create();\r\n    function fromPoints(points, min, max) {\r\n        if (points.length === 0) {\r\n            return;\r\n        }\r\n        var p = points[0];\r\n        var left = p[0];\r\n        var right = p[0];\r\n        var top = p[1];\r\n        var bottom = p[1];\r\n        for (var i = 1; i < points.length; i++) {\r\n            p = points[i];\r\n            left = mathMin$1(left, p[0]);\r\n            right = mathMax$1(right, p[0]);\r\n            top = mathMin$1(top, p[1]);\r\n            bottom = mathMax$1(bottom, p[1]);\r\n        }\r\n        min[0] = left;\r\n        min[1] = top;\r\n        max[0] = right;\r\n        max[1] = bottom;\r\n    }\r\n    function fromLine(x0, y0, x1, y1, min, max) {\r\n        min[0] = mathMin$1(x0, x1);\r\n        min[1] = mathMin$1(y0, y1);\r\n        max[0] = mathMax$1(x0, x1);\r\n        max[1] = mathMax$1(y0, y1);\r\n    }\r\n    var xDim = [];\r\n    var yDim = [];\r\n    function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\r\n        var cubicExtrema$1 = cubicExtrema;\r\n        var cubicAt$1 = cubicAt;\r\n        var n = cubicExtrema$1(x0, x1, x2, x3, xDim);\r\n        min[0] = Infinity;\r\n        min[1] = Infinity;\r\n        max[0] = -Infinity;\r\n        max[1] = -Infinity;\r\n        for (var i = 0; i < n; i++) {\r\n            var x = cubicAt$1(x0, x1, x2, x3, xDim[i]);\r\n            min[0] = mathMin$1(x, min[0]);\r\n            max[0] = mathMax$1(x, max[0]);\r\n        }\r\n        n = cubicExtrema$1(y0, y1, y2, y3, yDim);\r\n        for (var i = 0; i < n; i++) {\r\n            var y = cubicAt$1(y0, y1, y2, y3, yDim[i]);\r\n            min[1] = mathMin$1(y, min[1]);\r\n            max[1] = mathMax$1(y, max[1]);\r\n        }\r\n        min[0] = mathMin$1(x0, min[0]);\r\n        max[0] = mathMax$1(x0, max[0]);\r\n        min[0] = mathMin$1(x3, min[0]);\r\n        max[0] = mathMax$1(x3, max[0]);\r\n        min[1] = mathMin$1(y0, min[1]);\r\n        max[1] = mathMax$1(y0, max[1]);\r\n        min[1] = mathMin$1(y3, min[1]);\r\n        max[1] = mathMax$1(y3, max[1]);\r\n    }\r\n    function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\r\n        var quadraticExtremum$1 = quadraticExtremum;\r\n        var quadraticAt$1 = quadraticAt;\r\n        var tx = mathMax$1(mathMin$1(quadraticExtremum$1(x0, x1, x2), 1), 0);\r\n        var ty = mathMax$1(mathMin$1(quadraticExtremum$1(y0, y1, y2), 1), 0);\r\n        var x = quadraticAt$1(x0, x1, x2, tx);\r\n        var y = quadraticAt$1(y0, y1, y2, ty);\r\n        min[0] = mathMin$1(x0, x2, x);\r\n        min[1] = mathMin$1(y0, y2, y);\r\n        max[0] = mathMax$1(x0, x2, x);\r\n        max[1] = mathMax$1(y0, y2, y);\r\n    }\r\n    function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min$1, max$1) {\r\n        var vec2Min = min;\r\n        var vec2Max = max;\r\n        var diff = Math.abs(startAngle - endAngle);\r\n        if (diff % PI2 < 1e-4 && diff > 1e-4) {\r\n            min$1[0] = x - rx;\r\n            min$1[1] = y - ry;\r\n            max$1[0] = x + rx;\r\n            max$1[1] = y + ry;\r\n            return;\r\n        }\r\n        start[0] = mathCos(startAngle) * rx + x;\r\n        start[1] = mathSin(startAngle) * ry + y;\r\n        end[0] = mathCos(endAngle) * rx + x;\r\n        end[1] = mathSin(endAngle) * ry + y;\r\n        vec2Min(min$1, start, end);\r\n        vec2Max(max$1, start, end);\r\n        startAngle = startAngle % (PI2);\r\n        if (startAngle < 0) {\r\n            startAngle = startAngle + PI2;\r\n        }\r\n        endAngle = endAngle % (PI2);\r\n        if (endAngle < 0) {\r\n            endAngle = endAngle + PI2;\r\n        }\r\n        if (startAngle > endAngle && !anticlockwise) {\r\n            endAngle += PI2;\r\n        }\r\n        else if (startAngle < endAngle && anticlockwise) {\r\n            startAngle += PI2;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = endAngle;\r\n            endAngle = startAngle;\r\n            startAngle = tmp;\r\n        }\r\n        for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\r\n            if (angle > startAngle) {\r\n                extremity[0] = mathCos(angle) * rx + x;\r\n                extremity[1] = mathSin(angle) * ry + y;\r\n                vec2Min(min$1, extremity, min$1);\r\n                vec2Max(max$1, extremity, max$1);\r\n            }\r\n        }\r\n    }\n\n    var CMD = {\r\n        M: 1,\r\n        L: 2,\r\n        C: 3,\r\n        Q: 4,\r\n        A: 5,\r\n        Z: 6,\r\n        R: 7\r\n    };\r\n    var tmpOutX = [];\r\n    var tmpOutY = [];\r\n    var min$1 = [];\r\n    var max$1 = [];\r\n    var min2 = [];\r\n    var max2 = [];\r\n    var mathMin$2 = Math.min;\r\n    var mathMax$2 = Math.max;\r\n    var mathCos$1 = Math.cos;\r\n    var mathSin$1 = Math.sin;\r\n    var mathSqrt$1 = Math.sqrt;\r\n    var mathAbs = Math.abs;\r\n    var PI = Math.PI;\r\n    var PI2$1 = PI * 2;\r\n    var hasTypedArray = typeof Float32Array !== 'undefined';\r\n    var tmpAngles = [];\r\n    function modPI2(radian) {\r\n        var n = Math.round(radian / PI * 1e8) / 1e8;\r\n        return (n % 2) * PI;\r\n    }\r\n    function normalizeArcAngles(angles, anticlockwise) {\r\n        var newStartAngle = modPI2(angles[0]);\r\n        if (newStartAngle < 0) {\r\n            newStartAngle += PI2$1;\r\n        }\r\n        var delta = newStartAngle - angles[0];\r\n        var newEndAngle = angles[1];\r\n        newEndAngle += delta;\r\n        if (!anticlockwise && newEndAngle - newStartAngle >= PI2$1) {\r\n            newEndAngle = newStartAngle + PI2$1;\r\n        }\r\n        else if (anticlockwise && newStartAngle - newEndAngle >= PI2$1) {\r\n            newEndAngle = newStartAngle - PI2$1;\r\n        }\r\n        else if (!anticlockwise && newStartAngle > newEndAngle) {\r\n            newEndAngle = newStartAngle +\r\n                (PI2$1 - modPI2(newStartAngle - newEndAngle));\r\n        }\r\n        else if (anticlockwise && newStartAngle < newEndAngle) {\r\n            newEndAngle = newStartAngle -\r\n                (PI2$1 - modPI2(newEndAngle - newStartAngle));\r\n        }\r\n        angles[0] = newStartAngle;\r\n        angles[1] = newEndAngle;\r\n    }\r\n    var PathProxy = (function () {\r\n        function PathProxy(notSaveData) {\r\n            this.dpr = 1;\r\n            this._version = 0;\r\n            this._xi = 0;\r\n            this._yi = 0;\r\n            this._x0 = 0;\r\n            this._y0 = 0;\r\n            this._len = 0;\r\n            if (notSaveData) {\r\n                this._saveData = false;\r\n            }\r\n            if (this._saveData) {\r\n                this.data = [];\r\n            }\r\n        }\r\n        PathProxy.prototype.increaseVersion = function () {\r\n            this._version++;\r\n        };\r\n        PathProxy.prototype.getVersion = function () {\r\n            return this._version;\r\n        };\r\n        PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\r\n            segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\r\n            if (segmentIgnoreThreshold > 0) {\r\n                this._ux = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sx) || 0;\r\n                this._uy = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sy) || 0;\r\n            }\r\n        };\r\n        PathProxy.prototype.setDPR = function (dpr) {\r\n            this.dpr = dpr;\r\n        };\r\n        PathProxy.prototype.setContext = function (ctx) {\r\n            this._ctx = ctx;\r\n        };\r\n        PathProxy.prototype.getContext = function () {\r\n            return this._ctx;\r\n        };\r\n        PathProxy.prototype.beginPath = function () {\r\n            this._ctx && this._ctx.beginPath();\r\n            this.reset();\r\n            return this;\r\n        };\r\n        PathProxy.prototype.reset = function () {\r\n            if (this._saveData) {\r\n                this._len = 0;\r\n            }\r\n            if (this._lineDash) {\r\n                this._lineDash = null;\r\n                this._dashOffset = 0;\r\n            }\r\n            if (this._pathSegLen) {\r\n                this._pathSegLen = null;\r\n                this._pathLen = 0;\r\n            }\r\n            this._version++;\r\n        };\r\n        PathProxy.prototype.moveTo = function (x, y) {\r\n            this.addData(CMD.M, x, y);\r\n            this._ctx && this._ctx.moveTo(x, y);\r\n            this._x0 = x;\r\n            this._y0 = y;\r\n            this._xi = x;\r\n            this._yi = y;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.lineTo = function (x, y) {\r\n            var exceedUnit = mathAbs(x - this._xi) > this._ux\r\n                || mathAbs(y - this._yi) > this._uy\r\n                || this._len < 5;\r\n            this.addData(CMD.L, x, y);\r\n            if (this._ctx && exceedUnit) {\r\n                this._needsDash ? this._dashedLineTo(x, y)\r\n                    : this._ctx.lineTo(x, y);\r\n            }\r\n            if (exceedUnit) {\r\n                this._xi = x;\r\n                this._yi = y;\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\r\n            this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\r\n            if (this._ctx) {\r\n                this._needsDash ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3)\r\n                    : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n            }\r\n            this._xi = x3;\r\n            this._yi = y3;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\r\n            this.addData(CMD.Q, x1, y1, x2, y2);\r\n            if (this._ctx) {\r\n                this._needsDash ? this._dashedQuadraticTo(x1, y1, x2, y2)\r\n                    : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n            }\r\n            this._xi = x2;\r\n            this._yi = y2;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\r\n            tmpAngles[0] = startAngle;\r\n            tmpAngles[1] = endAngle;\r\n            normalizeArcAngles(tmpAngles, anticlockwise);\r\n            startAngle = tmpAngles[0];\r\n            endAngle = tmpAngles[1];\r\n            var delta = endAngle - startAngle;\r\n            this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\r\n            this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n            this._xi = mathCos$1(endAngle) * r + cx;\r\n            this._yi = mathSin$1(endAngle) * r + cy;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\r\n            if (this._ctx) {\r\n                this._ctx.arcTo(x1, y1, x2, y2, radius);\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.rect = function (x, y, w, h) {\r\n            this._ctx && this._ctx.rect(x, y, w, h);\r\n            this.addData(CMD.R, x, y, w, h);\r\n            return this;\r\n        };\r\n        PathProxy.prototype.closePath = function () {\r\n            this.addData(CMD.Z);\r\n            var ctx = this._ctx;\r\n            var x0 = this._x0;\r\n            var y0 = this._y0;\r\n            if (ctx) {\r\n                this._needsDash && this._dashedLineTo(x0, y0);\r\n                ctx.closePath();\r\n            }\r\n            this._xi = x0;\r\n            this._yi = y0;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.fill = function (ctx) {\r\n            ctx && ctx.fill();\r\n            this.toStatic();\r\n        };\r\n        PathProxy.prototype.stroke = function (ctx) {\r\n            ctx && ctx.stroke();\r\n            this.toStatic();\r\n        };\r\n        PathProxy.prototype.setLineDash = function (lineDash) {\r\n            if (lineDash instanceof Array) {\r\n                this._lineDash = lineDash;\r\n                this._dashIdx = 0;\r\n                var lineDashSum = 0;\r\n                for (var i = 0; i < lineDash.length; i++) {\r\n                    lineDashSum += lineDash[i];\r\n                }\r\n                this._dashSum = lineDashSum;\r\n                this._needsDash = true;\r\n            }\r\n            else {\r\n                this._lineDash = null;\r\n                this._needsDash = false;\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.setLineDashOffset = function (offset) {\r\n            this._dashOffset = offset;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.len = function () {\r\n            return this._len;\r\n        };\r\n        PathProxy.prototype.setData = function (data) {\r\n            var len = data.length;\r\n            if (!(this.data && this.data.length === len) && hasTypedArray) {\r\n                this.data = new Float32Array(len);\r\n            }\r\n            for (var i = 0; i < len; i++) {\r\n                this.data[i] = data[i];\r\n            }\r\n            this._len = len;\r\n        };\r\n        PathProxy.prototype.appendPath = function (path) {\r\n            if (!(path instanceof Array)) {\r\n                path = [path];\r\n            }\r\n            var len = path.length;\r\n            var appendSize = 0;\r\n            var offset = this._len;\r\n            for (var i = 0; i < len; i++) {\r\n                appendSize += path[i].len();\r\n            }\r\n            if (hasTypedArray && (this.data instanceof Float32Array)) {\r\n                this.data = new Float32Array(offset + appendSize);\r\n            }\r\n            for (var i = 0; i < len; i++) {\r\n                var appendPathData = path[i].data;\r\n                for (var k = 0; k < appendPathData.length; k++) {\r\n                    this.data[offset++] = appendPathData[k];\r\n                }\r\n            }\r\n            this._len = offset;\r\n        };\r\n        PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\r\n            if (!this._saveData) {\r\n                return;\r\n            }\r\n            var data = this.data;\r\n            if (this._len + arguments.length > data.length) {\r\n                this._expandData();\r\n                data = this.data;\r\n            }\r\n            for (var i = 0; i < arguments.length; i++) {\r\n                data[this._len++] = arguments[i];\r\n            }\r\n        };\r\n        PathProxy.prototype._expandData = function () {\r\n            if (!(this.data instanceof Array)) {\r\n                var newData = [];\r\n                for (var i = 0; i < this._len; i++) {\r\n                    newData[i] = this.data[i];\r\n                }\r\n                this.data = newData;\r\n            }\r\n        };\r\n        PathProxy.prototype._dashedLineTo = function (x1, y1) {\r\n            var dashSum = this._dashSum;\r\n            var lineDash = this._lineDash;\r\n            var ctx = this._ctx;\r\n            var offset = this._dashOffset;\r\n            var x0 = this._xi;\r\n            var y0 = this._yi;\r\n            var dx = x1 - x0;\r\n            var dy = y1 - y0;\r\n            var dist = mathSqrt$1(dx * dx + dy * dy);\r\n            var x = x0;\r\n            var y = y0;\r\n            var nDash = lineDash.length;\r\n            var dash;\r\n            var idx;\r\n            dx /= dist;\r\n            dy /= dist;\r\n            if (offset < 0) {\r\n                offset = dashSum + offset;\r\n            }\r\n            offset %= dashSum;\r\n            x -= offset * dx;\r\n            y -= offset * dy;\r\n            while ((dx > 0 && x <= x1) || (dx < 0 && x >= x1)\r\n                || (dx === 0 && ((dy > 0 && y <= y1) || (dy < 0 && y >= y1)))) {\r\n                idx = this._dashIdx;\r\n                dash = lineDash[idx];\r\n                x += dx * dash;\r\n                y += dy * dash;\r\n                this._dashIdx = (idx + 1) % nDash;\r\n                if ((dx > 0 && x < x0) || (dx < 0 && x > x0) || (dy > 0 && y < y0) || (dy < 0 && y > y0)) {\r\n                    continue;\r\n                }\r\n                ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin$2(x, x1) : mathMax$2(x, x1), dy >= 0 ? mathMin$2(y, y1) : mathMax$2(y, y1));\r\n            }\r\n            dx = x - x1;\r\n            dy = y - y1;\r\n            this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n        };\r\n        PathProxy.prototype._dashedBezierTo = function (x1, y1, x2, y2, x3, y3) {\r\n            var ctx = this._ctx;\r\n            var dashSum = this._dashSum;\r\n            var offset = this._dashOffset;\r\n            var lineDash = this._lineDash;\r\n            var x0 = this._xi;\r\n            var y0 = this._yi;\r\n            var bezierLen = 0;\r\n            var idx = this._dashIdx;\r\n            var nDash = lineDash.length;\r\n            var t;\r\n            var dx;\r\n            var dy;\r\n            var x;\r\n            var y;\r\n            var tmpLen = 0;\r\n            if (offset < 0) {\r\n                offset = dashSum + offset;\r\n            }\r\n            offset %= dashSum;\r\n            for (t = 0; t < 1; t += 0.1) {\r\n                dx = cubicAt(x0, x1, x2, x3, t + 0.1)\r\n                    - cubicAt(x0, x1, x2, x3, t);\r\n                dy = cubicAt(y0, y1, y2, y3, t + 0.1)\r\n                    - cubicAt(y0, y1, y2, y3, t);\r\n                bezierLen += mathSqrt$1(dx * dx + dy * dy);\r\n            }\r\n            for (; idx < nDash; idx++) {\r\n                tmpLen += lineDash[idx];\r\n                if (tmpLen > offset) {\r\n                    break;\r\n                }\r\n            }\r\n            t = (tmpLen - offset) / bezierLen;\r\n            while (t <= 1) {\r\n                x = cubicAt(x0, x1, x2, x3, t);\r\n                y = cubicAt(y0, y1, y2, y3, t);\r\n                idx % 2 ? ctx.moveTo(x, y)\r\n                    : ctx.lineTo(x, y);\r\n                t += lineDash[idx] / bezierLen;\r\n                idx = (idx + 1) % nDash;\r\n            }\r\n            (idx % 2 !== 0) && ctx.lineTo(x3, y3);\r\n            dx = x3 - x;\r\n            dy = y3 - y;\r\n            this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n        };\r\n        PathProxy.prototype._dashedQuadraticTo = function (x1, y1, x2, y2) {\r\n            var x3 = x2;\r\n            var y3 = y2;\r\n            x2 = (x2 + 2 * x1) / 3;\r\n            y2 = (y2 + 2 * y1) / 3;\r\n            x1 = (this._xi + 2 * x1) / 3;\r\n            y1 = (this._yi + 2 * y1) / 3;\r\n            this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\r\n        };\r\n        PathProxy.prototype.toStatic = function () {\r\n            if (!this._saveData) {\r\n                return;\r\n            }\r\n            var data = this.data;\r\n            if (data instanceof Array) {\r\n                data.length = this._len;\r\n                if (hasTypedArray && this._len > 11) {\r\n                    this.data = new Float32Array(data);\r\n                }\r\n            }\r\n        };\r\n        PathProxy.prototype.getBoundingRect = function () {\r\n            min$1[0] = min$1[1] = min2[0] = min2[1] = Number.MAX_VALUE;\r\n            max$1[0] = max$1[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\r\n            var data = this.data;\r\n            var xi = 0;\r\n            var yi = 0;\r\n            var x0 = 0;\r\n            var y0 = 0;\r\n            var i;\r\n            for (i = 0; i < this._len;) {\r\n                var cmd = data[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = data[i];\r\n                    yi = data[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        xi = x0 = data[i++];\r\n                        yi = y0 = data[i++];\r\n                        min2[0] = x0;\r\n                        min2[1] = y0;\r\n                        max2[0] = x0;\r\n                        max2[1] = y0;\r\n                        break;\r\n                    case CMD.L:\r\n                        fromLine(xi, yi, data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.C:\r\n                        fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.Q:\r\n                        fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.A:\r\n                        var cx = data[i++];\r\n                        var cy = data[i++];\r\n                        var rx = data[i++];\r\n                        var ry = data[i++];\r\n                        var startAngle = data[i++];\r\n                        var endAngle = data[i++] + startAngle;\r\n                        i += 1;\r\n                        var anticlockwise = !data[i++];\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R:\r\n                        x0 = xi = data[i++];\r\n                        y0 = yi = data[i++];\r\n                        var width = data[i++];\r\n                        var height = data[i++];\r\n                        fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\r\n                        break;\r\n                    case CMD.Z:\r\n                        xi = x0;\r\n                        yi = y0;\r\n                        break;\r\n                }\r\n                min(min$1, min$1, min2);\r\n                max(max$1, max$1, max2);\r\n            }\r\n            if (i === 0) {\r\n                min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0;\r\n            }\r\n            return new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]);\r\n        };\r\n        PathProxy.prototype._calculateLength = function () {\r\n            var data = this.data;\r\n            var len = this._len;\r\n            var ux = this._ux;\r\n            var uy = this._uy;\r\n            var xi = 0;\r\n            var yi = 0;\r\n            var x0 = 0;\r\n            var y0 = 0;\r\n            if (!this._pathSegLen) {\r\n                this._pathSegLen = [];\r\n            }\r\n            var pathSegLen = this._pathSegLen;\r\n            var pathTotalLen = 0;\r\n            var segCount = 0;\r\n            for (var i = 0; i < len;) {\r\n                var cmd = data[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = data[i];\r\n                    yi = data[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                var l = -1;\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        xi = x0 = data[i++];\r\n                        yi = y0 = data[i++];\r\n                        break;\r\n                    case CMD.L: {\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        var dx = x2 - xi;\r\n                        var dy = y2 - yi;\r\n                        if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\r\n                            l = Math.sqrt(dx * dx + dy * dy);\r\n                            xi = x2;\r\n                            yi = y2;\r\n                        }\r\n                        break;\r\n                    }\r\n                    case CMD.C: {\r\n                        var x1 = data[i++];\r\n                        var y1 = data[i++];\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        var x3 = data[i++];\r\n                        var y3 = data[i++];\r\n                        l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\r\n                        xi = x3;\r\n                        yi = y3;\r\n                        break;\r\n                    }\r\n                    case CMD.Q: {\r\n                        var x1 = data[i++];\r\n                        var y1 = data[i++];\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\r\n                        xi = x2;\r\n                        yi = y2;\r\n                        break;\r\n                    }\r\n                    case CMD.A:\r\n                        var cx = data[i++];\r\n                        var cy = data[i++];\r\n                        var rx = data[i++];\r\n                        var ry = data[i++];\r\n                        var startAngle = data[i++];\r\n                        var delta = data[i++];\r\n                        var endAngle = delta + startAngle;\r\n                        i += 1;\r\n                        var anticlockwise = !data[i++];\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        l = mathMax$2(rx, ry) * mathMin$2(PI2$1, Math.abs(delta));\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R: {\r\n                        x0 = xi = data[i++];\r\n                        y0 = yi = data[i++];\r\n                        var width = data[i++];\r\n                        var height = data[i++];\r\n                        l = width * 2 + height * 2;\r\n                        break;\r\n                    }\r\n                    case CMD.Z: {\r\n                        var dx = x0 - xi;\r\n                        var dy = y0 - yi;\r\n                        l = Math.sqrt(dx * dx + dy * dy);\r\n                        xi = x0;\r\n                        yi = y0;\r\n                        break;\r\n                    }\r\n                }\r\n                if (l >= 0) {\r\n                    pathSegLen[segCount++] = l;\r\n                    pathTotalLen += l;\r\n                }\r\n            }\r\n            this._pathLen = pathTotalLen;\r\n            return pathTotalLen;\r\n        };\r\n        PathProxy.prototype.rebuildPath = function (ctx, percent) {\r\n            var d = this.data;\r\n            var ux = this._ux;\r\n            var uy = this._uy;\r\n            var len = this._len;\r\n            var x0;\r\n            var y0;\r\n            var xi;\r\n            var yi;\r\n            var x;\r\n            var y;\r\n            var drawPart = percent < 1;\r\n            var pathSegLen;\r\n            var pathTotalLen;\r\n            var accumLength = 0;\r\n            var segCount = 0;\r\n            var displayedLength;\r\n            if (drawPart) {\r\n                if (!this._pathSegLen) {\r\n                    this._calculateLength();\r\n                }\r\n                pathSegLen = this._pathSegLen;\r\n                pathTotalLen = this._pathLen;\r\n                displayedLength = percent * pathTotalLen;\r\n                if (!displayedLength) {\r\n                    return;\r\n                }\r\n            }\r\n            lo: for (var i = 0; i < len;) {\r\n                var cmd = d[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = d[i];\r\n                    yi = d[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        x0 = xi = d[i++];\r\n                        y0 = yi = d[i++];\r\n                        ctx.moveTo(xi, yi);\r\n                        break;\r\n                    case CMD.L: {\r\n                        x = d[i++];\r\n                        y = d[i++];\r\n                        if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\r\n                            if (drawPart) {\r\n                                var l = pathSegLen[segCount++];\r\n                                if (accumLength + l > displayedLength) {\r\n                                    var t = (displayedLength - accumLength) / l;\r\n                                    ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\r\n                                    break lo;\r\n                                }\r\n                                accumLength += l;\r\n                            }\r\n                            ctx.lineTo(x, y);\r\n                            xi = x;\r\n                            yi = y;\r\n                        }\r\n                        break;\r\n                    }\r\n                    case CMD.C: {\r\n                        var x1 = d[i++];\r\n                        var y1 = d[i++];\r\n                        var x2 = d[i++];\r\n                        var y2 = d[i++];\r\n                        var x3 = d[i++];\r\n                        var y3 = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\r\n                                cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\r\n                                ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n                        xi = x3;\r\n                        yi = y3;\r\n                        break;\r\n                    }\r\n                    case CMD.Q: {\r\n                        var x1 = d[i++];\r\n                        var y1 = d[i++];\r\n                        var x2 = d[i++];\r\n                        var y2 = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                quadraticSubdivide(xi, x1, x2, t, tmpOutX);\r\n                                quadraticSubdivide(yi, y1, y2, t, tmpOutY);\r\n                                ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n                        xi = x2;\r\n                        yi = y2;\r\n                        break;\r\n                    }\r\n                    case CMD.A:\r\n                        var cx = d[i++];\r\n                        var cy = d[i++];\r\n                        var rx = d[i++];\r\n                        var ry = d[i++];\r\n                        var startAngle = d[i++];\r\n                        var delta = d[i++];\r\n                        var psi = d[i++];\r\n                        var anticlockwise = !d[i++];\r\n                        var r = (rx > ry) ? rx : ry;\r\n                        var isEllipse = mathAbs(rx - ry) > 1e-3;\r\n                        var endAngle = startAngle + delta;\r\n                        var breakBuild = false;\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                endAngle = startAngle + delta * (displayedLength - accumLength) / l;\r\n                                breakBuild = true;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        if (isEllipse && ctx.ellipse) {\r\n                            ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\r\n                        }\r\n                        else {\r\n                            ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n                        }\r\n                        if (breakBuild) {\r\n                            break lo;\r\n                        }\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R:\r\n                        x0 = xi = d[i];\r\n                        y0 = yi = d[i + 1];\r\n                        x = d[i++];\r\n                        y = d[i++];\r\n                        var width = d[i++];\r\n                        var height = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var d_1 = displayedLength - accumLength;\r\n                                ctx.moveTo(x, y);\r\n                                ctx.lineTo(x + mathMin$2(d_1, width), y);\r\n                                d_1 -= width;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x + width, y + mathMin$2(d_1, height));\r\n                                }\r\n                                d_1 -= height;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x + mathMax$2(width - d_1, 0), y + height);\r\n                                }\r\n                                d_1 -= width;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x, y + mathMax$2(height - d_1, 0));\r\n                                }\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.rect(x, y, width, height);\r\n                        break;\r\n                    case CMD.Z:\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.closePath();\r\n                        xi = x0;\r\n                        yi = y0;\r\n                }\r\n            }\r\n        };\r\n        PathProxy.CMD = CMD;\r\n        PathProxy.initDefaultProps = (function () {\r\n            var proto = PathProxy.prototype;\r\n            proto._saveData = true;\r\n            proto._needsDash = false;\r\n            proto._dashOffset = 0;\r\n            proto._dashIdx = 0;\r\n            proto._dashSum = 0;\r\n            proto._ux = 0;\r\n            proto._uy = 0;\r\n        })();\r\n        return PathProxy;\r\n    }());\n\n    function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        var _a = 0;\r\n        var _b = x0;\r\n        if ((y > y0 + _l && y > y1 + _l)\r\n            || (y < y0 - _l && y < y1 - _l)\r\n            || (x > x0 + _l && x > x1 + _l)\r\n            || (x < x0 - _l && x < x1 - _l)) {\r\n            return false;\r\n        }\r\n        if (x0 !== x1) {\r\n            _a = (y0 - y1) / (x0 - x1);\r\n            _b = (x0 * y1 - x1 * y0) / (x0 - x1);\r\n        }\r\n        else {\r\n            return Math.abs(x - x0) <= _l / 2;\r\n        }\r\n        var tmp = _a * x - y + _b;\r\n        var _s = tmp * tmp / (_a * _a + 1);\r\n        return _s <= _l / 2 * _l / 2;\r\n    }\n\n    function containStroke$1(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\r\n            || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\r\n            || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\r\n            || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\r\n            return false;\r\n        }\r\n        var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\r\n        return d <= _l / 2;\r\n    }\n\n    function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\r\n            || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\r\n            || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\r\n            || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\r\n            return false;\r\n        }\r\n        var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\r\n        return d <= _l / 2;\r\n    }\n\n    var PI2$2 = Math.PI * 2;\r\n    function normalizeRadian(angle) {\r\n        angle %= PI2$2;\r\n        if (angle < 0) {\r\n            angle += PI2$2;\r\n        }\r\n        return angle;\r\n    }\n\n    var PI2$3 = Math.PI * 2;\r\n    function containStroke$3(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        x -= cx;\r\n        y -= cy;\r\n        var d = Math.sqrt(x * x + y * y);\r\n        if ((d - _l > r) || (d + _l < r)) {\r\n            return false;\r\n        }\r\n        if (Math.abs(startAngle - endAngle) % PI2$3 < 1e-4) {\r\n            return true;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = startAngle;\r\n            startAngle = normalizeRadian(endAngle);\r\n            endAngle = normalizeRadian(tmp);\r\n        }\r\n        else {\r\n            startAngle = normalizeRadian(startAngle);\r\n            endAngle = normalizeRadian(endAngle);\r\n        }\r\n        if (startAngle > endAngle) {\r\n            endAngle += PI2$3;\r\n        }\r\n        var angle = Math.atan2(y, x);\r\n        if (angle < 0) {\r\n            angle += PI2$3;\r\n        }\r\n        return (angle >= startAngle && angle <= endAngle)\r\n            || (angle + PI2$3 >= startAngle && angle + PI2$3 <= endAngle);\r\n    }\n\n    function windingLine(x0, y0, x1, y1, x, y) {\r\n        if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\r\n            return 0;\r\n        }\r\n        if (y1 === y0) {\r\n            return 0;\r\n        }\r\n        var t = (y - y0) / (y1 - y0);\r\n        var dir = y1 < y0 ? 1 : -1;\r\n        if (t === 1 || t === 0) {\r\n            dir = y1 < y0 ? 0.5 : -0.5;\r\n        }\r\n        var x_ = t * (x1 - x0) + x0;\r\n        return x_ === x ? Infinity : x_ > x ? dir : 0;\r\n    }\n\n    var CMD$1 = PathProxy.CMD;\r\n    var PI2$4 = Math.PI * 2;\r\n    var EPSILON$2 = 1e-4;\r\n    function isAroundEqual(a, b) {\r\n        return Math.abs(a - b) < EPSILON$2;\r\n    }\r\n    var roots = [-1, -1, -1];\r\n    var extrema = [-1, -1];\r\n    function swapExtrema() {\r\n        var tmp = extrema[0];\r\n        extrema[0] = extrema[1];\r\n        extrema[1] = tmp;\r\n    }\r\n    function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\r\n        if ((y > y0 && y > y1 && y > y2 && y > y3)\r\n            || (y < y0 && y < y1 && y < y2 && y < y3)) {\r\n            return 0;\r\n        }\r\n        var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots);\r\n        if (nRoots === 0) {\r\n            return 0;\r\n        }\r\n        else {\r\n            var w = 0;\r\n            var nExtrema = -1;\r\n            var y0_ = void 0;\r\n            var y1_ = void 0;\r\n            for (var i = 0; i < nRoots; i++) {\r\n                var t = roots[i];\r\n                var unit = (t === 0 || t === 1) ? 0.5 : 1;\r\n                var x_ = cubicAt(x0, x1, x2, x3, t);\r\n                if (x_ < x) {\r\n                    continue;\r\n                }\r\n                if (nExtrema < 0) {\r\n                    nExtrema = cubicExtrema(y0, y1, y2, y3, extrema);\r\n                    if (extrema[1] < extrema[0] && nExtrema > 1) {\r\n                        swapExtrema();\r\n                    }\r\n                    y0_ = cubicAt(y0, y1, y2, y3, extrema[0]);\r\n                    if (nExtrema > 1) {\r\n                        y1_ = cubicAt(y0, y1, y2, y3, extrema[1]);\r\n                    }\r\n                }\r\n                if (nExtrema === 2) {\r\n                    if (t < extrema[0]) {\r\n                        w += y0_ < y0 ? unit : -unit;\r\n                    }\r\n                    else if (t < extrema[1]) {\r\n                        w += y1_ < y0_ ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y3 < y1_ ? unit : -unit;\r\n                    }\r\n                }\r\n                else {\r\n                    if (t < extrema[0]) {\r\n                        w += y0_ < y0 ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y3 < y0_ ? unit : -unit;\r\n                    }\r\n                }\r\n            }\r\n            return w;\r\n        }\r\n    }\r\n    function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\r\n        if ((y > y0 && y > y1 && y > y2)\r\n            || (y < y0 && y < y1 && y < y2)) {\r\n            return 0;\r\n        }\r\n        var nRoots = quadraticRootAt(y0, y1, y2, y, roots);\r\n        if (nRoots === 0) {\r\n            return 0;\r\n        }\r\n        else {\r\n            var t = quadraticExtremum(y0, y1, y2);\r\n            if (t >= 0 && t <= 1) {\r\n                var w = 0;\r\n                var y_ = quadraticAt(y0, y1, y2, t);\r\n                for (var i = 0; i < nRoots; i++) {\r\n                    var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\r\n                    var x_ = quadraticAt(x0, x1, x2, roots[i]);\r\n                    if (x_ < x) {\r\n                        continue;\r\n                    }\r\n                    if (roots[i] < t) {\r\n                        w += y_ < y0 ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y2 < y_ ? unit : -unit;\r\n                    }\r\n                }\r\n                return w;\r\n            }\r\n            else {\r\n                var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\r\n                var x_ = quadraticAt(x0, x1, x2, roots[0]);\r\n                if (x_ < x) {\r\n                    return 0;\r\n                }\r\n                return y2 < y0 ? unit : -unit;\r\n            }\r\n        }\r\n    }\r\n    function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\r\n        y -= cy;\r\n        if (y > r || y < -r) {\r\n            return 0;\r\n        }\r\n        var tmp = Math.sqrt(r * r - y * y);\r\n        roots[0] = -tmp;\r\n        roots[1] = tmp;\r\n        var dTheta = Math.abs(startAngle - endAngle);\r\n        if (dTheta < 1e-4) {\r\n            return 0;\r\n        }\r\n        if (dTheta >= PI2$4 - 1e-4) {\r\n            startAngle = 0;\r\n            endAngle = PI2$4;\r\n            var dir = anticlockwise ? 1 : -1;\r\n            if (x >= roots[0] + cx && x <= roots[1] + cx) {\r\n                return dir;\r\n            }\r\n            else {\r\n                return 0;\r\n            }\r\n        }\r\n        if (startAngle > endAngle) {\r\n            var tmp_1 = startAngle;\r\n            startAngle = endAngle;\r\n            endAngle = tmp_1;\r\n        }\r\n        if (startAngle < 0) {\r\n            startAngle += PI2$4;\r\n            endAngle += PI2$4;\r\n        }\r\n        var w = 0;\r\n        for (var i = 0; i < 2; i++) {\r\n            var x_ = roots[i];\r\n            if (x_ + cx > x) {\r\n                var angle = Math.atan2(y, x_);\r\n                var dir = anticlockwise ? 1 : -1;\r\n                if (angle < 0) {\r\n                    angle = PI2$4 + angle;\r\n                }\r\n                if ((angle >= startAngle && angle <= endAngle)\r\n                    || (angle + PI2$4 >= startAngle && angle + PI2$4 <= endAngle)) {\r\n                    if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\r\n                        dir = -dir;\r\n                    }\r\n                    w += dir;\r\n                }\r\n            }\r\n        }\r\n        return w;\r\n    }\r\n    function containPath(path, lineWidth, isStroke, x, y) {\r\n        var data = path.data;\r\n        var len = path.len();\r\n        var w = 0;\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        var x1;\r\n        var y1;\r\n        for (var i = 0; i < len;) {\r\n            var cmd = data[i++];\r\n            var isFirst = i === 1;\r\n            if (cmd === CMD$1.M && i > 1) {\r\n                if (!isStroke) {\r\n                    w += windingLine(xi, yi, x0, y0, x, y);\r\n                }\r\n            }\r\n            if (isFirst) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n            }\r\n            switch (cmd) {\r\n                case CMD$1.M:\r\n                    x0 = data[i++];\r\n                    y0 = data[i++];\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n                case CMD$1.L:\r\n                    if (isStroke) {\r\n                        if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.C:\r\n                    if (isStroke) {\r\n                        if (containStroke$1(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.Q:\r\n                    if (isStroke) {\r\n                        if (containStroke$2(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.A:\r\n                    var cx = data[i++];\r\n                    var cy = data[i++];\r\n                    var rx = data[i++];\r\n                    var ry = data[i++];\r\n                    var theta = data[i++];\r\n                    var dTheta = data[i++];\r\n                    i += 1;\r\n                    var anticlockwise = !!(1 - data[i++]);\r\n                    x1 = Math.cos(theta) * rx + cx;\r\n                    y1 = Math.sin(theta) * ry + cy;\r\n                    if (!isFirst) {\r\n                        w += windingLine(xi, yi, x1, y1, x, y);\r\n                    }\r\n                    else {\r\n                        x0 = x1;\r\n                        y0 = y1;\r\n                    }\r\n                    var _x = (x - cx) * ry / rx + cx;\r\n                    if (isStroke) {\r\n                        if (containStroke$3(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\r\n                    }\r\n                    xi = Math.cos(theta + dTheta) * rx + cx;\r\n                    yi = Math.sin(theta + dTheta) * ry + cy;\r\n                    break;\r\n                case CMD$1.R:\r\n                    x0 = xi = data[i++];\r\n                    y0 = yi = data[i++];\r\n                    var width = data[i++];\r\n                    var height = data[i++];\r\n                    x1 = x0 + width;\r\n                    y1 = y0 + height;\r\n                    if (isStroke) {\r\n                        if (containStroke(x0, y0, x1, y0, lineWidth, x, y)\r\n                            || containStroke(x1, y0, x1, y1, lineWidth, x, y)\r\n                            || containStroke(x1, y1, x0, y1, lineWidth, x, y)\r\n                            || containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(x1, y0, x1, y1, x, y);\r\n                        w += windingLine(x0, y1, x0, y0, x, y);\r\n                    }\r\n                    break;\r\n                case CMD$1.Z:\r\n                    if (isStroke) {\r\n                        if (containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(xi, yi, x0, y0, x, y);\r\n                    }\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n        }\r\n        if (!isStroke && !isAroundEqual(yi, y0)) {\r\n            w += windingLine(xi, yi, x0, y0, x, y) || 0;\r\n        }\r\n        return w !== 0;\r\n    }\r\n    function contain(pathProxy, x, y) {\r\n        return containPath(pathProxy, 0, false, x, y);\r\n    }\r\n    function containStroke$4(pathProxy, lineWidth, x, y) {\r\n        return containPath(pathProxy, lineWidth, true, x, y);\r\n    }\n\n    var DEFAULT_PATH_STYLE = defaults({\r\n        fill: '#000',\r\n        stroke: null,\r\n        strokePercent: 1,\r\n        fillOpacity: 1,\r\n        strokeOpacity: 1,\r\n        lineDashOffset: 0,\r\n        lineWidth: 1,\r\n        lineCap: 'butt',\r\n        miterLimit: 10,\r\n        strokeNoScale: false,\r\n        strokeFirst: false\r\n    }, DEFAULT_COMMON_STYLE);\r\n    var DEFAULT_PATH_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            fill: true,\r\n            stroke: true,\r\n            strokePercent: true,\r\n            fillOpacity: true,\r\n            strokeOpacity: true,\r\n            lineDashOffset: true,\r\n            lineWidth: true,\r\n            miterLimit: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var pathCopyParams = [\r\n        'x', 'y', 'rotation', 'scaleX', 'scaleY', 'originX', 'originY', 'invisible',\r\n        'culling', 'z', 'z2', 'zlevel', 'parent'\r\n    ];\r\n    var Path = (function (_super) {\r\n        __extends(Path, _super);\r\n        function Path(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Path.prototype.update = function () {\r\n            var _this = this;\r\n            _super.prototype.update.call(this);\r\n            var style = this.style;\r\n            if (style.decal) {\r\n                var decalEl = this._decalEl\r\n                    = this._decalEl || new Path();\r\n                if (decalEl.buildPath === Path.prototype.buildPath) {\r\n                    decalEl.buildPath = function (ctx) {\r\n                        _this.buildPath(ctx, _this.shape);\r\n                    };\r\n                }\r\n                decalEl.silent = true;\r\n                var decalElStyle = decalEl.style;\r\n                for (var key in style) {\r\n                    if (decalElStyle[key] !== style[key]) {\r\n                        decalElStyle[key] = style[key];\r\n                    }\r\n                }\r\n                decalElStyle.fill = style.fill ? style.decal : null;\r\n                decalElStyle.decal = null;\r\n                decalElStyle.shadowColor = null;\r\n                style.strokeFirst && (decalElStyle.stroke = null);\r\n                for (var i = 0; i < pathCopyParams.length; ++i) {\r\n                    decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\r\n                }\r\n                decalEl.__dirty |= Element.REDARAW_BIT;\r\n            }\r\n            else if (this._decalEl) {\r\n                this._decalEl = null;\r\n            }\r\n        };\r\n        Path.prototype.getDecalElement = function () {\r\n            return this._decalEl;\r\n        };\r\n        Path.prototype._init = function (props) {\r\n            var keysArr = keys(props);\r\n            this.shape = this.getDefaultShape();\r\n            var defaultStyle = this.getDefaultStyle();\r\n            if (defaultStyle) {\r\n                this.useStyle(defaultStyle);\r\n            }\r\n            for (var i = 0; i < keysArr.length; i++) {\r\n                var key = keysArr[i];\r\n                var value = props[key];\r\n                if (key === 'style') {\r\n                    if (!this.style) {\r\n                        this.useStyle(value);\r\n                    }\r\n                    else {\r\n                        extend(this.style, value);\r\n                    }\r\n                }\r\n                else if (key === 'shape') {\r\n                    extend(this.shape, value);\r\n                }\r\n                else {\r\n                    _super.prototype.attrKV.call(this, key, value);\r\n                }\r\n            }\r\n            if (!this.style) {\r\n                this.useStyle({});\r\n            }\r\n        };\r\n        Path.prototype.getDefaultStyle = function () {\r\n            return null;\r\n        };\r\n        Path.prototype.getDefaultShape = function () {\r\n            return {};\r\n        };\r\n        Path.prototype.canBeInsideText = function () {\r\n            return this.hasFill();\r\n        };\r\n        Path.prototype.getInsideTextFill = function () {\r\n            var pathFill = this.style.fill;\r\n            if (pathFill !== 'none') {\r\n                if (isString(pathFill)) {\r\n                    var fillLum = lum(pathFill, 0);\r\n                    if (fillLum > 0.5) {\r\n                        return DARK_LABEL_COLOR;\r\n                    }\r\n                    else if (fillLum > 0.2) {\r\n                        return LIGHTER_LABEL_COLOR;\r\n                    }\r\n                    return LIGHT_LABEL_COLOR;\r\n                }\r\n                else if (pathFill) {\r\n                    return LIGHT_LABEL_COLOR;\r\n                }\r\n            }\r\n            return DARK_LABEL_COLOR;\r\n        };\r\n        Path.prototype.getInsideTextStroke = function (textFill) {\r\n            var pathFill = this.style.fill;\r\n            if (isString(pathFill)) {\r\n                var zr = this.__zr;\r\n                var isDarkMode = !!(zr && zr.isDarkMode());\r\n                var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\r\n                if (isDarkMode === isDarkLabel) {\r\n                    return pathFill;\r\n                }\r\n            }\r\n        };\r\n        Path.prototype.buildPath = function (ctx, shapeCfg, inBundle) { };\r\n        Path.prototype.pathUpdated = function () {\r\n            this.__dirty &= ~Path.SHAPE_CHANGED_BIT;\r\n        };\r\n        Path.prototype.createPathProxy = function () {\r\n            this.path = new PathProxy(false);\r\n        };\r\n        Path.prototype.hasStroke = function () {\r\n            var style = this.style;\r\n            var stroke = style.stroke;\r\n            return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n        };\r\n        Path.prototype.hasFill = function () {\r\n            var style = this.style;\r\n            var fill = style.fill;\r\n            return fill != null && fill !== 'none';\r\n        };\r\n        Path.prototype.getBoundingRect = function () {\r\n            var rect = this._rect;\r\n            var style = this.style;\r\n            var needsUpdateRect = !rect;\r\n            if (needsUpdateRect) {\r\n                var firstInvoke = false;\r\n                if (!this.path) {\r\n                    firstInvoke = true;\r\n                    this.createPathProxy();\r\n                }\r\n                var path = this.path;\r\n                if (firstInvoke || (this.__dirty & Path.SHAPE_CHANGED_BIT)) {\r\n                    path.beginPath();\r\n                    this.buildPath(path, this.shape, false);\r\n                    this.pathUpdated();\r\n                }\r\n                rect = path.getBoundingRect();\r\n            }\r\n            this._rect = rect;\r\n            if (this.hasStroke() && this.path && this.path.len() > 0) {\r\n                var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\r\n                if (this.__dirty || needsUpdateRect) {\r\n                    rectWithStroke.copy(rect);\r\n                    var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n                    var w = style.lineWidth;\r\n                    if (!this.hasFill()) {\r\n                        var strokeContainThreshold = this.strokeContainThreshold;\r\n                        w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\r\n                    }\r\n                    if (lineScale > 1e-10) {\r\n                        rectWithStroke.width += w / lineScale;\r\n                        rectWithStroke.height += w / lineScale;\r\n                        rectWithStroke.x -= w / lineScale / 2;\r\n                        rectWithStroke.y -= w / lineScale / 2;\r\n                    }\r\n                }\r\n                return rectWithStroke;\r\n            }\r\n            return rect;\r\n        };\r\n        Path.prototype.contain = function (x, y) {\r\n            var localPos = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            var style = this.style;\r\n            x = localPos[0];\r\n            y = localPos[1];\r\n            if (rect.contain(x, y)) {\r\n                var pathProxy = this.path;\r\n                if (this.hasStroke()) {\r\n                    var lineWidth = style.lineWidth;\r\n                    var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n                    if (lineScale > 1e-10) {\r\n                        if (!this.hasFill()) {\r\n                            lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\r\n                        }\r\n                        if (containStroke$4(pathProxy, lineWidth / lineScale, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                }\r\n                if (this.hasFill()) {\r\n                    return contain(pathProxy, x, y);\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Path.prototype.dirtyShape = function () {\r\n            this.__dirty |= Path.SHAPE_CHANGED_BIT;\r\n            if (this._rect) {\r\n                this._rect = null;\r\n            }\r\n            if (this._decalEl) {\r\n                this._decalEl.dirtyShape();\r\n            }\r\n            this.markRedraw();\r\n        };\r\n        Path.prototype.dirty = function () {\r\n            this.dirtyStyle();\r\n            this.dirtyShape();\r\n        };\r\n        Path.prototype.animateShape = function (loop) {\r\n            return this.animate('shape', loop);\r\n        };\r\n        Path.prototype.updateDuringAnimation = function (targetKey) {\r\n            if (targetKey === 'style') {\r\n                this.dirtyStyle();\r\n            }\r\n            else if (targetKey === 'shape') {\r\n                this.dirtyShape();\r\n            }\r\n            else {\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Path.prototype.attrKV = function (key, value) {\r\n            if (key === 'shape') {\r\n                this.setShape(value);\r\n            }\r\n            else {\r\n                _super.prototype.attrKV.call(this, key, value);\r\n            }\r\n        };\r\n        Path.prototype.setShape = function (keyOrObj, value) {\r\n            var shape = this.shape;\r\n            if (!shape) {\r\n                shape = this.shape = {};\r\n            }\r\n            if (typeof keyOrObj === 'string') {\r\n                shape[keyOrObj] = value;\r\n            }\r\n            else {\r\n                extend(shape, keyOrObj);\r\n            }\r\n            this.dirtyShape();\r\n            return this;\r\n        };\r\n        Path.prototype.shapeChanged = function () {\r\n            return !!(this.__dirty & Path.SHAPE_CHANGED_BIT);\r\n        };\r\n        Path.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_PATH_STYLE, obj);\r\n        };\r\n        Path.prototype._innerSaveToNormal = function (toState) {\r\n            _super.prototype._innerSaveToNormal.call(this, toState);\r\n            var normalState = this._normalState;\r\n            if (toState.shape && !normalState.shape) {\r\n                normalState.shape = extend({}, this.shape);\r\n            }\r\n        };\r\n        Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            var targetShape;\r\n            if (state && state.shape) {\r\n                if (transition) {\r\n                    if (keepCurrentStates) {\r\n                        targetShape = state.shape;\r\n                    }\r\n                    else {\r\n                        targetShape = extend({}, normalState.shape);\r\n                        extend(targetShape, state.shape);\r\n                    }\r\n                }\r\n                else {\r\n                    targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\r\n                    extend(targetShape, state.shape);\r\n                }\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                targetShape = normalState.shape;\r\n            }\r\n            if (targetShape) {\r\n                if (transition) {\r\n                    this.shape = extend({}, this.shape);\r\n                    var targetShapePrimaryProps = {};\r\n                    var shapeKeys = keys(targetShape);\r\n                    for (var i = 0; i < shapeKeys.length; i++) {\r\n                        var key = shapeKeys[i];\r\n                        if (typeof targetShape[key] === 'object') {\r\n                            this.shape[key] = targetShape[key];\r\n                        }\r\n                        else {\r\n                            targetShapePrimaryProps[key] = targetShape[key];\r\n                        }\r\n                    }\r\n                    this._transitionState(stateName, {\r\n                        shape: targetShapePrimaryProps\r\n                    }, animationCfg);\r\n                }\r\n                else {\r\n                    this.shape = targetShape;\r\n                    this.dirtyShape();\r\n                }\r\n            }\r\n        };\r\n        Path.prototype._mergeStates = function (states) {\r\n            var mergedState = _super.prototype._mergeStates.call(this, states);\r\n            var mergedShape;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                if (state.shape) {\r\n                    mergedShape = mergedShape || {};\r\n                    this._mergeStyle(mergedShape, state.shape);\r\n                }\r\n            }\r\n            if (mergedShape) {\r\n                mergedState.shape = mergedShape;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Path.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_PATH_ANIMATION_PROPS;\r\n        };\r\n        Path.prototype.isZeroArea = function () {\r\n            return false;\r\n        };\r\n        Path.extend = function (defaultProps) {\r\n            var Sub = (function (_super) {\r\n                __extends(Sub, _super);\r\n                function Sub(opts) {\r\n                    var _this = _super.call(this, opts) || this;\r\n                    defaultProps.init && defaultProps.init.call(_this, opts);\r\n                    return _this;\r\n                }\r\n                Sub.prototype.getDefaultStyle = function () {\r\n                    return clone(defaultProps.style);\r\n                };\r\n                Sub.prototype.getDefaultShape = function () {\r\n                    return clone(defaultProps.shape);\r\n                };\r\n                return Sub;\r\n            }(Path));\r\n            for (var key in defaultProps) {\r\n                if (typeof defaultProps[key] === 'function') {\r\n                    Sub.prototype[key] = defaultProps[key];\r\n                }\r\n            }\r\n            return Sub;\r\n        };\r\n        Path.SHAPE_CHANGED_BIT = 4;\r\n        Path.initDefaultProps = (function () {\r\n            var pathProto = Path.prototype;\r\n            pathProto.type = 'path';\r\n            pathProto.strokeContainThreshold = 5;\r\n            pathProto.segmentIgnoreThreshold = 0;\r\n            pathProto.subPixelOptimize = false;\r\n            pathProto.autoBatch = false;\r\n            pathProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT | Path.SHAPE_CHANGED_BIT;\r\n        })();\r\n        return Path;\r\n    }(Displayable));\n\n    var CMD$2 = PathProxy.CMD;\r\n    var points = [[], [], []];\r\n    var mathSqrt$2 = Math.sqrt;\r\n    var mathAtan2 = Math.atan2;\r\n    function transformPath(path, m) {\r\n        var data = path.data;\r\n        var len = path.len();\r\n        var cmd;\r\n        var nPoint;\r\n        var i;\r\n        var j;\r\n        var k;\r\n        var p;\r\n        var M = CMD$2.M;\r\n        var C = CMD$2.C;\r\n        var L = CMD$2.L;\r\n        var R = CMD$2.R;\r\n        var A = CMD$2.A;\r\n        var Q = CMD$2.Q;\r\n        for (i = 0, j = 0; i < len;) {\r\n            cmd = data[i++];\r\n            j = i;\r\n            nPoint = 0;\r\n            switch (cmd) {\r\n                case M:\r\n                    nPoint = 1;\r\n                    break;\r\n                case L:\r\n                    nPoint = 1;\r\n                    break;\r\n                case C:\r\n                    nPoint = 3;\r\n                    break;\r\n                case Q:\r\n                    nPoint = 2;\r\n                    break;\r\n                case A:\r\n                    var x = m[4];\r\n                    var y = m[5];\r\n                    var sx = mathSqrt$2(m[0] * m[0] + m[1] * m[1]);\r\n                    var sy = mathSqrt$2(m[2] * m[2] + m[3] * m[3]);\r\n                    var angle = mathAtan2(-m[1] / sy, m[0] / sx);\r\n                    data[i] *= sx;\r\n                    data[i++] += x;\r\n                    data[i] *= sy;\r\n                    data[i++] += y;\r\n                    data[i++] *= sx;\r\n                    data[i++] *= sy;\r\n                    data[i++] += angle;\r\n                    data[i++] += angle;\r\n                    i += 2;\r\n                    j = i;\r\n                    break;\r\n                case R:\r\n                    p[0] = data[i++];\r\n                    p[1] = data[i++];\r\n                    applyTransform(p, p, m);\r\n                    data[j++] = p[0];\r\n                    data[j++] = p[1];\r\n                    p[0] += data[i++];\r\n                    p[1] += data[i++];\r\n                    applyTransform(p, p, m);\r\n                    data[j++] = p[0];\r\n                    data[j++] = p[1];\r\n            }\r\n            for (k = 0; k < nPoint; k++) {\r\n                var p_1 = points[k];\r\n                p_1[0] = data[i++];\r\n                p_1[1] = data[i++];\r\n                applyTransform(p_1, p_1, m);\r\n                data[j++] = p_1[0];\r\n                data[j++] = p_1[1];\r\n            }\r\n        }\r\n        path.increaseVersion();\r\n    }\n\n    var mathSqrt$3 = Math.sqrt;\r\n    var mathSin$2 = Math.sin;\r\n    var mathCos$2 = Math.cos;\r\n    var PI$1 = Math.PI;\r\n    function vMag(v) {\r\n        return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\r\n    }\r\n    function vRatio(u, v) {\r\n        return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\r\n    }\r\n    function vAngle(u, v) {\r\n        return (u[0] * v[1] < u[1] * v[0] ? -1 : 1)\r\n            * Math.acos(vRatio(u, v));\r\n    }\r\n    function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\r\n        var psi = psiDeg * (PI$1 / 180.0);\r\n        var xp = mathCos$2(psi) * (x1 - x2) / 2.0\r\n            + mathSin$2(psi) * (y1 - y2) / 2.0;\r\n        var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2.0\r\n            + mathCos$2(psi) * (y1 - y2) / 2.0;\r\n        var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\r\n        if (lambda > 1) {\r\n            rx *= mathSqrt$3(lambda);\r\n            ry *= mathSqrt$3(lambda);\r\n        }\r\n        var f = (fa === fs ? -1 : 1)\r\n            * mathSqrt$3((((rx * rx) * (ry * ry))\r\n                - ((rx * rx) * (yp * yp))\r\n                - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp)\r\n                + (ry * ry) * (xp * xp))) || 0;\r\n        var cxp = f * rx * yp / ry;\r\n        var cyp = f * -ry * xp / rx;\r\n        var cx = (x1 + x2) / 2.0\r\n            + mathCos$2(psi) * cxp\r\n            - mathSin$2(psi) * cyp;\r\n        var cy = (y1 + y2) / 2.0\r\n            + mathSin$2(psi) * cxp\r\n            + mathCos$2(psi) * cyp;\r\n        var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\r\n        var u = [(xp - cxp) / rx, (yp - cyp) / ry];\r\n        var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\r\n        var dTheta = vAngle(u, v);\r\n        if (vRatio(u, v) <= -1) {\r\n            dTheta = PI$1;\r\n        }\r\n        if (vRatio(u, v) >= 1) {\r\n            dTheta = 0;\r\n        }\r\n        if (dTheta < 0) {\r\n            var n = Math.round(dTheta / PI$1 * 1e6) / 1e6;\r\n            dTheta = PI$1 * 2 + (n % 2) * PI$1;\r\n        }\r\n        path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\r\n    }\r\n    var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\r\n    var numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\r\n    function createPathProxyFromString(data) {\r\n        if (!data) {\r\n            return new PathProxy();\r\n        }\r\n        var cpx = 0;\r\n        var cpy = 0;\r\n        var subpathX = cpx;\r\n        var subpathY = cpy;\r\n        var prevCmd;\r\n        var path = new PathProxy();\r\n        var CMD = PathProxy.CMD;\r\n        var cmdList = data.match(commandReg);\r\n        for (var l = 0; l < cmdList.length; l++) {\r\n            var cmdText = cmdList[l];\r\n            var cmdStr = cmdText.charAt(0);\r\n            var cmd = void 0;\r\n            var p = cmdText.match(numberReg) || [];\r\n            var pLen = p.length;\r\n            for (var i = 0; i < pLen; i++) {\r\n                p[i] = parseFloat(p[i]);\r\n            }\r\n            var off = 0;\r\n            while (off < pLen) {\r\n                var ctlPtx = void 0;\r\n                var ctlPty = void 0;\r\n                var rx = void 0;\r\n                var ry = void 0;\r\n                var psi = void 0;\r\n                var fa = void 0;\r\n                var fs = void 0;\r\n                var x1 = cpx;\r\n                var y1 = cpy;\r\n                var len = void 0;\r\n                var pathData = void 0;\r\n                switch (cmdStr) {\r\n                    case 'l':\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'L':\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'm':\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.M;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        subpathX = cpx;\r\n                        subpathY = cpy;\r\n                        cmdStr = 'l';\r\n                        break;\r\n                    case 'M':\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.M;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        subpathX = cpx;\r\n                        subpathY = cpy;\r\n                        cmdStr = 'L';\r\n                        break;\r\n                    case 'h':\r\n                        cpx += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'H':\r\n                        cpx = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'v':\r\n                        cpy += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'V':\r\n                        cpy = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'C':\r\n                        cmd = CMD.C;\r\n                        path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\r\n                        cpx = p[off - 2];\r\n                        cpy = p[off - 1];\r\n                        break;\r\n                    case 'c':\r\n                        cmd = CMD.C;\r\n                        path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\r\n                        cpx += p[off - 2];\r\n                        cpy += p[off - 1];\r\n                        break;\r\n                    case 'S':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.C) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cmd = CMD.C;\r\n                        x1 = p[off++];\r\n                        y1 = p[off++];\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 's':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.C) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cmd = CMD.C;\r\n                        x1 = cpx + p[off++];\r\n                        y1 = cpy + p[off++];\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'Q':\r\n                        x1 = p[off++];\r\n                        y1 = p[off++];\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'q':\r\n                        x1 = p[off++] + cpx;\r\n                        y1 = p[off++] + cpy;\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'T':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.Q) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n                        break;\r\n                    case 't':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.Q) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n                        break;\r\n                    case 'A':\r\n                        rx = p[off++];\r\n                        ry = p[off++];\r\n                        psi = p[off++];\r\n                        fa = p[off++];\r\n                        fs = p[off++];\r\n                        x1 = cpx, y1 = cpy;\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.A;\r\n                        processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n                        break;\r\n                    case 'a':\r\n                        rx = p[off++];\r\n                        ry = p[off++];\r\n                        psi = p[off++];\r\n                        fa = p[off++];\r\n                        fs = p[off++];\r\n                        x1 = cpx, y1 = cpy;\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.A;\r\n                        processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n                        break;\r\n                }\r\n            }\r\n            if (cmdStr === 'z' || cmdStr === 'Z') {\r\n                cmd = CMD.Z;\r\n                path.addData(cmd);\r\n                cpx = subpathX;\r\n                cpy = subpathY;\r\n            }\r\n            prevCmd = cmd;\r\n        }\r\n        path.toStatic();\r\n        return path;\r\n    }\r\n    var SVGPath = (function (_super) {\r\n        __extends(SVGPath, _super);\r\n        function SVGPath() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        SVGPath.prototype.applyTransform = function (m) { };\r\n        return SVGPath;\r\n    }(Path));\r\n    function isPathProxy(path) {\r\n        return path.setData != null;\r\n    }\r\n    function createPathOptions(str, opts) {\r\n        var pathProxy = createPathProxyFromString(str);\r\n        var innerOpts = extend({}, opts);\r\n        innerOpts.buildPath = function (path) {\r\n            if (isPathProxy(path)) {\r\n                path.setData(pathProxy.data);\r\n                var ctx = path.getContext();\r\n                if (ctx) {\r\n                    path.rebuildPath(ctx, 1);\r\n                }\r\n            }\r\n            else {\r\n                var ctx = path;\r\n                pathProxy.rebuildPath(ctx, 1);\r\n            }\r\n        };\r\n        innerOpts.applyTransform = function (m) {\r\n            transformPath(pathProxy, m);\r\n            this.dirtyShape();\r\n        };\r\n        return innerOpts;\r\n    }\r\n    function createFromString(str, opts) {\r\n        return new SVGPath(createPathOptions(str, opts));\r\n    }\r\n    function extendFromString(str, defaultOpts) {\r\n        var innerOpts = createPathOptions(str, defaultOpts);\r\n        var Sub = (function (_super) {\r\n            __extends(Sub, _super);\r\n            function Sub(opts) {\r\n                var _this = _super.call(this, opts) || this;\r\n                _this.applyTransform = innerOpts.applyTransform;\r\n                _this.buildPath = innerOpts.buildPath;\r\n                return _this;\r\n            }\r\n            return Sub;\r\n        }(SVGPath));\r\n        return Sub;\r\n    }\r\n    function mergePath(pathEls, opts) {\r\n        var pathList = [];\r\n        var len = pathEls.length;\r\n        for (var i = 0; i < len; i++) {\r\n            var pathEl = pathEls[i];\r\n            if (!pathEl.path) {\r\n                pathEl.createPathProxy();\r\n            }\r\n            if (pathEl.shapeChanged()) {\r\n                pathEl.buildPath(pathEl.path, pathEl.shape, true);\r\n            }\r\n            pathList.push(pathEl.path);\r\n        }\r\n        var pathBundle = new Path(opts);\r\n        pathBundle.createPathProxy();\r\n        pathBundle.buildPath = function (path) {\r\n            if (isPathProxy(path)) {\r\n                path.appendPath(pathList);\r\n                var ctx = path.getContext();\r\n                if (ctx) {\r\n                    path.rebuildPath(ctx, 1);\r\n                }\r\n            }\r\n        };\r\n        return pathBundle;\r\n    }\n\n    var Group = (function (_super) {\r\n        __extends(Group, _super);\r\n        function Group(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.isGroup = true;\r\n            _this._children = [];\r\n            _this.attr(opts);\r\n            return _this;\r\n        }\r\n        Group.prototype.childrenRef = function () {\r\n            return this._children;\r\n        };\r\n        Group.prototype.children = function () {\r\n            return this._children.slice();\r\n        };\r\n        Group.prototype.childAt = function (idx) {\r\n            return this._children[idx];\r\n        };\r\n        Group.prototype.childOfName = function (name) {\r\n            var children = this._children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                if (children[i].name === name) {\r\n                    return children[i];\r\n                }\r\n            }\r\n        };\r\n        Group.prototype.childCount = function () {\r\n            return this._children.length;\r\n        };\r\n        Group.prototype.add = function (child) {\r\n            if (child) {\r\n                if (child !== this && child.parent !== this) {\r\n                    this._children.push(child);\r\n                    this._doAdd(child);\r\n                }\r\n                if (child.__hostTarget) {\r\n                    throw 'This elemenet has been used as an attachment';\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.addBefore = function (child, nextSibling) {\r\n            if (child && child !== this && child.parent !== this\r\n                && nextSibling && nextSibling.parent === this) {\r\n                var children = this._children;\r\n                var idx = children.indexOf(nextSibling);\r\n                if (idx >= 0) {\r\n                    children.splice(idx, 0, child);\r\n                    this._doAdd(child);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.replaceAt = function (child, index) {\r\n            var children = this._children;\r\n            var old = children[index];\r\n            if (child && child !== this && child.parent !== this && child !== old) {\r\n                children[index] = child;\r\n                old.parent = null;\r\n                var zr = this.__zr;\r\n                if (zr) {\r\n                    old.removeSelfFromZr(zr);\r\n                }\r\n                this._doAdd(child);\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype._doAdd = function (child) {\r\n            if (child.parent) {\r\n                child.parent.remove(child);\r\n            }\r\n            child.parent = this;\r\n            var zr = this.__zr;\r\n            if (zr && zr !== child.__zr) {\r\n                child.addSelfToZr(zr);\r\n            }\r\n            zr && zr.refresh();\r\n        };\r\n        Group.prototype.remove = function (child) {\r\n            var zr = this.__zr;\r\n            var children = this._children;\r\n            var idx = indexOf(children, child);\r\n            if (idx < 0) {\r\n                return this;\r\n            }\r\n            children.splice(idx, 1);\r\n            child.parent = null;\r\n            if (zr) {\r\n                child.removeSelfFromZr(zr);\r\n            }\r\n            zr && zr.refresh();\r\n            return this;\r\n        };\r\n        Group.prototype.removeAll = function () {\r\n            var children = this._children;\r\n            var zr = this.__zr;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (zr) {\r\n                    child.removeSelfFromZr(zr);\r\n                }\r\n                child.parent = null;\r\n            }\r\n            children.length = 0;\r\n            return this;\r\n        };\r\n        Group.prototype.eachChild = function (cb, context) {\r\n            var children = this._children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                cb.call(context, child, i);\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.traverse = function (cb, context) {\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                var stopped = cb.call(context, child);\r\n                if (child.isGroup && !stopped) {\r\n                    child.traverse(cb, context);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.addSelfToZr = function (zr) {\r\n            _super.prototype.addSelfToZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.addSelfToZr(zr);\r\n            }\r\n        };\r\n        Group.prototype.removeSelfFromZr = function (zr) {\r\n            _super.prototype.removeSelfFromZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.removeSelfFromZr(zr);\r\n            }\r\n        };\r\n        Group.prototype.getBoundingRect = function (includeChildren) {\r\n            var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n            var children = includeChildren || this._children;\r\n            var tmpMat = [];\r\n            var rect = null;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (child.ignore || child.invisible) {\r\n                    continue;\r\n                }\r\n                var childRect = child.getBoundingRect();\r\n                var transform = child.getLocalTransform(tmpMat);\r\n                if (transform) {\r\n                    BoundingRect.applyTransform(tmpRect, childRect, transform);\r\n                    rect = rect || tmpRect.clone();\r\n                    rect.union(tmpRect);\r\n                }\r\n                else {\r\n                    rect = rect || childRect.clone();\r\n                    rect.union(childRect);\r\n                }\r\n            }\r\n            return rect || tmpRect;\r\n        };\r\n        return Group;\r\n    }(Element));\r\n    Group.prototype.type = 'group';\n\n    var DEFAULT_IMAGE_STYLE = defaults({\r\n        x: 0,\r\n        y: 0\r\n    }, DEFAULT_COMMON_STYLE);\r\n    var DEFAULT_IMAGE_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            x: true,\r\n            y: true,\r\n            width: true,\r\n            height: true,\r\n            sx: true,\r\n            sy: true,\r\n            sWidth: true,\r\n            sHeight: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    function isImageLike(source) {\r\n        return !!(source\r\n            && typeof source !== 'string'\r\n            && source.width && source.height);\r\n    }\r\n    var ZRImage = (function (_super) {\r\n        __extends(ZRImage, _super);\r\n        function ZRImage() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        ZRImage.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_IMAGE_STYLE, obj);\r\n        };\r\n        ZRImage.prototype._getSize = function (dim) {\r\n            var style = this.style;\r\n            var size = style[dim];\r\n            if (size != null) {\r\n                return size;\r\n            }\r\n            var imageSource = isImageLike(style.image)\r\n                ? style.image : this.__image;\r\n            if (!imageSource) {\r\n                return 0;\r\n            }\r\n            var otherDim = dim === 'width' ? 'height' : 'width';\r\n            var otherDimSize = style[otherDim];\r\n            if (otherDimSize == null) {\r\n                return imageSource[dim];\r\n            }\r\n            else {\r\n                return imageSource[dim] / imageSource[otherDim] * otherDimSize;\r\n            }\r\n        };\r\n        ZRImage.prototype.getWidth = function () {\r\n            return this._getSize('width');\r\n        };\r\n        ZRImage.prototype.getHeight = function () {\r\n            return this._getSize('height');\r\n        };\r\n        ZRImage.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_IMAGE_ANIMATION_PROPS;\r\n        };\r\n        ZRImage.prototype.getBoundingRect = function () {\r\n            var style = this.style;\r\n            if (!this._rect) {\r\n                this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\r\n            }\r\n            return this._rect;\r\n        };\r\n        return ZRImage;\r\n    }(Displayable));\r\n    ZRImage.prototype.type = 'image';\n\n    var CircleShape = (function () {\r\n        function CircleShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n        }\r\n        return CircleShape;\r\n    }());\r\n    var Circle = (function (_super) {\r\n        __extends(Circle, _super);\r\n        function Circle(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Circle.prototype.getDefaultShape = function () {\r\n            return new CircleShape();\r\n        };\r\n        Circle.prototype.buildPath = function (ctx, shape, inBundle) {\r\n            if (inBundle) {\r\n                ctx.moveTo(shape.cx + shape.r, shape.cy);\r\n            }\r\n            ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\r\n        };\r\n        return Circle;\r\n    }(Path));\r\n    Circle.prototype.type = 'circle';\n\n    function buildPath(ctx, shape) {\r\n        var x = shape.x;\r\n        var y = shape.y;\r\n        var width = shape.width;\r\n        var height = shape.height;\r\n        var r = shape.r;\r\n        var r1;\r\n        var r2;\r\n        var r3;\r\n        var r4;\r\n        if (width < 0) {\r\n            x = x + width;\r\n            width = -width;\r\n        }\r\n        if (height < 0) {\r\n            y = y + height;\r\n            height = -height;\r\n        }\r\n        if (typeof r === 'number') {\r\n            r1 = r2 = r3 = r4 = r;\r\n        }\r\n        else if (r instanceof Array) {\r\n            if (r.length === 1) {\r\n                r1 = r2 = r3 = r4 = r[0];\r\n            }\r\n            else if (r.length === 2) {\r\n                r1 = r3 = r[0];\r\n                r2 = r4 = r[1];\r\n            }\r\n            else if (r.length === 3) {\r\n                r1 = r[0];\r\n                r2 = r4 = r[1];\r\n                r3 = r[2];\r\n            }\r\n            else {\r\n                r1 = r[0];\r\n                r2 = r[1];\r\n                r3 = r[2];\r\n                r4 = r[3];\r\n            }\r\n        }\r\n        else {\r\n            r1 = r2 = r3 = r4 = 0;\r\n        }\r\n        var total;\r\n        if (r1 + r2 > width) {\r\n            total = r1 + r2;\r\n            r1 *= width / total;\r\n            r2 *= width / total;\r\n        }\r\n        if (r3 + r4 > width) {\r\n            total = r3 + r4;\r\n            r3 *= width / total;\r\n            r4 *= width / total;\r\n        }\r\n        if (r2 + r3 > height) {\r\n            total = r2 + r3;\r\n            r2 *= height / total;\r\n            r3 *= height / total;\r\n        }\r\n        if (r1 + r4 > height) {\r\n            total = r1 + r4;\r\n            r1 *= height / total;\r\n            r4 *= height / total;\r\n        }\r\n        ctx.moveTo(x + r1, y);\r\n        ctx.lineTo(x + width - r2, y);\r\n        r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\r\n        ctx.lineTo(x + width, y + height - r3);\r\n        r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\r\n        ctx.lineTo(x + r4, y + height);\r\n        r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\r\n        ctx.lineTo(x, y + r1);\r\n        r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\r\n    }\n\n    var round = Math.round;\r\n    function subPixelOptimizeLine(outputShape, inputShape, style) {\r\n        if (!inputShape) {\r\n            return;\r\n        }\r\n        var x1 = inputShape.x1;\r\n        var x2 = inputShape.x2;\r\n        var y1 = inputShape.y1;\r\n        var y2 = inputShape.y2;\r\n        outputShape.x1 = x1;\r\n        outputShape.x2 = x2;\r\n        outputShape.y1 = y1;\r\n        outputShape.y2 = y2;\r\n        var lineWidth = style && style.lineWidth;\r\n        if (!lineWidth) {\r\n            return outputShape;\r\n        }\r\n        if (round(x1 * 2) === round(x2 * 2)) {\r\n            outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\r\n        }\r\n        if (round(y1 * 2) === round(y2 * 2)) {\r\n            outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\r\n        }\r\n        return outputShape;\r\n    }\r\n    function subPixelOptimizeRect(outputShape, inputShape, style) {\r\n        if (!inputShape) {\r\n            return;\r\n        }\r\n        var originX = inputShape.x;\r\n        var originY = inputShape.y;\r\n        var originWidth = inputShape.width;\r\n        var originHeight = inputShape.height;\r\n        outputShape.x = originX;\r\n        outputShape.y = originY;\r\n        outputShape.width = originWidth;\r\n        outputShape.height = originHeight;\r\n        var lineWidth = style && style.lineWidth;\r\n        if (!lineWidth) {\r\n            return outputShape;\r\n        }\r\n        outputShape.x = subPixelOptimize(originX, lineWidth, true);\r\n        outputShape.y = subPixelOptimize(originY, lineWidth, true);\r\n        outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\r\n        outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\r\n        return outputShape;\r\n    }\r\n    function subPixelOptimize(position, lineWidth, positiveOrNegative) {\r\n        if (!lineWidth) {\r\n            return position;\r\n        }\r\n        var doubledPosition = round(position * 2);\r\n        return (doubledPosition + round(lineWidth)) % 2 === 0\r\n            ? doubledPosition / 2\r\n            : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\r\n    }\n\n    var RectShape = (function () {\r\n        function RectShape() {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return RectShape;\r\n    }());\r\n    var subPixelOptimizeOutputShape = {};\r\n    var Rect = (function (_super) {\r\n        __extends(Rect, _super);\r\n        function Rect(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Rect.prototype.getDefaultShape = function () {\r\n            return new RectShape();\r\n        };\r\n        Rect.prototype.buildPath = function (ctx, shape) {\r\n            var x;\r\n            var y;\r\n            var width;\r\n            var height;\r\n            if (this.subPixelOptimize) {\r\n                var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\r\n                x = optimizedShape.x;\r\n                y = optimizedShape.y;\r\n                width = optimizedShape.width;\r\n                height = optimizedShape.height;\r\n                optimizedShape.r = shape.r;\r\n                shape = optimizedShape;\r\n            }\r\n            else {\r\n                x = shape.x;\r\n                y = shape.y;\r\n                width = shape.width;\r\n                height = shape.height;\r\n            }\r\n            if (!shape.r) {\r\n                ctx.rect(x, y, width, height);\r\n            }\r\n            else {\r\n                buildPath(ctx, shape);\r\n            }\r\n        };\r\n        Rect.prototype.isZeroArea = function () {\r\n            return !this.shape.width || !this.shape.height;\r\n        };\r\n        return Rect;\r\n    }(Path));\r\n    Rect.prototype.type = 'rect';\n\n    var EllipseShape = (function () {\r\n        function EllipseShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.rx = 0;\r\n            this.ry = 0;\r\n        }\r\n        return EllipseShape;\r\n    }());\r\n    var Ellipse = (function (_super) {\r\n        __extends(Ellipse, _super);\r\n        function Ellipse(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Ellipse.prototype.getDefaultShape = function () {\r\n            return new EllipseShape();\r\n        };\r\n        Ellipse.prototype.buildPath = function (ctx, shape) {\r\n            var k = 0.5522848;\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.rx;\r\n            var b = shape.ry;\r\n            var ox = a * k;\r\n            var oy = b * k;\r\n            ctx.moveTo(x - a, y);\r\n            ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\r\n            ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\r\n            ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\r\n            ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\r\n            ctx.closePath();\r\n        };\r\n        return Ellipse;\r\n    }(Path));\r\n    Ellipse.prototype.type = 'ellipse';\n\n    var subPixelOptimizeOutputShape$1 = {};\r\n    var LineShape = (function () {\r\n        function LineShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return LineShape;\r\n    }());\r\n    var Line = (function (_super) {\r\n        __extends(Line, _super);\r\n        function Line(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Line.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Line.prototype.getDefaultShape = function () {\r\n            return new LineShape();\r\n        };\r\n        Line.prototype.buildPath = function (ctx, shape) {\r\n            var x1;\r\n            var y1;\r\n            var x2;\r\n            var y2;\r\n            if (this.subPixelOptimize) {\r\n                var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape$1, shape, this.style);\r\n                x1 = optimizedShape.x1;\r\n                y1 = optimizedShape.y1;\r\n                x2 = optimizedShape.x2;\r\n                y2 = optimizedShape.y2;\r\n            }\r\n            else {\r\n                x1 = shape.x1;\r\n                y1 = shape.y1;\r\n                x2 = shape.x2;\r\n                y2 = shape.y2;\r\n            }\r\n            var percent = shape.percent;\r\n            if (percent === 0) {\r\n                return;\r\n            }\r\n            ctx.moveTo(x1, y1);\r\n            if (percent < 1) {\r\n                x2 = x1 * (1 - percent) + x2 * percent;\r\n                y2 = y1 * (1 - percent) + y2 * percent;\r\n            }\r\n            ctx.lineTo(x2, y2);\r\n        };\r\n        Line.prototype.pointAt = function (p) {\r\n            var shape = this.shape;\r\n            return [\r\n                shape.x1 * (1 - p) + shape.x2 * p,\r\n                shape.y1 * (1 - p) + shape.y2 * p\r\n            ];\r\n        };\r\n        return Line;\r\n    }(Path));\r\n    Line.prototype.type = 'line';\n\n    function interpolate(p0, p1, p2, p3, t, t2, t3) {\r\n        var v0 = (p2 - p0) * 0.5;\r\n        var v1 = (p3 - p1) * 0.5;\r\n        return (2 * (p1 - p2) + v0 + v1) * t3\r\n            + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n            + v0 * t + p1;\r\n    }\r\n    function smoothSpline(points, isLoop) {\r\n        var len = points.length;\r\n        var ret = [];\r\n        var distance$1 = 0;\r\n        for (var i = 1; i < len; i++) {\r\n            distance$1 += distance(points[i - 1], points[i]);\r\n        }\r\n        var segs = distance$1 / 2;\r\n        segs = segs < len ? len : segs;\r\n        for (var i = 0; i < segs; i++) {\r\n            var pos = i / (segs - 1) * (isLoop ? len : len - 1);\r\n            var idx = Math.floor(pos);\r\n            var w = pos - idx;\r\n            var p0 = void 0;\r\n            var p1 = points[idx % len];\r\n            var p2 = void 0;\r\n            var p3 = void 0;\r\n            if (!isLoop) {\r\n                p0 = points[idx === 0 ? idx : idx - 1];\r\n                p2 = points[idx > len - 2 ? len - 1 : idx + 1];\r\n                p3 = points[idx > len - 3 ? len - 1 : idx + 2];\r\n            }\r\n            else {\r\n                p0 = points[(idx - 1 + len) % len];\r\n                p2 = points[(idx + 1) % len];\r\n                p3 = points[(idx + 2) % len];\r\n            }\r\n            var w2 = w * w;\r\n            var w3 = w * w2;\r\n            ret.push([\r\n                interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3),\r\n                interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)\r\n            ]);\r\n        }\r\n        return ret;\r\n    }\n\n    function smoothBezier(points, smooth, isLoop, constraint) {\r\n        var cps = [];\r\n        var v = [];\r\n        var v1 = [];\r\n        var v2 = [];\r\n        var prevPoint;\r\n        var nextPoint;\r\n        var min$1;\r\n        var max$1;\r\n        if (constraint) {\r\n            min$1 = [Infinity, Infinity];\r\n            max$1 = [-Infinity, -Infinity];\r\n            for (var i = 0, len = points.length; i < len; i++) {\r\n                min(min$1, min$1, points[i]);\r\n                max(max$1, max$1, points[i]);\r\n            }\r\n            min(min$1, min$1, constraint[0]);\r\n            max(max$1, max$1, constraint[1]);\r\n        }\r\n        for (var i = 0, len = points.length; i < len; i++) {\r\n            var point = points[i];\r\n            if (isLoop) {\r\n                prevPoint = points[i ? i - 1 : len - 1];\r\n                nextPoint = points[(i + 1) % len];\r\n            }\r\n            else {\r\n                if (i === 0 || i === len - 1) {\r\n                    cps.push(clone$1(points[i]));\r\n                    continue;\r\n                }\r\n                else {\r\n                    prevPoint = points[i - 1];\r\n                    nextPoint = points[i + 1];\r\n                }\r\n            }\r\n            sub(v, nextPoint, prevPoint);\r\n            scale(v, v, smooth);\r\n            var d0 = distance(point, prevPoint);\r\n            var d1 = distance(point, nextPoint);\r\n            var sum = d0 + d1;\r\n            if (sum !== 0) {\r\n                d0 /= sum;\r\n                d1 /= sum;\r\n            }\r\n            scale(v1, v, -d0);\r\n            scale(v2, v, d1);\r\n            var cp0 = add([], point, v1);\r\n            var cp1 = add([], point, v2);\r\n            if (constraint) {\r\n                max(cp0, cp0, min$1);\r\n                min(cp0, cp0, max$1);\r\n                max(cp1, cp1, min$1);\r\n                min(cp1, cp1, max$1);\r\n            }\r\n            cps.push(cp0);\r\n            cps.push(cp1);\r\n        }\r\n        if (isLoop) {\r\n            cps.push(cps.shift());\r\n        }\r\n        return cps;\r\n    }\n\n    function buildPath$1(ctx, shape, closePath) {\r\n        var smooth = shape.smooth;\r\n        var points = shape.points;\r\n        if (points && points.length >= 2) {\r\n            if (smooth && smooth !== 'spline') {\r\n                var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\r\n                ctx.moveTo(points[0][0], points[0][1]);\r\n                var len = points.length;\r\n                for (var i = 0; i < (closePath ? len : len - 1); i++) {\r\n                    var cp1 = controlPoints[i * 2];\r\n                    var cp2 = controlPoints[i * 2 + 1];\r\n                    var p = points[(i + 1) % len];\r\n                    ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\r\n                }\r\n            }\r\n            else {\r\n                if (smooth === 'spline') {\r\n                    points = smoothSpline(points, closePath);\r\n                }\r\n                ctx.moveTo(points[0][0], points[0][1]);\r\n                for (var i = 1, l = points.length; i < l; i++) {\r\n                    ctx.lineTo(points[i][0], points[i][1]);\r\n                }\r\n            }\r\n            closePath && ctx.closePath();\r\n        }\r\n    }\n\n    var PolygonShape = (function () {\r\n        function PolygonShape() {\r\n            this.points = null;\r\n            this.smooth = 0;\r\n            this.smoothConstraint = null;\r\n        }\r\n        return PolygonShape;\r\n    }());\r\n    var Polygon = (function (_super) {\r\n        __extends(Polygon, _super);\r\n        function Polygon(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Polygon.prototype.getDefaultShape = function () {\r\n            return new PolygonShape();\r\n        };\r\n        Polygon.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$1(ctx, shape, true);\r\n        };\r\n        return Polygon;\r\n    }(Path));\r\n    Polygon.prototype.type = 'polygon';\n\n    var PolylineShape = (function () {\r\n        function PolylineShape() {\r\n            this.points = null;\r\n            this.percent = 1;\r\n            this.smooth = 0;\r\n            this.smoothConstraint = null;\r\n        }\r\n        return PolylineShape;\r\n    }());\r\n    var Polyline = (function (_super) {\r\n        __extends(Polyline, _super);\r\n        function Polyline(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Polyline.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Polyline.prototype.getDefaultShape = function () {\r\n            return new PolylineShape();\r\n        };\r\n        Polyline.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$1(ctx, shape, false);\r\n        };\r\n        return Polyline;\r\n    }(Path));\r\n    Polyline.prototype.type = 'polyline';\n\n    var Gradient = (function () {\r\n        function Gradient(colorStops) {\r\n            this.colorStops = colorStops || [];\r\n        }\r\n        Gradient.prototype.addColorStop = function (offset, color) {\r\n            this.colorStops.push({\r\n                offset: offset,\r\n                color: color\r\n            });\r\n        };\r\n        return Gradient;\r\n    }());\n\n    var LinearGradient = (function (_super) {\r\n        __extends(LinearGradient, _super);\r\n        function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\r\n            var _this = _super.call(this, colorStops) || this;\r\n            _this.x = x == null ? 0 : x;\r\n            _this.y = y == null ? 0 : y;\r\n            _this.x2 = x2 == null ? 1 : x2;\r\n            _this.y2 = y2 == null ? 0 : y2;\r\n            _this.type = 'linear';\r\n            _this.global = globalCoord || false;\r\n            return _this;\r\n        }\r\n        return LinearGradient;\r\n    }(Gradient));\n\n    var DEFAULT_TSPAN_STYLE = defaults({\r\n        strokeFirst: true,\r\n        font: DEFAULT_FONT,\r\n        x: 0,\r\n        y: 0,\r\n        textAlign: 'left',\r\n        textBaseline: 'top',\r\n        miterLimit: 2\r\n    }, DEFAULT_PATH_STYLE);\r\n    var TSpan = (function (_super) {\r\n        __extends(TSpan, _super);\r\n        function TSpan() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        TSpan.prototype.hasStroke = function () {\r\n            var style = this.style;\r\n            var stroke = style.stroke;\r\n            return stroke != null && stroke !== 'none' && style.lineWidth > 0;\r\n        };\r\n        TSpan.prototype.hasFill = function () {\r\n            var style = this.style;\r\n            var fill = style.fill;\r\n            return fill != null && fill !== 'none';\r\n        };\r\n        TSpan.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_TSPAN_STYLE, obj);\r\n        };\r\n        TSpan.prototype.setBoundingRect = function (rect) {\r\n            this._rect = rect;\r\n        };\r\n        TSpan.prototype.getBoundingRect = function () {\r\n            var style = this.style;\r\n            if (!this._rect) {\r\n                var text = style.text;\r\n                text != null ? (text += '') : (text = '');\r\n                var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\r\n                rect.x += style.x || 0;\r\n                rect.y += style.y || 0;\r\n                if (this.hasStroke()) {\r\n                    var w = style.lineWidth;\r\n                    rect.x -= w / 2;\r\n                    rect.y -= w / 2;\r\n                    rect.width += w;\r\n                    rect.height += w;\r\n                }\r\n                this._rect = rect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        TSpan.initDefaultProps = (function () {\r\n            var tspanProto = TSpan.prototype;\r\n            tspanProto.dirtyRectTolerance = 10;\r\n        })();\r\n        return TSpan;\r\n    }(Displayable));\r\n    TSpan.prototype.type = 'tspan';\n\n    function parseXML(svg) {\r\n        if (isString(svg)) {\r\n            var parser = new DOMParser();\r\n            svg = parser.parseFromString(svg, 'text/xml');\r\n        }\r\n        var svgNode = svg;\r\n        if (svgNode.nodeType === 9) {\r\n            svgNode = svgNode.firstChild;\r\n        }\r\n        while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {\r\n            svgNode = svgNode.nextSibling;\r\n        }\r\n        return svgNode;\r\n    }\n\n    var PI$2 = Math.PI;\r\n    var PI2$5 = PI$2 * 2;\r\n    var mathSin$3 = Math.sin;\r\n    var mathCos$3 = Math.cos;\r\n    var mathACos = Math.acos;\r\n    var mathATan2 = Math.atan2;\r\n    var mathAbs$1 = Math.abs;\r\n    var mathSqrt$4 = Math.sqrt;\r\n    var mathMax$3 = Math.max;\r\n    var mathMin$3 = Math.min;\r\n    var e = 1e-4;\r\n    function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\r\n        var x10 = x1 - x0;\r\n        var y10 = y1 - y0;\r\n        var x32 = x3 - x2;\r\n        var y32 = y3 - y2;\r\n        var t = y32 * x10 - x32 * y10;\r\n        if (t * t < e) {\r\n            return;\r\n        }\r\n        t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\r\n        return [x0 + t * x10, y0 + t * y10];\r\n    }\r\n    function computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {\r\n        var x01 = x0 - x1;\r\n        var y01 = y0 - y1;\r\n        var lo = (clockwise ? cr : -cr) / mathSqrt$4(x01 * x01 + y01 * y01);\r\n        var ox = lo * y01;\r\n        var oy = -lo * x01;\r\n        var x11 = x0 + ox;\r\n        var y11 = y0 + oy;\r\n        var x10 = x1 + ox;\r\n        var y10 = y1 + oy;\r\n        var x00 = (x11 + x10) / 2;\r\n        var y00 = (y11 + y10) / 2;\r\n        var dx = x10 - x11;\r\n        var dy = y10 - y11;\r\n        var d2 = dx * dx + dy * dy;\r\n        var r = radius - cr;\r\n        var s = x11 * y10 - x10 * y11;\r\n        var d = (dy < 0 ? -1 : 1) * mathSqrt$4(mathMax$3(0, r * r * d2 - s * s));\r\n        var cx0 = (s * dy - dx * d) / d2;\r\n        var cy0 = (-s * dx - dy * d) / d2;\r\n        var cx1 = (s * dy + dx * d) / d2;\r\n        var cy1 = (-s * dx + dy * d) / d2;\r\n        var dx0 = cx0 - x00;\r\n        var dy0 = cy0 - y00;\r\n        var dx1 = cx1 - x00;\r\n        var dy1 = cy1 - y00;\r\n        if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\r\n            cx0 = cx1;\r\n            cy0 = cy1;\r\n        }\r\n        return {\r\n            cx: cx0,\r\n            cy: cy0,\r\n            x01: -ox,\r\n            y01: -oy,\r\n            x11: cx0 * (radius / r - 1),\r\n            y11: cy0 * (radius / r - 1)\r\n        };\r\n    }\r\n    function buildPath$2(ctx, shape) {\r\n        var radius = mathMax$3(shape.r, 0);\r\n        var innerRadius = mathMax$3(shape.r0 || 0, 0);\r\n        var hasRadius = radius > 0;\r\n        var hasInnerRadius = innerRadius > 0;\r\n        if (!hasRadius && !hasInnerRadius) {\r\n            return;\r\n        }\r\n        if (!hasRadius) {\r\n            radius = innerRadius;\r\n            innerRadius = 0;\r\n        }\r\n        if (innerRadius > radius) {\r\n            var tmp = radius;\r\n            radius = innerRadius;\r\n            innerRadius = tmp;\r\n        }\r\n        var clockwise = !!shape.clockwise;\r\n        var startAngle = shape.startAngle;\r\n        var endAngle = shape.endAngle;\r\n        var tmpAngles = [startAngle, endAngle];\r\n        normalizeArcAngles(tmpAngles, !clockwise);\r\n        var arc = mathAbs$1(tmpAngles[0] - tmpAngles[1]);\r\n        var x = shape.cx;\r\n        var y = shape.cy;\r\n        var cornerRadius = shape.cornerRadius || 0;\r\n        var innerCornerRadius = shape.innerCornerRadius || 0;\r\n        if (!(radius > e)) {\r\n            ctx.moveTo(x, y);\r\n        }\r\n        else if (arc > PI2$5 - e) {\r\n            ctx.moveTo(x + radius * mathCos$3(startAngle), y + radius * mathSin$3(startAngle));\r\n            ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\r\n            if (innerRadius > e) {\r\n                ctx.moveTo(x + innerRadius * mathCos$3(endAngle), y + innerRadius * mathSin$3(endAngle));\r\n                ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\r\n            }\r\n        }\r\n        else {\r\n            var halfRd = mathAbs$1(radius - innerRadius) / 2;\r\n            var cr = mathMin$3(halfRd, cornerRadius);\r\n            var icr = mathMin$3(halfRd, innerCornerRadius);\r\n            var cr0 = icr;\r\n            var cr1 = cr;\r\n            var xrs = radius * mathCos$3(startAngle);\r\n            var yrs = radius * mathSin$3(startAngle);\r\n            var xire = innerRadius * mathCos$3(endAngle);\r\n            var yire = innerRadius * mathSin$3(endAngle);\r\n            var xre = void 0;\r\n            var yre = void 0;\r\n            var xirs = void 0;\r\n            var yirs = void 0;\r\n            if (cr > e || icr > e) {\r\n                xre = radius * mathCos$3(endAngle);\r\n                yre = radius * mathSin$3(endAngle);\r\n                xirs = innerRadius * mathCos$3(startAngle);\r\n                yirs = innerRadius * mathSin$3(startAngle);\r\n                if (arc < PI$2) {\r\n                    var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);\r\n                    if (it_1) {\r\n                        var x0 = xrs - it_1[0];\r\n                        var y0 = yrs - it_1[1];\r\n                        var x1 = xre - it_1[0];\r\n                        var y1 = yre - it_1[1];\r\n                        var a = 1 / mathSin$3(mathACos((x0 * x1 + y0 * y1) / (mathSqrt$4(x0 * x0 + y0 * y0) * mathSqrt$4(x1 * x1 + y1 * y1))) / 2);\r\n                        var b = mathSqrt$4(it_1[0] * it_1[0] + it_1[1] * it_1[1]);\r\n                        cr0 = mathMin$3(icr, (innerRadius - b) / (a - 1));\r\n                        cr1 = mathMin$3(cr, (radius - b) / (a + 1));\r\n                    }\r\n                }\r\n            }\r\n            if (!(arc > e)) {\r\n                ctx.moveTo(x + xrs, y + yrs);\r\n            }\r\n            else if (cr1 > e) {\r\n                var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, cr1, clockwise);\r\n                var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, cr1, clockwise);\r\n                ctx.moveTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\r\n                if (cr1 < cr) {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n                else {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\r\n                    ctx.arc(x, y, radius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), !clockwise);\r\n                    ctx.arc(x + ct1.cx, y + ct1.cy, cr1, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n            }\r\n            else {\r\n                ctx.moveTo(x + xrs, y + yrs);\r\n                ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\r\n            }\r\n            if (!(innerRadius > e) || !(arc > e)) {\r\n                ctx.lineTo(x + xire, y + yire);\r\n            }\r\n            else if (cr0 > e) {\r\n                var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -cr0, clockwise);\r\n                var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -cr0, clockwise);\r\n                ctx.lineTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\r\n                if (cr0 < icr) {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n                else {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\r\n                    ctx.arc(x, y, innerRadius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), clockwise);\r\n                    ctx.arc(x + ct1.cx, y + ct1.cy, cr0, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n            }\r\n            else {\r\n                ctx.lineTo(x + xire, y + yire);\r\n                ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\r\n            }\r\n        }\r\n        ctx.closePath();\r\n    }\n\n    var SectorShape = (function () {\r\n        function SectorShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r0 = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n            this.cornerRadius = 0;\r\n            this.innerCornerRadius = 0;\r\n        }\r\n        return SectorShape;\r\n    }());\r\n    var Sector = (function (_super) {\r\n        __extends(Sector, _super);\r\n        function Sector(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Sector.prototype.getDefaultShape = function () {\r\n            return new SectorShape();\r\n        };\r\n        Sector.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$2(ctx, shape);\r\n        };\r\n        Sector.prototype.isZeroArea = function () {\r\n            return this.shape.startAngle === this.shape.endAngle\r\n                || this.shape.r === this.shape.r0;\r\n        };\r\n        return Sector;\r\n    }(Path));\r\n    Sector.prototype.type = 'sector';\n\n    var CompoundPath = (function (_super) {\r\n        __extends(CompoundPath, _super);\r\n        function CompoundPath() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'compound';\r\n            return _this;\r\n        }\r\n        CompoundPath.prototype._updatePathDirty = function () {\r\n            var paths = this.shape.paths;\r\n            var dirtyPath = this.shapeChanged();\r\n            for (var i = 0; i < paths.length; i++) {\r\n                dirtyPath = dirtyPath || paths[i].shapeChanged();\r\n            }\r\n            if (dirtyPath) {\r\n                this.dirtyShape();\r\n            }\r\n        };\r\n        CompoundPath.prototype.beforeBrush = function () {\r\n            this._updatePathDirty();\r\n            var paths = this.shape.paths || [];\r\n            var scale = this.getGlobalScale();\r\n            for (var i = 0; i < paths.length; i++) {\r\n                if (!paths[i].path) {\r\n                    paths[i].createPathProxy();\r\n                }\r\n                paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\r\n            }\r\n        };\r\n        CompoundPath.prototype.buildPath = function (ctx, shape) {\r\n            var paths = shape.paths || [];\r\n            for (var i = 0; i < paths.length; i++) {\r\n                paths[i].buildPath(ctx, paths[i].shape, true);\r\n            }\r\n        };\r\n        CompoundPath.prototype.afterBrush = function () {\r\n            var paths = this.shape.paths || [];\r\n            for (var i = 0; i < paths.length; i++) {\r\n                paths[i].pathUpdated();\r\n            }\r\n        };\r\n        CompoundPath.prototype.getBoundingRect = function () {\r\n            this._updatePathDirty.call(this);\r\n            return Path.prototype.getBoundingRect.call(this);\r\n        };\r\n        return CompoundPath;\r\n    }(Path));\n\n    var m = [];\r\n    var IncrementalDisplayble = (function (_super) {\r\n        __extends(IncrementalDisplayble, _super);\r\n        function IncrementalDisplayble() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.notClear = true;\r\n            _this.incremental = true;\r\n            _this._displayables = [];\r\n            _this._temporaryDisplayables = [];\r\n            _this._cursor = 0;\r\n            return _this;\r\n        }\r\n        IncrementalDisplayble.prototype.traverse = function (cb, context) {\r\n            cb.call(context, this);\r\n        };\r\n        IncrementalDisplayble.prototype.useStyle = function () {\r\n            this.style = {};\r\n        };\r\n        IncrementalDisplayble.prototype.getCursor = function () {\r\n            return this._cursor;\r\n        };\r\n        IncrementalDisplayble.prototype.innerAfterBrush = function () {\r\n            this._cursor = this._displayables.length;\r\n        };\r\n        IncrementalDisplayble.prototype.clearDisplaybles = function () {\r\n            this._displayables = [];\r\n            this._temporaryDisplayables = [];\r\n            this._cursor = 0;\r\n            this.markRedraw();\r\n            this.notClear = false;\r\n        };\r\n        IncrementalDisplayble.prototype.clearTemporalDisplayables = function () {\r\n            this._temporaryDisplayables = [];\r\n        };\r\n        IncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\r\n            if (notPersistent) {\r\n                this._temporaryDisplayables.push(displayable);\r\n            }\r\n            else {\r\n                this._displayables.push(displayable);\r\n            }\r\n            this.markRedraw();\r\n        };\r\n        IncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\r\n            notPersistent = notPersistent || false;\r\n            for (var i = 0; i < displayables.length; i++) {\r\n                this.addDisplayable(displayables[i], notPersistent);\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.getDisplayables = function () {\r\n            return this._displayables;\r\n        };\r\n        IncrementalDisplayble.prototype.getTemporalDisplayables = function () {\r\n            return this._temporaryDisplayables;\r\n        };\r\n        IncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\r\n            for (var i = this._cursor; i < this._displayables.length; i++) {\r\n                cb && cb(this._displayables[i]);\r\n            }\r\n            for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n                cb && cb(this._temporaryDisplayables[i]);\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.update = function () {\r\n            this.updateTransform();\r\n            for (var i = this._cursor; i < this._displayables.length; i++) {\r\n                var displayable = this._displayables[i];\r\n                displayable.parent = this;\r\n                displayable.update();\r\n                displayable.parent = null;\r\n            }\r\n            for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n                var displayable = this._temporaryDisplayables[i];\r\n                displayable.parent = this;\r\n                displayable.update();\r\n                displayable.parent = null;\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.getBoundingRect = function () {\r\n            if (!this._rect) {\r\n                var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\r\n                for (var i = 0; i < this._displayables.length; i++) {\r\n                    var displayable = this._displayables[i];\r\n                    var childRect = displayable.getBoundingRect().clone();\r\n                    if (displayable.needLocalTransform()) {\r\n                        childRect.applyTransform(displayable.getLocalTransform(m));\r\n                    }\r\n                    rect.union(childRect);\r\n                }\r\n                this._rect = rect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        IncrementalDisplayble.prototype.contain = function (x, y) {\r\n            var localPos = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            if (rect.contain(localPos[0], localPos[1])) {\r\n                for (var i = 0; i < this._displayables.length; i++) {\r\n                    var displayable = this._displayables[i];\r\n                    if (displayable.contain(x, y)) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        return IncrementalDisplayble;\r\n    }(Displayable));\n\n    var globalImageCache = new LRU(50);\r\n    function findExistImage(newImageOrSrc) {\r\n        if (typeof newImageOrSrc === 'string') {\r\n            var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n            return cachedImgObj && cachedImgObj.image;\r\n        }\r\n        else {\r\n            return newImageOrSrc;\r\n        }\r\n    }\r\n    function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\r\n        if (!newImageOrSrc) {\r\n            return image;\r\n        }\r\n        else if (typeof newImageOrSrc === 'string') {\r\n            if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\r\n                return image;\r\n            }\r\n            var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n            var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\r\n            if (cachedImgObj) {\r\n                image = cachedImgObj.image;\r\n                !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\r\n            }\r\n            else {\r\n                image = new Image();\r\n                image.onload = image.onerror = imageOnLoad;\r\n                globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\r\n                    image: image,\r\n                    pending: [pendingWrap]\r\n                });\r\n                image.src = image.__zrImageSrc = newImageOrSrc;\r\n            }\r\n            return image;\r\n        }\r\n        else {\r\n            return newImageOrSrc;\r\n        }\r\n    }\r\n    function imageOnLoad() {\r\n        var cachedImgObj = this.__cachedImgObj;\r\n        this.onload = this.onerror = this.__cachedImgObj = null;\r\n        for (var i = 0; i < cachedImgObj.pending.length; i++) {\r\n            var pendingWrap = cachedImgObj.pending[i];\r\n            var cb = pendingWrap.cb;\r\n            cb && cb(this, pendingWrap.cbPayload);\r\n            pendingWrap.hostEl.dirty();\r\n        }\r\n        cachedImgObj.pending.length = 0;\r\n    }\r\n    function isImageReady(image) {\r\n        return image && image.width && image.height;\r\n    }\n\n    var STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\r\n    function truncateText(text, containerWidth, font, ellipsis, options) {\r\n        if (!containerWidth) {\r\n            return '';\r\n        }\r\n        var textLines = (text + '').split('\\n');\r\n        options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\r\n        for (var i = 0, len = textLines.length; i < len; i++) {\r\n            textLines[i] = truncateSingleLine(textLines[i], options);\r\n        }\r\n        return textLines.join('\\n');\r\n    }\r\n    function prepareTruncateOptions(containerWidth, font, ellipsis, options) {\r\n        options = options || {};\r\n        var preparedOpts = extend({}, options);\r\n        preparedOpts.font = font;\r\n        ellipsis = retrieve2(ellipsis, '...');\r\n        preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\r\n        var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\r\n        preparedOpts.cnCharWidth = getWidth('国', font);\r\n        var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\r\n        preparedOpts.placeholder = retrieve2(options.placeholder, '');\r\n        var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\r\n        for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\r\n            contentWidth -= ascCharWidth;\r\n        }\r\n        var ellipsisWidth = getWidth(ellipsis, font);\r\n        if (ellipsisWidth > contentWidth) {\r\n            ellipsis = '';\r\n            ellipsisWidth = 0;\r\n        }\r\n        contentWidth = containerWidth - ellipsisWidth;\r\n        preparedOpts.ellipsis = ellipsis;\r\n        preparedOpts.ellipsisWidth = ellipsisWidth;\r\n        preparedOpts.contentWidth = contentWidth;\r\n        preparedOpts.containerWidth = containerWidth;\r\n        return preparedOpts;\r\n    }\r\n    function truncateSingleLine(textLine, options) {\r\n        var containerWidth = options.containerWidth;\r\n        var font = options.font;\r\n        var contentWidth = options.contentWidth;\r\n        if (!containerWidth) {\r\n            return '';\r\n        }\r\n        var lineWidth = getWidth(textLine, font);\r\n        if (lineWidth <= containerWidth) {\r\n            return textLine;\r\n        }\r\n        for (var j = 0;; j++) {\r\n            if (lineWidth <= contentWidth || j >= options.maxIterations) {\r\n                textLine += options.ellipsis;\r\n                break;\r\n            }\r\n            var subLength = j === 0\r\n                ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\r\n                : lineWidth > 0\r\n                    ? Math.floor(textLine.length * contentWidth / lineWidth)\r\n                    : 0;\r\n            textLine = textLine.substr(0, subLength);\r\n            lineWidth = getWidth(textLine, font);\r\n        }\r\n        if (textLine === '') {\r\n            textLine = options.placeholder;\r\n        }\r\n        return textLine;\r\n    }\r\n    function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\r\n        var width = 0;\r\n        var i = 0;\r\n        for (var len = text.length; i < len && width < contentWidth; i++) {\r\n            var charCode = text.charCodeAt(i);\r\n            width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\r\n        }\r\n        return i;\r\n    }\r\n    function parsePlainText(text, style) {\r\n        text != null && (text += '');\r\n        var overflow = style.overflow;\r\n        var padding = style.padding;\r\n        var font = style.font;\r\n        var truncate = overflow === 'truncate';\r\n        var calculatedLineHeight = getLineHeight(font);\r\n        var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\r\n        var truncateLineOverflow = style.lineOverflow === 'truncate';\r\n        var width = style.width;\r\n        var lines;\r\n        if (width != null && overflow === 'break' || overflow === 'breakAll') {\r\n            lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\r\n        }\r\n        else {\r\n            lines = text ? text.split('\\n') : [];\r\n        }\r\n        var contentHeight = lines.length * lineHeight;\r\n        var height = retrieve2(style.height, contentHeight);\r\n        if (contentHeight > height && truncateLineOverflow) {\r\n            var lineCount = Math.floor(height / lineHeight);\r\n            lines = lines.slice(0, lineCount);\r\n        }\r\n        var outerHeight = height;\r\n        var outerWidth = width;\r\n        if (padding) {\r\n            outerHeight += padding[0] + padding[2];\r\n            if (outerWidth != null) {\r\n                outerWidth += padding[1] + padding[3];\r\n            }\r\n        }\r\n        if (text && truncate && outerWidth != null) {\r\n            var options = prepareTruncateOptions(width, font, style.ellipsis, {\r\n                minChar: style.truncateMinChar,\r\n                placeholder: style.placeholder\r\n            });\r\n            for (var i = 0; i < lines.length; i++) {\r\n                lines[i] = truncateSingleLine(lines[i], options);\r\n            }\r\n        }\r\n        if (width == null) {\r\n            var maxWidth = 0;\r\n            for (var i = 0; i < lines.length; i++) {\r\n                maxWidth = Math.max(getWidth(lines[i], font), maxWidth);\r\n            }\r\n            width = maxWidth;\r\n        }\r\n        return {\r\n            lines: lines,\r\n            height: height,\r\n            outerHeight: outerHeight,\r\n            lineHeight: lineHeight,\r\n            calculatedLineHeight: calculatedLineHeight,\r\n            contentHeight: contentHeight,\r\n            width: width\r\n        };\r\n    }\r\n    var RichTextToken = (function () {\r\n        function RichTextToken() {\r\n        }\r\n        return RichTextToken;\r\n    }());\r\n    var RichTextLine = (function () {\r\n        function RichTextLine(tokens) {\r\n            this.tokens = [];\r\n            if (tokens) {\r\n                this.tokens = tokens;\r\n            }\r\n        }\r\n        return RichTextLine;\r\n    }());\r\n    var RichTextContentBlock = (function () {\r\n        function RichTextContentBlock() {\r\n            this.width = 0;\r\n            this.height = 0;\r\n            this.contentWidth = 0;\r\n            this.contentHeight = 0;\r\n            this.outerWidth = 0;\r\n            this.outerHeight = 0;\r\n            this.lines = [];\r\n        }\r\n        return RichTextContentBlock;\r\n    }());\r\n    function parseRichText(text, style) {\r\n        var contentBlock = new RichTextContentBlock();\r\n        text != null && (text += '');\r\n        if (!text) {\r\n            return contentBlock;\r\n        }\r\n        var topWidth = style.width;\r\n        var topHeight = style.height;\r\n        var overflow = style.overflow;\r\n        var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\r\n            ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\r\n            : null;\r\n        var lastIndex = STYLE_REG.lastIndex = 0;\r\n        var result;\r\n        while ((result = STYLE_REG.exec(text)) != null) {\r\n            var matchedIndex = result.index;\r\n            if (matchedIndex > lastIndex) {\r\n                pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\r\n            }\r\n            pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\r\n            lastIndex = STYLE_REG.lastIndex;\r\n        }\r\n        if (lastIndex < text.length) {\r\n            pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\r\n        }\r\n        var pendingList = [];\r\n        var calculatedHeight = 0;\r\n        var calculatedWidth = 0;\r\n        var stlPadding = style.padding;\r\n        var truncate = overflow === 'truncate';\r\n        var truncateLine = style.lineOverflow === 'truncate';\r\n        function finishLine(line, lineWidth, lineHeight) {\r\n            line.width = lineWidth;\r\n            line.lineHeight = lineHeight;\r\n            calculatedHeight += lineHeight;\r\n            calculatedWidth = Math.max(calculatedWidth, lineWidth);\r\n        }\r\n        outer: for (var i = 0; i < contentBlock.lines.length; i++) {\r\n            var line = contentBlock.lines[i];\r\n            var lineHeight = 0;\r\n            var lineWidth = 0;\r\n            for (var j = 0; j < line.tokens.length; j++) {\r\n                var token = line.tokens[j];\r\n                var tokenStyle = token.styleName && style.rich[token.styleName] || {};\r\n                var textPadding = token.textPadding = tokenStyle.padding;\r\n                var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\r\n                var font = token.font = tokenStyle.font || style.font;\r\n                token.contentHeight = getLineHeight(font);\r\n                var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\r\n                token.innerHeight = tokenHeight;\r\n                textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\r\n                token.height = tokenHeight;\r\n                token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\r\n                token.align = tokenStyle && tokenStyle.align || style.align;\r\n                token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\r\n                if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\r\n                    if (j > 0) {\r\n                        line.tokens = line.tokens.slice(0, j);\r\n                        finishLine(line, lineWidth, lineHeight);\r\n                        contentBlock.lines = contentBlock.lines.slice(0, i + 1);\r\n                    }\r\n                    else {\r\n                        contentBlock.lines = contentBlock.lines.slice(0, i);\r\n                    }\r\n                    break outer;\r\n                }\r\n                var styleTokenWidth = tokenStyle.width;\r\n                var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\r\n                if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\r\n                    token.percentWidth = styleTokenWidth;\r\n                    pendingList.push(token);\r\n                    token.contentWidth = getWidth(token.text, font);\r\n                }\r\n                else {\r\n                    if (tokenWidthNotSpecified) {\r\n                        var textBackgroundColor = tokenStyle.backgroundColor;\r\n                        var bgImg = textBackgroundColor && textBackgroundColor.image;\r\n                        if (bgImg) {\r\n                            bgImg = findExistImage(bgImg);\r\n                            if (isImageReady(bgImg)) {\r\n                                token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\r\n                            }\r\n                        }\r\n                    }\r\n                    var remainTruncWidth = truncate && topWidth != null\r\n                        ? topWidth - lineWidth : null;\r\n                    if (remainTruncWidth != null && remainTruncWidth < token.width) {\r\n                        if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\r\n                            token.text = '';\r\n                            token.width = token.contentWidth = 0;\r\n                        }\r\n                        else {\r\n                            token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\r\n                            token.width = token.contentWidth = getWidth(token.text, font);\r\n                        }\r\n                    }\r\n                    else {\r\n                        token.contentWidth = getWidth(token.text, font);\r\n                    }\r\n                }\r\n                token.width += paddingH;\r\n                lineWidth += token.width;\r\n                tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\r\n            }\r\n            finishLine(line, lineWidth, lineHeight);\r\n        }\r\n        contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\r\n        contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\r\n        contentBlock.contentHeight = calculatedHeight;\r\n        contentBlock.contentWidth = calculatedWidth;\r\n        if (stlPadding) {\r\n            contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\r\n            contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\r\n        }\r\n        for (var i = 0; i < pendingList.length; i++) {\r\n            var token = pendingList[i];\r\n            var percentWidth = token.percentWidth;\r\n            token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\r\n        }\r\n        return contentBlock;\r\n    }\r\n    function pushTokens(block, str, style, wrapInfo, styleName) {\r\n        var isEmptyStr = str === '';\r\n        var tokenStyle = styleName && style.rich[styleName] || {};\r\n        var lines = block.lines;\r\n        var font = tokenStyle.font || style.font;\r\n        var newLine = false;\r\n        var strLines;\r\n        var linesWidths;\r\n        if (wrapInfo) {\r\n            var tokenPadding = tokenStyle.padding;\r\n            var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\r\n            if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\r\n                var outerWidth_1 = parsePercent$1(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\r\n                if (lines.length > 0) {\r\n                    if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\r\n                        strLines = str.split('\\n');\r\n                        newLine = true;\r\n                    }\r\n                }\r\n                wrapInfo.accumWidth = outerWidth_1;\r\n            }\r\n            else {\r\n                var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\r\n                wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\r\n                linesWidths = res.linesWidths;\r\n                strLines = res.lines;\r\n            }\r\n        }\r\n        else {\r\n            strLines = str.split('\\n');\r\n        }\r\n        for (var i = 0; i < strLines.length; i++) {\r\n            var text = strLines[i];\r\n            var token = new RichTextToken();\r\n            token.styleName = styleName;\r\n            token.text = text;\r\n            token.isLineHolder = !text && !isEmptyStr;\r\n            if (typeof tokenStyle.width === 'number') {\r\n                token.width = tokenStyle.width;\r\n            }\r\n            else {\r\n                token.width = linesWidths\r\n                    ? linesWidths[i]\r\n                    : getWidth(text, font);\r\n            }\r\n            if (!i && !newLine) {\r\n                var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\r\n                var tokensLen = tokens.length;\r\n                (tokensLen === 1 && tokens[0].isLineHolder)\r\n                    ? (tokens[0] = token)\r\n                    : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\r\n            }\r\n            else {\r\n                lines.push(new RichTextLine([token]));\r\n            }\r\n        }\r\n    }\r\n    function isLatin(ch) {\r\n        var code = ch.charCodeAt(0);\r\n        return code >= 0x21 && code <= 0xFF;\r\n    }\r\n    var breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\r\n        obj[ch] = true;\r\n        return obj;\r\n    }, {});\r\n    function isWordBreakChar(ch) {\r\n        if (isLatin(ch)) {\r\n            if (breakCharMap[ch]) {\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\r\n        var lines = [];\r\n        var linesWidths = [];\r\n        var line = '';\r\n        var currentWord = '';\r\n        var currentWordWidth = 0;\r\n        var accumWidth = 0;\r\n        for (var i = 0; i < text.length; i++) {\r\n            var ch = text.charAt(i);\r\n            if (ch === '\\n') {\r\n                if (currentWord) {\r\n                    line += currentWord;\r\n                    accumWidth += currentWordWidth;\r\n                }\r\n                lines.push(line);\r\n                linesWidths.push(accumWidth);\r\n                line = '';\r\n                currentWord = '';\r\n                currentWordWidth = 0;\r\n                accumWidth = 0;\r\n                continue;\r\n            }\r\n            var chWidth = getWidth(ch, font);\r\n            var inWord = isBreakAll ? false : !isWordBreakChar(ch);\r\n            if (!lines.length\r\n                ? lastAccumWidth + accumWidth + chWidth > lineWidth\r\n                : accumWidth + chWidth > lineWidth) {\r\n                if (!accumWidth) {\r\n                    if (inWord) {\r\n                        lines.push(currentWord);\r\n                        linesWidths.push(currentWordWidth);\r\n                        currentWord = ch;\r\n                        currentWordWidth = chWidth;\r\n                    }\r\n                    else {\r\n                        lines.push(ch);\r\n                        linesWidths.push(chWidth);\r\n                    }\r\n                }\r\n                else if (line || currentWord) {\r\n                    if (inWord) {\r\n                        if (!line) {\r\n                            line = currentWord;\r\n                            currentWord = '';\r\n                            currentWordWidth = 0;\r\n                            accumWidth = currentWordWidth;\r\n                        }\r\n                        lines.push(line);\r\n                        linesWidths.push(accumWidth - currentWordWidth);\r\n                        currentWord += ch;\r\n                        currentWordWidth += chWidth;\r\n                        line = '';\r\n                        accumWidth = currentWordWidth;\r\n                    }\r\n                    else {\r\n                        if (currentWord) {\r\n                            line += currentWord;\r\n                            accumWidth += currentWordWidth;\r\n                            currentWord = '';\r\n                            currentWordWidth = 0;\r\n                        }\r\n                        lines.push(line);\r\n                        linesWidths.push(accumWidth);\r\n                        line = ch;\r\n                        accumWidth = chWidth;\r\n                    }\r\n                }\r\n                continue;\r\n            }\r\n            accumWidth += chWidth;\r\n            if (inWord) {\r\n                currentWord += ch;\r\n                currentWordWidth += chWidth;\r\n            }\r\n            else {\r\n                if (currentWord) {\r\n                    line += currentWord;\r\n                    currentWord = '';\r\n                    currentWordWidth = 0;\r\n                }\r\n                line += ch;\r\n            }\r\n        }\r\n        if (!lines.length && !line) {\r\n            line = text;\r\n            currentWord = '';\r\n            currentWordWidth = 0;\r\n        }\r\n        if (currentWord) {\r\n            line += currentWord;\r\n        }\r\n        if (line) {\r\n            lines.push(line);\r\n            linesWidths.push(accumWidth);\r\n        }\r\n        if (lines.length === 1) {\r\n            accumWidth += lastAccumWidth;\r\n        }\r\n        return {\r\n            accumWidth: accumWidth,\r\n            lines: lines,\r\n            linesWidths: linesWidths\r\n        };\r\n    }\r\n    function parsePercent$1(value, maxValue) {\r\n        if (typeof value === 'string') {\r\n            if (value.lastIndexOf('%') >= 0) {\r\n                return parseFloat(value) / 100 * maxValue;\r\n            }\r\n            return parseFloat(value);\r\n        }\r\n        return value;\r\n    }\n\n    var DEFAULT_RICH_TEXT_COLOR = {\r\n        fill: '#000'\r\n    };\r\n    var DEFAULT_STROKE_LINE_WIDTH = 2;\r\n    var DEFAULT_TEXT_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            fill: true,\r\n            stroke: true,\r\n            fillOpacity: true,\r\n            strokeOpacity: true,\r\n            lineWidth: true,\r\n            fontSize: true,\r\n            lineHeight: true,\r\n            width: true,\r\n            height: true,\r\n            textShadowColor: true,\r\n            textShadowBlur: true,\r\n            textShadowOffsetX: true,\r\n            textShadowOffsetY: true,\r\n            backgroundColor: true,\r\n            padding: true,\r\n            borderColor: true,\r\n            borderWidth: true,\r\n            borderRadius: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var ZRText = (function (_super) {\r\n        __extends(ZRText, _super);\r\n        function ZRText(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = 'text';\r\n            _this._children = [];\r\n            _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\r\n            _this.attr(opts);\r\n            return _this;\r\n        }\r\n        ZRText.prototype.childrenRef = function () {\r\n            return this._children;\r\n        };\r\n        ZRText.prototype.update = function () {\r\n            if (this.styleChanged()) {\r\n                this._updateSubTexts();\r\n            }\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.zlevel = this.zlevel;\r\n                child.z = this.z;\r\n                child.z2 = this.z2;\r\n                child.culling = this.culling;\r\n                child.cursor = this.cursor;\r\n                child.invisible = this.invisible;\r\n            }\r\n            var attachedTransform = this.attachedTransform;\r\n            if (attachedTransform) {\r\n                attachedTransform.updateTransform();\r\n                var m = attachedTransform.transform;\r\n                if (m) {\r\n                    this.transform = this.transform || [];\r\n                    copy$1(this.transform, m);\r\n                }\r\n                else {\r\n                    this.transform = null;\r\n                }\r\n            }\r\n            else {\r\n                _super.prototype.update.call(this);\r\n            }\r\n        };\r\n        ZRText.prototype.getComputedTransform = function () {\r\n            if (this.__hostTarget) {\r\n                this.__hostTarget.getComputedTransform();\r\n                this.__hostTarget.updateInnerText(true);\r\n            }\r\n            return this.attachedTransform ? this.attachedTransform.getComputedTransform()\r\n                : _super.prototype.getComputedTransform.call(this);\r\n        };\r\n        ZRText.prototype._updateSubTexts = function () {\r\n            this._childCursor = 0;\r\n            normalizeTextStyle(this.style);\r\n            this.style.rich\r\n                ? this._updateRichTexts()\r\n                : this._updatePlainTexts();\r\n            this._children.length = this._childCursor;\r\n            this.styleUpdated();\r\n        };\r\n        ZRText.prototype.addSelfToZr = function (zr) {\r\n            _super.prototype.addSelfToZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                this._children[i].__zr = zr;\r\n            }\r\n        };\r\n        ZRText.prototype.removeSelfFromZr = function (zr) {\r\n            _super.prototype.removeSelfFromZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                this._children[i].__zr = null;\r\n            }\r\n        };\r\n        ZRText.prototype.getBoundingRect = function () {\r\n            if (this.styleChanged()) {\r\n                this._updateSubTexts();\r\n            }\r\n            if (!this._rect) {\r\n                var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n                var children = this._children;\r\n                var tmpMat = [];\r\n                var rect = null;\r\n                for (var i = 0; i < children.length; i++) {\r\n                    var child = children[i];\r\n                    var childRect = child.getBoundingRect();\r\n                    var transform = child.getLocalTransform(tmpMat);\r\n                    if (transform) {\r\n                        tmpRect.copy(childRect);\r\n                        tmpRect.applyTransform(transform);\r\n                        rect = rect || tmpRect.clone();\r\n                        rect.union(tmpRect);\r\n                    }\r\n                    else {\r\n                        rect = rect || childRect.clone();\r\n                        rect.union(childRect);\r\n                    }\r\n                }\r\n                this._rect = rect || tmpRect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\r\n            this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\r\n        };\r\n        ZRText.prototype.setTextContent = function (textContent) {\r\n            throw new Error('Can\\'t attach text on another text');\r\n        };\r\n        ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n            if (!sourceStyle) {\r\n                return targetStyle;\r\n            }\r\n            var sourceRich = sourceStyle.rich;\r\n            var targetRich = targetStyle.rich || (sourceRich && {});\r\n            extend(targetStyle, sourceStyle);\r\n            if (sourceRich && targetRich) {\r\n                this._mergeRich(targetRich, sourceRich);\r\n                targetStyle.rich = targetRich;\r\n            }\r\n            else if (targetRich) {\r\n                targetStyle.rich = targetRich;\r\n            }\r\n            return targetStyle;\r\n        };\r\n        ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\r\n            var richNames = keys(sourceRich);\r\n            for (var i = 0; i < richNames.length; i++) {\r\n                var richName = richNames[i];\r\n                targetRich[richName] = targetRich[richName] || {};\r\n                extend(targetRich[richName], sourceRich[richName]);\r\n            }\r\n        };\r\n        ZRText.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_TEXT_ANIMATION_PROPS;\r\n        };\r\n        ZRText.prototype._getOrCreateChild = function (Ctor) {\r\n            var child = this._children[this._childCursor];\r\n            if (!child || !(child instanceof Ctor)) {\r\n                child = new Ctor();\r\n            }\r\n            this._children[this._childCursor++] = child;\r\n            child.__zr = this.__zr;\r\n            child.parent = this;\r\n            return child;\r\n        };\r\n        ZRText.prototype._updatePlainTexts = function () {\r\n            var style = this.style;\r\n            var textFont = style.font || DEFAULT_FONT;\r\n            var textPadding = style.padding;\r\n            var text = getStyleText(style);\r\n            var contentBlock = parsePlainText(text, style);\r\n            var needDrawBg = needDrawBackground(style);\r\n            var bgColorDrawn = !!(style.backgroundColor);\r\n            var outerHeight = contentBlock.outerHeight;\r\n            var textLines = contentBlock.lines;\r\n            var lineHeight = contentBlock.lineHeight;\r\n            var defaultStyle = this._defaultStyle;\r\n            var baseX = style.x || 0;\r\n            var baseY = style.y || 0;\r\n            var textAlign = style.align || defaultStyle.align || 'left';\r\n            var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\r\n            var textX = baseX;\r\n            var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\r\n            if (needDrawBg || textPadding) {\r\n                var outerWidth_1 = contentBlock.width;\r\n                textPadding && (outerWidth_1 += textPadding[1] + textPadding[3]);\r\n                var boxX = adjustTextX(baseX, outerWidth_1, textAlign);\r\n                var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n                needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth_1, outerHeight);\r\n            }\r\n            textY += lineHeight / 2;\r\n            if (textPadding) {\r\n                textX = getTextXForPadding(baseX, textAlign, textPadding);\r\n                if (verticalAlign === 'top') {\r\n                    textY += textPadding[0];\r\n                }\r\n                else if (verticalAlign === 'bottom') {\r\n                    textY -= textPadding[2];\r\n                }\r\n            }\r\n            var defaultLineWidth = 0;\r\n            var useDefaultFill = false;\r\n            var textFill = getFill('fill' in style\r\n                ? style.fill\r\n                : (useDefaultFill = true, defaultStyle.fill));\r\n            var textStroke = getStroke('stroke' in style\r\n                ? style.stroke\r\n                : (!bgColorDrawn\r\n                    && (!defaultStyle.autoStroke || useDefaultFill))\r\n                    ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n                    : null);\r\n            var hasShadow = style.textShadowBlur > 0;\r\n            var fixedBoundingRect = style.width != null\r\n                && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\r\n            var calculatedLineHeight = contentBlock.calculatedLineHeight;\r\n            for (var i = 0; i < textLines.length; i++) {\r\n                var el = this._getOrCreateChild(TSpan);\r\n                var subElStyle = el.createStyle();\r\n                el.useStyle(subElStyle);\r\n                subElStyle.text = textLines[i];\r\n                subElStyle.x = textX;\r\n                subElStyle.y = textY;\r\n                if (textAlign) {\r\n                    subElStyle.textAlign = textAlign;\r\n                }\r\n                subElStyle.textBaseline = 'middle';\r\n                subElStyle.opacity = style.opacity;\r\n                subElStyle.strokeFirst = true;\r\n                if (hasShadow) {\r\n                    subElStyle.shadowBlur = style.textShadowBlur || 0;\r\n                    subElStyle.shadowColor = style.textShadowColor || 'transparent';\r\n                    subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\r\n                    subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\r\n                }\r\n                if (textStroke) {\r\n                    subElStyle.stroke = textStroke;\r\n                    subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\r\n                    subElStyle.lineDash = style.lineDash;\r\n                    subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n                }\r\n                if (textFill) {\r\n                    subElStyle.fill = textFill;\r\n                }\r\n                subElStyle.font = textFont;\r\n                textY += lineHeight;\r\n                if (fixedBoundingRect) {\r\n                    el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), style.width, calculatedLineHeight));\r\n                }\r\n            }\r\n        };\r\n        ZRText.prototype._updateRichTexts = function () {\r\n            var style = this.style;\r\n            var text = getStyleText(style);\r\n            var contentBlock = parseRichText(text, style);\r\n            var contentWidth = contentBlock.width;\r\n            var outerWidth = contentBlock.outerWidth;\r\n            var outerHeight = contentBlock.outerHeight;\r\n            var textPadding = style.padding;\r\n            var baseX = style.x || 0;\r\n            var baseY = style.y || 0;\r\n            var defaultStyle = this._defaultStyle;\r\n            var textAlign = style.align || defaultStyle.align;\r\n            var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\r\n            var boxX = adjustTextX(baseX, outerWidth, textAlign);\r\n            var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n            var xLeft = boxX;\r\n            var lineTop = boxY;\r\n            if (textPadding) {\r\n                xLeft += textPadding[3];\r\n                lineTop += textPadding[0];\r\n            }\r\n            var xRight = xLeft + contentWidth;\r\n            if (needDrawBackground(style)) {\r\n                this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\r\n            }\r\n            var bgColorDrawn = !!(style.backgroundColor);\r\n            for (var i = 0; i < contentBlock.lines.length; i++) {\r\n                var line = contentBlock.lines[i];\r\n                var tokens = line.tokens;\r\n                var tokenCount = tokens.length;\r\n                var lineHeight = line.lineHeight;\r\n                var remainedWidth = line.width;\r\n                var leftIndex = 0;\r\n                var lineXLeft = xLeft;\r\n                var lineXRight = xRight;\r\n                var rightIndex = tokenCount - 1;\r\n                var token = void 0;\r\n                while (leftIndex < tokenCount\r\n                    && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\r\n                    remainedWidth -= token.width;\r\n                    lineXLeft += token.width;\r\n                    leftIndex++;\r\n                }\r\n                while (rightIndex >= 0\r\n                    && (token = tokens[rightIndex], token.align === 'right')) {\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\r\n                    remainedWidth -= token.width;\r\n                    lineXRight -= token.width;\r\n                    rightIndex--;\r\n                }\r\n                lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\r\n                while (leftIndex <= rightIndex) {\r\n                    token = tokens[leftIndex];\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\r\n                    lineXLeft += token.width;\r\n                    leftIndex++;\r\n                }\r\n                lineTop += lineHeight;\r\n            }\r\n        };\r\n        ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\r\n            var tokenStyle = style.rich[token.styleName] || {};\r\n            tokenStyle.text = token.text;\r\n            var verticalAlign = token.verticalAlign;\r\n            var y = lineTop + lineHeight / 2;\r\n            if (verticalAlign === 'top') {\r\n                y = lineTop + token.height / 2;\r\n            }\r\n            else if (verticalAlign === 'bottom') {\r\n                y = lineTop + lineHeight - token.height / 2;\r\n            }\r\n            var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\r\n            needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\r\n                ? x - token.width\r\n                : textAlign === 'center'\r\n                    ? x - token.width / 2\r\n                    : x, y - token.height / 2, token.width, token.height);\r\n            var bgColorDrawn = !!tokenStyle.backgroundColor;\r\n            var textPadding = token.textPadding;\r\n            if (textPadding) {\r\n                x = getTextXForPadding(x, textAlign, textPadding);\r\n                y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\r\n            }\r\n            var el = this._getOrCreateChild(TSpan);\r\n            var subElStyle = el.createStyle();\r\n            el.useStyle(subElStyle);\r\n            var defaultStyle = this._defaultStyle;\r\n            var useDefaultFill = false;\r\n            var defaultLineWidth = 0;\r\n            var textFill = getStroke('fill' in tokenStyle ? tokenStyle.fill\r\n                : 'fill' in style ? style.fill\r\n                    : (useDefaultFill = true, defaultStyle.fill));\r\n            var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\r\n                : 'stroke' in style ? style.stroke\r\n                    : (!bgColorDrawn\r\n                        && !parentBgColorDrawn\r\n                        && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n                        : null);\r\n            var hasShadow = tokenStyle.textShadowBlur > 0\r\n                || style.textShadowBlur > 0;\r\n            subElStyle.text = token.text;\r\n            subElStyle.x = x;\r\n            subElStyle.y = y;\r\n            if (hasShadow) {\r\n                subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\r\n                subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\r\n                subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\r\n                subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\r\n            }\r\n            subElStyle.textAlign = textAlign;\r\n            subElStyle.textBaseline = 'middle';\r\n            subElStyle.font = token.font || DEFAULT_FONT;\r\n            subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\r\n            if (textStroke) {\r\n                subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\r\n                subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\r\n                subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n                subElStyle.stroke = textStroke;\r\n            }\r\n            if (textFill) {\r\n                subElStyle.fill = textFill;\r\n            }\r\n            var textWidth = token.contentWidth;\r\n            var textHeight = token.contentHeight;\r\n            el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\r\n        };\r\n        ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\r\n            var textBackgroundColor = style.backgroundColor;\r\n            var textBorderWidth = style.borderWidth;\r\n            var textBorderColor = style.borderColor;\r\n            var isPlainBg = isString(textBackgroundColor);\r\n            var textBorderRadius = style.borderRadius;\r\n            var self = this;\r\n            var rectEl;\r\n            var imgEl;\r\n            if (isPlainBg || (textBorderWidth && textBorderColor)) {\r\n                rectEl = this._getOrCreateChild(Rect);\r\n                rectEl.useStyle(rectEl.createStyle());\r\n                rectEl.style.fill = null;\r\n                var rectShape = rectEl.shape;\r\n                rectShape.x = x;\r\n                rectShape.y = y;\r\n                rectShape.width = width;\r\n                rectShape.height = height;\r\n                rectShape.r = textBorderRadius;\r\n                rectEl.dirtyShape();\r\n            }\r\n            if (isPlainBg) {\r\n                var rectStyle = rectEl.style;\r\n                rectStyle.fill = textBackgroundColor || null;\r\n                rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\r\n            }\r\n            else if (textBackgroundColor && textBackgroundColor.image) {\r\n                imgEl = this._getOrCreateChild(ZRImage);\r\n                imgEl.onload = function () {\r\n                    self.dirtyStyle();\r\n                };\r\n                var imgStyle = imgEl.style;\r\n                imgStyle.image = textBackgroundColor.image;\r\n                imgStyle.x = x;\r\n                imgStyle.y = y;\r\n                imgStyle.width = width;\r\n                imgStyle.height = height;\r\n            }\r\n            if (textBorderWidth && textBorderColor) {\r\n                var rectStyle = rectEl.style;\r\n                rectStyle.lineWidth = textBorderWidth;\r\n                rectStyle.stroke = textBorderColor;\r\n                rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\r\n                rectStyle.lineDash = style.borderDash;\r\n                rectStyle.lineDashOffset = style.borderDashOffset || 0;\r\n                rectEl.strokeContainThreshold = 0;\r\n                if (rectEl.hasFill() && rectEl.hasStroke()) {\r\n                    rectStyle.strokeFirst = true;\r\n                    rectStyle.lineWidth *= 2;\r\n                }\r\n            }\r\n            var commonStyle = (rectEl || imgEl).style;\r\n            commonStyle.shadowBlur = style.shadowBlur || 0;\r\n            commonStyle.shadowColor = style.shadowColor || 'transparent';\r\n            commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\r\n            commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\r\n            commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\r\n        };\r\n        ZRText.makeFont = function (style) {\r\n            var font = '';\r\n            if (style.fontSize || style.fontFamily || style.fontWeight) {\r\n                var fontSize = '';\r\n                if (typeof style.fontSize === 'string'\r\n                    && (style.fontSize.indexOf('px') !== -1\r\n                        || style.fontSize.indexOf('rem') !== -1\r\n                        || style.fontSize.indexOf('em') !== -1)) {\r\n                    fontSize = style.fontSize;\r\n                }\r\n                else if (!isNaN(+style.fontSize)) {\r\n                    fontSize = style.fontSize + 'px';\r\n                }\r\n                else {\r\n                    fontSize = '12px';\r\n                }\r\n                font = [\r\n                    style.fontStyle,\r\n                    style.fontWeight,\r\n                    fontSize,\r\n                    style.fontFamily || 'sans-serif'\r\n                ].join(' ');\r\n            }\r\n            return font && trim(font) || style.textFont || style.font;\r\n        };\r\n        return ZRText;\r\n    }(Displayable));\r\n    var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\r\n    var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\r\n    function normalizeTextStyle(style) {\r\n        normalizeStyle(style);\r\n        each(style.rich, normalizeStyle);\r\n        return style;\r\n    }\r\n    function normalizeStyle(style) {\r\n        if (style) {\r\n            style.font = ZRText.makeFont(style);\r\n            var textAlign = style.align;\r\n            textAlign === 'middle' && (textAlign = 'center');\r\n            style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\r\n            var verticalAlign = style.verticalAlign;\r\n            verticalAlign === 'center' && (verticalAlign = 'middle');\r\n            style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\r\n            var textPadding = style.padding;\r\n            if (textPadding) {\r\n                style.padding = normalizeCssArray(style.padding);\r\n            }\r\n        }\r\n    }\r\n    function getStroke(stroke, lineWidth) {\r\n        return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\r\n            ? null\r\n            : (stroke.image || stroke.colorStops)\r\n                ? '#000'\r\n                : stroke;\r\n    }\r\n    function getFill(fill) {\r\n        return (fill == null || fill === 'none')\r\n            ? null\r\n            : (fill.image || fill.colorStops)\r\n                ? '#000'\r\n                : fill;\r\n    }\r\n    function getTextXForPadding(x, textAlign, textPadding) {\r\n        return textAlign === 'right'\r\n            ? (x - textPadding[1])\r\n            : textAlign === 'center'\r\n                ? (x + textPadding[3] / 2 - textPadding[1] / 2)\r\n                : (x + textPadding[3]);\r\n    }\r\n    function getStyleText(style) {\r\n        var text = style.text;\r\n        text != null && (text += '');\r\n        return text;\r\n    }\r\n    function needDrawBackground(style) {\r\n        return !!(style.backgroundColor\r\n            || (style.borderWidth && style.borderColor));\r\n    }\n\n    var ArcShape = (function () {\r\n        function ArcShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return ArcShape;\r\n    }());\r\n    var Arc = (function (_super) {\r\n        __extends(Arc, _super);\r\n        function Arc(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Arc.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Arc.prototype.getDefaultShape = function () {\r\n            return new ArcShape();\r\n        };\r\n        Arc.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r = Math.max(shape.r, 0);\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitX = Math.cos(startAngle);\r\n            var unitY = Math.sin(startAngle);\r\n            ctx.moveTo(unitX * r + x, unitY * r + y);\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n        };\r\n        return Arc;\r\n    }(Path));\r\n    Arc.prototype.type = 'arc';\n\n    var out = [];\r\n    var BezierCurveShape = (function () {\r\n        function BezierCurveShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.cpx1 = 0;\r\n            this.cpy1 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return BezierCurveShape;\r\n    }());\r\n    function someVectorAt(shape, t, isTangent) {\r\n        var cpx2 = shape.cpx2;\r\n        var cpy2 = shape.cpy2;\r\n        if (cpx2 === null || cpy2 === null) {\r\n            return [\r\n                (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\r\n                (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\r\n            ];\r\n        }\r\n        else {\r\n            return [\r\n                (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\r\n                (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\r\n            ];\r\n        }\r\n    }\r\n    var BezierCurve = (function (_super) {\r\n        __extends(BezierCurve, _super);\r\n        function BezierCurve(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        BezierCurve.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        BezierCurve.prototype.getDefaultShape = function () {\r\n            return new BezierCurveShape();\r\n        };\r\n        BezierCurve.prototype.buildPath = function (ctx, shape) {\r\n            var x1 = shape.x1;\r\n            var y1 = shape.y1;\r\n            var x2 = shape.x2;\r\n            var y2 = shape.y2;\r\n            var cpx1 = shape.cpx1;\r\n            var cpy1 = shape.cpy1;\r\n            var cpx2 = shape.cpx2;\r\n            var cpy2 = shape.cpy2;\r\n            var percent = shape.percent;\r\n            if (percent === 0) {\r\n                return;\r\n            }\r\n            ctx.moveTo(x1, y1);\r\n            if (cpx2 == null || cpy2 == null) {\r\n                if (percent < 1) {\r\n                    quadraticSubdivide(x1, cpx1, x2, percent, out);\r\n                    cpx1 = out[1];\r\n                    x2 = out[2];\r\n                    quadraticSubdivide(y1, cpy1, y2, percent, out);\r\n                    cpy1 = out[1];\r\n                    y2 = out[2];\r\n                }\r\n                ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\r\n            }\r\n            else {\r\n                if (percent < 1) {\r\n                    cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\r\n                    cpx1 = out[1];\r\n                    cpx2 = out[2];\r\n                    x2 = out[3];\r\n                    cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\r\n                    cpy1 = out[1];\r\n                    cpy2 = out[2];\r\n                    y2 = out[3];\r\n                }\r\n                ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\r\n            }\r\n        };\r\n        BezierCurve.prototype.pointAt = function (t) {\r\n            return someVectorAt(this.shape, t, false);\r\n        };\r\n        BezierCurve.prototype.tangentAt = function (t) {\r\n            var p = someVectorAt(this.shape, t, true);\r\n            return normalize(p, p);\r\n        };\r\n        return BezierCurve;\r\n    }(Path));\r\n    BezierCurve.prototype.type = 'bezier-curve';\n\n    var DropletShape = (function () {\r\n        function DropletShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return DropletShape;\r\n    }());\r\n    var Droplet = (function (_super) {\r\n        __extends(Droplet, _super);\r\n        function Droplet(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Droplet.prototype.getDefaultShape = function () {\r\n            return new DropletShape();\r\n        };\r\n        Droplet.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.width;\r\n            var b = shape.height;\r\n            ctx.moveTo(x, y + a);\r\n            ctx.bezierCurveTo(x + a, y + a, x + a * 3 / 2, y - a / 3, x, y - b);\r\n            ctx.bezierCurveTo(x - a * 3 / 2, y - a / 3, x - a, y + a, x, y + a);\r\n            ctx.closePath();\r\n        };\r\n        return Droplet;\r\n    }(Path));\r\n    Droplet.prototype.type = 'droplet';\n\n    var HeartShape = (function () {\r\n        function HeartShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return HeartShape;\r\n    }());\r\n    var Heart = (function (_super) {\r\n        __extends(Heart, _super);\r\n        function Heart(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Heart.prototype.getDefaultShape = function () {\r\n            return new HeartShape();\r\n        };\r\n        Heart.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.width;\r\n            var b = shape.height;\r\n            ctx.moveTo(x, y);\r\n            ctx.bezierCurveTo(x + a / 2, y - b * 2 / 3, x + a * 2, y + b / 3, x, y + b);\r\n            ctx.bezierCurveTo(x - a * 2, y + b / 3, x - a / 2, y - b * 2 / 3, x, y);\r\n        };\r\n        return Heart;\r\n    }(Path));\r\n    Heart.prototype.type = 'heart';\n\n    var PI$3 = Math.PI;\r\n    var sin = Math.sin;\r\n    var cos = Math.cos;\r\n    var IsogonShape = (function () {\r\n        function IsogonShape() {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            this.r = 0;\r\n            this.n = 0;\r\n        }\r\n        return IsogonShape;\r\n    }());\r\n    var Isogon = (function (_super) {\r\n        __extends(Isogon, _super);\r\n        function Isogon(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Isogon.prototype.getDefaultShape = function () {\r\n            return new IsogonShape();\r\n        };\r\n        Isogon.prototype.buildPath = function (ctx, shape) {\r\n            var n = shape.n;\r\n            if (!n || n < 2) {\r\n                return;\r\n            }\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var r = shape.r;\r\n            var dStep = 2 * PI$3 / n;\r\n            var deg = -PI$3 / 2;\r\n            ctx.moveTo(x + r * cos(deg), y + r * sin(deg));\r\n            for (var i = 0, end = n - 1; i < end; i++) {\r\n                deg += dStep;\r\n                ctx.lineTo(x + r * cos(deg), y + r * sin(deg));\r\n            }\r\n            ctx.closePath();\r\n            return;\r\n        };\r\n        return Isogon;\r\n    }(Path));\r\n    Isogon.prototype.type = 'isogon';\n\n    var RingShape = (function () {\r\n        function RingShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.r0 = 0;\r\n        }\r\n        return RingShape;\r\n    }());\r\n    var Ring = (function (_super) {\r\n        __extends(Ring, _super);\r\n        function Ring(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Ring.prototype.getDefaultShape = function () {\r\n            return new RingShape();\r\n        };\r\n        Ring.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var PI2 = Math.PI * 2;\r\n            ctx.moveTo(x + shape.r, y);\r\n            ctx.arc(x, y, shape.r, 0, PI2, false);\r\n            ctx.moveTo(x + shape.r0, y);\r\n            ctx.arc(x, y, shape.r0, 0, PI2, true);\r\n        };\r\n        return Ring;\r\n    }(Path));\r\n    Ring.prototype.type = 'ring';\n\n    var sin$1 = Math.sin;\r\n    var cos$1 = Math.cos;\r\n    var radian = Math.PI / 180;\r\n    var RoseShape = (function () {\r\n        function RoseShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = [];\r\n            this.k = 0;\r\n            this.n = 1;\r\n        }\r\n        return RoseShape;\r\n    }());\r\n    var Rose = (function (_super) {\r\n        __extends(Rose, _super);\r\n        function Rose(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Rose.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Rose.prototype.getDefaultShape = function () {\r\n            return new RoseShape();\r\n        };\r\n        Rose.prototype.buildPath = function (ctx, shape) {\r\n            var R = shape.r;\r\n            var k = shape.k;\r\n            var n = shape.n;\r\n            var x0 = shape.cx;\r\n            var y0 = shape.cy;\r\n            var x;\r\n            var y;\r\n            var r;\r\n            ctx.moveTo(x0, y0);\r\n            for (var i = 0, len = R.length; i < len; i++) {\r\n                r = R[i];\r\n                for (var j = 0; j <= 360 * n; j++) {\r\n                    x = r\r\n                        * sin$1(k / n * j % 360 * radian)\r\n                        * cos$1(j * radian)\r\n                        + x0;\r\n                    y = r\r\n                        * sin$1(k / n * j % 360 * radian)\r\n                        * sin$1(j * radian)\r\n                        + y0;\r\n                    ctx.lineTo(x, y);\r\n                }\r\n            }\r\n        };\r\n        return Rose;\r\n    }(Path));\r\n    Rose.prototype.type = 'rose';\n\n    var PI$4 = Math.PI;\r\n    var cos$2 = Math.cos;\r\n    var sin$2 = Math.sin;\r\n    var StarShape = (function () {\r\n        function StarShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.n = 3;\r\n            this.r = 0;\r\n        }\r\n        return StarShape;\r\n    }());\r\n    var Star = (function (_super) {\r\n        __extends(Star, _super);\r\n        function Star(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Star.prototype.getDefaultShape = function () {\r\n            return new StarShape();\r\n        };\r\n        Star.prototype.buildPath = function (ctx, shape) {\r\n            var n = shape.n;\r\n            if (!n || n < 2) {\r\n                return;\r\n            }\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r = shape.r;\r\n            var r0 = shape.r0;\r\n            if (r0 == null) {\r\n                r0 = n > 4\r\n                    ? r * cos$2(2 * PI$4 / n) / cos$2(PI$4 / n)\r\n                    : r / 3;\r\n            }\r\n            var dStep = PI$4 / n;\r\n            var deg = -PI$4 / 2;\r\n            var xStart = x + r * cos$2(deg);\r\n            var yStart = y + r * sin$2(deg);\r\n            deg += dStep;\r\n            ctx.moveTo(xStart, yStart);\r\n            for (var i = 0, end = n * 2 - 1, ri = void 0; i < end; i++) {\r\n                ri = i % 2 === 0 ? r0 : r;\r\n                ctx.lineTo(x + ri * cos$2(deg), y + ri * sin$2(deg));\r\n                deg += dStep;\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        return Star;\r\n    }(Path));\r\n    Star.prototype.type = 'star';\n\n    var cos$3 = Math.cos;\r\n    var sin$3 = Math.sin;\r\n    var TrochoidShape = (function () {\r\n        function TrochoidShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.r0 = 0;\r\n            this.d = 0;\r\n            this.location = 'out';\r\n        }\r\n        return TrochoidShape;\r\n    }());\r\n    var Trochoid = (function (_super) {\r\n        __extends(Trochoid, _super);\r\n        function Trochoid(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Trochoid.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Trochoid.prototype.getDefaultShape = function () {\r\n            return new TrochoidShape();\r\n        };\r\n        Trochoid.prototype.buildPath = function (ctx, shape) {\r\n            var R = shape.r;\r\n            var r = shape.r0;\r\n            var d = shape.d;\r\n            var offsetX = shape.cx;\r\n            var offsetY = shape.cy;\r\n            var delta = shape.location === 'out' ? 1 : -1;\r\n            var x1;\r\n            var y1;\r\n            var x2;\r\n            var y2;\r\n            if (shape.location && R <= r) {\r\n                return;\r\n            }\r\n            var num = 0;\r\n            var i = 1;\r\n            var theta;\r\n            x1 = (R + delta * r) * cos$3(0)\r\n                - delta * d * cos$3(0) + offsetX;\r\n            y1 = (R + delta * r) * sin$3(0)\r\n                - d * sin$3(0) + offsetY;\r\n            ctx.moveTo(x1, y1);\r\n            do {\r\n                num++;\r\n            } while ((r * num) % (R + delta * r) !== 0);\r\n            do {\r\n                theta = Math.PI / 180 * i;\r\n                x2 = (R + delta * r) * cos$3(theta)\r\n                    - delta * d * cos$3((R / r + delta) * theta)\r\n                    + offsetX;\r\n                y2 = (R + delta * r) * sin$3(theta)\r\n                    - d * sin$3((R / r + delta) * theta)\r\n                    + offsetY;\r\n                ctx.lineTo(x2, y2);\r\n                i++;\r\n            } while (i <= (r * num) / (R + delta * r) * 360);\r\n        };\r\n        return Trochoid;\r\n    }(Path));\r\n    Trochoid.prototype.type = 'trochoid';\n\n    var RadialGradient = (function (_super) {\r\n        __extends(RadialGradient, _super);\r\n        function RadialGradient(x, y, r, colorStops, globalCoord) {\r\n            var _this = _super.call(this, colorStops) || this;\r\n            _this.x = x == null ? 0.5 : x;\r\n            _this.y = y == null ? 0.5 : y;\r\n            _this.r = r == null ? 0.5 : r;\r\n            _this.type = 'radial';\r\n            _this.global = globalCoord || false;\r\n            return _this;\r\n        }\r\n        return RadialGradient;\r\n    }(Gradient));\n\n    var extent = [0, 0];\r\n    var extent2 = [0, 0];\r\n    var minTv$1 = new Point();\r\n    var maxTv$1 = new Point();\r\n    var OrientedBoundingRect = (function () {\r\n        function OrientedBoundingRect(rect, transform) {\r\n            this._corners = [];\r\n            this._axes = [];\r\n            this._origin = [0, 0];\r\n            for (var i = 0; i < 4; i++) {\r\n                this._corners[i] = new Point();\r\n            }\r\n            for (var i = 0; i < 2; i++) {\r\n                this._axes[i] = new Point();\r\n            }\r\n            if (rect) {\r\n                this.fromBoundingRect(rect, transform);\r\n            }\r\n        }\r\n        OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\r\n            var corners = this._corners;\r\n            var axes = this._axes;\r\n            var x = rect.x;\r\n            var y = rect.y;\r\n            var x2 = x + rect.width;\r\n            var y2 = y + rect.height;\r\n            corners[0].set(x, y);\r\n            corners[1].set(x2, y);\r\n            corners[2].set(x2, y2);\r\n            corners[3].set(x, y2);\r\n            if (transform) {\r\n                for (var i = 0; i < 4; i++) {\r\n                    corners[i].transform(transform);\r\n                }\r\n            }\r\n            Point.sub(axes[0], corners[1], corners[0]);\r\n            Point.sub(axes[1], corners[3], corners[0]);\r\n            axes[0].normalize();\r\n            axes[1].normalize();\r\n            for (var i = 0; i < 2; i++) {\r\n                this._origin[i] = axes[i].dot(corners[0]);\r\n            }\r\n        };\r\n        OrientedBoundingRect.prototype.intersect = function (other, mtv) {\r\n            var overlapped = true;\r\n            var noMtv = !mtv;\r\n            minTv$1.set(Infinity, Infinity);\r\n            maxTv$1.set(0, 0);\r\n            if (!this._intersectCheckOneSide(this, other, minTv$1, maxTv$1, noMtv, 1)) {\r\n                overlapped = false;\r\n                if (noMtv) {\r\n                    return overlapped;\r\n                }\r\n            }\r\n            if (!this._intersectCheckOneSide(other, this, minTv$1, maxTv$1, noMtv, -1)) {\r\n                overlapped = false;\r\n                if (noMtv) {\r\n                    return overlapped;\r\n                }\r\n            }\r\n            if (!noMtv) {\r\n                Point.copy(mtv, overlapped ? minTv$1 : maxTv$1);\r\n            }\r\n            return overlapped;\r\n        };\r\n        OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\r\n            var overlapped = true;\r\n            for (var i = 0; i < 2; i++) {\r\n                var axis = this._axes[i];\r\n                this._getProjMinMaxOnAxis(i, self._corners, extent);\r\n                this._getProjMinMaxOnAxis(i, other._corners, extent2);\r\n                if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\r\n                    overlapped = false;\r\n                    if (noMtv) {\r\n                        return overlapped;\r\n                    }\r\n                    var dist0 = Math.abs(extent2[0] - extent[1]);\r\n                    var dist1 = Math.abs(extent[0] - extent2[1]);\r\n                    if (Math.min(dist0, dist1) > maxTv.len()) {\r\n                        if (dist0 < dist1) {\r\n                            Point.scale(maxTv, axis, -dist0 * inverse);\r\n                        }\r\n                        else {\r\n                            Point.scale(maxTv, axis, dist1 * inverse);\r\n                        }\r\n                    }\r\n                }\r\n                else if (minTv) {\r\n                    var dist0 = Math.abs(extent2[0] - extent[1]);\r\n                    var dist1 = Math.abs(extent[0] - extent2[1]);\r\n                    if (Math.min(dist0, dist1) < minTv.len()) {\r\n                        if (dist0 < dist1) {\r\n                            Point.scale(minTv, axis, dist0 * inverse);\r\n                        }\r\n                        else {\r\n                            Point.scale(minTv, axis, -dist1 * inverse);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return overlapped;\r\n        };\r\n        OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\r\n            var axis = this._axes[dim];\r\n            var origin = this._origin;\r\n            var proj = corners[0].dot(axis) + origin[dim];\r\n            var min = proj;\r\n            var max = proj;\r\n            for (var i = 1; i < corners.length; i++) {\r\n                var proj_1 = corners[i].dot(axis) + origin[dim];\r\n                min = Math.min(proj_1, min);\r\n                max = Math.max(proj_1, max);\r\n            }\r\n            out[0] = min;\r\n            out[1] = max;\r\n        };\r\n        return OrientedBoundingRect;\r\n    }());\n\n    /*!\r\n    * ZRender, a high performance 2d drawing library.\r\n    *\r\n    * Copyright (c) 2013, Baidu Inc.\r\n    * All rights reserved.\r\n    *\r\n    * LICENSE\r\n    * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\r\n    */\r\n    var useVML = !env.canvasSupported;\r\n    var painterCtors = {};\r\n    var instances = {};\r\n    function delInstance(id) {\r\n        delete instances[id];\r\n    }\r\n    function isDarkMode(backgroundColor) {\r\n        if (!backgroundColor) {\r\n            return false;\r\n        }\r\n        if (typeof backgroundColor === 'string') {\r\n            return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\r\n        }\r\n        else if (backgroundColor.colorStops) {\r\n            var colorStops = backgroundColor.colorStops;\r\n            var totalLum = 0;\r\n            var len = colorStops.length;\r\n            for (var i = 0; i < len; i++) {\r\n                totalLum += lum(colorStops[i].color, 1);\r\n            }\r\n            totalLum /= len;\r\n            return totalLum < DARK_MODE_THRESHOLD;\r\n        }\r\n        return false;\r\n    }\r\n    var ZRender = (function () {\r\n        function ZRender(id, dom, opts) {\r\n            var _this = this;\r\n            this._sleepAfterStill = 10;\r\n            this._stillFrameAccum = 0;\r\n            this._needsRefresh = true;\r\n            this._needsRefreshHover = true;\r\n            this._darkMode = false;\r\n            opts = opts || {};\r\n            this.dom = dom;\r\n            this.id = id;\r\n            var storage = new Storage();\r\n            var rendererType = opts.renderer;\r\n            if (useVML) {\r\n                if (!painterCtors.vml) {\r\n                    throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\r\n                }\r\n                rendererType = 'vml';\r\n            }\r\n            else if (!rendererType) {\r\n                rendererType = 'canvas';\r\n            }\r\n            if (!painterCtors[rendererType]) {\r\n                throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\r\n            }\r\n            opts.useDirtyRect = opts.useDirtyRect == null\r\n                ? false\r\n                : opts.useDirtyRect;\r\n            var painter = new painterCtors[rendererType](dom, storage, opts, id);\r\n            this.storage = storage;\r\n            this.painter = painter;\r\n            var handerProxy = (!env.node && !env.worker)\r\n                ? new HandlerDomProxy(painter.getViewportRoot(), painter.root)\r\n                : null;\r\n            this.handler = new Handler(storage, painter, handerProxy, painter.root);\r\n            this.animation = new Animation({\r\n                stage: {\r\n                    update: function () { return _this._flush(true); }\r\n                }\r\n            });\r\n            this.animation.start();\r\n        }\r\n        ZRender.prototype.add = function (el) {\r\n            if (!el) {\r\n                return;\r\n            }\r\n            this.storage.addRoot(el);\r\n            el.addSelfToZr(this);\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.remove = function (el) {\r\n            if (!el) {\r\n                return;\r\n            }\r\n            this.storage.delRoot(el);\r\n            el.removeSelfFromZr(this);\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.configLayer = function (zLevel, config) {\r\n            if (this.painter.configLayer) {\r\n                this.painter.configLayer(zLevel, config);\r\n            }\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.setBackgroundColor = function (backgroundColor) {\r\n            if (this.painter.setBackgroundColor) {\r\n                this.painter.setBackgroundColor(backgroundColor);\r\n            }\r\n            this.refresh();\r\n            this._backgroundColor = backgroundColor;\r\n            this._darkMode = isDarkMode(backgroundColor);\r\n        };\r\n        ZRender.prototype.getBackgroundColor = function () {\r\n            return this._backgroundColor;\r\n        };\r\n        ZRender.prototype.setDarkMode = function (darkMode) {\r\n            this._darkMode = darkMode;\r\n        };\r\n        ZRender.prototype.isDarkMode = function () {\r\n            return this._darkMode;\r\n        };\r\n        ZRender.prototype.refreshImmediately = function (fromInside) {\r\n            if (!fromInside) {\r\n                this.animation.update(true);\r\n            }\r\n            this._needsRefresh = false;\r\n            this.painter.refresh();\r\n            this._needsRefresh = false;\r\n        };\r\n        ZRender.prototype.refresh = function () {\r\n            this._needsRefresh = true;\r\n            this.animation.start();\r\n        };\r\n        ZRender.prototype.flush = function () {\r\n            this._flush(false);\r\n        };\r\n        ZRender.prototype._flush = function (fromInside) {\r\n            var triggerRendered;\r\n            var start = new Date().getTime();\r\n            if (this._needsRefresh) {\r\n                triggerRendered = true;\r\n                this.refreshImmediately(fromInside);\r\n            }\r\n            if (this._needsRefreshHover) {\r\n                triggerRendered = true;\r\n                this.refreshHoverImmediately();\r\n            }\r\n            var end = new Date().getTime();\r\n            if (triggerRendered) {\r\n                this._stillFrameAccum = 0;\r\n                this.trigger('rendered', {\r\n                    elapsedTime: end - start\r\n                });\r\n            }\r\n            else if (this._sleepAfterStill > 0) {\r\n                this._stillFrameAccum++;\r\n                if (this._stillFrameAccum > this._sleepAfterStill) {\r\n                    this.animation.stop();\r\n                }\r\n            }\r\n        };\r\n        ZRender.prototype.setSleepAfterStill = function (stillFramesCount) {\r\n            this._sleepAfterStill = stillFramesCount;\r\n        };\r\n        ZRender.prototype.wakeUp = function () {\r\n            this.animation.start();\r\n            this._stillFrameAccum = 0;\r\n        };\r\n        ZRender.prototype.addHover = function (el) {\r\n        };\r\n        ZRender.prototype.removeHover = function (el) {\r\n        };\r\n        ZRender.prototype.clearHover = function () {\r\n        };\r\n        ZRender.prototype.refreshHover = function () {\r\n            this._needsRefreshHover = true;\r\n        };\r\n        ZRender.prototype.refreshHoverImmediately = function () {\r\n            this._needsRefreshHover = false;\r\n            if (this.painter.refreshHover && this.painter.getType() === 'canvas') {\r\n                this.painter.refreshHover();\r\n            }\r\n        };\r\n        ZRender.prototype.resize = function (opts) {\r\n            opts = opts || {};\r\n            this.painter.resize(opts.width, opts.height);\r\n            this.handler.resize();\r\n        };\r\n        ZRender.prototype.clearAnimation = function () {\r\n            this.animation.clear();\r\n        };\r\n        ZRender.prototype.getWidth = function () {\r\n            return this.painter.getWidth();\r\n        };\r\n        ZRender.prototype.getHeight = function () {\r\n            return this.painter.getHeight();\r\n        };\r\n        ZRender.prototype.pathToImage = function (e, dpr) {\r\n            if (this.painter.pathToImage) {\r\n                return this.painter.pathToImage(e, dpr);\r\n            }\r\n        };\r\n        ZRender.prototype.setCursorStyle = function (cursorStyle) {\r\n            this.handler.setCursorStyle(cursorStyle);\r\n        };\r\n        ZRender.prototype.findHover = function (x, y) {\r\n            return this.handler.findHover(x, y);\r\n        };\r\n        ZRender.prototype.on = function (eventName, eventHandler, context) {\r\n            this.handler.on(eventName, eventHandler, context);\r\n            return this;\r\n        };\r\n        ZRender.prototype.off = function (eventName, eventHandler) {\r\n            this.handler.off(eventName, eventHandler);\r\n        };\r\n        ZRender.prototype.trigger = function (eventName, event) {\r\n            this.handler.trigger(eventName, event);\r\n        };\r\n        ZRender.prototype.clear = function () {\r\n            var roots = this.storage.getRoots();\r\n            for (var i = 0; i < roots.length; i++) {\r\n                if (roots[i] instanceof Group) {\r\n                    roots[i].removeSelfFromZr(this);\r\n                }\r\n            }\r\n            this.storage.delAllRoots();\r\n            this.painter.clear();\r\n        };\r\n        ZRender.prototype.dispose = function () {\r\n            this.animation.stop();\r\n            this.clear();\r\n            this.storage.dispose();\r\n            this.painter.dispose();\r\n            this.handler.dispose();\r\n            this.animation =\r\n                this.storage =\r\n                    this.painter =\r\n                        this.handler = null;\r\n            delInstance(this.id);\r\n        };\r\n        return ZRender;\r\n    }());\r\n    function init(dom, opts) {\r\n        var zr = new ZRender(guid(), dom, opts);\r\n        instances[zr.id] = zr;\r\n        return zr;\r\n    }\r\n    function dispose(zr) {\r\n        zr.dispose();\r\n    }\r\n    function disposeAll() {\r\n        for (var key in instances) {\r\n            if (instances.hasOwnProperty(key)) {\r\n                instances[key].dispose();\r\n            }\r\n        }\r\n        instances = {};\r\n    }\r\n    function getInstance(id) {\r\n        return instances[id];\r\n    }\r\n    function registerPainter(name, Ctor) {\r\n        painterCtors[name] = Ctor;\r\n    }\r\n    var version = '5.0.1';\n\n    var zrender = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        init: init,\n        dispose: dispose,\n        disposeAll: disposeAll,\n        getInstance: getInstance,\n        registerPainter: registerPainter,\n        version: version\n    });\n\n    var RADIAN_EPSILON = 1e-4;\r\n    function _trim(str) {\r\n        return str.replace(/^\\s+|\\s+$/g, '');\r\n    }\r\n    function linearMap(val, domain, range, clamp) {\r\n        var subDomain = domain[1] - domain[0];\r\n        var subRange = range[1] - range[0];\r\n        if (subDomain === 0) {\r\n            return subRange === 0\r\n                ? range[0]\r\n                : (range[0] + range[1]) / 2;\r\n        }\r\n        if (clamp) {\r\n            if (subDomain > 0) {\r\n                if (val <= domain[0]) {\r\n                    return range[0];\r\n                }\r\n                else if (val >= domain[1]) {\r\n                    return range[1];\r\n                }\r\n            }\r\n            else {\r\n                if (val >= domain[0]) {\r\n                    return range[0];\r\n                }\r\n                else if (val <= domain[1]) {\r\n                    return range[1];\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            if (val === domain[0]) {\r\n                return range[0];\r\n            }\r\n            if (val === domain[1]) {\r\n                return range[1];\r\n            }\r\n        }\r\n        return (val - domain[0]) / subDomain * subRange + range[0];\r\n    }\r\n    function parsePercent$2(percent, all) {\r\n        switch (percent) {\r\n            case 'center':\r\n            case 'middle':\r\n                percent = '50%';\r\n                break;\r\n            case 'left':\r\n            case 'top':\r\n                percent = '0%';\r\n                break;\r\n            case 'right':\r\n            case 'bottom':\r\n                percent = '100%';\r\n                break;\r\n        }\r\n        if (typeof percent === 'string') {\r\n            if (_trim(percent).match(/%$/)) {\r\n                return parseFloat(percent) / 100 * all;\r\n            }\r\n            return parseFloat(percent);\r\n        }\r\n        return percent == null ? NaN : +percent;\r\n    }\r\n    function round$1(x, precision, returnStr) {\r\n        if (precision == null) {\r\n            precision = 10;\r\n        }\r\n        precision = Math.min(Math.max(0, precision), 20);\r\n        x = (+x).toFixed(precision);\r\n        return (returnStr ? x : +x);\r\n    }\r\n    function asc(arr) {\r\n        arr.sort(function (a, b) {\r\n            return a - b;\r\n        });\r\n        return arr;\r\n    }\r\n    function getPrecision(val) {\r\n        val = +val;\r\n        if (isNaN(val)) {\r\n            return 0;\r\n        }\r\n        var e = 1;\r\n        var count = 0;\r\n        while (Math.round(val * e) / e !== val) {\r\n            e *= 10;\r\n            count++;\r\n        }\r\n        return count;\r\n    }\r\n    function getPrecisionSafe(val) {\r\n        var str = val.toString();\r\n        var eIndex = str.indexOf('e');\r\n        if (eIndex > 0) {\r\n            var precision = +str.slice(eIndex + 1);\r\n            return precision < 0 ? -precision : 0;\r\n        }\r\n        else {\r\n            var dotIndex = str.indexOf('.');\r\n            return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\r\n        }\r\n    }\r\n    function getPixelPrecision(dataExtent, pixelExtent) {\r\n        var log = Math.log;\r\n        var LN10 = Math.LN10;\r\n        var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\r\n        var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10);\r\n        var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\r\n        return !isFinite(precision) ? 20 : precision;\r\n    }\r\n    function getPercentWithPrecision(valueList, idx, precision) {\r\n        if (!valueList[idx]) {\r\n            return 0;\r\n        }\r\n        var sum = reduce(valueList, function (acc, val) {\r\n            return acc + (isNaN(val) ? 0 : val);\r\n        }, 0);\r\n        if (sum === 0) {\r\n            return 0;\r\n        }\r\n        var digits = Math.pow(10, precision);\r\n        var votesPerQuota = map(valueList, function (val) {\r\n            return (isNaN(val) ? 0 : val) / sum * digits * 100;\r\n        });\r\n        var targetSeats = digits * 100;\r\n        var seats = map(votesPerQuota, function (votes) {\r\n            return Math.floor(votes);\r\n        });\r\n        var currentSum = reduce(seats, function (acc, val) {\r\n            return acc + val;\r\n        }, 0);\r\n        var remainder = map(votesPerQuota, function (votes, idx) {\r\n            return votes - seats[idx];\r\n        });\r\n        while (currentSum < targetSeats) {\r\n            var max = Number.NEGATIVE_INFINITY;\r\n            var maxId = null;\r\n            for (var i = 0, len = remainder.length; i < len; ++i) {\r\n                if (remainder[i] > max) {\r\n                    max = remainder[i];\r\n                    maxId = i;\r\n                }\r\n            }\r\n            ++seats[maxId];\r\n            remainder[maxId] = 0;\r\n            ++currentSum;\r\n        }\r\n        return seats[idx] / digits;\r\n    }\r\n    var MAX_SAFE_INTEGER = 9007199254740991;\r\n    function remRadian(radian) {\r\n        var pi2 = Math.PI * 2;\r\n        return (radian % pi2 + pi2) % pi2;\r\n    }\r\n    function isRadianAroundZero(val) {\r\n        return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\r\n    }\r\n    var TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d{1,2})(?::(\\d{1,2})(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/;\r\n    function parseDate(value) {\r\n        if (value instanceof Date) {\r\n            return value;\r\n        }\r\n        else if (typeof value === 'string') {\r\n            var match = TIME_REG.exec(value);\r\n            if (!match) {\r\n                return new Date(NaN);\r\n            }\r\n            if (!match[8]) {\r\n                return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\r\n            }\r\n            else {\r\n                var hour = +match[4] || 0;\r\n                if (match[8].toUpperCase() !== 'Z') {\r\n                    hour -= +match[8].slice(0, 3);\r\n                }\r\n                return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\r\n            }\r\n        }\r\n        else if (value == null) {\r\n            return new Date(NaN);\r\n        }\r\n        return new Date(Math.round(value));\r\n    }\r\n    function quantity(val) {\r\n        return Math.pow(10, quantityExponent(val));\r\n    }\r\n    function quantityExponent(val) {\r\n        if (val === 0) {\r\n            return 0;\r\n        }\r\n        var exp = Math.floor(Math.log(val) / Math.LN10);\r\n        if (val / Math.pow(10, exp) >= 10) {\r\n            exp++;\r\n        }\r\n        return exp;\r\n    }\r\n    function nice(val, round) {\r\n        var exponent = quantityExponent(val);\r\n        var exp10 = Math.pow(10, exponent);\r\n        var f = val / exp10;\r\n        var nf;\r\n        if (round) {\r\n            if (f < 1.5) {\r\n                nf = 1;\r\n            }\r\n            else if (f < 2.5) {\r\n                nf = 2;\r\n            }\r\n            else if (f < 4) {\r\n                nf = 3;\r\n            }\r\n            else if (f < 7) {\r\n                nf = 5;\r\n            }\r\n            else {\r\n                nf = 10;\r\n            }\r\n        }\r\n        else {\r\n            if (f < 1) {\r\n                nf = 1;\r\n            }\r\n            else if (f < 2) {\r\n                nf = 2;\r\n            }\r\n            else if (f < 3) {\r\n                nf = 3;\r\n            }\r\n            else if (f < 5) {\r\n                nf = 5;\r\n            }\r\n            else {\r\n                nf = 10;\r\n            }\r\n        }\r\n        val = nf * exp10;\r\n        return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\r\n    }\r\n    function quantile(ascArr, p) {\r\n        var H = (ascArr.length - 1) * p + 1;\r\n        var h = Math.floor(H);\r\n        var v = +ascArr[h - 1];\r\n        var e = H - h;\r\n        return e ? v + e * (ascArr[h] - v) : v;\r\n    }\r\n    function reformIntervals(list) {\r\n        list.sort(function (a, b) {\r\n            return littleThan(a, b, 0) ? -1 : 1;\r\n        });\r\n        var curr = -Infinity;\r\n        var currClose = 1;\r\n        for (var i = 0; i < list.length;) {\r\n            var interval = list[i].interval;\r\n            var close_1 = list[i].close;\r\n            for (var lg = 0; lg < 2; lg++) {\r\n                if (interval[lg] <= curr) {\r\n                    interval[lg] = curr;\r\n                    close_1[lg] = (!lg ? 1 - currClose : 1);\r\n                }\r\n                curr = interval[lg];\r\n                currClose = close_1[lg];\r\n            }\r\n            if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) {\r\n                list.splice(i, 1);\r\n            }\r\n            else {\r\n                i++;\r\n            }\r\n        }\r\n        return list;\r\n        function littleThan(a, b, lg) {\r\n            return a.interval[lg] < b.interval[lg]\r\n                || (a.interval[lg] === b.interval[lg]\r\n                    && ((a.close[lg] - b.close[lg] === (!lg ? 1 : -1))\r\n                        || (!lg && littleThan(a, b, 1))));\r\n        }\r\n    }\r\n    function numericToNumber(val) {\r\n        var valFloat = parseFloat(val);\r\n        return (valFloat == val\r\n            && (valFloat !== 0 || typeof val !== 'string' || val.indexOf('x') <= 0)) ? valFloat : NaN;\r\n    }\r\n    function isNumeric(val) {\r\n        return !isNaN(numericToNumber(val));\r\n    }\r\n    function getRandomIdBase() {\r\n        return Math.round(Math.random() * 9);\r\n    }\r\n    function getGreatestCommonDividor(a, b) {\r\n        if (b === 0) {\r\n            return a;\r\n        }\r\n        return getGreatestCommonDividor(b, a % b);\r\n    }\r\n    function getLeastCommonMultiple(a, b) {\r\n        if (a == null) {\r\n            return b;\r\n        }\r\n        if (b == null) {\r\n            return a;\r\n        }\r\n        return a * b / getGreatestCommonDividor(a, b);\r\n    }\n\n    var numberUtil = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        linearMap: linearMap,\n        parsePercent: parsePercent$2,\n        round: round$1,\n        asc: asc,\n        getPrecision: getPrecision,\n        getPrecisionSafe: getPrecisionSafe,\n        getPixelPrecision: getPixelPrecision,\n        getPercentWithPrecision: getPercentWithPrecision,\n        MAX_SAFE_INTEGER: MAX_SAFE_INTEGER,\n        remRadian: remRadian,\n        isRadianAroundZero: isRadianAroundZero,\n        parseDate: parseDate,\n        quantity: quantity,\n        quantityExponent: quantityExponent,\n        nice: nice,\n        quantile: quantile,\n        reformIntervals: reformIntervals,\n        numericToNumber: numericToNumber,\n        isNumeric: isNumeric,\n        getRandomIdBase: getRandomIdBase,\n        getGreatestCommonDividor: getGreatestCommonDividor,\n        getLeastCommonMultiple: getLeastCommonMultiple\n    });\n\n    var ECHARTS_PREFIX = '[ECharts] ';\r\n    var storedLogs = {};\r\n    var hasConsole = typeof console !== 'undefined'\r\n        && console.warn && console.log;\r\n    function warn(str) {\r\n        if (hasConsole) {\r\n            console.warn(ECHARTS_PREFIX + str);\r\n        }\r\n    }\r\n    function error(str) {\r\n        if (hasConsole) {\r\n            console.error(ECHARTS_PREFIX + str);\r\n        }\r\n    }\r\n    function deprecateLog(str) {\r\n        if (__DEV__) {\r\n            if (storedLogs[str]) {\r\n                return;\r\n            }\r\n            if (hasConsole) {\r\n                storedLogs[str] = true;\r\n                console.warn(ECHARTS_PREFIX + 'DEPRECATED: ' + str);\r\n            }\r\n        }\r\n    }\r\n    function deprecateReplaceLog(oldOpt, newOpt, scope) {\r\n        if (__DEV__) {\r\n            deprecateLog((scope ? \"[\" + scope + \"]\" : '') + (oldOpt + \" is deprecated, use \" + newOpt + \" instead.\"));\r\n        }\r\n    }\r\n    function consoleLog() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (__DEV__) {\r\n            if (typeof console !== 'undefined' && console.log) {\r\n                console.log.apply(console, args);\r\n            }\r\n        }\r\n    }\r\n    function makePrintable() {\r\n        var hintInfo = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            hintInfo[_i] = arguments[_i];\r\n        }\r\n        var msg = '';\r\n        if (__DEV__) {\r\n            var makePrintableStringIfPossible_1 = function (val) {\r\n                return val === void 0 ? 'undefined'\r\n                    : val === Infinity ? 'Infinity'\r\n                        : val === -Infinity ? '-Infinity'\r\n                            : eqNaN(val) ? 'NaN'\r\n                                : val instanceof Date ? 'Date(' + val.toISOString() + ')'\r\n                                    : isFunction(val) ? 'function () { ... }'\r\n                                        : isRegExp(val) ? val + ''\r\n                                            : null;\r\n            };\r\n            msg = map(hintInfo, function (arg) {\r\n                if (isString(arg)) {\r\n                    return arg;\r\n                }\r\n                else {\r\n                    var printableStr = makePrintableStringIfPossible_1(arg);\r\n                    if (printableStr != null) {\r\n                        return printableStr;\r\n                    }\r\n                    else if (typeof JSON !== 'undefined' && JSON.stringify) {\r\n                        try {\r\n                            return JSON.stringify(arg, function (n, val) {\r\n                                var printableStr = makePrintableStringIfPossible_1(val);\r\n                                return printableStr == null ? val : printableStr;\r\n                            });\r\n                        }\r\n                        catch (err) {\r\n                            return '?';\r\n                        }\r\n                    }\r\n                    else {\r\n                        return '?';\r\n                    }\r\n                }\r\n            }).join(' ');\r\n        }\r\n        return msg;\r\n    }\r\n    function throwError(msg) {\r\n        throw new Error(msg);\r\n    }\n\n    var DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\r\n    var INTERNAL_COMPONENT_ID_PREFIX = '\\0_ec_\\0';\r\n    function normalizeToArray(value) {\r\n        return value instanceof Array\r\n            ? value\r\n            : value == null\r\n                ? []\r\n                : [value];\r\n    }\r\n    function defaultEmphasis(opt, key, subOpts) {\r\n        if (opt) {\r\n            opt[key] = opt[key] || {};\r\n            opt.emphasis = opt.emphasis || {};\r\n            opt.emphasis[key] = opt.emphasis[key] || {};\r\n            for (var i = 0, len = subOpts.length; i < len; i++) {\r\n                var subOptName = subOpts[i];\r\n                if (!opt.emphasis[key].hasOwnProperty(subOptName)\r\n                    && opt[key].hasOwnProperty(subOptName)) {\r\n                    opt.emphasis[key][subOptName] = opt[key][subOptName];\r\n                }\r\n            }\r\n        }\r\n    }\r\n    var TEXT_STYLE_OPTIONS = [\r\n        'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n        'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth',\r\n        'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline',\r\n        'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY',\r\n        'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY',\r\n        'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding'\r\n    ];\r\n    function getDataItemValue(dataItem) {\r\n        return (isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date))\r\n            ? dataItem.value : dataItem;\r\n    }\r\n    function isDataItemOption(dataItem) {\r\n        return isObject(dataItem)\r\n            && !(dataItem instanceof Array);\r\n    }\r\n    function mappingToExists(existings, newCmptOptions, mode) {\r\n        var isNormalMergeMode = mode === 'normalMerge';\r\n        var isReplaceMergeMode = mode === 'replaceMerge';\r\n        var isReplaceAllMode = mode === 'replaceAll';\r\n        existings = existings || [];\r\n        newCmptOptions = (newCmptOptions || []).slice();\r\n        var existingIdIdxMap = createHashMap();\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!isObject(cmptOption)) {\r\n                newCmptOptions[index] = null;\r\n                return;\r\n            }\r\n            if (__DEV__) {\r\n                if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) {\r\n                    warnInvalidateIdOrName(cmptOption.id);\r\n                }\r\n                if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) {\r\n                    warnInvalidateIdOrName(cmptOption.name);\r\n                }\r\n            }\r\n        });\r\n        var result = prepareResult(existings, existingIdIdxMap, mode);\r\n        if (isNormalMergeMode || isReplaceMergeMode) {\r\n            mappingById(result, existings, existingIdIdxMap, newCmptOptions);\r\n        }\r\n        if (isNormalMergeMode) {\r\n            mappingByName(result, newCmptOptions);\r\n        }\r\n        if (isNormalMergeMode || isReplaceMergeMode) {\r\n            mappingByIndex(result, newCmptOptions, isReplaceMergeMode);\r\n        }\r\n        else if (isReplaceAllMode) {\r\n            mappingInReplaceAllMode(result, newCmptOptions);\r\n        }\r\n        makeIdAndName(result);\r\n        return result;\r\n    }\r\n    function prepareResult(existings, existingIdIdxMap, mode) {\r\n        var result = [];\r\n        if (mode === 'replaceAll') {\r\n            return result;\r\n        }\r\n        for (var index = 0; index < existings.length; index++) {\r\n            var existing = existings[index];\r\n            if (existing && existing.id != null) {\r\n                existingIdIdxMap.set(existing.id, index);\r\n            }\r\n            result.push({\r\n                existing: (mode === 'replaceMerge' || isComponentIdInternal(existing))\r\n                    ? null\r\n                    : existing,\r\n                newOption: null,\r\n                keyInfo: null,\r\n                brandNew: null\r\n            });\r\n        }\r\n        return result;\r\n    }\r\n    function mappingById(result, existings, existingIdIdxMap, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!cmptOption || cmptOption.id == null) {\r\n                return;\r\n            }\r\n            var optionId = makeComparableKey(cmptOption.id);\r\n            var existingIdx = existingIdIdxMap.get(optionId);\r\n            if (existingIdx != null) {\r\n                var resultItem = result[existingIdx];\r\n                assert(!resultItem.newOption, 'Duplicated option on id \"' + optionId + '\".');\r\n                resultItem.newOption = cmptOption;\r\n                resultItem.existing = existings[existingIdx];\r\n                newCmptOptions[index] = null;\r\n            }\r\n        });\r\n    }\r\n    function mappingByName(result, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!cmptOption || cmptOption.name == null) {\r\n                return;\r\n            }\r\n            for (var i = 0; i < result.length; i++) {\r\n                var existing = result[i].existing;\r\n                if (!result[i].newOption\r\n                    && existing\r\n                    && (existing.id == null || cmptOption.id == null)\r\n                    && !isComponentIdInternal(cmptOption)\r\n                    && !isComponentIdInternal(existing)\r\n                    && keyExistAndEqual('name', existing, cmptOption)) {\r\n                    result[i].newOption = cmptOption;\r\n                    newCmptOptions[index] = null;\r\n                    return;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function mappingByIndex(result, newCmptOptions, brandNew) {\r\n        each(newCmptOptions, function (cmptOption) {\r\n            if (!cmptOption) {\r\n                return;\r\n            }\r\n            var resultItem;\r\n            var nextIdx = 0;\r\n            while ((resultItem = result[nextIdx])\r\n                && (resultItem.newOption\r\n                    || isComponentIdInternal(resultItem.existing)\r\n                    || (resultItem.existing\r\n                        && cmptOption.id != null\r\n                        && !keyExistAndEqual('id', cmptOption, resultItem.existing)))) {\r\n                nextIdx++;\r\n            }\r\n            if (resultItem) {\r\n                resultItem.newOption = cmptOption;\r\n                resultItem.brandNew = brandNew;\r\n            }\r\n            else {\r\n                result.push({\r\n                    newOption: cmptOption,\r\n                    brandNew: brandNew,\r\n                    existing: null,\r\n                    keyInfo: null\r\n                });\r\n            }\r\n            nextIdx++;\r\n        });\r\n    }\r\n    function mappingInReplaceAllMode(result, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption) {\r\n            result.push({\r\n                newOption: cmptOption,\r\n                brandNew: true,\r\n                existing: null,\r\n                keyInfo: null\r\n            });\r\n        });\r\n    }\r\n    function makeIdAndName(mapResult) {\r\n        var idMap = createHashMap();\r\n        each(mapResult, function (item) {\r\n            var existing = item.existing;\r\n            existing && idMap.set(existing.id, item);\r\n        });\r\n        each(mapResult, function (item) {\r\n            var opt = item.newOption;\r\n            assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\r\n            opt && opt.id != null && idMap.set(opt.id, item);\r\n            !item.keyInfo && (item.keyInfo = {});\r\n        });\r\n        each(mapResult, function (item, index) {\r\n            var existing = item.existing;\r\n            var opt = item.newOption;\r\n            var keyInfo = item.keyInfo;\r\n            if (!isObject(opt)) {\r\n                return;\r\n            }\r\n            keyInfo.name = opt.name != null\r\n                ? makeComparableKey(opt.name)\r\n                : existing\r\n                    ? existing.name\r\n                    : DUMMY_COMPONENT_NAME_PREFIX + index;\r\n            if (existing) {\r\n                keyInfo.id = makeComparableKey(existing.id);\r\n            }\r\n            else if (opt.id != null) {\r\n                keyInfo.id = makeComparableKey(opt.id);\r\n            }\r\n            else {\r\n                var idNum = 0;\r\n                do {\r\n                    keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\r\n                } while (idMap.get(keyInfo.id));\r\n            }\r\n            idMap.set(keyInfo.id, item);\r\n        });\r\n    }\r\n    function keyExistAndEqual(attr, obj1, obj2) {\r\n        var key1 = convertOptionIdName(obj1[attr], null);\r\n        var key2 = convertOptionIdName(obj2[attr], null);\r\n        return key1 != null && key2 != null && key1 === key2;\r\n    }\r\n    function makeComparableKey(val) {\r\n        if (__DEV__) {\r\n            if (val == null) {\r\n                throw new Error();\r\n            }\r\n        }\r\n        return convertOptionIdName(val, '');\r\n    }\r\n    function convertOptionIdName(idOrName, defaultValue) {\r\n        if (idOrName == null) {\r\n            return defaultValue;\r\n        }\r\n        var type = typeof idOrName;\r\n        return type === 'string'\r\n            ? idOrName\r\n            : (type === 'number' || isStringSafe(idOrName))\r\n                ? idOrName + ''\r\n                : defaultValue;\r\n    }\r\n    function warnInvalidateIdOrName(idOrName) {\r\n        if (__DEV__) {\r\n            warn('`' + idOrName + '` is invalid id or name. Must be a string or number.');\r\n        }\r\n    }\r\n    function isValidIdOrName(idOrName) {\r\n        return isStringSafe(idOrName) || isNumeric(idOrName);\r\n    }\r\n    function isNameSpecified(componentModel) {\r\n        var name = componentModel.name;\r\n        return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\r\n    }\r\n    function isComponentIdInternal(cmptOption) {\r\n        return cmptOption\r\n            && cmptOption.id != null\r\n            && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;\r\n    }\r\n    function makeInternalComponentId(idSuffix) {\r\n        return INTERNAL_COMPONENT_ID_PREFIX + idSuffix;\r\n    }\r\n    function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {\r\n        each(mappingResult, function (item) {\r\n            var newOption = item.newOption;\r\n            if (isObject(newOption)) {\r\n                item.keyInfo.mainType = mainType;\r\n                item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);\r\n            }\r\n        });\r\n    }\r\n    function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {\r\n        var subType = newCmptOption.type\r\n            ? newCmptOption.type\r\n            : existComponent\r\n                ? existComponent.subType\r\n                : componentModelCtor.determineSubType(mainType, newCmptOption);\r\n        return subType;\r\n    }\r\n    function queryDataIndex(data, payload) {\r\n        if (payload.dataIndexInside != null) {\r\n            return payload.dataIndexInside;\r\n        }\r\n        else if (payload.dataIndex != null) {\r\n            return isArray(payload.dataIndex)\r\n                ? map(payload.dataIndex, function (value) {\r\n                    return data.indexOfRawIndex(value);\r\n                })\r\n                : data.indexOfRawIndex(payload.dataIndex);\r\n        }\r\n        else if (payload.name != null) {\r\n            return isArray(payload.name)\r\n                ? map(payload.name, function (value) {\r\n                    return data.indexOfName(value);\r\n                })\r\n                : data.indexOfName(payload.name);\r\n        }\r\n    }\r\n    function makeInner() {\r\n        var key = '__ec_inner_' + innerUniqueIndex++;\r\n        return function (hostObj) {\r\n            return hostObj[key] || (hostObj[key] = {});\r\n        };\r\n    }\r\n    var innerUniqueIndex = getRandomIdBase();\r\n    function parseFinder(ecModel, finderInput, opt) {\r\n        var finder;\r\n        if (isString(finderInput)) {\r\n            var obj = {};\r\n            obj[finderInput + 'Index'] = 0;\r\n            finder = obj;\r\n        }\r\n        else {\r\n            finder = finderInput;\r\n        }\r\n        var queryOptionMap = createHashMap();\r\n        var result = {};\r\n        var mainTypeSpecified = false;\r\n        each(finder, function (value, key) {\r\n            if (key === 'dataIndex' || key === 'dataIndexInside') {\r\n                result[key] = value;\r\n                return;\r\n            }\r\n            var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\r\n            var mainType = parsedKey[1];\r\n            var queryType = (parsedKey[2] || '').toLowerCase();\r\n            if (!mainType\r\n                || !queryType\r\n                || (opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0)) {\r\n                return;\r\n            }\r\n            mainTypeSpecified = mainTypeSpecified || !!mainType;\r\n            var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});\r\n            queryOption[queryType] = value;\r\n        });\r\n        var defaultMainType = opt ? opt.defaultMainType : null;\r\n        if (!mainTypeSpecified && defaultMainType) {\r\n            queryOptionMap.set(defaultMainType, {});\r\n        }\r\n        queryOptionMap.each(function (queryOption, mainType) {\r\n            var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {\r\n                useDefault: defaultMainType === mainType,\r\n                enableAll: (opt && opt.enableAll != null) ? opt.enableAll : true,\r\n                enableNone: (opt && opt.enableNone != null) ? opt.enableNone : true\r\n            });\r\n            result[mainType + 'Models'] = queryResult.models;\r\n            result[mainType + 'Model'] = queryResult.models[0];\r\n        });\r\n        return result;\r\n    }\r\n    var SINGLE_REFERRING = { useDefault: true, enableAll: false, enableNone: false };\r\n    var MULTIPLE_REFERRING = { useDefault: false, enableAll: true, enableNone: true };\r\n    function queryReferringComponents(ecModel, mainType, userOption, opt) {\r\n        opt = opt || SINGLE_REFERRING;\r\n        var indexOption = userOption.index;\r\n        var idOption = userOption.id;\r\n        var nameOption = userOption.name;\r\n        var result = {\r\n            models: null,\r\n            specified: indexOption != null || idOption != null || nameOption != null\r\n        };\r\n        if (!result.specified) {\r\n            var firstCmpt = void 0;\r\n            result.models = (opt.useDefault && (firstCmpt = ecModel.getComponent(mainType))) ? [firstCmpt] : [];\r\n            return result;\r\n        }\r\n        if (indexOption === 'none' || indexOption === false) {\r\n            assert(opt.enableNone, '`\"none\"` or `false` is not a valid value on index option.');\r\n            result.models = [];\r\n            return result;\r\n        }\r\n        if (indexOption === 'all') {\r\n            assert(opt.enableAll, '`\"all\"` is not a valid value on index option.');\r\n            indexOption = idOption = nameOption = null;\r\n        }\r\n        result.models = ecModel.queryComponents({\r\n            mainType: mainType,\r\n            index: indexOption,\r\n            id: idOption,\r\n            name: nameOption\r\n        });\r\n        return result;\r\n    }\r\n    function setAttribute(dom, key, value) {\r\n        dom.setAttribute\r\n            ? dom.setAttribute(key, value)\r\n            : (dom[key] = value);\r\n    }\r\n    function getAttribute(dom, key) {\r\n        return dom.getAttribute\r\n            ? dom.getAttribute(key)\r\n            : dom[key];\r\n    }\r\n    function getTooltipRenderMode(renderModeOption) {\r\n        if (renderModeOption === 'auto') {\r\n            return env.domSupported ? 'html' : 'richText';\r\n        }\r\n        else {\r\n            return renderModeOption || 'html';\r\n        }\r\n    }\r\n    function interpolateRawValues(data, precision, sourceValue, targetValue, percent) {\r\n        var isAutoPrecision = precision == null || precision === 'auto';\r\n        if (targetValue == null) {\r\n            return targetValue;\r\n        }\r\n        if (typeof targetValue === 'number') {\r\n            var value = interpolateNumber(sourceValue || 0, targetValue, percent);\r\n            return round$1(value, isAutoPrecision ? Math.max(getPrecisionSafe(sourceValue || 0), getPrecisionSafe(targetValue))\r\n                : precision);\r\n        }\r\n        else if (typeof targetValue === 'string') {\r\n            return percent < 1 ? sourceValue : targetValue;\r\n        }\r\n        else {\r\n            var interpolated = [];\r\n            var leftArr = sourceValue || [];\r\n            var rightArr = targetValue;\r\n            var length_1 = Math.max(leftArr.length, rightArr.length);\r\n            for (var i = 0; i < length_1; ++i) {\r\n                var info = data.getDimensionInfo(i);\r\n                if (info.type === 'ordinal') {\r\n                    interpolated[i] = (percent < 1 ? leftArr : rightArr)[i];\r\n                }\r\n                else {\r\n                    var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0;\r\n                    var rightVal = rightArr[i];\r\n                    var value = leftArr == null\r\n                        ? targetValue[i]\r\n                        : interpolateNumber(leftVal, rightVal, percent);\r\n                    interpolated[i] = round$1(value, isAutoPrecision ? Math.max(getPrecisionSafe(leftVal), getPrecisionSafe(rightVal))\r\n                        : precision);\r\n                }\r\n            }\r\n            return interpolated;\r\n        }\r\n    }\n\n    var TYPE_DELIMITER = '.';\r\n    var IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\r\n    var IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___';\r\n    function parseClassType(componentType) {\r\n        var ret = { main: '', sub: '' };\r\n        if (componentType) {\r\n            var typeArr = componentType.split(TYPE_DELIMITER);\r\n            ret.main = typeArr[0] || '';\r\n            ret.sub = typeArr[1] || '';\r\n        }\r\n        return ret;\r\n    }\r\n    function checkClassType(componentType) {\r\n        assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\r\n    }\r\n    function isExtendedClass(clz) {\r\n        return !!(clz && clz[IS_EXTENDED_CLASS]);\r\n    }\r\n    function enableClassExtend(rootClz, mandatoryMethods) {\r\n        rootClz.$constructor = rootClz;\r\n        rootClz.extend = function (proto) {\r\n            if (__DEV__) {\r\n                each(mandatoryMethods, function (method) {\r\n                    if (!proto[method]) {\r\n                        console.warn('Method `' + method + '` should be implemented'\r\n                            + (proto.type ? ' in ' + proto.type : '') + '.');\r\n                    }\r\n                });\r\n            }\r\n            var superClass = this;\r\n            function ExtendedClass() {\r\n                var args = [];\r\n                for (var _i = 0; _i < arguments.length; _i++) {\r\n                    args[_i] = arguments[_i];\r\n                }\r\n                if (!proto.$constructor) {\r\n                    if (!isESClass(superClass)) {\r\n                        superClass.apply(this, arguments);\r\n                    }\r\n                    else {\r\n                        var ins = createObject(ExtendedClass.prototype, new (superClass.bind.apply(superClass, __spreadArrays([void 0], args)))());\r\n                        return ins;\r\n                    }\r\n                }\r\n                else {\r\n                    proto.$constructor.apply(this, arguments);\r\n                }\r\n            }\r\n            ExtendedClass[IS_EXTENDED_CLASS] = true;\r\n            extend(ExtendedClass.prototype, proto);\r\n            ExtendedClass.extend = this.extend;\r\n            ExtendedClass.superCall = superCall;\r\n            ExtendedClass.superApply = superApply;\r\n            inherits(ExtendedClass, this);\r\n            ExtendedClass.superClass = superClass;\r\n            return ExtendedClass;\r\n        };\r\n    }\r\n    function isESClass(fn) {\r\n        return typeof fn === 'function'\r\n            && /^class\\s/.test(Function.prototype.toString.call(fn));\r\n    }\r\n    function mountExtend(SubClz, SupperClz) {\r\n        SubClz.extend = SupperClz.extend;\r\n    }\r\n    var classBase = Math.round(Math.random() * 10);\r\n    function enableClassCheck(target) {\r\n        var classAttr = ['__\\0is_clz', classBase++].join('_');\r\n        target.prototype[classAttr] = true;\r\n        if (__DEV__) {\r\n            assert(!target.isInstance, 'The method \"is\" can not be defined.');\r\n        }\r\n        target.isInstance = function (obj) {\r\n            return !!(obj && obj[classAttr]);\r\n        };\r\n    }\r\n    function superCall(context, methodName) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        return this.superClass.prototype[methodName].apply(context, args);\r\n    }\r\n    function superApply(context, methodName, args) {\r\n        return this.superClass.prototype[methodName].apply(context, args);\r\n    }\r\n    function enableClassManagement(target, options) {\r\n        options = options || {};\r\n        var storage = {};\r\n        target.registerClass = function (clz) {\r\n            var componentFullType = clz.type || clz.prototype.type;\r\n            if (componentFullType) {\r\n                checkClassType(componentFullType);\r\n                clz.prototype.type = componentFullType;\r\n                var componentTypeInfo = parseClassType(componentFullType);\r\n                if (!componentTypeInfo.sub) {\r\n                    if (__DEV__) {\r\n                        if (storage[componentTypeInfo.main]) {\r\n                            console.warn(componentTypeInfo.main + ' exists.');\r\n                        }\r\n                    }\r\n                    storage[componentTypeInfo.main] = clz;\r\n                }\r\n                else if (componentTypeInfo.sub !== IS_CONTAINER) {\r\n                    var container = makeContainer(componentTypeInfo);\r\n                    container[componentTypeInfo.sub] = clz;\r\n                }\r\n            }\r\n            return clz;\r\n        };\r\n        target.getClass = function (mainType, subType, throwWhenNotFound) {\r\n            var clz = storage[mainType];\r\n            if (clz && clz[IS_CONTAINER]) {\r\n                clz = subType ? clz[subType] : null;\r\n            }\r\n            if (throwWhenNotFound && !clz) {\r\n                throw new Error(!subType\r\n                    ? mainType + '.' + 'type should be specified.'\r\n                    : 'Component ' + mainType + '.' + (subType || '') + ' not exists. Load it first.');\r\n            }\r\n            return clz;\r\n        };\r\n        target.getClassesByMainType = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            var result = [];\r\n            var obj = storage[componentTypeInfo.main];\r\n            if (obj && obj[IS_CONTAINER]) {\r\n                each(obj, function (o, type) {\r\n                    type !== IS_CONTAINER && result.push(o);\r\n                });\r\n            }\r\n            else {\r\n                result.push(obj);\r\n            }\r\n            return result;\r\n        };\r\n        target.hasClass = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            return !!storage[componentTypeInfo.main];\r\n        };\r\n        target.getAllClassMainTypes = function () {\r\n            var types = [];\r\n            each(storage, function (obj, type) {\r\n                types.push(type);\r\n            });\r\n            return types;\r\n        };\r\n        target.hasSubTypes = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            var obj = storage[componentTypeInfo.main];\r\n            return obj && obj[IS_CONTAINER];\r\n        };\r\n        function makeContainer(componentTypeInfo) {\r\n            var container = storage[componentTypeInfo.main];\r\n            if (!container || !container[IS_CONTAINER]) {\r\n                container = storage[componentTypeInfo.main] = {};\r\n                container[IS_CONTAINER] = true;\r\n            }\r\n            return container;\r\n        }\r\n        if (options.registerWhenExtend) {\r\n            var originalExtend_1 = target.extend;\r\n            if (originalExtend_1) {\r\n                target.extend = function (proto) {\r\n                    var ExtendedClass = originalExtend_1.call(this, proto);\r\n                    return target.registerClass(ExtendedClass);\r\n                };\r\n            }\r\n        }\r\n    }\n\n    function makeStyleMapper(properties, ignoreParent) {\r\n        for (var i = 0; i < properties.length; i++) {\r\n            if (!properties[i][1]) {\r\n                properties[i][1] = properties[i][0];\r\n            }\r\n        }\r\n        ignoreParent = ignoreParent || false;\r\n        return function (model, excludes, includes) {\r\n            var style = {};\r\n            for (var i = 0; i < properties.length; i++) {\r\n                var propName = properties[i][1];\r\n                if ((excludes && indexOf(excludes, propName) >= 0)\r\n                    || (includes && indexOf(includes, propName) < 0)) {\r\n                    continue;\r\n                }\r\n                var val = model.getShallow(propName, ignoreParent);\r\n                if (val != null) {\r\n                    style[properties[i][0]] = val;\r\n                }\r\n            }\r\n            return style;\r\n        };\r\n    }\n\n    var AREA_STYLE_KEY_MAP = [\r\n        ['fill', 'color'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['opacity'],\r\n        ['shadowColor']\r\n    ];\r\n    var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);\r\n    var AreaStyleMixin = (function () {\r\n        function AreaStyleMixin() {\r\n        }\r\n        AreaStyleMixin.prototype.getAreaStyle = function (excludes, includes) {\r\n            return getAreaStyle(this, excludes, includes);\r\n        };\r\n        return AreaStyleMixin;\r\n    }());\n\n    var getECData = makeInner();\n\n    var _highlightNextDigit = 1;\r\n    var _highlightKeyMap = {};\r\n    var getSavedStates = makeInner();\r\n    var HOVER_STATE_NORMAL = 0;\r\n    var HOVER_STATE_BLUR = 1;\r\n    var HOVER_STATE_EMPHASIS = 2;\r\n    var SPECIAL_STATES = ['emphasis', 'blur', 'select'];\r\n    var DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select'];\r\n    var Z2_EMPHASIS_LIFT = 10;\r\n    var Z2_SELECT_LIFT = 9;\r\n    var HIGHLIGHT_ACTION_TYPE = 'highlight';\r\n    var DOWNPLAY_ACTION_TYPE = 'downplay';\r\n    var SELECT_ACTION_TYPE = 'select';\r\n    var UNSELECT_ACTION_TYPE = 'unselect';\r\n    var TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect';\r\n    function hasFillOrStroke(fillOrStroke) {\r\n        return fillOrStroke != null && fillOrStroke !== 'none';\r\n    }\r\n    var liftedColorCache = new LRU(100);\r\n    function liftColor(color$1) {\r\n        if (typeof color$1 !== 'string') {\r\n            return color$1;\r\n        }\r\n        var liftedColor = liftedColorCache.get(color$1);\r\n        if (!liftedColor) {\r\n            liftedColor = lift(color$1, -0.1);\r\n            liftedColorCache.put(color$1, liftedColor);\r\n        }\r\n        return liftedColor;\r\n    }\r\n    function doChangeHoverState(el, stateName, hoverStateEnum) {\r\n        if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) {\r\n            el.onHoverStateChange(stateName);\r\n        }\r\n        el.hoverState = hoverStateEnum;\r\n    }\r\n    function singleEnterEmphasis(el) {\r\n        doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS);\r\n    }\r\n    function singleLeaveEmphasis(el) {\r\n        if (el.hoverState === HOVER_STATE_EMPHASIS) {\r\n            doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n        }\r\n    }\r\n    function singleEnterBlur(el) {\r\n        doChangeHoverState(el, 'blur', HOVER_STATE_BLUR);\r\n    }\r\n    function singleLeaveBlur(el) {\r\n        if (el.hoverState === HOVER_STATE_BLUR) {\r\n            doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n        }\r\n    }\r\n    function singleEnterSelect(el) {\r\n        el.selected = true;\r\n    }\r\n    function singleLeaveSelect(el) {\r\n        el.selected = false;\r\n    }\r\n    function updateElementState(el, updater, commonParam) {\r\n        updater(el, commonParam);\r\n    }\r\n    function traverseUpdateState(el, updater, commonParam) {\r\n        updateElementState(el, updater, commonParam);\r\n        el.isGroup && el.traverse(function (child) {\r\n            updateElementState(child, updater, commonParam);\r\n        });\r\n    }\r\n    function setStatesFlag(el, stateName) {\r\n        switch (stateName) {\r\n            case 'emphasis':\r\n                el.hoverState = HOVER_STATE_EMPHASIS;\r\n                break;\r\n            case 'normal':\r\n                el.hoverState = HOVER_STATE_NORMAL;\r\n                break;\r\n            case 'blur':\r\n                el.hoverState = HOVER_STATE_BLUR;\r\n                break;\r\n            case 'select':\r\n                el.selected = true;\r\n        }\r\n    }\r\n    function getFromStateStyle(el, props, toStateName, defaultValue) {\r\n        var style = el.style;\r\n        var fromState = {};\r\n        for (var i = 0; i < props.length; i++) {\r\n            var propName = props[i];\r\n            var val = style[propName];\r\n            fromState[propName] = val == null ? (defaultValue && defaultValue[propName]) : val;\r\n        }\r\n        for (var i = 0; i < el.animators.length; i++) {\r\n            var animator = el.animators[i];\r\n            if (animator.__fromStateTransition\r\n                && animator.__fromStateTransition.indexOf(toStateName) < 0\r\n                && animator.targetName === 'style') {\r\n                animator.saveFinalToTarget(fromState, props);\r\n            }\r\n        }\r\n        return fromState;\r\n    }\r\n    function createEmphasisDefaultState(el, stateName, targetStates, state) {\r\n        var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0;\r\n        var cloned = false;\r\n        if (el instanceof Path) {\r\n            var store = getSavedStates(el);\r\n            var fromFill = hasSelect ? (store.selectFill || store.normalFill) : store.normalFill;\r\n            var fromStroke = hasSelect ? (store.selectStroke || store.normalStroke) : store.normalStroke;\r\n            if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {\r\n                state = state || {};\r\n                var emphasisStyle = state.style || {};\r\n                if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {\r\n                    cloned = true;\r\n                    state = extend({}, state);\r\n                    emphasisStyle = extend({}, emphasisStyle);\r\n                    emphasisStyle.fill = liftColor(fromFill);\r\n                }\r\n                else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {\r\n                    if (!cloned) {\r\n                        state = extend({}, state);\r\n                        emphasisStyle = extend({}, emphasisStyle);\r\n                    }\r\n                    emphasisStyle.stroke = liftColor(fromStroke);\r\n                }\r\n                state.style = emphasisStyle;\r\n            }\r\n        }\r\n        if (state) {\r\n            if (state.z2 == null) {\r\n                if (!cloned) {\r\n                    state = extend({}, state);\r\n                }\r\n                var z2EmphasisLift = el.z2EmphasisLift;\r\n                state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function createSelectDefaultState(el, stateName, state) {\r\n        if (state) {\r\n            if (state.z2 == null) {\r\n                state = extend({}, state);\r\n                var z2SelectLift = el.z2SelectLift;\r\n                state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function createBlurDefaultState(el, stateName, state) {\r\n        var hasBlur = indexOf(el.currentStates, stateName) >= 0;\r\n        var currentOpacity = el.style.opacity;\r\n        var fromState = !hasBlur\r\n            ? getFromStateStyle(el, ['opacity'], stateName, {\r\n                opacity: 1\r\n            })\r\n            : null;\r\n        state = state || {};\r\n        var blurStyle = state.style || {};\r\n        if (blurStyle.opacity == null) {\r\n            state = extend({}, state);\r\n            blurStyle = extend({\r\n                opacity: hasBlur ? currentOpacity : (fromState.opacity * 0.1)\r\n            }, blurStyle);\r\n            state.style = blurStyle;\r\n        }\r\n        return state;\r\n    }\r\n    function elementStateProxy(stateName, targetStates) {\r\n        var state = this.states[stateName];\r\n        if (this.style) {\r\n            if (stateName === 'emphasis') {\r\n                return createEmphasisDefaultState(this, stateName, targetStates, state);\r\n            }\r\n            else if (stateName === 'blur') {\r\n                return createBlurDefaultState(this, stateName, state);\r\n            }\r\n            else if (stateName === 'select') {\r\n                return createSelectDefaultState(this, stateName, state);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function setDefaultStateProxy(el) {\r\n        el.stateProxy = elementStateProxy;\r\n        var textContent = el.getTextContent();\r\n        var textGuide = el.getTextGuideLine();\r\n        if (textContent) {\r\n            textContent.stateProxy = elementStateProxy;\r\n        }\r\n        if (textGuide) {\r\n            textGuide.stateProxy = elementStateProxy;\r\n        }\r\n    }\r\n    function enterEmphasisWhenMouseOver(el, e) {\r\n        !shouldSilent(el, e)\r\n            && !el.__highByOuter\r\n            && traverseUpdateState(el, singleEnterEmphasis);\r\n    }\r\n    function leaveEmphasisWhenMouseOut(el, e) {\r\n        !shouldSilent(el, e)\r\n            && !el.__highByOuter\r\n            && traverseUpdateState(el, singleLeaveEmphasis);\r\n    }\r\n    function enterEmphasis(el, highlightDigit) {\r\n        el.__highByOuter |= 1 << (highlightDigit || 0);\r\n        traverseUpdateState(el, singleEnterEmphasis);\r\n    }\r\n    function leaveEmphasis(el, highlightDigit) {\r\n        !(el.__highByOuter &= ~(1 << (highlightDigit || 0)))\r\n            && traverseUpdateState(el, singleLeaveEmphasis);\r\n    }\r\n    function enterBlur(el) {\r\n        traverseUpdateState(el, singleEnterBlur);\r\n    }\r\n    function leaveBlur(el) {\r\n        traverseUpdateState(el, singleLeaveBlur);\r\n    }\r\n    function enterSelect(el) {\r\n        traverseUpdateState(el, singleEnterSelect);\r\n    }\r\n    function leaveSelect(el) {\r\n        traverseUpdateState(el, singleLeaveSelect);\r\n    }\r\n    function shouldSilent(el, e) {\r\n        return el.__highDownSilentOnTouch && e.zrByTouch;\r\n    }\r\n    function allLeaveBlur(api) {\r\n        var model = api.getModel();\r\n        model.eachComponent(function (componentType, componentModel) {\r\n            var view = componentType === 'series'\r\n                ? api.getViewOfSeriesModel(componentModel)\r\n                : api.getViewOfComponentModel(componentModel);\r\n            view.group.traverse(function (child) {\r\n                singleLeaveBlur(child);\r\n            });\r\n        });\r\n    }\r\n    function toggleSeriesBlurState(targetSeriesIndex, focus, blurScope, api, isBlur) {\r\n        var ecModel = api.getModel();\r\n        blurScope = blurScope || 'coordinateSystem';\r\n        function leaveBlurOfIndices(data, dataIndices) {\r\n            for (var i = 0; i < dataIndices.length; i++) {\r\n                var itemEl = data.getItemGraphicEl(dataIndices[i]);\r\n                itemEl && leaveBlur(itemEl);\r\n            }\r\n        }\r\n        if (!isBlur) {\r\n            allLeaveBlur(api);\r\n            return;\r\n        }\r\n        if (targetSeriesIndex == null) {\r\n            return;\r\n        }\r\n        if (!focus || focus === 'none') {\r\n            return;\r\n        }\r\n        var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);\r\n        var targetCoordSys = targetSeriesModel.coordinateSystem;\r\n        if (targetCoordSys && targetCoordSys.master) {\r\n            targetCoordSys = targetCoordSys.master;\r\n        }\r\n        var blurredSeries = [];\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var sameSeries = targetSeriesModel === seriesModel;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys && coordSys.master) {\r\n                coordSys = coordSys.master;\r\n            }\r\n            var sameCoordSys = coordSys && targetCoordSys\r\n                ? coordSys === targetCoordSys\r\n                : sameSeries;\r\n            if (!(blurScope === 'series' && !sameSeries\r\n                || blurScope === 'coordinateSystem' && !sameCoordSys\r\n                || focus === 'series' && sameSeries)) {\r\n                var view = api.getViewOfSeriesModel(seriesModel);\r\n                view.group.traverse(function (child) {\r\n                    singleEnterBlur(child);\r\n                });\r\n                if (isArrayLike(focus)) {\r\n                    leaveBlurOfIndices(seriesModel.getData(), focus);\r\n                }\r\n                else if (isObject(focus)) {\r\n                    var dataTypes = keys(focus);\r\n                    for (var d = 0; d < dataTypes.length; d++) {\r\n                        leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]);\r\n                    }\r\n                }\r\n                blurredSeries.push(seriesModel);\r\n            }\r\n        });\r\n        ecModel.eachComponent(function (componentType, componentModel) {\r\n            if (componentType === 'series') {\r\n                return;\r\n            }\r\n            var view = api.getViewOfComponentModel(componentModel);\r\n            if (view && view.blurSeries) {\r\n                view.blurSeries(blurredSeries, ecModel);\r\n            }\r\n        });\r\n    }\r\n    function toggleSeriesBlurStateFromPayload(seriesModel, payload, api) {\r\n        if (!isHighDownPayload(payload)) {\r\n            return;\r\n        }\r\n        var isHighlight = payload.type === HIGHLIGHT_ACTION_TYPE;\r\n        var seriesIndex = seriesModel.seriesIndex;\r\n        var data = seriesModel.getData(payload.dataType);\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0;\r\n        var el = data.getItemGraphicEl(dataIndex);\r\n        if (!el) {\r\n            var count = data.count();\r\n            var current = 0;\r\n            while (!el && current < count) {\r\n                el = data.getItemGraphicEl(current++);\r\n            }\r\n        }\r\n        if (el) {\r\n            var ecData = getECData(el);\r\n            toggleSeriesBlurState(seriesIndex, ecData.focus, ecData.blurScope, api, isHighlight);\r\n        }\r\n        else {\r\n            var focus_1 = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            if (focus_1 != null) {\r\n                toggleSeriesBlurState(seriesIndex, focus_1, blurScope, api, isHighlight);\r\n            }\r\n        }\r\n    }\r\n    function toggleSelectionFromPayload(seriesModel, payload, api) {\r\n        if (!(isSelectChangePayload(payload))) {\r\n            return;\r\n        }\r\n        var dataType = payload.dataType;\r\n        var data = seriesModel.getData(dataType);\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        if (!isArray(dataIndex)) {\r\n            dataIndex = [dataIndex];\r\n        }\r\n        seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? 'toggleSelect'\r\n            : payload.type === SELECT_ACTION_TYPE ? 'select' : 'unselect'](dataIndex, dataType);\r\n    }\r\n    function updateSeriesElementSelection(seriesModel) {\r\n        var allData = seriesModel.getAllData();\r\n        each(allData, function (_a) {\r\n            var data = _a.data, type = _a.type;\r\n            data.eachItemGraphicEl(function (el, idx) {\r\n                seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el);\r\n            });\r\n        });\r\n    }\r\n    function getAllSelectedIndices(ecModel) {\r\n        var ret = [];\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var allData = seriesModel.getAllData();\r\n            each(allData, function (_a) {\r\n                var data = _a.data, type = _a.type;\r\n                var dataIndices = seriesModel.getSelectedDataIndices();\r\n                if (dataIndices.length > 0) {\r\n                    var item = {\r\n                        dataIndex: dataIndices,\r\n                        seriesIndex: seriesModel.seriesIndex\r\n                    };\r\n                    if (type != null) {\r\n                        item.dataType = type;\r\n                    }\r\n                    ret.push(item);\r\n                }\r\n            });\r\n        });\r\n        return ret;\r\n    }\r\n    function enableHoverEmphasis(el, focus, blurScope) {\r\n        setAsHighDownDispatcher(el, true);\r\n        traverseUpdateState(el, setDefaultStateProxy);\r\n        enableHoverFocus(el, focus, blurScope);\r\n    }\r\n    function enableHoverFocus(el, focus, blurScope) {\r\n        var ecData = getECData(el);\r\n        if (focus != null) {\r\n            ecData.focus = focus;\r\n            ecData.blurScope = blurScope;\r\n        }\r\n        else if (ecData.focus) {\r\n            ecData.focus = null;\r\n        }\r\n    }\r\n    var OTHER_STATES = ['emphasis', 'blur', 'select'];\r\n    var defaultStyleGetterMap = {\r\n        itemStyle: 'getItemStyle',\r\n        lineStyle: 'getLineStyle',\r\n        areaStyle: 'getAreaStyle'\r\n    };\r\n    function setStatesStylesFromModel(el, itemModel, styleType, getter) {\r\n        styleType = styleType || 'itemStyle';\r\n        for (var i = 0; i < OTHER_STATES.length; i++) {\r\n            var stateName = OTHER_STATES[i];\r\n            var model = itemModel.getModel([stateName, styleType]);\r\n            var state = el.ensureState(stateName);\r\n            state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]]();\r\n        }\r\n    }\r\n    function setAsHighDownDispatcher(el, asDispatcher) {\r\n        var disable = asDispatcher === false;\r\n        var extendedEl = el;\r\n        if (el.highDownSilentOnTouch) {\r\n            extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch;\r\n        }\r\n        if (!disable || extendedEl.__highDownDispatcher) {\r\n            extendedEl.__highByOuter = extendedEl.__highByOuter || 0;\r\n            extendedEl.__highDownDispatcher = !disable;\r\n        }\r\n    }\r\n    function isHighDownDispatcher(el) {\r\n        return !!(el && el.__highDownDispatcher);\r\n    }\r\n    function getHighlightDigit(highlightKey) {\r\n        var highlightDigit = _highlightKeyMap[highlightKey];\r\n        if (highlightDigit == null && _highlightNextDigit <= 32) {\r\n            highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\r\n        }\r\n        return highlightDigit;\r\n    }\r\n    function isSelectChangePayload(payload) {\r\n        var payloadType = payload.type;\r\n        return payloadType === SELECT_ACTION_TYPE\r\n            || payloadType === UNSELECT_ACTION_TYPE\r\n            || payloadType === TOGGLE_SELECT_ACTION_TYPE;\r\n    }\r\n    function isHighDownPayload(payload) {\r\n        var payloadType = payload.type;\r\n        return payloadType === HIGHLIGHT_ACTION_TYPE\r\n            || payloadType === DOWNPLAY_ACTION_TYPE;\r\n    }\r\n    function savePathStates(el) {\r\n        var store = getSavedStates(el);\r\n        store.normalFill = el.style.fill;\r\n        store.normalStroke = el.style.stroke;\r\n        var selectState = el.states.select || {};\r\n        store.selectFill = (selectState.style && selectState.style.fill) || null;\r\n        store.selectStroke = (selectState.style && selectState.style.stroke) || null;\r\n    }\n\n    var mathMax$4 = Math.max;\r\n    var mathMin$4 = Math.min;\r\n    var _customShapeMap = {};\r\n    function extendShape(opts) {\r\n        return Path.extend(opts);\r\n    }\r\n    var extendPathFromString = extendFromString;\r\n    function extendPath(pathData, opts) {\r\n        return extendPathFromString(pathData, opts);\r\n    }\r\n    function registerShape(name, ShapeClass) {\r\n        _customShapeMap[name] = ShapeClass;\r\n    }\r\n    function getShapeClass(name) {\r\n        if (_customShapeMap.hasOwnProperty(name)) {\r\n            return _customShapeMap[name];\r\n        }\r\n    }\r\n    function makePath(pathData, opts, rect, layout) {\r\n        var path = createFromString(pathData, opts);\r\n        if (rect) {\r\n            if (layout === 'center') {\r\n                rect = centerGraphic(rect, path.getBoundingRect());\r\n            }\r\n            resizePath(path, rect);\r\n        }\r\n        return path;\r\n    }\r\n    function makeImage(imageUrl, rect, layout) {\r\n        var zrImg = new ZRImage({\r\n            style: {\r\n                image: imageUrl,\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height\r\n            },\r\n            onload: function (img) {\r\n                if (layout === 'center') {\r\n                    var boundingRect = {\r\n                        width: img.width,\r\n                        height: img.height\r\n                    };\r\n                    zrImg.setStyle(centerGraphic(rect, boundingRect));\r\n                }\r\n            }\r\n        });\r\n        return zrImg;\r\n    }\r\n    function centerGraphic(rect, boundingRect) {\r\n        var aspect = boundingRect.width / boundingRect.height;\r\n        var width = rect.height * aspect;\r\n        var height;\r\n        if (width <= rect.width) {\r\n            height = rect.height;\r\n        }\r\n        else {\r\n            width = rect.width;\r\n            height = width / aspect;\r\n        }\r\n        var cx = rect.x + rect.width / 2;\r\n        var cy = rect.y + rect.height / 2;\r\n        return {\r\n            x: cx - width / 2,\r\n            y: cy - height / 2,\r\n            width: width,\r\n            height: height\r\n        };\r\n    }\r\n    var mergePath$1 = mergePath;\r\n    function resizePath(path, rect) {\r\n        if (!path.applyTransform) {\r\n            return;\r\n        }\r\n        var pathRect = path.getBoundingRect();\r\n        var m = pathRect.calculateTransform(rect);\r\n        path.applyTransform(m);\r\n    }\r\n    function subPixelOptimizeLine$1(param) {\r\n        subPixelOptimizeLine(param.shape, param.shape, param.style);\r\n        return param;\r\n    }\r\n    function subPixelOptimizeRect$1(param) {\r\n        subPixelOptimizeRect(param.shape, param.shape, param.style);\r\n        return param;\r\n    }\r\n    var subPixelOptimize$1 = subPixelOptimize;\r\n    function animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) {\r\n        var isFrom = false;\r\n        var removeOpt;\r\n        if (typeof dataIndex === 'function') {\r\n            during = cb;\r\n            cb = dataIndex;\r\n            dataIndex = null;\r\n        }\r\n        else if (isObject(dataIndex)) {\r\n            cb = dataIndex.cb;\r\n            during = dataIndex.during;\r\n            isFrom = dataIndex.isFrom;\r\n            removeOpt = dataIndex.removeOpt;\r\n            dataIndex = dataIndex.dataIndex;\r\n        }\r\n        var isUpdate = animationType === 'update';\r\n        var isRemove = animationType === 'remove';\r\n        var animationPayload;\r\n        if (animatableModel && animatableModel.ecModel) {\r\n            var updatePayload = animatableModel.ecModel.getUpdatePayload();\r\n            animationPayload = (updatePayload && updatePayload.animation);\r\n        }\r\n        var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\r\n        if (!isRemove) {\r\n            el.stopAnimation('remove');\r\n        }\r\n        if (animationEnabled) {\r\n            var duration = void 0;\r\n            var animationEasing = void 0;\r\n            var animationDelay = void 0;\r\n            if (animationPayload) {\r\n                duration = animationPayload.duration || 0;\r\n                animationEasing = animationPayload.easing || 'cubicOut';\r\n                animationDelay = animationPayload.delay || 0;\r\n            }\r\n            else if (isRemove) {\r\n                removeOpt = removeOpt || {};\r\n                duration = retrieve2(removeOpt.duration, 200);\r\n                animationEasing = retrieve2(removeOpt.easing, 'cubicOut');\r\n                animationDelay = 0;\r\n            }\r\n            else {\r\n                duration = animatableModel.getShallow(isUpdate ? 'animationDurationUpdate' : 'animationDuration');\r\n                animationEasing = animatableModel.getShallow(isUpdate ? 'animationEasingUpdate' : 'animationEasing');\r\n                animationDelay = animatableModel.getShallow(isUpdate ? 'animationDelayUpdate' : 'animationDelay');\r\n            }\r\n            if (typeof animationDelay === 'function') {\r\n                animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams\r\n                    ? animatableModel.getAnimationDelayParams(el, dataIndex)\r\n                    : null);\r\n            }\r\n            if (typeof duration === 'function') {\r\n                duration = duration(dataIndex);\r\n            }\r\n            duration > 0\r\n                ? (isFrom\r\n                    ? el.animateFrom(props, {\r\n                        duration: duration,\r\n                        delay: animationDelay || 0,\r\n                        easing: animationEasing,\r\n                        done: cb,\r\n                        force: !!cb || !!during,\r\n                        scope: animationType,\r\n                        during: during\r\n                    })\r\n                    : el.animateTo(props, {\r\n                        duration: duration,\r\n                        delay: animationDelay || 0,\r\n                        easing: animationEasing,\r\n                        done: cb,\r\n                        force: !!cb || !!during,\r\n                        setToFinal: true,\r\n                        scope: animationType,\r\n                        during: during\r\n                    }))\r\n                : (el.stopAnimation(),\r\n                    !isFrom && el.attr(props),\r\n                    cb && cb());\r\n        }\r\n        else {\r\n            el.stopAnimation();\r\n            !isFrom && el.attr(props);\r\n            during && during(1);\r\n            cb && cb();\r\n        }\r\n    }\r\n    function updateProps(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function initProps(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('init', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function removeElement(el, props, animatableModel, dataIndex, cb, during) {\r\n        if (isElementRemoved(el)) {\r\n            return;\r\n        }\r\n        animateOrSetProps('remove', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function fadeOutDisplayable(el, animatableModel, dataIndex, done) {\r\n        el.removeTextContent();\r\n        el.removeTextGuideLine();\r\n        removeElement(el, {\r\n            style: {\r\n                opacity: 0\r\n            }\r\n        }, animatableModel, dataIndex, done);\r\n    }\r\n    function removeElementWithFadeOut(el, animatableModel, dataIndex) {\r\n        function doRemove() {\r\n            el.parent && el.parent.remove(el);\r\n        }\r\n        if (!el.isGroup) {\r\n            fadeOutDisplayable(el, animatableModel, dataIndex, doRemove);\r\n        }\r\n        else {\r\n            el.traverse(function (disp) {\r\n                if (!disp.isGroup) {\r\n                    fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function isElementRemoved(el) {\r\n        if (!el.__zr) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < el.animators.length; i++) {\r\n            var animator = el.animators[i];\r\n            if (animator.scope === 'remove') {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function getTransform(target, ancestor) {\r\n        var mat = identity([]);\r\n        while (target && target !== ancestor) {\r\n            mul$1(mat, target.getLocalTransform(), mat);\r\n            target = target.parent;\r\n        }\r\n        return mat;\r\n    }\r\n    function applyTransform$1(target, transform, invert$1) {\r\n        if (transform && !isArrayLike(transform)) {\r\n            transform = Transformable.getLocalTransform(transform);\r\n        }\r\n        if (invert$1) {\r\n            transform = invert([], transform);\r\n        }\r\n        return applyTransform([], target, transform);\r\n    }\r\n    function transformDirection(direction, transform, invert) {\r\n        var hBase = (transform[4] === 0 || transform[5] === 0 || transform[0] === 0)\r\n            ? 1 : Math.abs(2 * transform[4] / transform[0]);\r\n        var vBase = (transform[4] === 0 || transform[5] === 0 || transform[2] === 0)\r\n            ? 1 : Math.abs(2 * transform[4] / transform[2]);\r\n        var vertex = [\r\n            direction === 'left' ? -hBase : direction === 'right' ? hBase : 0,\r\n            direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0\r\n        ];\r\n        vertex = applyTransform$1(vertex, transform, invert);\r\n        return Math.abs(vertex[0]) > Math.abs(vertex[1])\r\n            ? (vertex[0] > 0 ? 'right' : 'left')\r\n            : (vertex[1] > 0 ? 'bottom' : 'top');\r\n    }\r\n    function isNotGroup(el) {\r\n        return !el.isGroup;\r\n    }\r\n    function isPath(el) {\r\n        return el.shape != null;\r\n    }\r\n    function groupTransition(g1, g2, animatableModel) {\r\n        if (!g1 || !g2) {\r\n            return;\r\n        }\r\n        function getElMap(g) {\r\n            var elMap = {};\r\n            g.traverse(function (el) {\r\n                if (isNotGroup(el) && el.anid) {\r\n                    elMap[el.anid] = el;\r\n                }\r\n            });\r\n            return elMap;\r\n        }\r\n        function getAnimatableProps(el) {\r\n            var obj = {\r\n                x: el.x,\r\n                y: el.y,\r\n                rotation: el.rotation\r\n            };\r\n            if (isPath(el)) {\r\n                obj.shape = extend({}, el.shape);\r\n            }\r\n            return obj;\r\n        }\r\n        var elMap1 = getElMap(g1);\r\n        g2.traverse(function (el) {\r\n            if (isNotGroup(el) && el.anid) {\r\n                var oldEl = elMap1[el.anid];\r\n                if (oldEl) {\r\n                    var newProp = getAnimatableProps(el);\r\n                    el.attr(getAnimatableProps(oldEl));\r\n                    updateProps(el, newProp, animatableModel, getECData(el).dataIndex);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function clipPointsByRect(points, rect) {\r\n        return map(points, function (point) {\r\n            var x = point[0];\r\n            x = mathMax$4(x, rect.x);\r\n            x = mathMin$4(x, rect.x + rect.width);\r\n            var y = point[1];\r\n            y = mathMax$4(y, rect.y);\r\n            y = mathMin$4(y, rect.y + rect.height);\r\n            return [x, y];\r\n        });\r\n    }\r\n    function clipRectByRect(targetRect, rect) {\r\n        var x = mathMax$4(targetRect.x, rect.x);\r\n        var x2 = mathMin$4(targetRect.x + targetRect.width, rect.x + rect.width);\r\n        var y = mathMax$4(targetRect.y, rect.y);\r\n        var y2 = mathMin$4(targetRect.y + targetRect.height, rect.y + rect.height);\r\n        if (x2 >= x && y2 >= y) {\r\n            return {\r\n                x: x,\r\n                y: y,\r\n                width: x2 - x,\r\n                height: y2 - y\r\n            };\r\n        }\r\n    }\r\n    function createIcon(iconStr, opt, rect) {\r\n        var innerOpts = extend({ rectHover: true }, opt);\r\n        var style = innerOpts.style = { strokeNoScale: true };\r\n        rect = rect || { x: -1, y: -1, width: 2, height: 2 };\r\n        if (iconStr) {\r\n            return iconStr.indexOf('image://') === 0\r\n                ? (style.image = iconStr.slice(8),\r\n                    defaults(style, rect),\r\n                    new ZRImage(innerOpts))\r\n                : (makePath(iconStr.replace('path://', ''), innerOpts, rect, 'center'));\r\n        }\r\n    }\r\n    function linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\r\n        for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\r\n            var p = points[i];\r\n            if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\r\n                return true;\r\n            }\r\n            p2 = p;\r\n        }\r\n    }\r\n    function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\r\n        var mx = a2x - a1x;\r\n        var my = a2y - a1y;\r\n        var nx = b2x - b1x;\r\n        var ny = b2y - b1y;\r\n        var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\r\n        if (nearZero(nmCrossProduct)) {\r\n            return false;\r\n        }\r\n        var b1a1x = a1x - b1x;\r\n        var b1a1y = a1y - b1y;\r\n        var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\r\n        if (q < 0 || q > 1) {\r\n            return false;\r\n        }\r\n        var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\r\n        if (p < 0 || p > 1) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function crossProduct2d(x1, y1, x2, y2) {\r\n        return x1 * y2 - x2 * y1;\r\n    }\r\n    function nearZero(val) {\r\n        return val <= (1e-6) && val >= -(1e-6);\r\n    }\r\n    registerShape('circle', Circle);\r\n    registerShape('ellipse', Ellipse);\r\n    registerShape('sector', Sector);\r\n    registerShape('ring', Ring);\r\n    registerShape('polygon', Polygon);\r\n    registerShape('polyline', Polyline);\r\n    registerShape('rect', Rect);\r\n    registerShape('line', Line);\r\n    registerShape('bezierCurve', BezierCurve);\r\n    registerShape('arc', Arc);\n\n    var graphic = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        extendShape: extendShape,\n        extendPath: extendPath,\n        registerShape: registerShape,\n        getShapeClass: getShapeClass,\n        makePath: makePath,\n        makeImage: makeImage,\n        mergePath: mergePath$1,\n        resizePath: resizePath,\n        subPixelOptimizeLine: subPixelOptimizeLine$1,\n        subPixelOptimizeRect: subPixelOptimizeRect$1,\n        subPixelOptimize: subPixelOptimize$1,\n        updateProps: updateProps,\n        initProps: initProps,\n        removeElement: removeElement,\n        removeElementWithFadeOut: removeElementWithFadeOut,\n        isElementRemoved: isElementRemoved,\n        getTransform: getTransform,\n        applyTransform: applyTransform$1,\n        transformDirection: transformDirection,\n        groupTransition: groupTransition,\n        clipPointsByRect: clipPointsByRect,\n        clipRectByRect: clipRectByRect,\n        createIcon: createIcon,\n        linePolygonIntersect: linePolygonIntersect,\n        lineLineIntersect: lineLineIntersect,\n        Group: Group,\n        Image: ZRImage,\n        Text: ZRText,\n        Circle: Circle,\n        Ellipse: Ellipse,\n        Sector: Sector,\n        Ring: Ring,\n        Polygon: Polygon,\n        Polyline: Polyline,\n        Rect: Rect,\n        Line: Line,\n        BezierCurve: BezierCurve,\n        Arc: Arc,\n        IncrementalDisplayable: IncrementalDisplayble,\n        CompoundPath: CompoundPath,\n        LinearGradient: LinearGradient,\n        RadialGradient: RadialGradient,\n        BoundingRect: BoundingRect,\n        OrientedBoundingRect: OrientedBoundingRect,\n        Point: Point,\n        Path: Path\n    });\n\n    var EMPTY_OBJ = {};\r\n    function setLabelText(label, labelTexts) {\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            var text = labelTexts[stateName];\r\n            var state = label.ensureState(stateName);\r\n            state.style = state.style || {};\r\n            state.style.text = text;\r\n        }\r\n        var oldStates = label.currentStates.slice();\r\n        label.clearStates(true);\r\n        label.setStyle({ text: labelTexts.normal });\r\n        label.useStates(oldStates, true);\r\n    }\r\n    function getLabelText(opt, stateModels, overrideValue) {\r\n        var labelFetcher = opt.labelFetcher;\r\n        var labelDataIndex = opt.labelDataIndex;\r\n        var labelDimIndex = opt.labelDimIndex;\r\n        var normalModel = stateModels.normal;\r\n        var baseText;\r\n        if (labelFetcher) {\r\n            baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), overrideValue != null ? {\r\n                value: overrideValue\r\n            } : null);\r\n        }\r\n        if (baseText == null) {\r\n            baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, overrideValue) : opt.defaultText;\r\n        }\r\n        var statesText = {\r\n            normal: baseText\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            var stateModel = stateModels[stateName];\r\n            statesText[stateName] = retrieve2(labelFetcher\r\n                ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter'))\r\n                : null, baseText);\r\n        }\r\n        return statesText;\r\n    }\r\n    function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) {\r\n        opt = opt || EMPTY_OBJ;\r\n        var isSetOnText = targetEl instanceof ZRText;\r\n        var needsCreateText = false;\r\n        for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n            var stateModel = labelStatesModels[DISPLAY_STATES[i]];\r\n            if (stateModel && stateModel.getShallow('show')) {\r\n                needsCreateText = true;\r\n                break;\r\n            }\r\n        }\r\n        var textContent = isSetOnText ? targetEl : targetEl.getTextContent();\r\n        if (needsCreateText) {\r\n            if (!isSetOnText) {\r\n                if (!textContent) {\r\n                    textContent = new ZRText();\r\n                    targetEl.setTextContent(textContent);\r\n                }\r\n                if (targetEl.stateProxy) {\r\n                    textContent.stateProxy = targetEl.stateProxy;\r\n                }\r\n            }\r\n            var labelStatesTexts = getLabelText(opt, labelStatesModels);\r\n            var normalModel = labelStatesModels.normal;\r\n            var showNormal = !!normalModel.getShallow('show');\r\n            var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);\r\n            normalStyle.text = labelStatesTexts.normal;\r\n            if (!isSetOnText) {\r\n                targetEl.setTextConfig(createTextConfig(normalModel, opt, false));\r\n            }\r\n            for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n                var stateName = SPECIAL_STATES[i];\r\n                var stateModel = labelStatesModels[stateName];\r\n                if (stateModel) {\r\n                    var stateObj = textContent.ensureState(stateName);\r\n                    var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal);\r\n                    if (stateShow !== showNormal) {\r\n                        stateObj.ignore = !stateShow;\r\n                    }\r\n                    stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);\r\n                    stateObj.style.text = labelStatesTexts[stateName];\r\n                    if (!isSetOnText) {\r\n                        var targetElEmphasisState = targetEl.ensureState(stateName);\r\n                        targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);\r\n                    }\r\n                }\r\n            }\r\n            textContent.silent = !!normalModel.getShallow('silent');\r\n            if (textContent.style.x != null) {\r\n                normalStyle.x = textContent.style.x;\r\n            }\r\n            if (textContent.style.y != null) {\r\n                normalStyle.y = textContent.style.y;\r\n            }\r\n            textContent.ignore = !showNormal;\r\n            textContent.useStyle(normalStyle);\r\n            textContent.dirty();\r\n            if (opt.enableTextSetter) {\r\n                labelInner(textContent).setLabelText = function (overrideValue) {\r\n                    var labelStatesTexts = getLabelText(opt, labelStatesModels, overrideValue);\r\n                    setLabelText(textContent, labelStatesTexts);\r\n                };\r\n            }\r\n        }\r\n        else if (textContent) {\r\n            textContent.ignore = true;\r\n        }\r\n        targetEl.dirty();\r\n    }\r\n    function getLabelStatesModels(itemModel, labelName) {\r\n        labelName = (labelName || 'label');\r\n        var statesModels = {\r\n            normal: itemModel.getModel(labelName)\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            statesModels[stateName] = itemModel.getModel([stateName, labelName]);\r\n        }\r\n        return statesModels;\r\n    }\r\n    function createTextStyle(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) {\r\n        var textStyle = {};\r\n        setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);\r\n        specifiedTextStyle && extend(textStyle, specifiedTextStyle);\r\n        return textStyle;\r\n    }\r\n    function createTextConfig(textStyleModel, opt, isNotNormal) {\r\n        opt = opt || {};\r\n        var textConfig = {};\r\n        var labelPosition;\r\n        var labelRotate = textStyleModel.getShallow('rotate');\r\n        var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5);\r\n        var labelOffset = textStyleModel.getShallow('offset');\r\n        labelPosition = textStyleModel.getShallow('position')\r\n            || (isNotNormal ? null : 'inside');\r\n        labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top');\r\n        if (labelPosition != null) {\r\n            textConfig.position = labelPosition;\r\n        }\r\n        if (labelOffset != null) {\r\n            textConfig.offset = labelOffset;\r\n        }\r\n        if (labelRotate != null) {\r\n            labelRotate *= Math.PI / 180;\r\n            textConfig.rotation = labelRotate;\r\n        }\r\n        if (labelDistance != null) {\r\n            textConfig.distance = labelDistance;\r\n        }\r\n        textConfig.outsideFill = textStyleModel.get('color') === 'inherit'\r\n            ? (opt.inheritColor || null)\r\n            : 'auto';\r\n        return textConfig;\r\n    }\r\n    function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {\r\n        opt = opt || EMPTY_OBJ;\r\n        var ecModel = textStyleModel.ecModel;\r\n        var globalTextStyle = ecModel && ecModel.option.textStyle;\r\n        var richItemNames = getRichItemNames(textStyleModel);\r\n        var richResult;\r\n        if (richItemNames) {\r\n            richResult = {};\r\n            for (var name_1 in richItemNames) {\r\n                if (richItemNames.hasOwnProperty(name_1)) {\r\n                    var richTextStyle = textStyleModel.getModel(['rich', name_1]);\r\n                    setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);\r\n                }\r\n            }\r\n        }\r\n        if (richResult) {\r\n            textStyle.rich = richResult;\r\n        }\r\n        var overflow = textStyleModel.get('overflow');\r\n        if (overflow) {\r\n            textStyle.overflow = overflow;\r\n        }\r\n        var margin = textStyleModel.get('minMargin');\r\n        if (margin != null) {\r\n            textStyle.margin = margin;\r\n        }\r\n        setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);\r\n    }\r\n    function getRichItemNames(textStyleModel) {\r\n        var richItemNameMap;\r\n        while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\r\n            var rich = (textStyleModel.option || EMPTY_OBJ).rich;\r\n            if (rich) {\r\n                richItemNameMap = richItemNameMap || {};\r\n                var richKeys = keys(rich);\r\n                for (var i = 0; i < richKeys.length; i++) {\r\n                    var richKey = richKeys[i];\r\n                    richItemNameMap[richKey] = 1;\r\n                }\r\n            }\r\n            textStyleModel = textStyleModel.parentModel;\r\n        }\r\n        return richItemNameMap;\r\n    }\r\n    var TEXT_PROPS_WITH_GLOBAL = [\r\n        'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n        'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'\r\n    ];\r\n    var TEXT_PROPS_SELF = [\r\n        'align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign'\r\n    ];\r\n    var TEXT_PROPS_BOX = [\r\n        'padding', 'borderWidth', 'borderRadius', 'borderDashOffset',\r\n        'backgroundColor', 'borderColor',\r\n        'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'\r\n    ];\r\n    function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {\r\n        globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;\r\n        var inheritColor = opt && opt.inheritColor;\r\n        var fillColor = textStyleModel.getShallow('color');\r\n        var strokeColor = textStyleModel.getShallow('textBorderColor');\r\n        var opacity = retrieve2(textStyleModel.getShallow('opacity'), globalTextStyle.opacity);\r\n        if (fillColor === 'inherit' || fillColor === 'auto') {\r\n            if (__DEV__) {\r\n                if (fillColor === 'auto') {\r\n                    deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n                }\r\n            }\r\n            if (inheritColor) {\r\n                fillColor = inheritColor;\r\n            }\r\n            else {\r\n                fillColor = null;\r\n            }\r\n        }\r\n        if (strokeColor === 'inherit' || (strokeColor === 'auto')) {\r\n            if (__DEV__) {\r\n                if (strokeColor === 'auto') {\r\n                    deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n                }\r\n            }\r\n            if (inheritColor) {\r\n                strokeColor = inheritColor;\r\n            }\r\n            else {\r\n                strokeColor = null;\r\n            }\r\n        }\r\n        if (!isAttached) {\r\n            fillColor = fillColor || globalTextStyle.color;\r\n            strokeColor = strokeColor || globalTextStyle.textBorderColor;\r\n        }\r\n        if (fillColor != null) {\r\n            textStyle.fill = fillColor;\r\n        }\r\n        if (strokeColor != null) {\r\n            textStyle.stroke = strokeColor;\r\n        }\r\n        var textBorderWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\r\n        if (textBorderWidth != null) {\r\n            textStyle.lineWidth = textBorderWidth;\r\n        }\r\n        var textBorderType = retrieve2(textStyleModel.getShallow('textBorderType'), globalTextStyle.textBorderType);\r\n        if (textBorderType != null) {\r\n            textStyle.lineDash = textBorderType;\r\n        }\r\n        var textBorderDashOffset = retrieve2(textStyleModel.getShallow('textBorderDashOffset'), globalTextStyle.textBorderDashOffset);\r\n        if (textBorderDashOffset != null) {\r\n            textStyle.lineDashOffset = textBorderDashOffset;\r\n        }\r\n        if (!isNotNormal && (opacity == null) && !inRich) {\r\n            opacity = opt && opt.defaultOpacity;\r\n        }\r\n        if (opacity != null) {\r\n            textStyle.opacity = opacity;\r\n        }\r\n        if (!isNotNormal && !isAttached) {\r\n            if (textStyle.fill == null && opt.inheritColor) {\r\n                textStyle.fill = opt.inheritColor;\r\n            }\r\n        }\r\n        for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {\r\n            var key = TEXT_PROPS_WITH_GLOBAL[i];\r\n            var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);\r\n            if (val != null) {\r\n                textStyle[key] = val;\r\n            }\r\n        }\r\n        for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {\r\n            var key = TEXT_PROPS_SELF[i];\r\n            var val = textStyleModel.getShallow(key);\r\n            if (val != null) {\r\n                textStyle[key] = val;\r\n            }\r\n        }\r\n        if (textStyle.verticalAlign == null) {\r\n            var baseline = textStyleModel.getShallow('baseline');\r\n            if (baseline != null) {\r\n                textStyle.verticalAlign = baseline;\r\n            }\r\n        }\r\n        if (!isBlock || !opt.disableBox) {\r\n            for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {\r\n                var key = TEXT_PROPS_BOX[i];\r\n                var val = textStyleModel.getShallow(key);\r\n                if (val != null) {\r\n                    textStyle[key] = val;\r\n                }\r\n            }\r\n            var borderType = textStyleModel.getShallow('borderType');\r\n            if (borderType != null) {\r\n                textStyle.borderDash = borderType;\r\n            }\r\n            if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) {\r\n                if (__DEV__) {\r\n                    if (textStyle.backgroundColor === 'auto') {\r\n                        deprecateReplaceLog('backgroundColor: \\'auto\\'', 'backgroundColor: \\'inherit\\'');\r\n                    }\r\n                }\r\n                textStyle.backgroundColor = inheritColor;\r\n            }\r\n            if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) {\r\n                if (__DEV__) {\r\n                    if (textStyle.borderColor === 'auto') {\r\n                        deprecateReplaceLog('borderColor: \\'auto\\'', 'borderColor: \\'inherit\\'');\r\n                    }\r\n                }\r\n                textStyle.borderColor = inheritColor;\r\n            }\r\n        }\r\n    }\r\n    function getFont(opt, ecModel) {\r\n        var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\r\n        return trim([\r\n            opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '',\r\n            opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '',\r\n            (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px',\r\n            opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'\r\n        ].join(' '));\r\n    }\r\n    var labelInner = makeInner();\r\n    function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {\r\n        if (!label) {\r\n            return;\r\n        }\r\n        var obj = labelInner(label);\r\n        obj.prevValue = obj.value;\r\n        obj.value = value;\r\n        var normalLabelModel = labelStatesModels.normal;\r\n        obj.valueAnimation = normalLabelModel.get('valueAnimation');\r\n        if (obj.valueAnimation) {\r\n            obj.precision = normalLabelModel.get('precision');\r\n            obj.defaultInterpolatedText = getDefaultText;\r\n            obj.statesModels = labelStatesModels;\r\n        }\r\n    }\r\n    function animateLabelValue(textEl, dataIndex, data, seriesModel) {\r\n        var labelInnerStore = labelInner(textEl);\r\n        if (!labelInnerStore.valueAnimation) {\r\n            return;\r\n        }\r\n        var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText;\r\n        var prevValue = labelInnerStore.prevValue;\r\n        var currentValue = labelInnerStore.value;\r\n        function during(percent) {\r\n            var interpolated = interpolateRawValues(data, labelInnerStore.precision, prevValue, currentValue, percent);\r\n            var labelText = getLabelText({\r\n                labelDataIndex: dataIndex,\r\n                defaultText: defaultInterpolatedText\r\n                    ? defaultInterpolatedText(interpolated)\r\n                    : interpolated + ''\r\n            }, labelInnerStore.statesModels, interpolated);\r\n            setLabelText(textEl, labelText);\r\n        }\r\n        (prevValue == null ? initProps\r\n            : updateProps)(textEl, {}, seriesModel, dataIndex, null, during);\r\n    }\n\n    var PATH_COLOR = ['textStyle', 'color'];\r\n    var tmpRichText = new ZRText();\r\n    var TextStyleMixin = (function () {\r\n        function TextStyleMixin() {\r\n        }\r\n        TextStyleMixin.prototype.getTextColor = function (isEmphasis) {\r\n            var ecModel = this.ecModel;\r\n            return this.getShallow('color')\r\n                || ((!isEmphasis && ecModel) ? ecModel.get(PATH_COLOR) : null);\r\n        };\r\n        TextStyleMixin.prototype.getFont = function () {\r\n            return getFont({\r\n                fontStyle: this.getShallow('fontStyle'),\r\n                fontWeight: this.getShallow('fontWeight'),\r\n                fontSize: this.getShallow('fontSize'),\r\n                fontFamily: this.getShallow('fontFamily')\r\n            }, this.ecModel);\r\n        };\r\n        TextStyleMixin.prototype.getTextRect = function (text) {\r\n            tmpRichText.useStyle({\r\n                text: text,\r\n                fontStyle: this.getShallow('fontStyle'),\r\n                fontWeight: this.getShallow('fontWeight'),\r\n                fontSize: this.getShallow('fontSize'),\r\n                fontFamily: this.getShallow('fontFamily'),\r\n                verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline'),\r\n                padding: this.getShallow('padding'),\r\n                lineHeight: this.getShallow('lineHeight'),\r\n                rich: this.getShallow('rich')\r\n            });\r\n            tmpRichText.update();\r\n            return tmpRichText.getBoundingRect();\r\n        };\r\n        return TextStyleMixin;\r\n    }());\n\n    var LINE_STYLE_KEY_MAP = [\r\n        ['lineWidth', 'width'],\r\n        ['stroke', 'color'],\r\n        ['opacity'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor'],\r\n        ['lineDash', 'type'],\r\n        ['lineDashOffset', 'dashOffset'],\r\n        ['lineCap', 'cap'],\r\n        ['lineJoin', 'join'],\r\n        ['miterLimit']\r\n    ];\r\n    var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);\r\n    var LineStyleMixin = (function () {\r\n        function LineStyleMixin() {\r\n        }\r\n        LineStyleMixin.prototype.getLineStyle = function (excludes) {\r\n            return getLineStyle(this, excludes);\r\n        };\r\n        return LineStyleMixin;\r\n    }());\n\n    var ITEM_STYLE_KEY_MAP = [\r\n        ['fill', 'color'],\r\n        ['stroke', 'borderColor'],\r\n        ['lineWidth', 'borderWidth'],\r\n        ['opacity'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor'],\r\n        ['lineDash', 'borderType'],\r\n        ['lineDashOffset', 'borderDashOffset'],\r\n        ['lineCap', 'borderCap'],\r\n        ['lineJoin', 'borderJoin'],\r\n        ['miterLimit', 'borderMiterLimit']\r\n    ];\r\n    var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);\r\n    var ItemStyleMixin = (function () {\r\n        function ItemStyleMixin() {\r\n        }\r\n        ItemStyleMixin.prototype.getItemStyle = function (excludes, includes) {\r\n            return getItemStyle(this, excludes, includes);\r\n        };\r\n        return ItemStyleMixin;\r\n    }());\n\n    var Model = (function () {\r\n        function Model(option, parentModel, ecModel) {\r\n            this.parentModel = parentModel;\r\n            this.ecModel = ecModel;\r\n            this.option = option;\r\n        }\r\n        Model.prototype.init = function (option, parentModel, ecModel) {\r\n            var rest = [];\r\n            for (var _i = 3; _i < arguments.length; _i++) {\r\n                rest[_i - 3] = arguments[_i];\r\n            }\r\n        };\r\n        Model.prototype.mergeOption = function (option, ecModel) {\r\n            merge(this.option, option, true);\r\n        };\r\n        Model.prototype.get = function (path, ignoreParent) {\r\n            if (path == null) {\r\n                return this.option;\r\n            }\r\n            return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);\r\n        };\r\n        Model.prototype.getShallow = function (key, ignoreParent) {\r\n            var option = this.option;\r\n            var val = option == null ? option : option[key];\r\n            if (val == null && !ignoreParent) {\r\n                var parentModel = this.parentModel;\r\n                if (parentModel) {\r\n                    val = parentModel.getShallow(key);\r\n                }\r\n            }\r\n            return val;\r\n        };\r\n        Model.prototype.getModel = function (path, parentModel) {\r\n            var hasPath = path != null;\r\n            var pathFinal = hasPath ? this.parsePath(path) : null;\r\n            var obj = hasPath\r\n                ? this._doGet(pathFinal)\r\n                : this.option;\r\n            parentModel = parentModel || (this.parentModel\r\n                && this.parentModel.getModel(this.resolveParentPath(pathFinal)));\r\n            return new Model(obj, parentModel, this.ecModel);\r\n        };\r\n        Model.prototype.isEmpty = function () {\r\n            return this.option == null;\r\n        };\r\n        Model.prototype.restoreData = function () { };\r\n        Model.prototype.clone = function () {\r\n            var Ctor = this.constructor;\r\n            return new Ctor(clone(this.option));\r\n        };\r\n        Model.prototype.parsePath = function (path) {\r\n            if (typeof path === 'string') {\r\n                return path.split('.');\r\n            }\r\n            return path;\r\n        };\r\n        Model.prototype.resolveParentPath = function (path) {\r\n            return path;\r\n        };\r\n        Model.prototype.isAnimationEnabled = function () {\r\n            if (!env.node && this.option) {\r\n                if (this.option.animation != null) {\r\n                    return !!this.option.animation;\r\n                }\r\n                else if (this.parentModel) {\r\n                    return this.parentModel.isAnimationEnabled();\r\n                }\r\n            }\r\n        };\r\n        Model.prototype._doGet = function (pathArr, parentModel) {\r\n            var obj = this.option;\r\n            if (!pathArr) {\r\n                return obj;\r\n            }\r\n            for (var i = 0; i < pathArr.length; i++) {\r\n                if (!pathArr[i]) {\r\n                    continue;\r\n                }\r\n                obj = (obj && typeof obj === 'object') ? obj[pathArr[i]] : null;\r\n                if (obj == null) {\r\n                    break;\r\n                }\r\n            }\r\n            if (obj == null && parentModel) {\r\n                obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);\r\n            }\r\n            return obj;\r\n        };\r\n        return Model;\r\n    }());\r\n    enableClassExtend(Model);\r\n    enableClassCheck(Model);\r\n    mixin(Model, LineStyleMixin);\r\n    mixin(Model, ItemStyleMixin);\r\n    mixin(Model, AreaStyleMixin);\r\n    mixin(Model, TextStyleMixin);\n\n    var base = Math.round(Math.random() * 10);\r\n    function getUID(type) {\r\n        return [(type || ''), base++].join('_');\r\n    }\r\n    function enableSubTypeDefaulter(target) {\r\n        var subTypeDefaulters = {};\r\n        target.registerSubTypeDefaulter = function (componentType, defaulter) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            subTypeDefaulters[componentTypeInfo.main] = defaulter;\r\n        };\r\n        target.determineSubType = function (componentType, option) {\r\n            var type = option.type;\r\n            if (!type) {\r\n                var componentTypeMain = parseClassType(componentType).main;\r\n                if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\r\n                    type = subTypeDefaulters[componentTypeMain](option);\r\n                }\r\n            }\r\n            return type;\r\n        };\r\n    }\r\n    function enableTopologicalTravel(entity, dependencyGetter) {\r\n        entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\r\n            if (!targetNameList.length) {\r\n                return;\r\n            }\r\n            var result = makeDepndencyGraph(fullNameList);\r\n            var graph = result.graph;\r\n            var noEntryList = result.noEntryList;\r\n            var targetNameSet = {};\r\n            each(targetNameList, function (name) {\r\n                targetNameSet[name] = true;\r\n            });\r\n            while (noEntryList.length) {\r\n                var currComponentType = noEntryList.pop();\r\n                var currVertex = graph[currComponentType];\r\n                var isInTargetNameSet = !!targetNameSet[currComponentType];\r\n                if (isInTargetNameSet) {\r\n                    callback.call(context, currComponentType, currVertex.originalDeps.slice());\r\n                    delete targetNameSet[currComponentType];\r\n                }\r\n                each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\r\n            }\r\n            each(targetNameSet, function () {\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = makePrintable('Circle dependency may exists: ', targetNameSet, targetNameList, fullNameList);\r\n                }\r\n                throw new Error(errMsg);\r\n            });\r\n            function removeEdge(succComponentType) {\r\n                graph[succComponentType].entryCount--;\r\n                if (graph[succComponentType].entryCount === 0) {\r\n                    noEntryList.push(succComponentType);\r\n                }\r\n            }\r\n            function removeEdgeAndAdd(succComponentType) {\r\n                targetNameSet[succComponentType] = true;\r\n                removeEdge(succComponentType);\r\n            }\r\n        };\r\n        function makeDepndencyGraph(fullNameList) {\r\n            var graph = {};\r\n            var noEntryList = [];\r\n            each(fullNameList, function (name) {\r\n                var thisItem = createDependencyGraphItem(graph, name);\r\n                var originalDeps = thisItem.originalDeps = dependencyGetter(name);\r\n                var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\r\n                thisItem.entryCount = availableDeps.length;\r\n                if (thisItem.entryCount === 0) {\r\n                    noEntryList.push(name);\r\n                }\r\n                each(availableDeps, function (dependentName) {\r\n                    if (indexOf(thisItem.predecessor, dependentName) < 0) {\r\n                        thisItem.predecessor.push(dependentName);\r\n                    }\r\n                    var thatItem = createDependencyGraphItem(graph, dependentName);\r\n                    if (indexOf(thatItem.successor, dependentName) < 0) {\r\n                        thatItem.successor.push(name);\r\n                    }\r\n                });\r\n            });\r\n            return { graph: graph, noEntryList: noEntryList };\r\n        }\r\n        function createDependencyGraphItem(graph, name) {\r\n            if (!graph[name]) {\r\n                graph[name] = { predecessor: [], successor: [] };\r\n            }\r\n            return graph[name];\r\n        }\r\n        function getAvailableDependencies(originalDeps, fullNameList) {\r\n            var availableDeps = [];\r\n            each(originalDeps, function (dep) {\r\n                indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\r\n            });\r\n            return availableDeps;\r\n        }\r\n    }\r\n    function inheritDefaultOption(superOption, subOption) {\r\n        return merge(merge({}, superOption, true), subOption, true);\r\n    }\n\n    var langEN = {\r\n        time: {\r\n            month: [\r\n                'January', 'February', 'March', 'April', 'May', 'June',\r\n                'July', 'August', 'September', 'October', 'November', 'December'\r\n            ],\r\n            monthAbbr: [\r\n                'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\r\n                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\r\n            ],\r\n            dayOfWeek: [\r\n                'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\r\n            ],\r\n            dayOfWeekAbbr: [\r\n                'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'\r\n            ]\r\n        },\r\n        legend: {\r\n            selector: {\r\n                all: 'All',\r\n                inverse: 'Inv'\r\n            }\r\n        },\r\n        toolbox: {\r\n            brush: {\r\n                title: {\r\n                    rect: 'Box Select',\r\n                    polygon: 'Lasso Select',\r\n                    lineX: 'Horizontally Select',\r\n                    lineY: 'Vertically Select',\r\n                    keep: 'Keep Selections',\r\n                    clear: 'Clear Selections'\r\n                }\r\n            },\r\n            dataView: {\r\n                title: 'Data View',\r\n                lang: ['Data View', 'Close', 'Refresh']\r\n            },\r\n            dataZoom: {\r\n                title: {\r\n                    zoom: 'Zoom',\r\n                    back: 'Zoom Reset'\r\n                }\r\n            },\r\n            magicType: {\r\n                title: {\r\n                    line: 'Switch to Line Chart',\r\n                    bar: 'Switch to Bar Chart',\r\n                    stack: 'Stack',\r\n                    tiled: 'Tile'\r\n                }\r\n            },\r\n            restore: {\r\n                title: 'Restore'\r\n            },\r\n            saveAsImage: {\r\n                title: 'Save as Image',\r\n                lang: ['Right Click to Save Image']\r\n            }\r\n        },\r\n        series: {\r\n            typeNames: {\r\n                pie: 'Pie chart',\r\n                bar: 'Bar chart',\r\n                line: 'Line chart',\r\n                scatter: 'Scatter plot',\r\n                effectScatter: 'Ripple scatter plot',\r\n                radar: 'Radar chart',\r\n                tree: 'Tree',\r\n                treemap: 'Treemap',\r\n                boxplot: 'Boxplot',\r\n                candlestick: 'Candlestick',\r\n                k: 'K line chart',\r\n                heatmap: 'Heat map',\r\n                map: 'Map',\r\n                parallel: 'Parallel coordinate map',\r\n                lines: 'Line graph',\r\n                graph: 'Relationship graph',\r\n                sankey: 'Sankey diagram',\r\n                funnel: 'Funnel chart',\r\n                gauge: 'Guage',\r\n                pictorialBar: 'Pictorial bar',\r\n                themeRiver: 'Theme River Map',\r\n                sunburst: 'Sunburst'\r\n            }\r\n        },\r\n        aria: {\r\n            general: {\r\n                withTitle: 'This is a chart about \"{title}\"',\r\n                withoutTitle: 'This is a chart'\r\n            },\r\n            series: {\r\n                single: {\r\n                    prefix: '',\r\n                    withName: ' with type {seriesType} named {seriesName}.',\r\n                    withoutName: ' with type {seriesType}.'\r\n                },\r\n                multiple: {\r\n                    prefix: '. It consists of {seriesCount} series count.',\r\n                    withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\r\n                    withoutName: ' The {seriesId} series is a {seriesType}.',\r\n                    separator: {\r\n                        middle: '',\r\n                        end: ''\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                allData: 'The data is as follows: ',\r\n                partialData: 'The first {displayCnt} items are: ',\r\n                withName: 'the data for {name} is {value}',\r\n                withoutName: '{value}',\r\n                separator: {\r\n                    middle: ', ',\r\n                    end: '. '\r\n                }\r\n            }\r\n        }\r\n    };\n\n    var langZH = {\r\n        time: {\r\n            month: [\r\n                '一月', '二月', '三月', '四月', '五月', '六月',\r\n                '七月', '八月', '九月', '十月', '十一月', '十二月'\r\n            ],\r\n            monthAbbr: [\r\n                '1月', '2月', '3月', '4月', '5月', '6月',\r\n                '7月', '8月', '9月', '10月', '11月', '12月'\r\n            ],\r\n            dayOfWeek: [\r\n                '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'\r\n            ],\r\n            dayOfWeekAbbr: [\r\n                '日', '一', '二', '三', '四', '五', '六'\r\n            ]\r\n        },\r\n        legend: {\r\n            selector: {\r\n                all: '全选',\r\n                inverse: '反选'\r\n            }\r\n        },\r\n        toolbox: {\r\n            brush: {\r\n                title: {\r\n                    rect: '矩形选择',\r\n                    polygon: '圈选',\r\n                    lineX: '横向选择',\r\n                    lineY: '纵向选择',\r\n                    keep: '保持选择',\r\n                    clear: '清除选择'\r\n                }\r\n            },\r\n            dataView: {\r\n                title: '数据视图',\r\n                lang: ['数据视图', '关闭', '刷新']\r\n            },\r\n            dataZoom: {\r\n                title: {\r\n                    zoom: '区域缩放',\r\n                    back: '区域缩放还原'\r\n                }\r\n            },\r\n            magicType: {\r\n                title: {\r\n                    line: '切换为折线图',\r\n                    bar: '切换为柱状图',\r\n                    stack: '切换为堆叠',\r\n                    tiled: '切换为平铺'\r\n                }\r\n            },\r\n            restore: {\r\n                title: '还原'\r\n            },\r\n            saveAsImage: {\r\n                title: '保存为图片',\r\n                lang: ['右键另存为图片']\r\n            }\r\n        },\r\n        series: {\r\n            typeNames: {\r\n                pie: '饼图',\r\n                bar: '柱状图',\r\n                line: '折线图',\r\n                scatter: '散点图',\r\n                effectScatter: '涟漪散点图',\r\n                radar: '雷达图',\r\n                tree: '树图',\r\n                treemap: '矩形树图',\r\n                boxplot: '箱型图',\r\n                candlestick: 'K线图',\r\n                k: 'K线图',\r\n                heatmap: '热力图',\r\n                map: '地图',\r\n                parallel: '平行坐标图',\r\n                lines: '线图',\r\n                graph: '关系图',\r\n                sankey: '桑基图',\r\n                funnel: '漏斗图',\r\n                gauge: '仪表盘图',\r\n                pictorialBar: '象形柱图',\r\n                themeRiver: '主题河流图',\r\n                sunburst: '旭日图'\r\n            }\r\n        },\r\n        aria: {\r\n            general: {\r\n                withTitle: '这是一个关于“{title}”的图表。',\r\n                withoutTitle: '这是一个图表，'\r\n            },\r\n            series: {\r\n                single: {\r\n                    prefix: '',\r\n                    withName: '图表类型是{seriesType}，表示{seriesName}。',\r\n                    withoutName: '图表类型是{seriesType}。'\r\n                },\r\n                multiple: {\r\n                    prefix: '它由{seriesCount}个图表系列组成。',\r\n                    withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType}，',\r\n                    withoutName: '第{seriesId}个系列是一个{seriesType}，',\r\n                    separator: {\r\n                        middle: '；',\r\n                        end: '。'\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                allData: '其数据是——',\r\n                partialData: '其中，前{displayCnt}项是——',\r\n                withName: '{name}的数据是{value}',\r\n                withoutName: '{value}',\r\n                separator: {\r\n                    middle: '，',\r\n                    end: ''\r\n                }\r\n            }\r\n        }\r\n    };\n\n    var LOCALE_ZH = 'ZH';\r\n    var LOCALE_EN = 'EN';\r\n    var DEFAULT_LOCALE = LOCALE_EN;\r\n    var localeStorage = {};\r\n    var localeModels = {};\r\n    var SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : (function () {\r\n        var langStr = (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase();\r\n        return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;\r\n    })();\r\n    function registerLocale(locale, localeObj) {\r\n        locale = locale.toUpperCase();\r\n        localeModels[locale] = new Model(localeObj);\r\n        localeStorage[locale] = localeObj;\r\n    }\r\n    function createLocaleObject(locale) {\r\n        if (isString(locale)) {\r\n            var localeObj = localeStorage[locale.toUpperCase()] || {};\r\n            if (locale === LOCALE_ZH || locale === LOCALE_EN) {\r\n                return clone(localeObj);\r\n            }\r\n            else {\r\n                return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n            }\r\n        }\r\n        else {\r\n            return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n        }\r\n    }\r\n    function getLocaleModel(lang) {\r\n        return localeModels[lang];\r\n    }\r\n    function getDefaultLocaleModel() {\r\n        return localeModels[DEFAULT_LOCALE];\r\n    }\r\n    registerLocale(LOCALE_EN, langEN);\r\n    registerLocale(LOCALE_ZH, langZH);\n\n    var ONE_SECOND = 1000;\r\n    var ONE_MINUTE = ONE_SECOND * 60;\r\n    var ONE_HOUR = ONE_MINUTE * 60;\r\n    var ONE_DAY = ONE_HOUR * 24;\r\n    var ONE_YEAR = ONE_DAY * 365;\r\n    var defaultLeveledFormatter = {\r\n        year: '{yyyy}',\r\n        month: '{MMM}',\r\n        day: '{d}',\r\n        hour: '{HH}:{mm}',\r\n        minute: '{HH}:{mm}',\r\n        second: '{HH}:{mm}:{ss}',\r\n        millisecond: '{hh}:{mm}:{ss} {SSS}',\r\n        none: '{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}'\r\n    };\r\n    var fullDayFormatter = '{yyyy}-{MM}-{dd}';\r\n    var fullLeveledFormatter = {\r\n        year: '{yyyy}',\r\n        month: '{yyyy}-{MM}',\r\n        day: fullDayFormatter,\r\n        hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour,\r\n        minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute,\r\n        second: fullDayFormatter + ' ' + defaultLeveledFormatter.second,\r\n        millisecond: defaultLeveledFormatter.none\r\n    };\r\n    var primaryTimeUnits = [\r\n        'year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'\r\n    ];\r\n    var timeUnits = [\r\n        'year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day',\r\n        'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond'\r\n    ];\r\n    function pad(str, len) {\r\n        str += '';\r\n        return '0000'.substr(0, len - str.length) + str;\r\n    }\r\n    function getPrimaryTimeUnit(timeUnit) {\r\n        switch (timeUnit) {\r\n            case 'half-year':\r\n            case 'quarter':\r\n                return 'month';\r\n            case 'week':\r\n            case 'half-week':\r\n                return 'day';\r\n            case 'half-day':\r\n            case 'quarter-day':\r\n                return 'hour';\r\n            default:\r\n                return timeUnit;\r\n        }\r\n    }\r\n    function isPrimaryTimeUnit(timeUnit) {\r\n        return timeUnit === getPrimaryTimeUnit(timeUnit);\r\n    }\r\n    function getDefaultFormatPrecisionOfInterval(timeUnit) {\r\n        switch (timeUnit) {\r\n            case 'year':\r\n            case 'month':\r\n                return 'day';\r\n            case 'millisecond':\r\n                return 'millisecond';\r\n            default:\r\n                return 'second';\r\n        }\r\n    }\r\n    function format(time, template, isUTC, lang) {\r\n        var date = parseDate(time);\r\n        var y = date[fullYearGetterName(isUTC)]();\r\n        var M = date[monthGetterName(isUTC)]() + 1;\r\n        var q = Math.floor((M - 1) / 4) + 1;\r\n        var d = date[dateGetterName(isUTC)]();\r\n        var e = date['get' + (isUTC ? 'UTC' : '') + 'Day']();\r\n        var H = date[hoursGetterName(isUTC)]();\r\n        var h = (H - 1) % 12 + 1;\r\n        var m = date[minutesGetterName(isUTC)]();\r\n        var s = date[secondsGetterName(isUTC)]();\r\n        var S = date[millisecondsGetterName(isUTC)]();\r\n        var localeModel = lang instanceof Model ? lang\r\n            : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();\r\n        var timeModel = localeModel.getModel('time');\r\n        var month = timeModel.get('month');\r\n        var monthAbbr = timeModel.get('monthAbbr');\r\n        var dayOfWeek = timeModel.get('dayOfWeek');\r\n        var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr');\r\n        return (template || '')\r\n            .replace(/{yyyy}/g, y + '')\r\n            .replace(/{yy}/g, y % 100 + '')\r\n            .replace(/{Q}/g, q + '')\r\n            .replace(/{MMMM}/g, month[M - 1])\r\n            .replace(/{MMM}/g, monthAbbr[M - 1])\r\n            .replace(/{MM}/g, pad(M, 2))\r\n            .replace(/{M}/g, M + '')\r\n            .replace(/{dd}/g, pad(d, 2))\r\n            .replace(/{d}/g, d + '')\r\n            .replace(/{eeee}/g, dayOfWeek[e])\r\n            .replace(/{ee}/g, dayOfWeekAbbr[e])\r\n            .replace(/{e}/g, e + '')\r\n            .replace(/{HH}/g, pad(H, 2))\r\n            .replace(/{H}/g, H + '')\r\n            .replace(/{hh}/g, pad(h + '', 2))\r\n            .replace(/{h}/g, h + '')\r\n            .replace(/{mm}/g, pad(m, 2))\r\n            .replace(/{m}/g, m + '')\r\n            .replace(/{ss}/g, pad(s, 2))\r\n            .replace(/{s}/g, s + '')\r\n            .replace(/{SSS}/g, pad(S, 3))\r\n            .replace(/{S}/g, S + '');\r\n    }\r\n    function leveledFormat(tick, idx, formatter, lang, isUTC) {\r\n        var template = null;\r\n        if (typeof formatter === 'string') {\r\n            template = formatter;\r\n        }\r\n        else if (typeof formatter === 'function') {\r\n            template = formatter(tick.value, idx, {\r\n                level: tick.level\r\n            });\r\n        }\r\n        else {\r\n            var defaults$1 = extend({}, defaultLeveledFormatter);\r\n            if (tick.level > 0) {\r\n                for (var i = 0; i < primaryTimeUnits.length; ++i) {\r\n                    defaults$1[primaryTimeUnits[i]] = \"{primary|\" + defaults$1[primaryTimeUnits[i]] + \"}\";\r\n                }\r\n            }\r\n            var mergedFormatter = (formatter\r\n                ? (formatter.inherit === false\r\n                    ? formatter\r\n                    : defaults(formatter, defaults$1))\r\n                : defaults$1);\r\n            var unit = getUnitFromValue(tick.value, isUTC);\r\n            if (mergedFormatter[unit]) {\r\n                template = mergedFormatter[unit];\r\n            }\r\n            else if (mergedFormatter.inherit) {\r\n                var targetId = timeUnits.indexOf(unit);\r\n                for (var i = targetId - 1; i >= 0; --i) {\r\n                    if (mergedFormatter[unit]) {\r\n                        template = mergedFormatter[unit];\r\n                        break;\r\n                    }\r\n                }\r\n                template = template || defaults$1.none;\r\n            }\r\n            if (isArray(template)) {\r\n                var levelId = tick.level == null\r\n                    ? 0\r\n                    : (tick.level >= 0 ? tick.level : template.length + tick.level);\r\n                levelId = Math.min(levelId, template.length - 1);\r\n                template = template[levelId];\r\n            }\r\n        }\r\n        return format(new Date(tick.value), template, isUTC, lang);\r\n    }\r\n    function getUnitFromValue(value, isUTC) {\r\n        var date = parseDate(value);\r\n        var M = date[monthGetterName(isUTC)]() + 1;\r\n        var d = date[dateGetterName(isUTC)]();\r\n        var h = date[hoursGetterName(isUTC)]();\r\n        var m = date[minutesGetterName(isUTC)]();\r\n        var s = date[secondsGetterName(isUTC)]();\r\n        var S = date[millisecondsGetterName(isUTC)]();\r\n        var isSecond = S === 0;\r\n        var isMinute = isSecond && s === 0;\r\n        var isHour = isMinute && m === 0;\r\n        var isDay = isHour && h === 0;\r\n        var isMonth = isDay && d === 1;\r\n        var isYear = isMonth && M === 1;\r\n        if (isYear) {\r\n            return 'year';\r\n        }\r\n        else if (isMonth) {\r\n            return 'month';\r\n        }\r\n        else if (isDay) {\r\n            return 'day';\r\n        }\r\n        else if (isHour) {\r\n            return 'hour';\r\n        }\r\n        else if (isMinute) {\r\n            return 'minute';\r\n        }\r\n        else if (isSecond) {\r\n            return 'second';\r\n        }\r\n        else {\r\n            return 'millisecond';\r\n        }\r\n    }\r\n    function getUnitValue(value, unit, isUTC) {\r\n        var date = typeof value === 'number'\r\n            ? parseDate(value)\r\n            : value;\r\n        unit = unit || getUnitFromValue(value, isUTC);\r\n        switch (unit) {\r\n            case 'year':\r\n                return date[fullYearGetterName(isUTC)]();\r\n            case 'half-year':\r\n                return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0;\r\n            case 'quarter':\r\n                return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4);\r\n            case 'month':\r\n                return date[monthGetterName(isUTC)]();\r\n            case 'day':\r\n                return date[dateGetterName(isUTC)]();\r\n            case 'half-day':\r\n                return date[hoursGetterName(isUTC)]() / 24;\r\n            case 'hour':\r\n                return date[hoursGetterName(isUTC)]();\r\n            case 'minute':\r\n                return date[minutesGetterName(isUTC)]();\r\n            case 'second':\r\n                return date[secondsGetterName(isUTC)]();\r\n            case 'millisecond':\r\n                return date[millisecondsGetterName(isUTC)]();\r\n        }\r\n    }\r\n    function fullYearGetterName(isUTC) {\r\n        return isUTC ? 'getUTCFullYear' : 'getFullYear';\r\n    }\r\n    function monthGetterName(isUTC) {\r\n        return isUTC ? 'getUTCMonth' : 'getMonth';\r\n    }\r\n    function dateGetterName(isUTC) {\r\n        return isUTC ? 'getUTCDate' : 'getDate';\r\n    }\r\n    function hoursGetterName(isUTC) {\r\n        return isUTC ? 'getUTCHours' : 'getHours';\r\n    }\r\n    function minutesGetterName(isUTC) {\r\n        return isUTC ? 'getUTCMinutes' : 'getMinutes';\r\n    }\r\n    function secondsGetterName(isUTC) {\r\n        return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n    }\r\n    function millisecondsGetterName(isUTC) {\r\n        return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n    }\r\n    function fullYearSetterName(isUTC) {\r\n        return isUTC ? 'setUTCFullYear' : 'setFullYear';\r\n    }\r\n    function monthSetterName(isUTC) {\r\n        return isUTC ? 'setUTCMonth' : 'setMonth';\r\n    }\r\n    function dateSetterName(isUTC) {\r\n        return isUTC ? 'setUTCDate' : 'setDate';\r\n    }\r\n    function hoursSetterName(isUTC) {\r\n        return isUTC ? 'setUTCHours' : 'setHours';\r\n    }\r\n    function minutesSetterName(isUTC) {\r\n        return isUTC ? 'setUTCMinutes' : 'setMinutes';\r\n    }\r\n    function secondsSetterName(isUTC) {\r\n        return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n    }\r\n    function millisecondsSetterName(isUTC) {\r\n        return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n    }\n\n    function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {\r\n        deprecateLog('getTextRect is deprecated.');\r\n        var textEl = new ZRText({\r\n            style: {\r\n                text: text,\r\n                font: font,\r\n                align: align,\r\n                verticalAlign: verticalAlign,\r\n                padding: padding,\r\n                rich: rich,\r\n                overflow: truncate ? 'truncate' : null,\r\n                lineHeight: lineHeight\r\n            }\r\n        });\r\n        return textEl.getBoundingRect();\r\n    }\n\n    function addCommas(x) {\r\n        if (!isNumeric(x)) {\r\n            return isString(x) ? x : '-';\r\n        }\r\n        var parts = (x + '').split('.');\r\n        return parts[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,')\r\n            + (parts.length > 1 ? ('.' + parts[1]) : '');\r\n    }\r\n    function toCamelCase(str, upperCaseFirst) {\r\n        str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\r\n            return group1.toUpperCase();\r\n        });\r\n        if (upperCaseFirst && str) {\r\n            str = str.charAt(0).toUpperCase() + str.slice(1);\r\n        }\r\n        return str;\r\n    }\r\n    var normalizeCssArray$1 = normalizeCssArray;\r\n    var replaceReg = /([&<>\"'])/g;\r\n    var replaceMap = {\r\n        '&': '&amp;',\r\n        '<': '&lt;',\r\n        '>': '&gt;',\r\n        '\"': '&quot;',\r\n        '\\'': '&#39;'\r\n    };\r\n    function encodeHTML(source) {\r\n        return source == null\r\n            ? ''\r\n            : (source + '').replace(replaceReg, function (str, c) {\r\n                return replaceMap[c];\r\n            });\r\n    }\r\n    function makeValueReadable(value, valueType, useUTC) {\r\n        var USER_READABLE_DEFUALT_TIME_PATTERN = 'yyyy-MM-dd hh:mm:ss';\r\n        function stringToUserReadable(str) {\r\n            return (str && trim(str)) ? str : '-';\r\n        }\r\n        function isNumberUserReadable(num) {\r\n            return !!(num != null && !isNaN(num) && isFinite(num));\r\n        }\r\n        var isTypeTime = valueType === 'time';\r\n        var isValueDate = value instanceof Date;\r\n        if (isTypeTime || isValueDate) {\r\n            var date = isTypeTime ? parseDate(value) : value;\r\n            if (!isNaN(+date)) {\r\n                return format(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC);\r\n            }\r\n            else if (isValueDate) {\r\n                return '-';\r\n            }\r\n        }\r\n        if (valueType === 'ordinal') {\r\n            return isStringSafe(value)\r\n                ? stringToUserReadable(value)\r\n                : isNumber(value)\r\n                    ? (isNumberUserReadable(value) ? value + '' : '-')\r\n                    : '-';\r\n        }\r\n        var numericResult = numericToNumber(value);\r\n        return isNumberUserReadable(numericResult)\r\n            ? addCommas(numericResult)\r\n            : isStringSafe(value)\r\n                ? stringToUserReadable(value)\r\n                : '-';\r\n    }\r\n    var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\r\n    var wrapVar = function (varName, seriesIdx) {\r\n        return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\r\n    };\r\n    function formatTpl(tpl, paramsList, encode) {\r\n        if (!isArray(paramsList)) {\r\n            paramsList = [paramsList];\r\n        }\r\n        var seriesLen = paramsList.length;\r\n        if (!seriesLen) {\r\n            return '';\r\n        }\r\n        var $vars = paramsList[0].$vars || [];\r\n        for (var i = 0; i < $vars.length; i++) {\r\n            var alias = TPL_VAR_ALIAS[i];\r\n            tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\r\n        }\r\n        for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\r\n            for (var k = 0; k < $vars.length; k++) {\r\n                var val = paramsList[seriesIdx][$vars[k]];\r\n                tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\r\n            }\r\n        }\r\n        return tpl;\r\n    }\r\n    function formatTplSimple(tpl, param, encode) {\r\n        each(param, function (value, key) {\r\n            tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\r\n        });\r\n        return tpl;\r\n    }\r\n    function getTooltipMarker(inOpt, extraCssText) {\r\n        var opt = isString(inOpt) ? {\r\n            color: inOpt,\r\n            extraCssText: extraCssText\r\n        } : (inOpt || {});\r\n        var color = opt.color;\r\n        var type = opt.type;\r\n        extraCssText = opt.extraCssText;\r\n        var renderMode = opt.renderMode || 'html';\r\n        if (!color) {\r\n            return '';\r\n        }\r\n        if (renderMode === 'html') {\r\n            return type === 'subItem'\r\n                ? '<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;'\r\n                    + 'border-radius:4px;width:4px;height:4px;background-color:'\r\n                    + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>'\r\n                : '<span style=\"display:inline-block;margin-right:4px;'\r\n                    + 'border-radius:10px;width:10px;height:10px;background-color:'\r\n                    + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>';\r\n        }\r\n        else {\r\n            var markerId = opt.markerId || 'markerX';\r\n            return {\r\n                renderMode: renderMode,\r\n                content: '{' + markerId + '|}  ',\r\n                style: type === 'subItem'\r\n                    ? {\r\n                        width: 4,\r\n                        height: 4,\r\n                        borderRadius: 2,\r\n                        backgroundColor: color\r\n                    }\r\n                    : {\r\n                        width: 10,\r\n                        height: 10,\r\n                        borderRadius: 5,\r\n                        backgroundColor: color\r\n                    }\r\n            };\r\n        }\r\n    }\r\n    function formatTime(tpl, value, isUTC) {\r\n        if (__DEV__) {\r\n            deprecateReplaceLog('echarts.format.formatTime', 'echarts.time.format');\r\n        }\r\n        if (tpl === 'week'\r\n            || tpl === 'month'\r\n            || tpl === 'quarter'\r\n            || tpl === 'half-year'\r\n            || tpl === 'year') {\r\n            tpl = 'MM-dd\\nyyyy';\r\n        }\r\n        var date = parseDate(value);\r\n        var utc = isUTC ? 'UTC' : '';\r\n        var y = date['get' + utc + 'FullYear']();\r\n        var M = date['get' + utc + 'Month']() + 1;\r\n        var d = date['get' + utc + 'Date']();\r\n        var h = date['get' + utc + 'Hours']();\r\n        var m = date['get' + utc + 'Minutes']();\r\n        var s = date['get' + utc + 'Seconds']();\r\n        var S = date['get' + utc + 'Milliseconds']();\r\n        tpl = tpl.replace('MM', pad(M, 2))\r\n            .replace('M', M)\r\n            .replace('yyyy', y)\r\n            .replace('yy', y % 100 + '')\r\n            .replace('dd', pad(d, 2))\r\n            .replace('d', d)\r\n            .replace('hh', pad(h, 2))\r\n            .replace('h', h)\r\n            .replace('mm', pad(m, 2))\r\n            .replace('m', m)\r\n            .replace('ss', pad(s, 2))\r\n            .replace('s', s)\r\n            .replace('SSS', pad(S, 3));\r\n        return tpl;\r\n    }\r\n    function capitalFirst(str) {\r\n        return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\r\n    }\r\n    function convertToColorString(color, defaultColor) {\r\n        defaultColor = defaultColor || 'transparent';\r\n        return isString(color)\r\n            ? color\r\n            : isObject(color)\r\n                ? (color.colorStops\r\n                    && (color.colorStops[0] || {}).color\r\n                    || defaultColor)\r\n                : defaultColor;\r\n    }\r\n    function windowOpen(link, target) {\r\n        if (target === '_blank' || target === 'blank') {\r\n            var blank = window.open();\r\n            blank.opener = null;\r\n            blank.location.href = link;\r\n        }\r\n        else {\r\n            window.open(link, target);\r\n        }\r\n    }\n\n    var formatUtil = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        addCommas: addCommas,\n        toCamelCase: toCamelCase,\n        normalizeCssArray: normalizeCssArray$1,\n        encodeHTML: encodeHTML,\n        makeValueReadable: makeValueReadable,\n        formatTpl: formatTpl,\n        formatTplSimple: formatTplSimple,\n        getTooltipMarker: getTooltipMarker,\n        formatTime: formatTime,\n        capitalFirst: capitalFirst,\n        convertToColorString: convertToColorString,\n        windowOpen: windowOpen,\n        truncateText: truncateText,\n        getTextRect: getTextRect\n    });\n\n    var each$1 = each;\r\n    var LOCATION_PARAMS = [\r\n        'left', 'right', 'top', 'bottom', 'width', 'height'\r\n    ];\r\n    var HV_NAMES = [\r\n        ['width', 'left', 'right'],\r\n        ['height', 'top', 'bottom']\r\n    ];\r\n    function boxLayout(orient, group, gap, maxWidth, maxHeight) {\r\n        var x = 0;\r\n        var y = 0;\r\n        if (maxWidth == null) {\r\n            maxWidth = Infinity;\r\n        }\r\n        if (maxHeight == null) {\r\n            maxHeight = Infinity;\r\n        }\r\n        var currentLineMaxSize = 0;\r\n        group.eachChild(function (child, idx) {\r\n            var rect = child.getBoundingRect();\r\n            var nextChild = group.childAt(idx + 1);\r\n            var nextChildRect = nextChild && nextChild.getBoundingRect();\r\n            var nextX;\r\n            var nextY;\r\n            if (orient === 'horizontal') {\r\n                var moveX = rect.width + (nextChildRect ? (-nextChildRect.x + rect.x) : 0);\r\n                nextX = x + moveX;\r\n                if (nextX > maxWidth || child.newline) {\r\n                    x = 0;\r\n                    nextX = moveX;\r\n                    y += currentLineMaxSize + gap;\r\n                    currentLineMaxSize = rect.height;\r\n                }\r\n                else {\r\n                    currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\r\n                }\r\n            }\r\n            else {\r\n                var moveY = rect.height + (nextChildRect ? (-nextChildRect.y + rect.y) : 0);\r\n                nextY = y + moveY;\r\n                if (nextY > maxHeight || child.newline) {\r\n                    x += currentLineMaxSize + gap;\r\n                    y = 0;\r\n                    nextY = moveY;\r\n                    currentLineMaxSize = rect.width;\r\n                }\r\n                else {\r\n                    currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\r\n                }\r\n            }\r\n            if (child.newline) {\r\n                return;\r\n            }\r\n            child.x = x;\r\n            child.y = y;\r\n            child.markRedraw();\r\n            orient === 'horizontal'\r\n                ? (x = nextX + gap)\r\n                : (y = nextY + gap);\r\n        });\r\n    }\r\n    var box = boxLayout;\r\n    var vbox = curry(boxLayout, 'vertical');\r\n    var hbox = curry(boxLayout, 'horizontal');\r\n    function getLayoutRect(positionInfo, containerRect, margin) {\r\n        margin = normalizeCssArray$1(margin || 0);\r\n        var containerWidth = containerRect.width;\r\n        var containerHeight = containerRect.height;\r\n        var left = parsePercent$2(positionInfo.left, containerWidth);\r\n        var top = parsePercent$2(positionInfo.top, containerHeight);\r\n        var right = parsePercent$2(positionInfo.right, containerWidth);\r\n        var bottom = parsePercent$2(positionInfo.bottom, containerHeight);\r\n        var width = parsePercent$2(positionInfo.width, containerWidth);\r\n        var height = parsePercent$2(positionInfo.height, containerHeight);\r\n        var verticalMargin = margin[2] + margin[0];\r\n        var horizontalMargin = margin[1] + margin[3];\r\n        var aspect = positionInfo.aspect;\r\n        if (isNaN(width)) {\r\n            width = containerWidth - right - horizontalMargin - left;\r\n        }\r\n        if (isNaN(height)) {\r\n            height = containerHeight - bottom - verticalMargin - top;\r\n        }\r\n        if (aspect != null) {\r\n            if (isNaN(width) && isNaN(height)) {\r\n                if (aspect > containerWidth / containerHeight) {\r\n                    width = containerWidth * 0.8;\r\n                }\r\n                else {\r\n                    height = containerHeight * 0.8;\r\n                }\r\n            }\r\n            if (isNaN(width)) {\r\n                width = aspect * height;\r\n            }\r\n            if (isNaN(height)) {\r\n                height = width / aspect;\r\n            }\r\n        }\r\n        if (isNaN(left)) {\r\n            left = containerWidth - right - width - horizontalMargin;\r\n        }\r\n        if (isNaN(top)) {\r\n            top = containerHeight - bottom - height - verticalMargin;\r\n        }\r\n        switch (positionInfo.left || positionInfo.right) {\r\n            case 'center':\r\n                left = containerWidth / 2 - width / 2 - margin[3];\r\n                break;\r\n            case 'right':\r\n                left = containerWidth - width - horizontalMargin;\r\n                break;\r\n        }\r\n        switch (positionInfo.top || positionInfo.bottom) {\r\n            case 'middle':\r\n            case 'center':\r\n                top = containerHeight / 2 - height / 2 - margin[0];\r\n                break;\r\n            case 'bottom':\r\n                top = containerHeight - height - verticalMargin;\r\n                break;\r\n        }\r\n        left = left || 0;\r\n        top = top || 0;\r\n        if (isNaN(width)) {\r\n            width = containerWidth - horizontalMargin - left - (right || 0);\r\n        }\r\n        if (isNaN(height)) {\r\n            height = containerHeight - verticalMargin - top - (bottom || 0);\r\n        }\r\n        var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\r\n        rect.margin = margin;\r\n        return rect;\r\n    }\r\n    function positionElement(el, positionInfo, containerRect, margin, opt) {\r\n        var h = !opt || !opt.hv || opt.hv[0];\r\n        var v = !opt || !opt.hv || opt.hv[1];\r\n        var boundingMode = opt && opt.boundingMode || 'all';\r\n        if (!h && !v) {\r\n            return;\r\n        }\r\n        var rect;\r\n        if (boundingMode === 'raw') {\r\n            rect = el.type === 'group'\r\n                ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0)\r\n                : el.getBoundingRect();\r\n        }\r\n        else {\r\n            rect = el.getBoundingRect();\r\n            if (el.needLocalTransform()) {\r\n                var transform = el.getLocalTransform();\r\n                rect = rect.clone();\r\n                rect.applyTransform(transform);\r\n            }\r\n        }\r\n        var layoutRect = getLayoutRect(defaults({ width: rect.width, height: rect.height }, positionInfo), containerRect, margin);\r\n        var dx = h ? layoutRect.x - rect.x : 0;\r\n        var dy = v ? layoutRect.y - rect.y : 0;\r\n        if (boundingMode === 'raw') {\r\n            el.x = dx;\r\n            el.y = dy;\r\n        }\r\n        else {\r\n            el.x += dx;\r\n            el.y += dy;\r\n        }\r\n        el.markRedraw();\r\n    }\r\n    function fetchLayoutMode(ins) {\r\n        var layoutMode = ins.layoutMode || ins.constructor.layoutMode;\r\n        return isObject(layoutMode)\r\n            ? layoutMode\r\n            : layoutMode\r\n                ? { type: layoutMode }\r\n                : null;\r\n    }\r\n    function mergeLayoutParam(targetOption, newOption, opt) {\r\n        var ignoreSize = opt && opt.ignoreSize;\r\n        !isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\r\n        var hResult = merge(HV_NAMES[0], 0);\r\n        var vResult = merge(HV_NAMES[1], 1);\r\n        copy(HV_NAMES[0], targetOption, hResult);\r\n        copy(HV_NAMES[1], targetOption, vResult);\r\n        function merge(names, hvIdx) {\r\n            var newParams = {};\r\n            var newValueCount = 0;\r\n            var merged = {};\r\n            var mergedValueCount = 0;\r\n            var enoughParamNumber = 2;\r\n            each$1(names, function (name) {\r\n                merged[name] = targetOption[name];\r\n            });\r\n            each$1(names, function (name) {\r\n                hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\r\n                hasValue(newParams, name) && newValueCount++;\r\n                hasValue(merged, name) && mergedValueCount++;\r\n            });\r\n            if (ignoreSize[hvIdx]) {\r\n                if (hasValue(newOption, names[1])) {\r\n                    merged[names[2]] = null;\r\n                }\r\n                else if (hasValue(newOption, names[2])) {\r\n                    merged[names[1]] = null;\r\n                }\r\n                return merged;\r\n            }\r\n            if (mergedValueCount === enoughParamNumber || !newValueCount) {\r\n                return merged;\r\n            }\r\n            else if (newValueCount >= enoughParamNumber) {\r\n                return newParams;\r\n            }\r\n            else {\r\n                for (var i = 0; i < names.length; i++) {\r\n                    var name_1 = names[i];\r\n                    if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {\r\n                        newParams[name_1] = targetOption[name_1];\r\n                        break;\r\n                    }\r\n                }\r\n                return newParams;\r\n            }\r\n        }\r\n        function hasProp(obj, name) {\r\n            return obj.hasOwnProperty(name);\r\n        }\r\n        function hasValue(obj, name) {\r\n            return obj[name] != null && obj[name] !== 'auto';\r\n        }\r\n        function copy(names, target, source) {\r\n            each$1(names, function (name) {\r\n                target[name] = source[name];\r\n            });\r\n        }\r\n    }\r\n    function getLayoutParams(source) {\r\n        return copyLayoutParams({}, source);\r\n    }\r\n    function copyLayoutParams(target, source) {\r\n        source && target && each$1(LOCATION_PARAMS, function (name) {\r\n            source.hasOwnProperty(name) && (target[name] = source[name]);\r\n        });\r\n        return target;\r\n    }\n\n    var inner = makeInner();\r\n    var ComponentModel = (function (_super) {\r\n        __extends(ComponentModel, _super);\r\n        function ComponentModel(option, parentModel, ecModel) {\r\n            var _this = _super.call(this, option, parentModel, ecModel) || this;\r\n            _this.uid = getUID('ec_cpt_model');\r\n            return _this;\r\n        }\r\n        ComponentModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n        };\r\n        ComponentModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n            var layoutMode = fetchLayoutMode(this);\r\n            var inputPositionParams = layoutMode\r\n                ? getLayoutParams(option) : {};\r\n            var themeModel = ecModel.getTheme();\r\n            merge(option, themeModel.get(this.mainType));\r\n            merge(option, this.getDefaultOption());\r\n            if (layoutMode) {\r\n                mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n            }\r\n        };\r\n        ComponentModel.prototype.mergeOption = function (option, ecModel) {\r\n            merge(this.option, option, true);\r\n            var layoutMode = fetchLayoutMode(this);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(this.option, option, layoutMode);\r\n            }\r\n        };\r\n        ComponentModel.prototype.optionUpdated = function (newCptOption, isInit) { };\r\n        ComponentModel.prototype.getDefaultOption = function () {\r\n            var ctor = this.constructor;\r\n            if (!isExtendedClass(ctor)) {\r\n                return ctor.defaultOption;\r\n            }\r\n            var fields = inner(this);\r\n            if (!fields.defaultOption) {\r\n                var optList = [];\r\n                var clz = ctor;\r\n                while (clz) {\r\n                    var opt = clz.prototype.defaultOption;\r\n                    opt && optList.push(opt);\r\n                    clz = clz.superClass;\r\n                }\r\n                var defaultOption = {};\r\n                for (var i = optList.length - 1; i >= 0; i--) {\r\n                    defaultOption = merge(defaultOption, optList[i], true);\r\n                }\r\n                fields.defaultOption = defaultOption;\r\n            }\r\n            return fields.defaultOption;\r\n        };\r\n        ComponentModel.prototype.getReferringComponents = function (mainType, opt) {\r\n            var indexKey = (mainType + 'Index');\r\n            var idKey = (mainType + 'Id');\r\n            return queryReferringComponents(this.ecModel, mainType, {\r\n                index: this.get(indexKey, true),\r\n                id: this.get(idKey, true)\r\n            }, opt);\r\n        };\r\n        ComponentModel.prototype.getBoxLayoutParams = function () {\r\n            var boxLayoutModel = this;\r\n            return {\r\n                left: boxLayoutModel.get('left'),\r\n                top: boxLayoutModel.get('top'),\r\n                right: boxLayoutModel.get('right'),\r\n                bottom: boxLayoutModel.get('bottom'),\r\n                width: boxLayoutModel.get('width'),\r\n                height: boxLayoutModel.get('height')\r\n            };\r\n        };\r\n        ComponentModel.protoInitialize = (function () {\r\n            var proto = ComponentModel.prototype;\r\n            proto.type = 'component';\r\n            proto.id = '';\r\n            proto.name = '';\r\n            proto.mainType = '';\r\n            proto.subType = '';\r\n            proto.componentIndex = 0;\r\n        })();\r\n        return ComponentModel;\r\n    }(Model));\r\n    mountExtend(ComponentModel, Model);\r\n    enableClassManagement(ComponentModel, { registerWhenExtend: true });\r\n    enableSubTypeDefaulter(ComponentModel);\r\n    enableTopologicalTravel(ComponentModel, getDependencies);\r\n    function getDependencies(componentType) {\r\n        var deps = [];\r\n        each(ComponentModel.getClassesByMainType(componentType), function (clz) {\r\n            deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []);\r\n        });\r\n        deps = map(deps, function (type) {\r\n            return parseClassType(type).main;\r\n        });\r\n        if (componentType !== 'dataset' && indexOf(deps, 'dataset') <= 0) {\r\n            deps.unshift('dataset');\r\n        }\r\n        return deps;\r\n    }\n\n    var platform = '';\r\n    if (typeof navigator !== 'undefined') {\r\n        platform = navigator.platform || '';\r\n    }\r\n    var decalColor = 'rgba(0, 0, 0, 0.2)';\r\n    var globalDefault = {\r\n        darkMode: 'auto',\r\n        color: [\r\n            '#5470c6',\r\n            '#91cc75',\r\n            '#fac858',\r\n            '#ee6666',\r\n            '#73c0de',\r\n            '#3ba272',\r\n            '#fc8452',\r\n            '#9a60b4',\r\n            '#ea7ccc'\r\n        ],\r\n        gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\r\n        aria: {\r\n            decal: {\r\n                decals: [{\r\n                        color: decalColor,\r\n                        dashArrayX: [1, 0],\r\n                        dashArrayY: [2, 5],\r\n                        symbolSize: 1,\r\n                        rotation: Math.PI / 6\r\n                    }, {\r\n                        color: decalColor,\r\n                        symbol: 'circle',\r\n                        dashArrayX: [[8, 8], [0, 8, 8, 0]],\r\n                        dashArrayY: [6, 0],\r\n                        symbolSize: 0.8\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [1, 0],\r\n                        dashArrayY: [4, 3],\r\n                        dashLineOffset: 0,\r\n                        rotation: -Math.PI / 4\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [[6, 6], [0, 6, 6, 0]],\r\n                        dashArrayY: [6, 0]\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [[1, 0], [1, 6]],\r\n                        dashArrayY: [1, 0, 6, 0],\r\n                        rotation: Math.PI / 4\r\n                    }, {\r\n                        color: decalColor,\r\n                        symbol: 'triangle',\r\n                        dashArrayX: [[9, 9], [0, 9, 9, 0]],\r\n                        dashArrayY: [7, 2],\r\n                        symbolSize: 0.75\r\n                    }]\r\n            }\r\n        },\r\n        textStyle: {\r\n            fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\r\n            fontSize: 12,\r\n            fontStyle: 'normal',\r\n            fontWeight: 'normal'\r\n        },\r\n        blendMode: null,\r\n        stateAnimation: {\r\n            duration: 300,\r\n            easing: 'cubicOut'\r\n        },\r\n        animation: 'auto',\r\n        animationDuration: 1000,\r\n        animationDurationUpdate: 500,\r\n        animationEasing: 'cubicInOut',\r\n        animationEasingUpdate: 'cubicInOut',\r\n        animationThreshold: 2000,\r\n        progressiveThreshold: 3000,\r\n        progressive: 400,\r\n        hoverLayerThreshold: 3000,\r\n        useUTC: false\r\n    };\n\n    var VISUAL_DIMENSIONS = createHashMap([\r\n        'tooltip', 'label', 'itemName', 'itemId', 'seriesName'\r\n    ]);\r\n    var SOURCE_FORMAT_ORIGINAL = 'original';\r\n    var SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\r\n    var SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\r\n    var SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\r\n    var SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\r\n    var SOURCE_FORMAT_UNKNOWN = 'unknown';\r\n    var SERIES_LAYOUT_BY_COLUMN = 'column';\r\n    var SERIES_LAYOUT_BY_ROW = 'row';\n\n    var BE_ORDINAL = {\r\n        Must: 1,\r\n        Might: 2,\r\n        Not: 3\r\n    };\r\n    var innerGlobalModel = makeInner();\r\n    function resetSourceDefaulter(ecModel) {\r\n        innerGlobalModel(ecModel).datasetMap = createHashMap();\r\n    }\r\n    function inheritSourceMetaRawOption(upstream, newMetaRawOption) {\r\n        var parentMetaRawOption = upstream ? upstream.metaRawOption : null;\r\n        var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, parentMetaRawOption ? parentMetaRawOption.seriesLayoutBy : null);\r\n        var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upstream ? upstream.startIndex : null);\r\n        var dimensions = retrieve2(newMetaRawOption.dimensions, upstream ? upstream.dimensionsDefine : null);\r\n        return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n    }\r\n    function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\r\n        var encode = {};\r\n        var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n        if (!datasetModel || !coordDimensions) {\r\n            return encode;\r\n        }\r\n        var encodeItemName = [];\r\n        var encodeSeriesName = [];\r\n        var ecModel = seriesModel.ecModel;\r\n        var datasetMap = innerGlobalModel(ecModel).datasetMap;\r\n        var key = datasetModel.uid + '_' + source.seriesLayoutBy;\r\n        var baseCategoryDimIndex;\r\n        var categoryWayValueDimStart;\r\n        coordDimensions = coordDimensions.slice();\r\n        each(coordDimensions, function (coordDimInfoLoose, coordDimIdx) {\r\n            var coordDimInfo = isObject(coordDimInfoLoose)\r\n                ? coordDimInfoLoose\r\n                : (coordDimensions[coordDimIdx] = { name: coordDimInfoLoose });\r\n            if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\r\n                baseCategoryDimIndex = coordDimIdx;\r\n                categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo);\r\n            }\r\n            encode[coordDimInfo.name] = [];\r\n        });\r\n        var datasetRecord = datasetMap.get(key)\r\n            || datasetMap.set(key, { categoryWayDim: categoryWayValueDimStart, valueWayDim: 0 });\r\n        each(coordDimensions, function (coordDimInfo, coordDimIdx) {\r\n            var coordDimName = coordDimInfo.name;\r\n            var count = getDataDimCountOnCoordDim(coordDimInfo);\r\n            if (baseCategoryDimIndex == null) {\r\n                var start = datasetRecord.valueWayDim;\r\n                pushDim(encode[coordDimName], start, count);\r\n                pushDim(encodeSeriesName, start, count);\r\n                datasetRecord.valueWayDim += count;\r\n            }\r\n            else if (baseCategoryDimIndex === coordDimIdx) {\r\n                pushDim(encode[coordDimName], 0, count);\r\n                pushDim(encodeItemName, 0, count);\r\n            }\r\n            else {\r\n                var start = datasetRecord.categoryWayDim;\r\n                pushDim(encode[coordDimName], start, count);\r\n                pushDim(encodeSeriesName, start, count);\r\n                datasetRecord.categoryWayDim += count;\r\n            }\r\n        });\r\n        function pushDim(dimIdxArr, idxFrom, idxCount) {\r\n            for (var i = 0; i < idxCount; i++) {\r\n                dimIdxArr.push(idxFrom + i);\r\n            }\r\n        }\r\n        function getDataDimCountOnCoordDim(coordDimInfo) {\r\n            var dimsDef = coordDimInfo.dimsDef;\r\n            return dimsDef ? dimsDef.length : 1;\r\n        }\r\n        encodeItemName.length && (encode.itemName = encodeItemName);\r\n        encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\r\n        return encode;\r\n    }\r\n    function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\r\n        var encode = {};\r\n        var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n        if (!datasetModel) {\r\n            return encode;\r\n        }\r\n        var sourceFormat = source.sourceFormat;\r\n        var dimensionsDefine = source.dimensionsDefine;\r\n        var potentialNameDimIndex;\r\n        if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            each(dimensionsDefine, function (dim, idx) {\r\n                if ((isObject(dim) ? dim.name : dim) === 'name') {\r\n                    potentialNameDimIndex = idx;\r\n                }\r\n            });\r\n        }\r\n        var idxResult = (function () {\r\n            var idxRes0 = {};\r\n            var idxRes1 = {};\r\n            var guessRecords = [];\r\n            for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\r\n                var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\r\n                guessRecords.push(guessResult);\r\n                var isPureNumber = guessResult === BE_ORDINAL.Not;\r\n                if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\r\n                    idxRes0.v = i;\r\n                }\r\n                if (idxRes0.n == null\r\n                    || (idxRes0.n === idxRes0.v)\r\n                    || (!isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not)) {\r\n                    idxRes0.n = i;\r\n                }\r\n                if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\r\n                    return idxRes0;\r\n                }\r\n                if (!isPureNumber) {\r\n                    if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\r\n                        idxRes1.v = i;\r\n                    }\r\n                    if (idxRes1.n == null || (idxRes1.n === idxRes1.v)) {\r\n                        idxRes1.n = i;\r\n                    }\r\n                }\r\n            }\r\n            function fulfilled(idxResult) {\r\n                return idxResult.v != null && idxResult.n != null;\r\n            }\r\n            return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\r\n        })();\r\n        if (idxResult) {\r\n            encode.value = [idxResult.v];\r\n            var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;\r\n            encode.itemName = [nameDimIndex];\r\n            encode.seriesName = [nameDimIndex];\r\n        }\r\n        return encode;\r\n    }\r\n    function querySeriesUpstreamDatasetModel(seriesModel) {\r\n        var thisData = seriesModel.get('data', true);\r\n        if (!thisData) {\r\n            return queryReferringComponents(seriesModel.ecModel, 'dataset', {\r\n                index: seriesModel.get('datasetIndex', true),\r\n                id: seriesModel.get('datasetId', true)\r\n            }, SINGLE_REFERRING).models[0];\r\n        }\r\n    }\r\n    function queryDatasetUpstreamDatasetModels(datasetModel) {\r\n        if (!datasetModel.get('transform', true)\r\n            && !datasetModel.get('fromTransformResult', true)) {\r\n            return [];\r\n        }\r\n        return queryReferringComponents(datasetModel.ecModel, 'dataset', {\r\n            index: datasetModel.get('fromDatasetIndex', true),\r\n            id: datasetModel.get('fromDatasetId', true)\r\n        }, SINGLE_REFERRING).models;\r\n    }\r\n    function guessOrdinal(source, dimIndex) {\r\n        return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\r\n    }\r\n    function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\r\n        var result;\r\n        var maxLoop = 5;\r\n        if (isTypedArray(data)) {\r\n            return BE_ORDINAL.Not;\r\n        }\r\n        var dimName;\r\n        var dimType;\r\n        if (dimensionsDefine) {\r\n            var dimDefItem = dimensionsDefine[dimIndex];\r\n            if (isObject(dimDefItem)) {\r\n                dimName = dimDefItem.name;\r\n                dimType = dimDefItem.type;\r\n            }\r\n            else if (isString(dimDefItem)) {\r\n                dimName = dimDefItem;\r\n            }\r\n        }\r\n        if (dimType != null) {\r\n            return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\r\n        }\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var dataArrayRows = data;\r\n            if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n                var sample = dataArrayRows[dimIndex];\r\n                for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\r\n                    if ((result = detectValue(sample[startIndex + i])) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) {\r\n                    var row = dataArrayRows[startIndex + i];\r\n                    if (row && (result = detectValue(row[dimIndex])) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            var dataObjectRows = data;\r\n            if (!dimName) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) {\r\n                var item = dataObjectRows[i];\r\n                if (item && (result = detectValue(item[dimName])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            var dataKeyedColumns = data;\r\n            if (!dimName) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            var sample = dataKeyedColumns[dimName];\r\n            if (!sample || isTypedArray(sample)) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            for (var i = 0; i < sample.length && i < maxLoop; i++) {\r\n                if ((result = detectValue(sample[i])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var dataOriginal = data;\r\n            for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) {\r\n                var item = dataOriginal[i];\r\n                var val = getDataItemValue(item);\r\n                if (!isArray(val)) {\r\n                    return BE_ORDINAL.Not;\r\n                }\r\n                if ((result = detectValue(val[dimIndex])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        function detectValue(val) {\r\n            var beStr = isString(val);\r\n            if (val != null && isFinite(val) && val !== '') {\r\n                return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\r\n            }\r\n            else if (beStr && val !== '-') {\r\n                return BE_ORDINAL.Must;\r\n            }\r\n        }\r\n        return BE_ORDINAL.Not;\r\n    }\n\n    var internalOptionCreatorMap = createHashMap();\r\n    function registerInternalOptionCreator(mainType, creator) {\r\n        assert(internalOptionCreatorMap.get(mainType) == null && creator);\r\n        internalOptionCreatorMap.set(mainType, creator);\r\n    }\r\n    function concatInternalOptions(ecModel, mainType, newCmptOptionList) {\r\n        var internalOptionCreator = internalOptionCreatorMap.get(mainType);\r\n        if (!internalOptionCreator) {\r\n            return newCmptOptionList;\r\n        }\r\n        var internalOptions = internalOptionCreator(ecModel);\r\n        if (!internalOptions) {\r\n            return newCmptOptionList;\r\n        }\r\n        if (__DEV__) {\r\n            for (var i = 0; i < internalOptions.length; i++) {\r\n                assert(isComponentIdInternal(internalOptions[i]));\r\n            }\r\n        }\r\n        return newCmptOptionList.concat(internalOptions);\r\n    }\n\n    var innerColor = makeInner();\r\n    var innerDecal = makeInner();\r\n    var PaletteMixin = (function () {\r\n        function PaletteMixin() {\r\n        }\r\n        PaletteMixin.prototype.getColorFromPalette = function (name, scope, requestNum) {\r\n            var defaultPalette = normalizeToArray(this.get('color', true));\r\n            var layeredPalette = this.get('colorLayer', true);\r\n            return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum);\r\n        };\r\n        PaletteMixin.prototype.clearColorPalette = function () {\r\n            clearPalette(this, innerColor);\r\n        };\r\n        return PaletteMixin;\r\n    }());\r\n    function getDecalFromPalette(ecModel, name, scope, requestNum) {\r\n        var defaultDecals = normalizeToArray(ecModel.get(['aria', 'decal', 'decals']));\r\n        return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum);\r\n    }\r\n    function getNearestPalette(palettes, requestColorNum) {\r\n        var paletteNum = palettes.length;\r\n        for (var i = 0; i < paletteNum; i++) {\r\n            if (palettes[i].length > requestColorNum) {\r\n                return palettes[i];\r\n            }\r\n        }\r\n        return palettes[paletteNum - 1];\r\n    }\r\n    function getFromPalette(that, inner, defaultPalette, layeredPalette, name, scope, requestNum) {\r\n        scope = scope || that;\r\n        var scopeFields = inner(scope);\r\n        var paletteIdx = scopeFields.paletteIdx || 0;\r\n        var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {};\r\n        if (paletteNameMap.hasOwnProperty(name)) {\r\n            return paletteNameMap[name];\r\n        }\r\n        var palette = ((requestNum == null || !layeredPalette)\r\n            ? defaultPalette : getNearestPalette(layeredPalette, requestNum));\r\n        palette = palette || defaultPalette;\r\n        if (!palette || !palette.length) {\r\n            return;\r\n        }\r\n        var pickedPaletteItem = palette[paletteIdx];\r\n        if (name) {\r\n            paletteNameMap[name] = pickedPaletteItem;\r\n        }\r\n        scopeFields.paletteIdx = (paletteIdx + 1) % palette.length;\r\n        return pickedPaletteItem;\r\n    }\r\n    function clearPalette(that, inner) {\r\n        inner(that).paletteIdx = 0;\r\n        inner(that).paletteNameMap = {};\r\n    }\n\n    var reCreateSeriesIndices;\r\n    var assertSeriesInitialized;\r\n    var initBase;\r\n    var OPTION_INNER_KEY = '\\0_ec_inner';\r\n    var GlobalModel = (function (_super) {\r\n        __extends(GlobalModel, _super);\r\n        function GlobalModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        GlobalModel.prototype.init = function (option, parentModel, ecModel, theme, locale, optionManager) {\r\n            theme = theme || {};\r\n            this.option = null;\r\n            this._theme = new Model(theme);\r\n            this._locale = new Model(locale);\r\n            this._optionManager = optionManager;\r\n        };\r\n        GlobalModel.prototype.setOption = function (option, opts, optionPreprocessorFuncs) {\r\n            assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\r\n            var innerOpt = normalizeSetOptionInput(opts);\r\n            this._optionManager.setOption(option, optionPreprocessorFuncs, innerOpt);\r\n            this._resetOption(null, innerOpt);\r\n        };\r\n        GlobalModel.prototype.resetOption = function (type, opt) {\r\n            return this._resetOption(type, normalizeSetOptionInput(opt));\r\n        };\r\n        GlobalModel.prototype._resetOption = function (type, opt) {\r\n            var optionChanged = false;\r\n            var optionManager = this._optionManager;\r\n            if (!type || type === 'recreate') {\r\n                var baseOption = optionManager.mountOption(type === 'recreate');\r\n                if (!this.option || type === 'recreate') {\r\n                    initBase(this, baseOption);\r\n                }\r\n                else {\r\n                    this.restoreData();\r\n                    this._mergeOption(baseOption, opt);\r\n                }\r\n                optionChanged = true;\r\n            }\r\n            if (type === 'timeline' || type === 'media') {\r\n                this.restoreData();\r\n            }\r\n            if (!type || type === 'recreate' || type === 'timeline') {\r\n                var timelineOption = optionManager.getTimelineOption(this);\r\n                if (timelineOption) {\r\n                    optionChanged = true;\r\n                    this._mergeOption(timelineOption, opt);\r\n                }\r\n            }\r\n            if (!type || type === 'recreate' || type === 'media') {\r\n                var mediaOptions = optionManager.getMediaOption(this);\r\n                if (mediaOptions.length) {\r\n                    each(mediaOptions, function (mediaOption) {\r\n                        optionChanged = true;\r\n                        this._mergeOption(mediaOption, opt);\r\n                    }, this);\r\n                }\r\n            }\r\n            return optionChanged;\r\n        };\r\n        GlobalModel.prototype.mergeOption = function (option) {\r\n            this._mergeOption(option, null);\r\n        };\r\n        GlobalModel.prototype._mergeOption = function (newOption, opt) {\r\n            var option = this.option;\r\n            var componentsMap = this._componentsMap;\r\n            var componentsCount = this._componentsCount;\r\n            var newCmptTypes = [];\r\n            var newCmptTypeMap = createHashMap();\r\n            var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap;\r\n            resetSourceDefaulter(this);\r\n            each(newOption, function (componentOption, mainType) {\r\n                if (componentOption == null) {\r\n                    return;\r\n                }\r\n                if (!ComponentModel.hasClass(mainType)) {\r\n                    option[mainType] = option[mainType] == null\r\n                        ? clone(componentOption)\r\n                        : merge(option[mainType], componentOption, true);\r\n                }\r\n                else if (mainType) {\r\n                    newCmptTypes.push(mainType);\r\n                    newCmptTypeMap.set(mainType, true);\r\n                }\r\n            });\r\n            if (replaceMergeMainTypeMap) {\r\n                replaceMergeMainTypeMap.each(function (val, mainTypeInReplaceMerge) {\r\n                    if (ComponentModel.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) {\r\n                        newCmptTypes.push(mainTypeInReplaceMerge);\r\n                        newCmptTypeMap.set(mainTypeInReplaceMerge, true);\r\n                    }\r\n                });\r\n            }\r\n            ComponentModel.topologicalTravel(newCmptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\r\n            function visitComponent(mainType) {\r\n                var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType]));\r\n                var oldCmptList = componentsMap.get(mainType);\r\n                var mergeMode = !oldCmptList ? 'replaceAll'\r\n                    : (replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType)) ? 'replaceMerge'\r\n                        : 'normalMerge';\r\n                var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode);\r\n                setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel);\r\n                option[mainType] = null;\r\n                componentsMap.set(mainType, null);\r\n                componentsCount.set(mainType, 0);\r\n                var optionsByMainType = [];\r\n                var cmptsByMainType = [];\r\n                var cmptsCountByMainType = 0;\r\n                each(mappingResult, function (resultItem, index) {\r\n                    var componentModel = resultItem.existing;\r\n                    var newCmptOption = resultItem.newOption;\r\n                    if (!newCmptOption) {\r\n                        if (componentModel) {\r\n                            componentModel.mergeOption({}, this);\r\n                            componentModel.optionUpdated({}, false);\r\n                        }\r\n                    }\r\n                    else {\r\n                        var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\r\n                        if (componentModel && componentModel.constructor === ComponentModelClass) {\r\n                            componentModel.name = resultItem.keyInfo.name;\r\n                            componentModel.mergeOption(newCmptOption, this);\r\n                            componentModel.optionUpdated(newCmptOption, false);\r\n                        }\r\n                        else {\r\n                            var extraOpt = extend({\r\n                                componentIndex: index\r\n                            }, resultItem.keyInfo);\r\n                            componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt);\r\n                            extend(componentModel, extraOpt);\r\n                            if (resultItem.brandNew) {\r\n                                componentModel.__requireNewView = true;\r\n                            }\r\n                            componentModel.init(newCmptOption, this, this);\r\n                            componentModel.optionUpdated(null, true);\r\n                        }\r\n                    }\r\n                    if (componentModel) {\r\n                        optionsByMainType.push(componentModel.option);\r\n                        cmptsByMainType.push(componentModel);\r\n                        cmptsCountByMainType++;\r\n                    }\r\n                    else {\r\n                        optionsByMainType.push(void 0);\r\n                        cmptsByMainType.push(void 0);\r\n                    }\r\n                }, this);\r\n                option[mainType] = optionsByMainType;\r\n                componentsMap.set(mainType, cmptsByMainType);\r\n                componentsCount.set(mainType, cmptsCountByMainType);\r\n                if (mainType === 'series') {\r\n                    reCreateSeriesIndices(this);\r\n                }\r\n            }\r\n            if (!this._seriesIndices) {\r\n                reCreateSeriesIndices(this);\r\n            }\r\n        };\r\n        GlobalModel.prototype.getOption = function () {\r\n            var option = clone(this.option);\r\n            each(option, function (optInMainType, mainType) {\r\n                if (ComponentModel.hasClass(mainType)) {\r\n                    var opts = normalizeToArray(optInMainType);\r\n                    var realLen = opts.length;\r\n                    var metNonInner = false;\r\n                    for (var i = realLen - 1; i >= 0; i--) {\r\n                        if (opts[i] && !isComponentIdInternal(opts[i])) {\r\n                            metNonInner = true;\r\n                        }\r\n                        else {\r\n                            opts[i] = null;\r\n                            !metNonInner && realLen--;\r\n                        }\r\n                    }\r\n                    opts.length = realLen;\r\n                    option[mainType] = opts;\r\n                }\r\n            });\r\n            delete option[OPTION_INNER_KEY];\r\n            return option;\r\n        };\r\n        GlobalModel.prototype.getTheme = function () {\r\n            return this._theme;\r\n        };\r\n        GlobalModel.prototype.getLocaleModel = function () {\r\n            return this._locale;\r\n        };\r\n        GlobalModel.prototype.getLocale = function (localePosition) {\r\n            var locale = this.getLocaleModel();\r\n            return locale.get(localePosition);\r\n        };\r\n        GlobalModel.prototype.setUpdatePayload = function (payload) {\r\n            this._payload = payload;\r\n        };\r\n        GlobalModel.prototype.getUpdatePayload = function () {\r\n            return this._payload;\r\n        };\r\n        GlobalModel.prototype.getComponent = function (mainType, idx) {\r\n            var list = this._componentsMap.get(mainType);\r\n            if (list) {\r\n                var cmpt = list[idx || 0];\r\n                if (cmpt) {\r\n                    return cmpt;\r\n                }\r\n                else if (idx == null) {\r\n                    for (var i = 0; i < list.length; i++) {\r\n                        if (list[i]) {\r\n                            return list[i];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        GlobalModel.prototype.queryComponents = function (condition) {\r\n            var mainType = condition.mainType;\r\n            if (!mainType) {\r\n                return [];\r\n            }\r\n            var index = condition.index;\r\n            var id = condition.id;\r\n            var name = condition.name;\r\n            var cmpts = this._componentsMap.get(mainType);\r\n            if (!cmpts || !cmpts.length) {\r\n                return [];\r\n            }\r\n            var result;\r\n            if (index != null) {\r\n                result = [];\r\n                each(normalizeToArray(index), function (idx) {\r\n                    cmpts[idx] && result.push(cmpts[idx]);\r\n                });\r\n            }\r\n            else if (id != null) {\r\n                result = queryByIdOrName('id', id, cmpts);\r\n            }\r\n            else if (name != null) {\r\n                result = queryByIdOrName('name', name, cmpts);\r\n            }\r\n            else {\r\n                result = filter(cmpts, function (cmpt) { return !!cmpt; });\r\n            }\r\n            return filterBySubType(result, condition);\r\n        };\r\n        GlobalModel.prototype.findComponents = function (condition) {\r\n            var query = condition.query;\r\n            var mainType = condition.mainType;\r\n            var queryCond = getQueryCond(query);\r\n            var result = queryCond\r\n                ? this.queryComponents(queryCond)\r\n                : filter(this._componentsMap.get(mainType), function (cmpt) { return !!cmpt; });\r\n            return doFilter(filterBySubType(result, condition));\r\n            function getQueryCond(q) {\r\n                var indexAttr = mainType + 'Index';\r\n                var idAttr = mainType + 'Id';\r\n                var nameAttr = mainType + 'Name';\r\n                return q && (q[indexAttr] != null\r\n                    || q[idAttr] != null\r\n                    || q[nameAttr] != null)\r\n                    ? {\r\n                        mainType: mainType,\r\n                        index: q[indexAttr],\r\n                        id: q[idAttr],\r\n                        name: q[nameAttr]\r\n                    }\r\n                    : null;\r\n            }\r\n            function doFilter(res) {\r\n                return condition.filter\r\n                    ? filter(res, condition.filter)\r\n                    : res;\r\n            }\r\n        };\r\n        GlobalModel.prototype.eachComponent = function (mainType, cb, context) {\r\n            var componentsMap = this._componentsMap;\r\n            if (isFunction(mainType)) {\r\n                var ctxForAll_1 = cb;\r\n                var cbForAll_1 = mainType;\r\n                componentsMap.each(function (cmpts, componentType) {\r\n                    for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n                        var cmpt = cmpts[i];\r\n                        cmpt && cbForAll_1.call(ctxForAll_1, componentType, cmpt, cmpt.componentIndex);\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                var cmpts = isString(mainType)\r\n                    ? componentsMap.get(mainType)\r\n                    : isObject(mainType)\r\n                        ? this.findComponents(mainType)\r\n                        : null;\r\n                for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n                    var cmpt = cmpts[i];\r\n                    cmpt && cb.call(context, cmpt, cmpt.componentIndex);\r\n                }\r\n            }\r\n        };\r\n        GlobalModel.prototype.getSeriesByName = function (name) {\r\n            var nameStr = convertOptionIdName(name, null);\r\n            return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && nameStr != null && oneSeries.name === nameStr; });\r\n        };\r\n        GlobalModel.prototype.getSeriesByIndex = function (seriesIndex) {\r\n            return this._componentsMap.get('series')[seriesIndex];\r\n        };\r\n        GlobalModel.prototype.getSeriesByType = function (subType) {\r\n            return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && oneSeries.subType === subType; });\r\n        };\r\n        GlobalModel.prototype.getSeries = function () {\r\n            return filter(this._componentsMap.get('series').slice(), function (oneSeries) { return !!oneSeries; });\r\n        };\r\n        GlobalModel.prototype.getSeriesCount = function () {\r\n            return this._componentsCount.get('series');\r\n        };\r\n        GlobalModel.prototype.eachSeries = function (cb, context) {\r\n            assertSeriesInitialized(this);\r\n            each(this._seriesIndices, function (rawSeriesIndex) {\r\n                var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n                cb.call(context, series, rawSeriesIndex);\r\n            }, this);\r\n        };\r\n        GlobalModel.prototype.eachRawSeries = function (cb, context) {\r\n            each(this._componentsMap.get('series'), function (series) {\r\n                series && cb.call(context, series, series.componentIndex);\r\n            });\r\n        };\r\n        GlobalModel.prototype.eachSeriesByType = function (subType, cb, context) {\r\n            assertSeriesInitialized(this);\r\n            each(this._seriesIndices, function (rawSeriesIndex) {\r\n                var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n                if (series.subType === subType) {\r\n                    cb.call(context, series, rawSeriesIndex);\r\n                }\r\n            }, this);\r\n        };\r\n        GlobalModel.prototype.eachRawSeriesByType = function (subType, cb, context) {\r\n            return each(this.getSeriesByType(subType), cb, context);\r\n        };\r\n        GlobalModel.prototype.isSeriesFiltered = function (seriesModel) {\r\n            assertSeriesInitialized(this);\r\n            return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\r\n        };\r\n        GlobalModel.prototype.getCurrentSeriesIndices = function () {\r\n            return (this._seriesIndices || []).slice();\r\n        };\r\n        GlobalModel.prototype.filterSeries = function (cb, context) {\r\n            assertSeriesInitialized(this);\r\n            var newSeriesIndices = [];\r\n            each(this._seriesIndices, function (seriesRawIdx) {\r\n                var series = this._componentsMap.get('series')[seriesRawIdx];\r\n                cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx);\r\n            }, this);\r\n            this._seriesIndices = newSeriesIndices;\r\n            this._seriesIndicesMap = createHashMap(newSeriesIndices);\r\n        };\r\n        GlobalModel.prototype.restoreData = function (payload) {\r\n            reCreateSeriesIndices(this);\r\n            var componentsMap = this._componentsMap;\r\n            var componentTypes = [];\r\n            componentsMap.each(function (components, componentType) {\r\n                if (ComponentModel.hasClass(componentType)) {\r\n                    componentTypes.push(componentType);\r\n                }\r\n            });\r\n            ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType) {\r\n                each(componentsMap.get(componentType), function (component) {\r\n                    if (component\r\n                        && (componentType !== 'series'\r\n                            || !isNotTargetSeries(component, payload))) {\r\n                        component.restoreData();\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        GlobalModel.internalField = (function () {\r\n            reCreateSeriesIndices = function (ecModel) {\r\n                var seriesIndices = ecModel._seriesIndices = [];\r\n                each(ecModel._componentsMap.get('series'), function (series) {\r\n                    series && seriesIndices.push(series.componentIndex);\r\n                });\r\n                ecModel._seriesIndicesMap = createHashMap(seriesIndices);\r\n            };\r\n            assertSeriesInitialized = function (ecModel) {\r\n                if (__DEV__) {\r\n                    if (!ecModel._seriesIndices) {\r\n                        throw new Error('Option should contains series.');\r\n                    }\r\n                }\r\n            };\r\n            initBase = function (ecModel, baseOption) {\r\n                ecModel.option = {};\r\n                ecModel.option[OPTION_INNER_KEY] = 1;\r\n                ecModel._componentsMap = createHashMap({ series: [] });\r\n                ecModel._componentsCount = createHashMap();\r\n                var airaOption = baseOption.aria;\r\n                if (isObject(airaOption) && airaOption.enabled == null) {\r\n                    airaOption.enabled = true;\r\n                }\r\n                mergeTheme(baseOption, ecModel._theme.option);\r\n                merge(baseOption, globalDefault, false);\r\n                ecModel._mergeOption(baseOption, null);\r\n            };\r\n        })();\r\n        return GlobalModel;\r\n    }(Model));\r\n    function isNotTargetSeries(seriesModel, payload) {\r\n        if (payload) {\r\n            var index = payload.seriesIndex;\r\n            var id = payload.seriesId;\r\n            var name_1 = payload.seriesName;\r\n            return (index != null && seriesModel.componentIndex !== index)\r\n                || (id != null && seriesModel.id !== id)\r\n                || (name_1 != null && seriesModel.name !== name_1);\r\n        }\r\n    }\r\n    function mergeTheme(option, theme) {\r\n        var notMergeColorLayer = option.color && !option.colorLayer;\r\n        each(theme, function (themeItem, name) {\r\n            if (name === 'colorLayer' && notMergeColorLayer) {\r\n                return;\r\n            }\r\n            if (!ComponentModel.hasClass(name)) {\r\n                if (typeof themeItem === 'object') {\r\n                    option[name] = !option[name]\r\n                        ? clone(themeItem)\r\n                        : merge(option[name], themeItem, false);\r\n                }\r\n                else {\r\n                    if (option[name] == null) {\r\n                        option[name] = themeItem;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function queryByIdOrName(attr, idOrName, cmpts) {\r\n        if (isArray(idOrName)) {\r\n            var keyMap_1 = createHashMap();\r\n            each(idOrName, function (idOrNameItem) {\r\n                if (idOrNameItem != null) {\r\n                    var idName = convertOptionIdName(idOrNameItem, null);\r\n                    idName != null && keyMap_1.set(idOrNameItem, true);\r\n                }\r\n            });\r\n            return filter(cmpts, function (cmpt) { return cmpt && keyMap_1.get(cmpt[attr]); });\r\n        }\r\n        else {\r\n            var idName_1 = convertOptionIdName(idOrName, null);\r\n            return filter(cmpts, function (cmpt) { return cmpt && idName_1 != null && cmpt[attr] === idName_1; });\r\n        }\r\n    }\r\n    function filterBySubType(components, condition) {\r\n        return condition.hasOwnProperty('subType')\r\n            ? filter(components, function (cmpt) { return cmpt && cmpt.subType === condition.subType; })\r\n            : components;\r\n    }\r\n    function normalizeSetOptionInput(opts) {\r\n        var replaceMergeMainTypeMap = createHashMap();\r\n        opts && each(normalizeToArray(opts.replaceMerge), function (mainType) {\r\n            if (__DEV__) {\r\n                assert(ComponentModel.hasClass(mainType), '\"' + mainType + '\" is not valid component main type in \"replaceMerge\"');\r\n            }\r\n            replaceMergeMainTypeMap.set(mainType, true);\r\n        });\r\n        return {\r\n            replaceMergeMainTypeMap: replaceMergeMainTypeMap\r\n        };\r\n    }\r\n    mixin(GlobalModel, PaletteMixin);\n\n    var availableMethods = [\r\n        'getDom',\r\n        'getZr',\r\n        'getWidth',\r\n        'getHeight',\r\n        'getDevicePixelRatio',\r\n        'dispatchAction',\r\n        'isDisposed',\r\n        'on',\r\n        'off',\r\n        'getDataURL',\r\n        'getConnectedDataURL',\r\n        'getOption',\r\n        'getId',\r\n        'updateLabelLayout'\r\n    ];\r\n    var ExtensionAPI = (function () {\r\n        function ExtensionAPI(ecInstance) {\r\n            each(availableMethods, function (methodName) {\r\n                this[methodName] = bind(ecInstance[methodName], ecInstance);\r\n            }, this);\r\n        }\r\n        return ExtensionAPI;\r\n    }());\n\n    var coordinateSystemCreators = {};\r\n    var CoordinateSystemManager = (function () {\r\n        function CoordinateSystemManager() {\r\n            this._coordinateSystems = [];\r\n        }\r\n        CoordinateSystemManager.prototype.create = function (ecModel, api) {\r\n            var coordinateSystems = [];\r\n            each(coordinateSystemCreators, function (creater, type) {\r\n                var list = creater.create(ecModel, api);\r\n                coordinateSystems = coordinateSystems.concat(list || []);\r\n            });\r\n            this._coordinateSystems = coordinateSystems;\r\n        };\r\n        CoordinateSystemManager.prototype.update = function (ecModel, api) {\r\n            each(this._coordinateSystems, function (coordSys) {\r\n                coordSys.update && coordSys.update(ecModel, api);\r\n            });\r\n        };\r\n        CoordinateSystemManager.prototype.getCoordinateSystems = function () {\r\n            return this._coordinateSystems.slice();\r\n        };\r\n        CoordinateSystemManager.register = function (type, creator) {\r\n            coordinateSystemCreators[type] = creator;\r\n        };\r\n        CoordinateSystemManager.get = function (type) {\r\n            return coordinateSystemCreators[type];\r\n        };\r\n        return CoordinateSystemManager;\r\n    }());\n\n    var QUERY_REG = /^(min|max)?(.+)$/;\r\n    var OptionManager = (function () {\r\n        function OptionManager(api) {\r\n            this._timelineOptions = [];\r\n            this._mediaList = [];\r\n            this._currentMediaIndices = [];\r\n            this._api = api;\r\n        }\r\n        OptionManager.prototype.setOption = function (rawOption, optionPreprocessorFuncs, opt) {\r\n            if (rawOption) {\r\n                each(normalizeToArray(rawOption.series), function (series) {\r\n                    series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data);\r\n                });\r\n                each(normalizeToArray(rawOption.dataset), function (dataset) {\r\n                    dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source);\r\n                });\r\n            }\r\n            rawOption = clone(rawOption);\r\n            var optionBackup = this._optionBackup;\r\n            var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs, !optionBackup);\r\n            this._newBaseOption = newParsedOption.baseOption;\r\n            if (optionBackup) {\r\n                if (newParsedOption.timelineOptions.length) {\r\n                    optionBackup.timelineOptions = newParsedOption.timelineOptions;\r\n                }\r\n                if (newParsedOption.mediaList.length) {\r\n                    optionBackup.mediaList = newParsedOption.mediaList;\r\n                }\r\n                if (newParsedOption.mediaDefault) {\r\n                    optionBackup.mediaDefault = newParsedOption.mediaDefault;\r\n                }\r\n            }\r\n            else {\r\n                this._optionBackup = newParsedOption;\r\n            }\r\n        };\r\n        OptionManager.prototype.mountOption = function (isRecreate) {\r\n            var optionBackup = this._optionBackup;\r\n            this._timelineOptions = optionBackup.timelineOptions;\r\n            this._mediaList = optionBackup.mediaList;\r\n            this._mediaDefault = optionBackup.mediaDefault;\r\n            this._currentMediaIndices = [];\r\n            return clone(isRecreate\r\n                ? optionBackup.baseOption : this._newBaseOption);\r\n        };\r\n        OptionManager.prototype.getTimelineOption = function (ecModel) {\r\n            var option;\r\n            var timelineOptions = this._timelineOptions;\r\n            if (timelineOptions.length) {\r\n                var timelineModel = ecModel.getComponent('timeline');\r\n                if (timelineModel) {\r\n                    option = clone(timelineOptions[timelineModel.getCurrentIndex()]);\r\n                }\r\n            }\r\n            return option;\r\n        };\r\n        OptionManager.prototype.getMediaOption = function (ecModel) {\r\n            var ecWidth = this._api.getWidth();\r\n            var ecHeight = this._api.getHeight();\r\n            var mediaList = this._mediaList;\r\n            var mediaDefault = this._mediaDefault;\r\n            var indices = [];\r\n            var result = [];\r\n            if (!mediaList.length && !mediaDefault) {\r\n                return result;\r\n            }\r\n            for (var i = 0, len = mediaList.length; i < len; i++) {\r\n                if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\r\n                    indices.push(i);\r\n                }\r\n            }\r\n            if (!indices.length && mediaDefault) {\r\n                indices = [-1];\r\n            }\r\n            if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\r\n                result = map(indices, function (index) {\r\n                    return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\r\n                });\r\n            }\r\n            this._currentMediaIndices = indices;\r\n            return result;\r\n        };\r\n        return OptionManager;\r\n    }());\r\n    function parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\r\n        var mediaList = [];\r\n        var mediaDefault;\r\n        var baseOption;\r\n        var declaredBaseOption = rawOption.baseOption;\r\n        var timelineOnRoot = rawOption.timeline;\r\n        var timelineOptionsOnRoot = rawOption.options;\r\n        var mediaOnRoot = rawOption.media;\r\n        var hasMedia = !!rawOption.media;\r\n        var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || (declaredBaseOption && declaredBaseOption.timeline));\r\n        if (declaredBaseOption) {\r\n            baseOption = declaredBaseOption;\r\n            if (!baseOption.timeline) {\r\n                baseOption.timeline = timelineOnRoot;\r\n            }\r\n        }\r\n        else {\r\n            if (hasTimeline || hasMedia) {\r\n                rawOption.options = rawOption.media = null;\r\n            }\r\n            baseOption = rawOption;\r\n        }\r\n        if (hasMedia) {\r\n            if (isArray(mediaOnRoot)) {\r\n                each(mediaOnRoot, function (singleMedia) {\r\n                    if (__DEV__) {\r\n                        if (singleMedia\r\n                            && !singleMedia.option\r\n                            && isObject(singleMedia.query)\r\n                            && isObject(singleMedia.query.option)) {\r\n                            error('Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }');\r\n                        }\r\n                    }\r\n                    if (singleMedia && singleMedia.option) {\r\n                        if (singleMedia.query) {\r\n                            mediaList.push(singleMedia);\r\n                        }\r\n                        else if (!mediaDefault) {\r\n                            mediaDefault = singleMedia;\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    error('Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }');\r\n                }\r\n            }\r\n        }\r\n        doPreprocess(baseOption);\r\n        each(timelineOptionsOnRoot, function (option) { return doPreprocess(option); });\r\n        each(mediaList, function (media) { return doPreprocess(media.option); });\r\n        function doPreprocess(option) {\r\n            each(optionPreprocessorFuncs, function (preProcess) {\r\n                preProcess(option, isNew);\r\n            });\r\n        }\r\n        return {\r\n            baseOption: baseOption,\r\n            timelineOptions: timelineOptionsOnRoot || [],\r\n            mediaDefault: mediaDefault,\r\n            mediaList: mediaList\r\n        };\r\n    }\r\n    function applyMediaQuery(query, ecWidth, ecHeight) {\r\n        var realMap = {\r\n            width: ecWidth,\r\n            height: ecHeight,\r\n            aspectratio: ecWidth / ecHeight\r\n        };\r\n        var applicatable = true;\r\n        each(query, function (value, attr) {\r\n            var matched = attr.match(QUERY_REG);\r\n            if (!matched || !matched[1] || !matched[2]) {\r\n                return;\r\n            }\r\n            var operator = matched[1];\r\n            var realAttr = matched[2].toLowerCase();\r\n            if (!compare(realMap[realAttr], value, operator)) {\r\n                applicatable = false;\r\n            }\r\n        });\r\n        return applicatable;\r\n    }\r\n    function compare(real, expect, operator) {\r\n        if (operator === 'min') {\r\n            return real >= expect;\r\n        }\r\n        else if (operator === 'max') {\r\n            return real <= expect;\r\n        }\r\n        else {\r\n            return real === expect;\r\n        }\r\n    }\r\n    function indicesEquals(indices1, indices2) {\r\n        return indices1.join(',') === indices2.join(',');\r\n    }\n\n    var each$2 = each;\r\n    var isObject$1 = isObject;\r\n    var POSSIBLE_STYLES = [\r\n        'areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle',\r\n        'chordStyle', 'label', 'labelLine'\r\n    ];\r\n    function compatEC2ItemStyle(opt) {\r\n        var itemStyleOpt = opt && opt.itemStyle;\r\n        if (!itemStyleOpt) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\r\n            var styleName = POSSIBLE_STYLES[i];\r\n            var normalItemStyleOpt = itemStyleOpt.normal;\r\n            var emphasisItemStyleOpt = itemStyleOpt.emphasis;\r\n            if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(\"itemStyle.normal.\" + styleName, styleName);\r\n                }\r\n                opt[styleName] = opt[styleName] || {};\r\n                if (!opt[styleName].normal) {\r\n                    opt[styleName].normal = normalItemStyleOpt[styleName];\r\n                }\r\n                else {\r\n                    merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\r\n                }\r\n                normalItemStyleOpt[styleName] = null;\r\n            }\r\n            if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(\"itemStyle.emphasis.\" + styleName, \"emphasis.\" + styleName);\r\n                }\r\n                opt[styleName] = opt[styleName] || {};\r\n                if (!opt[styleName].emphasis) {\r\n                    opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\r\n                }\r\n                else {\r\n                    merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\r\n                }\r\n                emphasisItemStyleOpt[styleName] = null;\r\n            }\r\n        }\r\n    }\r\n    function convertNormalEmphasis(opt, optType, useExtend) {\r\n        if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\r\n            var normalOpt = opt[optType].normal;\r\n            var emphasisOpt = opt[optType].emphasis;\r\n            if (normalOpt) {\r\n                if (__DEV__) {\r\n                    deprecateLog(\"'normal' hierarchy in \" + optType + \" has been removed since 4.0. All style properties are configured in \" + optType + \" directly now.\");\r\n                }\r\n                if (useExtend) {\r\n                    opt[optType].normal = opt[optType].emphasis = null;\r\n                    defaults(opt[optType], normalOpt);\r\n                }\r\n                else {\r\n                    opt[optType] = normalOpt;\r\n                }\r\n            }\r\n            if (emphasisOpt) {\r\n                if (__DEV__) {\r\n                    deprecateLog(optType + \".emphasis has been changed to emphasis.\" + optType + \" since 4.0\");\r\n                }\r\n                opt.emphasis = opt.emphasis || {};\r\n                opt.emphasis[optType] = emphasisOpt;\r\n                if (emphasisOpt.focus) {\r\n                    opt.emphasis.focus = emphasisOpt.focus;\r\n                }\r\n                if (emphasisOpt.blurScope) {\r\n                    opt.emphasis.blurScope = emphasisOpt.blurScope;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function removeEC3NormalStatus(opt) {\r\n        convertNormalEmphasis(opt, 'itemStyle');\r\n        convertNormalEmphasis(opt, 'lineStyle');\r\n        convertNormalEmphasis(opt, 'areaStyle');\r\n        convertNormalEmphasis(opt, 'label');\r\n        convertNormalEmphasis(opt, 'labelLine');\r\n        convertNormalEmphasis(opt, 'upperLabel');\r\n        convertNormalEmphasis(opt, 'edgeLabel');\r\n    }\r\n    function compatTextStyle(opt, propName) {\r\n        var labelOptSingle = isObject$1(opt) && opt[propName];\r\n        var textStyle = isObject$1(labelOptSingle) && labelOptSingle.textStyle;\r\n        if (textStyle) {\r\n            if (__DEV__) {\r\n                deprecateLog(\"textStyle hierarchy in \" + propName + \" has been removed since 4.0. All textStyle properties are configured in \" + propName + \" directly now.\");\r\n            }\r\n            for (var i = 0, len = TEXT_STYLE_OPTIONS.length; i < len; i++) {\r\n                var textPropName = TEXT_STYLE_OPTIONS[i];\r\n                if (textStyle.hasOwnProperty(textPropName)) {\r\n                    labelOptSingle[textPropName] = textStyle[textPropName];\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function compatEC3CommonStyles(opt) {\r\n        if (opt) {\r\n            removeEC3NormalStatus(opt);\r\n            compatTextStyle(opt, 'label');\r\n            opt.emphasis && compatTextStyle(opt.emphasis, 'label');\r\n        }\r\n    }\r\n    function processSeries(seriesOpt) {\r\n        if (!isObject$1(seriesOpt)) {\r\n            return;\r\n        }\r\n        compatEC2ItemStyle(seriesOpt);\r\n        removeEC3NormalStatus(seriesOpt);\r\n        compatTextStyle(seriesOpt, 'label');\r\n        compatTextStyle(seriesOpt, 'upperLabel');\r\n        compatTextStyle(seriesOpt, 'edgeLabel');\r\n        if (seriesOpt.emphasis) {\r\n            compatTextStyle(seriesOpt.emphasis, 'label');\r\n            compatTextStyle(seriesOpt.emphasis, 'upperLabel');\r\n            compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\r\n        }\r\n        var markPoint = seriesOpt.markPoint;\r\n        if (markPoint) {\r\n            compatEC2ItemStyle(markPoint);\r\n            compatEC3CommonStyles(markPoint);\r\n        }\r\n        var markLine = seriesOpt.markLine;\r\n        if (markLine) {\r\n            compatEC2ItemStyle(markLine);\r\n            compatEC3CommonStyles(markLine);\r\n        }\r\n        var markArea = seriesOpt.markArea;\r\n        if (markArea) {\r\n            compatEC3CommonStyles(markArea);\r\n        }\r\n        var data = seriesOpt.data;\r\n        if (seriesOpt.type === 'graph') {\r\n            data = data || seriesOpt.nodes;\r\n            var edgeData = seriesOpt.links || seriesOpt.edges;\r\n            if (edgeData && !isTypedArray(edgeData)) {\r\n                for (var i = 0; i < edgeData.length; i++) {\r\n                    compatEC3CommonStyles(edgeData[i]);\r\n                }\r\n            }\r\n            each(seriesOpt.categories, function (opt) {\r\n                removeEC3NormalStatus(opt);\r\n            });\r\n        }\r\n        if (data && !isTypedArray(data)) {\r\n            for (var i = 0; i < data.length; i++) {\r\n                compatEC3CommonStyles(data[i]);\r\n            }\r\n        }\r\n        markPoint = seriesOpt.markPoint;\r\n        if (markPoint && markPoint.data) {\r\n            var mpData = markPoint.data;\r\n            for (var i = 0; i < mpData.length; i++) {\r\n                compatEC3CommonStyles(mpData[i]);\r\n            }\r\n        }\r\n        markLine = seriesOpt.markLine;\r\n        if (markLine && markLine.data) {\r\n            var mlData = markLine.data;\r\n            for (var i = 0; i < mlData.length; i++) {\r\n                if (isArray(mlData[i])) {\r\n                    compatEC3CommonStyles(mlData[i][0]);\r\n                    compatEC3CommonStyles(mlData[i][1]);\r\n                }\r\n                else {\r\n                    compatEC3CommonStyles(mlData[i]);\r\n                }\r\n            }\r\n        }\r\n        if (seriesOpt.type === 'gauge') {\r\n            compatTextStyle(seriesOpt, 'axisLabel');\r\n            compatTextStyle(seriesOpt, 'title');\r\n            compatTextStyle(seriesOpt, 'detail');\r\n        }\r\n        else if (seriesOpt.type === 'treemap') {\r\n            convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\r\n            each(seriesOpt.levels, function (opt) {\r\n                removeEC3NormalStatus(opt);\r\n            });\r\n        }\r\n        else if (seriesOpt.type === 'tree') {\r\n            removeEC3NormalStatus(seriesOpt.leaves);\r\n        }\r\n    }\r\n    function toArr(o) {\r\n        return isArray(o) ? o : o ? [o] : [];\r\n    }\r\n    function toObj(o) {\r\n        return (isArray(o) ? o[0] : o) || {};\r\n    }\r\n    function globalCompatStyle(option, isTheme) {\r\n        each$2(toArr(option.series), function (seriesOpt) {\r\n            isObject$1(seriesOpt) && processSeries(seriesOpt);\r\n        });\r\n        var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\r\n        isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\r\n        each$2(axes, function (axisName) {\r\n            each$2(toArr(option[axisName]), function (axisOpt) {\r\n                if (axisOpt) {\r\n                    compatTextStyle(axisOpt, 'axisLabel');\r\n                    compatTextStyle(axisOpt.axisPointer, 'label');\r\n                }\r\n            });\r\n        });\r\n        each$2(toArr(option.parallel), function (parallelOpt) {\r\n            var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\r\n            compatTextStyle(parallelAxisDefault, 'axisLabel');\r\n            compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\r\n        });\r\n        each$2(toArr(option.calendar), function (calendarOpt) {\r\n            convertNormalEmphasis(calendarOpt, 'itemStyle');\r\n            compatTextStyle(calendarOpt, 'dayLabel');\r\n            compatTextStyle(calendarOpt, 'monthLabel');\r\n            compatTextStyle(calendarOpt, 'yearLabel');\r\n        });\r\n        each$2(toArr(option.radar), function (radarOpt) {\r\n            compatTextStyle(radarOpt, 'name');\r\n            if (radarOpt.name && radarOpt.axisName == null) {\r\n                radarOpt.axisName = radarOpt.name;\r\n                delete radarOpt.name;\r\n                if (__DEV__) {\r\n                    deprecateLog('name property in radar component has been changed to axisName');\r\n                }\r\n            }\r\n            if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {\r\n                radarOpt.axisNameGap = radarOpt.nameGap;\r\n                delete radarOpt.nameGap;\r\n                if (__DEV__) {\r\n                    deprecateLog('nameGap property in radar component has been changed to axisNameGap');\r\n                }\r\n            }\r\n        });\r\n        each$2(toArr(option.geo), function (geoOpt) {\r\n            if (isObject$1(geoOpt)) {\r\n                compatEC3CommonStyles(geoOpt);\r\n                each$2(toArr(geoOpt.regions), function (regionObj) {\r\n                    compatEC3CommonStyles(regionObj);\r\n                });\r\n            }\r\n        });\r\n        each$2(toArr(option.timeline), function (timelineOpt) {\r\n            compatEC3CommonStyles(timelineOpt);\r\n            convertNormalEmphasis(timelineOpt, 'label');\r\n            convertNormalEmphasis(timelineOpt, 'itemStyle');\r\n            convertNormalEmphasis(timelineOpt, 'controlStyle', true);\r\n            var data = timelineOpt.data;\r\n            isArray(data) && each(data, function (item) {\r\n                if (isObject(item)) {\r\n                    convertNormalEmphasis(item, 'label');\r\n                    convertNormalEmphasis(item, 'itemStyle');\r\n                }\r\n            });\r\n        });\r\n        each$2(toArr(option.toolbox), function (toolboxOpt) {\r\n            convertNormalEmphasis(toolboxOpt, 'iconStyle');\r\n            each$2(toolboxOpt.feature, function (featureOpt) {\r\n                convertNormalEmphasis(featureOpt, 'iconStyle');\r\n            });\r\n        });\r\n        compatTextStyle(toObj(option.axisPointer), 'label');\r\n        compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\r\n    }\n\n    function get(opt, path) {\r\n        var pathArr = path.split(',');\r\n        var obj = opt;\r\n        for (var i = 0; i < pathArr.length; i++) {\r\n            obj = obj && obj[pathArr[i]];\r\n            if (obj == null) {\r\n                break;\r\n            }\r\n        }\r\n        return obj;\r\n    }\r\n    function set$1(opt, path, val, overwrite) {\r\n        var pathArr = path.split(',');\r\n        var obj = opt;\r\n        var key;\r\n        var i = 0;\r\n        for (; i < pathArr.length - 1; i++) {\r\n            key = pathArr[i];\r\n            if (obj[key] == null) {\r\n                obj[key] = {};\r\n            }\r\n            obj = obj[key];\r\n        }\r\n        if (overwrite || obj[pathArr[i]] == null) {\r\n            obj[pathArr[i]] = val;\r\n        }\r\n    }\r\n    function compatLayoutProperties(option) {\r\n        option && each(LAYOUT_PROPERTIES, function (prop) {\r\n            if (prop[0] in option && !(prop[1] in option)) {\r\n                option[prop[1]] = option[prop[0]];\r\n            }\r\n        });\r\n    }\r\n    var LAYOUT_PROPERTIES = [\r\n        ['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']\r\n    ];\r\n    var COMPATITABLE_COMPONENTS = [\r\n        'grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'\r\n    ];\r\n    var BAR_ITEM_STYLE_MAP = [\r\n        ['borderRadius', 'barBorderRadius'],\r\n        ['borderColor', 'barBorderColor'],\r\n        ['borderWidth', 'barBorderWidth']\r\n    ];\r\n    function compatBarItemStyle(option) {\r\n        var itemStyle = option && option.itemStyle;\r\n        if (itemStyle) {\r\n            for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {\r\n                var oldName = BAR_ITEM_STYLE_MAP[i][1];\r\n                var newName = BAR_ITEM_STYLE_MAP[i][0];\r\n                if (itemStyle[oldName] != null) {\r\n                    itemStyle[newName] = itemStyle[oldName];\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog(oldName, newName);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function compatPieLabel(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.alignTo === 'edge' && option.margin != null && option.edgeDistance == null) {\r\n            if (__DEV__) {\r\n                deprecateReplaceLog('label.margin', 'label.edgeDistance', 'pie');\r\n            }\r\n            option.edgeDistance = option.margin;\r\n        }\r\n    }\r\n    function compatSunburstState(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.downplay && !option.blur) {\r\n            option.blur = option.downplay;\r\n            if (__DEV__) {\r\n                deprecateReplaceLog('downplay', 'blur', 'sunburst');\r\n            }\r\n        }\r\n    }\r\n    function compatGraphFocus(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.focusNodeAdjacency != null) {\r\n            option.emphasis = option.emphasis || {};\r\n            if (option.emphasis.focus == null) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog('focusNodeAdjacency', 'emphasis: { focus: \\'adjacency\\'}', 'graph/sankey');\r\n                }\r\n                option.emphasis.focus = 'adjacency';\r\n            }\r\n        }\r\n    }\r\n    function traverseTree(data, cb) {\r\n        if (data) {\r\n            for (var i = 0; i < data.length; i++) {\r\n                cb(data[i]);\r\n                data[i] && traverseTree(data[i].children, cb);\r\n            }\r\n        }\r\n    }\r\n    function globalBackwardCompat(option, isTheme) {\r\n        globalCompatStyle(option, isTheme);\r\n        option.series = normalizeToArray(option.series);\r\n        each(option.series, function (seriesOpt) {\r\n            if (!isObject(seriesOpt)) {\r\n                return;\r\n            }\r\n            var seriesType = seriesOpt.type;\r\n            if (seriesType === 'line') {\r\n                if (seriesOpt.clipOverflow != null) {\r\n                    seriesOpt.clip = seriesOpt.clipOverflow;\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('clipOverflow', 'clip', 'line');\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'pie' || seriesType === 'gauge') {\r\n                if (seriesOpt.clockWise != null) {\r\n                    seriesOpt.clockwise = seriesOpt.clockWise;\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('clockWise', 'clockwise');\r\n                    }\r\n                }\r\n                compatPieLabel(seriesOpt.label);\r\n                var data = seriesOpt.data;\r\n                if (data && !isTypedArray(data)) {\r\n                    for (var i = 0; i < data.length; i++) {\r\n                        compatPieLabel(data[i]);\r\n                    }\r\n                }\r\n                if (seriesOpt.hoverOffset != null) {\r\n                    seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                    if (seriesOpt.emphasis.scaleSize = null) {\r\n                        if (__DEV__) {\r\n                            deprecateReplaceLog('hoverOffset', 'emphasis.scaleSize');\r\n                        }\r\n                        seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'gauge') {\r\n                var pointerColor = get(seriesOpt, 'pointer.color');\r\n                pointerColor != null\r\n                    && set$1(seriesOpt, 'itemStyle.color', pointerColor);\r\n            }\r\n            else if (seriesType === 'bar') {\r\n                compatBarItemStyle(seriesOpt);\r\n                compatBarItemStyle(seriesOpt.backgroundStyle);\r\n                compatBarItemStyle(seriesOpt.emphasis);\r\n                var data = seriesOpt.data;\r\n                if (data && !isTypedArray(data)) {\r\n                    for (var i = 0; i < data.length; i++) {\r\n                        if (typeof data[i] === 'object') {\r\n                            compatBarItemStyle(data[i]);\r\n                            compatBarItemStyle(data[i] && data[i].emphasis);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'sunburst') {\r\n                var highlightPolicy = seriesOpt.highlightPolicy;\r\n                if (highlightPolicy) {\r\n                    seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                    if (!seriesOpt.emphasis.focus) {\r\n                        seriesOpt.emphasis.focus = highlightPolicy;\r\n                        if (__DEV__) {\r\n                            deprecateReplaceLog('highlightPolicy', 'emphasis.focus', 'sunburst');\r\n                        }\r\n                    }\r\n                }\r\n                compatSunburstState(seriesOpt);\r\n                traverseTree(seriesOpt.data, compatSunburstState);\r\n            }\r\n            else if (seriesType === 'graph' || seriesType === 'sankey') {\r\n                compatGraphFocus(seriesOpt);\r\n            }\r\n            else if (seriesType === 'map') {\r\n                if (seriesOpt.mapType && !seriesOpt.map) {\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('mapType', 'map', 'map');\r\n                    }\r\n                    seriesOpt.map = seriesOpt.mapType;\r\n                }\r\n                if (seriesOpt.mapLocation) {\r\n                    if (__DEV__) {\r\n                        deprecateLog('`mapLocation` is not used anymore.');\r\n                    }\r\n                    defaults(seriesOpt, seriesOpt.mapLocation);\r\n                }\r\n            }\r\n            if (seriesOpt.hoverAnimation != null) {\r\n                seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('hoverAnimation', 'emphasis.scale');\r\n                    }\r\n                    seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;\r\n                }\r\n            }\r\n            compatLayoutProperties(seriesOpt);\r\n        });\r\n        if (option.dataRange) {\r\n            option.visualMap = option.dataRange;\r\n        }\r\n        each(COMPATITABLE_COMPONENTS, function (componentName) {\r\n            var options = option[componentName];\r\n            if (options) {\r\n                if (!isArray(options)) {\r\n                    options = [options];\r\n                }\r\n                each(options, function (option) {\r\n                    compatLayoutProperties(option);\r\n                });\r\n            }\r\n        });\r\n    }\n\n    function dataStack(ecModel) {\r\n        var stackInfoMap = createHashMap();\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var stack = seriesModel.get('stack');\r\n            if (stack) {\r\n                var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\r\n                var data = seriesModel.getData();\r\n                var stackInfo = {\r\n                    stackResultDimension: data.getCalculationInfo('stackResultDimension'),\r\n                    stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\r\n                    stackedDimension: data.getCalculationInfo('stackedDimension'),\r\n                    stackedByDimension: data.getCalculationInfo('stackedByDimension'),\r\n                    isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\r\n                    data: data,\r\n                    seriesModel: seriesModel\r\n                };\r\n                if (!stackInfo.stackedDimension\r\n                    || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\r\n                    return;\r\n                }\r\n                stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\r\n                stackInfoList.push(stackInfo);\r\n            }\r\n        });\r\n        stackInfoMap.each(calculateStack);\r\n    }\r\n    function calculateStack(stackInfoList) {\r\n        each(stackInfoList, function (targetStackInfo, idxInStack) {\r\n            var resultVal = [];\r\n            var resultNaN = [NaN, NaN];\r\n            var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\r\n            var targetData = targetStackInfo.data;\r\n            var isStackedByIndex = targetStackInfo.isStackedByIndex;\r\n            var newData = targetData.map(dims, function (v0, v1, dataIndex) {\r\n                var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex);\r\n                if (isNaN(sum)) {\r\n                    return resultNaN;\r\n                }\r\n                var byValue;\r\n                var stackedDataRawIndex;\r\n                if (isStackedByIndex) {\r\n                    stackedDataRawIndex = targetData.getRawIndex(dataIndex);\r\n                }\r\n                else {\r\n                    byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\r\n                }\r\n                var stackedOver = NaN;\r\n                for (var j = idxInStack - 1; j >= 0; j--) {\r\n                    var stackInfo = stackInfoList[j];\r\n                    if (!isStackedByIndex) {\r\n                        stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\r\n                    }\r\n                    if (stackedDataRawIndex >= 0) {\r\n                        var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex);\r\n                        if ((sum >= 0 && val > 0)\r\n                            || (sum <= 0 && val < 0)) {\r\n                            sum += val;\r\n                            stackedOver = val;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                resultVal[0] = sum;\r\n                resultVal[1] = stackedOver;\r\n                return resultVal;\r\n            });\r\n            targetData.hostModel.setData(newData);\r\n            targetStackInfo.data = newData;\r\n        });\r\n    }\n\n    var SourceImpl = (function () {\r\n        function SourceImpl(fields) {\r\n            this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\r\n            this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\r\n            this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\r\n            this.startIndex = fields.startIndex || 0;\r\n            this.dimensionsDefine = fields.dimensionsDefine;\r\n            this.dimensionsDetectedCount = fields.dimensionsDetectedCount;\r\n            this.encodeDefine = fields.encodeDefine;\r\n            this.metaRawOption = fields.metaRawOption;\r\n        }\r\n        return SourceImpl;\r\n    }());\r\n    function isSourceInstance(val) {\r\n        return val instanceof SourceImpl;\r\n    }\r\n    function createSource(sourceData, thisMetaRawOption, sourceFormat, encodeDefine) {\r\n        sourceFormat = sourceFormat || detectSourceFormat(sourceData);\r\n        var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy;\r\n        var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions);\r\n        var source = new SourceImpl({\r\n            data: sourceData,\r\n            sourceFormat: sourceFormat,\r\n            seriesLayoutBy: seriesLayoutBy,\r\n            dimensionsDefine: determined.dimensionsDefine,\r\n            startIndex: determined.startIndex,\r\n            dimensionsDetectedCount: determined.dimensionsDetectedCount,\r\n            encodeDefine: makeEncodeDefine(encodeDefine),\r\n            metaRawOption: clone(thisMetaRawOption)\r\n        });\r\n        return source;\r\n    }\r\n    function createSourceFromSeriesDataOption(data) {\r\n        return new SourceImpl({\r\n            data: data,\r\n            sourceFormat: isTypedArray(data)\r\n                ? SOURCE_FORMAT_TYPED_ARRAY\r\n                : SOURCE_FORMAT_ORIGINAL\r\n        });\r\n    }\r\n    function cloneSourceShallow(source) {\r\n        return new SourceImpl({\r\n            data: source.data,\r\n            sourceFormat: source.sourceFormat,\r\n            seriesLayoutBy: source.seriesLayoutBy,\r\n            dimensionsDefine: clone(source.dimensionsDefine),\r\n            startIndex: source.startIndex,\r\n            dimensionsDetectedCount: source.dimensionsDetectedCount,\r\n            encodeDefine: makeEncodeDefine(source.encodeDefine)\r\n        });\r\n    }\r\n    function makeEncodeDefine(encodeDefine) {\r\n        return encodeDefine\r\n            ? createHashMap(encodeDefine)\r\n            : null;\r\n    }\r\n    function detectSourceFormat(data) {\r\n        var sourceFormat = SOURCE_FORMAT_UNKNOWN;\r\n        if (isTypedArray(data)) {\r\n            sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\r\n        }\r\n        else if (isArray(data)) {\r\n            if (data.length === 0) {\r\n                sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n            }\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                var item = data[i];\r\n                if (item == null) {\r\n                    continue;\r\n                }\r\n                else if (isArray(item)) {\r\n                    sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n                    break;\r\n                }\r\n                else if (isObject(item)) {\r\n                    sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (isObject(data)) {\r\n            for (var key in data) {\r\n                if (hasOwn(data, key) && isArrayLike(data[key])) {\r\n                    sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (data != null) {\r\n            throw new Error('Invalid data');\r\n        }\r\n        return sourceFormat;\r\n    }\r\n    function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\r\n        var dimensionsDetectedCount;\r\n        var startIndex;\r\n        if (!data) {\r\n            return {\r\n                dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n                startIndex: startIndex,\r\n                dimensionsDetectedCount: dimensionsDetectedCount\r\n            };\r\n        }\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var dataArrayRows = data;\r\n            if (sourceHeader === 'auto' || sourceHeader == null) {\r\n                arrayRowsTravelFirst(function (val) {\r\n                    if (val != null && val !== '-') {\r\n                        if (isString(val)) {\r\n                            startIndex == null && (startIndex = 1);\r\n                        }\r\n                        else {\r\n                            startIndex = 0;\r\n                        }\r\n                    }\r\n                }, seriesLayoutBy, dataArrayRows, 10);\r\n            }\r\n            else {\r\n                startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0;\r\n            }\r\n            if (!dimensionsDefine && startIndex === 1) {\r\n                dimensionsDefine = [];\r\n                arrayRowsTravelFirst(function (val, index) {\r\n                    dimensionsDefine[index] = (val != null ? val + '' : '');\r\n                }, seriesLayoutBy, dataArrayRows, Infinity);\r\n            }\r\n            dimensionsDetectedCount = dimensionsDefine\r\n                ? dimensionsDefine.length\r\n                : seriesLayoutBy === SERIES_LAYOUT_BY_ROW\r\n                    ? dataArrayRows.length\r\n                    : dataArrayRows[0]\r\n                        ? dataArrayRows[0].length\r\n                        : null;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            if (!dimensionsDefine) {\r\n                dimensionsDefine = objectRowsCollectDimensions(data);\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            if (!dimensionsDefine) {\r\n                dimensionsDefine = [];\r\n                each(data, function (colArr, key) {\r\n                    dimensionsDefine.push(key);\r\n                });\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var value0 = getDataItemValue(data[0]);\r\n            dimensionsDetectedCount = isArray(value0) && value0.length || 1;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n            if (__DEV__) {\r\n                assert(!!dimensionsDefine, 'dimensions must be given if data is TypedArray.');\r\n            }\r\n        }\r\n        return {\r\n            startIndex: startIndex,\r\n            dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n            dimensionsDetectedCount: dimensionsDetectedCount\r\n        };\r\n    }\r\n    function objectRowsCollectDimensions(data) {\r\n        var firstIndex = 0;\r\n        var obj;\r\n        while (firstIndex < data.length && !(obj = data[firstIndex++])) { }\r\n        if (obj) {\r\n            var dimensions_1 = [];\r\n            each(obj, function (value, key) {\r\n                dimensions_1.push(key);\r\n            });\r\n            return dimensions_1;\r\n        }\r\n    }\r\n    function normalizeDimensionsOption(dimensionsDefine) {\r\n        if (!dimensionsDefine) {\r\n            return;\r\n        }\r\n        var nameMap = createHashMap();\r\n        return map(dimensionsDefine, function (rawItem, index) {\r\n            rawItem = isObject(rawItem) ? rawItem : { name: rawItem };\r\n            var item = {\r\n                name: rawItem.name,\r\n                displayName: rawItem.displayName,\r\n                type: rawItem.type\r\n            };\r\n            if (name == null) {\r\n                return item;\r\n            }\r\n            item.name += '';\r\n            if (item.displayName == null) {\r\n                item.displayName = item.name;\r\n            }\r\n            var exist = nameMap.get(item.name);\r\n            if (!exist) {\r\n                nameMap.set(item.name, { count: 1 });\r\n            }\r\n            else {\r\n                item.name += '-' + exist.count++;\r\n            }\r\n            return item;\r\n        });\r\n    }\r\n    function arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\r\n        if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n            for (var i = 0; i < data.length && i < maxLoop; i++) {\r\n                cb(data[i] ? data[i][0] : null, i);\r\n            }\r\n        }\r\n        else {\r\n            var value0 = data[0] || [];\r\n            for (var i = 0; i < value0.length && i < maxLoop; i++) {\r\n                cb(value0[i], i);\r\n            }\r\n        }\r\n    }\n\n    var _a, _b, _c;\r\n    var providerMethods;\r\n    var mountMethods;\r\n    var DefaultDataProvider = (function () {\r\n        function DefaultDataProvider(sourceParam, dimSize) {\r\n            var source = !isSourceInstance(sourceParam)\r\n                ? createSourceFromSeriesDataOption(sourceParam)\r\n                : sourceParam;\r\n            this._source = source;\r\n            var data = this._data = source.data;\r\n            if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n                if (__DEV__) {\r\n                    if (dimSize == null) {\r\n                        throw new Error('Typed array data must specify dimension size');\r\n                    }\r\n                }\r\n                this._offset = 0;\r\n                this._dimSize = dimSize;\r\n                this._data = data;\r\n            }\r\n            mountMethods(this, data, source);\r\n        }\r\n        DefaultDataProvider.prototype.getSource = function () {\r\n            return this._source;\r\n        };\r\n        DefaultDataProvider.prototype.count = function () {\r\n            return 0;\r\n        };\r\n        DefaultDataProvider.prototype.getItem = function (idx, out) {\r\n            return;\r\n        };\r\n        DefaultDataProvider.prototype.appendData = function (newData) {\r\n        };\r\n        DefaultDataProvider.prototype.clean = function () {\r\n        };\r\n        DefaultDataProvider.protoInitialize = (function () {\r\n            var proto = DefaultDataProvider.prototype;\r\n            proto.pure = false;\r\n            proto.persistent = true;\r\n        })();\r\n        DefaultDataProvider.internalField = (function () {\r\n            var _a;\r\n            mountMethods = function (provider, data, source) {\r\n                var sourceFormat = source.sourceFormat;\r\n                var seriesLayoutBy = source.seriesLayoutBy;\r\n                var startIndex = source.startIndex;\r\n                var dimsDef = source.dimensionsDefine;\r\n                var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n                if (__DEV__) {\r\n                    assert(methods, 'Invalide sourceFormat: ' + sourceFormat);\r\n                }\r\n                extend(provider, methods);\r\n                if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n                    provider.getItem = getItemForTypedArray;\r\n                    provider.count = countForTypedArray;\r\n                    provider.fillStorage = fillStorageForTypedArray;\r\n                }\r\n                else {\r\n                    var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);\r\n                    provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef);\r\n                    var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);\r\n                    provider.count = bind(rawCounter, null, data, startIndex, dimsDef);\r\n                }\r\n            };\r\n            var getItemForTypedArray = function (idx, out) {\r\n                idx = idx - this._offset;\r\n                out = out || [];\r\n                var data = this._data;\r\n                var dimSize = this._dimSize;\r\n                var offset = dimSize * idx;\r\n                for (var i = 0; i < dimSize; i++) {\r\n                    out[i] = data[offset + i];\r\n                }\r\n                return out;\r\n            };\r\n            var fillStorageForTypedArray = function (start, end, storage, extent) {\r\n                var data = this._data;\r\n                var dimSize = this._dimSize;\r\n                for (var dim = 0; dim < dimSize; dim++) {\r\n                    var dimExtent = extent[dim];\r\n                    var min = dimExtent[0] == null ? Infinity : dimExtent[0];\r\n                    var max = dimExtent[1] == null ? -Infinity : dimExtent[1];\r\n                    var count = end - start;\r\n                    var arr = storage[dim];\r\n                    for (var i = 0; i < count; i++) {\r\n                        var val = data[(start + i) * dimSize + dim];\r\n                        arr[start + i] = val;\r\n                        val < min && (min = val);\r\n                        val > max && (max = val);\r\n                    }\r\n                    dimExtent[0] = min;\r\n                    dimExtent[1] = max;\r\n                }\r\n            };\r\n            var countForTypedArray = function () {\r\n                return this._data ? (this._data.length / this._dimSize) : 0;\r\n            };\r\n            providerMethods = (_a = {},\r\n                _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = {\r\n                    pure: true,\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = {\r\n                    pure: true,\r\n                    appendData: function () {\r\n                        throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\r\n                    }\r\n                },\r\n                _a[SOURCE_FORMAT_OBJECT_ROWS] = {\r\n                    pure: true,\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_KEYED_COLUMNS] = {\r\n                    pure: true,\r\n                    appendData: function (newData) {\r\n                        var data = this._data;\r\n                        each(newData, function (newCol, key) {\r\n                            var oldCol = data[key] || (data[key] = []);\r\n                            for (var i = 0; i < (newCol || []).length; i++) {\r\n                                oldCol.push(newCol[i]);\r\n                            }\r\n                        });\r\n                    }\r\n                },\r\n                _a[SOURCE_FORMAT_ORIGINAL] = {\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_TYPED_ARRAY] = {\r\n                    persistent: false,\r\n                    pure: true,\r\n                    appendData: function (newData) {\r\n                        if (__DEV__) {\r\n                            assert(isTypedArray(newData), 'Added data must be TypedArray if data in initialization is TypedArray');\r\n                        }\r\n                        this._data = newData;\r\n                    },\r\n                    clean: function () {\r\n                        this._offset += this.count();\r\n                        this._data = null;\r\n                    }\r\n                },\r\n                _a);\r\n            function appendDataSimply(newData) {\r\n                for (var i = 0; i < newData.length; i++) {\r\n                    this._data.push(newData[i]);\r\n                }\r\n            }\r\n        })();\r\n        return DefaultDataProvider;\r\n    }());\r\n    var getItemSimply = function (rawData, startIndex, dimsDef, idx) {\r\n        return rawData[idx];\r\n    };\r\n    var rawSourceItemGetterMap = (_a = {},\r\n        _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef, idx) {\r\n            return rawData[idx + startIndex];\r\n        },\r\n        _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef, idx) {\r\n            idx += startIndex;\r\n            var item = [];\r\n            var data = rawData;\r\n            for (var i = 0; i < data.length; i++) {\r\n                var row = data[i];\r\n                item.push(row ? row[idx] : null);\r\n            }\r\n            return item;\r\n        },\r\n        _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply,\r\n        _a[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef, idx) {\r\n            var item = [];\r\n            for (var i = 0; i < dimsDef.length; i++) {\r\n                var dimName = dimsDef[i].name;\r\n                if (__DEV__) {\r\n                    if (dimName == null) {\r\n                        throw new Error();\r\n                    }\r\n                }\r\n                var col = rawData[dimName];\r\n                item.push(col ? col[idx] : null);\r\n            }\r\n            return item;\r\n        },\r\n        _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply,\r\n        _a);\r\n    function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {\r\n        var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport get item on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    var countSimply = function (rawData, startIndex, dimsDef) {\r\n        return rawData.length;\r\n    };\r\n    var rawSourceDataCounterMap = (_b = {},\r\n        _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef) {\r\n            return Math.max(0, rawData.length - startIndex);\r\n        },\r\n        _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef) {\r\n            var row = rawData[0];\r\n            return row ? Math.max(0, row.length - startIndex) : 0;\r\n        },\r\n        _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply,\r\n        _b[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef) {\r\n            var dimName = dimsDef[0].name;\r\n            if (__DEV__) {\r\n                if (dimName == null) {\r\n                    throw new Error();\r\n                }\r\n            }\r\n            var col = rawData[dimName];\r\n            return col ? col.length : 0;\r\n        },\r\n        _b[SOURCE_FORMAT_ORIGINAL] = countSimply,\r\n        _b);\r\n    function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {\r\n        var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport count on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    var getRawValueSimply = function (dataItem, dimIndex, dimName) {\r\n        return dimIndex != null ? dataItem[dimIndex] : dataItem;\r\n    };\r\n    var rawSourceValueGetterMap = (_c = {},\r\n        _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply,\r\n        _c[SOURCE_FORMAT_OBJECT_ROWS] = function (dataItem, dimIndex, dimName) {\r\n            return dimIndex != null ? dataItem[dimName] : dataItem;\r\n        },\r\n        _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply,\r\n        _c[SOURCE_FORMAT_ORIGINAL] = function (dataItem, dimIndex, dimName) {\r\n            var value = getDataItemValue(dataItem);\r\n            return (dimIndex == null || !(value instanceof Array))\r\n                ? value\r\n                : value[dimIndex];\r\n        },\r\n        _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply,\r\n        _c);\r\n    function getRawSourceValueGetter(sourceFormat) {\r\n        var method = rawSourceValueGetterMap[sourceFormat];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport get value on \"' + sourceFormat + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    function getMethodMapKey(sourceFormat, seriesLayoutBy) {\r\n        return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n            ? sourceFormat + '_' + seriesLayoutBy\r\n            : sourceFormat;\r\n    }\r\n    function retrieveRawValue(data, dataIndex, dim) {\r\n        if (!data) {\r\n            return;\r\n        }\r\n        var dataItem = data.getRawDataItem(dataIndex);\r\n        if (dataItem == null) {\r\n            return;\r\n        }\r\n        var sourceFormat = data.getProvider().getSource().sourceFormat;\r\n        var dimName;\r\n        var dimIndex;\r\n        var dimInfo = data.getDimensionInfo(dim);\r\n        if (dimInfo) {\r\n            dimName = dimInfo.name;\r\n            dimIndex = dimInfo.index;\r\n        }\r\n        return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, dimName);\r\n    }\n\n    var DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g;\r\n    var DataFormatMixin = (function () {\r\n        function DataFormatMixin() {\r\n        }\r\n        DataFormatMixin.prototype.getDataParams = function (dataIndex, dataType) {\r\n            var data = this.getData(dataType);\r\n            var rawValue = this.getRawValue(dataIndex, dataType);\r\n            var rawDataIndex = data.getRawIndex(dataIndex);\r\n            var name = data.getName(dataIndex);\r\n            var itemOpt = data.getRawDataItem(dataIndex);\r\n            var style = data.getItemVisual(dataIndex, 'style');\r\n            var color = style && style[data.getItemVisual(dataIndex, 'drawType') || 'fill'];\r\n            var borderColor = style && style.stroke;\r\n            var mainType = this.mainType;\r\n            var isSeries = mainType === 'series';\r\n            var userOutput = data.userOutput;\r\n            return {\r\n                componentType: mainType,\r\n                componentSubType: this.subType,\r\n                componentIndex: this.componentIndex,\r\n                seriesType: isSeries ? this.subType : null,\r\n                seriesIndex: this.seriesIndex,\r\n                seriesId: isSeries ? this.id : null,\r\n                seriesName: isSeries ? this.name : null,\r\n                name: name,\r\n                dataIndex: rawDataIndex,\r\n                data: itemOpt,\r\n                dataType: dataType,\r\n                value: rawValue,\r\n                color: color,\r\n                borderColor: borderColor,\r\n                dimensionNames: userOutput ? userOutput.dimensionNames : null,\r\n                encode: userOutput ? userOutput.encode : null,\r\n                $vars: ['seriesName', 'name', 'value']\r\n            };\r\n        };\r\n        DataFormatMixin.prototype.getFormattedLabel = function (dataIndex, status, dataType, labelDimIndex, formatter, extendParams) {\r\n            status = status || 'normal';\r\n            var data = this.getData(dataType);\r\n            var params = this.getDataParams(dataIndex, dataType);\r\n            if (extendParams) {\r\n                extend(params, extendParams);\r\n            }\r\n            if (labelDimIndex != null && (params.value instanceof Array)) {\r\n                params.value = params.value[labelDimIndex];\r\n            }\r\n            if (!formatter) {\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                formatter = itemModel.get(status === 'normal'\r\n                    ? ['label', 'formatter']\r\n                    : [status, 'label', 'formatter']);\r\n            }\r\n            if (typeof formatter === 'function') {\r\n                params.status = status;\r\n                params.dimensionIndex = labelDimIndex;\r\n                return formatter(params);\r\n            }\r\n            else if (typeof formatter === 'string') {\r\n                var str = formatTpl(formatter, params);\r\n                return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\r\n                    var len = dim.length;\r\n                    if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\r\n                        dim = +dim.slice(1, len - 1);\r\n                    }\r\n                    return retrieveRawValue(data, dataIndex, dim);\r\n                });\r\n            }\r\n        };\r\n        DataFormatMixin.prototype.getRawValue = function (idx, dataType) {\r\n            return retrieveRawValue(this.getData(dataType), idx);\r\n        };\r\n        DataFormatMixin.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            return;\r\n        };\r\n        return DataFormatMixin;\r\n    }());\r\n    function normalizeTooltipFormatResult(result) {\r\n        var markupText;\r\n        var markupFragment;\r\n        if (isObject(result)) {\r\n            if (result.type) {\r\n                markupFragment = result;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    console.warn('The return type of `formatTooltip` is not supported: ' + makePrintable(result));\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            markupText = result;\r\n        }\r\n        return {\r\n            markupText: markupText,\r\n            markupFragment: markupFragment\r\n        };\r\n    }\n\n    function createTask(define) {\r\n        return new Task(define);\r\n    }\r\n    var Task = (function () {\r\n        function Task(define) {\r\n            define = define || {};\r\n            this._reset = define.reset;\r\n            this._plan = define.plan;\r\n            this._count = define.count;\r\n            this._onDirty = define.onDirty;\r\n            this._dirty = true;\r\n        }\r\n        Task.prototype.perform = function (performArgs) {\r\n            var upTask = this._upstream;\r\n            var skip = performArgs && performArgs.skip;\r\n            if (this._dirty && upTask) {\r\n                var context = this.context;\r\n                context.data = context.outputData = upTask.context.outputData;\r\n            }\r\n            if (this.__pipeline) {\r\n                this.__pipeline.currentTask = this;\r\n            }\r\n            var planResult;\r\n            if (this._plan && !skip) {\r\n                planResult = this._plan(this.context);\r\n            }\r\n            var lastModBy = normalizeModBy(this._modBy);\r\n            var lastModDataCount = this._modDataCount || 0;\r\n            var modBy = normalizeModBy(performArgs && performArgs.modBy);\r\n            var modDataCount = performArgs && performArgs.modDataCount || 0;\r\n            if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\r\n                planResult = 'reset';\r\n            }\r\n            function normalizeModBy(val) {\r\n                !(val >= 1) && (val = 1);\r\n                return val;\r\n            }\r\n            var forceFirstProgress;\r\n            if (this._dirty || planResult === 'reset') {\r\n                this._dirty = false;\r\n                forceFirstProgress = this._doReset(skip);\r\n            }\r\n            this._modBy = modBy;\r\n            this._modDataCount = modDataCount;\r\n            var step = performArgs && performArgs.step;\r\n            if (upTask) {\r\n                if (__DEV__) {\r\n                    assert(upTask._outputDueEnd != null);\r\n                }\r\n                this._dueEnd = upTask._outputDueEnd;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    assert(!this._progress || this._count);\r\n                }\r\n                this._dueEnd = this._count ? this._count(this.context) : Infinity;\r\n            }\r\n            if (this._progress) {\r\n                var start = this._dueIndex;\r\n                var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\r\n                if (!skip && (forceFirstProgress || start < end)) {\r\n                    var progress = this._progress;\r\n                    if (isArray(progress)) {\r\n                        for (var i = 0; i < progress.length; i++) {\r\n                            this._doProgress(progress[i], start, end, modBy, modDataCount);\r\n                        }\r\n                    }\r\n                    else {\r\n                        this._doProgress(progress, start, end, modBy, modDataCount);\r\n                    }\r\n                }\r\n                this._dueIndex = end;\r\n                var outputDueEnd = this._settedOutputEnd != null\r\n                    ? this._settedOutputEnd : end;\r\n                if (__DEV__) {\r\n                    assert(outputDueEnd >= this._outputDueEnd);\r\n                }\r\n                this._outputDueEnd = outputDueEnd;\r\n            }\r\n            else {\r\n                this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null\r\n                    ? this._settedOutputEnd : this._dueEnd;\r\n            }\r\n            return this.unfinished();\r\n        };\r\n        Task.prototype.dirty = function () {\r\n            this._dirty = true;\r\n            this._onDirty && this._onDirty(this.context);\r\n        };\r\n        Task.prototype._doProgress = function (progress, start, end, modBy, modDataCount) {\r\n            iterator.reset(start, end, modBy, modDataCount);\r\n            this._callingProgress = progress;\r\n            this._callingProgress({\r\n                start: start, end: end, count: end - start, next: iterator.next\r\n            }, this.context);\r\n        };\r\n        Task.prototype._doReset = function (skip) {\r\n            this._dueIndex = this._outputDueEnd = this._dueEnd = 0;\r\n            this._settedOutputEnd = null;\r\n            var progress;\r\n            var forceFirstProgress;\r\n            if (!skip && this._reset) {\r\n                progress = this._reset(this.context);\r\n                if (progress && progress.progress) {\r\n                    forceFirstProgress = progress.forceFirstProgress;\r\n                    progress = progress.progress;\r\n                }\r\n                if (isArray(progress) && !progress.length) {\r\n                    progress = null;\r\n                }\r\n            }\r\n            this._progress = progress;\r\n            this._modBy = this._modDataCount = null;\r\n            var downstream = this._downstream;\r\n            downstream && downstream.dirty();\r\n            return forceFirstProgress;\r\n        };\r\n        Task.prototype.unfinished = function () {\r\n            return this._progress && this._dueIndex < this._dueEnd;\r\n        };\r\n        Task.prototype.pipe = function (downTask) {\r\n            if (__DEV__) {\r\n                assert(downTask && !downTask._disposed && downTask !== this);\r\n            }\r\n            if (this._downstream !== downTask || this._dirty) {\r\n                this._downstream = downTask;\r\n                downTask._upstream = this;\r\n                downTask.dirty();\r\n            }\r\n        };\r\n        Task.prototype.dispose = function () {\r\n            if (this._disposed) {\r\n                return;\r\n            }\r\n            this._upstream && (this._upstream._downstream = null);\r\n            this._downstream && (this._downstream._upstream = null);\r\n            this._dirty = false;\r\n            this._disposed = true;\r\n        };\r\n        Task.prototype.getUpstream = function () {\r\n            return this._upstream;\r\n        };\r\n        Task.prototype.getDownstream = function () {\r\n            return this._downstream;\r\n        };\r\n        Task.prototype.setOutputEnd = function (end) {\r\n            this._outputDueEnd = this._settedOutputEnd = end;\r\n        };\r\n        return Task;\r\n    }());\r\n    var iterator = (function () {\r\n        var end;\r\n        var current;\r\n        var modBy;\r\n        var modDataCount;\r\n        var winCount;\r\n        var it = {\r\n            reset: function (s, e, sStep, sCount) {\r\n                current = s;\r\n                end = e;\r\n                modBy = sStep;\r\n                modDataCount = sCount;\r\n                winCount = Math.ceil(modDataCount / modBy);\r\n                it.next = (modBy > 1 && modDataCount > 0) ? modNext : sequentialNext;\r\n            }\r\n        };\r\n        return it;\r\n        function sequentialNext() {\r\n            return current < end ? current++ : null;\r\n        }\r\n        function modNext() {\r\n            var dataIndex = (current % winCount) * modBy + Math.ceil(current / winCount);\r\n            var result = current >= end\r\n                ? null\r\n                : dataIndex < modDataCount\r\n                    ? dataIndex\r\n                    : current;\r\n            current++;\r\n            return result;\r\n        }\r\n    })();\n\n    function parseDataValue(value, opt) {\r\n        var dimType = opt && opt.type;\r\n        if (dimType === 'ordinal') {\r\n            var ordinalMeta = opt && opt.ordinalMeta;\r\n            return ordinalMeta\r\n                ? ordinalMeta.parseAndCollect(value)\r\n                : value;\r\n        }\r\n        if (dimType === 'time'\r\n            && typeof value !== 'number'\r\n            && value != null\r\n            && value !== '-') {\r\n            value = +parseDate(value);\r\n        }\r\n        return (value == null || value === '')\r\n            ? NaN\r\n            : +value;\r\n    }\r\n    var valueParserMap = createHashMap({\r\n        'number': function (val) {\r\n            return parseFloat(val);\r\n        },\r\n        'time': function (val) {\r\n            return +parseDate(val);\r\n        },\r\n        'trim': function (val) {\r\n            return typeof val === 'string' ? trim(val) : val;\r\n        }\r\n    });\r\n    var SortOrderComparator = (function () {\r\n        function SortOrderComparator(order, incomparable) {\r\n            var isDesc = order === 'desc';\r\n            this._resultLT = isDesc ? 1 : -1;\r\n            if (incomparable == null) {\r\n                incomparable = isDesc ? 'min' : 'max';\r\n            }\r\n            this._incomparable = incomparable === 'min' ? -Infinity : Infinity;\r\n        }\r\n        SortOrderComparator.prototype.evaluate = function (lval, rval) {\r\n            var lvalTypeof = typeof lval;\r\n            var rvalTypeof = typeof rval;\r\n            var lvalFloat = lvalTypeof === 'number' ? lval : numericToNumber(lval);\r\n            var rvalFloat = rvalTypeof === 'number' ? rval : numericToNumber(rval);\r\n            var lvalNotNumeric = isNaN(lvalFloat);\r\n            var rvalNotNumeric = isNaN(rvalFloat);\r\n            if (lvalNotNumeric) {\r\n                lvalFloat = this._incomparable;\r\n            }\r\n            if (rvalNotNumeric) {\r\n                rvalFloat = this._incomparable;\r\n            }\r\n            if (lvalNotNumeric && rvalNotNumeric) {\r\n                var lvalIsStr = lvalTypeof === 'string';\r\n                var rvalIsStr = rvalTypeof === 'string';\r\n                if (lvalIsStr) {\r\n                    lvalFloat = rvalIsStr ? lval : 0;\r\n                }\r\n                if (rvalIsStr) {\r\n                    rvalFloat = lvalIsStr ? rval : 0;\r\n                }\r\n            }\r\n            return lvalFloat < rvalFloat ? this._resultLT\r\n                : lvalFloat > rvalFloat ? -this._resultLT\r\n                    : 0;\r\n        };\r\n        return SortOrderComparator;\r\n    }());\n\n    var ExternalSource = (function () {\r\n        function ExternalSource() {\r\n        }\r\n        ExternalSource.prototype.getRawData = function () {\r\n            throw new Error('not supported');\r\n        };\r\n        ExternalSource.prototype.getRawDataItem = function (dataIndex) {\r\n            throw new Error('not supported');\r\n        };\r\n        ExternalSource.prototype.cloneRawData = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.getDimensionInfo = function (dim) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.cloneAllDimensionInfo = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.count = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.retrieveValue = function (dataIndex, dimIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.retrieveValueFromItem = function (dataItem, dimIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.convertValue = function (rawVal, dimInfo) {\r\n            return parseDataValue(rawVal, dimInfo);\r\n        };\r\n        return ExternalSource;\r\n    }());\r\n    function createExternalSource(internalSource, externalTransform) {\r\n        var extSource = new ExternalSource();\r\n        var data = internalSource.data;\r\n        var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat;\r\n        var sourceHeaderCount = internalSource.startIndex;\r\n        var dimensions = [];\r\n        var dimsByName = {};\r\n        var dimsDef = internalSource.dimensionsDefine;\r\n        if (dimsDef) {\r\n            each(dimsDef, function (dimDef, idx) {\r\n                var name = dimDef.name;\r\n                var dimDefExt = {\r\n                    index: idx,\r\n                    name: name,\r\n                    displayName: dimDef.displayName\r\n                };\r\n                dimensions.push(dimDefExt);\r\n                if (name != null) {\r\n                    var errMsg = '';\r\n                    if (hasOwn(dimsByName, name)) {\r\n                        if (__DEV__) {\r\n                            errMsg = 'dimension name \"' + name + '\" duplicated.';\r\n                        }\r\n                        throwError(errMsg);\r\n                    }\r\n                    dimsByName[name] = dimDefExt;\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) {\r\n                dimensions.push({ index: i });\r\n            }\r\n        }\r\n        var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n        if (externalTransform.__isBuiltIn) {\r\n            extSource.getRawDataItem = function (dataIndex) {\r\n                return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\r\n            };\r\n            extSource.getRawData = bind(getRawData, null, internalSource);\r\n        }\r\n        extSource.cloneRawData = bind(cloneRawData, null, internalSource);\r\n        var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n        extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions);\r\n        var rawValueGetter = getRawSourceValueGetter(sourceFormat);\r\n        extSource.retrieveValue = function (dataIndex, dimIndex) {\r\n            var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\r\n            return retrieveValueFromItem(rawItem, dimIndex);\r\n        };\r\n        var retrieveValueFromItem = extSource.retrieveValueFromItem = function (dataItem, dimIndex) {\r\n            if (dataItem == null) {\r\n                return;\r\n            }\r\n            var dimDef = dimensions[dimIndex];\r\n            if (dimDef) {\r\n                return rawValueGetter(dataItem, dimIndex, dimDef.name);\r\n            }\r\n        };\r\n        extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName);\r\n        extSource.cloneAllDimensionInfo = bind(cloneAllDimensionInfo, null, dimensions);\r\n        return extSource;\r\n    }\r\n    function getRawData(upstream) {\r\n        var sourceFormat = upstream.sourceFormat;\r\n        var data = upstream.data;\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n            || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS\r\n            || !data\r\n            || (isArray(data) && !data.length)) {\r\n            return upstream.data;\r\n        }\r\n        var errMsg = '';\r\n        if (__DEV__) {\r\n            errMsg = '`getRawData` is not supported in source format ' + sourceFormat;\r\n        }\r\n        throwError(errMsg);\r\n    }\r\n    function cloneRawData(upstream) {\r\n        var sourceFormat = upstream.sourceFormat;\r\n        var data = upstream.data;\r\n        if (!data) {\r\n            return data;\r\n        }\r\n        else if (isArray(data) && !data.length) {\r\n            return [];\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var result = [];\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                result.push(data[i].slice());\r\n            }\r\n            return result;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            var result = [];\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                result.push(extend({}, data[i]));\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function getDimensionInfo(dimensions, dimsByName, dim) {\r\n        if (dim == null) {\r\n            return;\r\n        }\r\n        if (typeof dim === 'number'\r\n            || (!isNaN(dim) && !hasOwn(dimsByName, dim))) {\r\n            return dimensions[dim];\r\n        }\r\n        else if (hasOwn(dimsByName, dim)) {\r\n            return dimsByName[dim];\r\n        }\r\n    }\r\n    function cloneAllDimensionInfo(dimensions) {\r\n        return clone(dimensions);\r\n    }\r\n    var externalTransformMap = createHashMap();\r\n    function registerExternalTransform(externalTransform) {\r\n        externalTransform = clone(externalTransform);\r\n        var type = externalTransform.type;\r\n        var errMsg = '';\r\n        if (!type) {\r\n            if (__DEV__) {\r\n                errMsg = 'Must have a `type` when `registerTransform`.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var typeParsed = type.split(':');\r\n        if (typeParsed.length !== 2) {\r\n            if (__DEV__) {\r\n                errMsg = 'Name must include namespace like \"ns:regression\".';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var isBuiltIn = false;\r\n        if (typeParsed[0] === 'echarts') {\r\n            type = typeParsed[1];\r\n            isBuiltIn = true;\r\n        }\r\n        externalTransform.__isBuiltIn = isBuiltIn;\r\n        externalTransformMap.set(type, externalTransform);\r\n    }\r\n    function applyDataTransform(rawTransOption, sourceList, infoForPrint) {\r\n        var pipedTransOption = normalizeToArray(rawTransOption);\r\n        var pipeLen = pipedTransOption.length;\r\n        var errMsg = '';\r\n        if (!pipeLen) {\r\n            if (__DEV__) {\r\n                errMsg = 'If `transform` declared, it should at least contain one transform.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        for (var i = 0, len = pipeLen; i < len; i++) {\r\n            var transOption = pipedTransOption[i];\r\n            sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i);\r\n            if (i !== len - 1) {\r\n                sourceList.length = Math.max(sourceList.length, 1);\r\n            }\r\n        }\r\n        return sourceList;\r\n    }\r\n    function applySingleDataTransform(transOption, upSourceList, infoForPrint, pipeIndex) {\r\n        var errMsg = '';\r\n        if (!upSourceList.length) {\r\n            if (__DEV__) {\r\n                errMsg = 'Must have at least one upstream dataset.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        if (!isObject(transOption)) {\r\n            if (__DEV__) {\r\n                errMsg = 'transform declaration must be an object rather than ' + typeof transOption + '.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var transType = transOption.type;\r\n        var externalTransform = externalTransformMap.get(transType);\r\n        if (!externalTransform) {\r\n            if (__DEV__) {\r\n                errMsg = 'Can not find transform on type \"' + transType + '\".';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var extUpSourceList = map(upSourceList, function (upSource) { return createExternalSource(upSource, externalTransform); });\r\n        var resultList = normalizeToArray(externalTransform.transform({\r\n            upstream: extUpSourceList[0],\r\n            upstreamList: extUpSourceList,\r\n            config: clone(transOption.config)\r\n        }));\r\n        if (__DEV__) {\r\n            if (transOption.print) {\r\n                var printStrArr = map(resultList, function (extSource) {\r\n                    var pipeIndexStr = pipeIndex != null ? ' === pipe index: ' + pipeIndex : '';\r\n                    return [\r\n                        '=== dataset index: ' + infoForPrint.datasetIndex + pipeIndexStr + ' ===',\r\n                        '- transform result data:',\r\n                        makePrintable(extSource.data),\r\n                        '- transform result dimensions:',\r\n                        makePrintable(extSource.dimensions)\r\n                    ].join('\\n');\r\n                }).join('\\n');\r\n                consoleLog(printStrArr);\r\n            }\r\n        }\r\n        return map(resultList, function (result) {\r\n            var errMsg = '';\r\n            if (!isObject(result)) {\r\n                if (__DEV__) {\r\n                    errMsg = 'A transform should not return some empty results.';\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            var resultData = result.data;\r\n            if (resultData != null) {\r\n                if (!isObject(resultData) && !isArrayLike(resultData)) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'Result data should be object or array in data transform.';\r\n                    }\r\n                    throwError(errMsg);\r\n                }\r\n            }\r\n            else {\r\n                resultData = upSourceList[0].data;\r\n            }\r\n            var resultMetaRawOption = inheritSourceMetaRawOption(upSourceList[0], {\r\n                seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\r\n                sourceHeader: 0,\r\n                dimensions: result.dimensions\r\n            });\r\n            return createSource(resultData, resultMetaRawOption, null, null);\r\n        });\r\n    }\n\n    var SourceManager = (function () {\r\n        function SourceManager(sourceHost) {\r\n            this._sourceList = [];\r\n            this._upstreamSignList = [];\r\n            this._versionSignBase = 0;\r\n            this._sourceHost = sourceHost;\r\n        }\r\n        SourceManager.prototype.dirty = function () {\r\n            this._setLocalSource([], []);\r\n        };\r\n        SourceManager.prototype._setLocalSource = function (sourceList, upstreamSignList) {\r\n            this._sourceList = sourceList;\r\n            this._upstreamSignList = upstreamSignList;\r\n            this._versionSignBase++;\r\n            if (this._versionSignBase > 9e10) {\r\n                this._versionSignBase = 0;\r\n            }\r\n        };\r\n        SourceManager.prototype._getVersionSign = function () {\r\n            return this._sourceHost.uid + '_' + this._versionSignBase;\r\n        };\r\n        SourceManager.prototype.prepareSource = function () {\r\n            if (this._isDirty()) {\r\n                this._createSource();\r\n            }\r\n        };\r\n        SourceManager.prototype._createSource = function () {\r\n            this._setLocalSource([], []);\r\n            var sourceHost = this._sourceHost;\r\n            var upSourceMgrList = this._getUpstreamSourceManagers();\r\n            var hasUpstream = !!upSourceMgrList.length;\r\n            var resultSourceList;\r\n            var upstreamSignList;\r\n            if (isSeries(sourceHost)) {\r\n                var seriesModel = sourceHost;\r\n                var data = void 0;\r\n                var sourceFormat = void 0;\r\n                var upSource = void 0;\r\n                if (hasUpstream) {\r\n                    var upSourceMgr = upSourceMgrList[0];\r\n                    upSourceMgr.prepareSource();\r\n                    upSource = upSourceMgr.getSource();\r\n                    data = upSource.data;\r\n                    sourceFormat = upSource.sourceFormat;\r\n                    upstreamSignList = [upSourceMgr._getVersionSign()];\r\n                }\r\n                else {\r\n                    data = seriesModel.get('data', true);\r\n                    sourceFormat = isTypedArray(data)\r\n                        ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\r\n                    upstreamSignList = [];\r\n                }\r\n                var thisMetaRawOption = inheritSourceMetaRawOption(upSource, this._getSourceMetaRawOption());\r\n                resultSourceList = [createSource(data, thisMetaRawOption, sourceFormat, seriesModel.get('encode', true))];\r\n            }\r\n            else {\r\n                var datasetModel = sourceHost;\r\n                if (hasUpstream) {\r\n                    var result = this._applyTransform(upSourceMgrList);\r\n                    resultSourceList = result.sourceList;\r\n                    upstreamSignList = result.upstreamSignList;\r\n                }\r\n                else {\r\n                    var sourceData = datasetModel.get('source', true);\r\n                    resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null, null)];\r\n                    upstreamSignList = [];\r\n                }\r\n            }\r\n            if (__DEV__) {\r\n                assert(resultSourceList && upstreamSignList);\r\n            }\r\n            this._setLocalSource(resultSourceList, upstreamSignList);\r\n        };\r\n        SourceManager.prototype._applyTransform = function (upMgrList) {\r\n            var datasetModel = this._sourceHost;\r\n            var transformOption = datasetModel.get('transform', true);\r\n            var fromTransformResult = datasetModel.get('fromTransformResult', true);\r\n            if (__DEV__) {\r\n                assert(fromTransformResult != null || transformOption != null);\r\n            }\r\n            if (fromTransformResult != null) {\r\n                var errMsg = '';\r\n                if (upMgrList.length !== 1) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'When using `fromTransformResult`, there should be only one upstream dataset';\r\n                    }\r\n                    doThrow(errMsg);\r\n                }\r\n            }\r\n            var sourceList;\r\n            var upSourceList = [];\r\n            var upstreamSignList = [];\r\n            each(upMgrList, function (upMgr) {\r\n                upMgr.prepareSource();\r\n                var upSource = upMgr.getSource(fromTransformResult || 0);\r\n                var errMsg = '';\r\n                if (fromTransformResult != null && !upSource) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'Can not retrieve result by `fromTransformResult`: ' + fromTransformResult;\r\n                    }\r\n                    doThrow(errMsg);\r\n                }\r\n                upSourceList.push(upSource);\r\n                upstreamSignList.push(upMgr._getVersionSign());\r\n            });\r\n            if (transformOption) {\r\n                sourceList = applyDataTransform(transformOption, upSourceList, { datasetIndex: datasetModel.componentIndex });\r\n            }\r\n            else if (fromTransformResult != null) {\r\n                sourceList = [cloneSourceShallow(upSourceList[0])];\r\n            }\r\n            return { sourceList: sourceList, upstreamSignList: upstreamSignList };\r\n        };\r\n        SourceManager.prototype._isDirty = function () {\r\n            var sourceList = this._sourceList;\r\n            if (!sourceList.length) {\r\n                return true;\r\n            }\r\n            var upSourceMgrList = this._getUpstreamSourceManagers();\r\n            for (var i = 0; i < upSourceMgrList.length; i++) {\r\n                var upSrcMgr = upSourceMgrList[i];\r\n                if (upSrcMgr._isDirty()\r\n                    || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) {\r\n                    return true;\r\n                }\r\n            }\r\n        };\r\n        SourceManager.prototype.getSource = function (sourceIndex) {\r\n            return this._sourceList[sourceIndex || 0];\r\n        };\r\n        SourceManager.prototype._getUpstreamSourceManagers = function () {\r\n            var sourceHost = this._sourceHost;\r\n            if (isSeries(sourceHost)) {\r\n                var datasetModel = querySeriesUpstreamDatasetModel(sourceHost);\r\n                return !datasetModel ? [] : [datasetModel.getSourceManager()];\r\n            }\r\n            else {\r\n                return map(queryDatasetUpstreamDatasetModels(sourceHost), function (datasetModel) { return datasetModel.getSourceManager(); });\r\n            }\r\n        };\r\n        SourceManager.prototype._getSourceMetaRawOption = function () {\r\n            var sourceHost = this._sourceHost;\r\n            var seriesLayoutBy;\r\n            var sourceHeader;\r\n            var dimensions;\r\n            if (isSeries(sourceHost)) {\r\n                seriesLayoutBy = sourceHost.get('seriesLayoutBy', true);\r\n                sourceHeader = sourceHost.get('sourceHeader', true);\r\n                dimensions = sourceHost.get('dimensions', true);\r\n            }\r\n            else if (!this._getUpstreamSourceManagers().length) {\r\n                var model = sourceHost;\r\n                seriesLayoutBy = model.get('seriesLayoutBy', true);\r\n                sourceHeader = model.get('sourceHeader', true);\r\n                dimensions = model.get('dimensions', true);\r\n            }\r\n            return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n        };\r\n        return SourceManager;\r\n    }());\r\n    function disableTransformOptionMerge(datasetModel) {\r\n        var transformOption = datasetModel.option.transform;\r\n        transformOption && setAsPrimitive(datasetModel.option.transform);\r\n    }\r\n    function isSeries(sourceHost) {\r\n        return sourceHost.mainType === 'series';\r\n    }\r\n    function doThrow(errMsg) {\r\n        throw new Error(errMsg);\r\n    }\n\n    var TOOLTIP_NAME_TEXT_STYLE_CSS = 'font-size:12px;color:#6e7079';\r\n    var TOOLTIP_TEXT_STYLE_RICH = {\r\n        fontSize: 12,\r\n        fill: '#6e7079'\r\n    };\r\n    var TOOLTIP_VALUE_TEXT_STYLE_CSS = 'font-size:14px;color:#464646;font-weight:900';\r\n    var TOOLTIP_VALUE_TEXT_STYLE_RICH = {\r\n        fontSize: 14,\r\n        fill: '#464646',\r\n        fontWeight: 900\r\n    };\r\n    var TOOLTIP_LINE_HEIGHT_CSS = 'line-height:1';\r\n    var HTML_GAPS = [0, 10, 20, 30];\r\n    var RICH_TEXT_GAPS = ['', '\\n', '\\n\\n', '\\n\\n\\n'];\r\n    function createTooltipMarkup(type, option) {\r\n        option.type = type;\r\n        return option;\r\n    }\r\n    function getBuilder(fragment) {\r\n        return hasOwn(builderMap, fragment.type) && builderMap[fragment.type];\r\n    }\r\n    var builderMap = {\r\n        section: {\r\n            planLayout: function (fragment) {\r\n                var subBlockLen = fragment.blocks.length;\r\n                var thisBlockHasInnerGap = subBlockLen > 1 || (subBlockLen > 0 && !fragment.noHeader);\r\n                var thisGapLevelBetweenSubBlocks = 0;\r\n                each(fragment.blocks, function (subBlock) {\r\n                    getBuilder(subBlock).planLayout(subBlock);\r\n                    var subGapLevel = subBlock.__gapLevelBetweenSubBlocks;\r\n                    if (subGapLevel >= thisGapLevelBetweenSubBlocks) {\r\n                        thisGapLevelBetweenSubBlocks = subGapLevel + ((thisBlockHasInnerGap && (!subGapLevel\r\n                            || (subBlock.type === 'section' && !subBlock.noHeader))) ? 1 : 0);\r\n                    }\r\n                });\r\n                fragment.__gapLevelBetweenSubBlocks = thisGapLevelBetweenSubBlocks;\r\n            },\r\n            build: function (ctx, fragment, topMarginForOuterGap) {\r\n                var noHeader = fragment.noHeader;\r\n                var gaps = getGap(fragment);\r\n                var subMarkupText = buildSubBlocks(ctx, fragment, noHeader ? topMarginForOuterGap : gaps.html);\r\n                if (noHeader) {\r\n                    return subMarkupText;\r\n                }\r\n                var displayableHeader = makeValueReadable(fragment.header, 'ordinal', ctx.useUTC);\r\n                if (ctx.renderMode === 'richText') {\r\n                    return wrapInlineNameRichText(ctx, displayableHeader) + gaps.richText\r\n                        + subMarkupText;\r\n                }\r\n                else {\r\n                    return wrapBlockHTML(\"<div style=\\\"\" + TOOLTIP_NAME_TEXT_STYLE_CSS + \";\" + TOOLTIP_LINE_HEIGHT_CSS + \";\\\">\"\r\n                        + encodeHTML(displayableHeader)\r\n                        + '</div>'\r\n                        + subMarkupText, topMarginForOuterGap);\r\n                }\r\n            }\r\n        },\r\n        nameValue: {\r\n            planLayout: function (fragment) {\r\n                fragment.__gapLevelBetweenSubBlocks = 0;\r\n            },\r\n            build: function (ctx, fragment, topMarginForOuterGap) {\r\n                var renderMode = ctx.renderMode;\r\n                var noName = fragment.noName;\r\n                var noValue = fragment.noValue;\r\n                var noMarker = !fragment.markerType;\r\n                var name = fragment.name;\r\n                var value = fragment.value;\r\n                var useUTC = ctx.useUTC;\r\n                if (noName && noValue) {\r\n                    return;\r\n                }\r\n                var markerStr = noMarker\r\n                    ? ''\r\n                    : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || '#333', renderMode);\r\n                var readableName = noName\r\n                    ? ''\r\n                    : makeValueReadable(name, 'ordinal', useUTC);\r\n                var valueTypeOption = fragment.valueType;\r\n                var readableValueList = noValue\r\n                    ? []\r\n                    : (isArray(value)\r\n                        ? map(value, function (val, idx) { return makeValueReadable(val, isArray(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC); })\r\n                        : [makeValueReadable(value, isArray(valueTypeOption) ? valueTypeOption[0] : valueTypeOption, useUTC)]);\r\n                var valueAlignRight = !noMarker || !noName;\r\n                var valueCloseToMarker = !noMarker && noName;\r\n                return renderMode === 'richText'\r\n                    ? ((noMarker ? '' : markerStr)\r\n                        + (noName ? '' : wrapInlineNameRichText(ctx, readableName))\r\n                        + (noValue ? '' : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker)))\r\n                    : wrapBlockHTML((noMarker ? '' : markerStr)\r\n                        + (noName ? '' : wrapInlineNameHTML(readableName, !noMarker))\r\n                        + (noValue ? '' : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker)), topMarginForOuterGap);\r\n            }\r\n        }\r\n    };\r\n    function buildSubBlocks(ctx, fragment, topMarginForOuterGap) {\r\n        var subMarkupTextList = [];\r\n        var subBlocks = fragment.blocks || [];\r\n        assert(!subBlocks || isArray(subBlocks));\r\n        subBlocks = subBlocks || [];\r\n        var orderMode = ctx.orderMode;\r\n        if (fragment.sortBlocks && orderMode) {\r\n            subBlocks = subBlocks.slice();\r\n            var orderMap = { valueAsc: 'asc', valueDesc: 'desc' };\r\n            if (hasOwn(orderMap, orderMode)) {\r\n                var comparator_1 = new SortOrderComparator(orderMap[orderMode], null);\r\n                subBlocks.sort(function (a, b) { return comparator_1.evaluate(a.sortParam, b.sortParam); });\r\n            }\r\n            else if (orderMode === 'seriesDesc') {\r\n                subBlocks.reverse();\r\n            }\r\n        }\r\n        var gaps = getGap(fragment);\r\n        each(subBlocks, function (subBlock, idx) {\r\n            var subMarkupText = getBuilder(subBlock).build(ctx, subBlock, idx > 0 ? gaps.html : 0);\r\n            subMarkupText != null && subMarkupTextList.push(subMarkupText);\r\n        });\r\n        if (!subMarkupTextList.length) {\r\n            return;\r\n        }\r\n        return ctx.renderMode === 'richText'\r\n            ? subMarkupTextList.join(gaps.richText)\r\n            : wrapBlockHTML(subMarkupTextList.join(''), topMarginForOuterGap);\r\n    }\r\n    function buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC) {\r\n        if (!fragment) {\r\n            return;\r\n        }\r\n        var builder = getBuilder(fragment);\r\n        builder.planLayout(fragment);\r\n        var ctx = {\r\n            useUTC: useUTC,\r\n            renderMode: renderMode,\r\n            orderMode: orderMode,\r\n            markupStyleCreator: markupStyleCreator\r\n        };\r\n        return builder.build(ctx, fragment, 0);\r\n    }\r\n    function getGap(fragment) {\r\n        var gapLevelBetweenSubBlocks = fragment.__gapLevelBetweenSubBlocks;\r\n        return {\r\n            html: HTML_GAPS[gapLevelBetweenSubBlocks],\r\n            richText: RICH_TEXT_GAPS[gapLevelBetweenSubBlocks]\r\n        };\r\n    }\r\n    function wrapBlockHTML(encodedContent, topGap) {\r\n        var clearfix = '<div style=\"clear:both\"></div>';\r\n        var marginCSS = \"margin: \" + topGap + \"px 0 0\";\r\n        return \"<div style=\\\"\" + marginCSS + \";\" + TOOLTIP_LINE_HEIGHT_CSS + \";\\\">\"\r\n            + encodedContent + clearfix\r\n            + '</div>';\r\n    }\r\n    function wrapInlineNameHTML(name, leftHasMarker) {\r\n        var marginCss = leftHasMarker ? 'margin-left:2px' : '';\r\n        return \"<span style=\\\"\" + TOOLTIP_NAME_TEXT_STYLE_CSS + \";\" + marginCss + \"\\\">\"\r\n            + encodeHTML(name)\r\n            + '</span>';\r\n    }\r\n    function wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker) {\r\n        var paddingStr = valueCloseToMarker ? '10px' : '20px';\r\n        var alignCSS = alignRight ? \"float:right;margin-left:\" + paddingStr : '';\r\n        return (\"<span style=\\\"\" + alignCSS + \";\" + TOOLTIP_VALUE_TEXT_STYLE_CSS + \"\\\">\"\r\n            + map(valueList, function (value) { return encodeHTML(value); }).join('&nbsp;&nbsp;')\r\n            + '</span>');\r\n    }\r\n    function wrapInlineNameRichText(ctx, name) {\r\n        return ctx.markupStyleCreator.wrapRichTextStyle(name, TOOLTIP_TEXT_STYLE_RICH);\r\n    }\r\n    function wrapInlineValueRichText(ctx, valueList, alignRight, valueCloseToMarker) {\r\n        var styles = [TOOLTIP_VALUE_TEXT_STYLE_RICH];\r\n        var paddingLeft = valueCloseToMarker ? 10 : 20;\r\n        alignRight && styles.push({ padding: [0, 0, 0, paddingLeft], align: 'right' });\r\n        return ctx.markupStyleCreator.wrapRichTextStyle(valueList.join('  '), styles);\r\n    }\r\n    function retrieveVisualColorForTooltipMarker(series, dataIndex) {\r\n        var style = series.getData().getItemVisual(dataIndex, 'style');\r\n        var color = style[series.visualDrawType];\r\n        return convertToColorString(color);\r\n    }\r\n    function getPaddingFromTooltipModel(model, renderMode) {\r\n        var padding = model.get('padding');\r\n        return padding != null\r\n            ? padding\r\n            : renderMode === 'richText'\r\n                ? [8, 10]\r\n                : 10;\r\n    }\r\n    var TooltipMarkupStyleCreator = (function () {\r\n        function TooltipMarkupStyleCreator() {\r\n            this.richTextStyles = {};\r\n            this._nextStyleNameId = getRandomIdBase();\r\n        }\r\n        TooltipMarkupStyleCreator.prototype._generateStyleName = function () {\r\n            return '__EC_aUTo_' + this._nextStyleNameId++;\r\n        };\r\n        TooltipMarkupStyleCreator.prototype.makeTooltipMarker = function (markerType, colorStr, renderMode) {\r\n            var markerId = renderMode === 'richText'\r\n                ? this._generateStyleName()\r\n                : null;\r\n            var marker = getTooltipMarker({\r\n                color: colorStr,\r\n                type: markerType,\r\n                renderMode: renderMode,\r\n                markerId: markerId\r\n            });\r\n            if (isString(marker)) {\r\n                return marker;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    assert(markerId);\r\n                }\r\n                this.richTextStyles[markerId] = marker.style;\r\n                return marker.content;\r\n            }\r\n        };\r\n        TooltipMarkupStyleCreator.prototype.wrapRichTextStyle = function (text, styles) {\r\n            var finalStl = {};\r\n            if (isArray(styles)) {\r\n                each(styles, function (stl) { return extend(finalStl, stl); });\r\n            }\r\n            else {\r\n                extend(finalStl, styles);\r\n            }\r\n            var styleName = this._generateStyleName();\r\n            this.richTextStyles[styleName] = finalStl;\r\n            return \"{\" + styleName + \"|\" + text + \"}\";\r\n        };\r\n        return TooltipMarkupStyleCreator;\r\n    }());\n\n    function defaultSeriesFormatTooltip(opt) {\r\n        var series = opt.series;\r\n        var dataIndex = opt.dataIndex;\r\n        var multipleSeries = opt.multipleSeries;\r\n        var data = series.getData();\r\n        var tooltipDims = data.mapDimensionsAll('defaultedTooltip');\r\n        var tooltipDimLen = tooltipDims.length;\r\n        var value = series.getRawValue(dataIndex);\r\n        var isValueArr = isArray(value);\r\n        var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex);\r\n        var inlineValue;\r\n        var inlineValueType;\r\n        var subBlocks;\r\n        var sortParam;\r\n        if (tooltipDimLen > 1 || (isValueArr && !tooltipDimLen)) {\r\n            var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor);\r\n            inlineValue = formatArrResult.inlineValues;\r\n            inlineValueType = formatArrResult.inlineValueTypes;\r\n            subBlocks = formatArrResult.blocks;\r\n            sortParam = formatArrResult.inlineValues[0];\r\n        }\r\n        else if (tooltipDimLen) {\r\n            var dimInfo = data.getDimensionInfo(tooltipDims[0]);\r\n            sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]);\r\n            inlineValueType = dimInfo.type;\r\n        }\r\n        else {\r\n            sortParam = inlineValue = isValueArr ? value[0] : value;\r\n        }\r\n        var seriesNameSpecified = isNameSpecified(series);\r\n        var seriesName = seriesNameSpecified && series.name || '';\r\n        var itemName = data.getName(dataIndex);\r\n        var inlineName = multipleSeries ? seriesName : itemName;\r\n        return createTooltipMarkup('section', {\r\n            header: seriesName,\r\n            noHeader: multipleSeries || !seriesNameSpecified,\r\n            sortParam: sortParam,\r\n            blocks: [\r\n                createTooltipMarkup('nameValue', {\r\n                    markerType: 'item',\r\n                    markerColor: markerColor,\r\n                    name: inlineName,\r\n                    noName: !trim(inlineName),\r\n                    value: inlineValue,\r\n                    valueType: inlineValueType\r\n                })\r\n            ].concat(subBlocks || [])\r\n        });\r\n    }\r\n    function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) {\r\n        var data = series.getData();\r\n        var isValueMultipleLine = reduce(value, function (isValueMultipleLine, val, idx) {\r\n            var dimItem = data.getDimensionInfo(idx);\r\n            return isValueMultipleLine = isValueMultipleLine\r\n                || (dimItem && dimItem.tooltip !== false && dimItem.displayName != null);\r\n        }, false);\r\n        var inlineValues = [];\r\n        var inlineValueTypes = [];\r\n        var blocks = [];\r\n        tooltipDims.length\r\n            ? each(tooltipDims, function (dim) {\r\n                setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\r\n            })\r\n            : each(value, setEachItem);\r\n        function setEachItem(val, dim) {\r\n            var dimInfo = data.getDimensionInfo(dim);\r\n            if (!dimInfo || dimInfo.otherDims.tooltip === false) {\r\n                return;\r\n            }\r\n            if (isValueMultipleLine) {\r\n                blocks.push(createTooltipMarkup('nameValue', {\r\n                    markerType: 'subItem',\r\n                    markerColor: colorStr,\r\n                    name: dimInfo.displayName,\r\n                    value: val,\r\n                    valueType: dimInfo.type\r\n                }));\r\n            }\r\n            else {\r\n                inlineValues.push(val);\r\n                inlineValueTypes.push(dimInfo.type);\r\n            }\r\n        }\r\n        return { inlineValues: inlineValues, inlineValueTypes: inlineValueTypes, blocks: blocks };\r\n    }\n\n    var inner$1 = makeInner();\r\n    function getSelectionKey(data, dataIndex) {\r\n        return data.getName(dataIndex) || data.getId(dataIndex);\r\n    }\r\n    var SeriesModel = (function (_super) {\r\n        __extends(SeriesModel, _super);\r\n        function SeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this._selectedDataIndicesMap = {};\r\n            return _this;\r\n        }\r\n        SeriesModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.seriesIndex = this.componentIndex;\r\n            this.dataTask = createTask({\r\n                count: dataTaskCount,\r\n                reset: dataTaskReset\r\n            });\r\n            this.dataTask.context = { model: this };\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            var sourceManager = inner$1(this).sourceManager = new SourceManager(this);\r\n            sourceManager.prepareSource();\r\n            var data = this.getInitialData(option, ecModel);\r\n            wrapData(data, this);\r\n            this.dataTask.context.data = data;\r\n            if (__DEV__) {\r\n                assert(data, 'getInitialData returned invalid data.');\r\n            }\r\n            inner$1(this).dataBeforeProcessed = data;\r\n            autoSeriesName(this);\r\n            this._initSelectedMapFromData(data);\r\n        };\r\n        SeriesModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n            var layoutMode = fetchLayoutMode(this);\r\n            var inputPositionParams = layoutMode\r\n                ? getLayoutParams(option) : {};\r\n            var themeSubType = this.subType;\r\n            if (ComponentModel.hasClass(themeSubType)) {\r\n                themeSubType += 'Series';\r\n            }\r\n            merge(option, ecModel.getTheme().get(this.subType));\r\n            merge(option, this.getDefaultOption());\r\n            defaultEmphasis(option, 'label', ['show']);\r\n            this.fillDataTextStyle(option.data);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n            }\r\n        };\r\n        SeriesModel.prototype.mergeOption = function (newSeriesOption, ecModel) {\r\n            newSeriesOption = merge(this.option, newSeriesOption, true);\r\n            this.fillDataTextStyle(newSeriesOption.data);\r\n            var layoutMode = fetchLayoutMode(this);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(this.option, newSeriesOption, layoutMode);\r\n            }\r\n            var sourceManager = inner$1(this).sourceManager;\r\n            sourceManager.dirty();\r\n            sourceManager.prepareSource();\r\n            var data = this.getInitialData(newSeriesOption, ecModel);\r\n            wrapData(data, this);\r\n            this.dataTask.dirty();\r\n            this.dataTask.context.data = data;\r\n            inner$1(this).dataBeforeProcessed = data;\r\n            autoSeriesName(this);\r\n            this._initSelectedMapFromData(data);\r\n        };\r\n        SeriesModel.prototype.fillDataTextStyle = function (data) {\r\n            if (data && !isTypedArray(data)) {\r\n                var props = ['show'];\r\n                for (var i = 0; i < data.length; i++) {\r\n                    if (data[i] && data[i].label) {\r\n                        defaultEmphasis(data[i], 'label', props);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        SeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return;\r\n        };\r\n        SeriesModel.prototype.appendData = function (params) {\r\n            var data = this.getRawData();\r\n            data.appendData(params.data);\r\n        };\r\n        SeriesModel.prototype.getData = function (dataType) {\r\n            var task = getCurrentTask(this);\r\n            if (task) {\r\n                var data = task.context.data;\r\n                return (dataType == null ? data : data.getLinkedData(dataType));\r\n            }\r\n            else {\r\n                return inner$1(this).data;\r\n            }\r\n        };\r\n        SeriesModel.prototype.getAllData = function () {\r\n            var mainData = this.getData();\r\n            return (mainData && mainData.getLinkedDataAll)\r\n                ? mainData.getLinkedDataAll()\r\n                : [{ data: mainData }];\r\n        };\r\n        SeriesModel.prototype.setData = function (data) {\r\n            var task = getCurrentTask(this);\r\n            if (task) {\r\n                var context = task.context;\r\n                context.outputData = data;\r\n                if (task !== this.dataTask) {\r\n                    context.data = data;\r\n                }\r\n            }\r\n            inner$1(this).data = data;\r\n        };\r\n        SeriesModel.prototype.getSource = function () {\r\n            return inner$1(this).sourceManager.getSource();\r\n        };\r\n        SeriesModel.prototype.getRawData = function () {\r\n            return inner$1(this).dataBeforeProcessed;\r\n        };\r\n        SeriesModel.prototype.getBaseAxis = function () {\r\n            var coordSys = this.coordinateSystem;\r\n            return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\r\n        };\r\n        SeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            return defaultSeriesFormatTooltip({\r\n                series: this,\r\n                dataIndex: dataIndex,\r\n                multipleSeries: multipleSeries\r\n            });\r\n        };\r\n        SeriesModel.prototype.isAnimationEnabled = function () {\r\n            if (env.node) {\r\n                return false;\r\n            }\r\n            var animationEnabled = this.getShallow('animation');\r\n            if (animationEnabled) {\r\n                if (this.getData().count() > this.getShallow('animationThreshold')) {\r\n                    animationEnabled = false;\r\n                }\r\n            }\r\n            return !!animationEnabled;\r\n        };\r\n        SeriesModel.prototype.restoreData = function () {\r\n            this.dataTask.dirty();\r\n        };\r\n        SeriesModel.prototype.getColorFromPalette = function (name, scope, requestColorNum) {\r\n            var ecModel = this.ecModel;\r\n            var color = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum);\r\n            if (!color) {\r\n                color = ecModel.getColorFromPalette(name, scope, requestColorNum);\r\n            }\r\n            return color;\r\n        };\r\n        SeriesModel.prototype.coordDimToDataDim = function (coordDim) {\r\n            return this.getRawData().mapDimensionsAll(coordDim);\r\n        };\r\n        SeriesModel.prototype.getProgressive = function () {\r\n            return this.get('progressive');\r\n        };\r\n        SeriesModel.prototype.getProgressiveThreshold = function () {\r\n            return this.get('progressiveThreshold');\r\n        };\r\n        SeriesModel.prototype.select = function (innerDataIndices, dataType) {\r\n            this._innerSelect(this.getData(dataType), innerDataIndices);\r\n        };\r\n        SeriesModel.prototype.unselect = function (innerDataIndices, dataType) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (!selectedMap) {\r\n                return;\r\n            }\r\n            var data = this.getData(dataType);\r\n            for (var i = 0; i < innerDataIndices.length; i++) {\r\n                var dataIndex = innerDataIndices[i];\r\n                var nameOrId = getSelectionKey(data, dataIndex);\r\n                selectedMap[nameOrId] = false;\r\n                this._selectedDataIndicesMap[nameOrId] = -1;\r\n            }\r\n        };\r\n        SeriesModel.prototype.toggleSelect = function (innerDataIndices, dataType) {\r\n            var tmpArr = [];\r\n            for (var i = 0; i < innerDataIndices.length; i++) {\r\n                tmpArr[0] = innerDataIndices[i];\r\n                this.isSelected(innerDataIndices[i], dataType)\r\n                    ? this.unselect(tmpArr, dataType)\r\n                    : this.select(tmpArr, dataType);\r\n            }\r\n        };\r\n        SeriesModel.prototype.getSelectedDataIndices = function () {\r\n            var selectedDataIndicesMap = this._selectedDataIndicesMap;\r\n            var nameOrIds = keys(selectedDataIndicesMap);\r\n            var dataIndices = [];\r\n            for (var i = 0; i < nameOrIds.length; i++) {\r\n                var dataIndex = selectedDataIndicesMap[nameOrIds[i]];\r\n                if (dataIndex >= 0) {\r\n                    dataIndices.push(dataIndex);\r\n                }\r\n            }\r\n            return dataIndices;\r\n        };\r\n        SeriesModel.prototype.isSelected = function (dataIndex, dataType) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (!selectedMap) {\r\n                return false;\r\n            }\r\n            var data = this.getData(dataType);\r\n            var nameOrId = getSelectionKey(data, dataIndex);\r\n            return selectedMap[nameOrId] || false;\r\n        };\r\n        SeriesModel.prototype._innerSelect = function (data, innerDataIndices) {\r\n            var _a, _b;\r\n            var selectedMode = this.option.selectedMode;\r\n            var len = innerDataIndices.length;\r\n            if (!selectedMode || !len) {\r\n                return;\r\n            }\r\n            if (selectedMode === 'multiple') {\r\n                var selectedMap = this.option.selectedMap || (this.option.selectedMap = {});\r\n                for (var i = 0; i < len; i++) {\r\n                    var dataIndex = innerDataIndices[i];\r\n                    var nameOrId = getSelectionKey(data, dataIndex);\r\n                    selectedMap[nameOrId] = true;\r\n                    this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);\r\n                }\r\n            }\r\n            else if (selectedMode === 'single' || selectedMode === true) {\r\n                var lastDataIndex = innerDataIndices[len - 1];\r\n                var nameOrId = getSelectionKey(data, lastDataIndex);\r\n                this.option.selectedMap = (_a = {},\r\n                    _a[nameOrId] = true,\r\n                    _a);\r\n                this._selectedDataIndicesMap = (_b = {},\r\n                    _b[nameOrId] = data.getRawIndex(lastDataIndex),\r\n                    _b);\r\n            }\r\n        };\r\n        SeriesModel.prototype._initSelectedMapFromData = function (data) {\r\n            if (this.option.selectedMap) {\r\n                return;\r\n            }\r\n            var dataIndices = [];\r\n            if (data.hasItemOption) {\r\n                data.each(function (idx) {\r\n                    var rawItem = data.getRawDataItem(idx);\r\n                    if (typeof rawItem === 'object'\r\n                        && rawItem.selected) {\r\n                        dataIndices.push(idx);\r\n                    }\r\n                });\r\n            }\r\n            if (dataIndices.length > 0) {\r\n                this._innerSelect(data, dataIndices);\r\n            }\r\n        };\r\n        SeriesModel.registerClass = function (clz) {\r\n            return ComponentModel.registerClass(clz);\r\n        };\r\n        SeriesModel.protoInitialize = (function () {\r\n            var proto = SeriesModel.prototype;\r\n            proto.type = 'series.__base__';\r\n            proto.seriesIndex = 0;\r\n            proto.useColorPaletteOnData = false;\r\n            proto.ignoreStyleOnData = false;\r\n            proto.hasSymbolVisual = false;\r\n            proto.defaultSymbol = 'circle';\r\n            proto.visualStyleAccessPath = 'itemStyle';\r\n            proto.visualDrawType = 'fill';\r\n        })();\r\n        return SeriesModel;\r\n    }(ComponentModel));\r\n    mixin(SeriesModel, DataFormatMixin);\r\n    mixin(SeriesModel, PaletteMixin);\r\n    mountExtend(SeriesModel, ComponentModel);\r\n    function autoSeriesName(seriesModel) {\r\n        var name = seriesModel.name;\r\n        if (!isNameSpecified(seriesModel)) {\r\n            seriesModel.name = getSeriesAutoName(seriesModel) || name;\r\n        }\r\n    }\r\n    function getSeriesAutoName(seriesModel) {\r\n        var data = seriesModel.getRawData();\r\n        var dataDims = data.mapDimensionsAll('seriesName');\r\n        var nameArr = [];\r\n        each(dataDims, function (dataDim) {\r\n            var dimInfo = data.getDimensionInfo(dataDim);\r\n            dimInfo.displayName && nameArr.push(dimInfo.displayName);\r\n        });\r\n        return nameArr.join(' ');\r\n    }\r\n    function dataTaskCount(context) {\r\n        return context.model.getRawData().count();\r\n    }\r\n    function dataTaskReset(context) {\r\n        var seriesModel = context.model;\r\n        seriesModel.setData(seriesModel.getRawData().cloneShallow());\r\n        return dataTaskProgress;\r\n    }\r\n    function dataTaskProgress(param, context) {\r\n        if (context.outputData && param.end > context.outputData.count()) {\r\n            context.model.getRawData().cloneShallow(context.outputData);\r\n        }\r\n    }\r\n    function wrapData(data, seriesModel) {\r\n        each(__spreadArrays(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function (methodName) {\r\n            data.wrapMethod(methodName, curry(onDataChange, seriesModel));\r\n        });\r\n    }\r\n    function onDataChange(seriesModel, newList) {\r\n        var task = getCurrentTask(seriesModel);\r\n        if (task) {\r\n            task.setOutputEnd((newList || this).count());\r\n        }\r\n        return newList;\r\n    }\r\n    function getCurrentTask(seriesModel) {\r\n        var scheduler = (seriesModel.ecModel || {}).scheduler;\r\n        var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\r\n        if (pipeline) {\r\n            var task = pipeline.currentTask;\r\n            if (task) {\r\n                var agentStubMap = task.agentStubMap;\r\n                if (agentStubMap) {\r\n                    task = agentStubMap.get(seriesModel.uid);\r\n                }\r\n            }\r\n            return task;\r\n        }\r\n    }\n\n    var ComponentView = (function () {\r\n        function ComponentView() {\r\n            this.group = new Group();\r\n            this.uid = getUID('viewComponent');\r\n        }\r\n        ComponentView.prototype.init = function (ecModel, api) { };\r\n        ComponentView.prototype.render = function (model, ecModel, api, payload) { };\r\n        ComponentView.prototype.dispose = function (ecModel, api) { };\r\n        ComponentView.prototype.updateView = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.updateLayout = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.updateVisual = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.blurSeries = function (seriesModels, ecModel) {\r\n        };\r\n        return ComponentView;\r\n    }());\r\n    enableClassExtend(ComponentView);\r\n    enableClassManagement(ComponentView, { registerWhenExtend: true });\n\n    function createRenderPlanner() {\r\n        var inner = makeInner();\r\n        return function (seriesModel) {\r\n            var fields = inner(seriesModel);\r\n            var pipelineContext = seriesModel.pipelineContext;\r\n            var originalLarge = !!fields.large;\r\n            var originalProgressive = !!fields.progressiveRender;\r\n            var large = fields.large = !!(pipelineContext && pipelineContext.large);\r\n            var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);\r\n            return (!!((originalLarge !== large) || (originalProgressive !== progressive)) && 'reset');\r\n        };\r\n    }\n\n    var inner$2 = makeInner();\r\n    var renderPlanner = createRenderPlanner();\r\n    var ChartView = (function () {\r\n        function ChartView() {\r\n            this.group = new Group();\r\n            this.uid = getUID('viewChart');\r\n            this.renderTask = createTask({\r\n                plan: renderTaskPlan,\r\n                reset: renderTaskReset\r\n            });\r\n            this.renderTask.context = { view: this };\r\n        }\r\n        ChartView.prototype.init = function (ecModel, api) { };\r\n        ChartView.prototype.render = function (seriesModel, ecModel, api, payload) { };\r\n        ChartView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n            toggleHighlight(seriesModel.getData(), payload, 'emphasis');\r\n        };\r\n        ChartView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n            toggleHighlight(seriesModel.getData(), payload, 'normal');\r\n        };\r\n        ChartView.prototype.remove = function (ecModel, api) {\r\n            this.group.removeAll();\r\n        };\r\n        ChartView.prototype.dispose = function (ecModel, api) { };\r\n        ChartView.prototype.updateView = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.prototype.updateLayout = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.prototype.updateVisual = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.markUpdateMethod = function (payload, methodName) {\r\n            inner$2(payload).updateMethod = methodName;\r\n        };\r\n        ChartView.protoInitialize = (function () {\r\n            var proto = ChartView.prototype;\r\n            proto.type = 'chart';\r\n        })();\r\n        return ChartView;\r\n    }());\r\n    function elSetState(el, state, highlightDigit) {\r\n        if (el) {\r\n            (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit);\r\n        }\r\n    }\r\n    function toggleHighlight(data, payload, state) {\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        var highlightDigit = (payload && payload.highlightKey != null)\r\n            ? getHighlightDigit(payload.highlightKey)\r\n            : null;\r\n        if (dataIndex != null) {\r\n            each(normalizeToArray(dataIndex), function (dataIdx) {\r\n                elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\r\n            });\r\n        }\r\n        else {\r\n            data.eachItemGraphicEl(function (el) {\r\n                elSetState(el, state, highlightDigit);\r\n            });\r\n        }\r\n    }\r\n    enableClassExtend(ChartView, ['dispose']);\r\n    enableClassManagement(ChartView, { registerWhenExtend: true });\r\n    function renderTaskPlan(context) {\r\n        return renderPlanner(context.model);\r\n    }\r\n    function renderTaskReset(context) {\r\n        var seriesModel = context.model;\r\n        var ecModel = context.ecModel;\r\n        var api = context.api;\r\n        var payload = context.payload;\r\n        var progressiveRender = seriesModel.pipelineContext.progressiveRender;\r\n        var view = context.view;\r\n        var updateMethod = payload && inner$2(payload).updateMethod;\r\n        var methodName = progressiveRender\r\n            ? 'incrementalPrepareRender'\r\n            : (updateMethod && view[updateMethod])\r\n                ? updateMethod\r\n                : 'render';\r\n        if (methodName !== 'render') {\r\n            view[methodName](seriesModel, ecModel, api, payload);\r\n        }\r\n        return progressMethodMap[methodName];\r\n    }\r\n    var progressMethodMap = {\r\n        incrementalPrepareRender: {\r\n            progress: function (params, context) {\r\n                context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\r\n            }\r\n        },\r\n        render: {\r\n            forceFirstProgress: true,\r\n            progress: function (params, context) {\r\n                context.view.render(context.model, context.ecModel, context.api, context.payload);\r\n            }\r\n        }\r\n    };\n\n    var ORIGIN_METHOD = '\\0__throttleOriginMethod';\r\n    var RATE = '\\0__throttleRate';\r\n    var THROTTLE_TYPE = '\\0__throttleType';\r\n    function throttle(fn, delay, debounce) {\r\n        var currCall;\r\n        var lastCall = 0;\r\n        var lastExec = 0;\r\n        var timer = null;\r\n        var diff;\r\n        var scope;\r\n        var args;\r\n        var debounceNextCall;\r\n        delay = delay || 0;\r\n        function exec() {\r\n            lastExec = (new Date()).getTime();\r\n            timer = null;\r\n            fn.apply(scope, args || []);\r\n        }\r\n        var cb = function () {\r\n            var cbArgs = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                cbArgs[_i] = arguments[_i];\r\n            }\r\n            currCall = (new Date()).getTime();\r\n            scope = this;\r\n            args = cbArgs;\r\n            var thisDelay = debounceNextCall || delay;\r\n            var thisDebounce = debounceNextCall || debounce;\r\n            debounceNextCall = null;\r\n            diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\r\n            clearTimeout(timer);\r\n            if (thisDebounce) {\r\n                timer = setTimeout(exec, thisDelay);\r\n            }\r\n            else {\r\n                if (diff >= 0) {\r\n                    exec();\r\n                }\r\n                else {\r\n                    timer = setTimeout(exec, -diff);\r\n                }\r\n            }\r\n            lastCall = currCall;\r\n        };\r\n        cb.clear = function () {\r\n            if (timer) {\r\n                clearTimeout(timer);\r\n                timer = null;\r\n            }\r\n        };\r\n        cb.debounceNextCall = function (debounceDelay) {\r\n            debounceNextCall = debounceDelay;\r\n        };\r\n        return cb;\r\n    }\r\n    function createOrUpdate(obj, fnAttr, rate, throttleType) {\r\n        var fn = obj[fnAttr];\r\n        if (!fn) {\r\n            return;\r\n        }\r\n        var originFn = fn[ORIGIN_METHOD] || fn;\r\n        var lastThrottleType = fn[THROTTLE_TYPE];\r\n        var lastRate = fn[RATE];\r\n        if (lastRate !== rate || lastThrottleType !== throttleType) {\r\n            if (rate == null || !throttleType) {\r\n                return (obj[fnAttr] = originFn);\r\n            }\r\n            fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\r\n            fn[ORIGIN_METHOD] = originFn;\r\n            fn[THROTTLE_TYPE] = throttleType;\r\n            fn[RATE] = rate;\r\n        }\r\n        return fn;\r\n    }\r\n    function clear(obj, fnAttr) {\r\n        var fn = obj[fnAttr];\r\n        if (fn && fn[ORIGIN_METHOD]) {\r\n            obj[fnAttr] = fn[ORIGIN_METHOD];\r\n        }\r\n    }\n\n    var inner$3 = makeInner();\r\n    var defaultStyleMappers = {\r\n        itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),\r\n        lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)\r\n    };\r\n    var defaultColorKey = {\r\n        lineStyle: 'stroke',\r\n        itemStyle: 'fill'\r\n    };\r\n    function getStyleMapper(seriesModel, stylePath) {\r\n        var styleMapper = seriesModel.visualStyleMapper\r\n            || defaultStyleMappers[stylePath];\r\n        if (!styleMapper) {\r\n            console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n            return defaultStyleMappers.itemStyle;\r\n        }\r\n        return styleMapper;\r\n    }\r\n    function getDefaultColorKey(seriesModel, stylePath) {\r\n        var colorKey = seriesModel.visualDrawType\r\n            || defaultColorKey[stylePath];\r\n        if (!colorKey) {\r\n            console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n            return 'fill';\r\n        }\r\n        return colorKey;\r\n    }\r\n    var seriesStyleTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            var stylePath = seriesModel.visualStyleAccessPath\r\n                || 'itemStyle';\r\n            var styleModel = seriesModel.getModel(stylePath);\r\n            var getStyle = getStyleMapper(seriesModel, stylePath);\r\n            var globalStyle = getStyle(styleModel);\r\n            var decalOption = styleModel.getShallow('decal');\r\n            if (decalOption) {\r\n                data.setVisual('decal', decalOption);\r\n                decalOption.dirty = true;\r\n            }\r\n            var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n            var color = globalStyle[colorKey];\r\n            var colorCallback = isFunction(color) ? color : null;\r\n            if (!globalStyle[colorKey] || colorCallback) {\r\n                globalStyle[colorKey] = seriesModel.getColorFromPalette(seriesModel.name, null, ecModel.getSeriesCount());\r\n                data.setVisual('colorFromPalette', true);\r\n            }\r\n            data.setVisual('style', globalStyle);\r\n            data.setVisual('drawType', colorKey);\r\n            if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {\r\n                data.setVisual('colorFromPalette', false);\r\n                return {\r\n                    dataEach: function (data, idx) {\r\n                        var dataParams = seriesModel.getDataParams(idx);\r\n                        var itemStyle = extend({}, globalStyle);\r\n                        itemStyle[colorKey] = colorCallback(dataParams);\r\n                        data.setItemVisual(idx, 'style', itemStyle);\r\n                    }\r\n                };\r\n            }\r\n        }\r\n    };\r\n    var sharedModel = new Model();\r\n    var dataStyleTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var stylePath = seriesModel.visualStyleAccessPath\r\n                || 'itemStyle';\r\n            var getStyle = getStyleMapper(seriesModel, stylePath);\r\n            var colorKey = data.getVisual('drawType');\r\n            return {\r\n                dataEach: data.hasItemOption ? function (data, idx) {\r\n                    var rawItem = data.getRawDataItem(idx);\r\n                    if (rawItem && rawItem[stylePath]) {\r\n                        sharedModel.option = rawItem[stylePath];\r\n                        var style = getStyle(sharedModel);\r\n                        var existsStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        extend(existsStyle, style);\r\n                        if (sharedModel.option.decal) {\r\n                            data.setItemVisual(idx, 'decal', sharedModel.option.decal);\r\n                            sharedModel.option.decal.dirty = true;\r\n                        }\r\n                        if (colorKey in style) {\r\n                            data.setItemVisual(idx, 'colorFromPalette', false);\r\n                        }\r\n                    }\r\n                } : null\r\n            };\r\n        }\r\n    };\r\n    var dataColorPaletteTask = {\r\n        performRawSeries: true,\r\n        overallReset: function (ecModel) {\r\n            var paletteScopeGroupByType = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!seriesModel.useColorPaletteOnData) {\r\n                    return;\r\n                }\r\n                var colorScope = paletteScopeGroupByType.get(seriesModel.type);\r\n                if (!colorScope) {\r\n                    colorScope = {};\r\n                    paletteScopeGroupByType.set(seriesModel.type, colorScope);\r\n                }\r\n                inner$3(seriesModel).scope = colorScope;\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!seriesModel.useColorPaletteOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n                    return;\r\n                }\r\n                var dataAll = seriesModel.getRawData();\r\n                var idxMap = {};\r\n                var data = seriesModel.getData();\r\n                var colorScope = inner$3(seriesModel).scope;\r\n                var stylePath = seriesModel.visualStyleAccessPath\r\n                    || 'itemStyle';\r\n                var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n                data.each(function (idx) {\r\n                    var rawIdx = data.getRawIndex(idx);\r\n                    idxMap[rawIdx] = idx;\r\n                });\r\n                dataAll.each(function (rawIdx) {\r\n                    var idx = idxMap[rawIdx];\r\n                    var fromPalette = data.getItemVisual(idx, 'colorFromPalette');\r\n                    if (fromPalette) {\r\n                        var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        var name_1 = dataAll.getName(rawIdx) || (rawIdx + '');\r\n                        var dataCount = dataAll.count();\r\n                        itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    };\n\n    var PI$5 = Math.PI;\r\n    function defaultLoading(api, opts) {\r\n        opts = opts || {};\r\n        defaults(opts, {\r\n            text: 'loading',\r\n            textColor: '#000',\r\n            fontSize: '12px',\r\n            maskColor: 'rgba(255, 255, 255, 0.8)',\r\n            showSpinner: true,\r\n            color: '#5470c6',\r\n            spinnerRadius: 10,\r\n            lineWidth: 5,\r\n            zlevel: 0\r\n        });\r\n        var group = new Group();\r\n        var mask = new Rect({\r\n            style: {\r\n                fill: opts.maskColor\r\n            },\r\n            zlevel: opts.zlevel,\r\n            z: 10000\r\n        });\r\n        group.add(mask);\r\n        var font = opts.fontSize + ' sans-serif';\r\n        var labelRect = new Rect({\r\n            style: {\r\n                fill: 'none'\r\n            },\r\n            textContent: new ZRText({\r\n                style: {\r\n                    text: opts.text,\r\n                    fill: opts.textColor,\r\n                    font: font\r\n                }\r\n            }),\r\n            textConfig: {\r\n                position: 'right',\r\n                distance: 10\r\n            },\r\n            zlevel: opts.zlevel,\r\n            z: 10001\r\n        });\r\n        group.add(labelRect);\r\n        var arc;\r\n        if (opts.showSpinner) {\r\n            arc = new Arc({\r\n                shape: {\r\n                    startAngle: -PI$5 / 2,\r\n                    endAngle: -PI$5 / 2 + 0.1,\r\n                    r: opts.spinnerRadius\r\n                },\r\n                style: {\r\n                    stroke: opts.color,\r\n                    lineCap: 'round',\r\n                    lineWidth: opts.lineWidth\r\n                },\r\n                zlevel: opts.zlevel,\r\n                z: 10001\r\n            });\r\n            arc.animateShape(true)\r\n                .when(1000, {\r\n                endAngle: PI$5 * 3 / 2\r\n            })\r\n                .start('circularInOut');\r\n            arc.animateShape(true)\r\n                .when(1000, {\r\n                startAngle: PI$5 * 3 / 2\r\n            })\r\n                .delay(300)\r\n                .start('circularInOut');\r\n            group.add(arc);\r\n        }\r\n        group.resize = function () {\r\n            var textWidth = getWidth(opts.text, font);\r\n            var r = opts.showSpinner ? opts.spinnerRadius : 0;\r\n            var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2\r\n                - (opts.showSpinner ? 0 : textWidth / 2);\r\n            var cy = api.getHeight() / 2;\r\n            opts.showSpinner && arc.setShape({\r\n                cx: cx,\r\n                cy: cy\r\n            });\r\n            labelRect.setShape({\r\n                x: cx - r,\r\n                y: cy - r,\r\n                width: r * 2,\r\n                height: r * 2\r\n            });\r\n            mask.setShape({\r\n                x: 0,\r\n                y: 0,\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n        };\r\n        group.resize();\r\n        return group;\r\n    }\n\n    var Scheduler = (function () {\r\n        function Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\r\n            this._stageTaskMap = createHashMap();\r\n            this.ecInstance = ecInstance;\r\n            this.api = api;\r\n            dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\r\n            visualHandlers = this._visualHandlers = visualHandlers.slice();\r\n            this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\r\n        }\r\n        Scheduler.prototype.restoreData = function (ecModel, payload) {\r\n            ecModel.restoreData(payload);\r\n            this._stageTaskMap.each(function (taskRecord) {\r\n                var overallTask = taskRecord.overallTask;\r\n                overallTask && overallTask.dirty();\r\n            });\r\n        };\r\n        Scheduler.prototype.getPerformArgs = function (task, isBlock) {\r\n            if (!task.__pipeline) {\r\n                return;\r\n            }\r\n            var pipeline = this._pipelineMap.get(task.__pipeline.id);\r\n            var pCtx = pipeline.context;\r\n            var incremental = !isBlock\r\n                && pipeline.progressiveEnabled\r\n                && (!pCtx || pCtx.progressiveRender)\r\n                && task.__idxInPipeline > pipeline.blockIndex;\r\n            var step = incremental ? pipeline.step : null;\r\n            var modDataCount = pCtx && pCtx.modDataCount;\r\n            var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\r\n            return { step: step, modBy: modBy, modDataCount: modDataCount };\r\n        };\r\n        Scheduler.prototype.getPipeline = function (pipelineId) {\r\n            return this._pipelineMap.get(pipelineId);\r\n        };\r\n        Scheduler.prototype.updateStreamModes = function (seriesModel, view) {\r\n            var pipeline = this._pipelineMap.get(seriesModel.uid);\r\n            var data = seriesModel.getData();\r\n            var dataLen = data.count();\r\n            var progressiveRender = pipeline.progressiveEnabled\r\n                && view.incrementalPrepareRender\r\n                && dataLen >= pipeline.threshold;\r\n            var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold');\r\n            var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\r\n            seriesModel.pipelineContext = pipeline.context = {\r\n                progressiveRender: progressiveRender,\r\n                modDataCount: modDataCount,\r\n                large: large\r\n            };\r\n        };\r\n        Scheduler.prototype.restorePipelines = function (ecModel) {\r\n            var scheduler = this;\r\n            var pipelineMap = scheduler._pipelineMap = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var progressive = seriesModel.getProgressive();\r\n                var pipelineId = seriesModel.uid;\r\n                pipelineMap.set(pipelineId, {\r\n                    id: pipelineId,\r\n                    head: null,\r\n                    tail: null,\r\n                    threshold: seriesModel.getProgressiveThreshold(),\r\n                    progressiveEnabled: progressive\r\n                        && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\r\n                    blockIndex: -1,\r\n                    step: Math.round(progressive || 700),\r\n                    count: 0\r\n                });\r\n                scheduler._pipe(seriesModel, seriesModel.dataTask);\r\n            });\r\n        };\r\n        Scheduler.prototype.prepareStageTasks = function () {\r\n            var stageTaskMap = this._stageTaskMap;\r\n            var ecModel = this.api.getModel();\r\n            var api = this.api;\r\n            each(this._allHandlers, function (handler) {\r\n                var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {});\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = '\"reset\" and \"overallReset\" must not be both specified.';\r\n                }\r\n                assert(!(handler.reset && handler.overallReset), errMsg);\r\n                handler.reset && this._createSeriesStageTask(handler, record, ecModel, api);\r\n                handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api);\r\n            }, this);\r\n        };\r\n        Scheduler.prototype.prepareView = function (view, model, ecModel, api) {\r\n            var renderTask = view.renderTask;\r\n            var context = renderTask.context;\r\n            context.model = model;\r\n            context.ecModel = ecModel;\r\n            context.api = api;\r\n            renderTask.__block = !view.incrementalPrepareRender;\r\n            this._pipe(model, renderTask);\r\n        };\r\n        Scheduler.prototype.performDataProcessorTasks = function (ecModel, payload) {\r\n            this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { block: true });\r\n        };\r\n        Scheduler.prototype.performVisualTasks = function (ecModel, payload, opt) {\r\n            this._performStageTasks(this._visualHandlers, ecModel, payload, opt);\r\n        };\r\n        Scheduler.prototype._performStageTasks = function (stageHandlers, ecModel, payload, opt) {\r\n            opt = opt || {};\r\n            var unfinished = false;\r\n            var scheduler = this;\r\n            each(stageHandlers, function (stageHandler, idx) {\r\n                if (opt.visualType && opt.visualType !== stageHandler.visualType) {\r\n                    return;\r\n                }\r\n                var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\r\n                var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n                var overallTask = stageHandlerRecord.overallTask;\r\n                if (overallTask) {\r\n                    var overallNeedDirty_1;\r\n                    var agentStubMap = overallTask.agentStubMap;\r\n                    agentStubMap.each(function (stub) {\r\n                        if (needSetDirty(opt, stub)) {\r\n                            stub.dirty();\r\n                            overallNeedDirty_1 = true;\r\n                        }\r\n                    });\r\n                    overallNeedDirty_1 && overallTask.dirty();\r\n                    scheduler.updatePayload(overallTask, payload);\r\n                    var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block);\r\n                    agentStubMap.each(function (stub) {\r\n                        stub.perform(performArgs_1);\r\n                    });\r\n                    if (overallTask.perform(performArgs_1)) {\r\n                        unfinished = true;\r\n                    }\r\n                }\r\n                else if (seriesTaskMap) {\r\n                    seriesTaskMap.each(function (task, pipelineId) {\r\n                        if (needSetDirty(opt, task)) {\r\n                            task.dirty();\r\n                        }\r\n                        var performArgs = scheduler.getPerformArgs(task, opt.block);\r\n                        performArgs.skip = !stageHandler.performRawSeries\r\n                            && ecModel.isSeriesFiltered(task.context.model);\r\n                        scheduler.updatePayload(task, payload);\r\n                        if (task.perform(performArgs)) {\r\n                            unfinished = true;\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n            function needSetDirty(opt, task) {\r\n                return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\r\n            }\r\n            this.unfinished = unfinished || this.unfinished;\r\n        };\r\n        Scheduler.prototype.performSeriesTasks = function (ecModel) {\r\n            var unfinished;\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                unfinished = seriesModel.dataTask.perform() || unfinished;\r\n            });\r\n            this.unfinished = unfinished || this.unfinished;\r\n        };\r\n        Scheduler.prototype.plan = function () {\r\n            this._pipelineMap.each(function (pipeline) {\r\n                var task = pipeline.tail;\r\n                do {\r\n                    if (task.__block) {\r\n                        pipeline.blockIndex = task.__idxInPipeline;\r\n                        break;\r\n                    }\r\n                    task = task.getUpstream();\r\n                } while (task);\r\n            });\r\n        };\r\n        Scheduler.prototype.updatePayload = function (task, payload) {\r\n            payload !== 'remain' && (task.context.payload = payload);\r\n        };\r\n        Scheduler.prototype._createSeriesStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n            var scheduler = this;\r\n            var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n            var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap();\r\n            var seriesType = stageHandler.seriesType;\r\n            var getTargetSeries = stageHandler.getTargetSeries;\r\n            if (stageHandler.createOnAllSeries) {\r\n                ecModel.eachRawSeries(create);\r\n            }\r\n            else if (seriesType) {\r\n                ecModel.eachRawSeriesByType(seriesType, create);\r\n            }\r\n            else if (getTargetSeries) {\r\n                getTargetSeries(ecModel, api).each(create);\r\n            }\r\n            function create(seriesModel) {\r\n                var pipelineId = seriesModel.uid;\r\n                var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId)\r\n                    || createTask({\r\n                        plan: seriesTaskPlan,\r\n                        reset: seriesTaskReset,\r\n                        count: seriesTaskCount\r\n                    }));\r\n                task.context = {\r\n                    model: seriesModel,\r\n                    ecModel: ecModel,\r\n                    api: api,\r\n                    useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\r\n                    plan: stageHandler.plan,\r\n                    reset: stageHandler.reset,\r\n                    scheduler: scheduler\r\n                };\r\n                scheduler._pipe(seriesModel, task);\r\n            }\r\n        };\r\n        Scheduler.prototype._createOverallStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n            var scheduler = this;\r\n            var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask\r\n                || createTask({ reset: overallTaskReset });\r\n            overallTask.context = {\r\n                ecModel: ecModel,\r\n                api: api,\r\n                overallReset: stageHandler.overallReset,\r\n                scheduler: scheduler\r\n            };\r\n            var oldAgentStubMap = overallTask.agentStubMap;\r\n            var newAgentStubMap = overallTask.agentStubMap = createHashMap();\r\n            var seriesType = stageHandler.seriesType;\r\n            var getTargetSeries = stageHandler.getTargetSeries;\r\n            var overallProgress = true;\r\n            var shouldOverallTaskDirty = false;\r\n            var errMsg = '';\r\n            if (__DEV__) {\r\n                errMsg = '\"createOnAllSeries\" do not supported for \"overallReset\", '\r\n                    + 'becuase it will block all streams.';\r\n            }\r\n            assert(!stageHandler.createOnAllSeries, errMsg);\r\n            if (seriesType) {\r\n                ecModel.eachRawSeriesByType(seriesType, createStub);\r\n            }\r\n            else if (getTargetSeries) {\r\n                getTargetSeries(ecModel, api).each(createStub);\r\n            }\r\n            else {\r\n                overallProgress = false;\r\n                each(ecModel.getSeries(), createStub);\r\n            }\r\n            function createStub(seriesModel) {\r\n                var pipelineId = seriesModel.uid;\r\n                var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId)\r\n                    || (shouldOverallTaskDirty = true,\r\n                        createTask({ reset: stubReset, onDirty: stubOnDirty })));\r\n                stub.context = {\r\n                    model: seriesModel,\r\n                    overallProgress: overallProgress\r\n                };\r\n                stub.agent = overallTask;\r\n                stub.__block = overallProgress;\r\n                scheduler._pipe(seriesModel, stub);\r\n            }\r\n            if (shouldOverallTaskDirty) {\r\n                overallTask.dirty();\r\n            }\r\n        };\r\n        Scheduler.prototype._pipe = function (seriesModel, task) {\r\n            var pipelineId = seriesModel.uid;\r\n            var pipeline = this._pipelineMap.get(pipelineId);\r\n            !pipeline.head && (pipeline.head = task);\r\n            pipeline.tail && pipeline.tail.pipe(task);\r\n            pipeline.tail = task;\r\n            task.__idxInPipeline = pipeline.count++;\r\n            task.__pipeline = pipeline;\r\n        };\r\n        Scheduler.wrapStageHandler = function (stageHandler, visualType) {\r\n            if (isFunction(stageHandler)) {\r\n                stageHandler = {\r\n                    overallReset: stageHandler,\r\n                    seriesType: detectSeriseType(stageHandler)\r\n                };\r\n            }\r\n            stageHandler.uid = getUID('stageHandler');\r\n            visualType && (stageHandler.visualType = visualType);\r\n            return stageHandler;\r\n        };\r\n        return Scheduler;\r\n    }());\r\n    function overallTaskReset(context) {\r\n        context.overallReset(context.ecModel, context.api, context.payload);\r\n    }\r\n    function stubReset(context) {\r\n        return context.overallProgress && stubProgress;\r\n    }\r\n    function stubProgress() {\r\n        this.agent.dirty();\r\n        this.getDownstream().dirty();\r\n    }\r\n    function stubOnDirty() {\r\n        this.agent && this.agent.dirty();\r\n    }\r\n    function seriesTaskPlan(context) {\r\n        return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;\r\n    }\r\n    function seriesTaskReset(context) {\r\n        if (context.useClearVisual) {\r\n            context.data.clearAllVisual();\r\n        }\r\n        var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\r\n        return resetDefines.length > 1\r\n            ? map(resetDefines, function (v, idx) {\r\n                return makeSeriesTaskProgress(idx);\r\n            })\r\n            : singleSeriesTaskProgress;\r\n    }\r\n    var singleSeriesTaskProgress = makeSeriesTaskProgress(0);\r\n    function makeSeriesTaskProgress(resetDefineIdx) {\r\n        return function (params, context) {\r\n            var data = context.data;\r\n            var resetDefine = context.resetDefines[resetDefineIdx];\r\n            if (resetDefine && resetDefine.dataEach) {\r\n                for (var i = params.start; i < params.end; i++) {\r\n                    resetDefine.dataEach(data, i);\r\n                }\r\n            }\r\n            else if (resetDefine && resetDefine.progress) {\r\n                resetDefine.progress(params, data);\r\n            }\r\n        };\r\n    }\r\n    function seriesTaskCount(context) {\r\n        return context.data.count();\r\n    }\r\n    function detectSeriseType(legacyFunc) {\r\n        seriesType = null;\r\n        try {\r\n            legacyFunc(ecModelMock, apiMock);\r\n        }\r\n        catch (e) {\r\n        }\r\n        return seriesType;\r\n    }\r\n    var ecModelMock = {};\r\n    var apiMock = {};\r\n    var seriesType;\r\n    mockMethods(ecModelMock, GlobalModel);\r\n    mockMethods(apiMock, ExtensionAPI);\r\n    ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\r\n        seriesType = type;\r\n    };\r\n    ecModelMock.eachComponent = function (cond) {\r\n        if (cond.mainType === 'series' && cond.subType) {\r\n            seriesType = cond.subType;\r\n        }\r\n    };\r\n    function mockMethods(target, Clz) {\r\n        for (var name_1 in Clz.prototype) {\r\n            target[name_1] = noop;\r\n        }\r\n    }\n\n    var colorAll = [\r\n        '#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f',\r\n        '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'\r\n    ];\r\n    var lightTheme = {\r\n        color: colorAll,\r\n        colorLayer: [\r\n            ['#37A2DA', '#ffd85c', '#fd7b5f'],\r\n            ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'],\r\n            ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'],\r\n            colorAll\r\n        ]\r\n    };\n\n    var contrastColor = '#B9B8CE';\r\n    var backgroundColor = '#100C2A';\r\n    var axisCommon = function () {\r\n        return {\r\n            axisLine: {\r\n                lineStyle: {\r\n                    color: contrastColor\r\n                }\r\n            },\r\n            splitLine: {\r\n                lineStyle: {\r\n                    color: '#484753'\r\n                }\r\n            },\r\n            splitArea: {\r\n                areaStyle: {\r\n                    color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)']\r\n                }\r\n            },\r\n            minorSplitLine: {\r\n                lineStyle: {\r\n                    color: '#20203B'\r\n                }\r\n            }\r\n        };\r\n    };\r\n    var colorPalette = [\r\n        '#4992ff',\r\n        '#7cffb2',\r\n        '#fddd60',\r\n        '#ff6e76',\r\n        '#58d9f9',\r\n        '#05c091',\r\n        '#ff8a45',\r\n        '#8d48e3',\r\n        '#dd79ff'\r\n    ];\r\n    var theme = {\r\n        darkMode: true,\r\n        color: colorPalette,\r\n        backgroundColor: backgroundColor,\r\n        axisPointer: {\r\n            lineStyle: {\r\n                color: '#817f91'\r\n            },\r\n            crossStyle: {\r\n                color: '#817f91'\r\n            },\r\n            label: {\r\n                color: '#fff'\r\n            }\r\n        },\r\n        legend: {\r\n            textStyle: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        textStyle: {\r\n            color: contrastColor\r\n        },\r\n        title: {\r\n            textStyle: {\r\n                color: '#EEF1FA'\r\n            },\r\n            subtextStyle: {\r\n                color: '#B9B8CE'\r\n            }\r\n        },\r\n        toolbox: {\r\n            iconStyle: {\r\n                borderColor: contrastColor\r\n            }\r\n        },\r\n        dataZoom: {\r\n            borderColor: '#71708A',\r\n            textStyle: {\r\n                color: contrastColor\r\n            },\r\n            brushStyle: {\r\n                color: 'rgba(135,163,206,0.3)'\r\n            },\r\n            handleStyle: {\r\n                color: '#353450',\r\n                borderColor: '#C5CBE3'\r\n            },\r\n            moveHandleStyle: {\r\n                color: '#B0B6C3',\r\n                opacity: 0.3\r\n            },\r\n            fillerColor: 'rgba(135,163,206,0.2)',\r\n            emphasis: {\r\n                handleStyle: {\r\n                    borderColor: '#91B7F2',\r\n                    color: '#4D587D'\r\n                },\r\n                moveHandleStyle: {\r\n                    color: '#636D9A',\r\n                    opacity: 0.7\r\n                }\r\n            },\r\n            dataBackground: {\r\n                lineStyle: {\r\n                    color: '#71708A',\r\n                    width: 1\r\n                },\r\n                areaStyle: {\r\n                    color: '#71708A'\r\n                }\r\n            },\r\n            selectedDataBackground: {\r\n                lineStyle: {\r\n                    color: '#87A3CE'\r\n                },\r\n                areaStyle: {\r\n                    color: '#87A3CE'\r\n                }\r\n            }\r\n        },\r\n        visualMap: {\r\n            textStyle: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        timeline: {\r\n            lineStyle: {\r\n                color: contrastColor\r\n            },\r\n            label: {\r\n                color: contrastColor\r\n            },\r\n            controlStyle: {\r\n                color: contrastColor,\r\n                borderColor: contrastColor\r\n            }\r\n        },\r\n        calendar: {\r\n            itemStyle: {\r\n                color: backgroundColor\r\n            },\r\n            dayLabel: {\r\n                color: contrastColor\r\n            },\r\n            monthLabel: {\r\n                color: contrastColor\r\n            },\r\n            yearLabel: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        timeAxis: axisCommon(),\r\n        logAxis: axisCommon(),\r\n        valueAxis: axisCommon(),\r\n        categoryAxis: axisCommon(),\r\n        line: {\r\n            symbol: 'circle'\r\n        },\r\n        graph: {\r\n            color: colorPalette\r\n        },\r\n        gauge: {\r\n            title: {\r\n                color: contrastColor\r\n            },\r\n            axisLine: {\r\n                lineStyle: {\r\n                    color: [[1, 'rgba(207,212,219,0.2)']]\r\n                }\r\n            },\r\n            axisLabel: {\r\n                color: contrastColor\r\n            },\r\n            detail: {\r\n                color: '#EEF1FA'\r\n            }\r\n        },\r\n        candlestick: {\r\n            itemStyle: {\r\n                color: '#FD1050',\r\n                color0: '#0CF49B',\r\n                borderColor: '#FD1050',\r\n                borderColor0: '#0CF49B'\r\n            }\r\n        }\r\n    };\r\n    theme.categoryAxis.splitLine.show = false;\n\n    var DatasetModel = (function (_super) {\r\n        __extends(DatasetModel, _super);\r\n        function DatasetModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataset';\r\n            return _this;\r\n        }\r\n        DatasetModel.prototype.init = function (option, parentModel, ecModel) {\r\n            _super.prototype.init.call(this, option, parentModel, ecModel);\r\n            this._sourceManager = new SourceManager(this);\r\n            disableTransformOptionMerge(this);\r\n        };\r\n        DatasetModel.prototype.mergeOption = function (newOption, ecModel) {\r\n            _super.prototype.mergeOption.call(this, newOption, ecModel);\r\n            disableTransformOptionMerge(this);\r\n        };\r\n        DatasetModel.prototype.optionUpdated = function () {\r\n            this._sourceManager.dirty();\r\n        };\r\n        DatasetModel.prototype.getSourceManager = function () {\r\n            return this._sourceManager;\r\n        };\r\n        DatasetModel.type = 'dataset';\r\n        DatasetModel.defaultOption = {\r\n            seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN\r\n        };\r\n        return DatasetModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(DatasetModel);\r\n    var DatasetView = (function (_super) {\r\n        __extends(DatasetView, _super);\r\n        function DatasetView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataset';\r\n            return _this;\r\n        }\r\n        DatasetView.type = 'dataset';\r\n        return DatasetView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(DatasetView);\n\n    var storage = createHashMap();\r\n    var mapDataStorage = {\r\n        registerMap: function (mapName, rawDef, rawSpecialAreas) {\r\n            var records;\r\n            if (isArray(rawDef)) {\r\n                records = rawDef;\r\n            }\r\n            else if (rawDef.svg) {\r\n                records = [{\r\n                        type: 'svg',\r\n                        source: rawDef.svg,\r\n                        specialAreas: rawDef.specialAreas\r\n                    }];\r\n            }\r\n            else {\r\n                var geoSource = rawDef.geoJson\r\n                    || rawDef.geoJSON;\r\n                if (geoSource && !rawDef.features) {\r\n                    rawSpecialAreas = rawDef.specialAreas;\r\n                    rawDef = geoSource;\r\n                }\r\n                records = [{\r\n                        type: 'geoJSON',\r\n                        source: rawDef,\r\n                        specialAreas: rawSpecialAreas\r\n                    }];\r\n            }\r\n            each(records, function (record) {\r\n                var type = record.type;\r\n                type === 'geoJson' && (type = record.type = 'geoJSON');\r\n                var parse = parsers[type];\r\n                if (__DEV__) {\r\n                    assert(parse, 'Illegal map type: ' + type);\r\n                }\r\n                parse(record);\r\n            });\r\n            return storage.set(mapName, records);\r\n        },\r\n        retrieveMap: function (mapName) {\r\n            return storage.get(mapName);\r\n        }\r\n    };\r\n    var parsers = {\r\n        geoJSON: function (record) {\r\n            var source = record.source;\r\n            record.geoJSON = !isString(source)\r\n                ? source\r\n                : (typeof JSON !== 'undefined' && JSON.parse)\r\n                    ? JSON.parse(source)\r\n                    : (new Function('return (' + source + ');'))();\r\n        },\r\n        svg: function (record) {\r\n            record.svgXML = parseXML(record.source);\r\n        }\r\n    };\n\n    var ECEventProcessor = (function () {\r\n        function ECEventProcessor() {\r\n        }\r\n        ECEventProcessor.prototype.normalizeQuery = function (query) {\r\n            var cptQuery = {};\r\n            var dataQuery = {};\r\n            var otherQuery = {};\r\n            if (isString(query)) {\r\n                var condCptType = parseClassType(query);\r\n                cptQuery.mainType = condCptType.main || null;\r\n                cptQuery.subType = condCptType.sub || null;\r\n            }\r\n            else {\r\n                var suffixes_1 = ['Index', 'Name', 'Id'];\r\n                var dataKeys_1 = { name: 1, dataIndex: 1, dataType: 1 };\r\n                each(query, function (val, key) {\r\n                    var reserved = false;\r\n                    for (var i = 0; i < suffixes_1.length; i++) {\r\n                        var propSuffix = suffixes_1[i];\r\n                        var suffixPos = key.lastIndexOf(propSuffix);\r\n                        if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\r\n                            var mainType = key.slice(0, suffixPos);\r\n                            if (mainType !== 'data') {\r\n                                cptQuery.mainType = mainType;\r\n                                cptQuery[propSuffix.toLowerCase()] = val;\r\n                                reserved = true;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (dataKeys_1.hasOwnProperty(key)) {\r\n                        dataQuery[key] = val;\r\n                        reserved = true;\r\n                    }\r\n                    if (!reserved) {\r\n                        otherQuery[key] = val;\r\n                    }\r\n                });\r\n            }\r\n            return {\r\n                cptQuery: cptQuery,\r\n                dataQuery: dataQuery,\r\n                otherQuery: otherQuery\r\n            };\r\n        };\r\n        ECEventProcessor.prototype.filter = function (eventType, query) {\r\n            var eventInfo = this.eventInfo;\r\n            if (!eventInfo) {\r\n                return true;\r\n            }\r\n            var targetEl = eventInfo.targetEl;\r\n            var packedEvent = eventInfo.packedEvent;\r\n            var model = eventInfo.model;\r\n            var view = eventInfo.view;\r\n            if (!model || !view) {\r\n                return true;\r\n            }\r\n            var cptQuery = query.cptQuery;\r\n            var dataQuery = query.dataQuery;\r\n            return check(cptQuery, model, 'mainType')\r\n                && check(cptQuery, model, 'subType')\r\n                && check(cptQuery, model, 'index', 'componentIndex')\r\n                && check(cptQuery, model, 'name')\r\n                && check(cptQuery, model, 'id')\r\n                && check(dataQuery, packedEvent, 'name')\r\n                && check(dataQuery, packedEvent, 'dataIndex')\r\n                && check(dataQuery, packedEvent, 'dataType')\r\n                && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\r\n            function check(query, host, prop, propOnHost) {\r\n                return query[prop] == null || host[propOnHost || prop] === query[prop];\r\n            }\r\n        };\r\n        ECEventProcessor.prototype.afterTrigger = function () {\r\n            this.eventInfo = null;\r\n        };\r\n        return ECEventProcessor;\r\n    }());\n\n    var seriesSymbolTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            if (seriesModel.legendSymbol) {\r\n                data.setVisual('legendSymbol', seriesModel.legendSymbol);\r\n            }\r\n            if (!seriesModel.hasSymbolVisual) {\r\n                return;\r\n            }\r\n            var symbolType = seriesModel.get('symbol');\r\n            var symbolSize = seriesModel.get('symbolSize');\r\n            var keepAspect = seriesModel.get('symbolKeepAspect');\r\n            var symbolRotate = seriesModel.get('symbolRotate');\r\n            var hasSymbolTypeCallback = isFunction(symbolType);\r\n            var hasSymbolSizeCallback = isFunction(symbolSize);\r\n            var hasSymbolRotateCallback = isFunction(symbolRotate);\r\n            var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\r\n            var seriesSymbol = (!hasSymbolTypeCallback && symbolType) ? symbolType : seriesModel.defaultSymbol;\r\n            var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\r\n            var seriesSymbolRotate = !hasSymbolRotateCallback ? symbolRotate : null;\r\n            data.setVisual({\r\n                legendSymbol: seriesModel.legendSymbol || seriesSymbol,\r\n                symbol: seriesSymbol,\r\n                symbolSize: seriesSymbolSize,\r\n                symbolKeepAspect: keepAspect,\r\n                symbolRotate: seriesSymbolRotate\r\n            });\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            function dataEach(data, idx) {\r\n                var rawValue = seriesModel.getRawValue(idx);\r\n                var params = seriesModel.getDataParams(idx);\r\n                hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\r\n                hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\r\n                hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\r\n            }\r\n            return { dataEach: hasCallback ? dataEach : null };\r\n        }\r\n    };\r\n    var dataSymbolTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            if (!seriesModel.hasSymbolVisual) {\r\n                return;\r\n            }\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            function dataEach(data, idx) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var itemSymbolType = itemModel.getShallow('symbol', true);\r\n                var itemSymbolSize = itemModel.getShallow('symbolSize', true);\r\n                var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\r\n                var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true);\r\n                if (itemSymbolType != null) {\r\n                    data.setItemVisual(idx, 'symbol', itemSymbolType);\r\n                }\r\n                if (itemSymbolSize != null) {\r\n                    data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\r\n                }\r\n                if (itemSymbolRotate != null) {\r\n                    data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\r\n                }\r\n                if (itemSymbolKeepAspect != null) {\r\n                    data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\r\n                }\r\n            }\r\n            return { dataEach: data.hasItemOption ? dataEach : null };\r\n        }\r\n    };\n\n    function getItemVisualFromData(data, dataIndex, key) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.getItemVisual(dataIndex, 'style');\r\n                return style[data.getVisual('drawType')];\r\n            case 'opacity':\r\n                return data.getItemVisual(dataIndex, 'style').opacity;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                return data.getItemVisual(dataIndex, key);\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\r\n    function getVisualFromData(data, key) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.getVisual('style');\r\n                return style[data.getVisual('drawType')];\r\n            case 'opacity':\r\n                return data.getVisual('style').opacity;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                return data.getVisual(key);\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\n\n    var PI2$6 = Math.PI * 2;\r\n    var CMD$3 = PathProxy.CMD;\r\n    var DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\r\n    function getCandidateAnchor(pos, distance, rect, outPt, outDir) {\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        switch (pos) {\r\n            case 'top':\r\n                outPt.set(rect.x + width / 2, rect.y - distance);\r\n                outDir.set(0, -1);\r\n                break;\r\n            case 'bottom':\r\n                outPt.set(rect.x + width / 2, rect.y + height + distance);\r\n                outDir.set(0, 1);\r\n                break;\r\n            case 'left':\r\n                outPt.set(rect.x - distance, rect.y + height / 2);\r\n                outDir.set(-1, 0);\r\n                break;\r\n            case 'right':\r\n                outPt.set(rect.x + width + distance, rect.y + height / 2);\r\n                outDir.set(1, 0);\r\n                break;\r\n        }\r\n    }\r\n    function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\r\n        x -= cx;\r\n        y -= cy;\r\n        var d = Math.sqrt(x * x + y * y);\r\n        x /= d;\r\n        y /= d;\r\n        var ox = x * r + cx;\r\n        var oy = y * r + cy;\r\n        if (Math.abs(startAngle - endAngle) % PI2$6 < 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$6;\r\n        }\r\n        var angle = Math.atan2(y, x);\r\n        if (angle < 0) {\r\n            angle += PI2$6;\r\n        }\r\n        if ((angle >= startAngle && angle <= endAngle)\r\n            || (angle + PI2$6 >= startAngle && angle + PI2$6 <= endAngle)) {\r\n            out[0] = ox;\r\n            out[1] = oy;\r\n            return d - r;\r\n        }\r\n        var x1 = r * Math.cos(startAngle) + cx;\r\n        var y1 = r * Math.sin(startAngle) + cy;\r\n        var x2 = r * Math.cos(endAngle) + cx;\r\n        var y2 = r * Math.sin(endAngle) + cy;\r\n        var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\r\n        var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\r\n        if (d1 < d2) {\r\n            out[0] = x1;\r\n            out[1] = y1;\r\n            return Math.sqrt(d1);\r\n        }\r\n        else {\r\n            out[0] = x2;\r\n            out[1] = y2;\r\n            return Math.sqrt(d2);\r\n        }\r\n    }\r\n    function projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\r\n        var dx = x - x1;\r\n        var dy = y - y1;\r\n        var dx1 = x2 - x1;\r\n        var dy1 = y2 - y1;\r\n        var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n        dx1 /= lineLen;\r\n        dy1 /= lineLen;\r\n        var projectedLen = dx * dx1 + dy * dy1;\r\n        var t = projectedLen / lineLen;\r\n        if (limitToEnds) {\r\n            t = Math.min(Math.max(t, 0), 1);\r\n        }\r\n        t *= lineLen;\r\n        var ox = out[0] = x1 + t * dx1;\r\n        var oy = out[1] = y1 + t * dy1;\r\n        return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n    }\r\n    function projectPointToRect(x1, y1, width, height, x, y, out) {\r\n        if (width < 0) {\r\n            x1 = x1 + width;\r\n            width = -width;\r\n        }\r\n        if (height < 0) {\r\n            y1 = y1 + height;\r\n            height = -height;\r\n        }\r\n        var x2 = x1 + width;\r\n        var y2 = y1 + height;\r\n        var ox = out[0] = Math.min(Math.max(x, x1), x2);\r\n        var oy = out[1] = Math.min(Math.max(y, y1), y2);\r\n        return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n    }\r\n    var tmpPt = [];\r\n    function nearestPointOnRect(pt, rect, out) {\r\n        var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\r\n        out.set(tmpPt[0], tmpPt[1]);\r\n        return dist;\r\n    }\r\n    function nearestPointOnPath(pt, path, out) {\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        var x1;\r\n        var y1;\r\n        var minDist = Infinity;\r\n        var data = path.data;\r\n        var x = pt.x;\r\n        var y = pt.y;\r\n        for (var i = 0; i < data.length;) {\r\n            var cmd = data[i++];\r\n            if (i === 1) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n            }\r\n            var d = minDist;\r\n            switch (cmd) {\r\n                case CMD$3.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$3.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$3.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$3.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$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 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$3.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$3.Z:\r\n                    d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n            if (d < minDist) {\r\n                minDist = d;\r\n                out.set(tmpPt[0], tmpPt[1]);\r\n            }\r\n        }\r\n        return minDist;\r\n    }\r\n    var pt0 = new Point();\r\n    var pt1 = new Point();\r\n    var pt2 = new Point();\r\n    var dir = new Point();\r\n    var dir2 = new Point();\r\n    function updateLabelLinePoints(target, labelLineModel) {\r\n        if (!target) {\r\n            return;\r\n        }\r\n        var labelLine = target.getTextGuideLine();\r\n        var label = target.getTextContent();\r\n        if (!(label && labelLine)) {\r\n            return;\r\n        }\r\n        var labelGuideConfig = target.textGuideLineConfig || {};\r\n        var points = [[0, 0], [0, 0], [0, 0]];\r\n        var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\r\n        var labelRect = label.getBoundingRect().clone();\r\n        labelRect.applyTransform(label.getComputedTransform());\r\n        var minDist = Infinity;\r\n        var anchorPoint = labelGuideConfig.anchor;\r\n        var targetTransform = target.getComputedTransform();\r\n        var targetInversedTransform = targetTransform && invert([], targetTransform);\r\n        var len = labelLineModel.get('length2') || 0;\r\n        if (anchorPoint) {\r\n            pt2.copy(anchorPoint);\r\n        }\r\n        for (var i = 0; i < searchSpace.length; i++) {\r\n            var candidate = searchSpace[i];\r\n            getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\r\n            Point.scaleAndAdd(pt1, pt0, dir, len);\r\n            pt1.transform(targetInversedTransform);\r\n            var boundingRect = target.getBoundingRect();\r\n            var dist = anchorPoint ? anchorPoint.distance(pt1)\r\n                : (target instanceof Path\r\n                    ? nearestPointOnPath(pt1, target.path, pt2)\r\n                    : nearestPointOnRect(pt1, boundingRect, pt2));\r\n            if (dist < minDist) {\r\n                minDist = dist;\r\n                pt1.transform(targetTransform);\r\n                pt2.transform(targetTransform);\r\n                pt2.toArray(points[0]);\r\n                pt1.toArray(points[1]);\r\n                pt0.toArray(points[2]);\r\n            }\r\n        }\r\n        limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\r\n        labelLine.setShape({ points: points });\r\n    }\r\n    var tmpArr = [];\r\n    var tmpProjPoint = new Point();\r\n    function limitTurnAngle(linePoints, minTurnAngle) {\r\n        if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\r\n            return;\r\n        }\r\n        minTurnAngle = minTurnAngle / 180 * Math.PI;\r\n        pt0.fromArray(linePoints[0]);\r\n        pt1.fromArray(linePoints[1]);\r\n        pt2.fromArray(linePoints[2]);\r\n        Point.sub(dir, pt0, pt1);\r\n        Point.sub(dir2, pt2, pt1);\r\n        var len1 = dir.len();\r\n        var len2 = dir2.len();\r\n        if (len1 < 1e-3 || len2 < 1e-3) {\r\n            return;\r\n        }\r\n        dir.scale(1 / len1);\r\n        dir2.scale(1 / len2);\r\n        var angleCos = dir.dot(dir2);\r\n        var minTurnAngleCos = Math.cos(minTurnAngle);\r\n        if (minTurnAngleCos < angleCos) {\r\n            var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\r\n            tmpProjPoint.fromArray(tmpArr);\r\n            tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));\r\n            var t = pt2.x !== pt1.x\r\n                ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n                : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n            if (isNaN(t)) {\r\n                return;\r\n            }\r\n            if (t < 0) {\r\n                Point.copy(tmpProjPoint, pt1);\r\n            }\r\n            else if (t > 1) {\r\n                Point.copy(tmpProjPoint, pt2);\r\n            }\r\n            tmpProjPoint.toArray(linePoints[1]);\r\n        }\r\n    }\r\n    function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\r\n        if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\r\n            return;\r\n        }\r\n        maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\r\n        pt0.fromArray(linePoints[0]);\r\n        pt1.fromArray(linePoints[1]);\r\n        pt2.fromArray(linePoints[2]);\r\n        Point.sub(dir, pt1, pt0);\r\n        Point.sub(dir2, pt2, pt1);\r\n        var len1 = dir.len();\r\n        var len2 = dir2.len();\r\n        if (len1 < 1e-3 || len2 < 1e-3) {\r\n            return;\r\n        }\r\n        dir.scale(1 / len1);\r\n        dir2.scale(1 / len2);\r\n        var angleCos = dir.dot(surfaceNormal);\r\n        var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\r\n        if (angleCos < maxSurfaceAngleCos) {\r\n            var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\r\n            tmpProjPoint.fromArray(tmpArr);\r\n            var HALF_PI = Math.PI / 2;\r\n            var angle2 = Math.acos(dir2.dot(surfaceNormal));\r\n            var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\r\n            if (newAngle >= HALF_PI) {\r\n                Point.copy(tmpProjPoint, pt2);\r\n            }\r\n            else {\r\n                tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));\r\n                var t = pt2.x !== pt1.x\r\n                    ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n                    : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n                if (isNaN(t)) {\r\n                    return;\r\n                }\r\n                if (t < 0) {\r\n                    Point.copy(tmpProjPoint, pt1);\r\n                }\r\n                else if (t > 1) {\r\n                    Point.copy(tmpProjPoint, pt2);\r\n                }\r\n            }\r\n            tmpProjPoint.toArray(linePoints[1]);\r\n        }\r\n    }\r\n    function setLabelLineState(labelLine, ignore, stateName, stateModel) {\r\n        var isNormal = stateName === 'normal';\r\n        var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);\r\n        stateObj.ignore = ignore;\r\n        var smooth = stateModel.get('smooth');\r\n        if (smooth && smooth === true) {\r\n            smooth = 0.3;\r\n        }\r\n        stateObj.shape = stateObj.shape || {};\r\n        if (smooth > 0) {\r\n            stateObj.shape.smooth = smooth;\r\n        }\r\n        var styleObj = stateModel.getModel('lineStyle').getLineStyle();\r\n        isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\r\n    }\r\n    function buildLabelLinePath(path, shape) {\r\n        var smooth = shape.smooth;\r\n        var points = shape.points;\r\n        if (!points) {\r\n            return;\r\n        }\r\n        path.moveTo(points[0][0], points[0][1]);\r\n        if (smooth > 0 && points.length >= 3) {\r\n            var len1 = dist(points[0], points[1]);\r\n            var len2 = dist(points[1], points[2]);\r\n            if (!len1 || !len2) {\r\n                path.lineTo(points[1][0], points[1][1]);\r\n                path.lineTo(points[2][0], points[2][1]);\r\n                return;\r\n            }\r\n            var moveLen = Math.min(len1, len2) * smooth;\r\n            var midPoint0 = lerp([], points[1], points[0], moveLen / len1);\r\n            var midPoint2 = lerp([], points[1], points[2], moveLen / len2);\r\n            var midPoint1 = lerp([], midPoint0, midPoint2, 0.5);\r\n            path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\r\n            path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\r\n        }\r\n        else {\r\n            for (var i = 1; i < points.length; i++) {\r\n                path.lineTo(points[i][0], points[i][1]);\r\n            }\r\n        }\r\n    }\r\n    function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\r\n        var labelLine = targetEl.getTextGuideLine();\r\n        var label = targetEl.getTextContent();\r\n        if (!label) {\r\n            if (labelLine) {\r\n                targetEl.removeTextGuideLine();\r\n            }\r\n            return;\r\n        }\r\n        var normalModel = statesModels.normal;\r\n        var showNormal = normalModel.get('show');\r\n        var labelIgnoreNormal = label.ignore;\r\n        for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n            var stateName = DISPLAY_STATES[i];\r\n            var stateModel = statesModels[stateName];\r\n            var isNormal = stateName === 'normal';\r\n            if (stateModel) {\r\n                var stateShow = stateModel.get('show');\r\n                var isLabelIgnored = isNormal\r\n                    ? labelIgnoreNormal\r\n                    : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\r\n                if (isLabelIgnored\r\n                    || !retrieve2(stateShow, showNormal)) {\r\n                    var stateObj = isNormal ? labelLine : (labelLine && labelLine.states.normal);\r\n                    if (stateObj) {\r\n                        stateObj.ignore = true;\r\n                    }\r\n                    continue;\r\n                }\r\n                if (!labelLine) {\r\n                    labelLine = new Polyline();\r\n                    targetEl.setTextGuideLine(labelLine);\r\n                    if (!isNormal && (labelIgnoreNormal || !showNormal)) {\r\n                        setLabelLineState(labelLine, true, 'normal', statesModels.normal);\r\n                    }\r\n                    if (targetEl.stateProxy) {\r\n                        labelLine.stateProxy = targetEl.stateProxy;\r\n                    }\r\n                }\r\n                setLabelLineState(labelLine, false, stateName, stateModel);\r\n            }\r\n        }\r\n        if (labelLine) {\r\n            defaults(labelLine.style, defaultStyle);\r\n            labelLine.style.fill = null;\r\n            var showAbove = normalModel.get('showAbove');\r\n            var labelLineConfig = (targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {});\r\n            labelLineConfig.showAbove = showAbove || false;\r\n            labelLine.buildPath = buildLabelLinePath;\r\n        }\r\n    }\r\n    function getLabelLineStatesModels(itemModel, labelLineName) {\r\n        labelLineName = (labelLineName || 'labelLine');\r\n        var statesModels = {\r\n            normal: itemModel.getModel(labelLineName)\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\r\n        }\r\n        return statesModels;\r\n    }\n\n    function prepareLayoutList(input) {\r\n        var list = [];\r\n        for (var i = 0; i < input.length; i++) {\r\n            var rawItem = input[i];\r\n            if (rawItem.defaultAttr.ignore) {\r\n                continue;\r\n            }\r\n            var label = rawItem.label;\r\n            var transform = label.getComputedTransform();\r\n            var localRect = label.getBoundingRect();\r\n            var isAxisAligned = !transform || (transform[1] < 1e-5 && transform[2] < 1e-5);\r\n            var minMargin = label.style.margin || 0;\r\n            var globalRect = localRect.clone();\r\n            globalRect.applyTransform(transform);\r\n            globalRect.x -= minMargin / 2;\r\n            globalRect.y -= minMargin / 2;\r\n            globalRect.width += minMargin;\r\n            globalRect.height += minMargin;\r\n            var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform) : null;\r\n            list.push({\r\n                label: label,\r\n                labelLine: rawItem.labelLine,\r\n                rect: globalRect,\r\n                localRect: localRect,\r\n                obb: obb,\r\n                priority: rawItem.priority,\r\n                defaultAttr: rawItem.defaultAttr,\r\n                layoutOption: rawItem.computedLayoutOption,\r\n                axisAligned: isAxisAligned,\r\n                transform: transform\r\n            });\r\n        }\r\n        return list;\r\n    }\r\n    function shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {\r\n        var len = list.length;\r\n        if (len < 2) {\r\n            return;\r\n        }\r\n        list.sort(function (a, b) {\r\n            return a.rect[xyDim] - b.rect[xyDim];\r\n        });\r\n        var lastPos = 0;\r\n        var delta;\r\n        var adjusted = false;\r\n        var totalShifts = 0;\r\n        for (var i = 0; i < len; i++) {\r\n            var item = list[i];\r\n            var rect = item.rect;\r\n            delta = rect[xyDim] - lastPos;\r\n            if (delta < 0) {\r\n                rect[xyDim] -= delta;\r\n                item.label[xyDim] -= delta;\r\n                adjusted = true;\r\n            }\r\n            var shift = Math.max(-delta, 0);\r\n            totalShifts += shift;\r\n            lastPos = rect[xyDim] + rect[sizeDim];\r\n        }\r\n        if (totalShifts > 0 && balanceShift) {\r\n            shiftList(-totalShifts / len, 0, len);\r\n        }\r\n        var first = list[0];\r\n        var last = list[len - 1];\r\n        var minGap;\r\n        var maxGap;\r\n        updateMinMaxGap();\r\n        minGap < 0 && squeezeGaps(-minGap, 0.8);\r\n        maxGap < 0 && squeezeGaps(maxGap, 0.8);\r\n        updateMinMaxGap();\r\n        takeBoundsGap(minGap, maxGap, 1);\r\n        takeBoundsGap(maxGap, minGap, -1);\r\n        updateMinMaxGap();\r\n        if (minGap < 0) {\r\n            squeezeWhenBailout(-minGap);\r\n        }\r\n        if (maxGap < 0) {\r\n            squeezeWhenBailout(maxGap);\r\n        }\r\n        function updateMinMaxGap() {\r\n            minGap = first.rect[xyDim] - minBound;\r\n            maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];\r\n        }\r\n        function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {\r\n            if (gapThisBound < 0) {\r\n                var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);\r\n                if (moveFromMaxGap > 0) {\r\n                    shiftList(moveFromMaxGap * moveDir, 0, len);\r\n                    var remained = moveFromMaxGap + gapThisBound;\r\n                    if (remained < 0) {\r\n                        squeezeGaps(-remained * moveDir, 1);\r\n                    }\r\n                }\r\n                else {\r\n                    squeezeGaps(-gapThisBound * moveDir, 1);\r\n                }\r\n            }\r\n        }\r\n        function shiftList(delta, start, end) {\r\n            if (delta !== 0) {\r\n                adjusted = true;\r\n            }\r\n            for (var i = start; i < end; i++) {\r\n                var item = list[i];\r\n                var rect = item.rect;\r\n                rect[xyDim] += delta;\r\n                item.label[xyDim] += delta;\r\n            }\r\n        }\r\n        function squeezeGaps(delta, maxSqeezePercent) {\r\n            var gaps = [];\r\n            var totalGaps = 0;\r\n            for (var i = 1; i < len; i++) {\r\n                var prevItemRect = list[i - 1].rect;\r\n                var gap = Math.max(list[i].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);\r\n                gaps.push(gap);\r\n                totalGaps += gap;\r\n            }\r\n            if (!totalGaps) {\r\n                return;\r\n            }\r\n            var squeezePercent = Math.min(Math.abs(delta) / totalGaps, maxSqeezePercent);\r\n            if (delta > 0) {\r\n                for (var i = 0; i < len - 1; i++) {\r\n                    var movement = gaps[i] * squeezePercent;\r\n                    shiftList(movement, 0, i + 1);\r\n                }\r\n            }\r\n            else {\r\n                for (var i = len - 1; i > 0; i--) {\r\n                    var movement = gaps[i - 1] * squeezePercent;\r\n                    shiftList(-movement, i, len);\r\n                }\r\n            }\r\n        }\r\n        function squeezeWhenBailout(delta) {\r\n            var dir = delta < 0 ? -1 : 1;\r\n            delta = Math.abs(delta);\r\n            var moveForEachLabel = Math.ceil(delta / (len - 1));\r\n            for (var i = 0; i < len - 1; i++) {\r\n                if (dir > 0) {\r\n                    shiftList(moveForEachLabel, 0, i + 1);\r\n                }\r\n                else {\r\n                    shiftList(-moveForEachLabel, len - i - 1, len);\r\n                }\r\n                delta -= moveForEachLabel;\r\n                if (delta <= 0) {\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        return adjusted;\r\n    }\r\n    function shiftLayoutOnX(list, leftBound, rightBound, balanceShift) {\r\n        return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift);\r\n    }\r\n    function shiftLayoutOnY(list, topBound, bottomBound, balanceShift) {\r\n        return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift);\r\n    }\r\n    function hideOverlap(labelList) {\r\n        var displayedLabels = [];\r\n        labelList.sort(function (a, b) {\r\n            return b.priority - a.priority;\r\n        });\r\n        var globalRect = new BoundingRect(0, 0, 0, 0);\r\n        function hideEl(el) {\r\n            if (!el.ignore) {\r\n                var emphasisState = el.ensureState('emphasis');\r\n                if (emphasisState.ignore == null) {\r\n                    emphasisState.ignore = false;\r\n                }\r\n            }\r\n            el.ignore = true;\r\n        }\r\n        for (var i = 0; i < labelList.length; i++) {\r\n            var labelItem = labelList[i];\r\n            var isAxisAligned = labelItem.axisAligned;\r\n            var localRect = labelItem.localRect;\r\n            var transform = labelItem.transform;\r\n            var label = labelItem.label;\r\n            var labelLine = labelItem.labelLine;\r\n            globalRect.copy(labelItem.rect);\r\n            globalRect.width -= 0.1;\r\n            globalRect.height -= 0.1;\r\n            globalRect.x += 0.05;\r\n            globalRect.y += 0.05;\r\n            var obb = labelItem.obb;\r\n            var overlapped = false;\r\n            for (var j = 0; j < displayedLabels.length; j++) {\r\n                var existsTextCfg = displayedLabels[j];\r\n                if (!globalRect.intersect(existsTextCfg.rect)) {\r\n                    continue;\r\n                }\r\n                if (isAxisAligned && existsTextCfg.axisAligned) {\r\n                    overlapped = true;\r\n                    break;\r\n                }\r\n                if (!existsTextCfg.obb) {\r\n                    existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform);\r\n                }\r\n                if (!obb) {\r\n                    obb = new OrientedBoundingRect(localRect, transform);\r\n                }\r\n                if (obb.intersect(existsTextCfg.obb)) {\r\n                    overlapped = true;\r\n                    break;\r\n                }\r\n            }\r\n            if (overlapped) {\r\n                hideEl(label);\r\n                labelLine && hideEl(labelLine);\r\n            }\r\n            else {\r\n                label.attr('ignore', labelItem.defaultAttr.ignore);\r\n                labelLine && labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore);\r\n                displayedLabels.push(labelItem);\r\n            }\r\n        }\r\n    }\n\n    function cloneArr(points) {\r\n        if (points) {\r\n            var newPoints = [];\r\n            for (var i = 0; i < points.length; i++) {\r\n                newPoints.push(points[i].slice());\r\n            }\r\n            return newPoints;\r\n        }\r\n    }\r\n    function prepareLayoutCallbackParams(labelItem, hostEl) {\r\n        var label = labelItem.label;\r\n        var labelLine = hostEl && hostEl.getTextGuideLine();\r\n        return {\r\n            dataIndex: labelItem.dataIndex,\r\n            dataType: labelItem.dataType,\r\n            seriesIndex: labelItem.seriesModel.seriesIndex,\r\n            text: labelItem.label.style.text,\r\n            rect: labelItem.hostRect,\r\n            labelRect: labelItem.rect,\r\n            align: label.style.align,\r\n            verticalAlign: label.style.verticalAlign,\r\n            labelLinePoints: cloneArr(labelLine && labelLine.shape.points)\r\n        };\r\n    }\r\n    var LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\r\n    var dummyTransformable = new Transformable();\r\n    var labelLayoutInnerStore = makeInner();\r\n    var labelLineAnimationStore = makeInner();\r\n    function extendWithKeys(target, source, keys) {\r\n        for (var i = 0; i < keys.length; i++) {\r\n            var key = keys[i];\r\n            if (source[key] != null) {\r\n                target[key] = source[key];\r\n            }\r\n        }\r\n    }\r\n    var LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\r\n    var LabelManager = (function () {\r\n        function LabelManager() {\r\n            this._labelList = [];\r\n            this._chartViewList = [];\r\n        }\r\n        LabelManager.prototype.clearLabels = function () {\r\n            this._labelList = [];\r\n            this._chartViewList = [];\r\n        };\r\n        LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) {\r\n            var labelStyle = label.style;\r\n            var hostEl = label.__hostTarget;\r\n            var textConfig = hostEl.textConfig || {};\r\n            var labelTransform = label.getComputedTransform();\r\n            var labelRect = label.getBoundingRect().plain();\r\n            BoundingRect.applyTransform(labelRect, labelRect, labelTransform);\r\n            if (labelTransform) {\r\n                dummyTransformable.setLocalTransform(labelTransform);\r\n            }\r\n            else {\r\n                dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation =\r\n                    dummyTransformable.originX = dummyTransformable.originY = 0;\r\n                dummyTransformable.scaleX = dummyTransformable.scaleY = 1;\r\n            }\r\n            var host = label.__hostTarget;\r\n            var hostRect;\r\n            if (host) {\r\n                hostRect = host.getBoundingRect().plain();\r\n                var transform = host.getComputedTransform();\r\n                BoundingRect.applyTransform(hostRect, hostRect, transform);\r\n            }\r\n            var labelGuide = hostRect && host.getTextGuideLine();\r\n            this._labelList.push({\r\n                label: label,\r\n                labelLine: labelGuide,\r\n                seriesModel: seriesModel,\r\n                dataIndex: dataIndex,\r\n                dataType: dataType,\r\n                layoutOption: layoutOption,\r\n                computedLayoutOption: null,\r\n                rect: labelRect,\r\n                hostRect: hostRect,\r\n                priority: hostRect ? hostRect.width * hostRect.height : 0,\r\n                defaultAttr: {\r\n                    ignore: label.ignore,\r\n                    labelGuideIgnore: labelGuide && labelGuide.ignore,\r\n                    x: dummyTransformable.x,\r\n                    y: dummyTransformable.y,\r\n                    rotation: dummyTransformable.rotation,\r\n                    style: {\r\n                        x: labelStyle.x,\r\n                        y: labelStyle.y,\r\n                        align: labelStyle.align,\r\n                        verticalAlign: labelStyle.verticalAlign,\r\n                        width: labelStyle.width,\r\n                        height: labelStyle.height,\r\n                        fontSize: labelStyle.fontSize\r\n                    },\r\n                    cursor: label.cursor,\r\n                    attachedPos: textConfig.position,\r\n                    attachedRot: textConfig.rotation\r\n                }\r\n            });\r\n        };\r\n        LabelManager.prototype.addLabelsOfSeries = function (chartView) {\r\n            var _this = this;\r\n            this._chartViewList.push(chartView);\r\n            var seriesModel = chartView.__model;\r\n            var layoutOption = seriesModel.get('labelLayout');\r\n            if (!(isFunction(layoutOption) || keys(layoutOption).length)) {\r\n                return;\r\n            }\r\n            chartView.group.traverse(function (child) {\r\n                if (child.ignore) {\r\n                    return true;\r\n                }\r\n                var textEl = child.getTextContent();\r\n                var ecData = getECData(child);\r\n                if (textEl && !textEl.disableLabelLayout) {\r\n                    _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);\r\n                }\r\n            });\r\n        };\r\n        LabelManager.prototype.updateLayoutConfig = function (api) {\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            function createDragHandler(el, labelLineModel) {\r\n                return function () {\r\n                    updateLabelLinePoints(el, labelLineModel);\r\n                };\r\n            }\r\n            for (var i = 0; i < this._labelList.length; i++) {\r\n                var labelItem = this._labelList[i];\r\n                var label = labelItem.label;\r\n                var hostEl = label.__hostTarget;\r\n                var defaultLabelAttr = labelItem.defaultAttr;\r\n                var layoutOption = void 0;\r\n                if (typeof labelItem.layoutOption === 'function') {\r\n                    layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));\r\n                }\r\n                else {\r\n                    layoutOption = labelItem.layoutOption;\r\n                }\r\n                layoutOption = layoutOption || {};\r\n                labelItem.computedLayoutOption = layoutOption;\r\n                var degreeToRadian = Math.PI / 180;\r\n                if (hostEl) {\r\n                    hostEl.setTextConfig({\r\n                        local: false,\r\n                        position: (layoutOption.x != null || layoutOption.y != null)\r\n                            ? null : defaultLabelAttr.attachedPos,\r\n                        rotation: layoutOption.rotate != null\r\n                            ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,\r\n                        offset: [layoutOption.dx || 0, layoutOption.dy || 0]\r\n                    });\r\n                }\r\n                var needsUpdateLabelLine = false;\r\n                if (layoutOption.x != null) {\r\n                    label.x = parsePercent$2(layoutOption.x, width);\r\n                    label.setStyle('x', 0);\r\n                    needsUpdateLabelLine = true;\r\n                }\r\n                else {\r\n                    label.x = defaultLabelAttr.x;\r\n                    label.setStyle('x', defaultLabelAttr.style.x);\r\n                }\r\n                if (layoutOption.y != null) {\r\n                    label.y = parsePercent$2(layoutOption.y, height);\r\n                    label.setStyle('y', 0);\r\n                    needsUpdateLabelLine = true;\r\n                }\r\n                else {\r\n                    label.y = defaultLabelAttr.y;\r\n                    label.setStyle('y', defaultLabelAttr.style.y);\r\n                }\r\n                if (layoutOption.labelLinePoints) {\r\n                    var guideLine = hostEl.getTextGuideLine();\r\n                    if (guideLine) {\r\n                        guideLine.setShape({ points: layoutOption.labelLinePoints });\r\n                        needsUpdateLabelLine = false;\r\n                    }\r\n                }\r\n                var labelLayoutStore = labelLayoutInnerStore(label);\r\n                labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;\r\n                label.rotation = layoutOption.rotate != null\r\n                    ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;\r\n                for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {\r\n                    var key = LABEL_OPTION_TO_STYLE_KEYS[k];\r\n                    label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);\r\n                }\r\n                if (layoutOption.draggable) {\r\n                    label.draggable = true;\r\n                    label.cursor = 'move';\r\n                    if (hostEl) {\r\n                        var hostModel = labelItem.seriesModel;\r\n                        if (labelItem.dataIndex != null) {\r\n                            var data = labelItem.seriesModel.getData(labelItem.dataType);\r\n                            hostModel = data.getItemModel(labelItem.dataIndex);\r\n                        }\r\n                        label.on('drag', createDragHandler(hostEl, hostModel.getModel('labelLine')));\r\n                    }\r\n                }\r\n                else {\r\n                    label.off('drag');\r\n                    label.cursor = defaultLabelAttr.cursor;\r\n                }\r\n            }\r\n        };\r\n        LabelManager.prototype.layout = function (api) {\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            var labelList = prepareLayoutList(this._labelList);\r\n            var labelsNeedsAdjustOnX = filter(labelList, function (item) {\r\n                return item.layoutOption.moveOverlap === 'shiftX';\r\n            });\r\n            var labelsNeedsAdjustOnY = filter(labelList, function (item) {\r\n                return item.layoutOption.moveOverlap === 'shiftY';\r\n            });\r\n            shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);\r\n            shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);\r\n            var labelsNeedsHideOverlap = filter(labelList, function (item) {\r\n                return item.layoutOption.hideOverlap;\r\n            });\r\n            hideOverlap(labelsNeedsHideOverlap);\r\n        };\r\n        LabelManager.prototype.processLabelsOverall = function () {\r\n            var _this = this;\r\n            each(this._chartViewList, function (chartView) {\r\n                var seriesModel = chartView.__model;\r\n                var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;\r\n                var animationEnabled = seriesModel.isAnimationEnabled();\r\n                chartView.group.traverse(function (child) {\r\n                    if (child.ignore) {\r\n                        return true;\r\n                    }\r\n                    var needsUpdateLabelLine = !ignoreLabelLineUpdate;\r\n                    var label = child.getTextContent();\r\n                    if (!needsUpdateLabelLine && label) {\r\n                        needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;\r\n                    }\r\n                    if (needsUpdateLabelLine) {\r\n                        _this._updateLabelLine(child, seriesModel);\r\n                    }\r\n                    if (animationEnabled) {\r\n                        _this._animateLabels(child, seriesModel);\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        LabelManager.prototype._updateLabelLine = function (el, seriesModel) {\r\n            var textEl = el.getTextContent();\r\n            var ecData = getECData(el);\r\n            var dataIndex = ecData.dataIndex;\r\n            if (textEl && dataIndex != null) {\r\n                var data = seriesModel.getData(ecData.dataType);\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var defaultStyle = {};\r\n                var visualStyle = data.getItemVisual(dataIndex, 'style');\r\n                var visualType = data.getVisual('drawType');\r\n                defaultStyle.stroke = visualStyle[visualType];\r\n                var labelLineModel = itemModel.getModel('labelLine');\r\n                setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);\r\n                updateLabelLinePoints(el, labelLineModel);\r\n            }\r\n        };\r\n        LabelManager.prototype._animateLabels = function (el, seriesModel) {\r\n            var textEl = el.getTextContent();\r\n            var guideLine = el.getTextGuideLine();\r\n            if (textEl\r\n                && !textEl.ignore\r\n                && !textEl.invisible\r\n                && !el.disableLabelAnimation\r\n                && !isElementRemoved(el)) {\r\n                var layoutStore = labelLayoutInnerStore(textEl);\r\n                var oldLayout = layoutStore.oldLayout;\r\n                var ecData = getECData(el);\r\n                var dataIndex = ecData.dataIndex;\r\n                var newProps = {\r\n                    x: textEl.x,\r\n                    y: textEl.y,\r\n                    rotation: textEl.rotation\r\n                };\r\n                var data = seriesModel.getData(ecData.dataType);\r\n                if (!oldLayout) {\r\n                    textEl.attr(newProps);\r\n                    if (!labelInner(textEl).valueAnimation) {\r\n                        var oldOpacity = retrieve2(textEl.style.opacity, 1);\r\n                        textEl.style.opacity = 0;\r\n                        initProps(textEl, {\r\n                            style: { opacity: oldOpacity }\r\n                        }, seriesModel, dataIndex);\r\n                    }\r\n                }\r\n                else {\r\n                    textEl.attr(oldLayout);\r\n                    var prevStates = el.prevStates;\r\n                    if (prevStates) {\r\n                        if (indexOf(prevStates, 'select') >= 0) {\r\n                            textEl.attr(layoutStore.oldLayoutSelect);\r\n                        }\r\n                        if (indexOf(prevStates, 'emphasis') >= 0) {\r\n                            textEl.attr(layoutStore.oldLayoutEmphasis);\r\n                        }\r\n                    }\r\n                    updateProps(textEl, newProps, seriesModel, dataIndex);\r\n                }\r\n                layoutStore.oldLayout = newProps;\r\n                if (textEl.states.select) {\r\n                    var layoutSelect = layoutStore.oldLayoutSelect = {};\r\n                    extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);\r\n                    extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);\r\n                }\r\n                if (textEl.states.emphasis) {\r\n                    var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};\r\n                    extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);\r\n                    extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);\r\n                }\r\n                animateLabelValue(textEl, dataIndex, data, seriesModel);\r\n            }\r\n            if (guideLine && !guideLine.ignore && !guideLine.invisible) {\r\n                var layoutStore = labelLineAnimationStore(guideLine);\r\n                var oldLayout = layoutStore.oldLayout;\r\n                var newLayout = { points: guideLine.shape.points };\r\n                if (!oldLayout) {\r\n                    guideLine.setShape(newLayout);\r\n                    guideLine.style.strokePercent = 0;\r\n                    initProps(guideLine, {\r\n                        style: { strokePercent: 1 }\r\n                    }, seriesModel);\r\n                }\r\n                else {\r\n                    guideLine.attr({ shape: oldLayout });\r\n                    updateProps(guideLine, {\r\n                        shape: newLayout\r\n                    }, seriesModel);\r\n                }\r\n                layoutStore.oldLayout = newLayout;\r\n            }\r\n        };\r\n        return LabelManager;\r\n    }());\n\n    function createLegacyDataSelectAction(seriesType, ecRegisterAction) {\r\n        function getSeriesIndices(ecModel, payload) {\r\n            var seriesIndices = [];\r\n            ecModel.eachComponent({\r\n                mainType: 'series', subType: seriesType, query: payload\r\n            }, function (seriesModel) {\r\n                seriesIndices.push(seriesModel.seriesIndex);\r\n            });\r\n            return seriesIndices;\r\n        }\r\n        each([\r\n            [seriesType + 'ToggleSelect', 'toggleSelect'],\r\n            [seriesType + 'Select', 'select'],\r\n            [seriesType + 'UnSelect', 'unselect']\r\n        ], function (eventsMap) {\r\n            ecRegisterAction(eventsMap[0], function (payload, ecModel, api) {\r\n                payload = extend({}, payload);\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(payload.type, eventsMap[1]);\r\n                }\r\n                api.dispatchAction(extend(payload, {\r\n                    type: eventsMap[1],\r\n                    seriesIndex: getSeriesIndices(ecModel, payload)\r\n                }));\r\n            });\r\n        });\r\n    }\r\n    function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) {\r\n        var legacyEventName = type + eventPostfix;\r\n        if (!ecIns.isSilent(legacyEventName)) {\r\n            if (__DEV__) {\r\n                deprecateLog(\"event \" + legacyEventName + \" is deprecated.\");\r\n            }\r\n            ecModel.eachComponent({\r\n                mainType: 'series', subType: 'pie'\r\n            }, function (seriesModel) {\r\n                var seriesIndex = seriesModel.seriesIndex;\r\n                var selected = payload.selected;\r\n                for (var i = 0; i < selected.length; i++) {\r\n                    if (selected[i].seriesIndex === seriesIndex) {\r\n                        var data = seriesModel.getData();\r\n                        var dataIndex = queryDataIndex(data, payload.fromActionPayload);\r\n                        ecIns.trigger(legacyEventName, {\r\n                            type: legacyEventName,\r\n                            seriesId: seriesModel.id,\r\n                            name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),\r\n                            selected: extend({}, seriesModel.option.selectedMap)\r\n                        });\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function handleLegacySelectEvents(messageCenter, ecIns, ecModel) {\r\n        messageCenter.on('selectchanged', function (params) {\r\n            if (params.isFromClick) {\r\n                handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, ecModel, params);\r\n            }\r\n            else if (params.fromAction === 'select') {\r\n                handleSeriesLegacySelectEvents('map', 'selected', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'selected', ecIns, ecModel, params);\r\n            }\r\n            else if (params.fromAction === 'unselect') {\r\n                handleSeriesLegacySelectEvents('map', 'unselected', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, ecModel, params);\r\n            }\r\n        });\r\n    }\n\n    function createLinearGradient(ctx, obj, rect) {\r\n        var x = obj.x == null ? 0 : obj.x;\r\n        var x2 = obj.x2 == null ? 1 : obj.x2;\r\n        var y = obj.y == null ? 0 : obj.y;\r\n        var y2 = obj.y2 == null ? 0 : obj.y2;\r\n        if (!obj.global) {\r\n            x = x * rect.width + rect.x;\r\n            x2 = x2 * rect.width + rect.x;\r\n            y = y * rect.height + rect.y;\r\n            y2 = y2 * rect.height + rect.y;\r\n        }\r\n        x = isNaN(x) ? 0 : x;\r\n        x2 = isNaN(x2) ? 1 : x2;\r\n        y = isNaN(y) ? 0 : y;\r\n        y2 = isNaN(y2) ? 0 : y2;\r\n        var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\r\n        return canvasGradient;\r\n    }\r\n    function createRadialGradient(ctx, obj, rect) {\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var min = Math.min(width, height);\r\n        var x = obj.x == null ? 0.5 : obj.x;\r\n        var y = obj.y == null ? 0.5 : obj.y;\r\n        var r = obj.r == null ? 0.5 : obj.r;\r\n        if (!obj.global) {\r\n            x = x * width + rect.x;\r\n            y = y * height + rect.y;\r\n            r = r * min;\r\n        }\r\n        var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\r\n        return canvasGradient;\r\n    }\r\n    function getCanvasGradient(ctx, obj, rect) {\r\n        var canvasGradient = obj.type === 'radial'\r\n            ? createRadialGradient(ctx, obj, rect)\r\n            : createLinearGradient(ctx, obj, rect);\r\n        var colorStops = obj.colorStops;\r\n        for (var i = 0; i < colorStops.length; i++) {\r\n            canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\r\n        }\r\n        return canvasGradient;\r\n    }\r\n    function isClipPathChanged(clipPaths, prevClipPaths) {\r\n        if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\r\n            return false;\r\n        }\r\n        if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < clipPaths.length; i++) {\r\n            if (clipPaths[i] !== prevClipPaths[i]) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\n\n    function normalizeLineDash(lineType, lineWidth) {\r\n        if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {\r\n            return null;\r\n        }\r\n        lineWidth = lineWidth || 1;\r\n        return lineType === 'dashed'\r\n            ? [4 * lineWidth, 2 * lineWidth]\r\n            : lineType === 'dotted'\r\n                ? [lineWidth]\r\n                : isNumber(lineType)\r\n                    ? [lineType] : isArray(lineType) ? lineType : null;\r\n    }\n\n    var pathProxyForDraw = new PathProxy(true);\r\n    function styleHasStroke(style) {\r\n        var stroke = style.stroke;\r\n        return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n    }\r\n    function styleHasFill(style) {\r\n        var fill = style.fill;\r\n        return fill != null && fill !== 'none';\r\n    }\r\n    function doFillPath(ctx, style) {\r\n        if (style.fillOpacity != null && style.fillOpacity !== 1) {\r\n            var originalGlobalAlpha = ctx.globalAlpha;\r\n            ctx.globalAlpha = style.fillOpacity * style.opacity;\r\n            ctx.fill();\r\n            ctx.globalAlpha = originalGlobalAlpha;\r\n        }\r\n        else {\r\n            ctx.fill();\r\n        }\r\n    }\r\n    function doStrokePath(ctx, style) {\r\n        if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\r\n            var originalGlobalAlpha = ctx.globalAlpha;\r\n            ctx.globalAlpha = style.strokeOpacity * style.opacity;\r\n            ctx.stroke();\r\n            ctx.globalAlpha = originalGlobalAlpha;\r\n        }\r\n        else {\r\n            ctx.stroke();\r\n        }\r\n    }\r\n    function createCanvasPattern(ctx, pattern, el) {\r\n        var image = createOrUpdateImage(pattern.image, pattern.__image, el);\r\n        if (isImageReady(image)) {\r\n            var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\r\n            if (typeof DOMMatrix === 'function') {\r\n                var matrix = new DOMMatrix();\r\n                matrix.rotateSelf(0, 0, (pattern.rotation || 0) / Math.PI * 180);\r\n                matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\r\n                matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\r\n                canvasPattern.setTransform(matrix);\r\n            }\r\n            return canvasPattern;\r\n        }\r\n    }\r\n    function brushPath(ctx, el, style, inBatch) {\r\n        var hasStroke = styleHasStroke(style);\r\n        var hasFill = styleHasFill(style);\r\n        var strokePercent = style.strokePercent;\r\n        var strokePart = strokePercent < 1;\r\n        var firstDraw = !el.path;\r\n        if ((!el.silent || strokePart) && firstDraw) {\r\n            el.createPathProxy();\r\n        }\r\n        var path = el.path || pathProxyForDraw;\r\n        if (!inBatch) {\r\n            var fill = style.fill;\r\n            var stroke = style.stroke;\r\n            var hasFillGradient = hasFill && !!fill.colorStops;\r\n            var hasStrokeGradient = hasStroke && !!stroke.colorStops;\r\n            var hasFillPattern = hasFill && !!fill.image;\r\n            var hasStrokePattern = hasStroke && !!stroke.image;\r\n            var fillGradient = void 0;\r\n            var strokeGradient = void 0;\r\n            var fillPattern = void 0;\r\n            var strokePattern = void 0;\r\n            var rect = void 0;\r\n            if (hasFillGradient || hasStrokeGradient) {\r\n                rect = el.getBoundingRect();\r\n            }\r\n            if (hasFillGradient) {\r\n                fillGradient = el.__dirty\r\n                    ? getCanvasGradient(ctx, fill, rect)\r\n                    : el.__canvasFillGradient;\r\n                el.__canvasFillGradient = fillGradient;\r\n            }\r\n            if (hasStrokeGradient) {\r\n                strokeGradient = el.__dirty\r\n                    ? getCanvasGradient(ctx, stroke, rect)\r\n                    : el.__canvasStrokeGradient;\r\n                el.__canvasStrokeGradient = strokeGradient;\r\n            }\r\n            if (hasFillPattern) {\r\n                fillPattern = (el.__dirty || !el.__canvasFillPattern)\r\n                    ? createCanvasPattern(ctx, fill, el)\r\n                    : el.__canvasFillPattern;\r\n                el.__canvasFillPattern = fillPattern;\r\n            }\r\n            if (hasStrokePattern) {\r\n                strokePattern = (el.__dirty || !el.__canvasStrokePattern)\r\n                    ? createCanvasPattern(ctx, stroke, el)\r\n                    : el.__canvasStrokePattern;\r\n                el.__canvasStrokePattern = fillPattern;\r\n            }\r\n            if (hasFillGradient) {\r\n                ctx.fillStyle = fillGradient;\r\n            }\r\n            else if (hasFillPattern) {\r\n                if (fillPattern) {\r\n                    ctx.fillStyle = fillPattern;\r\n                }\r\n                else {\r\n                    hasFill = false;\r\n                }\r\n            }\r\n            if (hasStrokeGradient) {\r\n                ctx.strokeStyle = strokeGradient;\r\n            }\r\n            else if (hasStrokePattern) {\r\n                if (strokePattern) {\r\n                    ctx.strokeStyle = strokePattern;\r\n                }\r\n                else {\r\n                    hasStroke = false;\r\n                }\r\n            }\r\n        }\r\n        var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\r\n        var lineDashOffset = style.lineDashOffset;\r\n        var ctxLineDash = !!ctx.setLineDash;\r\n        var scale = el.getGlobalScale();\r\n        path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\r\n        if (lineDash) {\r\n            var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n            if (lineScale_1 && lineScale_1 !== 1) {\r\n                lineDash = map(lineDash, function (rawVal) {\r\n                    return rawVal / lineScale_1;\r\n                });\r\n                lineDashOffset /= lineScale_1;\r\n            }\r\n        }\r\n        var needsRebuild = true;\r\n        if (firstDraw || (el.__dirty & Path.SHAPE_CHANGED_BIT)\r\n            || (lineDash && !ctxLineDash && hasStroke)) {\r\n            path.setDPR(ctx.dpr);\r\n            if (strokePart) {\r\n                path.setContext(null);\r\n            }\r\n            else {\r\n                path.setContext(ctx);\r\n                needsRebuild = false;\r\n            }\r\n            path.reset();\r\n            if (lineDash && !ctxLineDash) {\r\n                path.setLineDash(lineDash);\r\n                path.setLineDashOffset(lineDashOffset);\r\n            }\r\n            el.buildPath(path, el.shape, inBatch);\r\n            path.toStatic();\r\n            el.pathUpdated();\r\n        }\r\n        if (needsRebuild) {\r\n            path.rebuildPath(ctx, strokePart ? strokePercent : 1);\r\n        }\r\n        if (lineDash && ctxLineDash) {\r\n            ctx.setLineDash(lineDash);\r\n            ctx.lineDashOffset = lineDashOffset;\r\n        }\r\n        if (!inBatch) {\r\n            if (style.strokeFirst) {\r\n                if (hasStroke) {\r\n                    doStrokePath(ctx, style);\r\n                }\r\n                if (hasFill) {\r\n                    doFillPath(ctx, style);\r\n                }\r\n            }\r\n            else {\r\n                if (hasFill) {\r\n                    doFillPath(ctx, style);\r\n                }\r\n                if (hasStroke) {\r\n                    doStrokePath(ctx, style);\r\n                }\r\n            }\r\n        }\r\n        if (lineDash && ctxLineDash) {\r\n            ctx.setLineDash([]);\r\n        }\r\n    }\r\n    function brushImage(ctx, el, style) {\r\n        var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\r\n        if (!image || !isImageReady(image)) {\r\n            return;\r\n        }\r\n        var x = style.x || 0;\r\n        var y = style.y || 0;\r\n        var width = el.getWidth();\r\n        var height = el.getHeight();\r\n        var aspect = image.width / image.height;\r\n        if (width == null && height != null) {\r\n            width = height * aspect;\r\n        }\r\n        else if (height == null && width != null) {\r\n            height = width / aspect;\r\n        }\r\n        else if (width == null && height == null) {\r\n            width = image.width;\r\n            height = image.height;\r\n        }\r\n        if (style.sWidth && style.sHeight) {\r\n            var sx = style.sx || 0;\r\n            var sy = style.sy || 0;\r\n            ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\r\n        }\r\n        else if (style.sx && style.sy) {\r\n            var sx = style.sx;\r\n            var sy = style.sy;\r\n            var sWidth = width - sx;\r\n            var sHeight = height - sy;\r\n            ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\r\n        }\r\n        else {\r\n            ctx.drawImage(image, x, y, width, height);\r\n        }\r\n    }\r\n    function brushText(ctx, el, style) {\r\n        var text = style.text;\r\n        text != null && (text += '');\r\n        if (text) {\r\n            ctx.font = style.font || DEFAULT_FONT;\r\n            ctx.textAlign = style.textAlign;\r\n            ctx.textBaseline = style.textBaseline;\r\n            var hasLineDash = void 0;\r\n            if (ctx.setLineDash) {\r\n                var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\r\n                var lineDashOffset = style.lineDashOffset;\r\n                if (lineDash) {\r\n                    var lineScale_2 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n                    if (lineScale_2 && lineScale_2 !== 1) {\r\n                        lineDash = map(lineDash, function (rawVal) {\r\n                            return rawVal / lineScale_2;\r\n                        });\r\n                        lineDashOffset /= lineScale_2;\r\n                    }\r\n                    ctx.setLineDash(lineDash);\r\n                    ctx.lineDashOffset = lineDashOffset;\r\n                    hasLineDash = true;\r\n                }\r\n            }\r\n            if (style.strokeFirst) {\r\n                if (styleHasStroke(style)) {\r\n                    ctx.strokeText(text, style.x, style.y);\r\n                }\r\n                if (styleHasFill(style)) {\r\n                    ctx.fillText(text, style.x, style.y);\r\n                }\r\n            }\r\n            else {\r\n                if (styleHasFill(style)) {\r\n                    ctx.fillText(text, style.x, style.y);\r\n                }\r\n                if (styleHasStroke(style)) {\r\n                    ctx.strokeText(text, style.x, style.y);\r\n                }\r\n            }\r\n            if (hasLineDash) {\r\n                ctx.setLineDash([]);\r\n            }\r\n        }\r\n    }\r\n    var SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\r\n    var STROKE_PROPS = [\r\n        ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\r\n    ];\r\n    function bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\r\n        var styleChanged = false;\r\n        if (!forceSetAll) {\r\n            prevStyle = prevStyle || {};\r\n            if (style === prevStyle) {\r\n                return false;\r\n            }\r\n        }\r\n        if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalAlpha = style.opacity == null ? DEFAULT_COMMON_STYLE.opacity : style.opacity;\r\n        }\r\n        if (forceSetAll || style.blend !== prevStyle.blend) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\r\n        }\r\n        for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\r\n            var propName = SHADOW_NUMBER_PROPS[i];\r\n            if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx[propName] = ctx.dpr * (style[propName] || 0);\r\n            }\r\n        }\r\n        if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\r\n        }\r\n        return styleChanged;\r\n    }\r\n    function bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n        var style = getStyle(el, scope.inHover);\r\n        var prevStyle = forceSetAll\r\n            ? null\r\n            : (prevEl && getStyle(prevEl, scope.inHover) || {});\r\n        if (style === prevStyle) {\r\n            return false;\r\n        }\r\n        var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\r\n        if (forceSetAll || style.fill !== prevStyle.fill) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.fillStyle = style.fill;\r\n        }\r\n        if (forceSetAll || style.stroke !== prevStyle.stroke) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.strokeStyle = style.stroke;\r\n        }\r\n        if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\r\n        }\r\n        if (el.hasStroke()) {\r\n            var lineWidth = style.lineWidth;\r\n            var newLineWidth = lineWidth / ((style.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1);\r\n            if (ctx.lineWidth !== newLineWidth) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx.lineWidth = newLineWidth;\r\n            }\r\n        }\r\n        for (var i = 0; i < STROKE_PROPS.length; i++) {\r\n            var prop = STROKE_PROPS[i];\r\n            var propName = prop[0];\r\n            if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx[propName] = style[propName] || prop[1];\r\n            }\r\n        }\r\n        return styleChanged;\r\n    }\r\n    function bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n        return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\r\n    }\r\n    function setContextTransform(ctx, el) {\r\n        var m = el.transform;\r\n        var dpr = ctx.dpr || 1;\r\n        if (m) {\r\n            ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\r\n        }\r\n        else {\r\n            ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n        }\r\n    }\r\n    function updateClipStatus(clipPaths, ctx, scope) {\r\n        var allClipped = false;\r\n        for (var i = 0; i < clipPaths.length; i++) {\r\n            var clipPath = clipPaths[i];\r\n            allClipped = allClipped || clipPath.isZeroArea();\r\n            setContextTransform(ctx, clipPath);\r\n            ctx.beginPath();\r\n            clipPath.buildPath(ctx, clipPath.shape);\r\n            ctx.clip();\r\n        }\r\n        scope.allClipped = allClipped;\r\n    }\r\n    function isTransformChanged(m0, m1) {\r\n        if (m0 && m1) {\r\n            return m0[0] !== m1[0]\r\n                || m0[1] !== m1[1]\r\n                || m0[2] !== m1[2]\r\n                || m0[3] !== m1[3]\r\n                || m0[4] !== m1[4]\r\n                || m0[5] !== m1[5];\r\n        }\r\n        else if (!m0 && !m1) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    var DRAW_TYPE_PATH = 1;\r\n    var DRAW_TYPE_IMAGE = 2;\r\n    var DRAW_TYPE_TEXT = 3;\r\n    var DRAW_TYPE_INCREMENTAL = 4;\r\n    function canPathBatch(style) {\r\n        var hasFill = styleHasFill(style);\r\n        var hasStroke = styleHasStroke(style);\r\n        return !(style.lineDash\r\n            || !(+hasFill ^ +hasStroke)\r\n            || (hasFill && typeof style.fill !== 'string')\r\n            || (hasStroke && typeof style.stroke !== 'string')\r\n            || style.strokePercent < 1\r\n            || style.strokeOpacity < 1\r\n            || style.fillOpacity < 1);\r\n    }\r\n    function flushPathDrawn(ctx, scope) {\r\n        scope.batchFill && ctx.fill();\r\n        scope.batchStroke && ctx.stroke();\r\n        scope.batchFill = '';\r\n        scope.batchStroke = '';\r\n    }\r\n    function getStyle(el, inHover) {\r\n        return inHover ? (el.__hoverStyle || el.style) : el.style;\r\n    }\r\n    function brushSingle(ctx, el) {\r\n        brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\r\n    }\r\n    function brush(ctx, el, scope, isLast) {\r\n        var m = el.transform;\r\n        if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\r\n            el.__dirty &= ~Element.REDARAW_BIT;\r\n            el.__isRendered = false;\r\n            return;\r\n        }\r\n        var clipPaths = el.__clipPaths;\r\n        var prevElClipPaths = scope.prevElClipPaths;\r\n        var forceSetTransform = false;\r\n        var forceSetStyle = false;\r\n        if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\r\n            if (prevElClipPaths && prevElClipPaths.length) {\r\n                flushPathDrawn(ctx, scope);\r\n                ctx.restore();\r\n                forceSetStyle = forceSetTransform = true;\r\n                scope.prevElClipPaths = null;\r\n                scope.allClipped = false;\r\n                scope.prevEl = null;\r\n            }\r\n            if (clipPaths && clipPaths.length) {\r\n                flushPathDrawn(ctx, scope);\r\n                ctx.save();\r\n                updateClipStatus(clipPaths, ctx, scope);\r\n                forceSetTransform = true;\r\n            }\r\n            scope.prevElClipPaths = clipPaths;\r\n        }\r\n        if (scope.allClipped) {\r\n            el.__isRendered = false;\r\n            return;\r\n        }\r\n        el.beforeBrush && el.beforeBrush();\r\n        el.innerBeforeBrush();\r\n        var prevEl = scope.prevEl;\r\n        if (!prevEl) {\r\n            forceSetStyle = forceSetTransform = true;\r\n        }\r\n        var canBatchPath = el instanceof Path\r\n            && el.autoBatch\r\n            && canPathBatch(el.style);\r\n        if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\r\n            flushPathDrawn(ctx, scope);\r\n            setContextTransform(ctx, el);\r\n        }\r\n        else if (!canBatchPath) {\r\n            flushPathDrawn(ctx, scope);\r\n        }\r\n        var style = getStyle(el, scope.inHover);\r\n        if (el instanceof Path) {\r\n            if (scope.lastDrawType !== DRAW_TYPE_PATH) {\r\n                forceSetStyle = true;\r\n                scope.lastDrawType = DRAW_TYPE_PATH;\r\n            }\r\n            bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n            if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\r\n                ctx.beginPath();\r\n            }\r\n            brushPath(ctx, el, style, canBatchPath);\r\n            if (canBatchPath) {\r\n                scope.batchFill = style.fill || '';\r\n                scope.batchStroke = style.stroke || '';\r\n            }\r\n        }\r\n        else {\r\n            if (el instanceof TSpan) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_TEXT;\r\n                }\r\n                bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n                brushText(ctx, el, style);\r\n            }\r\n            else if (el instanceof ZRImage) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_IMAGE;\r\n                }\r\n                bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n                brushImage(ctx, el, style);\r\n            }\r\n            else if (el instanceof IncrementalDisplayble) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\r\n                }\r\n                brushIncremental(ctx, el, scope);\r\n            }\r\n        }\r\n        if (canBatchPath && isLast) {\r\n            flushPathDrawn(ctx, scope);\r\n        }\r\n        el.innerAfterBrush();\r\n        el.afterBrush && el.afterBrush();\r\n        scope.prevEl = el;\r\n        el.__dirty = 0;\r\n        el.__isRendered = true;\r\n    }\r\n    function brushIncremental(ctx, el, scope) {\r\n        var displayables = el.getDisplayables();\r\n        var temporalDisplayables = el.getTemporalDisplayables();\r\n        ctx.save();\r\n        var innerScope = {\r\n            prevElClipPaths: null,\r\n            prevEl: null,\r\n            allClipped: false,\r\n            viewWidth: scope.viewWidth,\r\n            viewHeight: scope.viewHeight,\r\n            inHover: scope.inHover\r\n        };\r\n        var i;\r\n        var len;\r\n        for (i = el.getCursor(), len = displayables.length; i < len; i++) {\r\n            var displayable = displayables[i];\r\n            displayable.beforeBrush && displayable.beforeBrush();\r\n            displayable.innerBeforeBrush();\r\n            brush(ctx, displayable, innerScope, i === len - 1);\r\n            displayable.innerAfterBrush();\r\n            displayable.afterBrush && displayable.afterBrush();\r\n            innerScope.prevEl = displayable;\r\n        }\r\n        for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\r\n            var displayable = temporalDisplayables[i_1];\r\n            displayable.beforeBrush && displayable.beforeBrush();\r\n            displayable.innerBeforeBrush();\r\n            brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\r\n            displayable.innerAfterBrush();\r\n            displayable.afterBrush && displayable.afterBrush();\r\n            innerScope.prevEl = displayable;\r\n        }\r\n        el.clearTemporalDisplayables();\r\n        el.notClear = true;\r\n        ctx.restore();\r\n    }\n\n    function returnFalse() {\r\n        return false;\r\n    }\r\n    function createDom(id, painter, dpr) {\r\n        var newDom = createCanvas();\r\n        var width = painter.getWidth();\r\n        var height = painter.getHeight();\r\n        var newDomStyle = newDom.style;\r\n        if (newDomStyle) {\r\n            newDomStyle.position = 'absolute';\r\n            newDomStyle.left = '0';\r\n            newDomStyle.top = '0';\r\n            newDomStyle.width = width + 'px';\r\n            newDomStyle.height = height + 'px';\r\n            newDom.setAttribute('data-zr-dom-id', id);\r\n        }\r\n        newDom.width = width * dpr;\r\n        newDom.height = height * dpr;\r\n        return newDom;\r\n    }\r\n    var Layer = (function (_super) {\r\n        __extends(Layer, _super);\r\n        function Layer(id, painter, dpr) {\r\n            var _this = _super.call(this) || this;\r\n            _this.motionBlur = false;\r\n            _this.lastFrameAlpha = 0.7;\r\n            _this.dpr = 1;\r\n            _this.virtual = false;\r\n            _this.config = {};\r\n            _this.incremental = false;\r\n            _this.zlevel = 0;\r\n            _this.maxRepaintRectCount = 5;\r\n            _this.__dirty = true;\r\n            _this.__firstTimePaint = true;\r\n            _this.__used = false;\r\n            _this.__drawIndex = 0;\r\n            _this.__startIndex = 0;\r\n            _this.__endIndex = 0;\r\n            _this.__prevStartIndex = null;\r\n            _this.__prevEndIndex = null;\r\n            var dom;\r\n            dpr = dpr || devicePixelRatio;\r\n            if (typeof id === 'string') {\r\n                dom = createDom(id, painter, dpr);\r\n            }\r\n            else if (isObject(id)) {\r\n                dom = id;\r\n                id = dom.id;\r\n            }\r\n            _this.id = id;\r\n            _this.dom = dom;\r\n            var domStyle = dom.style;\r\n            if (domStyle) {\r\n                dom.onselectstart = returnFalse;\r\n                domStyle.webkitUserSelect = 'none';\r\n                domStyle.userSelect = 'none';\r\n                domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\r\n                domStyle['-webkit-touch-callout'] = 'none';\r\n                domStyle.padding = '0';\r\n                domStyle.margin = '0';\r\n                domStyle.borderWidth = '0';\r\n            }\r\n            _this.domBack = null;\r\n            _this.ctxBack = null;\r\n            _this.painter = painter;\r\n            _this.config = null;\r\n            _this.dpr = dpr;\r\n            return _this;\r\n        }\r\n        Layer.prototype.getElementCount = function () {\r\n            return this.__endIndex - this.__startIndex;\r\n        };\r\n        Layer.prototype.afterBrush = function () {\r\n            this.__prevStartIndex = this.__startIndex;\r\n            this.__prevEndIndex = this.__endIndex;\r\n        };\r\n        Layer.prototype.initContext = function () {\r\n            this.ctx = this.dom.getContext('2d');\r\n            this.ctx.dpr = this.dpr;\r\n        };\r\n        Layer.prototype.setUnpainted = function () {\r\n            this.__firstTimePaint = true;\r\n        };\r\n        Layer.prototype.createBackBuffer = function () {\r\n            var dpr = this.dpr;\r\n            this.domBack = createDom('back-' + this.id, this.painter, dpr);\r\n            this.ctxBack = this.domBack.getContext('2d');\r\n            if (dpr !== 1) {\r\n                this.ctxBack.scale(dpr, dpr);\r\n            }\r\n        };\r\n        Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) {\r\n            if (this.__firstTimePaint) {\r\n                this.__firstTimePaint = false;\r\n                return null;\r\n            }\r\n            var mergedRepaintRects = [];\r\n            var maxRepaintRectCount = this.maxRepaintRectCount;\r\n            var full = false;\r\n            var pendingRect = new BoundingRect(0, 0, 0, 0);\r\n            function addRectToMergePool(rect) {\r\n                if (!rect.isFinite() || rect.isZero()) {\r\n                    return;\r\n                }\r\n                if (mergedRepaintRects.length === 0) {\r\n                    var boundingRect = new BoundingRect(0, 0, 0, 0);\r\n                    boundingRect.copy(rect);\r\n                    mergedRepaintRects.push(boundingRect);\r\n                }\r\n                else {\r\n                    var isMerged = false;\r\n                    var minDeltaArea = Infinity;\r\n                    var bestRectToMergeIdx = 0;\r\n                    for (var i = 0; i < mergedRepaintRects.length; ++i) {\r\n                        var mergedRect = mergedRepaintRects[i];\r\n                        if (mergedRect.intersect(rect)) {\r\n                            var pendingRect_1 = new BoundingRect(0, 0, 0, 0);\r\n                            pendingRect_1.copy(mergedRect);\r\n                            pendingRect_1.union(rect);\r\n                            mergedRepaintRects[i] = pendingRect_1;\r\n                            isMerged = true;\r\n                            break;\r\n                        }\r\n                        else if (full) {\r\n                            pendingRect.copy(rect);\r\n                            pendingRect.union(mergedRect);\r\n                            var aArea = rect.width * rect.height;\r\n                            var bArea = mergedRect.width * mergedRect.height;\r\n                            var pendingArea = pendingRect.width * pendingRect.height;\r\n                            var deltaArea = pendingArea - aArea - bArea;\r\n                            if (deltaArea < minDeltaArea) {\r\n                                minDeltaArea = minDeltaArea;\r\n                                bestRectToMergeIdx = i;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (full) {\r\n                        mergedRepaintRects[bestRectToMergeIdx].union(rect);\r\n                        isMerged = true;\r\n                    }\r\n                    if (!isMerged) {\r\n                        var boundingRect = new BoundingRect(0, 0, 0, 0);\r\n                        boundingRect.copy(rect);\r\n                        mergedRepaintRects.push(boundingRect);\r\n                    }\r\n                    if (!full) {\r\n                        full = mergedRepaintRects.length >= maxRepaintRectCount;\r\n                    }\r\n                }\r\n            }\r\n            for (var i = this.__startIndex; i < this.__endIndex; ++i) {\r\n                var el = displayList[i];\r\n                if (el) {\r\n                    var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\r\n                    var prevRect = el.__isRendered && ((el.__dirty & Element.REDARAW_BIT) || !shouldPaint)\r\n                        ? el.getPrevPaintRect()\r\n                        : null;\r\n                    if (prevRect) {\r\n                        addRectToMergePool(prevRect);\r\n                    }\r\n                    var curRect = shouldPaint && ((el.__dirty & Element.REDARAW_BIT) || !el.__isRendered)\r\n                        ? el.getPaintRect()\r\n                        : null;\r\n                    if (curRect) {\r\n                        addRectToMergePool(curRect);\r\n                    }\r\n                }\r\n            }\r\n            for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {\r\n                var el = prevList[i];\r\n                var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\r\n                if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {\r\n                    var prevRect = el.getPrevPaintRect();\r\n                    if (prevRect) {\r\n                        addRectToMergePool(prevRect);\r\n                    }\r\n                }\r\n            }\r\n            var hasIntersections;\r\n            do {\r\n                hasIntersections = false;\r\n                for (var i = 0; i < mergedRepaintRects.length;) {\r\n                    if (mergedRepaintRects[i].isZero()) {\r\n                        mergedRepaintRects.splice(i, 1);\r\n                        continue;\r\n                    }\r\n                    for (var j = i + 1; j < mergedRepaintRects.length;) {\r\n                        if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {\r\n                            hasIntersections = true;\r\n                            mergedRepaintRects[i].union(mergedRepaintRects[j]);\r\n                            mergedRepaintRects.splice(j, 1);\r\n                        }\r\n                        else {\r\n                            j++;\r\n                        }\r\n                    }\r\n                    i++;\r\n                }\r\n            } while (hasIntersections);\r\n            this._paintRects = mergedRepaintRects;\r\n            return mergedRepaintRects;\r\n        };\r\n        Layer.prototype.debugGetPaintRects = function () {\r\n            return (this._paintRects || []).slice();\r\n        };\r\n        Layer.prototype.resize = function (width, height) {\r\n            var dpr = this.dpr;\r\n            var dom = this.dom;\r\n            var domStyle = dom.style;\r\n            var domBack = this.domBack;\r\n            if (domStyle) {\r\n                domStyle.width = width + 'px';\r\n                domStyle.height = height + 'px';\r\n            }\r\n            dom.width = width * dpr;\r\n            dom.height = height * dpr;\r\n            if (domBack) {\r\n                domBack.width = width * dpr;\r\n                domBack.height = height * dpr;\r\n                if (dpr !== 1) {\r\n                    this.ctxBack.scale(dpr, dpr);\r\n                }\r\n            }\r\n        };\r\n        Layer.prototype.clear = function (clearAll, clearColor, repaintRects) {\r\n            var dom = this.dom;\r\n            var ctx = this.ctx;\r\n            var width = dom.width;\r\n            var height = dom.height;\r\n            clearColor = clearColor || this.clearColor;\r\n            var haveMotionBLur = this.motionBlur && !clearAll;\r\n            var lastFrameAlpha = this.lastFrameAlpha;\r\n            var dpr = this.dpr;\r\n            var self = this;\r\n            if (haveMotionBLur) {\r\n                if (!this.domBack) {\r\n                    this.createBackBuffer();\r\n                }\r\n                this.ctxBack.globalCompositeOperation = 'copy';\r\n                this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\r\n            }\r\n            var domBack = this.domBack;\r\n            function doClear(x, y, width, height) {\r\n                ctx.clearRect(x, y, width, height);\r\n                if (clearColor && clearColor !== 'transparent') {\r\n                    var clearColorGradientOrPattern = void 0;\r\n                    if (isGradientObject(clearColor)) {\r\n                        clearColorGradientOrPattern = clearColor.__canvasGradient\r\n                            || getCanvasGradient(ctx, clearColor, {\r\n                                x: 0,\r\n                                y: 0,\r\n                                width: width,\r\n                                height: height\r\n                            });\r\n                        clearColor.__canvasGradient = clearColorGradientOrPattern;\r\n                    }\r\n                    else if (isPatternObject(clearColor)) {\r\n                        clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\r\n                            dirty: function () {\r\n                                self.setUnpainted();\r\n                                self.__painter.refresh();\r\n                            }\r\n                        });\r\n                    }\r\n                    ctx.save();\r\n                    ctx.fillStyle = clearColorGradientOrPattern || clearColor;\r\n                    ctx.fillRect(x, y, width, height);\r\n                    ctx.restore();\r\n                }\r\n                if (haveMotionBLur) {\r\n                    ctx.save();\r\n                    ctx.globalAlpha = lastFrameAlpha;\r\n                    ctx.drawImage(domBack, x, y, width, height);\r\n                    ctx.restore();\r\n                }\r\n            }\r\n            if (!repaintRects || haveMotionBLur) {\r\n                doClear(0, 0, width, height);\r\n            }\r\n            else if (repaintRects.length) {\r\n                each(repaintRects, function (rect) {\r\n                    doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\r\n                });\r\n            }\r\n        };\r\n        return Layer;\r\n    }(Eventful));\n\n    var HOVER_LAYER_ZLEVEL = 1e5;\r\n    var CANVAS_ZLEVEL = 314159;\r\n    var EL_AFTER_INCREMENTAL_INC = 0.01;\r\n    var INCREMENTAL_INC = 0.001;\r\n    function parseInt10(val) {\r\n        return parseInt(val, 10);\r\n    }\r\n    function isLayerValid(layer) {\r\n        if (!layer) {\r\n            return false;\r\n        }\r\n        if (layer.__builtin__) {\r\n            return true;\r\n        }\r\n        if (typeof (layer.resize) !== 'function'\r\n            || typeof (layer.refresh) !== 'function') {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function createRoot(width, height) {\r\n        var domRoot = document.createElement('div');\r\n        domRoot.style.cssText = [\r\n            'position:relative',\r\n            'width:' + width + 'px',\r\n            'height:' + height + 'px',\r\n            'padding:0',\r\n            'margin:0',\r\n            'border-width:0'\r\n        ].join(';') + ';';\r\n        return domRoot;\r\n    }\r\n    var CanvasPainter = (function () {\r\n        function CanvasPainter(root, storage, opts, id) {\r\n            this.type = 'canvas';\r\n            this._zlevelList = [];\r\n            this._prevDisplayList = [];\r\n            this._layers = {};\r\n            this._layerConfig = {};\r\n            this._needsManuallyCompositing = false;\r\n            this.type = 'canvas';\r\n            var singleCanvas = !root.nodeName\r\n                || root.nodeName.toUpperCase() === 'CANVAS';\r\n            this._opts = opts = extend({}, opts || {});\r\n            this.dpr = opts.devicePixelRatio || devicePixelRatio;\r\n            this._singleCanvas = singleCanvas;\r\n            this.root = root;\r\n            var rootStyle = root.style;\r\n            if (rootStyle) {\r\n                rootStyle.webkitTapHighlightColor = 'transparent';\r\n                rootStyle.webkitUserSelect = 'none';\r\n                rootStyle.userSelect = 'none';\r\n                rootStyle['-webkit-touch-callout'] = 'none';\r\n                root.innerHTML = '';\r\n            }\r\n            this.storage = storage;\r\n            var zlevelList = this._zlevelList;\r\n            this._prevDisplayList = [];\r\n            var layers = this._layers;\r\n            if (!singleCanvas) {\r\n                this._width = this._getSize(0);\r\n                this._height = this._getSize(1);\r\n                var domRoot = this._domRoot = createRoot(this._width, this._height);\r\n                root.appendChild(domRoot);\r\n            }\r\n            else {\r\n                var rootCanvas = root;\r\n                var width = rootCanvas.width;\r\n                var height = rootCanvas.height;\r\n                if (opts.width != null) {\r\n                    width = opts.width;\r\n                }\r\n                if (opts.height != null) {\r\n                    height = opts.height;\r\n                }\r\n                this.dpr = opts.devicePixelRatio || 1;\r\n                rootCanvas.width = width * this.dpr;\r\n                rootCanvas.height = height * this.dpr;\r\n                this._width = width;\r\n                this._height = height;\r\n                var mainLayer = new Layer(rootCanvas, this, this.dpr);\r\n                mainLayer.__builtin__ = true;\r\n                mainLayer.initContext();\r\n                layers[CANVAS_ZLEVEL] = mainLayer;\r\n                mainLayer.zlevel = CANVAS_ZLEVEL;\r\n                zlevelList.push(CANVAS_ZLEVEL);\r\n                this._domRoot = root;\r\n            }\r\n        }\r\n        CanvasPainter.prototype.getType = function () {\r\n            return 'canvas';\r\n        };\r\n        CanvasPainter.prototype.isSingleCanvas = function () {\r\n            return this._singleCanvas;\r\n        };\r\n        CanvasPainter.prototype.getViewportRoot = function () {\r\n            return this._domRoot;\r\n        };\r\n        CanvasPainter.prototype.getViewportRootOffset = function () {\r\n            var viewportRoot = this.getViewportRoot();\r\n            if (viewportRoot) {\r\n                return {\r\n                    offsetLeft: viewportRoot.offsetLeft || 0,\r\n                    offsetTop: viewportRoot.offsetTop || 0\r\n                };\r\n            }\r\n        };\r\n        CanvasPainter.prototype.refresh = function (paintAll) {\r\n            var list = this.storage.getDisplayList(true);\r\n            var prevList = this._prevDisplayList;\r\n            var zlevelList = this._zlevelList;\r\n            this._redrawId = Math.random();\r\n            this._paintList(list, prevList, paintAll, this._redrawId);\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (!layer.__builtin__ && layer.refresh) {\r\n                    var clearColor = i === 0 ? this._backgroundColor : null;\r\n                    layer.refresh(clearColor);\r\n                }\r\n            }\r\n            if (this._opts.useDirtyRect) {\r\n                this._prevDisplayList = list.slice();\r\n            }\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype.refreshHover = function () {\r\n            this._paintHoverList(this.storage.getDisplayList(false));\r\n        };\r\n        CanvasPainter.prototype._paintHoverList = function (list) {\r\n            var len = list.length;\r\n            var hoverLayer = this._hoverlayer;\r\n            hoverLayer && hoverLayer.clear();\r\n            if (!len) {\r\n                return;\r\n            }\r\n            var scope = {\r\n                inHover: true,\r\n                viewWidth: this._width,\r\n                viewHeight: this._height\r\n            };\r\n            var ctx;\r\n            for (var i = 0; i < len; i++) {\r\n                var el = list[i];\r\n                if (el.__inHover) {\r\n                    if (!hoverLayer) {\r\n                        hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\r\n                    }\r\n                    if (!ctx) {\r\n                        ctx = hoverLayer.ctx;\r\n                        ctx.save();\r\n                    }\r\n                    brush(ctx, el, scope, i === len - 1);\r\n                }\r\n            }\r\n            if (ctx) {\r\n                ctx.restore();\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getHoverLayer = function () {\r\n            return this.getLayer(HOVER_LAYER_ZLEVEL);\r\n        };\r\n        CanvasPainter.prototype.paintOne = function (ctx, el) {\r\n            brushSingle(ctx, el);\r\n        };\r\n        CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\r\n            if (this._redrawId !== redrawId) {\r\n                return;\r\n            }\r\n            paintAll = paintAll || false;\r\n            this._updateLayerStatus(list);\r\n            var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\r\n            if (this._needsManuallyCompositing) {\r\n                this._compositeManually();\r\n            }\r\n            if (needsRefreshHover) {\r\n                this._paintHoverList(list);\r\n            }\r\n            if (!finished) {\r\n                var self_1 = this;\r\n                requestAnimationFrame$1(function () {\r\n                    self_1._paintList(list, prevList, paintAll, redrawId);\r\n                });\r\n            }\r\n            else {\r\n                this.eachLayer(function (layer) {\r\n                    layer.afterBrush && layer.afterBrush();\r\n                });\r\n            }\r\n        };\r\n        CanvasPainter.prototype._compositeManually = function () {\r\n            var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\r\n            var width = this._domRoot.width;\r\n            var height = this._domRoot.height;\r\n            ctx.clearRect(0, 0, width, height);\r\n            this.eachBuiltinLayer(function (layer) {\r\n                if (layer.virtual) {\r\n                    ctx.drawImage(layer.dom, 0, 0, width, height);\r\n                }\r\n            });\r\n        };\r\n        CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\r\n            var _this = this;\r\n            var layerList = [];\r\n            var useDirtyRect = this._opts.useDirtyRect;\r\n            for (var zi = 0; zi < this._zlevelList.length; zi++) {\r\n                var zlevel = this._zlevelList[zi];\r\n                var layer = this._layers[zlevel];\r\n                if (layer.__builtin__\r\n                    && layer !== this._hoverlayer\r\n                    && (layer.__dirty || paintAll)) {\r\n                    layerList.push(layer);\r\n                }\r\n            }\r\n            var finished = true;\r\n            var needsRefreshHover = false;\r\n            var _loop_1 = function (k) {\r\n                var layer = layerList[k];\r\n                var ctx = layer.ctx;\r\n                var repaintRects = useDirtyRect\r\n                    && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\r\n                ctx.save();\r\n                var start = paintAll ? layer.__startIndex : layer.__drawIndex;\r\n                var useTimer = !paintAll && layer.incremental && Date.now;\r\n                var startTime = useTimer && Date.now();\r\n                var clearColor = layer.zlevel === this_1._zlevelList[0]\r\n                    ? this_1._backgroundColor : null;\r\n                if (layer.__startIndex === layer.__endIndex) {\r\n                    layer.clear(false, clearColor, repaintRects);\r\n                }\r\n                else if (start === layer.__startIndex) {\r\n                    var firstEl = list[start];\r\n                    if (!firstEl.incremental || !firstEl.notClear || paintAll) {\r\n                        layer.clear(false, clearColor, repaintRects);\r\n                    }\r\n                }\r\n                if (start === -1) {\r\n                    console.error('For some unknown reason. drawIndex is -1');\r\n                    start = layer.__startIndex;\r\n                }\r\n                var i;\r\n                var repaint = function (repaintRect) {\r\n                    var scope = {\r\n                        inHover: false,\r\n                        allClipped: false,\r\n                        prevEl: null,\r\n                        viewWidth: _this._width,\r\n                        viewHeight: _this._height\r\n                    };\r\n                    for (i = start; i < layer.__endIndex; i++) {\r\n                        var el = list[i];\r\n                        if (el.__inHover) {\r\n                            needsRefreshHover = true;\r\n                        }\r\n                        _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\r\n                        if (useTimer) {\r\n                            var dTime = Date.now() - startTime;\r\n                            if (dTime > 15) {\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (scope.prevElClipPaths) {\r\n                        ctx.restore();\r\n                    }\r\n                };\r\n                if (repaintRects) {\r\n                    if (repaintRects.length === 0) {\r\n                        i = layer.__endIndex;\r\n                    }\r\n                    else {\r\n                        var dpr = this_1.dpr;\r\n                        for (var r = 0; r < repaintRects.length; ++r) {\r\n                            var rect = repaintRects[r];\r\n                            ctx.save();\r\n                            ctx.beginPath();\r\n                            ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\r\n                            ctx.clip();\r\n                            repaint(rect);\r\n                            ctx.restore();\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    ctx.save();\r\n                    repaint();\r\n                    ctx.restore();\r\n                }\r\n                layer.__drawIndex = i;\r\n                if (layer.__drawIndex < layer.__endIndex) {\r\n                    finished = false;\r\n                }\r\n            };\r\n            var this_1 = this;\r\n            for (var k = 0; k < layerList.length; k++) {\r\n                _loop_1(k);\r\n            }\r\n            if (env.wxa) {\r\n                each(this._layers, function (layer) {\r\n                    if (layer && layer.ctx && layer.ctx.draw) {\r\n                        layer.ctx.draw();\r\n                    }\r\n                });\r\n            }\r\n            return {\r\n                finished: finished,\r\n                needsRefreshHover: needsRefreshHover\r\n            };\r\n        };\r\n        CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\r\n            var ctx = currentLayer.ctx;\r\n            if (useDirtyRect) {\r\n                var paintRect = el.getPaintRect();\r\n                if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\r\n                    brush(ctx, el, scope, isLast);\r\n                    el.setPrevPaintRect(paintRect);\r\n                }\r\n            }\r\n            else {\r\n                brush(ctx, el, scope, isLast);\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\r\n            if (this._singleCanvas && !this._needsManuallyCompositing) {\r\n                zlevel = CANVAS_ZLEVEL;\r\n            }\r\n            var layer = this._layers[zlevel];\r\n            if (!layer) {\r\n                layer = new Layer('zr_' + zlevel, this, this.dpr);\r\n                layer.zlevel = zlevel;\r\n                layer.__builtin__ = true;\r\n                if (this._layerConfig[zlevel]) {\r\n                    merge(layer, this._layerConfig[zlevel], true);\r\n                }\r\n                else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\r\n                    merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\r\n                }\r\n                if (virtual) {\r\n                    layer.virtual = virtual;\r\n                }\r\n                this.insertLayer(zlevel, layer);\r\n                layer.initContext();\r\n            }\r\n            return layer;\r\n        };\r\n        CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\r\n            var layersMap = this._layers;\r\n            var zlevelList = this._zlevelList;\r\n            var len = zlevelList.length;\r\n            var domRoot = this._domRoot;\r\n            var prevLayer = null;\r\n            var i = -1;\r\n            if (layersMap[zlevel]) {\r\n                logError('ZLevel ' + zlevel + ' has been used already');\r\n                return;\r\n            }\r\n            if (!isLayerValid(layer)) {\r\n                logError('Layer of zlevel ' + zlevel + ' is not valid');\r\n                return;\r\n            }\r\n            if (len > 0 && zlevel > zlevelList[0]) {\r\n                for (i = 0; i < len - 1; i++) {\r\n                    if (zlevelList[i] < zlevel\r\n                        && zlevelList[i + 1] > zlevel) {\r\n                        break;\r\n                    }\r\n                }\r\n                prevLayer = layersMap[zlevelList[i]];\r\n            }\r\n            zlevelList.splice(i + 1, 0, zlevel);\r\n            layersMap[zlevel] = layer;\r\n            if (!layer.virtual) {\r\n                if (prevLayer) {\r\n                    var prevDom = prevLayer.dom;\r\n                    if (prevDom.nextSibling) {\r\n                        domRoot.insertBefore(layer.dom, prevDom.nextSibling);\r\n                    }\r\n                    else {\r\n                        domRoot.appendChild(layer.dom);\r\n                    }\r\n                }\r\n                else {\r\n                    if (domRoot.firstChild) {\r\n                        domRoot.insertBefore(layer.dom, domRoot.firstChild);\r\n                    }\r\n                    else {\r\n                        domRoot.appendChild(layer.dom);\r\n                    }\r\n                }\r\n            }\r\n            layer.__painter = this;\r\n        };\r\n        CanvasPainter.prototype.eachLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                cb.call(context, this._layers[z], z);\r\n            }\r\n        };\r\n        CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (layer.__builtin__) {\r\n                    cb.call(context, layer, z);\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (!layer.__builtin__) {\r\n                    cb.call(context, layer, z);\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getLayers = function () {\r\n            return this._layers;\r\n        };\r\n        CanvasPainter.prototype._updateLayerStatus = function (list) {\r\n            this.eachBuiltinLayer(function (layer, z) {\r\n                layer.__dirty = layer.__used = false;\r\n            });\r\n            function updatePrevLayer(idx) {\r\n                if (prevLayer) {\r\n                    if (prevLayer.__endIndex !== idx) {\r\n                        prevLayer.__dirty = true;\r\n                    }\r\n                    prevLayer.__endIndex = idx;\r\n                }\r\n            }\r\n            if (this._singleCanvas) {\r\n                for (var i_1 = 1; i_1 < list.length; i_1++) {\r\n                    var el = list[i_1];\r\n                    if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\r\n                        this._needsManuallyCompositing = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            var prevLayer = null;\r\n            var incrementalLayerCount = 0;\r\n            var prevZlevel;\r\n            var i;\r\n            for (i = 0; i < list.length; i++) {\r\n                var el = list[i];\r\n                var zlevel = el.zlevel;\r\n                var layer = void 0;\r\n                if (prevZlevel !== zlevel) {\r\n                    prevZlevel = zlevel;\r\n                    incrementalLayerCount = 0;\r\n                }\r\n                if (el.incremental) {\r\n                    layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\r\n                    layer.incremental = true;\r\n                    incrementalLayerCount = 1;\r\n                }\r\n                else {\r\n                    layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\r\n                }\r\n                if (!layer.__builtin__) {\r\n                    logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\r\n                }\r\n                if (layer !== prevLayer) {\r\n                    layer.__used = true;\r\n                    if (layer.__startIndex !== i) {\r\n                        layer.__dirty = true;\r\n                    }\r\n                    layer.__startIndex = i;\r\n                    if (!layer.incremental) {\r\n                        layer.__drawIndex = i;\r\n                    }\r\n                    else {\r\n                        layer.__drawIndex = -1;\r\n                    }\r\n                    updatePrevLayer(i);\r\n                    prevLayer = layer;\r\n                }\r\n                if ((el.__dirty & Element.REDARAW_BIT) && !el.__inHover) {\r\n                    layer.__dirty = true;\r\n                    if (layer.incremental && layer.__drawIndex < 0) {\r\n                        layer.__drawIndex = i;\r\n                    }\r\n                }\r\n            }\r\n            updatePrevLayer(i);\r\n            this.eachBuiltinLayer(function (layer, z) {\r\n                if (!layer.__used && layer.getElementCount() > 0) {\r\n                    layer.__dirty = true;\r\n                    layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\r\n                }\r\n                if (layer.__dirty && layer.__drawIndex < 0) {\r\n                    layer.__drawIndex = layer.__startIndex;\r\n                }\r\n            });\r\n        };\r\n        CanvasPainter.prototype.clear = function () {\r\n            this.eachBuiltinLayer(this._clearLayer);\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype._clearLayer = function (layer) {\r\n            layer.clear();\r\n        };\r\n        CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\r\n            this._backgroundColor = backgroundColor;\r\n            each(this._layers, function (layer) {\r\n                layer.setUnpainted();\r\n            });\r\n        };\r\n        CanvasPainter.prototype.configLayer = function (zlevel, config) {\r\n            if (config) {\r\n                var layerConfig = this._layerConfig;\r\n                if (!layerConfig[zlevel]) {\r\n                    layerConfig[zlevel] = config;\r\n                }\r\n                else {\r\n                    merge(layerConfig[zlevel], config, true);\r\n                }\r\n                for (var i = 0; i < this._zlevelList.length; i++) {\r\n                    var _zlevel = this._zlevelList[i];\r\n                    if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\r\n                        var layer = this._layers[_zlevel];\r\n                        merge(layer, layerConfig[zlevel], true);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.delLayer = function (zlevel) {\r\n            var layers = this._layers;\r\n            var zlevelList = this._zlevelList;\r\n            var layer = layers[zlevel];\r\n            if (!layer) {\r\n                return;\r\n            }\r\n            layer.dom.parentNode.removeChild(layer.dom);\r\n            delete layers[zlevel];\r\n            zlevelList.splice(indexOf(zlevelList, zlevel), 1);\r\n        };\r\n        CanvasPainter.prototype.resize = function (width, height) {\r\n            if (!this._domRoot.style) {\r\n                if (width == null || height == null) {\r\n                    return;\r\n                }\r\n                this._width = width;\r\n                this._height = height;\r\n                this.getLayer(CANVAS_ZLEVEL).resize(width, height);\r\n            }\r\n            else {\r\n                var domRoot = this._domRoot;\r\n                domRoot.style.display = 'none';\r\n                var opts = this._opts;\r\n                width != null && (opts.width = width);\r\n                height != null && (opts.height = height);\r\n                width = this._getSize(0);\r\n                height = this._getSize(1);\r\n                domRoot.style.display = '';\r\n                if (this._width !== width || height !== this._height) {\r\n                    domRoot.style.width = width + 'px';\r\n                    domRoot.style.height = height + 'px';\r\n                    for (var id in this._layers) {\r\n                        if (this._layers.hasOwnProperty(id)) {\r\n                            this._layers[id].resize(width, height);\r\n                        }\r\n                    }\r\n                    this.refresh(true);\r\n                }\r\n                this._width = width;\r\n                this._height = height;\r\n            }\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype.clearLayer = function (zlevel) {\r\n            var layer = this._layers[zlevel];\r\n            if (layer) {\r\n                layer.clear();\r\n            }\r\n        };\r\n        CanvasPainter.prototype.dispose = function () {\r\n            this.root.innerHTML = '';\r\n            this.root =\r\n                this.storage =\r\n                    this._domRoot =\r\n                        this._layers = null;\r\n        };\r\n        CanvasPainter.prototype.getRenderedCanvas = function (opts) {\r\n            opts = opts || {};\r\n            if (this._singleCanvas && !this._compositeManually) {\r\n                return this._layers[CANVAS_ZLEVEL].dom;\r\n            }\r\n            var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\r\n            var ctx = imageLayer.ctx;\r\n            imageLayer.initContext();\r\n            imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\r\n            if (opts.pixelRatio <= this.dpr) {\r\n                this.refresh();\r\n                var width_1 = imageLayer.dom.width;\r\n                var height_1 = imageLayer.dom.height;\r\n                var ctx_1 = imageLayer.ctx;\r\n                this.eachLayer(function (layer) {\r\n                    if (layer.__builtin__) {\r\n                        ctx_1.drawImage(layer.dom, 0, 0, width_1, height_1);\r\n                    }\r\n                    else if (layer.renderToCanvas) {\r\n                        imageLayer.ctx.save();\r\n                        layer.renderToCanvas(imageLayer.ctx);\r\n                        imageLayer.ctx.restore();\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                var scope = {\r\n                    inHover: false,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                };\r\n                var displayList = this.storage.getDisplayList(true);\r\n                for (var i = 0, len = displayList.length; i < len; i++) {\r\n                    var el = displayList[i];\r\n                    brush(ctx, el, scope, i === len - 1);\r\n                }\r\n            }\r\n            return imageLayer.dom;\r\n        };\r\n        CanvasPainter.prototype.getWidth = function () {\r\n            return this._width;\r\n        };\r\n        CanvasPainter.prototype.getHeight = function () {\r\n            return this._height;\r\n        };\r\n        CanvasPainter.prototype._getSize = function (whIdx) {\r\n            var opts = this._opts;\r\n            var wh = ['width', 'height'][whIdx];\r\n            var cwh = ['clientWidth', 'clientHeight'][whIdx];\r\n            var plt = ['paddingLeft', 'paddingTop'][whIdx];\r\n            var prb = ['paddingRight', 'paddingBottom'][whIdx];\r\n            if (opts[wh] != null && opts[wh] !== 'auto') {\r\n                return parseFloat(opts[wh]);\r\n            }\r\n            var root = this.root;\r\n            var stl = document.defaultView.getComputedStyle(root);\r\n            return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\r\n                - (parseInt10(stl[plt]) || 0)\r\n                - (parseInt10(stl[prb]) || 0)) | 0;\r\n        };\r\n        CanvasPainter.prototype.pathToImage = function (path, dpr) {\r\n            dpr = dpr || this.dpr;\r\n            var canvas = document.createElement('canvas');\r\n            var ctx = canvas.getContext('2d');\r\n            var rect = path.getBoundingRect();\r\n            var style = path.style;\r\n            var shadowBlurSize = style.shadowBlur * dpr;\r\n            var shadowOffsetX = style.shadowOffsetX * dpr;\r\n            var shadowOffsetY = style.shadowOffsetY * dpr;\r\n            var lineWidth = path.hasStroke() ? style.lineWidth : 0;\r\n            var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\r\n            var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\r\n            var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\r\n            var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\r\n            var width = rect.width + leftMargin + rightMargin;\r\n            var height = rect.height + topMargin + bottomMargin;\r\n            canvas.width = width * dpr;\r\n            canvas.height = height * dpr;\r\n            ctx.scale(dpr, dpr);\r\n            ctx.clearRect(0, 0, width, height);\r\n            ctx.dpr = dpr;\r\n            var pathTransform = {\r\n                x: path.x,\r\n                y: path.y,\r\n                scaleX: path.scaleX,\r\n                scaleY: path.scaleY,\r\n                rotation: path.rotation,\r\n                originX: path.originX,\r\n                originY: path.originY\r\n            };\r\n            path.x = leftMargin - rect.x;\r\n            path.y = topMargin - rect.y;\r\n            path.rotation = 0;\r\n            path.scaleX = 1;\r\n            path.scaleY = 1;\r\n            path.updateTransform();\r\n            if (path) {\r\n                brush(ctx, path, {\r\n                    inHover: false,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                }, true);\r\n            }\r\n            var imgShape = new ZRImage({\r\n                style: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    image: canvas\r\n                }\r\n            });\r\n            extend(path, pathTransform);\r\n            return imgShape;\r\n        };\r\n        return CanvasPainter;\r\n    }());\n\n    registerPainter('canvas', CanvasPainter);\n\n    function findEventDispatcher(target, det, returnFirstMatch) {\r\n        var found;\r\n        while (target) {\r\n            if (det(target)) {\r\n                found = target;\r\n                if (returnFirstMatch) {\r\n                    break;\r\n                }\r\n            }\r\n            target = target.__hostTarget || target.parent;\r\n        }\r\n        return found;\r\n    }\n\n    var wmUniqueIndex = Math.round(Math.random() * 9);\r\n    var WeakMap = (function () {\r\n        function WeakMap() {\r\n            this._id = '__ec_inner_' + wmUniqueIndex++;\r\n        }\r\n        WeakMap.prototype.get = function (key) {\r\n            return this._guard(key)[this._id];\r\n        };\r\n        WeakMap.prototype.set = function (key, value) {\r\n            var target = this._guard(key);\r\n            if (typeof Object.defineProperty === 'function') {\r\n                Object.defineProperty(target, this._id, {\r\n                    value: value,\r\n                    enumerable: false,\r\n                    configurable: true\r\n                });\r\n            }\r\n            else {\r\n                target[this._id] = value;\r\n            }\r\n            return this;\r\n        };\r\n        WeakMap.prototype[\"delete\"] = function (key) {\r\n            if (this.has(key)) {\r\n                delete this._guard(key)[this._id];\r\n                return true;\r\n            }\r\n            return false;\r\n        };\r\n        WeakMap.prototype.has = function (key) {\r\n            return !!this._guard(key)[this._id];\r\n        };\r\n        WeakMap.prototype._guard = function (key) {\r\n            if (key !== Object(key)) {\r\n                throw TypeError('Value of WeakMap is not a non-null object.');\r\n            }\r\n            return key;\r\n        };\r\n        return WeakMap;\r\n    }());\n\n    var Triangle = Path.extend({\r\n        type: 'triangle',\r\n        shape: {\r\n            cx: 0,\r\n            cy: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var cx = shape.cx;\r\n            var cy = shape.cy;\r\n            var width = shape.width / 2;\r\n            var height = shape.height / 2;\r\n            path.moveTo(cx, cy - height);\r\n            path.lineTo(cx + width, cy + height);\r\n            path.lineTo(cx - width, cy + height);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Diamond = Path.extend({\r\n        type: 'diamond',\r\n        shape: {\r\n            cx: 0,\r\n            cy: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var cx = shape.cx;\r\n            var cy = shape.cy;\r\n            var width = shape.width / 2;\r\n            var height = shape.height / 2;\r\n            path.moveTo(cx, cy - height);\r\n            path.lineTo(cx + width, cy);\r\n            path.lineTo(cx, cy + height);\r\n            path.lineTo(cx - width, cy);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Pin = Path.extend({\r\n        type: 'pin',\r\n        shape: {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var w = shape.width / 5 * 3;\r\n            var h = Math.max(w, shape.height);\r\n            var r = w / 2;\r\n            var dy = r * r / (h - r);\r\n            var cy = y - h + r + dy;\r\n            var angle = Math.asin(dy / r);\r\n            var dx = Math.cos(angle) * r;\r\n            var tanX = Math.sin(angle);\r\n            var tanY = Math.cos(angle);\r\n            var cpLen = r * 0.6;\r\n            var cpLen2 = r * 0.7;\r\n            path.moveTo(x - dx, cy + dy);\r\n            path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\r\n            path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\r\n            path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Arrow = Path.extend({\r\n        type: 'arrow',\r\n        shape: {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (ctx, shape) {\r\n            var height = shape.height;\r\n            var width = shape.width;\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var dx = width / 3 * 2;\r\n            ctx.moveTo(x, y);\r\n            ctx.lineTo(x + dx, y + height);\r\n            ctx.lineTo(x, y + height / 4 * 3);\r\n            ctx.lineTo(x - dx, y + height);\r\n            ctx.lineTo(x, y);\r\n            ctx.closePath();\r\n        }\r\n    });\r\n    var symbolCtors = {\r\n        line: Rect,\r\n        rect: Rect,\r\n        roundRect: Rect,\r\n        square: Rect,\r\n        circle: Circle,\r\n        diamond: Diamond,\r\n        pin: Pin,\r\n        arrow: Arrow,\r\n        triangle: Triangle\r\n    };\r\n    var symbolShapeMakers = {\r\n        line: function (x, y, w, h, shape) {\r\n            var thickness = 2;\r\n            shape.x = x;\r\n            shape.y = y + h / 2 - thickness / 2;\r\n            shape.width = w;\r\n            shape.height = thickness;\r\n        },\r\n        rect: function (x, y, w, h, shape) {\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        roundRect: function (x, y, w, h, shape) {\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = w;\r\n            shape.height = h;\r\n            shape.r = Math.min(w, h) / 4;\r\n        },\r\n        square: function (x, y, w, h, shape) {\r\n            var size = Math.min(w, h);\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = size;\r\n            shape.height = size;\r\n        },\r\n        circle: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.r = Math.min(w, h) / 2;\r\n        },\r\n        diamond: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        pin: function (x, y, w, h, shape) {\r\n            shape.x = x + w / 2;\r\n            shape.y = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        arrow: function (x, y, w, h, shape) {\r\n            shape.x = x + w / 2;\r\n            shape.y = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        triangle: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        }\r\n    };\r\n    var symbolBuildProxies = {};\r\n    each(symbolCtors, function (Ctor, name) {\r\n        symbolBuildProxies[name] = new Ctor();\r\n    });\r\n    var SymbolClz = Path.extend({\r\n        type: 'symbol',\r\n        shape: {\r\n            symbolType: '',\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        calculateTextPosition: function (out, config, rect) {\r\n            var res = calculateTextPosition(out, config, rect);\r\n            var shape = this.shape;\r\n            if (shape && shape.symbolType === 'pin' && config.position === 'inside') {\r\n                res.y = rect.y + rect.height * 0.4;\r\n            }\r\n            return res;\r\n        },\r\n        buildPath: function (ctx, shape, inBundle) {\r\n            var symbolType = shape.symbolType;\r\n            if (symbolType !== 'none') {\r\n                var proxySymbol = symbolBuildProxies[symbolType];\r\n                if (!proxySymbol) {\r\n                    symbolType = 'rect';\r\n                    proxySymbol = symbolBuildProxies[symbolType];\r\n                }\r\n                symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\r\n                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\r\n            }\r\n        }\r\n    });\r\n    function symbolPathSetColor(color, innerColor) {\r\n        if (this.type !== 'image') {\r\n            var symbolStyle = this.style;\r\n            if (this.__isEmptyBrush) {\r\n                symbolStyle.stroke = color;\r\n                symbolStyle.fill = innerColor || '#fff';\r\n                symbolStyle.lineWidth = 2;\r\n            }\r\n            else {\r\n                symbolStyle.fill = color;\r\n            }\r\n            this.markRedraw();\r\n        }\r\n    }\r\n    function createSymbol(symbolType, x, y, w, h, color, keepAspect) {\r\n        var isEmpty = symbolType.indexOf('empty') === 0;\r\n        if (isEmpty) {\r\n            symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\r\n        }\r\n        var symbolPath;\r\n        if (symbolType.indexOf('image://') === 0) {\r\n            symbolPath = makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n        }\r\n        else if (symbolType.indexOf('path://') === 0) {\r\n            symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n        }\r\n        else {\r\n            symbolPath = new SymbolClz({\r\n                shape: {\r\n                    symbolType: symbolType,\r\n                    x: x,\r\n                    y: y,\r\n                    width: w,\r\n                    height: h\r\n                }\r\n            });\r\n        }\r\n        symbolPath.__isEmptyBrush = isEmpty;\r\n        symbolPath.setColor = symbolPathSetColor;\r\n        if (color) {\r\n            symbolPath.setColor(color);\r\n        }\r\n        return symbolPath;\r\n    }\n\n    var decalMap = new WeakMap();\r\n    var decalCache = new LRU(100);\r\n    var decalKeys = [\r\n        'symbol', 'symbolSize', 'symbolKeepAspect',\r\n        'color', 'backgroundColor',\r\n        'dashArrayX', 'dashArrayY', 'dashLineOffset',\r\n        'maxTileWidth', 'maxTileHeight'\r\n    ];\r\n    function createOrUpdatePatternFromDecal(decalObject, api) {\r\n        if (decalObject === 'none') {\r\n            return null;\r\n        }\r\n        var dpr = api.getDevicePixelRatio();\r\n        var zr = api.getZr();\r\n        var isSVG = zr.painter.type === 'svg';\r\n        if (decalObject.dirty) {\r\n            decalMap[\"delete\"](decalObject);\r\n        }\r\n        var oldPattern = decalMap.get(decalObject);\r\n        if (oldPattern) {\r\n            return oldPattern;\r\n        }\r\n        var decalOpt = defaults(decalObject, {\r\n            symbol: 'rect',\r\n            symbolSize: 1,\r\n            symbolKeepAspect: true,\r\n            color: 'rgba(0, 0, 0, 0.2)',\r\n            backgroundColor: null,\r\n            dashArrayX: 5,\r\n            dashArrayY: 5,\r\n            dashLineOffset: 0,\r\n            rotation: 0,\r\n            maxTileWidth: 512,\r\n            maxTileHeight: 512\r\n        });\r\n        if (decalOpt.backgroundColor === 'none') {\r\n            decalOpt.backgroundColor = null;\r\n        }\r\n        var pattern = { repeat: 'repeat' };\r\n        setPatternnSource(pattern);\r\n        pattern.rotation = decalOpt.rotation;\r\n        pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr;\r\n        decalMap.set(decalObject, pattern);\r\n        decalObject.dirty = false;\r\n        return pattern;\r\n        function setPatternnSource(pattern) {\r\n            var keys = [dpr];\r\n            var isValidKey = true;\r\n            for (var i = 0; i < decalKeys.length; ++i) {\r\n                var value = decalOpt[decalKeys[i]];\r\n                var valueType = typeof value;\r\n                if (value != null\r\n                    && !isArray(value)\r\n                    && valueType !== 'string'\r\n                    && valueType !== 'number'\r\n                    && valueType !== 'boolean') {\r\n                    isValidKey = false;\r\n                    break;\r\n                }\r\n                keys.push(value);\r\n            }\r\n            var cacheKey;\r\n            if (isValidKey) {\r\n                cacheKey = keys.join(',') + (isSVG ? '-svg' : '');\r\n                var cache = decalCache.get(cacheKey);\r\n                if (cache) {\r\n                    isSVG ? pattern.svgElement = cache\r\n                        : pattern.image = cache;\r\n                }\r\n            }\r\n            var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);\r\n            var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);\r\n            var symbolArray = normalizeSymbolArray(decalOpt.symbol);\r\n            var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);\r\n            var lineBlockLengthY = getLineBlockLengthY(dashArrayY);\r\n            var canvas = !isSVG && createCanvas();\r\n            var svgRoot = isSVG && zr.painter.createSVGElement('g');\r\n            var pSize = getPatternSize();\r\n            var ctx;\r\n            if (canvas) {\r\n                canvas.width = pSize.width * dpr;\r\n                canvas.height = pSize.height * dpr;\r\n                ctx = canvas.getContext('2d');\r\n            }\r\n            brushDecal();\r\n            if (isValidKey) {\r\n                decalCache.put(cacheKey, canvas || svgRoot);\r\n            }\r\n            pattern.image = canvas;\r\n            pattern.svgElement = svgRoot;\r\n            pattern.svgWidth = pSize.width;\r\n            pattern.svgHeight = pSize.height;\r\n            function getPatternSize() {\r\n                var width = 1;\r\n                for (var i = 0, xlen = lineBlockLengthsX.length; i < xlen; ++i) {\r\n                    width = getLeastCommonMultiple(width, lineBlockLengthsX[i]);\r\n                }\r\n                var symbolRepeats = 1;\r\n                for (var i = 0, xlen = symbolArray.length; i < xlen; ++i) {\r\n                    symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i].length);\r\n                }\r\n                width *= symbolRepeats;\r\n                var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;\r\n                if (__DEV__) {\r\n                    var warn = function (attrName) {\r\n                        console.warn(\"Calculated decal size is greater than \" + attrName + \" due to decal option settings so \" + attrName + \" is used for the decal size. Please consider changing the decal option to make a smaller decal or set \" + attrName + \" to be larger to avoid incontinuity.\");\r\n                    };\r\n                    if (width > decalOpt.maxTileWidth) {\r\n                        warn('maxTileWidth');\r\n                    }\r\n                    if (height > decalOpt.maxTileHeight) {\r\n                        warn('maxTileHeight');\r\n                    }\r\n                }\r\n                return {\r\n                    width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),\r\n                    height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))\r\n                };\r\n            }\r\n            function brushDecal() {\r\n                if (ctx) {\r\n                    ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n                    if (decalOpt.backgroundColor) {\r\n                        ctx.fillStyle = decalOpt.backgroundColor;\r\n                        ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n                    }\r\n                }\r\n                var ySum = 0;\r\n                for (var i = 0; i < dashArrayY.length; ++i) {\r\n                    ySum += dashArrayY[i];\r\n                }\r\n                if (ySum <= 0) {\r\n                    return;\r\n                }\r\n                var y = -lineBlockLengthY;\r\n                var yId = 0;\r\n                var yIdTotal = 0;\r\n                var xId0 = 0;\r\n                while (y < pSize.height) {\r\n                    if (yId % 2 === 0) {\r\n                        var symbolYId = (yIdTotal / 2) % symbolArray.length;\r\n                        var x = 0;\r\n                        var xId1 = 0;\r\n                        var xId1Total = 0;\r\n                        while (x < pSize.width * 2) {\r\n                            var xSum = 0;\r\n                            for (var i = 0; i < dashArrayX[xId0].length; ++i) {\r\n                                xSum += dashArrayX[xId0][i];\r\n                            }\r\n                            if (xSum <= 0) {\r\n                                break;\r\n                            }\r\n                            if (xId1 % 2 === 0) {\r\n                                var size = (1 - decalOpt.symbolSize) * 0.5;\r\n                                var left = x + dashArrayX[xId0][xId1] * size;\r\n                                var top_1 = y + dashArrayY[yId] * size;\r\n                                var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;\r\n                                var height = dashArrayY[yId] * decalOpt.symbolSize;\r\n                                var symbolXId = (xId1Total / 2) % symbolArray[symbolYId].length;\r\n                                brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);\r\n                            }\r\n                            x += dashArrayX[xId0][xId1];\r\n                            ++xId1Total;\r\n                            ++xId1;\r\n                            if (xId1 === dashArrayX[xId0].length) {\r\n                                xId1 = 0;\r\n                            }\r\n                        }\r\n                        ++xId0;\r\n                        if (xId0 === dashArrayX.length) {\r\n                            xId0 = 0;\r\n                        }\r\n                    }\r\n                    y += dashArrayY[yId];\r\n                    ++yIdTotal;\r\n                    ++yId;\r\n                    if (yId === dashArrayY.length) {\r\n                        yId = 0;\r\n                    }\r\n                }\r\n                function brushSymbol(x, y, width, height, symbolType) {\r\n                    var scale = isSVG ? 1 : dpr;\r\n                    var symbol = createSymbol(symbolType, x * scale, y * scale, width * scale, height * scale, decalOpt.color, decalOpt.symbolKeepAspect);\r\n                    if (isSVG) {\r\n                        svgRoot.appendChild(zr.painter.paintOne(symbol));\r\n                    }\r\n                    else {\r\n                        brushSingle(ctx, symbol);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function normalizeSymbolArray(symbol) {\r\n        if (!symbol || symbol.length === 0) {\r\n            return [['rect']];\r\n        }\r\n        if (typeof symbol === 'string') {\r\n            return [[symbol]];\r\n        }\r\n        var isAllString = true;\r\n        for (var i = 0; i < symbol.length; ++i) {\r\n            if (typeof symbol[i] !== 'string') {\r\n                isAllString = false;\r\n                break;\r\n            }\r\n        }\r\n        if (isAllString) {\r\n            return normalizeSymbolArray([symbol]);\r\n        }\r\n        var result = [];\r\n        for (var i = 0; i < symbol.length; ++i) {\r\n            if (typeof symbol[i] === 'string') {\r\n                result.push([symbol[i]]);\r\n            }\r\n            else {\r\n                result.push(symbol[i]);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function normalizeDashArrayX(dash) {\r\n        if (!dash || dash.length === 0) {\r\n            return [[0, 0]];\r\n        }\r\n        if (typeof dash === 'number') {\r\n            var dashValue = Math.ceil(dash);\r\n            return [[dashValue, dashValue]];\r\n        }\r\n        var isAllNumber = true;\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            if (typeof dash[i] !== 'number') {\r\n                isAllNumber = false;\r\n                break;\r\n            }\r\n        }\r\n        if (isAllNumber) {\r\n            return normalizeDashArrayX([dash]);\r\n        }\r\n        var result = [];\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            if (typeof dash[i] === 'number') {\r\n                var dashValue = Math.ceil(dash[i]);\r\n                result.push([dashValue, dashValue]);\r\n            }\r\n            else {\r\n                var dashValue = map(dash[i], function (n) { return Math.ceil(n); });\r\n                if (dashValue.length % 2 === 1) {\r\n                    result.push(dashValue.concat(dashValue));\r\n                }\r\n                else {\r\n                    result.push(dashValue);\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function normalizeDashArrayY(dash) {\r\n        if (!dash || typeof dash === 'object' && dash.length === 0) {\r\n            return [0, 0];\r\n        }\r\n        if (typeof dash === 'number') {\r\n            var dashValue_1 = Math.ceil(dash);\r\n            return [dashValue_1, dashValue_1];\r\n        }\r\n        var dashValue = map(dash, function (n) { return Math.ceil(n); });\r\n        return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;\r\n    }\r\n    function getLineBlockLengthX(dash) {\r\n        return map(dash, function (line) {\r\n            return getLineBlockLengthY(line);\r\n        });\r\n    }\r\n    function getLineBlockLengthY(dash) {\r\n        var blockLength = 0;\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            blockLength += dash[i];\r\n        }\r\n        if (dash.length % 2 === 1) {\r\n            return blockLength * 2;\r\n        }\r\n        return blockLength;\r\n    }\n\n    function decalVisual(ecModel, api) {\r\n        ecModel.eachRawSeries(function (seriesModel) {\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            if (data.hasItemVisual()) {\r\n                data.each(function (idx) {\r\n                    var decal = data.getItemVisual(idx, 'decal');\r\n                    if (decal) {\r\n                        var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        itemStyle.decal = createOrUpdatePatternFromDecal(decal, api);\r\n                    }\r\n                });\r\n            }\r\n            var decal = data.getVisual('decal');\r\n            if (decal) {\r\n                var style = data.getVisual('style');\r\n                style.decal = createOrUpdatePatternFromDecal(decal, api);\r\n            }\r\n        });\r\n    }\n\n    var assert$1 = assert;\r\n    var each$3 = each;\r\n    var isFunction$1 = isFunction;\r\n    var isObject$2 = isObject;\r\n    var version$1 = '5.0.0';\r\n    var dependencies = {\r\n        zrender: '5.0.1'\r\n    };\r\n    var TEST_FRAME_REMAIN_TIME = 1;\r\n    var PRIORITY_PROCESSOR_SERIES_FILTER = 800;\r\n    var PRIORITY_PROCESSOR_DATASTACK = 900;\r\n    var PRIORITY_PROCESSOR_FILTER = 1000;\r\n    var PRIORITY_PROCESSOR_DEFAULT = 2000;\r\n    var PRIORITY_PROCESSOR_STATISTIC = 5000;\r\n    var PRIORITY_VISUAL_LAYOUT = 1000;\r\n    var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\r\n    var PRIORITY_VISUAL_GLOBAL = 2000;\r\n    var PRIORITY_VISUAL_CHART = 3000;\r\n    var PRIORITY_VISUAL_COMPONENT = 4000;\r\n    var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500;\r\n    var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;\r\n    var PRIORITY_VISUAL_BRUSH = 5000;\r\n    var PRIORITY_VISUAL_ARIA = 6000;\r\n    var PRIORITY_VISUAL_DECAL = 7000;\r\n    var PRIORITY = {\r\n        PROCESSOR: {\r\n            FILTER: PRIORITY_PROCESSOR_FILTER,\r\n            SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\r\n            STATISTIC: PRIORITY_PROCESSOR_STATISTIC\r\n        },\r\n        VISUAL: {\r\n            LAYOUT: PRIORITY_VISUAL_LAYOUT,\r\n            PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\r\n            GLOBAL: PRIORITY_VISUAL_GLOBAL,\r\n            CHART: PRIORITY_VISUAL_CHART,\r\n            POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\r\n            COMPONENT: PRIORITY_VISUAL_COMPONENT,\r\n            BRUSH: PRIORITY_VISUAL_BRUSH,\r\n            CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,\r\n            ARIA: PRIORITY_VISUAL_ARIA,\r\n            DECAL: PRIORITY_VISUAL_DECAL\r\n        }\r\n    };\r\n    var IN_MAIN_PROCESS_KEY = '__flagInMainProcess';\r\n    var OPTION_UPDATED_KEY = '__optionUpdated';\r\n    var STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\r\n    var ACTION_REG = /^[a-zA-Z0-9_]+$/;\r\n    var CONNECT_STATUS_KEY = '__connectUpdateStatus';\r\n    var CONNECT_STATUS_PENDING = 0;\r\n    var CONNECT_STATUS_UPDATING = 1;\r\n    var CONNECT_STATUS_UPDATED = 2;\r\n    function createRegisterEventWithLowercaseECharts(method) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            if (this.isDisposed()) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            return toLowercaseNameAndCallEventful(this, method, args);\r\n        };\r\n    }\r\n    function createRegisterEventWithLowercaseMessageCenter(method) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            return toLowercaseNameAndCallEventful(this, method, args);\r\n        };\r\n    }\r\n    function toLowercaseNameAndCallEventful(host, method, args) {\r\n        args[0] = args[0] && args[0].toLowerCase();\r\n        return Eventful.prototype[method].apply(host, args);\r\n    }\r\n    var MessageCenter = (function (_super) {\r\n        __extends(MessageCenter, _super);\r\n        function MessageCenter() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return MessageCenter;\r\n    }(Eventful));\r\n    var messageCenterProto = MessageCenter.prototype;\r\n    messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\r\n    messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off');\r\n    var prepare;\r\n    var prepareView;\r\n    var updateDirectly;\r\n    var updateMethods;\r\n    var doConvertPixel;\r\n    var updateStreamModes;\r\n    var doDispatchAction;\r\n    var flushPendingActions;\r\n    var triggerUpdatedEvent;\r\n    var bindRenderedEvent;\r\n    var bindMouseEvent;\r\n    var clearColorPalette;\r\n    var render;\r\n    var renderComponents;\r\n    var renderSeries;\r\n    var performPostUpdateFuncs;\r\n    var createExtensionAPI;\r\n    var enableConnect;\r\n    var setTransitionOpt;\r\n    var markStatusToUpdate;\r\n    var applyChangedStates;\r\n    var ECharts = (function (_super) {\r\n        __extends(ECharts, _super);\r\n        function ECharts(dom, theme, opts) {\r\n            var _this = _super.call(this, new ECEventProcessor()) || this;\r\n            _this._chartsViews = [];\r\n            _this._chartsMap = {};\r\n            _this._componentsViews = [];\r\n            _this._componentsMap = {};\r\n            _this._pendingActions = [];\r\n            opts = opts || {};\r\n            if (typeof theme === 'string') {\r\n                theme = themeStorage[theme];\r\n            }\r\n            _this._dom = dom;\r\n            var root = (typeof window === 'undefined' ? global : window);\r\n            var defaultRenderer = 'canvas';\r\n            var defaultUseDirtyRect = false;\r\n            if (__DEV__) {\r\n                defaultRenderer = root.__ECHARTS__DEFAULT__RENDERER__ || defaultRenderer;\r\n                var devUseDirtyRect = root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__;\r\n                defaultUseDirtyRect = devUseDirtyRect == null\r\n                    ? defaultUseDirtyRect\r\n                    : devUseDirtyRect;\r\n            }\r\n            var zr = _this._zr = init(dom, {\r\n                renderer: opts.renderer || defaultRenderer,\r\n                devicePixelRatio: opts.devicePixelRatio,\r\n                width: opts.width,\r\n                height: opts.height,\r\n                useDirtyRect: opts.useDirtyRect == null ? defaultUseDirtyRect : opts.useDirtyRect\r\n            });\r\n            _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);\r\n            theme = clone(theme);\r\n            theme && globalBackwardCompat(theme, true);\r\n            _this._theme = theme;\r\n            _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);\r\n            _this._coordSysMgr = new CoordinateSystemManager();\r\n            var api = _this._api = createExtensionAPI(_this);\r\n            function prioritySortFunc(a, b) {\r\n                return a.__prio - b.__prio;\r\n            }\r\n            sort(visualFuncs, prioritySortFunc);\r\n            sort(dataProcessorFuncs, prioritySortFunc);\r\n            _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);\r\n            _this._messageCenter = new MessageCenter();\r\n            _this._labelManager = new LabelManager();\r\n            _this._initEvents();\r\n            _this.resize = bind(_this.resize, _this);\r\n            zr.animation.on('frame', _this._onframe, _this);\r\n            bindRenderedEvent(zr, _this);\r\n            bindMouseEvent(zr, _this);\r\n            setAsPrimitive(_this);\r\n            return _this;\r\n        }\r\n        ECharts.prototype._onframe = function () {\r\n            if (this._disposed) {\r\n                return;\r\n            }\r\n            applyChangedStates(this);\r\n            var scheduler = this._scheduler;\r\n            if (this[OPTION_UPDATED_KEY]) {\r\n                var silent = this[OPTION_UPDATED_KEY].silent;\r\n                this[IN_MAIN_PROCESS_KEY] = true;\r\n                prepare(this);\r\n                updateMethods.update.call(this);\r\n                this._zr.flush();\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                this[OPTION_UPDATED_KEY] = false;\r\n                flushPendingActions.call(this, silent);\r\n                triggerUpdatedEvent.call(this, silent);\r\n            }\r\n            else if (scheduler.unfinished) {\r\n                var remainTime = TEST_FRAME_REMAIN_TIME;\r\n                var ecModel = this._model;\r\n                var api = this._api;\r\n                scheduler.unfinished = false;\r\n                do {\r\n                    var startTime = +new Date();\r\n                    scheduler.performSeriesTasks(ecModel);\r\n                    scheduler.performDataProcessorTasks(ecModel);\r\n                    updateStreamModes(this, ecModel);\r\n                    scheduler.performVisualTasks(ecModel);\r\n                    renderSeries(this, this._model, api, 'remain');\r\n                    remainTime -= (+new Date() - startTime);\r\n                } while (remainTime > 0 && scheduler.unfinished);\r\n                if (!scheduler.unfinished) {\r\n                    this._zr.flush();\r\n                }\r\n            }\r\n        };\r\n        ECharts.prototype.getDom = function () {\r\n            return this._dom;\r\n        };\r\n        ECharts.prototype.getId = function () {\r\n            return this.id;\r\n        };\r\n        ECharts.prototype.getZr = function () {\r\n            return this._zr;\r\n        };\r\n        ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) {\r\n            if (__DEV__) {\r\n                assert$1(!this[IN_MAIN_PROCESS_KEY], '`setOption` should not be called during main process.');\r\n            }\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var silent;\r\n            var replaceMerge;\r\n            var transitionOpt;\r\n            if (isObject$2(notMerge)) {\r\n                lazyUpdate = notMerge.lazyUpdate;\r\n                silent = notMerge.silent;\r\n                replaceMerge = notMerge.replaceMerge;\r\n                transitionOpt = notMerge.transition;\r\n                notMerge = notMerge.notMerge;\r\n            }\r\n            this[IN_MAIN_PROCESS_KEY] = true;\r\n            if (!this._model || notMerge) {\r\n                var optionManager = new OptionManager(this._api);\r\n                var theme = this._theme;\r\n                var ecModel = this._model = new GlobalModel();\r\n                ecModel.scheduler = this._scheduler;\r\n                ecModel.init(null, null, null, theme, this._locale, optionManager);\r\n            }\r\n            this._model.setOption(option, { replaceMerge: replaceMerge }, optionPreprocessorFuncs);\r\n            setTransitionOpt(this, transitionOpt);\r\n            if (lazyUpdate) {\r\n                this[OPTION_UPDATED_KEY] = { silent: silent };\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                this.getZr().wakeUp();\r\n            }\r\n            else {\r\n                prepare(this);\r\n                updateMethods.update.call(this);\r\n                this._zr.flush();\r\n                this[OPTION_UPDATED_KEY] = false;\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                flushPendingActions.call(this, silent);\r\n                triggerUpdatedEvent.call(this, silent);\r\n            }\r\n        };\r\n        ECharts.prototype.setTheme = function () {\r\n            console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\r\n        };\r\n        ECharts.prototype.getModel = function () {\r\n            return this._model;\r\n        };\r\n        ECharts.prototype.getOption = function () {\r\n            return this._model && this._model.getOption();\r\n        };\r\n        ECharts.prototype.getWidth = function () {\r\n            return this._zr.getWidth();\r\n        };\r\n        ECharts.prototype.getHeight = function () {\r\n            return this._zr.getHeight();\r\n        };\r\n        ECharts.prototype.getDevicePixelRatio = function () {\r\n            return this._zr.painter.dpr || window.devicePixelRatio || 1;\r\n        };\r\n        ECharts.prototype.getRenderedCanvas = function (opts) {\r\n            if (!env.canvasSupported) {\r\n                return;\r\n            }\r\n            opts = extend({}, opts || {});\r\n            opts.pixelRatio = opts.pixelRatio || 1;\r\n            opts.backgroundColor = opts.backgroundColor\r\n                || this._model.get('backgroundColor');\r\n            var zr = this._zr;\r\n            return zr.painter.getRenderedCanvas(opts);\r\n        };\r\n        ECharts.prototype.getSvgDataURL = function () {\r\n            if (!env.svgSupported) {\r\n                return;\r\n            }\r\n            var zr = this._zr;\r\n            var list = zr.storage.getDisplayList();\r\n            each(list, function (el) {\r\n                el.stopAnimation(null, true);\r\n            });\r\n            return zr.painter.toDataURL();\r\n        };\r\n        ECharts.prototype.getDataURL = function (opts) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            opts = opts || {};\r\n            var excludeComponents = opts.excludeComponents;\r\n            var ecModel = this._model;\r\n            var excludesComponentViews = [];\r\n            var self = this;\r\n            each$3(excludeComponents, function (componentType) {\r\n                ecModel.eachComponent({\r\n                    mainType: componentType\r\n                }, function (component) {\r\n                    var view = self._componentsMap[component.__viewId];\r\n                    if (!view.group.ignore) {\r\n                        excludesComponentViews.push(view);\r\n                        view.group.ignore = true;\r\n                    }\r\n                });\r\n            });\r\n            var url = this._zr.painter.getType() === 'svg'\r\n                ? this.getSvgDataURL()\r\n                : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\r\n            each$3(excludesComponentViews, function (view) {\r\n                view.group.ignore = false;\r\n            });\r\n            return url;\r\n        };\r\n        ECharts.prototype.getConnectedDataURL = function (opts) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (!env.canvasSupported) {\r\n                return;\r\n            }\r\n            var isSvg = opts.type === 'svg';\r\n            var groupId = this.group;\r\n            var mathMin = Math.min;\r\n            var mathMax = Math.max;\r\n            var MAX_NUMBER = Infinity;\r\n            if (connectedGroups[groupId]) {\r\n                var left_1 = MAX_NUMBER;\r\n                var top_1 = MAX_NUMBER;\r\n                var right_1 = -MAX_NUMBER;\r\n                var bottom_1 = -MAX_NUMBER;\r\n                var canvasList_1 = [];\r\n                var dpr_1 = (opts && opts.pixelRatio) || 1;\r\n                each(instances$1, function (chart, id) {\r\n                    if (chart.group === groupId) {\r\n                        var canvas = isSvg\r\n                            ? chart.getZr().painter.getSvgDom().innerHTML\r\n                            : chart.getRenderedCanvas(clone(opts));\r\n                        var boundingRect = chart.getDom().getBoundingClientRect();\r\n                        left_1 = mathMin(boundingRect.left, left_1);\r\n                        top_1 = mathMin(boundingRect.top, top_1);\r\n                        right_1 = mathMax(boundingRect.right, right_1);\r\n                        bottom_1 = mathMax(boundingRect.bottom, bottom_1);\r\n                        canvasList_1.push({\r\n                            dom: canvas,\r\n                            left: boundingRect.left,\r\n                            top: boundingRect.top\r\n                        });\r\n                    }\r\n                });\r\n                left_1 *= dpr_1;\r\n                top_1 *= dpr_1;\r\n                right_1 *= dpr_1;\r\n                bottom_1 *= dpr_1;\r\n                var width = right_1 - left_1;\r\n                var height = bottom_1 - top_1;\r\n                var targetCanvas = createCanvas();\r\n                var zr_1 = init(targetCanvas, {\r\n                    renderer: isSvg ? 'svg' : 'canvas'\r\n                });\r\n                zr_1.resize({\r\n                    width: width,\r\n                    height: height\r\n                });\r\n                if (isSvg) {\r\n                    var content_1 = '';\r\n                    each$3(canvasList_1, function (item) {\r\n                        var x = item.left - left_1;\r\n                        var y = item.top - top_1;\r\n                        content_1 += '<g transform=\"translate(' + x + ','\r\n                            + y + ')\">' + item.dom + '</g>';\r\n                    });\r\n                    zr_1.painter.getSvgRoot().innerHTML = content_1;\r\n                    if (opts.connectedBackgroundColor) {\r\n                        zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);\r\n                    }\r\n                    zr_1.refreshImmediately();\r\n                    return zr_1.painter.toDataURL();\r\n                }\r\n                else {\r\n                    if (opts.connectedBackgroundColor) {\r\n                        zr_1.add(new Rect({\r\n                            shape: {\r\n                                x: 0,\r\n                                y: 0,\r\n                                width: width,\r\n                                height: height\r\n                            },\r\n                            style: {\r\n                                fill: opts.connectedBackgroundColor\r\n                            }\r\n                        }));\r\n                    }\r\n                    each$3(canvasList_1, function (item) {\r\n                        var img = new ZRImage({\r\n                            style: {\r\n                                x: item.left * dpr_1 - left_1,\r\n                                y: item.top * dpr_1 - top_1,\r\n                                image: item.dom\r\n                            }\r\n                        });\r\n                        zr_1.add(img);\r\n                    });\r\n                    zr_1.refreshImmediately();\r\n                    return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\r\n                }\r\n            }\r\n            else {\r\n                return this.getDataURL(opts);\r\n            }\r\n        };\r\n        ECharts.prototype.convertToPixel = function (finder, value) {\r\n            return doConvertPixel(this, 'convertToPixel', finder, value);\r\n        };\r\n        ECharts.prototype.convertFromPixel = function (finder, value) {\r\n            return doConvertPixel(this, 'convertFromPixel', finder, value);\r\n        };\r\n        ECharts.prototype.containPixel = function (finder, value) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var ecModel = this._model;\r\n            var result;\r\n            var findResult = parseFinder(ecModel, finder);\r\n            each(findResult, function (models, key) {\r\n                key.indexOf('Models') >= 0 && each(models, function (model) {\r\n                    var coordSys = model.coordinateSystem;\r\n                    if (coordSys && coordSys.containPoint) {\r\n                        result = result || !!coordSys.containPoint(value);\r\n                    }\r\n                    else if (key === 'seriesModels') {\r\n                        var view = this._chartsMap[model.__viewId];\r\n                        if (view && view.containPoint) {\r\n                            result = result || view.containPoint(value, model);\r\n                        }\r\n                        else {\r\n                            if (__DEV__) {\r\n                                console.warn(key + ': ' + (view\r\n                                    ? 'The found component do not support containPoint.'\r\n                                    : 'No view mapping to the found component.'));\r\n                            }\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (__DEV__) {\r\n                            console.warn(key + ': containPoint is not supported');\r\n                        }\r\n                    }\r\n                }, this);\r\n            }, this);\r\n            return !!result;\r\n        };\r\n        ECharts.prototype.getVisual = function (finder, visualType) {\r\n            var ecModel = this._model;\r\n            var parsedFinder = parseFinder(ecModel, finder, {\r\n                defaultMainType: 'series'\r\n            });\r\n            var seriesModel = parsedFinder.seriesModel;\r\n            if (__DEV__) {\r\n                if (!seriesModel) {\r\n                    console.warn('There is no specified seires model');\r\n                }\r\n            }\r\n            var data = seriesModel.getData();\r\n            var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside')\r\n                ? parsedFinder.dataIndexInside\r\n                : parsedFinder.hasOwnProperty('dataIndex')\r\n                    ? data.indexOfRawIndex(parsedFinder.dataIndex)\r\n                    : null;\r\n            return dataIndexInside != null\r\n                ? getItemVisualFromData(data, dataIndexInside, visualType)\r\n                : getVisualFromData(data, visualType);\r\n        };\r\n        ECharts.prototype.getViewOfComponentModel = function (componentModel) {\r\n            return this._componentsMap[componentModel.__viewId];\r\n        };\r\n        ECharts.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n            return this._chartsMap[seriesModel.__viewId];\r\n        };\r\n        ECharts.prototype._initEvents = function () {\r\n            var _this = this;\r\n            each$3(MOUSE_EVENT_NAMES, function (eveName) {\r\n                var handler = function (e) {\r\n                    var ecModel = _this.getModel();\r\n                    var el = e.target;\r\n                    var params;\r\n                    var isGlobalOut = eveName === 'globalout';\r\n                    if (isGlobalOut) {\r\n                        params = {};\r\n                    }\r\n                    else {\r\n                        el && findEventDispatcher(el, function (parent) {\r\n                            var ecData = getECData(parent);\r\n                            if (ecData && ecData.dataIndex != null) {\r\n                                var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);\r\n                                params = (dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType) || {});\r\n                                return true;\r\n                            }\r\n                            else if (ecData.eventData) {\r\n                                params = extend({}, ecData.eventData);\r\n                                return true;\r\n                            }\r\n                        }, true);\r\n                    }\r\n                    if (params) {\r\n                        var componentType = params.componentType;\r\n                        var componentIndex = params.componentIndex;\r\n                        if (componentType === 'markLine'\r\n                            || componentType === 'markPoint'\r\n                            || componentType === 'markArea') {\r\n                            componentType = 'series';\r\n                            componentIndex = params.seriesIndex;\r\n                        }\r\n                        var model = componentType && componentIndex != null\r\n                            && ecModel.getComponent(componentType, componentIndex);\r\n                        var view = model && _this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\r\n                        if (__DEV__) {\r\n                            if (!isGlobalOut && !(model && view)) {\r\n                                console.warn('model or view can not be found by params');\r\n                            }\r\n                        }\r\n                        params.event = e;\r\n                        params.type = eveName;\r\n                        _this._$eventProcessor.eventInfo = {\r\n                            targetEl: el,\r\n                            packedEvent: params,\r\n                            model: model,\r\n                            view: view\r\n                        };\r\n                        _this.trigger(eveName, params);\r\n                    }\r\n                };\r\n                handler.zrEventfulCallAtLast = true;\r\n                _this._zr.on(eveName, handler, _this);\r\n            });\r\n            each$3(eventActionMap, function (actionType, eventType) {\r\n                _this._messageCenter.on(eventType, function (event) {\r\n                    this.trigger(eventType, event);\r\n                }, _this);\r\n            });\r\n            each$3(['selectchanged'], function (eventType) {\r\n                _this._messageCenter.on(eventType, function (event) {\r\n                    this.trigger(eventType, event);\r\n                }, _this);\r\n            });\r\n            handleLegacySelectEvents(this._messageCenter, this, this._model);\r\n        };\r\n        ECharts.prototype.isDisposed = function () {\r\n            return this._disposed;\r\n        };\r\n        ECharts.prototype.clear = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this.setOption({ series: [] }, true);\r\n        };\r\n        ECharts.prototype.dispose = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._disposed = true;\r\n            setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\r\n            var api = this._api;\r\n            var ecModel = this._model;\r\n            each$3(this._componentsViews, function (component) {\r\n                component.dispose(ecModel, api);\r\n            });\r\n            each$3(this._chartsViews, function (chart) {\r\n                chart.dispose(ecModel, api);\r\n            });\r\n            this._zr.dispose();\r\n            delete instances$1[this.id];\r\n        };\r\n        ECharts.prototype.resize = function (opts) {\r\n            if (__DEV__) {\r\n                assert$1(!this[IN_MAIN_PROCESS_KEY], '`resize` should not be called during main process.');\r\n            }\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._zr.resize(opts);\r\n            var ecModel = this._model;\r\n            this._loadingFX && this._loadingFX.resize();\r\n            if (!ecModel) {\r\n                return;\r\n            }\r\n            var optionChanged = ecModel.resetOption('media');\r\n            var silent = opts && opts.silent;\r\n            this[IN_MAIN_PROCESS_KEY] = true;\r\n            optionChanged && prepare(this);\r\n            updateMethods.update.call(this, {\r\n                type: 'resize',\r\n                animation: {\r\n                    duration: 0\r\n                }\r\n            });\r\n            this[IN_MAIN_PROCESS_KEY] = false;\r\n            flushPendingActions.call(this, silent);\r\n            triggerUpdatedEvent.call(this, silent);\r\n        };\r\n        ECharts.prototype.showLoading = function (name, cfg) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (isObject$2(name)) {\r\n                cfg = name;\r\n                name = '';\r\n            }\r\n            name = name || 'default';\r\n            this.hideLoading();\r\n            if (!loadingEffects[name]) {\r\n                if (__DEV__) {\r\n                    console.warn('Loading effects ' + name + ' not exists.');\r\n                }\r\n                return;\r\n            }\r\n            var el = loadingEffects[name](this._api, cfg);\r\n            var zr = this._zr;\r\n            this._loadingFX = el;\r\n            zr.add(el);\r\n        };\r\n        ECharts.prototype.hideLoading = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._loadingFX && this._zr.remove(this._loadingFX);\r\n            this._loadingFX = null;\r\n        };\r\n        ECharts.prototype.makeActionFromEvent = function (eventObj) {\r\n            var payload = extend({}, eventObj);\r\n            payload.type = eventActionMap[eventObj.type];\r\n            return payload;\r\n        };\r\n        ECharts.prototype.dispatchAction = function (payload, opt) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (!isObject$2(opt)) {\r\n                opt = { silent: !!opt };\r\n            }\r\n            if (!actions[payload.type]) {\r\n                return;\r\n            }\r\n            if (!this._model) {\r\n                return;\r\n            }\r\n            if (this[IN_MAIN_PROCESS_KEY]) {\r\n                this._pendingActions.push(payload);\r\n                return;\r\n            }\r\n            var silent = opt.silent;\r\n            doDispatchAction.call(this, payload, silent);\r\n            var flush = opt.flush;\r\n            if (flush) {\r\n                this._zr.flush();\r\n            }\r\n            else if (flush !== false && env.browser.weChat) {\r\n                this._throttledZrFlush();\r\n            }\r\n            flushPendingActions.call(this, silent);\r\n            triggerUpdatedEvent.call(this, silent);\r\n        };\r\n        ECharts.prototype.updateLabelLayout = function () {\r\n            var labelManager = this._labelManager;\r\n            labelManager.updateLayoutConfig(this._api);\r\n            labelManager.layout(this._api);\r\n            labelManager.processLabelsOverall();\r\n        };\r\n        ECharts.prototype.appendData = function (params) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var seriesIndex = params.seriesIndex;\r\n            var ecModel = this.getModel();\r\n            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n            if (__DEV__) {\r\n                assert$1(params.data && seriesModel);\r\n            }\r\n            seriesModel.appendData(params);\r\n            this._scheduler.unfinished = true;\r\n            this.getZr().wakeUp();\r\n        };\r\n        ECharts.internalField = (function () {\r\n            prepare = function (ecIns) {\r\n                var scheduler = ecIns._scheduler;\r\n                scheduler.restorePipelines(ecIns._model);\r\n                scheduler.prepareStageTasks();\r\n                prepareView(ecIns, true);\r\n                prepareView(ecIns, false);\r\n                scheduler.plan();\r\n            };\r\n            prepareView = function (ecIns, isComponent) {\r\n                var ecModel = ecIns._model;\r\n                var scheduler = ecIns._scheduler;\r\n                var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\r\n                var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\r\n                var zr = ecIns._zr;\r\n                var api = ecIns._api;\r\n                for (var i = 0; i < viewList.length; i++) {\r\n                    viewList[i].__alive = false;\r\n                }\r\n                isComponent\r\n                    ? ecModel.eachComponent(function (componentType, model) {\r\n                        componentType !== 'series' && doPrepare(model);\r\n                    })\r\n                    : ecModel.eachSeries(doPrepare);\r\n                function doPrepare(model) {\r\n                    var requireNewView = model.__requireNewView;\r\n                    model.__requireNewView = false;\r\n                    var viewId = '_ec_' + model.id + '_' + model.type;\r\n                    var view = !requireNewView && viewMap[viewId];\r\n                    if (!view) {\r\n                        var classType = parseClassType(model.type);\r\n                        var Clazz = isComponent\r\n                            ? ComponentView.getClass(classType.main, classType.sub)\r\n                            : (ChartView.getClass(classType.sub));\r\n                        if (__DEV__) {\r\n                            assert$1(Clazz, classType.sub + ' does not exist.');\r\n                        }\r\n                        view = new Clazz();\r\n                        view.init(ecModel, api);\r\n                        viewMap[viewId] = view;\r\n                        viewList.push(view);\r\n                        zr.add(view.group);\r\n                    }\r\n                    model.__viewId = view.__id = viewId;\r\n                    view.__alive = true;\r\n                    view.__model = model;\r\n                    view.group.__ecComponentInfo = {\r\n                        mainType: model.mainType,\r\n                        index: model.componentIndex\r\n                    };\r\n                    !isComponent && scheduler.prepareView(view, model, ecModel, api);\r\n                }\r\n                for (var i = 0; i < viewList.length;) {\r\n                    var view = viewList[i];\r\n                    if (!view.__alive) {\r\n                        !isComponent && view.renderTask.dispose();\r\n                        zr.remove(view.group);\r\n                        view.dispose(ecModel, api);\r\n                        viewList.splice(i, 1);\r\n                        if (viewMap[view.__id] === view) {\r\n                            delete viewMap[view.__id];\r\n                        }\r\n                        view.__id = view.group.__ecComponentInfo = null;\r\n                    }\r\n                    else {\r\n                        i++;\r\n                    }\r\n                }\r\n            };\r\n            updateDirectly = function (ecIns, method, payload, mainType, subType) {\r\n                var ecModel = ecIns._model;\r\n                ecModel.setUpdatePayload(payload);\r\n                if (!mainType) {\r\n                    each$3([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView);\r\n                    return;\r\n                }\r\n                var query = {};\r\n                query[mainType + 'Id'] = payload[mainType + 'Id'];\r\n                query[mainType + 'Index'] = payload[mainType + 'Index'];\r\n                query[mainType + 'Name'] = payload[mainType + 'Name'];\r\n                var condition = { mainType: mainType, query: query };\r\n                subType && (condition.subType = subType);\r\n                var excludeSeriesId = payload.excludeSeriesId;\r\n                var excludeSeriesIdMap;\r\n                if (excludeSeriesId != null) {\r\n                    excludeSeriesIdMap = createHashMap();\r\n                    each$3(normalizeToArray(excludeSeriesId), function (id) {\r\n                        var modelId = convertOptionIdName(id, null);\r\n                        if (modelId != null) {\r\n                            excludeSeriesIdMap.set(modelId, true);\r\n                        }\r\n                    });\r\n                }\r\n                ecModel && ecModel.eachComponent(condition, function (model) {\r\n                    if (!excludeSeriesIdMap || excludeSeriesIdMap.get(model.id) == null) {\r\n                        if (isHighDownPayload(payload) && !payload.notBlur) {\r\n                            if (model instanceof SeriesModel) {\r\n                                toggleSeriesBlurStateFromPayload(model, payload, ecIns._api);\r\n                            }\r\n                        }\r\n                        else if (isSelectChangePayload(payload)) {\r\n                            if (model instanceof SeriesModel) {\r\n                                toggleSelectionFromPayload(model, payload, ecIns._api);\r\n                                updateSeriesElementSelection(model);\r\n                                markStatusToUpdate(ecIns);\r\n                            }\r\n                        }\r\n                        callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\r\n                    }\r\n                }, ecIns);\r\n                function callView(view) {\r\n                    view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\r\n                }\r\n            };\r\n            updateMethods = {\r\n                prepareAndUpdate: function (payload) {\r\n                    prepare(this);\r\n                    updateMethods.update.call(this, payload);\r\n                },\r\n                update: function (payload) {\r\n                    var ecModel = this._model;\r\n                    var api = this._api;\r\n                    var zr = this._zr;\r\n                    var coordSysMgr = this._coordSysMgr;\r\n                    var scheduler = this._scheduler;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    scheduler.restoreData(ecModel, payload);\r\n                    scheduler.performSeriesTasks(ecModel);\r\n                    coordSysMgr.create(ecModel, api);\r\n                    scheduler.performDataProcessorTasks(ecModel, payload);\r\n                    updateStreamModes(this, ecModel);\r\n                    coordSysMgr.update(ecModel, api);\r\n                    clearColorPalette(ecModel);\r\n                    scheduler.performVisualTasks(ecModel, payload);\r\n                    render(this, ecModel, api, payload);\r\n                    var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\r\n                    var darkMode = ecModel.get('darkMode');\r\n                    if (!env.canvasSupported) {\r\n                        var colorArr = parse(backgroundColor);\r\n                        backgroundColor = stringify(colorArr, 'rgb');\r\n                        if (colorArr[3] === 0) {\r\n                            backgroundColor = 'transparent';\r\n                        }\r\n                    }\r\n                    else {\r\n                        zr.setBackgroundColor(backgroundColor);\r\n                        if (darkMode != null && darkMode !== 'auto') {\r\n                            zr.setDarkMode(darkMode);\r\n                        }\r\n                    }\r\n                    performPostUpdateFuncs(ecModel, api);\r\n                },\r\n                updateTransform: function (payload) {\r\n                    var _this = this;\r\n                    var ecModel = this._model;\r\n                    var api = this._api;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    var componentDirtyList = [];\r\n                    ecModel.eachComponent(function (componentType, componentModel) {\r\n                        if (componentType === 'series') {\r\n                            return;\r\n                        }\r\n                        var componentView = _this.getViewOfComponentModel(componentModel);\r\n                        if (componentView && componentView.__alive) {\r\n                            if (componentView.updateTransform) {\r\n                                var result = componentView.updateTransform(componentModel, ecModel, api, payload);\r\n                                result && result.update && componentDirtyList.push(componentView);\r\n                            }\r\n                            else {\r\n                                componentDirtyList.push(componentView);\r\n                            }\r\n                        }\r\n                    });\r\n                    var seriesDirtyMap = createHashMap();\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        var chartView = _this._chartsMap[seriesModel.__viewId];\r\n                        if (chartView.updateTransform) {\r\n                            var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\r\n                            result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\r\n                        }\r\n                        else {\r\n                            seriesDirtyMap.set(seriesModel.uid, 1);\r\n                        }\r\n                    });\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true, dirtyMap: seriesDirtyMap });\r\n                    renderSeries(this, ecModel, api, payload, seriesDirtyMap);\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateView: function (payload) {\r\n                    var ecModel = this._model;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    ChartView.markUpdateMethod(payload, 'updateView');\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true });\r\n                    render(this, this._model, this._api, payload);\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateVisual: function (payload) {\r\n                    var _this = this;\r\n                    var ecModel = this._model;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        seriesModel.getData().clearAllVisual();\r\n                    });\r\n                    ChartView.markUpdateMethod(payload, 'updateVisual');\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { visualType: 'visual', setDirty: true });\r\n                    ecModel.eachComponent(function (componentType, componentModel) {\r\n                        if (componentType !== 'series') {\r\n                            var componentView = _this.getViewOfComponentModel(componentModel);\r\n                            componentView && componentView.__alive\r\n                                && componentView.updateVisual(componentModel, ecModel, _this._api, payload);\r\n                        }\r\n                    });\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        var chartView = _this._chartsMap[seriesModel.__viewId];\r\n                        chartView.updateVisual(seriesModel, ecModel, _this._api, payload);\r\n                    });\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateLayout: function (payload) {\r\n                    updateMethods.update.call(this, payload);\r\n                }\r\n            };\r\n            doConvertPixel = function (ecIns, methodName, finder, value) {\r\n                if (ecIns._disposed) {\r\n                    disposedWarning(ecIns.id);\r\n                    return;\r\n                }\r\n                var ecModel = ecIns._model;\r\n                var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();\r\n                var result;\r\n                var parsedFinder = parseFinder(ecModel, finder);\r\n                for (var i = 0; i < coordSysList.length; i++) {\r\n                    var coordSys = coordSysList[i];\r\n                    if (coordSys[methodName]\r\n                        && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n                if (__DEV__) {\r\n                    console.warn('No coordinate system that supports ' + methodName + ' found by the given finder.');\r\n                }\r\n            };\r\n            updateStreamModes = function (ecIns, ecModel) {\r\n                var chartsMap = ecIns._chartsMap;\r\n                var scheduler = ecIns._scheduler;\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\r\n                });\r\n            };\r\n            doDispatchAction = function (payload, silent) {\r\n                var _this = this;\r\n                var ecModel = this.getModel();\r\n                var payloadType = payload.type;\r\n                var escapeConnect = payload.escapeConnect;\r\n                var actionWrap = actions[payloadType];\r\n                var actionInfo = actionWrap.actionInfo;\r\n                var cptTypeTmp = (actionInfo.update || 'update').split(':');\r\n                var updateMethod = cptTypeTmp.pop();\r\n                var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);\r\n                this[IN_MAIN_PROCESS_KEY] = true;\r\n                var payloads = [payload];\r\n                var batched = false;\r\n                if (payload.batch) {\r\n                    batched = true;\r\n                    payloads = map(payload.batch, function (item) {\r\n                        item = defaults(extend({}, item), payload);\r\n                        item.batch = null;\r\n                        return item;\r\n                    });\r\n                }\r\n                var eventObjBatch = [];\r\n                var eventObj;\r\n                var isSelectChange = isSelectChangePayload(payload);\r\n                var isStatusChange = isHighDownPayload(payload) || isSelectChange;\r\n                each$3(payloads, function (batchItem) {\r\n                    eventObj = actionWrap.action(batchItem, _this._model, _this._api);\r\n                    eventObj = eventObj || extend({}, batchItem);\r\n                    eventObj.type = actionInfo.event || eventObj.type;\r\n                    eventObjBatch.push(eventObj);\r\n                    if (isStatusChange) {\r\n                        updateDirectly(_this, updateMethod, batchItem, 'series');\r\n                        markStatusToUpdate(_this);\r\n                    }\r\n                    else if (cptType) {\r\n                        updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);\r\n                    }\r\n                });\r\n                if (updateMethod !== 'none' && !isStatusChange && !cptType) {\r\n                    if (this[OPTION_UPDATED_KEY]) {\r\n                        prepare(this);\r\n                        updateMethods.update.call(this, payload);\r\n                        this[OPTION_UPDATED_KEY] = false;\r\n                    }\r\n                    else {\r\n                        updateMethods[updateMethod].call(this, payload);\r\n                    }\r\n                }\r\n                if (batched) {\r\n                    eventObj = {\r\n                        type: actionInfo.event || payloadType,\r\n                        escapeConnect: escapeConnect,\r\n                        batch: eventObjBatch\r\n                    };\r\n                }\r\n                else {\r\n                    eventObj = eventObjBatch[0];\r\n                }\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                if (!silent) {\r\n                    var messageCenter = this._messageCenter;\r\n                    messageCenter.trigger(eventObj.type, eventObj);\r\n                    if (isSelectChange) {\r\n                        var newObj = {\r\n                            type: 'selectchanged',\r\n                            escapeConnect: escapeConnect,\r\n                            selected: getAllSelectedIndices(ecModel),\r\n                            isFromClick: payload.isFromClick || false,\r\n                            fromAction: payload.type,\r\n                            fromActionPayload: payload\r\n                        };\r\n                        messageCenter.trigger(newObj.type, newObj);\r\n                    }\r\n                }\r\n            };\r\n            flushPendingActions = function (silent) {\r\n                var pendingActions = this._pendingActions;\r\n                while (pendingActions.length) {\r\n                    var payload = pendingActions.shift();\r\n                    doDispatchAction.call(this, payload, silent);\r\n                }\r\n            };\r\n            triggerUpdatedEvent = function (silent) {\r\n                !silent && this.trigger('updated');\r\n            };\r\n            bindRenderedEvent = function (zr, ecIns) {\r\n                zr.on('rendered', function (params) {\r\n                    ecIns.trigger('rendered', params);\r\n                    if (zr.animation.isFinished()\r\n                        && !ecIns[OPTION_UPDATED_KEY]\r\n                        && !ecIns._scheduler.unfinished\r\n                        && !ecIns._pendingActions.length) {\r\n                        ecIns.trigger('finished');\r\n                    }\r\n                });\r\n            };\r\n            bindMouseEvent = function (zr, ecIns) {\r\n                zr.on('mouseover', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\r\n                    if (dispatcher) {\r\n                        var ecData = getECData(dispatcher);\r\n                        toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, true);\r\n                        enterEmphasisWhenMouseOver(dispatcher, e);\r\n                        markStatusToUpdate(ecIns);\r\n                    }\r\n                }).on('mouseout', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\r\n                    if (dispatcher) {\r\n                        var ecData = getECData(dispatcher);\r\n                        toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, false);\r\n                        leaveEmphasisWhenMouseOut(dispatcher, e);\r\n                        markStatusToUpdate(ecIns);\r\n                    }\r\n                }).on('click', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; }, true);\r\n                    if (dispatcher) {\r\n                        var actionType = dispatcher.selected ? 'unselect' : 'select';\r\n                        var ecData = getECData(dispatcher);\r\n                        ecIns._api.dispatchAction({\r\n                            type: actionType,\r\n                            dataType: ecData.dataType,\r\n                            dataIndexInside: ecData.dataIndex,\r\n                            seriesIndex: ecData.seriesIndex,\r\n                            isFromClick: true\r\n                        });\r\n                    }\r\n                });\r\n            };\r\n            clearColorPalette = function (ecModel) {\r\n                ecModel.clearColorPalette();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    seriesModel.clearColorPalette();\r\n                });\r\n            };\r\n            render = function (ecIns, ecModel, api, payload) {\r\n                renderComponents(ecIns, ecModel, api, payload);\r\n                each$3(ecIns._chartsViews, function (chart) {\r\n                    chart.__alive = false;\r\n                });\r\n                renderSeries(ecIns, ecModel, api, payload);\r\n                each$3(ecIns._chartsViews, function (chart) {\r\n                    if (!chart.__alive) {\r\n                        chart.remove(ecModel, api);\r\n                    }\r\n                });\r\n            };\r\n            renderComponents = function (ecIns, ecModel, api, payload, dirtyList) {\r\n                each$3(dirtyList || ecIns._componentsViews, function (componentView) {\r\n                    var componentModel = componentView.__model;\r\n                    clearStates(componentModel, componentView);\r\n                    componentView.render(componentModel, ecModel, api, payload);\r\n                    updateZ(componentModel, componentView);\r\n                    updateStates(componentModel, componentView);\r\n                });\r\n            };\r\n            renderSeries = function (ecIns, ecModel, api, payload, dirtyMap) {\r\n                var scheduler = ecIns._scheduler;\r\n                var labelManager = ecIns._labelManager;\r\n                labelManager.clearLabels();\r\n                var unfinished = false;\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                    chartView.__alive = true;\r\n                    var renderTask = chartView.renderTask;\r\n                    scheduler.updatePayload(renderTask, payload);\r\n                    clearStates(seriesModel, chartView);\r\n                    if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\r\n                        renderTask.dirty();\r\n                    }\r\n                    if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {\r\n                        unfinished = true;\r\n                    }\r\n                    seriesModel.__transientTransitionOpt = null;\r\n                    chartView.group.silent = !!seriesModel.get('silent');\r\n                    updateBlend(seriesModel, chartView);\r\n                    updateSeriesElementSelection(seriesModel);\r\n                    labelManager.addLabelsOfSeries(chartView);\r\n                });\r\n                scheduler.unfinished = unfinished || scheduler.unfinished;\r\n                labelManager.updateLayoutConfig(api);\r\n                labelManager.layout(api);\r\n                labelManager.processLabelsOverall();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                    updateZ(seriesModel, chartView);\r\n                    updateStates(seriesModel, chartView);\r\n                });\r\n                updateHoverLayerStatus(ecIns, ecModel);\r\n            };\r\n            performPostUpdateFuncs = function (ecModel, api) {\r\n                each$3(postUpdateFuncs, function (func) {\r\n                    func(ecModel, api);\r\n                });\r\n            };\r\n            markStatusToUpdate = function (ecIns) {\r\n                ecIns[STATUS_NEEDS_UPDATE_KEY] = true;\r\n                ecIns.getZr().wakeUp();\r\n            };\r\n            applyChangedStates = function (ecIns) {\r\n                if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {\r\n                    return;\r\n                }\r\n                ecIns.getZr().storage.traverse(function (el) {\r\n                    if (isElementRemoved(el)) {\r\n                        return;\r\n                    }\r\n                    applyElementStates(el);\r\n                });\r\n                ecIns[STATUS_NEEDS_UPDATE_KEY] = false;\r\n            };\r\n            function applyElementStates(el) {\r\n                var newStates = [];\r\n                var oldStates = el.currentStates;\r\n                for (var i = 0; i < oldStates.length; i++) {\r\n                    var stateName = oldStates[i];\r\n                    if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) {\r\n                        newStates.push(stateName);\r\n                    }\r\n                }\r\n                if (el.selected && el.states.select) {\r\n                    newStates.push('select');\r\n                }\r\n                if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {\r\n                    newStates.push('emphasis');\r\n                }\r\n                else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {\r\n                    newStates.push('blur');\r\n                }\r\n                el.useStates(newStates);\r\n            }\r\n            function updateHoverLayerStatus(ecIns, ecModel) {\r\n                var zr = ecIns._zr;\r\n                var storage = zr.storage;\r\n                var elCount = 0;\r\n                storage.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        elCount++;\r\n                    }\r\n                });\r\n                if (elCount > ecModel.get('hoverLayerThreshold') && !env.node && !env.worker) {\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        if (seriesModel.preventUsingHoverLayer) {\r\n                            return;\r\n                        }\r\n                        var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                        if (chartView.__alive) {\r\n                            chartView.group.traverse(function (el) {\r\n                                if (el.states.emphasis) {\r\n                                    el.states.emphasis.hoverLayer = true;\r\n                                }\r\n                            });\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function updateBlend(seriesModel, chartView) {\r\n                var blendMode = seriesModel.get('blendMode') || null;\r\n                if (__DEV__) {\r\n                    if (!env.canvasSupported && blendMode && blendMode !== 'source-over') {\r\n                        console.warn('Only canvas support blendMode');\r\n                    }\r\n                }\r\n                chartView.group.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        el.style.blend = blendMode;\r\n                    }\r\n                    if (el.eachPendingDisplayable) {\r\n                        el.eachPendingDisplayable(function (displayable) {\r\n                            displayable.style.blend = blendMode;\r\n                        });\r\n                    }\r\n                });\r\n            }\r\n            function updateZ(model, view) {\r\n                if (model.preventAutoZ) {\r\n                    return;\r\n                }\r\n                var z = model.get('z');\r\n                var zlevel = model.get('zlevel');\r\n                view.group.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        z != null && (el.z = z);\r\n                        zlevel != null && (el.zlevel = zlevel);\r\n                        var label = el.getTextContent();\r\n                        var labelLine = el.getTextGuideLine();\r\n                        if (label) {\r\n                            label.z = el.z;\r\n                            label.zlevel = el.zlevel;\r\n                            label.z2 = el.z2 + 2;\r\n                        }\r\n                        if (labelLine) {\r\n                            var showAbove = el.textGuideLineConfig && el.textGuideLineConfig.showAbove;\r\n                            labelLine.z = el.z;\r\n                            labelLine.zlevel = el.zlevel;\r\n                            labelLine.z2 = el.z2 + (showAbove ? 1 : -1);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            function clearStates(model, view) {\r\n                view.group.traverse(function (el) {\r\n                    if (isElementRemoved(el)) {\r\n                        return;\r\n                    }\r\n                    var textContent = el.getTextContent();\r\n                    var textGuide = el.getTextGuideLine();\r\n                    if (el.stateTransition) {\r\n                        el.stateTransition = null;\r\n                    }\r\n                    if (textContent && textContent.stateTransition) {\r\n                        textContent.stateTransition = null;\r\n                    }\r\n                    if (textGuide && textGuide.stateTransition) {\r\n                        textGuide.stateTransition = null;\r\n                    }\r\n                    if (el.hasState()) {\r\n                        el.prevStates = el.currentStates;\r\n                        el.clearStates();\r\n                    }\r\n                    else if (el.prevStates) {\r\n                        el.prevStates = null;\r\n                    }\r\n                });\r\n            }\r\n            function updateStates(model, view) {\r\n                var stateAnimationModel = model.getModel('stateAnimation');\r\n                var enableAnimation = model.isAnimationEnabled();\r\n                var duration = stateAnimationModel.get('duration');\r\n                var stateTransition = duration > 0 ? {\r\n                    duration: duration,\r\n                    delay: stateAnimationModel.get('delay'),\r\n                    easing: stateAnimationModel.get('easing')\r\n                } : null;\r\n                view.group.traverse(function (el) {\r\n                    if (el.states && el.states.emphasis) {\r\n                        if (isElementRemoved(el)) {\r\n                            return;\r\n                        }\r\n                        if (el instanceof Path) {\r\n                            savePathStates(el);\r\n                        }\r\n                        if (el.__dirty) {\r\n                            var prevStates = el.prevStates;\r\n                            if (prevStates) {\r\n                                el.useStates(prevStates);\r\n                            }\r\n                        }\r\n                        if (enableAnimation) {\r\n                            el.stateTransition = stateTransition;\r\n                            var textContent = el.getTextContent();\r\n                            var textGuide = el.getTextGuideLine();\r\n                            if (textContent) {\r\n                                textContent.stateTransition = stateTransition;\r\n                            }\r\n                            if (textGuide) {\r\n                                textGuide.stateTransition = stateTransition;\r\n                            }\r\n                        }\r\n                        if (el.__dirty) {\r\n                            applyElementStates(el);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            createExtensionAPI = function (ecIns) {\r\n                return new ((function (_super) {\r\n                    __extends(class_1, _super);\r\n                    function class_1() {\r\n                        return _super !== null && _super.apply(this, arguments) || this;\r\n                    }\r\n                    class_1.prototype.getCoordinateSystems = function () {\r\n                        return ecIns._coordSysMgr.getCoordinateSystems();\r\n                    };\r\n                    class_1.prototype.getComponentByElement = function (el) {\r\n                        while (el) {\r\n                            var modelInfo = el.__ecComponentInfo;\r\n                            if (modelInfo != null) {\r\n                                return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);\r\n                            }\r\n                            el = el.parent;\r\n                        }\r\n                    };\r\n                    class_1.prototype.enterEmphasis = function (el, highlightDigit) {\r\n                        enterEmphasis(el, highlightDigit);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveEmphasis = function (el, highlightDigit) {\r\n                        leaveEmphasis(el, highlightDigit);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.enterBlur = function (el) {\r\n                        enterBlur(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveBlur = function (el) {\r\n                        leaveBlur(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.enterSelect = function (el) {\r\n                        enterSelect(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveSelect = function (el) {\r\n                        leaveSelect(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.getModel = function () {\r\n                        return ecIns.getModel();\r\n                    };\r\n                    class_1.prototype.getViewOfComponentModel = function (componentModel) {\r\n                        return ecIns.getViewOfComponentModel(componentModel);\r\n                    };\r\n                    class_1.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n                        return ecIns.getViewOfSeriesModel(seriesModel);\r\n                    };\r\n                    return class_1;\r\n                }(ExtensionAPI)))(ecIns);\r\n            };\r\n            enableConnect = function (chart) {\r\n                function updateConnectedChartsStatus(charts, status) {\r\n                    for (var i = 0; i < charts.length; i++) {\r\n                        var otherChart = charts[i];\r\n                        otherChart[CONNECT_STATUS_KEY] = status;\r\n                    }\r\n                }\r\n                each$3(eventActionMap, function (actionType, eventType) {\r\n                    chart._messageCenter.on(eventType, function (event) {\r\n                        if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {\r\n                            if (event && event.escapeConnect) {\r\n                                return;\r\n                            }\r\n                            var action_1 = chart.makeActionFromEvent(event);\r\n                            var otherCharts_1 = [];\r\n                            each$3(instances$1, function (otherChart) {\r\n                                if (otherChart !== chart && otherChart.group === chart.group) {\r\n                                    otherCharts_1.push(otherChart);\r\n                                }\r\n                            });\r\n                            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);\r\n                            each$3(otherCharts_1, function (otherChart) {\r\n                                if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {\r\n                                    otherChart.dispatchAction(action_1);\r\n                                }\r\n                            });\r\n                            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n            setTransitionOpt = function (chart, transitionOpt) {\r\n                var ecModel = chart._model;\r\n                each(normalizeToArray(transitionOpt), function (transOpt) {\r\n                    var errMsg;\r\n                    var fromOpt = transOpt.from;\r\n                    var toOpt = transOpt.to;\r\n                    if (toOpt == null) {\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition.to` must be specified.';\r\n                        }\r\n                        throwError(errMsg);\r\n                    }\r\n                    var finderOpt = {\r\n                        includeMainTypes: ['series'],\r\n                        enableAll: false,\r\n                        enableNone: false\r\n                    };\r\n                    var fromResult = fromOpt ? parseFinder(ecModel, fromOpt, finderOpt) : null;\r\n                    var toResult = parseFinder(ecModel, toOpt, finderOpt);\r\n                    var toSeries = toResult.seriesModel;\r\n                    if (toSeries == null) {\r\n                        errMsg = '';\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition` is only supported on series.';\r\n                        }\r\n                    }\r\n                    if (fromResult && fromResult.seriesModel !== toSeries) {\r\n                        errMsg = '';\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition.from` and `transition.to` must be specified to the same series.';\r\n                        }\r\n                    }\r\n                    if (errMsg != null) {\r\n                        throwError(errMsg);\r\n                    }\r\n                    toSeries.__transientTransitionOpt = {\r\n                        from: fromOpt ? fromOpt.dimension : null,\r\n                        to: toOpt.dimension,\r\n                        dividingMethod: transOpt.dividingMethod\r\n                    };\r\n                });\r\n            };\r\n        })();\r\n        return ECharts;\r\n    }(Eventful));\r\n    var echartsProto = ECharts.prototype;\r\n    echartsProto.on = createRegisterEventWithLowercaseECharts('on');\r\n    echartsProto.off = createRegisterEventWithLowercaseECharts('off');\r\n    echartsProto.one = function (eventName, cb, ctx) {\r\n        var self = this;\r\n        deprecateLog('ECharts#one is deprecated.');\r\n        function wrapped() {\r\n            var args2 = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args2[_i] = arguments[_i];\r\n            }\r\n            cb && cb.apply && cb.apply(this, args2);\r\n            self.off(eventName, wrapped);\r\n        }\r\n        this.on.call(this, eventName, wrapped, ctx);\r\n    };\r\n    var MOUSE_EVENT_NAMES = [\r\n        'click', 'dblclick', 'mouseover', 'mouseout', 'mousemove',\r\n        'mousedown', 'mouseup', 'globalout', 'contextmenu'\r\n    ];\r\n    function disposedWarning(id) {\r\n        if (__DEV__) {\r\n            console.warn('Instance ' + id + ' has been disposed');\r\n        }\r\n    }\r\n    var actions = {};\r\n    var eventActionMap = {};\r\n    var dataProcessorFuncs = [];\r\n    var optionPreprocessorFuncs = [];\r\n    var postInitFuncs = [];\r\n    var postUpdateFuncs = [];\r\n    var visualFuncs = [];\r\n    var themeStorage = {};\r\n    var loadingEffects = {};\r\n    var instances$1 = {};\r\n    var connectedGroups = {};\r\n    var idBase = +(new Date()) - 0;\r\n    var groupIdBase = +(new Date()) - 0;\r\n    var DOM_ATTRIBUTE_KEY = '_echarts_instance_';\r\n    function init$1(dom, theme, opts) {\r\n        if (__DEV__) {\r\n            if (!dom) {\r\n                throw new Error('Initialize failed: invalid dom.');\r\n            }\r\n        }\r\n        var existInstance = getInstanceByDom(dom);\r\n        if (existInstance) {\r\n            if (__DEV__) {\r\n                console.warn('There is a chart instance already initialized on the dom.');\r\n            }\r\n            return existInstance;\r\n        }\r\n        if (__DEV__) {\r\n            if (isDom(dom)\r\n                && dom.nodeName.toUpperCase() !== 'CANVAS'\r\n                && ((!dom.clientWidth && (!opts || opts.width == null))\r\n                    || (!dom.clientHeight && (!opts || opts.height == null)))) {\r\n                console.warn('Can\\'t get DOM width or height. Please check '\r\n                    + 'dom.clientWidth and dom.clientHeight. They should not be 0.'\r\n                    + 'For example, you may need to call this in the callback '\r\n                    + 'of window.onload.');\r\n            }\r\n        }\r\n        var chart = new ECharts(dom, theme, opts);\r\n        chart.id = 'ec_' + idBase++;\r\n        instances$1[chart.id] = chart;\r\n        setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\r\n        enableConnect(chart);\r\n        each$3(postInitFuncs, function (postInitFunc) {\r\n            postInitFunc(chart);\r\n        });\r\n        return chart;\r\n    }\r\n    function connect(groupId) {\r\n        if (isArray(groupId)) {\r\n            var charts = groupId;\r\n            groupId = null;\r\n            each$3(charts, function (chart) {\r\n                if (chart.group != null) {\r\n                    groupId = chart.group;\r\n                }\r\n            });\r\n            groupId = groupId || ('g_' + groupIdBase++);\r\n            each$3(charts, function (chart) {\r\n                chart.group = groupId;\r\n            });\r\n        }\r\n        connectedGroups[groupId] = true;\r\n        return groupId;\r\n    }\r\n    function disConnect(groupId) {\r\n        connectedGroups[groupId] = false;\r\n    }\r\n    var disconnect = disConnect;\r\n    function dispose$1(chart) {\r\n        if (typeof chart === 'string') {\r\n            chart = instances$1[chart];\r\n        }\r\n        else if (!(chart instanceof ECharts)) {\r\n            chart = getInstanceByDom(chart);\r\n        }\r\n        if ((chart instanceof ECharts) && !chart.isDisposed()) {\r\n            chart.dispose();\r\n        }\r\n    }\r\n    function getInstanceByDom(dom) {\r\n        return instances$1[getAttribute(dom, DOM_ATTRIBUTE_KEY)];\r\n    }\r\n    function getInstanceById(key) {\r\n        return instances$1[key];\r\n    }\r\n    function registerTheme(name, theme) {\r\n        themeStorage[name] = theme;\r\n    }\r\n    function registerPreprocessor(preprocessorFunc) {\r\n        optionPreprocessorFuncs.push(preprocessorFunc);\r\n    }\r\n    function registerProcessor(priority, processor) {\r\n        normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\r\n    }\r\n    function registerPostInit(postInitFunc) {\r\n        postInitFunc && postInitFuncs.push(postInitFunc);\r\n    }\r\n    function registerPostUpdate(postUpdateFunc) {\r\n        postUpdateFunc && postUpdateFuncs.push(postUpdateFunc);\r\n    }\r\n    function registerAction(actionInfo, eventName, action) {\r\n        if (typeof eventName === 'function') {\r\n            action = eventName;\r\n            eventName = '';\r\n        }\r\n        var actionType = isObject$2(actionInfo)\r\n            ? actionInfo.type\r\n            : ([actionInfo, actionInfo = {\r\n                    event: eventName\r\n                }][0]);\r\n        actionInfo.event = (actionInfo.event || actionType).toLowerCase();\r\n        eventName = actionInfo.event;\r\n        assert$1(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\r\n        if (!actions[actionType]) {\r\n            actions[actionType] = { action: action, actionInfo: actionInfo };\r\n        }\r\n        eventActionMap[eventName] = actionType;\r\n    }\r\n    function registerCoordinateSystem(type, coordSysCreator) {\r\n        CoordinateSystemManager.register(type, coordSysCreator);\r\n    }\r\n    function getCoordinateSystemDimensions(type) {\r\n        var coordSysCreator = CoordinateSystemManager.get(type);\r\n        if (coordSysCreator) {\r\n            return coordSysCreator.getDimensionsInfo\r\n                ? coordSysCreator.getDimensionsInfo()\r\n                : coordSysCreator.dimensions.slice();\r\n        }\r\n    }\r\n    function registerLayout(priority, layoutTask) {\r\n        normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\r\n    }\r\n    function registerVisual(priority, visualTask) {\r\n        normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\r\n    }\r\n    function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\r\n        if (isFunction$1(priority) || isObject$2(priority)) {\r\n            fn = priority;\r\n            priority = defaultPriority;\r\n        }\r\n        if (__DEV__) {\r\n            if (isNaN(priority) || priority == null) {\r\n                throw new Error('Illegal priority');\r\n            }\r\n            each$3(targetList, function (wrap) {\r\n                assert$1(wrap.__raw !== fn);\r\n            });\r\n        }\r\n        var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\r\n        stageHandler.__prio = priority;\r\n        stageHandler.__raw = fn;\r\n        targetList.push(stageHandler);\r\n    }\r\n    function registerLoading(name, loadingFx) {\r\n        loadingEffects[name] = loadingFx;\r\n    }\r\n    function extendComponentModel(proto) {\r\n        return ComponentModel.extend(proto);\r\n    }\r\n    function extendComponentView(proto) {\r\n        return ComponentView.extend(proto);\r\n    }\r\n    function extendSeriesModel(proto) {\r\n        return SeriesModel.extend(proto);\r\n    }\r\n    function extendChartView(proto) {\r\n        return ChartView.extend(proto);\r\n    }\r\n    function setCanvasCreator(creator) {\r\n        $override('createCanvas', creator);\r\n    }\r\n    function registerMap(mapName, geoJson, specialAreas) {\r\n        mapDataStorage.registerMap(mapName, geoJson, specialAreas);\r\n    }\r\n    function getMap(mapName) {\r\n        var records = mapDataStorage.retrieveMap(mapName);\r\n        return records && records[0] && {\r\n            geoJson: records[0].geoJSON,\r\n            specialAreas: records[0].specialAreas\r\n        };\r\n    }\r\n    var registerTransform = registerExternalTransform;\r\n    registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\r\n    registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\r\n    registerVisual(PRIORITY_VISUAL_DECAL, decalVisual);\r\n    registerPreprocessor(globalBackwardCompat);\r\n    registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\r\n    registerLoading('default', defaultLoading);\r\n    registerAction({\r\n        type: HIGHLIGHT_ACTION_TYPE,\r\n        event: HIGHLIGHT_ACTION_TYPE,\r\n        update: HIGHLIGHT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: DOWNPLAY_ACTION_TYPE,\r\n        event: DOWNPLAY_ACTION_TYPE,\r\n        update: DOWNPLAY_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: SELECT_ACTION_TYPE,\r\n        event: SELECT_ACTION_TYPE,\r\n        update: SELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: UNSELECT_ACTION_TYPE,\r\n        event: UNSELECT_ACTION_TYPE,\r\n        update: UNSELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: TOGGLE_SELECT_ACTION_TYPE,\r\n        event: TOGGLE_SELECT_ACTION_TYPE,\r\n        update: TOGGLE_SELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerTheme('light', lightTheme);\r\n    registerTheme('dark', theme);\r\n    var dataTool = {};\n\n    function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {\r\n        return valNumOrArrLengthMoreThan2 == null\r\n            ? 0\r\n            : (valNumOrArrLengthMoreThan2.length || 1);\r\n    }\r\n    function defaultKeyGetter(item) {\r\n        return item;\r\n    }\r\n    var DataDiffer = (function () {\r\n        function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) {\r\n            this._old = oldArr;\r\n            this._new = newArr;\r\n            this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\r\n            this._newKeyGetter = newKeyGetter || defaultKeyGetter;\r\n            this.context = context;\r\n            this._diffModeMultiple = diffMode === 'multiple';\r\n        }\r\n        DataDiffer.prototype.add = function (func) {\r\n            this._add = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.update = function (func) {\r\n            this._update = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.updateManyToOne = function (func) {\r\n            this._updateManyToOne = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.updateOneToMany = function (func) {\r\n            this._updateOneToMany = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.remove = function (func) {\r\n            this._remove = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.execute = function () {\r\n            this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne']();\r\n        };\r\n        DataDiffer.prototype._executeOneToOne = function () {\r\n            var oldArr = this._old;\r\n            var newArr = this._new;\r\n            var newDataIndexMap = {};\r\n            var oldDataKeyArr = new Array(oldArr.length);\r\n            var newDataKeyArr = new Array(newArr.length);\r\n            this._initIndexMap(oldArr, null, oldDataKeyArr, '_oldKeyGetter');\r\n            this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n            for (var i = 0; i < oldArr.length; i++) {\r\n                var oldKey = oldDataKeyArr[i];\r\n                var newIdxMapVal = newDataIndexMap[oldKey];\r\n                var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (newIdxMapValLen > 1) {\r\n                    var newIdx = newIdxMapVal.shift();\r\n                    if (newIdxMapVal.length === 1) {\r\n                        newDataIndexMap[oldKey] = newIdxMapVal[0];\r\n                    }\r\n                    this._update && this._update(newIdx, i);\r\n                }\r\n                else if (newIdxMapValLen === 1) {\r\n                    newDataIndexMap[oldKey] = null;\r\n                    this._update && this._update(newIdxMapVal, i);\r\n                }\r\n                else {\r\n                    this._remove && this._remove(i);\r\n                }\r\n            }\r\n            this._performRestAdd(newDataKeyArr, newDataIndexMap);\r\n        };\r\n        DataDiffer.prototype._executeMultiple = function () {\r\n            var oldArr = this._old;\r\n            var newArr = this._new;\r\n            var oldDataIndexMap = {};\r\n            var newDataIndexMap = {};\r\n            var oldDataKeyArr = [];\r\n            var newDataKeyArr = [];\r\n            this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter');\r\n            this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n            for (var i = 0; i < oldDataKeyArr.length; i++) {\r\n                var oldKey = oldDataKeyArr[i];\r\n                var oldIdxMapVal = oldDataIndexMap[oldKey];\r\n                var newIdxMapVal = newDataIndexMap[oldKey];\r\n                var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal);\r\n                var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {\r\n                    this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {\r\n                    this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {\r\n                    this._update && this._update(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen > 1) {\r\n                    for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {\r\n                        this._remove && this._remove(oldIdxMapVal[i_1]);\r\n                    }\r\n                }\r\n                else {\r\n                    this._remove && this._remove(oldIdxMapVal);\r\n                }\r\n            }\r\n            this._performRestAdd(newDataKeyArr, newDataIndexMap);\r\n        };\r\n        DataDiffer.prototype._performRestAdd = function (newDataKeyArr, newDataIndexMap) {\r\n            for (var i = 0; i < newDataKeyArr.length; i++) {\r\n                var newKey = newDataKeyArr[i];\r\n                var newIdxMapVal = newDataIndexMap[newKey];\r\n                var idxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (idxMapValLen > 1) {\r\n                    for (var j = 0; j < idxMapValLen; j++) {\r\n                        this._add && this._add(newIdxMapVal[j]);\r\n                    }\r\n                }\r\n                else if (idxMapValLen === 1) {\r\n                    this._add && this._add(newIdxMapVal);\r\n                }\r\n                newDataIndexMap[newKey] = null;\r\n            }\r\n        };\r\n        DataDiffer.prototype._initIndexMap = function (arr, map, keyArr, keyGetterName) {\r\n            var cbModeMultiple = this._diffModeMultiple;\r\n            for (var i = 0; i < arr.length; i++) {\r\n                var key = '_ec_' + this[keyGetterName](arr[i], i);\r\n                if (!cbModeMultiple) {\r\n                    keyArr[i] = key;\r\n                }\r\n                if (!map) {\r\n                    continue;\r\n                }\r\n                var idxMapVal = map[key];\r\n                var idxMapValLen = dataIndexMapValueLength(idxMapVal);\r\n                if (idxMapValLen === 0) {\r\n                    map[key] = i;\r\n                    if (cbModeMultiple) {\r\n                        keyArr.push(key);\r\n                    }\r\n                }\r\n                else if (idxMapValLen === 1) {\r\n                    map[key] = [idxMapVal, i];\r\n                }\r\n                else {\r\n                    idxMapVal.push(i);\r\n                }\r\n            }\r\n        };\r\n        return DataDiffer;\r\n    }());\n\n    function summarizeDimensions(data) {\r\n        var summary = {};\r\n        var encode = summary.encode = {};\r\n        var notExtraCoordDimMap = createHashMap();\r\n        var defaultedLabel = [];\r\n        var defaultedTooltip = [];\r\n        var userOutput = summary.userOutput = {\r\n            dimensionNames: data.dimensions.slice(),\r\n            encode: {}\r\n        };\r\n        each(data.dimensions, function (dimName) {\r\n            var dimItem = data.getDimensionInfo(dimName);\r\n            var coordDim = dimItem.coordDim;\r\n            if (coordDim) {\r\n                if (__DEV__) {\r\n                    assert(VISUAL_DIMENSIONS.get(coordDim) == null);\r\n                }\r\n                var coordDimIndex = dimItem.coordDimIndex;\r\n                getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\r\n                if (!dimItem.isExtraCoord) {\r\n                    notExtraCoordDimMap.set(coordDim, 1);\r\n                    if (mayLabelDimType(dimItem.type)) {\r\n                        defaultedLabel[0] = dimName;\r\n                    }\r\n                    getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\r\n                }\r\n                if (dimItem.defaultTooltip) {\r\n                    defaultedTooltip.push(dimName);\r\n                }\r\n            }\r\n            VISUAL_DIMENSIONS.each(function (v, otherDim) {\r\n                var encodeArr = getOrCreateEncodeArr(encode, otherDim);\r\n                var dimIndex = dimItem.otherDims[otherDim];\r\n                if (dimIndex != null && dimIndex !== false) {\r\n                    encodeArr[dimIndex] = dimItem.name;\r\n                }\r\n            });\r\n        });\r\n        var dataDimsOnCoord = [];\r\n        var encodeFirstDimNotExtra = {};\r\n        notExtraCoordDimMap.each(function (v, coordDim) {\r\n            var dimArr = encode[coordDim];\r\n            encodeFirstDimNotExtra[coordDim] = dimArr[0];\r\n            dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\r\n        });\r\n        summary.dataDimsOnCoord = dataDimsOnCoord;\r\n        summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\r\n        var encodeLabel = encode.label;\r\n        if (encodeLabel && encodeLabel.length) {\r\n            defaultedLabel = encodeLabel.slice();\r\n        }\r\n        var encodeTooltip = encode.tooltip;\r\n        if (encodeTooltip && encodeTooltip.length) {\r\n            defaultedTooltip = encodeTooltip.slice();\r\n        }\r\n        else if (!defaultedTooltip.length) {\r\n            defaultedTooltip = defaultedLabel.slice();\r\n        }\r\n        encode.defaultedLabel = defaultedLabel;\r\n        encode.defaultedTooltip = defaultedTooltip;\r\n        return summary;\r\n    }\r\n    function getOrCreateEncodeArr(encode, dim) {\r\n        if (!encode.hasOwnProperty(dim)) {\r\n            encode[dim] = [];\r\n        }\r\n        return encode[dim];\r\n    }\r\n    function getDimensionTypeByAxis(axisType) {\r\n        return axisType === 'category'\r\n            ? 'ordinal'\r\n            : axisType === 'time'\r\n                ? 'time'\r\n                : 'float';\r\n    }\r\n    function mayLabelDimType(dimType) {\r\n        return !(dimType === 'ordinal' || dimType === 'time');\r\n    }\n\n    var DataDimensionInfo = (function () {\r\n        function DataDimensionInfo(opt) {\r\n            this.otherDims = {};\r\n            if (opt != null) {\r\n                extend(this, opt);\r\n            }\r\n        }\r\n        return DataDimensionInfo;\r\n    }());\n\n    var mathFloor = Math.floor;\r\n    var isObject$3 = isObject;\r\n    var map$1 = map;\r\n    var UNDEFINED = 'undefined';\r\n    var INDEX_NOT_FOUND = -1;\r\n    var ID_PREFIX = 'e\\0\\0';\r\n    var dataCtors = {\r\n        'float': typeof Float64Array === UNDEFINED\r\n            ? Array : Float64Array,\r\n        'int': typeof Int32Array === UNDEFINED\r\n            ? Array : Int32Array,\r\n        'ordinal': Array,\r\n        'number': Array,\r\n        'time': Array\r\n    };\r\n    var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\r\n    var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\r\n    var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\r\n    var TRANSFERABLE_PROPERTIES = [\r\n        'hasItemOption', '_nameList', '_idList', '_invertedIndicesMap',\r\n        '_rawData', '_dimValueGetter',\r\n        '_count', '_rawCount', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount'\r\n    ];\r\n    var CLONE_PROPERTIES = [\r\n        '_extent', '_approximateExtent', '_rawExtent'\r\n    ];\r\n    var defaultDimValueGetters;\r\n    var prepareInvertedIndex;\r\n    var getIndicesCtor;\r\n    var prepareStorage;\r\n    var getRawIndexWithoutIndices;\r\n    var getRawIndexWithIndices;\r\n    var getId;\r\n    var getIdNameFromStore;\r\n    var makeIdFromName;\r\n    var normalizeDimensions;\r\n    var validateDimensions;\r\n    var cloneListForMapAndSample;\r\n    var getInitialExtent;\r\n    var setItemDataAndSeriesIndex;\r\n    var transferProperties;\r\n    var List = (function () {\r\n        function List(dimensions, hostModel) {\r\n            this.type = 'list';\r\n            this._count = 0;\r\n            this._rawCount = 0;\r\n            this._storage = {};\r\n            this._storageArr = [];\r\n            this._nameList = [];\r\n            this._idList = [];\r\n            this._visual = {};\r\n            this._layout = {};\r\n            this._itemVisuals = [];\r\n            this._itemLayouts = [];\r\n            this._graphicEls = [];\r\n            this._rawExtent = {};\r\n            this._extent = {};\r\n            this._approximateExtent = {};\r\n            this._calculationInfo = {};\r\n            this.hasItemOption = true;\r\n            this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map'];\r\n            this.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\r\n            this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample'];\r\n            this.getRawIndex = getRawIndexWithoutIndices;\r\n            dimensions = dimensions || ['x', 'y'];\r\n            var dimensionInfos = {};\r\n            var dimensionNames = [];\r\n            var invertedIndicesMap = {};\r\n            for (var i = 0; i < dimensions.length; i++) {\r\n                var dimInfoInput = dimensions[i];\r\n                var dimensionInfo = isString(dimInfoInput)\r\n                    ? new DataDimensionInfo({ name: dimInfoInput })\r\n                    : !(dimInfoInput instanceof DataDimensionInfo)\r\n                        ? new DataDimensionInfo(dimInfoInput)\r\n                        : dimInfoInput;\r\n                var dimensionName = dimensionInfo.name;\r\n                dimensionInfo.type = dimensionInfo.type || 'float';\r\n                if (!dimensionInfo.coordDim) {\r\n                    dimensionInfo.coordDim = dimensionName;\r\n                    dimensionInfo.coordDimIndex = 0;\r\n                }\r\n                var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {};\r\n                dimensionNames.push(dimensionName);\r\n                dimensionInfos[dimensionName] = dimensionInfo;\r\n                dimensionInfo.index = i;\r\n                if (dimensionInfo.createInvertedIndices) {\r\n                    invertedIndicesMap[dimensionName] = [];\r\n                }\r\n                if (otherDims.itemName === 0) {\r\n                    this._nameDimIdx = i;\r\n                    this._nameOrdinalMeta = dimensionInfo.ordinalMeta;\r\n                }\r\n                if (otherDims.itemId === 0) {\r\n                    this._idDimIdx = i;\r\n                    this._idOrdinalMeta = dimensionInfo.ordinalMeta;\r\n                }\r\n            }\r\n            this.dimensions = dimensionNames;\r\n            this._dimensionInfos = dimensionInfos;\r\n            this.hostModel = hostModel;\r\n            this._dimensionsSummary = summarizeDimensions(this);\r\n            this._invertedIndicesMap = invertedIndicesMap;\r\n            this.userOutput = this._dimensionsSummary.userOutput;\r\n        }\r\n        List.prototype.getDimension = function (dim) {\r\n            if (typeof dim === 'number'\r\n                || (!isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim))) {\r\n                dim = this.dimensions[dim];\r\n            }\r\n            return dim;\r\n        };\r\n        List.prototype.getDimensionInfo = function (dim) {\r\n            return this._dimensionInfos[this.getDimension(dim)];\r\n        };\r\n        List.prototype.getDimensionsOnCoord = function () {\r\n            return this._dimensionsSummary.dataDimsOnCoord.slice();\r\n        };\r\n        List.prototype.mapDimension = function (coordDim, idx) {\r\n            var dimensionsSummary = this._dimensionsSummary;\r\n            if (idx == null) {\r\n                return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\r\n            }\r\n            var dims = dimensionsSummary.encode[coordDim];\r\n            return dims ? dims[idx] : null;\r\n        };\r\n        List.prototype.mapDimensionsAll = function (coordDim) {\r\n            var dimensionsSummary = this._dimensionsSummary;\r\n            var dims = dimensionsSummary.encode[coordDim];\r\n            return (dims || []).slice();\r\n        };\r\n        List.prototype.initData = function (data, nameList, dimValueGetter) {\r\n            var notProvider = isSourceInstance(data) || isArrayLike(data);\r\n            var provider = notProvider\r\n                ? new DefaultDataProvider(data, this.dimensions.length)\r\n                : data;\r\n            if (__DEV__) {\r\n                assert(notProvider || (isFunction(provider.getItem)\r\n                    && isFunction(provider.count)), 'Inavlid data provider.');\r\n            }\r\n            this._rawData = provider;\r\n            var sourceFormat = provider.getSource().sourceFormat;\r\n            this._storage = {};\r\n            this._indices = null;\r\n            this._dontMakeIdFromName =\r\n                this._idDimIdx != null\r\n                    || sourceFormat === SOURCE_FORMAT_TYPED_ARRAY\r\n                    || !!provider.fillStorage;\r\n            this._nameList = (nameList || []).slice();\r\n            this._idList = [];\r\n            this._nameRepeatCount = {};\r\n            if (!dimValueGetter) {\r\n                this.hasItemOption = false;\r\n            }\r\n            this.defaultDimValueGetter = defaultDimValueGetters[sourceFormat];\r\n            this._dimValueGetter = dimValueGetter = dimValueGetter\r\n                || this.defaultDimValueGetter;\r\n            this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows;\r\n            this._rawExtent = {};\r\n            this._initDataFromProvider(0, provider.count());\r\n            if (provider.pure) {\r\n                this.hasItemOption = false;\r\n            }\r\n        };\r\n        List.prototype.getProvider = function () {\r\n            return this._rawData;\r\n        };\r\n        List.prototype.appendData = function (data) {\r\n            if (__DEV__) {\r\n                assert(!this._indices, 'appendData can only be called on raw data.');\r\n            }\r\n            var rawData = this._rawData;\r\n            var start = this.count();\r\n            rawData.appendData(data);\r\n            var end = rawData.count();\r\n            if (!rawData.persistent) {\r\n                end += start;\r\n            }\r\n            this._initDataFromProvider(start, end, true);\r\n        };\r\n        List.prototype.appendValues = function (values, names) {\r\n            var storage = this._storage;\r\n            var dimensions = this.dimensions;\r\n            var dimLen = dimensions.length;\r\n            var rawExtent = this._rawExtent;\r\n            var start = this.count();\r\n            var end = start + Math.max(values.length, names ? names.length : 0);\r\n            for (var i = 0; i < dimLen; i++) {\r\n                var dim = dimensions[i];\r\n                if (!rawExtent[dim]) {\r\n                    rawExtent[dim] = getInitialExtent();\r\n                }\r\n                prepareStorage(storage, this._dimensionInfos[dim], end, true);\r\n            }\r\n            var rawExtentArr = map$1(dimensions, function (dim) {\r\n                return rawExtent[dim];\r\n            });\r\n            var storageArr = this._storageArr = map$1(dimensions, function (dim) {\r\n                return storage[dim];\r\n            });\r\n            var emptyDataItem = [];\r\n            for (var idx = start; idx < end; idx++) {\r\n                var sourceIdx = idx - start;\r\n                for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\r\n                    var dim = dimensions[dimIdx];\r\n                    var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, dimIdx);\r\n                    storageArr[dimIdx][idx] = val;\r\n                    var dimRawExtent = rawExtentArr[dimIdx];\r\n                    val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n                    val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n                }\r\n                if (names) {\r\n                    this._nameList[idx] = names[sourceIdx];\r\n                    if (!this._dontMakeIdFromName) {\r\n                        makeIdFromName(this, idx);\r\n                    }\r\n                }\r\n            }\r\n            this._rawCount = this._count = end;\r\n            this._extent = {};\r\n            prepareInvertedIndex(this);\r\n        };\r\n        List.prototype._initDataFromProvider = function (start, end, append) {\r\n            if (start >= end) {\r\n                return;\r\n            }\r\n            var rawData = this._rawData;\r\n            var storage = this._storage;\r\n            var dimensions = this.dimensions;\r\n            var dimLen = dimensions.length;\r\n            var dimensionInfoMap = this._dimensionInfos;\r\n            var nameList = this._nameList;\r\n            var idList = this._idList;\r\n            var rawExtent = this._rawExtent;\r\n            var sourceFormat = rawData.getSource().sourceFormat;\r\n            var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL;\r\n            for (var i = 0; i < dimLen; i++) {\r\n                var dim = dimensions[i];\r\n                if (!rawExtent[dim]) {\r\n                    rawExtent[dim] = getInitialExtent();\r\n                }\r\n                prepareStorage(storage, dimensionInfoMap[dim], end, append);\r\n            }\r\n            var storageArr = this._storageArr = map$1(dimensions, function (dim) {\r\n                return storage[dim];\r\n            });\r\n            var rawExtentArr = map$1(dimensions, function (dim) {\r\n                return rawExtent[dim];\r\n            });\r\n            if (rawData.fillStorage) {\r\n                rawData.fillStorage(start, end, storageArr, rawExtentArr);\r\n            }\r\n            else {\r\n                var dataItem = [];\r\n                for (var idx = start; idx < end; idx++) {\r\n                    dataItem = rawData.getItem(idx, dataItem);\r\n                    for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\r\n                        var dim = dimensions[dimIdx];\r\n                        var dimStorage = storageArr[dimIdx];\r\n                        var val = this._dimValueGetter(dataItem, dim, idx, dimIdx);\r\n                        dimStorage[idx] = val;\r\n                        var dimRawExtent = rawExtentArr[dimIdx];\r\n                        val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n                        val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n                    }\r\n                    if (isFormatOriginal && !rawData.pure && dataItem) {\r\n                        var itemName = dataItem.name;\r\n                        if (nameList[idx] == null && itemName != null) {\r\n                            nameList[idx] = convertOptionIdName(itemName, null);\r\n                        }\r\n                        var itemId = dataItem.id;\r\n                        if (idList[idx] == null && itemId != null) {\r\n                            idList[idx] = convertOptionIdName(itemId, null);\r\n                        }\r\n                    }\r\n                    if (!this._dontMakeIdFromName) {\r\n                        makeIdFromName(this, idx);\r\n                    }\r\n                }\r\n            }\r\n            if (!rawData.persistent && rawData.clean) {\r\n                rawData.clean();\r\n            }\r\n            this._rawCount = this._count = end;\r\n            this._extent = {};\r\n            prepareInvertedIndex(this);\r\n        };\r\n        List.prototype.count = function () {\r\n            return this._count;\r\n        };\r\n        List.prototype.getIndices = function () {\r\n            var newIndices;\r\n            var indices = this._indices;\r\n            if (indices) {\r\n                var Ctor = indices.constructor;\r\n                var thisCount = this._count;\r\n                if (Ctor === Array) {\r\n                    newIndices = new Ctor(thisCount);\r\n                    for (var i = 0; i < thisCount; i++) {\r\n                        newIndices[i] = indices[i];\r\n                    }\r\n                }\r\n                else {\r\n                    newIndices = new Ctor(indices.buffer, 0, thisCount);\r\n                }\r\n            }\r\n            else {\r\n                var Ctor = getIndicesCtor(this);\r\n                newIndices = new Ctor(this.count());\r\n                for (var i = 0; i < newIndices.length; i++) {\r\n                    newIndices[i] = i;\r\n                }\r\n            }\r\n            return newIndices;\r\n        };\r\n        List.prototype.getByDimIdx = function (dimIdx, idx) {\r\n            if (!(idx >= 0 && idx < this._count)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storageArr[dimIdx];\r\n            return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\r\n        };\r\n        List.prototype.get = function (dim, idx) {\r\n            if (!(idx >= 0 && idx < this._count)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storage[dim];\r\n            return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\r\n        };\r\n        List.prototype.getByRawIndex = function (dim, rawIdx) {\r\n            if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storage[dim];\r\n            return dimStore ? dimStore[rawIdx] : NaN;\r\n        };\r\n        List.prototype.getValues = function (dimensions, idx) {\r\n            var values = [];\r\n            if (!isArray(dimensions)) {\r\n                idx = dimensions;\r\n                dimensions = this.dimensions;\r\n            }\r\n            for (var i = 0, len = dimensions.length; i < len; i++) {\r\n                values.push(this.get(dimensions[i], idx));\r\n            }\r\n            return values;\r\n        };\r\n        List.prototype.hasValue = function (idx) {\r\n            var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\r\n            for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\r\n                if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        List.prototype.getDataExtent = function (dim) {\r\n            dim = this.getDimension(dim);\r\n            var dimData = this._storage[dim];\r\n            var initialExtent = getInitialExtent();\r\n            if (!dimData) {\r\n                return initialExtent;\r\n            }\r\n            var currEnd = this.count();\r\n            var useRaw = !this._indices;\r\n            var dimExtent;\r\n            if (useRaw) {\r\n                return this._rawExtent[dim].slice();\r\n            }\r\n            dimExtent = this._extent[dim];\r\n            if (dimExtent) {\r\n                return dimExtent.slice();\r\n            }\r\n            dimExtent = initialExtent;\r\n            var min = dimExtent[0];\r\n            var max = dimExtent[1];\r\n            for (var i = 0; i < currEnd; i++) {\r\n                var rawIdx = this.getRawIndex(i);\r\n                var value = dimData[rawIdx];\r\n                value < min && (min = value);\r\n                value > max && (max = value);\r\n            }\r\n            dimExtent = [min, max];\r\n            this._extent[dim] = dimExtent;\r\n            return dimExtent;\r\n        };\r\n        List.prototype.getApproximateExtent = function (dim) {\r\n            dim = this.getDimension(dim);\r\n            return this._approximateExtent[dim] || this.getDataExtent(dim);\r\n        };\r\n        List.prototype.setApproximateExtent = function (extent, dim) {\r\n            dim = this.getDimension(dim);\r\n            this._approximateExtent[dim] = extent.slice();\r\n        };\r\n        List.prototype.getCalculationInfo = function (key) {\r\n            return this._calculationInfo[key];\r\n        };\r\n        List.prototype.setCalculationInfo = function (key, value) {\r\n            isObject$3(key)\r\n                ? extend(this._calculationInfo, key)\r\n                : (this._calculationInfo[key] = value);\r\n        };\r\n        List.prototype.getSum = function (dim) {\r\n            var dimData = this._storage[dim];\r\n            var sum = 0;\r\n            if (dimData) {\r\n                for (var i = 0, len = this.count(); i < len; i++) {\r\n                    var value = this.get(dim, i);\r\n                    if (!isNaN(value)) {\r\n                        sum += value;\r\n                    }\r\n                }\r\n            }\r\n            return sum;\r\n        };\r\n        List.prototype.getMedian = function (dim) {\r\n            var dimDataArray = [];\r\n            this.each(dim, function (val) {\r\n                if (!isNaN(val)) {\r\n                    dimDataArray.push(val);\r\n                }\r\n            });\r\n            var sortedDimDataArray = dimDataArray.sort(function (a, b) {\r\n                return a - b;\r\n            });\r\n            var len = this.count();\r\n            return len === 0\r\n                ? 0\r\n                : len % 2 === 1\r\n                    ? sortedDimDataArray[(len - 1) / 2]\r\n                    : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\r\n        };\r\n        List.prototype.rawIndexOf = function (dim, value) {\r\n            var invertedIndices = dim && this._invertedIndicesMap[dim];\r\n            if (__DEV__) {\r\n                if (!invertedIndices) {\r\n                    throw new Error('Do not supported yet');\r\n                }\r\n            }\r\n            var rawIndex = invertedIndices[value];\r\n            if (rawIndex == null || isNaN(rawIndex)) {\r\n                return INDEX_NOT_FOUND;\r\n            }\r\n            return rawIndex;\r\n        };\r\n        List.prototype.indexOfName = function (name) {\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                if (this.getName(i) === name) {\r\n                    return i;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        List.prototype.indexOfRawIndex = function (rawIndex) {\r\n            if (rawIndex >= this._rawCount || rawIndex < 0) {\r\n                return -1;\r\n            }\r\n            if (!this._indices) {\r\n                return rawIndex;\r\n            }\r\n            var indices = this._indices;\r\n            var rawDataIndex = indices[rawIndex];\r\n            if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\r\n                return rawIndex;\r\n            }\r\n            var left = 0;\r\n            var right = this._count - 1;\r\n            while (left <= right) {\r\n                var mid = (left + right) / 2 | 0;\r\n                if (indices[mid] < rawIndex) {\r\n                    left = mid + 1;\r\n                }\r\n                else if (indices[mid] > rawIndex) {\r\n                    right = mid - 1;\r\n                }\r\n                else {\r\n                    return mid;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        List.prototype.indicesOfNearest = function (dim, value, maxDistance) {\r\n            var storage = this._storage;\r\n            var dimData = storage[dim];\r\n            var nearestIndices = [];\r\n            if (!dimData) {\r\n                return nearestIndices;\r\n            }\r\n            if (maxDistance == null) {\r\n                maxDistance = Infinity;\r\n            }\r\n            var minDist = Infinity;\r\n            var minDiff = -1;\r\n            var nearestIndicesLen = 0;\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                var dataIndex = this.getRawIndex(i);\r\n                var diff = value - dimData[dataIndex];\r\n                var dist = Math.abs(diff);\r\n                if (dist <= maxDistance) {\r\n                    if (dist < minDist\r\n                        || (dist === minDist && diff >= 0 && minDiff < 0)) {\r\n                        minDist = dist;\r\n                        minDiff = diff;\r\n                        nearestIndicesLen = 0;\r\n                    }\r\n                    if (diff === minDiff) {\r\n                        nearestIndices[nearestIndicesLen++] = i;\r\n                    }\r\n                }\r\n            }\r\n            nearestIndices.length = nearestIndicesLen;\r\n            return nearestIndices;\r\n        };\r\n        List.prototype.getRawDataItem = function (idx) {\r\n            if (!this._rawData.persistent) {\r\n                var val = [];\r\n                for (var i = 0; i < this.dimensions.length; i++) {\r\n                    var dim = this.dimensions[i];\r\n                    val.push(this.get(dim, idx));\r\n                }\r\n                return val;\r\n            }\r\n            else {\r\n                return this._rawData.getItem(this.getRawIndex(idx));\r\n            }\r\n        };\r\n        List.prototype.getName = function (idx) {\r\n            var rawIndex = this.getRawIndex(idx);\r\n            var name = this._nameList[rawIndex];\r\n            if (name == null && this._nameDimIdx != null) {\r\n                name = getIdNameFromStore(this, this._nameDimIdx, this._nameOrdinalMeta, rawIndex);\r\n            }\r\n            if (name == null) {\r\n                name = '';\r\n            }\r\n            return name;\r\n        };\r\n        List.prototype.getId = function (idx) {\r\n            return getId(this, this.getRawIndex(idx));\r\n        };\r\n        List.prototype.each = function (dims, cb, ctx, ctxCompat) {\r\n            var _this = this;\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var dimSize = dimNames.length;\r\n            var dimIndices = map$1(dimNames, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var storageArr = this._storageArr;\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                var rawIdx = this.getRawIndex(i);\r\n                switch (dimSize) {\r\n                    case 0:\r\n                        cb.call(fCtx, i);\r\n                        break;\r\n                    case 1:\r\n                        cb.call(fCtx, storageArr[dimIndices[0]][rawIdx], i);\r\n                        break;\r\n                    case 2:\r\n                        cb.call(fCtx, storageArr[dimIndices[0]][rawIdx], storageArr[dimIndices[1]][rawIdx], i);\r\n                        break;\r\n                    default:\r\n                        var k = 0;\r\n                        var value = [];\r\n                        for (; k < dimSize; k++) {\r\n                            value[k] = storageArr[dimIndices[k]][rawIdx];\r\n                        }\r\n                        value[k] = i;\r\n                        cb.apply(fCtx, value);\r\n                }\r\n            }\r\n        };\r\n        List.prototype.filterSelf = function (dims, cb, ctx, ctxCompat) {\r\n            var _this = this;\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var count = this.count();\r\n            var Ctor = getIndicesCtor(this);\r\n            var newIndices = new Ctor(count);\r\n            var value = [];\r\n            var dimSize = dimNames.length;\r\n            var offset = 0;\r\n            var dimIndices = map$1(dimNames, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var dim0 = dimIndices[0];\r\n            var storageArr = this._storageArr;\r\n            for (var i = 0; i < count; i++) {\r\n                var keep = void 0;\r\n                var rawIdx = this.getRawIndex(i);\r\n                if (dimSize === 0) {\r\n                    keep = cb.call(fCtx, i);\r\n                }\r\n                else if (dimSize === 1) {\r\n                    var val = storageArr[dim0][rawIdx];\r\n                    keep = cb.call(fCtx, val, i);\r\n                }\r\n                else {\r\n                    var k = 0;\r\n                    for (; k < dimSize; k++) {\r\n                        value[k] = storageArr[dimIndices[k]][rawIdx];\r\n                    }\r\n                    value[k] = i;\r\n                    keep = cb.apply(fCtx, value);\r\n                }\r\n                if (keep) {\r\n                    newIndices[offset++] = rawIdx;\r\n                }\r\n            }\r\n            if (offset < count) {\r\n                this._indices = newIndices;\r\n            }\r\n            this._count = offset;\r\n            this._extent = {};\r\n            this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return this;\r\n        };\r\n        List.prototype.selectRange = function (range) {\r\n            var _this = this;\r\n            var len = this._count;\r\n            if (!len) {\r\n                return;\r\n            }\r\n            var dimensions = [];\r\n            for (var dim in range) {\r\n                if (range.hasOwnProperty(dim)) {\r\n                    dimensions.push(dim);\r\n                }\r\n            }\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimensions);\r\n            }\r\n            var dimSize = dimensions.length;\r\n            if (!dimSize) {\r\n                return;\r\n            }\r\n            var originalCount = this.count();\r\n            var Ctor = getIndicesCtor(this);\r\n            var newIndices = new Ctor(originalCount);\r\n            var offset = 0;\r\n            var dim0 = dimensions[0];\r\n            var dimIndices = map$1(dimensions, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var min = range[dim0][0];\r\n            var max = range[dim0][1];\r\n            var storageArr = this._storageArr;\r\n            var quickFinished = false;\r\n            if (!this._indices) {\r\n                var idx = 0;\r\n                if (dimSize === 1) {\r\n                    var dimStorage = storageArr[dimIndices[0]];\r\n                    for (var i = 0; i < len; i++) {\r\n                        var val = dimStorage[i];\r\n                        if ((val >= min && val <= max) || isNaN(val)) {\r\n                            newIndices[offset++] = idx;\r\n                        }\r\n                        idx++;\r\n                    }\r\n                    quickFinished = true;\r\n                }\r\n                else if (dimSize === 2) {\r\n                    var dimStorage = storageArr[dimIndices[0]];\r\n                    var dimStorage2 = storageArr[dimIndices[1]];\r\n                    var min2 = range[dimensions[1]][0];\r\n                    var max2 = range[dimensions[1]][1];\r\n                    for (var i = 0; i < len; i++) {\r\n                        var val = dimStorage[i];\r\n                        var val2 = dimStorage2[i];\r\n                        if (((val >= min && val <= max) || isNaN(val))\r\n                            && ((val2 >= min2 && val2 <= max2) || isNaN(val2))) {\r\n                            newIndices[offset++] = idx;\r\n                        }\r\n                        idx++;\r\n                    }\r\n                    quickFinished = true;\r\n                }\r\n            }\r\n            if (!quickFinished) {\r\n                if (dimSize === 1) {\r\n                    for (var i = 0; i < originalCount; i++) {\r\n                        var rawIndex = this.getRawIndex(i);\r\n                        var val = storageArr[dimIndices[0]][rawIndex];\r\n                        if ((val >= min && val <= max) || isNaN(val)) {\r\n                            newIndices[offset++] = rawIndex;\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    for (var i = 0; i < originalCount; i++) {\r\n                        var keep = true;\r\n                        var rawIndex = this.getRawIndex(i);\r\n                        for (var k = 0; k < dimSize; k++) {\r\n                            var dimk = dimensions[k];\r\n                            var val = storageArr[dimIndices[k]][rawIndex];\r\n                            if (val < range[dimk][0] || val > range[dimk][1]) {\r\n                                keep = false;\r\n                            }\r\n                        }\r\n                        if (keep) {\r\n                            newIndices[offset++] = this.getRawIndex(i);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (offset < originalCount) {\r\n                this._indices = newIndices;\r\n            }\r\n            this._count = offset;\r\n            this._extent = {};\r\n            this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return this;\r\n        };\r\n        List.prototype.mapArray = function (dims, cb, ctx, ctxCompat) {\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            ctx = (ctx || ctxCompat || this);\r\n            var result = [];\r\n            this.each(dims, function () {\r\n                result.push(cb && cb.apply(this, arguments));\r\n            }, ctx);\r\n            return result;\r\n        };\r\n        List.prototype.map = function (dims, cb, ctx, ctxCompat) {\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var list = cloneListForMapAndSample(this, dimNames);\r\n            var storage = list._storage;\r\n            list._indices = this._indices;\r\n            list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            var tmpRetValue = [];\r\n            var dimSize = dimNames.length;\r\n            var dataCount = this.count();\r\n            var values = [];\r\n            var rawExtent = list._rawExtent;\r\n            for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\r\n                for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\r\n                    values[dimIndex] = this.get(dimNames[dimIndex], dataIndex);\r\n                }\r\n                values[dimSize] = dataIndex;\r\n                var retValue = cb && cb.apply(fCtx, values);\r\n                if (retValue != null) {\r\n                    if (typeof retValue !== 'object') {\r\n                        tmpRetValue[0] = retValue;\r\n                        retValue = tmpRetValue;\r\n                    }\r\n                    var rawIndex = this.getRawIndex(dataIndex);\r\n                    for (var i = 0; i < retValue.length; i++) {\r\n                        var dim = dimNames[i];\r\n                        var val = retValue[i];\r\n                        var rawExtentOnDim = rawExtent[dim];\r\n                        var dimStore = storage[dim];\r\n                        if (dimStore) {\r\n                            dimStore[rawIndex] = val;\r\n                        }\r\n                        if (val < rawExtentOnDim[0]) {\r\n                            rawExtentOnDim[0] = val;\r\n                        }\r\n                        if (val > rawExtentOnDim[1]) {\r\n                            rawExtentOnDim[1] = val;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return list;\r\n        };\r\n        List.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) {\r\n            var list = cloneListForMapAndSample(this, [dimension]);\r\n            var targetStorage = list._storage;\r\n            var frameValues = [];\r\n            var frameSize = mathFloor(1 / rate);\r\n            var dimStore = targetStorage[dimension];\r\n            var len = this.count();\r\n            var rawExtentOnDim = list._rawExtent[dimension];\r\n            var newIndices = new (getIndicesCtor(this))(len);\r\n            var offset = 0;\r\n            for (var i = 0; i < len; i += frameSize) {\r\n                if (frameSize > len - i) {\r\n                    frameSize = len - i;\r\n                    frameValues.length = frameSize;\r\n                }\r\n                for (var k = 0; k < frameSize; k++) {\r\n                    var dataIdx = this.getRawIndex(i + k);\r\n                    frameValues[k] = dimStore[dataIdx];\r\n                }\r\n                var value = sampleValue(frameValues);\r\n                var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\r\n                dimStore[sampleFrameIdx] = value;\r\n                if (value < rawExtentOnDim[0]) {\r\n                    rawExtentOnDim[0] = value;\r\n                }\r\n                if (value > rawExtentOnDim[1]) {\r\n                    rawExtentOnDim[1] = value;\r\n                }\r\n                newIndices[offset++] = sampleFrameIdx;\r\n            }\r\n            list._count = offset;\r\n            list._indices = newIndices;\r\n            list.getRawIndex = getRawIndexWithIndices;\r\n            return list;\r\n        };\r\n        List.prototype.lttbDownSample = function (valueDimension, rate) {\r\n            var list = cloneListForMapAndSample(this, []);\r\n            var targetStorage = list._storage;\r\n            var dimStore = targetStorage[valueDimension];\r\n            var len = this.count();\r\n            var newIndices = new (getIndicesCtor(this))(len);\r\n            var sampledIndex = 0;\r\n            var frameSize = mathFloor(1 / rate);\r\n            var currentRawIndex = this.getRawIndex(0);\r\n            var maxArea;\r\n            var area;\r\n            var nextRawIndex;\r\n            newIndices[sampledIndex++] = currentRawIndex;\r\n            for (var i = 1; i < len - 1; i += frameSize) {\r\n                var nextFrameStart = Math.min(i + frameSize, len - 1);\r\n                var nextFrameEnd = Math.min(i + frameSize * 2, len);\r\n                var avgX = (nextFrameEnd + nextFrameStart) / 2;\r\n                var avgY = 0;\r\n                for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) {\r\n                    var rawIndex = this.getRawIndex(idx);\r\n                    var y = dimStore[rawIndex];\r\n                    if (isNaN(y)) {\r\n                        continue;\r\n                    }\r\n                    avgY += y;\r\n                }\r\n                avgY /= (nextFrameEnd - nextFrameStart);\r\n                var frameStart = i;\r\n                var frameEnd = Math.min(i + frameSize, len);\r\n                var pointAX = i - 1;\r\n                var pointAY = dimStore[currentRawIndex];\r\n                maxArea = -1;\r\n                nextRawIndex = frameStart;\r\n                for (var idx = frameStart; idx < frameEnd; idx++) {\r\n                    var rawIndex = this.getRawIndex(idx);\r\n                    var y = dimStore[rawIndex];\r\n                    if (isNaN(y)) {\r\n                        continue;\r\n                    }\r\n                    area = Math.abs((pointAX - avgX) * (y - pointAY)\r\n                        - (pointAX - idx) * (avgY - pointAY));\r\n                    if (area > maxArea) {\r\n                        maxArea = area;\r\n                        nextRawIndex = rawIndex;\r\n                    }\r\n                }\r\n                newIndices[sampledIndex++] = nextRawIndex;\r\n                currentRawIndex = nextRawIndex;\r\n            }\r\n            newIndices[sampledIndex++] = this.getRawIndex(len - 1);\r\n            list._count = sampledIndex;\r\n            list._indices = newIndices;\r\n            list.getRawIndex = getRawIndexWithIndices;\r\n            return list;\r\n        };\r\n        List.prototype.getItemModel = function (idx) {\r\n            var hostModel = this.hostModel;\r\n            var dataItem = this.getRawDataItem(idx);\r\n            return new Model(dataItem, hostModel, hostModel && hostModel.ecModel);\r\n        };\r\n        List.prototype.diff = function (otherList) {\r\n            var thisList = this;\r\n            return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\r\n                return getId(otherList, idx);\r\n            }, function (idx) {\r\n                return getId(thisList, idx);\r\n            });\r\n        };\r\n        List.prototype.getVisual = function (key) {\r\n            var visual = this._visual;\r\n            return visual && visual[key];\r\n        };\r\n        List.prototype.setVisual = function (kvObj, val) {\r\n            this._visual = this._visual || {};\r\n            if (isObject$3(kvObj)) {\r\n                extend(this._visual, kvObj);\r\n            }\r\n            else {\r\n                this._visual[kvObj] = val;\r\n            }\r\n        };\r\n        List.prototype.getItemVisual = function (idx, key) {\r\n            var itemVisual = this._itemVisuals[idx];\r\n            var val = itemVisual && itemVisual[key];\r\n            if (val == null) {\r\n                return this.getVisual(key);\r\n            }\r\n            return val;\r\n        };\r\n        List.prototype.hasItemVisual = function () {\r\n            return this._itemVisuals.length > 0;\r\n        };\r\n        List.prototype.ensureUniqueItemVisual = function (idx, key) {\r\n            var itemVisuals = this._itemVisuals;\r\n            var itemVisual = itemVisuals[idx];\r\n            if (!itemVisual) {\r\n                itemVisual = itemVisuals[idx] = {};\r\n            }\r\n            var val = itemVisual[key];\r\n            if (val == null) {\r\n                val = this.getVisual(key);\r\n                if (isArray(val)) {\r\n                    val = val.slice();\r\n                }\r\n                else if (isObject$3(val)) {\r\n                    val = extend({}, val);\r\n                }\r\n                itemVisual[key] = val;\r\n            }\r\n            return val;\r\n        };\r\n        List.prototype.setItemVisual = function (idx, key, value) {\r\n            var itemVisual = this._itemVisuals[idx] || {};\r\n            this._itemVisuals[idx] = itemVisual;\r\n            if (isObject$3(key)) {\r\n                extend(itemVisual, key);\r\n            }\r\n            else {\r\n                itemVisual[key] = value;\r\n            }\r\n        };\r\n        List.prototype.clearAllVisual = function () {\r\n            this._visual = {};\r\n            this._itemVisuals = [];\r\n        };\r\n        List.prototype.setLayout = function (key, val) {\r\n            if (isObject$3(key)) {\r\n                for (var name_1 in key) {\r\n                    if (key.hasOwnProperty(name_1)) {\r\n                        this.setLayout(name_1, key[name_1]);\r\n                    }\r\n                }\r\n                return;\r\n            }\r\n            this._layout[key] = val;\r\n        };\r\n        List.prototype.getLayout = function (key) {\r\n            return this._layout[key];\r\n        };\r\n        List.prototype.getItemLayout = function (idx) {\r\n            return this._itemLayouts[idx];\r\n        };\r\n        List.prototype.setItemLayout = function (idx, layout, merge) {\r\n            this._itemLayouts[idx] = merge\r\n                ? extend(this._itemLayouts[idx] || {}, layout)\r\n                : layout;\r\n        };\r\n        List.prototype.clearItemLayouts = function () {\r\n            this._itemLayouts.length = 0;\r\n        };\r\n        List.prototype.setItemGraphicEl = function (idx, el) {\r\n            var hostModel = this.hostModel;\r\n            if (el) {\r\n                var ecData = getECData(el);\r\n                ecData.dataIndex = idx;\r\n                ecData.dataType = this.dataType;\r\n                ecData.seriesIndex = hostModel && hostModel.seriesIndex;\r\n                if (el.type === 'group') {\r\n                    el.traverse(setItemDataAndSeriesIndex, el);\r\n                }\r\n            }\r\n            this._graphicEls[idx] = el;\r\n        };\r\n        List.prototype.getItemGraphicEl = function (idx) {\r\n            return this._graphicEls[idx];\r\n        };\r\n        List.prototype.eachItemGraphicEl = function (cb, context) {\r\n            each(this._graphicEls, function (el, idx) {\r\n                if (el) {\r\n                    cb && cb.call(context, el, idx);\r\n                }\r\n            });\r\n        };\r\n        List.prototype.cloneShallow = function (list) {\r\n            if (!list) {\r\n                var dimensionInfoList = map$1(this.dimensions, this.getDimensionInfo, this);\r\n                list = new List(dimensionInfoList, this.hostModel);\r\n            }\r\n            list._storage = this._storage;\r\n            list._storageArr = this._storageArr;\r\n            transferProperties(list, this);\r\n            if (this._indices) {\r\n                var Ctor = this._indices.constructor;\r\n                if (Ctor === Array) {\r\n                    var thisCount = this._indices.length;\r\n                    list._indices = new Ctor(thisCount);\r\n                    for (var i = 0; i < thisCount; i++) {\r\n                        list._indices[i] = this._indices[i];\r\n                    }\r\n                }\r\n                else {\r\n                    list._indices = new Ctor(this._indices);\r\n                }\r\n            }\r\n            else {\r\n                list._indices = null;\r\n            }\r\n            list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return list;\r\n        };\r\n        List.prototype.wrapMethod = function (methodName, injectFunction) {\r\n            var originalMethod = this[methodName];\r\n            if (typeof originalMethod !== 'function') {\r\n                return;\r\n            }\r\n            this.__wrappedMethods = this.__wrappedMethods || [];\r\n            this.__wrappedMethods.push(methodName);\r\n            this[methodName] = function () {\r\n                var res = originalMethod.apply(this, arguments);\r\n                return injectFunction.apply(this, [res].concat(slice(arguments)));\r\n            };\r\n        };\r\n        List.internalField = (function () {\r\n            defaultDimValueGetters = {\r\n                arrayRows: getDimValueSimply,\r\n                objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    return parseDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\r\n                },\r\n                keyedColumns: getDimValueSimply,\r\n                original: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value);\r\n                    if (!this._rawData.pure && isDataItemOption(dataItem)) {\r\n                        this.hasItemOption = true;\r\n                    }\r\n                    return parseDataValue((value instanceof Array)\r\n                        ? value[dimIndex]\r\n                        : value, this._dimensionInfos[dimName]);\r\n                },\r\n                typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    return dataItem[dimIndex];\r\n                }\r\n            };\r\n            function getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\r\n                return parseDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\r\n            }\r\n            prepareInvertedIndex = function (list) {\r\n                var invertedIndicesMap = list._invertedIndicesMap;\r\n                each(invertedIndicesMap, function (invertedIndices, dim) {\r\n                    var dimInfo = list._dimensionInfos[dim];\r\n                    var ordinalMeta = dimInfo.ordinalMeta;\r\n                    if (ordinalMeta) {\r\n                        invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length);\r\n                        for (var i = 0; i < invertedIndices.length; i++) {\r\n                            invertedIndices[i] = INDEX_NOT_FOUND;\r\n                        }\r\n                        for (var i = 0; i < list._count; i++) {\r\n                            invertedIndices[list.get(dim, i)] = i;\r\n                        }\r\n                    }\r\n                });\r\n            };\r\n            getIdNameFromStore = function (list, dimIdx, ordinalMeta, rawIndex) {\r\n                var val;\r\n                var chunk = list._storageArr[dimIdx];\r\n                if (chunk) {\r\n                    val = chunk[rawIndex];\r\n                    if (ordinalMeta && ordinalMeta.categories.length) {\r\n                        val = ordinalMeta.categories[val];\r\n                    }\r\n                }\r\n                return convertOptionIdName(val, null);\r\n            };\r\n            getIndicesCtor = function (list) {\r\n                return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\r\n            };\r\n            prepareStorage = function (storage, dimInfo, end, append) {\r\n                var DataCtor = dataCtors[dimInfo.type];\r\n                var dim = dimInfo.name;\r\n                if (append) {\r\n                    var oldStore = storage[dim];\r\n                    var oldLen = oldStore && oldStore.length;\r\n                    if (!(oldLen === end)) {\r\n                        var newStore = new DataCtor(end);\r\n                        for (var j = 0; j < oldLen; j++) {\r\n                            newStore[j] = oldStore[j];\r\n                        }\r\n                        storage[dim] = newStore;\r\n                    }\r\n                }\r\n                else {\r\n                    storage[dim] = new DataCtor(end);\r\n                }\r\n            };\r\n            getRawIndexWithoutIndices = function (idx) {\r\n                return idx;\r\n            };\r\n            getRawIndexWithIndices = function (idx) {\r\n                if (idx < this._count && idx >= 0) {\r\n                    return this._indices[idx];\r\n                }\r\n                return -1;\r\n            };\r\n            getId = function (list, rawIndex) {\r\n                var id = list._idList[rawIndex];\r\n                if (id == null && list._idDimIdx != null) {\r\n                    id = getIdNameFromStore(list, list._idDimIdx, list._idOrdinalMeta, rawIndex);\r\n                }\r\n                if (id == null) {\r\n                    id = ID_PREFIX + rawIndex;\r\n                }\r\n                return id;\r\n            };\r\n            normalizeDimensions = function (dimensions) {\r\n                if (!isArray(dimensions)) {\r\n                    dimensions = dimensions != null ? [dimensions] : [];\r\n                }\r\n                return dimensions;\r\n            };\r\n            validateDimensions = function (list, dims) {\r\n                for (var i = 0; i < dims.length; i++) {\r\n                    if (!list._dimensionInfos[dims[i]]) {\r\n                        console.error('Unkown dimension ' + dims[i]);\r\n                    }\r\n                }\r\n            };\r\n            cloneListForMapAndSample = function (original, excludeDimensions) {\r\n                var allDimensions = original.dimensions;\r\n                var list = new List(map$1(allDimensions, original.getDimensionInfo, original), original.hostModel);\r\n                transferProperties(list, original);\r\n                var storage = list._storage = {};\r\n                var originalStorage = original._storage;\r\n                var storageArr = list._storageArr = [];\r\n                for (var i = 0; i < allDimensions.length; i++) {\r\n                    var dim = allDimensions[i];\r\n                    if (originalStorage[dim]) {\r\n                        if (indexOf(excludeDimensions, dim) >= 0) {\r\n                            storage[dim] = cloneChunk(originalStorage[dim]);\r\n                            list._rawExtent[dim] = getInitialExtent();\r\n                            list._extent[dim] = null;\r\n                        }\r\n                        else {\r\n                            storage[dim] = originalStorage[dim];\r\n                        }\r\n                        storageArr.push(storage[dim]);\r\n                    }\r\n                }\r\n                return list;\r\n            };\r\n            function cloneChunk(originalChunk) {\r\n                var Ctor = originalChunk.constructor;\r\n                return Ctor === Array\r\n                    ? originalChunk.slice()\r\n                    : new Ctor(originalChunk);\r\n            }\r\n            getInitialExtent = function () {\r\n                return [Infinity, -Infinity];\r\n            };\r\n            setItemDataAndSeriesIndex = function (child) {\r\n                var childECData = getECData(child);\r\n                var thisECData = getECData(this);\r\n                childECData.seriesIndex = thisECData.seriesIndex;\r\n                childECData.dataIndex = thisECData.dataIndex;\r\n                childECData.dataType = thisECData.dataType;\r\n            };\r\n            transferProperties = function (target, source) {\r\n                each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\r\n                    if (source.hasOwnProperty(propName)) {\r\n                        target[propName] = source[propName];\r\n                    }\r\n                });\r\n                target.__wrappedMethods = source.__wrappedMethods;\r\n                each(CLONE_PROPERTIES, function (propName) {\r\n                    target[propName] = clone(source[propName]);\r\n                });\r\n                target._calculationInfo = extend({}, source._calculationInfo);\r\n            };\r\n            makeIdFromName = function (list, idx) {\r\n                var nameList = list._nameList;\r\n                var idList = list._idList;\r\n                var nameDimIdx = list._nameDimIdx;\r\n                var idDimIdx = list._idDimIdx;\r\n                var name = nameList[idx];\r\n                var id = idList[idx];\r\n                if (name == null && nameDimIdx != null) {\r\n                    nameList[idx] = name = getIdNameFromStore(list, nameDimIdx, list._nameOrdinalMeta, idx);\r\n                }\r\n                if (id == null && idDimIdx != null) {\r\n                    idList[idx] = id = getIdNameFromStore(list, idDimIdx, list._idOrdinalMeta, idx);\r\n                }\r\n                if (id == null && name != null) {\r\n                    var nameRepeatCount = list._nameRepeatCount;\r\n                    var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1;\r\n                    id = name;\r\n                    if (nmCnt > 1) {\r\n                        id += '__ec__' + nmCnt;\r\n                    }\r\n                    idList[idx] = id;\r\n                }\r\n            };\r\n        })();\r\n        return List;\r\n    }());\n\n    function completeDimensions(sysDims, source, opt) {\r\n        if (!isSourceInstance(source)) {\r\n            source = createSourceFromSeriesDataOption(source);\r\n        }\r\n        opt = opt || {};\r\n        sysDims = (sysDims || []).slice();\r\n        var dimsDef = (opt.dimsDef || []).slice();\r\n        var dataDimNameMap = createHashMap();\r\n        var coordDimNameMap = createHashMap();\r\n        var result = [];\r\n        var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount);\r\n        for (var i = 0; i < dimCount; i++) {\r\n            var dimDefItemRaw = dimsDef[i];\r\n            var dimDefItem = dimsDef[i] = extend({}, isObject(dimDefItemRaw) ? dimDefItemRaw : { name: dimDefItemRaw });\r\n            var userDimName = dimDefItem.name;\r\n            var resultItem = result[i] = new DataDimensionInfo();\r\n            if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\r\n                resultItem.name = resultItem.displayName = userDimName;\r\n                dataDimNameMap.set(userDimName, i);\r\n            }\r\n            dimDefItem.type != null && (resultItem.type = dimDefItem.type);\r\n            dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\r\n        }\r\n        var encodeDef = opt.encodeDef;\r\n        if (!encodeDef && opt.encodeDefaulter) {\r\n            encodeDef = opt.encodeDefaulter(source, dimCount);\r\n        }\r\n        var encodeDefMap = createHashMap(encodeDef);\r\n        encodeDefMap.each(function (dataDimsRaw, coordDim) {\r\n            var dataDims = normalizeToArray(dataDimsRaw).slice();\r\n            if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\r\n                encodeDefMap.set(coordDim, false);\r\n                return;\r\n            }\r\n            var validDataDims = encodeDefMap.set(coordDim, []);\r\n            each(dataDims, function (resultDimIdxOrName, idx) {\r\n                var resultDimIdx = isString(resultDimIdxOrName)\r\n                    ? dataDimNameMap.get(resultDimIdxOrName)\r\n                    : resultDimIdxOrName;\r\n                if (resultDimIdx != null && resultDimIdx < dimCount) {\r\n                    validDataDims[idx] = resultDimIdx;\r\n                    applyDim(result[resultDimIdx], coordDim, idx);\r\n                }\r\n            });\r\n        });\r\n        var availDimIdx = 0;\r\n        each(sysDims, function (sysDimItemRaw) {\r\n            var coordDim;\r\n            var sysDimItemDimsDef;\r\n            var sysDimItemOtherDims;\r\n            var sysDimItem;\r\n            if (isString(sysDimItemRaw)) {\r\n                coordDim = sysDimItemRaw;\r\n                sysDimItem = {};\r\n            }\r\n            else {\r\n                sysDimItem = sysDimItemRaw;\r\n                coordDim = sysDimItem.name;\r\n                var ordinalMeta = sysDimItem.ordinalMeta;\r\n                sysDimItem.ordinalMeta = null;\r\n                sysDimItem = clone(sysDimItem);\r\n                sysDimItem.ordinalMeta = ordinalMeta;\r\n                sysDimItemDimsDef = sysDimItem.dimsDef;\r\n                sysDimItemOtherDims = sysDimItem.otherDims;\r\n                sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex =\r\n                    sysDimItem.dimsDef = sysDimItem.otherDims = null;\r\n            }\r\n            var dataDims = encodeDefMap.get(coordDim);\r\n            if (dataDims === false) {\r\n                return;\r\n            }\r\n            dataDims = normalizeToArray(dataDims);\r\n            if (!dataDims.length) {\r\n                for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\r\n                    while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\r\n                        availDimIdx++;\r\n                    }\r\n                    availDimIdx < result.length && dataDims.push(availDimIdx++);\r\n                }\r\n            }\r\n            each(dataDims, function (resultDimIdx, coordDimIndex) {\r\n                var resultItem = result[resultDimIdx];\r\n                applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\r\n                if (resultItem.name == null && sysDimItemDimsDef) {\r\n                    var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\r\n                    !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { name: sysDimItemDimsDefItem });\r\n                    resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\r\n                    resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\r\n                }\r\n                sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\r\n            });\r\n        });\r\n        function applyDim(resultItem, coordDim, coordDimIndex) {\r\n            if (VISUAL_DIMENSIONS.get(coordDim) != null) {\r\n                resultItem.otherDims[coordDim] = coordDimIndex;\r\n            }\r\n            else {\r\n                resultItem.coordDim = coordDim;\r\n                resultItem.coordDimIndex = coordDimIndex;\r\n                coordDimNameMap.set(coordDim, true);\r\n            }\r\n        }\r\n        var generateCoord = opt.generateCoord;\r\n        var generateCoordCount = opt.generateCoordCount;\r\n        var fromZero = generateCoordCount != null;\r\n        generateCoordCount = generateCoord ? (generateCoordCount || 1) : 0;\r\n        var extra = generateCoord || 'value';\r\n        for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\r\n            var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\r\n            var coordDim = resultItem.coordDim;\r\n            if (coordDim == null) {\r\n                resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\r\n                resultItem.coordDimIndex = 0;\r\n                if (!generateCoord || generateCoordCount <= 0) {\r\n                    resultItem.isExtraCoord = true;\r\n                }\r\n                generateCoordCount--;\r\n            }\r\n            resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap, false));\r\n            if (resultItem.type == null\r\n                && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must\r\n                    || (resultItem.isExtraCoord\r\n                        && (resultItem.otherDims.itemName != null\r\n                            || resultItem.otherDims.seriesName != null)))) {\r\n                resultItem.type = 'ordinal';\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function getDimCount(source, sysDims, dimsDef, optDimCount) {\r\n        var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\r\n        each(sysDims, function (sysDimItem) {\r\n            var sysDimItemDimsDef;\r\n            if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {\r\n                dimCount = Math.max(dimCount, sysDimItemDimsDef.length);\r\n            }\r\n        });\r\n        return dimCount;\r\n    }\r\n    function genName(name, map, fromZero) {\r\n        if (fromZero || map.get(name) != null) {\r\n            var i = 0;\r\n            while (map.get(name + i) != null) {\r\n                i++;\r\n            }\r\n            name += i;\r\n        }\r\n        map.set(name, true);\r\n        return name;\r\n    }\n\n    function createDimensions(source, opt) {\r\n        opt = opt || {};\r\n        return completeDimensions(opt.coordDimensions || [], source, {\r\n            dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\r\n            encodeDef: opt.encodeDefine || source.encodeDefine,\r\n            dimCount: opt.dimensionsCount,\r\n            encodeDefaulter: opt.encodeDefaulter,\r\n            generateCoord: opt.generateCoord,\r\n            generateCoordCount: opt.generateCoordCount\r\n        });\r\n    }\n\n    var CoordSysInfo = (function () {\r\n        function CoordSysInfo(coordSysName) {\r\n            this.coordSysDims = [];\r\n            this.axisMap = createHashMap();\r\n            this.categoryAxisMap = createHashMap();\r\n            this.coordSysName = coordSysName;\r\n        }\r\n        return CoordSysInfo;\r\n    }());\r\n    function getCoordSysInfoBySeries(seriesModel) {\r\n        var coordSysName = seriesModel.get('coordinateSystem');\r\n        var result = new CoordSysInfo(coordSysName);\r\n        var fetch = fetchers[coordSysName];\r\n        if (fetch) {\r\n            fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\r\n            return result;\r\n        }\r\n    }\r\n    var fetchers = {\r\n        cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\r\n            var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!xAxisModel) {\r\n                    throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\r\n                }\r\n                if (!yAxisModel) {\r\n                    throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\r\n                }\r\n            }\r\n            result.coordSysDims = ['x', 'y'];\r\n            axisMap.set('x', xAxisModel);\r\n            axisMap.set('y', yAxisModel);\r\n            if (isCategory(xAxisModel)) {\r\n                categoryAxisMap.set('x', xAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n            if (isCategory(yAxisModel)) {\r\n                categoryAxisMap.set('y', yAxisModel);\r\n                result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n            }\r\n        },\r\n        singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!singleAxisModel) {\r\n                    throw new Error('singleAxis should be specified.');\r\n                }\r\n            }\r\n            result.coordSysDims = ['single'];\r\n            axisMap.set('single', singleAxisModel);\r\n            if (isCategory(singleAxisModel)) {\r\n                categoryAxisMap.set('single', singleAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n        },\r\n        polar: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n            var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\r\n            var angleAxisModel = polarModel.findAxisModel('angleAxis');\r\n            if (__DEV__) {\r\n                if (!angleAxisModel) {\r\n                    throw new Error('angleAxis option not found');\r\n                }\r\n                if (!radiusAxisModel) {\r\n                    throw new Error('radiusAxis option not found');\r\n                }\r\n            }\r\n            result.coordSysDims = ['radius', 'angle'];\r\n            axisMap.set('radius', radiusAxisModel);\r\n            axisMap.set('angle', angleAxisModel);\r\n            if (isCategory(radiusAxisModel)) {\r\n                categoryAxisMap.set('radius', radiusAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n            if (isCategory(angleAxisModel)) {\r\n                categoryAxisMap.set('angle', angleAxisModel);\r\n                result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n            }\r\n        },\r\n        geo: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            result.coordSysDims = ['lng', 'lat'];\r\n        },\r\n        parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var ecModel = seriesModel.ecModel;\r\n            var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\r\n            var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\r\n            each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\r\n                var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\r\n                var axisDim = coordSysDims[index];\r\n                axisMap.set(axisDim, axisModel);\r\n                if (isCategory(axisModel)) {\r\n                    categoryAxisMap.set(axisDim, axisModel);\r\n                    if (result.firstCategoryDimIndex == null) {\r\n                        result.firstCategoryDimIndex = index;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    };\r\n    function isCategory(axisModel) {\r\n        return axisModel.get('type') === 'category';\r\n    }\n\n    function enableDataStack(seriesModel, dimensionInfoList, opt) {\r\n        opt = opt || {};\r\n        var byIndex = opt.byIndex;\r\n        var stackedCoordDimension = opt.stackedCoordDimension;\r\n        var mayStack = !!(seriesModel && seriesModel.get('stack'));\r\n        var stackedByDimInfo;\r\n        var stackedDimInfo;\r\n        var stackResultDimension;\r\n        var stackedOverDimension;\r\n        each(dimensionInfoList, function (dimensionInfo, index) {\r\n            if (isString(dimensionInfo)) {\r\n                dimensionInfoList[index] = dimensionInfo = {\r\n                    name: dimensionInfo\r\n                };\r\n            }\r\n            if (mayStack && !dimensionInfo.isExtraCoord) {\r\n                if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\r\n                    stackedByDimInfo = dimensionInfo;\r\n                }\r\n                if (!stackedDimInfo\r\n                    && dimensionInfo.type !== 'ordinal'\r\n                    && dimensionInfo.type !== 'time'\r\n                    && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\r\n                    stackedDimInfo = dimensionInfo;\r\n                }\r\n            }\r\n        });\r\n        if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\r\n            byIndex = true;\r\n        }\r\n        if (stackedDimInfo) {\r\n            stackResultDimension = '__\\0ecstackresult';\r\n            stackedOverDimension = '__\\0ecstackedover';\r\n            if (stackedByDimInfo) {\r\n                stackedByDimInfo.createInvertedIndices = true;\r\n            }\r\n            var stackedDimCoordDim_1 = stackedDimInfo.coordDim;\r\n            var stackedDimType = stackedDimInfo.type;\r\n            var stackedDimCoordIndex_1 = 0;\r\n            each(dimensionInfoList, function (dimensionInfo) {\r\n                if (dimensionInfo.coordDim === stackedDimCoordDim_1) {\r\n                    stackedDimCoordIndex_1++;\r\n                }\r\n            });\r\n            dimensionInfoList.push({\r\n                name: stackResultDimension,\r\n                coordDim: stackedDimCoordDim_1,\r\n                coordDimIndex: stackedDimCoordIndex_1,\r\n                type: stackedDimType,\r\n                isExtraCoord: true,\r\n                isCalculationCoord: true\r\n            });\r\n            stackedDimCoordIndex_1++;\r\n            dimensionInfoList.push({\r\n                name: stackedOverDimension,\r\n                coordDim: stackedOverDimension,\r\n                coordDimIndex: stackedDimCoordIndex_1,\r\n                type: stackedDimType,\r\n                isExtraCoord: true,\r\n                isCalculationCoord: true\r\n            });\r\n        }\r\n        return {\r\n            stackedDimension: stackedDimInfo && stackedDimInfo.name,\r\n            stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\r\n            isStackedByIndex: byIndex,\r\n            stackedOverDimension: stackedOverDimension,\r\n            stackResultDimension: stackResultDimension\r\n        };\r\n    }\r\n    function isDimensionStacked(data, stackedDim) {\r\n        return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension');\r\n    }\r\n    function getStackedDimension(data, targetDim) {\r\n        return isDimensionStacked(data, targetDim)\r\n            ? data.getCalculationInfo('stackResultDimension')\r\n            : targetDim;\r\n    }\n\n    function createListFromArray(source, seriesModel, opt) {\r\n        opt = opt || {};\r\n        if (!isSourceInstance(source)) {\r\n            source = createSourceFromSeriesDataOption(source);\r\n        }\r\n        var coordSysName = seriesModel.get('coordinateSystem');\r\n        var registeredCoordSys = CoordinateSystemManager.get(coordSysName);\r\n        var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\r\n        var coordSysDimDefs;\r\n        if (coordSysInfo && coordSysInfo.coordSysDims) {\r\n            coordSysDimDefs = map(coordSysInfo.coordSysDims, function (dim) {\r\n                var dimInfo = {\r\n                    name: dim\r\n                };\r\n                var axisModel = coordSysInfo.axisMap.get(dim);\r\n                if (axisModel) {\r\n                    var axisType = axisModel.get('type');\r\n                    dimInfo.type = getDimensionTypeByAxis(axisType);\r\n                }\r\n                return dimInfo;\r\n            });\r\n        }\r\n        if (!coordSysDimDefs) {\r\n            coordSysDimDefs = (registeredCoordSys && (registeredCoordSys.getDimensionsInfo\r\n                ? registeredCoordSys.getDimensionsInfo()\r\n                : registeredCoordSys.dimensions.slice())) || ['x', 'y'];\r\n        }\r\n        var useEncodeDefaulter = opt.useEncodeDefaulter;\r\n        var dimInfoList = createDimensions(source, {\r\n            coordDimensions: coordSysDimDefs,\r\n            generateCoord: opt.generateCoord,\r\n            encodeDefaulter: isFunction(useEncodeDefaulter)\r\n                ? useEncodeDefaulter\r\n                : useEncodeDefaulter\r\n                    ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel)\r\n                    : null\r\n        });\r\n        var firstCategoryDimIndex;\r\n        var hasNameEncode;\r\n        coordSysInfo && each(dimInfoList, function (dimInfo, dimIndex) {\r\n            var coordDim = dimInfo.coordDim;\r\n            var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\r\n            if (categoryAxisModel) {\r\n                if (firstCategoryDimIndex == null) {\r\n                    firstCategoryDimIndex = dimIndex;\r\n                }\r\n                dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\r\n            }\r\n            if (dimInfo.otherDims.itemName != null) {\r\n                hasNameEncode = true;\r\n            }\r\n        });\r\n        if (!hasNameEncode && firstCategoryDimIndex != null) {\r\n            dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\r\n        }\r\n        var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\r\n        var list = new List(dimInfoList, seriesModel);\r\n        list.setCalculationInfo(stackCalculationInfo);\r\n        var dimValueGetter = (firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source))\r\n            ? function (itemOpt, dimName, dataIndex, dimIndex) {\r\n                return dimIndex === firstCategoryDimIndex\r\n                    ? dataIndex\r\n                    : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\r\n            }\r\n            : null;\r\n        list.hasItemOption = false;\r\n        list.initData(source, null, dimValueGetter);\r\n        return list;\r\n    }\r\n    function isNeedCompleteOrdinalData(source) {\r\n        if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var sampleItem = firstDataNotNull(source.data || []);\r\n            return sampleItem != null\r\n                && !isArray(getDataItemValue(sampleItem));\r\n        }\r\n    }\r\n    function firstDataNotNull(data) {\r\n        var i = 0;\r\n        while (i < data.length && data[i] == null) {\r\n            i++;\r\n        }\r\n        return data[i];\r\n    }\n\n    var Scale = (function () {\r\n        function Scale(setting) {\r\n            this._setting = setting || {};\r\n            this._extent = [Infinity, -Infinity];\r\n        }\r\n        Scale.prototype.getSetting = function (name) {\r\n            return this._setting[name];\r\n        };\r\n        Scale.prototype.unionExtent = function (other) {\r\n            var extent = this._extent;\r\n            other[0] < extent[0] && (extent[0] = other[0]);\r\n            other[1] > extent[1] && (extent[1] = other[1]);\r\n        };\r\n        Scale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        Scale.prototype.getExtent = function () {\r\n            return this._extent.slice();\r\n        };\r\n        Scale.prototype.setExtent = function (start, end) {\r\n            var thisExtent = this._extent;\r\n            if (!isNaN(start)) {\r\n                thisExtent[0] = start;\r\n            }\r\n            if (!isNaN(end)) {\r\n                thisExtent[1] = end;\r\n            }\r\n        };\r\n        Scale.prototype.isInExtentRange = function (value) {\r\n            return this._extent[0] <= value && this._extent[1] >= value;\r\n        };\r\n        Scale.prototype.isBlank = function () {\r\n            return this._isBlank;\r\n        };\r\n        Scale.prototype.setBlank = function (isBlank) {\r\n            this._isBlank = isBlank;\r\n        };\r\n        return Scale;\r\n    }());\r\n    enableClassManagement(Scale, {\r\n        registerWhenExtend: true\r\n    });\n\n    var OrdinalMeta = (function () {\r\n        function OrdinalMeta(opt) {\r\n            this.categories = opt.categories || [];\r\n            this._needCollect = opt.needCollect;\r\n            this._deduplication = opt.deduplication;\r\n        }\r\n        OrdinalMeta.createByAxisModel = function (axisModel) {\r\n            var option = axisModel.option;\r\n            var data = option.data;\r\n            var categories = data && map(data, getName);\r\n            return new OrdinalMeta({\r\n                categories: categories,\r\n                needCollect: !categories,\r\n                deduplication: option.dedplication !== false\r\n            });\r\n        };\r\n        OrdinalMeta.prototype.getOrdinal = function (category) {\r\n            return this._getOrCreateMap().get(category);\r\n        };\r\n        OrdinalMeta.prototype.parseAndCollect = function (category) {\r\n            var index;\r\n            var needCollect = this._needCollect;\r\n            if (typeof category !== 'string' && !needCollect) {\r\n                return category;\r\n            }\r\n            if (needCollect && !this._deduplication) {\r\n                index = this.categories.length;\r\n                this.categories[index] = category;\r\n                return index;\r\n            }\r\n            var map = this._getOrCreateMap();\r\n            index = map.get(category);\r\n            if (index == null) {\r\n                if (needCollect) {\r\n                    index = this.categories.length;\r\n                    this.categories[index] = category;\r\n                    map.set(category, index);\r\n                }\r\n                else {\r\n                    index = NaN;\r\n                }\r\n            }\r\n            return index;\r\n        };\r\n        OrdinalMeta.prototype._getOrCreateMap = function () {\r\n            return this._map || (this._map = createHashMap(this.categories));\r\n        };\r\n        return OrdinalMeta;\r\n    }());\r\n    function getName(obj) {\r\n        if (isObject(obj) && obj.value != null) {\r\n            return obj.value;\r\n        }\r\n        else {\r\n            return obj + '';\r\n        }\r\n    }\n\n    var roundNumber = round$1;\r\n    function intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\r\n        var result = {};\r\n        var span = extent[1] - extent[0];\r\n        var interval = result.interval = nice(span / splitNumber, true);\r\n        if (minInterval != null && interval < minInterval) {\r\n            interval = result.interval = minInterval;\r\n        }\r\n        if (maxInterval != null && interval > maxInterval) {\r\n            interval = result.interval = maxInterval;\r\n        }\r\n        var precision = result.intervalPrecision = getIntervalPrecision(interval);\r\n        var niceTickExtent = result.niceTickExtent = [\r\n            roundNumber(Math.ceil(extent[0] / interval) * interval, precision),\r\n            roundNumber(Math.floor(extent[1] / interval) * interval, precision)\r\n        ];\r\n        fixExtent(niceTickExtent, extent);\r\n        return result;\r\n    }\r\n    function getIntervalPrecision(interval) {\r\n        return getPrecisionSafe(interval) + 2;\r\n    }\r\n    function clamp(niceTickExtent, idx, extent) {\r\n        niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\r\n    }\r\n    function fixExtent(niceTickExtent, extent) {\r\n        !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\r\n        !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\r\n        clamp(niceTickExtent, 0, extent);\r\n        clamp(niceTickExtent, 1, extent);\r\n        if (niceTickExtent[0] > niceTickExtent[1]) {\r\n            niceTickExtent[0] = niceTickExtent[1];\r\n        }\r\n    }\r\n    function contain$1(val, extent) {\r\n        return val >= extent[0] && val <= extent[1];\r\n    }\r\n    function normalize$1(val, extent) {\r\n        if (extent[1] === extent[0]) {\r\n            return 0.5;\r\n        }\r\n        return (val - extent[0]) / (extent[1] - extent[0]);\r\n    }\r\n    function scale$2(val, extent) {\r\n        return val * (extent[1] - extent[0]) + extent[0];\r\n    }\n\n    var OrdinalScale = (function (_super) {\r\n        __extends(OrdinalScale, _super);\r\n        function OrdinalScale(setting) {\r\n            var _this = _super.call(this, setting) || this;\r\n            _this.type = 'ordinal';\r\n            var ordinalMeta = _this.getSetting('ordinalMeta');\r\n            if (!ordinalMeta) {\r\n                ordinalMeta = new OrdinalMeta({});\r\n            }\r\n            if (isArray(ordinalMeta)) {\r\n                ordinalMeta = new OrdinalMeta({\r\n                    categories: map(ordinalMeta, function (item) { return (isObject(item) ? item.value : item); })\r\n                });\r\n            }\r\n            _this._ordinalMeta = ordinalMeta;\r\n            _this._categorySortInfo = [];\r\n            _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1];\r\n            return _this;\r\n        }\r\n        OrdinalScale.prototype.parse = function (val) {\r\n            return typeof val === 'string'\r\n                ? this._ordinalMeta.getOrdinal(val)\r\n                : Math.round(val);\r\n        };\r\n        OrdinalScale.prototype.contain = function (rank) {\r\n            rank = this.parse(rank);\r\n            return contain$1(rank, this._extent)\r\n                && this._ordinalMeta.categories[rank] != null;\r\n        };\r\n        OrdinalScale.prototype.normalize = function (val) {\r\n            val = this.getCategoryIndex(this.parse(val));\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        OrdinalScale.prototype.scale = function (val) {\r\n            val = this.getCategoryIndex(val);\r\n            return Math.round(scale$2(val, this._extent));\r\n        };\r\n        OrdinalScale.prototype.getTicks = function () {\r\n            var ticks = [];\r\n            var extent = this._extent;\r\n            var rank = extent[0];\r\n            while (rank <= extent[1]) {\r\n                ticks.push({\r\n                    value: this.getCategoryIndex(rank)\r\n                });\r\n                rank++;\r\n            }\r\n            return ticks;\r\n        };\r\n        OrdinalScale.prototype.getMinorTicks = function (splitNumber) {\r\n            return;\r\n        };\r\n        OrdinalScale.prototype.setCategorySortInfo = function (info) {\r\n            this._categorySortInfo = info;\r\n        };\r\n        OrdinalScale.prototype.getCategorySortInfo = function () {\r\n            return this._categorySortInfo;\r\n        };\r\n        OrdinalScale.prototype.getCategoryIndex = function (n) {\r\n            if (this._categorySortInfo.length) {\r\n                return this._categorySortInfo[n].beforeSortIndex;\r\n            }\r\n            else {\r\n                return n;\r\n            }\r\n        };\r\n        OrdinalScale.prototype.getRawIndex = function (displayIndex) {\r\n            if (this._categorySortInfo.length) {\r\n                return this._categorySortInfo[displayIndex].ordinalNumber;\r\n            }\r\n            else {\r\n                return displayIndex;\r\n            }\r\n        };\r\n        OrdinalScale.prototype.getLabel = function (tick) {\r\n            if (!this.isBlank()) {\r\n                var rawIndex = this.getRawIndex(tick.value);\r\n                var cateogry = this._ordinalMeta.categories[rawIndex];\r\n                return cateogry == null ? '' : cateogry + '';\r\n            }\r\n        };\r\n        OrdinalScale.prototype.count = function () {\r\n            return this._extent[1] - this._extent[0] + 1;\r\n        };\r\n        OrdinalScale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        OrdinalScale.prototype.isInExtentRange = function (value) {\r\n            value = this.getCategoryIndex(value);\r\n            return this._extent[0] <= value && this._extent[1] >= value;\r\n        };\r\n        OrdinalScale.prototype.getOrdinalMeta = function () {\r\n            return this._ordinalMeta;\r\n        };\r\n        OrdinalScale.prototype.niceTicks = function () { };\r\n        OrdinalScale.prototype.niceExtent = function () { };\r\n        OrdinalScale.type = 'ordinal';\r\n        return OrdinalScale;\r\n    }(Scale));\r\n    Scale.registerClass(OrdinalScale);\n\n    var roundNumber$1 = round$1;\r\n    var IntervalScale = (function (_super) {\r\n        __extends(IntervalScale, _super);\r\n        function IntervalScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'interval';\r\n            _this._interval = 0;\r\n            _this._intervalPrecision = 2;\r\n            return _this;\r\n        }\r\n        IntervalScale.prototype.parse = function (val) {\r\n            return val;\r\n        };\r\n        IntervalScale.prototype.contain = function (val) {\r\n            return contain$1(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.normalize = function (val) {\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.scale = function (val) {\r\n            return scale$2(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.setExtent = function (start, end) {\r\n            var thisExtent = this._extent;\r\n            if (!isNaN(start)) {\r\n                thisExtent[0] = parseFloat(start);\r\n            }\r\n            if (!isNaN(end)) {\r\n                thisExtent[1] = parseFloat(end);\r\n            }\r\n        };\r\n        IntervalScale.prototype.unionExtent = function (other) {\r\n            var extent = this._extent;\r\n            other[0] < extent[0] && (extent[0] = other[0]);\r\n            other[1] > extent[1] && (extent[1] = other[1]);\r\n            this.setExtent(extent[0], extent[1]);\r\n        };\r\n        IntervalScale.prototype.getInterval = function () {\r\n            return this._interval;\r\n        };\r\n        IntervalScale.prototype.setInterval = function (interval) {\r\n            this._interval = interval;\r\n            this._niceExtent = this._extent.slice();\r\n            this._intervalPrecision = getIntervalPrecision(interval);\r\n        };\r\n        IntervalScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var interval = this._interval;\r\n            var extent = this._extent;\r\n            var niceTickExtent = this._niceExtent;\r\n            var intervalPrecision = this._intervalPrecision;\r\n            var ticks = [];\r\n            if (!interval) {\r\n                return ticks;\r\n            }\r\n            var safeLimit = 10000;\r\n            if (extent[0] < niceTickExtent[0]) {\r\n                if (expandToNicedExtent) {\r\n                    ticks.push({\r\n                        value: roundNumber$1(niceTickExtent[0] - interval, intervalPrecision)\r\n                    });\r\n                }\r\n                else {\r\n                    ticks.push({\r\n                        value: extent[0]\r\n                    });\r\n                }\r\n            }\r\n            var tick = niceTickExtent[0];\r\n            while (tick <= niceTickExtent[1]) {\r\n                ticks.push({\r\n                    value: tick\r\n                });\r\n                tick = roundNumber$1(tick + interval, intervalPrecision);\r\n                if (tick === ticks[ticks.length - 1].value) {\r\n                    break;\r\n                }\r\n                if (ticks.length > safeLimit) {\r\n                    return [];\r\n                }\r\n            }\r\n            var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];\r\n            if (extent[1] > lastNiceTick) {\r\n                if (expandToNicedExtent) {\r\n                    ticks.push({\r\n                        value: roundNumber$1(lastNiceTick + interval, intervalPrecision)\r\n                    });\r\n                }\r\n                else {\r\n                    ticks.push({\r\n                        value: extent[1]\r\n                    });\r\n                }\r\n            }\r\n            return ticks;\r\n        };\r\n        IntervalScale.prototype.getMinorTicks = function (splitNumber) {\r\n            var ticks = this.getTicks(true);\r\n            var minorTicks = [];\r\n            var extent = this.getExtent();\r\n            for (var i = 1; i < ticks.length; i++) {\r\n                var nextTick = ticks[i];\r\n                var prevTick = ticks[i - 1];\r\n                var count = 0;\r\n                var minorTicksGroup = [];\r\n                var interval = nextTick.value - prevTick.value;\r\n                var minorInterval = interval / splitNumber;\r\n                while (count < splitNumber - 1) {\r\n                    var minorTick = roundNumber$1(prevTick.value + (count + 1) * minorInterval);\r\n                    if (minorTick > extent[0] && minorTick < extent[1]) {\r\n                        minorTicksGroup.push(minorTick);\r\n                    }\r\n                    count++;\r\n                }\r\n                minorTicks.push(minorTicksGroup);\r\n            }\r\n            return minorTicks;\r\n        };\r\n        IntervalScale.prototype.getLabel = function (data, opt) {\r\n            if (data == null) {\r\n                return '';\r\n            }\r\n            var precision = opt && opt.precision;\r\n            if (precision == null) {\r\n                precision = getPrecisionSafe(data.value) || 0;\r\n            }\r\n            else if (precision === 'auto') {\r\n                precision = this._intervalPrecision;\r\n            }\r\n            var dataNum = roundNumber$1(data.value, precision, true);\r\n            return addCommas(dataNum);\r\n        };\r\n        IntervalScale.prototype.niceTicks = function (splitNumber, minInterval, maxInterval) {\r\n            splitNumber = splitNumber || 5;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            if (!isFinite(span)) {\r\n                return;\r\n            }\r\n            if (span < 0) {\r\n                span = -span;\r\n                extent.reverse();\r\n            }\r\n            var result = intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\r\n            this._intervalPrecision = result.intervalPrecision;\r\n            this._interval = result.interval;\r\n            this._niceExtent = result.niceTickExtent;\r\n        };\r\n        IntervalScale.prototype.niceExtent = function (opt) {\r\n            var extent = this._extent;\r\n            if (extent[0] === extent[1]) {\r\n                if (extent[0] !== 0) {\r\n                    var expandSize = extent[0];\r\n                    if (!opt.fixMax) {\r\n                        extent[1] += expandSize / 2;\r\n                        extent[0] -= expandSize / 2;\r\n                    }\r\n                    else {\r\n                        extent[0] -= expandSize / 2;\r\n                    }\r\n                }\r\n                else {\r\n                    extent[1] = 1;\r\n                }\r\n            }\r\n            var span = extent[1] - extent[0];\r\n            if (!isFinite(span)) {\r\n                extent[0] = 0;\r\n                extent[1] = 1;\r\n            }\r\n            this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n            var interval = this._interval;\r\n            if (!opt.fixMin) {\r\n                extent[0] = roundNumber$1(Math.floor(extent[0] / interval) * interval);\r\n            }\r\n            if (!opt.fixMax) {\r\n                extent[1] = roundNumber$1(Math.ceil(extent[1] / interval) * interval);\r\n            }\r\n        };\r\n        IntervalScale.type = 'interval';\r\n        return IntervalScale;\r\n    }(Scale));\r\n    Scale.registerClass(IntervalScale);\n\n    var STACK_PREFIX = '__ec_stack_';\r\n    var LARGE_BAR_MIN_WIDTH = 0.5;\r\n    var LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\n    function getSeriesStackId(seriesModel) {\r\n        return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\r\n    }\r\n    function getAxisKey(axis) {\r\n        return axis.dim + axis.index;\r\n    }\r\n    function prepareLayoutBarSeries(seriesType, ecModel) {\r\n        var seriesModels = [];\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\r\n                seriesModels.push(seriesModel);\r\n            }\r\n        });\r\n        return seriesModels;\r\n    }\r\n    function getValueAxesMinGaps(barSeries) {\r\n        var axisValues = {};\r\n        each(barSeries, function (seriesModel) {\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var key = baseAxis.dim + '_' + baseAxis.index;\r\n            var dim = data.mapDimension(baseAxis.dim);\r\n            for (var i = 0, cnt = data.count(); i < cnt; ++i) {\r\n                var value = data.get(dim, i);\r\n                if (!axisValues[key]) {\r\n                    axisValues[key] = [value];\r\n                }\r\n                else {\r\n                    axisValues[key].push(value);\r\n                }\r\n            }\r\n        });\r\n        var axisMinGaps = {};\r\n        for (var key in axisValues) {\r\n            if (axisValues.hasOwnProperty(key)) {\r\n                var valuesInAxis = axisValues[key];\r\n                if (valuesInAxis) {\r\n                    valuesInAxis.sort(function (a, b) {\r\n                        return a - b;\r\n                    });\r\n                    var min = null;\r\n                    for (var j = 1; j < valuesInAxis.length; ++j) {\r\n                        var delta = valuesInAxis[j] - valuesInAxis[j - 1];\r\n                        if (delta > 0) {\r\n                            min = min === null ? delta : Math.min(min, delta);\r\n                        }\r\n                    }\r\n                    axisMinGaps[key] = min;\r\n                }\r\n            }\r\n        }\r\n        return axisMinGaps;\r\n    }\r\n    function makeColumnLayout(barSeries) {\r\n        var axisMinGaps = getValueAxesMinGaps(barSeries);\r\n        var seriesInfoList = [];\r\n        each(barSeries, function (seriesModel) {\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var axisExtent = baseAxis.getExtent();\r\n            var bandWidth;\r\n            if (baseAxis.type === 'category') {\r\n                bandWidth = baseAxis.getBandWidth();\r\n            }\r\n            else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\r\n                var key = baseAxis.dim + '_' + baseAxis.index;\r\n                var minGap = axisMinGaps[key];\r\n                var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\r\n                var scale = baseAxis.scale.getExtent();\r\n                var scaleSpan = Math.abs(scale[1] - scale[0]);\r\n                bandWidth = minGap\r\n                    ? extentSpan / scaleSpan * minGap\r\n                    : extentSpan;\r\n            }\r\n            else {\r\n                var data = seriesModel.getData();\r\n                bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\r\n            }\r\n            var barWidth = parsePercent$2(seriesModel.get('barWidth'), bandWidth);\r\n            var barMaxWidth = parsePercent$2(seriesModel.get('barMaxWidth'), bandWidth);\r\n            var barMinWidth = parsePercent$2(seriesModel.get('barMinWidth') || 1, bandWidth);\r\n            var barGap = seriesModel.get('barGap');\r\n            var barCategoryGap = seriesModel.get('barCategoryGap');\r\n            seriesInfoList.push({\r\n                bandWidth: bandWidth,\r\n                barWidth: barWidth,\r\n                barMaxWidth: barMaxWidth,\r\n                barMinWidth: barMinWidth,\r\n                barGap: barGap,\r\n                barCategoryGap: barCategoryGap,\r\n                axisKey: getAxisKey(baseAxis),\r\n                stackId: getSeriesStackId(seriesModel)\r\n            });\r\n        });\r\n        return doCalBarWidthAndOffset(seriesInfoList);\r\n    }\r\n    function doCalBarWidthAndOffset(seriesInfoList) {\r\n        var columnsMap = {};\r\n        each(seriesInfoList, function (seriesInfo, idx) {\r\n            var axisKey = seriesInfo.axisKey;\r\n            var bandWidth = seriesInfo.bandWidth;\r\n            var columnsOnAxis = columnsMap[axisKey] || {\r\n                bandWidth: bandWidth,\r\n                remainedWidth: bandWidth,\r\n                autoWidthCount: 0,\r\n                categoryGap: null,\r\n                gap: '20%',\r\n                stacks: {}\r\n            };\r\n            var stacks = columnsOnAxis.stacks;\r\n            columnsMap[axisKey] = columnsOnAxis;\r\n            var stackId = seriesInfo.stackId;\r\n            if (!stacks[stackId]) {\r\n                columnsOnAxis.autoWidthCount++;\r\n            }\r\n            stacks[stackId] = stacks[stackId] || {\r\n                width: 0,\r\n                maxWidth: 0\r\n            };\r\n            var barWidth = seriesInfo.barWidth;\r\n            if (barWidth && !stacks[stackId].width) {\r\n                stacks[stackId].width = barWidth;\r\n                barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\r\n                columnsOnAxis.remainedWidth -= barWidth;\r\n            }\r\n            var barMaxWidth = seriesInfo.barMaxWidth;\r\n            barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\r\n            var barMinWidth = seriesInfo.barMinWidth;\r\n            barMinWidth && (stacks[stackId].minWidth = barMinWidth);\r\n            var barGap = seriesInfo.barGap;\r\n            (barGap != null) && (columnsOnAxis.gap = barGap);\r\n            var barCategoryGap = seriesInfo.barCategoryGap;\r\n            (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap);\r\n        });\r\n        var result = {};\r\n        each(columnsMap, function (columnsOnAxis, coordSysName) {\r\n            result[coordSysName] = {};\r\n            var stacks = columnsOnAxis.stacks;\r\n            var bandWidth = columnsOnAxis.bandWidth;\r\n            var categoryGapPercent = columnsOnAxis.categoryGap;\r\n            if (categoryGapPercent == null) {\r\n                var columnCount = keys(stacks).length;\r\n                categoryGapPercent = Math.max((35 - columnCount * 4), 15) + '%';\r\n            }\r\n            var categoryGap = parsePercent$2(categoryGapPercent, bandWidth);\r\n            var barGapPercent = parsePercent$2(columnsOnAxis.gap, 1);\r\n            var remainedWidth = columnsOnAxis.remainedWidth;\r\n            var autoWidthCount = columnsOnAxis.autoWidthCount;\r\n            var autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            each(stacks, function (column) {\r\n                var maxWidth = column.maxWidth;\r\n                var minWidth = column.minWidth;\r\n                if (!column.width) {\r\n                    var finalWidth = autoWidth;\r\n                    if (maxWidth && maxWidth < finalWidth) {\r\n                        finalWidth = Math.min(maxWidth, remainedWidth);\r\n                    }\r\n                    if (minWidth && minWidth > finalWidth) {\r\n                        finalWidth = minWidth;\r\n                    }\r\n                    if (finalWidth !== autoWidth) {\r\n                        column.width = finalWidth;\r\n                        remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n                        autoWidthCount--;\r\n                    }\r\n                }\r\n                else {\r\n                    var finalWidth = column.width;\r\n                    if (maxWidth) {\r\n                        finalWidth = Math.min(finalWidth, maxWidth);\r\n                    }\r\n                    if (minWidth) {\r\n                        finalWidth = Math.max(finalWidth, minWidth);\r\n                    }\r\n                    column.width = finalWidth;\r\n                    remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n                    autoWidthCount--;\r\n                }\r\n            });\r\n            autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            var widthSum = 0;\r\n            var lastColumn;\r\n            each(stacks, function (column, idx) {\r\n                if (!column.width) {\r\n                    column.width = autoWidth;\r\n                }\r\n                lastColumn = column;\r\n                widthSum += column.width * (1 + barGapPercent);\r\n            });\r\n            if (lastColumn) {\r\n                widthSum -= lastColumn.width * barGapPercent;\r\n            }\r\n            var offset = -widthSum / 2;\r\n            each(stacks, function (column, stackId) {\r\n                result[coordSysName][stackId] = result[coordSysName][stackId] || {\r\n                    bandWidth: bandWidth,\r\n                    offset: offset,\r\n                    width: column.width\r\n                };\r\n                offset += column.width * (1 + barGapPercent);\r\n            });\r\n        });\r\n        return result;\r\n    }\r\n    function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\r\n        if (barWidthAndOffset && axis) {\r\n            var result = barWidthAndOffset[getAxisKey(axis)];\r\n            if (result != null && seriesModel != null) {\r\n                return result[getSeriesStackId(seriesModel)];\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function layout(seriesType, ecModel) {\r\n        var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\r\n        var barWidthAndOffset = makeColumnLayout(seriesModels);\r\n        var lastStackCoords = {};\r\n        each(seriesModels, function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var stackId = getSeriesStackId(seriesModel);\r\n            var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\r\n            var columnOffset = columnLayoutInfo.offset;\r\n            var columnWidth = columnLayoutInfo.width;\r\n            var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n            var barMinHeight = seriesModel.get('barMinHeight') || 0;\r\n            lastStackCoords[stackId] = lastStackCoords[stackId] || [];\r\n            data.setLayout({\r\n                bandWidth: columnLayoutInfo.bandWidth,\r\n                offset: columnOffset,\r\n                size: columnWidth\r\n            });\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var stacked = isDimensionStacked(data, valueDim);\r\n            var isValueAxisH = valueAxis.isHorizontal();\r\n            var valueAxisStart = getValueAxisStart(baseAxis, valueAxis);\r\n            for (var idx = 0, len = data.count(); idx < len; idx++) {\r\n                var value = data.get(valueDim, idx);\r\n                var baseValue = data.get(baseDim, idx);\r\n                var sign = value >= 0 ? 'p' : 'n';\r\n                var baseCoord = valueAxisStart;\r\n                if (stacked) {\r\n                    if (!lastStackCoords[stackId][baseValue]) {\r\n                        lastStackCoords[stackId][baseValue] = {\r\n                            p: valueAxisStart,\r\n                            n: valueAxisStart\r\n                        };\r\n                    }\r\n                    baseCoord = lastStackCoords[stackId][baseValue][sign];\r\n                }\r\n                var x = void 0;\r\n                var y = void 0;\r\n                var width = void 0;\r\n                var height = void 0;\r\n                if (isValueAxisH) {\r\n                    var coord = cartesian.dataToPoint([value, baseValue]);\r\n                    x = baseCoord;\r\n                    y = coord[1] + columnOffset;\r\n                    width = coord[0] - valueAxisStart;\r\n                    height = columnWidth;\r\n                    if (Math.abs(width) < barMinHeight) {\r\n                        width = (width < 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    if (!isNaN(width)) {\r\n                        stacked && (lastStackCoords[stackId][baseValue][sign] += width);\r\n                    }\r\n                }\r\n                else {\r\n                    var coord = cartesian.dataToPoint([baseValue, value]);\r\n                    x = coord[0] + columnOffset;\r\n                    y = baseCoord;\r\n                    width = columnWidth;\r\n                    height = coord[1] - valueAxisStart;\r\n                    if (Math.abs(height) < barMinHeight) {\r\n                        height = (height <= 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    if (!isNaN(height)) {\r\n                        stacked && (lastStackCoords[stackId][baseValue][sign] += height);\r\n                    }\r\n                }\r\n                data.setItemLayout(idx, {\r\n                    x: x,\r\n                    y: y,\r\n                    width: width,\r\n                    height: height\r\n                });\r\n            }\r\n        });\r\n    }\r\n    var largeLayout = {\r\n        seriesType: 'bar',\r\n        plan: createRenderPlanner(),\r\n        reset: function (seriesModel) {\r\n            if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var coordLayout = cartesian.master.getRect();\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var valueAxisHorizontal = valueAxis.isHorizontal();\r\n            var valueDimIdx = valueAxisHorizontal ? 0 : 1;\r\n            var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\r\n            if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\r\n                barWidth = LARGE_BAR_MIN_WIDTH;\r\n            }\r\n            return {\r\n                progress: function (params, data) {\r\n                    var count = params.count;\r\n                    var largePoints = new LargeArr(count * 2);\r\n                    var largeBackgroundPoints = new LargeArr(count * 2);\r\n                    var largeDataIndices = new LargeArr(count);\r\n                    var dataIndex;\r\n                    var coord = [];\r\n                    var valuePair = [];\r\n                    var pointsOffset = 0;\r\n                    var idxOffset = 0;\r\n                    while ((dataIndex = params.next()) != null) {\r\n                        valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\r\n                        valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\r\n                        coord = cartesian.dataToPoint(valuePair, null, coord);\r\n                        largeBackgroundPoints[pointsOffset] =\r\n                            valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\r\n                        largePoints[pointsOffset++] = coord[0];\r\n                        largeBackgroundPoints[pointsOffset] =\r\n                            valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\r\n                        largePoints[pointsOffset++] = coord[1];\r\n                        largeDataIndices[idxOffset++] = dataIndex;\r\n                    }\r\n                    data.setLayout({\r\n                        largePoints: largePoints,\r\n                        largeDataIndices: largeDataIndices,\r\n                        largeBackgroundPoints: largeBackgroundPoints,\r\n                        barWidth: barWidth,\r\n                        valueAxisStart: getValueAxisStart(baseAxis, valueAxis),\r\n                        backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\r\n                        valueAxisHorizontal: valueAxisHorizontal\r\n                    });\r\n                }\r\n            };\r\n        }\r\n    };\r\n    function isOnCartesian(seriesModel) {\r\n        return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\r\n    }\r\n    function isInLargeMode(seriesModel) {\r\n        return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\r\n    }\r\n    function getValueAxisStart(baseAxis, valueAxis, stacked) {\r\n        return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\r\n    }\n\n    var bisect = function (a, x, lo, hi) {\r\n        while (lo < hi) {\r\n            var mid = lo + hi >>> 1;\r\n            if (a[mid][1] < x) {\r\n                lo = mid + 1;\r\n            }\r\n            else {\r\n                hi = mid;\r\n            }\r\n        }\r\n        return lo;\r\n    };\r\n    var TimeScale = (function (_super) {\r\n        __extends(TimeScale, _super);\r\n        function TimeScale(settings) {\r\n            var _this = _super.call(this, settings) || this;\r\n            _this.type = 'time';\r\n            return _this;\r\n        }\r\n        TimeScale.prototype.getLabel = function (tick) {\r\n            var useUTC = this.getSetting('useUTC');\r\n            return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting('locale'));\r\n        };\r\n        TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) {\r\n            var isUTC = this.getSetting('useUTC');\r\n            var lang = this.getSetting('locale');\r\n            return leveledFormat(tick, idx, labelFormatter, lang, isUTC);\r\n        };\r\n        TimeScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var interval = this._interval;\r\n            var extent = this._extent;\r\n            var ticks = [];\r\n            if (!interval) {\r\n                return ticks;\r\n            }\r\n            ticks.push({\r\n                value: extent[0],\r\n                level: 0\r\n            });\r\n            var useUTC = this.getSetting('useUTC');\r\n            var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent);\r\n            ticks = ticks.concat(innerTicks);\r\n            ticks.push({\r\n                value: extent[1],\r\n                level: 0\r\n            });\r\n            return ticks;\r\n        };\r\n        TimeScale.prototype.niceExtent = function (opt) {\r\n            var extent = this._extent;\r\n            if (extent[0] === extent[1]) {\r\n                extent[0] -= ONE_DAY;\r\n                extent[1] += ONE_DAY;\r\n            }\r\n            if (extent[1] === -Infinity && extent[0] === Infinity) {\r\n                var d = new Date();\r\n                extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\r\n                extent[0] = extent[1] - ONE_DAY;\r\n            }\r\n            this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n        };\r\n        TimeScale.prototype.niceTicks = function (approxTickNum, minInterval, maxInterval) {\r\n            approxTickNum = approxTickNum || 10;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            this._approxInterval = span / approxTickNum;\r\n            if (minInterval != null && this._approxInterval < minInterval) {\r\n                this._approxInterval = minInterval;\r\n            }\r\n            if (maxInterval != null && this._approxInterval > maxInterval) {\r\n                this._approxInterval = maxInterval;\r\n            }\r\n            var scaleIntervalsLen = scaleIntervals.length;\r\n            var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1);\r\n            this._interval = scaleIntervals[idx][1];\r\n            this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];\r\n        };\r\n        TimeScale.prototype.parse = function (val) {\r\n            return typeof val === 'number' ? val : +parseDate(val);\r\n        };\r\n        TimeScale.prototype.contain = function (val) {\r\n            return contain$1(this.parse(val), this._extent);\r\n        };\r\n        TimeScale.prototype.normalize = function (val) {\r\n            return normalize$1(this.parse(val), this._extent);\r\n        };\r\n        TimeScale.prototype.scale = function (val) {\r\n            return scale$2(val, this._extent);\r\n        };\r\n        TimeScale.type = 'time';\r\n        return TimeScale;\r\n    }(IntervalScale));\r\n    var scaleIntervals = [\r\n        ['second', ONE_SECOND],\r\n        ['minute', ONE_MINUTE],\r\n        ['hour', ONE_HOUR],\r\n        ['quarter-day', ONE_HOUR * 6],\r\n        ['half-day', ONE_HOUR * 12],\r\n        ['day', ONE_DAY * 1.2],\r\n        ['half-week', ONE_DAY * 3.5],\r\n        ['week', ONE_DAY * 7],\r\n        ['month', ONE_DAY * 31],\r\n        ['quarter', ONE_DAY * 95],\r\n        ['half-year', ONE_YEAR / 2],\r\n        ['year', ONE_YEAR]\r\n    ];\r\n    function isUnitValueSame(unit, valueA, valueB, isUTC) {\r\n        var dateA = parseDate(valueA);\r\n        var dateB = parseDate(valueB);\r\n        var isSame = function (unit) {\r\n            return getUnitValue(dateA, unit, isUTC)\r\n                === getUnitValue(dateB, unit, isUTC);\r\n        };\r\n        var isSameYear = function () { return isSame('year'); };\r\n        var isSameMonth = function () { return isSameYear() && isSame('month'); };\r\n        var isSameDay = function () { return isSameMonth() && isSame('day'); };\r\n        var isSameHour = function () { return isSameDay() && isSame('hour'); };\r\n        var isSameMinute = function () { return isSameHour() && isSame('minute'); };\r\n        var isSameSecond = function () { return isSameMinute() && isSame('second'); };\r\n        var isSameMilliSecond = function () { return isSameSecond() && isSame('millisecond'); };\r\n        switch (unit) {\r\n            case 'year':\r\n                return isSameYear();\r\n            case 'month':\r\n                return isSameMonth();\r\n            case 'day':\r\n                return isSameDay();\r\n            case 'hour':\r\n                return isSameHour();\r\n            case 'minute':\r\n                return isSameMinute();\r\n            case 'second':\r\n                return isSameSecond();\r\n            case 'millisecond':\r\n                return isSameMilliSecond();\r\n        }\r\n    }\r\n    function getDateInterval(approxInterval, daysInMonth) {\r\n        approxInterval /= ONE_DAY;\r\n        return approxInterval > 16 ? 16\r\n            : approxInterval > 7.5 ? 7\r\n                : approxInterval > 3.5 ? 4\r\n                    : approxInterval > 1.5 ? 2 : 1;\r\n    }\r\n    function getMonthInterval(approxInterval) {\r\n        var APPROX_ONE_MONTH = 30 * ONE_DAY;\r\n        approxInterval /= APPROX_ONE_MONTH;\r\n        return approxInterval > 6 ? 6\r\n            : approxInterval > 3 ? 3\r\n                : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getHourInterval(approxInterval) {\r\n        approxInterval /= ONE_HOUR;\r\n        return approxInterval > 12 ? 12\r\n            : approxInterval > 6 ? 6\r\n                : approxInterval > 3.5 ? 4\r\n                    : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getMinutesAndSecondsInterval(approxInterval, isMinutes) {\r\n        approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;\r\n        return approxInterval > 30 ? 30\r\n            : approxInterval > 20 ? 20\r\n                : approxInterval > 15 ? 15\r\n                    : approxInterval > 10 ? 10\r\n                        : approxInterval > 5 ? 5\r\n                            : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getMillisecondsInterval(approxInterval) {\r\n        return nice(approxInterval, true);\r\n    }\r\n    function getFirstTimestampOfUnit(date, unitName, isUTC) {\r\n        var outDate = new Date(date);\r\n        switch (getPrimaryTimeUnit(unitName)) {\r\n            case 'year':\r\n            case 'month':\r\n                outDate[monthSetterName(isUTC)](0);\r\n            case 'day':\r\n                outDate[dateSetterName(isUTC)](1);\r\n            case 'hour':\r\n                outDate[hoursSetterName(isUTC)](0);\r\n            case 'minute':\r\n                outDate[minutesSetterName(isUTC)](0);\r\n            case 'second':\r\n                outDate[secondsSetterName(isUTC)](0);\r\n                outDate[millisecondsSetterName(isUTC)](0);\r\n        }\r\n        return outDate.getTime();\r\n    }\r\n    function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) {\r\n        var safeLimit = 10000;\r\n        var unitNames = timeUnits;\r\n        var iter = 0;\r\n        function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) {\r\n            var date = new Date(minTimestamp);\r\n            var dateTime = minTimestamp;\r\n            var d = date[getMethodName]();\r\n            while (dateTime < maxTimestamp && dateTime <= extent[1]) {\r\n                out.push({\r\n                    value: dateTime\r\n                });\r\n                d += interval;\r\n                date[setMethodName](d);\r\n                dateTime = date.getTime();\r\n            }\r\n            out.push({\r\n                value: dateTime,\r\n                notAdd: true\r\n            });\r\n        }\r\n        function addLevelTicks(unitName, lastLevelTicks, levelTicks) {\r\n            var newAddedTicks = [];\r\n            var isFirstLevel = !lastLevelTicks.length;\r\n            if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) {\r\n                return;\r\n            }\r\n            if (isFirstLevel) {\r\n                lastLevelTicks = [{\r\n                        value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC)\r\n                    }, {\r\n                        value: extent[1]\r\n                    }];\r\n            }\r\n            for (var i = 0; i < lastLevelTicks.length - 1; i++) {\r\n                var startTick = lastLevelTicks[i].value;\r\n                var endTick = lastLevelTicks[i + 1].value;\r\n                if (startTick === endTick) {\r\n                    continue;\r\n                }\r\n                var interval = void 0;\r\n                var getterName = void 0;\r\n                var setterName = void 0;\r\n                var isDate = false;\r\n                switch (unitName) {\r\n                    case 'year':\r\n                        interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));\r\n                        getterName = fullYearGetterName(isUTC);\r\n                        setterName = fullYearSetterName(isUTC);\r\n                        break;\r\n                    case 'half-year':\r\n                    case 'quarter':\r\n                    case 'month':\r\n                        interval = getMonthInterval(approxInterval);\r\n                        getterName = monthGetterName(isUTC);\r\n                        setterName = monthSetterName(isUTC);\r\n                        break;\r\n                    case 'week':\r\n                    case 'half-week':\r\n                    case 'day':\r\n                        interval = getDateInterval(approxInterval);\r\n                        getterName = dateGetterName(isUTC);\r\n                        setterName = dateSetterName(isUTC);\r\n                        isDate = true;\r\n                        break;\r\n                    case 'half-day':\r\n                    case 'quarter-day':\r\n                    case 'hour':\r\n                        interval = getHourInterval(approxInterval);\r\n                        getterName = hoursGetterName(isUTC);\r\n                        setterName = hoursSetterName(isUTC);\r\n                        break;\r\n                    case 'minute':\r\n                        interval = getMinutesAndSecondsInterval(approxInterval, true);\r\n                        getterName = minutesGetterName(isUTC);\r\n                        setterName = minutesSetterName(isUTC);\r\n                        break;\r\n                    case 'second':\r\n                        interval = getMinutesAndSecondsInterval(approxInterval, false);\r\n                        getterName = secondsGetterName(isUTC);\r\n                        setterName = secondsSetterName(isUTC);\r\n                        break;\r\n                    case 'millisecond':\r\n                        interval = getMillisecondsInterval(approxInterval);\r\n                        getterName = millisecondsGetterName(isUTC);\r\n                        setterName = millisecondsSetterName(isUTC);\r\n                        break;\r\n                }\r\n                addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);\r\n                if (unitName === 'year' && levelTicks.length > 1 && i === 0) {\r\n                    levelTicks.unshift({\r\n                        value: levelTicks[0].value - interval\r\n                    });\r\n                }\r\n            }\r\n            for (var i = 0; i < newAddedTicks.length; i++) {\r\n                levelTicks.push(newAddedTicks[i]);\r\n            }\r\n            return newAddedTicks;\r\n        }\r\n        var levelsTicks = [];\r\n        var currentLevelTicks = [];\r\n        var tickCount = 0;\r\n        var lastLevelTickCount = 0;\r\n        for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {\r\n            var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);\r\n            if (!isPrimaryTimeUnit(unitNames[i])) {\r\n                continue;\r\n            }\r\n            addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);\r\n            var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;\r\n            if (primaryTimeUnit !== nextPrimaryTimeUnit) {\r\n                if (currentLevelTicks.length) {\r\n                    lastLevelTickCount = tickCount;\r\n                    currentLevelTicks.sort(function (a, b) { return a.value - b.value; });\r\n                    var levelTicksRemoveDuplicated = [];\r\n                    for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {\r\n                        var tickValue = currentLevelTicks[i_1].value;\r\n                        if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {\r\n                            levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);\r\n                            if (tickValue >= extent[0] && tickValue <= extent[1]) {\r\n                                tickCount++;\r\n                            }\r\n                        }\r\n                    }\r\n                    var targetTickNum = (extent[1] - extent[0]) / approxInterval;\r\n                    if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {\r\n                        break;\r\n                    }\r\n                    levelsTicks.push(levelTicksRemoveDuplicated);\r\n                    if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {\r\n                        break;\r\n                    }\r\n                }\r\n                currentLevelTicks = [];\r\n            }\r\n        }\r\n        if (__DEV__) {\r\n            if (iter >= safeLimit) {\r\n                warn('Exceed safe limit.');\r\n            }\r\n        }\r\n        var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) {\r\n            return filter(levelTicks, function (tick) { return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd; });\r\n        }), function (levelTicks) { return levelTicks.length > 0; });\r\n        var ticks = [];\r\n        var maxLevel = levelsTicksInExtent.length - 1;\r\n        for (var i = 0; i < levelsTicksInExtent.length; ++i) {\r\n            var levelTicks = levelsTicksInExtent[i];\r\n            for (var k = 0; k < levelTicks.length; ++k) {\r\n                ticks.push({\r\n                    value: levelTicks[k].value,\r\n                    level: maxLevel - i\r\n                });\r\n            }\r\n        }\r\n        ticks.sort(function (a, b) { return a.value - b.value; });\r\n        var result = [];\r\n        for (var i = 0; i < ticks.length; ++i) {\r\n            if (i === 0 || ticks[i].value !== ticks[i - 1].value) {\r\n                result.push(ticks[i]);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    Scale.registerClass(TimeScale);\n\n    var scaleProto = Scale.prototype;\r\n    var intervalScaleProto = IntervalScale.prototype;\r\n    var getPrecisionSafe$1 = getPrecisionSafe;\r\n    var roundingErrorFix = round$1;\r\n    var mathFloor$1 = Math.floor;\r\n    var mathCeil = Math.ceil;\r\n    var mathPow$1 = Math.pow;\r\n    var mathLog = Math.log;\r\n    var LogScale = (function (_super) {\r\n        __extends(LogScale, _super);\r\n        function LogScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'log';\r\n            _this.base = 10;\r\n            _this._originalScale = new IntervalScale();\r\n            _this._interval = 0;\r\n            return _this;\r\n        }\r\n        LogScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var originalScale = this._originalScale;\r\n            var extent = this._extent;\r\n            var originalExtent = originalScale.getExtent();\r\n            var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);\r\n            return map(ticks, function (tick) {\r\n                var val = tick.value;\r\n                var powVal = round$1(mathPow$1(this.base, val));\r\n                powVal = (val === extent[0] && this._fixMin)\r\n                    ? fixRoundingError(powVal, originalExtent[0])\r\n                    : powVal;\r\n                powVal = (val === extent[1] && this._fixMax)\r\n                    ? fixRoundingError(powVal, originalExtent[1])\r\n                    : powVal;\r\n                return {\r\n                    value: powVal\r\n                };\r\n            }, this);\r\n        };\r\n        LogScale.prototype.setExtent = function (start, end) {\r\n            var base = this.base;\r\n            start = mathLog(start) / mathLog(base);\r\n            end = mathLog(end) / mathLog(base);\r\n            intervalScaleProto.setExtent.call(this, start, end);\r\n        };\r\n        LogScale.prototype.getExtent = function () {\r\n            var base = this.base;\r\n            var extent = scaleProto.getExtent.call(this);\r\n            extent[0] = mathPow$1(base, extent[0]);\r\n            extent[1] = mathPow$1(base, extent[1]);\r\n            var originalScale = this._originalScale;\r\n            var originalExtent = originalScale.getExtent();\r\n            this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\r\n            this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\r\n            return extent;\r\n        };\r\n        LogScale.prototype.unionExtent = function (extent) {\r\n            this._originalScale.unionExtent(extent);\r\n            var base = this.base;\r\n            extent[0] = mathLog(extent[0]) / mathLog(base);\r\n            extent[1] = mathLog(extent[1]) / mathLog(base);\r\n            scaleProto.unionExtent.call(this, extent);\r\n        };\r\n        LogScale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        LogScale.prototype.niceTicks = function (approxTickNum) {\r\n            approxTickNum = approxTickNum || 10;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            if (span === Infinity || span <= 0) {\r\n                return;\r\n            }\r\n            var interval = quantity(span);\r\n            var err = approxTickNum / span * interval;\r\n            if (err <= 0.5) {\r\n                interval *= 10;\r\n            }\r\n            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\r\n                interval *= 10;\r\n            }\r\n            var niceExtent = [\r\n                round$1(mathCeil(extent[0] / interval) * interval),\r\n                round$1(mathFloor$1(extent[1] / interval) * interval)\r\n            ];\r\n            this._interval = interval;\r\n            this._niceExtent = niceExtent;\r\n        };\r\n        LogScale.prototype.niceExtent = function (opt) {\r\n            intervalScaleProto.niceExtent.call(this, opt);\r\n            this._fixMin = opt.fixMin;\r\n            this._fixMax = opt.fixMax;\r\n        };\r\n        LogScale.prototype.parse = function (val) {\r\n            return val;\r\n        };\r\n        LogScale.prototype.contain = function (val) {\r\n            val = mathLog(val) / mathLog(this.base);\r\n            return contain$1(val, this._extent);\r\n        };\r\n        LogScale.prototype.normalize = function (val) {\r\n            val = mathLog(val) / mathLog(this.base);\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        LogScale.prototype.scale = function (val) {\r\n            val = scale$2(val, this._extent);\r\n            return mathPow$1(this.base, val);\r\n        };\r\n        LogScale.type = 'log';\r\n        return LogScale;\r\n    }(Scale));\r\n    var proto = LogScale.prototype;\r\n    proto.getMinorTicks = intervalScaleProto.getMinorTicks;\r\n    proto.getLabel = intervalScaleProto.getLabel;\r\n    function fixRoundingError(val, originalVal) {\r\n        return roundingErrorFix(val, getPrecisionSafe$1(originalVal));\r\n    }\r\n    Scale.registerClass(LogScale);\n\n    var ScaleRawExtentInfo = (function () {\r\n        function ScaleRawExtentInfo(scale, model, originalExtent) {\r\n            this._prepareParams(scale, model, originalExtent);\r\n        }\r\n        ScaleRawExtentInfo.prototype._prepareParams = function (scale, model, dataExtent) {\r\n            if (dataExtent[1] < dataExtent[0]) {\r\n                dataExtent = [NaN, NaN];\r\n            }\r\n            this._dataMin = dataExtent[0];\r\n            this._dataMax = dataExtent[1];\r\n            var isOrdinal = this._isOrdinal = scale.type === 'ordinal';\r\n            this._needCrossZero = model.getNeedCrossZero && model.getNeedCrossZero();\r\n            var modelMinRaw = this._modelMinRaw = model.get('min', true);\r\n            if (isFunction(modelMinRaw)) {\r\n                this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({\r\n                    min: dataExtent[0],\r\n                    max: dataExtent[1]\r\n                }));\r\n            }\r\n            else if (modelMinRaw !== 'dataMin') {\r\n                this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw);\r\n            }\r\n            var modelMaxRaw = this._modelMaxRaw = model.get('max', true);\r\n            if (isFunction(modelMaxRaw)) {\r\n                this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({\r\n                    min: dataExtent[0],\r\n                    max: dataExtent[1]\r\n                }));\r\n            }\r\n            else if (modelMaxRaw !== 'dataMax') {\r\n                this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);\r\n            }\r\n            if (isOrdinal) {\r\n                this._axisDataLen = model.getCategories().length;\r\n            }\r\n            else {\r\n                var boundaryGap = model.get('boundaryGap');\r\n                var boundaryGapArr = isArray(boundaryGap)\r\n                    ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];\r\n                if (typeof boundaryGapArr[0] === 'boolean' || typeof boundaryGapArr[1] === 'boolean') {\r\n                    if (__DEV__) {\r\n                        console.warn('Boolean type for boundaryGap is only '\r\n                            + 'allowed for ordinal axis. Please use string in '\r\n                            + 'percentage instead, e.g., \"20%\". Currently, '\r\n                            + 'boundaryGap is set to be 0.');\r\n                    }\r\n                    this._boundaryGapInner = [0, 0];\r\n                }\r\n                else {\r\n                    this._boundaryGapInner = [\r\n                        parsePercent(boundaryGapArr[0], 1),\r\n                        parsePercent(boundaryGapArr[1], 1)\r\n                    ];\r\n                }\r\n            }\r\n        };\r\n        ScaleRawExtentInfo.prototype.calculate = function () {\r\n            var isOrdinal = this._isOrdinal;\r\n            var dataMin = this._dataMin;\r\n            var dataMax = this._dataMax;\r\n            var axisDataLen = this._axisDataLen;\r\n            var boundaryGapInner = this._boundaryGapInner;\r\n            var span = !isOrdinal\r\n                ? ((dataMax - dataMin) || Math.abs(dataMin))\r\n                : null;\r\n            var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum;\r\n            var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum;\r\n            var minFixed = min != null;\r\n            var maxFixed = max != null;\r\n            if (min == null) {\r\n                min = isOrdinal\r\n                    ? (axisDataLen ? 0 : NaN)\r\n                    : dataMin - boundaryGapInner[0] * span;\r\n            }\r\n            if (max == null) {\r\n                max = isOrdinal\r\n                    ? (axisDataLen ? axisDataLen - 1 : NaN)\r\n                    : dataMax + boundaryGapInner[1] * span;\r\n            }\r\n            (min == null || !isFinite(min)) && (min = NaN);\r\n            (max == null || !isFinite(max)) && (max = NaN);\r\n            if (min > max) {\r\n                min = NaN;\r\n                max = NaN;\r\n            }\r\n            var isBlank = eqNaN(min)\r\n                || eqNaN(max)\r\n                || (isOrdinal && !axisDataLen);\r\n            if (this._needCrossZero) {\r\n                if (min > 0 && max > 0 && !minFixed) {\r\n                    min = 0;\r\n                }\r\n                if (min < 0 && max < 0 && !maxFixed) {\r\n                    max = 0;\r\n                }\r\n            }\r\n            var determinedMin = this._determinedMin;\r\n            var determinedMax = this._determinedMax;\r\n            if (determinedMin != null) {\r\n                min = determinedMin;\r\n                minFixed = true;\r\n            }\r\n            if (determinedMax != null) {\r\n                max = determinedMax;\r\n                maxFixed = true;\r\n            }\r\n            return {\r\n                min: min,\r\n                max: max,\r\n                minFixed: minFixed,\r\n                maxFixed: maxFixed,\r\n                isBlank: isBlank\r\n            };\r\n        };\r\n        ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) {\r\n            if (__DEV__) {\r\n                assert(!this.frozen);\r\n            }\r\n            this[DATA_MIN_MAX_ATTR[minMaxName]] = val;\r\n        };\r\n        ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) {\r\n            var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];\r\n            if (__DEV__) {\r\n                assert(!this.frozen\r\n                    && (this[attr] == null));\r\n            }\r\n            this[attr] = val;\r\n        };\r\n        ScaleRawExtentInfo.prototype.freeze = function () {\r\n            this.frozen = true;\r\n        };\r\n        return ScaleRawExtentInfo;\r\n    }());\r\n    var DETERMINED_MIN_MAX_ATTR = { min: '_determinedMin', max: '_determinedMax' };\r\n    var DATA_MIN_MAX_ATTR = { min: '_dataMin', max: '_dataMax' };\r\n    function ensureScaleRawExtentInfo(scale, model, originalExtent) {\r\n        var rawExtentInfo = scale.rawExtentInfo;\r\n        if (rawExtentInfo) {\r\n            return rawExtentInfo;\r\n        }\r\n        rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent);\r\n        scale.rawExtentInfo = rawExtentInfo;\r\n        return rawExtentInfo;\r\n    }\r\n    function parseAxisModelMinMax(scale, minMax) {\r\n        return minMax == null ? null\r\n            : eqNaN(minMax) ? NaN\r\n                : scale.parse(minMax);\r\n    }\n\n    function getScaleExtent(scale, model) {\r\n        var scaleType = scale.type;\r\n        var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\r\n        scale.setBlank(rawExtentResult.isBlank);\r\n        var min = rawExtentResult.min;\r\n        var max = rawExtentResult.max;\r\n        var ecModel = model.ecModel;\r\n        if (ecModel && (scaleType === 'time')) {\r\n            var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\r\n            var isBaseAxisAndHasBarSeries_1 = false;\r\n            each(barSeriesModels, function (seriesModel) {\r\n                isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\r\n            });\r\n            if (isBaseAxisAndHasBarSeries_1) {\r\n                var barWidthAndOffset = makeColumnLayout(barSeriesModels);\r\n                var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\r\n                min = adjustedScale.min;\r\n                max = adjustedScale.max;\r\n            }\r\n        }\r\n        return {\r\n            extent: [min, max],\r\n            fixMin: rawExtentResult.minFixed,\r\n            fixMax: rawExtentResult.maxFixed\r\n        };\r\n    }\r\n    function adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\r\n        var axisExtent = model.axis.getExtent();\r\n        var axisLength = axisExtent[1] - axisExtent[0];\r\n        var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\r\n        if (barsOnCurrentAxis === undefined) {\r\n            return { min: min, max: max };\r\n        }\r\n        var minOverflow = Infinity;\r\n        each(barsOnCurrentAxis, function (item) {\r\n            minOverflow = Math.min(item.offset, minOverflow);\r\n        });\r\n        var maxOverflow = -Infinity;\r\n        each(barsOnCurrentAxis, function (item) {\r\n            maxOverflow = Math.max(item.offset + item.width, maxOverflow);\r\n        });\r\n        minOverflow = Math.abs(minOverflow);\r\n        maxOverflow = Math.abs(maxOverflow);\r\n        var totalOverFlow = minOverflow + maxOverflow;\r\n        var oldRange = max - min;\r\n        var oldRangePercentOfNew = (1 - (minOverflow + maxOverflow) / axisLength);\r\n        var overflowBuffer = ((oldRange / oldRangePercentOfNew) - oldRange);\r\n        max += overflowBuffer * (maxOverflow / totalOverFlow);\r\n        min -= overflowBuffer * (minOverflow / totalOverFlow);\r\n        return { min: min, max: max };\r\n    }\r\n    function niceScaleExtent(scale, model) {\r\n        var extentInfo = getScaleExtent(scale, model);\r\n        var extent = extentInfo.extent;\r\n        var splitNumber = model.get('splitNumber');\r\n        if (scale instanceof LogScale) {\r\n            scale.base = model.get('logBase');\r\n        }\r\n        var scaleType = scale.type;\r\n        scale.setExtent(extent[0], extent[1]);\r\n        scale.niceExtent({\r\n            splitNumber: splitNumber,\r\n            fixMin: extentInfo.fixMin,\r\n            fixMax: extentInfo.fixMax,\r\n            minInterval: (scaleType === 'interval' || scaleType === 'time')\r\n                ? model.get('minInterval') : null,\r\n            maxInterval: (scaleType === 'interval' || scaleType === 'time')\r\n                ? model.get('maxInterval') : null\r\n        });\r\n        var interval = model.get('interval');\r\n        if (interval != null) {\r\n            scale.setInterval && scale.setInterval(interval);\r\n        }\r\n    }\r\n    function createScaleByModel(model, axisType) {\r\n        axisType = axisType || model.get('type');\r\n        if (axisType) {\r\n            switch (axisType) {\r\n                case 'category':\r\n                    return new OrdinalScale({\r\n                        ordinalMeta: model.getOrdinalMeta\r\n                            ? model.getOrdinalMeta()\r\n                            : model.getCategories(),\r\n                        extent: [Infinity, -Infinity]\r\n                    });\r\n                case 'time':\r\n                    return new TimeScale({\r\n                        locale: model.ecModel.getLocaleModel(),\r\n                        useUTC: model.ecModel.get('useUTC')\r\n                    });\r\n                default:\r\n                    return new (Scale.getClass(axisType) || IntervalScale)();\r\n            }\r\n        }\r\n    }\r\n    function ifAxisCrossZero(axis) {\r\n        var dataExtent = axis.scale.getExtent();\r\n        var min = dataExtent[0];\r\n        var max = dataExtent[1];\r\n        return !((min > 0 && max > 0) || (min < 0 && max < 0));\r\n    }\r\n    function makeLabelFormatter(axis) {\r\n        var labelFormatter = axis.getLabelModel().get('formatter');\r\n        var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\r\n        if (axis.scale.type === 'time') {\r\n            return (function (tpl) {\r\n                return function (tick, idx) {\r\n                    return axis.scale.getFormattedLabel(tick, idx, tpl);\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else if (typeof labelFormatter === 'string') {\r\n            return (function (tpl) {\r\n                return function (tick) {\r\n                    var label = axis.scale.getLabel(tick);\r\n                    var text = tpl.replace('{value}', label != null ? label : '');\r\n                    return text;\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else if (typeof labelFormatter === 'function') {\r\n            return (function (cb) {\r\n                return function (tick, idx) {\r\n                    if (categoryTickStart != null) {\r\n                        idx = tick.value - categoryTickStart;\r\n                    }\r\n                    return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\r\n                        level: tick.level\r\n                    } : null);\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else {\r\n            return function (tick) {\r\n                return axis.scale.getLabel(tick);\r\n            };\r\n        }\r\n    }\r\n    function getAxisRawValue(axis, tick) {\r\n        return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\r\n    }\r\n    function estimateLabelUnionRect(axis) {\r\n        var axisModel = axis.model;\r\n        var scale = axis.scale;\r\n        if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\r\n            return;\r\n        }\r\n        var realNumberScaleTicks;\r\n        var tickCount;\r\n        var categoryScaleExtent = scale.getExtent();\r\n        if (scale instanceof OrdinalScale) {\r\n            tickCount = scale.count();\r\n        }\r\n        else {\r\n            realNumberScaleTicks = scale.getTicks();\r\n            tickCount = realNumberScaleTicks.length;\r\n        }\r\n        var axisLabelModel = axis.getLabelModel();\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var rect;\r\n        var step = 1;\r\n        if (tickCount > 40) {\r\n            step = Math.ceil(tickCount / 40);\r\n        }\r\n        for (var i = 0; i < tickCount; i += step) {\r\n            var tick = realNumberScaleTicks\r\n                ? realNumberScaleTicks[i]\r\n                : {\r\n                    value: categoryScaleExtent[0] + i\r\n                };\r\n            var label = labelFormatter(tick, i);\r\n            var unrotatedSingleRect = axisLabelModel.getTextRect(label);\r\n            var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\r\n            rect ? rect.union(singleRect) : (rect = singleRect);\r\n        }\r\n        return rect;\r\n    }\r\n    function rotateTextRect(textRect, rotate) {\r\n        var rotateRadians = rotate * Math.PI / 180;\r\n        var beforeWidth = textRect.width;\r\n        var beforeHeight = textRect.height;\r\n        var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians))\r\n            + Math.abs(beforeHeight * Math.sin(rotateRadians));\r\n        var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians))\r\n            + Math.abs(beforeHeight * Math.cos(rotateRadians));\r\n        var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\r\n        return rotatedRect;\r\n    }\r\n    function getOptionCategoryInterval(model) {\r\n        var interval = model.get('interval');\r\n        return interval == null ? 'auto' : interval;\r\n    }\r\n    function shouldShowAllLabels(axis) {\r\n        return axis.type === 'category'\r\n            && getOptionCategoryInterval(axis.getLabelModel()) === 0;\r\n    }\r\n    function getDataDimensionsOnAxis(data, axisDim) {\r\n        var dataDimMap = {};\r\n        each(data.mapDimensionsAll(axisDim), function (dataDim) {\r\n            dataDimMap[getStackedDimension(data, dataDim)] = true;\r\n        });\r\n        return keys(dataDimMap);\r\n    }\r\n    function unionAxisExtentFromData(dataExtent, data, axisDim) {\r\n        if (data) {\r\n            each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\r\n                var seriesExtent = data.getApproximateExtent(dim);\r\n                seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\r\n                seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\r\n            });\r\n        }\r\n    }\n\n    var AxisModelCommonMixin = (function () {\r\n        function AxisModelCommonMixin() {\r\n        }\r\n        AxisModelCommonMixin.prototype.getNeedCrossZero = function () {\r\n            var option = this.option;\r\n            return !option.scale;\r\n        };\r\n        AxisModelCommonMixin.prototype.getCoordSysModel = function () {\r\n            return;\r\n        };\r\n        return AxisModelCommonMixin;\r\n    }());\n\n    function createList(seriesModel) {\r\n        return createListFromArray(seriesModel.getSource(), seriesModel);\r\n    }\r\n    var dataStack$1 = {\r\n        isDimensionStacked: isDimensionStacked,\r\n        enableDataStack: enableDataStack,\r\n        getStackedDimension: getStackedDimension\r\n    };\r\n    function createScale(dataExtent, option) {\r\n        var axisModel = option;\r\n        if (!(option instanceof Model)) {\r\n            axisModel = new Model(option);\r\n        }\r\n        var scale = createScaleByModel(axisModel);\r\n        scale.setExtent(dataExtent[0], dataExtent[1]);\r\n        niceScaleExtent(scale, axisModel);\r\n        return scale;\r\n    }\r\n    function mixinAxisModelCommonMethods(Model) {\r\n        mixin(Model, AxisModelCommonMixin);\r\n    }\n\n    var helper = /*#__PURE__*/Object.freeze({\n        __proto__: null,\n        createList: createList,\n        getLayoutRect: getLayoutRect,\n        dataStack: dataStack$1,\n        createScale: createScale,\n        mixinAxisModelCommonMethods: mixinAxisModelCommonMethods,\n        getECData: getECData,\n        createDimensions: createDimensions,\n        createSymbol: createSymbol\n    });\n\n    var EPSILON$3 = 1e-8;\r\n    function isAroundEqual$1(a, b) {\r\n        return Math.abs(a - b) < EPSILON$3;\r\n    }\r\n    function contain$2(points, x, y) {\r\n        var w = 0;\r\n        var p = points[0];\r\n        if (!p) {\r\n            return false;\r\n        }\r\n        for (var i = 1; i < points.length; i++) {\r\n            var p2 = points[i];\r\n            w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\r\n            p = p2;\r\n        }\r\n        var p0 = points[0];\r\n        if (!isAroundEqual$1(p[0], p0[0]) || !isAroundEqual$1(p[1], p0[1])) {\r\n            w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\r\n        }\r\n        return w !== 0;\r\n    }\n\n    var Region = (function () {\r\n        function Region(name, geometries, cp) {\r\n            this.name = name;\r\n            this.geometries = geometries;\r\n            if (!cp) {\r\n                var rect = this.getBoundingRect();\r\n                cp = [\r\n                    rect.x + rect.width / 2,\r\n                    rect.y + rect.height / 2\r\n                ];\r\n            }\r\n            else {\r\n                cp = [cp[0], cp[1]];\r\n            }\r\n            this.center = cp;\r\n        }\r\n        Region.prototype.getBoundingRect = function () {\r\n            var rect = this._rect;\r\n            if (rect) {\r\n                return rect;\r\n            }\r\n            var MAX_NUMBER = Number.MAX_VALUE;\r\n            var min$1 = [MAX_NUMBER, MAX_NUMBER];\r\n            var max$1 = [-MAX_NUMBER, -MAX_NUMBER];\r\n            var min2 = [];\r\n            var max2 = [];\r\n            var geometries = this.geometries;\r\n            var i = 0;\r\n            for (; i < geometries.length; i++) {\r\n                if (geometries[i].type !== 'polygon') {\r\n                    continue;\r\n                }\r\n                var exterior = geometries[i].exterior;\r\n                fromPoints(exterior, min2, max2);\r\n                min(min$1, min$1, min2);\r\n                max(max$1, max$1, max2);\r\n            }\r\n            if (i === 0) {\r\n                min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0;\r\n            }\r\n            return (this._rect = new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]));\r\n        };\r\n        Region.prototype.contain = function (coord) {\r\n            var rect = this.getBoundingRect();\r\n            var geometries = this.geometries;\r\n            if (!rect.contain(coord[0], coord[1])) {\r\n                return false;\r\n            }\r\n            loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\r\n                if (geometries[i].type !== 'polygon') {\r\n                    continue;\r\n                }\r\n                var exterior = geometries[i].exterior;\r\n                var interiors = geometries[i].interiors;\r\n                if (contain$2(exterior, coord[0], coord[1])) {\r\n                    for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\r\n                        if (contain$2(interiors[k], coord[0], coord[1])) {\r\n                            continue loopGeo;\r\n                        }\r\n                    }\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Region.prototype.transformTo = function (x, y, width, height) {\r\n            var rect = this.getBoundingRect();\r\n            var aspect = rect.width / rect.height;\r\n            if (!width) {\r\n                width = aspect * height;\r\n            }\r\n            else if (!height) {\r\n                height = width / aspect;\r\n            }\r\n            var target = new BoundingRect(x, y, width, height);\r\n            var transform = rect.calculateTransform(target);\r\n            var geometries = this.geometries;\r\n            for (var i = 0; i < geometries.length; i++) {\r\n                if (geometries[i].type !== 'polygon') {\r\n                    continue;\r\n                }\r\n                var exterior = geometries[i].exterior;\r\n                var interiors = geometries[i].interiors;\r\n                for (var p = 0; p < exterior.length; p++) {\r\n                    applyTransform(exterior[p], exterior[p], transform);\r\n                }\r\n                for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\r\n                    for (var p = 0; p < interiors[h].length; p++) {\r\n                        applyTransform(interiors[h][p], interiors[h][p], transform);\r\n                    }\r\n                }\r\n            }\r\n            rect = this._rect;\r\n            rect.copy(target);\r\n            this.center = [\r\n                rect.x + rect.width / 2,\r\n                rect.y + rect.height / 2\r\n            ];\r\n        };\r\n        Region.prototype.cloneShallow = function (name) {\r\n            name == null && (name = this.name);\r\n            var newRegion = new Region(name, this.geometries, this.center);\r\n            newRegion._rect = this._rect;\r\n            newRegion.transformTo = null;\r\n            return newRegion;\r\n        };\r\n        return Region;\r\n    }());\n\n    function decode(json) {\r\n        if (!json.UTF8Encoding) {\r\n            return json;\r\n        }\r\n        var jsonCompressed = json;\r\n        var encodeScale = jsonCompressed.UTF8Scale;\r\n        if (encodeScale == null) {\r\n            encodeScale = 1024;\r\n        }\r\n        var features = jsonCompressed.features;\r\n        for (var f = 0; f < features.length; f++) {\r\n            var feature = features[f];\r\n            var geometry = feature.geometry;\r\n            if (geometry.type === 'Polygon') {\r\n                var coordinates = geometry.coordinates;\r\n                for (var c = 0; c < coordinates.length; c++) {\r\n                    coordinates[c] = decodePolygon(coordinates[c], geometry.encodeOffsets[c], encodeScale);\r\n                }\r\n            }\r\n            else if (geometry.type === 'MultiPolygon') {\r\n                var coordinates = geometry.coordinates;\r\n                for (var c = 0; c < coordinates.length; c++) {\r\n                    var coordinate = coordinates[c];\r\n                    for (var c2 = 0; c2 < coordinate.length; c2++) {\r\n                        coordinate[c2] = decodePolygon(coordinate[c2], geometry.encodeOffsets[c][c2], encodeScale);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        jsonCompressed.UTF8Encoding = false;\r\n        return jsonCompressed;\r\n    }\r\n    function decodePolygon(coordinate, encodeOffsets, encodeScale) {\r\n        var result = [];\r\n        var prevX = encodeOffsets[0];\r\n        var prevY = encodeOffsets[1];\r\n        for (var i = 0; i < coordinate.length; i += 2) {\r\n            var x = coordinate.charCodeAt(i) - 64;\r\n            var y = coordinate.charCodeAt(i + 1) - 64;\r\n            x = (x >> 1) ^ (-(x & 1));\r\n            y = (y >> 1) ^ (-(y & 1));\r\n            x += prevX;\r\n            y += prevY;\r\n            prevX = x;\r\n            prevY = y;\r\n            result.push([x / encodeScale, y / encodeScale]);\r\n        }\r\n        return result;\r\n    }\r\n    function parseGeoJSON(geoJson, nameProperty) {\r\n        geoJson = decode(geoJson);\r\n        return map(filter(geoJson.features, function (featureObj) {\r\n            return featureObj.geometry\r\n                && featureObj.properties\r\n                && featureObj.geometry.coordinates.length > 0;\r\n        }), function (featureObj) {\r\n            var properties = featureObj.properties;\r\n            var geo = featureObj.geometry;\r\n            var geometries = [];\r\n            if (geo.type === 'Polygon') {\r\n                var coordinates = geo.coordinates;\r\n                geometries.push({\r\n                    type: 'polygon',\r\n                    exterior: coordinates[0],\r\n                    interiors: coordinates.slice(1)\r\n                });\r\n            }\r\n            if (geo.type === 'MultiPolygon') {\r\n                var coordinates = geo.coordinates;\r\n                each(coordinates, function (item) {\r\n                    if (item[0]) {\r\n                        geometries.push({\r\n                            type: 'polygon',\r\n                            exterior: item[0],\r\n                            interiors: item.slice(1)\r\n                        });\r\n                    }\r\n                });\r\n            }\r\n            var region = new Region(properties[nameProperty || 'name'], geometries, properties.cp);\r\n            region.properties = properties;\r\n            return region;\r\n        });\r\n    }\n\n    var inner$4 = makeInner();\r\n    function createAxisLabels(axis) {\r\n        return axis.type === 'category'\r\n            ? makeCategoryLabels(axis)\r\n            : makeRealNumberLabels(axis);\r\n    }\r\n    function createAxisTicks(axis, tickModel) {\r\n        return axis.type === 'category'\r\n            ? makeCategoryTicks(axis, tickModel)\r\n            : { ticks: map(axis.scale.getTicks(), function (tick) { return tick.value; }) };\r\n    }\r\n    function makeCategoryLabels(axis) {\r\n        var labelModel = axis.getLabelModel();\r\n        var result = makeCategoryLabelsActually(axis, labelModel);\r\n        return (!labelModel.get('show') || axis.scale.isBlank())\r\n            ? { labels: [], labelCategoryInterval: result.labelCategoryInterval }\r\n            : result;\r\n    }\r\n    function makeCategoryLabelsActually(axis, labelModel) {\r\n        var labelsCache = getListCache(axis, 'labels');\r\n        var optionLabelInterval = getOptionCategoryInterval(labelModel);\r\n        var result = listCacheGet(labelsCache, optionLabelInterval);\r\n        if (result) {\r\n            return result;\r\n        }\r\n        var labels;\r\n        var numericLabelInterval;\r\n        if (isFunction(optionLabelInterval)) {\r\n            labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\r\n        }\r\n        else {\r\n            numericLabelInterval = optionLabelInterval === 'auto'\r\n                ? makeAutoCategoryInterval(axis) : optionLabelInterval;\r\n            labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\r\n        }\r\n        return listCacheSet(labelsCache, optionLabelInterval, {\r\n            labels: labels, labelCategoryInterval: numericLabelInterval\r\n        });\r\n    }\r\n    function makeCategoryTicks(axis, tickModel) {\r\n        var ticksCache = getListCache(axis, 'ticks');\r\n        var optionTickInterval = getOptionCategoryInterval(tickModel);\r\n        var result = listCacheGet(ticksCache, optionTickInterval);\r\n        if (result) {\r\n            return result;\r\n        }\r\n        var ticks;\r\n        var tickCategoryInterval;\r\n        if (!tickModel.get('show') || axis.scale.isBlank()) {\r\n            ticks = [];\r\n        }\r\n        if (isFunction(optionTickInterval)) {\r\n            ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\r\n        }\r\n        else if (optionTickInterval === 'auto') {\r\n            var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\r\n            tickCategoryInterval = labelsResult.labelCategoryInterval;\r\n            ticks = map(labelsResult.labels, function (labelItem) {\r\n                return labelItem.tickValue;\r\n            });\r\n        }\r\n        else {\r\n            tickCategoryInterval = optionTickInterval;\r\n            ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\r\n        }\r\n        return listCacheSet(ticksCache, optionTickInterval, {\r\n            ticks: ticks, tickCategoryInterval: tickCategoryInterval\r\n        });\r\n    }\r\n    function makeRealNumberLabels(axis) {\r\n        var ticks = axis.scale.getTicks();\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        return {\r\n            labels: map(ticks, function (tick, idx) {\r\n                return {\r\n                    formattedLabel: labelFormatter(tick, idx),\r\n                    rawLabel: axis.scale.getLabel(tick),\r\n                    tickValue: tick.value\r\n                };\r\n            })\r\n        };\r\n    }\r\n    function getListCache(axis, prop) {\r\n        return inner$4(axis)[prop] || (inner$4(axis)[prop] = []);\r\n    }\r\n    function listCacheGet(cache, key) {\r\n        for (var i = 0; i < cache.length; i++) {\r\n            if (cache[i].key === key) {\r\n                return cache[i].value;\r\n            }\r\n        }\r\n    }\r\n    function listCacheSet(cache, key, value) {\r\n        cache.push({ key: key, value: value });\r\n        return value;\r\n    }\r\n    function makeAutoCategoryInterval(axis) {\r\n        var result = inner$4(axis).autoInterval;\r\n        return result != null\r\n            ? result\r\n            : (inner$4(axis).autoInterval = axis.calculateCategoryInterval());\r\n    }\r\n    function calculateCategoryInterval(axis) {\r\n        var params = fetchAutoCategoryIntervalCalculationParams(axis);\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\r\n        var ordinalScale = axis.scale;\r\n        var ordinalExtent = ordinalScale.getExtent();\r\n        var tickCount = ordinalScale.count();\r\n        if (ordinalExtent[1] - ordinalExtent[0] < 1) {\r\n            return 0;\r\n        }\r\n        var step = 1;\r\n        if (tickCount > 40) {\r\n            step = Math.max(1, Math.floor(tickCount / 40));\r\n        }\r\n        var tickValue = ordinalExtent[0];\r\n        var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\r\n        var unitW = Math.abs(unitSpan * Math.cos(rotation));\r\n        var unitH = Math.abs(unitSpan * Math.sin(rotation));\r\n        var maxW = 0;\r\n        var maxH = 0;\r\n        for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n            var width = 0;\r\n            var height = 0;\r\n            var rect = getBoundingRect(labelFormatter({ value: tickValue }), params.font, 'center', 'top');\r\n            width = rect.width * 1.3;\r\n            height = rect.height * 1.3;\r\n            maxW = Math.max(maxW, width, 7);\r\n            maxH = Math.max(maxH, height, 7);\r\n        }\r\n        var dw = maxW / unitW;\r\n        var dh = maxH / unitH;\r\n        isNaN(dw) && (dw = Infinity);\r\n        isNaN(dh) && (dh = Infinity);\r\n        var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\r\n        var cache = inner$4(axis.model);\r\n        var axisExtent = axis.getExtent();\r\n        var lastAutoInterval = cache.lastAutoInterval;\r\n        var lastTickCount = cache.lastTickCount;\r\n        if (lastAutoInterval != null\r\n            && lastTickCount != null\r\n            && Math.abs(lastAutoInterval - interval) <= 1\r\n            && Math.abs(lastTickCount - tickCount) <= 1\r\n            && lastAutoInterval > interval\r\n            && cache.axisExtent0 === axisExtent[0]\r\n            && cache.axisExtent1 === axisExtent[1]) {\r\n            interval = lastAutoInterval;\r\n        }\r\n        else {\r\n            cache.lastTickCount = tickCount;\r\n            cache.lastAutoInterval = interval;\r\n            cache.axisExtent0 = axisExtent[0];\r\n            cache.axisExtent1 = axisExtent[1];\r\n        }\r\n        return interval;\r\n    }\r\n    function fetchAutoCategoryIntervalCalculationParams(axis) {\r\n        var labelModel = axis.getLabelModel();\r\n        return {\r\n            axisRotate: axis.getRotate\r\n                ? axis.getRotate()\r\n                : (axis.isHorizontal && !axis.isHorizontal())\r\n                    ? 90\r\n                    : 0,\r\n            labelRotate: labelModel.get('rotate') || 0,\r\n            font: labelModel.getFont()\r\n        };\r\n    }\r\n    function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var ordinalScale = axis.scale;\r\n        var ordinalExtent = ordinalScale.getExtent();\r\n        var labelModel = axis.getLabelModel();\r\n        var result = [];\r\n        var step = Math.max((categoryInterval || 0) + 1, 1);\r\n        var startTick = ordinalExtent[0];\r\n        var tickCount = ordinalScale.count();\r\n        if (startTick !== 0 && step > 1 && tickCount / step > 2) {\r\n            startTick = Math.round(Math.ceil(startTick / step) * step);\r\n        }\r\n        var showAllLabel = shouldShowAllLabels(axis);\r\n        var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\r\n        var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\r\n        if (includeMinLabel && startTick !== ordinalExtent[0]) {\r\n            addItem(ordinalExtent[0]);\r\n        }\r\n        var tickValue = startTick;\r\n        for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n            addItem(tickValue);\r\n        }\r\n        if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\r\n            addItem(ordinalExtent[1]);\r\n        }\r\n        function addItem(tickValue) {\r\n            var tickObj = { value: tickValue };\r\n            result.push(onlyTick\r\n                ? tickValue\r\n                : {\r\n                    formattedLabel: labelFormatter(tickObj),\r\n                    rawLabel: ordinalScale.getLabel(tickObj),\r\n                    tickValue: tickValue\r\n                });\r\n        }\r\n        return result;\r\n    }\r\n    function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\r\n        var ordinalScale = axis.scale;\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var result = [];\r\n        each(ordinalScale.getTicks(), function (tick) {\r\n            var rawLabel = ordinalScale.getLabel(tick);\r\n            var tickValue = tick.value;\r\n            if (categoryInterval(tick.value, rawLabel)) {\r\n                result.push(onlyTick\r\n                    ? tickValue\r\n                    : {\r\n                        formattedLabel: labelFormatter(tick),\r\n                        rawLabel: rawLabel,\r\n                        tickValue: tickValue\r\n                    });\r\n            }\r\n        });\r\n        return result;\r\n    }\n\n    var NORMALIZED_EXTENT = [0, 1];\r\n    var Axis = (function () {\r\n        function Axis(dim, scale, extent) {\r\n            this.onBand = false;\r\n            this.inverse = false;\r\n            this.dim = dim;\r\n            this.scale = scale;\r\n            this._extent = extent || [0, 0];\r\n        }\r\n        Axis.prototype.contain = function (coord) {\r\n            var extent = this._extent;\r\n            var min = Math.min(extent[0], extent[1]);\r\n            var max = Math.max(extent[0], extent[1]);\r\n            return coord >= min && coord <= max;\r\n        };\r\n        Axis.prototype.containData = function (data) {\r\n            return this.scale.contain(data);\r\n        };\r\n        Axis.prototype.getExtent = function () {\r\n            return this._extent.slice();\r\n        };\r\n        Axis.prototype.getPixelPrecision = function (dataExtent) {\r\n            return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\r\n        };\r\n        Axis.prototype.setExtent = function (start, end) {\r\n            var extent = this._extent;\r\n            extent[0] = start;\r\n            extent[1] = end;\r\n        };\r\n        Axis.prototype.dataToCoord = function (data, clamp) {\r\n            var extent = this._extent;\r\n            var scale = this.scale;\r\n            data = scale.normalize(data);\r\n            if (this.onBand && scale.type === 'ordinal') {\r\n                extent = extent.slice();\r\n                fixExtentWithBands(extent, scale.count());\r\n            }\r\n            return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\r\n        };\r\n        Axis.prototype.coordToData = function (coord, clamp) {\r\n            var extent = this._extent;\r\n            var scale = this.scale;\r\n            if (this.onBand && scale.type === 'ordinal') {\r\n                extent = extent.slice();\r\n                fixExtentWithBands(extent, scale.count());\r\n            }\r\n            var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\r\n            return this.scale.scale(t);\r\n        };\r\n        Axis.prototype.pointToData = function (point, clamp) {\r\n            return;\r\n        };\r\n        Axis.prototype.getTicksCoords = function (opt) {\r\n            opt = opt || {};\r\n            var tickModel = opt.tickModel || this.getTickModel();\r\n            var result = createAxisTicks(this, tickModel);\r\n            var ticks = result.ticks;\r\n            var ticksCoords = map(ticks, function (tickVal) {\r\n                return {\r\n                    coord: this.dataToCoord(this.scale.type === 'ordinal'\r\n                        ? this.scale.getRawIndex(tickVal)\r\n                        : tickVal),\r\n                    tickValue: tickVal\r\n                };\r\n            }, this);\r\n            var alignWithLabel = tickModel.get('alignWithLabel');\r\n            fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\r\n            return ticksCoords;\r\n        };\r\n        Axis.prototype.getMinorTicksCoords = function () {\r\n            if (this.scale.type === 'ordinal') {\r\n                return [];\r\n            }\r\n            var minorTickModel = this.model.getModel('minorTick');\r\n            var splitNumber = minorTickModel.get('splitNumber');\r\n            if (!(splitNumber > 0 && splitNumber < 100)) {\r\n                splitNumber = 5;\r\n            }\r\n            var minorTicks = this.scale.getMinorTicks(splitNumber);\r\n            var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\r\n                return map(minorTicksGroup, function (minorTick) {\r\n                    return {\r\n                        coord: this.dataToCoord(minorTick),\r\n                        tickValue: minorTick\r\n                    };\r\n                }, this);\r\n            }, this);\r\n            return minorTicksCoords;\r\n        };\r\n        Axis.prototype.getViewLabels = function () {\r\n            return createAxisLabels(this).labels;\r\n        };\r\n        Axis.prototype.getLabelModel = function () {\r\n            return this.model.getModel('axisLabel');\r\n        };\r\n        Axis.prototype.getTickModel = function () {\r\n            return this.model.getModel('axisTick');\r\n        };\r\n        Axis.prototype.getBandWidth = function () {\r\n            var axisExtent = this._extent;\r\n            var dataExtent = this.scale.getExtent();\r\n            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);\r\n            len === 0 && (len = 1);\r\n            var size = Math.abs(axisExtent[1] - axisExtent[0]);\r\n            return Math.abs(size) / len;\r\n        };\r\n        Axis.prototype.calculateCategoryInterval = function () {\r\n            return calculateCategoryInterval(this);\r\n        };\r\n        return Axis;\r\n    }());\r\n    function fixExtentWithBands(extent, nTick) {\r\n        var size = extent[1] - extent[0];\r\n        var len = nTick;\r\n        var margin = size / len / 2;\r\n        extent[0] += margin;\r\n        extent[1] -= margin;\r\n    }\r\n    function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\r\n        var ticksLen = ticksCoords.length;\r\n        if (!axis.onBand || alignWithLabel || !ticksLen) {\r\n            return;\r\n        }\r\n        var axisExtent = axis.getExtent();\r\n        var last;\r\n        var diffSize;\r\n        if (ticksLen === 1) {\r\n            ticksCoords[0].coord = axisExtent[0];\r\n            last = ticksCoords[1] = { coord: axisExtent[0] };\r\n        }\r\n        else {\r\n            var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\r\n            var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\r\n            each(ticksCoords, function (ticksItem) {\r\n                ticksItem.coord -= shift_1 / 2;\r\n            });\r\n            var dataExtent = axis.scale.getExtent();\r\n            diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\r\n            last = { coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize };\r\n            ticksCoords.push(last);\r\n        }\r\n        var inverse = axisExtent[0] > axisExtent[1];\r\n        if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\r\n            clamp ? (ticksCoords[0].coord = axisExtent[0]) : ticksCoords.shift();\r\n        }\r\n        if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\r\n            ticksCoords.unshift({ coord: axisExtent[0] });\r\n        }\r\n        if (littleThan(axisExtent[1], last.coord)) {\r\n            clamp ? (last.coord = axisExtent[1]) : ticksCoords.pop();\r\n        }\r\n        if (clamp && littleThan(last.coord, axisExtent[1])) {\r\n            ticksCoords.push({ coord: axisExtent[1] });\r\n        }\r\n        function littleThan(a, b) {\r\n            a = round$1(a);\r\n            b = round$1(b);\r\n            return inverse ? a > b : a < b;\r\n        }\r\n    }\n\n    var parseGeoJson = parseGeoJSON;\r\n    var number = {};\r\n    each([\r\n        'linearMap',\r\n        'round',\r\n        'asc',\r\n        'getPrecision',\r\n        'getPrecisionSafe',\r\n        'getPixelPrecision',\r\n        'getPercentWithPrecision',\r\n        'MAX_SAFE_INTEGER',\r\n        'remRadian',\r\n        'isRadianAroundZero',\r\n        'parseDate',\r\n        'quantity',\r\n        'quantityExponent',\r\n        'nice',\r\n        'quantile',\r\n        'reformIntervals',\r\n        'isNumeric',\r\n        'numericToNumber'\r\n    ], function (name) {\r\n        number[name] = numberUtil[name];\r\n    });\r\n    var format$1 = {};\r\n    each([\r\n        'addCommas',\r\n        'toCamelCase',\r\n        'normalizeCssArray',\r\n        'encodeHTML',\r\n        'formatTpl',\r\n        'getTooltipMarker',\r\n        'formatTime',\r\n        'capitalFirst',\r\n        'truncateText',\r\n        'getTextRect'\r\n    ], function (name) {\r\n        format$1[name] = formatUtil[name];\r\n    });\r\n    var time = {\r\n        parse: parseDate,\r\n        format: format\r\n    };\r\n    var ecUtil = {};\r\n    each([\r\n        'map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter',\r\n        'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction',\r\n        'extend', 'defaults', 'clone', 'merge'\r\n    ], function (name) {\r\n        ecUtil[name] = zrUtil[name];\r\n    });\r\n    var GRAPHIC_KEYS = [\r\n        'extendShape', 'extendPath', 'makePath', 'makeImage',\r\n        'mergePath', 'resizePath', 'createIcon',\r\n        'updateProps', 'initProps', 'getTransform',\r\n        'clipPointsByRect', 'clipRectByRect',\r\n        'registerShape', 'getShapeClass',\r\n        'Group',\r\n        'Image',\r\n        'Text',\r\n        'Circle',\r\n        'Ellipse',\r\n        'Sector',\r\n        'Ring',\r\n        'Polygon',\r\n        'Polyline',\r\n        'Rect',\r\n        'Line',\r\n        'BezierCurve',\r\n        'Arc',\r\n        'IncrementalDisplayable',\r\n        'CompoundPath',\r\n        'LinearGradient',\r\n        'RadialGradient',\r\n        'BoundingRect'\r\n    ];\r\n    var graphic$1 = {};\r\n    each(GRAPHIC_KEYS, function (name) {\r\n        graphic$1[name] = graphic[name];\r\n    });\n\n    var LineSeriesModel = (function (_super) {\r\n        __extends(LineSeriesModel, _super);\r\n        function LineSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LineSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            _this.legendSymbol = 'line';\r\n            return _this;\r\n        }\r\n        LineSeriesModel.prototype.getInitialData = function (option) {\r\n            if (__DEV__) {\r\n                var coordSys = option.coordinateSystem;\r\n                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\r\n                    throw new Error('Line not support coordinateSystem besides cartesian and polar');\r\n                }\r\n            }\r\n            return createListFromArray(this.getSource(), this, {\r\n                useEncodeDefaulter: true\r\n            });\r\n        };\r\n        LineSeriesModel.type = 'series.line';\r\n        LineSeriesModel.dependencies = ['grid', 'polar'];\r\n        LineSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 3,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            clip: true,\r\n            label: {\r\n                position: 'top'\r\n            },\r\n            endLabel: {\r\n                show: false,\r\n                valueAnimation: true,\r\n                distance: 8\r\n            },\r\n            lineStyle: {\r\n                width: 2,\r\n                type: 'solid'\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                lineStyle: {\r\n                    width: 'bolder'\r\n                }\r\n            },\r\n            step: false,\r\n            smooth: false,\r\n            smoothMonotone: null,\r\n            symbol: 'emptyCircle',\r\n            symbolSize: 4,\r\n            symbolRotate: null,\r\n            showSymbol: true,\r\n            showAllSymbol: 'auto',\r\n            connectNulls: false,\r\n            sampling: 'none',\r\n            animationEasing: 'linear',\r\n            progressive: 0,\r\n            hoverLayerThreshold: Infinity\r\n        };\r\n        return LineSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(LineSeriesModel);\n\n    function getDefaultLabel(data, dataIndex) {\r\n        var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n        var len = labelDims.length;\r\n        if (len === 1) {\r\n            return retrieveRawValue(data, dataIndex, labelDims[0]);\r\n        }\r\n        else if (len) {\r\n            var vals = [];\r\n            for (var i = 0; i < labelDims.length; i++) {\r\n                vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));\r\n            }\r\n            return vals.join(' ');\r\n        }\r\n    }\r\n    function getDefaultInterpolatedLabel(data, interpolatedValue) {\r\n        var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n        if (!isArray(interpolatedValue)) {\r\n            return interpolatedValue + '';\r\n        }\r\n        var vals = [];\r\n        for (var i = 0; i < labelDims.length; i++) {\r\n            var dimInfo = data.getDimensionInfo(labelDims[i]);\r\n            if (dimInfo) {\r\n                vals.push(interpolatedValue[dimInfo.index]);\r\n            }\r\n        }\r\n        return vals.join(' ');\r\n    }\n\n    var Symbol = (function (_super) {\r\n        __extends(Symbol, _super);\r\n        function Symbol(data, idx, seriesScope, opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.updateData(data, idx, seriesScope, opts);\r\n            return _this;\r\n        }\r\n        Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\r\n            this.removeAll();\r\n            var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\r\n            symbolPath.attr({\r\n                z2: 100,\r\n                culling: true,\r\n                scaleX: symbolSize[0] / 2,\r\n                scaleY: symbolSize[1] / 2\r\n            });\r\n            symbolPath.drift = driftSymbol;\r\n            this._symbolType = symbolType;\r\n            this.add(symbolPath);\r\n        };\r\n        Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\r\n            this.childAt(0).stopAnimation(null, toLastFrame);\r\n        };\r\n        Symbol.prototype.getSymbolPath = function () {\r\n            return this.childAt(0);\r\n        };\r\n        Symbol.prototype.highlight = function () {\r\n            enterEmphasis(this.childAt(0));\r\n        };\r\n        Symbol.prototype.downplay = function () {\r\n            leaveEmphasis(this.childAt(0));\r\n        };\r\n        Symbol.prototype.setZ = function (zlevel, z) {\r\n            var symbolPath = this.childAt(0);\r\n            symbolPath.zlevel = zlevel;\r\n            symbolPath.z = z;\r\n        };\r\n        Symbol.prototype.setDraggable = function (draggable) {\r\n            var symbolPath = this.childAt(0);\r\n            symbolPath.draggable = draggable;\r\n            symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\r\n        };\r\n        Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\r\n            this.silent = false;\r\n            var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\r\n            var seriesModel = data.hostModel;\r\n            var symbolSize = Symbol.getSymbolSize(data, idx);\r\n            var isInit = symbolType !== this._symbolType;\r\n            var disableAnimation = opts && opts.disableAnimation;\r\n            if (isInit) {\r\n                var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\r\n                this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\r\n            }\r\n            else {\r\n                var symbolPath = this.childAt(0);\r\n                symbolPath.silent = false;\r\n                var target = {\r\n                    scaleX: symbolSize[0] / 2,\r\n                    scaleY: symbolSize[1] / 2\r\n                };\r\n                disableAnimation ? symbolPath.attr(target)\r\n                    : updateProps(symbolPath, target, seriesModel, idx);\r\n            }\r\n            this._updateCommon(data, idx, symbolSize, seriesScope, opts);\r\n            if (isInit) {\r\n                var symbolPath = this.childAt(0);\r\n                if (!disableAnimation) {\r\n                    var target = {\r\n                        scaleX: this._sizeX,\r\n                        scaleY: this._sizeY,\r\n                        style: {\r\n                            opacity: symbolPath.style.opacity\r\n                        }\r\n                    };\r\n                    symbolPath.scaleX = symbolPath.scaleY = 0;\r\n                    symbolPath.style.opacity = 0;\r\n                    initProps(symbolPath, target, seriesModel, idx);\r\n                }\r\n            }\r\n            if (disableAnimation) {\r\n                this.childAt(0).stopAnimation('remove');\r\n            }\r\n            this._seriesModel = seriesModel;\r\n        };\r\n        Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\r\n            var symbolPath = this.childAt(0);\r\n            var seriesModel = data.hostModel;\r\n            var emphasisItemStyle;\r\n            var blurItemStyle;\r\n            var selectItemStyle;\r\n            var focus;\r\n            var blurScope;\r\n            var symbolOffset;\r\n            var labelStatesModels;\r\n            var hoverScale;\r\n            var cursorStyle;\r\n            if (seriesScope) {\r\n                emphasisItemStyle = seriesScope.emphasisItemStyle;\r\n                blurItemStyle = seriesScope.blurItemStyle;\r\n                selectItemStyle = seriesScope.selectItemStyle;\r\n                focus = seriesScope.focus;\r\n                blurScope = seriesScope.blurScope;\r\n                symbolOffset = seriesScope.symbolOffset;\r\n                labelStatesModels = seriesScope.labelStatesModels;\r\n                hoverScale = seriesScope.hoverScale;\r\n                cursorStyle = seriesScope.cursorStyle;\r\n            }\r\n            if (!seriesScope || data.hasItemOption) {\r\n                var itemModel = (seriesScope && seriesScope.itemModel)\r\n                    ? seriesScope.itemModel : data.getItemModel(idx);\r\n                var emphasisModel = itemModel.getModel('emphasis');\r\n                emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n                selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n                blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n                focus = emphasisModel.get('focus');\r\n                blurScope = emphasisModel.get('blurScope');\r\n                symbolOffset = itemModel.getShallow('symbolOffset');\r\n                labelStatesModels = getLabelStatesModels(itemModel);\r\n                hoverScale = emphasisModel.getShallow('scale');\r\n                cursorStyle = itemModel.getShallow('cursor');\r\n            }\r\n            var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\r\n            symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\r\n            if (symbolOffset) {\r\n                symbolPath.x = parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n                symbolPath.y = parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n            }\r\n            cursorStyle && symbolPath.attr('cursor', cursorStyle);\r\n            var symbolStyle = data.getItemVisual(idx, 'style');\r\n            var visualColor = symbolStyle.fill;\r\n            if (symbolPath instanceof ZRImage) {\r\n                var pathStyle = symbolPath.style;\r\n                symbolPath.useStyle(extend({\r\n                    image: pathStyle.image,\r\n                    x: pathStyle.x, y: pathStyle.y,\r\n                    width: pathStyle.width, height: pathStyle.height\r\n                }, symbolStyle));\r\n            }\r\n            else {\r\n                if (symbolPath.__isEmptyBrush) {\r\n                    symbolPath.useStyle(extend({}, symbolStyle));\r\n                }\r\n                else {\r\n                    symbolPath.useStyle(symbolStyle);\r\n                }\r\n                symbolPath.style.decal = null;\r\n                symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\r\n                symbolPath.style.strokeNoScale = true;\r\n            }\r\n            var liftZ = data.getItemVisual(idx, 'liftZ');\r\n            var z2Origin = this._z2;\r\n            if (liftZ != null) {\r\n                if (z2Origin == null) {\r\n                    this._z2 = symbolPath.z2;\r\n                    symbolPath.z2 += liftZ;\r\n                }\r\n            }\r\n            else if (z2Origin != null) {\r\n                symbolPath.z2 = z2Origin;\r\n                this._z2 = null;\r\n            }\r\n            var useNameLabel = opts && opts.useNameLabel;\r\n            setLabelStyle(symbolPath, labelStatesModels, {\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: idx,\r\n                defaultText: getLabelDefaultText,\r\n                inheritColor: visualColor,\r\n                defaultOpacity: symbolStyle.opacity\r\n            });\r\n            function getLabelDefaultText(idx) {\r\n                return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\r\n            }\r\n            this._sizeX = symbolSize[0] / 2;\r\n            this._sizeY = symbolSize[1] / 2;\r\n            var emphasisState = symbolPath.ensureState('emphasis');\r\n            emphasisState.style = emphasisItemStyle;\r\n            symbolPath.ensureState('select').style = selectItemStyle;\r\n            symbolPath.ensureState('blur').style = blurItemStyle;\r\n            if (hoverScale) {\r\n                var scaleRatio = Math.max(1.1, 3 / this._sizeY);\r\n                emphasisState.scaleX = this._sizeX * scaleRatio;\r\n                emphasisState.scaleY = this._sizeY * scaleRatio;\r\n            }\r\n            this.setSymbolScale(1);\r\n            enableHoverEmphasis(this, focus, blurScope);\r\n        };\r\n        Symbol.prototype.setSymbolScale = function (scale) {\r\n            this.scaleX = this.scaleY = scale;\r\n        };\r\n        Symbol.prototype.fadeOut = function (cb, opt) {\r\n            var symbolPath = this.childAt(0);\r\n            var seriesModel = this._seriesModel;\r\n            var dataIndex = getECData(this).dataIndex;\r\n            var animationOpt = opt && opt.animation;\r\n            this.silent = symbolPath.silent = true;\r\n            if (opt && opt.fadeLabel) {\r\n                var textContent = symbolPath.getTextContent();\r\n                if (textContent) {\r\n                    removeElement(textContent, {\r\n                        style: {\r\n                            opacity: 0\r\n                        }\r\n                    }, seriesModel, {\r\n                        dataIndex: dataIndex,\r\n                        removeOpt: animationOpt,\r\n                        cb: function () {\r\n                            symbolPath.removeTextContent();\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            else {\r\n                symbolPath.removeTextContent();\r\n            }\r\n            removeElement(symbolPath, {\r\n                style: {\r\n                    opacity: 0\r\n                },\r\n                scaleX: 0,\r\n                scaleY: 0\r\n            }, seriesModel, { dataIndex: dataIndex, cb: cb, removeOpt: animationOpt });\r\n        };\r\n        Symbol.getSymbolSize = function (data, idx) {\r\n            var symbolSize = data.getItemVisual(idx, 'symbolSize');\r\n            return symbolSize instanceof Array\r\n                ? symbolSize.slice()\r\n                : [+symbolSize, +symbolSize];\r\n        };\r\n        return Symbol;\r\n    }(Group));\r\n    function driftSymbol(dx, dy) {\r\n        this.parent.drift(dx, dy);\r\n    }\n\n    function symbolNeedsDraw(data, point, idx, opt) {\r\n        return point && !isNaN(point[0]) && !isNaN(point[1])\r\n            && !(opt.isIgnore && opt.isIgnore(idx))\r\n            && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1]))\r\n            && data.getItemVisual(idx, 'symbol') !== 'none';\r\n    }\r\n    function normalizeUpdateOpt(opt) {\r\n        if (opt != null && !isObject(opt)) {\r\n            opt = { isIgnore: opt };\r\n        }\r\n        return opt || {};\r\n    }\r\n    function makeSeriesScope(data) {\r\n        var seriesModel = data.hostModel;\r\n        var emphasisModel = seriesModel.getModel('emphasis');\r\n        return {\r\n            emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\r\n            blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\r\n            selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\r\n            focus: emphasisModel.get('focus'),\r\n            blurScope: emphasisModel.get('blurScope'),\r\n            symbolRotate: seriesModel.get('symbolRotate'),\r\n            symbolOffset: seriesModel.get('symbolOffset'),\r\n            hoverScale: emphasisModel.get('scale'),\r\n            labelStatesModels: getLabelStatesModels(seriesModel),\r\n            cursorStyle: seriesModel.get('cursor')\r\n        };\r\n    }\r\n    var SymbolDraw = (function () {\r\n        function SymbolDraw(SymbolCtor) {\r\n            this.group = new Group();\r\n            this._SymbolCtor = SymbolCtor || Symbol;\r\n        }\r\n        SymbolDraw.prototype.updateData = function (data, opt) {\r\n            opt = normalizeUpdateOpt(opt);\r\n            var group = this.group;\r\n            var seriesModel = data.hostModel;\r\n            var oldData = this._data;\r\n            var SymbolCtor = this._SymbolCtor;\r\n            var disableAnimation = opt.disableAnimation;\r\n            var seriesScope = makeSeriesScope(data);\r\n            var symbolUpdateOpt = { disableAnimation: disableAnimation };\r\n            var getSymbolPoint = opt.getSymbolPoint || function (idx) {\r\n                return data.getItemLayout(idx);\r\n            };\r\n            if (!oldData) {\r\n                group.removeAll();\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (newIdx) {\r\n                var point = getSymbolPoint(newIdx);\r\n                if (symbolNeedsDraw(data, point, newIdx, opt)) {\r\n                    var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\r\n                    symbolEl.setPosition(point);\r\n                    data.setItemGraphicEl(newIdx, symbolEl);\r\n                    group.add(symbolEl);\r\n                }\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n                var point = getSymbolPoint(newIdx);\r\n                if (!symbolNeedsDraw(data, point, newIdx, opt)) {\r\n                    group.remove(symbolEl);\r\n                    return;\r\n                }\r\n                if (!symbolEl) {\r\n                    symbolEl = new SymbolCtor(data, newIdx);\r\n                    symbolEl.setPosition(point);\r\n                }\r\n                else {\r\n                    symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\r\n                    var target = {\r\n                        x: point[0],\r\n                        y: point[1]\r\n                    };\r\n                    disableAnimation\r\n                        ? symbolEl.attr(target)\r\n                        : updateProps(symbolEl, target, seriesModel);\r\n                }\r\n                group.add(symbolEl);\r\n                data.setItemGraphicEl(newIdx, symbolEl);\r\n            })\r\n                .remove(function (oldIdx) {\r\n                var el = oldData.getItemGraphicEl(oldIdx);\r\n                el && el.fadeOut(function () {\r\n                    group.remove(el);\r\n                });\r\n            })\r\n                .execute();\r\n            this._getSymbolPoint = getSymbolPoint;\r\n            this._data = data;\r\n        };\r\n        SymbolDraw.prototype.isPersistent = function () {\r\n            return true;\r\n        };\r\n        SymbolDraw.prototype.updateLayout = function () {\r\n            var _this = this;\r\n            var data = this._data;\r\n            if (data) {\r\n                data.eachItemGraphicEl(function (el, idx) {\r\n                    var point = _this._getSymbolPoint(idx);\r\n                    el.setPosition(point);\r\n                    el.markRedraw();\r\n                });\r\n            }\r\n        };\r\n        SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n            this._seriesScope = makeSeriesScope(data);\r\n            this._data = null;\r\n            this.group.removeAll();\r\n        };\r\n        SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\r\n            opt = normalizeUpdateOpt(opt);\r\n            function updateIncrementalAndHover(el) {\r\n                if (!el.isGroup) {\r\n                    el.incremental = true;\r\n                    el.ensureState('emphasis').hoverLayer = true;\r\n                }\r\n            }\r\n            for (var idx = taskParams.start; idx < taskParams.end; idx++) {\r\n                var point = data.getItemLayout(idx);\r\n                if (symbolNeedsDraw(data, point, idx, opt)) {\r\n                    var el = new this._SymbolCtor(data, idx, this._seriesScope);\r\n                    el.traverse(updateIncrementalAndHover);\r\n                    el.setPosition(point);\r\n                    this.group.add(el);\r\n                    data.setItemGraphicEl(idx, el);\r\n                }\r\n            }\r\n        };\r\n        SymbolDraw.prototype.remove = function (enableAnimation) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (data && enableAnimation) {\r\n                data.eachItemGraphicEl(function (el) {\r\n                    el.fadeOut(function () {\r\n                        group.remove(el);\r\n                    });\r\n                });\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n        };\r\n        return SymbolDraw;\r\n    }());\n\n    function prepareDataCoordInfo(coordSys, data, valueOrigin) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n        var valueStart = getValueStart(valueAxis, valueOrigin);\r\n        var baseAxisDim = baseAxis.dim;\r\n        var valueAxisDim = valueAxis.dim;\r\n        var valueDim = data.mapDimension(valueAxisDim);\r\n        var baseDim = data.mapDimension(baseAxisDim);\r\n        var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\r\n        var dims = map(coordSys.dimensions, function (coordDim) {\r\n            return data.mapDimension(coordDim);\r\n        });\r\n        var stacked = false;\r\n        var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n        if (isDimensionStacked(data, dims[0])) {\r\n            stacked = true;\r\n            dims[0] = stackResultDim;\r\n        }\r\n        if (isDimensionStacked(data, dims[1])) {\r\n            stacked = true;\r\n            dims[1] = stackResultDim;\r\n        }\r\n        return {\r\n            dataDimsForPoint: dims,\r\n            valueStart: valueStart,\r\n            valueAxisDim: valueAxisDim,\r\n            baseAxisDim: baseAxisDim,\r\n            stacked: !!stacked,\r\n            valueDim: valueDim,\r\n            baseDim: baseDim,\r\n            baseDataOffset: baseDataOffset,\r\n            stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\r\n        };\r\n    }\r\n    function getValueStart(valueAxis, valueOrigin) {\r\n        var valueStart = 0;\r\n        var extent = valueAxis.scale.getExtent();\r\n        if (valueOrigin === 'start') {\r\n            valueStart = extent[0];\r\n        }\r\n        else if (valueOrigin === 'end') {\r\n            valueStart = extent[1];\r\n        }\r\n        else {\r\n            if (extent[0] > 0) {\r\n                valueStart = extent[0];\r\n            }\r\n            else if (extent[1] < 0) {\r\n                valueStart = extent[1];\r\n            }\r\n        }\r\n        return valueStart;\r\n    }\r\n    function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\r\n        var value = NaN;\r\n        if (dataCoordInfo.stacked) {\r\n            value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\r\n        }\r\n        if (isNaN(value)) {\r\n            value = dataCoordInfo.valueStart;\r\n        }\r\n        var baseDataOffset = dataCoordInfo.baseDataOffset;\r\n        var stackedData = [];\r\n        stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\r\n        stackedData[1 - baseDataOffset] = value;\r\n        return coordSys.dataToPoint(stackedData);\r\n    }\n\n    var supportFloat32Array = typeof Float32Array !== 'undefined';\r\n    var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;\r\n    function createFloat32Array(arg) {\r\n        if (isArray(arg)) {\r\n            return supportFloat32Array ? new Float32Array(arg) : arg;\r\n        }\r\n        return new Float32ArrayCtor(arg);\r\n    }\n\n    function diffData(oldData, newData) {\r\n        var diffResult = [];\r\n        newData.diff(oldData)\r\n            .add(function (idx) {\r\n            diffResult.push({ cmd: '+', idx: idx });\r\n        })\r\n            .update(function (newIdx, oldIdx) {\r\n            diffResult.push({ cmd: '=', idx: oldIdx, idx1: newIdx });\r\n        })\r\n            .remove(function (idx) {\r\n            diffResult.push({ cmd: '-', idx: idx });\r\n        })\r\n            .execute();\r\n        return diffResult;\r\n    }\r\n    function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\r\n        var diff = diffData(oldData, newData);\r\n        var currPoints = [];\r\n        var nextPoints = [];\r\n        var currStackedPoints = [];\r\n        var nextStackedPoints = [];\r\n        var status = [];\r\n        var sortedIndices = [];\r\n        var rawIndices = [];\r\n        var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\r\n        var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\r\n        var oldPoints = oldData.getLayout('points') || [];\r\n        var newPoints = newData.getLayout('points') || [];\r\n        for (var i = 0; i < diff.length; i++) {\r\n            var diffItem = diff[i];\r\n            var pointAdded = true;\r\n            var oldIdx2 = void 0;\r\n            var newIdx2 = void 0;\r\n            switch (diffItem.cmd) {\r\n                case '=':\r\n                    oldIdx2 = diffItem.idx * 2;\r\n                    newIdx2 = diffItem.idx1 * 2;\r\n                    var currentX = oldPoints[oldIdx2];\r\n                    var currentY = oldPoints[oldIdx2 + 1];\r\n                    var nextX = newPoints[newIdx2];\r\n                    var nextY = newPoints[newIdx2 + 1];\r\n                    if (isNaN(currentX) || isNaN(currentY)) {\r\n                        currentX = nextX;\r\n                        currentY = nextY;\r\n                    }\r\n                    currPoints.push(currentX, currentY);\r\n                    nextPoints.push(nextX, nextY);\r\n                    currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\r\n                    nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\r\n                    rawIndices.push(newData.getRawIndex(diffItem.idx1));\r\n                    break;\r\n                case '+':\r\n                    var newIdx = diffItem.idx;\r\n                    var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;\r\n                    var oldPt = oldCoordSys.dataToPoint([\r\n                        newData.get(newDataDimsForPoint[0], newIdx),\r\n                        newData.get(newDataDimsForPoint[1], newIdx)\r\n                    ]);\r\n                    newIdx2 = newIdx * 2;\r\n                    currPoints.push(oldPt[0], oldPt[1]);\r\n                    nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);\r\n                    var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);\r\n                    currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);\r\n                    nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\r\n                    rawIndices.push(newData.getRawIndex(newIdx));\r\n                    break;\r\n                case '-':\r\n                    var oldIdx = diffItem.idx;\r\n                    var rawIndex = oldData.getRawIndex(oldIdx);\r\n                    var oldDataDimsForPoint = oldDataNewCoordInfo.dataDimsForPoint;\r\n                    oldIdx2 = oldIdx * 2;\r\n                    if (rawIndex !== oldIdx) {\r\n                        var newPt = newCoordSys.dataToPoint([\r\n                            oldData.get(oldDataDimsForPoint[0], oldIdx),\r\n                            oldData.get(oldDataDimsForPoint[1], oldIdx)\r\n                        ]);\r\n                        var newStackedOnPt = getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, oldIdx);\r\n                        currPoints.push(oldPoints[oldIdx2], oldPoints[oldIdx2 + 1]);\r\n                        nextPoints.push(newPt[0], newPt[1]);\r\n                        currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\r\n                        nextStackedPoints.push(newStackedOnPt[0], newStackedOnPt[1]);\r\n                        rawIndices.push(rawIndex);\r\n                    }\r\n                    else {\r\n                        pointAdded = false;\r\n                    }\r\n            }\r\n            if (pointAdded) {\r\n                status.push(diffItem);\r\n                sortedIndices.push(sortedIndices.length);\r\n            }\r\n        }\r\n        sortedIndices.sort(function (a, b) {\r\n            return rawIndices[a] - rawIndices[b];\r\n        });\r\n        var len = currPoints.length;\r\n        var sortedCurrPoints = createFloat32Array(len);\r\n        var sortedNextPoints = createFloat32Array(len);\r\n        var sortedCurrStackedPoints = createFloat32Array(len);\r\n        var sortedNextStackedPoints = createFloat32Array(len);\r\n        var sortedStatus = [];\r\n        for (var i = 0; i < sortedIndices.length; i++) {\r\n            var idx = sortedIndices[i];\r\n            var i2 = i * 2;\r\n            var idx2 = idx * 2;\r\n            sortedCurrPoints[i2] = currPoints[idx2];\r\n            sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];\r\n            sortedNextPoints[i2] = nextPoints[idx2];\r\n            sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];\r\n            sortedCurrStackedPoints[i2] = currStackedPoints[idx2];\r\n            sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];\r\n            sortedNextStackedPoints[i2] = nextStackedPoints[idx2];\r\n            sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];\r\n            sortedStatus[i] = status[idx];\r\n        }\r\n        return {\r\n            current: sortedCurrPoints,\r\n            next: sortedNextPoints,\r\n            stackedOnCurrent: sortedCurrStackedPoints,\r\n            stackedOnNext: sortedNextStackedPoints,\r\n            status: sortedStatus\r\n        };\r\n    }\n\n    var mathMin$5 = Math.min;\r\n    var mathMax$5 = Math.max;\r\n    function isPointNull(x, y) {\r\n        return isNaN(x) || isNaN(y);\r\n    }\r\n    function drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {\r\n        var prevX;\r\n        var prevY;\r\n        var cpx0;\r\n        var cpy0;\r\n        var cpx1;\r\n        var cpy1;\r\n        var idx = start;\r\n        var k = 0;\r\n        for (; k < segLen; k++) {\r\n            var x = points[idx * 2];\r\n            var y = points[idx * 2 + 1];\r\n            if (idx >= allLen || idx < 0) {\r\n                break;\r\n            }\r\n            if (isPointNull(x, y)) {\r\n                if (connectNulls) {\r\n                    idx += dir;\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            if (idx === start) {\r\n                ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y);\r\n                cpx0 = x;\r\n                cpy0 = y;\r\n            }\r\n            else {\r\n                var dx = x - prevX;\r\n                var dy = y - prevY;\r\n                if ((dx * dx + dy * dy) < 0.5) {\r\n                    idx += dir;\r\n                    continue;\r\n                }\r\n                if (smooth > 0) {\r\n                    var nextIdx = idx + dir;\r\n                    var nextX = points[nextIdx * 2];\r\n                    var nextY = points[nextIdx * 2 + 1];\r\n                    var tmpK = k + 1;\r\n                    if (connectNulls) {\r\n                        while (isPointNull(nextX, nextY) && tmpK < segLen) {\r\n                            tmpK++;\r\n                            nextIdx += dir;\r\n                            nextX = points[nextIdx * 2];\r\n                            nextY = points[nextIdx * 2 + 1];\r\n                        }\r\n                    }\r\n                    var ratioNextSeg = 0.5;\r\n                    var vx = 0;\r\n                    var vy = 0;\r\n                    var nextCpx0 = void 0;\r\n                    var nextCpy0 = void 0;\r\n                    if (tmpK >= segLen || isPointNull(nextX, nextY)) {\r\n                        cpx1 = x;\r\n                        cpy1 = y;\r\n                    }\r\n                    else {\r\n                        vx = nextX - prevX;\r\n                        vy = nextY - prevY;\r\n                        var dx0 = x - prevX;\r\n                        var dx1 = nextX - x;\r\n                        var dy0 = y - prevY;\r\n                        var dy1 = nextY - y;\r\n                        var lenPrevSeg = void 0;\r\n                        var lenNextSeg = void 0;\r\n                        if (smoothMonotone === 'x') {\r\n                            lenPrevSeg = Math.abs(dx0);\r\n                            lenNextSeg = Math.abs(dx1);\r\n                            cpx1 = x - lenPrevSeg * smooth;\r\n                            cpy1 = y;\r\n                            nextCpx0 = x + lenPrevSeg * smooth;\r\n                            nextCpy0 = y;\r\n                        }\r\n                        else if (smoothMonotone === 'y') {\r\n                            lenPrevSeg = Math.abs(dy0);\r\n                            lenNextSeg = Math.abs(dy1);\r\n                            cpx1 = x;\r\n                            cpy1 = y - lenPrevSeg * smooth;\r\n                            nextCpx0 = x;\r\n                            nextCpy0 = y + lenPrevSeg * smooth;\r\n                        }\r\n                        else {\r\n                            lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);\r\n                            lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n                            ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\r\n                            cpx1 = x - vx * smooth * (1 - ratioNextSeg);\r\n                            cpy1 = y - vy * smooth * (1 - ratioNextSeg);\r\n                            nextCpx0 = x + vx * smooth * ratioNextSeg;\r\n                            nextCpy0 = y + vy * smooth * ratioNextSeg;\r\n                            nextCpx0 = mathMin$5(nextCpx0, mathMax$5(nextX, x));\r\n                            nextCpy0 = mathMin$5(nextCpy0, mathMax$5(nextY, y));\r\n                            nextCpx0 = mathMax$5(nextCpx0, mathMin$5(nextX, x));\r\n                            nextCpy0 = mathMax$5(nextCpy0, mathMin$5(nextY, y));\r\n                            vx = nextCpx0 - x;\r\n                            vy = nextCpy0 - y;\r\n                            cpx1 = x - vx * lenPrevSeg / lenNextSeg;\r\n                            cpy1 = y - vy * lenPrevSeg / lenNextSeg;\r\n                            cpx1 = mathMin$5(cpx1, mathMax$5(prevX, x));\r\n                            cpy1 = mathMin$5(cpy1, mathMax$5(prevY, y));\r\n                            cpx1 = mathMax$5(cpx1, mathMin$5(prevX, x));\r\n                            cpy1 = mathMax$5(cpy1, mathMin$5(prevY, y));\r\n                            vx = x - cpx1;\r\n                            vy = y - cpy1;\r\n                            nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;\r\n                            nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;\r\n                        }\r\n                    }\r\n                    ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);\r\n                    cpx0 = nextCpx0;\r\n                    cpy0 = nextCpy0;\r\n                }\r\n                else {\r\n                    ctx.lineTo(x, y);\r\n                }\r\n            }\r\n            prevX = x;\r\n            prevY = y;\r\n            idx += dir;\r\n        }\r\n        return k;\r\n    }\r\n    var ECPolylineShape = (function () {\r\n        function ECPolylineShape() {\r\n            this.smooth = 0;\r\n            this.smoothConstraint = true;\r\n        }\r\n        return ECPolylineShape;\r\n    }());\r\n    var ECPolyline = (function (_super) {\r\n        __extends(ECPolyline, _super);\r\n        function ECPolyline(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-polyline';\r\n            return _this;\r\n        }\r\n        ECPolyline.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        ECPolyline.prototype.getDefaultShape = function () {\r\n            return new ECPolylineShape();\r\n        };\r\n        ECPolyline.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var i = 0;\r\n            var len = points.length / 2;\r\n            if (shape.connectNulls) {\r\n                for (; len > 0; len--) {\r\n                    if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n                for (; i < len; i++) {\r\n                    if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            while (i < len) {\r\n                i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\r\n            }\r\n        };\r\n        ECPolyline.prototype.getPointOn = function (xOrY, dim) {\r\n            if (!this.path) {\r\n                this.createPathProxy();\r\n                this.buildPath(this.path, this.shape);\r\n            }\r\n            var path = this.path;\r\n            var data = path.data;\r\n            var CMD = PathProxy.CMD;\r\n            var x0;\r\n            var y0;\r\n            var isDimX = dim === 'x';\r\n            var roots = [];\r\n            for (var i = 0; i < data.length;) {\r\n                var cmd = data[i++];\r\n                var x = void 0;\r\n                var y = void 0;\r\n                var x2 = void 0;\r\n                var y2 = void 0;\r\n                var x3 = void 0;\r\n                var y3 = void 0;\r\n                var t = void 0;\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        x0 = data[i++];\r\n                        y0 = data[i++];\r\n                        break;\r\n                    case CMD.L:\r\n                        x = data[i++];\r\n                        y = data[i++];\r\n                        t = isDimX ? (xOrY - x0) / (x - x0)\r\n                            : (xOrY - y0) / (y - y0);\r\n                        if (t <= 1 && t >= 0) {\r\n                            var val = isDimX ? (y - y0) * t + y0\r\n                                : (x - x0) * t + x0;\r\n                            return isDimX ? [xOrY, val] : [val, xOrY];\r\n                        }\r\n                        x0 = x;\r\n                        y0 = y;\r\n                        break;\r\n                    case CMD.C:\r\n                        x = data[i++];\r\n                        y = data[i++];\r\n                        x2 = data[i++];\r\n                        y2 = data[i++];\r\n                        x3 = data[i++];\r\n                        y3 = data[i++];\r\n                        var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots)\r\n                            : cubicRootAt(y0, y, y2, y3, xOrY, roots);\r\n                        if (nRoot > 0) {\r\n                            for (var i_1 = 0; i_1 < nRoot; i_1++) {\r\n                                var t_1 = roots[i_1];\r\n                                if (t_1 <= 1 && t_1 >= 0) {\r\n                                    var val = isDimX ? cubicAt(y0, y, y2, y3, t_1)\r\n                                        : cubicAt(x0, x, x2, x3, t_1);\r\n                                    return isDimX ? [xOrY, val] : [val, xOrY];\r\n                                }\r\n                            }\r\n                        }\r\n                        x0 = x3;\r\n                        y0 = y3;\r\n                        break;\r\n                }\r\n            }\r\n        };\r\n        return ECPolyline;\r\n    }(Path));\r\n    var ECPolygonShape = (function (_super) {\r\n        __extends(ECPolygonShape, _super);\r\n        function ECPolygonShape() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return ECPolygonShape;\r\n    }(ECPolylineShape));\r\n    var ECPolygon = (function (_super) {\r\n        __extends(ECPolygon, _super);\r\n        function ECPolygon(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-polygon';\r\n            return _this;\r\n        }\r\n        ECPolygon.prototype.getDefaultShape = function () {\r\n            return new ECPolygonShape();\r\n        };\r\n        ECPolygon.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var stackedOnPoints = shape.stackedOnPoints;\r\n            var i = 0;\r\n            var len = points.length / 2;\r\n            var smoothMonotone = shape.smoothMonotone;\r\n            if (shape.connectNulls) {\r\n                for (; len > 0; len--) {\r\n                    if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n                for (; i < len; i++) {\r\n                    if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            while (i < len) {\r\n                var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls);\r\n                drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\r\n                i += k + 1;\r\n                ctx.closePath();\r\n            }\r\n        };\r\n        return ECPolygon;\r\n    }(Path));\n\n    function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {\r\n        var rect = cartesian.getArea();\r\n        var x = rect.x;\r\n        var y = rect.y;\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2;\r\n        x -= lineWidth / 2;\r\n        y -= lineWidth / 2;\r\n        width += lineWidth;\r\n        height += lineWidth;\r\n        x = Math.floor(x);\r\n        width = Math.round(width);\r\n        var clipPath = new Rect({\r\n            shape: {\r\n                x: x,\r\n                y: y,\r\n                width: width,\r\n                height: height\r\n            }\r\n        });\r\n        if (hasAnimation) {\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var isHorizontal = baseAxis.isHorizontal();\r\n            var isAxisInversed = baseAxis.inverse;\r\n            if (isHorizontal) {\r\n                if (isAxisInversed) {\r\n                    clipPath.shape.x += width;\r\n                }\r\n                clipPath.shape.width = 0;\r\n            }\r\n            else {\r\n                if (!isAxisInversed) {\r\n                    clipPath.shape.y += height;\r\n                }\r\n                clipPath.shape.height = 0;\r\n            }\r\n            var duringCb = typeof during === 'function'\r\n                ? function (percent) {\r\n                    during(percent, clipPath);\r\n                }\r\n                : null;\r\n            initProps(clipPath, {\r\n                shape: {\r\n                    width: width,\r\n                    height: height,\r\n                    x: x,\r\n                    y: y\r\n                }\r\n            }, seriesModel, null, done, duringCb);\r\n        }\r\n        return clipPath;\r\n    }\r\n    function createPolarClipPath(polar, hasAnimation, seriesModel) {\r\n        var sectorArea = polar.getArea();\r\n        var r0 = round$1(sectorArea.r0, 1);\r\n        var r = round$1(sectorArea.r, 1);\r\n        var clipPath = new Sector({\r\n            shape: {\r\n                cx: round$1(polar.cx, 1),\r\n                cy: round$1(polar.cy, 1),\r\n                r0: r0,\r\n                r: r,\r\n                startAngle: sectorArea.startAngle,\r\n                endAngle: sectorArea.endAngle,\r\n                clockwise: sectorArea.clockwise\r\n            }\r\n        });\r\n        if (hasAnimation) {\r\n            var isRadial = polar.getBaseAxis().dim === 'angle';\r\n            if (isRadial) {\r\n                clipPath.shape.endAngle = sectorArea.startAngle;\r\n            }\r\n            else {\r\n                clipPath.shape.r = r0;\r\n            }\r\n            initProps(clipPath, {\r\n                shape: {\r\n                    endAngle: sectorArea.endAngle,\r\n                    r: r\r\n                }\r\n            }, seriesModel);\r\n        }\r\n        return clipPath;\r\n    }\r\n    function createClipPath(coordSys, hasAnimation, seriesModel, done, during) {\r\n        if (!coordSys) {\r\n            return null;\r\n        }\r\n        else if (coordSys.type === 'polar') {\r\n            return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n        else if (coordSys.type === 'cartesian2d') {\r\n            return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);\r\n        }\r\n        return null;\r\n    }\n\n    function isCoordinateSystemType(coordSys, type) {\r\n        return coordSys.type === type;\r\n    }\n\n    function isPointsSame(points1, points2) {\r\n        if (points1.length !== points2.length) {\r\n            return;\r\n        }\r\n        for (var i = 0; i < points1.length; i++) {\r\n            if (points1[i] !== points2[i]) {\r\n                return;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function bboxFromPoints(points) {\r\n        var minX = Infinity;\r\n        var minY = Infinity;\r\n        var maxX = -Infinity;\r\n        var maxY = -Infinity;\r\n        for (var i = 0; i < points.length;) {\r\n            var x = points[i++];\r\n            var y = points[i++];\r\n            if (!isNaN(x)) {\r\n                minX = Math.min(x, minX);\r\n                maxX = Math.max(x, maxX);\r\n            }\r\n            if (!isNaN(y)) {\r\n                minY = Math.min(y, minY);\r\n                maxY = Math.max(y, maxY);\r\n            }\r\n        }\r\n        return [\r\n            [minX, minY],\r\n            [maxX, maxY]\r\n        ];\r\n    }\r\n    function getBoundingDiff(points1, points2) {\r\n        var _a = bboxFromPoints(points1), min1 = _a[0], max1 = _a[1];\r\n        var _b = bboxFromPoints(points2), min2 = _b[0], max2 = _b[1];\r\n        return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\r\n    }\r\n    function getSmooth(smooth) {\r\n        return typeof smooth === 'number' ? smooth : (smooth ? 0.5 : 0);\r\n    }\r\n    function getStackedOnPoints(coordSys, data, dataCoordInfo) {\r\n        if (!dataCoordInfo.valueDim) {\r\n            return [];\r\n        }\r\n        var len = data.count();\r\n        var points = createFloat32Array(len * 2);\r\n        for (var idx = 0; idx < len; idx++) {\r\n            var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\r\n            points[idx * 2] = pt[0];\r\n            points[idx * 2 + 1] = pt[1];\r\n        }\r\n        return points;\r\n    }\r\n    function turnPointsIntoStep(points, coordSys, stepTurnAt) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\r\n        var stepPoints = [];\r\n        var i = 0;\r\n        var stepPt = [];\r\n        var pt = [];\r\n        var nextPt = [];\r\n        for (; i < points.length - 2; i += 2) {\r\n            nextPt[0] = points[i + 2];\r\n            nextPt[1] = points[i + 3];\r\n            pt[0] = points[i];\r\n            pt[1] = points[i + 1];\r\n            stepPoints.push(pt[0], pt[1]);\r\n            switch (stepTurnAt) {\r\n                case 'end':\r\n                    stepPt[baseIndex] = nextPt[baseIndex];\r\n                    stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n                    break;\r\n                case 'middle':\r\n                    var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\r\n                    var stepPt2 = [];\r\n                    stepPt[baseIndex] = stepPt2[baseIndex] = middle;\r\n                    stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n                    stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n                    stepPoints.push(stepPt2[0], stepPt2[1]);\r\n                    break;\r\n                default:\r\n                    stepPt[baseIndex] = pt[baseIndex];\r\n                    stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n            }\r\n        }\r\n        stepPoints.push(points[i++], points[i++]);\r\n        return stepPoints;\r\n    }\r\n    function getVisualGradient(data, coordSys) {\r\n        var visualMetaList = data.getVisual('visualMeta');\r\n        if (!visualMetaList || !visualMetaList.length || !data.count()) {\r\n            return;\r\n        }\r\n        if (coordSys.type !== 'cartesian2d') {\r\n            if (__DEV__) {\r\n                console.warn('Visual map on line style is only supported on cartesian2d.');\r\n            }\r\n            return;\r\n        }\r\n        var coordDim;\r\n        var visualMeta;\r\n        for (var i = visualMetaList.length - 1; i >= 0; i--) {\r\n            var dimIndex = visualMetaList[i].dimension;\r\n            var dimName = data.dimensions[dimIndex];\r\n            var dimInfo = data.getDimensionInfo(dimName);\r\n            coordDim = (dimInfo && dimInfo.coordDim);\r\n            if (coordDim === 'x' || coordDim === 'y') {\r\n                visualMeta = visualMetaList[i];\r\n                break;\r\n            }\r\n        }\r\n        if (!visualMeta) {\r\n            if (__DEV__) {\r\n                console.warn('Visual map on line style only support x or y dimension.');\r\n            }\r\n            return;\r\n        }\r\n        var axis = coordSys.getAxis(coordDim);\r\n        var colorStops = map(visualMeta.stops, function (stop) {\r\n            return {\r\n                offset: 0,\r\n                coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\r\n                color: stop.color\r\n            };\r\n        });\r\n        var stopLen = colorStops.length;\r\n        var outerColors = visualMeta.outerColors.slice();\r\n        if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\r\n            colorStops.reverse();\r\n            outerColors.reverse();\r\n        }\r\n        var tinyExtent = 10;\r\n        var minCoord = colorStops[0].coord - tinyExtent;\r\n        var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\r\n        var coordSpan = maxCoord - minCoord;\r\n        if (coordSpan < 1e-3) {\r\n            return 'transparent';\r\n        }\r\n        each(colorStops, function (stop) {\r\n            stop.offset = (stop.coord - minCoord) / coordSpan;\r\n        });\r\n        colorStops.push({\r\n            offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\r\n            color: outerColors[1] || 'transparent'\r\n        });\r\n        colorStops.unshift({\r\n            offset: stopLen ? colorStops[0].offset : 0.5,\r\n            color: outerColors[0] || 'transparent'\r\n        });\r\n        var gradient = new LinearGradient(0, 0, 0, 0, colorStops, true);\r\n        gradient[coordDim] = minCoord;\r\n        gradient[coordDim + '2'] = maxCoord;\r\n        return gradient;\r\n    }\r\n    function getIsIgnoreFunc(seriesModel, data, coordSys) {\r\n        var showAllSymbol = seriesModel.get('showAllSymbol');\r\n        var isAuto = showAllSymbol === 'auto';\r\n        if (showAllSymbol && !isAuto) {\r\n            return;\r\n        }\r\n        var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\r\n        if (!categoryAxis) {\r\n            return;\r\n        }\r\n        if (isAuto\r\n            && canShowAllSymbolForCategory(categoryAxis, data)) {\r\n            return;\r\n        }\r\n        var categoryDataDim = data.mapDimension(categoryAxis.dim);\r\n        var labelMap = {};\r\n        each(categoryAxis.getViewLabels(), function (labelItem) {\r\n            labelMap[labelItem.tickValue] = 1;\r\n        });\r\n        return function (dataIndex) {\r\n            return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\r\n        };\r\n    }\r\n    function canShowAllSymbolForCategory(categoryAxis, data) {\r\n        var axisExtent = categoryAxis.getExtent();\r\n        var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\r\n        isNaN(availSize) && (availSize = 0);\r\n        var dataLen = data.count();\r\n        var step = Math.max(1, Math.round(dataLen / 5));\r\n        for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\r\n            if (Symbol.getSymbolSize(data, dataIndex)[categoryAxis.isHorizontal() ? 1 : 0]\r\n                * 1.5 > availSize) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function isPointNull$1(x, y) {\r\n        return isNaN(x) || isNaN(y);\r\n    }\r\n    function getLastIndexNotNull(points) {\r\n        var len = points.length / 2;\r\n        for (; len > 0; len--) {\r\n            if (!isPointNull$1(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                break;\r\n            }\r\n        }\r\n        return len - 1;\r\n    }\r\n    function getPointAtIndex(points, idx) {\r\n        return [points[idx * 2], points[idx * 2 + 1]];\r\n    }\r\n    function getIndexRange(points, xOrY, dim) {\r\n        var len = points.length / 2;\r\n        var dimIdx = dim === 'x' ? 0 : 1;\r\n        var a;\r\n        var b;\r\n        var prevIndex = 0;\r\n        var nextIndex = -1;\r\n        for (var i = 0; i < len; i++) {\r\n            b = points[i * 2 + dimIdx];\r\n            if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\r\n                continue;\r\n            }\r\n            if (i === 0) {\r\n                a = b;\r\n                continue;\r\n            }\r\n            if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\r\n                nextIndex = i;\r\n                break;\r\n            }\r\n            prevIndex = i;\r\n            a = b;\r\n        }\r\n        return {\r\n            range: [prevIndex, nextIndex],\r\n            t: (xOrY - a) / (b - a)\r\n        };\r\n    }\r\n    function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\r\n        if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n            var endLabelModel_1 = seriesModel.getModel('endLabel');\r\n            var showEndLabel = endLabelModel_1.get('show');\r\n            var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\r\n            var data_1 = seriesModel.getData();\r\n            var labelAnimationRecord_1 = { lastFrameIndex: 0 };\r\n            var during = showEndLabel\r\n                ? function (percent, clipRect) {\r\n                    lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\r\n                }\r\n                : null;\r\n            var isHorizontal = coordSys.getBaseAxis().isHorizontal();\r\n            var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\r\n                var endLabel = lineView._endLabel;\r\n                if (endLabel && hasAnimation) {\r\n                    if (labelAnimationRecord_1.originalX != null) {\r\n                        endLabel.attr({\r\n                            x: labelAnimationRecord_1.originalX,\r\n                            y: labelAnimationRecord_1.originalY\r\n                        });\r\n                    }\r\n                }\r\n            }, during);\r\n            if (!seriesModel.get('clip', true)) {\r\n                var rectShape = clipPath.shape;\r\n                var expandSize = Math.max(rectShape.width, rectShape.height);\r\n                if (isHorizontal) {\r\n                    rectShape.y -= expandSize;\r\n                    rectShape.height += expandSize * 2;\r\n                }\r\n                else {\r\n                    rectShape.x -= expandSize;\r\n                    rectShape.width += expandSize * 2;\r\n                }\r\n            }\r\n            if (during) {\r\n                during(1, clipPath);\r\n            }\r\n            return clipPath;\r\n        }\r\n        else {\r\n            if (__DEV__) {\r\n                if (seriesModel.get(['endLabel', 'show'])) {\r\n                    console.warn('endLabel is not supported for lines in polar systems.');\r\n                }\r\n            }\r\n            return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n    }\r\n    function getEndLabelStateSpecified(endLabelModel, coordSys) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var isHorizontal = baseAxis.isHorizontal();\r\n        var isBaseInversed = baseAxis.inverse;\r\n        var align = isHorizontal\r\n            ? isBaseInversed ? 'right' : 'left'\r\n            : 'center';\r\n        var verticalAlign = isHorizontal\r\n            ? 'middle'\r\n            : (isBaseInversed ? 'top' : 'bottom');\r\n        return {\r\n            normal: {\r\n                align: endLabelModel.get('align') || align,\r\n                verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign,\r\n                padding: endLabelModel.get('distance') || 0\r\n            }\r\n        };\r\n    }\r\n    var LineView = (function (_super) {\r\n        __extends(LineView, _super);\r\n        function LineView() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        LineView.prototype.init = function () {\r\n            var lineGroup = new Group();\r\n            var symbolDraw = new SymbolDraw();\r\n            this.group.add(symbolDraw.group);\r\n            this._symbolDraw = symbolDraw;\r\n            this._lineGroup = lineGroup;\r\n        };\r\n        LineView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var _this = this;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var lineStyleModel = seriesModel.getModel('lineStyle');\r\n            var areaStyleModel = seriesModel.getModel('areaStyle');\r\n            var points = data.getLayout('points') || [];\r\n            var isCoordSysPolar = coordSys.type === 'polar';\r\n            var prevCoordSys = this._coordSys;\r\n            var symbolDraw = this._symbolDraw;\r\n            var polyline = this._polyline;\r\n            var polygon = this._polygon;\r\n            var lineGroup = this._lineGroup;\r\n            var hasAnimation = seriesModel.get('animation');\r\n            var isAreaChart = !areaStyleModel.isEmpty();\r\n            var valueOrigin = areaStyleModel.get('origin');\r\n            var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\r\n            var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\r\n            var showSymbol = seriesModel.get('showSymbol');\r\n            var isIgnoreFunc = showSymbol && !isCoordSysPolar\r\n                && getIsIgnoreFunc(seriesModel, data, coordSys);\r\n            var oldData = this._data;\r\n            oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n                if (el.__temp) {\r\n                    group.remove(el);\r\n                    oldData.setItemGraphicEl(idx, null);\r\n                }\r\n            });\r\n            if (!showSymbol) {\r\n                symbolDraw.remove();\r\n            }\r\n            group.add(lineGroup);\r\n            var step = !isCoordSysPolar ? seriesModel.get('step') : false;\r\n            var clipShapeForSymbol;\r\n            if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\r\n                clipShapeForSymbol = coordSys.getArea();\r\n                if (clipShapeForSymbol.width != null) {\r\n                    clipShapeForSymbol.x -= 0.1;\r\n                    clipShapeForSymbol.y -= 0.1;\r\n                    clipShapeForSymbol.width += 0.2;\r\n                    clipShapeForSymbol.height += 0.2;\r\n                }\r\n                else if (clipShapeForSymbol.r0) {\r\n                    clipShapeForSymbol.r0 -= 0.5;\r\n                    clipShapeForSymbol.r += 0.5;\r\n                }\r\n            }\r\n            this._clipShapeForSymbol = clipShapeForSymbol;\r\n            if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\r\n                showSymbol && symbolDraw.updateData(data, {\r\n                    isIgnore: isIgnoreFunc,\r\n                    clipShape: clipShapeForSymbol,\r\n                    disableAnimation: true,\r\n                    getSymbolPoint: function (idx) {\r\n                        return [points[idx * 2], points[idx * 2 + 1]];\r\n                    }\r\n                });\r\n                hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\r\n                if (step) {\r\n                    points = turnPointsIntoStep(points, coordSys, step);\r\n                    if (stackedOnPoints) {\r\n                        stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n                    }\r\n                }\r\n                polyline = this._newPolyline(points);\r\n                if (isAreaChart) {\r\n                    polygon = this._newPolygon(points, stackedOnPoints);\r\n                }\r\n                if (!isCoordSysPolar) {\r\n                    this._initOrUpdateEndLabel(seriesModel, coordSys);\r\n                }\r\n                lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\r\n            }\r\n            else {\r\n                if (isAreaChart && !polygon) {\r\n                    polygon = this._newPolygon(points, stackedOnPoints);\r\n                }\r\n                else if (polygon && !isAreaChart) {\r\n                    lineGroup.remove(polygon);\r\n                    polygon = this._polygon = null;\r\n                }\r\n                if (!isCoordSysPolar) {\r\n                    this._initOrUpdateEndLabel(seriesModel, coordSys);\r\n                }\r\n                lineGroup.setClipPath(createLineClipPath(this, coordSys, false, seriesModel));\r\n                showSymbol && symbolDraw.updateData(data, {\r\n                    isIgnore: isIgnoreFunc,\r\n                    clipShape: clipShapeForSymbol,\r\n                    disableAnimation: true,\r\n                    getSymbolPoint: function (idx) {\r\n                        return [points[idx * 2], points[idx * 2 + 1]];\r\n                    }\r\n                });\r\n                if (!isPointsSame(this._stackedOnPoints, stackedOnPoints)\r\n                    || !isPointsSame(this._points, points)) {\r\n                    if (hasAnimation) {\r\n                        this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\r\n                    }\r\n                    else {\r\n                        if (step) {\r\n                            points = turnPointsIntoStep(points, coordSys, step);\r\n                            if (stackedOnPoints) {\r\n                                stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n                            }\r\n                        }\r\n                        polyline.setShape({\r\n                            points: points\r\n                        });\r\n                        polygon && polygon.setShape({\r\n                            points: points,\r\n                            stackedOnPoints: stackedOnPoints\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            var visualColor = getVisualGradient(data, coordSys)\r\n                || data.getVisual('style')[data.getVisual('drawType')];\r\n            var focus = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            polyline.useStyle(defaults(lineStyleModel.getLineStyle(), {\r\n                fill: 'none',\r\n                stroke: visualColor,\r\n                lineJoin: 'bevel'\r\n            }));\r\n            setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\r\n            if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\r\n                var emphasisLineStyle = polyline.getState('emphasis').style;\r\n                emphasisLineStyle.lineWidth = polyline.style.lineWidth + 1;\r\n            }\r\n            getECData(polyline).seriesIndex = seriesModel.seriesIndex;\r\n            enableHoverEmphasis(polyline, focus, blurScope);\r\n            var smooth = getSmooth(seriesModel.get('smooth'));\r\n            var smoothMonotone = seriesModel.get('smoothMonotone');\r\n            var connectNulls = seriesModel.get('connectNulls');\r\n            polyline.setShape({\r\n                smooth: smooth,\r\n                smoothMonotone: smoothMonotone,\r\n                connectNulls: connectNulls\r\n            });\r\n            if (polygon) {\r\n                var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\r\n                var stackedOnSmooth = 0;\r\n                polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {\r\n                    fill: visualColor,\r\n                    opacity: 0.7,\r\n                    lineJoin: 'bevel',\r\n                    decal: data.getVisual('style').decal\r\n                }));\r\n                if (stackedOnSeries) {\r\n                    stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\r\n                }\r\n                polygon.setShape({\r\n                    smooth: smooth,\r\n                    stackedOnSmooth: stackedOnSmooth,\r\n                    smoothMonotone: smoothMonotone,\r\n                    connectNulls: connectNulls\r\n                });\r\n                setStatesStylesFromModel(polygon, seriesModel, 'areaStyle');\r\n                getECData(polygon).seriesIndex = seriesModel.seriesIndex;\r\n                enableHoverEmphasis(polygon, focus, blurScope);\r\n            }\r\n            var changePolyState = function (toState) {\r\n                _this._changePolyState(toState);\r\n            };\r\n            data.eachItemGraphicEl(function (el) {\r\n                el && (el.onHoverStateChange = changePolyState);\r\n            });\r\n            this._polyline.onHoverStateChange = changePolyState;\r\n            this._data = data;\r\n            this._coordSys = coordSys;\r\n            this._stackedOnPoints = stackedOnPoints;\r\n            this._points = points;\r\n            this._step = step;\r\n            this._valueOrigin = valueOrigin;\r\n        };\r\n        LineView.prototype.dispose = function () { };\r\n        LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var dataIndex = queryDataIndex(data, payload);\r\n            this._changePolyState('emphasis');\r\n            if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\r\n                var points = data.getLayout('points');\r\n                var symbol = data.getItemGraphicEl(dataIndex);\r\n                if (!symbol) {\r\n                    var x = points[dataIndex * 2];\r\n                    var y = points[dataIndex * 2 + 1];\r\n                    if (isNaN(x) || isNaN(y)) {\r\n                        return;\r\n                    }\r\n                    if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\r\n                        return;\r\n                    }\r\n                    symbol = new Symbol(data, dataIndex);\r\n                    symbol.x = x;\r\n                    symbol.y = y;\r\n                    symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\r\n                    symbol.__temp = true;\r\n                    data.setItemGraphicEl(dataIndex, symbol);\r\n                    symbol.stopSymbolAnimation(true);\r\n                    this.group.add(symbol);\r\n                }\r\n                symbol.highlight();\r\n            }\r\n            else {\r\n                ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\r\n            }\r\n        };\r\n        LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var dataIndex = queryDataIndex(data, payload);\r\n            this._changePolyState('normal');\r\n            if (dataIndex != null && dataIndex >= 0) {\r\n                var symbol = data.getItemGraphicEl(dataIndex);\r\n                if (symbol) {\r\n                    if (symbol.__temp) {\r\n                        data.setItemGraphicEl(dataIndex, null);\r\n                        this.group.remove(symbol);\r\n                    }\r\n                    else {\r\n                        symbol.downplay();\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\r\n            }\r\n        };\r\n        LineView.prototype._changePolyState = function (toState) {\r\n            var polygon = this._polygon;\r\n            setStatesFlag(this._polyline, toState);\r\n            polygon && setStatesFlag(polygon, toState);\r\n        };\r\n        LineView.prototype._newPolyline = function (points) {\r\n            var polyline = this._polyline;\r\n            if (polyline) {\r\n                this._lineGroup.remove(polyline);\r\n            }\r\n            polyline = new ECPolyline({\r\n                shape: {\r\n                    points: points\r\n                },\r\n                segmentIgnoreThreshold: 2,\r\n                z2: 10\r\n            });\r\n            this._lineGroup.add(polyline);\r\n            this._polyline = polyline;\r\n            return polyline;\r\n        };\r\n        LineView.prototype._newPolygon = function (points, stackedOnPoints) {\r\n            var polygon = this._polygon;\r\n            if (polygon) {\r\n                this._lineGroup.remove(polygon);\r\n            }\r\n            polygon = new ECPolygon({\r\n                shape: {\r\n                    points: points,\r\n                    stackedOnPoints: stackedOnPoints\r\n                },\r\n                segmentIgnoreThreshold: 2\r\n            });\r\n            this._lineGroup.add(polygon);\r\n            this._polygon = polygon;\r\n            return polygon;\r\n        };\r\n        LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\r\n            var isHorizontalOrRadial;\r\n            var isCoordSysPolar;\r\n            var baseAxis = coordSys.getBaseAxis();\r\n            var isAxisInverse = baseAxis.inverse;\r\n            if (coordSys.type === 'cartesian2d') {\r\n                isHorizontalOrRadial = baseAxis.isHorizontal();\r\n                isCoordSysPolar = false;\r\n            }\r\n            else if (coordSys.type === 'polar') {\r\n                isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n                isCoordSysPolar = true;\r\n            }\r\n            var seriesModel = data.hostModel;\r\n            var seriesDuration = seriesModel.get('animationDuration');\r\n            if (typeof seriesDuration === 'function') {\r\n                seriesDuration = seriesDuration(null);\r\n            }\r\n            var seriesDalay = seriesModel.get('animationDelay') || 0;\r\n            var seriesDalayValue = typeof seriesDalay === 'function'\r\n                ? seriesDalay(null)\r\n                : seriesDalay;\r\n            data.eachItemGraphicEl(function (symbol, idx) {\r\n                var el = symbol;\r\n                if (el) {\r\n                    var point = [symbol.x, symbol.y];\r\n                    var start = void 0;\r\n                    var end = void 0;\r\n                    var current = void 0;\r\n                    if (isCoordSysPolar) {\r\n                        var polarClip = clipShape;\r\n                        var coord = coordSys.pointToCoord(point);\r\n                        if (isHorizontalOrRadial) {\r\n                            start = polarClip.startAngle;\r\n                            end = polarClip.endAngle;\r\n                            current = -coord[1] / 180 * Math.PI;\r\n                        }\r\n                        else {\r\n                            start = polarClip.r0;\r\n                            end = polarClip.r;\r\n                            current = coord[0];\r\n                        }\r\n                    }\r\n                    else {\r\n                        var gridClip = clipShape;\r\n                        if (isHorizontalOrRadial) {\r\n                            start = gridClip.x;\r\n                            end = gridClip.x + gridClip.width;\r\n                            current = symbol.x;\r\n                        }\r\n                        else {\r\n                            start = gridClip.y + gridClip.height;\r\n                            end = gridClip.y;\r\n                            current = symbol.y;\r\n                        }\r\n                    }\r\n                    var ratio = end === start ? 0 : (current - start) / (end - start);\r\n                    if (isAxisInverse) {\r\n                        ratio = 1 - ratio;\r\n                    }\r\n                    var delay = typeof seriesDalay === 'function' ? seriesDalay(idx)\r\n                        : (seriesDuration * ratio) + seriesDalayValue;\r\n                    var symbolPath = el.getSymbolPath();\r\n                    var text = symbolPath.getTextContent();\r\n                    el.attr({ scaleX: 0, scaleY: 0 });\r\n                    el.animateTo({\r\n                        scaleX: 1,\r\n                        scaleY: 1\r\n                    }, {\r\n                        duration: 200,\r\n                        delay: delay\r\n                    });\r\n                    if (text) {\r\n                        text.animateFrom({\r\n                            style: {\r\n                                opacity: 0\r\n                            }\r\n                        }, {\r\n                            duration: 300,\r\n                            delay: delay\r\n                        });\r\n                    }\r\n                    symbolPath.disableLabelAnimation = true;\r\n                }\r\n            });\r\n        };\r\n        LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys) {\r\n            var endLabelModel = seriesModel.getModel('endLabel');\r\n            if (endLabelModel.get('show')) {\r\n                var data_2 = seriesModel.getData();\r\n                var polyline = this._polyline;\r\n                var endLabel = this._endLabel;\r\n                if (!endLabel) {\r\n                    endLabel = this._endLabel = new ZRText({\r\n                        z2: 200\r\n                    });\r\n                    endLabel.ignoreClip = true;\r\n                    polyline.setTextContent(this._endLabel);\r\n                    polyline.disableLabelAnimation = true;\r\n                }\r\n                var dataIndex = getLastIndexNotNull(data_2.getLayout('points'));\r\n                if (dataIndex >= 0) {\r\n                    setLabelStyle(endLabel, getLabelStatesModels(seriesModel, 'endLabel'), {\r\n                        labelFetcher: seriesModel,\r\n                        labelDataIndex: dataIndex,\r\n                        defaultText: function (dataIndex, opt, overrideValue) {\r\n                            return overrideValue ? getDefaultInterpolatedLabel(data_2, overrideValue)\r\n                                : getDefaultLabel(data_2, dataIndex);\r\n                        },\r\n                        enableTextSetter: true\r\n                    }, getEndLabelStateSpecified(endLabelModel, coordSys));\r\n                }\r\n            }\r\n            else if (this._endLabel) {\r\n                this._polyline.removeTextContent();\r\n                this._endLabel = null;\r\n            }\r\n        };\r\n        LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\r\n            var endLabel = this._endLabel;\r\n            var polyline = this._polyline;\r\n            if (endLabel) {\r\n                if (percent < 1 && animationRecord.originalX == null) {\r\n                    animationRecord.originalX = endLabel.x;\r\n                    animationRecord.originalY = endLabel.y;\r\n                }\r\n                var points = data.getLayout('points');\r\n                var seriesModel = data.hostModel;\r\n                var connectNulls = seriesModel.get('connectNulls');\r\n                var precision = endLabelModel.get('precision');\r\n                var baseAxis = coordSys.getBaseAxis();\r\n                var isHorizontal = baseAxis.isHorizontal();\r\n                var isBaseInversed = baseAxis.inverse;\r\n                var clipShape = clipRect.shape;\r\n                var xOrY = isBaseInversed\r\n                    ? isHorizontal ? clipShape.x : (clipShape.y + clipShape.height)\r\n                    : isHorizontal ? (clipShape.x + clipShape.width) : clipShape.y;\r\n                var dim = isHorizontal ? 'x' : 'y';\r\n                var dataIndexRange = getIndexRange(points, xOrY, dim);\r\n                var indices = dataIndexRange.range;\r\n                var diff = indices[1] - indices[0];\r\n                var value = void 0;\r\n                if (diff >= 1) {\r\n                    if (diff > 1 && !connectNulls) {\r\n                        var pt = getPointAtIndex(points, indices[0]);\r\n                        endLabel.attr({ x: pt[0], y: pt[1] });\r\n                        valueAnimation && (value = seriesModel.getRawValue(indices[0]));\r\n                    }\r\n                    else {\r\n                        var pt = polyline.getPointOn(xOrY, dim);\r\n                        pt && endLabel.attr({ x: pt[0], y: pt[1] });\r\n                        var startValue = seriesModel.getRawValue(indices[0]);\r\n                        var endValue = seriesModel.getRawValue(indices[1]);\r\n                        valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\r\n                    }\r\n                    animationRecord.lastFrameIndex = indices[0];\r\n                }\r\n                else {\r\n                    var idx = (percent === 1 || animationRecord.lastFrameIndex > 0) ? indices[0] : 0;\r\n                    var pt = getPointAtIndex(points, idx);\r\n                    valueAnimation && (value = seriesModel.getRawValue(idx));\r\n                    endLabel.attr({ x: pt[0], y: pt[1] });\r\n                }\r\n                if (valueAnimation) {\r\n                    labelInner(endLabel).setLabelText(value);\r\n                }\r\n            }\r\n        };\r\n        LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\r\n            var polyline = this._polyline;\r\n            var polygon = this._polygon;\r\n            var seriesModel = data.hostModel;\r\n            var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\r\n            var current = diff.current;\r\n            var stackedOnCurrent = diff.stackedOnCurrent;\r\n            var next = diff.next;\r\n            var stackedOnNext = diff.stackedOnNext;\r\n            if (step) {\r\n                current = turnPointsIntoStep(diff.current, coordSys, step);\r\n                stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\r\n                next = turnPointsIntoStep(diff.next, coordSys, step);\r\n                stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\r\n            }\r\n            if (getBoundingDiff(current, next) > 3000\r\n                || (polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000)) {\r\n                polyline.setShape({\r\n                    points: next\r\n                });\r\n                if (polygon) {\r\n                    polygon.setShape({\r\n                        points: next,\r\n                        stackedOnPoints: stackedOnNext\r\n                    });\r\n                }\r\n                return;\r\n            }\r\n            polyline.shape.__points = diff.current;\r\n            polyline.shape.points = current;\r\n            var target = {\r\n                shape: {\r\n                    points: next\r\n                }\r\n            };\r\n            if (diff.current !== current) {\r\n                target.shape.__points = diff.next;\r\n            }\r\n            polyline.stopAnimation();\r\n            updateProps(polyline, target, seriesModel);\r\n            if (polygon) {\r\n                polygon.setShape({\r\n                    points: current,\r\n                    stackedOnPoints: stackedOnCurrent\r\n                });\r\n                polygon.stopAnimation();\r\n                updateProps(polygon, {\r\n                    shape: {\r\n                        stackedOnPoints: stackedOnNext\r\n                    }\r\n                }, seriesModel);\r\n                if (polyline.shape.points !== polygon.shape.points) {\r\n                    polygon.shape.points = polyline.shape.points;\r\n                }\r\n            }\r\n            var updatedDataInfo = [];\r\n            var diffStatus = diff.status;\r\n            for (var i = 0; i < diffStatus.length; i++) {\r\n                var cmd = diffStatus[i].cmd;\r\n                if (cmd === '=') {\r\n                    var el = data.getItemGraphicEl(diffStatus[i].idx1);\r\n                    if (el) {\r\n                        updatedDataInfo.push({\r\n                            el: el,\r\n                            ptIdx: i\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            if (polyline.animators && polyline.animators.length) {\r\n                polyline.animators[0].during(function () {\r\n                    polygon && polygon.dirtyShape();\r\n                    var points = polyline.shape.__points;\r\n                    for (var i = 0; i < updatedDataInfo.length; i++) {\r\n                        var el = updatedDataInfo[i].el;\r\n                        var offset = updatedDataInfo[i].ptIdx * 2;\r\n                        el.x = points[offset];\r\n                        el.y = points[offset + 1];\r\n                        el.markRedraw();\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        LineView.prototype.remove = function (ecModel) {\r\n            var group = this.group;\r\n            var oldData = this._data;\r\n            this._lineGroup.removeAll();\r\n            this._symbolDraw.remove(true);\r\n            oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n                if (el.__temp) {\r\n                    group.remove(el);\r\n                    oldData.setItemGraphicEl(idx, null);\r\n                }\r\n            });\r\n            this._polyline =\r\n                this._polygon =\r\n                    this._coordSys =\r\n                        this._points =\r\n                            this._stackedOnPoints =\r\n                                this._endLabel =\r\n                                    this._data = null;\r\n        };\r\n        LineView.type = 'line';\r\n        return LineView;\r\n    }(ChartView));\r\n    ChartView.registerClass(LineView);\n\n    function pointsLayout(seriesType, forceStoreInTypedArray) {\r\n        return {\r\n            seriesType: seriesType,\r\n            plan: createRenderPlanner(),\r\n            reset: function (seriesModel) {\r\n                var data = seriesModel.getData();\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                var pipelineContext = seriesModel.pipelineContext;\r\n                var useTypedArray = forceStoreInTypedArray || pipelineContext.large;\r\n                if (!coordSys) {\r\n                    return;\r\n                }\r\n                var dims = map(coordSys.dimensions, function (dim) {\r\n                    return data.mapDimension(dim);\r\n                }).slice(0, 2);\r\n                var dimLen = dims.length;\r\n                var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n                if (isDimensionStacked(data, dims[0])) {\r\n                    dims[0] = stackResultDim;\r\n                }\r\n                if (isDimensionStacked(data, dims[1])) {\r\n                    dims[1] = stackResultDim;\r\n                }\r\n                var dimInfo0 = data.getDimensionInfo(dims[0]);\r\n                var dimInfo1 = data.getDimensionInfo(dims[1]);\r\n                var dimIdx0 = dimInfo0 && dimInfo0.index;\r\n                var dimIdx1 = dimInfo1 && dimInfo1.index;\r\n                return dimLen && {\r\n                    progress: function (params, data) {\r\n                        var segCount = params.end - params.start;\r\n                        var points = useTypedArray && createFloat32Array(segCount * dimLen);\r\n                        var tmpIn = [];\r\n                        var tmpOut = [];\r\n                        for (var i = params.start, offset = 0; i < params.end; i++) {\r\n                            var point = void 0;\r\n                            if (dimLen === 1) {\r\n                                var x = data.getByDimIdx(dimIdx0, i);\r\n                                point = coordSys.dataToPoint(x, null, tmpOut);\r\n                            }\r\n                            else {\r\n                                tmpIn[0] = data.getByDimIdx(dimIdx0, i);\r\n                                tmpIn[1] = data.getByDimIdx(dimIdx1, i);\r\n                                point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n                            }\r\n                            if (useTypedArray) {\r\n                                points[offset++] = point[0];\r\n                                points[offset++] = point[1];\r\n                            }\r\n                            else {\r\n                                data.setItemLayout(i, point.slice());\r\n                            }\r\n                        }\r\n                        useTypedArray && data.setLayout('points', points);\r\n                    }\r\n                };\r\n            }\r\n        };\r\n    }\n\n    var samplers = {\r\n        average: function (frame) {\r\n            var sum = 0;\r\n            var count = 0;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                if (!isNaN(frame[i])) {\r\n                    sum += frame[i];\r\n                    count++;\r\n                }\r\n            }\r\n            return count === 0 ? NaN : sum / count;\r\n        },\r\n        sum: function (frame) {\r\n            var sum = 0;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                sum += frame[i] || 0;\r\n            }\r\n            return sum;\r\n        },\r\n        max: function (frame) {\r\n            var max = -Infinity;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                frame[i] > max && (max = frame[i]);\r\n            }\r\n            return isFinite(max) ? max : NaN;\r\n        },\r\n        min: function (frame) {\r\n            var min = Infinity;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                frame[i] < min && (min = frame[i]);\r\n            }\r\n            return isFinite(min) ? min : NaN;\r\n        },\r\n        nearest: function (frame) {\r\n            return frame[0];\r\n        }\r\n    };\r\n    var indexSampler = function (frame) {\r\n        return Math.round(frame.length / 2);\r\n    };\r\n    function dataSample(seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            reset: function (seriesModel, ecModel, api) {\r\n                var data = seriesModel.getData();\r\n                var sampling = seriesModel.get('sampling');\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                var count = data.count();\r\n                if (count > 10 && coordSys.type === 'cartesian2d' && sampling) {\r\n                    var baseAxis = coordSys.getBaseAxis();\r\n                    var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n                    var extent = baseAxis.getExtent();\r\n                    var dpr = api.getDevicePixelRatio();\r\n                    var size = Math.abs(extent[1] - extent[0]) * (dpr || 1);\r\n                    var rate = Math.round(count / size);\r\n                    if (rate > 1) {\r\n                        if (sampling === 'lttb') {\r\n                            seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate));\r\n                        }\r\n                        var sampler = void 0;\r\n                        if (typeof sampling === 'string') {\r\n                            sampler = samplers[sampling];\r\n                        }\r\n                        else if (typeof sampling === 'function') {\r\n                            sampler = sampling;\r\n                        }\r\n                        if (sampler) {\r\n                            seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n    }\n\n    var defaultOption = {\r\n        show: true,\r\n        zlevel: 0,\r\n        z: 0,\r\n        inverse: false,\r\n        name: '',\r\n        nameLocation: 'end',\r\n        nameRotate: null,\r\n        nameTruncate: {\r\n            maxWidth: null,\r\n            ellipsis: '...',\r\n            placeholder: '.'\r\n        },\r\n        nameTextStyle: {},\r\n        nameGap: 15,\r\n        silent: false,\r\n        triggerEvent: false,\r\n        tooltip: {\r\n            show: false\r\n        },\r\n        axisPointer: {},\r\n        axisLine: {\r\n            show: true,\r\n            onZero: true,\r\n            onZeroAxisIndex: null,\r\n            lineStyle: {\r\n                color: '#6E7079',\r\n                width: 1,\r\n                type: 'solid'\r\n            },\r\n            symbol: ['none', 'none'],\r\n            symbolSize: [10, 15]\r\n        },\r\n        axisTick: {\r\n            show: true,\r\n            inside: false,\r\n            length: 5,\r\n            lineStyle: {\r\n                width: 1\r\n            }\r\n        },\r\n        axisLabel: {\r\n            show: true,\r\n            inside: false,\r\n            rotate: 0,\r\n            showMinLabel: null,\r\n            showMaxLabel: null,\r\n            margin: 8,\r\n            fontSize: 12\r\n        },\r\n        splitLine: {\r\n            show: true,\r\n            lineStyle: {\r\n                color: ['#E0E6F1'],\r\n                width: 1,\r\n                type: 'solid'\r\n            }\r\n        },\r\n        splitArea: {\r\n            show: false,\r\n            areaStyle: {\r\n                color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)']\r\n            }\r\n        }\r\n    };\r\n    var categoryAxis = merge({\r\n        boundaryGap: true,\r\n        deduplication: null,\r\n        splitLine: {\r\n            show: false\r\n        },\r\n        axisTick: {\r\n            alignWithLabel: false,\r\n            interval: 'auto'\r\n        },\r\n        axisLabel: {\r\n            interval: 'auto'\r\n        }\r\n    }, defaultOption);\r\n    var valueAxis = merge({\r\n        boundaryGap: [0, 0],\r\n        axisLine: {\r\n            show: 'auto'\r\n        },\r\n        axisTick: {\r\n            show: 'auto'\r\n        },\r\n        splitNumber: 5,\r\n        minorTick: {\r\n            show: false,\r\n            splitNumber: 5,\r\n            length: 3,\r\n            lineStyle: {}\r\n        },\r\n        minorSplitLine: {\r\n            show: false,\r\n            lineStyle: {\r\n                color: '#F4F7FD',\r\n                width: 1\r\n            }\r\n        }\r\n    }, defaultOption);\r\n    var timeAxis = merge({\r\n        scale: true,\r\n        splitNumber: 6,\r\n        axisLabel: {\r\n            showMinLabel: false,\r\n            showMaxLabel: false,\r\n            rich: {\r\n                primary: {\r\n                    fontWeight: 'bold'\r\n                }\r\n            }\r\n        },\r\n        splitLine: {\r\n            show: false\r\n        }\r\n    }, valueAxis);\r\n    var logAxis = defaults({\r\n        scale: true,\r\n        logBase: 10\r\n    }, valueAxis);\r\n    var axisDefault = {\r\n        category: categoryAxis,\r\n        value: valueAxis,\r\n        time: timeAxis,\r\n        log: logAxis\r\n    };\n\n    var AXIS_TYPES = { value: 1, category: 1, time: 1, log: 1 };\n\n    function axisModelCreator(axisName, BaseAxisModelClass, extraDefaultOption) {\r\n        each(AXIS_TYPES, function (v, axisType) {\r\n            var defaultOption = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true);\r\n            var AxisModel = (function (_super) {\r\n                __extends(AxisModel, _super);\r\n                function AxisModel() {\r\n                    var args = [];\r\n                    for (var _i = 0; _i < arguments.length; _i++) {\r\n                        args[_i] = arguments[_i];\r\n                    }\r\n                    var _this = _super.apply(this, args) || this;\r\n                    _this.type = axisName + 'Axis.' + axisType;\r\n                    return _this;\r\n                }\r\n                AxisModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n                    var layoutMode = fetchLayoutMode(this);\r\n                    var inputPositionParams = layoutMode\r\n                        ? getLayoutParams(option) : {};\r\n                    var themeModel = ecModel.getTheme();\r\n                    merge(option, themeModel.get(axisType + 'Axis'));\r\n                    merge(option, this.getDefaultOption());\r\n                    option.type = getAxisType(option);\r\n                    if (layoutMode) {\r\n                        mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n                    }\r\n                };\r\n                AxisModel.prototype.optionUpdated = function () {\r\n                    var thisOption = this.option;\r\n                    if (thisOption.type === 'category') {\r\n                        this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\r\n                    }\r\n                };\r\n                AxisModel.prototype.getCategories = function (rawData) {\r\n                    var option = this.option;\r\n                    if (option.type === 'category') {\r\n                        if (rawData) {\r\n                            return option.data;\r\n                        }\r\n                        return this.__ordinalMeta.categories;\r\n                    }\r\n                };\r\n                AxisModel.prototype.getOrdinalMeta = function () {\r\n                    return this.__ordinalMeta;\r\n                };\r\n                AxisModel.type = axisName + 'Axis.' + axisType;\r\n                AxisModel.defaultOption = defaultOption;\r\n                return AxisModel;\r\n            }(BaseAxisModelClass));\r\n            ComponentModel.registerClass(AxisModel);\r\n        });\r\n        ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', getAxisType);\r\n    }\r\n    function getAxisType(option) {\r\n        return option.type || (option.data ? 'category' : 'value');\r\n    }\n\n    var CartesianAxisModel = (function (_super) {\r\n        __extends(CartesianAxisModel, _super);\r\n        function CartesianAxisModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        CartesianAxisModel.prototype.getCoordSysModel = function () {\r\n            return this.getReferringComponents('grid', SINGLE_REFERRING).models[0];\r\n        };\r\n        CartesianAxisModel.type = 'cartesian2dAxis';\r\n        return CartesianAxisModel;\r\n    }(ComponentModel));\r\n    mixin(CartesianAxisModel, AxisModelCommonMixin);\r\n    var extraOption = {\r\n        offset: 0,\r\n        categorySortInfo: []\r\n    };\r\n    axisModelCreator('x', CartesianAxisModel, extraOption);\r\n    axisModelCreator('y', CartesianAxisModel, extraOption);\n\n    var PI$6 = Math.PI;\r\n    var AxisBuilder = (function () {\r\n        function AxisBuilder(axisModel, opt) {\r\n            this.group = new Group();\r\n            this.opt = opt;\r\n            this.axisModel = axisModel;\r\n            defaults(opt, {\r\n                labelOffset: 0,\r\n                nameDirection: 1,\r\n                tickDirection: 1,\r\n                labelDirection: 1,\r\n                silent: true,\r\n                handleAutoShown: function () { return true; }\r\n            });\r\n            var transformGroup = new Group({\r\n                x: opt.position[0],\r\n                y: opt.position[1],\r\n                rotation: opt.rotation\r\n            });\r\n            transformGroup.updateTransform();\r\n            this._transformGroup = transformGroup;\r\n        }\r\n        AxisBuilder.prototype.hasBuilder = function (name) {\r\n            return !!builders[name];\r\n        };\r\n        AxisBuilder.prototype.add = function (name) {\r\n            builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\r\n        };\r\n        AxisBuilder.prototype.getGroup = function () {\r\n            return this.group;\r\n        };\r\n        AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\r\n            var rotationDiff = remRadian(textRotation - axisRotation);\r\n            var textAlign;\r\n            var textVerticalAlign;\r\n            if (isRadianAroundZero(rotationDiff)) {\r\n                textVerticalAlign = direction > 0 ? 'top' : 'bottom';\r\n                textAlign = 'center';\r\n            }\r\n            else if (isRadianAroundZero(rotationDiff - PI$6)) {\r\n                textVerticalAlign = direction > 0 ? 'bottom' : 'top';\r\n                textAlign = 'center';\r\n            }\r\n            else {\r\n                textVerticalAlign = 'middle';\r\n                if (rotationDiff > 0 && rotationDiff < PI$6) {\r\n                    textAlign = direction > 0 ? 'right' : 'left';\r\n                }\r\n                else {\r\n                    textAlign = direction > 0 ? 'left' : 'right';\r\n                }\r\n            }\r\n            return {\r\n                rotation: rotationDiff,\r\n                textAlign: textAlign,\r\n                textVerticalAlign: textVerticalAlign\r\n            };\r\n        };\r\n        AxisBuilder.makeAxisEventDataBase = function (axisModel) {\r\n            var eventData = {\r\n                componentType: axisModel.mainType,\r\n                componentIndex: axisModel.componentIndex\r\n            };\r\n            eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\r\n            return eventData;\r\n        };\r\n        AxisBuilder.isLabelSilent = function (axisModel) {\r\n            var tooltipOpt = axisModel.get('tooltip');\r\n            return axisModel.get('silent')\r\n                || !(axisModel.get('triggerEvent') || (tooltipOpt && tooltipOpt.show));\r\n        };\r\n        return AxisBuilder;\r\n    }());\r\n    var builders = {\r\n        axisLine: function (opt, axisModel, group, transformGroup) {\r\n            var shown = axisModel.get(['axisLine', 'show']);\r\n            if (shown === 'auto' && opt.handleAutoShown) {\r\n                shown = opt.handleAutoShown('axisLine');\r\n            }\r\n            if (!shown) {\r\n                return;\r\n            }\r\n            var extent = axisModel.axis.getExtent();\r\n            var matrix = transformGroup.transform;\r\n            var pt1 = [extent[0], 0];\r\n            var pt2 = [extent[1], 0];\r\n            if (matrix) {\r\n                applyTransform(pt1, pt1, matrix);\r\n                applyTransform(pt2, pt2, matrix);\r\n            }\r\n            var lineStyle = extend({\r\n                lineCap: 'round'\r\n            }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\r\n            var line = new Line({\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x1: pt1[0],\r\n                    y1: pt1[1],\r\n                    x2: pt2[0],\r\n                    y2: pt2[1]\r\n                },\r\n                style: lineStyle,\r\n                strokeContainThreshold: opt.strokeContainThreshold || 5,\r\n                silent: true,\r\n                z2: 1\r\n            });\r\n            line.anid = 'line';\r\n            group.add(line);\r\n            var arrows = axisModel.get(['axisLine', 'symbol']);\r\n            var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\r\n            var arrowOffset = axisModel.get(['axisLine', 'symbolOffset']) || 0;\r\n            if (typeof arrowOffset === 'number') {\r\n                arrowOffset = [arrowOffset, arrowOffset];\r\n            }\r\n            if (arrows != null) {\r\n                if (typeof arrows === 'string') {\r\n                    arrows = [arrows, arrows];\r\n                }\r\n                if (typeof arrowSize === 'string'\r\n                    || typeof arrowSize === 'number') {\r\n                    arrowSize = [arrowSize, arrowSize];\r\n                }\r\n                var symbolWidth_1 = arrowSize[0];\r\n                var symbolHeight_1 = arrowSize[1];\r\n                each([{\r\n                        rotate: opt.rotation + Math.PI / 2,\r\n                        offset: arrowOffset[0],\r\n                        r: 0\r\n                    }, {\r\n                        rotate: opt.rotation - Math.PI / 2,\r\n                        offset: arrowOffset[1],\r\n                        r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0])\r\n                            + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\r\n                    }], function (point, index) {\r\n                    if (arrows[index] !== 'none' && arrows[index] != null) {\r\n                        var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true);\r\n                        var r = point.r + point.offset;\r\n                        symbol.attr({\r\n                            rotation: point.rotate,\r\n                            x: pt1[0] + r * Math.cos(opt.rotation),\r\n                            y: pt1[1] - r * Math.sin(opt.rotation),\r\n                            silent: true,\r\n                            z2: 11\r\n                        });\r\n                        group.add(symbol);\r\n                    }\r\n                });\r\n            }\r\n        },\r\n        axisTickLabel: function (opt, axisModel, group, transformGroup) {\r\n            var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\r\n            var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\r\n            fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\r\n            buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection);\r\n        },\r\n        axisName: function (opt, axisModel, group, transformGroup) {\r\n            var name = retrieve(opt.axisName, axisModel.get('name'));\r\n            if (!name) {\r\n                return;\r\n            }\r\n            var nameLocation = axisModel.get('nameLocation');\r\n            var nameDirection = opt.nameDirection;\r\n            var textStyleModel = axisModel.getModel('nameTextStyle');\r\n            var gap = axisModel.get('nameGap') || 0;\r\n            var extent = axisModel.axis.getExtent();\r\n            var gapSignal = extent[0] > extent[1] ? -1 : 1;\r\n            var pos = [\r\n                nameLocation === 'start'\r\n                    ? extent[0] - gapSignal * gap\r\n                    : nameLocation === 'end'\r\n                        ? extent[1] + gapSignal * gap\r\n                        : (extent[0] + extent[1]) / 2,\r\n                isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0\r\n            ];\r\n            var labelLayout;\r\n            var nameRotation = axisModel.get('nameRotate');\r\n            if (nameRotation != null) {\r\n                nameRotation = nameRotation * PI$6 / 180;\r\n            }\r\n            var axisNameAvailableWidth;\r\n            if (isNameLocationCenter(nameLocation)) {\r\n                labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, nameDirection);\r\n            }\r\n            else {\r\n                labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\r\n                axisNameAvailableWidth = opt.axisNameAvailableWidth;\r\n                if (axisNameAvailableWidth != null) {\r\n                    axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\r\n                    !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\r\n                }\r\n            }\r\n            var textFont = textStyleModel.getFont();\r\n            var truncateOpt = axisModel.get('nameTruncate', true) || {};\r\n            var ellipsis = truncateOpt.ellipsis;\r\n            var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\r\n            var tooltipOpt = axisModel.get('tooltip', true);\r\n            var mainType = axisModel.mainType;\r\n            var formatterParams = {\r\n                componentType: mainType,\r\n                name: name,\r\n                $vars: ['name']\r\n            };\r\n            formatterParams[mainType + 'Index'] = axisModel.componentIndex;\r\n            var textEl = new ZRText({\r\n                x: pos[0],\r\n                y: pos[1],\r\n                rotation: labelLayout.rotation,\r\n                silent: AxisBuilder.isLabelSilent(axisModel),\r\n                style: createTextStyle(textStyleModel, {\r\n                    text: name,\r\n                    font: textFont,\r\n                    overflow: 'truncate',\r\n                    width: maxWidth,\r\n                    ellipsis: ellipsis,\r\n                    fill: textStyleModel.getTextColor()\r\n                        || axisModel.get(['axisLine', 'lineStyle', 'color']),\r\n                    align: textStyleModel.get('align')\r\n                        || labelLayout.textAlign,\r\n                    verticalAlign: textStyleModel.get('verticalAlign')\r\n                        || labelLayout.textVerticalAlign\r\n                }),\r\n                z2: 1\r\n            });\r\n            textEl.tooltip = (tooltipOpt && tooltipOpt.show)\r\n                ? extend({\r\n                    content: name,\r\n                    formatter: function () {\r\n                        return name;\r\n                    },\r\n                    formatterParams: formatterParams\r\n                }, tooltipOpt)\r\n                : null;\r\n            textEl.__fullText = name;\r\n            textEl.anid = 'name';\r\n            if (axisModel.get('triggerEvent')) {\r\n                var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n                eventData.targetType = 'axisName';\r\n                eventData.name = name;\r\n                getECData(textEl).eventData = eventData;\r\n            }\r\n            transformGroup.add(textEl);\r\n            textEl.updateTransform();\r\n            group.add(textEl);\r\n            textEl.decomposeTransform();\r\n        }\r\n    };\r\n    function endTextLayout(rotation, textPosition, textRotate, extent) {\r\n        var rotationDiff = remRadian(textRotate - rotation);\r\n        var textAlign;\r\n        var textVerticalAlign;\r\n        var inverse = extent[0] > extent[1];\r\n        var onLeft = (textPosition === 'start' && !inverse)\r\n            || (textPosition !== 'start' && inverse);\r\n        if (isRadianAroundZero(rotationDiff - PI$6 / 2)) {\r\n            textVerticalAlign = onLeft ? 'bottom' : 'top';\r\n            textAlign = 'center';\r\n        }\r\n        else if (isRadianAroundZero(rotationDiff - PI$6 * 1.5)) {\r\n            textVerticalAlign = onLeft ? 'top' : 'bottom';\r\n            textAlign = 'center';\r\n        }\r\n        else {\r\n            textVerticalAlign = 'middle';\r\n            if (rotationDiff < PI$6 * 1.5 && rotationDiff > PI$6 / 2) {\r\n                textAlign = onLeft ? 'left' : 'right';\r\n            }\r\n            else {\r\n                textAlign = onLeft ? 'right' : 'left';\r\n            }\r\n        }\r\n        return {\r\n            rotation: rotationDiff,\r\n            textAlign: textAlign,\r\n            textVerticalAlign: textVerticalAlign\r\n        };\r\n    }\r\n    function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\r\n        if (shouldShowAllLabels(axisModel.axis)) {\r\n            return;\r\n        }\r\n        var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\r\n        var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']);\r\n        labelEls = labelEls || [];\r\n        tickEls = tickEls || [];\r\n        var firstLabel = labelEls[0];\r\n        var nextLabel = labelEls[1];\r\n        var lastLabel = labelEls[labelEls.length - 1];\r\n        var prevLabel = labelEls[labelEls.length - 2];\r\n        var firstTick = tickEls[0];\r\n        var nextTick = tickEls[1];\r\n        var lastTick = tickEls[tickEls.length - 1];\r\n        var prevTick = tickEls[tickEls.length - 2];\r\n        if (showMinLabel === false) {\r\n            ignoreEl(firstLabel);\r\n            ignoreEl(firstTick);\r\n        }\r\n        else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\r\n            if (showMinLabel) {\r\n                ignoreEl(nextLabel);\r\n                ignoreEl(nextTick);\r\n            }\r\n            else {\r\n                ignoreEl(firstLabel);\r\n                ignoreEl(firstTick);\r\n            }\r\n        }\r\n        if (showMaxLabel === false) {\r\n            ignoreEl(lastLabel);\r\n            ignoreEl(lastTick);\r\n        }\r\n        else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\r\n            if (showMaxLabel) {\r\n                ignoreEl(prevLabel);\r\n                ignoreEl(prevTick);\r\n            }\r\n            else {\r\n                ignoreEl(lastLabel);\r\n                ignoreEl(lastTick);\r\n            }\r\n        }\r\n    }\r\n    function ignoreEl(el) {\r\n        el && (el.ignore = true);\r\n    }\r\n    function isTwoLabelOverlapped(current, next) {\r\n        var firstRect = current && current.getBoundingRect().clone();\r\n        var nextRect = next && next.getBoundingRect().clone();\r\n        if (!firstRect || !nextRect) {\r\n            return;\r\n        }\r\n        var mRotationBack = identity([]);\r\n        rotate(mRotationBack, mRotationBack, -current.rotation);\r\n        firstRect.applyTransform(mul$1([], mRotationBack, current.getLocalTransform()));\r\n        nextRect.applyTransform(mul$1([], mRotationBack, next.getLocalTransform()));\r\n        return firstRect.intersect(nextRect);\r\n    }\r\n    function isNameLocationCenter(nameLocation) {\r\n        return nameLocation === 'middle' || nameLocation === 'center';\r\n    }\r\n    function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\r\n        var tickEls = [];\r\n        var pt1 = [];\r\n        var pt2 = [];\r\n        for (var i = 0; i < ticksCoords.length; i++) {\r\n            var tickCoord = ticksCoords[i].coord;\r\n            pt1[0] = tickCoord;\r\n            pt1[1] = 0;\r\n            pt2[0] = tickCoord;\r\n            pt2[1] = tickEndCoord;\r\n            if (tickTransform) {\r\n                applyTransform(pt1, pt1, tickTransform);\r\n                applyTransform(pt2, pt2, tickTransform);\r\n            }\r\n            var tickEl = new Line({\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x1: pt1[0],\r\n                    y1: pt1[1],\r\n                    x2: pt2[0],\r\n                    y2: pt2[1]\r\n                },\r\n                style: tickLineStyle,\r\n                z2: 2,\r\n                autoBatch: true,\r\n                silent: true\r\n            });\r\n            tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\r\n            tickEls.push(tickEl);\r\n        }\r\n        return tickEls;\r\n    }\r\n    function buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\r\n        var axis = axisModel.axis;\r\n        var tickModel = axisModel.getModel('axisTick');\r\n        var shown = tickModel.get('show');\r\n        if (shown === 'auto' && opt.handleAutoShown) {\r\n            shown = opt.handleAutoShown('axisTick');\r\n        }\r\n        if (!shown || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var lineStyleModel = tickModel.getModel('lineStyle');\r\n        var tickEndCoord = opt.tickDirection * tickModel.get('length');\r\n        var ticksCoords = axis.getTicksCoords();\r\n        var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\r\n            stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n        }), 'ticks');\r\n        for (var i = 0; i < ticksEls.length; i++) {\r\n            group.add(ticksEls[i]);\r\n        }\r\n        return ticksEls;\r\n    }\r\n    function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\r\n        var axis = axisModel.axis;\r\n        var minorTickModel = axisModel.getModel('minorTick');\r\n        if (!minorTickModel.get('show') || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var minorTicksCoords = axis.getMinorTicksCoords();\r\n        if (!minorTicksCoords.length) {\r\n            return;\r\n        }\r\n        var lineStyleModel = minorTickModel.getModel('lineStyle');\r\n        var tickEndCoord = tickDirection * minorTickModel.get('length');\r\n        var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\r\n            stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n        }));\r\n        for (var i = 0; i < minorTicksCoords.length; i++) {\r\n            var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\r\n            for (var k = 0; k < minorTicksEls.length; k++) {\r\n                group.add(minorTicksEls[k]);\r\n            }\r\n        }\r\n    }\r\n    function buildAxisLabel(group, transformGroup, axisModel, opt) {\r\n        var axis = axisModel.axis;\r\n        var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\r\n        if (!show || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var labelModel = axisModel.getModel('axisLabel');\r\n        var labelMargin = labelModel.get('margin');\r\n        var labels = axis.getViewLabels();\r\n        var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI$6 / 180;\r\n        var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\r\n        var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\r\n        var labelEls = [];\r\n        var silent = AxisBuilder.isLabelSilent(axisModel);\r\n        var triggerEvent = axisModel.get('triggerEvent');\r\n        each(labels, function (labelItem, index) {\r\n            var tickValue = axis.scale.type === 'ordinal'\r\n                ? axis.scale.getRawIndex(labelItem.tickValue)\r\n                : labelItem.tickValue;\r\n            var formattedLabel = labelItem.formattedLabel;\r\n            var rawLabel = labelItem.rawLabel;\r\n            var itemLabelModel = labelModel;\r\n            if (rawCategoryData && rawCategoryData[tickValue]) {\r\n                var rawCategoryItem = rawCategoryData[tickValue];\r\n                if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\r\n                    itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\r\n                }\r\n            }\r\n            var textColor = itemLabelModel.getTextColor()\r\n                || axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n            var tickCoord = axis.dataToCoord(tickValue);\r\n            var textEl = new ZRText({\r\n                x: tickCoord,\r\n                y: opt.labelOffset + opt.labelDirection * labelMargin,\r\n                rotation: labelLayout.rotation,\r\n                silent: silent,\r\n                z2: 10,\r\n                style: createTextStyle(itemLabelModel, {\r\n                    text: formattedLabel,\r\n                    align: itemLabelModel.getShallow('align', true)\r\n                        || labelLayout.textAlign,\r\n                    verticalAlign: itemLabelModel.getShallow('verticalAlign', true)\r\n                        || itemLabelModel.getShallow('baseline', true)\r\n                        || labelLayout.textVerticalAlign,\r\n                    fill: typeof textColor === 'function'\r\n                        ? textColor(axis.type === 'category'\r\n                            ? rawLabel\r\n                            : axis.type === 'value'\r\n                                ? tickValue + ''\r\n                                : tickValue, index)\r\n                        : textColor\r\n                })\r\n            });\r\n            textEl.anid = 'label_' + tickValue;\r\n            if (triggerEvent) {\r\n                var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n                eventData.targetType = 'axisLabel';\r\n                eventData.value = rawLabel;\r\n                getECData(textEl).eventData = eventData;\r\n            }\r\n            transformGroup.add(textEl);\r\n            textEl.updateTransform();\r\n            labelEls.push(textEl);\r\n            group.add(textEl);\r\n            textEl.decomposeTransform();\r\n        });\r\n        return labelEls;\r\n    }\n\n    function collect(ecModel, api) {\r\n        var result = {\r\n            axesInfo: {},\r\n            seriesInvolved: false,\r\n            coordSysAxesInfo: {},\r\n            coordSysMap: {}\r\n        };\r\n        collectAxesInfo(result, ecModel, api);\r\n        result.seriesInvolved && collectSeriesInfo(result, ecModel);\r\n        return result;\r\n    }\r\n    function collectAxesInfo(result, ecModel, api) {\r\n        var globalTooltipModel = ecModel.getComponent('tooltip');\r\n        var globalAxisPointerModel = ecModel.getComponent('axisPointer');\r\n        var linksOption = globalAxisPointerModel.get('link', true) || [];\r\n        var linkGroups = [];\r\n        each(api.getCoordinateSystems(), function (coordSys) {\r\n            if (!coordSys.axisPointerEnabled) {\r\n                return;\r\n            }\r\n            var coordSysKey = makeKey(coordSys.model);\r\n            var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\r\n            result.coordSysMap[coordSysKey] = coordSys;\r\n            var coordSysModel = coordSys.model;\r\n            var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\r\n            each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null));\r\n            if (coordSys.getTooltipAxes\r\n                && globalTooltipModel\r\n                && baseTooltipModel.get('show')) {\r\n                var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\r\n                var cross = baseTooltipModel.get(['axisPointer', 'type']) === 'cross';\r\n                var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(['axisPointer', 'axis']));\r\n                if (triggerAxis || cross) {\r\n                    each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\r\n                }\r\n                if (cross) {\r\n                    each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\r\n                }\r\n            }\r\n            function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\r\n                var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\r\n                var axisPointerShow = axisPointerModel.get('show');\r\n                if (!axisPointerShow || (axisPointerShow === 'auto'\r\n                    && !fromTooltip\r\n                    && !isHandleTrigger(axisPointerModel))) {\r\n                    return;\r\n                }\r\n                if (triggerTooltip == null) {\r\n                    triggerTooltip = axisPointerModel.get('triggerTooltip');\r\n                }\r\n                axisPointerModel = fromTooltip\r\n                    ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip)\r\n                    : axisPointerModel;\r\n                var snap = axisPointerModel.get('snap');\r\n                var axisKey = makeKey(axis.model);\r\n                var involveSeries = triggerTooltip || snap || axis.type === 'category';\r\n                var axisInfo = result.axesInfo[axisKey] = {\r\n                    key: axisKey,\r\n                    axis: axis,\r\n                    coordSys: coordSys,\r\n                    axisPointerModel: axisPointerModel,\r\n                    triggerTooltip: triggerTooltip,\r\n                    involveSeries: involveSeries,\r\n                    snap: snap,\r\n                    useHandle: isHandleTrigger(axisPointerModel),\r\n                    seriesModels: [],\r\n                    linkGroup: null\r\n                };\r\n                axesInfoInCoordSys[axisKey] = axisInfo;\r\n                result.seriesInvolved = result.seriesInvolved || involveSeries;\r\n                var groupIndex = getLinkGroupIndex(linksOption, axis);\r\n                if (groupIndex != null) {\r\n                    var linkGroup = linkGroups[groupIndex]\r\n                        || (linkGroups[groupIndex] = { axesInfo: {} });\r\n                    linkGroup.axesInfo[axisKey] = axisInfo;\r\n                    linkGroup.mapper = linksOption[groupIndex].mapper;\r\n                    axisInfo.linkGroup = linkGroup;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\r\n        var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\r\n        var fields = [\r\n            'type', 'snap', 'lineStyle', 'shadowStyle', 'label',\r\n            'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'\r\n        ];\r\n        var volatileOption = {};\r\n        each(fields, function (field) {\r\n            volatileOption[field] = clone(tooltipAxisPointerModel.get(field));\r\n        });\r\n        volatileOption.snap = axis.type !== 'category' && !!triggerTooltip;\r\n        if (tooltipAxisPointerModel.get('type') === 'cross') {\r\n            volatileOption.type = 'line';\r\n        }\r\n        var labelOption = volatileOption.label || (volatileOption.label = {});\r\n        labelOption.show == null && (labelOption.show = false);\r\n        if (fromTooltip === 'cross') {\r\n            var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(['label', 'show']);\r\n            labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true;\r\n            if (!triggerTooltip) {\r\n                var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\r\n                crossStyle && defaults(labelOption, crossStyle.textStyle);\r\n            }\r\n        }\r\n        return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\r\n    }\r\n    function collectSeriesInfo(result, ecModel) {\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var seriesTooltipTrigger = seriesModel.get(['tooltip', 'trigger'], true);\r\n            var seriesTooltipShow = seriesModel.get(['tooltip', 'show'], true);\r\n            if (!coordSys\r\n                || seriesTooltipTrigger === 'none'\r\n                || seriesTooltipTrigger === false\r\n                || seriesTooltipTrigger === 'item'\r\n                || seriesTooltipShow === false\r\n                || seriesModel.get(['axisPointer', 'show'], true) === false) {\r\n                return;\r\n            }\r\n            each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\r\n                var axis = axisInfo.axis;\r\n                if (coordSys.getAxis(axis.dim) === axis) {\r\n                    axisInfo.seriesModels.push(seriesModel);\r\n                    axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\r\n                    axisInfo.seriesDataCount += seriesModel.getData().count();\r\n                }\r\n            });\r\n        });\r\n    }\r\n    function getLinkGroupIndex(linksOption, axis) {\r\n        var axisModel = axis.model;\r\n        var dim = axis.dim;\r\n        for (var i = 0; i < linksOption.length; i++) {\r\n            var linkOption = linksOption[i] || {};\r\n            if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id)\r\n                || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex)\r\n                || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\r\n                return i;\r\n            }\r\n        }\r\n    }\r\n    function checkPropInLink(linkPropValue, axisPropValue) {\r\n        return linkPropValue === 'all'\r\n            || (isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0)\r\n            || linkPropValue === axisPropValue;\r\n    }\r\n    function fixValue(axisModel) {\r\n        var axisInfo = getAxisInfo(axisModel);\r\n        if (!axisInfo) {\r\n            return;\r\n        }\r\n        var axisPointerModel = axisInfo.axisPointerModel;\r\n        var scale = axisInfo.axis.scale;\r\n        var option = axisPointerModel.option;\r\n        var status = axisPointerModel.get('status');\r\n        var value = axisPointerModel.get('value');\r\n        if (value != null) {\r\n            value = scale.parse(value);\r\n        }\r\n        var useHandle = isHandleTrigger(axisPointerModel);\r\n        if (status == null) {\r\n            option.status = useHandle ? 'show' : 'hide';\r\n        }\r\n        var extent = scale.getExtent().slice();\r\n        extent[0] > extent[1] && extent.reverse();\r\n        if (value == null\r\n            || value > extent[1]) {\r\n            value = extent[1];\r\n        }\r\n        if (value < extent[0]) {\r\n            value = extent[0];\r\n        }\r\n        option.value = value;\r\n        if (useHandle) {\r\n            option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\r\n        }\r\n    }\r\n    function getAxisInfo(axisModel) {\r\n        var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {})\r\n            .coordSysAxesInfo;\r\n        return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\r\n    }\r\n    function getAxisPointerModel(axisModel) {\r\n        var axisInfo = getAxisInfo(axisModel);\r\n        return axisInfo && axisInfo.axisPointerModel;\r\n    }\r\n    function isHandleTrigger(axisPointerModel) {\r\n        return !!axisPointerModel.get(['handle', 'show']);\r\n    }\r\n    function makeKey(model) {\r\n        return model.type + '||' + model.id;\r\n    }\n\n    var axisPointerClazz = {};\r\n    var AxisView = (function (_super) {\r\n        __extends(AxisView, _super);\r\n        function AxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AxisView.type;\r\n            return _this;\r\n        }\r\n        AxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            this.axisPointerClass && fixValue(axisModel);\r\n            _super.prototype.render.apply(this, arguments);\r\n            this._doUpdateAxisPointerClass(axisModel, api, true);\r\n        };\r\n        AxisView.prototype.updateAxisPointer = function (axisModel, ecModel, api, payload) {\r\n            this._doUpdateAxisPointerClass(axisModel, api, false);\r\n        };\r\n        AxisView.prototype.remove = function (ecModel, api) {\r\n            var axisPointer = this._axisPointer;\r\n            axisPointer && axisPointer.remove(api);\r\n        };\r\n        AxisView.prototype.dispose = function (ecModel, api) {\r\n            this._disposeAxisPointer(api);\r\n            _super.prototype.dispose.apply(this, arguments);\r\n        };\r\n        AxisView.prototype._doUpdateAxisPointerClass = function (axisModel, api, forceRender) {\r\n            var Clazz = AxisView.getAxisPointerClass(this.axisPointerClass);\r\n            if (!Clazz) {\r\n                return;\r\n            }\r\n            var axisPointerModel = getAxisPointerModel(axisModel);\r\n            axisPointerModel\r\n                ? (this._axisPointer || (this._axisPointer = new Clazz()))\r\n                    .render(axisModel, axisPointerModel, api, forceRender)\r\n                : this._disposeAxisPointer(api);\r\n        };\r\n        AxisView.prototype._disposeAxisPointer = function (api) {\r\n            this._axisPointer && this._axisPointer.dispose(api);\r\n            this._axisPointer = null;\r\n        };\r\n        AxisView.registerAxisPointerClass = function (type, clazz) {\r\n            if (__DEV__) {\r\n                if (axisPointerClazz[type]) {\r\n                    throw new Error('axisPointer ' + type + ' exists');\r\n                }\r\n            }\r\n            axisPointerClazz[type] = clazz;\r\n        };\r\n        AxisView.getAxisPointerClass = function (type) {\r\n            return type && axisPointerClazz[type];\r\n        };\r\n        AxisView.type = 'axis';\r\n        return AxisView;\r\n    }(ComponentView));\n\n    function layout$1(gridModel, axisModel, opt) {\r\n        opt = opt || {};\r\n        var grid = gridModel.coordinateSystem;\r\n        var axis = axisModel.axis;\r\n        var layout = {};\r\n        var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\r\n        var rawAxisPosition = axis.position;\r\n        var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\r\n        var axisDim = axis.dim;\r\n        var rect = grid.getRect();\r\n        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\r\n        var idx = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 };\r\n        var axisOffset = axisModel.get('offset') || 0;\r\n        var posBound = axisDim === 'x'\r\n            ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset]\r\n            : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\r\n        if (otherAxisOnZeroOf) {\r\n            var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\r\n            posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\r\n        }\r\n        layout.position = [\r\n            axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0],\r\n            axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]\r\n        ];\r\n        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);\r\n        var dirMap = { top: -1, bottom: 1, left: -1, right: 1 };\r\n        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\r\n        layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\r\n        if (axisModel.get(['axisTick', 'inside'])) {\r\n            layout.tickDirection = -layout.tickDirection;\r\n        }\r\n        if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\r\n            layout.labelDirection = -layout.labelDirection;\r\n        }\r\n        var labelRotate = axisModel.get(['axisLabel', 'rotate']);\r\n        layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate;\r\n        layout.z2 = 1;\r\n        return layout;\r\n    }\r\n    function isCartesian2DSeries(seriesModel) {\r\n        return seriesModel.get('coordinateSystem') === 'cartesian2d';\r\n    }\r\n    function findAxisModels(seriesModel) {\r\n        var axisModelMap = {\r\n            xAxisModel: null,\r\n            yAxisModel: null\r\n        };\r\n        each(axisModelMap, function (v, key) {\r\n            var axisType = key.replace(/Model$/, '');\r\n            var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!axisModel) {\r\n                    throw new Error(axisType + ' \"' + retrieve3(seriesModel.get(axisType + 'Index'), seriesModel.get(axisType + 'Id'), 0) + '\" not found');\r\n                }\r\n            }\r\n            axisModelMap[key] = axisModel;\r\n        });\r\n        return axisModelMap;\r\n    }\n\n    var inner$5 = makeInner();\r\n    function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\r\n        var axis = axisModel.axis;\r\n        if (axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var splitAreaModel = axisModel.getModel('splitArea');\r\n        var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n        var areaColors = areaStyleModel.get('color');\r\n        var gridRect = gridModel.coordinateSystem.getRect();\r\n        var ticksCoords = axis.getTicksCoords({\r\n            tickModel: splitAreaModel,\r\n            clamp: true\r\n        });\r\n        if (!ticksCoords.length) {\r\n            return;\r\n        }\r\n        var areaColorsLen = areaColors.length;\r\n        var lastSplitAreaColors = inner$5(axisView).splitAreaColors;\r\n        var newSplitAreaColors = createHashMap();\r\n        var colorIndex = 0;\r\n        if (lastSplitAreaColors) {\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\r\n                if (cIndex != null) {\r\n                    colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        var prev = axis.toGlobalCoord(ticksCoords[0].coord);\r\n        var areaStyle = areaStyleModel.getAreaStyle();\r\n        areaColors = isArray(areaColors) ? areaColors : [areaColors];\r\n        for (var i = 1; i < ticksCoords.length; i++) {\r\n            var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n            var x = void 0;\r\n            var y = void 0;\r\n            var width = void 0;\r\n            var height = void 0;\r\n            if (axis.isHorizontal()) {\r\n                x = prev;\r\n                y = gridRect.y;\r\n                width = tickCoord - x;\r\n                height = gridRect.height;\r\n                prev = x + width;\r\n            }\r\n            else {\r\n                x = gridRect.x;\r\n                y = prev;\r\n                width = gridRect.width;\r\n                height = tickCoord - y;\r\n                prev = y + height;\r\n            }\r\n            var tickValue = ticksCoords[i - 1].tickValue;\r\n            tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\r\n            axisGroup.add(new Rect({\r\n                anid: tickValue != null ? 'area_' + tickValue : null,\r\n                shape: {\r\n                    x: x,\r\n                    y: y,\r\n                    width: width,\r\n                    height: height\r\n                },\r\n                style: defaults({\r\n                    fill: areaColors[colorIndex]\r\n                }, areaStyle),\r\n                autoBatch: true,\r\n                silent: true\r\n            }));\r\n            colorIndex = (colorIndex + 1) % areaColorsLen;\r\n        }\r\n        inner$5(axisView).splitAreaColors = newSplitAreaColors;\r\n    }\r\n    function rectCoordAxisHandleRemove(axisView) {\r\n        inner$5(axisView).splitAreaColors = null;\r\n    }\n\n    var axisBuilderAttrs = [\r\n        'axisLine', 'axisTickLabel', 'axisName'\r\n    ];\r\n    var selfBuilderAttrs = [\r\n        'splitArea', 'splitLine', 'minorSplitLine'\r\n    ];\r\n    var CartesianAxisView = (function (_super) {\r\n        __extends(CartesianAxisView, _super);\r\n        function CartesianAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianAxisView.type;\r\n            _this.axisPointerClass = 'CartesianAxisPointer';\r\n            return _this;\r\n        }\r\n        CartesianAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            this.group.removeAll();\r\n            var oldAxisGroup = this._axisGroup;\r\n            this._axisGroup = new Group();\r\n            this.group.add(this._axisGroup);\r\n            if (!axisModel.get('show')) {\r\n                return;\r\n            }\r\n            var gridModel = axisModel.getCoordSysModel();\r\n            var layout = layout$1(gridModel, axisModel);\r\n            var axisBuilder = new AxisBuilder(axisModel, extend({\r\n                handleAutoShown: function (elementType) {\r\n                    var cartesians = gridModel.coordinateSystem.getCartesians();\r\n                    for (var i = 0; i < cartesians.length; i++) {\r\n                        var otherAxisType = cartesians[i].getOtherAxis(axisModel.axis).type;\r\n                        if (otherAxisType === 'value' || otherAxisType === 'log') {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    return false;\r\n                }\r\n            }, layout));\r\n            each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\r\n            this._axisGroup.add(axisBuilder.getGroup());\r\n            each(selfBuilderAttrs, function (name) {\r\n                if (axisModel.get([name, 'show'])) {\r\n                    axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel);\r\n                }\r\n            }, this);\r\n            groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n            _super.prototype.render.call(this, axisModel, ecModel, api, payload);\r\n        };\r\n        CartesianAxisView.prototype.remove = function () {\r\n            rectCoordAxisHandleRemove(this);\r\n        };\r\n        CartesianAxisView.type = 'cartesianAxis';\r\n        return CartesianAxisView;\r\n    }(AxisView));\r\n    var axisElementBuilders = {\r\n        splitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n            var axis = axisModel.axis;\r\n            if (axis.scale.isBlank()) {\r\n                return;\r\n            }\r\n            var splitLineModel = axisModel.getModel('splitLine');\r\n            var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n            var lineColors = lineStyleModel.get('color');\r\n            lineColors = isArray(lineColors) ? lineColors : [lineColors];\r\n            var gridRect = gridModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var lineCount = 0;\r\n            var ticksCoords = axis.getTicksCoords({\r\n                tickModel: splitLineModel\r\n            });\r\n            var p1 = [];\r\n            var p2 = [];\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n                if (isHorizontal) {\r\n                    p1[0] = tickCoord;\r\n                    p1[1] = gridRect.y;\r\n                    p2[0] = tickCoord;\r\n                    p2[1] = gridRect.y + gridRect.height;\r\n                }\r\n                else {\r\n                    p1[0] = gridRect.x;\r\n                    p1[1] = tickCoord;\r\n                    p2[0] = gridRect.x + gridRect.width;\r\n                    p2[1] = tickCoord;\r\n                }\r\n                var colorIndex = (lineCount++) % lineColors.length;\r\n                var tickValue = ticksCoords[i].tickValue;\r\n                axisGroup.add(new Line({\r\n                    anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\r\n                    subPixelOptimize: true,\r\n                    autoBatch: true,\r\n                    shape: {\r\n                        x1: p1[0],\r\n                        y1: p1[1],\r\n                        x2: p2[0],\r\n                        y2: p2[1]\r\n                    },\r\n                    style: defaults({\r\n                        stroke: lineColors[colorIndex]\r\n                    }, lineStyle),\r\n                    silent: true\r\n                }));\r\n            }\r\n        },\r\n        minorSplitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n            var axis = axisModel.axis;\r\n            var minorSplitLineModel = axisModel.getModel('minorSplitLine');\r\n            var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n            var gridRect = gridModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var minorTicksCoords = axis.getMinorTicksCoords();\r\n            if (!minorTicksCoords.length) {\r\n                return;\r\n            }\r\n            var p1 = [];\r\n            var p2 = [];\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            for (var i = 0; i < minorTicksCoords.length; i++) {\r\n                for (var k = 0; k < minorTicksCoords[i].length; k++) {\r\n                    var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\r\n                    if (isHorizontal) {\r\n                        p1[0] = tickCoord;\r\n                        p1[1] = gridRect.y;\r\n                        p2[0] = tickCoord;\r\n                        p2[1] = gridRect.y + gridRect.height;\r\n                    }\r\n                    else {\r\n                        p1[0] = gridRect.x;\r\n                        p1[1] = tickCoord;\r\n                        p2[0] = gridRect.x + gridRect.width;\r\n                        p2[1] = tickCoord;\r\n                    }\r\n                    axisGroup.add(new Line({\r\n                        anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\r\n                        subPixelOptimize: true,\r\n                        autoBatch: true,\r\n                        shape: {\r\n                            x1: p1[0],\r\n                            y1: p1[1],\r\n                            x2: p2[0],\r\n                            y2: p2[1]\r\n                        },\r\n                        style: lineStyle,\r\n                        silent: true\r\n                    }));\r\n                }\r\n            }\r\n        },\r\n        splitArea: function (axisView, axisGroup, axisModel, gridModel) {\r\n            rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel);\r\n        }\r\n    };\r\n    var CartesianXAxisView = (function (_super) {\r\n        __extends(CartesianXAxisView, _super);\r\n        function CartesianXAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianXAxisView.type;\r\n            return _this;\r\n        }\r\n        CartesianXAxisView.type = 'xAxis';\r\n        return CartesianXAxisView;\r\n    }(CartesianAxisView));\r\n    var CartesianYAxisView = (function (_super) {\r\n        __extends(CartesianYAxisView, _super);\r\n        function CartesianYAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianXAxisView.type;\r\n            return _this;\r\n        }\r\n        CartesianYAxisView.type = 'yAxis';\r\n        return CartesianYAxisView;\r\n    }(CartesianAxisView));\r\n    ComponentView.registerClass(CartesianXAxisView);\r\n    ComponentView.registerClass(CartesianYAxisView);\n\n    registerProcessor(PRIORITY.PROCESSOR.FILTER + 10, {\r\n        getTargetSeries: function (ecModel) {\r\n            var seriesModelMap = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                isCartesian2DSeries(seriesModel) && seriesModelMap.set(seriesModel.uid, seriesModel);\r\n            });\r\n            return seriesModelMap;\r\n        },\r\n        overallReset: function (ecModel, api) {\r\n            var seriesRecords = [];\r\n            var axisRecordMap = createHashMap();\r\n            prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords);\r\n            calculateFilteredExtent(axisRecordMap, seriesRecords);\r\n            shrinkAxisExtent(axisRecordMap);\r\n        }\r\n    });\r\n    function prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords) {\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            if (!isCartesian2DSeries(seriesModel)) {\r\n                return;\r\n            }\r\n            var axesModelMap = findAxisModels(seriesModel);\r\n            var xAxisModel = axesModelMap.xAxisModel;\r\n            var yAxisModel = axesModelMap.yAxisModel;\r\n            var xAxis = xAxisModel.axis;\r\n            var yAxis = yAxisModel.axis;\r\n            var xRawExtentInfo = xAxis.scale.rawExtentInfo;\r\n            var yRawExtentInfo = yAxis.scale.rawExtentInfo;\r\n            var data = seriesModel.getData();\r\n            if ((xRawExtentInfo && xRawExtentInfo.frozen)\r\n                || (yRawExtentInfo && yRawExtentInfo.frozen)) {\r\n                return;\r\n            }\r\n            seriesRecords.push({\r\n                seriesModel: seriesModel,\r\n                xAxisModel: xAxisModel,\r\n                yAxisModel: yAxisModel\r\n            });\r\n            unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, xAxisModel).condExtent, data, xAxis.dim);\r\n            unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, yAxisModel).condExtent, data, yAxis.dim);\r\n        });\r\n    }\r\n    function calculateFilteredExtent(axisRecordMap, seriesRecords) {\r\n        each(seriesRecords, function (seriesRecord) {\r\n            var xAxisModel = seriesRecord.xAxisModel;\r\n            var yAxisModel = seriesRecord.yAxisModel;\r\n            var xAxis = xAxisModel.axis;\r\n            var yAxis = yAxisModel.axis;\r\n            var xAxisRecord = prepareAxisRecord(axisRecordMap, xAxisModel);\r\n            var yAxisRecord = prepareAxisRecord(axisRecordMap, yAxisModel);\r\n            xAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(xAxis.scale, xAxisModel, xAxisRecord.condExtent);\r\n            yAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(yAxis.scale, yAxisModel, yAxisRecord.condExtent);\r\n            xAxisRecord.rawExtentResult = xAxisRecord.rawExtentInfo.calculate();\r\n            yAxisRecord.rawExtentResult = yAxisRecord.rawExtentInfo.calculate();\r\n            var data = seriesRecord.seriesModel.getData();\r\n            var condDimMap = {};\r\n            var tarDimMap = {};\r\n            var condAxis;\r\n            var tarAxisRecord;\r\n            function addCondition(axis, axisRecord) {\r\n                var condExtent = axisRecord.condExtent;\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                if (axis.type === 'category'\r\n                    && (condExtent[0] < rawExtentResult.min || rawExtentResult.max < condExtent[1])) {\r\n                    each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n                        if (!hasOwn(condDimMap, dataDim)) {\r\n                            condDimMap[dataDim] = true;\r\n                            condAxis = axis;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function addTarget(axis, axisRecord) {\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                if (axis.type !== 'category'\r\n                    && (!rawExtentResult.minFixed || !rawExtentResult.maxFixed)) {\r\n                    each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n                        if (!hasOwn(condDimMap, dataDim) && !hasOwn(tarDimMap, dataDim)) {\r\n                            tarDimMap[dataDim] = true;\r\n                            tarAxisRecord = axisRecord;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            addCondition(xAxis, xAxisRecord);\r\n            addCondition(yAxis, yAxisRecord);\r\n            addTarget(xAxis, xAxisRecord);\r\n            addTarget(yAxis, yAxisRecord);\r\n            var condDims = keys(condDimMap);\r\n            var tarDims = keys(tarDimMap);\r\n            var tarDimExtents = map(tarDims, function () {\r\n                return initExtent();\r\n            });\r\n            var condDimsLen = condDims.length;\r\n            var tarDimsLen = tarDims.length;\r\n            if (!condDimsLen || !tarDimsLen) {\r\n                return;\r\n            }\r\n            var singleCondDim = condDimsLen === 1 ? condDims[0] : null;\r\n            var singleTarDim = tarDimsLen === 1 ? tarDims[0] : null;\r\n            var dataLen = data.count();\r\n            if (singleCondDim && singleTarDim) {\r\n                for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n                    var condVal = data.get(singleCondDim, dataIdx);\r\n                    if (condAxis.scale.isInExtentRange(condVal)) {\r\n                        unionExtent(tarDimExtents[0], data.get(singleTarDim, dataIdx));\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n                    for (var j = 0; j < condDimsLen; j++) {\r\n                        var condVal = data.get(condDims[j], dataIdx);\r\n                        if (condAxis.scale.isInExtentRange(condVal)) {\r\n                            for (var k = 0; k < tarDimsLen; k++) {\r\n                                unionExtent(tarDimExtents[k], data.get(tarDims[k], dataIdx));\r\n                            }\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            each(tarDimExtents, function (tarDimExtent, i) {\r\n                var dim = tarDims[i];\r\n                data.setApproximateExtent(tarDimExtent, dim);\r\n                var tarAxisExtent = tarAxisRecord.tarExtent = tarAxisRecord.tarExtent || initExtent();\r\n                unionExtent(tarAxisExtent, tarDimExtent[0]);\r\n                unionExtent(tarAxisExtent, tarDimExtent[1]);\r\n            });\r\n        });\r\n    }\r\n    function shrinkAxisExtent(axisRecordMap) {\r\n        axisRecordMap.each(function (axisRecord) {\r\n            var tarAxisExtent = axisRecord.tarExtent;\r\n            if (tarAxisExtent) {\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                var rawExtentInfo = axisRecord.rawExtentInfo;\r\n                if (!rawExtentResult.minFixed && tarAxisExtent[0] > rawExtentResult.min) {\r\n                    rawExtentInfo.modifyDataMinMax('min', tarAxisExtent[0]);\r\n                }\r\n                if (!rawExtentResult.maxFixed && tarAxisExtent[1] < rawExtentResult.max) {\r\n                    rawExtentInfo.modifyDataMinMax('max', tarAxisExtent[1]);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function prepareAxisRecord(axisRecordMap, axisModel) {\r\n        return axisRecordMap.get(axisModel.uid)\r\n            || axisRecordMap.set(axisModel.uid, { condExtent: initExtent() });\r\n    }\r\n    function initExtent() {\r\n        return [Infinity, -Infinity];\r\n    }\r\n    function unionExtent(extent, val) {\r\n        val < extent[0] && (extent[0] = val);\r\n        val > extent[1] && (extent[1] = val);\r\n    }\n\n    var GridModel = (function (_super) {\r\n        __extends(GridModel, _super);\r\n        function GridModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        GridModel.type = 'grid';\r\n        GridModel.dependencies = ['xAxis', 'yAxis'];\r\n        GridModel.layoutMode = 'box';\r\n        GridModel.defaultOption = {\r\n            show: false,\r\n            zlevel: 0,\r\n            z: 0,\r\n            left: '10%',\r\n            top: 60,\r\n            right: '10%',\r\n            bottom: 70,\r\n            containLabel: false,\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderWidth: 1,\r\n            borderColor: '#ccc'\r\n        };\r\n        return GridModel;\r\n    }(ComponentModel));\n\n    var GridView = (function (_super) {\r\n        __extends(GridView, _super);\r\n        function GridView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'grid';\r\n            return _this;\r\n        }\r\n        GridView.prototype.render = function (gridModel, ecModel) {\r\n            this.group.removeAll();\r\n            if (gridModel.get('show')) {\r\n                this.group.add(new Rect({\r\n                    shape: gridModel.coordinateSystem.getRect(),\r\n                    style: defaults({\r\n                        fill: gridModel.get('backgroundColor')\r\n                    }, gridModel.getItemStyle()),\r\n                    silent: true,\r\n                    z2: -1\r\n                }));\r\n            }\r\n        };\r\n        GridView.type = 'grid';\r\n        return GridView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(GridView);\r\n    ComponentModel.registerClass(GridModel);\r\n    registerPreprocessor(function (option) {\r\n        if (option.xAxis && option.yAxis && !option.grid) {\r\n            option.grid = {};\r\n        }\r\n    });\n\n    registerLayout(pointsLayout('line', true));\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n\n    var Cartesian = (function () {\r\n        function Cartesian(name) {\r\n            this.type = 'cartesian';\r\n            this._dimList = [];\r\n            this._axes = {};\r\n            this.name = name || '';\r\n        }\r\n        Cartesian.prototype.getAxis = function (dim) {\r\n            return this._axes[dim];\r\n        };\r\n        Cartesian.prototype.getAxes = function () {\r\n            return map(this._dimList, function (dim) {\r\n                return this._axes[dim];\r\n            }, this);\r\n        };\r\n        Cartesian.prototype.getAxesByScale = function (scaleType) {\r\n            scaleType = scaleType.toLowerCase();\r\n            return filter(this.getAxes(), function (axis) {\r\n                return axis.scale.type === scaleType;\r\n            });\r\n        };\r\n        Cartesian.prototype.addAxis = function (axis) {\r\n            var dim = axis.dim;\r\n            this._axes[dim] = axis;\r\n            this._dimList.push(dim);\r\n        };\r\n        return Cartesian;\r\n    }());\n\n    var cartesian2DDimensions = ['x', 'y'];\r\n    function canCalculateAffineTransform(scale) {\r\n        return scale.type === 'interval' || scale.type === 'time';\r\n    }\r\n    var Cartesian2D = (function (_super) {\r\n        __extends(Cartesian2D, _super);\r\n        function Cartesian2D() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'cartesian2d';\r\n            _this.dimensions = cartesian2DDimensions;\r\n            return _this;\r\n        }\r\n        Cartesian2D.prototype.calcAffineTransform = function () {\r\n            this._transform = this._invTransform = null;\r\n            var xAxisScale = this.getAxis('x').scale;\r\n            var yAxisScale = this.getAxis('y').scale;\r\n            if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) {\r\n                return;\r\n            }\r\n            var xScaleExtent = xAxisScale.getExtent();\r\n            var yScaleExtent = yAxisScale.getExtent();\r\n            var start = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]);\r\n            var end = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]);\r\n            var xScaleSpan = xScaleExtent[1] - xScaleExtent[0];\r\n            var yScaleSpan = yScaleExtent[1] - yScaleExtent[0];\r\n            if (!xScaleSpan || !yScaleSpan) {\r\n                return;\r\n            }\r\n            var scaleX = (end[0] - start[0]) / xScaleSpan;\r\n            var scaleY = (end[1] - start[1]) / yScaleSpan;\r\n            var translateX = start[0] - xScaleExtent[0] * scaleX;\r\n            var translateY = start[1] - yScaleExtent[0] * scaleY;\r\n            var m = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY];\r\n            this._invTransform = invert([], m);\r\n        };\r\n        Cartesian2D.prototype.getBaseAxis = function () {\r\n            return this.getAxesByScale('ordinal')[0]\r\n                || this.getAxesByScale('time')[0]\r\n                || this.getAxis('x');\r\n        };\r\n        Cartesian2D.prototype.containPoint = function (point) {\r\n            var axisX = this.getAxis('x');\r\n            var axisY = this.getAxis('y');\r\n            return axisX.contain(axisX.toLocalCoord(point[0]))\r\n                && axisY.contain(axisY.toLocalCoord(point[1]));\r\n        };\r\n        Cartesian2D.prototype.containData = function (data) {\r\n            return this.getAxis('x').containData(data[0])\r\n                && this.getAxis('y').containData(data[1]);\r\n        };\r\n        Cartesian2D.prototype.dataToPoint = function (data, reserved, out) {\r\n            out = out || [];\r\n            var xVal = data[0];\r\n            var yVal = data[1];\r\n            if (this._transform\r\n                && xVal != null\r\n                && isFinite(xVal)\r\n                && yVal != null\r\n                && isFinite(yVal)) {\r\n                return applyTransform(out, data, this._transform);\r\n            }\r\n            var xAxis = this.getAxis('x');\r\n            var yAxis = this.getAxis('y');\r\n            out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal));\r\n            out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.clampData = function (data, out) {\r\n            var xScale = this.getAxis('x').scale;\r\n            var yScale = this.getAxis('y').scale;\r\n            var xAxisExtent = xScale.getExtent();\r\n            var yAxisExtent = yScale.getExtent();\r\n            var x = xScale.parse(data[0]);\r\n            var y = yScale.parse(data[1]);\r\n            out = out || [];\r\n            out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\r\n            out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.pointToData = function (point, out) {\r\n            out = out || [];\r\n            if (this._invTransform) {\r\n                return applyTransform(out, point, this._invTransform);\r\n            }\r\n            var xAxis = this.getAxis('x');\r\n            var yAxis = this.getAxis('y');\r\n            out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\r\n            out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.getOtherAxis = function (axis) {\r\n            return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\r\n        };\r\n        Cartesian2D.prototype.getArea = function () {\r\n            var xExtent = this.getAxis('x').getGlobalExtent();\r\n            var yExtent = this.getAxis('y').getGlobalExtent();\r\n            var x = Math.min(xExtent[0], xExtent[1]);\r\n            var y = Math.min(yExtent[0], yExtent[1]);\r\n            var width = Math.max(xExtent[0], xExtent[1]) - x;\r\n            var height = Math.max(yExtent[0], yExtent[1]) - y;\r\n            return new BoundingRect(x, y, width, height);\r\n        };\r\n        return Cartesian2D;\r\n    }(Cartesian));\n\n    var Axis2D = (function (_super) {\r\n        __extends(Axis2D, _super);\r\n        function Axis2D(dim, scale, coordExtent, axisType, position) {\r\n            var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n            _this.index = 0;\r\n            _this.type = axisType || 'value';\r\n            _this.position = position || 'bottom';\r\n            return _this;\r\n        }\r\n        Axis2D.prototype.isHorizontal = function () {\r\n            var position = this.position;\r\n            return position === 'top' || position === 'bottom';\r\n        };\r\n        Axis2D.prototype.getGlobalExtent = function (asc) {\r\n            var ret = this.getExtent();\r\n            ret[0] = this.toGlobalCoord(ret[0]);\r\n            ret[1] = this.toGlobalCoord(ret[1]);\r\n            asc && ret[0] > ret[1] && ret.reverse();\r\n            return ret;\r\n        };\r\n        Axis2D.prototype.pointToData = function (point, clamp) {\r\n            return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\r\n        };\r\n        Axis2D.prototype.setCategorySortInfo = function (info) {\r\n            if (this.type !== 'category') {\r\n                return false;\r\n            }\r\n            this.model.option.categorySortInfo = info;\r\n            this.scale.setCategorySortInfo(info);\r\n        };\r\n        return Axis2D;\r\n    }(Axis));\n\n    var Grid = (function () {\r\n        function Grid(gridModel, ecModel, api) {\r\n            this.type = 'grid';\r\n            this._coordsMap = {};\r\n            this._coordsList = [];\r\n            this._axesMap = {};\r\n            this._axesList = [];\r\n            this.axisPointerEnabled = true;\r\n            this.dimensions = cartesian2DDimensions;\r\n            this._initCartesian(gridModel, ecModel, api);\r\n            this.model = gridModel;\r\n        }\r\n        Grid.prototype.getRect = function () {\r\n            return this._rect;\r\n        };\r\n        Grid.prototype.update = function (ecModel, api) {\r\n            var axesMap = this._axesMap;\r\n            this._updateScale(ecModel, this.model);\r\n            each(axesMap.x, function (xAxis) {\r\n                niceScaleExtent(xAxis.scale, xAxis.model);\r\n            });\r\n            each(axesMap.y, function (yAxis) {\r\n                niceScaleExtent(yAxis.scale, yAxis.model);\r\n            });\r\n            var onZeroRecords = {};\r\n            each(axesMap.x, function (xAxis) {\r\n                fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\r\n            });\r\n            each(axesMap.y, function (yAxis) {\r\n                fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\r\n            });\r\n            this.resize(this.model, api);\r\n        };\r\n        Grid.prototype.resize = function (gridModel, api, ignoreContainLabel) {\r\n            var boxLayoutParams = gridModel.getBoxLayoutParams();\r\n            var isContainLabel = !ignoreContainLabel && gridModel.get('containLabel');\r\n            var gridRect = getLayoutRect(boxLayoutParams, {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n            this._rect = gridRect;\r\n            var axesList = this._axesList;\r\n            adjustAxes();\r\n            if (isContainLabel) {\r\n                each(axesList, function (axis) {\r\n                    if (!axis.model.get(['axisLabel', 'inside'])) {\r\n                        var labelUnionRect = estimateLabelUnionRect(axis);\r\n                        if (labelUnionRect) {\r\n                            var dim = axis.isHorizontal() ? 'height' : 'width';\r\n                            var margin = axis.model.get(['axisLabel', 'margin']);\r\n                            gridRect[dim] -= labelUnionRect[dim] + margin;\r\n                            if (axis.position === 'top') {\r\n                                gridRect.y += labelUnionRect.height + margin;\r\n                            }\r\n                            else if (axis.position === 'left') {\r\n                                gridRect.x += labelUnionRect.width + margin;\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n                adjustAxes();\r\n            }\r\n            each(this._coordsList, function (coord) {\r\n                coord.calcAffineTransform();\r\n            });\r\n            function adjustAxes() {\r\n                each(axesList, function (axis) {\r\n                    var isHorizontal = axis.isHorizontal();\r\n                    var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\r\n                    var idx = axis.inverse ? 1 : 0;\r\n                    axis.setExtent(extent[idx], extent[1 - idx]);\r\n                    updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\r\n                });\r\n            }\r\n        };\r\n        Grid.prototype.getAxis = function (dim, axisIndex) {\r\n            var axesMapOnDim = this._axesMap[dim];\r\n            if (axesMapOnDim != null) {\r\n                return axesMapOnDim[axisIndex || 0];\r\n            }\r\n        };\r\n        Grid.prototype.getAxes = function () {\r\n            return this._axesList.slice();\r\n        };\r\n        Grid.prototype.getCartesian = function (xAxisIndex, yAxisIndex) {\r\n            if (xAxisIndex != null && yAxisIndex != null) {\r\n                var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n                return this._coordsMap[key];\r\n            }\r\n            if (isObject(xAxisIndex)) {\r\n                yAxisIndex = xAxisIndex.yAxisIndex;\r\n                xAxisIndex = xAxisIndex.xAxisIndex;\r\n            }\r\n            for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\r\n                if (coordList[i].getAxis('x').index === xAxisIndex\r\n                    || coordList[i].getAxis('y').index === yAxisIndex) {\r\n                    return coordList[i];\r\n                }\r\n            }\r\n        };\r\n        Grid.prototype.getCartesians = function () {\r\n            return this._coordsList.slice();\r\n        };\r\n        Grid.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var target = this._findConvertTarget(finder);\r\n            return target.cartesian\r\n                ? target.cartesian.dataToPoint(value)\r\n                : target.axis\r\n                    ? target.axis.toGlobalCoord(target.axis.dataToCoord(value))\r\n                    : null;\r\n        };\r\n        Grid.prototype.convertFromPixel = function (ecModel, finder, value) {\r\n            var target = this._findConvertTarget(finder);\r\n            return target.cartesian\r\n                ? target.cartesian.pointToData(value)\r\n                : target.axis\r\n                    ? target.axis.coordToData(target.axis.toLocalCoord(value))\r\n                    : null;\r\n        };\r\n        Grid.prototype._findConvertTarget = function (finder) {\r\n            var seriesModel = finder.seriesModel;\r\n            var xAxisModel = finder.xAxisModel\r\n                || (seriesModel && seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0]);\r\n            var yAxisModel = finder.yAxisModel\r\n                || (seriesModel && seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0]);\r\n            var gridModel = finder.gridModel;\r\n            var coordsList = this._coordsList;\r\n            var cartesian;\r\n            var axis;\r\n            if (seriesModel) {\r\n                cartesian = seriesModel.coordinateSystem;\r\n                indexOf(coordsList, cartesian) < 0 && (cartesian = null);\r\n            }\r\n            else if (xAxisModel && yAxisModel) {\r\n                cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n            }\r\n            else if (xAxisModel) {\r\n                axis = this.getAxis('x', xAxisModel.componentIndex);\r\n            }\r\n            else if (yAxisModel) {\r\n                axis = this.getAxis('y', yAxisModel.componentIndex);\r\n            }\r\n            else if (gridModel) {\r\n                var grid = gridModel.coordinateSystem;\r\n                if (grid === this) {\r\n                    cartesian = this._coordsList[0];\r\n                }\r\n            }\r\n            return { cartesian: cartesian, axis: axis };\r\n        };\r\n        Grid.prototype.containPoint = function (point) {\r\n            var coord = this._coordsList[0];\r\n            if (coord) {\r\n                return coord.containPoint(point);\r\n            }\r\n        };\r\n        Grid.prototype._initCartesian = function (gridModel, ecModel, api) {\r\n            var _this = this;\r\n            var grid = this;\r\n            var axisPositionUsed = {\r\n                left: false,\r\n                right: false,\r\n                top: false,\r\n                bottom: false\r\n            };\r\n            var axesMap = {\r\n                x: {},\r\n                y: {}\r\n            };\r\n            var axesCount = {\r\n                x: 0,\r\n                y: 0\r\n            };\r\n            ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\r\n            ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\r\n            if (!axesCount.x || !axesCount.y) {\r\n                this._axesMap = {};\r\n                this._axesList = [];\r\n                return;\r\n            }\r\n            this._axesMap = axesMap;\r\n            each(axesMap.x, function (xAxis, xAxisIndex) {\r\n                each(axesMap.y, function (yAxis, yAxisIndex) {\r\n                    var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n                    var cartesian = new Cartesian2D(key);\r\n                    cartesian.master = _this;\r\n                    cartesian.model = gridModel;\r\n                    _this._coordsMap[key] = cartesian;\r\n                    _this._coordsList.push(cartesian);\r\n                    cartesian.addAxis(xAxis);\r\n                    cartesian.addAxis(yAxis);\r\n                });\r\n            });\r\n            function createAxisCreator(dimName) {\r\n                return function (axisModel, idx) {\r\n                    if (!isAxisUsedInTheGrid(axisModel, gridModel)) {\r\n                        return;\r\n                    }\r\n                    var axisPosition = axisModel.get('position');\r\n                    if (dimName === 'x') {\r\n                        if (axisPosition !== 'top' && axisPosition !== 'bottom') {\r\n                            axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (axisPosition !== 'left' && axisPosition !== 'right') {\r\n                            axisPosition = axisPositionUsed.left ? 'right' : 'left';\r\n                        }\r\n                    }\r\n                    axisPositionUsed[axisPosition] = true;\r\n                    var axis = new Axis2D(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\r\n                    var isCategory = axis.type === 'category';\r\n                    axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n                    axis.inverse = axisModel.get('inverse');\r\n                    axisModel.axis = axis;\r\n                    axis.model = axisModel;\r\n                    axis.grid = grid;\r\n                    axis.index = idx;\r\n                    grid._axesList.push(axis);\r\n                    axesMap[dimName][idx] = axis;\r\n                    axesCount[dimName]++;\r\n                };\r\n            }\r\n        };\r\n        Grid.prototype._updateScale = function (ecModel, gridModel) {\r\n            each(this._axesList, function (axis) {\r\n                axis.scale.setExtent(Infinity, -Infinity);\r\n                if (axis.type === 'category') {\r\n                    var categorySortInfo = axis.model.get('categorySortInfo');\r\n                    axis.scale.setCategorySortInfo(categorySortInfo);\r\n                }\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (isCartesian2DSeries(seriesModel)) {\r\n                    var axesModelMap = findAxisModels(seriesModel);\r\n                    var xAxisModel = axesModelMap.xAxisModel;\r\n                    var yAxisModel = axesModelMap.yAxisModel;\r\n                    if (!isAxisUsedInTheGrid(xAxisModel, gridModel)\r\n                        || !isAxisUsedInTheGrid(yAxisModel, gridModel)) {\r\n                        return;\r\n                    }\r\n                    var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n                    var data = seriesModel.getData();\r\n                    var xAxis = cartesian.getAxis('x');\r\n                    var yAxis = cartesian.getAxis('y');\r\n                    if (data.type === 'list') {\r\n                        unionExtent(data, xAxis);\r\n                        unionExtent(data, yAxis);\r\n                    }\r\n                }\r\n            }, this);\r\n            function unionExtent(data, axis) {\r\n                each(getDataDimensionsOnAxis(data, axis.dim), function (dim) {\r\n                    axis.scale.unionExtentFromData(data, dim);\r\n                });\r\n            }\r\n        };\r\n        Grid.prototype.getTooltipAxes = function (dim) {\r\n            var baseAxes = [];\r\n            var otherAxes = [];\r\n            each(this.getCartesians(), function (cartesian) {\r\n                var baseAxis = (dim != null && dim !== 'auto')\r\n                    ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\r\n                var otherAxis = cartesian.getOtherAxis(baseAxis);\r\n                indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\r\n                indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\r\n            });\r\n            return { baseAxes: baseAxes, otherAxes: otherAxes };\r\n        };\r\n        Grid.create = function (ecModel, api) {\r\n            var grids = [];\r\n            ecModel.eachComponent('grid', function (gridModel, idx) {\r\n                var grid = new Grid(gridModel, ecModel, api);\r\n                grid.name = 'grid_' + idx;\r\n                grid.resize(gridModel, api, true);\r\n                gridModel.coordinateSystem = grid;\r\n                grids.push(grid);\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!isCartesian2DSeries(seriesModel)) {\r\n                    return;\r\n                }\r\n                var axesModelMap = findAxisModels(seriesModel);\r\n                var xAxisModel = axesModelMap.xAxisModel;\r\n                var yAxisModel = axesModelMap.yAxisModel;\r\n                var gridModel = xAxisModel.getCoordSysModel();\r\n                if (__DEV__) {\r\n                    if (!gridModel) {\r\n                        throw new Error('Grid \"' + retrieve3(xAxisModel.get('gridIndex'), xAxisModel.get('gridId'), 0) + '\" not found');\r\n                    }\r\n                    if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) {\r\n                        throw new Error('xAxis and yAxis must use the same grid');\r\n                    }\r\n                }\r\n                var grid = gridModel.coordinateSystem;\r\n                seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n            });\r\n            return grids;\r\n        };\r\n        Grid.dimensions = cartesian2DDimensions;\r\n        return Grid;\r\n    }());\r\n    function isAxisUsedInTheGrid(axisModel, gridModel) {\r\n        return axisModel.getCoordSysModel() === gridModel;\r\n    }\r\n    function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\r\n        axis.getAxesOnZeroOf = function () {\r\n            return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\r\n        };\r\n        var otherAxes = axesMap[otherAxisDim];\r\n        var otherAxisOnZeroOf;\r\n        var axisModel = axis.model;\r\n        var onZero = axisModel.get(['axisLine', 'onZero']);\r\n        var onZeroAxisIndex = axisModel.get(['axisLine', 'onZeroAxisIndex']);\r\n        if (!onZero) {\r\n            return;\r\n        }\r\n        if (onZeroAxisIndex != null) {\r\n            if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\r\n                otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\r\n            }\r\n        }\r\n        else {\r\n            for (var idx in otherAxes) {\r\n                if (otherAxes.hasOwnProperty(idx)\r\n                    && canOnZeroToAxis(otherAxes[idx])\r\n                    && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\r\n                    otherAxisOnZeroOf = otherAxes[idx];\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        if (otherAxisOnZeroOf) {\r\n            onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\r\n        }\r\n        function getOnZeroRecordKey(axis) {\r\n            return axis.dim + '_' + axis.index;\r\n        }\r\n    }\r\n    function canOnZeroToAxis(axis) {\r\n        return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\r\n    }\r\n    function updateAxisTransform(axis, coordBase) {\r\n        var axisExtent = axis.getExtent();\r\n        var axisExtentSum = axisExtent[0] + axisExtent[1];\r\n        axis.toGlobalCoord = axis.dim === 'x'\r\n            ? function (coord) {\r\n                return coord + coordBase;\r\n            }\r\n            : function (coord) {\r\n                return axisExtentSum - coord + coordBase;\r\n            };\r\n        axis.toLocalCoord = axis.dim === 'x'\r\n            ? function (coord) {\r\n                return coord - coordBase;\r\n            }\r\n            : function (coord) {\r\n                return axisExtentSum - coord + coordBase;\r\n            };\r\n    }\r\n    CoordinateSystemManager.register('cartesian2d', Grid);\n\n    var BaseBarSeriesModel = (function (_super) {\r\n        __extends(BaseBarSeriesModel, _super);\r\n        function BaseBarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BaseBarSeriesModel.type;\r\n            return _this;\r\n        }\r\n        BaseBarSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, { useEncodeDefaulter: true });\r\n        };\r\n        BaseBarSeriesModel.prototype.getMarkerPosition = function (value) {\r\n            var coordSys = this.coordinateSystem;\r\n            if (coordSys) {\r\n                var pt = coordSys.dataToPoint(coordSys.clampData(value));\r\n                var data = this.getData();\r\n                var offset = data.getLayout('offset');\r\n                var size = data.getLayout('size');\r\n                var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\r\n                pt[offsetIndex] += offset + size / 2;\r\n                return pt;\r\n            }\r\n            return [NaN, NaN];\r\n        };\r\n        BaseBarSeriesModel.type = 'series.__base_bar__';\r\n        BaseBarSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            barMinHeight: 0,\r\n            barMinAngle: 0,\r\n            large: false,\r\n            largeThreshold: 400,\r\n            progressive: 3e3,\r\n            progressiveChunkMode: 'mod'\r\n        };\r\n        return BaseBarSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(BaseBarSeriesModel);\n\n    var BarSeriesModel = (function (_super) {\r\n        __extends(BarSeriesModel, _super);\r\n        function BarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BarSeriesModel.type;\r\n            return _this;\r\n        }\r\n        BarSeriesModel.prototype.getProgressive = function () {\r\n            return this.get('large')\r\n                ? this.get('progressive')\r\n                : false;\r\n        };\r\n        BarSeriesModel.prototype.getProgressiveThreshold = function () {\r\n            var progressiveThreshold = this.get('progressiveThreshold');\r\n            var largeThreshold = this.get('largeThreshold');\r\n            if (largeThreshold > progressiveThreshold) {\r\n                progressiveThreshold = largeThreshold;\r\n            }\r\n            return progressiveThreshold;\r\n        };\r\n        BarSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n            return selectors.rect(data.getItemLayout(dataIndex));\r\n        };\r\n        BarSeriesModel.type = 'series.bar';\r\n        BarSeriesModel.dependencies = ['grid', 'polar'];\r\n        BarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\r\n            clip: true,\r\n            roundCap: false,\r\n            showBackground: false,\r\n            backgroundStyle: {\r\n                color: 'rgba(180, 180, 180, 0.2)',\r\n                borderColor: null,\r\n                borderWidth: 0,\r\n                borderType: 'solid',\r\n                borderRadius: 0,\r\n                shadowBlur: 0,\r\n                shadowColor: null,\r\n                shadowOffsetX: 0,\r\n                shadowOffsetY: 0,\r\n                opacity: 1\r\n            },\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            },\r\n            realtimeSort: false\r\n        });\r\n        return BarSeriesModel;\r\n    }(BaseBarSeriesModel));\r\n    SeriesModel.registerClass(BarSeriesModel);\n\n    var SausageShape = (function () {\r\n        function SausageShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r0 = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return SausageShape;\r\n    }());\r\n    var SausagePath = (function (_super) {\r\n        __extends(SausagePath, _super);\r\n        function SausagePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'sausage';\r\n            return _this;\r\n        }\r\n        SausagePath.prototype.getDefaultShape = function () {\r\n            return new SausageShape();\r\n        };\r\n        SausagePath.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r0 = Math.max(shape.r0 || 0, 0);\r\n            var r = Math.max(shape.r, 0);\r\n            var dr = (r - r0) * 0.5;\r\n            var rCenter = r0 + dr;\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitStartX = Math.cos(startAngle);\r\n            var unitStartY = Math.sin(startAngle);\r\n            var unitEndX = Math.cos(endAngle);\r\n            var unitEndY = Math.sin(endAngle);\r\n            var lessThanCircle = clockwise\r\n                ? endAngle - startAngle < Math.PI * 2\r\n                : startAngle - endAngle < Math.PI * 2;\r\n            if (lessThanCircle) {\r\n                ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\r\n                ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\r\n            }\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n            ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\r\n            ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\r\n            if (r0 !== 0) {\r\n                ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\r\n                ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        return SausagePath;\r\n    }(Path));\n\n    var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth'];\r\n    var BAR_BORDER_RADIUS_QUERY = ['itemStyle', 'borderRadius'];\r\n    var _eventPos = [0, 0];\r\n    var mathMax$6 = Math.max;\r\n    var mathMin$6 = Math.min;\r\n    function getClipArea(coord, data) {\r\n        var coordSysClipArea = coord.getArea && coord.getArea();\r\n        if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n            var baseAxis = coord.getBaseAxis();\r\n            if (baseAxis.type !== 'category' || !baseAxis.onBand) {\r\n                var expandWidth = data.getLayout('bandWidth');\r\n                if (baseAxis.isHorizontal()) {\r\n                    coordSysClipArea.x -= expandWidth;\r\n                    coordSysClipArea.width += expandWidth * 2;\r\n                }\r\n                else {\r\n                    coordSysClipArea.y -= expandWidth;\r\n                    coordSysClipArea.height += expandWidth * 2;\r\n                }\r\n            }\r\n        }\r\n        return coordSysClipArea;\r\n    }\r\n    var BarView = (function (_super) {\r\n        __extends(BarView, _super);\r\n        function BarView() {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = BarView.type;\r\n            _this._isFirstFrame = true;\r\n            return _this;\r\n        }\r\n        BarView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            this._model = seriesModel;\r\n            this.removeOnRenderedListener(api);\r\n            this._updateDrawMode(seriesModel);\r\n            var coordinateSystemType = seriesModel.get('coordinateSystem');\r\n            if (coordinateSystemType === 'cartesian2d'\r\n                || coordinateSystemType === 'polar') {\r\n                this._isLargeDraw\r\n                    ? this._renderLarge(seriesModel, ecModel, api)\r\n                    : this._renderNormal(seriesModel, ecModel, api, payload);\r\n            }\r\n            else if (__DEV__) {\r\n                console.warn('Only cartesian2d and polar supported for bar.');\r\n            }\r\n        };\r\n        BarView.prototype.incrementalPrepareRender = function (seriesModel) {\r\n            this._clear();\r\n            this._updateDrawMode(seriesModel);\r\n            this._updateLargeClip(seriesModel);\r\n        };\r\n        BarView.prototype.incrementalRender = function (params, seriesModel) {\r\n            this._incrementalRenderLarge(params, seriesModel);\r\n        };\r\n        BarView.prototype._updateDrawMode = function (seriesModel) {\r\n            var isLargeDraw = seriesModel.pipelineContext.large;\r\n            if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\r\n                this._isLargeDraw = isLargeDraw;\r\n                this._clear();\r\n            }\r\n        };\r\n        BarView.prototype._renderNormal = function (seriesModel, ecModel, api, payload) {\r\n            var _this = this;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var coord = seriesModel.coordinateSystem;\r\n            var baseAxis = coord.getBaseAxis();\r\n            var isHorizontalOrRadial;\r\n            if (coord.type === 'cartesian2d') {\r\n                isHorizontalOrRadial = baseAxis.isHorizontal();\r\n            }\r\n            else if (coord.type === 'polar') {\r\n                isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n            }\r\n            var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\r\n            var axis2DModel = baseAxis.model;\r\n            var realtimeSort = seriesModel.get('realtimeSort');\r\n            if (realtimeSort && data.count()) {\r\n                if (this._isFirstFrame) {\r\n                    this._initSort(data, isHorizontalOrRadial, baseAxis, api);\r\n                    this._isFirstFrame = false;\r\n                    return;\r\n                }\r\n                else {\r\n                    this._onRendered = function () {\r\n                        var orderMap = function (idx) {\r\n                            var el = data.getItemGraphicEl(idx);\r\n                            if (el) {\r\n                                var shape = el.shape;\r\n                                return (isHorizontalOrRadial ? shape.y + shape.height : shape.x + shape.width) || 0;\r\n                            }\r\n                            else {\r\n                                return 0;\r\n                            }\r\n                        };\r\n                        _this._updateSort(data, orderMap, baseAxis, api);\r\n                    };\r\n                    api.getZr().on('rendered', this._onRendered);\r\n                }\r\n            }\r\n            var needsClip = seriesModel.get('clip', true) || realtimeSort;\r\n            var coordSysClipArea = getClipArea(coord, data);\r\n            group.removeClipPath();\r\n            var roundCap = seriesModel.get('roundCap', true);\r\n            var drawBackground = seriesModel.get('showBackground', true);\r\n            var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n            var barBorderRadius = backgroundModel.get('borderRadius') || 0;\r\n            var bgEls = [];\r\n            var oldBgEls = this._backgroundEls;\r\n            var isInitSort = payload && payload.isInitSort;\r\n            var isChangeOrder = payload && payload.type === 'changeAxisOrder';\r\n            function createBackground(dataIndex) {\r\n                var bgLayout = getLayout[coord.type](data, dataIndex);\r\n                var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\r\n                bgEl.useStyle(backgroundModel.getItemStyle());\r\n                if (coord.type === 'cartesian2d') {\r\n                    bgEl.setShape('r', barBorderRadius);\r\n                }\r\n                bgEls[dataIndex] = bgEl;\r\n                return bgEl;\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (dataIndex) {\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var layout = getLayout[coord.type](data, dataIndex, itemModel);\r\n                if (drawBackground) {\r\n                    createBackground(dataIndex);\r\n                }\r\n                if (!data.hasValue(dataIndex)) {\r\n                    return;\r\n                }\r\n                var isClipped = false;\r\n                if (needsClip) {\r\n                    isClipped = clip[coord.type](coordSysClipArea, layout);\r\n                }\r\n                var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);\r\n                updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n                if (isInitSort) {\r\n                    el.attr({ shape: layout });\r\n                }\r\n                else if (realtimeSort) {\r\n                    updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, dataIndex, isHorizontalOrRadial, false, false);\r\n                }\r\n                else {\r\n                    initProps(el, { shape: layout }, seriesModel, dataIndex);\r\n                }\r\n                data.setItemGraphicEl(dataIndex, el);\r\n                group.add(el);\r\n                el.ignore = isClipped;\r\n            })\r\n                .update(function (newIndex, oldIndex) {\r\n                var itemModel = data.getItemModel(newIndex);\r\n                var layout = getLayout[coord.type](data, newIndex, itemModel);\r\n                if (drawBackground) {\r\n                    var bgEl = void 0;\r\n                    if (oldBgEls.length === 0) {\r\n                        bgEl = createBackground(oldIndex);\r\n                    }\r\n                    else {\r\n                        bgEl = oldBgEls[oldIndex];\r\n                        bgEl.useStyle(backgroundModel.getItemStyle());\r\n                        if (coord.type === 'cartesian2d') {\r\n                            bgEl.setShape('r', barBorderRadius);\r\n                        }\r\n                        bgEls[newIndex] = bgEl;\r\n                    }\r\n                    var bgLayout = getLayout[coord.type](data, newIndex);\r\n                    var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\r\n                    updateProps(bgEl, { shape: shape }, animationModel, newIndex);\r\n                }\r\n                var el = oldData.getItemGraphicEl(oldIndex);\r\n                if (!data.hasValue(newIndex)) {\r\n                    group.remove(el);\r\n                    el = null;\r\n                    return;\r\n                }\r\n                var isClipped = false;\r\n                if (needsClip) {\r\n                    isClipped = clip[coord.type](coordSysClipArea, layout);\r\n                    if (isClipped) {\r\n                        group.remove(el);\r\n                    }\r\n                }\r\n                if (!el) {\r\n                    el = elementCreator[coord.type](seriesModel, data, newIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);\r\n                }\r\n                if (!isChangeOrder) {\r\n                    updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n                }\r\n                if (isInitSort) {\r\n                    el.attr({ shape: layout });\r\n                }\r\n                else if (realtimeSort) {\r\n                    updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, newIndex, isHorizontalOrRadial, true, isChangeOrder);\r\n                }\r\n                else {\r\n                    updateProps(el, {\r\n                        shape: layout\r\n                    }, seriesModel, newIndex, null);\r\n                }\r\n                data.setItemGraphicEl(newIndex, el);\r\n                el.ignore = isClipped;\r\n                group.add(el);\r\n            })\r\n                .remove(function (dataIndex) {\r\n                var el = oldData.getItemGraphicEl(dataIndex);\r\n                el && removeElementWithFadeOut(el, seriesModel, dataIndex);\r\n            })\r\n                .execute();\r\n            var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\r\n            bgGroup.removeAll();\r\n            for (var i = 0; i < bgEls.length; ++i) {\r\n                bgGroup.add(bgEls[i]);\r\n            }\r\n            group.add(bgGroup);\r\n            this._backgroundEls = bgEls;\r\n            this._data = data;\r\n        };\r\n        BarView.prototype._renderLarge = function (seriesModel, ecModel, api) {\r\n            this._clear();\r\n            createLarge(seriesModel, this.group);\r\n            this._updateLargeClip(seriesModel);\r\n        };\r\n        BarView.prototype._incrementalRenderLarge = function (params, seriesModel) {\r\n            this._removeBackground();\r\n            createLarge(seriesModel, this.group, true);\r\n        };\r\n        BarView.prototype._updateLargeClip = function (seriesModel) {\r\n            var clipPath = seriesModel.get('clip', true)\r\n                ? createClipPath(seriesModel.coordinateSystem, false, seriesModel)\r\n                : null;\r\n            if (clipPath) {\r\n                this.group.setClipPath(clipPath);\r\n            }\r\n            else {\r\n                this.group.removeClipPath();\r\n            }\r\n        };\r\n        BarView.prototype._dataSort = function (data, idxMap) {\r\n            var info = [];\r\n            data.each(function (idx) {\r\n                info.push({\r\n                    mappedValue: idxMap(idx),\r\n                    ordinalNumber: idx,\r\n                    beforeSortIndex: null\r\n                });\r\n            });\r\n            info.sort(function (a, b) {\r\n                return b.mappedValue - a.mappedValue;\r\n            });\r\n            for (var i = 0; i < info.length; ++i) {\r\n                info[info[i].ordinalNumber].beforeSortIndex = i;\r\n            }\r\n            return map(info, function (item) {\r\n                return {\r\n                    ordinalNumber: item.ordinalNumber,\r\n                    beforeSortIndex: item.beforeSortIndex\r\n                };\r\n            });\r\n        };\r\n        BarView.prototype._isDataOrderChanged = function (data, orderMap, oldOrder) {\r\n            var oldCount = oldOrder ? oldOrder.length : 0;\r\n            if (oldCount !== data.count()) {\r\n                return true;\r\n            }\r\n            var lastValue = Number.MAX_VALUE;\r\n            for (var i = 0; i < oldOrder.length; ++i) {\r\n                var value = orderMap(oldOrder[i].ordinalNumber);\r\n                if (value > lastValue) {\r\n                    return true;\r\n                }\r\n                lastValue = value;\r\n            }\r\n            return false;\r\n        };\r\n        BarView.prototype._updateSort = function (data, orderMap, baseAxis, api) {\r\n            var oldOrder = baseAxis.scale.getCategorySortInfo();\r\n            var isOrderChanged = this._isDataOrderChanged(data, orderMap, oldOrder);\r\n            if (isOrderChanged) {\r\n                var newOrder = this._dataSort(data, orderMap);\r\n                var extent = baseAxis.scale.getExtent();\r\n                for (var i = extent[0]; i < extent[1]; ++i) {\r\n                    if (!oldOrder[i] || oldOrder[i].ordinalNumber !== newOrder[i].ordinalNumber) {\r\n                        this.removeOnRenderedListener(api);\r\n                        var action = {\r\n                            type: 'changeAxisOrder',\r\n                            componentType: baseAxis.dim + 'Axis',\r\n                            axisId: baseAxis.index,\r\n                            sortInfo: newOrder\r\n                        };\r\n                        api.dispatchAction(action);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        BarView.prototype._initSort = function (data, isHorizontal, baseAxis, api) {\r\n            var action = {\r\n                type: 'changeAxisOrder',\r\n                componentType: baseAxis.dim + 'Axis',\r\n                isInitSort: true,\r\n                axisId: baseAxis.index,\r\n                sortInfo: this._dataSort(data, function (idx) { return parseFloat(data.get(isHorizontal ? 'y' : 'x', idx)) || 0; })\r\n            };\r\n            api.dispatchAction(action);\r\n        };\r\n        BarView.prototype.remove = function (ecModel, api) {\r\n            this._clear(this._model);\r\n            this.removeOnRenderedListener(api);\r\n        };\r\n        BarView.prototype.dispose = function (ecModel, api) {\r\n            this.removeOnRenderedListener(api);\r\n        };\r\n        BarView.prototype.removeOnRenderedListener = function (api) {\r\n            if (this._onRendered) {\r\n                api.getZr().off('rendered', this._onRendered);\r\n                this._onRendered = null;\r\n            }\r\n        };\r\n        BarView.prototype._clear = function (model) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {\r\n                this._removeBackground();\r\n                this._backgroundEls = [];\r\n                data.eachItemGraphicEl(function (el) {\r\n                    removeElementWithFadeOut(el, model, getECData(el).dataIndex);\r\n                });\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n            this._data = null;\r\n            this._isFirstFrame = true;\r\n        };\r\n        BarView.prototype._removeBackground = function () {\r\n            this.group.remove(this._backgroundGroup);\r\n            this._backgroundGroup = null;\r\n        };\r\n        BarView.type = 'bar';\r\n        return BarView;\r\n    }(ChartView));\r\n    var clip = {\r\n        cartesian2d: function (coordSysBoundingRect, layout) {\r\n            var signWidth = layout.width < 0 ? -1 : 1;\r\n            var signHeight = layout.height < 0 ? -1 : 1;\r\n            if (signWidth < 0) {\r\n                layout.x += layout.width;\r\n                layout.width = -layout.width;\r\n            }\r\n            if (signHeight < 0) {\r\n                layout.y += layout.height;\r\n                layout.height = -layout.height;\r\n            }\r\n            var x = mathMax$6(layout.x, coordSysBoundingRect.x);\r\n            var x2 = mathMin$6(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\r\n            var y = mathMax$6(layout.y, coordSysBoundingRect.y);\r\n            var y2 = mathMin$6(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\r\n            layout.x = x;\r\n            layout.y = y;\r\n            layout.width = x2 - x;\r\n            layout.height = y2 - y;\r\n            var clipped = layout.width < 0 || layout.height < 0;\r\n            if (signWidth < 0) {\r\n                layout.x += layout.width;\r\n                layout.width = -layout.width;\r\n            }\r\n            if (signHeight < 0) {\r\n                layout.y += layout.height;\r\n                layout.height = -layout.height;\r\n            }\r\n            return clipped;\r\n        },\r\n        polar: function (coordSysClipArea, layout) {\r\n            var signR = layout.r0 <= layout.r ? 1 : -1;\r\n            if (signR < 0) {\r\n                var tmp = layout.r;\r\n                layout.r = layout.r0;\r\n                layout.r0 = tmp;\r\n            }\r\n            var r = mathMin$6(layout.r, coordSysClipArea.r);\r\n            var r0 = mathMax$6(layout.r0, coordSysClipArea.r0);\r\n            layout.r = r;\r\n            layout.r0 = r0;\r\n            var clipped = r - r0 < 0;\r\n            if (signR < 0) {\r\n                var tmp = layout.r;\r\n                layout.r = layout.r0;\r\n                layout.r0 = tmp;\r\n            }\r\n            return clipped;\r\n        }\r\n    };\r\n    var elementCreator = {\r\n        cartesian2d: function (seriesModel, data, newIndex, layout, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {\r\n            var rect = new Rect({\r\n                shape: extend({}, layout),\r\n                z2: 1\r\n            });\r\n            rect.__dataIndex = newIndex;\r\n            rect.name = 'item';\r\n            if (animationModel) {\r\n                var rectShape = rect.shape;\r\n                var animateProperty = isHorizontal ? 'height' : 'width';\r\n                rectShape[animateProperty] = 0;\r\n            }\r\n            return rect;\r\n        },\r\n        polar: function (seriesModel, data, newIndex, layout, isRadial, animationModel, axisModel, isUpdate, roundCap) {\r\n            var clockwise = layout.startAngle < layout.endAngle;\r\n            var ShapeClass = (!isRadial && roundCap) ? SausagePath : Sector;\r\n            var sector = new ShapeClass({\r\n                shape: defaults({ clockwise: clockwise }, layout),\r\n                z2: 1\r\n            });\r\n            sector.name = 'item';\r\n            if (animationModel) {\r\n                var sectorShape = sector.shape;\r\n                var animateProperty = isRadial ? 'r' : 'endAngle';\r\n                var animateTarget = {};\r\n                sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\r\n                animateTarget[animateProperty] = layout[animateProperty];\r\n                (isUpdate ? updateProps : initProps)(sector, {\r\n                    shape: animateTarget\r\n                }, animationModel);\r\n            }\r\n            return sector;\r\n        }\r\n    };\r\n    function updateRealtimeAnimation(seriesModel, axisModel, animationModel, el, layout, newIndex, isHorizontal, isUpdate, isChangeOrder) {\r\n        if (animationModel || axisModel) {\r\n            var seriesTarget = void 0;\r\n            var axisTarget = void 0;\r\n            if (isHorizontal) {\r\n                axisTarget = {\r\n                    x: layout.x,\r\n                    width: layout.width\r\n                };\r\n                seriesTarget = {\r\n                    y: layout.y,\r\n                    height: layout.height\r\n                };\r\n            }\r\n            else {\r\n                axisTarget = {\r\n                    y: layout.y,\r\n                    height: layout.height\r\n                };\r\n                seriesTarget = {\r\n                    x: layout.x,\r\n                    width: layout.width\r\n                };\r\n            }\r\n            if (!isChangeOrder) {\r\n                (isUpdate ? updateProps : initProps)(el, {\r\n                    shape: seriesTarget\r\n                }, seriesModel, newIndex, null);\r\n            }\r\n            (isUpdate ? updateProps : initProps)(el, {\r\n                shape: axisTarget\r\n            }, axisModel, newIndex);\r\n        }\r\n    }\r\n    var getLayout = {\r\n        cartesian2d: function (data, dataIndex, itemModel) {\r\n            var layout = data.getItemLayout(dataIndex);\r\n            var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0;\r\n            var signX = layout.width > 0 ? 1 : -1;\r\n            var signY = layout.height > 0 ? 1 : -1;\r\n            return {\r\n                x: layout.x + signX * fixedLineWidth / 2,\r\n                y: layout.y + signY * fixedLineWidth / 2,\r\n                width: layout.width - signX * fixedLineWidth,\r\n                height: layout.height - signY * fixedLineWidth\r\n            };\r\n        },\r\n        polar: function (data, dataIndex, itemModel) {\r\n            var layout = data.getItemLayout(dataIndex);\r\n            return {\r\n                cx: layout.cx,\r\n                cy: layout.cy,\r\n                r0: layout.r0,\r\n                r: layout.r,\r\n                startAngle: layout.startAngle,\r\n                endAngle: layout.endAngle\r\n            };\r\n        }\r\n    };\r\n    function isZeroOnPolar(layout) {\r\n        return layout.startAngle != null\r\n            && layout.endAngle != null\r\n            && layout.startAngle === layout.endAngle;\r\n    }\r\n    function updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\r\n        var style = data.getItemVisual(dataIndex, 'style');\r\n        if (!isPolar) {\r\n            el.setShape('r', itemModel.get(BAR_BORDER_RADIUS_QUERY) || 0);\r\n        }\r\n        el.useStyle(style);\r\n        var cursorStyle = itemModel.getShallow('cursor');\r\n        cursorStyle && el.attr('cursor', cursorStyle);\r\n        if (!isPolar) {\r\n            var labelPositionOutside = isHorizontal\r\n                ? (layout.height > 0 ? 'bottom' : 'top')\r\n                : (layout.width > 0 ? 'left' : 'right');\r\n            var labelStatesModels = getLabelStatesModels(itemModel);\r\n            setLabelStyle(el, labelStatesModels, {\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: dataIndex,\r\n                defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\r\n                inheritColor: style.fill,\r\n                defaultOpacity: style.opacity,\r\n                defaultOutsidePosition: labelPositionOutside\r\n            });\r\n            var label = el.getTextContent();\r\n            setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function (value) { return getDefaultInterpolatedLabel(data, value); });\r\n        }\r\n        var emphasisModel = itemModel.getModel(['emphasis']);\r\n        enableHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        setStatesStylesFromModel(el, itemModel);\r\n        if (isZeroOnPolar(layout)) {\r\n            el.style.fill = 'none';\r\n            el.style.stroke = 'none';\r\n            each(el.states, function (state) {\r\n                if (state.style) {\r\n                    state.style.fill = state.style.stroke = 'none';\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function getLineWidth(itemModel, rawLayout) {\r\n        var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\r\n        var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\r\n        var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\r\n        return Math.min(lineWidth, width, height);\r\n    }\r\n    var LagePathShape = (function () {\r\n        function LagePathShape() {\r\n        }\r\n        return LagePathShape;\r\n    }());\r\n    var LargePath = (function (_super) {\r\n        __extends(LargePath, _super);\r\n        function LargePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'largeBar';\r\n            return _this;\r\n        }\r\n        LargePath.prototype.getDefaultShape = function () {\r\n            return new LagePathShape();\r\n        };\r\n        LargePath.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var startPoint = this.__startPoint;\r\n            var baseDimIdx = this.__baseDimIdx;\r\n            for (var i = 0; i < points.length; i += 2) {\r\n                startPoint[baseDimIdx] = points[i + baseDimIdx];\r\n                ctx.moveTo(startPoint[0], startPoint[1]);\r\n                ctx.lineTo(points[i], points[i + 1]);\r\n            }\r\n        };\r\n        return LargePath;\r\n    }(Path));\r\n    function createLarge(seriesModel, group, incremental) {\r\n        var data = seriesModel.getData();\r\n        var startPoint = [];\r\n        var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\r\n        startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\r\n        var largeDataIndices = data.getLayout('largeDataIndices');\r\n        var barWidth = data.getLayout('barWidth');\r\n        var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n        var drawBackground = seriesModel.get('showBackground', true);\r\n        if (drawBackground) {\r\n            var points = data.getLayout('largeBackgroundPoints');\r\n            var backgroundStartPoint = [];\r\n            backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\r\n            var bgEl = new LargePath({\r\n                shape: { points: points },\r\n                incremental: !!incremental,\r\n                silent: true,\r\n                z2: 0\r\n            });\r\n            bgEl.__startPoint = backgroundStartPoint;\r\n            bgEl.__baseDimIdx = baseDimIdx;\r\n            bgEl.__largeDataIndices = largeDataIndices;\r\n            bgEl.__barWidth = barWidth;\r\n            setLargeBackgroundStyle(bgEl, backgroundModel, data);\r\n            group.add(bgEl);\r\n        }\r\n        var el = new LargePath({\r\n            shape: { points: data.getLayout('largePoints') },\r\n            incremental: !!incremental\r\n        });\r\n        el.__startPoint = startPoint;\r\n        el.__baseDimIdx = baseDimIdx;\r\n        el.__largeDataIndices = largeDataIndices;\r\n        el.__barWidth = barWidth;\r\n        group.add(el);\r\n        setLargeStyle(el, seriesModel, data);\r\n        getECData(el).seriesIndex = seriesModel.seriesIndex;\r\n        if (!seriesModel.get('silent')) {\r\n            el.on('mousedown', largePathUpdateDataIndex);\r\n            el.on('mousemove', largePathUpdateDataIndex);\r\n        }\r\n    }\r\n    var largePathUpdateDataIndex = throttle(function (event) {\r\n        var largePath = this;\r\n        var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\r\n        getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;\r\n    }, 30, false);\r\n    function largePathFindDataIndex(largePath, x, y) {\r\n        var baseDimIdx = largePath.__baseDimIdx;\r\n        var valueDimIdx = 1 - baseDimIdx;\r\n        var points = largePath.shape.points;\r\n        var largeDataIndices = largePath.__largeDataIndices;\r\n        var barWidthHalf = Math.abs(largePath.__barWidth / 2);\r\n        var startValueVal = largePath.__startPoint[valueDimIdx];\r\n        _eventPos[0] = x;\r\n        _eventPos[1] = y;\r\n        var pointerBaseVal = _eventPos[baseDimIdx];\r\n        var pointerValueVal = _eventPos[1 - baseDimIdx];\r\n        var baseLowerBound = pointerBaseVal - barWidthHalf;\r\n        var baseUpperBound = pointerBaseVal + barWidthHalf;\r\n        for (var i = 0, len = points.length / 2; i < len; i++) {\r\n            var ii = i * 2;\r\n            var barBaseVal = points[ii + baseDimIdx];\r\n            var barValueVal = points[ii + valueDimIdx];\r\n            if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound\r\n                && (startValueVal <= barValueVal\r\n                    ? (pointerValueVal >= startValueVal && pointerValueVal <= barValueVal)\r\n                    : (pointerValueVal >= barValueVal && pointerValueVal <= startValueVal))) {\r\n                return largeDataIndices[i];\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n    function setLargeStyle(el, seriesModel, data) {\r\n        var globalStyle = data.getVisual('style');\r\n        el.useStyle(extend({}, globalStyle));\r\n        el.style.fill = null;\r\n        el.style.stroke = globalStyle.fill;\r\n        el.style.lineWidth = data.getLayout('barWidth');\r\n    }\r\n    function setLargeBackgroundStyle(el, backgroundModel, data) {\r\n        var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\r\n        var itemStyle = backgroundModel.getItemStyle();\r\n        el.useStyle(itemStyle);\r\n        el.style.fill = null;\r\n        el.style.stroke = borderColor;\r\n        el.style.lineWidth = data.getLayout('barWidth');\r\n    }\r\n    function createBackgroundShape(isHorizontalOrRadial, layout, coord) {\r\n        if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n            var rectShape = layout;\r\n            var coordLayout = coord.getArea();\r\n            return {\r\n                x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,\r\n                y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,\r\n                width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,\r\n                height: isHorizontalOrRadial ? coordLayout.height : rectShape.height\r\n            };\r\n        }\r\n        else {\r\n            var coordLayout = coord.getArea();\r\n            var sectorShape = layout;\r\n            return {\r\n                cx: coordLayout.cx,\r\n                cy: coordLayout.cy,\r\n                r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,\r\n                r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,\r\n                startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,\r\n                endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2\r\n            };\r\n        }\r\n    }\r\n    function createBackgroundEl(coord, isHorizontalOrRadial, layout) {\r\n        var ElementClz = coord.type === 'polar' ? Sector : Rect;\r\n        return new ElementClz({\r\n            shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\r\n            silent: true,\r\n            z2: 0\r\n        });\r\n    }\r\n    ChartView.registerClass(BarView);\n\n    registerAction({\r\n        type: 'changeAxisOrder',\r\n        event: 'changeAxisOrder',\r\n        update: 'update'\r\n    }, function (payload, ecModel) {\r\n        var componentType = payload.componentType || 'series';\r\n        ecModel.eachComponent({ mainType: componentType, query: payload }, function (componentModel) {\r\n            if (payload.sortInfo) {\r\n                componentModel.axis.setCategorySortInfo(payload.sortInfo);\r\n            }\r\n        });\r\n    });\n\n    registerLayout(PRIORITY.VISUAL.LAYOUT, curry(layout, 'bar'));\r\n    registerLayout(PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\r\n    registerVisual({\r\n        seriesType: 'bar',\r\n        reset: function (seriesModel) {\r\n            seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n        }\r\n    });\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('bar'));\n\n    function createListSimply(seriesModel, opt, nameList) {\r\n        opt = isArray(opt) && { coordDimensions: opt } || extend({}, opt);\r\n        var source = seriesModel.getSource();\r\n        var dimensionsInfo = createDimensions(source, opt);\r\n        var list = new List(dimensionsInfo, seriesModel);\r\n        list.initData(source, nameList);\r\n        return list;\r\n    }\n\n    var LegendVisualProvider = (function () {\r\n        function LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\r\n            this._getDataWithEncodedVisual = getDataWithEncodedVisual;\r\n            this._getRawData = getRawData;\r\n        }\r\n        LegendVisualProvider.prototype.getAllNames = function () {\r\n            var rawData = this._getRawData();\r\n            return rawData.mapArray(rawData.getName);\r\n        };\r\n        LegendVisualProvider.prototype.containName = function (name) {\r\n            var rawData = this._getRawData();\r\n            return rawData.indexOfName(name) >= 0;\r\n        };\r\n        LegendVisualProvider.prototype.indexOfName = function (name) {\r\n            var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n            return dataWithEncodedVisual.indexOfName(name);\r\n        };\r\n        LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\r\n            var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n            return dataWithEncodedVisual.getItemVisual(dataIndex, key);\r\n        };\r\n        return LegendVisualProvider;\r\n    }());\n\n    var PieSeriesModel = (function (_super) {\r\n        __extends(PieSeriesModel, _super);\r\n        function PieSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.useColorPaletteOnData = true;\r\n            return _this;\r\n        }\r\n        PieSeriesModel.prototype.init = function (option) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n            this._defaultLabelLine(option);\r\n        };\r\n        PieSeriesModel.prototype.mergeOption = function () {\r\n            _super.prototype.mergeOption.apply(this, arguments);\r\n        };\r\n        PieSeriesModel.prototype.getInitialData = function () {\r\n            return createListSimply(this, {\r\n                coordDimensions: ['value'],\r\n                encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n            });\r\n        };\r\n        PieSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n            var data = this.getData();\r\n            var params = _super.prototype.getDataParams.call(this, dataIndex);\r\n            var valueList = [];\r\n            data.each(data.mapDimension('value'), function (value) {\r\n                valueList.push(value);\r\n            });\r\n            params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\r\n            params.$vars.push('percent');\r\n            return params;\r\n        };\r\n        PieSeriesModel.prototype._defaultLabelLine = function (option) {\r\n            defaultEmphasis(option, 'labelLine', ['show']);\r\n            var labelLineNormalOpt = option.labelLine;\r\n            var labelLineEmphasisOpt = option.emphasis.labelLine;\r\n            labelLineNormalOpt.show = labelLineNormalOpt.show\r\n                && option.label.show;\r\n            labelLineEmphasisOpt.show = labelLineEmphasisOpt.show\r\n                && option.emphasis.label.show;\r\n        };\r\n        PieSeriesModel.type = 'series.pie';\r\n        PieSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            center: ['50%', '50%'],\r\n            radius: [0, '75%'],\r\n            clockwise: true,\r\n            startAngle: 90,\r\n            minAngle: 0,\r\n            minShowLabelAngle: 0,\r\n            selectedOffset: 10,\r\n            percentPrecision: 2,\r\n            stillShowZeroSum: true,\r\n            left: 0,\r\n            top: 0,\r\n            right: 0,\r\n            bottom: 0,\r\n            width: null,\r\n            height: null,\r\n            label: {\r\n                rotate: 0,\r\n                show: true,\r\n                overflow: 'truncate',\r\n                position: 'outer',\r\n                alignTo: 'none',\r\n                edgeDistance: '25%',\r\n                bleedMargin: 10,\r\n                distanceToLabelLine: 5\r\n            },\r\n            labelLine: {\r\n                show: true,\r\n                length: 15,\r\n                length2: 15,\r\n                smooth: false,\r\n                minTurnAngle: 90,\r\n                maxSurfaceAngle: 90,\r\n                lineStyle: {\r\n                    width: 1,\r\n                    type: 'solid'\r\n                }\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 1\r\n            },\r\n            labelLayout: {\r\n                hideOverlap: true\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                scaleSize: 5\r\n            },\r\n            avoidLabelOverlap: true,\r\n            animationType: 'expansion',\r\n            animationDuration: 1000,\r\n            animationTypeUpdate: 'transition',\r\n            animationEasingUpdate: 'cubicInOut',\r\n            animationDurationUpdate: 500,\r\n            animationEasing: 'cubicInOut'\r\n        };\r\n        return PieSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(PieSeriesModel);\n\n    var RADIAN = Math.PI / 180;\r\n    function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\r\n        if (list.length < 2) {\r\n            return;\r\n        }\r\n        function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\r\n            var rB = semi.rB;\r\n            var rB2 = rB * rB;\r\n            for (var i = 0; i < semi.list.length; i++) {\r\n                var item = semi.list[i];\r\n                var dy = Math.abs(item.label.y - cy);\r\n                var rA = r + item.len;\r\n                var rA2 = rA * rA;\r\n                var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\r\n                item.label.x = cx + (dx + item.len2) * dir;\r\n            }\r\n        }\r\n        function recalculateX(items) {\r\n            var topSemi = { list: [], maxY: 0 };\r\n            var bottomSemi = { list: [], maxY: 0 };\r\n            for (var i = 0; i < items.length; i++) {\r\n                if (items[i].labelAlignTo !== 'none') {\r\n                    continue;\r\n                }\r\n                var item = items[i];\r\n                var semi = item.label.y > cy ? bottomSemi : topSemi;\r\n                var dy = Math.abs(item.label.y - cy);\r\n                if (dy > semi.maxY) {\r\n                    var dx = item.label.x - cx - item.len2 * dir;\r\n                    var rA = r + item.len;\r\n                    var rB = dx < rA\r\n                        ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA))\r\n                        : rA;\r\n                    semi.rB = rB;\r\n                    semi.maxY = dy;\r\n                }\r\n                semi.list.push(item);\r\n            }\r\n            recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\r\n            recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\r\n        }\r\n        var len = list.length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\r\n                var dx = list[i].label.x - farthestX;\r\n                list[i].linePoints[1][0] += dx;\r\n                list[i].label.x = farthestX;\r\n            }\r\n        }\r\n        if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\r\n            recalculateX(list);\r\n        }\r\n    }\r\n    function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\r\n        var leftList = [];\r\n        var rightList = [];\r\n        var leftmostX = Number.MAX_VALUE;\r\n        var rightmostX = -Number.MAX_VALUE;\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var label = labelLayoutList[i].label;\r\n            if (isPositionCenter(labelLayoutList[i])) {\r\n                continue;\r\n            }\r\n            if (label.x < cx) {\r\n                leftmostX = Math.min(leftmostX, label.x);\r\n                leftList.push(labelLayoutList[i]);\r\n            }\r\n            else {\r\n                rightmostX = Math.max(rightmostX, label.x);\r\n                rightList.push(labelLayoutList[i]);\r\n            }\r\n        }\r\n        adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\r\n        adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var layout = labelLayoutList[i];\r\n            var label = layout.label;\r\n            if (isPositionCenter(layout)) {\r\n                continue;\r\n            }\r\n            var linePoints = layout.linePoints;\r\n            if (linePoints) {\r\n                var isAlignToEdge = layout.labelAlignTo === 'edge';\r\n                var realTextWidth = layout.rect.width;\r\n                var targetTextWidth = void 0;\r\n                if (isAlignToEdge) {\r\n                    if (label.x < cx) {\r\n                        targetTextWidth = linePoints[2][0] - layout.labelDistance\r\n                            - viewLeft - layout.edgeDistance;\r\n                    }\r\n                    else {\r\n                        targetTextWidth = viewLeft + viewWidth - layout.edgeDistance\r\n                            - linePoints[2][0] - layout.labelDistance;\r\n                    }\r\n                }\r\n                else {\r\n                    if (label.x < cx) {\r\n                        targetTextWidth = label.x - viewLeft - layout.bleedMargin;\r\n                    }\r\n                    else {\r\n                        targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\r\n                    }\r\n                }\r\n                if (targetTextWidth < layout.rect.width) {\r\n                    layout.label.style.width = targetTextWidth;\r\n                    if (layout.labelAlignTo === 'edge') {\r\n                        realTextWidth = targetTextWidth;\r\n                    }\r\n                }\r\n                var dist = linePoints[1][0] - linePoints[2][0];\r\n                if (isAlignToEdge) {\r\n                    if (label.x < cx) {\r\n                        linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\r\n                    }\r\n                    else {\r\n                        linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance\r\n                            - realTextWidth - layout.labelDistance;\r\n                    }\r\n                }\r\n                else {\r\n                    if (label.x < cx) {\r\n                        linePoints[2][0] = label.x + layout.labelDistance;\r\n                    }\r\n                    else {\r\n                        linePoints[2][0] = label.x - layout.labelDistance;\r\n                    }\r\n                    linePoints[1][0] = linePoints[2][0] + dist;\r\n                }\r\n                linePoints[1][1] = linePoints[2][1] = label.y;\r\n            }\r\n        }\r\n    }\r\n    function isPositionCenter(sectorShape) {\r\n        return sectorShape.position === 'center';\r\n    }\r\n    function pieLabelLayout(seriesModel) {\r\n        var data = seriesModel.getData();\r\n        var labelLayoutList = [];\r\n        var cx;\r\n        var cy;\r\n        var hasLabelRotate = false;\r\n        var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\r\n        var viewRect = data.getLayout('viewRect');\r\n        var r = data.getLayout('r');\r\n        var viewWidth = viewRect.width;\r\n        var viewLeft = viewRect.x;\r\n        var viewTop = viewRect.y;\r\n        var viewHeight = viewRect.height;\r\n        function setNotShow(el) {\r\n            el.ignore = true;\r\n        }\r\n        function isLabelShown(label) {\r\n            if (!label.ignore) {\r\n                return true;\r\n            }\r\n            for (var key in label.states) {\r\n                if (label.states[key].ignore === false) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        }\r\n        data.each(function (idx) {\r\n            var sector = data.getItemGraphicEl(idx);\r\n            var sectorShape = sector.shape;\r\n            var label = sector.getTextContent();\r\n            var labelLine = sector.getTextGuideLine();\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelModel = itemModel.getModel('label');\r\n            var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\r\n            var labelDistance = labelModel.get('distanceToLabelLine');\r\n            var labelAlignTo = labelModel.get('alignTo');\r\n            var edgeDistance = parsePercent$2(labelModel.get('edgeDistance'), viewWidth);\r\n            var bleedMargin = labelModel.get('bleedMargin');\r\n            var labelLineModel = itemModel.getModel('labelLine');\r\n            var labelLineLen = labelLineModel.get('length');\r\n            labelLineLen = parsePercent$2(labelLineLen, viewWidth);\r\n            var labelLineLen2 = labelLineModel.get('length2');\r\n            labelLineLen2 = parsePercent$2(labelLineLen2, viewWidth);\r\n            if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\r\n                each(label.states, setNotShow);\r\n                label.ignore = true;\r\n                return;\r\n            }\r\n            if (!isLabelShown(label)) {\r\n                return;\r\n            }\r\n            var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\r\n            var nx = Math.cos(midAngle);\r\n            var ny = Math.sin(midAngle);\r\n            var textX;\r\n            var textY;\r\n            var linePoints;\r\n            var textAlign;\r\n            cx = sectorShape.cx;\r\n            cy = sectorShape.cy;\r\n            var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\r\n            if (labelPosition === 'center') {\r\n                textX = sectorShape.cx;\r\n                textY = sectorShape.cy;\r\n                textAlign = 'center';\r\n            }\r\n            else {\r\n                var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\r\n                var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\r\n                textX = x1 + nx * 3;\r\n                textY = y1 + ny * 3;\r\n                if (!isLabelInside) {\r\n                    var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\r\n                    var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\r\n                    var x3 = x2 + ((nx < 0 ? -1 : 1) * labelLineLen2);\r\n                    var y3 = y2;\r\n                    if (labelAlignTo === 'edge') {\r\n                        textX = nx < 0\r\n                            ? viewLeft + edgeDistance\r\n                            : viewLeft + viewWidth - edgeDistance;\r\n                    }\r\n                    else {\r\n                        textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\r\n                    }\r\n                    textY = y3;\r\n                    linePoints = [[x1, y1], [x2, y2], [x3, y3]];\r\n                }\r\n                textAlign = isLabelInside\r\n                    ? 'center'\r\n                    : (labelAlignTo === 'edge'\r\n                        ? (nx > 0 ? 'right' : 'left')\r\n                        : (nx > 0 ? 'left' : 'right'));\r\n            }\r\n            var labelRotate;\r\n            var rotate = labelModel.get('rotate');\r\n            if (typeof rotate === 'number') {\r\n                labelRotate = rotate * (Math.PI / 180);\r\n            }\r\n            else {\r\n                labelRotate = rotate\r\n                    ? (nx < 0 ? -midAngle + Math.PI : -midAngle)\r\n                    : 0;\r\n            }\r\n            hasLabelRotate = !!labelRotate;\r\n            label.x = textX;\r\n            label.y = textY;\r\n            label.rotation = labelRotate;\r\n            label.setStyle({\r\n                verticalAlign: 'middle'\r\n            });\r\n            if (!isLabelInside) {\r\n                var textRect = label.getBoundingRect().clone();\r\n                textRect.applyTransform(label.getComputedTransform());\r\n                var margin = (label.style.margin || 0) + 2.1;\r\n                textRect.y -= margin / 2;\r\n                textRect.height += margin;\r\n                labelLayoutList.push({\r\n                    label: label,\r\n                    labelLine: labelLine,\r\n                    position: labelPosition,\r\n                    len: labelLineLen,\r\n                    len2: labelLineLen2,\r\n                    minTurnAngle: labelLineModel.get('minTurnAngle'),\r\n                    maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\r\n                    surfaceNormal: new Point(nx, ny),\r\n                    linePoints: linePoints,\r\n                    textAlign: textAlign,\r\n                    labelDistance: labelDistance,\r\n                    labelAlignTo: labelAlignTo,\r\n                    edgeDistance: edgeDistance,\r\n                    bleedMargin: bleedMargin,\r\n                    rect: textRect\r\n                });\r\n            }\r\n            else {\r\n                label.setStyle({\r\n                    align: textAlign\r\n                });\r\n                var selectState = label.states.select;\r\n                if (selectState) {\r\n                    selectState.x += label.x;\r\n                    selectState.y += label.y;\r\n                }\r\n            }\r\n            sector.setTextConfig({\r\n                inside: isLabelInside\r\n            });\r\n        });\r\n        if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\r\n            avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\r\n        }\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var layout = labelLayoutList[i];\r\n            var label = layout.label;\r\n            var labelLine = layout.labelLine;\r\n            var notShowLabel = isNaN(label.x) || isNaN(label.y);\r\n            if (label) {\r\n                label.setStyle({\r\n                    align: layout.textAlign\r\n                });\r\n                if (notShowLabel) {\r\n                    each(label.states, setNotShow);\r\n                    label.ignore = true;\r\n                }\r\n                var selectState = label.states.select;\r\n                if (selectState) {\r\n                    selectState.x += label.x;\r\n                    selectState.y += label.y;\r\n                }\r\n            }\r\n            if (labelLine) {\r\n                var linePoints = layout.linePoints;\r\n                if (notShowLabel || !linePoints) {\r\n                    each(labelLine.states, setNotShow);\r\n                    labelLine.ignore = true;\r\n                }\r\n                else {\r\n                    limitTurnAngle(linePoints, layout.minTurnAngle);\r\n                    limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\r\n                    labelLine.setShape({ points: linePoints });\r\n                    label.__hostTarget.textGuideLineConfig = {\r\n                        anchor: new Point(linePoints[0][0], linePoints[0][1])\r\n                    };\r\n                }\r\n            }\r\n        }\r\n    }\n\n    function getSectorCornerRadius(model, shape) {\r\n        var cornerRadius = model.get('borderRadius');\r\n        if (cornerRadius == null) {\r\n            return null;\r\n        }\r\n        if (!isArray(cornerRadius)) {\r\n            cornerRadius = [cornerRadius, cornerRadius];\r\n        }\r\n        return {\r\n            innerCornerRadius: parsePercent(cornerRadius[0], shape.r0),\r\n            cornerRadius: parsePercent(cornerRadius[1], shape.r)\r\n        };\r\n    }\n\n    var PiePiece = (function (_super) {\r\n        __extends(PiePiece, _super);\r\n        function PiePiece(data, idx, startAngle) {\r\n            var _this = _super.call(this) || this;\r\n            _this.z2 = 2;\r\n            var polyline = new Polyline();\r\n            var text = new ZRText();\r\n            _this.setTextGuideLine(polyline);\r\n            _this.setTextContent(text);\r\n            _this.updateData(data, idx, startAngle, true);\r\n            return _this;\r\n        }\r\n        PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\r\n            var sector = this;\r\n            var seriesModel = data.hostModel;\r\n            var itemModel = data.getItemModel(idx);\r\n            var emphasisModel = itemModel.getModel('emphasis');\r\n            var layout = data.getItemLayout(idx);\r\n            var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout) || {}, layout);\r\n            if (firstCreate) {\r\n                sector.setShape(sectorShape);\r\n                var animationType = seriesModel.getShallow('animationType');\r\n                if (animationType === 'scale') {\r\n                    sector.shape.r = layout.r0;\r\n                    initProps(sector, {\r\n                        shape: {\r\n                            r: layout.r\r\n                        }\r\n                    }, seriesModel, idx);\r\n                }\r\n                else {\r\n                    if (startAngle != null) {\r\n                        sector.setShape({ startAngle: startAngle, endAngle: startAngle });\r\n                        initProps(sector, {\r\n                            shape: {\r\n                                startAngle: layout.startAngle,\r\n                                endAngle: layout.endAngle\r\n                            }\r\n                        }, seriesModel, idx);\r\n                    }\r\n                    else {\r\n                        sector.shape.endAngle = layout.startAngle;\r\n                        updateProps(sector, {\r\n                            shape: {\r\n                                endAngle: layout.endAngle\r\n                            }\r\n                        }, seriesModel, idx);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                updateProps(sector, {\r\n                    shape: sectorShape\r\n                }, seriesModel, idx);\r\n            }\r\n            sector.useStyle(data.getItemVisual(idx, 'style'));\r\n            setStatesStylesFromModel(sector, itemModel);\r\n            var midAngle = (layout.startAngle + layout.endAngle) / 2;\r\n            var offset = seriesModel.get('selectedOffset');\r\n            var dx = Math.cos(midAngle) * offset;\r\n            var dy = Math.sin(midAngle) * offset;\r\n            var cursorStyle = itemModel.getShallow('cursor');\r\n            cursorStyle && sector.attr('cursor', cursorStyle);\r\n            this._updateLabel(seriesModel, data, idx);\r\n            sector.ensureState('emphasis').shape = __assign({ r: layout.r + (emphasisModel.get('scale')\r\n                    ? (emphasisModel.get('scaleSize') || 0) : 0) }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\r\n            extend(sector.ensureState('select'), {\r\n                x: dx,\r\n                y: dy,\r\n                shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\r\n            });\r\n            extend(sector.ensureState('blur'), {\r\n                shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\r\n            });\r\n            var labelLine = sector.getTextGuideLine();\r\n            var labelText = sector.getTextContent();\r\n            extend(labelLine.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            extend(labelText.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            enableHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        };\r\n        PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\r\n            var sector = this;\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelLineModel = itemModel.getModel('labelLine');\r\n            var style = data.getItemVisual(idx, 'style');\r\n            var visualColor = style && style.fill;\r\n            var visualOpacity = style && style.opacity;\r\n            setLabelStyle(sector, getLabelStatesModels(itemModel), {\r\n                labelFetcher: data.hostModel,\r\n                labelDataIndex: idx,\r\n                inheritColor: visualColor,\r\n                defaultOpacity: visualOpacity,\r\n                defaultText: seriesModel.getFormattedLabel(idx, 'normal')\r\n                    || data.getName(idx)\r\n            });\r\n            var labelText = sector.getTextContent();\r\n            sector.setTextConfig({\r\n                position: null,\r\n                rotation: null\r\n            });\r\n            labelText.attr({\r\n                z2: 10\r\n            });\r\n            setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\r\n                stroke: visualColor,\r\n                opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\r\n            });\r\n        };\r\n        return PiePiece;\r\n    }(Sector));\r\n    var PieView = (function (_super) {\r\n        __extends(PieView, _super);\r\n        function PieView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.ignoreLabelLineUpdate = true;\r\n            return _this;\r\n        }\r\n        PieView.prototype.init = function () {\r\n            var sectorGroup = new Group();\r\n            this._sectorGroup = sectorGroup;\r\n        };\r\n        PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var group = this.group;\r\n            var startAngle;\r\n            if (!oldData && data.count() > 0) {\r\n                var shape = data.getItemLayout(0);\r\n                for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\r\n                    shape = data.getItemLayout(s);\r\n                }\r\n                if (shape) {\r\n                    startAngle = shape.startAngle;\r\n                }\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (idx) {\r\n                var piePiece = new PiePiece(data, idx, startAngle);\r\n                data.setItemGraphicEl(idx, piePiece);\r\n                group.add(piePiece);\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var piePiece = oldData.getItemGraphicEl(oldIdx);\r\n                piePiece.updateData(data, newIdx, startAngle);\r\n                piePiece.off('click');\r\n                group.add(piePiece);\r\n                data.setItemGraphicEl(newIdx, piePiece);\r\n            })\r\n                .remove(function (idx) {\r\n                var piePiece = oldData.getItemGraphicEl(idx);\r\n                removeElementWithFadeOut(piePiece, seriesModel, idx);\r\n            })\r\n                .execute();\r\n            pieLabelLayout(seriesModel);\r\n            if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\r\n                this._data = data;\r\n            }\r\n        };\r\n        PieView.prototype.dispose = function () { };\r\n        PieView.prototype.containPoint = function (point, seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var itemLayout = data.getItemLayout(0);\r\n            if (itemLayout) {\r\n                var dx = point[0] - itemLayout.cx;\r\n                var dy = point[1] - itemLayout.cy;\r\n                var radius = Math.sqrt(dx * dx + dy * dy);\r\n                return radius <= itemLayout.r && radius >= itemLayout.r0;\r\n            }\r\n        };\r\n        PieView.type = 'pie';\r\n        return PieView;\r\n    }(ChartView));\r\n    ChartView.registerClass(PieView);\n\n    var PI2$7 = Math.PI * 2;\r\n    var RADIAN$1 = Math.PI / 180;\r\n    function getViewRect(seriesModel, api) {\r\n        return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        });\r\n    }\r\n    function pieLayout(seriesType, ecModel, api) {\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var valueDim = data.mapDimension('value');\r\n            var viewRect = getViewRect(seriesModel, api);\r\n            var center = seriesModel.get('center');\r\n            var radius = seriesModel.get('radius');\r\n            if (!isArray(radius)) {\r\n                radius = [0, radius];\r\n            }\r\n            if (!isArray(center)) {\r\n                center = [center, center];\r\n            }\r\n            var width = parsePercent$2(viewRect.width, api.getWidth());\r\n            var height = parsePercent$2(viewRect.height, api.getHeight());\r\n            var size = Math.min(width, height);\r\n            var cx = parsePercent$2(center[0], width) + viewRect.x;\r\n            var cy = parsePercent$2(center[1], height) + viewRect.y;\r\n            var r0 = parsePercent$2(radius[0], size / 2);\r\n            var r = parsePercent$2(radius[1], size / 2);\r\n            var startAngle = -seriesModel.get('startAngle') * RADIAN$1;\r\n            var minAngle = seriesModel.get('minAngle') * RADIAN$1;\r\n            var validDataCount = 0;\r\n            data.each(valueDim, function (value) {\r\n                !isNaN(value) && validDataCount++;\r\n            });\r\n            var sum = data.getSum(valueDim);\r\n            var unitRadian = Math.PI / (sum || validDataCount) * 2;\r\n            var clockwise = seriesModel.get('clockwise');\r\n            var roseType = seriesModel.get('roseType');\r\n            var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\r\n            var extent = data.getDataExtent(valueDim);\r\n            extent[0] = 0;\r\n            var restAngle = PI2$7;\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$7 / 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$7 && validDataCount) {\r\n                if (restAngle <= 1e-3) {\r\n                    var angle_1 = PI2$7 / validDataCount;\r\n                    data.each(valueDim, function (value, idx) {\r\n                        if (!isNaN(value)) {\r\n                            var layout_1 = data.getItemLayout(idx);\r\n                            layout_1.angle = angle_1;\r\n                            layout_1.startAngle = startAngle + dir * idx * angle_1;\r\n                            layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;\r\n                        }\r\n                    });\r\n                }\r\n                else {\r\n                    unitRadian = restAngle / valueSumLargerThanMinAngle;\r\n                    currentAngle = startAngle;\r\n                    data.each(valueDim, function (value, idx) {\r\n                        if (!isNaN(value)) {\r\n                            var layout_2 = data.getItemLayout(idx);\r\n                            var angle = layout_2.angle === minAngle\r\n                                ? minAngle : value * unitRadian;\r\n                            layout_2.startAngle = currentAngle;\r\n                            layout_2.endAngle = currentAngle + dir * angle;\r\n                            currentAngle += dir * angle;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        });\r\n    }\n\n    function dataFilter(seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            reset: function (seriesModel, ecModel) {\r\n                var legendModels = ecModel.findComponents({\r\n                    mainType: 'legend'\r\n                });\r\n                if (!legendModels || !legendModels.length) {\r\n                    return;\r\n                }\r\n                var data = seriesModel.getData();\r\n                data.filterSelf(function (idx) {\r\n                    var name = data.getName(idx);\r\n                    for (var i = 0; i < legendModels.length; i++) {\r\n                        if (!legendModels[i].isSelected(name)) {\r\n                            return false;\r\n                        }\r\n                    }\r\n                    return true;\r\n                });\r\n            }\r\n        };\r\n    }\n\n    createLegacyDataSelectAction('pie', registerAction);\r\n    registerLayout(curry(pieLayout, 'pie'));\r\n    registerProcessor(dataFilter('pie'));\n\n    var ScatterSeriesModel = (function (_super) {\r\n        __extends(ScatterSeriesModel, _super);\r\n        function ScatterSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ScatterSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            return _this;\r\n        }\r\n        ScatterSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, {\r\n                useEncodeDefaulter: true\r\n            });\r\n        };\r\n        ScatterSeriesModel.prototype.getProgressive = function () {\r\n            var progressive = this.option.progressive;\r\n            if (progressive == null) {\r\n                return this.option.large ? 5e3 : this.get('progressive');\r\n            }\r\n            return progressive;\r\n        };\r\n        ScatterSeriesModel.prototype.getProgressiveThreshold = function () {\r\n            var progressiveThreshold = this.option.progressiveThreshold;\r\n            if (progressiveThreshold == null) {\r\n                return this.option.large ? 1e4 : this.get('progressiveThreshold');\r\n            }\r\n            return progressiveThreshold;\r\n        };\r\n        ScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n            return selectors.point(data.getItemLayout(dataIndex));\r\n        };\r\n        ScatterSeriesModel.type = 'series.scatter';\r\n        ScatterSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\r\n        ScatterSeriesModel.defaultOption = {\r\n            coordinateSystem: 'cartesian2d',\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            symbolSize: 10,\r\n            large: false,\r\n            largeThreshold: 2000,\r\n            itemStyle: {\r\n                opacity: 0.8\r\n            },\r\n            emphasis: {\r\n                scale: true\r\n            },\r\n            clip: true,\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            }\r\n        };\r\n        return ScatterSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(ScatterSeriesModel);\n\n    var BOOST_SIZE_THRESHOLD = 4;\r\n    var LargeSymbolPathShape = (function () {\r\n        function LargeSymbolPathShape() {\r\n        }\r\n        return LargeSymbolPathShape;\r\n    }());\r\n    var LargeSymbolPath = (function (_super) {\r\n        __extends(LargeSymbolPath, _super);\r\n        function LargeSymbolPath(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        LargeSymbolPath.prototype.getDefaultShape = function () {\r\n            return new LargeSymbolPathShape();\r\n        };\r\n        LargeSymbolPath.prototype.buildPath = function (path, shape) {\r\n            var points = shape.points;\r\n            var size = shape.size;\r\n            var symbolProxy = this.symbolProxy;\r\n            var symbolProxyShape = symbolProxy.shape;\r\n            var ctx = path.getContext\r\n                ? path.getContext()\r\n                : path;\r\n            var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD;\r\n            if (canBoost) {\r\n                this._ctx = ctx;\r\n                return;\r\n            }\r\n            this._ctx = null;\r\n            for (var i = 0; i < points.length;) {\r\n                var x = points[i++];\r\n                var y = points[i++];\r\n                if (isNaN(x) || isNaN(y)) {\r\n                    continue;\r\n                }\r\n                if (this.softClipShape && !this.softClipShape.contain(x, y)) {\r\n                    continue;\r\n                }\r\n                symbolProxyShape.x = x - size[0] / 2;\r\n                symbolProxyShape.y = y - size[1] / 2;\r\n                symbolProxyShape.width = size[0];\r\n                symbolProxyShape.height = size[1];\r\n                symbolProxy.buildPath(path, symbolProxyShape, true);\r\n            }\r\n        };\r\n        LargeSymbolPath.prototype.afterBrush = function () {\r\n            var shape = this.shape;\r\n            var points = shape.points;\r\n            var size = shape.size;\r\n            var ctx = this._ctx;\r\n            if (!ctx) {\r\n                return;\r\n            }\r\n            for (var i = 0; i < points.length;) {\r\n                var x = points[i++];\r\n                var y = points[i++];\r\n                if (isNaN(x) || isNaN(y)) {\r\n                    continue;\r\n                }\r\n                if (this.softClipShape && !this.softClipShape.contain(x, y)) {\r\n                    continue;\r\n                }\r\n                ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\r\n            }\r\n        };\r\n        LargeSymbolPath.prototype.findDataIndex = function (x, y) {\r\n            var shape = this.shape;\r\n            var points = shape.points;\r\n            var size = shape.size;\r\n            var w = Math.max(size[0], 4);\r\n            var h = Math.max(size[1], 4);\r\n            for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\r\n                var i = idx * 2;\r\n                var x0 = points[i] - w / 2;\r\n                var y0 = points[i + 1] - h / 2;\r\n                if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\r\n                    return idx;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        return LargeSymbolPath;\r\n    }(Path));\r\n    var LargeSymbolDraw = (function () {\r\n        function LargeSymbolDraw() {\r\n            this.group = new Group();\r\n        }\r\n        LargeSymbolDraw.prototype.isPersistent = function () {\r\n            return !this._incremental;\r\n        };\r\n        LargeSymbolDraw.prototype.updateData = function (data, opt) {\r\n            this.group.removeAll();\r\n            var symbolEl = new LargeSymbolPath({\r\n                rectHover: true,\r\n                cursor: 'default'\r\n            });\r\n            symbolEl.setShape({\r\n                points: data.getLayout('points')\r\n            });\r\n            this._setCommon(symbolEl, data, false, opt);\r\n            this.group.add(symbolEl);\r\n            this._incremental = null;\r\n        };\r\n        LargeSymbolDraw.prototype.updateLayout = function (data) {\r\n            if (this._incremental) {\r\n                return;\r\n            }\r\n            var points = data.getLayout('points');\r\n            this.group.eachChild(function (child) {\r\n                if (child.startIndex != null) {\r\n                    var len = (child.endIndex - child.startIndex) * 2;\r\n                    var byteOffset = child.startIndex * 4 * 2;\r\n                    points = new Float32Array(points.buffer, byteOffset, len);\r\n                }\r\n                child.setShape('points', points);\r\n            });\r\n        };\r\n        LargeSymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n            this.group.removeAll();\r\n            this._clearIncremental();\r\n            if (data.count() > 2e6) {\r\n                if (!this._incremental) {\r\n                    this._incremental = new IncrementalDisplayble({\r\n                        silent: true\r\n                    });\r\n                }\r\n                this.group.add(this._incremental);\r\n            }\r\n            else {\r\n                this._incremental = null;\r\n            }\r\n        };\r\n        LargeSymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\r\n            var symbolEl;\r\n            if (this._incremental) {\r\n                symbolEl = new LargeSymbolPath();\r\n                this._incremental.addDisplayable(symbolEl, true);\r\n            }\r\n            else {\r\n                symbolEl = new LargeSymbolPath({\r\n                    rectHover: true,\r\n                    cursor: 'default',\r\n                    startIndex: taskParams.start,\r\n                    endIndex: taskParams.end\r\n                });\r\n                symbolEl.incremental = true;\r\n                this.group.add(symbolEl);\r\n            }\r\n            symbolEl.setShape({\r\n                points: data.getLayout('points')\r\n            });\r\n            this._setCommon(symbolEl, data, !!this._incremental, opt);\r\n        };\r\n        LargeSymbolDraw.prototype._setCommon = function (symbolEl, data, isIncremental, opt) {\r\n            var hostModel = data.hostModel;\r\n            opt = opt || {};\r\n            var size = data.getVisual('symbolSize');\r\n            symbolEl.setShape('size', (size instanceof Array) ? size : [size, size]);\r\n            symbolEl.softClipShape = opt.clipShape || null;\r\n            symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0);\r\n            symbolEl.setColor = symbolEl.symbolProxy.setColor;\r\n            var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\r\n            symbolEl.useStyle(hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\r\n            var globalStyle = data.getVisual('style');\r\n            var visualColor = globalStyle && globalStyle.fill;\r\n            if (visualColor) {\r\n                symbolEl.setColor(visualColor);\r\n            }\r\n            if (!isIncremental) {\r\n                var ecData_1 = getECData(symbolEl);\r\n                ecData_1.seriesIndex = hostModel.seriesIndex;\r\n                symbolEl.on('mousemove', function (e) {\r\n                    ecData_1.dataIndex = null;\r\n                    var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\r\n                    if (dataIndex >= 0) {\r\n                        ecData_1.dataIndex = dataIndex + (symbolEl.startIndex || 0);\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        LargeSymbolDraw.prototype.remove = function () {\r\n            this._clearIncremental();\r\n            this._incremental = null;\r\n            this.group.removeAll();\r\n        };\r\n        LargeSymbolDraw.prototype._clearIncremental = function () {\r\n            var incremental = this._incremental;\r\n            if (incremental) {\r\n                incremental.clearDisplaybles();\r\n            }\r\n        };\r\n        return LargeSymbolDraw;\r\n    }());\n\n    var ScatterView = (function (_super) {\r\n        __extends(ScatterView, _super);\r\n        function ScatterView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ScatterView.type;\r\n            return _this;\r\n        }\r\n        ScatterView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var symbolDraw = this._updateSymbolDraw(data, seriesModel);\r\n            symbolDraw.updateData(data, {\r\n                clipShape: this._getClipShape(seriesModel)\r\n            });\r\n            this._finished = true;\r\n        };\r\n        ScatterView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            var symbolDraw = this._updateSymbolDraw(data, seriesModel);\r\n            symbolDraw.incrementalPrepareUpdate(data);\r\n            this._finished = false;\r\n        };\r\n        ScatterView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\r\n            this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {\r\n                clipShape: this._getClipShape(seriesModel)\r\n            });\r\n            this._finished = taskParams.end === seriesModel.getData().count();\r\n        };\r\n        ScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) {\r\n            var data = seriesModel.getData();\r\n            this.group.dirty();\r\n            if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) {\r\n                return {\r\n                    update: true\r\n                };\r\n            }\r\n            else {\r\n                var res = pointsLayout('').reset(seriesModel, ecModel, api);\r\n                if (res.progress) {\r\n                    res.progress({ start: 0, end: data.count(), count: data.count() }, data);\r\n                }\r\n                this._symbolDraw.updateLayout(data);\r\n            }\r\n        };\r\n        ScatterView.prototype._getClipShape = function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\r\n            return seriesModel.get('clip', true) ? clipArea : null;\r\n        };\r\n        ScatterView.prototype._updateSymbolDraw = function (data, seriesModel) {\r\n            var symbolDraw = this._symbolDraw;\r\n            var pipelineContext = seriesModel.pipelineContext;\r\n            var isLargeDraw = pipelineContext.large;\r\n            if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\r\n                symbolDraw && symbolDraw.remove();\r\n                symbolDraw = this._symbolDraw = isLargeDraw\r\n                    ? new LargeSymbolDraw()\r\n                    : new SymbolDraw();\r\n                this._isLargeDraw = isLargeDraw;\r\n                this.group.removeAll();\r\n            }\r\n            this.group.add(symbolDraw.group);\r\n            return symbolDraw;\r\n        };\r\n        ScatterView.prototype.remove = function (ecModel, api) {\r\n            this._symbolDraw && this._symbolDraw.remove(true);\r\n            this._symbolDraw = null;\r\n        };\r\n        ScatterView.prototype.dispose = function () { };\r\n        ScatterView.type = 'scatter';\r\n        return ScatterView;\r\n    }(ChartView));\r\n    ChartView.registerClass(ScatterView);\n\n    registerLayout(pointsLayout('scatter'));\n\n    function isEC4CompatibleStyle(style, elType, hasOwnTextContentOption, hasOwnTextConfig) {\r\n        return style && (style.legacy\r\n            || (style.legacy !== false\r\n                && !hasOwnTextContentOption\r\n                && !hasOwnTextConfig\r\n                && elType !== 'tspan'\r\n                && (elType === 'text' || hasOwn(style, 'text'))));\r\n    }\r\n    function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) {\r\n        var srcStyle = hostStyle;\r\n        var textConfig;\r\n        var textContent;\r\n        var textContentStyle;\r\n        if (elType === 'text') {\r\n            textContentStyle = srcStyle;\r\n        }\r\n        else {\r\n            textContentStyle = {};\r\n            hasOwn(srcStyle, 'text') && (textContentStyle.text = srcStyle.text);\r\n            hasOwn(srcStyle, 'rich') && (textContentStyle.rich = srcStyle.rich);\r\n            hasOwn(srcStyle, 'textFill') && (textContentStyle.fill = srcStyle.textFill);\r\n            hasOwn(srcStyle, 'textStroke') && (textContentStyle.stroke = srcStyle.textStroke);\r\n            textContent = {\r\n                type: 'text',\r\n                style: textContentStyle,\r\n                silent: true\r\n            };\r\n            textConfig = {};\r\n            var hasOwnPos = hasOwn(srcStyle, 'textPosition');\r\n            if (isNormal) {\r\n                textConfig.position = hasOwnPos ? srcStyle.textPosition : 'inside';\r\n            }\r\n            else {\r\n                hasOwnPos && (textConfig.position = srcStyle.textPosition);\r\n            }\r\n            hasOwn(srcStyle, 'textPosition') && (textConfig.position = srcStyle.textPosition);\r\n            hasOwn(srcStyle, 'textOffset') && (textConfig.offset = srcStyle.textOffset);\r\n            hasOwn(srcStyle, 'textRotation') && (textConfig.rotation = srcStyle.textRotation);\r\n            hasOwn(srcStyle, 'textDistance') && (textConfig.distance = srcStyle.textDistance);\r\n        }\r\n        convertEC4CompatibleRichItem(textContentStyle, hostStyle);\r\n        each(textContentStyle.rich, function (richItem) {\r\n            convertEC4CompatibleRichItem(richItem, richItem);\r\n        });\r\n        return {\r\n            textConfig: textConfig,\r\n            textContent: textContent\r\n        };\r\n    }\r\n    function convertEC4CompatibleRichItem(out, richItem) {\r\n        if (!richItem) {\r\n            return;\r\n        }\r\n        richItem.font = richItem.textFont || richItem.font;\r\n        hasOwn(richItem, 'textStrokeWidth') && (out.lineWidth = richItem.textStrokeWidth);\r\n        hasOwn(richItem, 'textAlign') && (out.align = richItem.textAlign);\r\n        hasOwn(richItem, 'textVerticalAlign') && (out.verticalAlign = richItem.textVerticalAlign);\r\n        hasOwn(richItem, 'textLineHeight') && (out.lineHeight = richItem.textLineHeight);\r\n        hasOwn(richItem, 'textWidth') && (out.width = richItem.textWidth);\r\n        hasOwn(richItem, 'textHeight') && (out.height = richItem.textHeight);\r\n        hasOwn(richItem, 'textBackgroundColor') && (out.backgroundColor = richItem.textBackgroundColor);\r\n        hasOwn(richItem, 'textPadding') && (out.padding = richItem.textPadding);\r\n        hasOwn(richItem, 'textBorderColor') && (out.borderColor = richItem.textBorderColor);\r\n        hasOwn(richItem, 'textBorderWidth') && (out.borderWidth = richItem.textBorderWidth);\r\n        hasOwn(richItem, 'textBorderRadius') && (out.borderRadius = richItem.textBorderRadius);\r\n        hasOwn(richItem, 'textBoxShadowColor') && (out.shadowColor = richItem.textBoxShadowColor);\r\n        hasOwn(richItem, 'textBoxShadowBlur') && (out.shadowBlur = richItem.textBoxShadowBlur);\r\n        hasOwn(richItem, 'textBoxShadowOffsetX') && (out.shadowOffsetX = richItem.textBoxShadowOffsetX);\r\n        hasOwn(richItem, 'textBoxShadowOffsetY') && (out.shadowOffsetY = richItem.textBoxShadowOffsetY);\r\n    }\n\n    var inner$6 = makeInner();\r\n    var _nonShapeGraphicElements = {\r\n        path: null,\r\n        compoundPath: null,\r\n        group: Group,\r\n        image: ZRImage,\r\n        text: ZRText\r\n    };\r\n    registerPreprocessor(function (option) {\r\n        var graphicOption = option.graphic;\r\n        if (isArray(graphicOption)) {\r\n            if (!graphicOption[0] || !graphicOption[0].elements) {\r\n                option.graphic = [{ elements: graphicOption }];\r\n            }\r\n            else {\r\n                option.graphic = [option.graphic[0]];\r\n            }\r\n        }\r\n        else if (graphicOption && !graphicOption.elements) {\r\n            option.graphic = [{ elements: [graphicOption] }];\r\n        }\r\n    });\r\n    var GraphicComponentModel = (function (_super) {\r\n        __extends(GraphicComponentModel, _super);\r\n        function GraphicComponentModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GraphicComponentModel.type;\r\n            return _this;\r\n        }\r\n        GraphicComponentModel.prototype.mergeOption = function (option, ecModel) {\r\n            var elements = this.option.elements;\r\n            this.option.elements = null;\r\n            _super.prototype.mergeOption.call(this, option, ecModel);\r\n            this.option.elements = elements;\r\n        };\r\n        GraphicComponentModel.prototype.optionUpdated = function (newOption, isInit) {\r\n            var thisOption = this.option;\r\n            var newList = (isInit ? thisOption : newOption).elements;\r\n            var existList = thisOption.elements = isInit ? [] : thisOption.elements;\r\n            var flattenedList = [];\r\n            this._flatten(newList, flattenedList, null);\r\n            var mappingResult = mappingToExists(existList, flattenedList, 'normalMerge');\r\n            var elOptionsToUpdate = this._elOptionsToUpdate = [];\r\n            each(mappingResult, function (resultItem, index) {\r\n                var newElOption = resultItem.newOption;\r\n                if (__DEV__) {\r\n                    assert(isObject(newElOption) || resultItem.existing, 'Empty graphic option definition');\r\n                }\r\n                if (!newElOption) {\r\n                    return;\r\n                }\r\n                elOptionsToUpdate.push(newElOption);\r\n                setKeyInfoToNewElOption(resultItem, newElOption);\r\n                mergeNewElOptionToExist(existList, index, newElOption);\r\n                setLayoutInfoToExist(existList[index], newElOption);\r\n            }, this);\r\n            for (var i = existList.length - 1; i >= 0; i--) {\r\n                if (existList[i] == null) {\r\n                    existList.splice(i, 1);\r\n                }\r\n                else {\r\n                    delete existList[i].$action;\r\n                }\r\n            }\r\n        };\r\n        GraphicComponentModel.prototype._flatten = function (optionList, result, parentOption) {\r\n            each(optionList, function (option) {\r\n                if (!option) {\r\n                    return;\r\n                }\r\n                if (parentOption) {\r\n                    option.parentOption = parentOption;\r\n                }\r\n                result.push(option);\r\n                var children = option.children;\r\n                if (option.type === 'group' && children) {\r\n                    this._flatten(children, result, option);\r\n                }\r\n                delete option.children;\r\n            }, this);\r\n        };\r\n        GraphicComponentModel.prototype.useElOptionsToUpdate = function () {\r\n            var els = this._elOptionsToUpdate;\r\n            this._elOptionsToUpdate = null;\r\n            return els;\r\n        };\r\n        GraphicComponentModel.type = 'graphic';\r\n        GraphicComponentModel.defaultOption = {\r\n            elements: []\r\n        };\r\n        return GraphicComponentModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(GraphicComponentModel);\r\n    var GraphicComponentView = (function (_super) {\r\n        __extends(GraphicComponentView, _super);\r\n        function GraphicComponentView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = GraphicComponentView.type;\r\n            return _this;\r\n        }\r\n        GraphicComponentView.prototype.init = function () {\r\n            this._elMap = createHashMap();\r\n        };\r\n        GraphicComponentView.prototype.render = function (graphicModel, ecModel, api) {\r\n            if (graphicModel !== this._lastGraphicModel) {\r\n                this._clear();\r\n            }\r\n            this._lastGraphicModel = graphicModel;\r\n            this._updateElements(graphicModel);\r\n            this._relocate(graphicModel, api);\r\n        };\r\n        GraphicComponentView.prototype._updateElements = function (graphicModel) {\r\n            var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\r\n            if (!elOptionsToUpdate) {\r\n                return;\r\n            }\r\n            var elMap = this._elMap;\r\n            var rootGroup = this.group;\r\n            each(elOptionsToUpdate, function (elOption) {\r\n                var id = convertOptionIdName(elOption.id, null);\r\n                var elExisting = id != null ? elMap.get(id) : null;\r\n                var parentId = convertOptionIdName(elOption.parentId, null);\r\n                var targetElParent = (parentId != null ? elMap.get(parentId) : rootGroup);\r\n                var elType = elOption.type;\r\n                var elOptionStyle = elOption.style;\r\n                if (elType === 'text' && elOptionStyle) {\r\n                    if (elOption.hv && elOption.hv[1]) {\r\n                        elOptionStyle.textVerticalAlign =\r\n                            elOptionStyle.textBaseline =\r\n                                elOptionStyle.verticalAlign =\r\n                                    elOptionStyle.align = null;\r\n                    }\r\n                }\r\n                var textContentOption = elOption.textContent;\r\n                var textConfig = elOption.textConfig;\r\n                if (elOptionStyle\r\n                    && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) {\r\n                    var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true);\r\n                    if (!textConfig && convertResult.textConfig) {\r\n                        textConfig = elOption.textConfig = convertResult.textConfig;\r\n                    }\r\n                    if (!textContentOption && convertResult.textContent) {\r\n                        textContentOption = convertResult.textContent;\r\n                    }\r\n                }\r\n                var elOptionCleaned = getCleanedElOption(elOption);\r\n                if (__DEV__) {\r\n                    elExisting && assert(targetElParent === elExisting.parent, 'Changing parent is not supported.');\r\n                }\r\n                var $action = elOption.$action || 'merge';\r\n                if ($action === 'merge') {\r\n                    elExisting\r\n                        ? elExisting.attr(elOptionCleaned)\r\n                        : createEl(id, targetElParent, elOptionCleaned, elMap);\r\n                }\r\n                else if ($action === 'replace') {\r\n                    removeEl(elExisting, elMap);\r\n                    createEl(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$6(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$6(el);\r\n                var parentElInner = inner$6(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$6(parentEl);\r\n                var containerInfo = parentEl === rootGroup\r\n                    ? {\r\n                        width: apiWidth,\r\n                        height: apiHeight\r\n                    }\r\n                    : {\r\n                        width: parentElInner.__ecGraphicWidth,\r\n                        height: parentElInner.__ecGraphicHeight\r\n                    };\r\n                positionElement(el, elOption, containerInfo, null, { hv: elOption.hv, boundingMode: elOption.bounding });\r\n            }\r\n        };\r\n        GraphicComponentView.prototype._clear = function () {\r\n            var elMap = this._elMap;\r\n            elMap.each(function (el) {\r\n                removeEl(el, elMap);\r\n            });\r\n            this._elMap = createHashMap();\r\n        };\r\n        GraphicComponentView.prototype.dispose = function () {\r\n            this._clear();\r\n        };\r\n        GraphicComponentView.type = 'graphic';\r\n        return GraphicComponentView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(GraphicComponentView);\r\n    function createEl(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$6(el).__ecGraphicId = id;\r\n    }\r\n    function removeEl(elExisting, elMap) {\r\n        var existElParent = elExisting && elExisting.parent;\r\n        if (existElParent) {\r\n            elExisting.type === 'group' && elExisting.traverse(function (el) {\r\n                removeEl(el, elMap);\r\n            });\r\n            elMap.removeKey(inner$6(elExisting).__ecGraphicId);\r\n            existElParent.remove(elExisting);\r\n        }\r\n    }\r\n    function getCleanedElOption(elOption) {\r\n        elOption = extend({}, elOption);\r\n        each(['id', 'parentId', '$action', 'hv', 'bounding', 'textContent'].concat(LOCATION_PARAMS), function (name) {\r\n            delete elOption[name];\r\n        });\r\n        return elOption;\r\n    }\r\n    function isSetLoc(obj, props) {\r\n        var isSet;\r\n        each(props, function (prop) {\r\n            obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\r\n        });\r\n        return isSet;\r\n    }\r\n    function setKeyInfoToNewElOption(resultItem, newElOption) {\r\n        var existElOption = resultItem.existing;\r\n        newElOption.id = resultItem.keyInfo.id;\r\n        !newElOption.type && existElOption && (newElOption.type = existElOption.type);\r\n        if (newElOption.parentId == null) {\r\n            var newElParentOption = newElOption.parentOption;\r\n            if (newElParentOption) {\r\n                newElOption.parentId = newElParentOption.id;\r\n            }\r\n            else if (existElOption) {\r\n                newElOption.parentId = existElOption.parentId;\r\n            }\r\n        }\r\n        newElOption.parentOption = null;\r\n    }\r\n    function mergeNewElOptionToExist(existList, index, newElOption) {\r\n        var newElOptCopy = extend({}, newElOption);\r\n        var existElOption = existList[index];\r\n        var $action = newElOption.$action || 'merge';\r\n        if ($action === 'merge') {\r\n            if (existElOption) {\r\n                if (__DEV__) {\r\n                    var newType = newElOption.type;\r\n                    assert(!newType || existElOption.type === newType, 'Please set $action: \"replace\" to change `type`');\r\n                }\r\n                merge(existElOption, newElOptCopy, true);\r\n                mergeLayoutParam(existElOption, newElOptCopy, { ignoreSize: true });\r\n                copyLayoutParams(newElOption, existElOption);\r\n            }\r\n            else {\r\n                existList[index] = newElOptCopy;\r\n            }\r\n        }\r\n        else if ($action === 'replace') {\r\n            existList[index] = newElOptCopy;\r\n        }\r\n        else if ($action === 'remove') {\r\n            existElOption && (existList[index] = null);\r\n        }\r\n    }\r\n    function setLayoutInfoToExist(existItem, newElOption) {\r\n        if (!existItem) {\r\n            return;\r\n        }\r\n        existItem.hv = newElOption.hv = [\r\n            isSetLoc(newElOption, ['left', 'right']),\r\n            isSetLoc(newElOption, ['top', 'bottom'])\r\n        ];\r\n        if (existItem.type === 'group') {\r\n            var existingGroupOpt = existItem;\r\n            var newGroupOpt = newElOption;\r\n            existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0);\r\n            existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0);\r\n        }\r\n    }\r\n    function setEventData(el, graphicModel, elOption) {\r\n        var eventData = getECData(el).eventData;\r\n        if (!el.silent && !el.ignore && !eventData) {\r\n            eventData = getECData(el).eventData = {\r\n                componentType: 'graphic',\r\n                componentIndex: graphicModel.componentIndex,\r\n                name: el.name\r\n            };\r\n        }\r\n        if (eventData) {\r\n            eventData.info = elOption.info;\r\n        }\r\n    }\n\n    function findPointFromSeries(finder, ecModel) {\r\n        var point = [];\r\n        var seriesIndex = finder.seriesIndex;\r\n        var seriesModel;\r\n        if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\r\n            return {\r\n                point: []\r\n            };\r\n        }\r\n        var data = seriesModel.getData();\r\n        var dataIndex = queryDataIndex(data, finder);\r\n        if (dataIndex == null || dataIndex < 0 || isArray(dataIndex)) {\r\n            return { point: [] };\r\n        }\r\n        var el = data.getItemGraphicEl(dataIndex);\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        if (seriesModel.getTooltipPosition) {\r\n            point = seriesModel.getTooltipPosition(dataIndex) || [];\r\n        }\r\n        else if (coordSys && coordSys.dataToPoint) {\r\n            if (finder.isStacked) {\r\n                var baseAxis = coordSys.getBaseAxis();\r\n                var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n                var valueAxisDim = valueAxis.dim;\r\n                var baseAxisDim = baseAxis.dim;\r\n                var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\r\n                var baseDim = data.mapDimension(baseAxisDim);\r\n                var stackedData = [];\r\n                stackedData[baseDataOffset] = data.get(baseDim, dataIndex);\r\n                stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo('stackResultDimension'), dataIndex);\r\n                point = coordSys.dataToPoint(stackedData) || [];\r\n            }\r\n            else {\r\n                point = coordSys.dataToPoint(data.getValues(map(coordSys.dimensions, function (dim) {\r\n                    return data.mapDimension(dim);\r\n                }), dataIndex)) || [];\r\n            }\r\n        }\r\n        else if (el) {\r\n            var rect = el.getBoundingRect().clone();\r\n            rect.applyTransform(el.transform);\r\n            point = [\r\n                rect.x + rect.width / 2,\r\n                rect.y + rect.height / 2\r\n            ];\r\n        }\r\n        return { point: point, el: el };\r\n    }\n\n    var inner$7 = makeInner();\r\n    function axisTrigger(payload, ecModel, api) {\r\n        var currTrigger = payload.currTrigger;\r\n        var point = [payload.x, payload.y];\r\n        var finder = payload;\r\n        var dispatchAction = payload.dispatchAction || bind(api.dispatchAction, api);\r\n        var coordSysAxesInfo = ecModel.getComponent('axisPointer')\r\n            .coordSysAxesInfo;\r\n        if (!coordSysAxesInfo) {\r\n            return;\r\n        }\r\n        if (illegalPoint(point)) {\r\n            point = findPointFromSeries({\r\n                seriesIndex: finder.seriesIndex,\r\n                dataIndex: finder.dataIndex\r\n            }, ecModel).point;\r\n        }\r\n        var isIllegalPoint = illegalPoint(point);\r\n        var inputAxesInfo = finder.axesInfo;\r\n        var axesInfo = coordSysAxesInfo.axesInfo;\r\n        var shouldHide = currTrigger === 'leave' || illegalPoint(point);\r\n        var outputPayload = {};\r\n        var showValueMap = {};\r\n        var dataByCoordSys = {\r\n            list: [],\r\n            map: {}\r\n        };\r\n        var updaters = {\r\n            showPointer: curry(showPointer, showValueMap),\r\n            showTooltip: curry(showTooltip, dataByCoordSys)\r\n        };\r\n        each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\r\n            var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\r\n            each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\r\n                var axis = axisInfo.axis;\r\n                var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo);\r\n                if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\r\n                    var val = inputAxisInfo && inputAxisInfo.value;\r\n                    if (val == null && !isIllegalPoint) {\r\n                        val = axis.pointToData(point);\r\n                    }\r\n                    val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload);\r\n                }\r\n            });\r\n        });\r\n        var linkTriggers = {};\r\n        each(axesInfo, function (tarAxisInfo, tarKey) {\r\n            var linkGroup = tarAxisInfo.linkGroup;\r\n            if (linkGroup && !showValueMap[tarKey]) {\r\n                each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\r\n                    var srcValItem = showValueMap[srcKey];\r\n                    if (srcAxisInfo !== tarAxisInfo && srcValItem) {\r\n                        var val = srcValItem.value;\r\n                        linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\r\n                        linkTriggers[tarAxisInfo.key] = val;\r\n                    }\r\n                });\r\n            }\r\n        });\r\n        each(linkTriggers, function (val, tarKey) {\r\n            processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload);\r\n        });\r\n        updateModelActually(showValueMap, axesInfo, outputPayload);\r\n        dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\r\n        dispatchHighDownActually(axesInfo, dispatchAction, api);\r\n        return outputPayload;\r\n    }\r\n    function processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) {\r\n        var axis = axisInfo.axis;\r\n        if (axis.scale.isBlank() || !axis.containData(newValue)) {\r\n            return;\r\n        }\r\n        if (!axisInfo.involveSeries) {\r\n            updaters.showPointer(axisInfo, newValue);\r\n            return;\r\n        }\r\n        var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\r\n        var payloadBatch = payloadInfo.payloadBatch;\r\n        var snapToValue = payloadInfo.snapToValue;\r\n        if (payloadBatch[0] && outputFinder.seriesIndex == null) {\r\n            extend(outputFinder, payloadBatch[0]);\r\n        }\r\n        if (!noSnap && axisInfo.snap) {\r\n            if (axis.containData(snapToValue) && snapToValue != null) {\r\n                newValue = snapToValue;\r\n            }\r\n        }\r\n        updaters.showPointer(axisInfo, newValue, payloadBatch);\r\n        updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\r\n    }\r\n    function buildPayloadsBySeries(value, axisInfo) {\r\n        var axis = axisInfo.axis;\r\n        var dim = axis.dim;\r\n        var snapToValue = value;\r\n        var payloadBatch = [];\r\n        var minDist = Number.MAX_VALUE;\r\n        var minDiff = -1;\r\n        each(axisInfo.seriesModels, function (series, idx) {\r\n            var dataDim = series.getData().mapDimensionsAll(dim);\r\n            var seriesNestestValue;\r\n            var dataIndices;\r\n            if (series.getAxisTooltipData) {\r\n                var result = series.getAxisTooltipData(dataDim, value, axis);\r\n                dataIndices = result.dataIndices;\r\n                seriesNestestValue = result.nestestValue;\r\n            }\r\n            else {\r\n                dataIndices = series.getData().indicesOfNearest(dataDim[0], value, axis.type === 'category' ? 0.5 : null);\r\n                if (!dataIndices.length) {\r\n                    return;\r\n                }\r\n                seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\r\n            }\r\n            if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\r\n                return;\r\n            }\r\n            var diff = value - seriesNestestValue;\r\n            var dist = Math.abs(diff);\r\n            if (dist <= minDist) {\r\n                if (dist < minDist || (diff >= 0 && minDiff < 0)) {\r\n                    minDist = dist;\r\n                    minDiff = diff;\r\n                    snapToValue = seriesNestestValue;\r\n                    payloadBatch.length = 0;\r\n                }\r\n                each(dataIndices, function (dataIndex) {\r\n                    payloadBatch.push({\r\n                        seriesIndex: series.seriesIndex,\r\n                        dataIndexInside: dataIndex,\r\n                        dataIndex: series.getData().getRawIndex(dataIndex)\r\n                    });\r\n                });\r\n            }\r\n        });\r\n        return {\r\n            payloadBatch: payloadBatch,\r\n            snapToValue: snapToValue\r\n        };\r\n    }\r\n    function showPointer(showValueMap, axisInfo, value, payloadBatch) {\r\n        showValueMap[axisInfo.key] = {\r\n            value: value,\r\n            payloadBatch: payloadBatch\r\n        };\r\n    }\r\n    function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\r\n        var payloadBatch = payloadInfo.payloadBatch;\r\n        var axis = axisInfo.axis;\r\n        var axisModel = axis.model;\r\n        var axisPointerModel = axisInfo.axisPointerModel;\r\n        if (!axisInfo.triggerTooltip || !payloadBatch.length) {\r\n            return;\r\n        }\r\n        var coordSysModel = axisInfo.coordSys.model;\r\n        var coordSysKey = makeKey(coordSysModel);\r\n        var coordSysItem = dataByCoordSys.map[coordSysKey];\r\n        if (!coordSysItem) {\r\n            coordSysItem = dataByCoordSys.map[coordSysKey] = {\r\n                coordSysId: coordSysModel.id,\r\n                coordSysIndex: coordSysModel.componentIndex,\r\n                coordSysType: coordSysModel.type,\r\n                coordSysMainType: coordSysModel.mainType,\r\n                dataByAxis: []\r\n            };\r\n            dataByCoordSys.list.push(coordSysItem);\r\n        }\r\n        coordSysItem.dataByAxis.push({\r\n            axisDim: axis.dim,\r\n            axisIndex: axisModel.componentIndex,\r\n            axisType: axisModel.type,\r\n            axisId: axisModel.id,\r\n            value: value,\r\n            valueLabelOpt: {\r\n                precision: axisPointerModel.get(['label', 'precision']),\r\n                formatter: axisPointerModel.get(['label', 'formatter'])\r\n            },\r\n            seriesDataIndices: payloadBatch.slice()\r\n        });\r\n    }\r\n    function updateModelActually(showValueMap, axesInfo, outputPayload) {\r\n        var outputAxesInfo = outputPayload.axesInfo = [];\r\n        each(axesInfo, function (axisInfo, key) {\r\n            var option = axisInfo.axisPointerModel.option;\r\n            var valItem = showValueMap[key];\r\n            if (valItem) {\r\n                !axisInfo.useHandle && (option.status = 'show');\r\n                option.value = valItem.value;\r\n                option.seriesDataIndices = (valItem.payloadBatch || []).slice();\r\n            }\r\n            else {\r\n                !axisInfo.useHandle && (option.status = 'hide');\r\n            }\r\n            option.status === 'show' && outputAxesInfo.push({\r\n                axisDim: axisInfo.axis.dim,\r\n                axisIndex: axisInfo.axis.model.componentIndex,\r\n                value: option.value\r\n            });\r\n        });\r\n    }\r\n    function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\r\n        if (illegalPoint(point) || !dataByCoordSys.list.length) {\r\n            dispatchAction({ type: 'hideTip' });\r\n            return;\r\n        }\r\n        var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\r\n        dispatchAction({\r\n            type: 'showTip',\r\n            escapeConnect: true,\r\n            x: point[0],\r\n            y: point[1],\r\n            tooltipOption: payload.tooltipOption,\r\n            position: payload.position,\r\n            dataIndexInside: sampleItem.dataIndexInside,\r\n            dataIndex: sampleItem.dataIndex,\r\n            seriesIndex: sampleItem.seriesIndex,\r\n            dataByCoordSys: dataByCoordSys.list\r\n        });\r\n    }\r\n    function dispatchHighDownActually(axesInfo, dispatchAction, api) {\r\n        var zr = api.getZr();\r\n        var highDownKey = 'axisPointerLastHighlights';\r\n        var lastHighlights = inner$7(zr)[highDownKey] || {};\r\n        var newHighlights = inner$7(zr)[highDownKey] = {};\r\n        each(axesInfo, function (axisInfo, key) {\r\n            var option = axisInfo.axisPointerModel.option;\r\n            option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\r\n                var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\r\n                newHighlights[key] = batchItem;\r\n            });\r\n        });\r\n        var toHighlight = [];\r\n        var toDownplay = [];\r\n        each(lastHighlights, function (batchItem, key) {\r\n            !newHighlights[key] && toDownplay.push(batchItem);\r\n        });\r\n        each(newHighlights, function (batchItem, key) {\r\n            !lastHighlights[key] && toHighlight.push(batchItem);\r\n        });\r\n        toDownplay.length && api.dispatchAction({\r\n            type: 'downplay',\r\n            escapeConnect: true,\r\n            notBlur: true,\r\n            batch: toDownplay\r\n        });\r\n        toHighlight.length && api.dispatchAction({\r\n            type: 'highlight',\r\n            escapeConnect: true,\r\n            notBlur: true,\r\n            batch: toHighlight\r\n        });\r\n    }\r\n    function findInputAxisInfo(inputAxesInfo, axisInfo) {\r\n        for (var i = 0; i < (inputAxesInfo || []).length; i++) {\r\n            var inputAxisInfo = inputAxesInfo[i];\r\n            if (axisInfo.axis.dim === inputAxisInfo.axisDim\r\n                && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\r\n                return inputAxisInfo;\r\n            }\r\n        }\r\n    }\r\n    function makeMapperParam(axisInfo) {\r\n        var axisModel = axisInfo.axis.model;\r\n        var item = {};\r\n        var dim = item.axisDim = axisInfo.axis.dim;\r\n        item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\r\n        item.axisName = item[dim + 'AxisName'] = axisModel.name;\r\n        item.axisId = item[dim + 'AxisId'] = axisModel.id;\r\n        return item;\r\n    }\r\n    function illegalPoint(point) {\r\n        return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\r\n    }\n\n    var inner$8 = makeInner();\r\n    var each$4 = each;\r\n    function register(key, api, handler) {\r\n        if (env.node) {\r\n            return;\r\n        }\r\n        var zr = api.getZr();\r\n        inner$8(zr).records || (inner$8(zr).records = {});\r\n        initGlobalListeners(zr, api);\r\n        var record = inner$8(zr).records[key] || (inner$8(zr).records[key] = {});\r\n        record.handler = handler;\r\n    }\r\n    function initGlobalListeners(zr, api) {\r\n        if (inner$8(zr).initialized) {\r\n            return;\r\n        }\r\n        inner$8(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$4(inner$8(zr).records, function (record) {\r\n                    record && cb(record, e, dis.dispatchAction);\r\n                });\r\n                dispatchTooltipFinally(dis.pendings, api);\r\n            });\r\n        }\r\n    }\r\n    function dispatchTooltipFinally(pendings, api) {\r\n        var showLen = pendings.showTip.length;\r\n        var hideLen = pendings.hideTip.length;\r\n        var actuallyPayload;\r\n        if (showLen) {\r\n            actuallyPayload = pendings.showTip[showLen - 1];\r\n        }\r\n        else if (hideLen) {\r\n            actuallyPayload = pendings.hideTip[hideLen - 1];\r\n        }\r\n        if (actuallyPayload) {\r\n            actuallyPayload.dispatchAction = null;\r\n            api.dispatchAction(actuallyPayload);\r\n        }\r\n    }\r\n    function onLeave(record, e, dispatchAction) {\r\n        record.handler('leave', null, dispatchAction);\r\n    }\r\n    function doEnter(currTrigger, record, e, dispatchAction) {\r\n        record.handler(currTrigger, e, dispatchAction);\r\n    }\r\n    function makeDispatchAction(api) {\r\n        var pendings = {\r\n            showTip: [],\r\n            hideTip: []\r\n        };\r\n        var dispatchAction = function (payload) {\r\n            var pendingList = pendings[payload.type];\r\n            if (pendingList) {\r\n                pendingList.push(payload);\r\n            }\r\n            else {\r\n                payload.dispatchAction = dispatchAction;\r\n                api.dispatchAction(payload);\r\n            }\r\n        };\r\n        return {\r\n            dispatchAction: dispatchAction,\r\n            pendings: pendings\r\n        };\r\n    }\r\n    function unregister(key, api) {\r\n        if (env.node) {\r\n            return;\r\n        }\r\n        var zr = api.getZr();\r\n        var record = (inner$8(zr).records || {})[key];\r\n        if (record) {\r\n            inner$8(zr).records[key] = null;\r\n        }\r\n    }\n\n    var AxisPointerView = (function (_super) {\r\n        __extends(AxisPointerView, _super);\r\n        function AxisPointerView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AxisPointerView.type;\r\n            return _this;\r\n        }\r\n        AxisPointerView.prototype.render = function (globalAxisPointerModel, ecModel, api) {\r\n            var globalTooltipModel = ecModel.getComponent('tooltip');\r\n            var triggerOn = globalAxisPointerModel.get('triggerOn')\r\n                || (globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click');\r\n            register('axisPointer', api, function (currTrigger, e, dispatchAction) {\r\n                if (triggerOn !== 'none'\r\n                    && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\r\n                    dispatchAction({\r\n                        type: 'updateAxisPointer',\r\n                        currTrigger: currTrigger,\r\n                        x: e && e.offsetX,\r\n                        y: e && e.offsetY\r\n                    });\r\n                }\r\n            });\r\n        };\r\n        AxisPointerView.prototype.remove = function (ecModel, api) {\r\n            unregister('axisPointer', api);\r\n        };\r\n        AxisPointerView.prototype.dispose = function (ecModel, api) {\r\n            unregister('axisPointer', api);\r\n        };\r\n        AxisPointerView.type = 'axisPointer';\r\n        return AxisPointerView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(AxisPointerView);\n\n    var inner$9 = makeInner();\r\n    var clone$3 = clone;\r\n    var bind$1 = bind;\r\n    var BaseAxisPointer = (function () {\r\n        function BaseAxisPointer() {\r\n            this._dragging = false;\r\n            this.animationThreshold = 15;\r\n        }\r\n        BaseAxisPointer.prototype.render = function (axisModel, axisPointerModel, api, forceRender) {\r\n            var value = axisPointerModel.get('value');\r\n            var status = axisPointerModel.get('status');\r\n            this._axisModel = axisModel;\r\n            this._axisPointerModel = axisPointerModel;\r\n            this._api = api;\r\n            if (!forceRender\r\n                && this._lastValue === value\r\n                && this._lastStatus === status) {\r\n                return;\r\n            }\r\n            this._lastValue = value;\r\n            this._lastStatus = status;\r\n            var group = this._group;\r\n            var handle = this._handle;\r\n            if (!status || status === 'hide') {\r\n                group && group.hide();\r\n                handle && handle.hide();\r\n                return;\r\n            }\r\n            group && group.show();\r\n            handle && handle.show();\r\n            var elOption = {};\r\n            this.makeElOption(elOption, value, axisModel, axisPointerModel, api);\r\n            var graphicKey = elOption.graphicKey;\r\n            if (graphicKey !== this._lastGraphicKey) {\r\n                this.clear(api);\r\n            }\r\n            this._lastGraphicKey = graphicKey;\r\n            var moveAnimation = this._moveAnimation =\r\n                this.determineAnimation(axisModel, axisPointerModel);\r\n            if (!group) {\r\n                group = this._group = new Group();\r\n                this.createPointerEl(group, elOption, axisModel, axisPointerModel);\r\n                this.createLabelEl(group, elOption, axisModel, axisPointerModel);\r\n                api.getZr().add(group);\r\n            }\r\n            else {\r\n                var doUpdateProps = curry(updateProps$1, axisPointerModel, moveAnimation);\r\n                this.updatePointerEl(group, elOption, doUpdateProps);\r\n                this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\r\n            }\r\n            updateMandatoryProps(group, axisPointerModel, true);\r\n            this._renderHandle(value);\r\n        };\r\n        BaseAxisPointer.prototype.remove = function (api) {\r\n            this.clear(api);\r\n        };\r\n        BaseAxisPointer.prototype.dispose = function (api) {\r\n            this.clear(api);\r\n        };\r\n        BaseAxisPointer.prototype.determineAnimation = function (axisModel, axisPointerModel) {\r\n            var animation = axisPointerModel.get('animation');\r\n            var axis = axisModel.axis;\r\n            var isCategoryAxis = axis.type === 'category';\r\n            var useSnap = axisPointerModel.get('snap');\r\n            if (!useSnap && !isCategoryAxis) {\r\n                return false;\r\n            }\r\n            if (animation === 'auto' || animation == null) {\r\n                var animationThreshold = this.animationThreshold;\r\n                if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\r\n                    return true;\r\n                }\r\n                if (useSnap) {\r\n                    var seriesDataCount = getAxisInfo(axisModel).seriesDataCount;\r\n                    var axisExtent = axis.getExtent();\r\n                    return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\r\n                }\r\n                return false;\r\n            }\r\n            return animation === true;\r\n        };\r\n        BaseAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n        };\r\n        BaseAxisPointer.prototype.createPointerEl = function (group, elOption, axisModel, axisPointerModel) {\r\n            var pointerOption = elOption.pointer;\r\n            if (pointerOption) {\r\n                var pointerEl = inner$9(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$9(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$9(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$9(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$9(handle).lastProp = null;\r\n            this._doDispatchAxisPointer();\r\n        };\r\n        BaseAxisPointer.prototype._doDispatchAxisPointer = function () {\r\n            var handle = this._handle;\r\n            if (!handle) {\r\n                return;\r\n            }\r\n            var payloadInfo = this._payloadInfo;\r\n            var axisModel = this._axisModel;\r\n            this._api.dispatchAction({\r\n                type: 'updateAxisPointer',\r\n                x: payloadInfo.cursorPoint[0],\r\n                y: payloadInfo.cursorPoint[1],\r\n                tooltipOption: payloadInfo.tooltipOption,\r\n                axesInfo: [{\r\n                        axisDim: axisModel.axis.dim,\r\n                        axisIndex: axisModel.componentIndex\r\n                    }]\r\n            });\r\n        };\r\n        BaseAxisPointer.prototype._onHandleDragEnd = function () {\r\n            this._dragging = false;\r\n            var handle = this._handle;\r\n            if (!handle) {\r\n                return;\r\n            }\r\n            var value = this._axisPointerModel.get('value');\r\n            this._moveHandleToValue(value);\r\n            this._api.dispatchAction({\r\n                type: 'hideTip'\r\n            });\r\n        };\r\n        BaseAxisPointer.prototype.clear = function (api) {\r\n            this._lastValue = null;\r\n            this._lastStatus = null;\r\n            var zr = api.getZr();\r\n            var group = this._group;\r\n            var handle = this._handle;\r\n            if (zr && group) {\r\n                this._lastGraphicKey = null;\r\n                group && zr.remove(group);\r\n                handle && zr.remove(handle);\r\n                this._group = null;\r\n                this._handle = null;\r\n                this._payloadInfo = null;\r\n            }\r\n        };\r\n        BaseAxisPointer.prototype.doClear = function () {\r\n        };\r\n        BaseAxisPointer.prototype.buildLabel = function (xy, wh, xDimIndex) {\r\n            xDimIndex = xDimIndex || 0;\r\n            return {\r\n                x: xy[xDimIndex],\r\n                y: xy[1 - xDimIndex],\r\n                width: wh[xDimIndex],\r\n                height: wh[1 - xDimIndex]\r\n            };\r\n        };\r\n        return BaseAxisPointer;\r\n    }());\r\n    function updateProps$1(animationModel, moveAnimation, el, props) {\r\n        if (!propsEqual(inner$9(el).lastProp, props)) {\r\n            inner$9(el).lastProp = props;\r\n            moveAnimation\r\n                ? updateProps(el, props, animationModel)\r\n                : (el.stopAnimation(), el.attr(props));\r\n        }\r\n    }\r\n    function propsEqual(lastProps, newProps) {\r\n        if (isObject(lastProps) && isObject(newProps)) {\r\n            var equals_1 = true;\r\n            each(newProps, function (item, key) {\r\n                equals_1 = equals_1 && propsEqual(lastProps[key], item);\r\n            });\r\n            return !!equals_1;\r\n        }\r\n        else {\r\n            return lastProps === newProps;\r\n        }\r\n    }\r\n    function updateLabelShowHide(labelEl, axisPointerModel) {\r\n        labelEl[axisPointerModel.get(['label', 'show']) ? 'show' : 'hide']();\r\n    }\r\n    function getHandleTransProps(trans) {\r\n        return {\r\n            x: trans.x || 0,\r\n            y: trans.y || 0,\r\n            rotation: trans.rotation || 0\r\n        };\r\n    }\r\n    function updateMandatoryProps(group, axisPointerModel, silent) {\r\n        var z = axisPointerModel.get('z');\r\n        var zlevel = axisPointerModel.get('zlevel');\r\n        group && group.traverse(function (el) {\r\n            if (el.type !== 'group') {\r\n                z != null && (el.z = z);\r\n                zlevel != null && (el.zlevel = zlevel);\r\n                el.silent = silent;\r\n            }\r\n        });\r\n    }\n\n    function buildElStyle(axisPointerModel) {\r\n        var axisPointerType = axisPointerModel.get('type');\r\n        var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\r\n        var style;\r\n        if (axisPointerType === 'line') {\r\n            style = styleModel.getLineStyle();\r\n            style.fill = null;\r\n        }\r\n        else if (axisPointerType === 'shadow') {\r\n            style = styleModel.getAreaStyle();\r\n            style.stroke = null;\r\n        }\r\n        return style;\r\n    }\r\n    function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\r\n        var value = axisPointerModel.get('value');\r\n        var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\r\n            precision: axisPointerModel.get(['label', 'precision']),\r\n            formatter: axisPointerModel.get(['label', 'formatter'])\r\n        });\r\n        var labelModel = axisPointerModel.getModel('label');\r\n        var paddings = normalizeCssArray$1(labelModel.get('padding') || 0);\r\n        var font = labelModel.getFont();\r\n        var textRect = getBoundingRect(text, font);\r\n        var position = labelPos.position;\r\n        var width = textRect.width + paddings[1] + paddings[3];\r\n        var height = textRect.height + paddings[0] + paddings[2];\r\n        var align = labelPos.align;\r\n        align === 'right' && (position[0] -= width);\r\n        align === 'center' && (position[0] -= width / 2);\r\n        var verticalAlign = labelPos.verticalAlign;\r\n        verticalAlign === 'bottom' && (position[1] -= height);\r\n        verticalAlign === 'middle' && (position[1] -= height / 2);\r\n        confineInContainer(position, width, height, api);\r\n        var bgColor = labelModel.get('backgroundColor');\r\n        if (!bgColor || bgColor === 'auto') {\r\n            bgColor = axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n        }\r\n        elOption.label = {\r\n            x: position[0],\r\n            y: position[1],\r\n            style: createTextStyle(labelModel, {\r\n                text: text,\r\n                font: font,\r\n                fill: labelModel.getTextColor(),\r\n                padding: paddings,\r\n                backgroundColor: bgColor\r\n            }),\r\n            z2: 10\r\n        };\r\n    }\r\n    function confineInContainer(position, width, height, api) {\r\n        var viewWidth = api.getWidth();\r\n        var viewHeight = api.getHeight();\r\n        position[0] = Math.min(position[0] + width, viewWidth) - width;\r\n        position[1] = Math.min(position[1] + height, viewHeight) - height;\r\n        position[0] = Math.max(position[0], 0);\r\n        position[1] = Math.max(position[1], 0);\r\n    }\r\n    function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\r\n        value = axis.scale.parse(value);\r\n        var text = axis.scale.getLabel({\r\n            value: value\r\n        }, {\r\n            precision: opt.precision\r\n        });\r\n        var formatter = opt.formatter;\r\n        if (formatter) {\r\n            var params_1 = {\r\n                value: getAxisRawValue(axis, { value: value }),\r\n                axisDimension: axis.dim,\r\n                axisIndex: axis.index,\r\n                seriesData: []\r\n            };\r\n            each(seriesDataIndices, function (idxItem) {\r\n                var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\r\n                var dataIndex = idxItem.dataIndexInside;\r\n                var dataParams = series && series.getDataParams(dataIndex);\r\n                dataParams && params_1.seriesData.push(dataParams);\r\n            });\r\n            if (isString(formatter)) {\r\n                text = formatter.replace('{value}', text);\r\n            }\r\n            else if (isFunction(formatter)) {\r\n                text = formatter(params_1);\r\n            }\r\n        }\r\n        return text;\r\n    }\r\n    function getTransformedPosition(axis, value, layoutInfo) {\r\n        var transform = create$1();\r\n        rotate(transform, transform, layoutInfo.rotation);\r\n        translate(transform, transform, layoutInfo.position);\r\n        return applyTransform$1([\r\n            axis.dataToCoord(value),\r\n            (layoutInfo.labelOffset || 0)\r\n                + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)\r\n        ], transform);\r\n    }\r\n    function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\r\n        var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\r\n        layoutInfo.labelMargin = axisPointerModel.get(['label', 'margin']);\r\n        buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\r\n            position: getTransformedPosition(axisModel.axis, value, layoutInfo),\r\n            align: textLayout.textAlign,\r\n            verticalAlign: textLayout.textVerticalAlign\r\n        });\r\n    }\r\n    function makeLineShape(p1, p2, xDimIndex) {\r\n        xDimIndex = xDimIndex || 0;\r\n        return {\r\n            x1: p1[xDimIndex],\r\n            y1: p1[1 - xDimIndex],\r\n            x2: p2[xDimIndex],\r\n            y2: p2[1 - xDimIndex]\r\n        };\r\n    }\r\n    function makeRectShape(xy, wh, xDimIndex) {\r\n        xDimIndex = xDimIndex || 0;\r\n        return {\r\n            x: xy[xDimIndex],\r\n            y: xy[1 - xDimIndex],\r\n            width: wh[xDimIndex],\r\n            height: wh[1 - xDimIndex]\r\n        };\r\n    }\n\n    var CartesianAxisPointer = (function (_super) {\r\n        __extends(CartesianAxisPointer, _super);\r\n        function CartesianAxisPointer() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        CartesianAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n            var axis = axisModel.axis;\r\n            var grid = axis.grid;\r\n            var axisPointerType = axisPointerModel.get('type');\r\n            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\r\n            var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\r\n            if (axisPointerType && axisPointerType !== 'none') {\r\n                var elStyle = buildElStyle(axisPointerModel);\r\n                var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\r\n                pointerOption.style = elStyle;\r\n                elOption.graphicKey = pointerOption.type;\r\n                elOption.pointer = pointerOption;\r\n            }\r\n            var layoutInfo = layout$1(grid.model, axisModel);\r\n            buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\r\n        };\r\n        CartesianAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) {\r\n            var layoutInfo = layout$1(axisModel.axis.grid.model, axisModel, {\r\n                labelInside: false\r\n            });\r\n            layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']);\r\n            var pos = getTransformedPosition(axisModel.axis, value, layoutInfo);\r\n            return {\r\n                x: pos[0],\r\n                y: pos[1],\r\n                rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\r\n            };\r\n        };\r\n        CartesianAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) {\r\n            var axis = axisModel.axis;\r\n            var grid = axis.grid;\r\n            var axisExtent = axis.getGlobalExtent(true);\r\n            var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\r\n            var dimIndex = axis.dim === 'x' ? 0 : 1;\r\n            var currPosition = [transform.x, transform.y];\r\n            currPosition[dimIndex] += delta[dimIndex];\r\n            currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\r\n            currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\r\n            var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\r\n            var cursorPoint = [cursorOtherValue, cursorOtherValue];\r\n            cursorPoint[dimIndex] = currPosition[dimIndex];\r\n            var tooltipOptions = [\r\n                { verticalAlign: 'middle' },\r\n                { align: 'center' }\r\n            ];\r\n            return {\r\n                x: currPosition[0],\r\n                y: currPosition[1],\r\n                rotation: transform.rotation,\r\n                cursorPoint: cursorPoint,\r\n                tooltipOption: tooltipOptions[dimIndex]\r\n            };\r\n        };\r\n        return CartesianAxisPointer;\r\n    }(BaseAxisPointer));\r\n    function getCartesian(grid, axis) {\r\n        var opt = {};\r\n        opt[axis.dim + 'AxisIndex'] = axis.index;\r\n        return grid.getCartesian(opt);\r\n    }\r\n    var pointerShapeBuilder = {\r\n        line: function (axis, pixelValue, otherExtent) {\r\n            var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\r\n            return {\r\n                type: 'Line',\r\n                subPixelOptimize: true,\r\n                shape: targetShape\r\n            };\r\n        },\r\n        shadow: function (axis, pixelValue, otherExtent) {\r\n            var bandWidth = Math.max(1, axis.getBandWidth());\r\n            var span = otherExtent[1] - otherExtent[0];\r\n            return {\r\n                type: 'Rect',\r\n                shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\r\n            };\r\n        }\r\n    };\r\n    function getAxisDimIndex(axis) {\r\n        return axis.dim === 'x' ? 0 : 1;\r\n    }\r\n    AxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\n\n    var AxisPointerModel = (function (_super) {\r\n        __extends(AxisPointerModel, _super);\r\n        function AxisPointerModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AxisPointerModel.type;\r\n            return _this;\r\n        }\r\n        AxisPointerModel.type = 'axisPointer';\r\n        AxisPointerModel.defaultOption = {\r\n            show: 'auto',\r\n            zlevel: 0,\r\n            z: 50,\r\n            type: 'line',\r\n            snap: false,\r\n            triggerTooltip: true,\r\n            value: null,\r\n            status: null,\r\n            link: [],\r\n            animation: null,\r\n            animationDurationUpdate: 200,\r\n            lineStyle: {\r\n                color: '#B9BEC9',\r\n                width: 1,\r\n                type: 'dashed'\r\n            },\r\n            shadowStyle: {\r\n                color: 'rgba(210,219,238,0.2)'\r\n            },\r\n            label: {\r\n                show: true,\r\n                formatter: null,\r\n                precision: 'auto',\r\n                margin: 3,\r\n                color: '#fff',\r\n                padding: [5, 7, 5, 7],\r\n                backgroundColor: 'auto',\r\n                borderColor: null,\r\n                borderWidth: 0,\r\n                borderRadius: 3\r\n            },\r\n            handle: {\r\n                show: false,\r\n                icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\r\n                size: 45,\r\n                margin: 50,\r\n                color: '#333',\r\n                shadowBlur: 3,\r\n                shadowColor: '#aaa',\r\n                shadowOffsetX: 0,\r\n                shadowOffsetY: 2,\r\n                throttle: 40\r\n            }\r\n        };\r\n        return AxisPointerModel;\r\n    }(ComponentModel));\n\n    ComponentModel.registerClass(AxisPointerModel);\r\n    registerPreprocessor(function (option) {\r\n        if (option) {\r\n            (!option.axisPointer || option.axisPointer.length === 0)\r\n                && (option.axisPointer = {});\r\n            var link = option.axisPointer.link;\r\n            if (link && !isArray(link)) {\r\n                option.axisPointer.link = [link];\r\n            }\r\n        }\r\n    });\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\r\n        ecModel.getComponent('axisPointer').coordSysAxesInfo =\r\n            collect(ecModel, api);\r\n    });\r\n    registerAction({\r\n        type: 'updateAxisPointer',\r\n        event: 'updateAxisPointer',\r\n        update: ':updateAxisPointer'\r\n    }, axisTrigger);\n\n    var TooltipModel = (function (_super) {\r\n        __extends(TooltipModel, _super);\r\n        function TooltipModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TooltipModel.type;\r\n            return _this;\r\n        }\r\n        TooltipModel.type = 'tooltip';\r\n        TooltipModel.dependencies = ['axisPointer'];\r\n        TooltipModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 60,\r\n            show: true,\r\n            showContent: true,\r\n            trigger: 'item',\r\n            triggerOn: 'mousemove|click',\r\n            alwaysShowContent: false,\r\n            displayMode: 'single',\r\n            renderMode: 'auto',\r\n            confine: null,\r\n            showDelay: 0,\r\n            hideDelay: 100,\r\n            transitionDuration: 0.4,\r\n            enterable: false,\r\n            backgroundColor: '#fff',\r\n            shadowBlur: 10,\r\n            shadowColor: 'rgba(0, 0, 0, .2)',\r\n            shadowOffsetX: 1,\r\n            shadowOffsetY: 2,\r\n            borderColor: '#333',\r\n            borderRadius: 4,\r\n            borderWidth: 1,\r\n            padding: null,\r\n            extraCssText: '',\r\n            axisPointer: {\r\n                type: 'line',\r\n                axis: 'auto',\r\n                animation: 'auto',\r\n                animationDurationUpdate: 200,\r\n                animationEasingUpdate: 'exponentialOut',\r\n                crossStyle: {\r\n                    color: '#999',\r\n                    width: 1,\r\n                    type: 'dashed',\r\n                    textStyle: {}\r\n                }\r\n            },\r\n            textStyle: {\r\n                color: '#666',\r\n                fontSize: 14\r\n            }\r\n        };\r\n        return TooltipModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(TooltipModel);\n\n    function shouldTooltipConfine(tooltipModel) {\r\n        var confineOption = tooltipModel.get('confine');\r\n        return confineOption != null\r\n            ? !!confineOption\r\n            : tooltipModel.get('renderMode') === 'richText';\r\n    }\n\n    var vendors = ['-ms-', '-moz-', '-o-', '-webkit-', ''];\r\n    var gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\r\n    function mirrorPos(pos) {\r\n        pos = pos === 'left'\r\n            ? 'right'\r\n            : pos === 'right'\r\n                ? 'left'\r\n                : pos === 'top'\r\n                    ? 'bottom'\r\n                    : 'top';\r\n        return pos;\r\n    }\r\n    function assembleArrow(backgroundColor, borderColor, arrowPosition) {\r\n        if (!isString(arrowPosition) || arrowPosition === 'inside') {\r\n            return '';\r\n        }\r\n        borderColor = convertToColorString(borderColor);\r\n        var arrowPos = mirrorPos(arrowPosition);\r\n        var positionStyle = '';\r\n        var transformStyle = '';\r\n        if (indexOf(['left', 'right'], arrowPos) > -1) {\r\n            positionStyle = arrowPos + \":-6px;top:50%;\";\r\n            transformStyle = \"translateY(-50%) rotate(\" + (arrowPos === 'left' ? -225 : -45) + \"deg)\";\r\n        }\r\n        else {\r\n            positionStyle = arrowPos + \":-6px;left:50%;\";\r\n            transformStyle = \"translateX(-50%) rotate(\" + (arrowPos === 'top' ? 225 : 45) + \"deg)\";\r\n        }\r\n        transformStyle = map(vendors, function (vendorPrefix) {\r\n            return vendorPrefix + 'transform:' + transformStyle;\r\n        }).join(';');\r\n        var styleCss = [\r\n            'position:absolute;width:10px;height:10px;',\r\n            \"\" + positionStyle + transformStyle + \";\",\r\n            \"border-bottom: \" + borderColor + \" solid 1px;\",\r\n            \"border-right: \" + borderColor + \" solid 1px;\",\r\n            \"background-color: \" + backgroundColor + \";\",\r\n            'box-shadow: 8px 8px 16px -3px #000;'\r\n        ];\r\n        return \"<div style=\\\"\" + styleCss.join('') + \"\\\"></div>\";\r\n    }\r\n    function assembleTransition(duration, onlyFade) {\r\n        var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\r\n        var transitionText = 'opacity ' + (duration / 2) + 's ' + transitionCurve + ','\r\n            + 'visibility ' + (duration / 2) + 's ' + transitionCurve;\r\n        if (!onlyFade) {\r\n            transitionText += ',left ' + duration + 's ' + transitionCurve\r\n                + ',top ' + duration + 's ' + transitionCurve;\r\n        }\r\n        return map(vendors, function (vendorPrefix) {\r\n            return vendorPrefix + 'transition:' + transitionText;\r\n        }).join(';');\r\n    }\r\n    function assembleFont(textStyleModel) {\r\n        var cssText = [];\r\n        var fontSize = textStyleModel.get('fontSize');\r\n        var color = textStyleModel.getTextColor();\r\n        color && cssText.push('color:' + color);\r\n        cssText.push('font:' + textStyleModel.getFont());\r\n        fontSize\r\n            && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\r\n        var shadowColor = textStyleModel.get('textShadowColor');\r\n        var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\r\n        var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\r\n        var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\r\n        shadowColor && shadowBlur\r\n            && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px '\r\n                + shadowBlur + 'px ' + shadowColor);\r\n        each(['decoration', 'align'], function (name) {\r\n            var val = textStyleModel.get(name);\r\n            val && cssText.push('text-' + name + ':' + val);\r\n        });\r\n        return cssText.join(';');\r\n    }\r\n    function assembleCssText(tooltipModel, enableTransition, onlyFade) {\r\n        var cssText = [];\r\n        var transitionDuration = tooltipModel.get('transitionDuration');\r\n        var backgroundColor = tooltipModel.get('backgroundColor');\r\n        var shadowBlur = tooltipModel.get('shadowBlur');\r\n        var shadowColor = tooltipModel.get('shadowColor');\r\n        var shadowOffsetX = tooltipModel.get('shadowOffsetX');\r\n        var shadowOffsetY = tooltipModel.get('shadowOffsetY');\r\n        var textStyleModel = tooltipModel.getModel('textStyle');\r\n        var padding = getPaddingFromTooltipModel(tooltipModel, 'html');\r\n        var boxShadow = shadowOffsetX + \"px \" + shadowOffsetY + \"px \" + shadowBlur + \"px \" + shadowColor;\r\n        cssText.push('box-shadow:' + boxShadow);\r\n        enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade));\r\n        if (backgroundColor) {\r\n            if (env.canvasSupported) {\r\n                cssText.push('background-Color:' + backgroundColor);\r\n            }\r\n            else {\r\n                cssText.push('background-Color:#' + toHex(backgroundColor));\r\n                cssText.push('filter:alpha(opacity=70)');\r\n            }\r\n        }\r\n        each(['width', 'color', 'radius'], function (name) {\r\n            var borderName = 'border-' + name;\r\n            var camelCase = toCamelCase(borderName);\r\n            var val = tooltipModel.get(camelCase);\r\n            val != null\r\n                && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\r\n        });\r\n        cssText.push(assembleFont(textStyleModel));\r\n        if (padding != null) {\r\n            cssText.push('padding:' + normalizeCssArray$1(padding).join('px ') + 'px');\r\n        }\r\n        return cssText.join(';') + ';';\r\n    }\r\n    function makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\r\n        var zrPainter = zr && zr.painter;\r\n        if (appendToBody) {\r\n            var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\r\n            if (zrViewportRoot) {\r\n                transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\r\n            }\r\n        }\r\n        else {\r\n            out[0] = zrX;\r\n            out[1] = zrY;\r\n            var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\r\n            if (viewportRootOffset) {\r\n                out[0] += viewportRootOffset.offsetLeft;\r\n                out[1] += viewportRootOffset.offsetTop;\r\n            }\r\n        }\r\n        out[2] = out[0] / zr.getWidth();\r\n        out[3] = out[1] / zr.getHeight();\r\n    }\r\n    var TooltipHTMLContent = (function () {\r\n        function TooltipHTMLContent(container, api, opt) {\r\n            this._show = false;\r\n            this._styleCoord = [0, 0, 0, 0];\r\n            this._enterable = true;\r\n            this._firstShow = true;\r\n            this._longHide = true;\r\n            if (env.wxa) {\r\n                return null;\r\n            }\r\n            var el = document.createElement('div');\r\n            el.domBelongToZr = true;\r\n            this.el = el;\r\n            var zr = this._zr = api.getZr();\r\n            var appendToBody = this._appendToBody = opt && opt.appendToBody;\r\n            makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\r\n            if (appendToBody) {\r\n                document.body.appendChild(el);\r\n            }\r\n            else {\r\n                container.appendChild(el);\r\n            }\r\n            this._container = container;\r\n            var self = this;\r\n            el.onmouseenter = function () {\r\n                if (self._enterable) {\r\n                    clearTimeout(self._hideTimeout);\r\n                    self._show = true;\r\n                }\r\n                self._inContent = true;\r\n            };\r\n            el.onmousemove = function (e) {\r\n                e = e || window.event;\r\n                if (!self._enterable) {\r\n                    var handler = zr.handler;\r\n                    var zrViewportRoot = zr.painter.getViewportRoot();\r\n                    normalizeEvent(zrViewportRoot, e, true);\r\n                    handler.dispatch('mousemove', e);\r\n                }\r\n            };\r\n            el.onmouseleave = function () {\r\n                self._inContent = false;\r\n                if (self._enterable) {\r\n                    if (self._show) {\r\n                        self.hideLater(self._hideDelay);\r\n                    }\r\n                }\r\n            };\r\n        }\r\n        TooltipHTMLContent.prototype.update = function (tooltipModel) {\r\n            var container = this._container;\r\n            var stl = container.currentStyle\r\n                || document.defaultView.getComputedStyle(container);\r\n            var domStyle = container.style;\r\n            if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\r\n                domStyle.position = 'relative';\r\n            }\r\n            var alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n            alwaysShowContent && this._moveIfResized();\r\n            this.el.className = tooltipModel.get('className') || '';\r\n        };\r\n        TooltipHTMLContent.prototype.show = function (tooltipModel, nearPointColor) {\r\n            clearTimeout(this._hideTimeout);\r\n            clearTimeout(this._longHideTimeout);\r\n            var el = this.el;\r\n            var styleCoord = this._styleCoord;\r\n            var offset = el.offsetHeight / 2;\r\n            nearPointColor = convertToColorString(nearPointColor);\r\n            el.style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide)\r\n                + ';left:' + styleCoord[0] + 'px;top:' + (styleCoord[1] - offset) + 'px;'\r\n                + (\"border-color: \" + nearPointColor + \";\")\r\n                + (tooltipModel.get('extraCssText') || '');\r\n            el.style.display = el.innerHTML ? 'block' : 'none';\r\n            el.style.pointerEvents = this._enterable ? 'auto' : 'none';\r\n            this._show = true;\r\n            this._firstShow = false;\r\n            this._longHide = false;\r\n        };\r\n        TooltipHTMLContent.prototype.setContent = function (content, markers, tooltipModel, borderColor, arrowPosition) {\r\n            if (content == null) {\r\n                return;\r\n            }\r\n            var el = this.el;\r\n            if (isString(arrowPosition) && tooltipModel.get('trigger') === 'item'\r\n                && !shouldTooltipConfine(tooltipModel)) {\r\n                content += assembleArrow(tooltipModel.get('backgroundColor'), borderColor, arrowPosition);\r\n            }\r\n            if (isString(content)) {\r\n                el.innerHTML = content;\r\n            }\r\n            else if (content) {\r\n                el.innerHTML = '';\r\n                if (!isArray(content)) {\r\n                    content = [content];\r\n                }\r\n                for (var i = 0; i < content.length; i++) {\r\n                    if (isDom(content[i]) && content[i].parentNode !== el) {\r\n                        el.appendChild(content[i]);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        TooltipHTMLContent.prototype.setEnterable = function (enterable) {\r\n            this._enterable = enterable;\r\n        };\r\n        TooltipHTMLContent.prototype.getSize = function () {\r\n            var el = this.el;\r\n            return [el.clientWidth, el.clientHeight];\r\n        };\r\n        TooltipHTMLContent.prototype.moveTo = function (zrX, zrY) {\r\n            var styleCoord = this._styleCoord;\r\n            makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\r\n            if (styleCoord[0] != null && styleCoord[1] != null) {\r\n                var style = this.el.style;\r\n                style.left = styleCoord[0].toFixed(0) + 'px';\r\n                style.top = styleCoord[1].toFixed(0) + 'px';\r\n            }\r\n        };\r\n        TooltipHTMLContent.prototype._moveIfResized = function () {\r\n            var ratioX = this._styleCoord[2];\r\n            var ratioY = this._styleCoord[3];\r\n            this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\r\n        };\r\n        TooltipHTMLContent.prototype.hide = function () {\r\n            var _this = this;\r\n            this.el.style.visibility = 'hidden';\r\n            this.el.style.opacity = '0';\r\n            this._show = false;\r\n            this._longHideTimeout = setTimeout(function () { return _this._longHide = true; }, 500);\r\n        };\r\n        TooltipHTMLContent.prototype.hideLater = function (time) {\r\n            if (this._show && !(this._inContent && this._enterable)) {\r\n                if (time) {\r\n                    this._hideDelay = time;\r\n                    this._show = false;\r\n                    this._hideTimeout = setTimeout(bind(this.hide, this), time);\r\n                }\r\n                else {\r\n                    this.hide();\r\n                }\r\n            }\r\n        };\r\n        TooltipHTMLContent.prototype.isShow = function () {\r\n            return this._show;\r\n        };\r\n        TooltipHTMLContent.prototype.dispose = function () {\r\n            this.el.parentNode.removeChild(this.el);\r\n        };\r\n        TooltipHTMLContent.prototype.getOuterSize = function () {\r\n            var width = this.el.clientWidth;\r\n            var height = this.el.clientHeight;\r\n            if (document.defaultView && document.defaultView.getComputedStyle) {\r\n                var stl = document.defaultView.getComputedStyle(this.el);\r\n                if (stl) {\r\n                    width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\r\n                    height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\r\n                }\r\n            }\r\n            return { width: width, height: height };\r\n        };\r\n        return TooltipHTMLContent;\r\n    }());\n\n    var TooltipRichContent = (function () {\r\n        function TooltipRichContent(api) {\r\n            this._show = false;\r\n            this._styleCoord = [0, 0, 0, 0];\r\n            this._enterable = true;\r\n            this._zr = api.getZr();\r\n            makeStyleCoord$1(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2);\r\n        }\r\n        TooltipRichContent.prototype.update = function (tooltipModel) {\r\n            var alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n            alwaysShowContent && this._moveIfResized();\r\n        };\r\n        TooltipRichContent.prototype.show = function () {\r\n            if (this._hideTimeout) {\r\n                clearTimeout(this._hideTimeout);\r\n            }\r\n            this.el.show();\r\n            this._show = true;\r\n        };\r\n        TooltipRichContent.prototype.setContent = function (content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) {\r\n            if (isObject(content)) {\r\n                throwError(__DEV__ ? 'Passing DOM nodes as content is not supported in richText tooltip!' : '');\r\n            }\r\n            if (this.el) {\r\n                this._zr.remove(this.el);\r\n            }\r\n            var textStyleModel = tooltipModel.getModel('textStyle');\r\n            this.el = new ZRText({\r\n                style: {\r\n                    rich: markupStyleCreator.richTextStyles,\r\n                    text: content,\r\n                    lineHeight: 22,\r\n                    backgroundColor: tooltipModel.get('backgroundColor'),\r\n                    borderRadius: tooltipModel.get('borderRadius'),\r\n                    borderWidth: 1,\r\n                    borderColor: borderColor,\r\n                    shadowColor: tooltipModel.get('shadowColor'),\r\n                    shadowBlur: tooltipModel.get('shadowBlur'),\r\n                    shadowOffsetX: tooltipModel.get('shadowOffsetX'),\r\n                    shadowOffsetY: tooltipModel.get('shadowOffsetY'),\r\n                    textShadowColor: textStyleModel.get('textShadowColor'),\r\n                    textShadowBlur: textStyleModel.get('textShadowBlur') || 0,\r\n                    textShadowOffsetX: textStyleModel.get('textShadowOffsetX') || 0,\r\n                    textShadowOffsetY: textStyleModel.get('textShadowOffsetY') || 0,\r\n                    fill: tooltipModel.get(['textStyle', 'color']),\r\n                    padding: getPaddingFromTooltipModel(tooltipModel, 'richText'),\r\n                    verticalAlign: 'top',\r\n                    align: 'left'\r\n                },\r\n                z: tooltipModel.get('z')\r\n            });\r\n            this._zr.add(this.el);\r\n            var self = this;\r\n            this.el.on('mouseover', function () {\r\n                if (self._enterable) {\r\n                    clearTimeout(self._hideTimeout);\r\n                    self._show = true;\r\n                }\r\n                self._inContent = true;\r\n            });\r\n            this.el.on('mouseout', function () {\r\n                if (self._enterable) {\r\n                    if (self._show) {\r\n                        self.hideLater(self._hideDelay);\r\n                    }\r\n                }\r\n                self._inContent = false;\r\n            });\r\n        };\r\n        TooltipRichContent.prototype.setEnterable = function (enterable) {\r\n            this._enterable = enterable;\r\n        };\r\n        TooltipRichContent.prototype.getSize = function () {\r\n            var el = this.el;\r\n            var bounding = this.el.getBoundingRect();\r\n            var shadowOuterSize = calcShadowOuterSize(el.style);\r\n            return [\r\n                bounding.width + shadowOuterSize.left + shadowOuterSize.right,\r\n                bounding.height + shadowOuterSize.top + shadowOuterSize.bottom\r\n            ];\r\n        };\r\n        TooltipRichContent.prototype.moveTo = function (x, y) {\r\n            var el = this.el;\r\n            if (el) {\r\n                var styleCoord = this._styleCoord;\r\n                makeStyleCoord$1(styleCoord, this._zr, x, y);\r\n                x = styleCoord[0];\r\n                y = styleCoord[1];\r\n                var style = el.style;\r\n                var borderWidth = mathMaxWith0(style.borderWidth || 0);\r\n                var shadowOuterSize = calcShadowOuterSize(style);\r\n                el.x = x + borderWidth + shadowOuterSize.left;\r\n                el.y = y + borderWidth + shadowOuterSize.top;\r\n                el.markRedraw();\r\n            }\r\n        };\r\n        TooltipRichContent.prototype._moveIfResized = function () {\r\n            var ratioX = this._styleCoord[2];\r\n            var ratioY = this._styleCoord[3];\r\n            this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\r\n        };\r\n        TooltipRichContent.prototype.hide = function () {\r\n            if (this.el) {\r\n                this.el.hide();\r\n            }\r\n            this._show = false;\r\n        };\r\n        TooltipRichContent.prototype.hideLater = function (time) {\r\n            if (this._show && !(this._inContent && this._enterable)) {\r\n                if (time) {\r\n                    this._hideDelay = time;\r\n                    this._show = false;\r\n                    this._hideTimeout = setTimeout(bind(this.hide, this), time);\r\n                }\r\n                else {\r\n                    this.hide();\r\n                }\r\n            }\r\n        };\r\n        TooltipRichContent.prototype.isShow = function () {\r\n            return this._show;\r\n        };\r\n        TooltipRichContent.prototype.getOuterSize = function () {\r\n            var size = this.getSize();\r\n            return {\r\n                width: size[0],\r\n                height: size[1]\r\n            };\r\n        };\r\n        TooltipRichContent.prototype.dispose = function () {\r\n            this._zr.remove(this.el);\r\n        };\r\n        return TooltipRichContent;\r\n    }());\r\n    function mathMaxWith0(val) {\r\n        return Math.max(0, val);\r\n    }\r\n    function calcShadowOuterSize(style) {\r\n        var shadowBlur = mathMaxWith0(style.shadowBlur || 0);\r\n        var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0);\r\n        var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0);\r\n        return {\r\n            left: mathMaxWith0(shadowBlur - shadowOffsetX),\r\n            right: mathMaxWith0(shadowBlur + shadowOffsetX),\r\n            top: mathMaxWith0(shadowBlur - shadowOffsetY),\r\n            bottom: mathMaxWith0(shadowBlur + shadowOffsetY)\r\n        };\r\n    }\r\n    function makeStyleCoord$1(out, zr, zrX, zrY) {\r\n        out[0] = zrX;\r\n        out[1] = zrY;\r\n        out[2] = out[0] / zr.getWidth();\r\n        out[3] = out[1] / zr.getHeight();\r\n    }\n\n    var bind$2 = bind;\r\n    var each$5 = each;\r\n    var parsePercent$3 = parsePercent$2;\r\n    var proxyRect = new Rect({\r\n        shape: { x: -1, y: -1, width: 2, height: 2 }\r\n    });\r\n    var TooltipView = (function (_super) {\r\n        __extends(TooltipView, _super);\r\n        function TooltipView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TooltipView.type;\r\n            return _this;\r\n        }\r\n        TooltipView.prototype.init = function (ecModel, api) {\r\n            if (env.node) {\r\n                return;\r\n            }\r\n            var tooltipModel = ecModel.getComponent('tooltip');\r\n            var renderMode = tooltipModel.get('renderMode');\r\n            this._renderMode = getTooltipRenderMode(renderMode);\r\n            this._tooltipContent = this._renderMode === 'richText'\r\n                ? new TooltipRichContent(api)\r\n                : new TooltipHTMLContent(api.getDom(), api, {\r\n                    appendToBody: tooltipModel.get('appendToBody', true)\r\n                });\r\n        };\r\n        TooltipView.prototype.render = function (tooltipModel, ecModel, api) {\r\n            if (env.node) {\r\n                return;\r\n            }\r\n            this.group.removeAll();\r\n            this._tooltipModel = tooltipModel;\r\n            this._ecModel = ecModel;\r\n            this._api = api;\r\n            this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n            var tooltipContent = this._tooltipContent;\r\n            tooltipContent.update(tooltipModel);\r\n            tooltipContent.setEnterable(tooltipModel.get('enterable'));\r\n            this._initGlobalListener();\r\n            this._keepShow();\r\n        };\r\n        TooltipView.prototype._initGlobalListener = function () {\r\n            var tooltipModel = this._tooltipModel;\r\n            var triggerOn = tooltipModel.get('triggerOn');\r\n            register('itemTooltip', this._api, bind$2(function (currTrigger, e, dispatchAction) {\r\n                if (triggerOn !== 'none') {\r\n                    if (triggerOn.indexOf(currTrigger) >= 0) {\r\n                        this._tryShow(e, dispatchAction);\r\n                    }\r\n                    else if (currTrigger === 'leave') {\r\n                        this._hide(dispatchAction);\r\n                    }\r\n                }\r\n            }, this));\r\n        };\r\n        TooltipView.prototype._keepShow = function () {\r\n            var tooltipModel = this._tooltipModel;\r\n            var ecModel = this._ecModel;\r\n            var api = this._api;\r\n            if (this._lastX != null\r\n                && this._lastY != null\r\n                && tooltipModel.get('triggerOn') !== 'none') {\r\n                var self_1 = this;\r\n                clearTimeout(this._refreshUpdateTimeout);\r\n                this._refreshUpdateTimeout = setTimeout(function () {\r\n                    !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {\r\n                        x: self_1._lastX,\r\n                        y: self_1._lastY,\r\n                        dataByCoordSys: self_1._lastDataByCoordSys\r\n                    });\r\n                });\r\n            }\r\n        };\r\n        TooltipView.prototype.manuallyShowTip = function (tooltipModel, ecModel, api, payload) {\r\n            if (payload.from === this.uid || env.node) {\r\n                return;\r\n            }\r\n            var dispatchAction = makeDispatchAction$1(payload, api);\r\n            this._ticket = '';\r\n            var dataByCoordSys = payload.dataByCoordSys;\r\n            if (payload.tooltip && payload.x != null && payload.y != null) {\r\n                var el = proxyRect;\r\n                el.x = payload.x;\r\n                el.y = payload.y;\r\n                el.update();\r\n                el.tooltip = payload.tooltip;\r\n                this._tryShow({\r\n                    offsetX: payload.x,\r\n                    offsetY: payload.y,\r\n                    target: el\r\n                }, dispatchAction);\r\n            }\r\n            else if (dataByCoordSys) {\r\n                this._tryShow({\r\n                    offsetX: payload.x,\r\n                    offsetY: payload.y,\r\n                    position: payload.position,\r\n                    dataByCoordSys: dataByCoordSys,\r\n                    tooltipOption: payload.tooltipOption\r\n                }, dispatchAction);\r\n            }\r\n            else if (payload.seriesIndex != null) {\r\n                if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\r\n                    return;\r\n                }\r\n                var pointInfo = findPointFromSeries(payload, ecModel);\r\n                var cx = pointInfo.point[0];\r\n                var cy = pointInfo.point[1];\r\n                if (cx != null && cy != null) {\r\n                    this._tryShow({\r\n                        offsetX: cx,\r\n                        offsetY: cy,\r\n                        position: payload.position,\r\n                        target: pointInfo.el\r\n                    }, dispatchAction);\r\n                }\r\n            }\r\n            else if (payload.x != null && payload.y != null) {\r\n                api.dispatchAction({\r\n                    type: 'updateAxisPointer',\r\n                    x: payload.x,\r\n                    y: payload.y\r\n                });\r\n                this._tryShow({\r\n                    offsetX: payload.x,\r\n                    offsetY: payload.y,\r\n                    position: payload.position,\r\n                    target: api.getZr().findHover(payload.x, payload.y).target\r\n                }, dispatchAction);\r\n            }\r\n        };\r\n        TooltipView.prototype.manuallyHideTip = function (tooltipModel, ecModel, api, payload) {\r\n            var tooltipContent = this._tooltipContent;\r\n            if (!this._alwaysShowContent && this._tooltipModel) {\r\n                tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\r\n            }\r\n            this._lastX = this._lastY = this._lastDataByCoordSys = null;\r\n            if (payload.from !== this.uid) {\r\n                this._hide(makeDispatchAction$1(payload, api));\r\n            }\r\n        };\r\n        TooltipView.prototype._manuallyAxisShowTip = function (tooltipModel, ecModel, api, payload) {\r\n            var seriesIndex = payload.seriesIndex;\r\n            var dataIndex = payload.dataIndex;\r\n            var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\r\n            if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\r\n                return;\r\n            }\r\n            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n            if (!seriesModel) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var tooltipCascadedModel = buildTooltipModel([\r\n                data.getItemModel(dataIndex),\r\n                seriesModel,\r\n                (seriesModel.coordinateSystem || {}).model,\r\n                tooltipModel\r\n            ]);\r\n            if (tooltipCascadedModel.get('trigger') !== 'axis') {\r\n                return;\r\n            }\r\n            api.dispatchAction({\r\n                type: 'updateAxisPointer',\r\n                seriesIndex: seriesIndex,\r\n                dataIndex: dataIndex,\r\n                position: payload.position\r\n            });\r\n            return true;\r\n        };\r\n        TooltipView.prototype._tryShow = function (e, dispatchAction) {\r\n            var el = e.target;\r\n            var tooltipModel = this._tooltipModel;\r\n            if (!tooltipModel) {\r\n                return;\r\n            }\r\n            this._lastX = e.offsetX;\r\n            this._lastY = e.offsetY;\r\n            var dataByCoordSys = e.dataByCoordSys;\r\n            if (dataByCoordSys && dataByCoordSys.length) {\r\n                this._showAxisTooltip(dataByCoordSys, e);\r\n            }\r\n            else if (el && findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; })) {\r\n                this._lastDataByCoordSys = null;\r\n                this._showSeriesItemTooltip(e, el, dispatchAction);\r\n            }\r\n            else if (el && el.tooltip) {\r\n                this._lastDataByCoordSys = null;\r\n                this._showComponentItemTooltip(e, el, dispatchAction);\r\n            }\r\n            else {\r\n                this._lastDataByCoordSys = null;\r\n                this._hide(dispatchAction);\r\n            }\r\n        };\r\n        TooltipView.prototype._showOrMove = function (tooltipModel, cb) {\r\n            var delay = tooltipModel.get('showDelay');\r\n            cb = bind(cb, this);\r\n            clearTimeout(this._showTimout);\r\n            delay > 0\r\n                ? (this._showTimout = setTimeout(cb, delay))\r\n                : cb();\r\n        };\r\n        TooltipView.prototype._showAxisTooltip = function (dataByCoordSys, e) {\r\n            var ecModel = this._ecModel;\r\n            var globalTooltipModel = this._tooltipModel;\r\n            var point = [e.offsetX, e.offsetY];\r\n            var singleTooltipModel = buildTooltipModel([\r\n                e.tooltipOption,\r\n                globalTooltipModel\r\n            ]);\r\n            var renderMode = this._renderMode;\r\n            var cbParamsList = [];\r\n            var articleMarkup = createTooltipMarkup('section', {\r\n                blocks: [],\r\n                noHeader: true\r\n            });\r\n            var markupTextArrLegacy = [];\r\n            var markupStyleCreator = new TooltipMarkupStyleCreator();\r\n            each$5(dataByCoordSys, function (itemCoordSys) {\r\n                each$5(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$5(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$5(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$5(lastIndices, function (lastIdxItem, j) {\r\n                        var newIdxItem = newIndices[j];\r\n                        contentNotChanged = contentNotChanged\r\n                            && lastIdxItem.seriesIndex === newIdxItem.seriesIndex\r\n                            && lastIdxItem.dataIndex === newIdxItem.dataIndex;\r\n                    });\r\n                });\r\n            });\r\n            this._lastDataByCoordSys = dataByCoordSys;\r\n            return !!contentNotChanged;\r\n        };\r\n        TooltipView.prototype._hide = function (dispatchAction) {\r\n            this._lastDataByCoordSys = null;\r\n            dispatchAction({\r\n                type: 'hideTip',\r\n                from: this.uid\r\n            });\r\n        };\r\n        TooltipView.prototype.dispose = function (ecModel, api) {\r\n            if (env.node) {\r\n                return;\r\n            }\r\n            this._tooltipContent.dispose();\r\n            unregister('itemTooltip', api);\r\n        };\r\n        TooltipView.type = 'tooltip';\r\n        return TooltipView;\r\n    }(ComponentView));\r\n    function buildTooltipModel(modelCascade) {\r\n        var resultModel = modelCascade.pop();\r\n        while (modelCascade.length) {\r\n            var tooltipOpt = modelCascade.pop();\r\n            if (tooltipOpt) {\r\n                if (tooltipOpt instanceof Model) {\r\n                    tooltipOpt = tooltipOpt.get('tooltip', true);\r\n                }\r\n                if (isString(tooltipOpt)) {\r\n                    tooltipOpt = {\r\n                        formatter: tooltipOpt\r\n                    };\r\n                }\r\n                resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\r\n            }\r\n        }\r\n        return resultModel;\r\n    }\r\n    function makeDispatchAction$1(payload, api) {\r\n        return payload.dispatchAction || bind(api.dispatchAction, api);\r\n    }\r\n    function refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\r\n        var size = content.getOuterSize();\r\n        var width = size.width;\r\n        var height = size.height;\r\n        if (gapH != null) {\r\n            if (x + width + gapH + 2 > viewWidth) {\r\n                x -= width + gapH;\r\n            }\r\n            else {\r\n                x += gapH;\r\n            }\r\n        }\r\n        if (gapV != null) {\r\n            if (y + height + gapV > viewHeight) {\r\n                y -= height + gapV;\r\n            }\r\n            else {\r\n                y += gapV;\r\n            }\r\n        }\r\n        return [x, y];\r\n    }\r\n    function confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\r\n        var size = content.getOuterSize();\r\n        var width = size.width;\r\n        var height = size.height;\r\n        x = Math.min(x + width, viewWidth) - width;\r\n        y = Math.min(y + height, viewHeight) - height;\r\n        x = Math.max(x, 0);\r\n        y = Math.max(y, 0);\r\n        return [x, y];\r\n    }\r\n    function calcTooltipPosition(position, rect, contentSize) {\r\n        var domWidth = contentSize[0];\r\n        var domHeight = contentSize[1];\r\n        var gap = 10;\r\n        var offset = 5;\r\n        var x = 0;\r\n        var y = 0;\r\n        var rectWidth = rect.width;\r\n        var rectHeight = rect.height;\r\n        switch (position) {\r\n            case 'inside':\r\n                x = rect.x + rectWidth / 2 - domWidth / 2;\r\n                y = rect.y + rectHeight / 2 - domHeight / 2;\r\n                break;\r\n            case 'top':\r\n                x = rect.x + rectWidth / 2 - domWidth / 2;\r\n                y = rect.y - domHeight - gap;\r\n                break;\r\n            case 'bottom':\r\n                x = rect.x + rectWidth / 2 - domWidth / 2;\r\n                y = rect.y + rectHeight + gap;\r\n                break;\r\n            case 'left':\r\n                x = rect.x - domWidth - gap - offset;\r\n                y = rect.y + rectHeight / 2 - domHeight / 2;\r\n                break;\r\n            case 'right':\r\n                x = rect.x + rectWidth + gap + offset;\r\n                y = rect.y + rectHeight / 2 - domHeight / 2;\r\n        }\r\n        return [x, y];\r\n    }\r\n    function isCenterAlign(align) {\r\n        return align === 'center' || align === 'middle';\r\n    }\r\n    ComponentView.registerClass(TooltipView);\n\n    registerAction({\r\n        type: 'showTip',\r\n        event: 'showTip',\r\n        update: 'tooltip:manuallyShowTip'\r\n    }, function () { });\r\n    registerAction({\r\n        type: 'hideTip',\r\n        event: 'hideTip',\r\n        update: 'tooltip:manuallyHideTip'\r\n    }, function () { });\n\n    var getDefaultSelectorOptions = function (ecModel, type) {\r\n        if (type === 'all') {\r\n            return {\r\n                type: 'all',\r\n                title: ecModel.getLocale(['legend', 'selector', 'all'])\r\n            };\r\n        }\r\n        else if (type === 'inverse') {\r\n            return {\r\n                type: 'inverse',\r\n                title: ecModel.getLocale(['legend', 'selector', 'inverse'])\r\n            };\r\n        }\r\n    };\r\n    var LegendModel = (function (_super) {\r\n        __extends(LegendModel, _super);\r\n        function LegendModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LegendModel.type;\r\n            _this.layoutMode = {\r\n                type: 'box',\r\n                ignoreSize: true\r\n            };\r\n            return _this;\r\n        }\r\n        LegendModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            option.selected = option.selected || {};\r\n            this._updateSelector(option);\r\n        };\r\n        LegendModel.prototype.mergeOption = function (option, ecModel) {\r\n            _super.prototype.mergeOption.call(this, option, ecModel);\r\n            this._updateSelector(option);\r\n        };\r\n        LegendModel.prototype._updateSelector = function (option) {\r\n            var selector = option.selector;\r\n            var ecModel = this.ecModel;\r\n            if (selector === true) {\r\n                selector = option.selector = ['all', 'inverse'];\r\n            }\r\n            if (isArray(selector)) {\r\n                each(selector, function (item, index) {\r\n                    isString(item) && (item = { type: item });\r\n                    selector[index] = merge(item, getDefaultSelectorOptions(ecModel, item.type));\r\n                });\r\n            }\r\n        };\r\n        LegendModel.prototype.optionUpdated = function () {\r\n            this._updateData(this.ecModel);\r\n            var legendData = this._data;\r\n            if (legendData[0] && this.get('selectedMode') === 'single') {\r\n                var hasSelected = false;\r\n                for (var i = 0; i < legendData.length; i++) {\r\n                    var name_1 = legendData[i].get('name');\r\n                    if (this.isSelected(name_1)) {\r\n                        this.select(name_1);\r\n                        hasSelected = true;\r\n                        break;\r\n                    }\r\n                }\r\n                !hasSelected && this.select(legendData[0].get('name'));\r\n            }\r\n        };\r\n        LegendModel.prototype._updateData = function (ecModel) {\r\n            var potentialData = [];\r\n            var availableNames = [];\r\n            ecModel.eachRawSeries(function (seriesModel) {\r\n                var seriesName = seriesModel.name;\r\n                availableNames.push(seriesName);\r\n                var isPotential;\r\n                if (seriesModel.legendVisualProvider) {\r\n                    var provider = seriesModel.legendVisualProvider;\r\n                    var names = provider.getAllNames();\r\n                    if (!ecModel.isSeriesFiltered(seriesModel)) {\r\n                        availableNames = availableNames.concat(names);\r\n                    }\r\n                    if (names.length) {\r\n                        potentialData = potentialData.concat(names);\r\n                    }\r\n                    else {\r\n                        isPotential = true;\r\n                    }\r\n                }\r\n                else {\r\n                    isPotential = true;\r\n                }\r\n                if (isPotential && isNameSpecified(seriesModel)) {\r\n                    potentialData.push(seriesModel.name);\r\n                }\r\n            });\r\n            this._availableNames = availableNames;\r\n            var rawData = this.get('data') || potentialData;\r\n            var legendData = map(rawData, function (dataItem) {\r\n                if (typeof dataItem === 'string' || typeof dataItem === 'number') {\r\n                    dataItem = {\r\n                        name: dataItem\r\n                    };\r\n                }\r\n                return new Model(dataItem, this, this.ecModel);\r\n            }, this);\r\n            this._data = legendData;\r\n        };\r\n        LegendModel.prototype.getData = function () {\r\n            return this._data;\r\n        };\r\n        LegendModel.prototype.select = function (name) {\r\n            var selected = this.option.selected;\r\n            var selectedMode = this.get('selectedMode');\r\n            if (selectedMode === 'single') {\r\n                var data = this._data;\r\n                each(data, function (dataItem) {\r\n                    selected[dataItem.get('name')] = false;\r\n                });\r\n            }\r\n            selected[name] = true;\r\n        };\r\n        LegendModel.prototype.unSelect = function (name) {\r\n            if (this.get('selectedMode') !== 'single') {\r\n                this.option.selected[name] = false;\r\n            }\r\n        };\r\n        LegendModel.prototype.toggleSelected = function (name) {\r\n            var selected = this.option.selected;\r\n            if (!selected.hasOwnProperty(name)) {\r\n                selected[name] = true;\r\n            }\r\n            this[selected[name] ? 'unSelect' : 'select'](name);\r\n        };\r\n        LegendModel.prototype.allSelect = function () {\r\n            var data = this._data;\r\n            var selected = this.option.selected;\r\n            each(data, function (dataItem) {\r\n                selected[dataItem.get('name', true)] = true;\r\n            });\r\n        };\r\n        LegendModel.prototype.inverseSelect = function () {\r\n            var data = this._data;\r\n            var selected = this.option.selected;\r\n            each(data, function (dataItem) {\r\n                var name = dataItem.get('name', true);\r\n                if (!selected.hasOwnProperty(name)) {\r\n                    selected[name] = true;\r\n                }\r\n                selected[name] = !selected[name];\r\n            });\r\n        };\r\n        LegendModel.prototype.isSelected = function (name) {\r\n            var selected = this.option.selected;\r\n            return !(selected.hasOwnProperty(name) && !selected[name])\r\n                && indexOf(this._availableNames, name) >= 0;\r\n        };\r\n        LegendModel.prototype.getOrient = function () {\r\n            return this.get('orient') === 'vertical'\r\n                ? { index: 1, name: 'vertical' }\r\n                : { index: 0, name: 'horizontal' };\r\n        };\r\n        LegendModel.type = 'legend.plain';\r\n        LegendModel.dependencies = ['series'];\r\n        LegendModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 4,\r\n            show: true,\r\n            orient: 'horizontal',\r\n            left: 'center',\r\n            top: 0,\r\n            align: 'auto',\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderColor: '#ccc',\r\n            borderRadius: 0,\r\n            borderWidth: 0,\r\n            padding: 5,\r\n            itemGap: 10,\r\n            itemWidth: 25,\r\n            itemHeight: 14,\r\n            inactiveColor: '#ccc',\r\n            inactiveBorderColor: '#ccc',\r\n            itemStyle: {\r\n                borderWidth: 0\r\n            },\r\n            textStyle: {\r\n                color: '#333'\r\n            },\r\n            selectedMode: true,\r\n            selector: false,\r\n            selectorLabel: {\r\n                show: true,\r\n                borderRadius: 10,\r\n                padding: [3, 5, 3, 5],\r\n                fontSize: 12,\r\n                fontFamily: ' sans-serif',\r\n                color: '#666',\r\n                borderWidth: 1,\r\n                borderColor: '#666'\r\n            },\r\n            emphasis: {\r\n                selectorLabel: {\r\n                    show: true,\r\n                    color: '#eee',\r\n                    backgroundColor: '#666'\r\n                }\r\n            },\r\n            selectorPosition: 'auto',\r\n            selectorItemGap: 7,\r\n            selectorButtonGap: 10,\r\n            tooltip: {\r\n                show: false\r\n            }\r\n        };\r\n        return LegendModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(LegendModel);\n\n    function legendSelectActionHandler(methodName, payload, ecModel) {\r\n        var selectedMap = {};\r\n        var isToggleSelect = methodName === 'toggleSelected';\r\n        var isSelected;\r\n        ecModel.eachComponent('legend', function (legendModel) {\r\n            if (isToggleSelect && isSelected != null) {\r\n                legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\r\n            }\r\n            else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\r\n                legendModel[methodName]();\r\n            }\r\n            else {\r\n                legendModel[methodName](payload.name);\r\n                isSelected = legendModel.isSelected(payload.name);\r\n            }\r\n            var legendData = legendModel.getData();\r\n            each(legendData, function (model) {\r\n                var name = model.get('name');\r\n                if (name === '\\n' || name === '') {\r\n                    return;\r\n                }\r\n                var isItemSelected = legendModel.isSelected(name);\r\n                if (selectedMap.hasOwnProperty(name)) {\r\n                    selectedMap[name] = selectedMap[name] && isItemSelected;\r\n                }\r\n                else {\r\n                    selectedMap[name] = isItemSelected;\r\n                }\r\n            });\r\n        });\r\n        return (methodName === 'allSelect' || methodName === 'inverseSelect')\r\n            ? {\r\n                selected: selectedMap\r\n            }\r\n            : {\r\n                name: payload.name,\r\n                selected: selectedMap\r\n            };\r\n    }\r\n    registerAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected'));\r\n    registerAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect'));\r\n    registerAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect'));\r\n    registerAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select'));\r\n    registerAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect'));\n\n    function layout$2(group, componentModel, api) {\r\n        var boxLayoutParams = componentModel.getBoxLayoutParams();\r\n        var padding = componentModel.get('padding');\r\n        var viewportSize = { width: api.getWidth(), height: api.getHeight() };\r\n        var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\r\n        box(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\r\n        positionElement(group, boxLayoutParams, viewportSize, padding);\r\n    }\r\n    function makeBackground(rect, componentModel) {\r\n        var padding = normalizeCssArray$1(componentModel.get('padding'));\r\n        var style = componentModel.getItemStyle(['color', 'opacity']);\r\n        style.fill = componentModel.get('backgroundColor');\r\n        rect = new Rect({\r\n            shape: {\r\n                x: rect.x - padding[3],\r\n                y: rect.y - padding[0],\r\n                width: rect.width + padding[1] + padding[3],\r\n                height: rect.height + padding[0] + padding[2],\r\n                r: componentModel.get('borderRadius')\r\n            },\r\n            style: style,\r\n            silent: true,\r\n            z2: -1\r\n        });\r\n        return rect;\r\n    }\n\n    var curry$1 = curry;\r\n    var each$6 = each;\r\n    var Group$1 = Group;\r\n    var LegendView = (function (_super) {\r\n        __extends(LegendView, _super);\r\n        function LegendView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LegendView.type;\r\n            _this.newlineDisabled = false;\r\n            return _this;\r\n        }\r\n        LegendView.prototype.init = function () {\r\n            this.group.add(this._contentGroup = new Group$1());\r\n            this.group.add(this._selectorGroup = new Group$1());\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$6(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$1();\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$6(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$1();\r\n            var textStyleModel = itemModel.getModel('textStyle');\r\n            var itemIcon = itemModel.get('icon');\r\n            var tooltipModel = itemModel.getModel('tooltip');\r\n            var legendGlobalTooltipModel = tooltipModel.parentModel;\r\n            legendSymbolType = itemIcon || legendSymbolType;\r\n            var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, symbolKeepAspect == null ? true : symbolKeepAspect);\r\n            itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected));\r\n            if (!itemIcon && symbolType\r\n                && ((symbolType !== legendSymbolType) || symbolType === 'none')) {\r\n                var size = itemHeight * 0.8;\r\n                if (symbolType === 'none') {\r\n                    symbolType = 'circle';\r\n                }\r\n                var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, symbolKeepAspect == null ? true : symbolKeepAspect);\r\n                itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected));\r\n            }\r\n            var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\r\n            var textAlign = itemAlign;\r\n            var formatter = legendModel.get('formatter');\r\n            var content = name;\r\n            if (typeof formatter === 'string' && formatter) {\r\n                content = formatter.replace('{name}', name != null ? name : '');\r\n            }\r\n            else if (typeof formatter === 'function') {\r\n                content = formatter(name);\r\n            }\r\n            itemGroup.add(new ZRText({\r\n                style: createTextStyle(textStyleModel, {\r\n                    text: content,\r\n                    x: textX,\r\n                    y: itemHeight / 2,\r\n                    fill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\r\n                    align: textAlign,\r\n                    verticalAlign: 'middle'\r\n                })\r\n            }));\r\n            var hitRect = new Rect({\r\n                shape: itemGroup.getBoundingRect(),\r\n                invisible: true\r\n            });\r\n            if (tooltipModel.get('show')) {\r\n                var formatterParams = {\r\n                    componentType: 'legend',\r\n                    legendIndex: legendModel.componentIndex,\r\n                    name: name,\r\n                    $vars: ['name']\r\n                };\r\n                hitRect.tooltip = extend({\r\n                    content: name,\r\n                    formatter: legendGlobalTooltipModel.get('formatter', true)\r\n                        || function (params) {\r\n                            return params.name;\r\n                        },\r\n                    formatterParams: formatterParams\r\n                }, tooltipModel.option);\r\n            }\r\n            itemGroup.add(hitRect);\r\n            itemGroup.eachChild(function (child) {\r\n                child.silent = true;\r\n            });\r\n            hitRect.silent = !selectMode;\r\n            this.getContentGroup().add(itemGroup);\r\n            enableHoverEmphasis(itemGroup);\r\n            itemGroup.__legendDataIndex = dataIndex;\r\n            return itemGroup;\r\n        };\r\n        LegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\r\n            var contentGroup = this.getContentGroup();\r\n            var selectorGroup = this.getSelectorGroup();\r\n            box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\r\n            var contentRect = contentGroup.getBoundingRect();\r\n            var contentPos = [-contentRect.x, -contentRect.y];\r\n            selectorGroup.markRedraw();\r\n            contentGroup.markRedraw();\r\n            if (selector) {\r\n                box('horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\r\n                var selectorRect = selectorGroup.getBoundingRect();\r\n                var selectorPos = [-selectorRect.x, -selectorRect.y];\r\n                var selectorButtonGap = legendModel.get('selectorButtonGap', true);\r\n                var orientIdx = legendModel.getOrient().index;\r\n                var wh = orientIdx === 0 ? 'width' : 'height';\r\n                var hw = orientIdx === 0 ? 'height' : 'width';\r\n                var yx = orientIdx === 0 ? 'y' : 'x';\r\n                if (selectorPosition === 'end') {\r\n                    selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\r\n                }\r\n                else {\r\n                    contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\r\n                }\r\n                selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\r\n                selectorGroup.x = selectorPos[0];\r\n                selectorGroup.y = selectorPos[1];\r\n                contentGroup.x = contentPos[0];\r\n                contentGroup.y = contentPos[1];\r\n                var mainRect = { x: 0, y: 0 };\r\n                mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\r\n                mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\r\n                mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\r\n                return mainRect;\r\n            }\r\n            else {\r\n                contentGroup.x = contentPos[0];\r\n                contentGroup.y = contentPos[1];\r\n                return this.group.getBoundingRect();\r\n            }\r\n        };\r\n        LegendView.prototype.remove = function () {\r\n            this.getContentGroup().removeAll();\r\n            this._isFirstRender = true;\r\n        };\r\n        LegendView.type = 'legend.plain';\r\n        return LegendView;\r\n    }(ComponentView));\r\n    function setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected) {\r\n        var itemStyle;\r\n        if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\r\n            itemStyle = legendModelItemStyle.getItemStyle();\r\n            symbol.style.stroke = borderColor;\r\n            symbol.style.decal = decal;\r\n            if (!isSelected) {\r\n                itemStyle.stroke = inactiveBorderColor;\r\n            }\r\n        }\r\n        else {\r\n            itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\r\n        }\r\n        symbol.setStyle(itemStyle);\r\n        return symbol;\r\n    }\r\n    function dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\r\n        dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\r\n        api.dispatchAction({\r\n            type: 'legendToggleSelect',\r\n            name: seriesName != null ? seriesName : dataName\r\n        });\r\n        dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\r\n    }\r\n    function isUseHoverLayer(api) {\r\n        var list = api.getZr().storage.getDisplayList();\r\n        var emphasisState;\r\n        var i = 0;\r\n        var len = list.length;\r\n        while (i < len && !(emphasisState = list[i].states.emphasis)) {\r\n            i++;\r\n        }\r\n        return emphasisState && emphasisState.hoverLayer;\r\n    }\r\n    function dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\r\n        if (!isUseHoverLayer(api)) {\r\n            api.dispatchAction({\r\n                type: 'highlight',\r\n                seriesName: seriesName,\r\n                name: dataName,\r\n                excludeSeriesId: excludeSeriesId\r\n            });\r\n        }\r\n    }\r\n    function dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\r\n        if (!isUseHoverLayer(api)) {\r\n            api.dispatchAction({\r\n                type: 'downplay',\r\n                seriesName: seriesName,\r\n                name: dataName,\r\n                excludeSeriesId: excludeSeriesId\r\n            });\r\n        }\r\n    }\r\n    ComponentView.registerClass(LegendView);\n\n    function legendFilter(ecModel) {\r\n        var legendModels = ecModel.findComponents({\r\n            mainType: 'legend'\r\n        });\r\n        if (legendModels && legendModels.length) {\r\n            ecModel.filterSeries(function (series) {\r\n                for (var i = 0; i < legendModels.length; i++) {\r\n                    if (!legendModels[i].isSelected(series.name)) {\r\n                        return false;\r\n                    }\r\n                }\r\n                return true;\r\n            });\r\n        }\r\n    }\n\n    registerProcessor(PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\r\n    ComponentModel.registerSubTypeDefaulter('legend', function () {\r\n        return 'plain';\r\n    });\n\n    var ScrollableLegendModel = (function (_super) {\r\n        __extends(ScrollableLegendModel, _super);\r\n        function ScrollableLegendModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ScrollableLegendModel.type;\r\n            return _this;\r\n        }\r\n        ScrollableLegendModel.prototype.setScrollDataIndex = function (scrollDataIndex) {\r\n            this.option.scrollDataIndex = scrollDataIndex;\r\n        };\r\n        ScrollableLegendModel.prototype.init = function (option, parentModel, ecModel) {\r\n            var inputPositionParams = getLayoutParams(option);\r\n            _super.prototype.init.call(this, option, parentModel, ecModel);\r\n            mergeAndNormalizeLayoutParams(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(this, this.option, option);\r\n        };\r\n        ScrollableLegendModel.type = 'legend.scroll';\r\n        ScrollableLegendModel.defaultOption = inheritDefaultOption(LegendModel.defaultOption, {\r\n            scrollDataIndex: 0,\r\n            pageButtonItemGap: 5,\r\n            pageButtonGap: null,\r\n            pageButtonPosition: 'end',\r\n            pageFormatter: '{current}/{total}',\r\n            pageIcons: {\r\n                horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\r\n                vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\r\n            },\r\n            pageIconColor: '#2f4554',\r\n            pageIconInactiveColor: '#aaa',\r\n            pageIconSize: 15,\r\n            pageTextStyle: {\r\n                color: '#333'\r\n            },\r\n            animationDurationUpdate: 800\r\n        });\r\n        return ScrollableLegendModel;\r\n    }(LegendModel));\r\n    function mergeAndNormalizeLayoutParams(legendModel, target, raw) {\r\n        var orient = legendModel.getOrient();\r\n        var ignoreSize = [1, 1];\r\n        ignoreSize[orient.index] = 0;\r\n        mergeLayoutParam(target, raw, {\r\n            type: 'box', ignoreSize: !!ignoreSize\r\n        });\r\n    }\r\n    ComponentModel.registerClass(ScrollableLegendModel);\n\n    var Group$2 = Group;\r\n    var WH = ['width', 'height'];\r\n    var XY = ['x', 'y'];\r\n    var ScrollableLegendView = (function (_super) {\r\n        __extends(ScrollableLegendView, _super);\r\n        function ScrollableLegendView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ScrollableLegendView.type;\r\n            _this.newlineDisabled = true;\r\n            _this._currentIndex = 0;\r\n            return _this;\r\n        }\r\n        ScrollableLegendView.prototype.init = function () {\r\n            _super.prototype.init.call(this);\r\n            this.group.add(this._containerGroup = new Group$2());\r\n            this._containerGroup.add(this.getContentGroup());\r\n            this.group.add(this._controllerGroup = new Group$2());\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[orientIdx];\r\n            var xy = XY[orientIdx];\r\n            var hw = WH[1 - orientIdx];\r\n            var yx = XY[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[orientIdx];\r\n            var xy = XY[orientIdx];\r\n            var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\r\n            var children = contentGroup.children();\r\n            var targetItem = children[targetItemIndex];\r\n            var itemCount = children.length;\r\n            var pCount = !itemCount ? 0 : 1;\r\n            var result = {\r\n                contentPosition: [contentGroup.x, contentGroup.y],\r\n                pageCount: pCount,\r\n                pageIndex: pCount - 1,\r\n                pagePrevDataIndex: null,\r\n                pageNextDataIndex: null\r\n            };\r\n            if (!targetItem) {\r\n                return result;\r\n            }\r\n            var targetItemInfo = getItemInfo(targetItem);\r\n            result.contentPosition[orientIdx] = -targetItemInfo.s;\r\n            for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\r\n                currItemInfo = getItemInfo(children[i]);\r\n                if ((!currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize)\r\n                    || (currItemInfo && !intersect(currItemInfo, winStartItemInfo.s))) {\r\n                    if (winEndItemInfo.i > winStartItemInfo.i) {\r\n                        winStartItemInfo = winEndItemInfo;\r\n                    }\r\n                    else {\r\n                        winStartItemInfo = currItemInfo;\r\n                    }\r\n                    if (winStartItemInfo) {\r\n                        if (result.pageNextDataIndex == null) {\r\n                            result.pageNextDataIndex = winStartItemInfo.i;\r\n                        }\r\n                        ++result.pageCount;\r\n                    }\r\n                }\r\n                winEndItemInfo = currItemInfo;\r\n            }\r\n            for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\r\n                currItemInfo = getItemInfo(children[i]);\r\n                if ((!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s))\r\n                    && winStartItemInfo.i < winEndItemInfo.i) {\r\n                    winEndItemInfo = winStartItemInfo;\r\n                    if (result.pagePrevDataIndex == null) {\r\n                        result.pagePrevDataIndex = winStartItemInfo.i;\r\n                    }\r\n                    ++result.pageCount;\r\n                    ++result.pageIndex;\r\n                }\r\n                winStartItemInfo = currItemInfo;\r\n            }\r\n            return result;\r\n            function getItemInfo(el) {\r\n                if (el) {\r\n                    var itemRect = el.getBoundingRect();\r\n                    var start = itemRect[xy] + el[xy];\r\n                    return {\r\n                        s: start,\r\n                        e: start + itemRect[wh],\r\n                        i: el.__legendDataIndex\r\n                    };\r\n                }\r\n            }\r\n            function intersect(itemInfo, winStart) {\r\n                return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\r\n            }\r\n        };\r\n        ScrollableLegendView.prototype._findTargetItemIndex = function (targetDataIndex) {\r\n            if (!this._showController) {\r\n                return 0;\r\n            }\r\n            var index;\r\n            var contentGroup = this.getContentGroup();\r\n            var defaultIndex;\r\n            contentGroup.eachChild(function (child, idx) {\r\n                var legendDataIdx = child.__legendDataIndex;\r\n                if (defaultIndex == null && legendDataIdx != null) {\r\n                    defaultIndex = idx;\r\n                }\r\n                if (legendDataIdx === targetDataIndex) {\r\n                    index = idx;\r\n                }\r\n            });\r\n            return index != null ? index : defaultIndex;\r\n        };\r\n        ScrollableLegendView.type = 'legend.scroll';\r\n        return ScrollableLegendView;\r\n    }(LegendView));\r\n    ComponentView.registerClass(ScrollableLegendView);\n\n    registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\r\n        var scrollDataIndex = payload.scrollDataIndex;\r\n        scrollDataIndex != null && ecModel.eachComponent({ mainType: 'legend', subType: 'scroll', query: payload }, function (legendModel) {\r\n            legendModel.setScrollDataIndex(scrollDataIndex);\r\n        });\r\n    });\n\n    var TitleModel = (function (_super) {\r\n        __extends(TitleModel, _super);\r\n        function TitleModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TitleModel.type;\r\n            _this.layoutMode = { type: 'box', ignoreSize: true };\r\n            return _this;\r\n        }\r\n        TitleModel.type = 'title';\r\n        TitleModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 6,\r\n            show: true,\r\n            text: '',\r\n            target: 'blank',\r\n            subtext: '',\r\n            subtarget: 'blank',\r\n            left: 0,\r\n            top: 0,\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderColor: '#ccc',\r\n            borderWidth: 0,\r\n            padding: 5,\r\n            itemGap: 10,\r\n            textStyle: {\r\n                fontSize: 18,\r\n                fontWeight: 'bold',\r\n                color: '#464646'\r\n            },\r\n            subtextStyle: {\r\n                fontSize: 12,\r\n                color: '#6E7079'\r\n            }\r\n        };\r\n        return TitleModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(TitleModel);\r\n    var TitleView = (function (_super) {\r\n        __extends(TitleView, _super);\r\n        function TitleView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = TitleView.type;\r\n            return _this;\r\n        }\r\n        TitleView.prototype.render = function (titleModel, ecModel, api) {\r\n            this.group.removeAll();\r\n            if (!titleModel.get('show')) {\r\n                return;\r\n            }\r\n            var group = this.group;\r\n            var textStyleModel = titleModel.getModel('textStyle');\r\n            var subtextStyleModel = titleModel.getModel('subtextStyle');\r\n            var textAlign = titleModel.get('textAlign');\r\n            var textVerticalAlign = retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign'));\r\n            var textEl = new ZRText({\r\n                style: createTextStyle(textStyleModel, {\r\n                    text: titleModel.get('text'),\r\n                    fill: textStyleModel.getTextColor()\r\n                }, { disableBox: true }),\r\n                z2: 10\r\n            });\r\n            var textRect = textEl.getBoundingRect();\r\n            var subText = titleModel.get('subtext');\r\n            var subTextEl = new ZRText({\r\n                style: createTextStyle(subtextStyleModel, {\r\n                    text: subText,\r\n                    fill: subtextStyleModel.getTextColor(),\r\n                    y: textRect.height + titleModel.get('itemGap'),\r\n                    verticalAlign: 'top'\r\n                }, { disableBox: true }),\r\n                z2: 10\r\n            });\r\n            var link = titleModel.get('link');\r\n            var sublink = titleModel.get('sublink');\r\n            var triggerEvent = titleModel.get('triggerEvent', true);\r\n            textEl.silent = !link && !triggerEvent;\r\n            subTextEl.silent = !sublink && !triggerEvent;\r\n            if (link) {\r\n                textEl.on('click', function () {\r\n                    windowOpen(link, '_' + titleModel.get('target'));\r\n                });\r\n            }\r\n            if (sublink) {\r\n                subTextEl.on('click', function () {\r\n                    windowOpen(sublink, '_' + titleModel.get('subtarget'));\r\n                });\r\n            }\r\n            getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent\r\n                ? {\r\n                    componentType: 'title',\r\n                    componentIndex: titleModel.componentIndex\r\n                }\r\n                : null;\r\n            group.add(textEl);\r\n            subText && group.add(subTextEl);\r\n            var groupRect = group.getBoundingRect();\r\n            var layoutOption = titleModel.getBoxLayoutParams();\r\n            layoutOption.width = groupRect.width;\r\n            layoutOption.height = groupRect.height;\r\n            var layoutRect = getLayoutRect(layoutOption, {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            }, titleModel.get('padding'));\r\n            if (!textAlign) {\r\n                textAlign = (titleModel.get('left') || titleModel.get('right'));\r\n                if (textAlign === 'middle') {\r\n                    textAlign = 'center';\r\n                }\r\n                if (textAlign === 'right') {\r\n                    layoutRect.x += layoutRect.width;\r\n                }\r\n                else if (textAlign === 'center') {\r\n                    layoutRect.x += layoutRect.width / 2;\r\n                }\r\n            }\r\n            if (!textVerticalAlign) {\r\n                textVerticalAlign = (titleModel.get('top') || titleModel.get('bottom'));\r\n                if (textVerticalAlign === 'center') {\r\n                    textVerticalAlign = 'middle';\r\n                }\r\n                if (textVerticalAlign === 'bottom') {\r\n                    layoutRect.y += layoutRect.height;\r\n                }\r\n                else if (textVerticalAlign === 'middle') {\r\n                    layoutRect.y += layoutRect.height / 2;\r\n                }\r\n                textVerticalAlign = textVerticalAlign || 'top';\r\n            }\r\n            group.x = layoutRect.x;\r\n            group.y = layoutRect.y;\r\n            group.markRedraw();\r\n            var alignStyle = {\r\n                align: textAlign,\r\n                verticalAlign: textVerticalAlign\r\n            };\r\n            textEl.setStyle(alignStyle);\r\n            subTextEl.setStyle(alignStyle);\r\n            groupRect = group.getBoundingRect();\r\n            var padding = layoutRect.margin;\r\n            var style = titleModel.getItemStyle(['color', 'opacity']);\r\n            style.fill = titleModel.get('backgroundColor');\r\n            var rect = new Rect({\r\n                shape: {\r\n                    x: groupRect.x - padding[3],\r\n                    y: groupRect.y - padding[0],\r\n                    width: groupRect.width + padding[1] + padding[3],\r\n                    height: groupRect.height + padding[0] + padding[2],\r\n                    r: titleModel.get('borderRadius')\r\n                },\r\n                style: style,\r\n                subPixelOptimize: true,\r\n                silent: true\r\n            });\r\n            group.add(rect);\r\n        };\r\n        TitleView.type = 'title';\r\n        return TitleView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(TitleView);\n\n    function fillLabel(opt) {\r\n        defaultEmphasis(opt, 'label', ['show']);\r\n    }\r\n    var inner$a = makeInner();\r\n    var MarkerModel = (function (_super) {\r\n        __extends(MarkerModel, _super);\r\n        function MarkerModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkerModel.type;\r\n            _this.createdBySelf = false;\r\n            return _this;\r\n        }\r\n        MarkerModel.prototype.init = function (option, parentModel, ecModel) {\r\n            if (__DEV__) {\r\n                if (this.type === 'marker') {\r\n                    throw new Error('Marker component is abstract component. Use markLine, markPoint, markArea instead.');\r\n                }\r\n            }\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            this._mergeOption(option, ecModel, false, true);\r\n        };\r\n        MarkerModel.prototype.isAnimationEnabled = function () {\r\n            if (env.node) {\r\n                return false;\r\n            }\r\n            var hostSeries = this.__hostSeries;\r\n            return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\r\n        };\r\n        MarkerModel.prototype.mergeOption = function (newOpt, ecModel) {\r\n            this._mergeOption(newOpt, ecModel, false, false);\r\n        };\r\n        MarkerModel.prototype._mergeOption = function (newOpt, ecModel, createdBySelf, isInit) {\r\n            var componentType = this.mainType;\r\n            if (!createdBySelf) {\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var markerOpt = seriesModel.get(this.mainType, true);\r\n                    var markerModel = inner$a(seriesModel)[componentType];\r\n                    if (!markerOpt || !markerOpt.data) {\r\n                        inner$a(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$a(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$a(seriesModel)[componentType];\r\n        };\r\n        MarkerModel.type = 'marker';\r\n        MarkerModel.dependencies = ['series', 'grid', 'polar', 'geo'];\r\n        return MarkerModel;\r\n    }(ComponentModel));\r\n    mixin(MarkerModel, DataFormatMixin.prototype);\n\n    var MarkPointModel = (function (_super) {\r\n        __extends(MarkPointModel, _super);\r\n        function MarkPointModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkPointModel.type;\r\n            return _this;\r\n        }\r\n        MarkPointModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n            return new MarkPointModel(markerOpt, masterMarkerModel, ecModel);\r\n        };\r\n        MarkPointModel.type = 'markPoint';\r\n        MarkPointModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 5,\r\n            symbol: 'pin',\r\n            symbolSize: 50,\r\n            tooltip: {\r\n                trigger: 'item'\r\n            },\r\n            label: {\r\n                show: true,\r\n                position: 'inside'\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 2\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true\r\n                }\r\n            }\r\n        };\r\n        return MarkPointModel;\r\n    }(MarkerModel));\r\n    ComponentModel.registerClass(MarkPointModel);\n\n    function hasXOrY(item) {\r\n        return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\r\n    }\r\n    function hasXAndY(item) {\r\n        return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\r\n    }\r\n    function markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\r\n        var coordArr = [];\r\n        var stacked = isDimensionStacked(data, targetDataDim);\r\n        var calcDataDim = stacked\r\n            ? data.getCalculationInfo('stackResultDimension')\r\n            : targetDataDim;\r\n        var value = numCalculate(data, calcDataDim, markerType);\r\n        var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];\r\n        coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);\r\n        coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);\r\n        var coordArrValue = data.get(targetDataDim, dataIndex);\r\n        var precision = getPrecision(data.get(targetDataDim, dataIndex));\r\n        precision = Math.min(precision, 20);\r\n        if (precision >= 0) {\r\n            coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\r\n        }\r\n        return [coordArr, coordArrValue];\r\n    }\r\n    var markerTypeCalculator = {\r\n        min: curry(markerTypeCalculatorWithExtent, 'min'),\r\n        max: curry(markerTypeCalculatorWithExtent, 'max'),\r\n        average: curry(markerTypeCalculatorWithExtent, 'average'),\r\n        median: curry(markerTypeCalculatorWithExtent, 'median')\r\n    };\r\n    function dataTransform(seriesModel, item) {\r\n        var data = seriesModel.getData();\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        if (item && !hasXAndY(item) && !isArray(item.coord) && coordSys) {\r\n            var dims = coordSys.dimensions;\r\n            var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel);\r\n            item = clone(item);\r\n            if (item.type\r\n                && markerTypeCalculator[item.type]\r\n                && axisInfo.baseAxis && axisInfo.valueAxis) {\r\n                var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\r\n                var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\r\n                var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);\r\n                item.coord = coordInfo[0];\r\n                item.value = coordInfo[1];\r\n            }\r\n            else {\r\n                var coord = [\r\n                    item.xAxis != null ? item.xAxis : item.radiusAxis,\r\n                    item.yAxis != null ? item.yAxis : item.angleAxis\r\n                ];\r\n                for (var i = 0; i < 2; i++) {\r\n                    if (markerTypeCalculator[coord[i]]) {\r\n                        coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\r\n                    }\r\n                }\r\n                item.coord = coord;\r\n            }\r\n        }\r\n        return item;\r\n    }\r\n    function getAxisInfo$1(item, data, coordSys, seriesModel) {\r\n        var ret = {};\r\n        if (item.valueIndex != null || item.valueDim != null) {\r\n            ret.valueDataDim = item.valueIndex != null\r\n                ? data.getDimension(item.valueIndex) : item.valueDim;\r\n            ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\r\n            ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\r\n            ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\r\n        }\r\n        else {\r\n            ret.baseAxis = seriesModel.getBaseAxis();\r\n            ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\r\n            ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\r\n            ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\r\n        }\r\n        return ret;\r\n    }\r\n    function dataDimToCoordDim(seriesModel, dataDim) {\r\n        var data = seriesModel.getData();\r\n        var dimensions = data.dimensions;\r\n        dataDim = data.getDimension(dataDim);\r\n        for (var i = 0; i < dimensions.length; i++) {\r\n            var dimItem = data.getDimensionInfo(dimensions[i]);\r\n            if (dimItem.name === dataDim) {\r\n                return dimItem.coordDim;\r\n            }\r\n        }\r\n    }\r\n    function dataFilter$1(coordSys, item) {\r\n        return (coordSys && coordSys.containData && item.coord && !hasXOrY(item))\r\n            ? coordSys.containData(item.coord) : true;\r\n    }\r\n    function dimValueGetter(item, dimName, dataIndex, dimIndex) {\r\n        if (dimIndex < 2) {\r\n            return item.coord && item.coord[dimIndex];\r\n        }\r\n        return item.value;\r\n    }\r\n    function numCalculate(data, valueDataDim, type) {\r\n        if (type === 'average') {\r\n            var sum_1 = 0;\r\n            var count_1 = 0;\r\n            data.each(valueDataDim, function (val, idx) {\r\n                if (!isNaN(val)) {\r\n                    sum_1 += val;\r\n                    count_1++;\r\n                }\r\n            });\r\n            return sum_1 / count_1;\r\n        }\r\n        else if (type === 'median') {\r\n            return data.getMedian(valueDataDim);\r\n        }\r\n        else {\r\n            return data.getDataExtent(valueDataDim)[type === 'max' ? 1 : 0];\r\n        }\r\n    }\n\n    var inner$b = makeInner();\r\n    var MarkerView = (function (_super) {\r\n        __extends(MarkerView, _super);\r\n        function MarkerView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkerView.type;\r\n            return _this;\r\n        }\r\n        MarkerView.prototype.init = function () {\r\n            this.markerGroupMap = createHashMap();\r\n        };\r\n        MarkerView.prototype.render = function (markerModel, ecModel, api) {\r\n            var _this = this;\r\n            var markerGroupMap = this.markerGroupMap;\r\n            markerGroupMap.each(function (item) {\r\n                inner$b(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$b(item).keep && _this.group.remove(item.group);\r\n            });\r\n        };\r\n        MarkerView.prototype.markKeep = function (drawGroup) {\r\n            inner$b(drawGroup).keep = true;\r\n        };\r\n        MarkerView.prototype.blurSeries = function (seriesModelList) {\r\n            var _this = this;\r\n            each(seriesModelList, function (seriesModel) {\r\n                var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);\r\n                if (markerModel) {\r\n                    var data = markerModel.getData();\r\n                    data.eachItemGraphicEl(function (el) {\r\n                        if (el) {\r\n                            enterBlur(el);\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n        };\r\n        MarkerView.type = 'marker';\r\n        return MarkerView;\r\n    }(ComponentView));\n\n    function updateMarkerLayout(mpData, seriesModel, api) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        mpData.each(function (idx) {\r\n            var itemModel = mpData.getItemModel(idx);\r\n            var point;\r\n            var xPx = parsePercent$2(itemModel.get('x'), api.getWidth());\r\n            var yPx = parsePercent$2(itemModel.get('y'), api.getHeight());\r\n            if (!isNaN(xPx) && !isNaN(yPx)) {\r\n                point = [xPx, yPx];\r\n            }\r\n            else if (seriesModel.getMarkerPosition) {\r\n                point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));\r\n            }\r\n            else if (coordSys) {\r\n                var x = mpData.get(coordSys.dimensions[0], idx);\r\n                var y = mpData.get(coordSys.dimensions[1], idx);\r\n                point = coordSys.dataToPoint([x, y]);\r\n            }\r\n            if (!isNaN(xPx)) {\r\n                point[0] = xPx;\r\n            }\r\n            if (!isNaN(yPx)) {\r\n                point[1] = yPx;\r\n            }\r\n            mpData.setItemLayout(idx, point);\r\n        });\r\n    }\r\n    var MarkPointView = (function (_super) {\r\n        __extends(MarkPointView, _super);\r\n        function MarkPointView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkPointView.type;\r\n            return _this;\r\n        }\r\n        MarkPointView.prototype.updateTransform = function (markPointModel, ecModel, api) {\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var mpModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markPoint');\r\n                if (mpModel) {\r\n                    updateMarkerLayout(mpModel.getData(), seriesModel, api);\r\n                    this.markerGroupMap.get(seriesModel.id).updateLayout();\r\n                }\r\n            }, this);\r\n        };\r\n        MarkPointView.prototype.renderSeries = function (seriesModel, mpModel, ecModel, api) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var seriesId = seriesModel.id;\r\n            var seriesData = seriesModel.getData();\r\n            var symbolDrawMap = this.markerGroupMap;\r\n            var symbolDraw = symbolDrawMap.get(seriesId)\r\n                || symbolDrawMap.set(seriesId, new SymbolDraw());\r\n            var mpData = createList$1(coordSys, seriesModel, mpModel);\r\n            mpModel.setData(mpData);\r\n            updateMarkerLayout(mpModel.getData(), seriesModel, api);\r\n            mpData.each(function (idx) {\r\n                var itemModel = mpData.getItemModel(idx);\r\n                var symbol = itemModel.getShallow('symbol');\r\n                var symbolSize = itemModel.getShallow('symbolSize');\r\n                var symbolRotate = itemModel.getShallow('symbolRotate');\r\n                if (isFunction(symbol) || isFunction(symbolSize) || isFunction(symbolRotate)) {\r\n                    var rawIdx = mpModel.getRawValue(idx);\r\n                    var dataParams = mpModel.getDataParams(idx);\r\n                    if (isFunction(symbol)) {\r\n                        symbol = symbol(rawIdx, dataParams);\r\n                    }\r\n                    if (isFunction(symbolSize)) {\r\n                        symbolSize = symbolSize(rawIdx, dataParams);\r\n                    }\r\n                    if (isFunction(symbolRotate)) {\r\n                        symbolRotate = symbolRotate(rawIdx, dataParams);\r\n                    }\r\n                }\r\n                var style = itemModel.getModel('itemStyle').getItemStyle();\r\n                var color = getVisualFromData(seriesData, 'color');\r\n                if (!style.fill) {\r\n                    style.fill = color;\r\n                }\r\n                mpData.setItemVisual(idx, {\r\n                    symbol: symbol,\r\n                    symbolSize: symbolSize,\r\n                    symbolRotate: symbolRotate,\r\n                    style: style\r\n                });\r\n            });\r\n            symbolDraw.updateData(mpData);\r\n            this.group.add(symbolDraw.group);\r\n            mpData.eachItemGraphicEl(function (el) {\r\n                el.traverse(function (child) {\r\n                    getECData(child).dataModel = mpModel;\r\n                });\r\n            });\r\n            this.markKeep(symbolDraw);\r\n            symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent');\r\n        };\r\n        MarkPointView.type = 'markPoint';\r\n        return MarkPointView;\r\n    }(MarkerView));\r\n    function createList$1(coordSys, seriesModel, mpModel) {\r\n        var coordDimsInfos;\r\n        if (coordSys) {\r\n            coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n                var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};\r\n                return defaults({ name: coordDim }, info);\r\n            });\r\n        }\r\n        else {\r\n            coordDimsInfos = [{\r\n                    name: 'value',\r\n                    type: 'float'\r\n                }];\r\n        }\r\n        var mpData = new List(coordDimsInfos, mpModel);\r\n        var dataOpt = map(mpModel.get('data'), curry(dataTransform, seriesModel));\r\n        if (coordSys) {\r\n            dataOpt = filter(dataOpt, curry(dataFilter$1, coordSys));\r\n        }\r\n        mpData.initData(dataOpt, null, coordSys ? dimValueGetter : function (item) {\r\n            return item.value;\r\n        });\r\n        return mpData;\r\n    }\r\n    ComponentView.registerClass(MarkPointView);\n\n    registerPreprocessor(function (opt) {\r\n        opt.markPoint = opt.markPoint || {};\r\n    });\n\n    var MarkLineModel = (function (_super) {\r\n        __extends(MarkLineModel, _super);\r\n        function MarkLineModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkLineModel.type;\r\n            return _this;\r\n        }\r\n        MarkLineModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n            return new MarkLineModel(markerOpt, masterMarkerModel, ecModel);\r\n        };\r\n        MarkLineModel.type = 'markLine';\r\n        MarkLineModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 5,\r\n            symbol: ['circle', 'arrow'],\r\n            symbolSize: [8, 16],\r\n            precision: 2,\r\n            tooltip: {\r\n                trigger: 'item'\r\n            },\r\n            label: {\r\n                show: true,\r\n                position: 'end',\r\n                distance: 5\r\n            },\r\n            lineStyle: {\r\n                type: 'dashed'\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true\r\n                },\r\n                lineStyle: {\r\n                    width: 3\r\n                }\r\n            },\r\n            animationEasing: 'linear'\r\n        };\r\n        return MarkLineModel;\r\n    }(MarkerModel));\r\n    ComponentModel.registerClass(MarkLineModel);\n\n    var straightLineProto = Line.prototype;\r\n    var bezierCurveProto = BezierCurve.prototype;\r\n    var StraightLineShape = (function () {\r\n        function StraightLineShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return StraightLineShape;\r\n    }());\r\n    var CurveShape = (function (_super) {\r\n        __extends(CurveShape, _super);\r\n        function CurveShape() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return CurveShape;\r\n    }(StraightLineShape));\r\n    function isStraightLine(shape) {\r\n        return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\r\n    }\r\n    var ECLinePath = (function (_super) {\r\n        __extends(ECLinePath, _super);\r\n        function ECLinePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-line';\r\n            return _this;\r\n        }\r\n        ECLinePath.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        ECLinePath.prototype.getDefaultShape = function () {\r\n            return new StraightLineShape();\r\n        };\r\n        ECLinePath.prototype.buildPath = function (ctx, shape) {\r\n            if (isStraightLine(shape)) {\r\n                straightLineProto.buildPath.call(this, ctx, shape);\r\n            }\r\n            else {\r\n                bezierCurveProto.buildPath.call(this, ctx, shape);\r\n            }\r\n        };\r\n        ECLinePath.prototype.pointAt = function (t) {\r\n            if (isStraightLine(this.shape)) {\r\n                return straightLineProto.pointAt.call(this, t);\r\n            }\r\n            else {\r\n                return bezierCurveProto.pointAt.call(this, t);\r\n            }\r\n        };\r\n        ECLinePath.prototype.tangentAt = function (t) {\r\n            var shape = this.shape;\r\n            var p = isStraightLine(shape)\r\n                ? [shape.x2 - shape.x1, shape.y2 - shape.y1]\r\n                : bezierCurveProto.tangentAt.call(this, t);\r\n            return normalize(p, p);\r\n        };\r\n        return ECLinePath;\r\n    }(Path));\n\n    var SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\r\n    function makeSymbolTypeKey(symbolCategory) {\r\n        return '_' + symbolCategory + 'Type';\r\n    }\r\n    function createSymbol$1(name, lineData, idx) {\r\n        var symbolType = lineData.getItemVisual(idx, name);\r\n        if (!symbolType || symbolType === 'none') {\r\n            return;\r\n        }\r\n        var symbolSize = lineData.getItemVisual(idx, name + 'Size');\r\n        var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\r\n        var symbolSizeArr = isArray(symbolSize)\r\n            ? symbolSize : [symbolSize, symbolSize];\r\n        var symbolPath = createSymbol(symbolType, -symbolSizeArr[0] / 2, -symbolSizeArr[1] / 2, symbolSizeArr[0], symbolSizeArr[1]);\r\n        symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate)\r\n            ? void 0\r\n            : +symbolRotate * Math.PI / 180 || 0;\r\n        symbolPath.name = name;\r\n        return symbolPath;\r\n    }\r\n    function createLine(points) {\r\n        var line = new ECLinePath({\r\n            name: 'line',\r\n            subPixelOptimize: true\r\n        });\r\n        setLinePoints(line.shape, points);\r\n        return line;\r\n    }\r\n    function setLinePoints(targetShape, points) {\r\n        targetShape.x1 = points[0][0];\r\n        targetShape.y1 = points[0][1];\r\n        targetShape.x2 = points[1][0];\r\n        targetShape.y2 = points[1][1];\r\n        targetShape.percent = 1;\r\n        var cp1 = points[2];\r\n        if (cp1) {\r\n            targetShape.cpx1 = cp1[0];\r\n            targetShape.cpy1 = cp1[1];\r\n        }\r\n        else {\r\n            targetShape.cpx1 = NaN;\r\n            targetShape.cpy1 = NaN;\r\n        }\r\n    }\r\n    var Line$1 = (function (_super) {\r\n        __extends(Line, _super);\r\n        function Line(lineData, idx, seriesScope) {\r\n            var _this = _super.call(this) || this;\r\n            _this._createLine(lineData, idx, seriesScope);\r\n            return _this;\r\n        }\r\n        Line.prototype._createLine = function (lineData, idx, seriesScope) {\r\n            var seriesModel = lineData.hostModel;\r\n            var linePoints = lineData.getItemLayout(idx);\r\n            var line = createLine(linePoints);\r\n            line.shape.percent = 0;\r\n            initProps(line, {\r\n                shape: {\r\n                    percent: 1\r\n                }\r\n            }, seriesModel, idx);\r\n            this.add(line);\r\n            each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n                var symbol = createSymbol$1(symbolCategory, lineData, idx);\r\n                this.add(symbol);\r\n                this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\r\n            }, this);\r\n            this._updateCommonStl(lineData, idx, seriesScope);\r\n        };\r\n        Line.prototype.updateData = function (lineData, idx, seriesScope) {\r\n            var seriesModel = lineData.hostModel;\r\n            var line = this.childOfName('line');\r\n            var linePoints = lineData.getItemLayout(idx);\r\n            var target = {\r\n                shape: {}\r\n            };\r\n            setLinePoints(target.shape, linePoints);\r\n            updateProps(line, target, seriesModel, idx);\r\n            each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n                var symbolType = lineData.getItemVisual(idx, symbolCategory);\r\n                var key = makeSymbolTypeKey(symbolCategory);\r\n                if (this[key] !== symbolType) {\r\n                    this.remove(this.childOfName(symbolCategory));\r\n                    var symbol = createSymbol$1(symbolCategory, lineData, idx);\r\n                    this.add(symbol);\r\n                }\r\n                this[key] = symbolType;\r\n            }, this);\r\n            this._updateCommonStl(lineData, idx, seriesScope);\r\n        };\r\n        Line.prototype.getLinePath = function () {\r\n            return this.childAt(0);\r\n        };\r\n        Line.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\r\n            var seriesModel = lineData.hostModel;\r\n            var line = this.childOfName('line');\r\n            var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;\r\n            var blurLineStyle = seriesScope && seriesScope.blurLineStyle;\r\n            var selectLineStyle = seriesScope && seriesScope.selectLineStyle;\r\n            var labelStatesModels = seriesScope && seriesScope.labelStatesModels;\r\n            if (!seriesScope || lineData.hasItemOption) {\r\n                var itemModel = lineData.getItemModel(idx);\r\n                emphasisLineStyle = itemModel.getModel(['emphasis', 'lineStyle']).getLineStyle();\r\n                blurLineStyle = itemModel.getModel(['blur', 'lineStyle']).getLineStyle();\r\n                selectLineStyle = itemModel.getModel(['select', 'lineStyle']).getLineStyle();\r\n                labelStatesModels = getLabelStatesModels(itemModel);\r\n            }\r\n            var lineStyle = lineData.getItemVisual(idx, 'style');\r\n            var visualColor = lineStyle.stroke;\r\n            line.useStyle(lineStyle);\r\n            line.style.fill = null;\r\n            line.style.strokeNoScale = true;\r\n            line.ensureState('emphasis').style = emphasisLineStyle;\r\n            line.ensureState('blur').style = blurLineStyle;\r\n            line.ensureState('select').style = selectLineStyle;\r\n            each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n                var symbol = this.childOfName(symbolCategory);\r\n                if (symbol) {\r\n                    symbol.setColor(visualColor);\r\n                    symbol.style.opacity = lineStyle.opacity;\r\n                    for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n                        var stateName = SPECIAL_STATES[i];\r\n                        var lineState = line.getState(stateName);\r\n                        if (lineState) {\r\n                            var lineStateStyle = lineState.style || {};\r\n                            var state = symbol.ensureState(stateName);\r\n                            var stateStyle = state.style || (state.style = {});\r\n                            if (lineStateStyle.stroke != null) {\r\n                                stateStyle[symbol.__isEmptyBrush ? 'stroke' : 'fill'] = lineStateStyle.stroke;\r\n                            }\r\n                            if (lineStateStyle.opacity != null) {\r\n                                stateStyle.opacity = lineStateStyle.opacity;\r\n                            }\r\n                        }\r\n                    }\r\n                    symbol.markRedraw();\r\n                }\r\n            }, this);\r\n            var rawVal = seriesModel.getRawValue(idx);\r\n            setLabelStyle(this, labelStatesModels, {\r\n                labelDataIndex: idx,\r\n                labelFetcher: {\r\n                    getFormattedLabel: function (dataIndex, stateName) {\r\n                        return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType);\r\n                    }\r\n                },\r\n                inheritColor: visualColor || '#000',\r\n                defaultOpacity: lineStyle.opacity,\r\n                defaultText: (rawVal == null\r\n                    ? lineData.getName(idx)\r\n                    : isFinite(rawVal)\r\n                        ? round$1(rawVal)\r\n                        : rawVal) + ''\r\n            });\r\n            var label = this.getTextContent();\r\n            if (label) {\r\n                var labelNormalModel = labelStatesModels.normal;\r\n                label.__align = label.style.align;\r\n                label.__verticalAlign = label.style.verticalAlign;\r\n                label.__position = labelNormalModel.get('position') || 'middle';\r\n                var distance = labelNormalModel.get('distance');\r\n                if (!isArray(distance)) {\r\n                    distance = [distance, distance];\r\n                }\r\n                label.__labelDistance = distance;\r\n            }\r\n            this.setTextConfig({\r\n                position: null,\r\n                local: true,\r\n                inside: false\r\n            });\r\n            enableHoverEmphasis(this);\r\n        };\r\n        Line.prototype.highlight = function () {\r\n            enterEmphasis(this);\r\n        };\r\n        Line.prototype.downplay = function () {\r\n            leaveEmphasis(this);\r\n        };\r\n        Line.prototype.updateLayout = function (lineData, idx) {\r\n            this.setLinePoints(lineData.getItemLayout(idx));\r\n        };\r\n        Line.prototype.setLinePoints = function (points) {\r\n            var linePath = this.childOfName('line');\r\n            setLinePoints(linePath.shape, points);\r\n            linePath.dirty();\r\n        };\r\n        Line.prototype.beforeUpdate = function () {\r\n            var lineGroup = this;\r\n            var symbolFrom = lineGroup.childOfName('fromSymbol');\r\n            var symbolTo = lineGroup.childOfName('toSymbol');\r\n            var label = lineGroup.getTextContent();\r\n            if (!symbolFrom && !symbolTo && (!label || label.ignore)) {\r\n                return;\r\n            }\r\n            var invScale = 1;\r\n            var parentNode = this.parent;\r\n            while (parentNode) {\r\n                if (parentNode.scaleX) {\r\n                    invScale /= parentNode.scaleX;\r\n                }\r\n                parentNode = parentNode.parent;\r\n            }\r\n            var line = lineGroup.childOfName('line');\r\n            if (!this.__dirty && !line.__dirty) {\r\n                return;\r\n            }\r\n            var percent = line.shape.percent;\r\n            var fromPos = line.pointAt(0);\r\n            var toPos = line.pointAt(percent);\r\n            var d = sub([], toPos, fromPos);\r\n            normalize(d, d);\r\n            function setSymbolRotation(symbol, percent) {\r\n                var specifiedRotation = symbol.__specifiedRotation;\r\n                if (specifiedRotation == null) {\r\n                    var tangent = line.tangentAt(percent);\r\n                    symbol.attr('rotation', (percent === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\r\n                }\r\n                else {\r\n                    symbol.attr('rotation', specifiedRotation);\r\n                }\r\n            }\r\n            if (symbolFrom) {\r\n                symbolFrom.setPosition(fromPos);\r\n                setSymbolRotation(symbolFrom, 0);\r\n                symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent;\r\n                symbolFrom.markRedraw();\r\n            }\r\n            if (symbolTo) {\r\n                symbolTo.setPosition(toPos);\r\n                setSymbolRotation(symbolTo, 1);\r\n                symbolTo.scaleX = symbolTo.scaleY = invScale * percent;\r\n                symbolTo.markRedraw();\r\n            }\r\n            if (label && !label.ignore) {\r\n                label.x = label.y = 0;\r\n                label.originX = label.originY = 0;\r\n                var textAlign = void 0;\r\n                var textVerticalAlign = void 0;\r\n                var distance = label.__labelDistance;\r\n                var distanceX = distance[0] * invScale;\r\n                var distanceY = distance[1] * invScale;\r\n                var halfPercent = percent / 2;\r\n                var tangent = line.tangentAt(halfPercent);\r\n                var n = [tangent[1], -tangent[0]];\r\n                var cp = line.pointAt(halfPercent);\r\n                if (n[1] > 0) {\r\n                    n[0] = -n[0];\r\n                    n[1] = -n[1];\r\n                }\r\n                var dir = tangent[0] < 0 ? -1 : 1;\r\n                if (label.__position !== 'start' && label.__position !== 'end') {\r\n                    var rotation = -Math.atan2(tangent[1], tangent[0]);\r\n                    if (toPos[0] < fromPos[0]) {\r\n                        rotation = Math.PI + rotation;\r\n                    }\r\n                    label.rotation = rotation;\r\n                }\r\n                var dy = void 0;\r\n                switch (label.__position) {\r\n                    case 'insideStartTop':\r\n                    case 'insideMiddleTop':\r\n                    case 'insideEndTop':\r\n                    case 'middle':\r\n                        dy = -distanceY;\r\n                        textVerticalAlign = 'bottom';\r\n                        break;\r\n                    case 'insideStartBottom':\r\n                    case 'insideMiddleBottom':\r\n                    case 'insideEndBottom':\r\n                        dy = distanceY;\r\n                        textVerticalAlign = 'top';\r\n                        break;\r\n                    default:\r\n                        dy = 0;\r\n                        textVerticalAlign = 'middle';\r\n                }\r\n                switch (label.__position) {\r\n                    case 'end':\r\n                        label.x = d[0] * distanceX + toPos[0];\r\n                        label.y = d[1] * distanceY + toPos[1];\r\n                        textAlign = d[0] > 0.8 ? 'left' : (d[0] < -0.8 ? 'right' : 'center');\r\n                        textVerticalAlign = d[1] > 0.8 ? 'top' : (d[1] < -0.8 ? 'bottom' : 'middle');\r\n                        break;\r\n                    case 'start':\r\n                        label.x = -d[0] * distanceX + fromPos[0];\r\n                        label.y = -d[1] * distanceY + fromPos[1];\r\n                        textAlign = d[0] > 0.8 ? 'right' : (d[0] < -0.8 ? 'left' : 'center');\r\n                        textVerticalAlign = d[1] > 0.8 ? 'bottom' : (d[1] < -0.8 ? 'top' : 'middle');\r\n                        break;\r\n                    case 'insideStartTop':\r\n                    case 'insideStart':\r\n                    case 'insideStartBottom':\r\n                        label.x = distanceX * dir + fromPos[0];\r\n                        label.y = fromPos[1] + dy;\r\n                        textAlign = tangent[0] < 0 ? 'right' : 'left';\r\n                        label.originX = -distanceX * dir;\r\n                        label.originY = -dy;\r\n                        break;\r\n                    case 'insideMiddleTop':\r\n                    case 'insideMiddle':\r\n                    case 'insideMiddleBottom':\r\n                    case 'middle':\r\n                        label.x = cp[0];\r\n                        label.y = cp[1] + dy;\r\n                        textAlign = 'center';\r\n                        label.originY = -dy;\r\n                        break;\r\n                    case 'insideEndTop':\r\n                    case 'insideEnd':\r\n                    case 'insideEndBottom':\r\n                        label.x = -distanceX * dir + toPos[0];\r\n                        label.y = toPos[1] + dy;\r\n                        textAlign = tangent[0] >= 0 ? 'right' : 'left';\r\n                        label.originX = distanceX * dir;\r\n                        label.originY = -dy;\r\n                        break;\r\n                }\r\n                label.scaleX = label.scaleY = invScale;\r\n                label.setStyle({\r\n                    verticalAlign: label.__verticalAlign || textVerticalAlign,\r\n                    align: label.__align || textAlign\r\n                });\r\n            }\r\n        };\r\n        return Line;\r\n    }(Group));\n\n    var LineDraw = (function () {\r\n        function LineDraw(LineCtor) {\r\n            this.group = new Group();\r\n            this._LineCtor = LineCtor || Line$1;\r\n        }\r\n        LineDraw.prototype.isPersistent = function () {\r\n            return true;\r\n        };\r\n        LineDraw.prototype.updateData = function (lineData) {\r\n            var _this = this;\r\n            var lineDraw = this;\r\n            var group = lineDraw.group;\r\n            var oldLineData = lineDraw._lineData;\r\n            lineDraw._lineData = lineData;\r\n            if (!oldLineData) {\r\n                group.removeAll();\r\n            }\r\n            var seriesScope = makeSeriesScope$1(lineData);\r\n            lineData.diff(oldLineData)\r\n                .add(function (idx) {\r\n                _this._doAdd(lineData, idx, seriesScope);\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope);\r\n            })\r\n                .remove(function (idx) {\r\n                group.remove(oldLineData.getItemGraphicEl(idx));\r\n            })\r\n                .execute();\r\n        };\r\n        LineDraw.prototype.updateLayout = function () {\r\n            var lineData = this._lineData;\r\n            if (!lineData) {\r\n                return;\r\n            }\r\n            lineData.eachItemGraphicEl(function (el, idx) {\r\n                el.updateLayout(lineData, idx);\r\n            }, this);\r\n        };\r\n        LineDraw.prototype.incrementalPrepareUpdate = function (lineData) {\r\n            this._seriesScope = makeSeriesScope$1(lineData);\r\n            this._lineData = null;\r\n            this.group.removeAll();\r\n        };\r\n        LineDraw.prototype.incrementalUpdate = function (taskParams, lineData) {\r\n            function updateIncrementalAndHover(el) {\r\n                if (!el.isGroup && !isEffectObject(el)) {\r\n                    el.incremental = true;\r\n                    el.ensureState('emphasis').hoverLayer = true;\r\n                }\r\n            }\r\n            for (var idx = taskParams.start; idx < taskParams.end; idx++) {\r\n                var itemLayout = lineData.getItemLayout(idx);\r\n                if (lineNeedsDraw(itemLayout)) {\r\n                    var el = new this._LineCtor(lineData, idx, this._seriesScope);\r\n                    el.traverse(updateIncrementalAndHover);\r\n                    this.group.add(el);\r\n                    lineData.setItemGraphicEl(idx, el);\r\n                }\r\n            }\r\n        };\r\n        LineDraw.prototype.remove = function () {\r\n            this.group.removeAll();\r\n        };\r\n        LineDraw.prototype._doAdd = function (lineData, idx, seriesScope) {\r\n            var itemLayout = lineData.getItemLayout(idx);\r\n            if (!lineNeedsDraw(itemLayout)) {\r\n                return;\r\n            }\r\n            var el = new this._LineCtor(lineData, idx, seriesScope);\r\n            lineData.setItemGraphicEl(idx, el);\r\n            this.group.add(el);\r\n        };\r\n        LineDraw.prototype._doUpdate = function (oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\r\n            var itemEl = oldLineData.getItemGraphicEl(oldIdx);\r\n            if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\r\n                this.group.remove(itemEl);\r\n                return;\r\n            }\r\n            if (!itemEl) {\r\n                itemEl = new this._LineCtor(newLineData, newIdx, seriesScope);\r\n            }\r\n            else {\r\n                itemEl.updateData(newLineData, newIdx, seriesScope);\r\n            }\r\n            newLineData.setItemGraphicEl(newIdx, itemEl);\r\n            this.group.add(itemEl);\r\n        };\r\n        return LineDraw;\r\n    }());\r\n    function isEffectObject(el) {\r\n        return el.animators && el.animators.length > 0;\r\n    }\r\n    function makeSeriesScope$1(lineData) {\r\n        var hostModel = lineData.hostModel;\r\n        return {\r\n            lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\r\n            emphasisLineStyle: hostModel.getModel(['emphasis', 'lineStyle']).getLineStyle(),\r\n            blurLineStyle: hostModel.getModel(['blur', 'lineStyle']).getLineStyle(),\r\n            selectLineStyle: hostModel.getModel(['select', 'lineStyle']).getLineStyle(),\r\n            labelStatesModels: getLabelStatesModels(hostModel)\r\n        };\r\n    }\r\n    function isPointNaN(pt) {\r\n        return isNaN(pt[0]) || isNaN(pt[1]);\r\n    }\r\n    function lineNeedsDraw(pts) {\r\n        return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\r\n    }\n\n    var inner$c = makeInner();\r\n    var markLineTransform = function (seriesModel, coordSys, mlModel, item) {\r\n        var data = seriesModel.getData();\r\n        var itemArray;\r\n        if (!isArray(item)) {\r\n            var mlType = item.type;\r\n            if (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median'\r\n                || (item.xAxis != null || item.yAxis != null)) {\r\n                var valueAxis = void 0;\r\n                var value = void 0;\r\n                if (item.yAxis != null || item.xAxis != null) {\r\n                    valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\r\n                    value = retrieve(item.yAxis, item.xAxis);\r\n                }\r\n                else {\r\n                    var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel);\r\n                    valueAxis = axisInfo.valueAxis;\r\n                    var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\r\n                    value = numCalculate(data, valueDataDim, mlType);\r\n                }\r\n                var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\r\n                var baseIndex = 1 - valueIndex;\r\n                var mlFrom = clone(item);\r\n                var mlTo = {\r\n                    coord: []\r\n                };\r\n                mlFrom.type = null;\r\n                mlFrom.coord = [];\r\n                mlFrom.coord[baseIndex] = -Infinity;\r\n                mlTo.coord[baseIndex] = Infinity;\r\n                var precision = mlModel.get('precision');\r\n                if (precision >= 0 && typeof value === 'number') {\r\n                    value = +value.toFixed(Math.min(precision, 20));\r\n                }\r\n                mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\r\n                itemArray = [mlFrom, mlTo, {\r\n                        type: mlType,\r\n                        valueIndex: item.valueIndex,\r\n                        value: value\r\n                    }];\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    logError('Invalid markLine data.');\r\n                }\r\n                itemArray = [];\r\n            }\r\n        }\r\n        else {\r\n            itemArray = item;\r\n        }\r\n        var normalizedItem = [\r\n            dataTransform(seriesModel, itemArray[0]),\r\n            dataTransform(seriesModel, itemArray[1]),\r\n            extend({}, itemArray[2])\r\n        ];\r\n        normalizedItem[2].type = normalizedItem[2].type || null;\r\n        merge(normalizedItem[2], normalizedItem[0]);\r\n        merge(normalizedItem[2], normalizedItem[1]);\r\n        return normalizedItem;\r\n    };\r\n    function isInifinity(val) {\r\n        return !isNaN(val) && !isFinite(val);\r\n    }\r\n    function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\r\n        var otherDimIndex = 1 - dimIndex;\r\n        var dimName = coordSys.dimensions[dimIndex];\r\n        return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex])\r\n            && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\r\n    }\r\n    function markLineFilter(coordSys, item) {\r\n        if (coordSys.type === 'cartesian2d') {\r\n            var fromCoord = item[0].coord;\r\n            var toCoord = item[1].coord;\r\n            if (fromCoord && toCoord\r\n                && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys)\r\n                    || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\r\n                return true;\r\n            }\r\n        }\r\n        return dataFilter$1(coordSys, item[0])\r\n            && dataFilter$1(coordSys, item[1]);\r\n    }\r\n    function updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        var itemModel = data.getItemModel(idx);\r\n        var point;\r\n        var xPx = parsePercent$2(itemModel.get('x'), api.getWidth());\r\n        var yPx = parsePercent$2(itemModel.get('y'), api.getHeight());\r\n        if (!isNaN(xPx) && !isNaN(yPx)) {\r\n            point = [xPx, yPx];\r\n        }\r\n        else {\r\n            if (seriesModel.getMarkerPosition) {\r\n                point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\r\n            }\r\n            else {\r\n                var dims = coordSys.dimensions;\r\n                var x = data.get(dims[0], idx);\r\n                var y = data.get(dims[1], idx);\r\n                point = coordSys.dataToPoint([x, y]);\r\n            }\r\n            if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n                var xAxis = coordSys.getAxis('x');\r\n                var yAxis = coordSys.getAxis('y');\r\n                var dims = coordSys.dimensions;\r\n                if (isInifinity(data.get(dims[0], idx))) {\r\n                    point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\r\n                }\r\n                else if (isInifinity(data.get(dims[1], idx))) {\r\n                    point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\r\n                }\r\n            }\r\n            if (!isNaN(xPx)) {\r\n                point[0] = xPx;\r\n            }\r\n            if (!isNaN(yPx)) {\r\n                point[1] = yPx;\r\n            }\r\n        }\r\n        data.setItemLayout(idx, point);\r\n    }\r\n    var MarkLineView = (function (_super) {\r\n        __extends(MarkLineView, _super);\r\n        function MarkLineView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkLineView.type;\r\n            return _this;\r\n        }\r\n        MarkLineView.prototype.updateTransform = function (markLineModel, ecModel, api) {\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var mlModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markLine');\r\n                if (mlModel) {\r\n                    var mlData_1 = mlModel.getData();\r\n                    var fromData_1 = inner$c(mlModel).from;\r\n                    var toData_1 = inner$c(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$c(mlModel).from = fromData;\r\n            inner$c(mlModel).to = toData;\r\n            mlModel.setData(lineData);\r\n            var symbolType = mlModel.get('symbol');\r\n            var symbolSize = mlModel.get('symbolSize');\r\n            if (!isArray(symbolType)) {\r\n                symbolType = [symbolType, symbolType];\r\n            }\r\n            if (!isArray(symbolSize)) {\r\n                symbolSize = [symbolSize, symbolSize];\r\n            }\r\n            mlData.from.each(function (idx) {\r\n                updateDataVisualAndLayout(fromData, idx, true);\r\n                updateDataVisualAndLayout(toData, idx, false);\r\n            });\r\n            lineData.each(function (idx) {\r\n                var lineStyle = lineData.getItemModel(idx)\r\n                    .getModel('lineStyle').getLineStyle();\r\n                lineData.setItemLayout(idx, [\r\n                    fromData.getItemLayout(idx),\r\n                    toData.getItemLayout(idx)\r\n                ]);\r\n                if (lineStyle.stroke == null) {\r\n                    lineStyle.stroke = fromData.getItemVisual(idx, 'style').fill;\r\n                }\r\n                lineData.setItemVisual(idx, {\r\n                    fromSymbolRotate: fromData.getItemVisual(idx, 'symbolRotate'),\r\n                    fromSymbolSize: fromData.getItemVisual(idx, 'symbolSize'),\r\n                    fromSymbol: fromData.getItemVisual(idx, 'symbol'),\r\n                    toSymbolRotate: toData.getItemVisual(idx, 'symbolRotate'),\r\n                    toSymbolSize: toData.getItemVisual(idx, 'symbolSize'),\r\n                    toSymbol: toData.getItemVisual(idx, 'symbol'),\r\n                    style: lineStyle\r\n                });\r\n            });\r\n            lineDraw.updateData(lineData);\r\n            mlData.line.eachItemGraphicEl(function (el, idx) {\r\n                el.traverse(function (child) {\r\n                    getECData(child).dataModel = mlModel;\r\n                });\r\n            });\r\n            function updateDataVisualAndLayout(data, idx, isFrom) {\r\n                var itemModel = data.getItemModel(idx);\r\n                updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\r\n                var style = itemModel.getModel('itemStyle').getItemStyle();\r\n                if (style.fill == null) {\r\n                    style.fill = getVisualFromData(seriesData, 'color');\r\n                }\r\n                data.setItemVisual(idx, {\r\n                    symbolRotate: itemModel.get('symbolRotate'),\r\n                    symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\r\n                    symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\r\n                    style: style\r\n                });\r\n            }\r\n            this.markKeep(lineDraw);\r\n            lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\r\n        };\r\n        MarkLineView.type = 'markLine';\r\n        return MarkLineView;\r\n    }(MarkerView));\r\n    function createList$2(coordSys, seriesModel, mlModel) {\r\n        var coordDimsInfos;\r\n        if (coordSys) {\r\n            coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n                var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};\r\n                return defaults({ name: coordDim }, info);\r\n            });\r\n        }\r\n        else {\r\n            coordDimsInfos = [{\r\n                    name: 'value',\r\n                    type: 'float'\r\n                }];\r\n        }\r\n        var fromData = new List(coordDimsInfos, mlModel);\r\n        var toData = new List(coordDimsInfos, mlModel);\r\n        var lineData = new List([], mlModel);\r\n        var optData = map(mlModel.get('data'), curry(markLineTransform, seriesModel, coordSys, mlModel));\r\n        if (coordSys) {\r\n            optData = filter(optData, curry(markLineFilter, coordSys));\r\n        }\r\n        var dimValueGetter$1 = coordSys ? dimValueGetter : function (item) {\r\n            return item.value;\r\n        };\r\n        fromData.initData(map(optData, function (item) {\r\n            return item[0];\r\n        }), null, dimValueGetter$1);\r\n        toData.initData(map(optData, function (item) {\r\n            return item[1];\r\n        }), null, dimValueGetter$1);\r\n        lineData.initData(map(optData, function (item) {\r\n            return item[2];\r\n        }));\r\n        lineData.hasItemOption = true;\r\n        return {\r\n            from: fromData,\r\n            to: toData,\r\n            line: lineData\r\n        };\r\n    }\r\n    ComponentView.registerClass(MarkLineView);\n\n    registerPreprocessor(function (opt) {\r\n        opt.markLine = opt.markLine || {};\r\n    });\n\n    var MarkAreaModel = (function (_super) {\r\n        __extends(MarkAreaModel, _super);\r\n        function MarkAreaModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkAreaModel.type;\r\n            return _this;\r\n        }\r\n        MarkAreaModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n            return new MarkAreaModel(markerOpt, masterMarkerModel, ecModel);\r\n        };\r\n        MarkAreaModel.type = 'markArea';\r\n        MarkAreaModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 1,\r\n            tooltip: {\r\n                trigger: 'item'\r\n            },\r\n            animation: false,\r\n            label: {\r\n                show: true,\r\n                position: 'top'\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 0\r\n            },\r\n            emphasis: {\r\n                label: {\r\n                    show: true,\r\n                    position: 'top'\r\n                }\r\n            }\r\n        };\r\n        return MarkAreaModel;\r\n    }(MarkerModel));\r\n    ComponentModel.registerClass(MarkAreaModel);\n\n    var inner$d = makeInner();\r\n    var markAreaTransform = function (seriesModel, coordSys, maModel, item) {\r\n        var lt = dataTransform(seriesModel, item[0]);\r\n        var rb = dataTransform(seriesModel, item[1]);\r\n        var ltCoord = lt.coord;\r\n        var rbCoord = rb.coord;\r\n        ltCoord[0] = retrieve(ltCoord[0], -Infinity);\r\n        ltCoord[1] = retrieve(ltCoord[1], -Infinity);\r\n        rbCoord[0] = retrieve(rbCoord[0], Infinity);\r\n        rbCoord[1] = retrieve(rbCoord[1], Infinity);\r\n        var result = mergeAll([{}, lt, rb]);\r\n        result.coord = [\r\n            lt.coord, rb.coord\r\n        ];\r\n        result.x0 = lt.x;\r\n        result.y0 = lt.y;\r\n        result.x1 = rb.x;\r\n        result.y1 = rb.y;\r\n        return result;\r\n    };\r\n    function isInifinity$1(val) {\r\n        return !isNaN(val) && !isFinite(val);\r\n    }\r\n    function ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\r\n        var otherDimIndex = 1 - dimIndex;\r\n        return isInifinity$1(fromCoord[otherDimIndex]) && isInifinity$1(toCoord[otherDimIndex]);\r\n    }\r\n    function markAreaFilter(coordSys, item) {\r\n        var fromCoord = item.coord[0];\r\n        var toCoord = item.coord[1];\r\n        if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n            if (fromCoord && toCoord\r\n                && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord)\r\n                    || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord))) {\r\n                return true;\r\n            }\r\n        }\r\n        return dataFilter$1(coordSys, {\r\n            coord: fromCoord,\r\n            x: item.x0,\r\n            y: item.y0\r\n        })\r\n            || dataFilter$1(coordSys, {\r\n                coord: toCoord,\r\n                x: item.x1,\r\n                y: item.y1\r\n            });\r\n    }\r\n    function getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {\r\n        var coordSys = seriesModel.coordinateSystem;\r\n        var itemModel = data.getItemModel(idx);\r\n        var point;\r\n        var xPx = parsePercent$2(itemModel.get(dims[0]), api.getWidth());\r\n        var yPx = parsePercent$2(itemModel.get(dims[1]), api.getHeight());\r\n        if (!isNaN(xPx) && !isNaN(yPx)) {\r\n            point = [xPx, yPx];\r\n        }\r\n        else {\r\n            if (seriesModel.getMarkerPosition) {\r\n                point = seriesModel.getMarkerPosition(data.getValues(dims, idx));\r\n            }\r\n            else {\r\n                var x = data.get(dims[0], idx);\r\n                var y = data.get(dims[1], idx);\r\n                var pt = [x, y];\r\n                coordSys.clampData && coordSys.clampData(pt, pt);\r\n                point = coordSys.dataToPoint(pt, true);\r\n            }\r\n            if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n                var xAxis = coordSys.getAxis('x');\r\n                var yAxis = coordSys.getAxis('y');\r\n                var x = data.get(dims[0], idx);\r\n                var y = data.get(dims[1], idx);\r\n                if (isInifinity$1(x)) {\r\n                    point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]);\r\n                }\r\n                else if (isInifinity$1(y)) {\r\n                    point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]);\r\n                }\r\n            }\r\n            if (!isNaN(xPx)) {\r\n                point[0] = xPx;\r\n            }\r\n            if (!isNaN(yPx)) {\r\n                point[1] = yPx;\r\n            }\r\n        }\r\n        return point;\r\n    }\r\n    var dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\r\n    var MarkAreaView = (function (_super) {\r\n        __extends(MarkAreaView, _super);\r\n        function MarkAreaView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = MarkAreaView.type;\r\n            return _this;\r\n        }\r\n        MarkAreaView.prototype.updateTransform = function (markAreaModel, ecModel, api) {\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var maModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markArea');\r\n                if (maModel) {\r\n                    var areaData_1 = maModel.getData();\r\n                    areaData_1.each(function (idx) {\r\n                        var points = map(dimPermutations, function (dim) {\r\n                            return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api);\r\n                        });\r\n                        areaData_1.setItemLayout(idx, points);\r\n                        var el = areaData_1.getItemGraphicEl(idx);\r\n                        el.setShape('points', points);\r\n                    });\r\n                }\r\n            }, this);\r\n        };\r\n        MarkAreaView.prototype.renderSeries = function (seriesModel, maModel, ecModel, api) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var seriesId = seriesModel.id;\r\n            var seriesData = seriesModel.getData();\r\n            var areaGroupMap = this.markerGroupMap;\r\n            var polygonGroup = areaGroupMap.get(seriesId)\r\n                || areaGroupMap.set(seriesId, { group: new Group() });\r\n            this.group.add(polygonGroup.group);\r\n            this.markKeep(polygonGroup);\r\n            var areaData = createList$3(coordSys, seriesModel, maModel);\r\n            maModel.setData(areaData);\r\n            areaData.each(function (idx) {\r\n                var points = map(dimPermutations, function (dim) {\r\n                    return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\r\n                });\r\n                var allClipped = true;\r\n                each(dimPermutations, function (dim) {\r\n                    if (!allClipped) {\r\n                        return;\r\n                    }\r\n                    var xValue = areaData.get(dim[0], idx);\r\n                    var yValue = areaData.get(dim[1], idx);\r\n                    if ((isInifinity$1(xValue) || coordSys.getAxis('x').containData(xValue))\r\n                        && (isInifinity$1(yValue) || coordSys.getAxis('y').containData(yValue))) {\r\n                        allClipped = false;\r\n                    }\r\n                });\r\n                areaData.setItemLayout(idx, {\r\n                    points: points,\r\n                    allClipped: allClipped\r\n                });\r\n                var style = areaData.getItemModel(idx).getModel('itemStyle').getItemStyle();\r\n                var color$1 = getVisualFromData(seriesData, 'color');\r\n                if (!style.fill) {\r\n                    style.fill = color$1;\r\n                    if (typeof style.fill === 'string') {\r\n                        style.fill = modifyAlpha(style.fill, 0.4);\r\n                    }\r\n                }\r\n                if (!style.stroke) {\r\n                    style.stroke = color$1;\r\n                }\r\n                areaData.setItemVisual(idx, 'style', style);\r\n            });\r\n            areaData.diff(inner$d(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$d(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$d(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$d(polygonGroup).data = areaData;\r\n            polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent');\r\n        };\r\n        MarkAreaView.type = 'markArea';\r\n        return MarkAreaView;\r\n    }(MarkerView));\r\n    function createList$3(coordSys, seriesModel, maModel) {\r\n        var coordDimsInfos;\r\n        var areaData;\r\n        var dims = ['x0', 'y0', 'x1', 'y1'];\r\n        if (coordSys) {\r\n            coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n                var data = seriesModel.getData();\r\n                var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {};\r\n                return defaults({\r\n                    name: coordDim\r\n                }, info);\r\n            });\r\n            areaData = new List(map(dims, function (dim, idx) {\r\n                return {\r\n                    name: dim,\r\n                    type: coordDimsInfos[idx % 2].type\r\n                };\r\n            }), maModel);\r\n        }\r\n        else {\r\n            coordDimsInfos = [{\r\n                    name: 'value',\r\n                    type: 'float'\r\n                }];\r\n            areaData = new List(coordDimsInfos, maModel);\r\n        }\r\n        var optData = map(maModel.get('data'), curry(markAreaTransform, seriesModel, coordSys, maModel));\r\n        if (coordSys) {\r\n            optData = filter(optData, curry(markAreaFilter, coordSys));\r\n        }\r\n        var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) {\r\n            return item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];\r\n        } : function (item) {\r\n            return item.value;\r\n        };\r\n        areaData.initData(optData, null, dimValueGetter);\r\n        areaData.hasItemOption = true;\r\n        return areaData;\r\n    }\r\n    ComponentView.registerClass(MarkAreaView);\n\n    registerPreprocessor(function (opt) {\r\n        opt.markArea = opt.markArea || {};\r\n    });\n\n    ComponentModel.registerSubTypeDefaulter('dataZoom', function () {\r\n        return 'slider';\r\n    });\n\n    var DATA_ZOOM_AXIS_DIMENSIONS = [\r\n        'x', 'y', 'radius', 'angle', 'single'\r\n    ];\r\n    var SERIES_COORDS = ['cartesian2d', 'polar', 'singleAxis'];\r\n    function isCoordSupported(seriesModel) {\r\n        var coordType = seriesModel.get('coordinateSystem');\r\n        return indexOf(SERIES_COORDS, coordType) >= 0;\r\n    }\r\n    function getAxisMainType(axisDim) {\r\n        if (__DEV__) {\r\n            assert(axisDim);\r\n        }\r\n        return axisDim + 'Axis';\r\n    }\r\n    function findEffectedDataZooms(ecModel, payload) {\r\n        var axisRecords = createHashMap();\r\n        var effectedModels = [];\r\n        var effectedModelMap = createHashMap();\r\n        ecModel.eachComponent({ mainType: 'dataZoom', query: payload }, function (dataZoomModel) {\r\n            if (!effectedModelMap.get(dataZoomModel.uid)) {\r\n                addToEffected(dataZoomModel);\r\n            }\r\n        });\r\n        var foundNewLink;\r\n        do {\r\n            foundNewLink = false;\r\n            ecModel.eachComponent('dataZoom', processSingle);\r\n        } while (foundNewLink);\r\n        function processSingle(dataZoomModel) {\r\n            if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) {\r\n                addToEffected(dataZoomModel);\r\n                foundNewLink = true;\r\n            }\r\n        }\r\n        function addToEffected(dataZoom) {\r\n            effectedModelMap.set(dataZoom.uid, true);\r\n            effectedModels.push(dataZoom);\r\n            markAxisControlled(dataZoom);\r\n        }\r\n        function isLinked(dataZoomModel) {\r\n            var isLink = false;\r\n            dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                var axisIdxArr = axisRecords.get(axisDim);\r\n                if (axisIdxArr && axisIdxArr[axisIndex]) {\r\n                    isLink = true;\r\n                }\r\n            });\r\n            return isLink;\r\n        }\r\n        function markAxisControlled(dataZoomModel) {\r\n            dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true;\r\n            });\r\n        }\r\n        return effectedModels;\r\n    }\r\n    function collectReferCoordSysModelInfo(dataZoomModel) {\r\n        var ecModel = dataZoomModel.ecModel;\r\n        var coordSysInfoWrap = {\r\n            infoList: [],\r\n            infoMap: createHashMap()\r\n        };\r\n        dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n            var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n            if (!axisModel) {\r\n                return;\r\n            }\r\n            var coordSysModel = axisModel.getCoordSysModel();\r\n            if (!coordSysModel) {\r\n                return;\r\n            }\r\n            var coordSysUid = coordSysModel.uid;\r\n            var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid);\r\n            if (!coordSysInfo) {\r\n                coordSysInfo = { model: coordSysModel, axisModels: [] };\r\n                coordSysInfoWrap.infoList.push(coordSysInfo);\r\n                coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo);\r\n            }\r\n            coordSysInfo.axisModels.push(axisModel);\r\n        });\r\n        return coordSysInfoWrap;\r\n    }\n\n    var DataZoomAxisInfo = (function () {\r\n        function DataZoomAxisInfo() {\r\n            this.indexList = [];\r\n            this.indexMap = [];\r\n        }\r\n        DataZoomAxisInfo.prototype.add = function (axisCmptIdx) {\r\n            if (!this.indexMap[axisCmptIdx]) {\r\n                this.indexList.push(axisCmptIdx);\r\n                this.indexMap[axisCmptIdx] = true;\r\n            }\r\n        };\r\n        return DataZoomAxisInfo;\r\n    }());\r\n    var DataZoomModel = (function (_super) {\r\n        __extends(DataZoomModel, _super);\r\n        function DataZoomModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = DataZoomModel.type;\r\n            _this._autoThrottle = true;\r\n            _this._noTarget = true;\r\n            _this._rangePropMode = ['percent', 'percent'];\r\n            return _this;\r\n        }\r\n        DataZoomModel.prototype.init = function (option, parentModel, ecModel) {\r\n            var inputRawOption = retrieveRawOption(option);\r\n            this.settledOption = inputRawOption;\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            this._doInit(inputRawOption);\r\n        };\r\n        DataZoomModel.prototype.mergeOption = function (newOption) {\r\n            var inputRawOption = retrieveRawOption(newOption);\r\n            merge(this.option, newOption, true);\r\n            merge(this.settledOption, inputRawOption, true);\r\n            this._doInit(inputRawOption);\r\n        };\r\n        DataZoomModel.prototype._doInit = function (inputRawOption) {\r\n            var thisOption = this.option;\r\n            this._setDefaultThrottle(inputRawOption);\r\n            this._updateRangeUse(inputRawOption);\r\n            var settledOption = this.settledOption;\r\n            each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\r\n                if (this._rangePropMode[index] === 'value') {\r\n                    thisOption[names[0]] = settledOption[names[0]] = null;\r\n                }\r\n            }, this);\r\n            this._resetTarget();\r\n        };\r\n        DataZoomModel.prototype._resetTarget = function () {\r\n            var optionOrient = this.get('orient', true);\r\n            var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap();\r\n            var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap);\r\n            if (hasAxisSpecified) {\r\n                this._orient = optionOrient || this._makeAutoOrientByTargetAxis();\r\n            }\r\n            else {\r\n                this._orient = optionOrient || 'horizontal';\r\n                this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient);\r\n            }\r\n            this._noTarget = true;\r\n            targetAxisIndexMap.each(function (axisInfo) {\r\n                if (axisInfo.indexList.length) {\r\n                    this._noTarget = false;\r\n                }\r\n            }, this);\r\n        };\r\n        DataZoomModel.prototype._fillSpecifiedTargetAxis = function (targetAxisIndexMap) {\r\n            var hasAxisSpecified = false;\r\n            each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) {\r\n                var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING);\r\n                if (!refering.specified) {\r\n                    return;\r\n                }\r\n                hasAxisSpecified = true;\r\n                var axisInfo = new DataZoomAxisInfo();\r\n                each(refering.models, function (axisModel) {\r\n                    axisInfo.add(axisModel.componentIndex);\r\n                });\r\n                targetAxisIndexMap.set(axisDim, axisInfo);\r\n            }, this);\r\n            return hasAxisSpecified;\r\n        };\r\n        DataZoomModel.prototype._fillAutoTargetAxisByOrient = function (targetAxisIndexMap, orient) {\r\n            var ecModel = this.ecModel;\r\n            var needAuto = true;\r\n            if (needAuto) {\r\n                var axisDim = orient === 'vertical' ? 'y' : 'x';\r\n                var axisModels = ecModel.findComponents({ mainType: axisDim + 'Axis' });\r\n                setParallelAxis(axisModels, axisDim);\r\n            }\r\n            if (needAuto) {\r\n                var axisModels = ecModel.findComponents({\r\n                    mainType: 'singleAxis',\r\n                    filter: function (axisModel) { return axisModel.get('orient', true) === orient; }\r\n                });\r\n                setParallelAxis(axisModels, 'single');\r\n            }\r\n            function setParallelAxis(axisModels, axisDim) {\r\n                var axisModel = axisModels[0];\r\n                if (!axisModel) {\r\n                    return;\r\n                }\r\n                var axisInfo = new DataZoomAxisInfo();\r\n                axisInfo.add(axisModel.componentIndex);\r\n                targetAxisIndexMap.set(axisDim, axisInfo);\r\n                needAuto = false;\r\n                if (axisDim === 'x' || axisDim === 'y') {\r\n                    var gridModel_1 = axisModel.getReferringComponents('grid', SINGLE_REFERRING).models[0];\r\n                    gridModel_1 && each(axisModels, function (axModel) {\r\n                        if (axisModel.componentIndex !== axModel.componentIndex\r\n                            && gridModel_1 === axModel.getReferringComponents('grid', SINGLE_REFERRING).models[0]) {\r\n                            axisInfo.add(axModel.componentIndex);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            if (needAuto) {\r\n                each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) {\r\n                    if (!needAuto) {\r\n                        return;\r\n                    }\r\n                    var axisModels = ecModel.findComponents({\r\n                        mainType: getAxisMainType(axisDim),\r\n                        filter: function (axisModel) { return axisModel.get('type', true) === 'category'; }\r\n                    });\r\n                    if (axisModels[0]) {\r\n                        var axisInfo = new DataZoomAxisInfo();\r\n                        axisInfo.add(axisModels[0].componentIndex);\r\n                        targetAxisIndexMap.set(axisDim, axisInfo);\r\n                        needAuto = false;\r\n                    }\r\n                }, this);\r\n            }\r\n        };\r\n        DataZoomModel.prototype._makeAutoOrientByTargetAxis = function () {\r\n            var dim;\r\n            this.eachTargetAxis(function (axisDim) {\r\n                !dim && (dim = axisDim);\r\n            }, this);\r\n            return dim === 'y' ? 'vertical' : 'horizontal';\r\n        };\r\n        DataZoomModel.prototype._setDefaultThrottle = function (inputRawOption) {\r\n            if (inputRawOption.hasOwnProperty('throttle')) {\r\n                this._autoThrottle = false;\r\n            }\r\n            if (this._autoThrottle) {\r\n                var globalOption = this.ecModel.option;\r\n                this.option.throttle = (globalOption.animation && globalOption.animationDurationUpdate > 0) ? 100 : 20;\r\n            }\r\n        };\r\n        DataZoomModel.prototype._updateRangeUse = function (inputRawOption) {\r\n            var rangePropMode = this._rangePropMode;\r\n            var rangeModeInOption = this.get('rangeMode');\r\n            each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\r\n                var percentSpecified = inputRawOption[names[0]] != null;\r\n                var valueSpecified = inputRawOption[names[1]] != null;\r\n                if (percentSpecified && !valueSpecified) {\r\n                    rangePropMode[index] = 'percent';\r\n                }\r\n                else if (!percentSpecified && valueSpecified) {\r\n                    rangePropMode[index] = 'value';\r\n                }\r\n                else if (rangeModeInOption) {\r\n                    rangePropMode[index] = rangeModeInOption[index];\r\n                }\r\n                else if (percentSpecified) {\r\n                    rangePropMode[index] = 'percent';\r\n                }\r\n            });\r\n        };\r\n        DataZoomModel.prototype.noTarget = function () {\r\n            return this._noTarget;\r\n        };\r\n        DataZoomModel.prototype.getFirstTargetAxisModel = function () {\r\n            var firstAxisModel;\r\n            this.eachTargetAxis(function (axisDim, axisIndex) {\r\n                if (firstAxisModel == null) {\r\n                    firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n                }\r\n            }, this);\r\n            return firstAxisModel;\r\n        };\r\n        DataZoomModel.prototype.eachTargetAxis = function (callback, context) {\r\n            this._targetAxisInfoMap.each(function (axisInfo, axisDim) {\r\n                each(axisInfo.indexList, function (axisIndex) {\r\n                    callback.call(context, axisDim, axisIndex);\r\n                });\r\n            });\r\n        };\r\n        DataZoomModel.prototype.getAxisProxy = function (axisDim, axisIndex) {\r\n            var axisModel = this.getAxisModel(axisDim, axisIndex);\r\n            if (axisModel) {\r\n                return axisModel.__dzAxisProxy;\r\n            }\r\n        };\r\n        DataZoomModel.prototype.getAxisModel = function (axisDim, axisIndex) {\r\n            if (__DEV__) {\r\n                assert(axisDim && axisIndex != null);\r\n            }\r\n            var axisInfo = this._targetAxisInfoMap.get(axisDim);\r\n            if (axisInfo && axisInfo.indexMap[axisIndex]) {\r\n                return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n            }\r\n        };\r\n        DataZoomModel.prototype.setRawRange = function (opt) {\r\n            var thisOption = this.option;\r\n            var settledOption = this.settledOption;\r\n            each([['start', 'startValue'], ['end', 'endValue']], function (names) {\r\n                if (opt[names[0]] != null || opt[names[1]] != null) {\r\n                    thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\r\n                    thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\r\n                }\r\n            }, this);\r\n            this._updateRangeUse(opt);\r\n        };\r\n        DataZoomModel.prototype.setCalculatedRange = function (opt) {\r\n            var option = this.option;\r\n            each(['start', 'startValue', 'end', 'endValue'], function (name) {\r\n                option[name] = opt[name];\r\n            });\r\n        };\r\n        DataZoomModel.prototype.getPercentRange = function () {\r\n            var axisProxy = this.findRepresentativeAxisProxy();\r\n            if (axisProxy) {\r\n                return axisProxy.getDataPercentWindow();\r\n            }\r\n        };\r\n        DataZoomModel.prototype.getValueRange = function (axisDim, axisIndex) {\r\n            if (axisDim == null && axisIndex == null) {\r\n                var axisProxy = this.findRepresentativeAxisProxy();\r\n                if (axisProxy) {\r\n                    return axisProxy.getDataValueWindow();\r\n                }\r\n            }\r\n            else {\r\n                return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow();\r\n            }\r\n        };\r\n        DataZoomModel.prototype.findRepresentativeAxisProxy = function (axisModel) {\r\n            if (axisModel) {\r\n                return axisModel.__dzAxisProxy;\r\n            }\r\n            var firstProxy;\r\n            var axisDimList = this._targetAxisInfoMap.keys();\r\n            for (var i = 0; i < axisDimList.length; i++) {\r\n                var axisDim = axisDimList[i];\r\n                var axisInfo = this._targetAxisInfoMap.get(axisDim);\r\n                for (var j = 0; j < axisInfo.indexList.length; j++) {\r\n                    var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]);\r\n                    if (proxy.hostedBy(this)) {\r\n                        return proxy;\r\n                    }\r\n                    if (!firstProxy) {\r\n                        firstProxy = proxy;\r\n                    }\r\n                }\r\n            }\r\n            return firstProxy;\r\n        };\r\n        DataZoomModel.prototype.getRangePropMode = function () {\r\n            return this._rangePropMode.slice();\r\n        };\r\n        DataZoomModel.prototype.getOrient = function () {\r\n            if (__DEV__) {\r\n                assert(this._orient);\r\n            }\r\n            return this._orient;\r\n        };\r\n        DataZoomModel.type = 'dataZoom';\r\n        DataZoomModel.dependencies = [\r\n            'xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series', 'toolbox'\r\n        ];\r\n        DataZoomModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 4,\r\n            filterMode: 'filter',\r\n            start: 0,\r\n            end: 100\r\n        };\r\n        return DataZoomModel;\r\n    }(ComponentModel));\r\n    function retrieveRawOption(option) {\r\n        var ret = {};\r\n        each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\r\n            option.hasOwnProperty(name) && (ret[name] = option[name]);\r\n        });\r\n        return ret;\r\n    }\n\n    var DataZoomView = (function (_super) {\r\n        __extends(DataZoomView, _super);\r\n        function DataZoomView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = DataZoomView.type;\r\n            return _this;\r\n        }\r\n        DataZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\r\n            this.dataZoomModel = dataZoomModel;\r\n            this.ecModel = ecModel;\r\n            this.api = api;\r\n        };\r\n        DataZoomView.type = 'dataZoom';\r\n        return DataZoomView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(DataZoomView);\n\n    var SliderZoomModel = (function (_super) {\r\n        __extends(SliderZoomModel, _super);\r\n        function SliderZoomModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SliderZoomModel.type;\r\n            return _this;\r\n        }\r\n        SliderZoomModel.type = 'dataZoom.slider';\r\n        SliderZoomModel.layoutMode = 'box';\r\n        SliderZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {\r\n            show: true,\r\n            right: 'ph',\r\n            top: 'ph',\r\n            width: 'ph',\r\n            height: 'ph',\r\n            left: null,\r\n            bottom: null,\r\n            borderColor: '#d2dbee',\r\n            borderRadius: 3,\r\n            backgroundColor: 'rgba(47,69,84,0)',\r\n            dataBackground: {\r\n                lineStyle: {\r\n                    color: '#d2dbee',\r\n                    width: 0.5\r\n                },\r\n                areaStyle: {\r\n                    color: '#d2dbee',\r\n                    opacity: 0.2\r\n                }\r\n            },\r\n            selectedDataBackground: {\r\n                lineStyle: {\r\n                    color: '#8fb0f7',\r\n                    width: 0.5\r\n                },\r\n                areaStyle: {\r\n                    color: '#8fb0f7',\r\n                    opacity: 0.2\r\n                }\r\n            },\r\n            fillerColor: 'rgba(135,175,274,0.2)',\r\n            handleIcon: 'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z',\r\n            handleSize: '100%',\r\n            handleStyle: {\r\n                color: '#fff',\r\n                borderColor: '#ACB8D1'\r\n            },\r\n            moveHandleSize: 7,\r\n            moveHandleIcon: 'path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z',\r\n            moveHandleStyle: {\r\n                color: '#D2DBEE',\r\n                opacity: 0.7\r\n            },\r\n            showDetail: true,\r\n            showDataShadow: 'auto',\r\n            realtime: true,\r\n            zoomLock: false,\r\n            textStyle: {\r\n                color: '#6E7079'\r\n            },\r\n            brushSelect: true,\r\n            brushStyle: {\r\n                color: 'rgba(135,175,274,0.15)'\r\n            },\r\n            emphasis: {\r\n                handleStyle: {\r\n                    borderColor: '#8FB0F7'\r\n                },\r\n                moveHandleStyle: {\r\n                    color: '#8FB0F7'\r\n                }\r\n            }\r\n        });\r\n        return SliderZoomModel;\r\n    }(DataZoomModel));\r\n    ComponentModel.registerClass(SliderZoomModel);\n\n    function sliderMove(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\r\n        delta = delta || 0;\r\n        var extentSpan = extent[1] - extent[0];\r\n        if (minSpan != null) {\r\n            minSpan = restrict(minSpan, [0, extentSpan]);\r\n        }\r\n        if (maxSpan != null) {\r\n            maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\r\n        }\r\n        if (handleIndex === 'all') {\r\n            var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\r\n            handleSpan = restrict(handleSpan, [0, extentSpan]);\r\n            minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\r\n            handleIndex = 0;\r\n        }\r\n        handleEnds[0] = restrict(handleEnds[0], extent);\r\n        handleEnds[1] = restrict(handleEnds[1], extent);\r\n        var originalDistSign = getSpanSign(handleEnds, handleIndex);\r\n        handleEnds[handleIndex] += delta;\r\n        var extentMinSpan = minSpan || 0;\r\n        var realExtent = extent.slice();\r\n        originalDistSign.sign < 0 ? (realExtent[0] += extentMinSpan) : (realExtent[1] -= extentMinSpan);\r\n        handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent);\r\n        var currDistSign;\r\n        currDistSign = getSpanSign(handleEnds, handleIndex);\r\n        if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\r\n            handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\r\n        }\r\n        currDistSign = getSpanSign(handleEnds, handleIndex);\r\n        if (maxSpan != null && currDistSign.span > maxSpan) {\r\n            handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\r\n        }\r\n        return handleEnds;\r\n    }\r\n    function getSpanSign(handleEnds, handleIndex) {\r\n        var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex];\r\n        return { span: Math.abs(dist), sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1 };\r\n    }\r\n    function restrict(value, extend) {\r\n        return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\r\n    }\n\n    var Rect$1 = Rect;\r\n    var DEFAULT_LOCATION_EDGE_GAP = 7;\r\n    var DEFAULT_FRAME_BORDER_WIDTH = 1;\r\n    var DEFAULT_FILLER_SIZE = 30;\r\n    var DEFAULT_MOVE_HANDLE_SIZE = 7;\r\n    var HORIZONTAL = 'horizontal';\r\n    var VERTICAL = 'vertical';\r\n    var LABEL_GAP = 5;\r\n    var SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\r\n    var REALTIME_ANIMATION_CONFIG = {\r\n        easing: 'cubicOut',\r\n        duration: 100\r\n    };\r\n    var SliderZoomView = (function (_super) {\r\n        __extends(SliderZoomView, _super);\r\n        function SliderZoomView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SliderZoomView.type;\r\n            _this._displayables = {};\r\n            return _this;\r\n        }\r\n        SliderZoomView.prototype.init = function (ecModel, api) {\r\n            this.api = api;\r\n            this._onBrush = bind(this._onBrush, this);\r\n            this._onBrushEnd = bind(this._onBrushEnd, this);\r\n        };\r\n        SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\r\n            _super.prototype.render.apply(this, arguments);\r\n            createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate');\r\n            this._orient = dataZoomModel.getOrient();\r\n            if (dataZoomModel.get('show') === false) {\r\n                this.group.removeAll();\r\n                return;\r\n            }\r\n            if (dataZoomModel.noTarget()) {\r\n                this._clear();\r\n                this.group.removeAll();\r\n                return;\r\n            }\r\n            if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\r\n                this._buildView();\r\n            }\r\n            this._updateView();\r\n        };\r\n        SliderZoomView.prototype.dispose = function () {\r\n            this._clear();\r\n            _super.prototype.dispose.apply(this, arguments);\r\n        };\r\n        SliderZoomView.prototype._clear = function () {\r\n            clear(this, '_dispatchZoomAction');\r\n            var zr = this.api.getZr();\r\n            zr.off('mousemove', this._onBrush);\r\n            zr.off('mouseup', this._onBrushEnd);\r\n        };\r\n        SliderZoomView.prototype._buildView = function () {\r\n            var thisGroup = this.group;\r\n            thisGroup.removeAll();\r\n            this._brushing = false;\r\n            this._displayables.brushRect = null;\r\n            this._resetLocation();\r\n            this._resetInterval();\r\n            var barGroup = this._displayables.sliderGroup = new Group();\r\n            this._renderBackground();\r\n            this._renderHandle();\r\n            this._renderDataShadow();\r\n            thisGroup.add(barGroup);\r\n            this._positionGroup();\r\n        };\r\n        SliderZoomView.prototype._resetLocation = function () {\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var api = this.api;\r\n            var showMoveHandle = dataZoomModel.get('brushSelect');\r\n            var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0;\r\n            var coordRect = this._findCoordRect();\r\n            var ecSize = { width: api.getWidth(), height: api.getHeight() };\r\n            var positionInfo = this._orient === HORIZONTAL\r\n                ? {\r\n                    right: ecSize.width - coordRect.x - coordRect.width,\r\n                    top: (ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize),\r\n                    width: coordRect.width,\r\n                    height: DEFAULT_FILLER_SIZE\r\n                }\r\n                : {\r\n                    right: DEFAULT_LOCATION_EDGE_GAP,\r\n                    top: coordRect.y,\r\n                    width: DEFAULT_FILLER_SIZE,\r\n                    height: coordRect.height\r\n                };\r\n            var layoutParams = getLayoutParams(dataZoomModel.option);\r\n            each(['right', 'top', 'width', 'height'], function (name) {\r\n                if (layoutParams[name] === 'ph') {\r\n                    layoutParams[name] = positionInfo[name];\r\n                }\r\n            });\r\n            var layoutRect = getLayoutRect(layoutParams, ecSize);\r\n            this._location = { x: layoutRect.x, y: layoutRect.y };\r\n            this._size = [layoutRect.width, layoutRect.height];\r\n            this._orient === VERTICAL && this._size.reverse();\r\n        };\r\n        SliderZoomView.prototype._positionGroup = function () {\r\n            var thisGroup = this.group;\r\n            var location = this._location;\r\n            var orient = this._orient;\r\n            var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\r\n            var inverse = targetAxisModel && targetAxisModel.get('inverse');\r\n            var sliderGroup = this._displayables.sliderGroup;\r\n            var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse;\r\n            sliderGroup.attr((orient === HORIZONTAL && !inverse)\r\n                ? { scaleY: otherAxisInverse ? 1 : -1, scaleX: 1 }\r\n                : (orient === HORIZONTAL && inverse)\r\n                    ? { scaleY: otherAxisInverse ? 1 : -1, scaleX: -1 }\r\n                    : (orient === VERTICAL && !inverse)\r\n                        ? { scaleY: otherAxisInverse ? -1 : 1, scaleX: 1, rotation: Math.PI / 2 }\r\n                        : { scaleY: otherAxisInverse ? -1 : 1, scaleX: -1, rotation: Math.PI / 2 });\r\n            var rect = thisGroup.getBoundingRect([sliderGroup]);\r\n            thisGroup.x = location.x - rect.x;\r\n            thisGroup.y = location.y - rect.y;\r\n            thisGroup.markRedraw();\r\n        };\r\n        SliderZoomView.prototype._getViewExtent = function () {\r\n            return [0, this._size[0]];\r\n        };\r\n        SliderZoomView.prototype._renderBackground = function () {\r\n            var dataZoomModel = this.dataZoomModel;\r\n            var size = this._size;\r\n            var barGroup = this._displayables.sliderGroup;\r\n            var brushSelect = dataZoomModel.get('brushSelect');\r\n            barGroup.add(new Rect$1({\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$1({\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$1({\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$1({\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$1({\r\n                    silent: true,\r\n                    style: dataZoomModel.getModel('brushStyle').getItemStyle()\r\n                });\r\n                displayables.sliderGroup.add(brushRect);\r\n            }\r\n            brushRect.attr('ignore', false);\r\n            var brushStart = this._brushStart;\r\n            var sliderGroup = this._displayables.sliderGroup;\r\n            var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);\r\n            var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);\r\n            var size = this._size;\r\n            endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);\r\n            brushRect.setShape({\r\n                x: startPoint[0], y: 0,\r\n                width: endPoint[0] - startPoint[0], height: size[1]\r\n            });\r\n        };\r\n        SliderZoomView.prototype._dispatchZoomAction = function (realtime) {\r\n            var range = this._range;\r\n            this.api.dispatchAction({\r\n                type: 'dataZoom',\r\n                from: this.uid,\r\n                dataZoomId: this.dataZoomModel.id,\r\n                animation: realtime ? REALTIME_ANIMATION_CONFIG : null,\r\n                start: range[0],\r\n                end: range[1]\r\n            });\r\n        };\r\n        SliderZoomView.prototype._findCoordRect = function () {\r\n            var rect;\r\n            var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;\r\n            if (!rect && coordSysInfoList.length) {\r\n                var coordSys = coordSysInfoList[0].model.coordinateSystem;\r\n                rect = coordSys.getRect && coordSys.getRect();\r\n            }\r\n            if (!rect) {\r\n                var width = this.api.getWidth();\r\n                var height = this.api.getHeight();\r\n                rect = {\r\n                    x: width * 0.2,\r\n                    y: height * 0.2,\r\n                    width: width * 0.6,\r\n                    height: height * 0.6\r\n                };\r\n            }\r\n            return rect;\r\n        };\r\n        SliderZoomView.type = 'dataZoom.slider';\r\n        return SliderZoomView;\r\n    }(DataZoomView));\r\n    function getOtherDim(thisDim) {\r\n        var map = { x: 'y', y: 'x', radius: 'angle', angle: 'radius' };\r\n        return map[thisDim];\r\n    }\r\n    function getCursor(orient) {\r\n        return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\r\n    }\r\n    ComponentView.registerClass(SliderZoomView);\n\n    var each$7 = each;\r\n    var asc$1 = asc;\r\n    var AxisProxy = (function () {\r\n        function AxisProxy(dimName, axisIndex, dataZoomModel, ecModel) {\r\n            this._dimName = dimName;\r\n            this._axisIndex = axisIndex;\r\n            this.ecModel = ecModel;\r\n            this._dataZoomModel = dataZoomModel;\r\n        }\r\n        AxisProxy.prototype.hostedBy = function (dataZoomModel) {\r\n            return this._dataZoomModel === dataZoomModel;\r\n        };\r\n        AxisProxy.prototype.getDataValueWindow = function () {\r\n            return this._valueWindow.slice();\r\n        };\r\n        AxisProxy.prototype.getDataPercentWindow = function () {\r\n            return this._percentWindow.slice();\r\n        };\r\n        AxisProxy.prototype.getTargetSeriesModels = function () {\r\n            var seriesModels = [];\r\n            this.ecModel.eachSeries(function (seriesModel) {\r\n                if (isCoordSupported(seriesModel)) {\r\n                    var axisMainType = getAxisMainType(this._dimName);\r\n                    var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0];\r\n                    if (axisModel && this._axisIndex === axisModel.componentIndex) {\r\n                        seriesModels.push(seriesModel);\r\n                    }\r\n                }\r\n            }, this);\r\n            return seriesModels;\r\n        };\r\n        AxisProxy.prototype.getAxisModel = function () {\r\n            return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\r\n        };\r\n        AxisProxy.prototype.getMinMaxSpan = function () {\r\n            return clone(this._minMaxSpan);\r\n        };\r\n        AxisProxy.prototype.calculateDataWindow = function (opt) {\r\n            var dataExtent = this._dataExtent;\r\n            var axisModel = this.getAxisModel();\r\n            var scale = axisModel.axis.scale;\r\n            var rangePropMode = this._dataZoomModel.getRangePropMode();\r\n            var percentExtent = [0, 100];\r\n            var percentWindow = [];\r\n            var valueWindow = [];\r\n            var hasPropModeValue;\r\n            each$7(['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$7(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$7(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$7(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$7(['min', 'max'], function (minMax) {\r\n                var percentSpan = dataZoomModel.get(minMax + 'Span');\r\n                var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\r\n                valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan));\r\n                if (valueSpan != null) {\r\n                    percentSpan = linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\r\n                }\r\n                else if (percentSpan != null) {\r\n                    valueSpan = linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];\r\n                }\r\n                minMaxSpan[minMax + 'Span'] = percentSpan;\r\n                minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\r\n            }, this);\r\n        };\r\n        AxisProxy.prototype._setAxisModel = function () {\r\n            var axisModel = this.getAxisModel();\r\n            var percentWindow = this._percentWindow;\r\n            var valueWindow = this._valueWindow;\r\n            if (!percentWindow) {\r\n                return;\r\n            }\r\n            var precision = getPixelPrecision(valueWindow, [0, 500]);\r\n            precision = Math.min(precision, 20);\r\n            var rawExtentInfo = axisModel.axis.scale.rawExtentInfo;\r\n            if (percentWindow[0] !== 0) {\r\n                rawExtentInfo.setDeterminedMinMax('min', +valueWindow[0].toFixed(precision));\r\n            }\r\n            if (percentWindow[1] !== 100) {\r\n                rawExtentInfo.setDeterminedMinMax('max', +valueWindow[1].toFixed(precision));\r\n            }\r\n            rawExtentInfo.freeze();\r\n        };\r\n        return AxisProxy;\r\n    }());\r\n    function calculateDataExtent(axisProxy, axisDim, seriesModels) {\r\n        var dataExtent = [Infinity, -Infinity];\r\n        each$7(seriesModels, function (seriesModel) {\r\n            unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim);\r\n        });\r\n        var axisModel = axisProxy.getAxisModel();\r\n        var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate();\r\n        return [rawExtentResult.min, rawExtentResult.max];\r\n    }\n\n    registerProcessor(PRIORITY.PROCESSOR.FILTER, {\r\n        getTargetSeries: function (ecModel) {\r\n            function eachAxisModel(cb) {\r\n                ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n                    dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                        var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n                        cb(axisDim, axisIndex, axisModel, dataZoomModel);\r\n                    });\r\n                });\r\n            }\r\n            eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {\r\n                axisModel.__dzAxisProxy = null;\r\n            });\r\n            var proxyList = [];\r\n            eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {\r\n                if (!axisModel.__dzAxisProxy) {\r\n                    axisModel.__dzAxisProxy = new AxisProxy(axisDim, axisIndex, dataZoomModel, ecModel);\r\n                    proxyList.push(axisModel.__dzAxisProxy);\r\n                }\r\n            });\r\n            var seriesModelMap = createHashMap();\r\n            each(proxyList, function (axisProxy) {\r\n                each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\r\n                    seriesModelMap.set(seriesModel.uid, seriesModel);\r\n                });\r\n            });\r\n            return seriesModelMap;\r\n        },\r\n        overallReset: function (ecModel, api) {\r\n            ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n                dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                    dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel);\r\n                });\r\n                dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n                    dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api);\r\n                });\r\n            });\r\n            ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n                var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\r\n                if (axisProxy) {\r\n                    var percentRange = axisProxy.getDataPercentWindow();\r\n                    var valueRange = axisProxy.getDataValueWindow();\r\n                    dataZoomModel.setCalculatedRange({\r\n                        start: percentRange[0],\r\n                        end: percentRange[1],\r\n                        startValue: valueRange[0],\r\n                        endValue: valueRange[1]\r\n                    });\r\n                }\r\n            });\r\n        }\r\n    });\n\n    registerAction('dataZoom', function (payload, ecModel) {\r\n        var effectedModels = findEffectedDataZooms(ecModel, payload);\r\n        each(effectedModels, function (dataZoomModel) {\r\n            dataZoomModel.setRawRange({\r\n                start: payload.start,\r\n                end: payload.end,\r\n                startValue: payload.startValue,\r\n                endValue: payload.endValue\r\n            });\r\n        });\r\n    });\n\n    var InsideZoomModel = (function (_super) {\r\n        __extends(InsideZoomModel, _super);\r\n        function InsideZoomModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = InsideZoomModel.type;\r\n            return _this;\r\n        }\r\n        InsideZoomModel.type = 'dataZoom.inside';\r\n        InsideZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {\r\n            disabled: false,\r\n            zoomLock: false,\r\n            zoomOnMouseWheel: true,\r\n            moveOnMouseMove: true,\r\n            moveOnMouseWheel: false,\r\n            preventDefaultMouseMove: true\r\n        });\r\n        return InsideZoomModel;\r\n    }(DataZoomModel));\r\n    ComponentModel.registerClass(InsideZoomModel);\n\n    var ATTR = '\\0_ec_interaction_mutex';\r\n    function take(zr, resourceKey, userKey) {\r\n        var store = getStore(zr);\r\n        store[resourceKey] = userKey;\r\n    }\r\n    function release(zr, resourceKey, userKey) {\r\n        var store = getStore(zr);\r\n        var uKey = store[resourceKey];\r\n        if (uKey === userKey) {\r\n            store[resourceKey] = null;\r\n        }\r\n    }\r\n    function isTaken(zr, resourceKey) {\r\n        return !!getStore(zr)[resourceKey];\r\n    }\r\n    function getStore(zr) {\r\n        return zr[ATTR] || (zr[ATTR] = {});\r\n    }\r\n    registerAction({ type: 'takeGlobalCursor', event: 'globalCursorTaken', update: 'update' }, function () { });\n\n    var RoamController = (function (_super) {\r\n        __extends(RoamController, _super);\r\n        function RoamController(zr) {\r\n            var _this = _super.call(this) || this;\r\n            _this._zr = zr;\r\n            var mousedownHandler = bind(_this._mousedownHandler, _this);\r\n            var mousemoveHandler = bind(_this._mousemoveHandler, _this);\r\n            var mouseupHandler = bind(_this._mouseupHandler, _this);\r\n            var mousewheelHandler = bind(_this._mousewheelHandler, _this);\r\n            var pinchHandler = bind(_this._pinchHandler, _this);\r\n            _this.enable = function (controlType, opt) {\r\n                this.disable();\r\n                this._opt = defaults(clone(opt) || {}, {\r\n                    zoomOnMouseWheel: true,\r\n                    moveOnMouseMove: true,\r\n                    moveOnMouseWheel: false,\r\n                    preventDefaultMouseMove: true\r\n                });\r\n                if (controlType == null) {\r\n                    controlType = true;\r\n                }\r\n                if (controlType === true || (controlType === 'move' || controlType === 'pan')) {\r\n                    zr.on('mousedown', mousedownHandler);\r\n                    zr.on('mousemove', mousemoveHandler);\r\n                    zr.on('mouseup', mouseupHandler);\r\n                }\r\n                if (controlType === true || (controlType === 'scale' || controlType === 'zoom')) {\r\n                    zr.on('mousewheel', mousewheelHandler);\r\n                    zr.on('pinch', pinchHandler);\r\n                }\r\n            };\r\n            _this.disable = function () {\r\n                zr.off('mousedown', mousedownHandler);\r\n                zr.off('mousemove', mousemoveHandler);\r\n                zr.off('mouseup', mouseupHandler);\r\n                zr.off('mousewheel', mousewheelHandler);\r\n                zr.off('pinch', pinchHandler);\r\n            };\r\n            return _this;\r\n        }\r\n        RoamController.prototype.isDragging = function () {\r\n            return this._dragging;\r\n        };\r\n        RoamController.prototype.isPinching = function () {\r\n            return this._pinching;\r\n        };\r\n        RoamController.prototype.setPointerChecker = function (pointerChecker) {\r\n            this.pointerChecker = pointerChecker;\r\n        };\r\n        RoamController.prototype.dispose = function () {\r\n            this.disable();\r\n        };\r\n        RoamController.prototype._mousedownHandler = function (e) {\r\n            if (isMiddleOrRightButtonOnMouseUpDown(e)\r\n                || (e.target && e.target.draggable)) {\r\n                return;\r\n            }\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            if (this.pointerChecker && this.pointerChecker(e, x, y)) {\r\n                this._x = x;\r\n                this._y = y;\r\n                this._dragging = true;\r\n            }\r\n        };\r\n        RoamController.prototype._mousemoveHandler = function (e) {\r\n            if (!this._dragging\r\n                || !isAvailableBehavior('moveOnMouseMove', e, this._opt)\r\n                || e.gestureEvent === 'pinch'\r\n                || isTaken(this._zr, 'globalPan')) {\r\n                return;\r\n            }\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            var oldX = this._x;\r\n            var oldY = this._y;\r\n            var dx = x - oldX;\r\n            var dy = y - oldY;\r\n            this._x = x;\r\n            this._y = y;\r\n            this._opt.preventDefaultMouseMove && stop(e.event);\r\n            trigger(this, 'pan', 'moveOnMouseMove', e, {\r\n                dx: dx, dy: dy, oldX: oldX, oldY: oldY, newX: x, newY: y, isAvailableBehavior: null\r\n            });\r\n        };\r\n        RoamController.prototype._mouseupHandler = function (e) {\r\n            if (!isMiddleOrRightButtonOnMouseUpDown(e)) {\r\n                this._dragging = false;\r\n            }\r\n        };\r\n        RoamController.prototype._mousewheelHandler = function (e) {\r\n            var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\r\n            var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\r\n            var wheelDelta = e.wheelDelta;\r\n            var absWheelDeltaDelta = Math.abs(wheelDelta);\r\n            var originX = e.offsetX;\r\n            var originY = e.offsetY;\r\n            if (wheelDelta === 0 || (!shouldZoom && !shouldMove)) {\r\n                return;\r\n            }\r\n            if (shouldZoom) {\r\n                var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\r\n                var scale = wheelDelta > 0 ? factor : 1 / factor;\r\n                checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\r\n                    scale: scale, originX: originX, originY: originY, isAvailableBehavior: null\r\n                });\r\n            }\r\n            if (shouldMove) {\r\n                var absDelta = Math.abs(wheelDelta);\r\n                var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\r\n                checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\r\n                    scrollDelta: scrollDelta, originX: originX, originY: originY, isAvailableBehavior: null\r\n                });\r\n            }\r\n        };\r\n        RoamController.prototype._pinchHandler = function (e) {\r\n            if (isTaken(this._zr, 'globalPan')) {\r\n                return;\r\n            }\r\n            var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\r\n            checkPointerAndTrigger(this, 'zoom', null, e, {\r\n                scale: scale, originX: e.pinchX, originY: e.pinchY, isAvailableBehavior: null\r\n            });\r\n        };\r\n        return RoamController;\r\n    }(Eventful));\r\n    function checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\r\n        if (controller.pointerChecker\r\n            && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\r\n            stop(e.event);\r\n            trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\r\n        }\r\n    }\r\n    function trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\r\n        contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e);\r\n        controller.trigger(eventName, contollerEvent);\r\n    }\r\n    function isAvailableBehavior(behaviorToCheck, e, settings) {\r\n        var setting = settings[behaviorToCheck];\r\n        return !behaviorToCheck || (setting && (!isString(setting) || e.event[setting + 'Key']));\r\n    }\n\n    var inner$e = makeInner();\r\n    registerProcessor(PRIORITY.PROCESSOR.FILTER, function (ecModel, api) {\r\n        var apiInner = inner$e(api);\r\n        var coordSysRecordMap = apiInner.coordSysRecordMap\r\n            || (apiInner.coordSysRecordMap = createHashMap());\r\n        coordSysRecordMap.each(function (coordSysRecord) {\r\n            coordSysRecord.dataZoomInfoMap = null;\r\n        });\r\n        ecModel.eachComponent({ mainType: 'dataZoom', subType: 'inside' }, function (dataZoomModel) {\r\n            var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel);\r\n            each(dzReferCoordSysWrap.infoList, function (dzCoordSysInfo) {\r\n                var coordSysUid = dzCoordSysInfo.model.uid;\r\n                var coordSysRecord = coordSysRecordMap.get(coordSysUid)\r\n                    || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model));\r\n                var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap\r\n                    || (coordSysRecord.dataZoomInfoMap = createHashMap());\r\n                dataZoomInfoMap.set(dataZoomModel.uid, {\r\n                    dzReferCoordSysInfo: dzCoordSysInfo,\r\n                    model: dataZoomModel,\r\n                    getRange: null\r\n                });\r\n            });\r\n        });\r\n        coordSysRecordMap.each(function (coordSysRecord) {\r\n            var controller = coordSysRecord.controller;\r\n            var firstDzInfo;\r\n            var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;\r\n            if (dataZoomInfoMap) {\r\n                var firstDzKey = dataZoomInfoMap.keys()[0];\r\n                if (firstDzKey != null) {\r\n                    firstDzInfo = dataZoomInfoMap.get(firstDzKey);\r\n                }\r\n            }\r\n            if (!firstDzInfo) {\r\n                disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);\r\n                return;\r\n            }\r\n            var controllerParams = mergeControllerParams(dataZoomInfoMap);\r\n            controller.enable(controllerParams.controlType, controllerParams.opt);\r\n            controller.setPointerChecker(coordSysRecord.containsPoint);\r\n            createOrUpdate(coordSysRecord, 'dispatchAction', firstDzInfo.model.get('throttle', true), 'fixRate');\r\n        });\r\n    });\r\n    function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) {\r\n        inner$e(api).coordSysRecordMap.each(function (coordSysRecord) {\r\n            var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid);\r\n            if (dzInfo) {\r\n                dzInfo.getRange = getRange;\r\n            }\r\n        });\r\n    }\r\n    function disposeCoordSysRecordIfNeeded(api, dataZoomModel) {\r\n        var coordSysRecordMap = inner$e(api).coordSysRecordMap;\r\n        var coordSysKeyArr = coordSysRecordMap.keys();\r\n        for (var i = 0; i < coordSysKeyArr.length; i++) {\r\n            var coordSysKey = coordSysKeyArr[i];\r\n            var coordSysRecord = coordSysRecordMap.get(coordSysKey);\r\n            var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;\r\n            if (dataZoomInfoMap) {\r\n                var dzUid = dataZoomModel.uid;\r\n                var dzInfo = dataZoomInfoMap.get(dzUid);\r\n                if (dzInfo) {\r\n                    dataZoomInfoMap.removeKey(dzUid);\r\n                    if (!dataZoomInfoMap.keys().length) {\r\n                        disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) {\r\n        if (coordSysRecord) {\r\n            coordSysRecordMap.removeKey(coordSysRecord.model.uid);\r\n            var controller = coordSysRecord.controller;\r\n            controller && controller.dispose();\r\n        }\r\n    }\r\n    function createCoordSysRecord(api, coordSysModel) {\r\n        var coordSysRecord = {\r\n            model: coordSysModel,\r\n            containsPoint: curry(containsPoint, coordSysModel),\r\n            dispatchAction: curry(dispatchAction, api),\r\n            dataZoomInfoMap: null,\r\n            controller: null\r\n        };\r\n        var controller = coordSysRecord.controller = new RoamController(api.getZr());\r\n        each(['pan', 'zoom', 'scrollMove'], function (eventName) {\r\n            controller.on(eventName, function (event) {\r\n                var batch = [];\r\n                coordSysRecord.dataZoomInfoMap.each(function (dzInfo) {\r\n                    if (!event.isAvailableBehavior(dzInfo.model.option)) {\r\n                        return;\r\n                    }\r\n                    var method = (dzInfo.getRange || {})[eventName];\r\n                    var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event);\r\n                    !dzInfo.model.get('disabled', true) && range && batch.push({\r\n                        dataZoomId: dzInfo.model.id,\r\n                        start: range[0],\r\n                        end: range[1]\r\n                    });\r\n                });\r\n                batch.length && coordSysRecord.dispatchAction(batch);\r\n            });\r\n        });\r\n        return coordSysRecord;\r\n    }\r\n    function dispatchAction(api, batch) {\r\n        api.dispatchAction({\r\n            type: 'dataZoom',\r\n            animation: {\r\n                easing: 'cubicOut',\r\n                duration: 100\r\n            },\r\n            batch: batch\r\n        });\r\n    }\r\n    function containsPoint(coordSysModel, e, x, y) {\r\n        return coordSysModel.coordinateSystem.containPoint([x, y]);\r\n    }\r\n    function mergeControllerParams(dataZoomInfoMap) {\r\n        var controlType;\r\n        var prefix = 'type_';\r\n        var typePriority = {\r\n            'type_true': 2,\r\n            'type_move': 1,\r\n            'type_false': 0,\r\n            'type_undefined': -1\r\n        };\r\n        var preventDefaultMouseMove = true;\r\n        dataZoomInfoMap.each(function (dataZoomInfo) {\r\n            var dataZoomModel = dataZoomInfo.model;\r\n            var oneType = dataZoomModel.get('disabled', true)\r\n                ? false\r\n                : dataZoomModel.get('zoomLock', true)\r\n                    ? 'move'\r\n                    : true;\r\n            if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\r\n                controlType = oneType;\r\n            }\r\n            preventDefaultMouseMove = preventDefaultMouseMove\r\n                && dataZoomModel.get('preventDefaultMouseMove', true);\r\n        });\r\n        return {\r\n            controlType: controlType,\r\n            opt: {\r\n                zoomOnMouseWheel: true,\r\n                moveOnMouseMove: true,\r\n                moveOnMouseWheel: true,\r\n                preventDefaultMouseMove: !!preventDefaultMouseMove\r\n            }\r\n        };\r\n    }\n\n    var InsideZoomView = (function (_super) {\r\n        __extends(InsideZoomView, _super);\r\n        function InsideZoomView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataZoom.inside';\r\n            return _this;\r\n        }\r\n        InsideZoomView.prototype.render = function (dataZoomModel, ecModel, api) {\r\n            _super.prototype.render.apply(this, arguments);\r\n            if (dataZoomModel.noTarget()) {\r\n                this._clear();\r\n                return;\r\n            }\r\n            this.range = dataZoomModel.getPercentRange();\r\n            setViewInfoToCoordSysRecord(api, dataZoomModel, {\r\n                pan: bind(getRangeHandlers.pan, this),\r\n                zoom: bind(getRangeHandlers.zoom, this),\r\n                scrollMove: bind(getRangeHandlers.scrollMove, this)\r\n            });\r\n        };\r\n        InsideZoomView.prototype.dispose = function () {\r\n            this._clear();\r\n            _super.prototype.dispose.apply(this, arguments);\r\n        };\r\n        InsideZoomView.prototype._clear = function () {\r\n            disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel);\r\n            this.range = null;\r\n        };\r\n        InsideZoomView.type = 'dataZoom.inside';\r\n        return InsideZoomView;\r\n    }(DataZoomView));\r\n    var getRangeHandlers = {\r\n        zoom: function (coordSysInfo, coordSysMainType, controller, e) {\r\n            var lastRange = this.range;\r\n            var range = lastRange.slice();\r\n            var axisModel = coordSysInfo.axisModels[0];\r\n            if (!axisModel) {\r\n                return;\r\n            }\r\n            var directionInfo = getDirectionInfo[coordSysMainType](null, [e.originX, e.originY], axisModel, controller, coordSysInfo);\r\n            var percentPoint = (directionInfo.signal > 0\r\n                ? (directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel)\r\n                : (directionInfo.pixel - directionInfo.pixelStart)) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\r\n            var scale = Math.max(1 / e.scale, 0);\r\n            range[0] = (range[0] - percentPoint) * scale + percentPoint;\r\n            range[1] = (range[1] - percentPoint) * scale + percentPoint;\r\n            var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\r\n            sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\r\n            this.range = range;\r\n            if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\r\n                return range;\r\n            }\r\n        },\r\n        pan: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) {\r\n            var directionInfo = getDirectionInfo[coordSysMainType]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordSysInfo);\r\n            return directionInfo.signal\r\n                * (range[1] - range[0])\r\n                * directionInfo.pixel / directionInfo.pixelLength;\r\n        }),\r\n        scrollMove: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) {\r\n            var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordSysInfo);\r\n            return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\r\n        })\r\n    };\r\n    function makeMover(getPercentDelta) {\r\n        return function (coordSysInfo, coordSysMainType, controller, e) {\r\n            var lastRange = this.range;\r\n            var range = lastRange.slice();\r\n            var axisModel = coordSysInfo.axisModels[0];\r\n            if (!axisModel) {\r\n                return;\r\n            }\r\n            var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e);\r\n            sliderMove(percentDelta, range, [0, 100], 'all');\r\n            this.range = range;\r\n            if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\r\n                return range;\r\n            }\r\n        };\r\n    }\r\n    var getDirectionInfo = {\r\n        grid: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n            var axis = axisModel.axis;\r\n            var ret = {};\r\n            var rect = coordSysInfo.model.coordinateSystem.getRect();\r\n            oldPoint = oldPoint || [0, 0];\r\n            if (axis.dim === 'x') {\r\n                ret.pixel = newPoint[0] - oldPoint[0];\r\n                ret.pixelLength = rect.width;\r\n                ret.pixelStart = rect.x;\r\n                ret.signal = axis.inverse ? 1 : -1;\r\n            }\r\n            else {\r\n                ret.pixel = newPoint[1] - oldPoint[1];\r\n                ret.pixelLength = rect.height;\r\n                ret.pixelStart = rect.y;\r\n                ret.signal = axis.inverse ? -1 : 1;\r\n            }\r\n            return ret;\r\n        },\r\n        polar: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n            var axis = axisModel.axis;\r\n            var ret = {};\r\n            var polar = coordSysInfo.model.coordinateSystem;\r\n            var radiusExtent = polar.getRadiusAxis().getExtent();\r\n            var angleExtent = polar.getAngleAxis().getExtent();\r\n            oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\r\n            newPoint = polar.pointToCoord(newPoint);\r\n            if (axisModel.mainType === 'radiusAxis') {\r\n                ret.pixel = newPoint[0] - oldPoint[0];\r\n                ret.pixelLength = radiusExtent[1] - radiusExtent[0];\r\n                ret.pixelStart = radiusExtent[0];\r\n                ret.signal = axis.inverse ? 1 : -1;\r\n            }\r\n            else {\r\n                ret.pixel = newPoint[1] - oldPoint[1];\r\n                ret.pixelLength = angleExtent[1] - angleExtent[0];\r\n                ret.pixelStart = angleExtent[0];\r\n                ret.signal = axis.inverse ? -1 : 1;\r\n            }\r\n            return ret;\r\n        },\r\n        singleAxis: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n            var axis = axisModel.axis;\r\n            var rect = coordSysInfo.model.coordinateSystem.getRect();\r\n            var ret = {};\r\n            oldPoint = oldPoint || [0, 0];\r\n            if (axis.orient === 'horizontal') {\r\n                ret.pixel = newPoint[0] - oldPoint[0];\r\n                ret.pixelLength = rect.width;\r\n                ret.pixelStart = rect.x;\r\n                ret.signal = axis.inverse ? 1 : -1;\r\n            }\r\n            else {\r\n                ret.pixel = newPoint[1] - oldPoint[1];\r\n                ret.pixelLength = rect.height;\r\n                ret.pixelStart = rect.y;\r\n                ret.signal = axis.inverse ? -1 : 1;\r\n            }\r\n            return ret;\r\n        }\r\n    };\r\n    ComponentView.registerClass(InsideZoomView);\n\n    var ToolboxFeature = (function () {\r\n        function ToolboxFeature() {\r\n        }\r\n        return ToolboxFeature;\r\n    }());\r\n    var features = {};\r\n    function registerFeature(name, ctor) {\r\n        features[name] = ctor;\r\n    }\r\n    function getFeature(name) {\r\n        return features[name];\r\n    }\n\n    var ToolboxModel = (function (_super) {\r\n        __extends(ToolboxModel, _super);\r\n        function ToolboxModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = ToolboxModel.type;\r\n            return _this;\r\n        }\r\n        ToolboxModel.prototype.optionUpdated = function () {\r\n            _super.prototype.optionUpdated.apply(this, arguments);\r\n            var ecModel = this.ecModel;\r\n            each(this.option.feature, function (featureOpt, featureName) {\r\n                var Feature = getFeature(featureName);\r\n                if (Feature) {\r\n                    if (Feature.getDefaultOption) {\r\n                        Feature.defaultOption = Feature.getDefaultOption(ecModel);\r\n                    }\r\n                    merge(featureOpt, Feature.defaultOption);\r\n                }\r\n            });\r\n        };\r\n        ToolboxModel.type = 'toolbox';\r\n        ToolboxModel.layoutMode = {\r\n            type: 'box',\r\n            ignoreSize: true\r\n        };\r\n        ToolboxModel.defaultOption = {\r\n            show: true,\r\n            z: 6,\r\n            zlevel: 0,\r\n            orient: 'horizontal',\r\n            left: 'right',\r\n            top: 'top',\r\n            backgroundColor: 'transparent',\r\n            borderColor: '#ccc',\r\n            borderRadius: 0,\r\n            borderWidth: 0,\r\n            padding: 5,\r\n            itemSize: 15,\r\n            itemGap: 8,\r\n            showTitle: true,\r\n            iconStyle: {\r\n                borderColor: '#666',\r\n                color: 'none'\r\n            },\r\n            emphasis: {\r\n                iconStyle: {\r\n                    borderColor: '#3E98C5'\r\n                }\r\n            },\r\n            tooltip: {\r\n                show: false\r\n            }\r\n        };\r\n        return ToolboxModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(ToolboxModel);\n\n    var ToolboxView = (function (_super) {\r\n        __extends(ToolboxView, _super);\r\n        function ToolboxView() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        ToolboxView.prototype.render = function (toolboxModel, ecModel, api, payload) {\r\n            var group = this.group;\r\n            group.removeAll();\r\n            if (!toolboxModel.get('show')) {\r\n                return;\r\n            }\r\n            var itemSize = +toolboxModel.get('itemSize');\r\n            var featureOpts = toolboxModel.get('feature') || {};\r\n            var features = this._features || (this._features = {});\r\n            var featureNames = [];\r\n            each(featureOpts, function (opt, name) {\r\n                featureNames.push(name);\r\n            });\r\n            (new DataDiffer(this._featureNames || [], featureNames))\r\n                .add(processFeature)\r\n                .update(processFeature)\r\n                .remove(curry(processFeature, null))\r\n                .execute();\r\n            this._featureNames = featureNames;\r\n            function processFeature(newIndex, oldIndex) {\r\n                var featureName = featureNames[newIndex];\r\n                var oldName = featureNames[oldIndex];\r\n                var featureOpt = featureOpts[featureName];\r\n                var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\r\n                var feature;\r\n                if (payload && payload.newTitle != null && payload.featureName === featureName) {\r\n                    featureOpt.title = payload.newTitle;\r\n                }\r\n                if (featureName && !oldName) {\r\n                    if (isUserFeatureName(featureName)) {\r\n                        feature = {\r\n                            onclick: featureModel.option.onclick,\r\n                            featureName: featureName\r\n                        };\r\n                    }\r\n                    else {\r\n                        var Feature = getFeature(featureName);\r\n                        if (!Feature) {\r\n                            return;\r\n                        }\r\n                        feature = new Feature();\r\n                    }\r\n                    features[featureName] = feature;\r\n                }\r\n                else {\r\n                    feature = features[oldName];\r\n                    if (!feature) {\r\n                        return;\r\n                    }\r\n                }\r\n                feature.uid = getUID('toolbox-feature');\r\n                feature.model = featureModel;\r\n                feature.ecModel = ecModel;\r\n                feature.api = api;\r\n                if (feature instanceof ToolboxFeature) {\r\n                    if (!featureName && oldName) {\r\n                        feature.dispose && feature.dispose(ecModel, api);\r\n                        return;\r\n                    }\r\n                    if (!featureModel.get('show') || feature.unusable) {\r\n                        feature.remove && feature.remove(ecModel, api);\r\n                        return;\r\n                    }\r\n                }\r\n                createIconPaths(featureModel, feature, featureName);\r\n                featureModel.setIconStatus = function (iconName, status) {\r\n                    var option = this.option;\r\n                    var iconPaths = this.iconPaths;\r\n                    option.iconStatus = option.iconStatus || {};\r\n                    option.iconStatus[iconName] = status;\r\n                    if (iconPaths[iconName]) {\r\n                        (status === 'emphasis' ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]);\r\n                    }\r\n                };\r\n                if (feature instanceof ToolboxFeature) {\r\n                    if (feature.render) {\r\n                        feature.render(featureModel, ecModel, api, payload);\r\n                    }\r\n                }\r\n            }\r\n            function createIconPaths(featureModel, feature, featureName) {\r\n                var iconStyleModel = featureModel.getModel('iconStyle');\r\n                var iconStyleEmphasisModel = featureModel.getModel(['emphasis', 'iconStyle']);\r\n                var icons = (feature instanceof ToolboxFeature && feature.getIcons)\r\n                    ? feature.getIcons() : featureModel.get('icon');\r\n                var titles = featureModel.get('title') || {};\r\n                var iconsMap;\r\n                var titlesMap;\r\n                if (typeof icons === 'string') {\r\n                    iconsMap = {};\r\n                    iconsMap[featureName] = icons;\r\n                }\r\n                else {\r\n                    iconsMap = icons;\r\n                }\r\n                if (typeof titles === 'string') {\r\n                    titlesMap = {};\r\n                    titlesMap[featureName] = titles;\r\n                }\r\n                else {\r\n                    titlesMap = titles;\r\n                }\r\n                var iconPaths = featureModel.iconPaths = {};\r\n                each(iconsMap, function (iconStr, iconName) {\r\n                    var path = createIcon(iconStr, {}, {\r\n                        x: -itemSize / 2,\r\n                        y: -itemSize / 2,\r\n                        width: itemSize,\r\n                        height: itemSize\r\n                    });\r\n                    path.setStyle(iconStyleModel.getItemStyle());\r\n                    var pathEmphasisState = path.ensureState('emphasis');\r\n                    pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle();\r\n                    var textContent = new ZRText({\r\n                        style: {\r\n                            text: titlesMap[iconName],\r\n                            align: iconStyleEmphasisModel.get('textAlign'),\r\n                            borderRadius: iconStyleEmphasisModel.get('textBorderRadius'),\r\n                            padding: iconStyleEmphasisModel.get('textPadding'),\r\n                            fill: null\r\n                        },\r\n                        ignore: true\r\n                    });\r\n                    path.setTextContent(textContent);\r\n                    var tooltipModel = toolboxModel.getModel('tooltip');\r\n                    if (tooltipModel && tooltipModel.get('show')) {\r\n                        path.tooltip = extend({\r\n                            content: titlesMap[iconName],\r\n                            formatter: tooltipModel.get('formatter', true)\r\n                                || function () {\r\n                                    return titlesMap[iconName];\r\n                                },\r\n                            formatterParams: {\r\n                                componentType: 'toolbox',\r\n                                name: iconName,\r\n                                title: titlesMap[iconName],\r\n                                $vars: ['name', 'title']\r\n                            },\r\n                            position: tooltipModel.get('position', true) || 'bottom'\r\n                        }, tooltipModel.option);\r\n                    }\r\n                    path.__title = titlesMap[iconName];\r\n                    path.on('mouseover', function () {\r\n                        var hoverStyle = iconStyleEmphasisModel.getItemStyle();\r\n                        var defaultTextPosition = toolboxModel.get('orient') === 'vertical'\r\n                            ? (toolboxModel.get('right') == null ? 'right' : 'left')\r\n                            : (toolboxModel.get('bottom') == null ? 'bottom' : 'top');\r\n                        textContent.setStyle({\r\n                            fill: (iconStyleEmphasisModel.get('textFill')\r\n                                || hoverStyle.fill || hoverStyle.stroke || '#000'),\r\n                            backgroundColor: iconStyleEmphasisModel.get('textBackgroundColor')\r\n                        });\r\n                        path.setTextConfig({\r\n                            position: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition\r\n                        });\r\n                        textContent.ignore = !toolboxModel.get('showTitle');\r\n                        enterEmphasis(this);\r\n                    })\r\n                        .on('mouseout', function () {\r\n                        if (featureModel.get(['iconStatus', iconName]) !== 'emphasis') {\r\n                            leaveEmphasis(this);\r\n                        }\r\n                        textContent.hide();\r\n                    });\r\n                    (featureModel.get(['iconStatus', iconName]) === 'emphasis' ? enterEmphasis : leaveEmphasis)(path);\r\n                    group.add(path);\r\n                    path.on('click', bind(feature.onclick, feature, ecModel, api, iconName));\r\n                    iconPaths[iconName] = path;\r\n                });\r\n            }\r\n            layout$2(group, toolboxModel, api);\r\n            group.add(makeBackground(group.getBoundingRect(), toolboxModel));\r\n            group.eachChild(function (icon) {\r\n                var titleText = icon.__title;\r\n                var emphasisState = icon.ensureState('emphasis');\r\n                var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {});\r\n                var textContent = icon.getTextContent();\r\n                var emphasisTextState = textContent && textContent.states.emphasis;\r\n                if (emphasisTextState && !isFunction(emphasisTextState) && titleText) {\r\n                    var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {});\r\n                    var rect = getBoundingRect(titleText, ZRText.makeFont(emphasisTextStyle));\r\n                    var offsetX = icon.x + group.x;\r\n                    var offsetY = icon.y + group.y + itemSize;\r\n                    var needPutOnTop = false;\r\n                    if (offsetY + rect.height > api.getHeight()) {\r\n                        emphasisTextConfig.position = 'top';\r\n                        needPutOnTop = true;\r\n                    }\r\n                    var topOffset = needPutOnTop ? (-5 - rect.height) : (itemSize + 8);\r\n                    if (offsetX + rect.width / 2 > api.getWidth()) {\r\n                        emphasisTextConfig.position = ['100%', topOffset];\r\n                        emphasisTextStyle.align = 'right';\r\n                    }\r\n                    else if (offsetX - rect.width / 2 < 0) {\r\n                        emphasisTextConfig.position = [0, topOffset];\r\n                        emphasisTextStyle.align = 'left';\r\n                    }\r\n                }\r\n            });\r\n        };\r\n        ToolboxView.prototype.updateView = function (toolboxModel, ecModel, api, payload) {\r\n            each(this._features, function (feature) {\r\n                feature instanceof ToolboxFeature\r\n                    && feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\r\n            });\r\n        };\r\n        ToolboxView.prototype.remove = function (ecModel, api) {\r\n            each(this._features, function (feature) {\r\n                feature instanceof ToolboxFeature\r\n                    && feature.remove && feature.remove(ecModel, api);\r\n            });\r\n            this.group.removeAll();\r\n        };\r\n        ToolboxView.prototype.dispose = function (ecModel, api) {\r\n            each(this._features, function (feature) {\r\n                feature instanceof ToolboxFeature\r\n                    && feature.dispose && feature.dispose(ecModel, api);\r\n            });\r\n        };\r\n        ToolboxView.type = 'toolbox';\r\n        return ToolboxView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(ToolboxView);\r\n    function isUserFeatureName(featureName) {\r\n        return featureName.indexOf('my') === 0;\r\n    }\n\n    var SaveAsImage = (function (_super) {\r\n        __extends(SaveAsImage, _super);\r\n        function SaveAsImage() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        SaveAsImage.prototype.onclick = function (ecModel, api) {\r\n            var model = this.model;\r\n            var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';\r\n            var isSvg = api.getZr().painter.getType() === 'svg';\r\n            var type = isSvg ? 'svg' : model.get('type', true) || 'png';\r\n            var url = api.getConnectedDataURL({\r\n                type: type,\r\n                backgroundColor: model.get('backgroundColor', true)\r\n                    || ecModel.get('backgroundColor') || '#fff',\r\n                connectedBackgroundColor: model.get('connectedBackgroundColor'),\r\n                excludeComponents: model.get('excludeComponents'),\r\n                pixelRatio: model.get('pixelRatio')\r\n            });\r\n            if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) {\r\n                var $a = document.createElement('a');\r\n                $a.download = title + '.' + type;\r\n                $a.target = '_blank';\r\n                $a.href = url;\r\n                var evt = new MouseEvent('click', {\r\n                    view: document.defaultView,\r\n                    bubbles: true,\r\n                    cancelable: false\r\n                });\r\n                $a.dispatchEvent(evt);\r\n            }\r\n            else {\r\n                if (window.navigator.msSaveOrOpenBlob) {\r\n                    var bstr = atob(url.split(',')[1]);\r\n                    var n = bstr.length;\r\n                    var u8arr = new Uint8Array(n);\r\n                    while (n--) {\r\n                        u8arr[n] = bstr.charCodeAt(n);\r\n                    }\r\n                    var blob = new Blob([u8arr]);\r\n                    window.navigator.msSaveOrOpenBlob(blob, title + '.' + type);\r\n                }\r\n                else {\r\n                    var lang = model.get('lang');\r\n                    var html = ''\r\n                        + '<body style=\"margin:0;\">'\r\n                        + '<img src=\"' + url + '\" style=\"max-width:100%;\" title=\"' + ((lang && lang[0]) || '') + '\" />'\r\n                        + '</body>';\r\n                    var tab = window.open();\r\n                    tab.document.write(html);\r\n                }\r\n            }\r\n        };\r\n        SaveAsImage.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',\r\n                title: ecModel.getLocale(['toolbox', 'saveAsImage', 'title']),\r\n                type: 'png',\r\n                connectedBackgroundColor: '#fff',\r\n                name: '',\r\n                excludeComponents: ['toolbox'],\r\n                pixelRatio: 1,\r\n                lang: ecModel.getLocale(['toolbox', 'saveAsImage', 'lang'])\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return SaveAsImage;\r\n    }(ToolboxFeature));\r\n    SaveAsImage.prototype.unusable = !env.canvasSupported;\r\n    registerFeature('saveAsImage', SaveAsImage);\n\n    var INNER_STACK_KEYWORD = '__ec_magicType_stack__';\r\n    var radioTypes = [\r\n        ['line', 'bar'],\r\n        ['stack']\r\n    ];\r\n    var MagicType = (function (_super) {\r\n        __extends(MagicType, _super);\r\n        function MagicType() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        MagicType.prototype.getIcons = function () {\r\n            var model = this.model;\r\n            var availableIcons = model.get('icon');\r\n            var icons = {};\r\n            each(model.get('type'), function (type) {\r\n                if (availableIcons[type]) {\r\n                    icons[type] = availableIcons[type];\r\n                }\r\n            });\r\n            return icons;\r\n        };\r\n        MagicType.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                type: [],\r\n                icon: {\r\n                    line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\r\n                    bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\r\n                    stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z'\r\n                },\r\n                title: ecModel.getLocale(['toolbox', 'magicType', 'title']),\r\n                option: {},\r\n                seriesIndex: {}\r\n            };\r\n            return defaultOption;\r\n        };\r\n        MagicType.prototype.onclick = function (ecModel, api, type) {\r\n            var model = this.model;\r\n            var seriesIndex = model.get(['seriesIndex', type]);\r\n            if (!seriesOptGenreator[type]) {\r\n                return;\r\n            }\r\n            var newOption = {\r\n                series: []\r\n            };\r\n            var generateNewSeriesTypes = function (seriesModel) {\r\n                var seriesType = seriesModel.subType;\r\n                var seriesId = seriesModel.id;\r\n                var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\r\n                if (newSeriesOpt) {\r\n                    defaults(newSeriesOpt, seriesModel.option);\r\n                    newOption.series.push(newSeriesOpt);\r\n                }\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\r\n                    var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\r\n                    if (categoryAxis) {\r\n                        var axisDim = categoryAxis.dim;\r\n                        var axisType = axisDim + 'Axis';\r\n                        var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\r\n                        var axisIndex = axisModel.componentIndex;\r\n                        newOption[axisType] = newOption[axisType] || [];\r\n                        for (var i = 0; i <= axisIndex; i++) {\r\n                            newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\r\n                        }\r\n                        newOption[axisType][axisIndex].boundaryGap = type === 'bar';\r\n                    }\r\n                }\r\n            };\r\n            each(radioTypes, function (radio) {\r\n                if (indexOf(radio, type) >= 0) {\r\n                    each(radio, function (item) {\r\n                        model.setIconStatus(item, 'normal');\r\n                    });\r\n                }\r\n            });\r\n            model.setIconStatus(type, 'emphasis');\r\n            ecModel.eachComponent({\r\n                mainType: 'series',\r\n                query: seriesIndex == null ? null : {\r\n                    seriesIndex: seriesIndex\r\n                }\r\n            }, generateNewSeriesTypes);\r\n            var newTitle;\r\n            if (type === 'stack') {\r\n                newTitle = merge({\r\n                    stack: model.option.title.tiled,\r\n                    tiled: model.option.title.stack\r\n                }, model.option.title);\r\n            }\r\n            api.dispatchAction({\r\n                type: 'changeMagicType',\r\n                currentType: type,\r\n                newOption: newOption,\r\n                newTitle: newTitle,\r\n                featureName: 'magicType'\r\n            });\r\n        };\r\n        return MagicType;\r\n    }(ToolboxFeature));\r\n    var seriesOptGenreator = {\r\n        'line': function (seriesType, seriesId, seriesModel, model) {\r\n            if (seriesType === 'bar') {\r\n                return merge({\r\n                    id: seriesId,\r\n                    type: 'line',\r\n                    data: seriesModel.get('data'),\r\n                    stack: seriesModel.get('stack'),\r\n                    markPoint: seriesModel.get('markPoint'),\r\n                    markLine: seriesModel.get('markLine')\r\n                }, model.get(['option', 'line']) || {}, true);\r\n            }\r\n        },\r\n        'bar': function (seriesType, seriesId, seriesModel, model) {\r\n            if (seriesType === 'line') {\r\n                return merge({\r\n                    id: seriesId,\r\n                    type: 'bar',\r\n                    data: seriesModel.get('data'),\r\n                    stack: seriesModel.get('stack'),\r\n                    markPoint: seriesModel.get('markPoint'),\r\n                    markLine: seriesModel.get('markLine')\r\n                }, model.get(['option', 'bar']) || {}, true);\r\n            }\r\n        },\r\n        'stack': function (seriesType, seriesId, seriesModel, model) {\r\n            var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;\r\n            if (seriesType === 'line' || seriesType === 'bar') {\r\n                model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');\r\n                return merge({\r\n                    id: seriesId,\r\n                    stack: isStack ? '' : INNER_STACK_KEYWORD\r\n                }, model.get(['option', 'stack']) || {}, true);\r\n            }\r\n        }\r\n    };\r\n    registerAction({\r\n        type: 'changeMagicType',\r\n        event: 'magicTypeChanged',\r\n        update: 'prepareAndUpdate'\r\n    }, function (payload, ecModel) {\r\n        ecModel.mergeOption(payload.newOption);\r\n    });\r\n    registerFeature('magicType', MagicType);\n\n    var BLOCK_SPLITER = new Array(60).join('-');\r\n    var ITEM_SPLITER = '\\t';\r\n    function groupSeries(ecModel) {\r\n        var seriesGroupByCategoryAxis = {};\r\n        var otherSeries = [];\r\n        var meta = [];\r\n        ecModel.eachRawSeries(function (seriesModel) {\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\r\n                var baseAxis = coordSys.getBaseAxis();\r\n                if (baseAxis.type === 'category') {\r\n                    var key = baseAxis.dim + '_' + baseAxis.index;\r\n                    if (!seriesGroupByCategoryAxis[key]) {\r\n                        seriesGroupByCategoryAxis[key] = {\r\n                            categoryAxis: baseAxis,\r\n                            valueAxis: coordSys.getOtherAxis(baseAxis),\r\n                            series: []\r\n                        };\r\n                        meta.push({\r\n                            axisDim: baseAxis.dim,\r\n                            axisIndex: baseAxis.index\r\n                        });\r\n                    }\r\n                    seriesGroupByCategoryAxis[key].series.push(seriesModel);\r\n                }\r\n                else {\r\n                    otherSeries.push(seriesModel);\r\n                }\r\n            }\r\n            else {\r\n                otherSeries.push(seriesModel);\r\n            }\r\n        });\r\n        return {\r\n            seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\r\n            other: otherSeries,\r\n            meta: meta\r\n        };\r\n    }\r\n    function assembleSeriesWithCategoryAxis(groups) {\r\n        var tables = [];\r\n        each(groups, function (group, key) {\r\n            var categoryAxis = group.categoryAxis;\r\n            var valueAxis = group.valueAxis;\r\n            var valueAxisDim = valueAxis.dim;\r\n            var headers = [' '].concat(map(group.series, function (series) {\r\n                return series.name;\r\n            }));\r\n            var columns = [categoryAxis.model.getCategories()];\r\n            each(group.series, function (series) {\r\n                var rawData = series.getRawData();\r\n                columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) {\r\n                    return val;\r\n                }));\r\n            });\r\n            var lines = [headers.join(ITEM_SPLITER)];\r\n            for (var i = 0; i < columns[0].length; i++) {\r\n                var items = [];\r\n                for (var j = 0; j < columns.length; j++) {\r\n                    items.push(columns[j][i]);\r\n                }\r\n                lines.push(items.join(ITEM_SPLITER));\r\n            }\r\n            tables.push(lines.join('\\n'));\r\n        });\r\n        return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\r\n    }\r\n    function assembleOtherSeries(series) {\r\n        return map(series, function (series) {\r\n            var data = series.getRawData();\r\n            var lines = [series.name];\r\n            var vals = [];\r\n            data.each(data.dimensions, function () {\r\n                var argLen = arguments.length;\r\n                var dataIndex = arguments[argLen - 1];\r\n                var name = data.getName(dataIndex);\r\n                for (var i = 0; i < argLen - 1; i++) {\r\n                    vals[i] = arguments[i];\r\n                }\r\n                lines.push((name ? (name + ITEM_SPLITER) : '') + vals.join(ITEM_SPLITER));\r\n            });\r\n            return lines.join('\\n');\r\n        }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\r\n    }\r\n    function getContentFromModel(ecModel) {\r\n        var result = groupSeries(ecModel);\r\n        return {\r\n            value: filter([\r\n                assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis),\r\n                assembleOtherSeries(result.other)\r\n            ], function (str) {\r\n                return !!str.replace(/[\\n\\t\\s]/g, '');\r\n            }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\r\n            meta: result.meta\r\n        };\r\n    }\r\n    function trim$1(str) {\r\n        return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\r\n    }\r\n    function isTSVFormat(block) {\r\n        var firstLine = block.slice(0, block.indexOf('\\n'));\r\n        if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\r\n            return true;\r\n        }\r\n    }\r\n    var itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\r\n    function parseTSVContents(tsv) {\r\n        var tsvLines = tsv.split(/\\n+/g);\r\n        var headers = trim$1(tsvLines.shift()).split(itemSplitRegex);\r\n        var categories = [];\r\n        var series = map(headers, function (header) {\r\n            return {\r\n                name: header,\r\n                data: []\r\n            };\r\n        });\r\n        for (var i = 0; i < tsvLines.length; i++) {\r\n            var items = trim$1(tsvLines[i]).split(itemSplitRegex);\r\n            categories.push(items.shift());\r\n            for (var j = 0; j < items.length; j++) {\r\n                series[j] && (series[j].data[i] = items[j]);\r\n            }\r\n        }\r\n        return {\r\n            series: series,\r\n            categories: categories\r\n        };\r\n    }\r\n    function parseListContents(str) {\r\n        var lines = str.split(/\\n+/g);\r\n        var seriesName = trim$1(lines.shift());\r\n        var data = [];\r\n        for (var i = 0; i < lines.length; i++) {\r\n            var line = trim$1(lines[i]);\r\n            if (!line) {\r\n                continue;\r\n            }\r\n            var items = line.split(itemSplitRegex);\r\n            var name_1 = '';\r\n            var value = void 0;\r\n            var hasName = false;\r\n            if (isNaN(items[0])) {\r\n                hasName = true;\r\n                name_1 = items[0];\r\n                items = items.slice(1);\r\n                data[i] = {\r\n                    name: name_1,\r\n                    value: []\r\n                };\r\n                value = data[i].value;\r\n            }\r\n            else {\r\n                value = data[i] = [];\r\n            }\r\n            for (var j = 0; j < items.length; j++) {\r\n                value.push(+items[j]);\r\n            }\r\n            if (value.length === 1) {\r\n                hasName ? (data[i].value = value[0]) : (data[i] = value[0]);\r\n            }\r\n        }\r\n        return {\r\n            name: seriesName,\r\n            data: data\r\n        };\r\n    }\r\n    function parseContents(str, blockMetaList) {\r\n        var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\r\n        var newOption = {\r\n            series: []\r\n        };\r\n        each(blocks, function (block, idx) {\r\n            if (isTSVFormat(block)) {\r\n                var result = parseTSVContents(block);\r\n                var blockMeta = blockMetaList[idx];\r\n                var axisKey = blockMeta.axisDim + 'Axis';\r\n                if (blockMeta) {\r\n                    newOption[axisKey] = newOption[axisKey] || [];\r\n                    newOption[axisKey][blockMeta.axisIndex] = {\r\n                        data: result.categories\r\n                    };\r\n                    newOption.series = newOption.series.concat(result.series);\r\n                }\r\n            }\r\n            else {\r\n                var result = parseListContents(block);\r\n                newOption.series.push(result);\r\n            }\r\n        });\r\n        return newOption;\r\n    }\r\n    var DataView = (function (_super) {\r\n        __extends(DataView, _super);\r\n        function DataView() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        DataView.prototype.onclick = function (ecModel, api) {\r\n            var container = api.getDom();\r\n            var model = this.model;\r\n            if (this._dom) {\r\n                container.removeChild(this._dom);\r\n            }\r\n            var root = document.createElement('div');\r\n            root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;';\r\n            root.style.backgroundColor = model.get('backgroundColor') || '#fff';\r\n            var header = document.createElement('h4');\r\n            var lang = model.get('lang') || [];\r\n            header.innerHTML = lang[0] || model.get('title');\r\n            header.style.cssText = 'margin: 10px 20px;';\r\n            header.style.color = model.get('textColor');\r\n            var viewMain = document.createElement('div');\r\n            var textarea = document.createElement('textarea');\r\n            viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';\r\n            var optionToContent = model.get('optionToContent');\r\n            var contentToOption = model.get('contentToOption');\r\n            var result = getContentFromModel(ecModel);\r\n            if (typeof optionToContent === 'function') {\r\n                var htmlOrDom = optionToContent(api.getOption());\r\n                if (typeof htmlOrDom === 'string') {\r\n                    viewMain.innerHTML = htmlOrDom;\r\n                }\r\n                else if (isDom(htmlOrDom)) {\r\n                    viewMain.appendChild(htmlOrDom);\r\n                }\r\n            }\r\n            else {\r\n                viewMain.appendChild(textarea);\r\n                textarea.readOnly = model.get('readOnly');\r\n                textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;';\r\n                textarea.style.color = model.get('textColor');\r\n                textarea.style.borderColor = model.get('textareaBorderColor');\r\n                textarea.style.backgroundColor = model.get('textareaColor');\r\n                textarea.value = result.value;\r\n            }\r\n            var blockMetaList = result.meta;\r\n            var buttonContainer = document.createElement('div');\r\n            buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;';\r\n            var buttonStyle = 'float:right;margin-right:20px;border:none;'\r\n                + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\r\n            var closeButton = document.createElement('div');\r\n            var refreshButton = document.createElement('div');\r\n            buttonStyle += ';background-color:' + model.get('buttonColor');\r\n            buttonStyle += ';color:' + model.get('buttonTextColor');\r\n            var self = this;\r\n            function close() {\r\n                container.removeChild(root);\r\n                self._dom = null;\r\n            }\r\n            addEventListener(closeButton, 'click', close);\r\n            addEventListener(refreshButton, 'click', function () {\r\n                if ((contentToOption == null && optionToContent != null)\r\n                    || (contentToOption != null && optionToContent == null)) {\r\n                    if (__DEV__) {\r\n                        console.warn('It seems you have just provided one of `contentToOption` and `optionToContent` functions but missed the other one. Data change is ignored.');\r\n                    }\r\n                    close();\r\n                    return;\r\n                }\r\n                var newOption;\r\n                try {\r\n                    if (typeof contentToOption === 'function') {\r\n                        newOption = contentToOption(viewMain, api.getOption());\r\n                    }\r\n                    else {\r\n                        newOption = parseContents(textarea.value, blockMetaList);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    close();\r\n                    throw new Error('Data view format error ' + e);\r\n                }\r\n                if (newOption) {\r\n                    api.dispatchAction({\r\n                        type: 'changeDataView',\r\n                        newOption: newOption\r\n                    });\r\n                }\r\n                close();\r\n            });\r\n            closeButton.innerHTML = lang[1];\r\n            refreshButton.innerHTML = lang[2];\r\n            refreshButton.style.cssText = buttonStyle;\r\n            closeButton.style.cssText = buttonStyle;\r\n            !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\r\n            buttonContainer.appendChild(closeButton);\r\n            root.appendChild(header);\r\n            root.appendChild(viewMain);\r\n            root.appendChild(buttonContainer);\r\n            viewMain.style.height = (container.clientHeight - 80) + 'px';\r\n            container.appendChild(root);\r\n            this._dom = root;\r\n        };\r\n        DataView.prototype.remove = function (ecModel, api) {\r\n            this._dom && api.getDom().removeChild(this._dom);\r\n        };\r\n        DataView.prototype.dispose = function (ecModel, api) {\r\n            this.remove(ecModel, api);\r\n        };\r\n        DataView.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                readOnly: false,\r\n                optionToContent: null,\r\n                contentToOption: null,\r\n                icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\r\n                title: ecModel.getLocale(['toolbox', 'dataView', 'title']),\r\n                lang: ecModel.getLocale(['toolbox', 'dataView', 'lang']),\r\n                backgroundColor: '#fff',\r\n                textColor: '#000',\r\n                textareaColor: '#fff',\r\n                textareaBorderColor: '#333',\r\n                buttonColor: '#c23531',\r\n                buttonTextColor: '#fff'\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return DataView;\r\n    }(ToolboxFeature));\r\n    function tryMergeDataOption(newData, originalData) {\r\n        return map(newData, function (newVal, idx) {\r\n            var original = originalData && originalData[idx];\r\n            if (isObject(original) && !isArray(original)) {\r\n                var newValIsObject = isObject(newVal) && !isArray(newVal);\r\n                if (!newValIsObject) {\r\n                    newVal = {\r\n                        value: newVal\r\n                    };\r\n                }\r\n                var shouldDeleteName = original.name != null && newVal.name == null;\r\n                newVal = defaults(newVal, original);\r\n                shouldDeleteName && (delete newVal.name);\r\n                return newVal;\r\n            }\r\n            else {\r\n                return newVal;\r\n            }\r\n        });\r\n    }\r\n    registerFeature('dataView', DataView);\r\n    registerAction({\r\n        type: 'changeDataView',\r\n        event: 'dataViewChanged',\r\n        update: 'prepareAndUpdate'\r\n    }, function (payload, ecModel) {\r\n        var newSeriesOptList = [];\r\n        each(payload.newOption.series, function (seriesOpt) {\r\n            var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\r\n            if (!seriesModel) {\r\n                newSeriesOptList.push(extend({\r\n                    type: 'scatter'\r\n                }, seriesOpt));\r\n            }\r\n            else {\r\n                var originalData = seriesModel.get('data');\r\n                newSeriesOptList.push({\r\n                    name: seriesOpt.name,\r\n                    data: tryMergeDataOption(seriesOpt.data, originalData)\r\n                });\r\n            }\r\n        });\r\n        ecModel.mergeOption(defaults({\r\n            series: newSeriesOptList\r\n        }, payload.newOption));\r\n    });\n\n    var BRUSH_PANEL_GLOBAL = true;\r\n    var mathMin$7 = Math.min;\r\n    var mathMax$7 = Math.max;\r\n    var mathPow$2 = Math.pow;\r\n    var COVER_Z = 10000;\r\n    var UNSELECT_THRESHOLD = 6;\r\n    var MIN_RESIZE_LINE_WIDTH = 6;\r\n    var MUTEX_RESOURCE_KEY = 'globalPan';\r\n    var DIRECTION_MAP = {\r\n        w: [0, 0],\r\n        e: [0, 1],\r\n        n: [1, 0],\r\n        s: [1, 1]\r\n    };\r\n    var CURSOR_MAP = {\r\n        w: 'ew',\r\n        e: 'ew',\r\n        n: 'ns',\r\n        s: 'ns',\r\n        ne: 'nesw',\r\n        sw: 'nesw',\r\n        nw: 'nwse',\r\n        se: 'nwse'\r\n    };\r\n    var DEFAULT_BRUSH_OPT = {\r\n        brushStyle: {\r\n            lineWidth: 2,\r\n            stroke: 'rgba(210,219,238,0.3)',\r\n            fill: '#D2DBEE'\r\n        },\r\n        transformable: true,\r\n        brushMode: 'single',\r\n        removeOnClick: false\r\n    };\r\n    var baseUID = 0;\r\n    var BrushController = (function (_super) {\r\n        __extends(BrushController, _super);\r\n        function BrushController(zr) {\r\n            var _this = _super.call(this) || this;\r\n            _this._track = [];\r\n            _this._covers = [];\r\n            _this._handlers = {};\r\n            if (__DEV__) {\r\n                assert(zr);\r\n            }\r\n            _this._zr = zr;\r\n            _this.group = new Group();\r\n            _this._uid = 'brushController_' + baseUID++;\r\n            each(pointerHandlers, function (handler, eventName) {\r\n                this._handlers[eventName] = bind(handler, this);\r\n            }, _this);\r\n            return _this;\r\n        }\r\n        BrushController.prototype.enableBrush = function (brushOption) {\r\n            if (__DEV__) {\r\n                assert(this._mounted);\r\n            }\r\n            this._brushType && this._doDisableBrush();\r\n            brushOption.brushType && this._doEnableBrush(brushOption);\r\n            return this;\r\n        };\r\n        BrushController.prototype._doEnableBrush = function (brushOption) {\r\n            var zr = this._zr;\r\n            if (!this._enableGlobalPan) {\r\n                take(zr, MUTEX_RESOURCE_KEY, this._uid);\r\n            }\r\n            each(this._handlers, function (handler, eventName) {\r\n                zr.on(eventName, handler);\r\n            });\r\n            this._brushType = brushOption.brushType;\r\n            this._brushOption = merge(clone(DEFAULT_BRUSH_OPT), brushOption, true);\r\n        };\r\n        BrushController.prototype._doDisableBrush = function () {\r\n            var zr = this._zr;\r\n            release(zr, MUTEX_RESOURCE_KEY, this._uid);\r\n            each(this._handlers, function (handler, eventName) {\r\n                zr.off(eventName, handler);\r\n            });\r\n            this._brushType = this._brushOption = null;\r\n        };\r\n        BrushController.prototype.setPanels = function (panelOpts) {\r\n            if (panelOpts && panelOpts.length) {\r\n                var panels_1 = this._panels = {};\r\n                each(panelOpts, function (panelOpts) {\r\n                    panels_1[panelOpts.panelId] = clone(panelOpts);\r\n                });\r\n            }\r\n            else {\r\n                this._panels = null;\r\n            }\r\n            return this;\r\n        };\r\n        BrushController.prototype.mount = function (opt) {\r\n            opt = opt || {};\r\n            if (__DEV__) {\r\n                this._mounted = true;\r\n            }\r\n            this._enableGlobalPan = opt.enableGlobalPan;\r\n            var thisGroup = this.group;\r\n            this._zr.add(thisGroup);\r\n            thisGroup.attr({\r\n                x: opt.x || 0,\r\n                y: opt.y || 0,\r\n                rotation: opt.rotation || 0,\r\n                scaleX: opt.scaleX || 1,\r\n                scaleY: opt.scaleY || 1\r\n            });\r\n            this._transform = thisGroup.getLocalTransform();\r\n            return this;\r\n        };\r\n        BrushController.prototype.updateCovers = function (coverConfigList) {\r\n            if (__DEV__) {\r\n                assert(this._mounted);\r\n            }\r\n            coverConfigList = map(coverConfigList, function (coverConfig) {\r\n                return merge(clone(DEFAULT_BRUSH_OPT), coverConfig, true);\r\n            });\r\n            var tmpIdPrefix = '\\0-brush-index-';\r\n            var oldCovers = this._covers;\r\n            var newCovers = this._covers = [];\r\n            var controller = this;\r\n            var creatingCover = this._creatingCover;\r\n            (new DataDiffer(oldCovers, coverConfigList, oldGetKey, getKey))\r\n                .add(addOrUpdate)\r\n                .update(addOrUpdate)\r\n                .remove(remove)\r\n                .execute();\r\n            return this;\r\n            function getKey(brushOption, index) {\r\n                return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index)\r\n                    + '-' + brushOption.brushType;\r\n            }\r\n            function oldGetKey(cover, index) {\r\n                return getKey(cover.__brushOption, index);\r\n            }\r\n            function addOrUpdate(newIndex, oldIndex) {\r\n                var newBrushInternal = coverConfigList[newIndex];\r\n                if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\r\n                    newCovers[newIndex] = oldCovers[oldIndex];\r\n                }\r\n                else {\r\n                    var cover = newCovers[newIndex] = oldIndex != null\r\n                        ? (oldCovers[oldIndex].__brushOption = newBrushInternal,\r\n                            oldCovers[oldIndex])\r\n                        : endCreating(controller, createCover(controller, newBrushInternal));\r\n                    updateCoverAfterCreation(controller, cover);\r\n                }\r\n            }\r\n            function remove(oldIndex) {\r\n                if (oldCovers[oldIndex] !== creatingCover) {\r\n                    controller.group.remove(oldCovers[oldIndex]);\r\n                }\r\n            }\r\n        };\r\n        BrushController.prototype.unmount = function () {\r\n            if (__DEV__) {\r\n                if (!this._mounted) {\r\n                    return;\r\n                }\r\n            }\r\n            this.enableBrush(false);\r\n            clearCovers(this);\r\n            this._zr.remove(this.group);\r\n            if (__DEV__) {\r\n                this._mounted = false;\r\n            }\r\n            return this;\r\n        };\r\n        BrushController.prototype.dispose = function () {\r\n            this.unmount();\r\n            this.off();\r\n        };\r\n        return BrushController;\r\n    }(Eventful));\r\n    function createCover(controller, brushOption) {\r\n        var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\r\n        cover.__brushOption = brushOption;\r\n        updateZ(cover, brushOption);\r\n        controller.group.add(cover);\r\n        return cover;\r\n    }\r\n    function endCreating(controller, creatingCover) {\r\n        var coverRenderer = getCoverRenderer(creatingCover);\r\n        if (coverRenderer.endCreating) {\r\n            coverRenderer.endCreating(controller, creatingCover);\r\n            updateZ(creatingCover, creatingCover.__brushOption);\r\n        }\r\n        return creatingCover;\r\n    }\r\n    function updateCoverShape(controller, cover) {\r\n        var brushOption = cover.__brushOption;\r\n        getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\r\n    }\r\n    function updateZ(cover, brushOption) {\r\n        var z = brushOption.z;\r\n        z == null && (z = COVER_Z);\r\n        cover.traverse(function (el) {\r\n            el.z = z;\r\n            el.z2 = z;\r\n        });\r\n    }\r\n    function updateCoverAfterCreation(controller, cover) {\r\n        getCoverRenderer(cover).updateCommon(controller, cover);\r\n        updateCoverShape(controller, cover);\r\n    }\r\n    function getCoverRenderer(cover) {\r\n        return coverRenderers[cover.__brushOption.brushType];\r\n    }\r\n    function getPanelByPoint(controller, e, localCursorPoint) {\r\n        var panels = controller._panels;\r\n        if (!panels) {\r\n            return BRUSH_PANEL_GLOBAL;\r\n        }\r\n        var panel;\r\n        var transform = controller._transform;\r\n        each(panels, function (pn) {\r\n            pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\r\n        });\r\n        return panel;\r\n    }\r\n    function getPanelByCover(controller, cover) {\r\n        var panels = controller._panels;\r\n        if (!panels) {\r\n            return BRUSH_PANEL_GLOBAL;\r\n        }\r\n        var panelId = cover.__brushOption.panelId;\r\n        return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL;\r\n    }\r\n    function clearCovers(controller) {\r\n        var covers = controller._covers;\r\n        var originalLength = covers.length;\r\n        each(covers, function (cover) {\r\n            controller.group.remove(cover);\r\n        }, controller);\r\n        covers.length = 0;\r\n        return !!originalLength;\r\n    }\r\n    function trigger$1(controller, opt) {\r\n        var areas = map(controller._covers, function (cover) {\r\n            var brushOption = cover.__brushOption;\r\n            var range = clone(brushOption.range);\r\n            return {\r\n                brushType: brushOption.brushType,\r\n                panelId: brushOption.panelId,\r\n                range: range\r\n            };\r\n        });\r\n        controller.trigger('brush', {\r\n            areas: areas,\r\n            isEnd: !!opt.isEnd,\r\n            removeOnClick: !!opt.removeOnClick\r\n        });\r\n    }\r\n    function shouldShowCover(controller) {\r\n        var track = controller._track;\r\n        if (!track.length) {\r\n            return false;\r\n        }\r\n        var p2 = track[track.length - 1];\r\n        var p1 = track[0];\r\n        var dx = p2[0] - p1[0];\r\n        var dy = p2[1] - p1[1];\r\n        var dist = mathPow$2(dx * dx + dy * dy, 0.5);\r\n        return dist > UNSELECT_THRESHOLD;\r\n    }\r\n    function getTrackEnds(track) {\r\n        var tail = track.length - 1;\r\n        tail < 0 && (tail = 0);\r\n        return [track[0], track[tail]];\r\n    }\r\n    function createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) {\r\n        var cover = new Group();\r\n        cover.add(new Rect({\r\n            name: 'main',\r\n            style: makeStyle(brushOption),\r\n            silent: true,\r\n            draggable: true,\r\n            cursor: 'move',\r\n            drift: curry(driftRect, rectRangeConverter, controller, cover, ['n', 's', 'w', 'e']),\r\n            ondragend: curry(trigger$1, controller, { isEnd: true })\r\n        }));\r\n        each(edgeNameSequences, function (nameSequence) {\r\n            cover.add(new Rect({\r\n                name: nameSequence.join(''),\r\n                style: { opacity: 0 },\r\n                draggable: true,\r\n                silent: true,\r\n                invisible: true,\r\n                drift: curry(driftRect, rectRangeConverter, controller, cover, nameSequence),\r\n                ondragend: curry(trigger$1, controller, { isEnd: true })\r\n            }));\r\n        });\r\n        return cover;\r\n    }\r\n    function updateBaseRect(controller, cover, localRange, brushOption) {\r\n        var lineWidth = brushOption.brushStyle.lineWidth || 0;\r\n        var handleSize = mathMax$7(lineWidth, MIN_RESIZE_LINE_WIDTH);\r\n        var x = localRange[0][0];\r\n        var y = localRange[1][0];\r\n        var xa = x - lineWidth / 2;\r\n        var ya = y - lineWidth / 2;\r\n        var x2 = localRange[0][1];\r\n        var y2 = localRange[1][1];\r\n        var x2a = x2 - handleSize + lineWidth / 2;\r\n        var y2a = y2 - handleSize + lineWidth / 2;\r\n        var width = x2 - x;\r\n        var height = y2 - y;\r\n        var widtha = width + lineWidth;\r\n        var heighta = height + lineWidth;\r\n        updateRectShape(controller, cover, 'main', x, y, width, height);\r\n        if (brushOption.transformable) {\r\n            updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\r\n            updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\r\n            updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\r\n            updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\r\n            updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\r\n            updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\r\n            updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\r\n            updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\r\n        }\r\n    }\r\n    function updateCommon(controller, cover) {\r\n        var brushOption = cover.__brushOption;\r\n        var transformable = brushOption.transformable;\r\n        var mainEl = cover.childAt(0);\r\n        mainEl.useStyle(makeStyle(brushOption));\r\n        mainEl.attr({\r\n            silent: !transformable,\r\n            cursor: transformable ? 'move' : 'default'\r\n        });\r\n        each([['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']], function (nameSequence) {\r\n            var el = cover.childOfName(nameSequence.join(''));\r\n            var globalDir = nameSequence.length === 1\r\n                ? getGlobalDirection1(controller, nameSequence[0])\r\n                : getGlobalDirection2(controller, nameSequence);\r\n            el && el.attr({\r\n                silent: !transformable,\r\n                invisible: !transformable,\r\n                cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\r\n            });\r\n        });\r\n    }\r\n    function updateRectShape(controller, cover, name, x, y, w, h) {\r\n        var el = cover.childOfName(name);\r\n        el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\r\n    }\r\n    function makeStyle(brushOption) {\r\n        return defaults({ strokeNoScale: true }, brushOption.brushStyle);\r\n    }\r\n    function formatRectRange(x, y, x2, y2) {\r\n        var min = [mathMin$7(x, x2), mathMin$7(y, y2)];\r\n        var max = [mathMax$7(x, x2), mathMax$7(y, y2)];\r\n        return [\r\n            [min[0], max[0]],\r\n            [min[1], max[1]]\r\n        ];\r\n    }\r\n    function getTransform$1(controller) {\r\n        return getTransform(controller.group);\r\n    }\r\n    function getGlobalDirection1(controller, localDirName) {\r\n        var map = { w: 'left', e: 'right', n: 'top', s: 'bottom' };\r\n        var inverseMap = { left: 'w', right: 'e', top: 'n', bottom: 's' };\r\n        var dir = transformDirection(map[localDirName], getTransform$1(controller));\r\n        return inverseMap[dir];\r\n    }\r\n    function getGlobalDirection2(controller, localDirNameSeq) {\r\n        var globalDir = [\r\n            getGlobalDirection1(controller, localDirNameSeq[0]),\r\n            getGlobalDirection1(controller, localDirNameSeq[1])\r\n        ];\r\n        (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\r\n        return globalDir.join('');\r\n    }\r\n    function driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) {\r\n        var brushOption = cover.__brushOption;\r\n        var rectRange = rectRangeConverter.toRectRange(brushOption.range);\r\n        var localDelta = toLocalDelta(controller, dx, dy);\r\n        each(dirNameSequence, function (dirName) {\r\n            var ind = DIRECTION_MAP[dirName];\r\n            rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\r\n        });\r\n        brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\r\n        updateCoverAfterCreation(controller, cover);\r\n        trigger$1(controller, { isEnd: false });\r\n    }\r\n    function driftPolygon(controller, cover, dx, dy) {\r\n        var range = cover.__brushOption.range;\r\n        var localDelta = toLocalDelta(controller, dx, dy);\r\n        each(range, function (point) {\r\n            point[0] += localDelta[0];\r\n            point[1] += localDelta[1];\r\n        });\r\n        updateCoverAfterCreation(controller, cover);\r\n        trigger$1(controller, { isEnd: false });\r\n    }\r\n    function toLocalDelta(controller, dx, dy) {\r\n        var thisGroup = controller.group;\r\n        var localD = thisGroup.transformCoordToLocal(dx, dy);\r\n        var localZero = thisGroup.transformCoordToLocal(0, 0);\r\n        return [localD[0] - localZero[0], localD[1] - localZero[1]];\r\n    }\r\n    function clipByPanel(controller, cover, data) {\r\n        var panel = getPanelByCover(controller, cover);\r\n        return (panel && panel !== BRUSH_PANEL_GLOBAL)\r\n            ? panel.clipPath(data, controller._transform)\r\n            : clone(data);\r\n    }\r\n    function pointsToRect(points) {\r\n        var xmin = mathMin$7(points[0][0], points[1][0]);\r\n        var ymin = mathMin$7(points[0][1], points[1][1]);\r\n        var xmax = mathMax$7(points[0][0], points[1][0]);\r\n        var ymax = mathMax$7(points[0][1], points[1][1]);\r\n        return {\r\n            x: xmin,\r\n            y: ymin,\r\n            width: xmax - xmin,\r\n            height: ymax - ymin\r\n        };\r\n    }\r\n    function resetCursor(controller, e, localCursorPoint) {\r\n        if (!controller._brushType\r\n            || isOutsideZrArea(controller, e.offsetX, e.offsetY)) {\r\n            return;\r\n        }\r\n        var zr = controller._zr;\r\n        var covers = controller._covers;\r\n        var currPanel = getPanelByPoint(controller, e, localCursorPoint);\r\n        if (!controller._dragging) {\r\n            for (var i = 0; i < covers.length; i++) {\r\n                var brushOption = covers[i].__brushOption;\r\n                if (currPanel\r\n                    && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId)\r\n                    && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        currPanel && zr.setCursorStyle('crosshair');\r\n    }\r\n    function preventDefault(e) {\r\n        var rawE = e.event;\r\n        rawE.preventDefault && rawE.preventDefault();\r\n    }\r\n    function mainShapeContain(cover, x, y) {\r\n        return cover.childOfName('main').contain(x, y);\r\n    }\r\n    function updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\r\n        var creatingCover = controller._creatingCover;\r\n        var panel = controller._creatingPanel;\r\n        var thisBrushOption = controller._brushOption;\r\n        var eventParams;\r\n        controller._track.push(localCursorPoint.slice());\r\n        if (shouldShowCover(controller) || creatingCover) {\r\n            if (panel && !creatingCover) {\r\n                thisBrushOption.brushMode === 'single' && clearCovers(controller);\r\n                var brushOption = clone(thisBrushOption);\r\n                brushOption.brushType = determineBrushType(brushOption.brushType, panel);\r\n                brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId;\r\n                creatingCover = controller._creatingCover = createCover(controller, brushOption);\r\n                controller._covers.push(creatingCover);\r\n            }\r\n            if (creatingCover) {\r\n                var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\r\n                var coverBrushOption = creatingCover.__brushOption;\r\n                coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\r\n                if (isEnd) {\r\n                    endCreating(controller, creatingCover);\r\n                    coverRenderer.updateCommon(controller, creatingCover);\r\n                }\r\n                updateCoverShape(controller, creatingCover);\r\n                eventParams = { isEnd: isEnd };\r\n            }\r\n        }\r\n        else if (isEnd\r\n            && thisBrushOption.brushMode === 'single'\r\n            && thisBrushOption.removeOnClick) {\r\n            if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\r\n                eventParams = { isEnd: isEnd, removeOnClick: true };\r\n            }\r\n        }\r\n        return eventParams;\r\n    }\r\n    function determineBrushType(brushType, panel) {\r\n        if (brushType === 'auto') {\r\n            if (__DEV__) {\r\n                assert(panel && panel.defaultBrushType, 'MUST have defaultBrushType when brushType is \"atuo\"');\r\n            }\r\n            return panel.defaultBrushType;\r\n        }\r\n        return brushType;\r\n    }\r\n    var pointerHandlers = {\r\n        mousedown: function (e) {\r\n            if (this._dragging) {\r\n                handleDragEnd(this, e);\r\n            }\r\n            else if (!e.target || !e.target.draggable) {\r\n                preventDefault(e);\r\n                var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\r\n                this._creatingCover = null;\r\n                var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\r\n                if (panel) {\r\n                    this._dragging = true;\r\n                    this._track = [localCursorPoint.slice()];\r\n                }\r\n            }\r\n        },\r\n        mousemove: function (e) {\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            var localCursorPoint = this.group.transformCoordToLocal(x, y);\r\n            resetCursor(this, e, localCursorPoint);\r\n            if (this._dragging) {\r\n                preventDefault(e);\r\n                var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\r\n                eventParams && trigger$1(this, eventParams);\r\n            }\r\n        },\r\n        mouseup: function (e) {\r\n            handleDragEnd(this, e);\r\n        }\r\n    };\r\n    function handleDragEnd(controller, e) {\r\n        if (controller._dragging) {\r\n            preventDefault(e);\r\n            var x = e.offsetX;\r\n            var y = e.offsetY;\r\n            var localCursorPoint = controller.group.transformCoordToLocal(x, y);\r\n            var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\r\n            controller._dragging = false;\r\n            controller._track = [];\r\n            controller._creatingCover = null;\r\n            eventParams && trigger$1(controller, eventParams);\r\n        }\r\n    }\r\n    function isOutsideZrArea(controller, x, y) {\r\n        var zr = controller._zr;\r\n        return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\r\n    }\r\n    var coverRenderers = {\r\n        lineX: getLineRenderer(0),\r\n        lineY: getLineRenderer(1),\r\n        rect: {\r\n            createCover: function (controller, brushOption) {\r\n                function returnInput(range) {\r\n                    return range;\r\n                }\r\n                return createBaseRectCover({\r\n                    toRectRange: returnInput,\r\n                    fromRectRange: returnInput\r\n                }, controller, brushOption, [['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']]);\r\n            },\r\n            getCreatingRange: function (localTrack) {\r\n                var ends = getTrackEnds(localTrack);\r\n                return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\r\n            },\r\n            updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n                updateBaseRect(controller, cover, localRange, brushOption);\r\n            },\r\n            updateCommon: updateCommon,\r\n            contain: mainShapeContain\r\n        },\r\n        polygon: {\r\n            createCover: function (controller, brushOption) {\r\n                var cover = new Group();\r\n                cover.add(new Polyline({\r\n                    name: 'main',\r\n                    style: makeStyle(brushOption),\r\n                    silent: true\r\n                }));\r\n                return cover;\r\n            },\r\n            getCreatingRange: function (localTrack) {\r\n                return localTrack;\r\n            },\r\n            endCreating: function (controller, cover) {\r\n                cover.remove(cover.childAt(0));\r\n                cover.add(new Polygon({\r\n                    name: 'main',\r\n                    draggable: true,\r\n                    drift: curry(driftPolygon, controller, cover),\r\n                    ondragend: curry(trigger$1, controller, { isEnd: true })\r\n                }));\r\n            },\r\n            updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n                cover.childAt(0).setShape({\r\n                    points: clipByPanel(controller, cover, localRange)\r\n                });\r\n            },\r\n            updateCommon: updateCommon,\r\n            contain: mainShapeContain\r\n        }\r\n    };\r\n    function getLineRenderer(xyIndex) {\r\n        return {\r\n            createCover: function (controller, brushOption) {\r\n                return createBaseRectCover({\r\n                    toRectRange: function (range) {\r\n                        var rectRange = [range, [0, 100]];\r\n                        xyIndex && rectRange.reverse();\r\n                        return rectRange;\r\n                    },\r\n                    fromRectRange: function (rectRange) {\r\n                        return rectRange[xyIndex];\r\n                    }\r\n                }, controller, brushOption, [[['w'], ['e']], [['n'], ['s']]][xyIndex]);\r\n            },\r\n            getCreatingRange: function (localTrack) {\r\n                var ends = getTrackEnds(localTrack);\r\n                var min = mathMin$7(ends[0][xyIndex], ends[1][xyIndex]);\r\n                var max = mathMax$7(ends[0][xyIndex], ends[1][xyIndex]);\r\n                return [min, max];\r\n            },\r\n            updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n                var otherExtent;\r\n                var panel = getPanelByCover(controller, cover);\r\n                if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) {\r\n                    otherExtent = panel.getLinearBrushOtherExtent(xyIndex);\r\n                }\r\n                else {\r\n                    var zr = controller._zr;\r\n                    otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\r\n                }\r\n                var rectRange = [localRange, otherExtent];\r\n                xyIndex && rectRange.reverse();\r\n                updateBaseRect(controller, cover, rectRange, brushOption);\r\n            },\r\n            updateCommon: updateCommon,\r\n            contain: mainShapeContain\r\n        };\r\n    }\n\n    var IRRELEVANT_EXCLUDES = { 'axisPointer': 1, 'tooltip': 1, 'brush': 1 };\r\n    function onIrrelevantElement(e, api, targetCoordSysModel) {\r\n        var model = api.getComponentByElement(e.topTarget);\r\n        var coordSys = model && model.coordinateSystem;\r\n        return model\r\n            && model !== targetCoordSysModel\r\n            && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType)\r\n            && (coordSys && coordSys.model !== targetCoordSysModel);\r\n    }\n\n    function makeRectPanelClipPath(rect) {\r\n        rect = normalizeRect(rect);\r\n        return function (localPoints) {\r\n            return clipPointsByRect(localPoints, rect);\r\n        };\r\n    }\r\n    function makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\r\n        rect = normalizeRect(rect);\r\n        return function (xyIndex) {\r\n            var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\r\n            var brushWidth = idx ? rect.width : rect.height;\r\n            var base = idx ? rect.x : rect.y;\r\n            return [base, base + (brushWidth || 0)];\r\n        };\r\n    }\r\n    function makeRectIsTargetByCursor(rect, api, targetModel) {\r\n        var boundingRect = normalizeRect(rect);\r\n        return function (e, localCursorPoint) {\r\n            return boundingRect.contain(localCursorPoint[0], localCursorPoint[1])\r\n                && !onIrrelevantElement(e, api, targetModel);\r\n        };\r\n    }\r\n    function normalizeRect(rect) {\r\n        return BoundingRect.create(rect);\r\n    }\n\n    var COORD_CONVERTS = ['dataToPoint', 'pointToData'];\r\n    var INCLUDE_FINDER_MAIN_TYPES = [\r\n        'grid', 'xAxis', 'yAxis', 'geo', 'graph',\r\n        'polar', 'radiusAxis', 'angleAxis', 'bmap'\r\n    ];\r\n    var BrushTargetManager = (function () {\r\n        function BrushTargetManager(finder, ecModel, opt) {\r\n            var _this = this;\r\n            this._targetInfoList = [];\r\n            var foundCpts = parseFinder$1(ecModel, finder);\r\n            each(targetInfoBuilders, function (builder, type) {\r\n                if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\r\n                    builder(foundCpts, _this._targetInfoList);\r\n                }\r\n            });\r\n        }\r\n        BrushTargetManager.prototype.setOutputRanges = function (areas, ecModel) {\r\n            this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\r\n                (area.coordRanges || (area.coordRanges = [])).push(coordRange);\r\n                if (!area.coordRange) {\r\n                    area.coordRange = coordRange;\r\n                    var result = coordConvert[area.brushType](0, coordSys, coordRange);\r\n                    area.__rangeOffset = {\r\n                        offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\r\n                        xyMinMax: result.xyMinMax\r\n                    };\r\n                }\r\n            });\r\n            return areas;\r\n        };\r\n        BrushTargetManager.prototype.matchOutputRanges = function (areas, ecModel, cb) {\r\n            each(areas, function (area) {\r\n                var targetInfo = this.findTargetInfo(area, ecModel);\r\n                if (targetInfo && targetInfo !== true) {\r\n                    each(targetInfo.coordSyses, function (coordSys) {\r\n                        var result = coordConvert[area.brushType](1, coordSys, area.range);\r\n                        cb(area, result.values, coordSys, ecModel);\r\n                    });\r\n                }\r\n            }, this);\r\n        };\r\n        BrushTargetManager.prototype.setInputRanges = function (areas, ecModel) {\r\n            each(areas, function (area) {\r\n                var targetInfo = this.findTargetInfo(area, ecModel);\r\n                if (__DEV__) {\r\n                    assert(!targetInfo || targetInfo === true || area.coordRange, 'coordRange must be specified when coord index specified.');\r\n                    assert(!targetInfo || targetInfo !== true || area.range, 'range must be specified in global brush.');\r\n                }\r\n                area.range = area.range || [];\r\n                if (targetInfo && targetInfo !== true) {\r\n                    area.panelId = targetInfo.panelId;\r\n                    var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\r\n                    var rangeOffset = area.__rangeOffset;\r\n                    area.range = rangeOffset\r\n                        ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax))\r\n                        : result.values;\r\n                }\r\n            }, this);\r\n        };\r\n        BrushTargetManager.prototype.makePanelOpts = function (api, getDefaultBrushType) {\r\n            return map(this._targetInfoList, function (targetInfo) {\r\n                var rect = targetInfo.getPanelRect();\r\n                return {\r\n                    panelId: targetInfo.panelId,\r\n                    defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null,\r\n                    clipPath: makeRectPanelClipPath(rect),\r\n                    isTargetByCursor: makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\r\n                    getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect)\r\n                };\r\n            });\r\n        };\r\n        BrushTargetManager.prototype.controlSeries = function (area, seriesModel, ecModel) {\r\n            var targetInfo = this.findTargetInfo(area, ecModel);\r\n            return targetInfo === true || (targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0);\r\n        };\r\n        BrushTargetManager.prototype.findTargetInfo = function (area, ecModel) {\r\n            var targetInfoList = this._targetInfoList;\r\n            var foundCpts = parseFinder$1(ecModel, area);\r\n            for (var i = 0; i < targetInfoList.length; i++) {\r\n                var targetInfo = targetInfoList[i];\r\n                var areaPanelId = area.panelId;\r\n                if (areaPanelId) {\r\n                    if (targetInfo.panelId === areaPanelId) {\r\n                        return targetInfo;\r\n                    }\r\n                }\r\n                else {\r\n                    for (var j = 0; j < targetInfoMatchers.length; j++) {\r\n                        if (targetInfoMatchers[j](foundCpts, targetInfo)) {\r\n                            return targetInfo;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        return BrushTargetManager;\r\n    }());\r\n    function formatMinMax(minMax) {\r\n        minMax[0] > minMax[1] && minMax.reverse();\r\n        return minMax;\r\n    }\r\n    function parseFinder$1(ecModel, finder) {\r\n        return parseFinder(ecModel, finder, { includeMainTypes: INCLUDE_FINDER_MAIN_TYPES });\r\n    }\r\n    var targetInfoBuilders = {\r\n        grid: function (foundCpts, targetInfoList) {\r\n            var xAxisModels = foundCpts.xAxisModels;\r\n            var yAxisModels = foundCpts.yAxisModels;\r\n            var gridModels = foundCpts.gridModels;\r\n            var gridModelMap = createHashMap();\r\n            var xAxesHas = {};\r\n            var yAxesHas = {};\r\n            if (!xAxisModels && !yAxisModels && !gridModels) {\r\n                return;\r\n            }\r\n            each(xAxisModels, function (axisModel) {\r\n                var gridModel = axisModel.axis.grid.model;\r\n                gridModelMap.set(gridModel.id, gridModel);\r\n                xAxesHas[gridModel.id] = true;\r\n            });\r\n            each(yAxisModels, function (axisModel) {\r\n                var gridModel = axisModel.axis.grid.model;\r\n                gridModelMap.set(gridModel.id, gridModel);\r\n                yAxesHas[gridModel.id] = true;\r\n            });\r\n            each(gridModels, function (gridModel) {\r\n                gridModelMap.set(gridModel.id, gridModel);\r\n                xAxesHas[gridModel.id] = true;\r\n                yAxesHas[gridModel.id] = true;\r\n            });\r\n            gridModelMap.each(function (gridModel) {\r\n                var grid = gridModel.coordinateSystem;\r\n                var cartesians = [];\r\n                each(grid.getCartesians(), function (cartesian, index) {\r\n                    if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0\r\n                        || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\r\n                        cartesians.push(cartesian);\r\n                    }\r\n                });\r\n                targetInfoList.push({\r\n                    panelId: 'grid--' + gridModel.id,\r\n                    gridModel: gridModel,\r\n                    coordSysModel: gridModel,\r\n                    coordSys: cartesians[0],\r\n                    coordSyses: cartesians,\r\n                    getPanelRect: panelRectBuilders.grid,\r\n                    xAxisDeclared: xAxesHas[gridModel.id],\r\n                    yAxisDeclared: yAxesHas[gridModel.id]\r\n                });\r\n            });\r\n        },\r\n        geo: function (foundCpts, targetInfoList) {\r\n            each(foundCpts.geoModels, function (geoModel) {\r\n                var coordSys = geoModel.coordinateSystem;\r\n                targetInfoList.push({\r\n                    panelId: 'geo--' + geoModel.id,\r\n                    geoModel: geoModel,\r\n                    coordSysModel: geoModel,\r\n                    coordSys: coordSys,\r\n                    coordSyses: [coordSys],\r\n                    getPanelRect: panelRectBuilders.geo\r\n                });\r\n            });\r\n        }\r\n    };\r\n    var targetInfoMatchers = [\r\n        function (foundCpts, targetInfo) {\r\n            var xAxisModel = foundCpts.xAxisModel;\r\n            var yAxisModel = foundCpts.yAxisModel;\r\n            var gridModel = foundCpts.gridModel;\r\n            !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\r\n            !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\r\n            return gridModel && gridModel === targetInfo.gridModel;\r\n        },\r\n        function (foundCpts, targetInfo) {\r\n            var geoModel = foundCpts.geoModel;\r\n            return geoModel && geoModel === targetInfo.geoModel;\r\n        }\r\n    ];\r\n    var panelRectBuilders = {\r\n        grid: function () {\r\n            return this.coordSys.master.getRect().clone();\r\n        },\r\n        geo: function () {\r\n            var coordSys = this.coordSys;\r\n            var rect = coordSys.getBoundingRect().clone();\r\n            rect.applyTransform(getTransform(coordSys));\r\n            return rect;\r\n        }\r\n    };\r\n    var coordConvert = {\r\n        lineX: curry(axisConvert, 0),\r\n        lineY: curry(axisConvert, 1),\r\n        rect: function (to, coordSys, rangeOrCoordRange) {\r\n            var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);\r\n            var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);\r\n            var values = [\r\n                formatMinMax([xminymin[0], xmaxymax[0]]),\r\n                formatMinMax([xminymin[1], xmaxymax[1]])\r\n            ];\r\n            return { values: values, xyMinMax: values };\r\n        },\r\n        polygon: function (to, coordSys, rangeOrCoordRange) {\r\n            var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\r\n            var values = map(rangeOrCoordRange, function (item) {\r\n                var p = coordSys[COORD_CONVERTS[to]](item);\r\n                xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\r\n                xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\r\n                xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\r\n                xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\r\n                return p;\r\n            });\r\n            return { values: values, xyMinMax: xyMinMax };\r\n        }\r\n    };\r\n    function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\r\n        if (__DEV__) {\r\n            assert(coordSys.type === 'cartesian2d', 'lineX/lineY brush is available only in cartesian2d.');\r\n        }\r\n        var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\r\n        var values = formatMinMax(map([0, 1], function (i) {\r\n            return to\r\n                ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]))\r\n                : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\r\n        }));\r\n        var xyMinMax = [];\r\n        xyMinMax[axisNameIndex] = values;\r\n        xyMinMax[1 - axisNameIndex] = [NaN, NaN];\r\n        return { values: values, xyMinMax: xyMinMax };\r\n    }\r\n    var diffProcessor = {\r\n        lineX: curry(axisDiffProcessor, 0),\r\n        lineY: curry(axisDiffProcessor, 1),\r\n        rect: function (values, refer, scales) {\r\n            return [\r\n                [values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]],\r\n                [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]\r\n            ];\r\n        },\r\n        polygon: function (values, refer, scales) {\r\n            return map(values, function (item, idx) {\r\n                return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\r\n            });\r\n        }\r\n    };\r\n    function axisDiffProcessor(axisNameIndex, values, refer, scales) {\r\n        return [\r\n            values[0] - scales[axisNameIndex] * refer[0],\r\n            values[1] - scales[axisNameIndex] * refer[1]\r\n        ];\r\n    }\r\n    function getScales(xyMinMaxCurr, xyMinMaxOrigin) {\r\n        var sizeCurr = getSize(xyMinMaxCurr);\r\n        var sizeOrigin = getSize(xyMinMaxOrigin);\r\n        var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\r\n        isNaN(scales[0]) && (scales[0] = 1);\r\n        isNaN(scales[1]) && (scales[1] = 1);\r\n        return scales;\r\n    }\r\n    function getSize(xyMinMax) {\r\n        return xyMinMax\r\n            ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]]\r\n            : [NaN, NaN];\r\n    }\n\n    var each$8 = each;\r\n    var inner$f = makeInner();\r\n    function push(ecModel, newSnapshot) {\r\n        var storedSnapshots = getStoreSnapshots(ecModel);\r\n        each$8(newSnapshot, function (batchItem, dataZoomId) {\r\n            var i = storedSnapshots.length - 1;\r\n            for (; i >= 0; i--) {\r\n                var snapshot = storedSnapshots[i];\r\n                if (snapshot[dataZoomId]) {\r\n                    break;\r\n                }\r\n            }\r\n            if (i < 0) {\r\n                var dataZoomModel = ecModel.queryComponents({ mainType: 'dataZoom', subType: 'select', id: dataZoomId })[0];\r\n                if (dataZoomModel) {\r\n                    var percentRange = dataZoomModel.getPercentRange();\r\n                    storedSnapshots[0][dataZoomId] = {\r\n                        dataZoomId: dataZoomId,\r\n                        start: percentRange[0],\r\n                        end: percentRange[1]\r\n                    };\r\n                }\r\n            }\r\n        });\r\n        storedSnapshots.push(newSnapshot);\r\n    }\r\n    function pop(ecModel) {\r\n        var storedSnapshots = getStoreSnapshots(ecModel);\r\n        var head = storedSnapshots[storedSnapshots.length - 1];\r\n        storedSnapshots.length > 1 && storedSnapshots.pop();\r\n        var snapshot = {};\r\n        each$8(head, function (batchItem, dataZoomId) {\r\n            for (var i = storedSnapshots.length - 1; i >= 0; i--) {\r\n                batchItem = storedSnapshots[i][dataZoomId];\r\n                if (batchItem) {\r\n                    snapshot[dataZoomId] = batchItem;\r\n                    break;\r\n                }\r\n            }\r\n        });\r\n        return snapshot;\r\n    }\r\n    function clear$1(ecModel) {\r\n        inner$f(ecModel).snapshots = null;\r\n    }\r\n    function count(ecModel) {\r\n        return getStoreSnapshots(ecModel).length;\r\n    }\r\n    function getStoreSnapshots(ecModel) {\r\n        var store = inner$f(ecModel);\r\n        if (!store.snapshots) {\r\n            store.snapshots = [{}];\r\n        }\r\n        return store.snapshots;\r\n    }\n\n    var SelectDataZoomModel = (function (_super) {\r\n        __extends(SelectDataZoomModel, _super);\r\n        function SelectDataZoomModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SelectDataZoomModel.type;\r\n            return _this;\r\n        }\r\n        SelectDataZoomModel.type = 'dataZoom.select';\r\n        return SelectDataZoomModel;\r\n    }(DataZoomModel));\r\n    ComponentModel.registerClass(SelectDataZoomModel);\n\n    var SelectDataZoomView = (function (_super) {\r\n        __extends(SelectDataZoomView, _super);\r\n        function SelectDataZoomView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = SelectDataZoomView.type;\r\n            return _this;\r\n        }\r\n        SelectDataZoomView.type = 'dataZoom.select';\r\n        return SelectDataZoomView;\r\n    }(DataZoomView));\r\n    ComponentView.registerClass(SelectDataZoomView);\n\n    var each$9 = each;\r\n    var DATA_ZOOM_ID_BASE = makeInternalComponentId('toolbox-dataZoom_');\r\n    var DataZoomFeature = (function (_super) {\r\n        __extends(DataZoomFeature, _super);\r\n        function DataZoomFeature() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        DataZoomFeature.prototype.render = function (featureModel, ecModel, api, payload) {\r\n            if (!this.brushController) {\r\n                this.brushController = new BrushController(api.getZr());\r\n                this.brushController.on('brush', bind(this._onBrush, this))\r\n                    .mount();\r\n            }\r\n            updateZoomBtnStatus(featureModel, ecModel, this, payload, api);\r\n            updateBackBtnStatus(featureModel, ecModel);\r\n        };\r\n        DataZoomFeature.prototype.onclick = function (ecModel, api, type) {\r\n            handlers[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$9(snapshot, function (batchItem, dataZoomId) {\r\n                batch.push(clone(batchItem));\r\n            });\r\n            batch.length && this.api.dispatchAction({\r\n                type: 'dataZoom',\r\n                from: this.uid,\r\n                batch: batch\r\n            });\r\n        };\r\n        DataZoomFeature.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                filterMode: 'filter',\r\n                icon: {\r\n                    zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',\r\n                    back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26'\r\n                },\r\n                title: ecModel.getLocale(['toolbox', 'dataZoom', 'title']),\r\n                brushStyle: {\r\n                    borderWidth: 0,\r\n                    color: 'rgba(210,219,238,0.2)'\r\n                }\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return DataZoomFeature;\r\n    }(ToolboxFeature));\r\n    var handlers = {\r\n        zoom: function () {\r\n            var nextActive = !this.isZoomActive;\r\n            this.api.dispatchAction({\r\n                type: 'takeGlobalCursor',\r\n                key: 'dataZoomSelect',\r\n                dataZoomSelectActive: nextActive\r\n            });\r\n        },\r\n        back: function () {\r\n            this._dispatchZoomAction(pop(this.ecModel));\r\n        }\r\n    };\r\n    function makeAxisFinder(dzFeatureModel) {\r\n        var setting = {\r\n            xAxisIndex: dzFeatureModel.get('xAxisIndex', true),\r\n            yAxisIndex: dzFeatureModel.get('yAxisIndex', true),\r\n            xAxisId: dzFeatureModel.get('xAxisId', true),\r\n            yAxisId: dzFeatureModel.get('yAxisId', true)\r\n        };\r\n        if (setting.xAxisIndex == null && setting.xAxisId == null) {\r\n            setting.xAxisIndex = 'all';\r\n        }\r\n        if (setting.yAxisIndex == null && setting.yAxisId == null) {\r\n            setting.yAxisIndex = 'all';\r\n        }\r\n        return setting;\r\n    }\r\n    function updateBackBtnStatus(featureModel, ecModel) {\r\n        featureModel.setIconStatus('back', count(ecModel) > 1 ? 'emphasis' : 'normal');\r\n    }\r\n    function updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {\r\n        var zoomActive = view.isZoomActive;\r\n        if (payload && payload.type === 'takeGlobalCursor') {\r\n            zoomActive = payload.key === 'dataZoomSelect'\r\n                ? payload.dataZoomSelectActive : false;\r\n        }\r\n        view.isZoomActive = zoomActive;\r\n        featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');\r\n        var brushTargetManager = new BrushTargetManager(makeAxisFinder(featureModel), ecModel, { include: ['grid'] });\r\n        var panels = brushTargetManager.makePanelOpts(api, function (targetInfo) {\r\n            return (targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared)\r\n                ? 'lineX'\r\n                : (!targetInfo.xAxisDeclared && targetInfo.yAxisDeclared)\r\n                    ? 'lineY'\r\n                    : 'rect';\r\n        });\r\n        view.brushController\r\n            .setPanels(panels)\r\n            .enableBrush((zoomActive && panels.length)\r\n            ? {\r\n                brushType: 'auto',\r\n                brushStyle: featureModel.getModel('brushStyle').getItemStyle()\r\n            }\r\n            : false);\r\n    }\r\n    registerFeature('dataZoom', DataZoomFeature);\r\n    registerInternalOptionCreator('dataZoom', function (ecModel) {\r\n        var toolboxModel = ecModel.getComponent('toolbox', 0);\r\n        if (!toolboxModel) {\r\n            return;\r\n        }\r\n        var dzFeatureModel = toolboxModel.getModel(['feature', 'dataZoom']);\r\n        var dzOptions = [];\r\n        var finder = makeAxisFinder(dzFeatureModel);\r\n        var finderResult = parseFinder(ecModel, finder);\r\n        each$9(finderResult.xAxisModels, function (axisModel) { return buildInternalOptions(axisModel, 'xAxis', 'xAxisIndex'); });\r\n        each$9(finderResult.yAxisModels, function (axisModel) { return buildInternalOptions(axisModel, 'yAxis', 'yAxisIndex'); });\r\n        function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) {\r\n            var axisIndex = axisModel.componentIndex;\r\n            var newOpt = {\r\n                type: 'select',\r\n                $fromToolbox: true,\r\n                filterMode: dzFeatureModel.get('filterMode', true) || 'filter',\r\n                id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex\r\n            };\r\n            newOpt[axisIndexPropName] = axisIndex;\r\n            dzOptions.push(newOpt);\r\n        }\r\n        return dzOptions;\r\n    });\n\n    var RestoreOption = (function (_super) {\r\n        __extends(RestoreOption, _super);\r\n        function RestoreOption() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        RestoreOption.prototype.onclick = function (ecModel, api) {\r\n            clear$1(ecModel);\r\n            api.dispatchAction({\r\n                type: 'restore',\r\n                from: this.uid\r\n            });\r\n        };\r\n        RestoreOption.getDefaultOption = function (ecModel) {\r\n            var defaultOption = {\r\n                show: true,\r\n                icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\r\n                title: ecModel.getLocale(['toolbox', 'restore', 'title'])\r\n            };\r\n            return defaultOption;\r\n        };\r\n        return RestoreOption;\r\n    }(ToolboxFeature));\r\n    registerFeature('restore', RestoreOption);\r\n    registerAction({ type: 'restore', event: 'restore', update: 'prepareAndUpdate' }, function (payload, ecModel) {\r\n        ecModel.resetOption('recreate');\r\n    });\n\n    var DEFAULT_OPTION = {\r\n        label: {\r\n            enabled: true\r\n        },\r\n        decal: {\r\n            show: false\r\n        }\r\n    };\r\n    var inner$g = makeInner();\r\n    var decalPaletteScope = {};\r\n    function ariaVisual(ecModel, api) {\r\n        var ariaModel = ecModel.getModel('aria');\r\n        if (!ariaModel.get('enabled')) {\r\n            return;\r\n        }\r\n        var defaultOption = clone(DEFAULT_OPTION);\r\n        merge(defaultOption.label, ecModel.getLocaleModel().get('aria'), false);\r\n        merge(ariaModel.option, defaultOption, false);\r\n        setDecal();\r\n        setLabel();\r\n        function setDecal() {\r\n            var decalModel = ariaModel.getModel('decal');\r\n            var useDecal = decalModel.get('show');\r\n            if (useDecal) {\r\n                var paletteScopeGroupByType_1 = createHashMap();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    if (!seriesModel.useColorPaletteOnData) {\r\n                        return;\r\n                    }\r\n                    var decalScope = paletteScopeGroupByType_1.get(seriesModel.type);\r\n                    if (!decalScope) {\r\n                        decalScope = {};\r\n                        paletteScopeGroupByType_1.set(seriesModel.type, decalScope);\r\n                    }\r\n                    inner$g(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$g(seriesModel).scope;\r\n                        data.each(function (idx) {\r\n                            var rawIdx = data.getRawIndex(idx);\r\n                            idxMap_1[rawIdx] = idx;\r\n                        });\r\n                        var dataCount_1 = dataAll_1.count();\r\n                        dataAll_1.each(function (rawIdx) {\r\n                            var idx = idxMap_1[rawIdx];\r\n                            var name = dataAll_1.getName(rawIdx) || (rawIdx + '');\r\n                            var paletteDecal = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1);\r\n                            var specifiedDecal = data.getItemVisual(idx, 'decal');\r\n                            data.setItemVisual(idx, 'decal', mergeDecal(specifiedDecal, paletteDecal));\r\n                        });\r\n                    }\r\n                    else {\r\n                        var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount());\r\n                        var specifiedDecal = data.getVisual('decal');\r\n                        data.setVisual('decal', mergeDecal(specifiedDecal, paletteDecal));\r\n                    }\r\n                    function mergeDecal(specifiedDecal, paletteDecal) {\r\n                        var resultDecal = specifiedDecal\r\n                            ? extend(extend({}, paletteDecal), specifiedDecal)\r\n                            : paletteDecal;\r\n                        resultDecal.dirty = true;\r\n                        return resultDecal;\r\n                    }\r\n                });\r\n            }\r\n        }\r\n        function setLabel() {\r\n            var labelLocale = ecModel.getLocaleModel().get('aria');\r\n            var labelModel = ariaModel.getModel('label');\r\n            labelModel.option = defaults(labelModel.option, labelLocale);\r\n            if (!labelModel.get('enabled')) {\r\n                return;\r\n            }\r\n            var dom = api.getZr().dom;\r\n            if (labelModel.get('description')) {\r\n                dom.setAttribute('aria-label', labelModel.get('description'));\r\n                return;\r\n            }\r\n            var seriesCnt = ecModel.getSeriesCount();\r\n            var maxDataCnt = labelModel.get(['data', 'maxCount']) || 10;\r\n            var maxSeriesCnt = labelModel.get(['series', 'maxCount']) || 10;\r\n            var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\r\n            var ariaLabel;\r\n            if (seriesCnt < 1) {\r\n                return;\r\n            }\r\n            else {\r\n                var title = getTitle();\r\n                if (title) {\r\n                    var withTitle = labelModel.get(['general', 'withTitle']);\r\n                    ariaLabel = replace(withTitle, {\r\n                        title: title\r\n                    });\r\n                }\r\n                else {\r\n                    ariaLabel = labelModel.get(['general', 'withoutTitle']);\r\n                }\r\n                var seriesLabels_1 = [];\r\n                var prefix = seriesCnt > 1\r\n                    ? labelModel.get(['series', 'multiple', 'prefix'])\r\n                    : labelModel.get(['series', 'single', 'prefix']);\r\n                ariaLabel += replace(prefix, { seriesCount: seriesCnt });\r\n                ecModel.eachSeries(function (seriesModel, idx) {\r\n                    if (idx < displaySeriesCnt) {\r\n                        var seriesLabel = void 0;\r\n                        var seriesName = seriesModel.get('name');\r\n                        var withName = seriesName ? 'withName' : 'withoutName';\r\n                        seriesLabel = seriesCnt > 1\r\n                            ? labelModel.get(['series', 'multiple', withName])\r\n                            : labelModel.get(['series', 'single', withName]);\r\n                        seriesLabel = replace(seriesLabel, {\r\n                            seriesId: seriesModel.seriesIndex,\r\n                            seriesName: seriesModel.get('name'),\r\n                            seriesType: getSeriesTypeName(seriesModel.subType)\r\n                        });\r\n                        var data = seriesModel.getData();\r\n                        if (data.count() > maxDataCnt) {\r\n                            var partialLabel = labelModel.get(['data', 'partialData']);\r\n                            seriesLabel += replace(partialLabel, {\r\n                                displayCnt: maxDataCnt\r\n                            });\r\n                        }\r\n                        else {\r\n                            seriesLabel += labelModel.get(['data', 'allData']);\r\n                        }\r\n                        var dataLabels = [];\r\n                        for (var i = 0; i < data.count(); i++) {\r\n                            if (i < maxDataCnt) {\r\n                                var name_1 = data.getName(i);\r\n                                var value = retrieveRawValue(data, i);\r\n                                var dataLabel = labelModel.get(['data', name_1 ? 'withName' : 'withoutName']);\r\n                                dataLabels.push(replace(dataLabel, {\r\n                                    name: name_1,\r\n                                    value: value\r\n                                }));\r\n                            }\r\n                        }\r\n                        var middleSeparator_1 = labelModel.get(['data', 'separator', 'middle']);\r\n                        var endSeparator_1 = labelModel.get(['data', 'separator', 'end']);\r\n                        seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1;\r\n                        seriesLabels_1.push(seriesLabel);\r\n                    }\r\n                });\r\n                var separatorModel = labelModel.getModel(['series', 'multiple', 'separator']);\r\n                var middleSeparator = separatorModel.get('middle');\r\n                var endSeparator = separatorModel.get('end');\r\n                ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator;\r\n                dom.setAttribute('aria-label', ariaLabel);\r\n            }\r\n        }\r\n        function replace(str, keyValues) {\r\n            if (typeof str !== 'string') {\r\n                return str;\r\n            }\r\n            var result = str;\r\n            each(keyValues, function (value, key) {\r\n                result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\r\n            });\r\n            return result;\r\n        }\r\n        function getTitle() {\r\n            var title = ecModel.get('title');\r\n            if (title && title.length) {\r\n                title = title[0];\r\n            }\r\n            return title && title.text;\r\n        }\r\n        function getSeriesTypeName(type) {\r\n            return ecModel.getLocaleModel().get(['series', 'typeNames'])[type] || '自定义图';\r\n        }\r\n    }\n\n    function ariaPreprocessor(option) {\r\n        if (!option || !option.aria) {\r\n            return;\r\n        }\r\n        var aria = option.aria;\r\n        if (aria.show != null) {\r\n            aria.enabled = aria.show;\r\n        }\r\n        aria.label = aria.label || {};\r\n        each(['description', 'general', 'series', 'data'], function (name) {\r\n            if (aria[name] != null) {\r\n                aria.label[name] = aria[name];\r\n            }\r\n        });\r\n    }\n\n    var PRIORITY_VISUAL_ARIA$1 = PRIORITY.VISUAL.ARIA;\r\n    registerPreprocessor(ariaPreprocessor);\r\n    registerVisual(PRIORITY_VISUAL_ARIA$1, ariaVisual);\n\n    function createElement(name) {\r\n        return document.createElementNS('http://www.w3.org/2000/svg', name);\r\n    }\n\n    var NONE = 'none';\r\n    var mathRound = Math.round;\r\n    var mathSin$4 = Math.sin;\r\n    var mathCos$4 = Math.cos;\r\n    var PI$7 = Math.PI;\r\n    var PI2$8 = Math.PI * 2;\r\n    var degree = 180 / PI$7;\r\n    var EPSILON$4 = 1e-4;\r\n    function round3(val) {\r\n        return mathRound(val * 1e3) / 1e3;\r\n    }\r\n    function round4(val) {\r\n        return mathRound(val * 1e4) / 1e4;\r\n    }\r\n    function isAroundZero$1(val) {\r\n        return val < EPSILON$4 && val > -EPSILON$4;\r\n    }\r\n    function pathHasFill(style) {\r\n        var fill = style.fill;\r\n        return fill != null && fill !== NONE;\r\n    }\r\n    function pathHasStroke(style) {\r\n        var stroke = style.stroke;\r\n        return stroke != null && stroke !== NONE;\r\n    }\r\n    function setTransform(svgEl, m) {\r\n        if (m) {\r\n            attr(svgEl, 'transform', 'matrix('\r\n                + round3(m[0]) + ','\r\n                + round3(m[1]) + ','\r\n                + round3(m[2]) + ','\r\n                + round3(m[3]) + ','\r\n                + round4(m[4]) + ','\r\n                + round4(m[5])\r\n                + ')');\r\n        }\r\n    }\r\n    function attr(el, key, val) {\r\n        if (!val || val.type !== 'linear' && val.type !== 'radial') {\r\n            el.setAttribute(key, val);\r\n        }\r\n    }\r\n    function attrXLink(el, key, val) {\r\n        el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\r\n    }\r\n    function attrXML(el, key, val) {\r\n        el.setAttributeNS('http://www.w3.org/XML/1998/namespace', key, val);\r\n    }\r\n    function bindStyle(svgEl, style, el) {\r\n        var opacity = style.opacity == null ? 1 : style.opacity;\r\n        if (pathHasFill(style)) {\r\n            var fill = style.fill;\r\n            fill = fill === 'transparent' ? NONE : fill;\r\n            attr(svgEl, 'fill', fill);\r\n            attr(svgEl, 'fill-opacity', (style.fillOpacity != null ? style.fillOpacity * opacity : opacity) + '');\r\n        }\r\n        else {\r\n            attr(svgEl, 'fill', NONE);\r\n        }\r\n        if (pathHasStroke(style)) {\r\n            var stroke = style.stroke;\r\n            stroke = stroke === 'transparent' ? NONE : stroke;\r\n            attr(svgEl, 'stroke', stroke);\r\n            var strokeWidth = style.lineWidth;\r\n            var strokeScale_1 = style.strokeNoScale\r\n                ? el.getLineScale()\r\n                : 1;\r\n            attr(svgEl, 'stroke-width', (strokeScale_1 ? strokeWidth / strokeScale_1 : 0) + '');\r\n            attr(svgEl, 'paint-order', style.strokeFirst ? 'stroke' : 'fill');\r\n            attr(svgEl, 'stroke-opacity', (style.strokeOpacity != null ? style.strokeOpacity * opacity : opacity) + '');\r\n            var lineDash = style.lineDash && strokeWidth > 0 && normalizeLineDash(style.lineDash, strokeWidth);\r\n            if (lineDash) {\r\n                var lineDashOffset = style.lineDashOffset;\r\n                if (strokeScale_1 && strokeScale_1 !== 1) {\r\n                    lineDash = map(lineDash, function (rawVal) {\r\n                        return rawVal / strokeScale_1;\r\n                    });\r\n                    if (lineDashOffset) {\r\n                        lineDashOffset /= strokeScale_1;\r\n                        lineDashOffset = mathRound(lineDashOffset);\r\n                    }\r\n                }\r\n                attr(svgEl, 'stroke-dasharray', lineDash.join(','));\r\n                attr(svgEl, 'stroke-dashoffset', (lineDashOffset || 0) + '');\r\n            }\r\n            else {\r\n                attr(svgEl, 'stroke-dasharray', '');\r\n            }\r\n            style.lineCap && attr(svgEl, 'stroke-linecap', style.lineCap);\r\n            style.lineJoin && attr(svgEl, 'stroke-linejoin', style.lineJoin);\r\n            style.miterLimit && attr(svgEl, 'stroke-miterlimit', style.miterLimit + '');\r\n        }\r\n        else {\r\n            attr(svgEl, 'stroke', NONE);\r\n        }\r\n    }\r\n    var SVGPathRebuilder = (function () {\r\n        function SVGPathRebuilder() {\r\n        }\r\n        SVGPathRebuilder.prototype.reset = function () {\r\n            this._d = [];\r\n            this._str = '';\r\n        };\r\n        SVGPathRebuilder.prototype.moveTo = function (x, y) {\r\n            this._add('M', x, y);\r\n        };\r\n        SVGPathRebuilder.prototype.lineTo = function (x, y) {\r\n            this._add('L', x, y);\r\n        };\r\n        SVGPathRebuilder.prototype.bezierCurveTo = function (x, y, x2, y2, x3, y3) {\r\n            this._add('C', x, y, x2, y2, x3, y3);\r\n        };\r\n        SVGPathRebuilder.prototype.quadraticCurveTo = function (x, y, x2, y2) {\r\n            this._add('Q', x, y, x2, y2);\r\n        };\r\n        SVGPathRebuilder.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\r\n            this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise);\r\n        };\r\n        SVGPathRebuilder.prototype.ellipse = function (cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) {\r\n            var firstCmd = this._d.length === 0;\r\n            var dTheta = endAngle - startAngle;\r\n            var clockwise = !anticlockwise;\r\n            var dThetaPositive = Math.abs(dTheta);\r\n            var isCircle = isAroundZero$1(dThetaPositive - PI2$8)\r\n                || (clockwise ? dTheta >= PI2$8 : -dTheta >= PI2$8);\r\n            var unifiedTheta = dTheta > 0 ? dTheta % PI2$8 : (dTheta % PI2$8 + PI2$8);\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$7) === !!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$8 - 1e-4;\r\n                }\r\n                else {\r\n                    dTheta = -PI2$8 + 1e-4;\r\n                }\r\n                large = true;\r\n                if (firstCmd) {\r\n                    this._d.push('M', x0, y0);\r\n                }\r\n            }\r\n            var x = round4(cx + rx * mathCos$4(startAngle + dTheta));\r\n            var y = round4(cy + ry * mathSin$4(startAngle + dTheta));\r\n            if (isNaN(x0) || isNaN(y0) || isNaN(rx) || isNaN(ry) || isNaN(psi) || isNaN(degree) || isNaN(x) || isNaN(y)) {\r\n                return '';\r\n            }\r\n            this._d.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);\r\n        };\r\n        SVGPathRebuilder.prototype.rect = function (x, y, w, h) {\r\n            this._add('M', x, y);\r\n            this._add('L', x + w, y);\r\n            this._add('L', x + w, y + h);\r\n            this._add('L', x, y + h);\r\n            this._add('L', x, y);\r\n        };\r\n        SVGPathRebuilder.prototype.closePath = function () {\r\n            if (this._d.length > 0) {\r\n                this._add('Z');\r\n            }\r\n        };\r\n        SVGPathRebuilder.prototype._add = function (cmd, a, b, c, d, e, f, g, h) {\r\n            this._d.push(cmd);\r\n            for (var i = 1; i < arguments.length; i++) {\r\n                var val = arguments[i];\r\n                if (isNaN(val)) {\r\n                    this._invalid = true;\r\n                    return;\r\n                }\r\n                this._d.push(round4(val));\r\n            }\r\n        };\r\n        SVGPathRebuilder.prototype.generateStr = function () {\r\n            this._str = this._invalid ? '' : this._d.join(' ');\r\n            this._d = [];\r\n        };\r\n        SVGPathRebuilder.prototype.getStr = function () {\r\n            return this._str;\r\n        };\r\n        return SVGPathRebuilder;\r\n    }());\r\n    var svgPath = {\r\n        brush: function (el) {\r\n            var style = el.style;\r\n            var svgEl = el.__svgEl;\r\n            if (!svgEl) {\r\n                svgEl = createElement('path');\r\n                el.__svgEl = svgEl;\r\n            }\r\n            if (!el.path) {\r\n                el.createPathProxy();\r\n            }\r\n            var path = el.path;\r\n            if (el.shapeChanged()) {\r\n                path.beginPath();\r\n                el.buildPath(path, el.shape);\r\n                el.pathUpdated();\r\n            }\r\n            var pathVersion = path.getVersion();\r\n            var elExt = el;\r\n            var svgPathBuilder = elExt.__svgPathBuilder;\r\n            if (elExt.__svgPathVersion !== pathVersion || !svgPathBuilder || el.style.strokePercent < 1) {\r\n                if (!svgPathBuilder) {\r\n                    svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder();\r\n                }\r\n                svgPathBuilder.reset();\r\n                path.rebuildPath(svgPathBuilder, el.style.strokePercent);\r\n                svgPathBuilder.generateStr();\r\n                elExt.__svgPathVersion = pathVersion;\r\n            }\r\n            attr(svgEl, 'd', svgPathBuilder.getStr());\r\n            bindStyle(svgEl, style, el);\r\n            setTransform(svgEl, el.transform);\r\n        }\r\n    };\r\n    var svgImage = {\r\n        brush: function (el) {\r\n            var style = el.style;\r\n            var image = style.image;\r\n            if (image instanceof HTMLImageElement) {\r\n                var src = image.src;\r\n                image = src;\r\n            }\r\n            if (!image) {\r\n                return;\r\n            }\r\n            var x = style.x || 0;\r\n            var y = style.y || 0;\r\n            var dw = style.width;\r\n            var dh = style.height;\r\n            var svgEl = el.__svgEl;\r\n            if (!svgEl) {\r\n                svgEl = createElement('image');\r\n                el.__svgEl = svgEl;\r\n            }\r\n            if (image !== el.__imageSrc) {\r\n                attrXLink(svgEl, 'href', image);\r\n                el.__imageSrc = image;\r\n            }\r\n            attr(svgEl, 'width', dw + '');\r\n            attr(svgEl, 'height', dh + '');\r\n            attr(svgEl, 'x', x + '');\r\n            attr(svgEl, 'y', y + '');\r\n            setTransform(svgEl, el.transform);\r\n        }\r\n    };\r\n    var TEXT_ALIGN_TO_ANCHOR = {\r\n        left: 'start',\r\n        right: 'end',\r\n        center: 'middle',\r\n        middle: 'middle'\r\n    };\r\n    function adjustTextY$1(y, lineHeight, textBaseline) {\r\n        if (textBaseline === 'top') {\r\n            y += lineHeight / 2;\r\n        }\r\n        else if (textBaseline === 'bottom') {\r\n            y -= lineHeight / 2;\r\n        }\r\n        return y;\r\n    }\r\n    var svgText = {\r\n        brush: function (el) {\r\n            var style = el.style;\r\n            var text = style.text;\r\n            text != null && (text += '');\r\n            if (!text || isNaN(style.x) || isNaN(style.y)) {\r\n                return;\r\n            }\r\n            var textSvgEl = el.__svgEl;\r\n            if (!textSvgEl) {\r\n                textSvgEl = createElement('text');\r\n                attrXML(textSvgEl, 'xml:space', 'preserve');\r\n                el.__svgEl = textSvgEl;\r\n            }\r\n            var font = style.font || DEFAULT_FONT;\r\n            var textSvgElStyle = textSvgEl.style;\r\n            textSvgElStyle.font = font;\r\n            textSvgEl.textContent = text;\r\n            bindStyle(textSvgEl, style, el);\r\n            setTransform(textSvgEl, el.transform);\r\n            var x = style.x || 0;\r\n            var y = adjustTextY$1(style.y || 0, getLineHeight(font), style.textBaseline);\r\n            var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign]\r\n                || style.textAlign;\r\n            attr(textSvgEl, 'dominant-baseline', 'central');\r\n            attr(textSvgEl, 'text-anchor', textAlign);\r\n            attr(textSvgEl, 'x', x + '');\r\n            attr(textSvgEl, 'y', y + '');\r\n        }\r\n    };\n\n    function diff(oldArr, newArr, equals) {\r\n        if (!equals) {\r\n            equals = function (a, b) {\r\n                return a === b;\r\n            };\r\n        }\r\n        oldArr = oldArr.slice();\r\n        newArr = newArr.slice();\r\n        var newLen = newArr.length;\r\n        var oldLen = oldArr.length;\r\n        var editLength = 1;\r\n        var maxEditLength = newLen + oldLen;\r\n        var bestPath = [{ newPos: -1, components: [] }];\r\n        var oldPos = extractCommon(bestPath[0], newArr, oldArr, 0, equals);\r\n        if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\r\n            var indices = [];\r\n            for (var i = 0; i < newArr.length; i++) {\r\n                indices.push(i);\r\n            }\r\n            return [{\r\n                    indices: indices,\r\n                    count: newArr.length,\r\n                    added: false,\r\n                    removed: false\r\n                }];\r\n        }\r\n        function execEditLength() {\r\n            for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\r\n                var basePath;\r\n                var addPath = bestPath[diagonalPath - 1];\r\n                var removePath = bestPath[diagonalPath + 1];\r\n                var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\r\n                if (addPath) {\r\n                    bestPath[diagonalPath - 1] = undefined;\r\n                }\r\n                var canAdd = addPath && addPath.newPos + 1 < newLen;\r\n                var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;\r\n                if (!canAdd && !canRemove) {\r\n                    bestPath[diagonalPath] = undefined;\r\n                    continue;\r\n                }\r\n                if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {\r\n                    basePath = clonePath(removePath);\r\n                    pushComponent(basePath.components, false, true);\r\n                }\r\n                else {\r\n                    basePath = addPath;\r\n                    basePath.newPos++;\r\n                    pushComponent(basePath.components, true, false);\r\n                }\r\n                oldPos = extractCommon(basePath, newArr, oldArr, diagonalPath, equals);\r\n                if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\r\n                    return buildValues(basePath.components);\r\n                }\r\n                else {\r\n                    bestPath[diagonalPath] = basePath;\r\n                }\r\n            }\r\n            editLength++;\r\n        }\r\n        while (editLength <= maxEditLength) {\r\n            var ret = execEditLength();\r\n            if (ret) {\r\n                return ret;\r\n            }\r\n        }\r\n    }\r\n    function extractCommon(basePath, newArr, oldArr, diagonalPath, equals) {\r\n        var newLen = newArr.length;\r\n        var oldLen = oldArr.length;\r\n        var newPos = basePath.newPos;\r\n        var oldPos = newPos - diagonalPath;\r\n        var commonCount = 0;\r\n        while (newPos + 1 < newLen && oldPos + 1 < oldLen && equals(newArr[newPos + 1], oldArr[oldPos + 1])) {\r\n            newPos++;\r\n            oldPos++;\r\n            commonCount++;\r\n        }\r\n        if (commonCount) {\r\n            basePath.components.push({\r\n                count: commonCount,\r\n                added: false,\r\n                removed: false,\r\n                indices: []\r\n            });\r\n        }\r\n        basePath.newPos = newPos;\r\n        return oldPos;\r\n    }\r\n    function pushComponent(components, added, removed) {\r\n        var last = components[components.length - 1];\r\n        if (last && last.added === added && last.removed === removed) {\r\n            components[components.length - 1] = {\r\n                count: last.count + 1,\r\n                added: added,\r\n                removed: removed,\r\n                indices: []\r\n            };\r\n        }\r\n        else {\r\n            components.push({\r\n                count: 1,\r\n                added: added,\r\n                removed: removed,\r\n                indices: []\r\n            });\r\n        }\r\n    }\r\n    function buildValues(components) {\r\n        var componentPos = 0;\r\n        var componentLen = components.length;\r\n        var newPos = 0;\r\n        var oldPos = 0;\r\n        for (; componentPos < componentLen; componentPos++) {\r\n            var component = components[componentPos];\r\n            if (!component.removed) {\r\n                var indices = [];\r\n                for (var i = newPos; i < newPos + component.count; i++) {\r\n                    indices.push(i);\r\n                }\r\n                component.indices = indices;\r\n                newPos += component.count;\r\n                if (!component.added) {\r\n                    oldPos += component.count;\r\n                }\r\n            }\r\n            else {\r\n                for (var i = oldPos; i < oldPos + component.count; i++) {\r\n                    component.indices.push(i);\r\n                }\r\n                oldPos += component.count;\r\n            }\r\n        }\r\n        return components;\r\n    }\r\n    function clonePath(path) {\r\n        return { newPos: path.newPos, components: path.components.slice(0) };\r\n    }\r\n    function arrayDiff(oldArr, newArr, equal) {\r\n        return diff(oldArr, newArr, equal);\r\n    }\n\n    var MARK_UNUSED = '0';\r\n    var MARK_USED = '1';\r\n    var Definable = (function () {\r\n        function Definable(zrId, svgRoot, tagNames, markLabel, domName) {\r\n            this.nextId = 0;\r\n            this._domName = '_dom';\r\n            this.createElement = createElement;\r\n            this._zrId = zrId;\r\n            this._svgRoot = svgRoot;\r\n            this._tagNames = typeof tagNames === 'string' ? [tagNames] : tagNames;\r\n            this._markLabel = markLabel;\r\n            if (domName) {\r\n                this._domName = domName;\r\n            }\r\n        }\r\n        Definable.prototype.getDefs = function (isForceCreating) {\r\n            var svgRoot = this._svgRoot;\r\n            var defs = this._svgRoot.getElementsByTagName('defs');\r\n            if (defs.length === 0) {\r\n                if (isForceCreating) {\r\n                    var defs_1 = svgRoot.insertBefore(this.createElement('defs'), svgRoot.firstChild);\r\n                    if (!defs_1.contains) {\r\n                        defs_1.contains = function (el) {\r\n                            var children = defs_1.children;\r\n                            if (!children) {\r\n                                return false;\r\n                            }\r\n                            for (var i = children.length - 1; i >= 0; --i) {\r\n                                if (children[i] === el) {\r\n                                    return true;\r\n                                }\r\n                            }\r\n                            return false;\r\n                        };\r\n                    }\r\n                    return defs_1;\r\n                }\r\n                else {\r\n                    return null;\r\n                }\r\n            }\r\n            else {\r\n                return defs[0];\r\n            }\r\n        };\r\n        Definable.prototype.doUpdate = function (target, onUpdate) {\r\n            if (!target) {\r\n                return;\r\n            }\r\n            var defs = this.getDefs(false);\r\n            if (target[this._domName] && defs.contains(target[this._domName])) {\r\n                if (typeof onUpdate === 'function') {\r\n                    onUpdate(target);\r\n                }\r\n            }\r\n            else {\r\n                var dom = this.add(target);\r\n                if (dom) {\r\n                    target[this._domName] = dom;\r\n                }\r\n            }\r\n        };\r\n        Definable.prototype.add = function (target) {\r\n            return null;\r\n        };\r\n        Definable.prototype.addDom = function (dom) {\r\n            var defs = this.getDefs(true);\r\n            if (dom.parentNode !== defs) {\r\n                defs.appendChild(dom);\r\n            }\r\n        };\r\n        Definable.prototype.removeDom = function (target) {\r\n            var defs = this.getDefs(false);\r\n            if (defs && target[this._domName]) {\r\n                defs.removeChild(target[this._domName]);\r\n                target[this._domName] = null;\r\n            }\r\n        };\r\n        Definable.prototype.getDoms = function () {\r\n            var defs = this.getDefs(false);\r\n            if (!defs) {\r\n                return [];\r\n            }\r\n            var doms = [];\r\n            each(this._tagNames, function (tagName) {\r\n                var tags = defs.getElementsByTagName(tagName);\r\n                for (var i = 0; i < tags.length; i++) {\r\n                    doms.push(tags[i]);\r\n                }\r\n            });\r\n            return doms;\r\n        };\r\n        Definable.prototype.markAllUnused = function () {\r\n            var doms = this.getDoms();\r\n            var that = this;\r\n            each(doms, function (dom) {\r\n                dom[that._markLabel] = MARK_UNUSED;\r\n            });\r\n        };\r\n        Definable.prototype.markDomUsed = function (dom) {\r\n            dom && (dom[this._markLabel] = MARK_USED);\r\n        };\r\n        Definable.prototype.markDomUnused = function (dom) {\r\n            dom && (dom[this._markLabel] = MARK_UNUSED);\r\n        };\r\n        Definable.prototype.isDomUnused = function (dom) {\r\n            return dom && dom[this._markLabel] !== MARK_USED;\r\n        };\r\n        Definable.prototype.removeUnused = function () {\r\n            var _this = this;\r\n            var defs = this.getDefs(false);\r\n            if (!defs) {\r\n                return;\r\n            }\r\n            var doms = this.getDoms();\r\n            each(doms, function (dom) {\r\n                if (_this.isDomUnused(dom)) {\r\n                    defs.removeChild(dom);\r\n                }\r\n            });\r\n        };\r\n        Definable.prototype.getSvgProxy = function (displayable) {\r\n            if (displayable instanceof Path) {\r\n                return svgPath;\r\n            }\r\n            else if (displayable instanceof ZRImage) {\r\n                return svgImage;\r\n            }\r\n            else if (displayable instanceof TSpan) {\r\n                return svgText;\r\n            }\r\n            else {\r\n                return svgPath;\r\n            }\r\n        };\r\n        Definable.prototype.getSvgElement = function (displayable) {\r\n            return displayable.__svgEl;\r\n        };\r\n        return Definable;\r\n    }());\n\n    function isLinearGradient(value) {\r\n        return value.type === 'linear';\r\n    }\r\n    function isRadialGradient(value) {\r\n        return value.type === 'radial';\r\n    }\r\n    function isGradient(value) {\r\n        return value && (value.type === 'linear'\r\n            || value.type === 'radial');\r\n    }\r\n    var GradientManager = (function (_super) {\r\n        __extends(GradientManager, _super);\r\n        function GradientManager(zrId, svgRoot) {\r\n            return _super.call(this, zrId, svgRoot, ['linearGradient', 'radialGradient'], '__gradient_in_use__') || this;\r\n        }\r\n        GradientManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\r\n            if (displayable && displayable.style) {\r\n                var that_1 = this;\r\n                each(['fill', 'stroke'], function (fillOrStroke) {\r\n                    var value = displayable.style[fillOrStroke];\r\n                    if (isGradient(value)) {\r\n                        var gradient = value;\r\n                        var defs = that_1.getDefs(true);\r\n                        var dom = void 0;\r\n                        if (gradient.__dom) {\r\n                            dom = gradient.__dom;\r\n                            if (!defs.contains(gradient.__dom)) {\r\n                                that_1.addDom(dom);\r\n                            }\r\n                        }\r\n                        else {\r\n                            dom = that_1.add(gradient);\r\n                        }\r\n                        that_1.markUsed(displayable);\r\n                        var id = dom.getAttribute('id');\r\n                        svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        GradientManager.prototype.add = function (gradient) {\r\n            var dom;\r\n            if (isLinearGradient(gradient)) {\r\n                dom = this.createElement('linearGradient');\r\n            }\r\n            else if (isRadialGradient(gradient)) {\r\n                dom = this.createElement('radialGradient');\r\n            }\r\n            else {\r\n                logError('Illegal gradient type.');\r\n                return null;\r\n            }\r\n            gradient.id = gradient.id || this.nextId++;\r\n            dom.setAttribute('id', 'zr' + this._zrId\r\n                + '-gradient-' + gradient.id);\r\n            this.updateDom(gradient, dom);\r\n            this.addDom(dom);\r\n            return dom;\r\n        };\r\n        GradientManager.prototype.update = function (gradient) {\r\n            if (!isGradient(gradient)) {\r\n                return;\r\n            }\r\n            var that = this;\r\n            this.doUpdate(gradient, function () {\r\n                var dom = gradient.__dom;\r\n                if (!dom) {\r\n                    return;\r\n                }\r\n                var tagName = dom.tagName;\r\n                var type = gradient.type;\r\n                if (type === 'linear' && tagName === 'linearGradient'\r\n                    || type === 'radial' && tagName === 'radialGradient') {\r\n                    that.updateDom(gradient, gradient.__dom);\r\n                }\r\n                else {\r\n                    that.removeDom(gradient);\r\n                    that.add(gradient);\r\n                }\r\n            });\r\n        };\r\n        GradientManager.prototype.updateDom = function (gradient, dom) {\r\n            if (isLinearGradient(gradient)) {\r\n                dom.setAttribute('x1', gradient.x + '');\r\n                dom.setAttribute('y1', gradient.y + '');\r\n                dom.setAttribute('x2', gradient.x2 + '');\r\n                dom.setAttribute('y2', gradient.y2 + '');\r\n            }\r\n            else if (isRadialGradient(gradient)) {\r\n                dom.setAttribute('cx', gradient.x + '');\r\n                dom.setAttribute('cy', gradient.y + '');\r\n                dom.setAttribute('r', gradient.r + '');\r\n            }\r\n            else {\r\n                logError('Illegal gradient type.');\r\n                return;\r\n            }\r\n            if (gradient.global) {\r\n                dom.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n            }\r\n            else {\r\n                dom.setAttribute('gradientUnits', 'objectBoundingBox');\r\n            }\r\n            dom.innerHTML = '';\r\n            var colors = gradient.colorStops;\r\n            for (var i = 0, len = colors.length; i < len; ++i) {\r\n                var stop_1 = this.createElement('stop');\r\n                stop_1.setAttribute('offset', colors[i].offset * 100 + '%');\r\n                var color$1 = colors[i].color;\r\n                if (color$1.indexOf('rgba') > -1) {\r\n                    var opacity = parse(color$1)[3];\r\n                    var hex = toHex(color$1);\r\n                    stop_1.setAttribute('stop-color', '#' + hex);\r\n                    stop_1.setAttribute('stop-opacity', opacity + '');\r\n                }\r\n                else {\r\n                    stop_1.setAttribute('stop-color', colors[i].color);\r\n                }\r\n                dom.appendChild(stop_1);\r\n            }\r\n            gradient.__dom = dom;\r\n        };\r\n        GradientManager.prototype.markUsed = function (displayable) {\r\n            if (displayable.style) {\r\n                var gradient = displayable.style.fill;\r\n                if (gradient && gradient.__dom) {\r\n                    _super.prototype.markDomUsed.call(this, gradient.__dom);\r\n                }\r\n                gradient = displayable.style.stroke;\r\n                if (gradient && gradient.__dom) {\r\n                    _super.prototype.markDomUsed.call(this, gradient.__dom);\r\n                }\r\n            }\r\n        };\r\n        return GradientManager;\r\n    }(Definable));\n\n    function isPattern(value) {\r\n        return value && (!!value.image || !!value.svgElement);\r\n    }\r\n    var patternDomMap = new WeakMap();\r\n    var PatternManager = (function (_super) {\r\n        __extends(PatternManager, _super);\r\n        function PatternManager(zrId, svgRoot) {\r\n            return _super.call(this, zrId, svgRoot, ['pattern'], '__pattern_in_use__') || this;\r\n        }\r\n        PatternManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\r\n            if (displayable && displayable.style) {\r\n                var that_1 = this;\r\n                each(['fill', 'stroke'], function (fillOrStroke) {\r\n                    var pattern = displayable.style[fillOrStroke];\r\n                    if (isPattern(pattern)) {\r\n                        var defs = that_1.getDefs(true);\r\n                        var dom = patternDomMap.get(pattern);\r\n                        if (dom) {\r\n                            if (!defs.contains(dom)) {\r\n                                that_1.addDom(dom);\r\n                            }\r\n                        }\r\n                        else {\r\n                            dom = that_1.add(pattern);\r\n                        }\r\n                        that_1.markUsed(displayable);\r\n                        var id = dom.getAttribute('id');\r\n                        svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        PatternManager.prototype.add = function (pattern) {\r\n            if (!isPattern(pattern)) {\r\n                return;\r\n            }\r\n            var dom = this.createElement('pattern');\r\n            pattern.id = pattern.id == null ? this.nextId++ : pattern.id;\r\n            dom.setAttribute('id', 'zr' + this._zrId\r\n                + '-pattern-' + pattern.id);\r\n            dom.setAttribute('x', '0');\r\n            dom.setAttribute('y', '0');\r\n            dom.setAttribute('patternUnits', 'userSpaceOnUse');\r\n            this.updateDom(pattern, dom);\r\n            this.addDom(dom);\r\n            return dom;\r\n        };\r\n        PatternManager.prototype.update = function (pattern) {\r\n            if (!isPattern(pattern)) {\r\n                return;\r\n            }\r\n            var that = this;\r\n            this.doUpdate(pattern, function () {\r\n                var dom = patternDomMap.get(pattern);\r\n                that.updateDom(pattern, dom);\r\n            });\r\n        };\r\n        PatternManager.prototype.updateDom = function (pattern, patternDom) {\r\n            var svgElement = pattern.svgElement;\r\n            if (svgElement instanceof SVGElement) {\r\n                if (svgElement.parentNode !== patternDom) {\r\n                    patternDom.innerHTML = '';\r\n                    patternDom.appendChild(svgElement);\r\n                    patternDom.setAttribute('width', pattern.svgWidth + '');\r\n                    patternDom.setAttribute('height', pattern.svgHeight + '');\r\n                }\r\n            }\r\n            else {\r\n                var img = void 0;\r\n                var prevImage = patternDom.getElementsByTagName('image');\r\n                if (prevImage.length) {\r\n                    if (pattern.image) {\r\n                        img = prevImage[0];\r\n                    }\r\n                    else {\r\n                        patternDom.removeChild(prevImage[0]);\r\n                        return;\r\n                    }\r\n                }\r\n                else if (pattern.image) {\r\n                    img = this.createElement('image');\r\n                }\r\n                if (img) {\r\n                    var imageSrc = void 0;\r\n                    if (typeof pattern.image === 'string') {\r\n                        imageSrc = pattern.image;\r\n                    }\r\n                    else if (pattern.image instanceof HTMLImageElement) {\r\n                        imageSrc = pattern.image.src;\r\n                    }\r\n                    else if (pattern.image instanceof HTMLCanvasElement) {\r\n                        imageSrc = pattern.image.toDataURL();\r\n                    }\r\n                    if (imageSrc) {\r\n                        img.setAttribute('href', imageSrc);\r\n                        img.setAttribute('x', '0');\r\n                        img.setAttribute('y', '0');\r\n                        var hostEl = {\r\n                            dirty: function () { }\r\n                        };\r\n                        var createdImage = createOrUpdateImage(imageSrc, img, hostEl, function (img) {\r\n                            patternDom.setAttribute('width', img.width + '');\r\n                            patternDom.setAttribute('height', img.height + '');\r\n                        });\r\n                        if (createdImage && createdImage.width && createdImage.height) {\r\n                            patternDom.setAttribute('width', createdImage.width + '');\r\n                            patternDom.setAttribute('height', createdImage.height + '');\r\n                        }\r\n                        patternDom.appendChild(img);\r\n                    }\r\n                }\r\n            }\r\n            var x = pattern.x || 0;\r\n            var y = pattern.y || 0;\r\n            var rotation = (pattern.rotation || 0) / Math.PI * 180;\r\n            var scaleX = pattern.scaleX || 1;\r\n            var scaleY = pattern.scaleY || 1;\r\n            var transform = \"translate(\" + x + \", \" + y + \") rotate(\" + rotation + \") scale(\" + scaleX + \", \" + scaleY + \")\";\r\n            patternDom.setAttribute('patternTransform', transform);\r\n            patternDomMap.set(pattern, patternDom);\r\n        };\r\n        PatternManager.prototype.markUsed = function (displayable) {\r\n            if (displayable.style) {\r\n                if (isPattern(displayable.style.fill)) {\r\n                    _super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.fill));\r\n                }\r\n                if (isPattern(displayable.style.stroke)) {\r\n                    _super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.stroke));\r\n                }\r\n            }\r\n        };\r\n        return PatternManager;\r\n    }(Definable));\n\n    function generateClipPathsKey(clipPaths) {\r\n        var key = [];\r\n        if (clipPaths) {\r\n            for (var i = 0; i < clipPaths.length; i++) {\r\n                var clipPath = clipPaths[i];\r\n                key.push(clipPath.id);\r\n            }\r\n        }\r\n        return key.join(',');\r\n    }\r\n    function hasClipPath(displayable) {\r\n        var clipPaths = displayable.__clipPaths;\r\n        return clipPaths && clipPaths.length > 0;\r\n    }\r\n    var ClippathManager = (function (_super) {\r\n        __extends(ClippathManager, _super);\r\n        function ClippathManager(zrId, svgRoot) {\r\n            var _this = _super.call(this, zrId, svgRoot, 'clipPath', '__clippath_in_use__') || this;\r\n            _this._refGroups = {};\r\n            _this._keyDuplicateCount = {};\r\n            return _this;\r\n        }\r\n        ClippathManager.prototype.markAllUnused = function () {\r\n            _super.prototype.markAllUnused.call(this);\r\n            for (var key in this._refGroups) {\r\n                this.markDomUnused(this._refGroups[key]);\r\n            }\r\n            this._keyDuplicateCount = {};\r\n        };\r\n        ClippathManager.prototype._getClipPathGroup = function (displayable, prevDisplayable) {\r\n            if (!hasClipPath(displayable)) {\r\n                return;\r\n            }\r\n            var clipPaths = displayable.__clipPaths;\r\n            var keyDuplicateCount = this._keyDuplicateCount;\r\n            var clipPathKey = generateClipPathsKey(clipPaths);\r\n            if (isClipPathChanged(clipPaths, prevDisplayable && prevDisplayable.__clipPaths)) {\r\n                keyDuplicateCount[clipPathKey] = keyDuplicateCount[clipPathKey] || 0;\r\n                keyDuplicateCount[clipPathKey] && (clipPathKey += '-' + keyDuplicateCount[clipPathKey]);\r\n                keyDuplicateCount[clipPathKey]++;\r\n            }\r\n            return this._refGroups[clipPathKey]\r\n                || (this._refGroups[clipPathKey] = this.createElement('g'));\r\n        };\r\n        ClippathManager.prototype.update = function (displayable, prevDisplayable) {\r\n            var clipGroup = this._getClipPathGroup(displayable, prevDisplayable);\r\n            if (clipGroup) {\r\n                this.markDomUsed(clipGroup);\r\n                this.updateDom(clipGroup, displayable.__clipPaths);\r\n            }\r\n            return clipGroup;\r\n        };\r\n        ClippathManager.prototype.updateDom = function (parentEl, clipPaths) {\r\n            if (clipPaths && clipPaths.length > 0) {\r\n                var defs = this.getDefs(true);\r\n                var clipPath = clipPaths[0];\r\n                var clipPathEl = void 0;\r\n                var id = void 0;\r\n                if (clipPath._dom) {\r\n                    id = clipPath._dom.getAttribute('id');\r\n                    clipPathEl = clipPath._dom;\r\n                    if (!defs.contains(clipPathEl)) {\r\n                        defs.appendChild(clipPathEl);\r\n                    }\r\n                }\r\n                else {\r\n                    id = 'zr' + this._zrId + '-clip-' + this.nextId;\r\n                    ++this.nextId;\r\n                    clipPathEl = this.createElement('clipPath');\r\n                    clipPathEl.setAttribute('id', id);\r\n                    defs.appendChild(clipPathEl);\r\n                    clipPath._dom = clipPathEl;\r\n                }\r\n                var svgProxy = this.getSvgProxy(clipPath);\r\n                svgProxy.brush(clipPath);\r\n                var pathEl = this.getSvgElement(clipPath);\r\n                clipPathEl.innerHTML = '';\r\n                clipPathEl.appendChild(pathEl);\r\n                parentEl.setAttribute('clip-path', 'url(#' + id + ')');\r\n                if (clipPaths.length > 1) {\r\n                    this.updateDom(clipPathEl, clipPaths.slice(1));\r\n                }\r\n            }\r\n            else {\r\n                if (parentEl) {\r\n                    parentEl.setAttribute('clip-path', 'none');\r\n                }\r\n            }\r\n        };\r\n        ClippathManager.prototype.markUsed = function (displayable) {\r\n            var _this = this;\r\n            if (displayable.__clipPaths) {\r\n                each(displayable.__clipPaths, function (clipPath) {\r\n                    if (clipPath._dom) {\r\n                        _super.prototype.markDomUsed.call(_this, clipPath._dom);\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        ClippathManager.prototype.removeUnused = function () {\r\n            _super.prototype.removeUnused.call(this);\r\n            var newRefGroupsMap = {};\r\n            for (var key in this._refGroups) {\r\n                var group = this._refGroups[key];\r\n                if (!this.isDomUnused(group)) {\r\n                    newRefGroupsMap[key] = group;\r\n                }\r\n                else if (group.parentNode) {\r\n                    group.parentNode.removeChild(group);\r\n                }\r\n            }\r\n            this._refGroups = newRefGroupsMap;\r\n        };\r\n        return ClippathManager;\r\n    }(Definable));\n\n    var ShadowManager = (function (_super) {\r\n        __extends(ShadowManager, _super);\r\n        function ShadowManager(zrId, svgRoot) {\r\n            var _this = _super.call(this, zrId, svgRoot, ['filter'], '__filter_in_use__', '_shadowDom') || this;\r\n            _this._shadowDomMap = {};\r\n            _this._shadowDomPool = [];\r\n            return _this;\r\n        }\r\n        ShadowManager.prototype._getFromPool = function () {\r\n            var shadowDom = this._shadowDomPool.pop();\r\n            if (!shadowDom) {\r\n                shadowDom = this.createElement('filter');\r\n                shadowDom.setAttribute('id', 'zr' + this._zrId + '-shadow-' + this.nextId++);\r\n                var domChild = this.createElement('feDropShadow');\r\n                shadowDom.appendChild(domChild);\r\n                this.addDom(shadowDom);\r\n            }\r\n            return shadowDom;\r\n        };\r\n        ShadowManager.prototype.update = function (svgElement, displayable) {\r\n            var style = displayable.style;\r\n            if (hasShadow(style)) {\r\n                var shadowKey = getShadowKey(displayable);\r\n                var shadowDom = displayable._shadowDom = this._shadowDomMap[shadowKey];\r\n                if (!shadowDom) {\r\n                    shadowDom = this._getFromPool();\r\n                    this._shadowDomMap[shadowKey] = shadowDom;\r\n                }\r\n                this.updateDom(svgElement, displayable, shadowDom);\r\n            }\r\n            else {\r\n                this.remove(svgElement, displayable);\r\n            }\r\n        };\r\n        ShadowManager.prototype.remove = function (svgElement, displayable) {\r\n            if (displayable._shadowDom != null) {\r\n                displayable._shadowDom = null;\r\n                svgElement.style.filter = '';\r\n            }\r\n        };\r\n        ShadowManager.prototype.updateDom = function (svgElement, displayable, shadowDom) {\r\n            var domChild = shadowDom.children[0];\r\n            var style = displayable.style;\r\n            var globalScale = displayable.getGlobalScale();\r\n            var scaleX = globalScale[0];\r\n            var scaleY = globalScale[1];\r\n            if (!scaleX || !scaleY) {\r\n                return;\r\n            }\r\n            var offsetX = style.shadowOffsetX || 0;\r\n            var offsetY = style.shadowOffsetY || 0;\r\n            var blur = style.shadowBlur;\r\n            var color = style.shadowColor;\r\n            domChild.setAttribute('dx', offsetX / scaleX + '');\r\n            domChild.setAttribute('dy', offsetY / scaleY + '');\r\n            domChild.setAttribute('flood-color', color);\r\n            var stdDx = blur / 2 / scaleX;\r\n            var stdDy = blur / 2 / scaleY;\r\n            var stdDeviation = stdDx + ' ' + stdDy;\r\n            domChild.setAttribute('stdDeviation', stdDeviation);\r\n            shadowDom.setAttribute('x', '-100%');\r\n            shadowDom.setAttribute('y', '-100%');\r\n            shadowDom.setAttribute('width', '300%');\r\n            shadowDom.setAttribute('height', '300%');\r\n            displayable._shadowDom = shadowDom;\r\n            var id = shadowDom.getAttribute('id');\r\n            svgElement.style.filter = 'url(#' + id + ')';\r\n        };\r\n        ShadowManager.prototype.removeUnused = function () {\r\n            var defs = this.getDefs(false);\r\n            if (!defs) {\r\n                return;\r\n            }\r\n            var shadowDomsPool = this._shadowDomPool;\r\n            for (var key in this._shadowDomMap) {\r\n                var dom = this._shadowDomMap[key];\r\n                shadowDomsPool.push(dom);\r\n            }\r\n            this._shadowDomMap = {};\r\n        };\r\n        return ShadowManager;\r\n    }(Definable));\r\n    function hasShadow(style) {\r\n        return style\r\n            && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);\r\n    }\r\n    function getShadowKey(displayable) {\r\n        var style = displayable.style;\r\n        var globalScale = displayable.getGlobalScale();\r\n        return [\r\n            style.shadowColor,\r\n            (style.shadowBlur || 0).toFixed(2),\r\n            (style.shadowOffsetX || 0).toFixed(2),\r\n            (style.shadowOffsetY || 0).toFixed(2),\r\n            globalScale[0],\r\n            globalScale[1]\r\n        ].join(',');\r\n    }\n\n    function parseInt10$1(val) {\r\n        return parseInt(val, 10);\r\n    }\r\n    function getSvgProxy(el) {\r\n        if (el instanceof Path) {\r\n            return svgPath;\r\n        }\r\n        else if (el instanceof ZRImage) {\r\n            return svgImage;\r\n        }\r\n        else if (el instanceof TSpan) {\r\n            return svgText;\r\n        }\r\n        else {\r\n            return svgPath;\r\n        }\r\n    }\r\n    function checkParentAvailable(parent, child) {\r\n        return child && parent && child.parentNode !== parent;\r\n    }\r\n    function insertAfter(parent, child, prevSibling) {\r\n        if (checkParentAvailable(parent, child) && prevSibling) {\r\n            var nextSibling = prevSibling.nextSibling;\r\n            nextSibling ? parent.insertBefore(child, nextSibling)\r\n                : parent.appendChild(child);\r\n        }\r\n    }\r\n    function prepend(parent, child) {\r\n        if (checkParentAvailable(parent, child)) {\r\n            var firstChild = parent.firstChild;\r\n            firstChild ? parent.insertBefore(child, firstChild)\r\n                : parent.appendChild(child);\r\n        }\r\n    }\r\n    function remove(parent, child) {\r\n        if (child && parent && child.parentNode === parent) {\r\n            parent.removeChild(child);\r\n        }\r\n    }\r\n    function removeFromMyParent(child) {\r\n        if (child && child.parentNode) {\r\n            child.parentNode.removeChild(child);\r\n        }\r\n    }\r\n    function getSvgElement(displayable) {\r\n        return displayable.__svgEl;\r\n    }\r\n    var SVGPainter = (function () {\r\n        function SVGPainter(root, storage, opts, zrId) {\r\n            this.type = 'svg';\r\n            this.refreshHover = createMethodNotSupport('refreshHover');\r\n            this.pathToImage = createMethodNotSupport('pathToImage');\r\n            this.configLayer = createMethodNotSupport('configLayer');\r\n            this.root = root;\r\n            this.storage = storage;\r\n            this._opts = opts = extend({}, opts || {});\r\n            var svgDom = createElement('svg');\r\n            svgDom.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n            svgDom.setAttribute('version', '1.1');\r\n            svgDom.setAttribute('baseProfile', 'full');\r\n            svgDom.style.cssText = 'user-select:none;position:absolute;left:0;top:0;';\r\n            var bgRoot = createElement('g');\r\n            svgDom.appendChild(bgRoot);\r\n            var svgRoot = createElement('g');\r\n            svgDom.appendChild(svgRoot);\r\n            this._gradientManager = new GradientManager(zrId, svgRoot);\r\n            this._patternManager = new PatternManager(zrId, svgRoot);\r\n            this._clipPathManager = new ClippathManager(zrId, svgRoot);\r\n            this._shadowManager = new ShadowManager(zrId, svgRoot);\r\n            var viewport = document.createElement('div');\r\n            viewport.style.cssText = 'overflow:hidden;position:relative';\r\n            this._svgDom = svgDom;\r\n            this._svgRoot = svgRoot;\r\n            this._backgroundRoot = bgRoot;\r\n            this._viewport = viewport;\r\n            root.appendChild(viewport);\r\n            viewport.appendChild(svgDom);\r\n            this.resize(opts.width, opts.height);\r\n            this._visibleList = [];\r\n        }\r\n        SVGPainter.prototype.getType = function () {\r\n            return 'svg';\r\n        };\r\n        SVGPainter.prototype.getViewportRoot = function () {\r\n            return this._viewport;\r\n        };\r\n        SVGPainter.prototype.getSvgDom = function () {\r\n            return this._svgDom;\r\n        };\r\n        SVGPainter.prototype.getSvgRoot = function () {\r\n            return this._svgRoot;\r\n        };\r\n        SVGPainter.prototype.getViewportRootOffset = function () {\r\n            var viewportRoot = this.getViewportRoot();\r\n            if (viewportRoot) {\r\n                return {\r\n                    offsetLeft: viewportRoot.offsetLeft || 0,\r\n                    offsetTop: viewportRoot.offsetTop || 0\r\n                };\r\n            }\r\n        };\r\n        SVGPainter.prototype.refresh = function () {\r\n            var list = this.storage.getDisplayList(true);\r\n            this._paintList(list);\r\n        };\r\n        SVGPainter.prototype.setBackgroundColor = function (backgroundColor) {\r\n            if (this._backgroundRoot && this._backgroundNode) {\r\n                this._backgroundRoot.removeChild(this._backgroundNode);\r\n            }\r\n            var bgNode = createElement('rect');\r\n            bgNode.setAttribute('width', this.getWidth());\r\n            bgNode.setAttribute('height', this.getHeight());\r\n            bgNode.setAttribute('x', 0);\r\n            bgNode.setAttribute('y', 0);\r\n            bgNode.setAttribute('id', 0);\r\n            bgNode.style.fill = backgroundColor;\r\n            this._backgroundRoot.appendChild(bgNode);\r\n            this._backgroundNode = bgNode;\r\n        };\r\n        SVGPainter.prototype.createSVGElement = function (tag) {\r\n            return createElement(tag);\r\n        };\r\n        SVGPainter.prototype.paintOne = function (el) {\r\n            var svgProxy = getSvgProxy(el);\r\n            svgProxy && svgProxy.brush(el);\r\n            return getSvgElement(el);\r\n        };\r\n        SVGPainter.prototype._paintList = function (list) {\r\n            var gradientManager = this._gradientManager;\r\n            var patternManager = this._patternManager;\r\n            var clipPathManager = this._clipPathManager;\r\n            var shadowManager = this._shadowManager;\r\n            gradientManager.markAllUnused();\r\n            patternManager.markAllUnused();\r\n            clipPathManager.markAllUnused();\r\n            shadowManager.markAllUnused();\r\n            var svgRoot = this._svgRoot;\r\n            var visibleList = this._visibleList;\r\n            var listLen = list.length;\r\n            var newVisibleList = [];\r\n            for (var i = 0; i < listLen; i++) {\r\n                var displayable = list[i];\r\n                var svgProxy = getSvgProxy(displayable);\r\n                var svgElement = getSvgElement(displayable);\r\n                if (!displayable.invisible) {\r\n                    if (displayable.__dirty || !svgElement) {\r\n                        svgProxy && svgProxy.brush(displayable);\r\n                        svgElement = getSvgElement(displayable);\r\n                        if (svgElement && displayable.style) {\r\n                            gradientManager.update(displayable.style.fill);\r\n                            gradientManager.update(displayable.style.stroke);\r\n                            patternManager.update(displayable.style.fill);\r\n                            patternManager.update(displayable.style.stroke);\r\n                            shadowManager.update(svgElement, displayable);\r\n                        }\r\n                        displayable.__dirty = 0;\r\n                    }\r\n                    if (svgElement) {\r\n                        newVisibleList.push(displayable);\r\n                    }\r\n                }\r\n            }\r\n            var diff = arrayDiff(visibleList, newVisibleList);\r\n            var prevSvgElement;\r\n            var topPrevSvgElement;\r\n            for (var i = 0; i < diff.length; i++) {\r\n                var item = diff[i];\r\n                if (item.removed) {\r\n                    for (var k = 0; k < item.count; k++) {\r\n                        var displayable = visibleList[item.indices[k]];\r\n                        var svgElement = getSvgElement(displayable);\r\n                        hasClipPath(displayable) ? removeFromMyParent(svgElement)\r\n                            : remove(svgRoot, svgElement);\r\n                    }\r\n                }\r\n            }\r\n            var prevDisplayable;\r\n            var currentClipGroup;\r\n            for (var i = 0; i < diff.length; i++) {\r\n                var item = diff[i];\r\n                var isAdd = item.added;\r\n                if (item.removed) {\r\n                    continue;\r\n                }\r\n                for (var k = 0; k < item.count; k++) {\r\n                    var displayable = newVisibleList[item.indices[k]];\r\n                    var clipGroup = clipPathManager.update(displayable, prevDisplayable);\r\n                    if (clipGroup !== currentClipGroup) {\r\n                        prevSvgElement = topPrevSvgElement;\r\n                        if (clipGroup) {\r\n                            prevSvgElement ? insertAfter(svgRoot, clipGroup, prevSvgElement)\r\n                                : prepend(svgRoot, clipGroup);\r\n                            topPrevSvgElement = clipGroup;\r\n                            prevSvgElement = null;\r\n                        }\r\n                        currentClipGroup = clipGroup;\r\n                    }\r\n                    var svgElement = getSvgElement(displayable);\r\n                    prevSvgElement\r\n                        ? insertAfter(currentClipGroup || svgRoot, svgElement, prevSvgElement)\r\n                        : prepend(currentClipGroup || svgRoot, svgElement);\r\n                    prevSvgElement = svgElement || prevSvgElement;\r\n                    if (!currentClipGroup) {\r\n                        topPrevSvgElement = prevSvgElement;\r\n                    }\r\n                    gradientManager.markUsed(displayable);\r\n                    gradientManager.addWithoutUpdate(svgElement, displayable);\r\n                    patternManager.markUsed(displayable);\r\n                    patternManager.addWithoutUpdate(svgElement, displayable);\r\n                    clipPathManager.markUsed(displayable);\r\n                    prevDisplayable = displayable;\r\n                }\r\n            }\r\n            gradientManager.removeUnused();\r\n            patternManager.removeUnused();\r\n            clipPathManager.removeUnused();\r\n            shadowManager.removeUnused();\r\n            this._visibleList = newVisibleList;\r\n        };\r\n        SVGPainter.prototype._getDefs = function (isForceCreating) {\r\n            var svgRoot = this._svgDom;\r\n            var defs = svgRoot.getElementsByTagName('defs');\r\n            if (defs.length === 0) {\r\n                if (isForceCreating) {\r\n                    var defs_1 = svgRoot.insertBefore(createElement('defs'), svgRoot.firstChild);\r\n                    if (!defs_1.contains) {\r\n                        defs_1.contains = function (el) {\r\n                            var children = defs_1.children;\r\n                            if (!children) {\r\n                                return false;\r\n                            }\r\n                            for (var i = children.length - 1; i >= 0; --i) {\r\n                                if (children[i] === el) {\r\n                                    return true;\r\n                                }\r\n                            }\r\n                            return false;\r\n                        };\r\n                    }\r\n                    return defs_1;\r\n                }\r\n                else {\r\n                    return null;\r\n                }\r\n            }\r\n            else {\r\n                return defs[0];\r\n            }\r\n        };\r\n        SVGPainter.prototype.resize = function (width, height) {\r\n            var viewport = this._viewport;\r\n            viewport.style.display = 'none';\r\n            var opts = this._opts;\r\n            width != null && (opts.width = width);\r\n            height != null && (opts.height = height);\r\n            width = this._getSize(0);\r\n            height = this._getSize(1);\r\n            viewport.style.display = '';\r\n            if (this._width !== width || this._height !== height) {\r\n                this._width = width;\r\n                this._height = height;\r\n                var viewportStyle = viewport.style;\r\n                viewportStyle.width = width + 'px';\r\n                viewportStyle.height = height + 'px';\r\n                var svgRoot = this._svgDom;\r\n                svgRoot.setAttribute('width', width + '');\r\n                svgRoot.setAttribute('height', height + '');\r\n            }\r\n            if (this._backgroundNode) {\r\n                this._backgroundNode.setAttribute('width', width);\r\n                this._backgroundNode.setAttribute('height', height);\r\n            }\r\n        };\r\n        SVGPainter.prototype.getWidth = function () {\r\n            return this._width;\r\n        };\r\n        SVGPainter.prototype.getHeight = function () {\r\n            return this._height;\r\n        };\r\n        SVGPainter.prototype._getSize = function (whIdx) {\r\n            var opts = this._opts;\r\n            var wh = ['width', 'height'][whIdx];\r\n            var cwh = ['clientWidth', 'clientHeight'][whIdx];\r\n            var plt = ['paddingLeft', 'paddingTop'][whIdx];\r\n            var prb = ['paddingRight', 'paddingBottom'][whIdx];\r\n            if (opts[wh] != null && opts[wh] !== 'auto') {\r\n                return parseFloat(opts[wh]);\r\n            }\r\n            var root = this.root;\r\n            var stl = document.defaultView.getComputedStyle(root);\r\n            return ((root[cwh] || parseInt10$1(stl[wh]) || parseInt10$1(root.style[wh]))\r\n                - (parseInt10$1(stl[plt]) || 0)\r\n                - (parseInt10$1(stl[prb]) || 0)) | 0;\r\n        };\r\n        SVGPainter.prototype.dispose = function () {\r\n            this.root.innerHTML = '';\r\n            this._svgRoot\r\n                = this._backgroundRoot\r\n                    = this._svgDom\r\n                        = this._backgroundNode\r\n                            = this._viewport\r\n                                = this.storage\r\n                                    = null;\r\n        };\r\n        SVGPainter.prototype.clear = function () {\r\n            var viewportNode = this._viewport;\r\n            if (viewportNode && viewportNode.parentNode) {\r\n                viewportNode.parentNode.removeChild(viewportNode);\r\n            }\r\n        };\r\n        SVGPainter.prototype.toDataURL = function () {\r\n            this.refresh();\r\n            var html = encodeURIComponent(this._svgDom.outerHTML.replace(/></g, '>\\n\\r<'));\r\n            return 'data:image/svg+xml;charset=UTF-8,' + html;\r\n        };\r\n        return SVGPainter;\r\n    }());\r\n    function createMethodNotSupport(method) {\r\n        return function () {\r\n            logError('In SVG mode painter not support method \"' + method + '\"');\r\n        };\r\n    }\n\n    registerPainter('svg', SVGPainter);\n\n    exports.Axis = Axis;\n    exports.List = List;\n    exports.Model = Model;\n    exports.PRIORITY = PRIORITY;\n    exports.color = color;\n    exports.connect = connect;\n    exports.dataTool = dataTool;\n    exports.dependencies = dependencies;\n    exports.disConnect = disConnect;\n    exports.disconnect = disconnect;\n    exports.dispose = dispose$1;\n    exports.env = env;\n    exports.extendChartView = extendChartView;\n    exports.extendComponentModel = extendComponentModel;\n    exports.extendComponentView = extendComponentView;\n    exports.extendSeriesModel = extendSeriesModel;\n    exports.format = format$1;\n    exports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\n    exports.getInstanceByDom = getInstanceByDom;\n    exports.getInstanceById = getInstanceById;\n    exports.getMap = getMap;\n    exports.graphic = graphic$1;\n    exports.helper = helper;\n    exports.init = init$1;\n    exports.innerDrawElementOnCanvas = brushSingle;\n    exports.matrix = matrix;\n    exports.number = number;\n    exports.parseGeoJSON = parseGeoJSON;\n    exports.parseGeoJson = parseGeoJson;\n    exports.registerAction = registerAction;\n    exports.registerCoordinateSystem = registerCoordinateSystem;\n    exports.registerLayout = registerLayout;\n    exports.registerLoading = registerLoading;\n    exports.registerLocale = registerLocale;\n    exports.registerMap = registerMap;\n    exports.registerPostInit = registerPostInit;\n    exports.registerPostUpdate = registerPostUpdate;\n    exports.registerPreprocessor = registerPreprocessor;\n    exports.registerProcessor = registerProcessor;\n    exports.registerTheme = registerTheme;\n    exports.registerTransform = registerTransform;\n    exports.registerVisual = registerVisual;\n    exports.setCanvasCreator = setCanvasCreator;\n    exports.throttle = throttle;\n    exports.time = time;\n    exports.util = ecUtil;\n    exports.vector = vector;\n    exports.version = version$1;\n    exports.zrender = zrender;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n"]}