blob: 26159d73ab2b5cd7d78ef7630e1f8eef113a8ac0 [file] [log] [blame]
{"version":3,"sources":["unknown"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__spreadArrays","il","r","k","a","j","jl","Browser","firefox","ie","edge","weChat","Env","browser","node","wxa","worker","canvasSupported","svgSupported","touchEventsSupported","pointerEventsSupported","domSupported","env","wx","getSystemInfoSync","document","self","navigator","detect","userAgent","ua","match","test","version","createElement","getContext","SVGRect","window","BUILTIN_OBJECT","TYPED_ARRAY","objToString","toString","arrayProto","nativeForEach","forEach","nativeFilter","filter","nativeSlice","slice","nativeMap","map","ctorFunction","protoFunction","methods","$override","name","fn","idStart","guid","logError","args","_i","console","error","clone","source","result","typeStr","isPrimitive","len","Ctor","from","isDom","key","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","mergeAll","targetAndSources","extend","defaults","overlay","keysArr","keys","createCanvas","indexOf","array","value","inherits","clazz","baseClazz","clazzPrototype","F","prop","superClass","mixin","override","getOwnPropertyNames","keyList","isArrayLike","data","each","arr","cb","context","push","reduce","memo","find","obj","bindPolyfill","func","concat","bind","isFunction","curry","isString","isStringSafe","isNumber","type","isTypedArray","nodeType","ownerDocument","isGradientObject","colorStops","isPatternObject","image","isRegExp","eqNaN","retrieve","retrieve2","value0","value1","retrieve3","value2","normalizeCssArray","val","assert","condition","message","Error","trim","str","replace","primitiveKey","setAsPrimitive","HashMap","isArr","thisMap","visit","set","get","removeKey","createHashMap","concatArray","newArray","offset","createObject","proto","properties","StyleCtor","hasOwn","own","noop","zrUtil","freeze","x","y","copy","out","v","clone$1","add","v1","v2","scaleAndAdd","sub","Math","sqrt","lenSquare","lengthSquare","mul","div","dot","scale","normalize","distance","dist","distanceSquare","distSquare","negate","lerp","applyTransform","m","min","max","vector","Param","e","topTarget","Draggable","handler","on","_dragStart","_drag","_dragEnd","draggingTarget","draggable","parent","_draggingTarget","dragging","_x","offsetX","_y","offsetY","dispatchToElement","event","dx","dy","drift","dropTarget","findHover","lastDropTarget","_dropTarget","Eventful","eventProcessors","_$eventProcessor","query","_$handlers","_h","eventProcessor","normalizeQuery","h","wrap","ctx","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","splice","isSilent","eventName","off","eventType","newList","l","trigger","argLen","hItem","afterTrigger","triggerWithContext","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","round","subRowMask","subRowStart","sum","colLocalIdx","colTag","buildTransformer","src","dest","mA","det","vh","srcPointX","srcPointY","pk","EVENT_SAVED_PROP","_calcOut","transformLocalCoord","elFrom","elTarget","inX","inY","transformCoordWithViewport","el","inverse","getBoundingClientRect","isCanvasEl","saved","markers","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","marker","stl","style","idxLR","idxTB","cssText","join","appendChild","transformerName","oldSrcCoords","srcCoords","destCoords","oldCoordTheSame","rect","ii","left","top","offsetLeft","offsetTop","nodeName","toUpperCase","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut$1","clientToLocal","calculate","calculateZrXY","layerX","zrX","zrY","layerY","ex","clientX","ey","clientY","box","getNativeEvent","normalizeEvent","isTouch","wheelDelta","getWheelDeltaMayPolyfill","zrDelta","detail","touch","targetTouches","changedTouches","button","which","undefined","rawWheelDelta","deltaX","deltaY","delta","abs","sign","opt","attachEvent","removeEventListener","detachEvent","stop","preventDefault","stopPropagation","cancelBubble","returnValue","isMiddleOrRightButtonOnMouseUpDown","GestureMgr","_track","recognize","root","_doTrack","_recognize","clear","touches","trackItem","points","pos","recognizers","gestureInfo","dist$1","pointPair","center","pinch","tracks","trackLen","pinchEnd","pinchPre","pinchScale","isFinite","pinchCenter","pinchX","pinchY","SILENT","makeEventPacket","eveType","targetInfo","gestureEvent","zrByTouch","stopEvent","EmptyProxy","_super","_this","dispose","setCursor","HoveredResult","handlerNames","Handler","storage","painter","proxy","painterRoot","_hovered","setHandlerProxy","_draggingMgr","mousemove","isOutside","isOutsideBoundary","lastHovered","lastHoveredTarget","__zr","hovered","hoveredTarget","cursor","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","resize","dispatch","eventArgs","setCursorStyle","cursorStyle","silent","eventKey","eventPacket","__hostTarget","eachOtherLayer","layer","exclude","list","getDisplayList","hoverCheckResult","ignore","isHover","processGesture","stage","_gestureMgr","gestureMgr","dom","res","_downEl","_downPoint","_upEl","displayable","rectHover","ignoreClip","clipPath","getClipPath","contain","hostEl","handlerInstance","getWidth","getHeight","create$1","identity","copy$1","mul$1","m1","m2","out0","out1","out2","out3","out4","out5","translate","rotate","rad","aa","ac","atx","ab","ad","aty","st","sin","ct","cos","scale$1","vx","vy","invert","clone$2","matrix","mIdentity","EPSILON","isNotAroundZero","scaleTmp","tmpTransform","originTransform","Transformable","setPosition","setScale","scaleX","scaleY","setOrigin","originX","originY","needLocalTransform","rotation","updateTransform","parentHasTransform","transform","getLocalTransform","_resolveGlobalScaleRatio","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","getComputedTransform","transformNode","ancestors","pop","setLocalTransform","atan2","PI","decomposeTransform","ox","oy","transformCoordToLocal","transformCoordToGlobal","getLineScale","initDefaultProps","easing","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","pow","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","Clip","opts","_initialized","_startTime","_pausedTime","_paused","_life","life","_delay","delay","loop","gap","onframe","ondestroy","onrestart","step","globalTime","deltaTime","percent","easing$1","easingFunc","schedule","_restart","remainder","pause","resume","Entry","LinkedList","_len","insert","entry","insertEntry","head","tail","next","prev","remove","LRU","maxSize","_list","_maxSize","_map","put","removed","_lastRemovedEntry","leastUsedEntry","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","f","parseCssInt","charAt","parseFloat","parseInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","g","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","parse","cached","toLowerCase","strLen","iv","op","ep","fname","substr","params","split","alpha","hsla2rgba","hsla","rgba","rgba2hsla","R","G","B","vMin","vMax","L","H","S","deltaR","deltaG","deltaB","lift","color","level","colorArr","stringify","toHex","fastLerp","normalizedValue","colors","leftIndex","floor","rightIndex","ceil","leftColor","rightColor","dv","fastMapToColor","lerp$1","fullOutput","mapToColor","modifyHSL","modifyAlpha","arrColor","lum","backgroundLum","random","arraySlice","interpolateNumber","p0","p1","interpolate1DArray","interpolate2DArray","len2","add1DArray","add2DArray","fillArray","val0","val1","arrDim","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","isNaN","is1DArraySame","catmullRomInterpolate","p2","p3","t2","t3","v0","catmullRomInterpolate1DArray","catmullRomInterpolate2DArray","cloneValue","ret","rgba2String","guessArrayDim","tmpRgba","Track","propName","keyframes","maxTime","interpolable","_needsSort","_isAllValueEqual","_lastFrame","_lastFramePercent","isFinished","_finished","setFinished","_additiveTrack","needsAnimate","getAdditiveTrack","addKeyframe","time","arrayDim","lastFrame","colorArray","isValueColor","kf","prepare","additiveTrack","kfs","sort","kfsLen","lastKf","startValue","additiveValue","isAdditive","valueKey","kfsNum","frameIdx","start","nextFrame","frame","range","w","targetArr","_additiveValue","useSpline","_addToTarget","Animator","additiveTo","_tracks","_trackKeys","_maxTime","_started","_clip","_target","_loop","_additiveAnimators","getTarget","changeTarget","when","props","whenWithKeys","propNames","track","initialValue","_getAdditiveTrack","lastFinalKf","isPaused","_doneCallback","_setTracksFinished","doneList","_doneList","_abortedCallback","animation","abortedList","_abortedList","removeClip","tracksKeys","trackName","additiveAnimators","getTrack","forceAnimate","clip","stillHasAdditiveAnimator","onframeList","_onframeList","addClip","forwardToLast","during","done","aborted","getClip","stopTracks","allAborted","saveFinalToTarget","trackKeys","__changeFinalValue","finalProps","Point","other","equal","scalar","toArray","fromArray","input","onet","mathMin","mathMax","lt","rb","lb","rt","minTv","maxTv","BoundingRect","width","height","union","calculateTransform","intersect","mtv","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","overlap","dMin","Infinity","dMax","d0","d1","d2","d3","plain","isZero","tx","ty","maxX","maxY","textWidthCache","DEFAULT_FONT","_ctx","_cachedFont","defaultMeasureText","text","font","measureText","methods$1","cacheOfFont","innerGetBoundingRect","textAlign","textBaseline","getLineHeight","adjustTextX","adjustTextY","getBoundingRect","textLines","uniondRect","verticalAlign","parsePercent","maxValue","lastIndexOf","calculateTextPosition","textPosition","position","halfHeight","textVerticalAlign","align","dpr","devicePixelRatio","screen","deviceXDPI","logicalXDPI","DARK_MODE_THRESHOLD","DARK_LABEL_COLOR","LIGHT_LABEL_COLOR","LIGHTER_LABEL_COLOR","PRESERVED_NORMAL_STATE","PRIMARY_STATES_KEYS","DEFAULT_ANIMATABLE_MAP","tmpTextPosCalcRes","tmpBoundingRect","Element","id","animators","currentStates","states","_init","attr","markRedraw","beforeUpdate","afterUpdate","update","__dirty","updateInnerText","forceUpdate","textEl","_textContent","textConfig","isLocal","local","attachedTransform","textStyleChanged","innerOrigin","layoutRect","textOrigin","origin","relOriginX","relOriginY","textOffset","isInside","inside","innerTextDefaultStyle","_innerTextDefaultStyle","textFill","textStroke","autoStroke","canBeInsideText","insideFill","insideStroke","getInsideTextFill","getInsideTextStroke","outsideFill","outsideStroke","getOutsideFill","getOutsideStroke","fill","stroke","setDefaultTextStyle","dirtyStyle","isDarkMode","backgroundColor","getBackgroundColor","isDark","traverse","attrKV","setTextConfig","setTextContent","setClipPath","extra","hide","show","keyOrObj","saveCurrentToNormalState","toState","_innerSaveToNormal","normalState","_normalState","animator","fromStateTransition","__fromStateTransition","targetName","_savePrimaryToNormal","primaryKeys","hasState","getState","ensureState","clearStates","noAnimation","useState","stateName","keepCurrentStates","toNormalState","hasStates","animationCfg","stateTransition","state","stateProxy","useHoverLayer","hoverLayer","_toggleHoverLayerFlag","_applyStateObj","__inHover","duration","_textGuide","_updateAnimationTargets","REDARAW_BIT","useStates","stateObjects","notChange","stateObj","mergedState","_mergeStates","removeState","idx","replaceState","oldState","newState","forceAdd","newStateExists","toggleState","enable","mergedTextConfig","transition","needsRestoreToNormal","transitionTarget","hasTransition","propNeedsTransition","_transitionState","_attachComponent","componentEl","zr","addSelfToZr","_detachComponent","removeSelfFromZr","_clipPath","removeClipPath","getTextContent","previousTextContent","removeTextContent","cfg","getTextGuideLine","setTextGuideLine","guideLine","removeTextGuideLine","textGuide","refreshHover","refresh","dirty","inHover","textContent","addAnimator","removeAnimator","animate","updateDuringAnimation","wakeUp","stopAnimation","scope","leftAnimators","animateTo","animationProps","animateFrom","getPaintRect","elProto","isGroup","logs","logDeprecatedError","xKey","yKey","warn","createLegacyProperty","privateKey","defineProperty","enhanceArray","animatable","reverse","animateToShallow","finishCount","doneHappened","cfgDone","cfgAborted","doneCb","abortedCb","force","copyArrShallow","is2DArray","copyValue","sourceArr","len0","len1","topKey","animatableKeys","changedKeys","targetKeys","additive","setToFinal","animateAll","innerKey","keyLen","existsAnimators","existsAnimatorsOnSameTarget","revertedSource","reversedTarget","sourceClone","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","makeAscendingRun","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","pivot","right","mid","gallopLeft","hint","lastOffset","maxOffset","tmp","gallopRight","TimSort","minGallop","runStart","runLength","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","mergeLow","mergeHigh","cursor1","cursor2","_minGallop","count1","count2","exit","customCursor","customDest","remaining","ts","minRun","invalidZErrorLogged","logInvalidZError","shapeCompareFunc","zlevel","z","z2","Storage","_roots","_displayList","_displayListLen","displayableSortFunc","includeIgnore","displayList","updateDisplayList","roots","_updateAndAddDisplayable","clipPaths","userSetClipPath","currentClipPath","parentClipPath","childrenRef","children","child","disp","__clipPaths","decalEl","getDecalElement","addRoot","delRoot","delAllRoots","getRoots","requestAnimationFrame","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","setTimeout","requestAnimationFrame$1","Animation","_running","_time","_pauseStart","_clipsHead","_clipsTail","notTriggerFrameAndStageUpdate","Date","getTime","nextClip","finished","_startLoop","options","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","pointer","globalNativeListenerNames","wheelEventSupported","isPointerFromTouch","pointerType","setTouchTimer","touching","touchTimer","clearTimeout","markTouch","normalizeGlobalEvent","instance","FakeGlobalEvent","isLocalEl","elTmp","domBelongToZr","parentNode","stopImmediatePropagation","currentTarget","localDOMHandlers","mousedown","__mayPointerCapture","downPoint","__togglePointerCapture","mouseup","__pointerCapturing","element","toElement","relatedTarget","wheel","mousewheel","touchstart","__lastTouchMoment","touchmove","touchend","click","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","capture","listener","mounted","listenerOpts","domTarget","unmountDOMEventListeners","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","_globalHandlerScope","isPointerCapturing","globalHandlerScope","STYLE_MAGIC_KEY","DEFAULT_COMMON_STYLE","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","opacity","blend","DEFAULT_COMMON_ANIMATION_PROPS","PRIMARY_STATES_KEYS$1","Displayable","useStyle","beforeBrush","afterBrush","innerBeforeBrush","innerAfterBrush","shouldBePainted","viewWidth","viewHeight","considerClipPath","considerAncestors","invisible","culling","isDisplayableCulled","isZeroArea","parent_1","rectContain","coord","_paintRect","elRect","shadowSize","tolerance","dirtyRectTolerance","setPrevPaintRect","paintRect","_prevPaintRect","getPrevPaintRect","animateStyle","targetKey","setStyle","STYLE_CHANGED_BIT","_rect","styleChanged","styleUpdated","createStyle","__hoverStyle","isStyleObject","_mergeStyle","targetStyle","sourceStyle","getAnimationStyleProps","mergedStyle","dispProto","incremental","tmpRect","viewRect","mathPow","mathSqrt","EPSILON$1","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","isNotAroundZero$1","cubicAt","cubicDerivativeAt","cubicRootAt","c","A","C","t1","disc","K","discSqrt","Y1","Y2","T","theta","acos","ASqrt","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","x0","y0","x1","y1","x2","y2","x3","y3","interval","_t","cubicLength","iteration","px","py","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","quadraticLength","mathMin$1","mathMax$1","mathSin","mathCos","PI2","end","extremity","fromPoints","bottom","fromLine","xDim","yDim","fromCubic","cubicExtrema$1","cubicAt$1","fromQuadratic","quadraticExtremum$1","quadraticAt$1","fromArc","rx","ry","startAngle","endAngle","anticlockwise","min$1","max$1","vec2Min","vec2Max","diff","angle","CMD","M","Q","Z","tmpOutX","tmpOutY","min2","max2","mathMin$2","mathMax$2","mathCos$1","mathSin$1","mathSqrt$1","mathAbs","PI2$1","hasTypedArray","Float32Array","tmpAngles","modPI2","radian","normalizeArcAngles","angles","newStartAngle","newEndAngle","PathProxy","notSaveData","_version","_xi","_yi","_x0","_y0","_saveData","increaseVersion","getVersion","segmentIgnoreThreshold","_ux","_uy","setDPR","setContext","beginPath","reset","_lineDash","_dashOffset","_pathSegLen","_pathLen","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","arcTo","radius","closePath","toStatic","setLineDash","lineDash","_dashIdx","lineDashSum","_dashSum","setLineDashOffset","setData","appendPath","path","appendSize","appendPathData","cmd","_expandData","newData","dashSum","nDash","dash","bezierLen","tmpLen","Number","MAX_VALUE","xi","yi","isFirst","_calculateLength","ux","uy","pathSegLen","pathTotalLen","segCount","rebuildPath","drawPart","accumLength","displayedLength","psi","isEllipse","breakBuild","ellipse","d_1","containStroke","lineWidth","_l","_a","_b","_s","containStroke$1","containStroke$2","PI2$2","normalizeRadian","PI2$3","containStroke$3","windingLine","dir","x_","CMD$1","PI2$4","EPSILON$2","isAroundEqual","swapExtrema","windingCubic","nRoots","nExtrema","y0_","y1_","unit","windingQuadratic","y_","windingArc","dTheta","tmp_1","containPath","isStroke","pathProxy","containStroke$4","DEFAULT_PATH_STYLE","strokePercent","fillOpacity","strokeOpacity","lineDashOffset","lineCap","miterLimit","strokeNoScale","strokeFirst","DEFAULT_PATH_ANIMATION_PROPS","pathCopyParams","Path","decal","_decalEl","buildPath","shape","decalElStyle","getDefaultShape","defaultStyle","getDefaultStyle","hasFill","pathFill","fillLum","isDarkLabel","shapeCfg","inBundle","pathUpdated","SHAPE_CHANGED_BIT","createPathProxy","hasStroke","needsUpdateRect","firstInvoke","rectWithStroke","_rectWithStroke","lineScale","strokeContainThreshold","localPos","dirtyShape","animateShape","setShape","shapeChanged","targetShape","targetShapePrimaryProps","shapeKeys","mergedShape","defaultProps","Sub","init","pathProto","subPixelOptimize","autoBatch","CMD$2","mathSqrt$2","mathAtan2","transformPath","nPoint","p_1","mathSqrt$3","mathSin$2","mathCos$2","PI$1","vMag","vRatio","u","vAngle","processArc","fa","fs","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathProxyFromString","cpx","cpy","subpathX","subpathY","prevCmd","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","pathData","SVGPath","isPathProxy","createPathOptions","innerOpts","createFromString","extendFromString","defaultOpts","mergePath","pathEls","pathList","pathEl","pathBundle","Group","_children","childAt","childOfName","childCount","_doAdd","addBefore","nextSibling","replaceAt","index","old","removeAll","eachChild","stopped","includeChildren","tmpMat","childRect","DEFAULT_IMAGE_STYLE","DEFAULT_IMAGE_ANIMATION_PROPS","sWidth","sHeight","isImageLike","ZRImage","_getSize","dim","size","imageSource","__image","otherDim","otherDimSize","CircleShape","Circle","r1","r2","r3","r4","total","subPixelOptimizeLine","outputShape","inputShape","subPixelOptimizeRect","originWidth","originHeight","positiveOrNegative","doubledPosition","RectShape","subPixelOptimizeOutputShape","Rect","optimizedShape","EllipseShape","Ellipse","subPixelOptimizeOutputShape$1","LineShape","Line","pointAt","interpolate","smoothSpline","isLoop","distance$1","segs","w2","w3","smoothBezier","smooth","constraint","cps","prevPoint","nextPoint","point","cp0","cp1","shift","buildPath$1","controlPoints","smoothConstraint","cp2","PolygonShape","Polygon","PolylineShape","Polyline","Gradient","addColorStop","LinearGradient","globalCoord","global","DEFAULT_TSPAN_STYLE","TSpan","setBoundingRect","tspanProto","DILIMITER_REG","parseXML","svg","parser","DOMParser","parseFromString","svgNode","firstChild","nodeParsers","SVGParser","_defs","_root","_isDefine","_isText","xml","viewBox","getAttribute","parseAttributes","_parseNode","viewBoxRect","viewBoxTransform","viewBoxArr","makeViewBoxTransform","ignoreViewBox","elRoot","ignoreRootClip","xmlNode","parentGroup","defineParsers","def","_parseText","_textX","_textY","inheritStyle","textStyle","fontSize","fontFamily","fontStyle","fontWeight","internalField","circle","line","pointsStr","pointsArr","parsePoints","polygon","polyline","img","gradient","_parseGradientColorStops","offsetStr","stopColor","__inheritedStyle","pointsString","attributesMap","defs","onlyInlineStyle","zrStyle","parseTransformAttribute","parseStyleAttribute","svgAttrName","attrValue","getPaint","urlRegex","urlMatch","url","transformRegex","transformOps_1","valueArr","styleRegex","styleList","styleRegResult","exec","parseSVG","PI$2","PI2$5","mathSin$3","mathCos$3","mathACos","mathATan2","mathAbs$1","mathSqrt$4","mathMax$3","mathMin$3","x10","y10","x32","y32","computeCornerTangents","cr","clockwise","x01","y01","x11","y11","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","buildPath$2","innerRadius","r0","hasRadius","hasInnerRadius","cornerRadius","innerCornerRadius","halfRd","icr","cr0","cr1","xrs","yrs","xire","yire","xre","yre","xirs","yirs","it_1","ct0","ct1","SectorShape","Sector","CMD$3","PI2$6","PROP_XY","PROP_WH","tmpArr","aroundEqual","pathToBezierCurves","bezierArray","currentSubpath","createNewSubpath","addLine","addArc","tan","c1","s1","c2","s2","x4","y4","hx","hy","nextAngle","alignSubpath","subpath1","subpath2","shorterPath","shorterLen","shorterBezierCount","eachCurveSubDivCount","newSubpath","remained","tmpSegX","tmpSegY","actualSubDivCount","createSubpath","lastSubpathSubpath","otherSubpath","lastX","lastY","alignBezierCurves","array1","array2","lastSubpath1","lastSubpath2","newArray1","newArray2","newSubpath1","newSubpath2","centroid","signedArea","findBestRingOffset","fromSubBeziers","toSubBeziers","fromCp","toCp","bezierCount","bestScore","bestOffset","cursorOffset","score","newArr","findBestMorphingRotation","fromArr","toArr","searchAngleIteration","searchAngleRange","fromNeedsReverse","fromSubpathBezier","toSubpathBezier","newFromSubpathBezier","newToSubpathBezier","bestAngle","tmpArr_1","sa","ca","newX1","newY1","i_1","to","morphPath","fromPath","toPath","animationOpts","fromPathProxy","toPathProxy","isIndividualMorphingPath","__oldBuildPath","fromBezierCurves","toBezierCurves","morphingData","becomeIndividualMorphingPath","oldDone","oldAborted","oldDuring","__morphT","restoreIndividualMorphingPath","morphingPathBuildPath","__morphingData","newCp","item","morphT","updateIndividualMorphingPath","morphingPath","isCombiningPath","__combiningSubList","isInAnyMorphing","combine","fromPathList","copyPropsIfDivided","fromIndividuals","separateCount","fromCombiningSubList","dividingMethod","toPathSplittedList","divideShape","doneCount","abortedCalled","morphAnimationOpts","restoreCombiningPath","becomeCombiningPath","toIndividuals","count","combiningSubList","updateCombiningPathSubList","combiningPath","__oldAddSelfToZr","__oldRemoveSelfFromZr","combiningAddSelfToZr","combiningRemoveSelfFromZr","combiningChildrenRef","combiningPathSubListAddRemoveWithZr","method","separate","toPathList","toPathListLen","copyProps","duplicateShape","splitShape","resultPaths","toPathShape","splitPropIdx","propWH","propXY","subWH","xyCurr","subShape","splitted","endAngleNormalized","normalizeRadian$1","angleCurr","ctor","CompoundPath","_updatePathDirty","paths","dirtyPath","IncrementalDisplayble","notClear","_displayables","_temporaryDisplayables","_cursor","getCursor","clearDisplaybles","clearTemporalDisplayables","addDisplayable","notPersistent","addDisplayables","displayables","getDisplayables","getTemporalDisplayables","eachPendingDisplayable","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","createOrUpdateImage","onload","cbPayload","__zrImageSrc","pendingWrap","isImageReady","pending","Image","onerror","imageOnLoad","__cachedImgObj","STYLE_REG","truncateText","containerWidth","ellipsis","prepareTruncateOptions","truncateSingleLine","preparedOpts","maxIterations","minChar","cnCharWidth","ascCharWidth","placeholder","contentWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","charCodeAt","parsePlainText","overflow","padding","truncate","calculatedLineHeight","lineHeight","truncateLineOverflow","lineOverflow","lines","wrapText","contentHeight","lineCount","outerHeight","outerWidth","truncateMinChar","maxWidth","RichTextToken","RichTextLine","tokens","RichTextContentBlock","parseRichText","contentBlock","topWidth","topHeight","wrapInfo","accumWidth","breakAll","matchedIndex","pushTokens","substring","pendingList","calculatedHeight","calculatedWidth","stlPadding","truncateLine","finishLine","outer","token","tokenStyle","styleName","rich","textPadding","paddingH","tokenHeight","innerHeight","styleTokenWidth","tokenWidthNotSpecified","percentWidth","textBackgroundColor","bgImg","remainTruncWidth","block","isEmptyStr","newLine","strLines","linesWidths","tokenPadding","tokenPaddingH","outerWidth_1","parsePercent$1","isLineHolder","tokensLen","isLatin","ch","code","breakCharMap","isWordBreakChar","isBreakAll","lastAccumWidth","currentWord","currentWordWidth","chWidth","inWord","DEFAULT_RICH_TEXT_COLOR","DEFAULT_STROKE_LINE_WIDTH","DEFAULT_TEXT_ANIMATION_PROPS","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","borderColor","borderWidth","borderRadius","ZRText","_defaultStyle","_updateSubTexts","_childCursor","normalizeTextStyle","_updateRichTexts","_updatePlainTexts","defaultTextStyle","sourceRich","targetRich","_mergeRich","richNames","richName","_getOrCreateChild","textFont","getStyleText","needDrawBg","needDrawBackground","bgColorDrawn","baseX","baseY","textX","textY","boxX","boxY","_renderBackground","getTextXForPadding","defaultLineWidth","useDefaultFill","getFill","getStroke","hasShadow","fixedBoundingRect","subElStyle","xLeft","lineTop","xRight","tokenCount","remainedWidth","lineXLeft","lineXRight","_placeToken","parentBgColorDrawn","textWidth","textHeight","topStyle","textBorderWidth","textBorderColor","isPlainBg","textBorderRadius","rectEl","imgEl","rectShape","rectStyle","imgStyle","borderDash","borderDashOffset","commonStyle","makeFont","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","middle","normalizeStyle","ArcShape","Arc","unitX","unitY","BezierCurveShape","cpx1","cpy1","someVectorAt","isTangent","cpx2","cpy2","BezierCurve","tangentAt","DropletShape","Droplet","HeartShape","Heart","PI$3","IsogonShape","Isogon","dStep","deg","RingShape","Ring","sin$1","cos$1","RoseShape","Rose","PI$4","cos$2","sin$2","StarShape","Star","xStart","yStart","ri","cos$3","sin$3","TrochoidShape","location","Trochoid","num","RadialGradient","extent","extent2","minTv$1","maxTv$1","OrientedBoundingRect","_corners","_axes","_origin","fromBoundingRect","corners","axes","overlapped","noMtv","_intersectCheckOneSide","axis","_getProjMinMaxOnAxis","dist0","dist1","proj","proj_1","useVML","painterCtors","instances","delInstance","totalLum","ZRender","_sleepAfterStill","_stillFrameAccum","_needsRefresh","_needsRefreshHover","_darkMode","rendererType","renderer","vml","useDirtyRect","handerProxy","getViewportRoot","_flush","configLayer","zLevel","config","setBackgroundColor","_backgroundColor","setDarkMode","darkMode","refreshImmediately","fromInside","flush","triggerRendered","refreshHoverImmediately","elapsedTime","setSleepAfterStill","stillFramesCount","addHover","removeHover","clearHover","getType","clearAnimation","pathToImage","eventHandler","disposeAll","getInstance","registerPainter","zrender","RADIAN_EPSILON","_trim","linearMap","domain","clamp","subDomain","subRange","parsePercent$2","all","NaN","round$1","precision","returnStr","toFixed","asc","getPrecision","getPrecisionSafe","eIndex","dotIndex","getPixelPrecision","dataExtent","pixelExtent","LN10","dataQuantity","sizeQuantity","getPercentWithPrecision","valueList","acc","digits","votesPerQuota","targetSeats","seats","votes","currentSum","NEGATIVE_INFINITY","maxId","MAX_SAFE_INTEGER","remRadian","pi2","isRadianAroundZero","TIME_REG","parseDate","hour","UTC","quantity","quantityExponent","exp","nice","exponent","exp10","nf","quantile","ascArr","reformIntervals","littleThan","curr","currClose","close_1","close","lg","numericToNumber","valFloat","isNumeric","getRandomIdBase","getGreatestCommonDividor","getLeastCommonMultiple","numberUtil","ECHARTS_PREFIX","storedLogs","hasConsole","deprecateLog","deprecateReplaceLog","oldOpt","newOpt","consoleLog","makePrintable","hintInfo","msg","makePrintableStringIfPossible_1","toISOString","arg","printableStr","JSON","err","throwError","DUMMY_COMPONENT_NAME_PREFIX","INTERNAL_COMPONENT_ID_PREFIX","normalizeToArray","defaultEmphasis","subOpts","emphasis","subOptName","TEXT_STYLE_OPTIONS","getDataItemValue","dataItem","isDataItemOption","mappingToExists","existings","newCmptOptions","mode","isNormalMergeMode","isReplaceMergeMode","isReplaceAllMode","existingIdIdxMap","cmptOption","isValidIdOrName","warnInvalidateIdOrName","prepareResult","mappingById","mappingByName","mappingByIndex","mappingInReplaceAllMode","makeIdAndName","existing","isComponentIdInternal","newOption","keyInfo","brandNew","optionId","makeComparableKey","existingIdx","resultItem","keyExistAndEqual","nextIdx","mapResult","idMap","idNum","obj1","obj2","key1","convertOptionIdName","key2","idOrName","defaultValue","isNameSpecified","componentModel","makeInternalComponentId","idSuffix","setComponentTypeToKeyInfo","mappingResult","mainType","componentModelCtor","subType","determineSubType","newCmptOption","existComponent","compressBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","seriesId","dataIndices","dataIndex","otherDataIndices","lenj","isData","queryDataIndex","payload","dataIndexInside","indexOfRawIndex","indexOfName","makeInner","innerUniqueIndex","hostObj","parseFinder","ecModel","finderInput","finder","queryOptionMap","mainTypeSpecified","parsedKey","queryType","includeMainTypes","queryOption","defaultMainType","queryResult","queryReferringComponents","useDefault","enableAll","enableNone","models","SINGLE_REFERRING","MULTIPLE_REFERRING","userOption","indexOption","idOption","nameOption","specified","firstCmpt","getComponent","queryComponents","setAttribute","getTooltipRenderMode","renderModeOption","groupData","getKey","buckets","interpolateRawValues","sourceValue","targetValue","isAutoPrecision","interpolated","leftArr","rightArr","length_1","info","getDimensionInfo","leftVal","rightVal","TYPE_DELIMITER","IS_CONTAINER","IS_EXTENDED_CLASS","parseClassType","componentType","main","typeArr","checkClassType","isExtendedClass","clz","enableClassExtend","rootClz","mandatoryMethods","$constructor","ExtendedClass","isESClass","ins","superCall","superApply","Function","mountExtend","SubClz","SupperClz","classBase","enableClassCheck","classAttr","isInstance","methodName","enableClassManagement","registerClass","componentFullType","componentTypeInfo","container","makeContainer","getClass","throwWhenNotFound","getClassesByMainType","o","hasClass","getAllClassMainTypes","types","hasSubTypes","registerWhenExtend","originalExtend_1","makeStyleMapper","ignoreParent","model","excludes","includes","getShallow","AREA_STYLE_KEY_MAP","getAreaStyle","AreaStyleMixin","getECData","_highlightNextDigit","_highlightKeyMap","getSavedStates","HOVER_STATE_NORMAL","HOVER_STATE_BLUR","HOVER_STATE_EMPHASIS","SPECIAL_STATES","DISPLAY_STATES","Z2_EMPHASIS_LIFT","Z2_SELECT_LIFT","HIGHLIGHT_ACTION_TYPE","DOWNPLAY_ACTION_TYPE","SELECT_ACTION_TYPE","UNSELECT_ACTION_TYPE","TOGGLE_SELECT_ACTION_TYPE","hasFillOrStroke","fillOrStroke","liftedColorCache","liftColor","color$1","liftedColor","doChangeHoverState","hoverStateEnum","onHoverStateChange","hoverState","singleEnterEmphasis","singleLeaveEmphasis","singleEnterBlur","singleLeaveBlur","singleEnterSelect","selected","singleLeaveSelect","updateElementState","updater","commonParam","traverseUpdateState","setStatesFlag","getFromStateStyle","toStateName","fromState","createEmphasisDefaultState","targetStates","hasSelect","cloned","store","fromFill","selectFill","normalFill","fromStroke","selectStroke","normalStroke","emphasisStyle","z2EmphasisLift","createSelectDefaultState","z2SelectLift","createBlurDefaultState","hasBlur","currentOpacity","blurStyle","elementStateProxy","setDefaultStateProxy","enterEmphasisWhenMouseOver","shouldSilent","__highByOuter","leaveEmphasisWhenMouseOut","enterEmphasis","highlightDigit","leaveEmphasis","enterBlur","leaveBlur","enterSelect","leaveSelect","__highDownSilentOnTouch","allLeaveBlur","api","getModel","eachComponent","view","getViewOfSeriesModel","getViewOfComponentModel","group","toggleSeriesBlurState","targetSeriesIndex","focus","blurScope","isBlur","leaveBlurOfIndices","itemEl","getItemGraphicEl","targetSeriesModel","getSeriesByIndex","targetCoordSys","coordinateSystem","master","blurredSeries","eachSeries","seriesModel","sameSeries","coordSys","sameCoordSys","getData","dataTypes","blurSeries","toggleSeriesBlurStateFromPayload","isHighDownPayload","isHighlight","seriesIndex","dataType","current","ecData","focus_1","toggleSelectionFromPayload","isSelectChangePayload","updateSeriesElementSelection","allData","getAllData","eachItemGraphicEl","isSelected","getAllSelectedIndices","getSelectedDataIndices","enableHoverEmphasis","setAsHighDownDispatcher","enableHoverFocus","OTHER_STATES","defaultStyleGetterMap","itemStyle","lineStyle","areaStyle","setStatesStylesFromModel","itemModel","styleType","getter","asDispatcher","disable","extendedEl","highDownSilentOnTouch","__highDownDispatcher","isHighDownDispatcher","getHighlightDigit","highlightKey","payloadType","savePathStates","selectState","select","mathMax$4","mathMin$4","_customShapeMap","extendShape","extendPathFromString","extendPath","registerShape","ShapeClass","getShapeClass","makePath","layout","centerGraphic","resizePath","makeImage","imageUrl","zrImg","boundingRect","aspect","mergePath$1","pathRect","subPixelOptimizeLine$1","param","subPixelOptimizeRect$1","subPixelOptimize$1","animateOrSetProps","animationType","animatableModel","isFrom","removeOpt","isUpdate","isRemove","animationPayload","updatePayload","getUpdatePayload","animationEnabled","isAnimationEnabled","animationEasing","animationDelay","getAnimationDelayParams","updateProps","initProps","removeElement","isElementRemoved","fadeOutDisplayable","removeElementWithFadeOut","doRemove","getTransform","ancestor","mat","applyTransform$1","invert$1","transformDirection","direction","hBase","vBase","vertex","isNotGroup","isPath","groupTransition","g1","g2","getElMap","elMap","anid","getAnimatableProps","elMap1","oldEl","newProp","clipPointsByRect","clipRectByRect","targetRect","createIcon","iconStr","linePolygonIntersect","a1x","a1y","a2x","a2y","lineLineIntersect","b1x","b1y","b2x","b2y","mx","my","nx","ny","nmCrossProduct","crossProduct2d","nearZero","b1a1x","b1a1y","q","graphic","Text","IncrementalDisplayable","EMPTY_OBJ","setLabelText","label","labelTexts","oldStates","normal","getLabelText","stateModels","overrideValue","labelFetcher","labelDataIndex","labelDimIndex","normalModel","baseText","getFormattedLabel","defaultText","statesText","stateModel","setLabelStyle","targetEl","labelStatesModels","stateSpecified","isSetOnText","needsCreateText","labelStatesTexts","showNormal","normalStyle","createTextStyle","createTextConfig","stateShow","targetElEmphasisState","enableTextSetter","labelInner","getLabelStatesModels","labelName","statesModels","textStyleModel","specifiedTextStyle","isNotNormal","isAttached","setTextStyleCommon","labelPosition","labelRotate","labelDistance","labelOffset","defaultOutsidePosition","inheritColor","globalTextStyle","option","richItemNames","getRichItemNames","richResult","name_1","richTextStyle","setTokenTextStyle","margin","richItemNameMap","richKeys","richKey","parentModel","TEXT_PROPS_WITH_GLOBAL","TEXT_PROPS_SELF","TEXT_PROPS_BOX","isBlock","inRich","fillColor","strokeColor","textBorderType","textBorderDashOffset","defaultOpacity","baseline","disableBox","borderType","getFont","gTextStyleModel","setLabelValueAnimation","getDefaultText","prevValue","normalLabelModel","valueAnimation","defaultInterpolatedText","animateLabelValue","labelInnerStore","currentValue","labelText","PATH_COLOR","tmpRichText","TextStyleMixin","getTextColor","isEmphasis","getTextRect","LINE_STYLE_KEY_MAP","getLineStyle","LineStyleMixin","ITEM_STYLE_KEY_MAP","getItemStyle","ItemStyleMixin","Model","rest","mergeOption","_doGet","parsePath","hasPath","pathFinal","resolveParentPath","isEmpty","restoreData","pathArr","base","getUID","enableSubTypeDefaulter","subTypeDefaulters","registerSubTypeDefaulter","defaulter","componentTypeMain","enableTopologicalTravel","entity","dependencyGetter","topologicalTravel","targetNameList","fullNameList","callback","makeDepndencyGraph","graph","noEntryList","targetNameSet","currComponentType","currVertex","isInTargetNameSet","originalDeps","successor","removeEdgeAndAdd","removeEdge","errMsg","succComponentType","entryCount","thisItem","createDependencyGraphItem","availableDeps","getAvailableDependencies","dependentName","predecessor","thatItem","dep","inheritDefaultOption","superOption","subOption","langEN","month","monthAbbr","dayOfWeek","dayOfWeekAbbr","legend","selector","toolbox","brush","title","lineX","lineY","keep","dataView","lang","dataZoom","zoom","back","magicType","bar","stack","tiled","restore","saveAsImage","series","typeNames","pie","scatter","effectScatter","radar","tree","treemap","boxplot","candlestick","heatmap","parallel","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","single","prefix","withName","withoutName","multiple","separator","partialData","langZH","LOCALE_ZH","LOCALE_EN","DEFAULT_LOCALE","localeStorage","localeModels","SYSTEM_LANG","langStr","documentElement","language","browserLanguage","registerLocale","locale","localeObj","createLocaleObject","getLocaleModel","getDefaultLocaleModel","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_YEAR","defaultLeveledFormatter","year","day","minute","second","millisecond","none","fullDayFormatter","fullLeveledFormatter","primaryTimeUnits","timeUnits","pad","getPrimaryTimeUnit","timeUnit","isPrimaryTimeUnit","getDefaultFormatPrecisionOfInterval","format","template","isUTC","date","fullYearGetterName","monthGetterName","dateGetterName","hoursGetterName","minutesGetterName","secondsGetterName","millisecondsGetterName","localeModel","timeModel","leveledFormat","tick","formatter","defaults$1","mergedFormatter","inherit","getUnitFromValue","targetId","levelId","isSecond","isMinute","isHour","isDay","isMonth","isYear","getUnitValue","fullYearSetterName","monthSetterName","dateSetterName","hoursSetterName","minutesSetterName","secondsSetterName","millisecondsSetterName","addCommas","parts","toCamelCase","upperCaseFirst","group1","normalizeCssArray$1","replaceReg","replaceMap","encodeHTML","makeValueReadable","valueType","useUTC","USER_READABLE_DEFUALT_TIME_PATTERN","stringToUserReadable","isNumberUserReadable","isTypeTime","isValueDate","numericResult","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","formatTpl","tpl","paramsList","encode","seriesLen","$vars","alias","formatTplSimple","getTooltipMarker","inOpt","extraCssText","renderMode","markerId","content","formatTime","utc","capitalFirst","convertToColorString","defaultColor","windowOpen","link","blank","open","opener","href","formatUtil","each$1","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","maxHeight","currentLineMaxSize","nextChild","nextChildRect","nextX","nextY","moveX","newline","moveY","vbox","hbox","getAvailableSize","positionInfo","containerRect","containerHeight","getLayoutRect","verticalMargin","horizontalMargin","positionElement","hv","boundingMode","sizeCalculable","hvIdx","fetchLayoutMode","layoutMode","mergeLayoutParam","targetOption","ignoreSize","hResult","vResult","names","newParams","newValueCount","merged","mergedValueCount","enoughParamNumber","hasProp","hasValue","getLayoutParams","copyLayoutParams","inner","ComponentModel","uid","mergeDefaultAndTheme","inputPositionParams","themeModel","getTheme","getDefaultOption","optionUpdated","newCptOption","isInit","defaultOption","fields","optList","getReferringComponents","indexKey","idKey","getBoxLayoutParams","boxLayoutModel","protoInitialize","componentIndex","getDependencies","deps","dependencies","unshift","platform","decalColor","globalDefault","gradientColor","decals","dashArrayX","dashArrayY","symbolSize","symbol","dashLineOffset","blendMode","stateAnimation","animationDuration","animationDurationUpdate","animationEasingUpdate","animationThreshold","progressiveThreshold","progressive","hoverLayerThreshold","VISUAL_DIMENSIONS","SOURCE_FORMAT_ORIGINAL","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","SOURCE_FORMAT_KEYED_COLUMNS","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_UNKNOWN","SERIES_LAYOUT_BY_COLUMN","SERIES_LAYOUT_BY_ROW","BE_ORDINAL","Must","Might","Not","innerGlobalModel","resetSourceDefaulter","datasetMap","inheritSourceMetaRawOption","upstream","newMetaRawOption","parentMetaRawOption","metaRawOption","seriesLayoutBy","sourceHeader","startIndex","dimensions","dimensionsDefine","makeSeriesEncodeForAxisCoordSys","coordDimensions","datasetModel","querySeriesUpstreamDatasetModel","encodeItemName","encodeSeriesName","baseCategoryDimIndex","categoryWayValueDimStart","coordDimInfoLoose","coordDimIdx","coordDimInfo","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","coordDimName","pushDim","dimIdxArr","idxFrom","idxCount","dimsDef","itemName","seriesName","makeSeriesEncodeForNameBased","dimCount","sourceFormat","potentialNameDimIndex","idxResult","idxRes0","idxRes1","guessRecords","guessResult","doGuessOrdinal","isPureNumber","fulfilled","nameDimIndex","thisData","queryDatasetUpstreamDatasetModels","guessOrdinal","dimIndex","maxLoop","dimName","dimType","dimDefItem","dataArrayRows","sample","detectValue","row","dataObjectRows","dataKeyedColumns","dataOriginal","beStr","internalOptionCreatorMap","registerInternalOptionCreator","creator","concatInternalOptions","newCmptOptionList","internalOptionCreator","internalOptions","innerColor","innerDecal","PaletteMixin","getColorFromPalette","requestNum","defaultPalette","layeredPalette","getFromPalette","clearColorPalette","clearPalette","getDecalFromPalette","defaultDecals","getNearestPalette","palettes","requestColorNum","paletteNum","that","scopeFields","paletteIdx","paletteNameMap","palette","pickedPaletteItem","reCreateSeriesIndices","assertSeriesInitialized","initBase","OPTION_INNER_KEY","GlobalModel","theme","optionManager","_theme","_locale","_optionManager","setOption","optionPreprocessorFuncs","innerOpt","normalizeSetOptionInput","_resetOption","resetOption","optionChanged","baseOption","mountOption","_mergeOption","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","componentsMap","_componentsMap","componentsCount","_componentsCount","newCmptTypes","newCmptTypeMap","replaceMergeMainTypeMap","componentOption","mainTypeInReplaceMerge","visitComponent","oldCmptList","mergeMode","optionsByMainType","cmptsByMainType","cmptsCountByMainType","ComponentModelClass","extraOpt","__requireNewView","_seriesIndices","getOption","optInMainType","realLen","metNonInner","getLocale","localePosition","setUpdatePayload","_payload","cmpt","cmpts","queryByIdOrName","filterBySubType","findComponents","queryCond","getQueryCond","doFilter","indexAttr","idAttr","nameAttr","ctxForAll_1","cbForAll_1","getSeriesByName","nameStr","oneSeries","getSeriesByType","getSeries","getSeriesCount","rawSeriesIndex","eachRawSeries","eachSeriesByType","eachRawSeriesByType","isSeriesFiltered","_seriesIndicesMap","getCurrentSeriesIndices","filterSeries","newSeriesIndices","seriesRawIdx","componentTypes","components","component","isNotTargetSeries","seriesIndices","airaOption","enabled","mergeTheme","notMergeColorLayer","colorLayer","themeItem","keyMap_1","idOrNameItem","idName","idName_1","replaceMerge","availableMethods","ExtensionAPI","ecInstance","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","coordinateSystems","creater","getCoordinateSystems","register","QUERY_REG","OptionManager","_timelineOptions","_mediaList","_currentMediaIndices","_api","rawOption","dataset","optionBackup","_optionBackup","newParsedOption","parseRawOption","_newBaseOption","timelineOptions","mediaList","mediaDefault","isRecreate","_mediaDefault","timelineModel","getCurrentIndex","ecWidth","ecHeight","indices","applyMediaQuery","indicesEquals","isNew","declaredBaseOption","timelineOnRoot","timeline","timelineOptionsOnRoot","mediaOnRoot","media","hasMedia","hasTimeline","singleMedia","doPreprocess","preProcess","realMap","aspectratio","applicatable","matched","operator","realAttr","real","expect","indices1","indices2","each$2","isObject$1","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","normalItemStyleOpt","emphasisItemStyleOpt","convertNormalEmphasis","optType","useExtend","normalOpt","emphasisOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","textPropName","compatEC3CommonStyles","processSeries","seriesOpt","markPoint","markLine","markArea","nodes","edgeData","links","edges","categories","mpData","mlData","breadcrumb","levels","leaves","toObj","globalCompatStyle","isTheme","axisName","axisOpt","axisPointer","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radarOpt","nameGap","axisNameGap","geo","geoOpt","regions","regionObj","timelineOpt","toolboxOpt","feature","featureOpt","tooltip","set$1","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","BAR_ITEM_STYLE_MAP","compatBarItemStyle","oldName","newName","compatPieLabel","alignTo","edgeDistance","compatSunburstState","downplay","blur","compatGraphFocus","focusNodeAdjacency","traverseTree","globalBackwardCompat","seriesType","clipOverflow","clockWise","hoverOffset","scaleSize","pointerColor","backgroundStyle","highlightPolicy","mapType","mapLocation","hoverAnimation","dataRange","visualMap","componentName","dataStack","stackInfoMap","stackInfoList","stackInfo","stackResultDimension","getCalculationInfo","stackedOverDimension","stackedDimension","stackedByDimension","isStackedByIndex","setCalculationInfo","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","dims","targetData","byValue","stackedDataRawIndex","getRawIndex","stackedOver","rawIndexOf","getByRawIndex","hostModel","SourceImpl","dimensionsDetectedCount","encodeDefine","isSourceInstance","createSource","sourceData","thisMetaRawOption","detectSourceFormat","determined","determineSourceDimensions","makeEncodeDefine","createSourceFromSeriesDataOption","cloneSourceShallow","normalizeDimensionsOption","arrayRowsTravelFirst","objectRowsCollectDimensions","colArr","firstIndex","dimensions_1","nameMap","rawItem","displayName","exist","_c","providerMethods","mountMethods","DefaultDataProvider","sourceParam","dimSize","_source","_data","_offset","_dimSize","getSource","getItem","appendData","clean","pure","persistent","provider","getMethodMapKey","getItemForTypedArray","countForTypedArray","fillStorage","fillStorageForTypedArray","rawItemGetter","getRawSourceItemGetter","rawCounter","getRawSourceDataCounter","dimExtent","appendDataSimply","newCol","oldCol","getItemSimply","rawData","rawSourceItemGetterMap","col","countSimply","rawSourceDataCounterMap","getRawValueSimply","rawSourceValueGetterMap","getRawSourceValueGetter","retrieveRawValue","getRawDataItem","getProvider","dimInfo","DIMENSION_LABEL_REG","DataFormatMixin","getDataParams","rawValue","getRawValue","rawDataIndex","getName","itemOpt","getItemVisual","isSeries","userOutput","componentSubType","dimensionNames","status","extendParams","getItemModel","dimensionIndex","formatTooltip","multipleSeries","normalizeTooltipFormatResult","markupText","markupFragment","createTask","define","Task","_reset","_plan","plan","_count","_onDirty","onDirty","_dirty","perform","performArgs","upTask","_upstream","skip","outputData","__pipeline","currentTask","planResult","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","modBy","modDataCount","forceFirstProgress","_doReset","_outputDueEnd","_dueEnd","_progress","_dueIndex","progress","_doProgress","outputDueEnd","_settedOutputEnd","unfinished","iterator","_callingProgress","downstream","_downstream","pipe","downTask","_disposed","getUpstream","getDownstream","setOutputEnd","winCount","it","sStep","sCount","modNext","sequentialNext","parseDataValue","ordinalMeta","parseAndCollect","valueParserMap","getRawValueParser","ORDER_COMPARISON_OP_MAP","lval","rval","lte","gt","gte","FilterOrderComparator","_opFn","_rvalFloat","evaluate","SortOrderComparator","order","incomparable","isDesc","_resultLT","_incomparable","lvalTypeof","rvalTypeof","lvalFloat","rvalFloat","lvalNotNumeric","rvalNotNumeric","lvalIsStr","rvalIsStr","FilterEqualityComparator","isEq","_rval","_isEQ","_rvalTypeof","eqResult","createFilterComparator","ExternalSource","getRawData","cloneRawData","cloneAllDimensionInfo","retrieveValue","retrieveValueFromItem","convertValue","rawVal","createExternalSource","internalSource","externalTransform","extSource","sourceHeaderCount","dimsByName","dimDef","dimDefExt","__isBuiltIn","rawValueGetter","externalTransformMap","registerExternalTransform","typeParsed","isBuiltIn","applyDataTransform","rawTransOption","sourceList","infoForPrint","pipedTransOption","pipeLen","transOption","applySingleDataTransform","upSourceList","pipeIndex","transType","extUpSourceList","upSource","resultList","upstreamList","print","printStrArr","pipeIndexStr","datasetIndex","resultData","resultMetaRawOption","SourceManager","sourceHost","_sourceList","_upstreamSignList","_versionSignBase","_sourceHost","_setLocalSource","upstreamSignList","_getVersionSign","prepareSource","_isDirty","_createSource","upSourceMgrList","_getUpstreamSourceManagers","hasUpstream","resultSourceList","upSourceMgr","_getSourceMetaRawOption","_applyTransform","upMgrList","transformOption","fromTransformResult","doThrow","upMgr","upSrcMgr","sourceIndex","getSourceManager","disableTransformOptionMerge","TOOLTIP_NAME_TEXT_STYLE_CSS","TOOLTIP_TEXT_STYLE_RICH","TOOLTIP_VALUE_TEXT_STYLE_CSS","TOOLTIP_VALUE_TEXT_STYLE_RICH","TOOLTIP_LINE_HEIGHT_CSS","HTML_GAPS","RICH_TEXT_GAPS","createTooltipMarkup","getBuilder","fragment","builderMap","section","planLayout","subBlockLen","blocks","thisBlockHasInnerGap","noHeader","thisGapLevelBetweenSubBlocks","subBlock","subGapLevel","__gapLevelBetweenSubBlocks","build","topMarginForOuterGap","gaps","getGap","subMarkupText","buildSubBlocks","html","displayableHeader","header","wrapInlineNameRichText","richText","wrapBlockHTML","nameValue","noName","noValue","noMarker","markerType","markerStr","markupStyleCreator","makeTooltipMarker","markerColor","readableName","valueTypeOption","readableValueList","valueAlignRight","valueCloseToMarker","wrapInlineValueRichText","wrapInlineNameHTML","wrapInlineValueHTML","subMarkupTextList","subBlocks","orderMode","sortBlocks","orderMap","valueAsc","valueDesc","comparator_1","sortParam","buildTooltipMarkup","builder","gapLevelBetweenSubBlocks","encodedContent","topGap","clearfix","marginCSS","leftHasMarker","marginCss","alignRight","paddingStr","alignCSS","wrapRichTextStyle","styles","paddingLeft","retrieveVisualColorForTooltipMarker","visualDrawType","getPaddingFromTooltipModel","TooltipMarkupStyleCreator","richTextStyles","_nextStyleNameId","_generateStyleName","finalStl","defaultSeriesFormatTooltip","tooltipDims","mapDimensionsAll","tooltipDimLen","isValueArr","inlineValue","inlineValueType","formatArrResult","formatTooltipArrayValue","inlineValues","inlineValueTypes","seriesNameSpecified","inlineName","isValueMultipleLine","dimItem","setEachItem","otherDims","inner$1","getSelectionKey","getId","SeriesModel","_selectedDataIndicesMap","dataTask","dataTaskCount","dataTaskReset","sourceManager","getInitialData","wrapData","dataBeforeProcessed","autoSeriesName","_initSelectedMapFromData","themeSubType","fillDataTextStyle","newSeriesOption","task","getCurrentTask","getLinkedData","mainData","getLinkedDataAll","getBaseAxis","coordDimToDataDim","coordDim","getProgressive","getProgressiveThreshold","innerDataIndices","_innerSelect","unselect","selectedMap","nameOrId","toggleSelect","selectedDataIndicesMap","nameOrIds","selectedMode","lastDataIndex","hasItemOption","useColorPaletteOnData","ignoreStyleOnData","hasSymbolVisual","defaultSymbol","visualStyleAccessPath","getSeriesAutoName","dataDims","nameArr","dataDim","cloneShallow","dataTaskProgress","CHANGABLE_METHODS","DOWNSAMPLE_METHODS","wrapMethod","onDataChange","scheduler","pipeline","getPipeline","agentStubMap","ComponentView","render","updateView","updateLayout","updateVisual","seriesModels","createRenderPlanner","pipelineContext","originalLarge","large","originalProgressive","progressiveRender","inner$2","renderPlanner","ChartView","renderTask","renderTaskPlan","renderTaskReset","highlight","toggleHighlight","markUpdateMethod","updateMethod","elSetState","dataIdx","progressMethodMap","incrementalPrepareRender","incrementalRender","ORIGIN_METHOD","RATE","THROTTLE_TYPE","throttle","debounce","currCall","lastCall","lastExec","timer","debounceNextCall","cbArgs","thisDelay","thisDebounce","debounceDelay","createOrUpdate","fnAttr","rate","throttleType","originFn","lastThrottleType","lastRate","inner$3","defaultStyleMappers","defaultColorKey","getStyleMapper","stylePath","styleMapper","visualStyleMapper","getDefaultColorKey","colorKey","seriesStyleTask","createOnAllSeries","performRawSeries","styleModel","getStyle","globalStyle","decalOption","setVisual","colorCallback","dataEach","dataParams","setItemVisual","sharedModel","dataStyleTask","getVisual","existsStyle","ensureUniqueItemVisual","dataColorPaletteTask","overallReset","paletteScopeGroupByType","colorScope","dataAll","idxMap","rawIdx","fromPalette","dataCount","PI$5","defaultLoading","textColor","maskColor","showSpinner","spinnerRadius","mask","labelRect","Scheduler","dataProcessorHandlers","visualHandlers","_stageTaskMap","_dataProcessorHandlers","_visualHandlers","_allHandlers","taskRecord","overallTask","getPerformArgs","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","blockIndex","pipelineId","updateStreamModes","dataLen","threshold","restorePipelines","pipelineMap","preventIncremental","_pipe","prepareStageTasks","stageTaskMap","record","_createSeriesStageTask","_createOverallStageTask","prepareView","__block","performDataProcessorTasks","_performStageTasks","performVisualTasks","stageHandlers","stageHandler","visualType","stageHandlerRecord","seriesTaskMap","overallNeedDirty_1","stub","needSetDirty","performArgs_1","setDirty","dirtyMap","performSeriesTasks","oldSeriesTaskMap","newSeriesTaskMap","getTargetSeries","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","overallTaskReset","oldAgentStubMap","newAgentStubMap","overallProgress","shouldOverallTaskDirty","createStub","stubReset","stubOnDirty","agent","wrapStageHandler","detectSeriseType","stubProgress","clearAllVisual","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","legacyFunc","ecModelMock","apiMock","mockMethods","cond","Clz","colorAll","lightTheme","contrastColor","axisCommon","axisLine","splitLine","splitArea","minorSplitLine","colorPalette","crossStyle","subtextStyle","iconStyle","brushStyle","handleStyle","moveHandleStyle","fillerColor","dataBackground","selectedDataBackground","controlStyle","dayLabel","monthLabel","yearLabel","timeAxis","logAxis","valueAxis","categoryAxis","axisLabel","color0","borderColor0","DatasetModel","_sourceManager","DatasetView","mapDataStorage","registerMap","mapName","rawDef","rawSpecialAreas","records","specialAreas","geoSource","geoJson","geoJSON","features","parsers","retrieveMap","svgXML","ECEventProcessor","cptQuery","dataQuery","otherQuery","condCptType","suffixes_1","dataKeys_1","reserved","propSuffix","suffixPos","eventInfo","packedEvent","check","filterForExposedEvent","host","propOnHost","seriesSymbolTask","legendSymbol","symbolType","keepAspect","symbolRotate","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","seriesSymbolRotate","symbolKeepAspect","dataSymbolTask","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","getItemVisualFromData","getVisualFromData","setItemVisualFromData","PI2$7","CMD$4","DEFAULT_SEARCH_SPACE","getCandidateAnchor","outPt","outDir","projectPointToArc","projectPointToLine","limitToEnds","lineLen","projectedLen","projectPointToRect","tmpPt","nearestPointOnRect","pt","nearestPointOnPath","minDist","pt0","pt1","pt2","dir2","updateLabelLinePoints","labelLineModel","labelLine","labelGuideConfig","textGuideLineConfig","searchSpace","candidates","anchorPoint","anchor","targetTransform","targetInversedTransform","candidate","limitTurnAngle","tmpArr$1","tmpProjPoint","linePoints","minTurnAngle","angleCos","minTurnAngleCos","limitSurfaceAngle","surfaceNormal","maxSurfaceAngle","maxSurfaceAngleCos","HALF_PI","angle2","newAngle","setLabelLineState","isNormal","styleObj","buildLabelLinePath","moveLen","midPoint0","midPoint2","midPoint1","setLabelLineStyle","labelIgnoreNormal","isLabelIgnored","showAbove","labelLineConfig","getLabelLineStatesModels","labelLineName","prepareLayoutList","defaultAttr","localRect","isAxisAligned","minMargin","globalRect","obb","priority","layoutOption","computedLayoutOption","axisAligned","shiftLayout","xyDim","sizeDim","minBound","maxBound","balanceShift","lastPos","adjusted","totalShifts","shiftList","first","last","minGap","maxGap","updateMinMaxGap","squeezeGaps","takeBoundsGap","squeezeWhenBailout","gapThisBound","gapOtherBound","moveDir","moveFromMaxGap","maxSqeezePercent","totalGaps","prevItemRect","squeezePercent","movement","moveForEachLabel","shiftLayoutOnX","leftBound","rightBound","shiftLayoutOnY","topBound","bottomBound","hideOverlap","labelList","displayedLabels","hideEl","emphasisState","labelItem","existsTextCfg","labelGuideIgnore","cloneArr","newPoints","prepareLayoutCallbackParams","hostRect","labelLinePoints","LABEL_OPTION_TO_STYLE_KEYS","dummyTransformable","labelLayoutInnerStore","labelLineAnimationStore","extendWithKeys","LABEL_LAYOUT_PROPS","LabelManager","_labelList","_chartViewList","clearLabels","_addLabel","labelStyle","labelTransform","labelGuide","attachedPos","attachedRot","addLabelsOfSeries","chartView","__model","disableLabelLayout","updateLayoutConfig","createDragHandler","defaultLabelAttr","degreeToRadian","needsUpdateLabelLine","labelLayoutStore","labelsNeedsAdjustOnX","moveOverlap","labelsNeedsAdjustOnY","labelsNeedsHideOverlap","processLabelsOverall","ignoreLabelLineUpdate","_updateLabelLine","_animateLabels","visualStyle","disableLabelAnimation","layoutStore","oldLayout","newProps","oldOpacity","prevStates","oldLayoutSelect","oldLayoutEmphasis","layoutSelect","layoutEmphasis","newLayout","createLegacyDataSelectAction","ecRegisterAction","getSeriesIndices","eventsMap","dispatchAction","handleSeriesLegacySelectEvents","eventPostfix","ecIns","legacyEventName","fromActionPayload","handleLegacySelectEvents","messageCenter","isFromClick","fromAction","createLinearGradient","canvasGradient","createRadialGradient","getCanvasGradient","isClipPathChanged","prevClipPaths","normalizeLineDash","lineType","pathProxyForDraw","styleHasStroke","styleHasFill","doFillPath","originalGlobalAlpha","globalAlpha","doStrokePath","createCanvasPattern","pattern","canvasPattern","createPattern","repeat","DOMMatrix","rotateSelf","scaleSelf","translateSelf","setTransform","brushPath","inBatch","strokePart","firstDraw","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","fillGradient","strokeGradient","fillPattern","strokePattern","__canvasFillGradient","__canvasStrokeGradient","__canvasFillPattern","__canvasStrokePattern","fillStyle","strokeStyle","ctxLineDash","lineScale_1","needsRebuild","brushImage","drawImage","brushText","hasLineDash","lineScale_2","strokeText","fillText","SHADOW_NUMBER_PROPS","STROKE_PROPS","bindCommonProps","prevStyle","forceSetAll","flushPathDrawn","globalCompositeOperation","bindPathAndTextCommonStyle","prevEl","newLineWidth","bindImageStyle","setContextTransform","updateClipStatus","allClipped","isTransformChanged","m0","DRAW_TYPE_PATH","DRAW_TYPE_IMAGE","DRAW_TYPE_TEXT","DRAW_TYPE_INCREMENTAL","canPathBatch","batchFill","batchStroke","brushSingle","isLast","__isRendered","prevElClipPaths","forceSetTransform","forceSetStyle","save","canBatchPath","lastDrawType","brushIncremental","temporalDisplayables","innerScope","len_1","returnFalse","createDom","newDom","newDomStyle","Layer","motionBlur","lastFrameAlpha","virtual","maxRepaintRectCount","__firstTimePaint","__used","__drawIndex","__startIndex","__endIndex","__prevStartIndex","__prevEndIndex","domStyle","onselectstart","webkitUserSelect","userSelect","webkitTapHighlightColor","domBack","ctxBack","getElementCount","initContext","setUnpainted","createBackBuffer","createRepaintRects","prevList","mergedRepaintRects","full","pendingRect","addRectToMergePool","isMerged","minDeltaArea","bestRectToMergeIdx","mergedRect","pendingRect_1","aArea","bArea","pendingArea","deltaArea","shouldPaint","prevRect","curRect","hasIntersections","_paintRects","debugGetPaintRects","clearAll","clearColor","repaintRects","haveMotionBLur","doClear","clearRect","clearColorGradientOrPattern","__canvasGradient","__painter","fillRect","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","isLayerValid","__builtin__","createRoot","domRoot","CanvasPainter","_zlevelList","_prevDisplayList","_layers","_layerConfig","_needsManuallyCompositing","singleCanvas","_opts","_singleCanvas","rootStyle","innerHTML","zlevelList","layers","_width","_height","_domRoot","rootCanvas","mainLayer","isSingleCanvas","getViewportRootOffset","viewportRoot","paintAll","_redrawId","_paintList","_paintHoverList","_hoverlayer","getLayer","getHoverLayer","paintOne","redrawId","_updateLayerStatus","_doPaintList","needsRefreshHover","_compositeManually","self_1","eachLayer","eachBuiltinLayer","layerList","zi","_loop_1","this_1","useTimer","now","startTime","firstEl","repaint","repaintRect","_doPaintEl","dTime","draw","currentLayer","insertLayer","layersMap","prevLayer","prevDom","insertBefore","getLayers","updatePrevLayer","incrementalLayerCount","prevZlevel","_clearLayer","layerConfig","_zlevel","delLayer","removeChild","display","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","width_1","height_1","ctx_1","renderToCanvas","whIdx","wh","cwh","plt","prb","defaultView","getComputedStyle","canvas","shadowBlurSize","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","imgShape","findEventDispatcher","returnFirstMatch","found","wmUniqueIndex","WeakMap","_id","_guard","enumerable","configurable","has","TypeError","Triangle","Diamond","Pin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","square","diamond","pin","arrow","triangle","symbolShapeMakers","thickness","symbolBuildProxies","SymbolClz","proxySymbol","symbolPathSetColor","symbolStyle","__isEmptyBrush","createSymbol","symbolPath","setColor","decalMap","decalCache","decalKeys","createOrUpdatePatternFromDecal","decalObject","getDevicePixelRatio","getZr","isSVG","oldPattern","decalOpt","maxTileWidth","maxTileHeight","setPatternnSource","isValidKey","cache","svgElement","normalizeDashArrayX","normalizeDashArrayY","symbolArray","normalizeSymbolArray","lineBlockLengthsX","getLineBlockLengthX","lineBlockLengthY","getLineBlockLengthY","svgRoot","createSVGElement","pSize","getPatternSize","brushDecal","svgWidth","svgHeight","xlen","symbolRepeats","attrName","ySum","yId","yIdTotal","xId0","symbolYId","xId1","xId1Total","xSum","top_1","symbolXId","brushSymbol","isAllString","dashValue","isAllNumber","dashValue_1","blockLength","decalVisual","hasItemVisual","assert$1","each$3","isFunction$1","isObject$2","version$1","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_DEFAULT","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_CHART_DATA_CUSTOM","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_BRUSH","PRIORITY_VISUAL_ARIA","PRIORITY_VISUAL_DECAL","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","CHART_ITEM","ARIA","DECAL","IN_MAIN_PROCESS_KEY","OPTION_UPDATED_KEY","STATUS_NEEDS_UPDATE_KEY","ACTION_REG","CONNECT_STATUS_KEY","CONNECT_STATUS_PENDING","CONNECT_STATUS_UPDATING","CONNECT_STATUS_UPDATED","createRegisterEventWithLowercaseECharts","isDisposed","disposedWarning","toLowercaseNameAndCallEventful","createRegisterEventWithLowercaseMessageCenter","MessageCenter","messageCenterProto","updateDirectly","updateMethods","doConvertPixel","doDispatchAction","flushPendingActions","triggerUpdatedEvent","bindRenderedEvent","bindMouseEvent","renderComponents","renderSeries","performPostUpdateFuncs","createExtensionAPI","enableConnect","setTransitionOpt","markStatusToUpdate","applyChangedStates","ECharts","_chartsViews","_chartsMap","_componentsViews","_pendingActions","themeStorage","_dom","defaultRenderer","defaultUseDirtyRect","__ECHARTS__DEFAULT__RENDERER__","devUseDirtyRect","__ECHARTS__DEFAULT__USE_DIRTY_RECT__","_zr","_throttledZrFlush","_coordSysMgr","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_messageCenter","_labelManager","_initEvents","_onframe","remainTime","_model","getDom","notMerge","lazyUpdate","transitionOpt","setTheme","getSvgDataURL","toDataURL","getDataURL","excludeComponents","excludesComponentViews","__viewId","getConnectedDataURL","isSvg","groupId","MAX_NUMBER","connectedGroups","left_1","right_1","bottom_1","canvasList_1","dpr_1","instances$1","chart","getSvgDom","targetCanvas","zr_1","content_1","getSvgRoot","connectedBackgroundColor","convertToPixel","convertFromPixel","containPixel","findResult","containPoint","parsedFinder","MOUSE_EVENT_NAMES","eveName","isGlobalOut","dataModel","eventData","eventActionMap","actionType","DOM_ATTRIBUTE_KEY","_loadingFX","showLoading","hideLoading","loadingEffects","makeActionFromEvent","eventObj","actions","updateLabelLayout","labelManager","isComponent","viewList","viewMap","__alive","doPrepare","requireNewView","viewId","classType","Clazz","__id","__ecComponentInfo","callView","excludeSeriesId","excludeSeriesIdMap","modelId","notBlur","prepareAndUpdate","coordSysMgr","componentDirtyList","componentView","seriesDirtyMap","coordSysList","chartsMap","escapeConnect","actionWrap","actionInfo","cptTypeTmp","cptType","payloads","batched","batch","eventObjBatch","isSelectChange","isStatusChange","batchItem","action","newObj","pendingActions","dispatcher","dirtyList","updateZ","updateStates","__transientTransitionOpt","updateBlend","updateHoverLayerStatus","postUpdateFuncs","applyElementStates","newStates","elCount","preventUsingHoverLayer","preventAutoZ","stateAnimationModel","enableAnimation","class_1","getComponentByElement","modelInfo","updateConnectedChartsStatus","charts","otherChart","action_1","otherCharts_1","transOpt","fromOpt","toOpt","finderOpt","fromResult","toResult","toSeries","dimension","echartsProto","one","wrapped","args2","postInitFuncs","idBase","groupIdBase","init$1","existInstance","getInstanceByDom","clientWidth","clientHeight","postInitFunc","connect","disConnect","disconnect","dispose$1","getInstanceById","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","processor","normalizeRegister","registerPostInit","registerPostUpdate","postUpdateFunc","registerAction","registerCoordinateSystem","coordSysCreator","getCoordinateSystemDimensions","getDimensionsInfo","registerLayout","layoutTask","registerVisual","visualTask","targetList","defaultPriority","__raw","registerLoading","loadingFx","extendComponentModel","extendComponentView","extendSeriesModel","extendChartView","setCanvasCreator","getMap","registerTransform","dataTool","dataIndexMapValueLength","valNumOrArrLengthMoreThan2","defaultKeyGetter","DataDiffer","oldArr","oldKeyGetter","newKeyGetter","diffMode","_old","_new","_oldKeyGetter","_newKeyGetter","_diffModeMultiple","_add","_update","updateManyToOne","_updateManyToOne","updateOneToMany","_updateOneToMany","_remove","execute","_executeOneToOne","newDataIndexMap","oldDataKeyArr","newDataKeyArr","_initIndexMap","oldKey","newIdxMapVal","newIdxMapValLen","newIdx","_performRestAdd","_executeMultiple","oldDataIndexMap","oldIdxMapVal","oldIdxMapValLen","newKey","idxMapValLen","keyArr","keyGetterName","cbModeMultiple","idxMapVal","summarizeDimensions","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","coordDimIndex","getOrCreateEncodeArr","isExtraCoord","mayLabelDimType","defaultTooltip","encodeArr","dataDimsOnCoord","encodeFirstDimNotExtra","dimArr","encodeLabel","encodeTooltip","getDimensionTypeByAxis","axisType","DataDimensionInfo","mathFloor","isObject$3","map$1","UNDEFINED","INDEX_NOT_FOUND","ID_PREFIX","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","defaultDimValueGetters","prepareInvertedIndex","getIndicesCtor","prepareStorage","getRawIndexWithoutIndices","getRawIndexWithIndices","getIdNameFromStore","makeIdFromName","normalizeDimensions","validateDimensions","cloneListForMapAndSample","getInitialExtent","setItemDataAndSeriesIndex","transferProperties","List","_rawCount","_storage","_storageArr","_nameList","_idList","_visual","_layout","_itemVisuals","_itemLayouts","_graphicEls","_rawExtent","_extent","_approximateExtent","_calculationInfo","TRANSFERABLE_METHODS","dimensionInfos","invertedIndicesMap","dimInfoInput","dimensionInfo","dimensionName","createInvertedIndices","_nameDimIdx","_nameOrdinalMeta","itemId","_idDimIdx","_idOrdinalMeta","_dimensionInfos","_dimensionsSummary","_invertedIndicesMap","getDimension","getDimensionsOnCoord","mapDimension","dimensionsSummary","initData","nameList","dimValueGetter","notProvider","_rawData","_indices","_dontMakeIdFromName","_nameRepeatCount","defaultDimValueGetter","_dimValueGetter","_dimValueGetterArrayRows","arrayRows","_initDataFromProvider","appendValues","values","dimLen","rawExtent","rawExtentArr","storageArr","emptyDataItem","sourceIdx","dimIdx","dimRawExtent","append","dimensionInfoMap","idList","isFormatOriginal","dimStorage","getIndices","newIndices","thisCount","buffer","getByDimIdx","dimStore","getValues","getDataExtent","dimData","initialExtent","currEnd","useRaw","getApproximateExtent","setApproximateExtent","getSum","getMedian","dimDataArray","sortedDimDataArray","invertedIndices","rawIndex","indicesOfNearest","maxDistance","nearestIndices","minDiff","nearestIndicesLen","ctxCompat","fCtx","dimNames","dimIndices","filterSelf","dim0","selectRange","originalCount","quickFinished","dimStorage2","val2","dimk","mapArray","tmpRetValue","retValue","rawExtentOnDim","downSample","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","sampleFrameIdx","lttbDownSample","valueDimension","sampledIndex","currentRawIndex","maxArea","area","nextRawIndex","nextFrameStart","nextFrameEnd","avgX","avgY","frameStart","frameEnd","pointAX","pointAY","otherList","thisList","visual","kvObj","itemVisual","itemVisuals","setLayout","getLayout","getItemLayout","setItemLayout","clearItemLayouts","setItemGraphicEl","dimensionInfoList","injectFunction","originalMethod","__wrappedMethods","getDimValueSimply","objectRows","keyedColumns","original","typedArray","chunk","DataCtor","oldStore","oldLen","newStore","excludeDimensions","allDimensions","originalStorage","cloneChunk","originalChunk","childECData","thisECData","nameDimIdx","idDimIdx","nameRepeatCount","nmCnt","completeDimensions","sysDims","dataDimNameMap","coordDimNameMap","getDimCount","dimDefItemRaw","userDimName","encodeDef","encodeDefaulter","encodeDefMap","dataDimsRaw","validDataDims","resultDimIdxOrName","resultDimIdx","applyDim","availDimIdx","sysDimItemRaw","sysDimItemDimsDef","sysDimItemOtherDims","sysDimItem","sysDimItemDimsDefItem","generateCoord","generateCoordCount","fromZero","genName","optDimCount","createDimensions","dimensionsCount","CoordSysInfo","coordSysName","coordSysDims","axisMap","categoryAxisMap","getCoordSysInfoBySeries","fetch","fetchers","cartesian2d","xAxisModel","yAxisModel","isCategory","firstCategoryDimIndex","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","parallelModel","parallelAxisIndex","axisIndex","axisModel","axisDim","enableDataStack","byIndex","stackedCoordDimension","mayStack","stackedByDimInfo","stackedDimInfo","stackedDimCoordDim_1","stackedDimType","stackedDimCoordIndex_1","isCalculationCoord","isDimensionStacked","stackedDim","getStackedDimension","targetDim","createListFromArray","registeredCoordSys","coordSysInfo","coordSysDimDefs","useEncodeDefaulter","dimInfoList","hasNameEncode","categoryAxisModel","getOrdinalMeta","stackCalculationInfo","isNeedCompleteOrdinalData","sampleItem","firstDataNotNull","Scale","setting","_setting","getSetting","unionExtent","unionExtentFromData","getExtent","setExtent","thisExtent","isInExtentRange","isBlank","_isBlank","setBlank","OrdinalMeta","_needCollect","needCollect","_deduplication","deduplication","createByAxisModel","dedplication","getOrdinal","category","_getOrCreateMap","roundNumber","intervalScaleNiceTicks","splitNumber","minInterval","maxInterval","span","intervalPrecision","getIntervalPrecision","niceTickExtent","fixExtent","contain$1","normalize$1","scale$2","OrdinalScale","_ordinalMeta","_categorySortInfo","getCategoryIndex","getTicks","ticks","getMinorTicks","setCategorySortInfo","getCategorySortInfo","beforeSortIndex","displayIndex","ordinalNumber","getLabel","cateogry","niceTicks","niceExtent","roundNumber$1","IntervalScale","_interval","_intervalPrecision","getInterval","setInterval","_niceExtent","expandToNicedExtent","safeLimit","lastNiceTick","minorTicks","nextTick","prevTick","minorTicksGroup","minorInterval","minorTick","dataNum","expandSize","fixMax","fixMin","STACK_PREFIX","LARGE_BAR_MIN_WIDTH","LargeArr","getSeriesStackId","getAxisKey","getLayoutOnAxis","baseAxis","axisKey","bandWidth","getBandWidth","stackId","widthAndOffsets","doCalBarWidthAndOffset","offsetCenter","prepareLayoutBarSeries","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","cartesian","cnt","axisMinGaps","valuesInAxis","makeColumnLayout","seriesInfoList","axisExtent","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","columnsMap","seriesInfo","columnsOnAxis","autoWidthCount","categoryGap","stacks","minWidth","categoryGapPercent","columnCount","barGapPercent","autoWidth","column","finalWidth","widthSum","lastColumn","retrieveColumnLayout","barWidthAndOffset","lastStackCoords","columnLayoutInfo","columnOffset","columnWidth","getOtherAxis","barMinHeight","valueDim","baseDim","stacked","isValueAxisH","isHorizontal","valueAxisStart","getValueAxisStart","baseValue","baseCoord","dataToPoint","largeLayout","coordLayout","getRect","valueAxisHorizontal","valueDimIdx","largePoints","largeBackgroundPoints","largeDataIndices","valuePair","pointsOffset","idxOffset","backgroundStart","toGlobalCoord","dataToCoord","bisect","TimeScale","settings","_minLevelUnit","labelFormatter","innerTicks","getIntervalTicks","_approxInterval","getFullYear","getMonth","getDate","approxTickNum","scaleIntervalsLen","scaleIntervals","isUnitValueSame","valueA","valueB","dateA","dateB","isSame","isSameYear","isSameMonth","isSameDay","isSameHour","isSameMinute","isSameSecond","isSameMilliSecond","getDateInterval","approxInterval","daysInMonth","getMonthInterval","APPROX_ONE_MONTH","getHourInterval","getMinutesAndSecondsInterval","isMinutes","getMillisecondsInterval","getFirstTimestampOfUnit","unitName","outDate","bottomUnitName","unitNames","iter","addTicksInSpan","minTimestamp","maxTimestamp","getMethodName","setMethodName","isDate","dateTime","notAdd","addLevelTicks","lastLevelTicks","levelTicks","newAddedTicks","isFirstLevel","startTick","endTick","getterName","setterName","levelsTicks","currentLevelTicks","tickCount","lastLevelTickCount","primaryTimeUnit","nextPrimaryTimeUnit","levelTicksRemoveDuplicated","tickValue","targetTickNum","levelsTicksInExtent","maxLevel","scaleProto","intervalScaleProto","getPrecisionSafe$1","roundingErrorFix","mathFloor$1","mathCeil","mathPow$1","mathLog","LogScale","_originalScale","originalScale","originalExtent","powVal","_fixMin","fixRoundingError","_fixMax","originalVal","ScaleRawExtentInfo","_prepareParams","_dataMin","_dataMax","isOrdinal","_isOrdinal","_needCrossZero","getNeedCrossZero","modelMinRaw","_modelMinRaw","_modelMinNum","parseAxisModelMinMax","modelMaxRaw","_modelMaxRaw","_modelMaxNum","_axisDataLen","getCategories","boundaryGap","boundaryGapArr","_boundaryGapInner","dataMin","dataMax","axisDataLen","boundaryGapInner","minFixed","maxFixed","determinedMin","_determinedMin","determinedMax","_determinedMax","modifyDataMinMax","minMaxName","frozen","DATA_MIN_MAX_ATTR","setDeterminedMinMax","DETERMINED_MIN_MAX_ATTR","ensureScaleRawExtentInfo","rawExtentInfo","minMax","getScaleExtent","scaleType","rawExtentResult","barSeriesModels","isBaseAxisAndHasBarSeries_1","adjustedScale","adjustScaleForOverflow","axisLength","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","niceScaleExtent","extentInfo","createScaleByModel","ifAxisCrossZero","makeLabelFormatter","getLabelModel","categoryTickStart","getAxisRawValue","estimateLabelUnionRect","realNumberScaleTicks","categoryScaleExtent","axisLabelModel","unrotatedSingleRect","singleRect","rotateTextRect","textRect","rotateRadians","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getOptionCategoryInterval","shouldShowAllLabels","getDataDimensionsOnAxis","dataDimMap","unionAxisExtentFromData","seriesExtent","AxisModelCommonMixin","getCoordSysModel","createList","dataStack$1","createScale","mixinAxisModelCommonMethods","helper","EPSILON$3","isAroundEqual$1","contain$2","Region","geometries","cp","exterior","loopGeo","interiors","transformTo","newRegion","decode","json","UTF8Encoding","jsonCompressed","encodeScale","UTF8Scale","geometry","coordinates","decodePolygon","encodeOffsets","coordinate","prevX","prevY","parseGeoJSON","nameProperty","featureObj","region","inner$4","createAxisLabels","makeCategoryLabels","makeRealNumberLabels","createAxisTicks","tickModel","makeCategoryTicks","labelModel","makeCategoryLabelsActually","labels","labelCategoryInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","numericLabelInterval","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","ticksCache","optionTickInterval","tickCategoryInterval","labelsResult","formattedLabel","rawLabel","autoInterval","calculateCategoryInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtent0","axisExtent1","getRotate","categoryInterval","onlyTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tickObj","NORMALIZED_EXTENT","Axis","onBand","containData","fixExtentWithBands","coordToData","pointToData","getTicksCoords","getTickModel","ticksCoords","tickVal","alignWithLabel","fixOnBandTicksCoords","getMinorTicksCoords","minorTickModel","minorTicksCoords","getViewLabels","nTick","ticksLen","diffSize","crossLen","shift_1","ticksItem","parseGeoJson","number","format$1","ecUtil","GRAPHIC_KEYS","graphic$1","RELATIONAL_EXPRESSION_OP_ALIAS_MAP","RegExpEvaluator","rVal","condValue","_condVal","RegExp","lVal","ConstConditionInternal","AndConditionInternal","OrConditionInternal","NotConditionInternal","RelationalConditionInternal","needParse","valueParser","getValue","tarValRaw","valueGetterParam","tarValParsed","subCondList","parseOption","exprOption","getters","isObjectNotArray","and","parseAndOrOption","or","not","parseNotOption","parseRelationalOption","subOptionArr","prepareGetValue","exprKeys","parserName","keyRaw","valueGetterAttrMap","condValueRaw","condValueParsed","evaluator","ConditionalExpressionParsed","_cond","parseConditionalExpression","filterTransform","dimLoose","sampleLog","sortTransform","orderExprList","orderDefList","orderExpr","errMsg_1","errMsg_2","comparator","item0","item1","orderDef","LineSeriesModel","legendHoverLink","endLabel","smoothMonotone","showSymbol","showAllSymbol","connectNulls","sampling","getDefaultLabel","labelDims","vals","getDefaultInterpolatedLabel","interpolatedValue","Symbol","seriesScope","updateData","_createSymbol","driftSymbol","_symbolType","stopSymbolAnimation","toLastFrame","getSymbolPath","setZ","setDraggable","getSymbolSize","disableAnimation","_updateCommon","_sizeX","_sizeY","_seriesModel","emphasisItemStyle","blurItemStyle","selectItemStyle","symbolOffset","hoverScale","emphasisModel","visualColor","pathStyle","symbolInnerColor","liftZ","z2Origin","_z2","useNameLabel","getLabelDefaultText","scaleRatio","setSymbolScale","fadeOut","animationOpt","fadeLabel","symbolNeedsDraw","isIgnore","clipShape","normalizeUpdateOpt","makeSeriesScope","SymbolDraw","SymbolCtor","_SymbolCtor","oldData","symbolUpdateOpt","getSymbolPoint","symbolEl","oldIdx","_getSymbolPoint","isPersistent","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","prepareDataCoordInfo","valueOrigin","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDataOffset","stackResultDim","dataDimsForPoint","getStackedOnPoint","dataCoordInfo","stackedData","supportFloat32Array","Float32ArrayCtor","createFloat32Array","diffData","diffResult","idx1","lineAnimationDiff","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","oldPoints","diffItem","pointAdded","oldIdx2","newIdx2","currentX","currentY","newDataDimsForPoint","oldPt","stackedOnPoint","oldDataDimsForPoint","newPt","newStackedOnPt","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","i2","idx2","stackedOnCurrent","stackedOnNext","mathMin$5","mathMax$5","isPointNull","drawSegment","segLen","allLen","cpx0","cpy0","tmpK","ratioNextSeg","nextCpx0","nextCpy0","lenPrevSeg","lenNextSeg","ECPolylineShape","ECPolyline","getPointOn","xOrY","isDimX","nRoot","t_1","ECPolygonShape","ECPolygon","stackedOnPoints","stackedOnSmooth","createGridClipPath","hasAnimation","getArea","isAxisInversed","duringCb","createPolarClipPath","sectorArea","isRadial","createClipPath","isCoordinateSystemType","isPointsSame","points1","points2","bboxFromPoints","minX","minY","getBoundingDiff","min1","max1","getSmooth","getStackedOnPoints","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","nextPt","stepPt2","getVisualGradient","visualMetaList","visualMeta","getAxis","stops","stopLen","outerColors","tinyExtent","minCoord","maxCoord","coordSpan","getIsIgnoreFunc","isAuto","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","labelMap","availSize","isPointNull$1","getLastIndexNotNull","getPointAtIndex","getIndexRange","prevIndex","nextIndex","createLineClipPath","lineView","endLabelModel_1","showEndLabel","valueAnimation_1","data_1","labelAnimationRecord_1","lastFrameIndex","clipRect","_endLabelOnDuring","_endLabel","originalX","originalY","getEndLabelStateSpecified","endLabelModel","isBaseInversed","LineView","lineGroup","symbolDraw","_symbolDraw","_lineGroup","lineStyleModel","areaStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","_polyline","_polygon","isAreaChart","isIgnoreFunc","__temp","clipShapeForSymbol","_clipShapeForSymbol","_step","_initSymbolLabelAnimation","_newPolyline","_newPolygon","_initOrUpdateEndLabel","_stackedOnPoints","_points","_doUpdateAnimation","lineJoin","emphasisLineStyle","stackedOnSeries","changePolyState","_changePolyState","_valueOrigin","isHorizontalOrRadial","isAxisInverse","seriesDuration","seriesDalay","seriesDalayValue","polarClip","pointToCoord","gridClip","ratio","data_2","animationRecord","dataIndexRange","endValue","__points","updatedDataInfo","diffStatus","ptIdx","pointsLayout","forceStoreInTypedArray","useTypedArray","dimInfo0","dimInfo1","dimIdx0","dimIdx1","tmpIn","tmpOut","samplers","average","nearest","indexSampler","dataSample","sampler","nameLocation","nameRotate","nameTruncate","nameTextStyle","triggerEvent","onZero","onZeroAxisIndex","axisTick","showMinLabel","showMaxLabel","primary","logBase","axisDefault","AXIS_TYPES","axisModelCreator","BaseAxisModelClass","extraDefaultOption","AxisModel","getAxisType","thisOption","__ordinalMeta","CartesianAxisModel","extraOption","categorySortInfo","PI$6","AxisBuilder","nameDirection","tickDirection","labelDirection","handleAutoShown","transformGroup","_transformGroup","hasBuilder","builders","getGroup","innerTextLayout","axisRotation","textRotation","rotationDiff","makeAxisEventDataBase","isLabelSilent","tooltipOpt","shown","arrows","arrowSize","arrowOffset","symbolWidth_1","symbolHeight_1","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","gapSignal","isNameLocationCenter","labelLayout","nameRotation","axisNameAvailableWidth","endTextLayout","truncateOpt","nameTruncateMaxWidth","formatterParams","__fullText","targetType","textRotate","onLeft","tickEls","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","lastTick","ignoreEl","isTwoLabelOverlapped","firstRect","nextRect","mRotationBack","createTicks","tickTransform","tickEndCoord","tickLineStyle","anidPrefix","tickCoord","tickEl","minorTickLineStyle","minorTicksEls","axisLabelShow","labelMargin","labelRotation","rawCategoryData","itemLabelModel","rawCategoryItem","collect","axesInfo","seriesInvolved","coordSysAxesInfo","coordSysMap","collectAxesInfo","collectSeriesInfo","globalTooltipModel","globalAxisPointerModel","linksOption","linkGroups","axisPointerEnabled","coordSysKey","makeKey","axesInfoInCoordSys","coordSysModel","baseTooltipModel","getAxes","saveTooltipAxisInfo","getTooltipAxes","triggerAxis","cross","tooltipAxes","baseAxes","otherAxes","fromTooltip","triggerTooltip","axisPointerModel","axisPointerShow","isHandleTrigger","makeAxisPointerModel","snap","involveSeries","axisInfo","useHandle","linkGroup","groupIndex","getLinkGroupIndex","mapper","tooltipAxisPointerModel","volatileOption","field","labelOption","tooltipAxisPointerLabelShow","seriesTooltipTrigger","seriesTooltipShow","seriesDataCount","linkOption","checkPropInLink","linkPropValue","axisPropValue","fixValue","getAxisInfo","getAxisPointerModel","axisPointerClazz","AxisView","axisPointerClass","_doUpdateAxisPointerClass","updateAxisPointer","_axisPointer","_disposeAxisPointer","forceRender","getAxisPointerClass","registerAxisPointerClass","layout$1","gridModel","grid","otherAxisOnZeroOf","getAxesOnZeroOf","rawAxisPosition","axisPosition","rectBound","axisOffset","posBound","onZeroCoord","dirMap","labelInside","isCartesian2DSeries","findAxisModels","axisModelMap","inner$5","rectCoordAxisBuildSplitArea","axisView","axisGroup","splitAreaModel","areaColors","gridRect","areaColorsLen","lastSplitAreaColors","splitAreaColors","newSplitAreaColors","colorIndex","cIndex","rectCoordAxisHandleRemove","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","axisBuilder","elementType","cartesians","getCartesians","otherAxisType","axisElementBuilders","splitLineModel","lineColors","minorSplitLineModel","CartesianXAxisView","CartesianYAxisView","seriesModelMap","seriesRecords","axisRecordMap","prepareDataExtentOnAxis","calculateFilteredExtent","shrinkAxisExtent","axesModelMap","xAxis","yAxis","xRawExtentInfo","yRawExtentInfo","prepareAxisRecord","condExtent","seriesRecord","xAxisRecord","yAxisRecord","condDimMap","tarDimMap","condAxis","tarAxisRecord","addCondition","axisRecord","addTarget","condDims","tarDims","tarDimExtents","initExtent","condDimsLen","tarDimsLen","singleCondDim","singleTarDim","condVal","tarDimExtent","tarAxisExtent","tarExtent","GridModel","containLabel","GridView","Cartesian","_dimList","addAxis","cartesian2DDimensions","canCalculateAffineTransform","Cartesian2D","calcAffineTransform","_transform","_invTransform","xAxisScale","yAxisScale","xScaleExtent","yScaleExtent","xScaleSpan","yScaleSpan","translateX","translateY","axisX","axisY","toLocalCoord","xVal","yVal","clampData","xScale","yScale","xAxisExtent","yAxisExtent","xExtent","getGlobalExtent","yExtent","Axis2D","coordExtent","Grid","_coordsMap","_coordsList","_axesMap","_axesList","_initCartesian","axesMap","_updateScale","onZeroRecords","fixAxisOnZero","ignoreContainLabel","boxLayoutParams","isContainLabel","axesList","adjustAxes","labelUnionRect","updateAxisTransform","axesMapOnDim","getCartesian","xAxisIndex","yAxisIndex","coordList","_findConvertTarget","coordsList","axisPositionUsed","axesCount","createAxisCreator","isAxisUsedInTheGrid","otherAxis","grids","otherAxisDim","canOnZeroToAxis","getOnZeroRecordKey","coordBase","axisExtentSum","BaseBarSeriesModel","getMarkerPosition","offsetIndex","barMinAngle","largeThreshold","progressiveChunkMode","BarSeriesModel","brushSelector","selectors","roundCap","showBackground","realtimeSort","SausageShape","SausagePath","dr","rCenter","unitStartX","unitStartY","unitEndX","unitEndY","lessThanCircle","BAR_BORDER_WIDTH_QUERY","BAR_BORDER_RADIUS_QUERY","_eventPos","mathMax$6","mathMin$6","getClipArea","coordSysClipArea","expandWidth","BarView","_isFirstFrame","removeOnRenderedListener","_updateDrawMode","coordinateSystemType","_isLargeDraw","_renderLarge","_renderNormal","_clear","_updateLargeClip","_incrementalRenderLarge","isLargeDraw","animationModel","axis2DModel","_initSort","_onRendered","_updateSort","needsClip","drawBackground","backgroundModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","isInitSort","isChangeOrder","createBackground","bgLayout","bgEl","createBackgroundEl","isClipped","elementCreator","updateStyle","updateRealtimeAnimation","newIndex","oldIndex","createBackgroundShape","bgGroup","_backgroundGroup","createLarge","_removeBackground","_dataSort","mappedValue","_isDataOrderChanged","oldOrder","oldCount","lastValue","isOrderChanged","newOrder","axisId","sortInfo","coordSysBoundingRect","signWidth","signHeight","clipped","signR","__dataIndex","animateProperty","sector","sectorShape","animateTarget","seriesTarget","axisTarget","fixedLineWidth","getLineWidth","signX","signY","isZeroOnPolar","isPolar","labelPositionOutside","rawLayout","LagePathShape","LargePath","startPoint","__startPoint","baseDimIdx","__baseDimIdx","backgroundStartPoint","__largeDataIndices","__barWidth","setLargeBackgroundStyle","setLargeStyle","largePathUpdateDataIndex","largePath","largePathFindDataIndex","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","barBaseVal","barValueVal","ElementClz","createListSimply","dimensionsInfo","LegendVisualProvider","getDataWithEncodedVisual","_getDataWithEncodedVisual","_getRawData","getAllNames","containName","dataWithEncodedVisual","PieSeriesModel","legendVisualProvider","_defaultLabelLine","labelLineNormalOpt","labelLineEmphasisOpt","minAngle","minShowLabelAngle","selectedOffset","percentPrecision","stillShowZeroSum","bleedMargin","distanceToLabelLine","avoidLabelOverlap","animationTypeUpdate","RADIAN","adjustSingleSide","viewLeft","viewTop","farthestX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","rA","rA2","recalculateX","items","topSemi","bottomSemi","labelAlignTo","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","rightmostX","isPositionCenter","isAlignToEdge","realTextWidth","targetTextWidth","pieLabelLayout","hasLabelRotate","minShowLabelRadian","setNotShow","isLabelShown","labelLineLen","labelLineLen2","midAngle","isLabelInside","notShowLabel","getSectorCornerRadius","PiePiece","firstCreate","_updateLabel","visualOpacity","PieView","sectorGroup","_sectorGroup","piePiece","itemLayout","PI2$8","RADIAN$1","getViewRect","pieLayout","validDataCount","unitRadian","roseType","restAngle","valueSumLargerThanMinAngle","currentAngle","angle_1","layout_1","layout_2","dataFilter","legendModels","ScatterSeriesModel","BOOST_SIZE_THRESHOLD","LargeSymbolPathShape","LargeSymbolPath","symbolProxy","symbolProxyShape","canBoost","softClipShape","findDataIndex","LargeSymbolDraw","_incremental","_setCommon","endIndex","byteOffset","_clearIncremental","isIncremental","extrudeShadow","ecData_1","ScatterView","_updateSymbolDraw","_getClipShape","clipArea","IndicatorAxis","radiusExtent","Radar","radarModel","_indicatorAxes","getIndicatorModels","indicatorModel","indicatorAxis","getIndicatorAxes","indicatorIndex","coordToPoint","minRadianDiff","closestAxis","closestAxisIdx","viewSize","indicatorAxes","radarSeries","increaseInterval","fixedMin","fixedMax","nicedSplitNumber","pixel","radarList","valueAxisDefault","defaultsShow","RadarModel","showName","nameFormatter","indicatorModels","indicatorOpt","iNameTextStyle","innerIndicatorOpt","indName","_indicatorModels","indicator","axisBuilderAttrs$1","RadarView","_buildAxes","_buildSplitLineAndArea","axisBuilders","showSplitLine","showSplitArea","splitLineColors","splitLineColorsArr","splitAreaColorsArr","splitLines","splitAreas","getColorIndex","areaOrLine","areaOrLineColorList","ticksRadius","realSplitNumber_1","axesTicksPoints","prevPoints","RadarSeriesModel","nameToDisplay","getTooltipPosition","radarIndex","normalizeSymbolSize","RadarView$1","createSymbol$1","updateSymbols","symbolGroup","__dimIdx","getInitialPoints","itemGroup","polygonIgnore","stateIgnore","itemHoverStyle","pathEmphasisState","radarLayout","isValidPoint","getValueMissingPoint","firstPoint","radarBackwardCompat","polarOptArr","polarNotRadar_1","polarOpt","polarIndex","geoCoord","points$1","fixNanhai","coordsOffsetMap","fixTextCoords","coordFix","geoCoordMap","fixGeoCoords","points$2","fixDiaoyuIsland","inner$6","geoJSONLoader","load","mapRecord","parsed","regionName","specialArea","getBoundingRect$1","regionRect","inner$7","geoSVGLoader","originRoot","buildGraphic","makeGraphic","hostKey","rootMap","originRootHostKey","removeGraphic","loaders","geoSourceManager","regionsMap","nameCoordMap","mapRecords","singleSource","results","mapNotExistsError","MapSeries","needsDrawMap","seriesGroup","getRegion","dataNameMap","toAppendNames","name_2","getMapType","getHostGeoModel","geoIndex","getRegionModel","seriesNames","otherIndex","originalData","setZoom","setCenter","aspectScale","showLegendSymbol","boundingCoords","scaleLimit","areaColor","ATTR","take","resourceKey","userKey","getStore","release","uKey","isTaken","RoamController","mousedownHandler","_mousedownHandler","mousemoveHandler","_mousemoveHandler","mouseupHandler","_mouseupHandler","mousewheelHandler","_mousewheelHandler","pinchHandler","_pinchHandler","controlType","_opt","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","isDragging","_dragging","isPinching","_pinching","setPointerChecker","pointerChecker","isAvailableBehavior","oldX","oldY","newX","newY","shouldZoom","shouldMove","absWheelDeltaDelta","factor","checkPointerAndTrigger","absDelta","scrollDelta","controller","behaviorToCheck","contollerEvent","updateViewOnPan","controllerHost","updateViewOnZoom","zoomDelta","zoomX","zoomY","zoomLimit","newZoom","zoomMin","zoomMax","zoomScale","IRRELEVANT_EXCLUDES","onIrrelevantElement","targetCoordSysModel","getFixedItemStyle","MapDraw","_controller","_controllerHost","_regionsGroup","mapOrGeoModel","fromView","isGeo","mapSeries","_updateBackground","regionsGroup","transformInfo","getTransformInfo","isFirstDraw","targetScaleX","targetScaleY","roamTransform","isVisualEncodedByVisualMap","regionGroup","compoundPath","regionModel","itemStyleModel","emphasisItemStyleModel","blurItemStyleModel","selectItemStyleModel","rawScaleX","rawScaleY","rawX","rawY","transformPoint","interior","points_1","showLabel","isDataNaN","centerPt","regionModel_1","groupRegions","__regions","_updateController","_updateMapSelectHandler","_mapName","getZoom","makeActionBase","_mouseDownFlag","getViewRectAfterRoam","mapDraw","MapView","mapModel","_mapDraw","_renderSymbols","originalDataIndex","fullData","mainSeries","fullIndex_1","updateCenterAndZoom","previousZoom","getCenter","fixX","fixY","v2ApplyTransform","View","_roamTransformable","_rawTransformable","setViewRect","_viewRect","rawTransform","_updateTransform","centerCoord","_center","_updateCenterAndZoom","_zoom","getDefaultCenter","rawRect","getRoamTransform","rawTransformMatrix","defaultCenter","roamTransformable","rawTransformable","_rawTransform","noRoam","getCoordSys","Geo","invertLongitute","_nameCoordMap","_regionsMap","_invertLongitute","containCoord","getRegionByCoord","addGeoCoord","getGeoCoord","getCoordSys$1","geoModel","resizeGeo","leftTop","rightBottom","centerOption","sizeOption","useCenterAndSize","boxLayoutOption","setGeoCoords","GeoCreator","geoList","mapModelGroupBySeries","nameMapList","singleMapSeries","getFilledRegions","originRegionArr","regionsArr","geoCreator","mapSymbolLayout","processedMapType","mapSymbolOffsets","subMapSeries","dataStatistics","datas","statisticType","mapKey","mapDataStatistic","seriesGroups","hostGeoModel","seriesList","inner$8","linkList","datasAttr","linkAll","transferInjection","cloneShallowInjection","changeInjection","isMainData","linkSingle","struct","structAttr","TreeNode","hostTree","depth","viewChildren","isExpand","isRemoved","eachNode","suppressVisitSub","updateDepthAndHeight","getNodeById","contains","getAncestors","includeSelf","getAncestorsIndices","currNode","getDescendantIndices","childNode","getLevelModel","levelModels","isAncestorOf","isDescendantOf","Tree","_nodes","getNodeByDataIndex","clearLayouts","createTree","dataRoot","beforeLink","listData","dimMax","buildHierarchy","dataNode","addChild","TreeSeriesModel","leavesModel","nodeData","treeDepth","expandAndCollapse","expandTreeDepth","initialTreeDepth","collapsed","getOrient","realRoot","edgeShape","edgeForkPosition","roam","nodeScaleRatio","curveness","init$2","inRoot","hierNode","defaultAncestor","prelim","modifier","change","thread","firstWalk","separation","siblings","subtreeW","executeShifts","midPoint","apportion","secondWalk","nodeX","defaultSeparation","radialCoordinate","getViewRect$1","subtreeV","nodeOutRight","nodeInRight","nodeOutLeft","nodeInLeft","sumOutRight","sumInRight","sumOutLeft","sumInLeft","nextRight","nextLeft","moveSubtree","nextAncestor","wl","wr","node1","node2","TreeEdgeShape","parentPoint","childPoints","TreePath","childLen","firstChildPos","lastChildPos","forkDim","forkPosition","tmpPoint","TreeView","_mainGroup","layoutInfo","_updateViewCoordSys","symbolNeedsDraw$1","updateNode","removeNode","_nodeScaleRatio","_updateNodeAndLinkScale","oldMin","_min","oldMax","_max","viewCoordSys","nodeScale","_getNodeGlobalScale","groupZoom","roamZoom","virtualRoot","sourceSymbolEl","sourceLayout","sourceOldLayout","__oldX","__oldY","__radialOldRawX","__radialOldRawY","targetLayout","__radialRawX","__radialRawY","rootLayout","isLeft","labelRotateRadian","focusDataIndices","drawEdge","__edge","parentEl","curvature","getEdgeShape","childLayout","removeAnimationOpt","sourceEdge","layoutOpt","radialCoor1","radialCoor2","radialCoor3","radialCoor4","eachAfter","eachBefore","treeLayout","commonLayout","separation$1","tx_1","kx_1","ky_1","coorX_1","coorY_1","finalCoor","orient_1","treeVisual","retrieveTargetInfo","validPayloadTypes","targetNode","targetNodeId","getPathToRoot","aboveViewRoot","viewRoot","viewPath","wrapTreePathInfo","treePathInfo","nodeDataIndex","enableAriaDecalForTree","decalPaletteScope","TreemapSeriesModel","completeTreeValue","designatedVisualItemStyle","designatedVisualModel","setDefault","levelDefine","levelModel","resetViewRoot","setLayoutInfo","mapIdToIndex","idIndexMap","_idIndexMap","_idIndexMapCount","getViewRoot","_viewRoot","enableAriaDecal","clipWindow","squareRatio","leafDepth","drillDownIcon","zoomToNodeRatio","nodeClick","emptyItemWidth","upperLabel","colorAlpha","colorSaturation","gapWidth","borderColorSaturation","visualDimension","visualMin","visualMax","colorMappingBy","visibleMin","childrenVisibleMin","childValue","thisValue","globalColorList","globalDecalList","hasColorDefine","hasDecalDefine","modelColor","modelDecal","level0","TEXT_PADDING","ITEM_GAP","ARRAY_LENGTH","Breadcrumb","containerGroup","onSelect","thisGroup","normalStyleModel","layoutParam","totalWidth","renderList","_prepare","_renderContent","itemWidth","availableSize","itemNode","makeItemPoints","onclick","packEventData","itemHeight","selfType","AnimationWrap","_elExistsMap","_finishedCallback","checkTerminate","createWrap","Group$1","Rect$1","DRAG_THRESHOLD","PATH_LABEL_NOAMAL","PATH_UPPERLABEL_NORMAL","Z_BASE","Z_BG","Z_CONTENT","getStateItemStyle","getItemStyleNormal","inner$9","TreemapView","_state","createStorage","_oldTree","thisStorage","reRoot","rootNodeGroup","nodeGroup","_giveContainerGroup","renderResult","_doRender","_doAnimation","renderFinally","_resetController","_renderBreadcrumb","_containerGroup","thisTree","oldTree","lastsForAnimation","oldStorage","willInvisibleEls","doRenderNode","thisNode","oldNode","renderNode","dualTravel","willDeleteEls","clearStorage","thisViewChildren","oldViewChildren","sameTree","processNode","storageName","delEls","willDelete","els","durationOption","easingOption","animationWrap","innerStore","nodeWidth","nodeHeight","targetX","targetY","oldShape","fadein","_onPan","_onZoom","_clearController","rootRect","mouseX","mouseY","findTarget","isLeafRoot","_rootToNode","_zoomToNode","linkTarget","_breadcrumb","background","thisLayout","nodeModel","isInView","thisWidth","thisHeight","thisInvisible","thisRawIndex","oldRawIndex","upperHeight","isParent","itemStyleNormalModel","itemStyleEmphasisModel","itemStyleBlurModel","itemStyleSelectModel","giveGraphic","isAboveViewRoot","bg","renderBackground","upperLabelHeight","renderContent","useUpperLabel","processInvisible","visualBorderColor","selectStyle","upperLabelWidth","prepareText","nodeStyle","upperLabelRect","iconChar","isShow","addDrillDownIcon","textEmphasisState","lasts","prepareAnimationWhenHasOld","calculateZ","prepareAnimationWhenNoOld","lastCfg","parentOldX","parentOldY","parentOldBg","zInLevel","zb","noop$1","actionTypes","i$1","handleRootToNode","originViewRoot","each$4","isObject$4","CATEGORY_DEFAULT_VISUAL_INDEX","VisualMapping","mappingMethod","_normalizeData","normalizers","visualHandler","applyVisual","getColorMapper","_normalizedToVisual","normalizeVisualRange","preprocessForPiecewise","preprocessForSpecifiedCategory","mapValueToVisual","normalized","getNormalizer","listVisualTypes","isValidType","eachVisual","mapVisual","isPrimary","newVisual","newVal","retrieveVisuals","hasVisual","prepareVisualTypes","visualTypes","types_1","type1","type2","dependsOn","visualType1","visualType2","findPieceIndex","pieceList","findClosestWhenOutside","possibleI","pieceValue","updatePossible","piece","newAbs","makeApplyVisual","isNormalized","doMapCategory","returnRGBArray","parsedVisual","piecewise","getSpecifiedVisual","fixed","doMapFixed","colorHue","makePartialColorVisualHandler","colorLightness","createNormalizedToNumericVisual","setter","symbolCfg","doMapToArray","hasSpecialVisual","originIndex","categoryMap","cate","visualArr_1","setVisualToOption","visualArr","doNotNeedPair","applyValue","colorChannel","sourceExtent","pieceIndex","ITEM_STYLE_NORMAL","inner$a","treemapVisual","travelTree","designatedVisual","viewRootAncestors","nodeLayout","nodeItemStyleModel","visuals","buildVisuals","thisNodeColor","calculateColor","calculateBorderColor","mapping_1","buildVisualMapping","childVisual","visualName","getValueVisualDefine","rangeVisual","getRangeVisual","mapping","drColorMappingBy","childVisuals","mappingType","mathMax$7","mathMin$7","each$5","PATH_BORDER_WIDTH","PATH_GAP_WIDTH","PATH_UPPER_LABEL_SHOW","PATH_UPPER_LABEL_HEIGHT","treemapLayout","seriesOption","viewAbovePath","rootSize","estimateRootSize","sort_1","viewRootLayout_1","squarify","treeRoot","calculateRootPosition","prunning","hideChildren","halfGapWidth","getUpperLabelHeight","layoutOffset","layoutOffsetUpper","totalArea","initChildren","rowFixedLength","best","worst","orderBy","overLeafDepth","sort$1","statistic","filterByThreshold","orderedChildren","deletePoint","areaMax","areaMin","squareArea","idx0WhenH","idx1WhenH","xy","rowOtherLength","rowLen","wh1","remain","modWH","wh0","defaultSize","viewArea","currNodeValue","defaultPosition","targetCenter","nodeInViewAbovePath","childClipRect","generateNodeKey","Graph","directed","_nodesMap","_edgesMap","_directed","isDirected","addNode","nodesMap","GraphNode","hostGraph","getNodeByIndex","addEdge","n1","n2","edgesMap","GraphEdge","outEdges","inEdges","getEdgeByIndex","getEdge","eachEdge","breadthFirstTraverse","startNode","edgeType","__visited","queue","currentNode","otherNode","degree","inDegree","outDegree","getAdjacentDataIndices","adjacentEdge","createGraphDataProxyMixin","hostName","dataName","getGraphicEl","createGraphFromNodeEdge","linkNameList","validEdges","linkCount","coordSysCtor","KEY_DELIMITER","getAutoCurvenessParams","createCurveness","appendLength","autoCurvenessParmas","curvenessList","__curvenessList","getKeyOfEdges","getOppositeKey","getEdgeFromMap","__edgeMap","getTotalLengthBetweenNodes","getEdgeMapLengthWithKey","lenV","edgeMap","initCurvenessList","createEdgeMapForCurveness","oppositeEdges","isForward","getCurvenessForEdge","needReverse","autoCurvenessParams","isArrayParam","edgeArray","edgeIndex","totalLen","curKey","parityCorrection","oppositeKey","resValue","GraphSeriesModel","getCategoriesData","_categoriesData","_updateCategoriesData","categoriesModels","_categoriesModels","categoryIdx","categoryModel","oldGetModel","newGetModel","newPathArr","getGraph","getEdgeData","sourceName","nodeMarkup","categoriesData","circular","rotateLabel","initLayout","repulsion","gravity","friction","edgeLength","layoutAnimation","edgeSymbol","edgeSymbolSize","edgeLabel","straightLineProto","bezierCurveProto","StraightLineShape","CurveShape","isStraightLine","ECLinePath","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","lineData","symbolSizeArr","__specifiedRotation","createLine","setLinePoints","Line$1","_createLine","_updateCommonStl","getLinePath","blurLineStyle","selectLineStyle","lineState","lineStateStyle","stateStyle","labelNormalModel","__align","__verticalAlign","__position","__labelDistance","linePath","symbolFrom","symbolTo","invScale","fromPos","toPos","setSymbolRotation","specifiedRotation","tangent","distanceX","distanceY","halfPercent","LineDraw","LineCtor","_LineCtor","lineDraw","oldLineData","_lineData","makeSeriesScope$1","_doUpdate","isEffectObject","lineNeedsDraw","newLineData","isPointNaN","pts","getNodeGlobalScale","v3","v2DistSquare","mathAbs$2","intersectCurveCircle","curvePoints","radiusSquare","nextDiff","adjustEdge","tmp0","quadraticSubdivide$1","pts2","fromSymbol","toSymbol","__original","originalPoints","isViewCoordSys","GraphView","_lineDraw","_firstRender","groupNewProp","_layoutTimeout","forceLayout","_startForceLayoutIteration","warmUp","_layouting","setFixed","setUnfixed","circularRotateLabel","categoryFilter","graphSeries","categoryNames","categoryVisual","paletteScope","categoryNameIdxMap","symbolVisualList","symbolVisual","categoryStyle","visualList","normalize$2","graphEdgeVisual","simpleLayout","simpleLayoutEdge","graphSimpleLayout","PI$7","_symbolRadiansHalf","circularLayout","basedOn","_layoutNodesBasedOn","x12","y12","unitAngle","radianHalf","sumRadian","symbolRadianHalf","halfRemainRadian","graphCircularLayout","scaleAndAdd$1","inNodes","pp","initialFriction","beforeStepCallback","afterStepCallback","beforeStep","afterStep","v12","nLen","ignoreForceLayout","repFact","rep","graphForceLayout","preservedPoints_1","preservedPoints","graph_1","nodeData_1","forceModel","nodeDataExtent_1","edgeDataExtent_1","repulsionArr_1","edgeLengthArr_1","nodes_1","edgeModel","forceInstance","getViewRect$2","createViewCoordSys","coordSysType","positions","bbWidth","bbHeight","GaugeSeriesModel","icon","PointerShape","PointerPath","parsePosition","formatLabel","PI2$9","GaugeView","colorList","posInfo","_renderMain","axisLineModel","MainPath","showAxis","axisLineWidth","angleRangeSpan","prevEndAngle","getColor","_renderTicks","_renderTitleAndDetail","_renderAnchor","_renderPointer","minVal","maxVal","subSplitNumber","splitLineLen","tickLen","subStep","splitLineStyle","splitLineDistance","autoColor","tickLine","oldProgressData","_progressEls","progressList","showPointer","progressModel","showProgress","valueExtent","angleExtent","createPointer","pointerModel","pointerWidth","pointerLength","pointerStr","pointerOffset","pointerKeepAspect","createProgress","ProgressPath","isOverlap","progressWidth","isClip","previousPointer","previousRotate","previousProgress","previousEndAngle","anchorModel","showAnchor","anchorSize","anchorType","anchorKeepAspect","contentGroup","newTitleEls","newDetailEls","_titleEls","_detailEls","itemTitleModel","titleOffsetCenter","titleX","titleY","labelEl","itemDetailModel","detailOffsetCenter","detailX","detailY","detailColor","formatter_1","FunnelSeriesModel","minSize","funnelAlign","opacityAccessPath","FunnelPiece","FunnelView","funnelPiece","getViewRect$3","getSortedIndices","isAscending","funnelLayout","sizeExtent","itemSize","getLinePoints","val_1","parallelPreprocessor","createParallelIfNeeded","mergeAxisOptionFromParallel","hasParallelSeries","parallelAxis","axisOption","parallelIndex","parallelOption","ParallelAxis","sliderMove","handleEnds","handleIndex","minSpan","maxSpan","restrict","handleSpan","originalDistSign","getSpanSign","extentMinSpan","realExtent","currDistSign","each$6","mathMin$8","mathMax$8","mathFloor$2","mathCeil$1","round$2","PI$8","Parallel","_axesLayout","_updateAxesFromSeries","_makeLayoutInfo","axisBase","layoutBase","pixelDimIndex","pAxis","pLayout","layoutLength","_layoutAxes","layoutExtent","axisCount","axisExpandWidth","restrict$1","axisExpandCount","axisExpandable","axisExpandWindow","winSize","axisExpandCenter","axisCollapseWidth","winInnerIndices","axisExpandWindow0Pos","layoutAxisWithExpand","layoutAxisWithoutExpand","positionTable","horizontal","vertical","rotationTable","axisCoordToPoint","eachActiveState","dataDimensions","axisModels","hasActiveSet","hasAxisBrushed","activeState","getActiveState","axisLayout","getAxisLayout","getSlidedAxisExpandWindow","behavior","pointCoord","triggerArea","useJump","winSize2","create$2","ParallelAxisModel","activeIntervals","getAreaSelectStyle","setActiveIntervals","intervals","defaultOption$1","areaSelectStyle","realtime","ParallelModel","_initDimensions","setAxisExpand","axisExpandRate","axisExpandDebounce","axisExpandSlideTriggerArea","axisExpandTriggerOn","actionInfo$1","parallelAxisModel","BRUSH_PANEL_GLOBAL","mathMin$9","mathMax$9","mathPow$2","COVER_Z","UNSELECT_THRESHOLD","MIN_RESIZE_LINE_WIDTH","MUTEX_RESOURCE_KEY","DIRECTION_MAP","CURSOR_MAP","ne","sw","nw","se","DEFAULT_BRUSH_OPT","transformable","brushMode","removeOnClick","baseUID","BrushController","_covers","_handlers","_uid","pointerHandlers","enableBrush","brushOption","_mounted","_brushType","_doDisableBrush","brushType","_doEnableBrush","_enableGlobalPan","_brushOption","setPanels","panelOpts","panels_1","_panels","panelId","enableGlobalPan","updateCovers","coverConfigList","coverConfig","tmpIdPrefix","oldCovers","newCovers","creatingCover","_creatingCover","oldGetKey","addOrUpdate","cover","__brushOption","newBrushInternal","endCreating","createCover","updateCoverAfterCreation","unmount","clearCovers","coverRenderers","coverRenderer","getCoverRenderer","updateCoverShape","updateCommon","getPanelByPoint","localCursorPoint","panels","panel","pn","isTargetByCursor","getPanelByCover","covers","originalLength","trigger$1","areas","isEnd","shouldShowCover","getTrackEnds","createBaseRectCover","rectRangeConverter","edgeNameSequences","makeStyle","driftRect","ondragend","nameSequence","updateBaseRect","localRange","handleSize","xa","ya","x2a","y2a","widtha","heighta","updateRectShape","mainEl","globalDir","getGlobalDirection1","getGlobalDirection2","pointsToRect","clipByPanel","formatRectRange","getTransform$1","localDirName","inverseMap","localDirNameSeq","dirNameSequence","rectRange","toRectRange","localDelta","toLocalDelta","dirName","ind","fromRectRange","driftPolygon","localD","localZero","xmin","ymin","xmax","ymax","resetCursor","isOutsideZrArea","currPanel","rawE","mainShapeContain","updateCoverByMouse","_creatingPanel","thisBrushOption","eventParams","determineBrushType","coverBrushOption","getCreatingRange","defaultBrushType","handleDragEnd","getLineRenderer","returnInput","localTrack","ends","xyIndex","otherExtent","getLinearBrushOtherExtent","makeRectPanelClipPath","normalizeRect","localPoints","makeLinearBrushOtherExtent","specifiedXYIndex","brushWidth","makeRectIsTargetByCursor","targetModel","elementList","ParallelAxisView","_brushController","_onBrush","fromAxisAreaSelect","areaWidth","builderOpt","_refreshBrushController","extentLen","getCoverInfoList","eventParam","coverInfoList","coverInfo","parallelAxisId","CLICK_THRESHOLD","ParallelView","handlers","_throttledDispatchExpand","_dispatchExpand","checkTrigger","_mouseDownPoint","mouseDownPoint","triggerOn","ParallelSeriesModel","makeDefaultEncode","getRawIndicesByActiveState","theActiveState","inactiveOpacity","activeOpacity","dataDimIndex","convertDimNameToNumber","DEFAULT_SMOOTH","ParallelView$1","_dataGroup","dataGroup","makeSeriesScope$2","newDataIndex","addEl","updateElCommon","oldDataIndex","createLinePoints","createGridClipShape","isEmptyValue","opacityAccessPath$1","parallelVisual","opacityMap","active","inactive","itemOpacity","SankeySeriesModel","nodeDepth","setNodePosition","localPosition","localX","localY","rawDataOpt","edgeValue","edgeName","nodeValue","nodeGap","layoutIterations","nodeAlign","SankeyPathShape","SankeyPath","SankeyView","_focusAdjacencyDisabled","sankeyView","curve","n1Layout","node1Model","dragX1","dragY1","n2Layout","node2Model","dragX2","dragY2","edgeLayout","sourceColor","targetColor","dragX","dragY","createGridClipShape$1","sankeyLayout","getViewRect$4","computeNodeValues","filteredNodes","iterations","layoutSankey","computeNodeBreadths","computeNodeDepths","computeEdgeDepths","getEdgeValue","nodeRawValue","remainEdges","indegreeArr","zeroIndegrees","nextTargetNode","maxNodeDepth","isItemDepth","edgeIdx","indexEdge","nodeIndex","maxDepth","adjustNodeWithNodeAlign","kx","scaleNodeBreadths","isNodeDepth","nextSourceNode","remainNodes","skNodeHeight","moveSinksRight","nodesByBreadth","prepareNodesByBreadth","initializeNodeDepth","resolveCollisions","relaxRightToLeft","relaxLeftToRight","keyAttr","groupResult","minKy","ky","nodeDy","edgeDy","nodeDyAttr","weightedTarget","centerTarget","center$1","nodeY","weightedSource","centerSource","sankeyVisual","minValue_1","maxValue_1","mapValueToColor","customColor","WhiskerBoxCommonMixin","xAxisType","yAxisType","addOrdinal","coordDims","baseAxisDimIndex","_baseAxisDim","baseAxisType","newOptionData_1","newItem","defaultValueDimensions","BoxplotSeriesModel","boxWidth","BoxplotView","constDim","createNormalBox","updateNormalBoxData","BoxPathShape","BoxPath","transInit","initBaseline","boxplotVisual","each$7","boxplotLayout","groupSeriesByAxis","groupItem","calculateBase","layoutSingleSeries","boxOffsetList","boxWidthList","axisList","seriesCount","boundList","maxDataCount_1","boxWidthBound","availableWidth","boxGap","halfWidth","cDimIdx","vDimIdx","cDim","vDims","axisDimVal","median","getPoint","end1","end2","end4","end5","addBodyEnd","layEndLine","point1","point2","endCenter","prepareBoxplotData","boxData","outliers","boundIQR","useExtreme","ascList","Q1","Q2","Q3","bound","low","high","itemNameFormatter","outlier","boxplotTransform","CandlestickSeriesModel","getShadowDim","brushRect","SKIP_PROPS","CandlestickView","_incrementalRenderNormal","isSimpleBox","isNormalBoxClipped","createNormalBox$1","setBoxCommon","createLarge$1","NormalBoxPathShape","NormalBoxPath","__simpleBox","transInit$1","LargeBoxPathShape","LargeBoxPath","__sign","elP","elN","setLargeStyle$1","candlestickPreprocessor","seriesItem","positiveBorderColorQuery","negativeBorderColorQuery","positiveColorQuery","negativeColorQuery","candlestickVisual","getBorderColor","isLargeRender","LargeArr$1","candlestickLayout","candleWidth","calculateCandleWidth","openDim","closeDim","lowestDim","highestDim","largeProgress","normalProgress","openVal","closeVal","lowestVal","highestVal","ocLow","ocHigh","ocLowPoint","ocHighPoint","lowestPoint","highestPoint","subPixelOptimizePoint","getSign","makeBrushRect","pmin","pmax","EffectScatterSeriesModel","effectType","showEffectOn","rippleEffect","period","EFFECT_RIPPLE_NUMBER","normalizeSymbolSize$1","updateRipplePath","rippleGroup","effectCfg","rippleEffectColor","ripplePath","EffectSymbol","stopEffectAnimation","startEffectAnimation","effectOffset","rippleScale","updateEffectAnimation","oldEffectCfg","_effectCfg","DIFFICULT_PROPS","EffectScatterView","effectSymbolDraw","_updateGroupTransform","Uint32Arr","Float64Arr","compatEc2","coords","fromName","toName","LinesSeriesModel","_processFlatCoordsArray","_flatCoords","flatCoords","_flatCoordsOffset","flatCoordsOffset","_getCoordsFromItemModel","getLineCoordsCount","getLineCoords","startOffset","coordsOffsetAndLenStorage","coordsStorage","coordsCursor","offsetCursor","CoordSys","effect","constantSpeed","trailLength","EffectLine","_updateEffectSymbol","effectModel","_symbolScale","_updateEffectAnimation","delayExpr","_updateAnimationPoints","_getLineLength","_period","delayNum","__t","_updateSymbolPosition","__p1","__cp1","__p2","quadraticDerivativeAt$1","__lastT","Polyline$1","_createPolyline","hoverLineStyle","lineEmphasisState","EffectPolyline","accLenArr","_length","_offsets","offsets","LargeLinesPathShape","LargeLinesPath","LargeLineDraw","lineEl","linesLayout","isPolyline","isLarge","lineCoords","totalCoordsCount","LinesView","_updateLineDraw","_lastZlevel","_showEffect","notInIndividual_1","otherSeriesModel","hasEffect","_hasEffet","_isPolyline","normalize$3","linesVisual","HeatmapSeriesModel","blurSize","pointSize","maxOpacity","minOpacity","GRADIENT_LEVELS","HeatmapLayer","_gradientPixels","inRange","outOfRange","colorFunc","isInRange","_getBrush","gradientInRange","_getGradient","gradientOutOfRange","imageData","getImageData","pixels","pixelLen","diffOpacity","gradientOffset","putImageData","brushCanvas","_brushCanvas","gradientPixels","pixelsSingleState","Uint8ClampedArray","getIsInPiecewiseRange","dataSpan","getIsInContinuousRange","isGeoCoordSys","HeatmapView","visualMapOfThisSeries","eachTargetSeries","targetSeries","_incrementalDisplayable","_renderOnCartesianAndCalendar","_renderOnGeo","dataDimX","dataDimY","dataToRect","contentShape","visualMapModel","inRangeVisuals","targetVisuals","outOfRangeVisuals","hmLayer","_hmLayer","lng","lat","getPieceList","PictorialBarSeriesModel","symbolPosition","symbolMargin","symbolRepeat","symbolRepeatDirection","symbolClip","symbolBoundingData","symbolPatternSize","BAR_BORDER_WIDTH_QUERY$1","LAYOUT_ATTRS","posDesc","pathForLineWidth","PictorialBarView","coordSysRect","ecSize","coordSysExtent","categoryDim","symbolMeta","getSymbolMeta","createBar","updateCommon$1","pictorialShapeStr","getShapeStr","__pictorialShapeStr","updateBar","__pictorialSymbolMeta","removeBar","prepareBarLength","prepareSymbolSize","boundingLength","pxSign","prepareLineWidth","symbolScale","prepareLayoutInfo","valueLineWidth","repeatCutLength","outputSymbolMeta","zeroPx","pxSignIdx","symbolBoundingExtent","convertToCoordOnAxis","categorySize","parsedSymbolSize","unitLength","pathLen","absBoundingLength","hasEndGap","symbolMarginNumeric","uLenWithMargin","endFix","repeatSpecified","repeatTimes","toIntTimes","mDiff","sizeFix","pathPosition","bundlePosition","barRectShape","createPath","createOrUpdateRepeatSymbols","bundle","__pictorialBundle","eachPath","__pictorialAnimationIndex","__pictorialRepeatTimes","updateAttr","makeTarget","createOrUpdateSingleSymbol","mainPath","__pictorialMainPath","createOrUpdateBarRect","barRect","__pictorialBarRect","createOrUpdateClip","__pictorialClipPath","pathes","immediateAttrs","animationAttrs","barPositionOutside","times","roundedTimes","SingleAxis","Single","_axis","_adjustAxis","_updateAxisTransform","extentSum","getCoordSys$2","singleModel","create$3","singles","layout$2","positionMap","directionMap","axisBuilderAttrs$2","selfBuilderAttrs$1","SingleAxisView","axisElementBuilders$1","SingleAxisModel","findPointFromSeries","isStacked","inner$b","axisTrigger","currTrigger","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","outputPayload","showValueMap","dataByCoordSys","updaters","showTooltip","coordSysContainsPoint","inputAxisInfo","findInputAxisInfo","processOnAxis","linkTriggers","tarAxisInfo","tarKey","srcAxisInfo","srcKey","srcValItem","makeMapperParam","updateModelActually","dispatchTooltipActually","dispatchHighDownActually","newValue","noSnap","outputFinder","payloadInfo","buildPayloadsBySeries","payloadBatch","snapToValue","seriesNestestValue","getAxisTooltipData","nestestValue","coordSysItem","coordSysId","coordSysIndex","coordSysMainType","dataByAxis","valueLabelOpt","seriesDataIndices","outputAxesInfo","valItem","tooltipOption","highDownKey","lastHighlights","newHighlights","toHighlight","toDownplay","inner$c","each$8","initGlobalListeners","initialized","useHandler","doEnter","onLeave","dis","makeDispatchAction","dispatchTooltipFinally","pendings","showLen","showTip","hideLen","hideTip","actuallyPayload","unregister","AxisPointerView","inner$d","clone$3","bind$1","BaseAxisPointer","_axisModel","_axisPointerModel","_lastValue","_lastStatus","_group","handle","_handle","elOption","makeElOption","graphicKey","_lastGraphicKey","moveAnimation","_moveAnimation","determineAnimation","createPointerEl","createLabelEl","doUpdateProps","updateProps$1","updatePointerEl","updateLabelEl","updateMandatoryProps","_renderHandle","isCategoryAxis","useSnap","pointerOption","pointerEl","updateLabelShowHide","updateHandleTransform","handleModel","onmousemove","onmousedown","_onHandleDragMove","_onHandleDragEnd","_moveHandleToValue","getHandleTransProps","getHandleTransform","trans","_payloadInfo","lastProp","_doDispatchAxisPointer","cursorPoint","buildLabel","xDimIndex","propsEqual","lastProps","equals_1","buildElStyle","axisPointerType","buildLabelElOption","labelPos","getValueLabel","paddings","confineInContainer","bgColor","params_1","axisDimension","seriesData","idxItem","getTransformedPosition","buildCartesianSingleLabelElOption","textLayout","makeLineShape","makeRectShape","makeSectorShape","CartesianAxisPointer","pixelValue","elStyle","pointerShapeBuilder","currPosition","cursorOtherValue","tooltipOptions","getAxisDimIndex","shadow","AxisPointerModel","shadowStyle","XY","WH","SingleAxisPointer","getPointDimIndex","pointerShapeBuilder$1","DATA_NAME_INDEX","ThemeRiverSeriesModel","fixData","rawDataLength","timeValueKeys","layerData","dataList","layerNum","timeValue","filterData","getLayerSeries","lenCount","indexArr","timeDim","layerSeries","index1","index2","nearestIdx","pointNum","theValue","singleAxisIndex","ThemeRiverView","layersSeries","keyGetter","dataDiffer","_layersSeries","newLayersGroups","process","oldLayersGroups","points0","layerGroup","createGridClipShape$2","themeRiverLayout","doThemeRiverLayout","layerPoints","singleLayer","computeBaseline","baseLine","baseY0","layerIndex","sums","temp","SunburstSeriesModel","completeTreeValue$1","renderLabelForZeroData","DEFAULT_SECTOR_Z","DEFAULT_TEXT_Z","SunburstPiece","_ecModel","labelMinAngle","isNormalShown","labelStateModel","isShown","getLabelAttr","sectorState","labelColor","labelPadding","rotateType","stateAttr","ROOT_TO_NODE_ACTION","HIGHLIGHT_ACTION","handleHighlight","UNHIGHLIGHT_ACTION","SunburstView","newRoot","newChildren","oldChildren","_oldChildren","renderRollUp","newNode","virtualPiece","targetFound","RADIAN$2","sunburstLayout","rootDepth","initChildren$1","renderRollupNode","rPerLevel","rStart","rEnd","siblingAngle_1","sortOrder","sort$2","sortTargets","isAsc_1","sunburstVisual","pickColor","treeHeight","dataToCoordSize","dataSize","halfSize","cartesianPrepareCustom","dataToCoordSize$1","geoPrepareCustom","dataToCoordSize$2","singlePrepareCustom","dataToCoordSize$3","polarPrepareCustom","radiusAxis","getRadiusAxis","angleAxis","getAngleAxis","dataToRadius","dataToAngle","calendarPrepareCustom","rangeInfo","getRangeInfo","cellWidth","getCellWidth","cellHeight","getCellHeight","weeks","dayCount","allDay","deprecatedLogs","isEC4CompatibleStyle","elType","hasOwnTextContentOption","hasOwnTextConfig","legacy","convertFromEC4CompatibleStyle","hostStyle","srcStyle","textContentStyle","hasOwnPos","textDistance","convertEC4CompatibleRichItem","richItem","textStrokeWidth","textLineHeight","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","convertToEC4StyleForCustomSerise","itemStl","txStl","txCfg","hostFill","convertToEC4RichItem","textFillNotSet","warnDeprecated","deprecated","insteadApproach","inner$e","TRANSFORM_PROPS","transformPropNamesStr","STYLE_VISUAL_TYPE","NON_STYLE_VISUAL_PROPS","EMPHASIS","NORMAL","BLUR","SELECT","STATES","PATH_ITEM_STYLE","PATH_LABEL","GROUP_DIFF_PREFIX","attachedTxInfoTmp","LEGACY_TRANSFORM_PROPS","tmpTransformable","prepareCustoms","CustomSeriesModel","currentZLevel","currentZ","CustomSeriesView","customSeries","renderItem","makeRenderItem","doRemoveEl","createOrUpdateItem","morphPreparation_1","MorphPreparation","createGetKey","findAndAddFrom","hasFrom","removeElementDirectly","applyMorphing","oldIndices","newLen","setIncrementalAndHoverLayer","elementName","diffByDimName","createEl","graphicType","getPathData","customPathData","customImagePath","customGraphicType","updateElNormal","isMorphTo","styleOpt","attachedTxInfo","isTextContent","transFromProps","allPropsFinal","elDisplayable","prepareShapeOrExtraTransitionFrom","prepareShapeOrExtraAllPropsFinal","prepareTransformTransitionFrom","prepareTransformAllPropsFinal","txCfgOpt","textOptionStyle","decalPattern","decalObj","isPath$1","__decalPattern","prepareStyleTransitionFrom","applyPropsFinal","applyTransitionFrom","originalDecalObj","userDuring","cfgDuringCall","duringCall","mainAttr","morphFromEl","attrOpt","elPropsInAttr","transFromPropsInAttr","enterFrom","enterFromKeys","transitionKeys","elVal","checkNonStyleTansitionRefer","elPropsInAttrKeys","isNonStyleTransitionEnabled","leaveTo","leaveToProps","getOrCreateLeaveToPropsFromEl","leaveToPropsInAttr","leaveToKeys","allProps","allPropsInAttr","keysInAttr","checkTransformPropRefer","fromTransformable","calcOldElLocalTransformBasedOnNewElParent","setTransformPropToTransitionFrom","setLagecyTransformProp","setTransformProp","fromEl","fromElStyle","transFromStyleProps","animationStyleProps","styleKeys","leaveToStyleProps","newEl","tmpM","oldGlobalTransform","newParent","optVal","usedIn","innerEl","tmpDuringScope","customDuringAPI","assertNotReserved","isShapeDirty","getShape","isStyleDirty","setExtra","getExtra","newstUserDuring","scopeUserDuring","updateElOnState","elStateOpt","isRoot","existingEmphasisState","updateZ$1","optZ2","updateZForEachState","retrieveStateOption","targetProps","legacyName","legacyArr","xyName","transitionFrom","userAPI","ordinalRawValue","styleEmphasis","barLayout","currentSeriesIndices","userParams","dataInsideLength","wrapEncodeDef","currDataIndexInside","currItemModel","currItemStyleModels","currLabelModels","seriesItemStyleModels","seriesLabelModels","getItemStyleModel","userProps","preFetchFromExtra","applyUserPropsAfter","style_1","morphPreparation","doCreateOrUpdateEl","toBeReplacedIdx","doesElNeedRecreate","elIsNewCreated","canMorph","morph","thisElIsMorphTo","conOpt","isLegacy","doCreateOrUpdateAttachedTx","doCreateOrUpdateClipPath","pendingAllPropsFinal","addTo","otherStateOpt","otherStyleOpt","retrieveStyleOptionOnState","mergeChildren","elInner","elOptionType","elOptionShape","elOptionStyle","hasOwnPathData","clipPathOpt","processTxInfo","txConOptNormal","txConOptEmphasis","txConOptBlur","txConOptSelect","txConStlOptNormal","txConOptOtherState","stateOpt","txConOpt","convertResult","txConOptNormal_1","stateOptionNormal","stateOption","$mergeChildren","byName","diffChildrenByName","diffGroupChildren","processAddUpdate","processRemove","childOption","_fromList","_toList","_toElOptionList","_allPropsFinalList","_toDataIndices","_morphConfigList","_transOpt","_type","fromList","toList","toListLen","fromListLen","toIdx","_oneToOneForSingleTo","fromSingleSegLen","fromIdxStart","fromCount","_manyToOneForSingleTo","toSingleSegLen","toIdxStart","fromIdx","toCount","_oneToManyForSingleFrom","toElOption","toDataIndex","elAnimationConfig","_getOrCreateMorphConfig","morphDuration","combineResult","copyPropsWhenDivided","_processResultIndividuals","morphFrom","combineFromList","separateToList","separateResult","combineSeparateResult","isSeparate","fromIndividual","toIndividual","morphConfigList","delayOption","srcPath","tarPath","willClone","getSeriesStackId$1","getAxisKey$1","barLayoutPolar","calRadialBar","clampLayout","radiusSpan","angleSpan","PolarModel","foundAxisModel","PolarAxisModel","AngleAxisModel","RadiusAxisModel","angleAxisExtraOption","radiusAxisExtraOption","RadiusAxis","radiusToData","inner$f","AngleAxis","angleToData","Polar","_radiusAxis","_angleAxis","maxAngle","getCoordSys$3","resizePolar","parsedRadius","updatePolarScale","isAngleAxisModel","setAxis","polarCreator","polarList","elementList$1","getAxisLineShape","rExtent","getRadiusIdx","fixAngleOverlap","firstItem","lastItem","AngleAxisView","ticksAngles","minorTickAngles","angelAxisElementsBuilders","rId","r0Id","tickAngleItem","tickAngles","commonLabelModel","labelTextAlign","labelTextVerticalAlign","prevAngle","axisBuilderAttrs$3","selfBuilderAttrs$2","RadiusAxisView","newAxisGroup","axisAngle","layoutAxis","axisElementBuilders$2","prevRadius","PolarAxisPointer","coordValue","pointerShapeBuilder$2","getLabelPosition","GeoView","_handleRegionClick","updateSelectStatus","geoId","GeoModel","_optionModelMap","optionModelMap","regionOpt","unSelect","toggleSelected","makeAction","PROXIMATE_ONE_DAY","Calendar","calendarModel","_rangeInfo","_sw","_sh","_orient","getFirstDayOfWeek","_firstDayOfWeek","getDateInfo","mStr","dStr","getDay","formatedDate","getNextNDay","setDate","_lineWidth","_getRangeInfo","_initRangeOption","whNames","cellSize","getCellSize","layoutParams","cellNumbers","cellSizeSpecified","whGlobal","calendarRect","dayInfo","week","nthWeek","pointToDate","tl","tr","br","bl","nthX","nthY","_getDateByWeeksAndDay","getCoordSys$4","normalizedRange","rangeStr","firstDay","setMonth","parsedRange","reversed","startDateNum","endDateNum","dateNum","fweek","lweek","nthDay","calendarList","calendarSeries","CalendarModel","mergeAndNormalizeLayoutParams","raw","cellSizeArr","MONTH_TEXT","EN","CN","WEEK_TEXT","CalendarView","rangeData","_renderDayRect","_renderLines","_renderYearText","_renderMonthText","_renderWeekText","itemRectStyleModel","sh","_tlpoints","_blpoints","_firstDayOfMonth","_firstDayPoints","addPoints","_getLinePointsOfOneWeek","_drawSplitline","_getEdgesPoints","rs","poyline","parsedDate","tmpD","_formatterLabel","_yearTextPositionControl","aligns","xc","yc","posPoints","yearText","_monthTextPositionControl","isCenter","vAlign","termPoints","firstDayPoints","yyyy","yy","MM","monthText","_weekTextPositionControl","isStart","firstDayOfWeek","weekText","inner$g","_nonShapeGraphicElements","graphicOption","elements","GraphicComponentModel","existList","flattenedList","_flatten","elOptionsToUpdate","_elOptionsToUpdate","newElOption","setKeyInfoToNewElOption","mergeNewElOptionToExist","setLayoutInfoToExist","$action","optionList","parentOption","useElOptionsToUpdate","GraphicComponentView","_elMap","graphicModel","_lastGraphicModel","_updateElements","_relocate","rootGroup","elExisting","parentId","targetElParent","textContentOption","elOptionCleaned","getCleanedElOption","createEl$1","removeEl","textContentExisting","__ecGraphicWidthOption","__ecGraphicHeightOption","setEventData","elOptions","apiWidth","apiHeight","isParentRoot","parentElInner","__ecGraphicWidth","__ecGraphicHeight","containerInfo","bounding","__ecGraphicId","existElParent","isSetLoc","isSet","existElOption","newElParentOption","newElOptCopy","newType","existItem","existingGroupOpt","newGroupOpt","ToolboxFeature","registerFeature","getFeature","ToolboxModel","featureName","Feature","itemGap","showTitle","layout$3","viewportSize","makeBackground","ToolboxView","toolboxModel","featureOpts","_features","featureNames","_featureNames","processFeature","featureModel","newTitle","isUserFeatureName","unusable","createIconPaths","setIconStatus","iconName","iconPaths","iconStatus","iconStyleModel","iconStyleEmphasisModel","icons","getIcons","titles","iconsMap","titlesMap","tooltipModel","__title","hoverStyle","defaultTextPosition","titleText","emphasisTextConfig","emphasisTextState","emphasisTextStyle","needPutOnTop","topOffset","SaveAsImage","MouseEvent","$a","download","evt","bubbles","cancelable","dispatchEvent","msSaveOrOpenBlob","bstr","atob","u8arr","Uint8Array","blob","Blob","tab","write","INNER_STACK_KEYWORD","radioTypes","MagicType","availableIcons","seriesOptGenreator","generateNewSeriesTypes","newSeriesOpt","radio","currentType","isStack","BLOCK_SPLITER","ITEM_SPLITER","groupSeries","seriesGroupByCategoryAxis","otherSeries","meta","assembleSeriesWithCategoryAxis","groups","tables","headers","columns","assembleOtherSeries","getContentFromModel","trim$1","isTSVFormat","firstLine","itemSplitRegex","parseTSVContents","tsv","tsvLines","parseListContents","hasName","parseContents","blockMetaList","blockMeta","DataView","viewMain","textarea","optionToContent","contentToOption","htmlOrDom","readOnly","buttonContainer","buttonStyle","closeButton","refreshButton","textareaColor","textareaBorderColor","buttonColor","buttonTextColor","tryMergeDataOption","newValIsObject","shouldDeleteName","newSeriesOptList","COORD_CONVERTS","INCLUDE_FINDER_MAIN_TYPES","BrushTargetManager","_targetInfoList","foundCpts","parseFinder$1","targetInfoBuilders","include","setOutputRanges","matchOutputRanges","coordRange","coordRanges","coordConvert","__rangeOffset","diffProcessor","xyMinMax","findTargetInfo","coordSyses","setInputRanges","rangeOffset","getScales","makePanelOpts","getDefaultBrushType","getPanelRect","controlSeries","targetInfoList","areaPanelId","targetInfoMatchers","formatMinMax","xAxisModels","yAxisModels","gridModels","gridModelMap","xAxesHas","yAxesHas","panelRectBuilders","xAxisDeclared","yAxisDeclared","geoModels","axisConvert","rangeOrCoordRange","xminymin","xmaxymax","axisNameIndex","axisDiffProcessor","refer","scales","xyMinMaxCurr","xyMinMaxOrigin","sizeCurr","getSize","sizeOrigin","each$9","inner$h","newSnapshot","storedSnapshots","getStoreSnapshots","dataZoomId","snapshot","dataZoomModel","percentRange","getPercentRange","clear$1","snapshots","DATA_ZOOM_AXIS_DIMENSIONS","SERIES_COORDS","isCoordSupported","coordType","getAxisMainType","findEffectedDataZooms","axisRecords","effectedModels","effectedModelMap","addToEffected","foundNewLink","processSingle","isLinked","markAxisControlled","isLink","eachTargetAxis","axisIdxArr","collectReferCoordSysModelInfo","coordSysInfoWrap","infoList","infoMap","coordSysUid","DataZoomAxisInfo","indexList","indexMap","axisCmptIdx","DataZoomModel","_autoThrottle","_noTarget","_rangePropMode","inputRawOption","retrieveRawOption","settledOption","_doInit","_setDefaultThrottle","_updateRangeUse","_resetTarget","optionOrient","targetAxisIndexMap","_targetAxisInfoMap","hasAxisSpecified","_fillSpecifiedTargetAxis","_makeAutoOrientByTargetAxis","_fillAutoTargetAxisByOrient","refering","needAuto","setParallelAxis","gridModel_1","axModel","globalOption","rangePropMode","rangeModeInOption","percentSpecified","valueSpecified","noTarget","getFirstTargetAxisModel","firstAxisModel","getAxisProxy","getAxisModel","__dzAxisProxy","setRawRange","setCalculatedRange","axisProxy","findRepresentativeAxisProxy","getDataPercentWindow","getValueRange","getDataValueWindow","firstProxy","axisDimList","hostedBy","getRangePropMode","filterMode","DataZoomView","SelectDataZoomModel","SelectDataZoomView","each$a","asc$1","AxisProxy","_dimName","_axisIndex","_dataZoomModel","_valueWindow","_percentWindow","getTargetSeriesModels","axisMainType","getMinMaxSpan","_minMaxSpan","calculateDataWindow","_dataExtent","percentExtent","percentWindow","valueWindow","hasPropModeValue","boundPercent","boundValue","spans","restrictSet","fromWindow","toWindow","fromExtent","toExtent","toValue","suffix","calculateDataExtent","_updateMinMaxSpan","dataWindow","_setAxisModel","leftOut","rightOut","thisHasValue","thisLeftOut","thisRightOut","isInWindow","minMaxSpan","percentSpan","valueSpan","eachAxisModel","proxyList","valueRange","each$b","DATA_ZOOM_ID_BASE","DataZoomFeature","brushController","updateZoomBtnStatus","updateBackBtnStatus","handlers$1","brushTargetManager","makeAxisFinder","setBatch","_dispatchZoomAction","findDataZoom","minValueSpan","maxValueSpan","dzModel","nextActive","isZoomActive","dataZoomSelectActive","dzFeatureModel","xAxisId","yAxisId","zoomActive","dzOptions","finderResult","buildInternalOptions","axisIndexPropName","$fromToolbox","RestoreOption","TooltipModel","showContent","alwaysShowContent","displayMode","confine","showDelay","hideDelay","transitionDuration","enterable","shouldTooltipConfine","confineOption","vendors","gCssText","mirrorPos","assembleArrow","arrowPosition","arrowPos","positionStyle","transformStyle","vendorPrefix","styleCss","assembleTransition","onlyFade","transitionCurve","transitionText","assembleFont","assembleCssText","enableTransition","boxShadow","borderName","camelCase","makeStyleCoord","appendToBody","zrPainter","zrViewportRoot","body","viewportRootOffset","TooltipHTMLContent","_show","_styleCoord","_enterable","_firstShow","_longHide","_appendToBody","_container","onmouseenter","_hideTimeout","_inContent","onmouseleave","hideLater","_hideDelay","currentStyle","_moveIfResized","className","nearPointColor","_longHideTimeout","styleCoord","offsetHeight","pointerEvents","setContent","setEnterable","ratioX","ratioY","visibility","getOuterSize","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","TooltipRichContent","makeStyleCoord$1","shadowOuterSize","calcShadowOuterSize","mathMaxWith0","bind$2","each$c","parsePercent$3","proxyRect","TooltipView","_renderMode","_tooltipContent","_tooltipModel","_alwaysShowContent","tooltipContent","_initGlobalListener","_keepShow","_tryShow","_hide","_lastX","_lastY","_refreshUpdateTimeout","manuallyShowTip","_lastDataByCoordSys","makeDispatchAction$1","_ticket","_manuallyAxisShowTip","pointInfo","manuallyHideTip","tooltipCascadedModel","buildTooltipModel","_showAxisTooltip","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","_showTimout","singleTooltipModel","cbParamsList","articleMarkup","markupTextArrLegacy","itemCoordSys","axisItem","axisValue","axisValueLabel","axisSectionMarkup","cbParams","seriesTooltipResult","positionExpr","builtMarkupText","blockBreak","allMarkupText","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","tooltipTrigger","asyncTicket","subTooltipModel","defaultHtml","nearPoint","_getNearestPoint","params0","isTimeAxis","cbTicket","tooltipDataParams","contentSize","boxLayoutPosition","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","indexAxis","lastIndices","lastIdxItem","newIdxItem","modelCascade","resultModel","gapH","gapV","domWidth","domHeight","rectWidth","rectHeight","DEFAULT_TOOLBOX_BTNS","brushPreprocessor","brushComponents","brushComponentSpecifiedBtns","brushOpt","tbs","toolboxFeature","toolboxBrush","brushTypes","removeDuplicate","flag","each$d","hasKeys","createVisualMappings","stateList","supplementVisualOption","visualMappings","mappings","createMappings","visualData","mappingOption","__hidden","__alphaForOpacity","Creater","replaceVisualOption","getValueState","visualTypesMap","eachItem","valueOrIndex","rawDataItem","valueState","incrementalApplyVisual","makeBrushCommonSelectorForSeries","getLineSelectors","inLineRange","layoutRange","STATE_LIST","DISPATCH_METHOD","DISPATCH_FLAG","PRIORITY_BRUSH","layoutCovers","brushModel","brushSelected","throttleDelay","setBrushOption","brushIndex","thisBrushSelected","brushId","brushName","brushLink","linkedSeriesMap","selectedDataIndexForLink","rangeInfoBySeries","hasBrushExists","boundingRectBuilders","selectableArea","linkOthers","brushed","rangeInfoList","stepAParallel","stepAOthers","brushModelNotControll","checkInRange","seriesBrushSelected","doDispatch","getBoundingRectFromMinMax","rg","DEFAULT_OUT_OF_BRUSH_COLOR","BrushModel","inBrush","outOfBrush","setAreas","generateBrushOption","BrushView","$from","ICON_TYPES","BrushFeature","isBrushed","_brushMode","command","TitleModel","subtext","subtarget","TitleView","titleModel","subtextStyleModel","subText","subTextEl","sublink","groupRect","alignStyle","timelinePreprocessor","compatibleEC2","ec2Types","transferItem","controlPosition","itemStyleEmphasis","labelNormal","excludeLabelAttr","currentIndex","setCurrentIndex","isIndexMax","setPlayState","playState","TimelineModel","_initData","autoPlay","getPlayState","dataArr","_names","processedDataArr","rewind","playInterval","SliderTimelineModel","checkpointStyle","showPlayBtn","showPrevBtn","showNextBtn","playIcon","stopIcon","nextIcon","prevIcon","prevBtnSize","nextBtnSize","TimelineView","TimelineAxis","PI$9","labelDataIndexStore","SliderTimelineView","layoutInfo_1","mainGroup_1","_createGroup","labelGroup","axis_1","_createAxis","_renderAxisLabel","_position","_doPlayStop","_updateTicksStatus","_clearTimer","labelPosOpt","getViewRect$5","parsedLabelPos","labelAlignMap","labelBaselineMap","rotationMap","mainLength","controlModel","showControl","controlSize","controlGap","sizePlusGap","playPosition","prevBtnPosition","nextBtnPosition","labelAlign","labelBaseline","mainGroup","_labelGroup","rotateOriginX","rotateOriginY","viewBound","getBound","mainBound","labelBound","mainPosition","labelsPosition","mainBoundIdx","toBound","targetGroup","boundIdx","createScaleByModel$1","newGroup","_renderAxisLine","progressLine","_progressLine","_currentPointer","_renderAxisTick","_tickSymbols","hoverStyleModel","progressStyleModel","symbolOpt","_changeTimeline","giveSymbol","_tickLabels","hoverLabelModel","progressLabelModel","_renderControl","makeBtn","_handlePlayClick","willRotate","iconSize","btn","makeControlIcon","_renderCurrentPointer","me","onCreate","_handlePointerDrag","_handlePointerDragend","pointerMoveTo","onUpdate","nextState","_pointerChangeTimeline","mousePos","toCoord","_toAxisCoord","targetDataIndex","_findNearestTick","_timer","axisCoord","tickSymbols","tickLabels","objPath","fillLabel","inner$i","MarkerModel","createdBySelf","hostSeries","__hostSeries","markerOpt","markerModel","createMarkerModelFromSeries","getMarkerModelFromSeries","MarkPointModel","masterMarkerModel","hasXOrY","hasXAndY","markerTypeCalculatorWithExtent","otherDataDim","targetDataDim","otherCoordIndex","targetCoordIndex","coordArr","calcDataDim","numCalculate","coordArrValue","markerTypeCalculator","dataTransform","getAxisInfo$1","coordInfo","baseDataDim","valueDataDim","valueIndex","dataDimToCoordDim","dataFilter$1","sum_1","count_1","inner$j","MarkerView","markerGroupMap","markKeep","drawGroup","seriesModelList","updateMarkerLayout","xPx","yPx","MarkPointView","markPointModel","mpModel","symbolDrawMap","createList$1","coordDimsInfos","dataOpt","MarkLineModel","inner$k","markLineTransform","mlModel","itemArray","mlType","mlFrom","mlTo","normalizedItem","isInifinity","ifMarkLineHasOnlyDim","fromCoord","otherDimIndex","markLineFilter","updateSingleMarkerEndLayout","MarkLineView","markLineModel","mlData_1","fromData_1","toData_1","lineDrawMap","createList$2","fromData","toData","updateDataVisualAndLayout","fromSymbolRotate","fromSymbolSize","toSymbolRotate","toSymbolSize","optData","dimValueGetter$1","MarkAreaModel","inner$l","markAreaTransform","maModel","ltCoord","rbCoord","isInifinity$1","ifMarkAreaHasOnlyDim","markAreaFilter","getSingleMarkerEndPoint","dimPermutations","MarkAreaView","markAreaModel","areaData_1","areaGroupMap","polygonGroup","areaData","createList$3","xValue","yValue","getDefaultSelectorOptions","LegendModel","_updateSelector","_updateData","legendData","hasSelected","potentialData","availableNames","isPotential","_availableNames","allSelect","inverseSelect","inactiveColor","inactiveBorderColor","selectorLabel","selectorPosition","selectorItemGap","selectorButtonGap","legendSelectActionHandler","isToggleSelect","legendModel","isItemSelected","curry$1","each$e","Group$2","LegendView","newlineDisabled","_contentGroup","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","isFirstRender","resetInner","itemAlign","renderInner","mainRect","layoutInner","_backgroundEl","legendDrawnMap","selectMode","legendSymbolType","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","_createSelector","selectorGroup","createSelectorButton","selectorItem","emphasisLabelModel","legendModelItemStyle","itemIcon","legendGlobalTooltipModel","setSymbolStyle","legendSymbolCenter","hitRect","legendIndex","__legendDataIndex","contentRect","contentPos","selectorRect","selectorPos","orientIdx","hw","yx","isUseHoverLayer","legendFilter","ScrollableLegendModel","setScrollDataIndex","scrollDataIndex","mergeAndNormalizeLayoutParams$1","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","Group$3","WH$1","XY$1","ScrollableLegendView","_currentIndex","_controllerGroup","__rectSize","controllerGroup","pageIconSizeArr","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","processMaxSize","_layoutContentAndController","controllerRect","showController","_showController","containerPos","controllerPos","pageInfo","_getPageInfo","pageIndex","contentPosition","_updatePageInfoView","legendId","canJump","pageText","pageCount","containerRectSize","targetItemIndex","_findTargetItemIndex","targetItem","itemCount","pCount","pagePrevDataIndex","pageNextDataIndex","targetItemInfo","getItemInfo","winStartItemInfo","winEndItemInfo","currItemInfo","itemRect","itemInfo","winStart","defaultIndex","legendDataIdx","SliderZoomModel","handleIcon","moveHandleSize","moveHandleIcon","showDetail","showDataShadow","zoomLock","brushSelect","Rect$2","DEFAULT_LOCATION_EDGE_GAP","DEFAULT_FRAME_BORDER_WIDTH","DEFAULT_FILLER_SIZE","DEFAULT_MOVE_HANDLE_SIZE","HORIZONTAL","VERTICAL","LABEL_GAP","SHOW_DATA_SHADOW_SERIES_TYPE","REALTIME_ANIMATION_CONFIG","SliderZoomView","_onBrushEnd","_buildView","_updateView","_brushing","_resetLocation","_resetInterval","barGroup","sliderGroup","_renderDataShadow","_positionGroup","showMoveHandle","coordRect","_findCoordRect","_location","_size","targetAxisModel","otherAxisInverse","_dataShadowInfo","_getViewExtent","clickPanel","_onClickPanel","_onBrushStart","_prepareDataShadowInfo","dataShadowSegs","otherDataExtent","otherOffset","otherShadowExtent","thisShadowExtent","areaPoints","thisCoord","stride","lastIsEmpty","otherCoord","createDataShadowGroup","isSelectedArea","thisAxis","getOtherDim","thisDim","handles","handleLabels","filler","_onDragMove","_onDragEnd","onmouseover","_showDataInfo","onmouseout","bRect","_handleHeight","_handleWidth","handleColor","actualMoveZone","moveHandleHeight","moveHandle_1","moveHandle","moveZoneExpandSize","moveZone","ondragstart","_range","viewExtent","_handleEnds","_updateInterval","viewExtend","lastRange","nonRealtime","displaybles","handleInterval","handleHeight","segIntervals","segGroup","_updateDataInfo","dataInterval","_formatLabel","orderedHandleEnds","setLabel","barTransform","textPoint","labelPrecision","valueStr","showOrHide","changed","localPoint","_brushStart","_brushStartTime","brushShape","brushEndTime","_updateBrushRect","brushStart","endPoint","coordSysInfoList","InsideZoomModel","disabled","inner$m","apiInner","coordSysRecordMap","coordSysRecord","dataZoomInfoMap","dzReferCoordSysWrap","dzCoordSysInfo","createCoordSysRecord","dzReferCoordSysInfo","getRange","firstDzInfo","firstDzKey","disposeCoordSysRecord","controllerParams","mergeControllerParams","containsPoint","setViewInfoToCoordSysRecord","dzInfo","disposeCoordSysRecordIfNeeded","coordSysKeyArr","dzUid","dispatchAction$1","typePriority","dataZoomInfo","oneType","InsideZoomView","pan","getRangeHandlers","scrollMove","directionInfo","getDirectionInfo","percentPoint","signal","pixelStart","pixelLength","makeMover","getPercentDelta","percentDelta","oldPoint","newPoint","each$f","visualMapPreprocessor","has$1","pieces","splitList","calculable","VISUAL_PRIORITY","isTargetSeries","getDataDimension","getVisualMeta","getColorVisual","concreteDim","resultVisual","visualDefault","defaultOption$2","mapVisual$1","isArray$1","each$g","asc$2","linearMap$1","VisualMapModel","replacableOptionKeys","dataBound","controllerVisuals","resetItemSize","completeVisualOption","resetVisual","getTargetSeriesIndices","optionSeriesIndex","is","formatValueText","edgeSymbols","isMinMax","textValue","resetExtent","optDim","listDimensions","completeSingle","completeInactive","completeController","stateExist","stateAbsent","optExist","optAbsent","defa","symbolExists","symbolSizeExists","max_1","setSelected","getSelected","contentColor","textGap","DEFAULT_BAR_BOUND","ContinuousModel","_resetRange","auto","findTargetDataIndices","oVals","getColorStopValues","iVals","setStop","iIdx","oIdx","iLen","oLen","stopsLen","hoverLink","indicatorIcon","indicatorSize","indicatorStyle","stopValues","VisualMapView","autoPositionValues","doRender","getControllerVisual","visualCluster","forceState","visualObj","visualMapping","convertOpacityToAlpha","positionGroup","paramsSet","getItemAlign","modelOption","realIndex","reals","fakeValue","layoutInput","rParam","makeHighDownBatch","linearMap$2","each$h","mathMin$a","mathMax$a","HOVER_LINK_SIZE","HOVER_LINK_OUT","ContinuousView","_shapes","_dataInterval","_hoverLinkDataIndices","_useHandle","_renderBar","dataRangeText","_renderEndsText","_enableHoverLinkToSeries","_enableHoverLinkFromSeries","endsIndex","shapes","_createBarGroup","gradientBarGroup","createPolygon","getCursor$1","_dragHandle","textSize","handleThumbs","handleLabelPoints","_createHandle","_createIndicator","onDrift","onDragEnd","handleThumb","handleLabel","handleLabelPoint","indicatorLabel","indicatorLabelPoint","_firstShowIndicator","_hideIndicator","visualMapId","_hovering","_clearHoverLinkToSeries","useHoverLinkOnHandle","_doHoverLinkToSeries","forSketch","outOfRangeHandleEnds","inRangeHandleEnds","visualInRange","_createBarVisual","visualOutOfRange","barColor","barPoints","_updateHandle","_makeColorGradient","symbolSizes","_createBarPoints","handlesColor","sampleNumber","currValue","_showIndicator","cursorValue","rangeSymbol","halfHoverLinkSize","oldIndicatorPos","indicatorNewProps","labelNewProps","_hoverLinkFromSeriesMouseOver","_clearHoverLinkFromSeries","cursorPos","hoverOnBar","getHalfHoverLinkSize","hoverRange","oldBatch","newBatch","resultBatches","_dispatchHighDown","hoverLinkDataSize","hoverLinkOnHandle","actionInfo$2","PiecewiseModel","_pieceList","_mode","_determineMode","resetMethods","_resetSelected","visualTypesInPieces","exists","getSelectedMapKey","hasSel_1","pIdx","getRepresentValue","representValue","pieceInterval","minOpen","maxOpen","itemSymbol","outPieceList","splitStep","normalizeReverse","pieceListItem","closeList","infinityList","useMinMax","PiecewiseVisualMapView","_getItemAlign","viewData","_getViewData","endsText","viewPieceList","_onItemClick","_enableHoverLink","indexInModelPieceList","_createItemSymbol","visualState","onHoverLink","shapeParam","DEFAULT_OPTION","inner$n","ariaVisual","ariaModel","setDecal","decalModel","useDecal","paletteScopeGroupByType_1","decalScope","dataAll_1","idxMap_1","decalScope_1","dataCount_1","paletteDecal","specifiedDecal","mergeDecal","resultDecal","labelLocale","seriesCnt","maxDataCnt","maxSeriesCnt","displaySeriesCnt","ariaLabel","getTitle","seriesLabels_1","seriesLabel","getSeriesTypeName","partialLabel","displayCnt","dataLabels","dataLabel","middleSeparator_1","endSeparator_1","separatorModel","middleSeparator","endSeparator","keyValues","ariaPreprocessor","PRIORITY_VISUAL_ARIA$1","createElementNS","NONE","mathRound","mathSin$4","mathCos$4","PI$a","PI2$a","EPSILON$4","round3","round4","isAroundZero$1","pathHasFill","pathHasStroke","svgEl","attrXLink","setAttributeNS","attrXML","bindStyle","strokeWidth","strokeScale_1","SVGPathRebuilder","_d","_str","firstCmd","dThetaPositive","isCircle","unifiedTheta","_invalid","generateStr","getStr","svgPath","__svgEl","pathVersion","elExt","svgPathBuilder","__svgPathBuilder","__svgPathVersion","svgImage","HTMLImageElement","__imageSrc","TEXT_ALIGN_TO_ANCHOR","adjustTextY$1","svgText","textSvgEl","textSvgElStyle","equals","editLength","maxEditLength","bestPath","newPos","oldPos","extractCommon","added","execEditLength","diagonalPath","basePath","addPath","removePath","canAdd","canRemove","clonePath","pushComponent","buildValues","commonCount","componentPos","componentLen","arrayDiff","MARK_UNUSED","MARK_USED","Definable","zrId","tagNames","markLabel","domName","nextId","_domName","_zrId","_svgRoot","_tagNames","_markLabel","getDefs","isForceCreating","getElementsByTagName","defs_1","doUpdate","addDom","removeDom","getDoms","doms","tagName","tags","markAllUnused","markDomUsed","markDomUnused","isDomUnused","removeUnused","getSvgProxy","getSvgElement","isLinearGradient","isRadialGradient","isGradient","GradientManager","addWithoutUpdate","that_1","__dom","markUsed","updateDom","stop_1","hex","isPattern","patternDomMap","PatternManager","patternDom","SVGElement","prevImage","imageSrc","HTMLCanvasElement","createdImage","generateClipPathsKey","hasClipPath","ClippathManager","_refGroups","_keyDuplicateCount","_getClipPathGroup","prevDisplayable","keyDuplicateCount","clipPathKey","clipGroup","clipPathEl","svgProxy","newRefGroupsMap","ShadowManager","_shadowDomMap","_shadowDomPool","_getFromPool","shadowDom","domChild","shadowKey","getShadowKey","_shadowDom","globalScale","stdDx","stdDy","stdDeviation","shadowDomsPool","parseInt10$1","checkParentAvailable","insertAfter","prevSibling","prepend","removeFromMyParent","SVGPainter","createMethodNotSupport","svgDom","bgRoot","_gradientManager","_patternManager","_clipPathManager","_shadowManager","viewport","_svgDom","_backgroundRoot","_viewport","_visibleList","_backgroundNode","bgNode","tag","gradientManager","patternManager","clipPathManager","shadowManager","visibleList","listLen","newVisibleList","prevSvgElement","topPrevSvgElement","currentClipGroup","isAdd","_getDefs","viewportStyle","viewportNode","encodeURIComponent","outerHTML","innerDrawElementOnCanvas","util"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nvar Browser = (function () {\r\n function Browser() {\r\n this.firefox = false;\r\n this.ie = false;\r\n this.edge = false;\r\n this.weChat = false;\r\n }\r\n return Browser;\r\n}());\r\nvar Env = (function () {\r\n function Env() {\r\n this.browser = new Browser();\r\n this.node = false;\r\n this.wxa = false;\r\n this.worker = false;\r\n this.canvasSupported = false;\r\n this.svgSupported = false;\r\n this.touchEventsSupported = false;\r\n this.pointerEventsSupported = false;\r\n this.domSupported = false;\r\n }\r\n return Env;\r\n}());\r\nvar env = new Env();\r\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\r\n env.wxa = true;\r\n env.canvasSupported = true;\r\n env.touchEventsSupported = true;\r\n}\r\nelse if (typeof document === 'undefined' && typeof self !== 'undefined') {\r\n env.worker = true;\r\n env.canvasSupported = true;\r\n}\r\nelse if (typeof navigator === 'undefined') {\r\n env.node = true;\r\n env.canvasSupported = true;\r\n env.svgSupported = true;\r\n}\r\nelse {\r\n detect(navigator.userAgent, env);\r\n}\r\nfunction detect(ua, env) {\r\n var browser = env.browser;\r\n var firefox = ua.match(/Firefox\\/([\\d.]+)/);\r\n var ie = ua.match(/MSIE\\s([\\d.]+)/)\r\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\r\n var edge = ua.match(/Edge\\/([\\d.]+)/);\r\n var weChat = (/micromessenger/i).test(ua);\r\n if (firefox) {\r\n browser.firefox = true;\r\n browser.version = firefox[1];\r\n }\r\n if (ie) {\r\n browser.ie = true;\r\n browser.version = ie[1];\r\n }\r\n if (edge) {\r\n browser.edge = true;\r\n browser.version = edge[1];\r\n }\r\n if (weChat) {\r\n browser.weChat = true;\r\n }\r\n env.canvasSupported = !!document.createElement('canvas').getContext;\r\n env.svgSupported = typeof SVGRect !== 'undefined';\r\n env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\r\n env.pointerEventsSupported = 'onpointerdown' in window\r\n && (browser.edge || (browser.ie && +browser.version >= 11));\r\n env.domSupported = typeof document !== 'undefined';\r\n}\n\nvar BUILTIN_OBJECT = {\r\n '[object Function]': true,\r\n '[object RegExp]': true,\r\n '[object Date]': true,\r\n '[object Error]': true,\r\n '[object CanvasGradient]': true,\r\n '[object CanvasPattern]': true,\r\n '[object Image]': true,\r\n '[object Canvas]': true\r\n};\r\nvar TYPED_ARRAY = {\r\n '[object Int8Array]': true,\r\n '[object Uint8Array]': true,\r\n '[object Uint8ClampedArray]': true,\r\n '[object Int16Array]': true,\r\n '[object Uint16Array]': true,\r\n '[object Int32Array]': true,\r\n '[object Uint32Array]': true,\r\n '[object Float32Array]': true,\r\n '[object Float64Array]': true\r\n};\r\nvar objToString = Object.prototype.toString;\r\nvar arrayProto = Array.prototype;\r\nvar nativeForEach = arrayProto.forEach;\r\nvar nativeFilter = arrayProto.filter;\r\nvar nativeSlice = arrayProto.slice;\r\nvar nativeMap = arrayProto.map;\r\nvar ctorFunction = (function () { }).constructor;\r\nvar protoFunction = ctorFunction ? ctorFunction.prototype : null;\r\nvar methods = {};\r\nfunction $override(name, fn) {\r\n methods[name] = fn;\r\n}\r\nvar idStart = 0x0907;\r\nfunction guid() {\r\n return idStart++;\r\n}\r\nfunction logError() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (typeof console !== 'undefined') {\r\n console.error.apply(console, args);\r\n }\r\n}\r\nfunction clone(source) {\r\n if (source == null || typeof source !== 'object') {\r\n return source;\r\n }\r\n var result = source;\r\n var typeStr = objToString.call(source);\r\n if (typeStr === '[object Array]') {\r\n if (!isPrimitive(source)) {\r\n result = [];\r\n for (var i = 0, len = source.length; i < len; i++) {\r\n result[i] = clone(source[i]);\r\n }\r\n }\r\n }\r\n else if (TYPED_ARRAY[typeStr]) {\r\n if (!isPrimitive(source)) {\r\n var Ctor = source.constructor;\r\n if (Ctor.from) {\r\n result = Ctor.from(source);\r\n }\r\n else {\r\n result = new Ctor(source.length);\r\n for (var i = 0, len = source.length; i < len; i++) {\r\n result[i] = clone(source[i]);\r\n }\r\n }\r\n }\r\n }\r\n else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\r\n result = {};\r\n for (var key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n result[key] = clone(source[key]);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\nfunction merge(target, source, overwrite) {\r\n if (!isObject(source) || !isObject(target)) {\r\n return overwrite ? clone(source) : target;\r\n }\r\n for (var key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n var targetProp = target[key];\r\n var sourceProp = source[key];\r\n if (isObject(sourceProp)\r\n && isObject(targetProp)\r\n && !isArray(sourceProp)\r\n && !isArray(targetProp)\r\n && !isDom(sourceProp)\r\n && !isDom(targetProp)\r\n && !isBuiltInObject(sourceProp)\r\n && !isBuiltInObject(targetProp)\r\n && !isPrimitive(sourceProp)\r\n && !isPrimitive(targetProp)) {\r\n merge(targetProp, sourceProp, overwrite);\r\n }\r\n else if (overwrite || !(key in target)) {\r\n target[key] = clone(source[key]);\r\n }\r\n }\r\n }\r\n return target;\r\n}\r\nfunction mergeAll(targetAndSources, overwrite) {\r\n var result = targetAndSources[0];\r\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\r\n result = merge(result, targetAndSources[i], overwrite);\r\n }\r\n return result;\r\n}\r\nfunction extend(target, source) {\r\n if (Object.assign) {\r\n Object.assign(target, source);\r\n }\r\n else {\r\n for (var key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n return target;\r\n}\r\nfunction defaults(target, source, overlay) {\r\n var keysArr = keys(source);\r\n for (var i = 0; i < keysArr.length; i++) {\r\n var key = keysArr[i];\r\n if ((overlay ? source[key] != null : target[key] == null)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n return target;\r\n}\r\nvar createCanvas = function () {\r\n return methods.createCanvas();\r\n};\r\nmethods.createCanvas = function () {\r\n return document.createElement('canvas');\r\n};\r\nfunction indexOf(array, value) {\r\n if (array) {\r\n if (array.indexOf) {\r\n return array.indexOf(value);\r\n }\r\n for (var i = 0, len = array.length; i < len; i++) {\r\n if (array[i] === value) {\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n}\r\nfunction inherits(clazz, baseClazz) {\r\n var clazzPrototype = clazz.prototype;\r\n function F() { }\r\n F.prototype = baseClazz.prototype;\r\n clazz.prototype = new F();\r\n for (var prop in clazzPrototype) {\r\n if (clazzPrototype.hasOwnProperty(prop)) {\r\n clazz.prototype[prop] = clazzPrototype[prop];\r\n }\r\n }\r\n clazz.prototype.constructor = clazz;\r\n clazz.superClass = baseClazz;\r\n}\r\nfunction mixin(target, source, override) {\r\n target = 'prototype' in target ? target.prototype : target;\r\n source = 'prototype' in source ? source.prototype : source;\r\n if (Object.getOwnPropertyNames) {\r\n var keyList = Object.getOwnPropertyNames(source);\r\n for (var i = 0; i < keyList.length; i++) {\r\n var key = keyList[i];\r\n if (key !== 'constructor') {\r\n if ((override ? source[key] != null : target[key] == null)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n defaults(target, source, override);\r\n }\r\n}\r\nfunction isArrayLike(data) {\r\n if (!data) {\r\n return false;\r\n }\r\n if (typeof data === 'string') {\r\n return false;\r\n }\r\n return typeof data.length === 'number';\r\n}\r\nfunction each(arr, cb, context) {\r\n if (!(arr && cb)) {\r\n return;\r\n }\r\n if (arr.forEach && arr.forEach === nativeForEach) {\r\n arr.forEach(cb, context);\r\n }\r\n else if (arr.length === +arr.length) {\r\n for (var i = 0, len = arr.length; i < len; i++) {\r\n cb.call(context, arr[i], i, arr);\r\n }\r\n }\r\n else {\r\n for (var key in arr) {\r\n if (arr.hasOwnProperty(key)) {\r\n cb.call(context, arr[key], key, arr);\r\n }\r\n }\r\n }\r\n}\r\nfunction map(arr, cb, context) {\r\n if (!arr) {\r\n return [];\r\n }\r\n if (!cb) {\r\n return slice(arr);\r\n }\r\n if (arr.map && arr.map === nativeMap) {\r\n return arr.map(cb, context);\r\n }\r\n else {\r\n var result = [];\r\n for (var i = 0, len = arr.length; i < len; i++) {\r\n result.push(cb.call(context, arr[i], i, arr));\r\n }\r\n return result;\r\n }\r\n}\r\nfunction reduce(arr, cb, memo, context) {\r\n if (!(arr && cb)) {\r\n return;\r\n }\r\n for (var i = 0, len = arr.length; i < len; i++) {\r\n memo = cb.call(context, memo, arr[i], i, arr);\r\n }\r\n return memo;\r\n}\r\nfunction filter(arr, cb, context) {\r\n if (!arr) {\r\n return [];\r\n }\r\n if (!cb) {\r\n return slice(arr);\r\n }\r\n if (arr.filter && arr.filter === nativeFilter) {\r\n return arr.filter(cb, context);\r\n }\r\n else {\r\n var result = [];\r\n for (var i = 0, len = arr.length; i < len; i++) {\r\n if (cb.call(context, arr[i], i, arr)) {\r\n result.push(arr[i]);\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\nfunction find(arr, cb, context) {\r\n if (!(arr && cb)) {\r\n return;\r\n }\r\n for (var i = 0, len = arr.length; i < len; i++) {\r\n if (cb.call(context, arr[i], i, arr)) {\r\n return arr[i];\r\n }\r\n }\r\n}\r\nfunction keys(obj) {\r\n if (!obj) {\r\n return [];\r\n }\r\n if (Object.keys) {\r\n return Object.keys(obj);\r\n }\r\n var keyList = [];\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n keyList.push(key);\r\n }\r\n }\r\n return keyList;\r\n}\r\nfunction bindPolyfill(func, context) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n return function () {\r\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\r\n };\r\n}\r\nvar bind = (protoFunction && isFunction(protoFunction.bind))\r\n ? protoFunction.call.bind(protoFunction.bind)\r\n : bindPolyfill;\r\nfunction curry(func) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n return function () {\r\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\r\n };\r\n}\r\nfunction isArray(value) {\r\n if (Array.isArray) {\r\n return Array.isArray(value);\r\n }\r\n return objToString.call(value) === '[object Array]';\r\n}\r\nfunction isFunction(value) {\r\n return typeof value === 'function';\r\n}\r\nfunction isString(value) {\r\n return typeof value === 'string';\r\n}\r\nfunction isStringSafe(value) {\r\n return objToString.call(value) === '[object String]';\r\n}\r\nfunction isNumber(value) {\r\n return typeof value === 'number';\r\n}\r\nfunction isObject(value) {\r\n var type = typeof value;\r\n return type === 'function' || (!!value && type === 'object');\r\n}\r\nfunction isBuiltInObject(value) {\r\n return !!BUILTIN_OBJECT[objToString.call(value)];\r\n}\r\nfunction isTypedArray(value) {\r\n return !!TYPED_ARRAY[objToString.call(value)];\r\n}\r\nfunction isDom(value) {\r\n return typeof value === 'object'\r\n && typeof value.nodeType === 'number'\r\n && typeof value.ownerDocument === 'object';\r\n}\r\nfunction isGradientObject(value) {\r\n return value.colorStops != null;\r\n}\r\nfunction isPatternObject(value) {\r\n return value.image != null;\r\n}\r\nfunction isRegExp(value) {\r\n return objToString.call(value) === '[object RegExp]';\r\n}\r\nfunction eqNaN(value) {\r\n return value !== value;\r\n}\r\nfunction retrieve() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n for (var i = 0, len = args.length; i < len; i++) {\r\n if (args[i] != null) {\r\n return args[i];\r\n }\r\n }\r\n}\r\nfunction retrieve2(value0, value1) {\r\n return value0 != null\r\n ? value0\r\n : value1;\r\n}\r\nfunction retrieve3(value0, value1, value2) {\r\n return value0 != null\r\n ? value0\r\n : value1 != null\r\n ? value1\r\n : value2;\r\n}\r\nfunction slice(arr) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n return nativeSlice.apply(arr, args);\r\n}\r\nfunction normalizeCssArray(val) {\r\n if (typeof (val) === 'number') {\r\n return [val, val, val, val];\r\n }\r\n var len = val.length;\r\n if (len === 2) {\r\n return [val[0], val[1], val[0], val[1]];\r\n }\r\n else if (len === 3) {\r\n return [val[0], val[1], val[2], val[1]];\r\n }\r\n return val;\r\n}\r\nfunction assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n}\r\nfunction trim(str) {\r\n if (str == null) {\r\n return null;\r\n }\r\n else if (typeof str.trim === 'function') {\r\n return str.trim();\r\n }\r\n else {\r\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n }\r\n}\r\nvar primitiveKey = '__ec_primitive__';\r\nfunction setAsPrimitive(obj) {\r\n obj[primitiveKey] = true;\r\n}\r\nfunction isPrimitive(obj) {\r\n return obj[primitiveKey];\r\n}\r\nvar HashMap = (function () {\r\n function HashMap(obj) {\r\n this.data = {};\r\n var isArr = isArray(obj);\r\n this.data = {};\r\n var thisMap = this;\r\n (obj instanceof HashMap)\r\n ? obj.each(visit)\r\n : (obj && each(obj, visit));\r\n function visit(value, key) {\r\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\r\n }\r\n }\r\n HashMap.prototype.get = function (key) {\r\n return this.data.hasOwnProperty(key) ? this.data[key] : null;\r\n };\r\n HashMap.prototype.set = function (key, value) {\r\n return (this.data[key] = value);\r\n };\r\n HashMap.prototype.each = function (cb, context) {\r\n for (var key in this.data) {\r\n if (this.data.hasOwnProperty(key)) {\r\n cb.call(context, this.data[key], key);\r\n }\r\n }\r\n };\r\n HashMap.prototype.keys = function () {\r\n return keys(this.data);\r\n };\r\n HashMap.prototype.removeKey = function (key) {\r\n delete this.data[key];\r\n };\r\n return HashMap;\r\n}());\r\nfunction createHashMap(obj) {\r\n return new HashMap(obj);\r\n}\r\nfunction concatArray(a, b) {\r\n var newArray = new a.constructor(a.length + b.length);\r\n for (var i = 0; i < a.length; i++) {\r\n newArray[i] = a[i];\r\n }\r\n var offset = a.length;\r\n for (var i = 0; i < b.length; i++) {\r\n newArray[i + offset] = b[i];\r\n }\r\n return newArray;\r\n}\r\nfunction createObject(proto, properties) {\r\n var obj;\r\n if (Object.create) {\r\n obj = Object.create(proto);\r\n }\r\n else {\r\n var StyleCtor = function () { };\r\n StyleCtor.prototype = proto;\r\n obj = new StyleCtor();\r\n }\r\n if (properties) {\r\n extend(obj, properties);\r\n }\r\n return obj;\r\n}\r\nfunction hasOwn(own, prop) {\r\n return own.hasOwnProperty(prop);\r\n}\r\nfunction noop() { }\n\nvar zrUtil = /*#__PURE__*/Object.freeze({\n __proto__: null,\n $override: $override,\n guid: guid,\n logError: logError,\n clone: clone,\n merge: merge,\n mergeAll: mergeAll,\n extend: extend,\n defaults: defaults,\n createCanvas: createCanvas,\n indexOf: indexOf,\n inherits: inherits,\n mixin: mixin,\n isArrayLike: isArrayLike,\n each: each,\n map: map,\n reduce: reduce,\n filter: filter,\n find: find,\n keys: keys,\n bind: bind,\n curry: curry,\n isArray: isArray,\n isFunction: isFunction,\n isString: isString,\n isStringSafe: isStringSafe,\n isNumber: isNumber,\n isObject: isObject,\n isBuiltInObject: isBuiltInObject,\n isTypedArray: isTypedArray,\n isDom: isDom,\n isGradientObject: isGradientObject,\n isPatternObject: isPatternObject,\n isRegExp: isRegExp,\n eqNaN: eqNaN,\n retrieve: retrieve,\n retrieve2: retrieve2,\n retrieve3: retrieve3,\n slice: slice,\n normalizeCssArray: normalizeCssArray,\n assert: assert,\n trim: trim,\n setAsPrimitive: setAsPrimitive,\n isPrimitive: isPrimitive,\n HashMap: HashMap,\n createHashMap: createHashMap,\n concatArray: concatArray,\n createObject: createObject,\n hasOwn: hasOwn,\n noop: noop\n});\n\nfunction create(x, y) {\r\n if (x == null) {\r\n x = 0;\r\n }\r\n if (y == null) {\r\n y = 0;\r\n }\r\n return [x, y];\r\n}\r\nfunction copy(out, v) {\r\n out[0] = v[0];\r\n out[1] = v[1];\r\n return out;\r\n}\r\nfunction clone$1(v) {\r\n return [v[0], v[1]];\r\n}\r\nfunction set(out, a, b) {\r\n out[0] = a;\r\n out[1] = b;\r\n return out;\r\n}\r\nfunction add(out, v1, v2) {\r\n out[0] = v1[0] + v2[0];\r\n out[1] = v1[1] + v2[1];\r\n return out;\r\n}\r\nfunction scaleAndAdd(out, v1, v2, a) {\r\n out[0] = v1[0] + v2[0] * a;\r\n out[1] = v1[1] + v2[1] * a;\r\n return out;\r\n}\r\nfunction sub(out, v1, v2) {\r\n out[0] = v1[0] - v2[0];\r\n out[1] = v1[1] - v2[1];\r\n return out;\r\n}\r\nfunction len(v) {\r\n return Math.sqrt(lenSquare(v));\r\n}\r\nvar length = len;\r\nfunction lenSquare(v) {\r\n return v[0] * v[0] + v[1] * v[1];\r\n}\r\nvar lengthSquare = lenSquare;\r\nfunction mul(out, v1, v2) {\r\n out[0] = v1[0] * v2[0];\r\n out[1] = v1[1] * v2[1];\r\n return out;\r\n}\r\nfunction div(out, v1, v2) {\r\n out[0] = v1[0] / v2[0];\r\n out[1] = v1[1] / v2[1];\r\n return out;\r\n}\r\nfunction dot(v1, v2) {\r\n return v1[0] * v2[0] + v1[1] * v2[1];\r\n}\r\nfunction scale(out, v, s) {\r\n out[0] = v[0] * s;\r\n out[1] = v[1] * s;\r\n return out;\r\n}\r\nfunction normalize(out, v) {\r\n var d = len(v);\r\n if (d === 0) {\r\n out[0] = 0;\r\n out[1] = 0;\r\n }\r\n else {\r\n out[0] = v[0] / d;\r\n out[1] = v[1] / d;\r\n }\r\n return out;\r\n}\r\nfunction distance(v1, v2) {\r\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\r\n + (v1[1] - v2[1]) * (v1[1] - v2[1]));\r\n}\r\nvar dist = distance;\r\nfunction distanceSquare(v1, v2) {\r\n return (v1[0] - v2[0]) * (v1[0] - v2[0])\r\n + (v1[1] - v2[1]) * (v1[1] - v2[1]);\r\n}\r\nvar distSquare = distanceSquare;\r\nfunction negate(out, v) {\r\n out[0] = -v[0];\r\n out[1] = -v[1];\r\n return out;\r\n}\r\nfunction lerp(out, v1, v2, t) {\r\n out[0] = v1[0] + t * (v2[0] - v1[0]);\r\n out[1] = v1[1] + t * (v2[1] - v1[1]);\r\n return out;\r\n}\r\nfunction applyTransform(out, v, m) {\r\n var x = v[0];\r\n var y = v[1];\r\n out[0] = m[0] * x + m[2] * y + m[4];\r\n out[1] = m[1] * x + m[3] * y + m[5];\r\n return out;\r\n}\r\nfunction min(out, v1, v2) {\r\n out[0] = Math.min(v1[0], v2[0]);\r\n out[1] = Math.min(v1[1], v2[1]);\r\n return out;\r\n}\r\nfunction max(out, v1, v2) {\r\n out[0] = Math.max(v1[0], v2[0]);\r\n out[1] = Math.max(v1[1], v2[1]);\r\n return out;\r\n}\n\nvar vector = /*#__PURE__*/Object.freeze({\n __proto__: null,\n create: create,\n copy: copy,\n clone: clone$1,\n set: set,\n add: add,\n scaleAndAdd: scaleAndAdd,\n sub: sub,\n len: len,\n length: length,\n lenSquare: lenSquare,\n lengthSquare: lengthSquare,\n mul: mul,\n div: div,\n dot: dot,\n scale: scale,\n normalize: normalize,\n distance: distance,\n dist: dist,\n distanceSquare: distanceSquare,\n distSquare: distSquare,\n negate: negate,\n lerp: lerp,\n applyTransform: applyTransform,\n min: min,\n max: max\n});\n\nvar Param = (function () {\r\n function Param(target, e) {\r\n this.target = target;\r\n this.topTarget = e && e.topTarget;\r\n }\r\n return Param;\r\n}());\r\nvar Draggable = (function () {\r\n function Draggable(handler) {\r\n this.handler = handler;\r\n handler.on('mousedown', this._dragStart, this);\r\n handler.on('mousemove', this._drag, this);\r\n handler.on('mouseup', this._dragEnd, this);\r\n }\r\n Draggable.prototype._dragStart = function (e) {\r\n var draggingTarget = e.target;\r\n while (draggingTarget && !draggingTarget.draggable) {\r\n draggingTarget = draggingTarget.parent;\r\n }\r\n if (draggingTarget) {\r\n this._draggingTarget = draggingTarget;\r\n draggingTarget.dragging = true;\r\n this._x = e.offsetX;\r\n this._y = e.offsetY;\r\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\r\n }\r\n };\r\n Draggable.prototype._drag = function (e) {\r\n var draggingTarget = this._draggingTarget;\r\n if (draggingTarget) {\r\n var x = e.offsetX;\r\n var y = e.offsetY;\r\n var dx = x - this._x;\r\n var dy = y - this._y;\r\n this._x = x;\r\n this._y = y;\r\n draggingTarget.drift(dx, dy, e);\r\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\r\n var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\r\n var lastDropTarget = this._dropTarget;\r\n this._dropTarget = dropTarget;\r\n if (draggingTarget !== dropTarget) {\r\n if (lastDropTarget && dropTarget !== lastDropTarget) {\r\n this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\r\n }\r\n if (dropTarget && dropTarget !== lastDropTarget) {\r\n this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\r\n }\r\n }\r\n }\r\n };\r\n Draggable.prototype._dragEnd = function (e) {\r\n var draggingTarget = this._draggingTarget;\r\n if (draggingTarget) {\r\n draggingTarget.dragging = false;\r\n }\r\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\r\n if (this._dropTarget) {\r\n this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\r\n }\r\n this._draggingTarget = null;\r\n this._dropTarget = null;\r\n };\r\n return Draggable;\r\n}());\n\nvar Eventful = (function () {\r\n function Eventful(eventProcessors) {\r\n if (eventProcessors) {\r\n this._$eventProcessor = eventProcessors;\r\n }\r\n }\r\n Eventful.prototype.on = function (event, query, handler, context) {\r\n if (!this._$handlers) {\r\n this._$handlers = {};\r\n }\r\n var _h = this._$handlers;\r\n if (typeof query === 'function') {\r\n context = handler;\r\n handler = query;\r\n query = null;\r\n }\r\n if (!handler || !event) {\r\n return this;\r\n }\r\n var eventProcessor = this._$eventProcessor;\r\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\r\n query = eventProcessor.normalizeQuery(query);\r\n }\r\n if (!_h[event]) {\r\n _h[event] = [];\r\n }\r\n for (var i = 0; i < _h[event].length; i++) {\r\n if (_h[event][i].h === handler) {\r\n return this;\r\n }\r\n }\r\n var wrap = {\r\n h: handler,\r\n query: query,\r\n ctx: (context || this),\r\n callAtLast: handler.zrEventfulCallAtLast\r\n };\r\n var lastIndex = _h[event].length - 1;\r\n var lastWrap = _h[event][lastIndex];\r\n (lastWrap && lastWrap.callAtLast)\r\n ? _h[event].splice(lastIndex, 0, wrap)\r\n : _h[event].push(wrap);\r\n return this;\r\n };\r\n Eventful.prototype.isSilent = function (eventName) {\r\n var _h = this._$handlers;\r\n return !_h || !_h[eventName] || !_h[eventName].length;\r\n };\r\n Eventful.prototype.off = function (eventType, handler) {\r\n var _h = this._$handlers;\r\n if (!_h) {\r\n return this;\r\n }\r\n if (!eventType) {\r\n this._$handlers = {};\r\n return this;\r\n }\r\n if (handler) {\r\n if (_h[eventType]) {\r\n var newList = [];\r\n for (var i = 0, l = _h[eventType].length; i < l; i++) {\r\n if (_h[eventType][i].h !== handler) {\r\n newList.push(_h[eventType][i]);\r\n }\r\n }\r\n _h[eventType] = newList;\r\n }\r\n if (_h[eventType] && _h[eventType].length === 0) {\r\n delete _h[eventType];\r\n }\r\n }\r\n else {\r\n delete _h[eventType];\r\n }\r\n return this;\r\n };\r\n Eventful.prototype.trigger = function (eventType) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (!this._$handlers) {\r\n return this;\r\n }\r\n var _h = this._$handlers[eventType];\r\n var eventProcessor = this._$eventProcessor;\r\n if (_h) {\r\n var argLen = args.length;\r\n var len = _h.length;\r\n for (var i = 0; i < len; i++) {\r\n var hItem = _h[i];\r\n if (eventProcessor\r\n && eventProcessor.filter\r\n && hItem.query != null\r\n && !eventProcessor.filter(eventType, hItem.query)) {\r\n continue;\r\n }\r\n switch (argLen) {\r\n case 0:\r\n hItem.h.call(hItem.ctx);\r\n break;\r\n case 1:\r\n hItem.h.call(hItem.ctx, args[0]);\r\n break;\r\n case 2:\r\n hItem.h.call(hItem.ctx, args[0], args[1]);\r\n break;\r\n default:\r\n hItem.h.apply(hItem.ctx, args);\r\n break;\r\n }\r\n }\r\n }\r\n eventProcessor && eventProcessor.afterTrigger\r\n && eventProcessor.afterTrigger(eventType);\r\n return this;\r\n };\r\n Eventful.prototype.triggerWithContext = function (type) {\r\n if (!this._$handlers) {\r\n return this;\r\n }\r\n var _h = this._$handlers[type];\r\n var eventProcessor = this._$eventProcessor;\r\n if (_h) {\r\n var args = arguments;\r\n var argLen = args.length;\r\n var ctx = args[argLen - 1];\r\n var len = _h.length;\r\n for (var i = 0; i < len; i++) {\r\n var hItem = _h[i];\r\n if (eventProcessor\r\n && eventProcessor.filter\r\n && hItem.query != null\r\n && !eventProcessor.filter(type, hItem.query)) {\r\n continue;\r\n }\r\n switch (argLen) {\r\n case 0:\r\n hItem.h.call(ctx);\r\n break;\r\n case 1:\r\n hItem.h.call(ctx, args[0]);\r\n break;\r\n case 2:\r\n hItem.h.call(ctx, args[0], args[1]);\r\n break;\r\n default:\r\n hItem.h.apply(ctx, args.slice(1, argLen - 1));\r\n break;\r\n }\r\n }\r\n }\r\n eventProcessor && eventProcessor.afterTrigger\r\n && eventProcessor.afterTrigger(type);\r\n return this;\r\n };\r\n return Eventful;\r\n}());\n\nvar LN2 = Math.log(2);\r\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\r\n var cacheKey = rowMask + '-' + colMask;\r\n var fullRank = rows.length;\r\n if (detCache.hasOwnProperty(cacheKey)) {\r\n return detCache[cacheKey];\r\n }\r\n if (rank === 1) {\r\n var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\r\n return rows[rowStart][colStart];\r\n }\r\n var subRowMask = rowMask | (1 << rowStart);\r\n var subRowStart = rowStart + 1;\r\n while (rowMask & (1 << subRowStart)) {\r\n subRowStart++;\r\n }\r\n var sum = 0;\r\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\r\n var colTag = 1 << j;\r\n if (!(colTag & colMask)) {\r\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\r\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\r\n colLocalIdx++;\r\n }\r\n }\r\n detCache[cacheKey] = sum;\r\n return sum;\r\n}\r\nfunction buildTransformer(src, dest) {\r\n var mA = [\r\n [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\r\n [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\r\n [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\r\n [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\r\n [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\r\n [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\r\n [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\r\n [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\r\n ];\r\n var detCache = {};\r\n var det = determinant(mA, 8, 0, 0, 0, detCache);\r\n if (det === 0) {\r\n return;\r\n }\r\n var vh = [];\r\n for (var i = 0; i < 8; i++) {\r\n for (var j = 0; j < 8; j++) {\r\n vh[j] == null && (vh[j] = 0);\r\n vh[j] += ((i + j) % 2 ? -1 : 1)\r\n * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\r\n / det * dest[i];\r\n }\r\n }\r\n return function (out, srcPointX, srcPointY) {\r\n var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\r\n out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\r\n out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\r\n };\r\n}\n\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\r\nvar _calcOut = [];\r\nfunction transformLocalCoord(out, elFrom, elTarget, inX, inY) {\r\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true)\r\n && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\r\n}\r\nfunction transformCoordWithViewport(out, el, inX, inY, inverse) {\r\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\r\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\r\n var markers = prepareCoordMarkers(el, saved);\r\n var transformer = preparePointerTransformer(markers, saved, inverse);\r\n if (transformer) {\r\n transformer(out, inX, inY);\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction prepareCoordMarkers(el, saved) {\r\n var markers = saved.markers;\r\n if (markers) {\r\n return markers;\r\n }\r\n markers = saved.markers = [];\r\n var propLR = ['left', 'right'];\r\n var propTB = ['top', 'bottom'];\r\n for (var i = 0; i < 4; i++) {\r\n var marker = document.createElement('div');\r\n var stl = marker.style;\r\n var idxLR = i % 2;\r\n var idxTB = (i >> 1) % 2;\r\n stl.cssText = [\r\n 'position: absolute',\r\n 'visibility: hidden',\r\n 'padding: 0',\r\n 'margin: 0',\r\n 'border-width: 0',\r\n 'user-select: none',\r\n 'width:0',\r\n 'height:0',\r\n propLR[idxLR] + ':0',\r\n propTB[idxTB] + ':0',\r\n propLR[1 - idxLR] + ':auto',\r\n propTB[1 - idxTB] + ':auto',\r\n ''\r\n ].join('!important;');\r\n el.appendChild(marker);\r\n markers.push(marker);\r\n }\r\n return markers;\r\n}\r\nfunction preparePointerTransformer(markers, saved, inverse) {\r\n var transformerName = inverse ? 'invTrans' : 'trans';\r\n var transformer = saved[transformerName];\r\n var oldSrcCoords = saved.srcCoords;\r\n var srcCoords = [];\r\n var destCoords = [];\r\n var oldCoordTheSame = true;\r\n for (var i = 0; i < 4; i++) {\r\n var rect = markers[i].getBoundingClientRect();\r\n var ii = 2 * i;\r\n var x = rect.left;\r\n var y = rect.top;\r\n srcCoords.push(x, y);\r\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\r\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\r\n }\r\n return (oldCoordTheSame && transformer)\r\n ? transformer\r\n : (saved.srcCoords = srcCoords,\r\n saved[transformerName] = inverse\r\n ? buildTransformer(destCoords, srcCoords)\r\n : buildTransformer(srcCoords, destCoords));\r\n}\r\nfunction isCanvasEl(el) {\r\n return el.nodeName.toUpperCase() === 'CANVAS';\r\n}\n\nvar isDomLevel2 = (typeof window !== 'undefined') && !!window.addEventListener;\r\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\r\nvar _calcOut$1 = [];\r\nfunction clientToLocal(el, e, out, calculate) {\r\n out = out || {};\r\n if (calculate || !env.canvasSupported) {\r\n calculateZrXY(el, e, out);\r\n }\r\n else if (env.browser.firefox\r\n && e.layerX != null\r\n && e.layerX !== e.offsetX) {\r\n out.zrX = e.layerX;\r\n out.zrY = e.layerY;\r\n }\r\n else if (e.offsetX != null) {\r\n out.zrX = e.offsetX;\r\n out.zrY = e.offsetY;\r\n }\r\n else {\r\n calculateZrXY(el, e, out);\r\n }\r\n return out;\r\n}\r\nfunction calculateZrXY(el, e, out) {\r\n if (env.domSupported && el.getBoundingClientRect) {\r\n var ex = e.clientX;\r\n var ey = e.clientY;\r\n if (isCanvasEl(el)) {\r\n var box = el.getBoundingClientRect();\r\n out.zrX = ex - box.left;\r\n out.zrY = ey - box.top;\r\n return;\r\n }\r\n else {\r\n if (transformCoordWithViewport(_calcOut$1, el, ex, ey)) {\r\n out.zrX = _calcOut$1[0];\r\n out.zrY = _calcOut$1[1];\r\n return;\r\n }\r\n }\r\n }\r\n out.zrX = out.zrY = 0;\r\n}\r\nfunction getNativeEvent(e) {\r\n return e\r\n || window.event;\r\n}\r\nfunction normalizeEvent(el, e, calculate) {\r\n e = getNativeEvent(e);\r\n if (e.zrX != null) {\r\n return e;\r\n }\r\n var eventType = e.type;\r\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\r\n if (!isTouch) {\r\n clientToLocal(el, e, e, calculate);\r\n var wheelDelta = getWheelDeltaMayPolyfill(e);\r\n e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\r\n }\r\n else {\r\n var touch = eventType !== 'touchend'\r\n ? e.targetTouches[0]\r\n : e.changedTouches[0];\r\n touch && clientToLocal(el, touch, e, calculate);\r\n }\r\n var button = e.button;\r\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\r\n e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\r\n }\r\n return e;\r\n}\r\nfunction getWheelDeltaMayPolyfill(e) {\r\n var rawWheelDelta = e.wheelDelta;\r\n if (rawWheelDelta) {\r\n return rawWheelDelta;\r\n }\r\n var deltaX = e.deltaX;\r\n var deltaY = e.deltaY;\r\n if (deltaX == null || deltaY == null) {\r\n return rawWheelDelta;\r\n }\r\n var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\r\n var sign = deltaY > 0 ? -1\r\n : deltaY < 0 ? 1\r\n : deltaX > 0 ? -1\r\n : 1;\r\n return 3 * delta * sign;\r\n}\r\nfunction addEventListener(el, name, handler, opt) {\r\n if (isDomLevel2) {\r\n el.addEventListener(name, handler, opt);\r\n }\r\n else {\r\n el.attachEvent('on' + name, handler);\r\n }\r\n}\r\nfunction removeEventListener(el, name, handler, opt) {\r\n if (isDomLevel2) {\r\n el.removeEventListener(name, handler, opt);\r\n }\r\n else {\r\n el.detachEvent('on' + name, handler);\r\n }\r\n}\r\nvar stop = isDomLevel2\r\n ? function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n e.cancelBubble = true;\r\n }\r\n : function (e) {\r\n e.returnValue = false;\r\n e.cancelBubble = true;\r\n };\r\nfunction isMiddleOrRightButtonOnMouseUpDown(e) {\r\n return e.which === 2 || e.which === 3;\r\n}\n\nvar GestureMgr = (function () {\r\n function GestureMgr() {\r\n this._track = [];\r\n }\r\n GestureMgr.prototype.recognize = function (event, target, root) {\r\n this._doTrack(event, target, root);\r\n return this._recognize(event);\r\n };\r\n GestureMgr.prototype.clear = function () {\r\n this._track.length = 0;\r\n return this;\r\n };\r\n GestureMgr.prototype._doTrack = function (event, target, root) {\r\n var touches = event.touches;\r\n if (!touches) {\r\n return;\r\n }\r\n var trackItem = {\r\n points: [],\r\n touches: [],\r\n target: target,\r\n event: event\r\n };\r\n for (var i = 0, len = touches.length; i < len; i++) {\r\n var touch = touches[i];\r\n var pos = clientToLocal(root, touch, {});\r\n trackItem.points.push([pos.zrX, pos.zrY]);\r\n trackItem.touches.push(touch);\r\n }\r\n this._track.push(trackItem);\r\n };\r\n GestureMgr.prototype._recognize = function (event) {\r\n for (var eventName in recognizers) {\r\n if (recognizers.hasOwnProperty(eventName)) {\r\n var gestureInfo = recognizers[eventName](this._track, event);\r\n if (gestureInfo) {\r\n return gestureInfo;\r\n }\r\n }\r\n }\r\n };\r\n return GestureMgr;\r\n}());\r\nfunction dist$1(pointPair) {\r\n var dx = pointPair[1][0] - pointPair[0][0];\r\n var dy = pointPair[1][1] - pointPair[0][1];\r\n return Math.sqrt(dx * dx + dy * dy);\r\n}\r\nfunction center(pointPair) {\r\n return [\r\n (pointPair[0][0] + pointPair[1][0]) / 2,\r\n (pointPair[0][1] + pointPair[1][1]) / 2\r\n ];\r\n}\r\nvar recognizers = {\r\n pinch: function (tracks, event) {\r\n var trackLen = tracks.length;\r\n if (!trackLen) {\r\n return;\r\n }\r\n var pinchEnd = (tracks[trackLen - 1] || {}).points;\r\n var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\r\n if (pinchPre\r\n && pinchPre.length > 1\r\n && pinchEnd\r\n && pinchEnd.length > 1) {\r\n var pinchScale = dist$1(pinchEnd) / dist$1(pinchPre);\r\n !isFinite(pinchScale) && (pinchScale = 1);\r\n event.pinchScale = pinchScale;\r\n var pinchCenter = center(pinchEnd);\r\n event.pinchX = pinchCenter[0];\r\n event.pinchY = pinchCenter[1];\r\n return {\r\n type: 'pinch',\r\n target: tracks[0].target,\r\n event: event\r\n };\r\n }\r\n }\r\n};\n\nvar SILENT = 'silent';\r\nfunction makeEventPacket(eveType, targetInfo, event) {\r\n return {\r\n type: eveType,\r\n event: event,\r\n target: targetInfo.target,\r\n topTarget: targetInfo.topTarget,\r\n cancelBubble: false,\r\n offsetX: event.zrX,\r\n offsetY: event.zrY,\r\n gestureEvent: event.gestureEvent,\r\n pinchX: event.pinchX,\r\n pinchY: event.pinchY,\r\n pinchScale: event.pinchScale,\r\n wheelDelta: event.zrDelta,\r\n zrByTouch: event.zrByTouch,\r\n which: event.which,\r\n stop: stopEvent\r\n };\r\n}\r\nfunction stopEvent() {\r\n stop(this.event);\r\n}\r\nvar EmptyProxy = (function (_super) {\r\n __extends(EmptyProxy, _super);\r\n function EmptyProxy() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.handler = null;\r\n return _this;\r\n }\r\n EmptyProxy.prototype.dispose = function () { };\r\n EmptyProxy.prototype.setCursor = function () { };\r\n return EmptyProxy;\r\n}(Eventful));\r\nvar HoveredResult = (function () {\r\n function HoveredResult(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n return HoveredResult;\r\n}());\r\nvar handlerNames = [\r\n 'click', 'dblclick', 'mousewheel', 'mouseout',\r\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n];\r\nvar Handler = (function (_super) {\r\n __extends(Handler, _super);\r\n function Handler(storage, painter, proxy, painterRoot) {\r\n var _this = _super.call(this) || this;\r\n _this._hovered = new HoveredResult(0, 0);\r\n _this.storage = storage;\r\n _this.painter = painter;\r\n _this.painterRoot = painterRoot;\r\n proxy = proxy || new EmptyProxy();\r\n _this.proxy = null;\r\n _this.setHandlerProxy(proxy);\r\n _this._draggingMgr = new Draggable(_this);\r\n return _this;\r\n }\r\n Handler.prototype.setHandlerProxy = function (proxy) {\r\n if (this.proxy) {\r\n this.proxy.dispose();\r\n }\r\n if (proxy) {\r\n each(handlerNames, function (name) {\r\n proxy.on && proxy.on(name, this[name], this);\r\n }, this);\r\n proxy.handler = this;\r\n }\r\n this.proxy = proxy;\r\n };\r\n Handler.prototype.mousemove = function (event) {\r\n var x = event.zrX;\r\n var y = event.zrY;\r\n var isOutside = isOutsideBoundary(this, x, y);\r\n var lastHovered = this._hovered;\r\n var lastHoveredTarget = lastHovered.target;\r\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\r\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\r\n lastHoveredTarget = lastHovered.target;\r\n }\r\n var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\r\n var hoveredTarget = hovered.target;\r\n var proxy = this.proxy;\r\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\r\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n this.dispatchToElement(lastHovered, 'mouseout', event);\r\n }\r\n this.dispatchToElement(hovered, 'mousemove', event);\r\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n this.dispatchToElement(hovered, 'mouseover', event);\r\n }\r\n };\r\n Handler.prototype.mouseout = function (event) {\r\n var eventControl = event.zrEventControl;\r\n var zrIsToLocalDOM = event.zrIsToLocalDOM;\r\n if (eventControl !== 'only_globalout') {\r\n this.dispatchToElement(this._hovered, 'mouseout', event);\r\n }\r\n if (eventControl !== 'no_globalout') {\r\n !zrIsToLocalDOM && this.trigger('globalout', { type: 'globalout', event: event });\r\n }\r\n };\r\n Handler.prototype.resize = function () {\r\n this._hovered = new HoveredResult(0, 0);\r\n };\r\n Handler.prototype.dispatch = function (eventName, eventArgs) {\r\n var handler = this[eventName];\r\n handler && handler.call(this, eventArgs);\r\n };\r\n Handler.prototype.dispose = function () {\r\n this.proxy.dispose();\r\n this.storage = null;\r\n this.proxy = null;\r\n this.painter = null;\r\n };\r\n Handler.prototype.setCursorStyle = function (cursorStyle) {\r\n var proxy = this.proxy;\r\n proxy.setCursor && proxy.setCursor(cursorStyle);\r\n };\r\n Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\r\n targetInfo = targetInfo || {};\r\n var el = targetInfo.target;\r\n if (el && el.silent) {\r\n return;\r\n }\r\n var eventKey = ('on' + eventName);\r\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\r\n while (el) {\r\n el[eventKey]\r\n && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\r\n el.trigger(eventName, eventPacket);\r\n el = el.__hostTarget ? el.__hostTarget : el.parent;\r\n if (eventPacket.cancelBubble) {\r\n break;\r\n }\r\n }\r\n if (!eventPacket.cancelBubble) {\r\n this.trigger(eventName, eventPacket);\r\n if (this.painter && this.painter.eachOtherLayer) {\r\n this.painter.eachOtherLayer(function (layer) {\r\n if (typeof (layer[eventKey]) === 'function') {\r\n layer[eventKey].call(layer, eventPacket);\r\n }\r\n if (layer.trigger) {\r\n layer.trigger(eventName, eventPacket);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n Handler.prototype.findHover = function (x, y, exclude) {\r\n var list = this.storage.getDisplayList();\r\n var out = new HoveredResult(x, y);\r\n for (var i = list.length - 1; i >= 0; i--) {\r\n var hoverCheckResult = void 0;\r\n if (list[i] !== exclude\r\n && !list[i].ignore\r\n && (hoverCheckResult = isHover(list[i], x, y))) {\r\n !out.topTarget && (out.topTarget = list[i]);\r\n if (hoverCheckResult !== SILENT) {\r\n out.target = list[i];\r\n break;\r\n }\r\n }\r\n }\r\n return out;\r\n };\r\n Handler.prototype.processGesture = function (event, stage) {\r\n if (!this._gestureMgr) {\r\n this._gestureMgr = new GestureMgr();\r\n }\r\n var gestureMgr = this._gestureMgr;\r\n stage === 'start' && gestureMgr.clear();\r\n var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\r\n stage === 'end' && gestureMgr.clear();\r\n if (gestureInfo) {\r\n var type = gestureInfo.type;\r\n event.gestureEvent = type;\r\n var res = new HoveredResult();\r\n res.target = gestureInfo.target;\r\n this.dispatchToElement(res, type, gestureInfo.event);\r\n }\r\n };\r\n return Handler;\r\n}(Eventful));\r\neach(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\r\n Handler.prototype[name] = function (event) {\r\n var x = event.zrX;\r\n var y = event.zrY;\r\n var isOutside = isOutsideBoundary(this, x, y);\r\n var hovered;\r\n var hoveredTarget;\r\n if (name !== 'mouseup' || !isOutside) {\r\n hovered = this.findHover(x, y);\r\n hoveredTarget = hovered.target;\r\n }\r\n if (name === 'mousedown') {\r\n this._downEl = hoveredTarget;\r\n this._downPoint = [event.zrX, event.zrY];\r\n this._upEl = hoveredTarget;\r\n }\r\n else if (name === 'mouseup') {\r\n this._upEl = hoveredTarget;\r\n }\r\n else if (name === 'click') {\r\n if (this._downEl !== this._upEl\r\n || !this._downPoint\r\n || dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\r\n return;\r\n }\r\n this._downPoint = null;\r\n }\r\n this.dispatchToElement(hovered, name, event);\r\n };\r\n});\r\nfunction isHover(displayable, x, y) {\r\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\r\n var el = displayable;\r\n var isSilent = void 0;\r\n var ignoreClip = false;\r\n while (el) {\r\n if (el.ignoreClip) {\r\n ignoreClip = true;\r\n }\r\n if (!ignoreClip) {\r\n var clipPath = el.getClipPath();\r\n if (clipPath && !clipPath.contain(x, y)) {\r\n return false;\r\n }\r\n if (el.silent) {\r\n isSilent = true;\r\n }\r\n }\r\n var hostEl = el.__hostTarget;\r\n el = hostEl ? hostEl : el.parent;\r\n }\r\n return isSilent ? SILENT : true;\r\n }\r\n return false;\r\n}\r\nfunction isOutsideBoundary(handlerInstance, x, y) {\r\n var painter = handlerInstance.painter;\r\n return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\r\n}\n\nfunction create$1() {\r\n return [1, 0, 0, 1, 0, 0];\r\n}\r\nfunction identity(out) {\r\n out[0] = 1;\r\n out[1] = 0;\r\n out[2] = 0;\r\n out[3] = 1;\r\n out[4] = 0;\r\n out[5] = 0;\r\n return out;\r\n}\r\nfunction copy$1(out, m) {\r\n out[0] = m[0];\r\n out[1] = m[1];\r\n out[2] = m[2];\r\n out[3] = m[3];\r\n out[4] = m[4];\r\n out[5] = m[5];\r\n return out;\r\n}\r\nfunction mul$1(out, m1, m2) {\r\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\r\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\r\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\r\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\r\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\r\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\r\n out[0] = out0;\r\n out[1] = out1;\r\n out[2] = out2;\r\n out[3] = out3;\r\n out[4] = out4;\r\n out[5] = out5;\r\n return out;\r\n}\r\nfunction translate(out, a, v) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n out[4] = a[4] + v[0];\r\n out[5] = a[5] + v[1];\r\n return out;\r\n}\r\nfunction rotate(out, a, rad) {\r\n var aa = a[0];\r\n var ac = a[2];\r\n var atx = a[4];\r\n var ab = a[1];\r\n var ad = a[3];\r\n var aty = a[5];\r\n var st = Math.sin(rad);\r\n var ct = Math.cos(rad);\r\n out[0] = aa * ct + ab * st;\r\n out[1] = -aa * st + ab * ct;\r\n out[2] = ac * ct + ad * st;\r\n out[3] = -ac * st + ct * ad;\r\n out[4] = ct * atx + st * aty;\r\n out[5] = ct * aty - st * atx;\r\n return out;\r\n}\r\nfunction scale$1(out, a, v) {\r\n var vx = v[0];\r\n var vy = v[1];\r\n out[0] = a[0] * vx;\r\n out[1] = a[1] * vy;\r\n out[2] = a[2] * vx;\r\n out[3] = a[3] * vy;\r\n out[4] = a[4] * vx;\r\n out[5] = a[5] * vy;\r\n return out;\r\n}\r\nfunction invert(out, a) {\r\n var aa = a[0];\r\n var ac = a[2];\r\n var atx = a[4];\r\n var ab = a[1];\r\n var ad = a[3];\r\n var aty = a[5];\r\n var det = aa * ad - ab * ac;\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n out[0] = ad * det;\r\n out[1] = -ab * det;\r\n out[2] = -ac * det;\r\n out[3] = aa * det;\r\n out[4] = (ac * aty - ad * atx) * det;\r\n out[5] = (ab * atx - aa * aty) * det;\r\n return out;\r\n}\r\nfunction clone$2(a) {\r\n var b = create$1();\r\n copy$1(b, a);\r\n return b;\r\n}\n\nvar matrix = /*#__PURE__*/Object.freeze({\n __proto__: null,\n create: create$1,\n identity: identity,\n copy: copy$1,\n mul: mul$1,\n translate: translate,\n rotate: rotate,\n scale: scale$1,\n invert: invert,\n clone: clone$2\n});\n\nvar mIdentity = identity;\r\nvar EPSILON = 5e-5;\r\nfunction isNotAroundZero(val) {\r\n return val > EPSILON || val < -EPSILON;\r\n}\r\nvar scaleTmp = [];\r\nvar tmpTransform = [];\r\nvar originTransform = create$1();\r\nvar abs = Math.abs;\r\nvar Transformable = (function () {\r\n function Transformable() {\r\n }\r\n Transformable.prototype.setPosition = function (arr) {\r\n this.x = arr[0];\r\n this.y = arr[1];\r\n };\r\n Transformable.prototype.setScale = function (arr) {\r\n this.scaleX = arr[0];\r\n this.scaleY = arr[1];\r\n };\r\n Transformable.prototype.setOrigin = function (arr) {\r\n this.originX = arr[0];\r\n this.originY = arr[1];\r\n };\r\n Transformable.prototype.needLocalTransform = function () {\r\n return isNotAroundZero(this.rotation)\r\n || isNotAroundZero(this.x)\r\n || isNotAroundZero(this.y)\r\n || isNotAroundZero(this.scaleX - 1)\r\n || isNotAroundZero(this.scaleY - 1);\r\n };\r\n Transformable.prototype.updateTransform = function () {\r\n var parent = this.parent;\r\n var parentHasTransform = parent && parent.transform;\r\n var needLocalTransform = this.needLocalTransform();\r\n var m = this.transform;\r\n if (!(needLocalTransform || parentHasTransform)) {\r\n m && mIdentity(m);\r\n return;\r\n }\r\n m = m || create$1();\r\n if (needLocalTransform) {\r\n this.getLocalTransform(m);\r\n }\r\n else {\r\n mIdentity(m);\r\n }\r\n if (parentHasTransform) {\r\n if (needLocalTransform) {\r\n mul$1(m, parent.transform, m);\r\n }\r\n else {\r\n copy$1(m, parent.transform);\r\n }\r\n }\r\n this.transform = m;\r\n this._resolveGlobalScaleRatio(m);\r\n };\r\n Transformable.prototype._resolveGlobalScaleRatio = function (m) {\r\n var globalScaleRatio = this.globalScaleRatio;\r\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\r\n this.getGlobalScale(scaleTmp);\r\n var relX = scaleTmp[0] < 0 ? -1 : 1;\r\n var relY = scaleTmp[1] < 0 ? -1 : 1;\r\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\r\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\r\n m[0] *= sx;\r\n m[1] *= sx;\r\n m[2] *= sy;\r\n m[3] *= sy;\r\n }\r\n this.invTransform = this.invTransform || create$1();\r\n invert(this.invTransform, m);\r\n };\r\n Transformable.prototype.getLocalTransform = function (m) {\r\n return Transformable.getLocalTransform(this, m);\r\n };\r\n Transformable.prototype.getComputedTransform = function () {\r\n var transformNode = this;\r\n var ancestors = [];\r\n while (transformNode) {\r\n ancestors.push(transformNode);\r\n transformNode = transformNode.parent;\r\n }\r\n while (transformNode = ancestors.pop()) {\r\n transformNode.updateTransform();\r\n }\r\n return this.transform;\r\n };\r\n Transformable.prototype.setLocalTransform = function (m) {\r\n if (!m) {\r\n return;\r\n }\r\n var sx = m[0] * m[0] + m[1] * m[1];\r\n var sy = m[2] * m[2] + m[3] * m[3];\r\n if (isNotAroundZero(sx - 1)) {\r\n sx = Math.sqrt(sx);\r\n }\r\n if (isNotAroundZero(sy - 1)) {\r\n sy = Math.sqrt(sy);\r\n }\r\n if (m[0] < 0) {\r\n sx = -sx;\r\n }\r\n if (m[3] < 0) {\r\n sy = -sy;\r\n }\r\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\r\n if (sx < 0 && sy < 0) {\r\n this.rotation += Math.PI;\r\n sx = -sx;\r\n sy = -sy;\r\n }\r\n this.x = m[4];\r\n this.y = m[5];\r\n this.scaleX = sx;\r\n this.scaleY = sy;\r\n };\r\n Transformable.prototype.decomposeTransform = function () {\r\n if (!this.transform) {\r\n return;\r\n }\r\n var parent = this.parent;\r\n var m = this.transform;\r\n if (parent && parent.transform) {\r\n mul$1(tmpTransform, parent.invTransform, m);\r\n m = tmpTransform;\r\n }\r\n var ox = this.originX;\r\n var oy = this.originY;\r\n if (ox || oy) {\r\n originTransform[4] = ox;\r\n originTransform[5] = oy;\r\n mul$1(tmpTransform, m, originTransform);\r\n tmpTransform[4] -= ox;\r\n tmpTransform[5] -= oy;\r\n m = tmpTransform;\r\n }\r\n this.setLocalTransform(m);\r\n };\r\n Transformable.prototype.getGlobalScale = function (out) {\r\n var m = this.transform;\r\n out = out || [];\r\n if (!m) {\r\n out[0] = 1;\r\n out[1] = 1;\r\n return out;\r\n }\r\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\r\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\r\n if (m[0] < 0) {\r\n out[0] = -out[0];\r\n }\r\n if (m[3] < 0) {\r\n out[1] = -out[1];\r\n }\r\n return out;\r\n };\r\n Transformable.prototype.transformCoordToLocal = function (x, y) {\r\n var v2 = [x, y];\r\n var invTransform = this.invTransform;\r\n if (invTransform) {\r\n applyTransform(v2, v2, invTransform);\r\n }\r\n return v2;\r\n };\r\n Transformable.prototype.transformCoordToGlobal = function (x, y) {\r\n var v2 = [x, y];\r\n var transform = this.transform;\r\n if (transform) {\r\n applyTransform(v2, v2, transform);\r\n }\r\n return v2;\r\n };\r\n Transformable.prototype.getLineScale = function () {\r\n var m = this.transform;\r\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\r\n ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\r\n : 1;\r\n };\r\n Transformable.getLocalTransform = function (target, m) {\r\n m = m || [];\r\n mIdentity(m);\r\n var ox = target.originX || 0;\r\n var oy = target.originY || 0;\r\n var sx = target.scaleX;\r\n var sy = target.scaleY;\r\n var rotation = target.rotation || 0;\r\n var x = target.x;\r\n var y = target.y;\r\n m[4] -= ox;\r\n m[5] -= oy;\r\n m[0] *= sx;\r\n m[1] *= sy;\r\n m[2] *= sx;\r\n m[3] *= sy;\r\n m[4] *= sx;\r\n m[5] *= sy;\r\n if (rotation) {\r\n rotate(m, m, rotation);\r\n }\r\n m[4] += ox;\r\n m[5] += oy;\r\n m[4] += x;\r\n m[5] += y;\r\n return m;\r\n };\r\n Transformable.initDefaultProps = (function () {\r\n var proto = Transformable.prototype;\r\n proto.x = 0;\r\n proto.y = 0;\r\n proto.scaleX = 1;\r\n proto.scaleY = 1;\r\n proto.originX = 0;\r\n proto.originY = 0;\r\n proto.rotation = 0;\r\n proto.globalScaleRatio = 1;\r\n })();\r\n return Transformable;\r\n}());\n\nvar easing = {\r\n linear: function (k) {\r\n return k;\r\n },\r\n quadraticIn: function (k) {\r\n return k * k;\r\n },\r\n quadraticOut: function (k) {\r\n return k * (2 - k);\r\n },\r\n quadraticInOut: function (k) {\r\n if ((k *= 2) < 1) {\r\n return 0.5 * k * k;\r\n }\r\n return -0.5 * (--k * (k - 2) - 1);\r\n },\r\n cubicIn: function (k) {\r\n return k * k * k;\r\n },\r\n cubicOut: function (k) {\r\n return --k * k * k + 1;\r\n },\r\n cubicInOut: function (k) {\r\n if ((k *= 2) < 1) {\r\n return 0.5 * k * k * k;\r\n }\r\n return 0.5 * ((k -= 2) * k * k + 2);\r\n },\r\n quarticIn: function (k) {\r\n return k * k * k * k;\r\n },\r\n quarticOut: function (k) {\r\n return 1 - (--k * k * k * k);\r\n },\r\n quarticInOut: function (k) {\r\n if ((k *= 2) < 1) {\r\n return 0.5 * k * k * k * k;\r\n }\r\n return -0.5 * ((k -= 2) * k * k * k - 2);\r\n },\r\n quinticIn: function (k) {\r\n return k * k * k * k * k;\r\n },\r\n quinticOut: function (k) {\r\n return --k * k * k * k * k + 1;\r\n },\r\n quinticInOut: function (k) {\r\n if ((k *= 2) < 1) {\r\n return 0.5 * k * k * k * k * k;\r\n }\r\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\r\n },\r\n sinusoidalIn: function (k) {\r\n return 1 - Math.cos(k * Math.PI / 2);\r\n },\r\n sinusoidalOut: function (k) {\r\n return Math.sin(k * Math.PI / 2);\r\n },\r\n sinusoidalInOut: function (k) {\r\n return 0.5 * (1 - Math.cos(Math.PI * k));\r\n },\r\n exponentialIn: function (k) {\r\n return k === 0 ? 0 : Math.pow(1024, k - 1);\r\n },\r\n exponentialOut: function (k) {\r\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\r\n },\r\n exponentialInOut: function (k) {\r\n if (k === 0) {\r\n return 0;\r\n }\r\n if (k === 1) {\r\n return 1;\r\n }\r\n if ((k *= 2) < 1) {\r\n return 0.5 * Math.pow(1024, k - 1);\r\n }\r\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\r\n },\r\n circularIn: function (k) {\r\n return 1 - Math.sqrt(1 - k * k);\r\n },\r\n circularOut: function (k) {\r\n return Math.sqrt(1 - (--k * k));\r\n },\r\n circularInOut: function (k) {\r\n if ((k *= 2) < 1) {\r\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\r\n }\r\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\r\n },\r\n elasticIn: function (k) {\r\n var s;\r\n var a = 0.1;\r\n var p = 0.4;\r\n if (k === 0) {\r\n return 0;\r\n }\r\n if (k === 1) {\r\n return 1;\r\n }\r\n if (!a || a < 1) {\r\n a = 1;\r\n s = p / 4;\r\n }\r\n else {\r\n s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n }\r\n return -(a * Math.pow(2, 10 * (k -= 1))\r\n * Math.sin((k - s) * (2 * Math.PI) / p));\r\n },\r\n elasticOut: function (k) {\r\n var s;\r\n var a = 0.1;\r\n var p = 0.4;\r\n if (k === 0) {\r\n return 0;\r\n }\r\n if (k === 1) {\r\n return 1;\r\n }\r\n if (!a || a < 1) {\r\n a = 1;\r\n s = p / 4;\r\n }\r\n else {\r\n s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n }\r\n return (a * Math.pow(2, -10 * k)\r\n * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\r\n },\r\n elasticInOut: function (k) {\r\n var s;\r\n var a = 0.1;\r\n var p = 0.4;\r\n if (k === 0) {\r\n return 0;\r\n }\r\n if (k === 1) {\r\n return 1;\r\n }\r\n if (!a || a < 1) {\r\n a = 1;\r\n s = p / 4;\r\n }\r\n else {\r\n s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n }\r\n if ((k *= 2) < 1) {\r\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\r\n * Math.sin((k - s) * (2 * Math.PI) / p));\r\n }\r\n return a * Math.pow(2, -10 * (k -= 1))\r\n * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n },\r\n backIn: function (k) {\r\n var s = 1.70158;\r\n return k * k * ((s + 1) * k - s);\r\n },\r\n backOut: function (k) {\r\n var s = 1.70158;\r\n return --k * k * ((s + 1) * k + s) + 1;\r\n },\r\n backInOut: function (k) {\r\n var s = 1.70158 * 1.525;\r\n if ((k *= 2) < 1) {\r\n return 0.5 * (k * k * ((s + 1) * k - s));\r\n }\r\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\r\n },\r\n bounceIn: function (k) {\r\n return 1 - easing.bounceOut(1 - k);\r\n },\r\n bounceOut: function (k) {\r\n if (k < (1 / 2.75)) {\r\n return 7.5625 * k * k;\r\n }\r\n else if (k < (2 / 2.75)) {\r\n return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\r\n }\r\n else if (k < (2.5 / 2.75)) {\r\n return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\r\n }\r\n else {\r\n return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\r\n }\r\n },\r\n bounceInOut: function (k) {\r\n if (k < 0.5) {\r\n return easing.bounceIn(k * 2) * 0.5;\r\n }\r\n return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\r\n }\r\n};\n\nvar Clip = (function () {\r\n function Clip(opts) {\r\n this._initialized = false;\r\n this._startTime = 0;\r\n this._pausedTime = 0;\r\n this._paused = false;\r\n this._life = opts.life || 1000;\r\n this._delay = opts.delay || 0;\r\n this.loop = opts.loop == null ? false : opts.loop;\r\n this.gap = opts.gap || 0;\r\n this.easing = opts.easing || 'linear';\r\n this.onframe = opts.onframe;\r\n this.ondestroy = opts.ondestroy;\r\n this.onrestart = opts.onrestart;\r\n }\r\n Clip.prototype.step = function (globalTime, deltaTime) {\r\n if (!this._initialized) {\r\n this._startTime = globalTime + this._delay;\r\n this._initialized = true;\r\n }\r\n if (this._paused) {\r\n this._pausedTime += deltaTime;\r\n return;\r\n }\r\n var percent = (globalTime - this._startTime - this._pausedTime) / this._life;\r\n if (percent < 0) {\r\n percent = 0;\r\n }\r\n percent = Math.min(percent, 1);\r\n var easing$1 = this.easing;\r\n var easingFunc = typeof easing$1 === 'string'\r\n ? easing[easing$1] : easing$1;\r\n var schedule = typeof easingFunc === 'function'\r\n ? easingFunc(percent)\r\n : percent;\r\n this.onframe && this.onframe(schedule);\r\n if (percent === 1) {\r\n if (this.loop) {\r\n this._restart(globalTime);\r\n this.onrestart && this.onrestart();\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Clip.prototype._restart = function (globalTime) {\r\n var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\r\n this._startTime = globalTime - remainder + this.gap;\r\n this._pausedTime = 0;\r\n };\r\n Clip.prototype.pause = function () {\r\n this._paused = true;\r\n };\r\n Clip.prototype.resume = function () {\r\n this._paused = false;\r\n };\r\n return Clip;\r\n}());\n\nvar Entry = (function () {\r\n function Entry(val) {\r\n this.value = val;\r\n }\r\n return Entry;\r\n}());\r\nvar LinkedList = (function () {\r\n function LinkedList() {\r\n this._len = 0;\r\n }\r\n LinkedList.prototype.insert = function (val) {\r\n var entry = new Entry(val);\r\n this.insertEntry(entry);\r\n return entry;\r\n };\r\n LinkedList.prototype.insertEntry = function (entry) {\r\n if (!this.head) {\r\n this.head = this.tail = entry;\r\n }\r\n else {\r\n this.tail.next = entry;\r\n entry.prev = this.tail;\r\n entry.next = null;\r\n this.tail = entry;\r\n }\r\n this._len++;\r\n };\r\n LinkedList.prototype.remove = function (entry) {\r\n var prev = entry.prev;\r\n var next = entry.next;\r\n if (prev) {\r\n prev.next = next;\r\n }\r\n else {\r\n this.head = next;\r\n }\r\n if (next) {\r\n next.prev = prev;\r\n }\r\n else {\r\n this.tail = prev;\r\n }\r\n entry.next = entry.prev = null;\r\n this._len--;\r\n };\r\n LinkedList.prototype.len = function () {\r\n return this._len;\r\n };\r\n LinkedList.prototype.clear = function () {\r\n this.head = this.tail = null;\r\n this._len = 0;\r\n };\r\n return LinkedList;\r\n}());\r\nvar LRU = (function () {\r\n function LRU(maxSize) {\r\n this._list = new LinkedList();\r\n this._maxSize = 10;\r\n this._map = {};\r\n this._maxSize = maxSize;\r\n }\r\n LRU.prototype.put = function (key, value) {\r\n var list = this._list;\r\n var map = this._map;\r\n var removed = null;\r\n if (map[key] == null) {\r\n var len = list.len();\r\n var entry = this._lastRemovedEntry;\r\n if (len >= this._maxSize && len > 0) {\r\n var leastUsedEntry = list.head;\r\n list.remove(leastUsedEntry);\r\n delete map[leastUsedEntry.key];\r\n removed = leastUsedEntry.value;\r\n this._lastRemovedEntry = leastUsedEntry;\r\n }\r\n if (entry) {\r\n entry.value = value;\r\n }\r\n else {\r\n entry = new Entry(value);\r\n }\r\n entry.key = key;\r\n list.insertEntry(entry);\r\n map[key] = entry;\r\n }\r\n return removed;\r\n };\r\n LRU.prototype.get = function (key) {\r\n var entry = this._map[key];\r\n var list = this._list;\r\n if (entry != null) {\r\n if (entry !== list.tail) {\r\n list.remove(entry);\r\n list.insertEntry(entry);\r\n }\r\n return entry.value;\r\n }\r\n };\r\n LRU.prototype.clear = function () {\r\n this._list.clear();\r\n this._map = {};\r\n };\r\n LRU.prototype.len = function () {\r\n return this._list.len();\r\n };\r\n return LRU;\r\n}());\n\nvar kCSSColorTable = {\r\n 'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\r\n 'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\r\n 'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\r\n 'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\r\n 'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\r\n 'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\r\n 'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\r\n 'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\r\n 'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\r\n 'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\r\n 'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\r\n 'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\r\n 'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\r\n 'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\r\n 'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\r\n 'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\r\n 'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\r\n 'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\r\n 'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\r\n 'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\r\n 'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\r\n 'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\r\n 'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\r\n 'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\r\n 'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\r\n 'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\r\n 'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\r\n 'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\r\n 'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\r\n 'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\r\n 'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\r\n 'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\r\n 'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\r\n 'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\r\n 'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\r\n 'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\r\n 'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\r\n 'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\r\n 'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\r\n 'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\r\n 'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\r\n 'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\r\n 'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\r\n 'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\r\n 'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\r\n 'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\r\n 'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\r\n 'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\r\n 'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\r\n 'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\r\n 'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\r\n 'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\r\n 'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\r\n 'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\r\n 'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\r\n 'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\r\n 'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\r\n 'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\r\n 'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\r\n 'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\r\n 'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\r\n 'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\r\n 'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\r\n 'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\r\n 'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\r\n 'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\r\n 'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\r\n 'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\r\n 'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\r\n 'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\r\n 'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\r\n 'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\r\n 'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\r\n 'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\r\n};\r\nfunction clampCssByte(i) {\r\n i = Math.round(i);\r\n return i < 0 ? 0 : i > 255 ? 255 : i;\r\n}\r\nfunction clampCssAngle(i) {\r\n i = Math.round(i);\r\n return i < 0 ? 0 : i > 360 ? 360 : i;\r\n}\r\nfunction clampCssFloat(f) {\r\n return f < 0 ? 0 : f > 1 ? 1 : f;\r\n}\r\nfunction parseCssInt(val) {\r\n var str = val;\r\n if (str.length && str.charAt(str.length - 1) === '%') {\r\n return clampCssByte(parseFloat(str) / 100 * 255);\r\n }\r\n return clampCssByte(parseInt(str, 10));\r\n}\r\nfunction parseCssFloat(val) {\r\n var str = val;\r\n if (str.length && str.charAt(str.length - 1) === '%') {\r\n return clampCssFloat(parseFloat(str) / 100);\r\n }\r\n return clampCssFloat(parseFloat(str));\r\n}\r\nfunction cssHueToRgb(m1, m2, h) {\r\n if (h < 0) {\r\n h += 1;\r\n }\r\n else if (h > 1) {\r\n h -= 1;\r\n }\r\n if (h * 6 < 1) {\r\n return m1 + (m2 - m1) * h * 6;\r\n }\r\n if (h * 2 < 1) {\r\n return m2;\r\n }\r\n if (h * 3 < 2) {\r\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\r\n }\r\n return m1;\r\n}\r\nfunction lerpNumber(a, b, p) {\r\n return a + (b - a) * p;\r\n}\r\nfunction setRgba(out, r, g, b, a) {\r\n out[0] = r;\r\n out[1] = g;\r\n out[2] = b;\r\n out[3] = a;\r\n return out;\r\n}\r\nfunction copyRgba(out, a) {\r\n out[0] = a[0];\r\n out[1] = a[1];\r\n out[2] = a[2];\r\n out[3] = a[3];\r\n return out;\r\n}\r\nvar colorCache = new LRU(20);\r\nvar lastRemovedArr = null;\r\nfunction putToCache(colorStr, rgbaArr) {\r\n if (lastRemovedArr) {\r\n copyRgba(lastRemovedArr, rgbaArr);\r\n }\r\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\r\n}\r\nfunction parse(colorStr, rgbaArr) {\r\n if (!colorStr) {\r\n return;\r\n }\r\n rgbaArr = rgbaArr || [];\r\n var cached = colorCache.get(colorStr);\r\n if (cached) {\r\n return copyRgba(rgbaArr, cached);\r\n }\r\n colorStr = colorStr + '';\r\n var str = colorStr.replace(/ /g, '').toLowerCase();\r\n if (str in kCSSColorTable) {\r\n copyRgba(rgbaArr, kCSSColorTable[str]);\r\n putToCache(colorStr, rgbaArr);\r\n return rgbaArr;\r\n }\r\n var strLen = str.length;\r\n if (str.charAt(0) === '#') {\r\n if (strLen === 4 || strLen === 5) {\r\n var iv = parseInt(str.slice(1, 4), 16);\r\n if (!(iv >= 0 && iv <= 0xfff)) {\r\n setRgba(rgbaArr, 0, 0, 0, 1);\r\n return;\r\n }\r\n setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1);\r\n putToCache(colorStr, rgbaArr);\r\n return rgbaArr;\r\n }\r\n else if (strLen === 7 || strLen === 9) {\r\n var iv = parseInt(str.slice(1, 7), 16);\r\n if (!(iv >= 0 && iv <= 0xffffff)) {\r\n setRgba(rgbaArr, 0, 0, 0, 1);\r\n return;\r\n }\r\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1);\r\n putToCache(colorStr, rgbaArr);\r\n return rgbaArr;\r\n }\r\n return;\r\n }\r\n var op = str.indexOf('(');\r\n var ep = str.indexOf(')');\r\n if (op !== -1 && ep + 1 === strLen) {\r\n var fname = str.substr(0, op);\r\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\r\n var alpha = 1;\r\n switch (fname) {\r\n case 'rgba':\r\n if (params.length !== 4) {\r\n return params.length === 3\r\n ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1)\r\n : setRgba(rgbaArr, 0, 0, 0, 1);\r\n }\r\n alpha = parseCssFloat(params.pop());\r\n case 'rgb':\r\n if (params.length !== 3) {\r\n setRgba(rgbaArr, 0, 0, 0, 1);\r\n return;\r\n }\r\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\r\n putToCache(colorStr, rgbaArr);\r\n return rgbaArr;\r\n case 'hsla':\r\n if (params.length !== 4) {\r\n setRgba(rgbaArr, 0, 0, 0, 1);\r\n return;\r\n }\r\n params[3] = parseCssFloat(params[3]);\r\n hsla2rgba(params, rgbaArr);\r\n putToCache(colorStr, rgbaArr);\r\n return rgbaArr;\r\n case 'hsl':\r\n if (params.length !== 3) {\r\n setRgba(rgbaArr, 0, 0, 0, 1);\r\n return;\r\n }\r\n hsla2rgba(params, rgbaArr);\r\n putToCache(colorStr, rgbaArr);\r\n return rgbaArr;\r\n default:\r\n return;\r\n }\r\n }\r\n setRgba(rgbaArr, 0, 0, 0, 1);\r\n return;\r\n}\r\nfunction hsla2rgba(hsla, rgba) {\r\n var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\r\n var s = parseCssFloat(hsla[1]);\r\n var l = parseCssFloat(hsla[2]);\r\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\r\n var m1 = l * 2 - m2;\r\n rgba = rgba || [];\r\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\r\n if (hsla.length === 4) {\r\n rgba[3] = hsla[3];\r\n }\r\n return rgba;\r\n}\r\nfunction rgba2hsla(rgba) {\r\n if (!rgba) {\r\n return;\r\n }\r\n var R = rgba[0] / 255;\r\n var G = rgba[1] / 255;\r\n var B = rgba[2] / 255;\r\n var vMin = Math.min(R, G, B);\r\n var vMax = Math.max(R, G, B);\r\n var delta = vMax - vMin;\r\n var L = (vMax + vMin) / 2;\r\n var H;\r\n var S;\r\n if (delta === 0) {\r\n H = 0;\r\n S = 0;\r\n }\r\n else {\r\n if (L < 0.5) {\r\n S = delta / (vMax + vMin);\r\n }\r\n else {\r\n S = delta / (2 - vMax - vMin);\r\n }\r\n var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta;\r\n var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta;\r\n var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta;\r\n if (R === vMax) {\r\n H = deltaB - deltaG;\r\n }\r\n else if (G === vMax) {\r\n H = (1 / 3) + deltaR - deltaB;\r\n }\r\n else if (B === vMax) {\r\n H = (2 / 3) + deltaG - deltaR;\r\n }\r\n if (H < 0) {\r\n H += 1;\r\n }\r\n if (H > 1) {\r\n H -= 1;\r\n }\r\n }\r\n var hsla = [H * 360, S, L];\r\n if (rgba[3] != null) {\r\n hsla.push(rgba[3]);\r\n }\r\n return hsla;\r\n}\r\nfunction lift(color, level) {\r\n var colorArr = parse(color);\r\n if (colorArr) {\r\n for (var i = 0; i < 3; i++) {\r\n if (level < 0) {\r\n colorArr[i] = colorArr[i] * (1 - level) | 0;\r\n }\r\n else {\r\n colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\r\n }\r\n if (colorArr[i] > 255) {\r\n colorArr[i] = 255;\r\n }\r\n else if (colorArr[i] < 0) {\r\n colorArr[i] = 0;\r\n }\r\n }\r\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\r\n }\r\n}\r\nfunction toHex(color) {\r\n var colorArr = parse(color);\r\n if (colorArr) {\r\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1);\r\n }\r\n}\r\nfunction fastLerp(normalizedValue, colors, out) {\r\n if (!(colors && colors.length)\r\n || !(normalizedValue >= 0 && normalizedValue <= 1)) {\r\n return;\r\n }\r\n out = out || [];\r\n var value = normalizedValue * (colors.length - 1);\r\n var leftIndex = Math.floor(value);\r\n var rightIndex = Math.ceil(value);\r\n var leftColor = colors[leftIndex];\r\n var rightColor = colors[rightIndex];\r\n var dv = value - leftIndex;\r\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\r\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\r\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\r\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\r\n return out;\r\n}\r\nvar fastMapToColor = fastLerp;\r\nfunction lerp$1(normalizedValue, colors, fullOutput) {\r\n if (!(colors && colors.length)\r\n || !(normalizedValue >= 0 && normalizedValue <= 1)) {\r\n return;\r\n }\r\n var value = normalizedValue * (colors.length - 1);\r\n var leftIndex = Math.floor(value);\r\n var rightIndex = Math.ceil(value);\r\n var leftColor = parse(colors[leftIndex]);\r\n var rightColor = parse(colors[rightIndex]);\r\n var dv = value - leftIndex;\r\n var color = stringify([\r\n clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),\r\n clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),\r\n clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),\r\n clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))\r\n ], 'rgba');\r\n return fullOutput\r\n ? {\r\n color: color,\r\n leftIndex: leftIndex,\r\n rightIndex: rightIndex,\r\n value: value\r\n }\r\n : color;\r\n}\r\nvar mapToColor = lerp$1;\r\nfunction modifyHSL(color, h, s, l) {\r\n var colorArr = parse(color);\r\n if (color) {\r\n colorArr = rgba2hsla(colorArr);\r\n h != null && (colorArr[0] = clampCssAngle(h));\r\n s != null && (colorArr[1] = parseCssFloat(s));\r\n l != null && (colorArr[2] = parseCssFloat(l));\r\n return stringify(hsla2rgba(colorArr), 'rgba');\r\n }\r\n}\r\nfunction modifyAlpha(color, alpha) {\r\n var colorArr = parse(color);\r\n if (colorArr && alpha != null) {\r\n colorArr[3] = clampCssFloat(alpha);\r\n return stringify(colorArr, 'rgba');\r\n }\r\n}\r\nfunction stringify(arrColor, type) {\r\n if (!arrColor || !arrColor.length) {\r\n return;\r\n }\r\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\r\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\r\n colorStr += ',' + arrColor[3];\r\n }\r\n return type + '(' + colorStr + ')';\r\n}\r\nfunction lum(color, backgroundLum) {\r\n var arr = parse(color);\r\n return arr\r\n ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\r\n + (1 - arr[3]) * backgroundLum\r\n : 0;\r\n}\r\nfunction random() {\r\n var r = Math.round(Math.random() * 255);\r\n var g = Math.round(Math.random() * 255);\r\n var b = Math.round(Math.random() * 255);\r\n return 'rgb(' + r + ',' + g + ',' + b + ')';\r\n}\n\nvar color = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parse: parse,\n lift: lift,\n toHex: toHex,\n fastLerp: fastLerp,\n fastMapToColor: fastMapToColor,\n lerp: lerp$1,\n mapToColor: mapToColor,\n modifyHSL: modifyHSL,\n modifyAlpha: modifyAlpha,\n stringify: stringify,\n lum: lum,\n random: random\n});\n\nvar arraySlice = Array.prototype.slice;\r\nfunction interpolateNumber(p0, p1, percent) {\r\n return (p1 - p0) * percent + p0;\r\n}\r\nfunction step(p0, p1, percent) {\r\n return percent > 0.5 ? p1 : p0;\r\n}\r\nfunction interpolate1DArray(out, p0, p1, percent) {\r\n var len = p0.length;\r\n for (var i = 0; i < len; i++) {\r\n out[i] = interpolateNumber(p0[i], p1[i], percent);\r\n }\r\n}\r\nfunction interpolate2DArray(out, p0, p1, percent) {\r\n var len = p0.length;\r\n var len2 = len && p0[0].length;\r\n for (var i = 0; i < len; i++) {\r\n if (!out[i]) {\r\n out[i] = [];\r\n }\r\n for (var j = 0; j < len2; j++) {\r\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\r\n }\r\n }\r\n}\r\nfunction add1DArray(out, p0, p1, sign) {\r\n var len = p0.length;\r\n for (var i = 0; i < len; i++) {\r\n out[i] = p0[i] + p1[i] * sign;\r\n }\r\n return out;\r\n}\r\nfunction add2DArray(out, p0, p1, sign) {\r\n var len = p0.length;\r\n var len2 = len && p0[0].length;\r\n for (var i = 0; i < len; i++) {\r\n if (!out[i]) {\r\n out[i] = [];\r\n }\r\n for (var j = 0; j < len2; j++) {\r\n out[i][j] = p0[i][j] + p1[i][j] * sign;\r\n }\r\n }\r\n return out;\r\n}\r\nfunction fillArray(val0, val1, arrDim) {\r\n var arr0 = val0;\r\n var arr1 = val1;\r\n if (!arr0.push || !arr1.push) {\r\n return;\r\n }\r\n var arr0Len = arr0.length;\r\n var arr1Len = arr1.length;\r\n if (arr0Len !== arr1Len) {\r\n var isPreviousLarger = arr0Len > arr1Len;\r\n if (isPreviousLarger) {\r\n arr0.length = arr1Len;\r\n }\r\n else {\r\n for (var i = arr0Len; i < arr1Len; i++) {\r\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\r\n }\r\n }\r\n }\r\n var len2 = arr0[0] && arr0[0].length;\r\n for (var i = 0; i < arr0.length; i++) {\r\n if (arrDim === 1) {\r\n if (isNaN(arr0[i])) {\r\n arr0[i] = arr1[i];\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < len2; j++) {\r\n if (isNaN(arr0[i][j])) {\r\n arr0[i][j] = arr1[i][j];\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction is1DArraySame(arr0, arr1) {\r\n var len = arr0.length;\r\n if (len !== arr1.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < len; i++) {\r\n if (arr0[i] !== arr1[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\r\n var v0 = (p2 - p0) * 0.5;\r\n var v1 = (p3 - p1) * 0.5;\r\n return (2 * (p1 - p2) + v0 + v1) * t3\r\n + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n + v0 * t + p1;\r\n}\r\nfunction catmullRomInterpolate1DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n var len = p0.length;\r\n for (var i = 0; i < len; i++) {\r\n out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\r\n }\r\n}\r\nfunction catmullRomInterpolate2DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n var len = p0.length;\r\n var len2 = p0[0].length;\r\n for (var i = 0; i < len; i++) {\r\n if (!out[i]) {\r\n out[1] = [];\r\n }\r\n for (var j = 0; j < len2; j++) {\r\n out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\r\n }\r\n }\r\n}\r\nfunction cloneValue(value) {\r\n if (isArrayLike(value)) {\r\n var len = value.length;\r\n if (isArrayLike(value[0])) {\r\n var ret = [];\r\n for (var i = 0; i < len; i++) {\r\n ret.push(arraySlice.call(value[i]));\r\n }\r\n return ret;\r\n }\r\n return arraySlice.call(value);\r\n }\r\n return value;\r\n}\r\nfunction rgba2String(rgba) {\r\n rgba[0] = Math.floor(rgba[0]);\r\n rgba[1] = Math.floor(rgba[1]);\r\n rgba[2] = Math.floor(rgba[2]);\r\n return 'rgba(' + rgba.join(',') + ')';\r\n}\r\nfunction guessArrayDim(value) {\r\n return isArrayLike(value && value[0]) ? 2 : 1;\r\n}\r\nvar tmpRgba = [0, 0, 0, 0];\r\nvar Track = (function () {\r\n function Track(propName) {\r\n this.keyframes = [];\r\n this.maxTime = 0;\r\n this.arrDim = 0;\r\n this.interpolable = true;\r\n this._needsSort = false;\r\n this._isAllValueEqual = true;\r\n this._lastFrame = 0;\r\n this._lastFramePercent = 0;\r\n this.propName = propName;\r\n }\r\n Track.prototype.isFinished = function () {\r\n return this._finished;\r\n };\r\n Track.prototype.setFinished = function () {\r\n this._finished = true;\r\n if (this._additiveTrack) {\r\n this._additiveTrack.setFinished();\r\n }\r\n };\r\n Track.prototype.needsAnimate = function () {\r\n return !this._isAllValueEqual && this.keyframes.length >= 2 && this.interpolable;\r\n };\r\n Track.prototype.getAdditiveTrack = function () {\r\n return this._additiveTrack;\r\n };\r\n Track.prototype.addKeyframe = function (time, value) {\r\n if (time >= this.maxTime) {\r\n this.maxTime = time;\r\n }\r\n else {\r\n this._needsSort = true;\r\n }\r\n var keyframes = this.keyframes;\r\n var len = keyframes.length;\r\n if (this.interpolable) {\r\n if (isArrayLike(value)) {\r\n var arrayDim = guessArrayDim(value);\r\n if (len > 0 && this.arrDim !== arrayDim) {\r\n this.interpolable = false;\r\n return;\r\n }\r\n if (arrayDim === 1 && typeof value[0] !== 'number'\r\n || arrayDim === 2 && typeof value[0][0] !== 'number') {\r\n this.interpolable = false;\r\n return;\r\n }\r\n if (len > 0) {\r\n var lastFrame = keyframes[len - 1];\r\n if (this._isAllValueEqual) {\r\n if (arrayDim === 1) {\r\n if (!is1DArraySame(value, lastFrame.value)) {\r\n this._isAllValueEqual = false;\r\n }\r\n }\r\n else {\r\n this._isAllValueEqual = false;\r\n }\r\n }\r\n }\r\n this.arrDim = arrayDim;\r\n }\r\n else {\r\n if (this.arrDim > 0) {\r\n this.interpolable = false;\r\n return;\r\n }\r\n if (typeof value === 'string') {\r\n var colorArray = parse(value);\r\n if (colorArray) {\r\n value = colorArray;\r\n this.isValueColor = true;\r\n }\r\n else {\r\n this.interpolable = false;\r\n }\r\n }\r\n else if (typeof value !== 'number') {\r\n this.interpolable = false;\r\n return;\r\n }\r\n if (this._isAllValueEqual && len > 0) {\r\n var lastFrame = keyframes[len - 1];\r\n if (this.isValueColor && !is1DArraySame(lastFrame.value, value)) {\r\n this._isAllValueEqual = false;\r\n }\r\n else if (lastFrame.value !== value) {\r\n this._isAllValueEqual = false;\r\n }\r\n }\r\n }\r\n }\r\n var kf = {\r\n time: time,\r\n value: value,\r\n percent: 0\r\n };\r\n this.keyframes.push(kf);\r\n return kf;\r\n };\r\n Track.prototype.prepare = function (additiveTrack) {\r\n var kfs = this.keyframes;\r\n if (this._needsSort) {\r\n kfs.sort(function (a, b) {\r\n return a.time - b.time;\r\n });\r\n }\r\n var arrDim = this.arrDim;\r\n var kfsLen = kfs.length;\r\n var lastKf = kfs[kfsLen - 1];\r\n for (var i = 0; i < kfsLen; i++) {\r\n kfs[i].percent = kfs[i].time / this.maxTime;\r\n if (arrDim > 0 && i !== kfsLen - 1) {\r\n fillArray(kfs[i].value, lastKf.value, arrDim);\r\n }\r\n }\r\n if (additiveTrack\r\n && this.needsAnimate()\r\n && additiveTrack.needsAnimate()\r\n && arrDim === additiveTrack.arrDim\r\n && this.isValueColor === additiveTrack.isValueColor\r\n && !additiveTrack._finished) {\r\n this._additiveTrack = additiveTrack;\r\n var startValue = kfs[0].value;\r\n for (var i = 0; i < kfsLen; i++) {\r\n if (arrDim === 0) {\r\n if (this.isValueColor) {\r\n kfs[i].additiveValue\r\n = add1DArray([], kfs[i].value, startValue, -1);\r\n }\r\n else {\r\n kfs[i].additiveValue = kfs[i].value - startValue;\r\n }\r\n }\r\n else if (arrDim === 1) {\r\n kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1);\r\n }\r\n else if (arrDim === 2) {\r\n kfs[i].additiveValue = add2DArray([], kfs[i].value, startValue, -1);\r\n }\r\n }\r\n }\r\n };\r\n Track.prototype.step = function (target, percent) {\r\n if (this._finished) {\r\n return;\r\n }\r\n if (this._additiveTrack && this._additiveTrack._finished) {\r\n this._additiveTrack = null;\r\n }\r\n var isAdditive = this._additiveTrack != null;\r\n var valueKey = isAdditive ? 'additiveValue' : 'value';\r\n var keyframes = this.keyframes;\r\n var kfsNum = this.keyframes.length;\r\n var propName = this.propName;\r\n var arrDim = this.arrDim;\r\n var isValueColor = this.isValueColor;\r\n var frameIdx;\r\n if (percent < 0) {\r\n frameIdx = 0;\r\n }\r\n else if (percent < this._lastFramePercent) {\r\n var start = Math.min(this._lastFrame + 1, kfsNum - 1);\r\n for (frameIdx = start; frameIdx >= 0; frameIdx--) {\r\n if (keyframes[frameIdx].percent <= percent) {\r\n break;\r\n }\r\n }\r\n frameIdx = Math.min(frameIdx, kfsNum - 2);\r\n }\r\n else {\r\n for (frameIdx = this._lastFrame; frameIdx < kfsNum; frameIdx++) {\r\n if (keyframes[frameIdx].percent > percent) {\r\n break;\r\n }\r\n }\r\n frameIdx = Math.min(frameIdx - 1, kfsNum - 2);\r\n }\r\n var nextFrame = keyframes[frameIdx + 1];\r\n var frame = keyframes[frameIdx];\r\n if (!(frame && nextFrame)) {\r\n return;\r\n }\r\n this._lastFrame = frameIdx;\r\n this._lastFramePercent = percent;\r\n var range = (nextFrame.percent - frame.percent);\r\n if (range === 0) {\r\n return;\r\n }\r\n var w = (percent - frame.percent) / range;\r\n var targetArr = isAdditive ? this._additiveValue\r\n : (isValueColor ? tmpRgba : target[propName]);\r\n if ((arrDim > 0 || isValueColor) && !targetArr) {\r\n targetArr = this._additiveValue = [];\r\n }\r\n if (this.useSpline) {\r\n var p1 = keyframes[frameIdx][valueKey];\r\n var p0 = keyframes[frameIdx === 0 ? frameIdx : frameIdx - 1][valueKey];\r\n var p2 = keyframes[frameIdx > kfsNum - 2 ? kfsNum - 1 : frameIdx + 1][valueKey];\r\n var p3 = keyframes[frameIdx > kfsNum - 3 ? kfsNum - 1 : frameIdx + 2][valueKey];\r\n if (arrDim > 0) {\r\n arrDim === 1\r\n ? catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w)\r\n : catmullRomInterpolate2DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n }\r\n else if (isValueColor) {\r\n catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n if (!isAdditive) {\r\n target[propName] = rgba2String(targetArr);\r\n }\r\n }\r\n else {\r\n var value = void 0;\r\n if (!this.interpolable) {\r\n value = p2;\r\n }\r\n else {\r\n value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\r\n }\r\n if (isAdditive) {\r\n this._additiveValue = value;\r\n }\r\n else {\r\n target[propName] = value;\r\n }\r\n }\r\n }\r\n else {\r\n if (arrDim > 0) {\r\n arrDim === 1\r\n ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\r\n : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n }\r\n else if (isValueColor) {\r\n interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n if (!isAdditive) {\r\n target[propName] = rgba2String(targetArr);\r\n }\r\n }\r\n else {\r\n var value = void 0;\r\n if (!this.interpolable) {\r\n value = step(frame[valueKey], nextFrame[valueKey], w);\r\n }\r\n else {\r\n value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\r\n }\r\n if (isAdditive) {\r\n this._additiveValue = value;\r\n }\r\n else {\r\n target[propName] = value;\r\n }\r\n }\r\n }\r\n if (isAdditive) {\r\n this._addToTarget(target);\r\n }\r\n };\r\n Track.prototype._addToTarget = function (target) {\r\n var arrDim = this.arrDim;\r\n var propName = this.propName;\r\n var additiveValue = this._additiveValue;\r\n if (arrDim === 0) {\r\n if (this.isValueColor) {\r\n parse(target[propName], tmpRgba);\r\n add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\r\n target[propName] = rgba2String(tmpRgba);\r\n }\r\n else {\r\n target[propName] = target[propName] + additiveValue;\r\n }\r\n }\r\n else if (arrDim === 1) {\r\n add1DArray(target[propName], target[propName], additiveValue, 1);\r\n }\r\n else if (arrDim === 2) {\r\n add2DArray(target[propName], target[propName], additiveValue, 1);\r\n }\r\n };\r\n return Track;\r\n}());\r\nvar Animator = (function () {\r\n function Animator(target, loop, additiveTo) {\r\n this._tracks = {};\r\n this._trackKeys = [];\r\n this._delay = 0;\r\n this._maxTime = 0;\r\n this._paused = false;\r\n this._started = 0;\r\n this._clip = null;\r\n this._target = target;\r\n this._loop = loop;\r\n if (loop && additiveTo) {\r\n logError('Can\\' use additive animation on looped animation.');\r\n return;\r\n }\r\n this._additiveAnimators = additiveTo;\r\n }\r\n Animator.prototype.getTarget = function () {\r\n return this._target;\r\n };\r\n Animator.prototype.changeTarget = function (target) {\r\n this._target = target;\r\n };\r\n Animator.prototype.when = function (time, props) {\r\n return this.whenWithKeys(time, props, keys(props));\r\n };\r\n Animator.prototype.whenWithKeys = function (time, props, propNames) {\r\n var tracks = this._tracks;\r\n for (var i = 0; i < propNames.length; i++) {\r\n var propName = propNames[i];\r\n var track = tracks[propName];\r\n if (!track) {\r\n track = tracks[propName] = new Track(propName);\r\n var initialValue = void 0;\r\n var additiveTrack = this._getAdditiveTrack(propName);\r\n if (additiveTrack) {\r\n var lastFinalKf = additiveTrack.keyframes[additiveTrack.keyframes.length - 1];\r\n initialValue = lastFinalKf && lastFinalKf.value;\r\n if (additiveTrack.isValueColor && initialValue) {\r\n initialValue = rgba2String(initialValue);\r\n }\r\n }\r\n else {\r\n initialValue = this._target[propName];\r\n }\r\n if (initialValue == null) {\r\n continue;\r\n }\r\n if (time !== 0) {\r\n track.addKeyframe(0, cloneValue(initialValue));\r\n }\r\n this._trackKeys.push(propName);\r\n }\r\n track.addKeyframe(time, cloneValue(props[propName]));\r\n }\r\n this._maxTime = Math.max(this._maxTime, time);\r\n return this;\r\n };\r\n Animator.prototype.pause = function () {\r\n this._clip.pause();\r\n this._paused = true;\r\n };\r\n Animator.prototype.resume = function () {\r\n this._clip.resume();\r\n this._paused = false;\r\n };\r\n Animator.prototype.isPaused = function () {\r\n return !!this._paused;\r\n };\r\n Animator.prototype._doneCallback = function () {\r\n this._setTracksFinished();\r\n this._clip = null;\r\n var doneList = this._doneList;\r\n if (doneList) {\r\n var len = doneList.length;\r\n for (var i = 0; i < len; i++) {\r\n doneList[i].call(this);\r\n }\r\n }\r\n };\r\n Animator.prototype._abortedCallback = function () {\r\n this._setTracksFinished();\r\n var animation = this.animation;\r\n var abortedList = this._abortedList;\r\n if (animation) {\r\n animation.removeClip(this._clip);\r\n }\r\n this._clip = null;\r\n if (abortedList) {\r\n for (var i = 0; i < abortedList.length; i++) {\r\n abortedList[i].call(this);\r\n }\r\n }\r\n };\r\n Animator.prototype._setTracksFinished = function () {\r\n var tracks = this._tracks;\r\n var tracksKeys = this._trackKeys;\r\n for (var i = 0; i < tracksKeys.length; i++) {\r\n tracks[tracksKeys[i]].setFinished();\r\n }\r\n };\r\n Animator.prototype._getAdditiveTrack = function (trackName) {\r\n var additiveTrack;\r\n var additiveAnimators = this._additiveAnimators;\r\n if (additiveAnimators) {\r\n for (var i = 0; i < additiveAnimators.length; i++) {\r\n var track = additiveAnimators[i].getTrack(trackName);\r\n if (track) {\r\n additiveTrack = track;\r\n }\r\n }\r\n }\r\n return additiveTrack;\r\n };\r\n Animator.prototype.start = function (easing, forceAnimate) {\r\n if (this._started > 0) {\r\n return;\r\n }\r\n this._started = 1;\r\n var self = this;\r\n var tracks = [];\r\n for (var i = 0; i < this._trackKeys.length; i++) {\r\n var propName = this._trackKeys[i];\r\n var track = this._tracks[propName];\r\n var additiveTrack = this._getAdditiveTrack(propName);\r\n var kfs = track.keyframes;\r\n track.prepare(additiveTrack);\r\n if (track.needsAnimate()) {\r\n tracks.push(track);\r\n }\r\n else if (!track.interpolable) {\r\n var lastKf = kfs[kfs.length - 1];\r\n if (lastKf) {\r\n self._target[track.propName] = lastKf.value;\r\n }\r\n }\r\n }\r\n if (tracks.length || forceAnimate) {\r\n var clip = new Clip({\r\n life: this._maxTime,\r\n loop: this._loop,\r\n delay: this._delay,\r\n onframe: function (percent) {\r\n self._started = 2;\r\n var additiveAnimators = self._additiveAnimators;\r\n if (additiveAnimators) {\r\n var stillHasAdditiveAnimator = false;\r\n for (var i = 0; i < additiveAnimators.length; i++) {\r\n if (additiveAnimators[i]._clip) {\r\n stillHasAdditiveAnimator = true;\r\n break;\r\n }\r\n }\r\n if (!stillHasAdditiveAnimator) {\r\n self._additiveAnimators = null;\r\n }\r\n }\r\n for (var i = 0; i < tracks.length; i++) {\r\n tracks[i].step(self._target, percent);\r\n }\r\n var onframeList = self._onframeList;\r\n if (onframeList) {\r\n for (var i = 0; i < onframeList.length; i++) {\r\n onframeList[i](self._target, percent);\r\n }\r\n }\r\n },\r\n ondestroy: function () {\r\n self._doneCallback();\r\n }\r\n });\r\n this._clip = clip;\r\n if (this.animation) {\r\n this.animation.addClip(clip);\r\n }\r\n if (easing && easing !== 'spline') {\r\n clip.easing = easing;\r\n }\r\n }\r\n else {\r\n this._doneCallback();\r\n }\r\n return this;\r\n };\r\n Animator.prototype.stop = function (forwardToLast) {\r\n if (!this._clip) {\r\n return;\r\n }\r\n var clip = this._clip;\r\n if (forwardToLast) {\r\n clip.onframe(1);\r\n }\r\n this._abortedCallback();\r\n };\r\n Animator.prototype.delay = function (time) {\r\n this._delay = time;\r\n return this;\r\n };\r\n Animator.prototype.during = function (cb) {\r\n if (cb) {\r\n if (!this._onframeList) {\r\n this._onframeList = [];\r\n }\r\n this._onframeList.push(cb);\r\n }\r\n return this;\r\n };\r\n Animator.prototype.done = function (cb) {\r\n if (cb) {\r\n if (!this._doneList) {\r\n this._doneList = [];\r\n }\r\n this._doneList.push(cb);\r\n }\r\n return this;\r\n };\r\n Animator.prototype.aborted = function (cb) {\r\n if (cb) {\r\n if (!this._abortedList) {\r\n this._abortedList = [];\r\n }\r\n this._abortedList.push(cb);\r\n }\r\n return this;\r\n };\r\n Animator.prototype.getClip = function () {\r\n return this._clip;\r\n };\r\n Animator.prototype.getTrack = function (propName) {\r\n return this._tracks[propName];\r\n };\r\n Animator.prototype.stopTracks = function (propNames, forwardToLast) {\r\n if (!propNames.length || !this._clip) {\r\n return true;\r\n }\r\n var tracks = this._tracks;\r\n var tracksKeys = this._trackKeys;\r\n for (var i = 0; i < propNames.length; i++) {\r\n var track = tracks[propNames[i]];\r\n if (track) {\r\n if (forwardToLast) {\r\n track.step(this._target, 1);\r\n }\r\n else if (this._started === 1) {\r\n track.step(this._target, 0);\r\n }\r\n track.setFinished();\r\n }\r\n }\r\n var allAborted = true;\r\n for (var i = 0; i < tracksKeys.length; i++) {\r\n if (!tracks[tracksKeys[i]].isFinished()) {\r\n allAborted = false;\r\n break;\r\n }\r\n }\r\n if (allAborted) {\r\n this._abortedCallback();\r\n }\r\n return allAborted;\r\n };\r\n Animator.prototype.saveFinalToTarget = function (target, trackKeys) {\r\n if (!target) {\r\n return;\r\n }\r\n trackKeys = trackKeys || this._trackKeys;\r\n for (var i = 0; i < trackKeys.length; i++) {\r\n var propName = trackKeys[i];\r\n var track = this._tracks[propName];\r\n if (!track || track.isFinished()) {\r\n continue;\r\n }\r\n var kfs = track.keyframes;\r\n var lastKf = kfs[kfs.length - 1];\r\n if (lastKf) {\r\n var val = cloneValue(lastKf.value);\r\n if (track.isValueColor) {\r\n val = rgba2String(val);\r\n }\r\n target[propName] = val;\r\n }\r\n }\r\n };\r\n Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\r\n trackKeys = trackKeys || keys(finalProps);\r\n for (var i = 0; i < trackKeys.length; i++) {\r\n var propName = trackKeys[i];\r\n var track = this._tracks[propName];\r\n if (!track) {\r\n continue;\r\n }\r\n var kfs = track.keyframes;\r\n if (kfs.length > 1) {\r\n var lastKf = kfs.pop();\r\n track.addKeyframe(lastKf.time, finalProps[propName]);\r\n track.prepare(track.getAdditiveTrack());\r\n }\r\n }\r\n };\r\n return Animator;\r\n}());\n\nvar Point = (function () {\r\n function Point(x, y) {\r\n this.x = x || 0;\r\n this.y = y || 0;\r\n }\r\n Point.prototype.copy = function (other) {\r\n this.x = other.x;\r\n this.y = other.y;\r\n return this;\r\n };\r\n Point.prototype.clone = function () {\r\n return new Point(this.x, this.y);\r\n };\r\n Point.prototype.set = function (x, y) {\r\n this.x = x;\r\n this.y = y;\r\n return this;\r\n };\r\n Point.prototype.equal = function (other) {\r\n return other.x === this.x && other.y === this.y;\r\n };\r\n Point.prototype.add = function (other) {\r\n this.x += other.x;\r\n this.y += other.y;\r\n return this;\r\n };\r\n Point.prototype.scale = function (scalar) {\r\n this.x *= scalar;\r\n this.y *= scalar;\r\n };\r\n Point.prototype.scaleAndAdd = function (other, scalar) {\r\n this.x += other.x * scalar;\r\n this.y += other.y * scalar;\r\n };\r\n Point.prototype.sub = function (other) {\r\n this.x -= other.x;\r\n this.y -= other.y;\r\n return this;\r\n };\r\n Point.prototype.dot = function (other) {\r\n return this.x * other.x + this.y * other.y;\r\n };\r\n Point.prototype.len = function () {\r\n return Math.sqrt(this.x * this.x + this.y * this.y);\r\n };\r\n Point.prototype.lenSquare = function () {\r\n return this.x * this.x + this.y * this.y;\r\n };\r\n Point.prototype.normalize = function () {\r\n var len = this.len();\r\n this.x /= len;\r\n this.y /= len;\r\n return this;\r\n };\r\n Point.prototype.distance = function (other) {\r\n var dx = this.x - other.x;\r\n var dy = this.y - other.y;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n };\r\n Point.prototype.distanceSquare = function (other) {\r\n var dx = this.x - other.x;\r\n var dy = this.y - other.y;\r\n return dx * dx + dy * dy;\r\n };\r\n Point.prototype.negate = function () {\r\n this.x = -this.x;\r\n this.y = -this.y;\r\n return this;\r\n };\r\n Point.prototype.transform = function (m) {\r\n if (!m) {\r\n return;\r\n }\r\n var x = this.x;\r\n var y = this.y;\r\n this.x = m[0] * x + m[2] * y + m[4];\r\n this.y = m[1] * x + m[3] * y + m[5];\r\n return this;\r\n };\r\n Point.prototype.toArray = function (out) {\r\n out[0] = this.x;\r\n out[1] = this.y;\r\n return out;\r\n };\r\n Point.prototype.fromArray = function (input) {\r\n this.x = input[0];\r\n this.y = input[1];\r\n };\r\n Point.set = function (p, x, y) {\r\n p.x = x;\r\n p.y = y;\r\n };\r\n Point.copy = function (p, p2) {\r\n p.x = p2.x;\r\n p.y = p2.y;\r\n };\r\n Point.len = function (p) {\r\n return Math.sqrt(p.x * p.x + p.y * p.y);\r\n };\r\n Point.lenSquare = function (p) {\r\n return p.x * p.x + p.y * p.y;\r\n };\r\n Point.dot = function (p0, p1) {\r\n return p0.x * p1.x + p0.y * p1.y;\r\n };\r\n Point.add = function (out, p0, p1) {\r\n out.x = p0.x + p1.x;\r\n out.y = p0.y + p1.y;\r\n };\r\n Point.sub = function (out, p0, p1) {\r\n out.x = p0.x - p1.x;\r\n out.y = p0.y - p1.y;\r\n };\r\n Point.scale = function (out, p0, scalar) {\r\n out.x = p0.x * scalar;\r\n out.y = p0.y * scalar;\r\n };\r\n Point.scaleAndAdd = function (out, p0, p1, scalar) {\r\n out.x = p0.x + p1.x * scalar;\r\n out.y = p0.y + p1.y * scalar;\r\n };\r\n Point.lerp = function (out, p0, p1, t) {\r\n var onet = 1 - t;\r\n out.x = onet * p0.x + t * p1.x;\r\n out.y = onet * p0.y + t * p1.y;\r\n };\r\n return Point;\r\n}());\n\nvar mathMin = Math.min;\r\nvar mathMax = Math.max;\r\nvar lt = new Point();\r\nvar rb = new Point();\r\nvar lb = new Point();\r\nvar rt = new Point();\r\nvar minTv = new Point();\r\nvar maxTv = new Point();\r\nvar BoundingRect = (function () {\r\n function BoundingRect(x, y, width, height) {\r\n if (width < 0 && isFinite(width)) {\r\n x = x + width;\r\n width = -width;\r\n }\r\n if (height < 0 && isFinite(height)) {\r\n y = y + height;\r\n height = -height;\r\n }\r\n this.x = x;\r\n this.y = y;\r\n this.width = width;\r\n this.height = height;\r\n }\r\n BoundingRect.prototype.union = function (other) {\r\n var x = mathMin(other.x, this.x);\r\n var y = mathMin(other.y, this.y);\r\n if (isFinite(this.x) && isFinite(this.width)) {\r\n this.width = mathMax(other.x + other.width, this.x + this.width) - x;\r\n }\r\n else {\r\n this.width = other.width;\r\n }\r\n if (isFinite(this.y) && isFinite(this.height)) {\r\n this.height = mathMax(other.y + other.height, this.y + this.height) - y;\r\n }\r\n else {\r\n this.height = other.height;\r\n }\r\n this.x = x;\r\n this.y = y;\r\n };\r\n BoundingRect.prototype.applyTransform = function (m) {\r\n BoundingRect.applyTransform(this, this, m);\r\n };\r\n BoundingRect.prototype.calculateTransform = function (b) {\r\n var a = this;\r\n var sx = b.width / a.width;\r\n var sy = b.height / a.height;\r\n var m = create$1();\r\n translate(m, m, [-a.x, -a.y]);\r\n scale$1(m, m, [sx, sy]);\r\n translate(m, m, [b.x, b.y]);\r\n return m;\r\n };\r\n BoundingRect.prototype.intersect = function (b, mtv) {\r\n if (!b) {\r\n return false;\r\n }\r\n if (!(b instanceof BoundingRect)) {\r\n b = BoundingRect.create(b);\r\n }\r\n var a = this;\r\n var ax0 = a.x;\r\n var ax1 = a.x + a.width;\r\n var ay0 = a.y;\r\n var ay1 = a.y + a.height;\r\n var bx0 = b.x;\r\n var bx1 = b.x + b.width;\r\n var by0 = b.y;\r\n var by1 = b.y + b.height;\r\n var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\r\n if (mtv) {\r\n var dMin = Infinity;\r\n var dMax = 0;\r\n var d0 = Math.abs(ax1 - bx0);\r\n var d1 = Math.abs(bx1 - ax0);\r\n var d2 = Math.abs(ay1 - by0);\r\n var d3 = Math.abs(by1 - ay0);\r\n var dx = Math.min(d0, d1);\r\n var dy = Math.min(d2, d3);\r\n if (ax1 < bx0 || bx1 < ax0) {\r\n if (dx > dMax) {\r\n dMax = dx;\r\n if (d0 < d1) {\r\n Point.set(maxTv, -d0, 0);\r\n }\r\n else {\r\n Point.set(maxTv, d1, 0);\r\n }\r\n }\r\n }\r\n else {\r\n if (dx < dMin) {\r\n dMin = dx;\r\n if (d0 < d1) {\r\n Point.set(minTv, d0, 0);\r\n }\r\n else {\r\n Point.set(minTv, -d1, 0);\r\n }\r\n }\r\n }\r\n if (ay1 < by0 || by1 < ay0) {\r\n if (dy > dMax) {\r\n dMax = dy;\r\n if (d2 < d3) {\r\n Point.set(maxTv, 0, -d2);\r\n }\r\n else {\r\n Point.set(maxTv, 0, d3);\r\n }\r\n }\r\n }\r\n else {\r\n if (dx < dMin) {\r\n dMin = dx;\r\n if (d2 < d3) {\r\n Point.set(minTv, 0, d2);\r\n }\r\n else {\r\n Point.set(minTv, 0, -d3);\r\n }\r\n }\r\n }\r\n }\r\n if (mtv) {\r\n Point.copy(mtv, overlap ? minTv : maxTv);\r\n }\r\n return overlap;\r\n };\r\n BoundingRect.prototype.contain = function (x, y) {\r\n var rect = this;\r\n return x >= rect.x\r\n && x <= (rect.x + rect.width)\r\n && y >= rect.y\r\n && y <= (rect.y + rect.height);\r\n };\r\n BoundingRect.prototype.clone = function () {\r\n return new BoundingRect(this.x, this.y, this.width, this.height);\r\n };\r\n BoundingRect.prototype.copy = function (other) {\r\n BoundingRect.copy(this, other);\r\n };\r\n BoundingRect.prototype.plain = function () {\r\n return {\r\n x: this.x,\r\n y: this.y,\r\n width: this.width,\r\n height: this.height\r\n };\r\n };\r\n BoundingRect.prototype.isFinite = function () {\r\n return isFinite(this.x)\r\n && isFinite(this.y)\r\n && isFinite(this.width)\r\n && isFinite(this.height);\r\n };\r\n BoundingRect.prototype.isZero = function () {\r\n return this.width === 0 || this.height === 0;\r\n };\r\n BoundingRect.create = function (rect) {\r\n return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\r\n };\r\n BoundingRect.copy = function (target, source) {\r\n target.x = source.x;\r\n target.y = source.y;\r\n target.width = source.width;\r\n target.height = source.height;\r\n };\r\n BoundingRect.applyTransform = function (target, source, m) {\r\n if (!m) {\r\n if (target !== source) {\r\n BoundingRect.copy(target, source);\r\n }\r\n return;\r\n }\r\n if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\r\n var sx = m[0];\r\n var sy = m[3];\r\n var tx = m[4];\r\n var ty = m[5];\r\n target.x = source.x * sx + tx;\r\n target.y = source.y * sy + ty;\r\n target.width = source.width * sx;\r\n target.height = source.height * sy;\r\n if (target.width < 0) {\r\n target.x += target.width;\r\n target.width = -target.width;\r\n }\r\n if (target.height < 0) {\r\n target.y += target.height;\r\n target.height = -target.height;\r\n }\r\n return;\r\n }\r\n lt.x = lb.x = source.x;\r\n lt.y = rt.y = source.y;\r\n rb.x = rt.x = source.x + source.width;\r\n rb.y = lb.y = source.y + source.height;\r\n lt.transform(m);\r\n rt.transform(m);\r\n rb.transform(m);\r\n lb.transform(m);\r\n target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\r\n target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\r\n var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\r\n var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\r\n target.width = maxX - target.x;\r\n target.height = maxY - target.y;\r\n };\r\n return BoundingRect;\r\n}());\n\nvar textWidthCache = {};\r\nvar DEFAULT_FONT = '12px sans-serif';\r\nvar _ctx;\r\nvar _cachedFont;\r\nfunction defaultMeasureText(text, font) {\r\n if (!_ctx) {\r\n _ctx = createCanvas().getContext('2d');\r\n }\r\n if (_cachedFont !== font) {\r\n _cachedFont = _ctx.font = font || DEFAULT_FONT;\r\n }\r\n return _ctx.measureText(text);\r\n}\r\nvar methods$1 = {\r\n measureText: defaultMeasureText\r\n};\r\nfunction getWidth(text, font) {\r\n font = font || DEFAULT_FONT;\r\n var cacheOfFont = textWidthCache[font];\r\n if (!cacheOfFont) {\r\n cacheOfFont = textWidthCache[font] = new LRU(500);\r\n }\r\n var width = cacheOfFont.get(text);\r\n if (width == null) {\r\n width = methods$1.measureText(text, font).width;\r\n cacheOfFont.put(text, width);\r\n }\r\n return width;\r\n}\r\nfunction innerGetBoundingRect(text, font, textAlign, textBaseline) {\r\n var width = getWidth(text, font);\r\n var height = getLineHeight(font);\r\n var x = adjustTextX(0, width, textAlign);\r\n var y = adjustTextY(0, height, textBaseline);\r\n var rect = new BoundingRect(x, y, width, height);\r\n return rect;\r\n}\r\nfunction getBoundingRect(text, font, textAlign, textBaseline) {\r\n var textLines = ((text || '') + '').split('\\n');\r\n var len = textLines.length;\r\n if (len === 1) {\r\n return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\r\n }\r\n else {\r\n var uniondRect = new BoundingRect(0, 0, 0, 0);\r\n for (var i = 0; i < textLines.length; i++) {\r\n var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\r\n i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\r\n }\r\n return uniondRect;\r\n }\r\n}\r\nfunction adjustTextX(x, width, textAlign) {\r\n if (textAlign === 'right') {\r\n x -= width;\r\n }\r\n else if (textAlign === 'center') {\r\n x -= width / 2;\r\n }\r\n return x;\r\n}\r\nfunction adjustTextY(y, height, verticalAlign) {\r\n if (verticalAlign === 'middle') {\r\n y -= height / 2;\r\n }\r\n else if (verticalAlign === 'bottom') {\r\n y -= height;\r\n }\r\n return y;\r\n}\r\nfunction getLineHeight(font) {\r\n return getWidth('国', font);\r\n}\r\nfunction parsePercent(value, maxValue) {\r\n if (typeof value === 'string') {\r\n if (value.lastIndexOf('%') >= 0) {\r\n return parseFloat(value) / 100 * maxValue;\r\n }\r\n return parseFloat(value);\r\n }\r\n return value;\r\n}\r\nfunction calculateTextPosition(out, opts, rect) {\r\n var textPosition = opts.position || 'inside';\r\n var distance = opts.distance != null ? opts.distance : 5;\r\n var height = rect.height;\r\n var width = rect.width;\r\n var halfHeight = height / 2;\r\n var x = rect.x;\r\n var y = rect.y;\r\n var textAlign = 'left';\r\n var textVerticalAlign = 'top';\r\n if (textPosition instanceof Array) {\r\n x += parsePercent(textPosition[0], rect.width);\r\n y += parsePercent(textPosition[1], rect.height);\r\n textAlign = null;\r\n textVerticalAlign = null;\r\n }\r\n else {\r\n switch (textPosition) {\r\n case 'left':\r\n x -= distance;\r\n y += halfHeight;\r\n textAlign = 'right';\r\n textVerticalAlign = 'middle';\r\n break;\r\n case 'right':\r\n x += distance + width;\r\n y += halfHeight;\r\n textVerticalAlign = 'middle';\r\n break;\r\n case 'top':\r\n x += width / 2;\r\n y -= distance;\r\n textAlign = 'center';\r\n textVerticalAlign = 'bottom';\r\n break;\r\n case 'bottom':\r\n x += width / 2;\r\n y += height + distance;\r\n textAlign = 'center';\r\n break;\r\n case 'inside':\r\n x += width / 2;\r\n y += halfHeight;\r\n textAlign = 'center';\r\n textVerticalAlign = 'middle';\r\n break;\r\n case 'insideLeft':\r\n x += distance;\r\n y += halfHeight;\r\n textVerticalAlign = 'middle';\r\n break;\r\n case 'insideRight':\r\n x += width - distance;\r\n y += halfHeight;\r\n textAlign = 'right';\r\n textVerticalAlign = 'middle';\r\n break;\r\n case 'insideTop':\r\n x += width / 2;\r\n y += distance;\r\n textAlign = 'center';\r\n break;\r\n case 'insideBottom':\r\n x += width / 2;\r\n y += height - distance;\r\n textAlign = 'center';\r\n textVerticalAlign = 'bottom';\r\n break;\r\n case 'insideTopLeft':\r\n x += distance;\r\n y += distance;\r\n break;\r\n case 'insideTopRight':\r\n x += width - distance;\r\n y += distance;\r\n textAlign = 'right';\r\n break;\r\n case 'insideBottomLeft':\r\n x += distance;\r\n y += height - distance;\r\n textVerticalAlign = 'bottom';\r\n break;\r\n case 'insideBottomRight':\r\n x += width - distance;\r\n y += height - distance;\r\n textAlign = 'right';\r\n textVerticalAlign = 'bottom';\r\n break;\r\n }\r\n }\r\n out = out || {};\r\n out.x = x;\r\n out.y = y;\r\n out.align = textAlign;\r\n out.verticalAlign = textVerticalAlign;\r\n return out;\r\n}\n\nvar dpr = 1;\r\nif (typeof window !== 'undefined') {\r\n dpr = Math.max(window.devicePixelRatio\r\n || (window.screen.deviceXDPI / window.screen.logicalXDPI)\r\n || 1, 1);\r\n}\r\nvar devicePixelRatio = dpr;\r\nvar DARK_MODE_THRESHOLD = 0.4;\r\nvar DARK_LABEL_COLOR = '#333';\r\nvar LIGHT_LABEL_COLOR = '#ccc';\r\nvar LIGHTER_LABEL_COLOR = '#eee';\n\nvar PRESERVED_NORMAL_STATE = '__zr_normal__';\r\nvar PRIMARY_STATES_KEYS = ['x', 'y', 'scaleX', 'scaleY', 'originX', 'originY', 'rotation', 'ignore'];\r\nvar DEFAULT_ANIMATABLE_MAP = {\r\n x: true,\r\n y: true,\r\n scaleX: true,\r\n scaleY: true,\r\n originX: true,\r\n originY: true,\r\n rotation: true,\r\n ignore: false\r\n};\r\nvar tmpTextPosCalcRes = {};\r\nvar tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\r\nvar Element = (function () {\r\n function Element(props) {\r\n this.id = guid();\r\n this.animators = [];\r\n this.currentStates = [];\r\n this.states = {};\r\n this._init(props);\r\n }\r\n Element.prototype._init = function (props) {\r\n this.attr(props);\r\n };\r\n Element.prototype.drift = function (dx, dy, e) {\r\n switch (this.draggable) {\r\n case 'horizontal':\r\n dy = 0;\r\n break;\r\n case 'vertical':\r\n dx = 0;\r\n break;\r\n }\r\n var m = this.transform;\r\n if (!m) {\r\n m = this.transform = [1, 0, 0, 1, 0, 0];\r\n }\r\n m[4] += dx;\r\n m[5] += dy;\r\n this.decomposeTransform();\r\n this.markRedraw();\r\n };\r\n Element.prototype.beforeUpdate = function () { };\r\n Element.prototype.afterUpdate = function () { };\r\n Element.prototype.update = function () {\r\n this.updateTransform();\r\n if (this.__dirty) {\r\n this.updateInnerText();\r\n }\r\n };\r\n Element.prototype.updateInnerText = function (forceUpdate) {\r\n var textEl = this._textContent;\r\n if (textEl && (!textEl.ignore || forceUpdate)) {\r\n if (!this.textConfig) {\r\n this.textConfig = {};\r\n }\r\n var textConfig = this.textConfig;\r\n var isLocal = textConfig.local;\r\n var attachedTransform = textEl.attachedTransform;\r\n var textAlign = void 0;\r\n var textVerticalAlign = void 0;\r\n var textStyleChanged = false;\r\n if (isLocal) {\r\n attachedTransform.parent = this;\r\n }\r\n else {\r\n attachedTransform.parent = null;\r\n }\r\n var innerOrigin = false;\r\n attachedTransform.x = textEl.x;\r\n attachedTransform.y = textEl.y;\r\n attachedTransform.originX = textEl.originX;\r\n attachedTransform.originY = textEl.originY;\r\n attachedTransform.rotation = textEl.rotation;\r\n attachedTransform.scaleX = textEl.scaleX;\r\n attachedTransform.scaleY = textEl.scaleY;\r\n if (textConfig.position != null) {\r\n var layoutRect = tmpBoundingRect;\r\n if (textConfig.layoutRect) {\r\n layoutRect.copy(textConfig.layoutRect);\r\n }\r\n else {\r\n layoutRect.copy(this.getBoundingRect());\r\n }\r\n if (!isLocal) {\r\n layoutRect.applyTransform(this.transform);\r\n }\r\n if (this.calculateTextPosition) {\r\n this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n }\r\n else {\r\n calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n }\r\n attachedTransform.x = tmpTextPosCalcRes.x;\r\n attachedTransform.y = tmpTextPosCalcRes.y;\r\n textAlign = tmpTextPosCalcRes.align;\r\n textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\r\n var textOrigin = textConfig.origin;\r\n if (textOrigin && textConfig.rotation != null) {\r\n var relOriginX = void 0;\r\n var relOriginY = void 0;\r\n if (textOrigin === 'center') {\r\n relOriginX = layoutRect.width * 0.5;\r\n relOriginY = layoutRect.height * 0.5;\r\n }\r\n else {\r\n relOriginX = parsePercent(textOrigin[0], layoutRect.width);\r\n relOriginY = parsePercent(textOrigin[1], layoutRect.height);\r\n }\r\n innerOrigin = true;\r\n attachedTransform.originX = -attachedTransform.x + relOriginX + (isLocal ? 0 : layoutRect.x);\r\n attachedTransform.originY = -attachedTransform.y + relOriginY + (isLocal ? 0 : layoutRect.y);\r\n }\r\n }\r\n if (textConfig.rotation != null) {\r\n attachedTransform.rotation = textConfig.rotation;\r\n }\r\n var textOffset = textConfig.offset;\r\n if (textOffset) {\r\n attachedTransform.x += textOffset[0];\r\n attachedTransform.y += textOffset[1];\r\n if (!innerOrigin) {\r\n attachedTransform.originX = -textOffset[0];\r\n attachedTransform.originY = -textOffset[1];\r\n }\r\n }\r\n var isInside = textConfig.inside == null\r\n ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\r\n : textConfig.inside;\r\n var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\r\n var textFill = void 0;\r\n var textStroke = void 0;\r\n var autoStroke = void 0;\r\n if (isInside && this.canBeInsideText()) {\r\n textFill = textConfig.insideFill;\r\n textStroke = textConfig.insideStroke;\r\n if (textFill == null || textFill === 'auto') {\r\n textFill = this.getInsideTextFill();\r\n }\r\n if (textStroke == null || textStroke === 'auto') {\r\n textStroke = this.getInsideTextStroke(textFill);\r\n autoStroke = true;\r\n }\r\n }\r\n else {\r\n textFill = textConfig.outsideFill;\r\n textStroke = textConfig.outsideStroke;\r\n if (textFill == null || textFill === 'auto') {\r\n textFill = this.getOutsideFill();\r\n }\r\n if (textStroke == null || textStroke === 'auto') {\r\n textStroke = this.getOutsideStroke(textFill);\r\n autoStroke = true;\r\n }\r\n }\r\n textFill = textFill || '#000';\r\n if (textFill !== innerTextDefaultStyle.fill\r\n || textStroke !== innerTextDefaultStyle.stroke\r\n || autoStroke !== innerTextDefaultStyle.autoStroke\r\n || textAlign !== innerTextDefaultStyle.align\r\n || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\r\n textStyleChanged = true;\r\n innerTextDefaultStyle.fill = textFill;\r\n innerTextDefaultStyle.stroke = textStroke;\r\n innerTextDefaultStyle.autoStroke = autoStroke;\r\n innerTextDefaultStyle.align = textAlign;\r\n innerTextDefaultStyle.verticalAlign = textVerticalAlign;\r\n textEl.setDefaultTextStyle(innerTextDefaultStyle);\r\n }\r\n if (textStyleChanged) {\r\n textEl.dirtyStyle();\r\n }\r\n textEl.markRedraw();\r\n }\r\n };\r\n Element.prototype.canBeInsideText = function () {\r\n return true;\r\n };\r\n Element.prototype.getInsideTextFill = function () {\r\n return '#fff';\r\n };\r\n Element.prototype.getInsideTextStroke = function (textFill) {\r\n return '#000';\r\n };\r\n Element.prototype.getOutsideFill = function () {\r\n return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\r\n };\r\n Element.prototype.getOutsideStroke = function (textFill) {\r\n var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\r\n var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\r\n if (!colorArr) {\r\n colorArr = [255, 255, 255, 1];\r\n }\r\n var alpha = colorArr[3];\r\n var isDark = this.__zr.isDarkMode();\r\n for (var i = 0; i < 3; i++) {\r\n colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);\r\n }\r\n colorArr[3] = 1;\r\n return stringify(colorArr, 'rgba');\r\n };\r\n Element.prototype.traverse = function (cb, context) { };\r\n Element.prototype.attrKV = function (key, value) {\r\n if (key === 'textConfig') {\r\n this.setTextConfig(value);\r\n }\r\n else if (key === 'textContent') {\r\n this.setTextContent(value);\r\n }\r\n else if (key === 'clipPath') {\r\n this.setClipPath(value);\r\n }\r\n else if (key === 'extra') {\r\n this.extra = this.extra || {};\r\n extend(this.extra, value);\r\n }\r\n else {\r\n this[key] = value;\r\n }\r\n };\r\n Element.prototype.hide = function () {\r\n this.ignore = true;\r\n this.markRedraw();\r\n };\r\n Element.prototype.show = function () {\r\n this.ignore = false;\r\n this.markRedraw();\r\n };\r\n Element.prototype.attr = function (keyOrObj, value) {\r\n if (typeof keyOrObj === 'string') {\r\n this.attrKV(keyOrObj, value);\r\n }\r\n else if (isObject(keyOrObj)) {\r\n var obj = keyOrObj;\r\n var keysArr = keys(obj);\r\n for (var i = 0; i < keysArr.length; i++) {\r\n var key = keysArr[i];\r\n this.attrKV(key, keyOrObj[key]);\r\n }\r\n }\r\n this.markRedraw();\r\n return this;\r\n };\r\n Element.prototype.saveCurrentToNormalState = function (toState) {\r\n this._innerSaveToNormal(toState);\r\n var normalState = this._normalState;\r\n for (var i = 0; i < this.animators.length; i++) {\r\n var animator = this.animators[i];\r\n var fromStateTransition = animator.__fromStateTransition;\r\n if (fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\r\n continue;\r\n }\r\n var targetName = animator.targetName;\r\n var target = targetName\r\n ? normalState[targetName] : normalState;\r\n animator.saveFinalToTarget(target);\r\n }\r\n };\r\n Element.prototype._innerSaveToNormal = function (toState) {\r\n var normalState = this._normalState;\r\n if (!normalState) {\r\n normalState = this._normalState = {};\r\n }\r\n if (toState.textConfig && !normalState.textConfig) {\r\n normalState.textConfig = this.textConfig;\r\n }\r\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\r\n };\r\n Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\r\n for (var i = 0; i < primaryKeys.length; i++) {\r\n var key = primaryKeys[i];\r\n if (toState[key] != null && !(key in normalState)) {\r\n normalState[key] = this[key];\r\n }\r\n }\r\n };\r\n Element.prototype.hasState = function () {\r\n return this.currentStates.length > 0;\r\n };\r\n Element.prototype.getState = function (name) {\r\n return this.states[name];\r\n };\r\n Element.prototype.ensureState = function (name) {\r\n var states = this.states;\r\n if (!states[name]) {\r\n states[name] = {};\r\n }\r\n return states[name];\r\n };\r\n Element.prototype.clearStates = function (noAnimation) {\r\n this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);\r\n };\r\n Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation) {\r\n var toNormalState = stateName === PRESERVED_NORMAL_STATE;\r\n var hasStates = this.hasState();\r\n if (!hasStates && toNormalState) {\r\n return;\r\n }\r\n var currentStates = this.currentStates;\r\n var animationCfg = this.stateTransition;\r\n if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\r\n return;\r\n }\r\n var state;\r\n if (this.stateProxy && !toNormalState) {\r\n state = this.stateProxy(stateName);\r\n }\r\n if (!state) {\r\n state = (this.states && this.states[stateName]);\r\n }\r\n if (!state && !toNormalState) {\r\n logError(\"State \" + stateName + \" not exists.\");\r\n return;\r\n }\r\n if (!toNormalState) {\r\n this.saveCurrentToNormalState(state);\r\n }\r\n var useHoverLayer = !!(state && state.hoverLayer);\r\n if (useHoverLayer) {\r\n this._toggleHoverLayerFlag(true);\r\n }\r\n this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n if (this._textContent) {\r\n this._textContent.useState(stateName, keepCurrentStates);\r\n }\r\n if (this._textGuide) {\r\n this._textGuide.useState(stateName, keepCurrentStates);\r\n }\r\n if (toNormalState) {\r\n this.currentStates = [];\r\n this._normalState = {};\r\n }\r\n else {\r\n if (!keepCurrentStates) {\r\n this.currentStates = [stateName];\r\n }\r\n else {\r\n this.currentStates.push(stateName);\r\n }\r\n }\r\n this._updateAnimationTargets();\r\n this.markRedraw();\r\n if (!useHoverLayer && this.__inHover) {\r\n this._toggleHoverLayerFlag(false);\r\n this.__dirty &= ~Element.REDARAW_BIT;\r\n }\r\n return state;\r\n };\r\n Element.prototype.useStates = function (states, noAnimation) {\r\n if (!states.length) {\r\n this.clearStates();\r\n }\r\n else {\r\n var stateObjects = [];\r\n var currentStates = this.currentStates;\r\n var len = states.length;\r\n var notChange = len === currentStates.length;\r\n if (notChange) {\r\n for (var i = 0; i < len; i++) {\r\n if (states[i] !== currentStates[i]) {\r\n notChange = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (notChange) {\r\n return;\r\n }\r\n for (var i = 0; i < len; i++) {\r\n var stateName = states[i];\r\n var stateObj = void 0;\r\n if (this.stateProxy) {\r\n stateObj = this.stateProxy(stateName, states);\r\n }\r\n if (!stateObj) {\r\n stateObj = this.states[stateName];\r\n }\r\n if (stateObj) {\r\n stateObjects.push(stateObj);\r\n }\r\n }\r\n var useHoverLayer = !!(stateObjects[len - 1] && stateObjects[len - 1].hoverLayer);\r\n if (useHoverLayer) {\r\n this._toggleHoverLayerFlag(true);\r\n }\r\n var mergedState = this._mergeStates(stateObjects);\r\n var animationCfg = this.stateTransition;\r\n this.saveCurrentToNormalState(mergedState);\r\n this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n if (this._textContent) {\r\n this._textContent.useStates(states);\r\n }\r\n if (this._textGuide) {\r\n this._textGuide.useStates(states);\r\n }\r\n this._updateAnimationTargets();\r\n this.currentStates = states.slice();\r\n this.markRedraw();\r\n if (!useHoverLayer && this.__inHover) {\r\n this._toggleHoverLayerFlag(false);\r\n this.__dirty &= ~Element.REDARAW_BIT;\r\n }\r\n }\r\n };\r\n Element.prototype._updateAnimationTargets = function () {\r\n for (var i = 0; i < this.animators.length; i++) {\r\n var animator = this.animators[i];\r\n if (animator.targetName) {\r\n animator.changeTarget(this[animator.targetName]);\r\n }\r\n }\r\n };\r\n Element.prototype.removeState = function (state) {\r\n var idx = indexOf(this.currentStates, state);\r\n if (idx >= 0) {\r\n var currentStates = this.currentStates.slice();\r\n currentStates.splice(idx, 1);\r\n this.useStates(currentStates);\r\n }\r\n };\r\n Element.prototype.replaceState = function (oldState, newState, forceAdd) {\r\n var currentStates = this.currentStates.slice();\r\n var idx = indexOf(currentStates, oldState);\r\n var newStateExists = indexOf(currentStates, newState) >= 0;\r\n if (idx >= 0) {\r\n if (!newStateExists) {\r\n currentStates[idx] = newState;\r\n }\r\n else {\r\n currentStates.splice(idx, 1);\r\n }\r\n }\r\n else if (forceAdd && !newStateExists) {\r\n currentStates.push(newState);\r\n }\r\n this.useStates(currentStates);\r\n };\r\n Element.prototype.toggleState = function (state, enable) {\r\n if (enable) {\r\n this.useState(state, true);\r\n }\r\n else {\r\n this.removeState(state);\r\n }\r\n };\r\n Element.prototype._mergeStates = function (states) {\r\n var mergedState = {};\r\n var mergedTextConfig;\r\n for (var i = 0; i < states.length; i++) {\r\n var state = states[i];\r\n extend(mergedState, state);\r\n if (state.textConfig) {\r\n mergedTextConfig = mergedTextConfig || {};\r\n extend(mergedTextConfig, state.textConfig);\r\n }\r\n }\r\n if (mergedTextConfig) {\r\n mergedState.textConfig = mergedTextConfig;\r\n }\r\n return mergedState;\r\n };\r\n Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n var needsRestoreToNormal = !(state && keepCurrentStates);\r\n if (state && state.textConfig) {\r\n this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\r\n extend(this.textConfig, state.textConfig);\r\n }\r\n else if (needsRestoreToNormal) {\r\n if (normalState.textConfig) {\r\n this.textConfig = normalState.textConfig;\r\n }\r\n }\r\n var transitionTarget = {};\r\n var hasTransition = false;\r\n for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\r\n var key = PRIMARY_STATES_KEYS[i];\r\n var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\r\n if (state && state[key] != null) {\r\n if (propNeedsTransition) {\r\n hasTransition = true;\r\n transitionTarget[key] = state[key];\r\n }\r\n else {\r\n this[key] = state[key];\r\n }\r\n }\r\n else if (needsRestoreToNormal) {\r\n if (normalState[key] != null) {\r\n if (propNeedsTransition) {\r\n hasTransition = true;\r\n transitionTarget[key] = normalState[key];\r\n }\r\n else {\r\n this[key] = normalState[key];\r\n }\r\n }\r\n }\r\n }\r\n if (!transition) {\r\n for (var i = 0; i < this.animators.length; i++) {\r\n var animator = this.animators[i];\r\n var targetName = animator.targetName;\r\n animator.__changeFinalValue(targetName\r\n ? (state || normalState)[targetName]\r\n : (state || normalState));\r\n }\r\n }\r\n if (hasTransition) {\r\n this._transitionState(stateName, transitionTarget, animationCfg);\r\n }\r\n };\r\n Element.prototype._attachComponent = function (componentEl) {\r\n if (componentEl.__zr && !componentEl.__hostTarget) {\r\n throw new Error('Text element has been added to zrender.');\r\n }\r\n if (componentEl === this) {\r\n throw new Error('Recursive component attachment.');\r\n }\r\n var zr = this.__zr;\r\n if (zr) {\r\n componentEl.addSelfToZr(zr);\r\n }\r\n componentEl.__zr = zr;\r\n componentEl.__hostTarget = this;\r\n };\r\n Element.prototype._detachComponent = function (componentEl) {\r\n if (componentEl.__zr) {\r\n componentEl.removeSelfFromZr(componentEl.__zr);\r\n }\r\n componentEl.__zr = null;\r\n componentEl.__hostTarget = null;\r\n };\r\n Element.prototype.getClipPath = function () {\r\n return this._clipPath;\r\n };\r\n Element.prototype.setClipPath = function (clipPath) {\r\n if (this._clipPath && this._clipPath !== clipPath) {\r\n this.removeClipPath();\r\n }\r\n this._attachComponent(clipPath);\r\n this._clipPath = clipPath;\r\n this.markRedraw();\r\n };\r\n Element.prototype.removeClipPath = function () {\r\n var clipPath = this._clipPath;\r\n if (clipPath) {\r\n this._detachComponent(clipPath);\r\n this._clipPath = null;\r\n this.markRedraw();\r\n }\r\n };\r\n Element.prototype.getTextContent = function () {\r\n return this._textContent;\r\n };\r\n Element.prototype.setTextContent = function (textEl) {\r\n var previousTextContent = this._textContent;\r\n if (previousTextContent === textEl) {\r\n return;\r\n }\r\n if (previousTextContent && previousTextContent !== textEl) {\r\n this.removeTextContent();\r\n }\r\n if (textEl.__zr && !textEl.__hostTarget) {\r\n throw new Error('Text element has been added to zrender.');\r\n }\r\n textEl.attachedTransform = new Transformable();\r\n this._attachComponent(textEl);\r\n this._textContent = textEl;\r\n this.markRedraw();\r\n };\r\n Element.prototype.setTextConfig = function (cfg) {\r\n if (!this.textConfig) {\r\n this.textConfig = {};\r\n }\r\n extend(this.textConfig, cfg);\r\n this.markRedraw();\r\n };\r\n Element.prototype.removeTextContent = function () {\r\n var textEl = this._textContent;\r\n if (textEl) {\r\n textEl.attachedTransform = null;\r\n this._detachComponent(textEl);\r\n this._textContent = null;\r\n this._innerTextDefaultStyle = null;\r\n this.markRedraw();\r\n }\r\n };\r\n Element.prototype.getTextGuideLine = function () {\r\n return this._textGuide;\r\n };\r\n Element.prototype.setTextGuideLine = function (guideLine) {\r\n if (this._textGuide && this._textGuide !== guideLine) {\r\n this.removeTextGuideLine();\r\n }\r\n this._attachComponent(guideLine);\r\n this._textGuide = guideLine;\r\n this.markRedraw();\r\n };\r\n Element.prototype.removeTextGuideLine = function () {\r\n var textGuide = this._textGuide;\r\n if (textGuide) {\r\n this._detachComponent(textGuide);\r\n this._textGuide = null;\r\n this.markRedraw();\r\n }\r\n };\r\n Element.prototype.markRedraw = function () {\r\n this.__dirty |= Element.REDARAW_BIT;\r\n var zr = this.__zr;\r\n if (zr) {\r\n if (this.__inHover) {\r\n zr.refreshHover();\r\n }\r\n else {\r\n zr.refresh();\r\n }\r\n }\r\n if (this.__hostTarget) {\r\n this.__hostTarget.markRedraw();\r\n }\r\n };\r\n Element.prototype.dirty = function () {\r\n this.markRedraw();\r\n };\r\n Element.prototype._toggleHoverLayerFlag = function (inHover) {\r\n this.__inHover = inHover;\r\n var textContent = this._textContent;\r\n var textGuide = this._textGuide;\r\n if (textContent) {\r\n textContent.__inHover = inHover;\r\n }\r\n if (textGuide) {\r\n textGuide.__inHover = inHover;\r\n }\r\n };\r\n Element.prototype.addSelfToZr = function (zr) {\r\n this.__zr = zr;\r\n var animators = this.animators;\r\n if (animators) {\r\n for (var i = 0; i < animators.length; i++) {\r\n zr.animation.addAnimator(animators[i]);\r\n }\r\n }\r\n if (this._clipPath) {\r\n this._clipPath.addSelfToZr(zr);\r\n }\r\n if (this._textContent) {\r\n this._textContent.addSelfToZr(zr);\r\n }\r\n if (this._textGuide) {\r\n this._textGuide.addSelfToZr(zr);\r\n }\r\n };\r\n Element.prototype.removeSelfFromZr = function (zr) {\r\n this.__zr = null;\r\n var animators = this.animators;\r\n if (animators) {\r\n for (var i = 0; i < animators.length; i++) {\r\n zr.animation.removeAnimator(animators[i]);\r\n }\r\n }\r\n if (this._clipPath) {\r\n this._clipPath.removeSelfFromZr(zr);\r\n }\r\n if (this._textContent) {\r\n this._textContent.removeSelfFromZr(zr);\r\n }\r\n if (this._textGuide) {\r\n this._textGuide.removeSelfFromZr(zr);\r\n }\r\n };\r\n Element.prototype.animate = function (key, loop) {\r\n var target = key ? this[key] : this;\r\n if (!target) {\r\n logError('Property \"'\r\n + key\r\n + '\" is not existed in element '\r\n + this.id);\r\n return;\r\n }\r\n var animator = new Animator(target, loop);\r\n this.addAnimator(animator, key);\r\n return animator;\r\n };\r\n Element.prototype.addAnimator = function (animator, key) {\r\n var zr = this.__zr;\r\n var el = this;\r\n animator.during(function () {\r\n el.updateDuringAnimation(key);\r\n }).done(function () {\r\n var animators = el.animators;\r\n var idx = indexOf(animators, animator);\r\n if (idx >= 0) {\r\n animators.splice(idx, 1);\r\n }\r\n });\r\n this.animators.push(animator);\r\n if (zr) {\r\n zr.animation.addAnimator(animator);\r\n }\r\n zr && zr.wakeUp();\r\n };\r\n Element.prototype.updateDuringAnimation = function (key) {\r\n this.markRedraw();\r\n };\r\n Element.prototype.stopAnimation = function (scope, forwardToLast) {\r\n var animators = this.animators;\r\n var len = animators.length;\r\n var leftAnimators = [];\r\n for (var i = 0; i < len; i++) {\r\n var animator = animators[i];\r\n if (!scope || scope === animator.scope) {\r\n animator.stop(forwardToLast);\r\n }\r\n else {\r\n leftAnimators.push(animator);\r\n }\r\n }\r\n this.animators = leftAnimators;\r\n return this;\r\n };\r\n Element.prototype.animateTo = function (target, cfg, animationProps) {\r\n animateTo(this, target, cfg, animationProps);\r\n };\r\n Element.prototype.animateFrom = function (target, cfg, animationProps) {\r\n animateTo(this, target, cfg, animationProps, true);\r\n };\r\n Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\r\n var animators = animateTo(this, target, cfg, animationProps);\r\n for (var i = 0; i < animators.length; i++) {\r\n animators[i].__fromStateTransition = stateName;\r\n }\r\n };\r\n Element.prototype.getBoundingRect = function () {\r\n return null;\r\n };\r\n Element.prototype.getPaintRect = function () {\r\n return null;\r\n };\r\n Element.REDARAW_BIT = 1;\r\n Element.initDefaultProps = (function () {\r\n var elProto = Element.prototype;\r\n elProto.type = 'element';\r\n elProto.name = '';\r\n elProto.ignore = false;\r\n elProto.silent = false;\r\n elProto.isGroup = false;\r\n elProto.draggable = false;\r\n elProto.dragging = false;\r\n elProto.ignoreClip = false;\r\n elProto.__inHover = false;\r\n elProto.__dirty = Element.REDARAW_BIT;\r\n var logs = {};\r\n function logDeprecatedError(key, xKey, yKey) {\r\n if (!logs[key + xKey + yKey]) {\r\n console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\r\n logs[key + xKey + yKey] = true;\r\n }\r\n }\r\n function createLegacyProperty(key, privateKey, xKey, yKey) {\r\n Object.defineProperty(elProto, key, {\r\n get: function () {\r\n logDeprecatedError(key, xKey, yKey);\r\n if (!this[privateKey]) {\r\n var pos = this[privateKey] = [];\r\n enhanceArray(this, pos);\r\n }\r\n return this[privateKey];\r\n },\r\n set: function (pos) {\r\n logDeprecatedError(key, xKey, yKey);\r\n this[xKey] = pos[0];\r\n this[yKey] = pos[1];\r\n this[privateKey] = pos;\r\n enhanceArray(this, pos);\r\n }\r\n });\r\n function enhanceArray(self, pos) {\r\n Object.defineProperty(pos, 0, {\r\n get: function () {\r\n return self[xKey];\r\n },\r\n set: function (val) {\r\n self[xKey] = val;\r\n }\r\n });\r\n Object.defineProperty(pos, 1, {\r\n get: function () {\r\n return self[yKey];\r\n },\r\n set: function (val) {\r\n self[yKey] = val;\r\n }\r\n });\r\n }\r\n }\r\n if (Object.defineProperty && (!env.browser.ie || env.browser.version > 8)) {\r\n createLegacyProperty('position', '_legacyPos', 'x', 'y');\r\n createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\r\n createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\r\n }\r\n })();\r\n return Element;\r\n}());\r\nmixin(Element, Eventful);\r\nmixin(Element, Transformable);\r\nfunction animateTo(animatable, target, cfg, animationProps, reverse) {\r\n cfg = cfg || {};\r\n var animators = [];\r\n animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\r\n var finishCount = animators.length;\r\n var doneHappened = false;\r\n var cfgDone = cfg.done;\r\n var cfgAborted = cfg.aborted;\r\n var doneCb = function () {\r\n doneHappened = true;\r\n finishCount--;\r\n if (finishCount <= 0) {\r\n doneHappened\r\n ? (cfgDone && cfgDone())\r\n : (cfgAborted && cfgAborted());\r\n }\r\n };\r\n var abortedCb = function () {\r\n finishCount--;\r\n if (finishCount <= 0) {\r\n doneHappened\r\n ? (cfgDone && cfgDone())\r\n : (cfgAborted && cfgAborted());\r\n }\r\n };\r\n if (!finishCount) {\r\n cfgDone && cfgDone();\r\n }\r\n if (animators.length > 0 && cfg.during) {\r\n animators[0].during(function (target, percent) {\r\n cfg.during(percent);\r\n });\r\n }\r\n for (var i = 0; i < animators.length; i++) {\r\n var animator = animators[i];\r\n if (doneCb) {\r\n animator.done(doneCb);\r\n }\r\n if (abortedCb) {\r\n animator.aborted(abortedCb);\r\n }\r\n animator.start(cfg.easing, cfg.force);\r\n }\r\n return animators;\r\n}\r\nfunction copyArrShallow(source, target, len) {\r\n for (var i = 0; i < len; i++) {\r\n source[i] = target[i];\r\n }\r\n}\r\nfunction is2DArray(value) {\r\n return isArrayLike(value[0]);\r\n}\r\nfunction copyValue(target, source, key) {\r\n if (isArrayLike(source[key])) {\r\n if (!isArrayLike(target[key])) {\r\n target[key] = [];\r\n }\r\n if (isTypedArray(source[key])) {\r\n var len = source[key].length;\r\n if (target[key].length !== len) {\r\n target[key] = new (source[key].constructor)(len);\r\n copyArrShallow(target[key], source[key], len);\r\n }\r\n }\r\n else {\r\n var sourceArr = source[key];\r\n var targetArr = target[key];\r\n var len0 = sourceArr.length;\r\n if (is2DArray(sourceArr)) {\r\n var len1 = sourceArr[0].length;\r\n for (var i = 0; i < len0; i++) {\r\n if (!targetArr[i]) {\r\n targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\r\n }\r\n else {\r\n copyArrShallow(targetArr[i], sourceArr[i], len1);\r\n }\r\n }\r\n }\r\n else {\r\n copyArrShallow(targetArr, sourceArr, len0);\r\n }\r\n targetArr.length = sourceArr.length;\r\n }\r\n }\r\n else {\r\n target[key] = source[key];\r\n }\r\n}\r\nfunction animateToShallow(animatable, topKey, source, target, cfg, animationProps, animators, reverse) {\r\n var animatableKeys = [];\r\n var changedKeys = [];\r\n var targetKeys = keys(target);\r\n var duration = cfg.duration;\r\n var delay = cfg.delay;\r\n var additive = cfg.additive;\r\n var setToFinal = cfg.setToFinal;\r\n var animateAll = !isObject(animationProps);\r\n for (var k = 0; k < targetKeys.length; k++) {\r\n var innerKey = targetKeys[k];\r\n if (source[innerKey] != null\r\n && target[innerKey] != null\r\n && (animateAll || animationProps[innerKey])) {\r\n if (isObject(target[innerKey]) && !isArrayLike(target[innerKey])) {\r\n if (topKey) {\r\n if (!reverse) {\r\n source[innerKey] = target[innerKey];\r\n animatable.updateDuringAnimation(topKey);\r\n }\r\n continue;\r\n }\r\n animateToShallow(animatable, innerKey, source[innerKey], target[innerKey], cfg, animationProps && animationProps[innerKey], animators, reverse);\r\n }\r\n else {\r\n animatableKeys.push(innerKey);\r\n changedKeys.push(innerKey);\r\n }\r\n }\r\n else if (!reverse) {\r\n source[innerKey] = target[innerKey];\r\n animatable.updateDuringAnimation(topKey);\r\n changedKeys.push(innerKey);\r\n }\r\n }\r\n var keyLen = animatableKeys.length;\r\n if (keyLen > 0\r\n || (cfg.force && !animators.length)) {\r\n var existsAnimators = animatable.animators;\r\n var existsAnimatorsOnSameTarget = [];\r\n for (var i = 0; i < existsAnimators.length; i++) {\r\n if (existsAnimators[i].targetName === topKey) {\r\n existsAnimatorsOnSameTarget.push(existsAnimators[i]);\r\n }\r\n }\r\n if (!additive && existsAnimatorsOnSameTarget.length) {\r\n for (var i = 0; i < existsAnimatorsOnSameTarget.length; i++) {\r\n var allAborted = existsAnimatorsOnSameTarget[i].stopTracks(changedKeys);\r\n if (allAborted) {\r\n var idx = indexOf(existsAnimators, existsAnimatorsOnSameTarget[i]);\r\n existsAnimators.splice(idx, 1);\r\n }\r\n }\r\n }\r\n var revertedSource = void 0;\r\n var reversedTarget = void 0;\r\n var sourceClone = void 0;\r\n if (reverse) {\r\n reversedTarget = {};\r\n if (setToFinal) {\r\n revertedSource = {};\r\n }\r\n for (var i = 0; i < keyLen; i++) {\r\n var innerKey = animatableKeys[i];\r\n reversedTarget[innerKey] = source[innerKey];\r\n if (setToFinal) {\r\n revertedSource[innerKey] = target[innerKey];\r\n }\r\n else {\r\n source[innerKey] = target[innerKey];\r\n }\r\n }\r\n }\r\n else if (setToFinal) {\r\n sourceClone = {};\r\n for (var i = 0; i < keyLen; i++) {\r\n var innerKey = animatableKeys[i];\r\n sourceClone[innerKey] = cloneValue(source[innerKey]);\r\n copyValue(source, target, innerKey);\r\n }\r\n }\r\n var animator = new Animator(source, false, additive ? existsAnimatorsOnSameTarget : null);\r\n animator.targetName = topKey;\r\n if (cfg.scope) {\r\n animator.scope = cfg.scope;\r\n }\r\n if (setToFinal && revertedSource) {\r\n animator.whenWithKeys(0, revertedSource, animatableKeys);\r\n }\r\n if (sourceClone) {\r\n animator.whenWithKeys(0, sourceClone, animatableKeys);\r\n }\r\n animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animatableKeys).delay(delay || 0);\r\n animatable.addAnimator(animator, topKey);\r\n animators.push(animator);\r\n }\r\n}\n\nvar DEFAULT_MIN_MERGE = 32;\r\nvar DEFAULT_MIN_GALLOPING = 7;\r\nfunction minRunLength(n) {\r\n var r = 0;\r\n while (n >= DEFAULT_MIN_MERGE) {\r\n r |= n & 1;\r\n n >>= 1;\r\n }\r\n return n + r;\r\n}\r\nfunction makeAscendingRun(array, lo, hi, compare) {\r\n var runHi = lo + 1;\r\n if (runHi === hi) {\r\n return 1;\r\n }\r\n if (compare(array[runHi++], array[lo]) < 0) {\r\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\r\n runHi++;\r\n }\r\n reverseRun(array, lo, runHi);\r\n }\r\n else {\r\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\r\n runHi++;\r\n }\r\n }\r\n return runHi - lo;\r\n}\r\nfunction reverseRun(array, lo, hi) {\r\n hi--;\r\n while (lo < hi) {\r\n var t = array[lo];\r\n array[lo++] = array[hi];\r\n array[hi--] = t;\r\n }\r\n}\r\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\r\n if (start === lo) {\r\n start++;\r\n }\r\n for (; start < hi; start++) {\r\n var pivot = array[start];\r\n var left = lo;\r\n var right = start;\r\n var mid;\r\n while (left < right) {\r\n mid = left + right >>> 1;\r\n if (compare(pivot, array[mid]) < 0) {\r\n right = mid;\r\n }\r\n else {\r\n left = mid + 1;\r\n }\r\n }\r\n var n = start - left;\r\n switch (n) {\r\n case 3:\r\n array[left + 3] = array[left + 2];\r\n case 2:\r\n array[left + 2] = array[left + 1];\r\n case 1:\r\n array[left + 1] = array[left];\r\n break;\r\n default:\r\n while (n > 0) {\r\n array[left + n] = array[left + n - 1];\r\n n--;\r\n }\r\n }\r\n array[left] = pivot;\r\n }\r\n}\r\nfunction gallopLeft(value, array, start, length, hint, compare) {\r\n var lastOffset = 0;\r\n var maxOffset = 0;\r\n var offset = 1;\r\n if (compare(value, array[start + hint]) > 0) {\r\n maxOffset = length - hint;\r\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\r\n lastOffset = offset;\r\n offset = (offset << 1) + 1;\r\n if (offset <= 0) {\r\n offset = maxOffset;\r\n }\r\n }\r\n if (offset > maxOffset) {\r\n offset = maxOffset;\r\n }\r\n lastOffset += hint;\r\n offset += hint;\r\n }\r\n else {\r\n maxOffset = hint + 1;\r\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\r\n lastOffset = offset;\r\n offset = (offset << 1) + 1;\r\n if (offset <= 0) {\r\n offset = maxOffset;\r\n }\r\n }\r\n if (offset > maxOffset) {\r\n offset = maxOffset;\r\n }\r\n var tmp = lastOffset;\r\n lastOffset = hint - offset;\r\n offset = hint - tmp;\r\n }\r\n lastOffset++;\r\n while (lastOffset < offset) {\r\n var m = lastOffset + (offset - lastOffset >>> 1);\r\n if (compare(value, array[start + m]) > 0) {\r\n lastOffset = m + 1;\r\n }\r\n else {\r\n offset = m;\r\n }\r\n }\r\n return offset;\r\n}\r\nfunction gallopRight(value, array, start, length, hint, compare) {\r\n var lastOffset = 0;\r\n var maxOffset = 0;\r\n var offset = 1;\r\n if (compare(value, array[start + hint]) < 0) {\r\n maxOffset = hint + 1;\r\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\r\n lastOffset = offset;\r\n offset = (offset << 1) + 1;\r\n if (offset <= 0) {\r\n offset = maxOffset;\r\n }\r\n }\r\n if (offset > maxOffset) {\r\n offset = maxOffset;\r\n }\r\n var tmp = lastOffset;\r\n lastOffset = hint - offset;\r\n offset = hint - tmp;\r\n }\r\n else {\r\n maxOffset = length - hint;\r\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\r\n lastOffset = offset;\r\n offset = (offset << 1) + 1;\r\n if (offset <= 0) {\r\n offset = maxOffset;\r\n }\r\n }\r\n if (offset > maxOffset) {\r\n offset = maxOffset;\r\n }\r\n lastOffset += hint;\r\n offset += hint;\r\n }\r\n lastOffset++;\r\n while (lastOffset < offset) {\r\n var m = lastOffset + (offset - lastOffset >>> 1);\r\n if (compare(value, array[start + m]) < 0) {\r\n offset = m;\r\n }\r\n else {\r\n lastOffset = m + 1;\r\n }\r\n }\r\n return offset;\r\n}\r\nfunction TimSort(array, compare) {\r\n var minGallop = DEFAULT_MIN_GALLOPING;\r\n var length = 0;\r\n var runStart;\r\n var runLength;\r\n var stackSize = 0;\r\n length = array.length;\r\n var tmp = [];\r\n runStart = [];\r\n runLength = [];\r\n function pushRun(_runStart, _runLength) {\r\n runStart[stackSize] = _runStart;\r\n runLength[stackSize] = _runLength;\r\n stackSize += 1;\r\n }\r\n function mergeRuns() {\r\n while (stackSize > 1) {\r\n var n = stackSize - 2;\r\n if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\r\n || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\r\n if (runLength[n - 1] < runLength[n + 1]) {\r\n n--;\r\n }\r\n }\r\n else if (runLength[n] > runLength[n + 1]) {\r\n break;\r\n }\r\n mergeAt(n);\r\n }\r\n }\r\n function forceMergeRuns() {\r\n while (stackSize > 1) {\r\n var n = stackSize - 2;\r\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\r\n n--;\r\n }\r\n mergeAt(n);\r\n }\r\n }\r\n function mergeAt(i) {\r\n var start1 = runStart[i];\r\n var length1 = runLength[i];\r\n var start2 = runStart[i + 1];\r\n var length2 = runLength[i + 1];\r\n runLength[i] = length1 + length2;\r\n if (i === stackSize - 3) {\r\n runStart[i + 1] = runStart[i + 2];\r\n runLength[i + 1] = runLength[i + 2];\r\n }\r\n stackSize--;\r\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\r\n start1 += k;\r\n length1 -= k;\r\n if (length1 === 0) {\r\n return;\r\n }\r\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\r\n if (length2 === 0) {\r\n return;\r\n }\r\n if (length1 <= length2) {\r\n mergeLow(start1, length1, start2, length2);\r\n }\r\n else {\r\n mergeHigh(start1, length1, start2, length2);\r\n }\r\n }\r\n function mergeLow(start1, length1, start2, length2) {\r\n var i = 0;\r\n for (i = 0; i < length1; i++) {\r\n tmp[i] = array[start1 + i];\r\n }\r\n var cursor1 = 0;\r\n var cursor2 = start2;\r\n var dest = start1;\r\n array[dest++] = array[cursor2++];\r\n if (--length2 === 0) {\r\n for (i = 0; i < length1; i++) {\r\n array[dest + i] = tmp[cursor1 + i];\r\n }\r\n return;\r\n }\r\n if (length1 === 1) {\r\n for (i = 0; i < length2; i++) {\r\n array[dest + i] = array[cursor2 + i];\r\n }\r\n array[dest + length2] = tmp[cursor1];\r\n return;\r\n }\r\n var _minGallop = minGallop;\r\n var count1;\r\n var count2;\r\n var exit;\r\n while (1) {\r\n count1 = 0;\r\n count2 = 0;\r\n exit = false;\r\n do {\r\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\r\n array[dest++] = array[cursor2++];\r\n count2++;\r\n count1 = 0;\r\n if (--length2 === 0) {\r\n exit = true;\r\n break;\r\n }\r\n }\r\n else {\r\n array[dest++] = tmp[cursor1++];\r\n count1++;\r\n count2 = 0;\r\n if (--length1 === 1) {\r\n exit = true;\r\n break;\r\n }\r\n }\r\n } while ((count1 | count2) < _minGallop);\r\n if (exit) {\r\n break;\r\n }\r\n do {\r\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\r\n if (count1 !== 0) {\r\n for (i = 0; i < count1; i++) {\r\n array[dest + i] = tmp[cursor1 + i];\r\n }\r\n dest += count1;\r\n cursor1 += count1;\r\n length1 -= count1;\r\n if (length1 <= 1) {\r\n exit = true;\r\n break;\r\n }\r\n }\r\n array[dest++] = array[cursor2++];\r\n if (--length2 === 0) {\r\n exit = true;\r\n break;\r\n }\r\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\r\n if (count2 !== 0) {\r\n for (i = 0; i < count2; i++) {\r\n array[dest + i] = array[cursor2 + i];\r\n }\r\n dest += count2;\r\n cursor2 += count2;\r\n length2 -= count2;\r\n if (length2 === 0) {\r\n exit = true;\r\n break;\r\n }\r\n }\r\n array[dest++] = tmp[cursor1++];\r\n if (--length1 === 1) {\r\n exit = true;\r\n break;\r\n }\r\n _minGallop--;\r\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n if (exit) {\r\n break;\r\n }\r\n if (_minGallop < 0) {\r\n _minGallop = 0;\r\n }\r\n _minGallop += 2;\r\n }\r\n minGallop = _minGallop;\r\n minGallop < 1 && (minGallop = 1);\r\n if (length1 === 1) {\r\n for (i = 0; i < length2; i++) {\r\n array[dest + i] = array[cursor2 + i];\r\n }\r\n array[dest + length2] = tmp[cursor1];\r\n }\r\n else if (length1 === 0) {\r\n throw new Error();\r\n }\r\n else {\r\n for (i = 0; i < length1; i++) {\r\n array[dest + i] = tmp[cursor1 + i];\r\n }\r\n }\r\n }\r\n function mergeHigh(start1, length1, start2, length2) {\r\n var i = 0;\r\n for (i = 0; i < length2; i++) {\r\n tmp[i] = array[start2 + i];\r\n }\r\n var cursor1 = start1 + length1 - 1;\r\n var cursor2 = length2 - 1;\r\n var dest = start2 + length2 - 1;\r\n var customCursor = 0;\r\n var customDest = 0;\r\n array[dest--] = array[cursor1--];\r\n if (--length1 === 0) {\r\n customCursor = dest - (length2 - 1);\r\n for (i = 0; i < length2; i++) {\r\n array[customCursor + i] = tmp[i];\r\n }\r\n return;\r\n }\r\n if (length2 === 1) {\r\n dest -= length1;\r\n cursor1 -= length1;\r\n customDest = dest + 1;\r\n customCursor = cursor1 + 1;\r\n for (i = length1 - 1; i >= 0; i--) {\r\n array[customDest + i] = array[customCursor + i];\r\n }\r\n array[dest] = tmp[cursor2];\r\n return;\r\n }\r\n var _minGallop = minGallop;\r\n while (true) {\r\n var count1 = 0;\r\n var count2 = 0;\r\n var exit = false;\r\n do {\r\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\r\n array[dest--] = array[cursor1--];\r\n count1++;\r\n count2 = 0;\r\n if (--length1 === 0) {\r\n exit = true;\r\n break;\r\n }\r\n }\r\n else {\r\n array[dest--] = tmp[cursor2--];\r\n count2++;\r\n count1 = 0;\r\n if (--length2 === 1) {\r\n exit = true;\r\n break;\r\n }\r\n }\r\n } while ((count1 | count2) < _minGallop);\r\n if (exit) {\r\n break;\r\n }\r\n do {\r\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\r\n if (count1 !== 0) {\r\n dest -= count1;\r\n cursor1 -= count1;\r\n length1 -= count1;\r\n customDest = dest + 1;\r\n customCursor = cursor1 + 1;\r\n for (i = count1 - 1; i >= 0; i--) {\r\n array[customDest + i] = array[customCursor + i];\r\n }\r\n if (length1 === 0) {\r\n exit = true;\r\n break;\r\n }\r\n }\r\n array[dest--] = tmp[cursor2--];\r\n if (--length2 === 1) {\r\n exit = true;\r\n break;\r\n }\r\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\r\n if (count2 !== 0) {\r\n dest -= count2;\r\n cursor2 -= count2;\r\n length2 -= count2;\r\n customDest = dest + 1;\r\n customCursor = cursor2 + 1;\r\n for (i = 0; i < count2; i++) {\r\n array[customDest + i] = tmp[customCursor + i];\r\n }\r\n if (length2 <= 1) {\r\n exit = true;\r\n break;\r\n }\r\n }\r\n array[dest--] = array[cursor1--];\r\n if (--length1 === 0) {\r\n exit = true;\r\n break;\r\n }\r\n _minGallop--;\r\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n if (exit) {\r\n break;\r\n }\r\n if (_minGallop < 0) {\r\n _minGallop = 0;\r\n }\r\n _minGallop += 2;\r\n }\r\n minGallop = _minGallop;\r\n if (minGallop < 1) {\r\n minGallop = 1;\r\n }\r\n if (length2 === 1) {\r\n dest -= length1;\r\n cursor1 -= length1;\r\n customDest = dest + 1;\r\n customCursor = cursor1 + 1;\r\n for (i = length1 - 1; i >= 0; i--) {\r\n array[customDest + i] = array[customCursor + i];\r\n }\r\n array[dest] = tmp[cursor2];\r\n }\r\n else if (length2 === 0) {\r\n throw new Error();\r\n }\r\n else {\r\n customCursor = dest - (length2 - 1);\r\n for (i = 0; i < length2; i++) {\r\n array[customCursor + i] = tmp[i];\r\n }\r\n }\r\n }\r\n return {\r\n mergeRuns: mergeRuns,\r\n forceMergeRuns: forceMergeRuns,\r\n pushRun: pushRun\r\n };\r\n}\r\nfunction sort(array, compare, lo, hi) {\r\n if (!lo) {\r\n lo = 0;\r\n }\r\n if (!hi) {\r\n hi = array.length;\r\n }\r\n var remaining = hi - lo;\r\n if (remaining < 2) {\r\n return;\r\n }\r\n var runLength = 0;\r\n if (remaining < DEFAULT_MIN_MERGE) {\r\n runLength = makeAscendingRun(array, lo, hi, compare);\r\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\r\n return;\r\n }\r\n var ts = TimSort(array, compare);\r\n var minRun = minRunLength(remaining);\r\n do {\r\n runLength = makeAscendingRun(array, lo, hi, compare);\r\n if (runLength < minRun) {\r\n var force = remaining;\r\n if (force > minRun) {\r\n force = minRun;\r\n }\r\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\r\n runLength = force;\r\n }\r\n ts.pushRun(lo, runLength);\r\n ts.mergeRuns();\r\n remaining -= runLength;\r\n lo += runLength;\r\n } while (remaining !== 0);\r\n ts.forceMergeRuns();\r\n}\n\nvar invalidZErrorLogged = false;\r\nfunction logInvalidZError() {\r\n if (invalidZErrorLogged) {\r\n return;\r\n }\r\n invalidZErrorLogged = true;\r\n console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\r\n}\r\nfunction shapeCompareFunc(a, b) {\r\n if (a.zlevel === b.zlevel) {\r\n if (a.z === b.z) {\r\n return a.z2 - b.z2;\r\n }\r\n return a.z - b.z;\r\n }\r\n return a.zlevel - b.zlevel;\r\n}\r\nvar Storage = (function () {\r\n function Storage() {\r\n this._roots = [];\r\n this._displayList = [];\r\n this._displayListLen = 0;\r\n this.displayableSortFunc = shapeCompareFunc;\r\n }\r\n Storage.prototype.traverse = function (cb, context) {\r\n for (var i = 0; i < this._roots.length; i++) {\r\n this._roots[i].traverse(cb, context);\r\n }\r\n };\r\n Storage.prototype.getDisplayList = function (update, includeIgnore) {\r\n includeIgnore = includeIgnore || false;\r\n var displayList = this._displayList;\r\n if (update || !displayList.length) {\r\n this.updateDisplayList(includeIgnore);\r\n }\r\n return displayList;\r\n };\r\n Storage.prototype.updateDisplayList = function (includeIgnore) {\r\n this._displayListLen = 0;\r\n var roots = this._roots;\r\n var displayList = this._displayList;\r\n for (var i = 0, len = roots.length; i < len; i++) {\r\n this._updateAndAddDisplayable(roots[i], null, includeIgnore);\r\n }\r\n displayList.length = this._displayListLen;\r\n env.canvasSupported && sort(displayList, shapeCompareFunc);\r\n };\r\n Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) {\r\n if (el.ignore && !includeIgnore) {\r\n return;\r\n }\r\n el.beforeUpdate();\r\n el.update();\r\n el.afterUpdate();\r\n var userSetClipPath = el.getClipPath();\r\n if (el.ignoreClip) {\r\n clipPaths = null;\r\n }\r\n else if (userSetClipPath) {\r\n if (clipPaths) {\r\n clipPaths = clipPaths.slice();\r\n }\r\n else {\r\n clipPaths = [];\r\n }\r\n var currentClipPath = userSetClipPath;\r\n var parentClipPath = el;\r\n while (currentClipPath) {\r\n currentClipPath.parent = parentClipPath;\r\n currentClipPath.updateTransform();\r\n clipPaths.push(currentClipPath);\r\n parentClipPath = currentClipPath;\r\n currentClipPath = currentClipPath.getClipPath();\r\n }\r\n }\r\n if (el.childrenRef) {\r\n var children = el.childrenRef();\r\n for (var i = 0; i < children.length; i++) {\r\n var child = children[i];\r\n if (el.__dirty) {\r\n child.__dirty |= Element.REDARAW_BIT;\r\n }\r\n this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\r\n }\r\n el.__dirty = 0;\r\n }\r\n else {\r\n var disp = el;\r\n if (clipPaths && clipPaths.length) {\r\n disp.__clipPaths = clipPaths;\r\n }\r\n else if (disp.__clipPaths && disp.__clipPaths.length > 0) {\r\n disp.__clipPaths = [];\r\n }\r\n if (isNaN(disp.z)) {\r\n logInvalidZError();\r\n disp.z = 0;\r\n }\r\n if (isNaN(disp.z2)) {\r\n logInvalidZError();\r\n disp.z2 = 0;\r\n }\r\n if (isNaN(disp.zlevel)) {\r\n logInvalidZError();\r\n disp.zlevel = 0;\r\n }\r\n this._displayList[this._displayListLen++] = disp;\r\n }\r\n var decalEl = el.getDecalElement && el.getDecalElement();\r\n if (decalEl) {\r\n this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);\r\n }\r\n var textGuide = el.getTextGuideLine();\r\n if (textGuide) {\r\n this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);\r\n }\r\n var textEl = el.getTextContent();\r\n if (textEl) {\r\n this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);\r\n }\r\n };\r\n Storage.prototype.addRoot = function (el) {\r\n if (el.__zr && el.__zr.storage === this) {\r\n return;\r\n }\r\n this._roots.push(el);\r\n };\r\n Storage.prototype.delRoot = function (el) {\r\n if (el instanceof Array) {\r\n for (var i = 0, l = el.length; i < l; i++) {\r\n this.delRoot(el[i]);\r\n }\r\n return;\r\n }\r\n var idx = indexOf(this._roots, el);\r\n if (idx >= 0) {\r\n this._roots.splice(idx, 1);\r\n }\r\n };\r\n Storage.prototype.delAllRoots = function () {\r\n this._roots = [];\r\n this._displayList = [];\r\n this._displayListLen = 0;\r\n return;\r\n };\r\n Storage.prototype.getRoots = function () {\r\n return this._roots;\r\n };\r\n Storage.prototype.dispose = function () {\r\n this._displayList = null;\r\n this._roots = null;\r\n };\r\n return Storage;\r\n}());\n\nvar requestAnimationFrame;\r\nrequestAnimationFrame = (typeof window !== 'undefined'\r\n && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\r\n || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\r\n || window.mozRequestAnimationFrame\r\n || window.webkitRequestAnimationFrame)) || function (func) {\r\n return setTimeout(func, 16);\r\n};\r\nvar requestAnimationFrame$1 = requestAnimationFrame;\n\nvar Animation = (function (_super) {\r\n __extends(Animation, _super);\r\n function Animation(opts) {\r\n var _this = _super.call(this) || this;\r\n _this._running = false;\r\n _this._time = 0;\r\n _this._pausedTime = 0;\r\n _this._pauseStart = 0;\r\n _this._paused = false;\r\n opts = opts || {};\r\n _this.stage = opts.stage || {};\r\n _this.onframe = opts.onframe || function () { };\r\n return _this;\r\n }\r\n Animation.prototype.addClip = function (clip) {\r\n if (clip.animation) {\r\n this.removeClip(clip);\r\n }\r\n if (!this._clipsHead) {\r\n this._clipsHead = this._clipsTail = clip;\r\n }\r\n else {\r\n this._clipsTail.next = clip;\r\n clip.prev = this._clipsTail;\r\n clip.next = null;\r\n this._clipsTail = clip;\r\n }\r\n clip.animation = this;\r\n };\r\n Animation.prototype.addAnimator = function (animator) {\r\n animator.animation = this;\r\n var clip = animator.getClip();\r\n if (clip) {\r\n this.addClip(clip);\r\n }\r\n };\r\n Animation.prototype.removeClip = function (clip) {\r\n if (!clip.animation) {\r\n return;\r\n }\r\n var prev = clip.prev;\r\n var next = clip.next;\r\n if (prev) {\r\n prev.next = next;\r\n }\r\n else {\r\n this._clipsHead = next;\r\n }\r\n if (next) {\r\n next.prev = prev;\r\n }\r\n else {\r\n this._clipsTail = prev;\r\n }\r\n clip.next = clip.prev = clip.animation = null;\r\n };\r\n Animation.prototype.removeAnimator = function (animator) {\r\n var clip = animator.getClip();\r\n if (clip) {\r\n this.removeClip(clip);\r\n }\r\n animator.animation = null;\r\n };\r\n Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\r\n var time = new Date().getTime() - this._pausedTime;\r\n var delta = time - this._time;\r\n var clip = this._clipsHead;\r\n while (clip) {\r\n var nextClip = clip.next;\r\n var finished = clip.step(time, delta);\r\n if (finished) {\r\n clip.ondestroy && clip.ondestroy();\r\n this.removeClip(clip);\r\n clip = nextClip;\r\n }\r\n else {\r\n clip = nextClip;\r\n }\r\n }\r\n this._time = time;\r\n if (!notTriggerFrameAndStageUpdate) {\r\n this.onframe(delta);\r\n this.trigger('frame', delta);\r\n this.stage.update && this.stage.update();\r\n }\r\n };\r\n Animation.prototype._startLoop = function () {\r\n var self = this;\r\n this._running = true;\r\n function step() {\r\n if (self._running) {\r\n requestAnimationFrame$1(step);\r\n !self._paused && self.update();\r\n }\r\n }\r\n requestAnimationFrame$1(step);\r\n };\r\n Animation.prototype.start = function () {\r\n if (this._running) {\r\n return;\r\n }\r\n this._time = new Date().getTime();\r\n this._pausedTime = 0;\r\n this._startLoop();\r\n };\r\n Animation.prototype.stop = function () {\r\n this._running = false;\r\n };\r\n Animation.prototype.pause = function () {\r\n if (!this._paused) {\r\n this._pauseStart = new Date().getTime();\r\n this._paused = true;\r\n }\r\n };\r\n Animation.prototype.resume = function () {\r\n if (this._paused) {\r\n this._pausedTime += (new Date().getTime()) - this._pauseStart;\r\n this._paused = false;\r\n }\r\n };\r\n Animation.prototype.clear = function () {\r\n var clip = this._clipsHead;\r\n while (clip) {\r\n var nextClip = clip.next;\r\n clip.prev = clip.next = clip.animation = null;\r\n clip = nextClip;\r\n }\r\n this._clipsHead = this._clipsTail = null;\r\n };\r\n Animation.prototype.isFinished = function () {\r\n return this._clipsHead == null;\r\n };\r\n Animation.prototype.animate = function (target, options) {\r\n options = options || {};\r\n this.start();\r\n var animator = new Animator(target, options.loop);\r\n this.addAnimator(animator);\r\n return animator;\r\n };\r\n return Animation;\r\n}(Eventful));\n\nvar TOUCH_CLICK_DELAY = 300;\r\nvar globalEventSupported = env.domSupported;\r\nvar localNativeListenerNames = (function () {\r\n var mouseHandlerNames = [\r\n 'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\r\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n ];\r\n var touchHandlerNames = [\r\n 'touchstart', 'touchend', 'touchmove'\r\n ];\r\n var pointerEventNameMap = {\r\n pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\r\n };\r\n var pointerHandlerNames = map(mouseHandlerNames, function (name) {\r\n var nm = name.replace('mouse', 'pointer');\r\n return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\r\n });\r\n return {\r\n mouse: mouseHandlerNames,\r\n touch: touchHandlerNames,\r\n pointer: pointerHandlerNames\r\n };\r\n})();\r\nvar globalNativeListenerNames = {\r\n mouse: ['mousemove', 'mouseup'],\r\n pointer: ['pointermove', 'pointerup']\r\n};\r\nvar wheelEventSupported = false;\r\nfunction isPointerFromTouch(event) {\r\n var pointerType = event.pointerType;\r\n return pointerType === 'pen' || pointerType === 'touch';\r\n}\r\nfunction setTouchTimer(scope) {\r\n scope.touching = true;\r\n if (scope.touchTimer != null) {\r\n clearTimeout(scope.touchTimer);\r\n scope.touchTimer = null;\r\n }\r\n scope.touchTimer = setTimeout(function () {\r\n scope.touching = false;\r\n scope.touchTimer = null;\r\n }, 700);\r\n}\r\nfunction markTouch(event) {\r\n event && (event.zrByTouch = true);\r\n}\r\nfunction normalizeGlobalEvent(instance, event) {\r\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\r\n}\r\nfunction isLocalEl(instance, el) {\r\n var elTmp = el;\r\n var isLocal = false;\r\n while (elTmp && elTmp.nodeType !== 9\r\n && !(isLocal = elTmp.domBelongToZr\r\n || (elTmp !== el && elTmp === instance.painterRoot))) {\r\n elTmp = elTmp.parentNode;\r\n }\r\n return isLocal;\r\n}\r\nvar FakeGlobalEvent = (function () {\r\n function FakeGlobalEvent(instance, event) {\r\n this.stopPropagation = noop;\r\n this.stopImmediatePropagation = noop;\r\n this.preventDefault = noop;\r\n this.type = event.type;\r\n this.target = this.currentTarget = instance.dom;\r\n this.pointerType = event.pointerType;\r\n this.clientX = event.clientX;\r\n this.clientY = event.clientY;\r\n }\r\n return FakeGlobalEvent;\r\n}());\r\nvar localDOMHandlers = {\r\n mousedown: function (event) {\r\n event = normalizeEvent(this.dom, event);\r\n this.__mayPointerCapture = [event.zrX, event.zrY];\r\n this.trigger('mousedown', event);\r\n },\r\n mousemove: function (event) {\r\n event = normalizeEvent(this.dom, event);\r\n var downPoint = this.__mayPointerCapture;\r\n if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\r\n this.__togglePointerCapture(true);\r\n }\r\n this.trigger('mousemove', event);\r\n },\r\n mouseup: function (event) {\r\n event = normalizeEvent(this.dom, event);\r\n this.__togglePointerCapture(false);\r\n this.trigger('mouseup', event);\r\n },\r\n mouseout: function (event) {\r\n if (event.target !== this.dom) {\r\n return;\r\n }\r\n event = normalizeEvent(this.dom, event);\r\n if (this.__pointerCapturing) {\r\n event.zrEventControl = 'no_globalout';\r\n }\r\n var element = event.toElement || event.relatedTarget;\r\n event.zrIsToLocalDOM = isLocalEl(this, element);\r\n this.trigger('mouseout', event);\r\n },\r\n wheel: function (event) {\r\n wheelEventSupported = true;\r\n event = normalizeEvent(this.dom, event);\r\n this.trigger('mousewheel', event);\r\n },\r\n mousewheel: function (event) {\r\n if (wheelEventSupported) {\r\n return;\r\n }\r\n event = normalizeEvent(this.dom, event);\r\n this.trigger('mousewheel', event);\r\n },\r\n touchstart: function (event) {\r\n event = normalizeEvent(this.dom, event);\r\n markTouch(event);\r\n this.__lastTouchMoment = new Date();\r\n this.handler.processGesture(event, 'start');\r\n localDOMHandlers.mousemove.call(this, event);\r\n localDOMHandlers.mousedown.call(this, event);\r\n },\r\n touchmove: function (event) {\r\n event = normalizeEvent(this.dom, event);\r\n markTouch(event);\r\n this.handler.processGesture(event, 'change');\r\n localDOMHandlers.mousemove.call(this, event);\r\n },\r\n touchend: function (event) {\r\n event = normalizeEvent(this.dom, event);\r\n markTouch(event);\r\n this.handler.processGesture(event, 'end');\r\n localDOMHandlers.mouseup.call(this, event);\r\n if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\r\n localDOMHandlers.click.call(this, event);\r\n }\r\n },\r\n pointerdown: function (event) {\r\n localDOMHandlers.mousedown.call(this, event);\r\n },\r\n pointermove: function (event) {\r\n if (!isPointerFromTouch(event)) {\r\n localDOMHandlers.mousemove.call(this, event);\r\n }\r\n },\r\n pointerup: function (event) {\r\n localDOMHandlers.mouseup.call(this, event);\r\n },\r\n pointerout: function (event) {\r\n if (!isPointerFromTouch(event)) {\r\n localDOMHandlers.mouseout.call(this, event);\r\n }\r\n }\r\n};\r\neach(['click', 'dblclick', 'contextmenu'], function (name) {\r\n localDOMHandlers[name] = function (event) {\r\n event = normalizeEvent(this.dom, event);\r\n this.trigger(name, event);\r\n };\r\n});\r\nvar globalDOMHandlers = {\r\n pointermove: function (event) {\r\n if (!isPointerFromTouch(event)) {\r\n globalDOMHandlers.mousemove.call(this, event);\r\n }\r\n },\r\n pointerup: function (event) {\r\n globalDOMHandlers.mouseup.call(this, event);\r\n },\r\n mousemove: function (event) {\r\n this.trigger('mousemove', event);\r\n },\r\n mouseup: function (event) {\r\n var pointerCaptureReleasing = this.__pointerCapturing;\r\n this.__togglePointerCapture(false);\r\n this.trigger('mouseup', event);\r\n if (pointerCaptureReleasing) {\r\n event.zrEventControl = 'only_globalout';\r\n this.trigger('mouseout', event);\r\n }\r\n }\r\n};\r\nfunction mountLocalDOMEventListeners(instance, scope) {\r\n var domHandlers = scope.domHandlers;\r\n if (env.pointerEventsSupported) {\r\n each(localNativeListenerNames.pointer, function (nativeEventName) {\r\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n domHandlers[nativeEventName].call(instance, event);\r\n });\r\n });\r\n }\r\n else {\r\n if (env.touchEventsSupported) {\r\n each(localNativeListenerNames.touch, function (nativeEventName) {\r\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n domHandlers[nativeEventName].call(instance, event);\r\n setTouchTimer(scope);\r\n });\r\n });\r\n }\r\n each(localNativeListenerNames.mouse, function (nativeEventName) {\r\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n event = getNativeEvent(event);\r\n if (!scope.touching) {\r\n domHandlers[nativeEventName].call(instance, event);\r\n }\r\n });\r\n });\r\n }\r\n}\r\nfunction mountGlobalDOMEventListeners(instance, scope) {\r\n if (env.pointerEventsSupported) {\r\n each(globalNativeListenerNames.pointer, mount);\r\n }\r\n else if (!env.touchEventsSupported) {\r\n each(globalNativeListenerNames.mouse, mount);\r\n }\r\n function mount(nativeEventName) {\r\n function nativeEventListener(event) {\r\n event = getNativeEvent(event);\r\n if (!isLocalEl(instance, event.target)) {\r\n event = normalizeGlobalEvent(instance, event);\r\n scope.domHandlers[nativeEventName].call(instance, event);\r\n }\r\n }\r\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\r\n }\r\n}\r\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\r\n scope.mounted[nativeEventName] = listener;\r\n scope.listenerOpts[nativeEventName] = opt;\r\n addEventListener(scope.domTarget, nativeEventName, listener, opt);\r\n}\r\nfunction unmountDOMEventListeners(scope) {\r\n var mounted = scope.mounted;\r\n for (var nativeEventName in mounted) {\r\n if (mounted.hasOwnProperty(nativeEventName)) {\r\n removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\r\n }\r\n }\r\n scope.mounted = {};\r\n}\r\nvar DOMHandlerScope = (function () {\r\n function DOMHandlerScope(domTarget, domHandlers) {\r\n this.mounted = {};\r\n this.listenerOpts = {};\r\n this.touching = false;\r\n this.domTarget = domTarget;\r\n this.domHandlers = domHandlers;\r\n }\r\n return DOMHandlerScope;\r\n}());\r\nvar HandlerDomProxy = (function (_super) {\r\n __extends(HandlerDomProxy, _super);\r\n function HandlerDomProxy(dom, painterRoot) {\r\n var _this = _super.call(this) || this;\r\n _this.__pointerCapturing = false;\r\n _this.dom = dom;\r\n _this.painterRoot = painterRoot;\r\n _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\r\n if (globalEventSupported) {\r\n _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\r\n }\r\n mountLocalDOMEventListeners(_this, _this._localHandlerScope);\r\n return _this;\r\n }\r\n HandlerDomProxy.prototype.dispose = function () {\r\n unmountDOMEventListeners(this._localHandlerScope);\r\n if (globalEventSupported) {\r\n unmountDOMEventListeners(this._globalHandlerScope);\r\n }\r\n };\r\n HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\r\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\r\n };\r\n HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\r\n this.__mayPointerCapture = null;\r\n if (globalEventSupported\r\n && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\r\n this.__pointerCapturing = isPointerCapturing;\r\n var globalHandlerScope = this._globalHandlerScope;\r\n isPointerCapturing\r\n ? mountGlobalDOMEventListeners(this, globalHandlerScope)\r\n : unmountDOMEventListeners(globalHandlerScope);\r\n }\r\n };\r\n return HandlerDomProxy;\r\n}(Eventful));\n\nvar STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\r\nvar DEFAULT_COMMON_STYLE = {\r\n shadowBlur: 0,\r\n shadowOffsetX: 0,\r\n shadowOffsetY: 0,\r\n shadowColor: '#000',\r\n opacity: 1,\r\n blend: 'source-over'\r\n};\r\nvar DEFAULT_COMMON_ANIMATION_PROPS = {\r\n style: {\r\n shadowBlur: true,\r\n shadowOffsetX: true,\r\n shadowOffsetY: true,\r\n shadowColor: true,\r\n opacity: true\r\n }\r\n};\r\nDEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\r\nvar PRIMARY_STATES_KEYS$1 = ['z', 'z2', 'invisible'];\r\nvar Displayable = (function (_super) {\r\n __extends(Displayable, _super);\r\n function Displayable(props) {\r\n return _super.call(this, props) || this;\r\n }\r\n Displayable.prototype._init = function (props) {\r\n var keysArr = keys(props);\r\n for (var i = 0; i < keysArr.length; i++) {\r\n var key = keysArr[i];\r\n if (key === 'style') {\r\n this.useStyle(props[key]);\r\n }\r\n else {\r\n _super.prototype.attrKV.call(this, key, props[key]);\r\n }\r\n }\r\n if (!this.style) {\r\n this.useStyle({});\r\n }\r\n };\r\n Displayable.prototype.beforeBrush = function () { };\r\n Displayable.prototype.afterBrush = function () { };\r\n Displayable.prototype.innerBeforeBrush = function () { };\r\n Displayable.prototype.innerAfterBrush = function () { };\r\n Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\r\n var m = this.transform;\r\n if (this.ignore\r\n || this.invisible\r\n || this.style.opacity === 0\r\n || (this.culling\r\n && isDisplayableCulled(this, viewWidth, viewHeight))\r\n || (m && !m[0] && !m[3])) {\r\n return false;\r\n }\r\n if (considerClipPath && this.__clipPaths) {\r\n for (var i = 0; i < this.__clipPaths.length; ++i) {\r\n if (this.__clipPaths[i].isZeroArea()) {\r\n return false;\r\n }\r\n }\r\n }\r\n if (considerAncestors && this.parent) {\r\n var parent_1 = this.parent;\r\n while (parent_1) {\r\n if (parent_1.ignore) {\r\n return false;\r\n }\r\n parent_1 = parent_1.parent;\r\n }\r\n }\r\n return true;\r\n };\r\n Displayable.prototype.contain = function (x, y) {\r\n return this.rectContain(x, y);\r\n };\r\n Displayable.prototype.traverse = function (cb, context) {\r\n cb.call(context, this);\r\n };\r\n Displayable.prototype.rectContain = function (x, y) {\r\n var coord = this.transformCoordToLocal(x, y);\r\n var rect = this.getBoundingRect();\r\n return rect.contain(coord[0], coord[1]);\r\n };\r\n Displayable.prototype.getPaintRect = function () {\r\n var rect = this._paintRect;\r\n if (!this._paintRect || this.__dirty) {\r\n var transform = this.transform;\r\n var elRect = this.getBoundingRect();\r\n var style = this.style;\r\n var shadowSize = style.shadowBlur || 0;\r\n var shadowOffsetX = style.shadowOffsetX || 0;\r\n var shadowOffsetY = style.shadowOffsetY || 0;\r\n rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\r\n if (transform) {\r\n BoundingRect.applyTransform(rect, elRect, transform);\r\n }\r\n else {\r\n rect.copy(elRect);\r\n }\r\n if (shadowSize || shadowOffsetX || shadowOffsetY) {\r\n rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\r\n rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\r\n rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\r\n rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\r\n }\r\n var tolerance = this.dirtyRectTolerance;\r\n if (!rect.isZero()) {\r\n rect.x = Math.floor(rect.x - tolerance);\r\n rect.y = Math.floor(rect.y - tolerance);\r\n rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\r\n rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\r\n }\r\n }\r\n return rect;\r\n };\r\n Displayable.prototype.setPrevPaintRect = function (paintRect) {\r\n if (paintRect) {\r\n this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\r\n this._prevPaintRect.copy(paintRect);\r\n }\r\n else {\r\n this._prevPaintRect = null;\r\n }\r\n };\r\n Displayable.prototype.getPrevPaintRect = function () {\r\n return this._prevPaintRect;\r\n };\r\n Displayable.prototype.animateStyle = function (loop) {\r\n return this.animate('style', loop);\r\n };\r\n Displayable.prototype.updateDuringAnimation = function (targetKey) {\r\n if (targetKey === 'style') {\r\n this.dirtyStyle();\r\n }\r\n else {\r\n this.markRedraw();\r\n }\r\n };\r\n Displayable.prototype.attrKV = function (key, value) {\r\n if (key !== 'style') {\r\n _super.prototype.attrKV.call(this, key, value);\r\n }\r\n else {\r\n if (!this.style) {\r\n this.useStyle(value);\r\n }\r\n else {\r\n this.setStyle(value);\r\n }\r\n }\r\n };\r\n Displayable.prototype.setStyle = function (keyOrObj, value) {\r\n if (typeof keyOrObj === 'string') {\r\n this.style[keyOrObj] = value;\r\n }\r\n else {\r\n extend(this.style, keyOrObj);\r\n }\r\n this.dirtyStyle();\r\n return this;\r\n };\r\n Displayable.prototype.dirtyStyle = function () {\r\n this.markRedraw();\r\n this.__dirty |= Displayable.STYLE_CHANGED_BIT;\r\n if (this._rect) {\r\n this._rect = null;\r\n }\r\n };\r\n Displayable.prototype.dirty = function () {\r\n this.dirtyStyle();\r\n };\r\n Displayable.prototype.styleChanged = function () {\r\n return !!(this.__dirty & Displayable.STYLE_CHANGED_BIT);\r\n };\r\n Displayable.prototype.styleUpdated = function () {\r\n this.__dirty &= ~Displayable.STYLE_CHANGED_BIT;\r\n };\r\n Displayable.prototype.createStyle = function (obj) {\r\n return createObject(DEFAULT_COMMON_STYLE, obj);\r\n };\r\n Displayable.prototype.useStyle = function (obj) {\r\n if (!obj[STYLE_MAGIC_KEY]) {\r\n obj = this.createStyle(obj);\r\n }\r\n if (this.__inHover) {\r\n this.__hoverStyle = obj;\r\n }\r\n else {\r\n this.style = obj;\r\n }\r\n this.dirtyStyle();\r\n };\r\n Displayable.prototype.isStyleObject = function (obj) {\r\n return obj[STYLE_MAGIC_KEY];\r\n };\r\n Displayable.prototype._innerSaveToNormal = function (toState) {\r\n _super.prototype._innerSaveToNormal.call(this, toState);\r\n var normalState = this._normalState;\r\n if (toState.style && !normalState.style) {\r\n normalState.style = this._mergeStyle(this.createStyle(), this.style);\r\n }\r\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1);\r\n };\r\n Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n var needsRestoreToNormal = !(state && keepCurrentStates);\r\n var targetStyle;\r\n if (state && state.style) {\r\n if (transition) {\r\n if (keepCurrentStates) {\r\n targetStyle = state.style;\r\n }\r\n else {\r\n targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\r\n this._mergeStyle(targetStyle, state.style);\r\n }\r\n }\r\n else {\r\n targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\r\n this._mergeStyle(targetStyle, state.style);\r\n }\r\n }\r\n else if (needsRestoreToNormal) {\r\n targetStyle = normalState.style;\r\n }\r\n if (targetStyle) {\r\n if (transition) {\r\n var sourceStyle = this.style;\r\n this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\r\n if (needsRestoreToNormal) {\r\n var changedKeys = keys(sourceStyle);\r\n for (var i = 0; i < changedKeys.length; i++) {\r\n var key = changedKeys[i];\r\n if (key in targetStyle) {\r\n targetStyle[key] = targetStyle[key];\r\n this.style[key] = sourceStyle[key];\r\n }\r\n }\r\n }\r\n var targetKeys = keys(targetStyle);\r\n for (var i = 0; i < targetKeys.length; i++) {\r\n var key = targetKeys[i];\r\n this.style[key] = this.style[key];\r\n }\r\n this._transitionState(stateName, {\r\n style: targetStyle\r\n }, animationCfg, this.getAnimationStyleProps());\r\n }\r\n else {\r\n this.useStyle(targetStyle);\r\n }\r\n }\r\n for (var i = 0; i < PRIMARY_STATES_KEYS$1.length; i++) {\r\n var key = PRIMARY_STATES_KEYS$1[i];\r\n if (state && state[key] != null) {\r\n this[key] = state[key];\r\n }\r\n else if (needsRestoreToNormal) {\r\n if (normalState[key] != null) {\r\n this[key] = normalState[key];\r\n }\r\n }\r\n }\r\n };\r\n Displayable.prototype._mergeStates = function (states) {\r\n var mergedState = _super.prototype._mergeStates.call(this, states);\r\n var mergedStyle;\r\n for (var i = 0; i < states.length; i++) {\r\n var state = states[i];\r\n if (state.style) {\r\n mergedStyle = mergedStyle || {};\r\n this._mergeStyle(mergedStyle, state.style);\r\n }\r\n }\r\n if (mergedStyle) {\r\n mergedState.style = mergedStyle;\r\n }\r\n return mergedState;\r\n };\r\n Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n extend(targetStyle, sourceStyle);\r\n return targetStyle;\r\n };\r\n Displayable.prototype.getAnimationStyleProps = function () {\r\n return DEFAULT_COMMON_ANIMATION_PROPS;\r\n };\r\n Displayable.STYLE_CHANGED_BIT = 2;\r\n Displayable.initDefaultProps = (function () {\r\n var dispProto = Displayable.prototype;\r\n dispProto.type = 'displayable';\r\n dispProto.invisible = false;\r\n dispProto.z = 0;\r\n dispProto.z2 = 0;\r\n dispProto.zlevel = 0;\r\n dispProto.culling = false;\r\n dispProto.cursor = 'pointer';\r\n dispProto.rectHover = false;\r\n dispProto.incremental = false;\r\n dispProto._rect = null;\r\n dispProto.dirtyRectTolerance = 0;\r\n dispProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT;\r\n })();\r\n return Displayable;\r\n}(Element));\r\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\r\nvar viewRect = new BoundingRect(0, 0, 0, 0);\r\nfunction isDisplayableCulled(el, width, height) {\r\n tmpRect.copy(el.getBoundingRect());\r\n if (el.transform) {\r\n tmpRect.applyTransform(el.transform);\r\n }\r\n viewRect.width = width;\r\n viewRect.height = height;\r\n return !tmpRect.intersect(viewRect);\r\n}\n\nvar mathPow = Math.pow;\r\nvar mathSqrt = Math.sqrt;\r\nvar EPSILON$1 = 1e-8;\r\nvar EPSILON_NUMERIC = 1e-4;\r\nvar THREE_SQRT = mathSqrt(3);\r\nvar ONE_THIRD = 1 / 3;\r\nvar _v0 = create();\r\nvar _v1 = create();\r\nvar _v2 = create();\r\nfunction isAroundZero(val) {\r\n return val > -EPSILON$1 && val < EPSILON$1;\r\n}\r\nfunction isNotAroundZero$1(val) {\r\n return val > EPSILON$1 || val < -EPSILON$1;\r\n}\r\nfunction cubicAt(p0, p1, p2, p3, t) {\r\n var onet = 1 - t;\r\n return onet * onet * (onet * p0 + 3 * t * p1)\r\n + t * t * (t * p3 + 3 * onet * p2);\r\n}\r\nfunction cubicDerivativeAt(p0, p1, p2, p3, t) {\r\n var onet = 1 - t;\r\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\r\n + (p3 - p2) * t * t);\r\n}\r\nfunction cubicRootAt(p0, p1, p2, p3, val, roots) {\r\n var a = p3 + 3 * (p1 - p2) - p0;\r\n var b = 3 * (p2 - p1 * 2 + p0);\r\n var c = 3 * (p1 - p0);\r\n var d = p0 - val;\r\n var A = b * b - 3 * a * c;\r\n var B = b * c - 9 * a * d;\r\n var C = c * c - 3 * b * d;\r\n var n = 0;\r\n if (isAroundZero(A) && isAroundZero(B)) {\r\n if (isAroundZero(b)) {\r\n roots[0] = 0;\r\n }\r\n else {\r\n var t1 = -c / b;\r\n if (t1 >= 0 && t1 <= 1) {\r\n roots[n++] = t1;\r\n }\r\n }\r\n }\r\n else {\r\n var disc = B * B - 4 * A * C;\r\n if (isAroundZero(disc)) {\r\n var K = B / A;\r\n var t1 = -b / a + K;\r\n var t2 = -K / 2;\r\n if (t1 >= 0 && t1 <= 1) {\r\n roots[n++] = t1;\r\n }\r\n if (t2 >= 0 && t2 <= 1) {\r\n roots[n++] = t2;\r\n }\r\n }\r\n else if (disc > 0) {\r\n var discSqrt = mathSqrt(disc);\r\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\r\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\r\n if (Y1 < 0) {\r\n Y1 = -mathPow(-Y1, ONE_THIRD);\r\n }\r\n else {\r\n Y1 = mathPow(Y1, ONE_THIRD);\r\n }\r\n if (Y2 < 0) {\r\n Y2 = -mathPow(-Y2, ONE_THIRD);\r\n }\r\n else {\r\n Y2 = mathPow(Y2, ONE_THIRD);\r\n }\r\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\r\n if (t1 >= 0 && t1 <= 1) {\r\n roots[n++] = t1;\r\n }\r\n }\r\n else {\r\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\r\n var theta = Math.acos(T) / 3;\r\n var ASqrt = mathSqrt(A);\r\n var tmp = Math.cos(theta);\r\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\r\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n if (t1 >= 0 && t1 <= 1) {\r\n roots[n++] = t1;\r\n }\r\n if (t2 >= 0 && t2 <= 1) {\r\n roots[n++] = t2;\r\n }\r\n if (t3 >= 0 && t3 <= 1) {\r\n roots[n++] = t3;\r\n }\r\n }\r\n }\r\n return n;\r\n}\r\nfunction cubicExtrema(p0, p1, p2, p3, extrema) {\r\n var b = 6 * p2 - 12 * p1 + 6 * p0;\r\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\r\n var c = 3 * p1 - 3 * p0;\r\n var n = 0;\r\n if (isAroundZero(a)) {\r\n if (isNotAroundZero$1(b)) {\r\n var t1 = -c / b;\r\n if (t1 >= 0 && t1 <= 1) {\r\n extrema[n++] = t1;\r\n }\r\n }\r\n }\r\n else {\r\n var disc = b * b - 4 * a * c;\r\n if (isAroundZero(disc)) {\r\n extrema[0] = -b / (2 * a);\r\n }\r\n else if (disc > 0) {\r\n var discSqrt = mathSqrt(disc);\r\n var t1 = (-b + discSqrt) / (2 * a);\r\n var t2 = (-b - discSqrt) / (2 * a);\r\n if (t1 >= 0 && t1 <= 1) {\r\n extrema[n++] = t1;\r\n }\r\n if (t2 >= 0 && t2 <= 1) {\r\n extrema[n++] = t2;\r\n }\r\n }\r\n }\r\n return n;\r\n}\r\nfunction cubicSubdivide(p0, p1, p2, p3, t, out) {\r\n var p01 = (p1 - p0) * t + p0;\r\n var p12 = (p2 - p1) * t + p1;\r\n var p23 = (p3 - p2) * t + p2;\r\n var p012 = (p12 - p01) * t + p01;\r\n var p123 = (p23 - p12) * t + p12;\r\n var p0123 = (p123 - p012) * t + p012;\r\n out[0] = p0;\r\n out[1] = p01;\r\n out[2] = p012;\r\n out[3] = p0123;\r\n out[4] = p0123;\r\n out[5] = p123;\r\n out[6] = p23;\r\n out[7] = p3;\r\n}\r\nfunction cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\r\n var t;\r\n var interval = 0.005;\r\n var d = Infinity;\r\n var prev;\r\n var next;\r\n var d1;\r\n var d2;\r\n _v0[0] = x;\r\n _v0[1] = y;\r\n for (var _t = 0; _t < 1; _t += 0.05) {\r\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\r\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\r\n d1 = distSquare(_v0, _v1);\r\n if (d1 < d) {\r\n t = _t;\r\n d = d1;\r\n }\r\n }\r\n d = Infinity;\r\n for (var i = 0; i < 32; i++) {\r\n if (interval < EPSILON_NUMERIC) {\r\n break;\r\n }\r\n prev = t - interval;\r\n next = t + interval;\r\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\r\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\r\n d1 = distSquare(_v1, _v0);\r\n if (prev >= 0 && d1 < d) {\r\n t = prev;\r\n d = d1;\r\n }\r\n else {\r\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\r\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\r\n d2 = distSquare(_v2, _v0);\r\n if (next <= 1 && d2 < d) {\r\n t = next;\r\n d = d2;\r\n }\r\n else {\r\n interval *= 0.5;\r\n }\r\n }\r\n }\r\n if (out) {\r\n out[0] = cubicAt(x0, x1, x2, x3, t);\r\n out[1] = cubicAt(y0, y1, y2, y3, t);\r\n }\r\n return mathSqrt(d);\r\n}\r\nfunction cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\r\n var px = x0;\r\n var py = y0;\r\n var d = 0;\r\n var step = 1 / iteration;\r\n for (var i = 1; i <= iteration; i++) {\r\n var t = i * step;\r\n var x = cubicAt(x0, x1, x2, x3, t);\r\n var y = cubicAt(y0, y1, y2, y3, t);\r\n var dx = x - px;\r\n var dy = y - py;\r\n d += Math.sqrt(dx * dx + dy * dy);\r\n px = x;\r\n py = y;\r\n }\r\n return d;\r\n}\r\nfunction quadraticAt(p0, p1, p2, t) {\r\n var onet = 1 - t;\r\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\r\n}\r\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\r\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\r\n}\r\nfunction quadraticRootAt(p0, p1, p2, val, roots) {\r\n var a = p0 - 2 * p1 + p2;\r\n var b = 2 * (p1 - p0);\r\n var c = p0 - val;\r\n var n = 0;\r\n if (isAroundZero(a)) {\r\n if (isNotAroundZero$1(b)) {\r\n var t1 = -c / b;\r\n if (t1 >= 0 && t1 <= 1) {\r\n roots[n++] = t1;\r\n }\r\n }\r\n }\r\n else {\r\n var disc = b * b - 4 * a * c;\r\n if (isAroundZero(disc)) {\r\n var t1 = -b / (2 * a);\r\n if (t1 >= 0 && t1 <= 1) {\r\n roots[n++] = t1;\r\n }\r\n }\r\n else if (disc > 0) {\r\n var discSqrt = mathSqrt(disc);\r\n var t1 = (-b + discSqrt) / (2 * a);\r\n var t2 = (-b - discSqrt) / (2 * a);\r\n if (t1 >= 0 && t1 <= 1) {\r\n roots[n++] = t1;\r\n }\r\n if (t2 >= 0 && t2 <= 1) {\r\n roots[n++] = t2;\r\n }\r\n }\r\n }\r\n return n;\r\n}\r\nfunction quadraticExtremum(p0, p1, p2) {\r\n var divider = p0 + p2 - 2 * p1;\r\n if (divider === 0) {\r\n return 0.5;\r\n }\r\n else {\r\n return (p0 - p1) / divider;\r\n }\r\n}\r\nfunction quadraticSubdivide(p0, p1, p2, t, out) {\r\n var p01 = (p1 - p0) * t + p0;\r\n var p12 = (p2 - p1) * t + p1;\r\n var p012 = (p12 - p01) * t + p01;\r\n out[0] = p0;\r\n out[1] = p01;\r\n out[2] = p012;\r\n out[3] = p012;\r\n out[4] = p12;\r\n out[5] = p2;\r\n}\r\nfunction quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\r\n var t;\r\n var interval = 0.005;\r\n var d = Infinity;\r\n _v0[0] = x;\r\n _v0[1] = y;\r\n for (var _t = 0; _t < 1; _t += 0.05) {\r\n _v1[0] = quadraticAt(x0, x1, x2, _t);\r\n _v1[1] = quadraticAt(y0, y1, y2, _t);\r\n var d1 = distSquare(_v0, _v1);\r\n if (d1 < d) {\r\n t = _t;\r\n d = d1;\r\n }\r\n }\r\n d = Infinity;\r\n for (var i = 0; i < 32; i++) {\r\n if (interval < EPSILON_NUMERIC) {\r\n break;\r\n }\r\n var prev = t - interval;\r\n var next = t + interval;\r\n _v1[0] = quadraticAt(x0, x1, x2, prev);\r\n _v1[1] = quadraticAt(y0, y1, y2, prev);\r\n var d1 = distSquare(_v1, _v0);\r\n if (prev >= 0 && d1 < d) {\r\n t = prev;\r\n d = d1;\r\n }\r\n else {\r\n _v2[0] = quadraticAt(x0, x1, x2, next);\r\n _v2[1] = quadraticAt(y0, y1, y2, next);\r\n var d2 = distSquare(_v2, _v0);\r\n if (next <= 1 && d2 < d) {\r\n t = next;\r\n d = d2;\r\n }\r\n else {\r\n interval *= 0.5;\r\n }\r\n }\r\n }\r\n if (out) {\r\n out[0] = quadraticAt(x0, x1, x2, t);\r\n out[1] = quadraticAt(y0, y1, y2, t);\r\n }\r\n return mathSqrt(d);\r\n}\r\nfunction quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\r\n var px = x0;\r\n var py = y0;\r\n var d = 0;\r\n var step = 1 / iteration;\r\n for (var i = 1; i <= iteration; i++) {\r\n var t = i * step;\r\n var x = quadraticAt(x0, x1, x2, t);\r\n var y = quadraticAt(y0, y1, y2, t);\r\n var dx = x - px;\r\n var dy = y - py;\r\n d += Math.sqrt(dx * dx + dy * dy);\r\n px = x;\r\n py = y;\r\n }\r\n return d;\r\n}\n\nvar mathMin$1 = Math.min;\r\nvar mathMax$1 = Math.max;\r\nvar mathSin = Math.sin;\r\nvar mathCos = Math.cos;\r\nvar PI2 = Math.PI * 2;\r\nvar start = create();\r\nvar end = create();\r\nvar extremity = create();\r\nfunction fromPoints(points, min, max) {\r\n if (points.length === 0) {\r\n return;\r\n }\r\n var p = points[0];\r\n var left = p[0];\r\n var right = p[0];\r\n var top = p[1];\r\n var bottom = p[1];\r\n for (var i = 1; i < points.length; i++) {\r\n p = points[i];\r\n left = mathMin$1(left, p[0]);\r\n right = mathMax$1(right, p[0]);\r\n top = mathMin$1(top, p[1]);\r\n bottom = mathMax$1(bottom, p[1]);\r\n }\r\n min[0] = left;\r\n min[1] = top;\r\n max[0] = right;\r\n max[1] = bottom;\r\n}\r\nfunction fromLine(x0, y0, x1, y1, min, max) {\r\n min[0] = mathMin$1(x0, x1);\r\n min[1] = mathMin$1(y0, y1);\r\n max[0] = mathMax$1(x0, x1);\r\n max[1] = mathMax$1(y0, y1);\r\n}\r\nvar xDim = [];\r\nvar yDim = [];\r\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\r\n var cubicExtrema$1 = cubicExtrema;\r\n var cubicAt$1 = cubicAt;\r\n var n = cubicExtrema$1(x0, x1, x2, x3, xDim);\r\n min[0] = Infinity;\r\n min[1] = Infinity;\r\n max[0] = -Infinity;\r\n max[1] = -Infinity;\r\n for (var i = 0; i < n; i++) {\r\n var x = cubicAt$1(x0, x1, x2, x3, xDim[i]);\r\n min[0] = mathMin$1(x, min[0]);\r\n max[0] = mathMax$1(x, max[0]);\r\n }\r\n n = cubicExtrema$1(y0, y1, y2, y3, yDim);\r\n for (var i = 0; i < n; i++) {\r\n var y = cubicAt$1(y0, y1, y2, y3, yDim[i]);\r\n min[1] = mathMin$1(y, min[1]);\r\n max[1] = mathMax$1(y, max[1]);\r\n }\r\n min[0] = mathMin$1(x0, min[0]);\r\n max[0] = mathMax$1(x0, max[0]);\r\n min[0] = mathMin$1(x3, min[0]);\r\n max[0] = mathMax$1(x3, max[0]);\r\n min[1] = mathMin$1(y0, min[1]);\r\n max[1] = mathMax$1(y0, max[1]);\r\n min[1] = mathMin$1(y3, min[1]);\r\n max[1] = mathMax$1(y3, max[1]);\r\n}\r\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\r\n var quadraticExtremum$1 = quadraticExtremum;\r\n var quadraticAt$1 = quadraticAt;\r\n var tx = mathMax$1(mathMin$1(quadraticExtremum$1(x0, x1, x2), 1), 0);\r\n var ty = mathMax$1(mathMin$1(quadraticExtremum$1(y0, y1, y2), 1), 0);\r\n var x = quadraticAt$1(x0, x1, x2, tx);\r\n var y = quadraticAt$1(y0, y1, y2, ty);\r\n min[0] = mathMin$1(x0, x2, x);\r\n min[1] = mathMin$1(y0, y2, y);\r\n max[0] = mathMax$1(x0, x2, x);\r\n max[1] = mathMax$1(y0, y2, y);\r\n}\r\nfunction fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min$1, max$1) {\r\n var vec2Min = min;\r\n var vec2Max = max;\r\n var diff = Math.abs(startAngle - endAngle);\r\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\r\n min$1[0] = x - rx;\r\n min$1[1] = y - ry;\r\n max$1[0] = x + rx;\r\n max$1[1] = y + ry;\r\n return;\r\n }\r\n start[0] = mathCos(startAngle) * rx + x;\r\n start[1] = mathSin(startAngle) * ry + y;\r\n end[0] = mathCos(endAngle) * rx + x;\r\n end[1] = mathSin(endAngle) * ry + y;\r\n vec2Min(min$1, start, end);\r\n vec2Max(max$1, start, end);\r\n startAngle = startAngle % (PI2);\r\n if (startAngle < 0) {\r\n startAngle = startAngle + PI2;\r\n }\r\n endAngle = endAngle % (PI2);\r\n if (endAngle < 0) {\r\n endAngle = endAngle + PI2;\r\n }\r\n if (startAngle > endAngle && !anticlockwise) {\r\n endAngle += PI2;\r\n }\r\n else if (startAngle < endAngle && anticlockwise) {\r\n startAngle += PI2;\r\n }\r\n if (anticlockwise) {\r\n var tmp = endAngle;\r\n endAngle = startAngle;\r\n startAngle = tmp;\r\n }\r\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\r\n if (angle > startAngle) {\r\n extremity[0] = mathCos(angle) * rx + x;\r\n extremity[1] = mathSin(angle) * ry + y;\r\n vec2Min(min$1, extremity, min$1);\r\n vec2Max(max$1, extremity, max$1);\r\n }\r\n }\r\n}\n\nvar CMD = {\r\n M: 1,\r\n L: 2,\r\n C: 3,\r\n Q: 4,\r\n A: 5,\r\n Z: 6,\r\n R: 7\r\n};\r\nvar tmpOutX = [];\r\nvar tmpOutY = [];\r\nvar min$1 = [];\r\nvar max$1 = [];\r\nvar min2 = [];\r\nvar max2 = [];\r\nvar mathMin$2 = Math.min;\r\nvar mathMax$2 = Math.max;\r\nvar mathCos$1 = Math.cos;\r\nvar mathSin$1 = Math.sin;\r\nvar mathSqrt$1 = Math.sqrt;\r\nvar mathAbs = Math.abs;\r\nvar PI = Math.PI;\r\nvar PI2$1 = PI * 2;\r\nvar hasTypedArray = typeof Float32Array !== 'undefined';\r\nvar tmpAngles = [];\r\nfunction modPI2(radian) {\r\n var n = Math.round(radian / PI * 1e8) / 1e8;\r\n return (n % 2) * PI;\r\n}\r\nfunction normalizeArcAngles(angles, anticlockwise) {\r\n var newStartAngle = modPI2(angles[0]);\r\n if (newStartAngle < 0) {\r\n newStartAngle += PI2$1;\r\n }\r\n var delta = newStartAngle - angles[0];\r\n var newEndAngle = angles[1];\r\n newEndAngle += delta;\r\n if (!anticlockwise && newEndAngle - newStartAngle >= PI2$1) {\r\n newEndAngle = newStartAngle + PI2$1;\r\n }\r\n else if (anticlockwise && newStartAngle - newEndAngle >= PI2$1) {\r\n newEndAngle = newStartAngle - PI2$1;\r\n }\r\n else if (!anticlockwise && newStartAngle > newEndAngle) {\r\n newEndAngle = newStartAngle +\r\n (PI2$1 - modPI2(newStartAngle - newEndAngle));\r\n }\r\n else if (anticlockwise && newStartAngle < newEndAngle) {\r\n newEndAngle = newStartAngle -\r\n (PI2$1 - modPI2(newEndAngle - newStartAngle));\r\n }\r\n angles[0] = newStartAngle;\r\n angles[1] = newEndAngle;\r\n}\r\nvar PathProxy = (function () {\r\n function PathProxy(notSaveData) {\r\n this.dpr = 1;\r\n this._version = 0;\r\n this._xi = 0;\r\n this._yi = 0;\r\n this._x0 = 0;\r\n this._y0 = 0;\r\n this._len = 0;\r\n if (notSaveData) {\r\n this._saveData = false;\r\n }\r\n if (this._saveData) {\r\n this.data = [];\r\n }\r\n }\r\n PathProxy.prototype.increaseVersion = function () {\r\n this._version++;\r\n };\r\n PathProxy.prototype.getVersion = function () {\r\n return this._version;\r\n };\r\n PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\r\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\r\n if (segmentIgnoreThreshold > 0) {\r\n this._ux = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sx) || 0;\r\n this._uy = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sy) || 0;\r\n }\r\n };\r\n PathProxy.prototype.setDPR = function (dpr) {\r\n this.dpr = dpr;\r\n };\r\n PathProxy.prototype.setContext = function (ctx) {\r\n this._ctx = ctx;\r\n };\r\n PathProxy.prototype.getContext = function () {\r\n return this._ctx;\r\n };\r\n PathProxy.prototype.beginPath = function () {\r\n this._ctx && this._ctx.beginPath();\r\n this.reset();\r\n return this;\r\n };\r\n PathProxy.prototype.reset = function () {\r\n if (this._saveData) {\r\n this._len = 0;\r\n }\r\n if (this._lineDash) {\r\n this._lineDash = null;\r\n this._dashOffset = 0;\r\n }\r\n if (this._pathSegLen) {\r\n this._pathSegLen = null;\r\n this._pathLen = 0;\r\n }\r\n this._version++;\r\n };\r\n PathProxy.prototype.moveTo = function (x, y) {\r\n this.addData(CMD.M, x, y);\r\n this._ctx && this._ctx.moveTo(x, y);\r\n this._x0 = x;\r\n this._y0 = y;\r\n this._xi = x;\r\n this._yi = y;\r\n return this;\r\n };\r\n PathProxy.prototype.lineTo = function (x, y) {\r\n var exceedUnit = mathAbs(x - this._xi) > this._ux\r\n || mathAbs(y - this._yi) > this._uy\r\n || this._len < 5;\r\n this.addData(CMD.L, x, y);\r\n if (this._ctx && exceedUnit) {\r\n this._needsDash ? this._dashedLineTo(x, y)\r\n : this._ctx.lineTo(x, y);\r\n }\r\n if (exceedUnit) {\r\n this._xi = x;\r\n this._yi = y;\r\n }\r\n return this;\r\n };\r\n PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\r\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\r\n if (this._ctx) {\r\n this._needsDash ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3)\r\n : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n }\r\n this._xi = x3;\r\n this._yi = y3;\r\n return this;\r\n };\r\n PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\r\n this.addData(CMD.Q, x1, y1, x2, y2);\r\n if (this._ctx) {\r\n this._needsDash ? this._dashedQuadraticTo(x1, y1, x2, y2)\r\n : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n }\r\n this._xi = x2;\r\n this._yi = y2;\r\n return this;\r\n };\r\n PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\r\n tmpAngles[0] = startAngle;\r\n tmpAngles[1] = endAngle;\r\n normalizeArcAngles(tmpAngles, anticlockwise);\r\n startAngle = tmpAngles[0];\r\n endAngle = tmpAngles[1];\r\n var delta = endAngle - startAngle;\r\n this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\r\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n this._xi = mathCos$1(endAngle) * r + cx;\r\n this._yi = mathSin$1(endAngle) * r + cy;\r\n return this;\r\n };\r\n PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\r\n if (this._ctx) {\r\n this._ctx.arcTo(x1, y1, x2, y2, radius);\r\n }\r\n return this;\r\n };\r\n PathProxy.prototype.rect = function (x, y, w, h) {\r\n this._ctx && this._ctx.rect(x, y, w, h);\r\n this.addData(CMD.R, x, y, w, h);\r\n return this;\r\n };\r\n PathProxy.prototype.closePath = function () {\r\n this.addData(CMD.Z);\r\n var ctx = this._ctx;\r\n var x0 = this._x0;\r\n var y0 = this._y0;\r\n if (ctx) {\r\n this._needsDash && this._dashedLineTo(x0, y0);\r\n ctx.closePath();\r\n }\r\n this._xi = x0;\r\n this._yi = y0;\r\n return this;\r\n };\r\n PathProxy.prototype.fill = function (ctx) {\r\n ctx && ctx.fill();\r\n this.toStatic();\r\n };\r\n PathProxy.prototype.stroke = function (ctx) {\r\n ctx && ctx.stroke();\r\n this.toStatic();\r\n };\r\n PathProxy.prototype.setLineDash = function (lineDash) {\r\n if (lineDash instanceof Array) {\r\n this._lineDash = lineDash;\r\n this._dashIdx = 0;\r\n var lineDashSum = 0;\r\n for (var i = 0; i < lineDash.length; i++) {\r\n lineDashSum += lineDash[i];\r\n }\r\n this._dashSum = lineDashSum;\r\n this._needsDash = true;\r\n }\r\n else {\r\n this._lineDash = null;\r\n this._needsDash = false;\r\n }\r\n return this;\r\n };\r\n PathProxy.prototype.setLineDashOffset = function (offset) {\r\n this._dashOffset = offset;\r\n return this;\r\n };\r\n PathProxy.prototype.len = function () {\r\n return this._len;\r\n };\r\n PathProxy.prototype.setData = function (data) {\r\n var len = data.length;\r\n if (!(this.data && this.data.length === len) && hasTypedArray) {\r\n this.data = new Float32Array(len);\r\n }\r\n for (var i = 0; i < len; i++) {\r\n this.data[i] = data[i];\r\n }\r\n this._len = len;\r\n };\r\n PathProxy.prototype.appendPath = function (path) {\r\n if (!(path instanceof Array)) {\r\n path = [path];\r\n }\r\n var len = path.length;\r\n var appendSize = 0;\r\n var offset = this._len;\r\n for (var i = 0; i < len; i++) {\r\n appendSize += path[i].len();\r\n }\r\n if (hasTypedArray && (this.data instanceof Float32Array)) {\r\n this.data = new Float32Array(offset + appendSize);\r\n }\r\n for (var i = 0; i < len; i++) {\r\n var appendPathData = path[i].data;\r\n for (var k = 0; k < appendPathData.length; k++) {\r\n this.data[offset++] = appendPathData[k];\r\n }\r\n }\r\n this._len = offset;\r\n };\r\n PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\r\n if (!this._saveData) {\r\n return;\r\n }\r\n var data = this.data;\r\n if (this._len + arguments.length > data.length) {\r\n this._expandData();\r\n data = this.data;\r\n }\r\n for (var i = 0; i < arguments.length; i++) {\r\n data[this._len++] = arguments[i];\r\n }\r\n };\r\n PathProxy.prototype._expandData = function () {\r\n if (!(this.data instanceof Array)) {\r\n var newData = [];\r\n for (var i = 0; i < this._len; i++) {\r\n newData[i] = this.data[i];\r\n }\r\n this.data = newData;\r\n }\r\n };\r\n PathProxy.prototype._dashedLineTo = function (x1, y1) {\r\n var dashSum = this._dashSum;\r\n var lineDash = this._lineDash;\r\n var ctx = this._ctx;\r\n var offset = this._dashOffset;\r\n var x0 = this._xi;\r\n var y0 = this._yi;\r\n var dx = x1 - x0;\r\n var dy = y1 - y0;\r\n var dist = mathSqrt$1(dx * dx + dy * dy);\r\n var x = x0;\r\n var y = y0;\r\n var nDash = lineDash.length;\r\n var dash;\r\n var idx;\r\n dx /= dist;\r\n dy /= dist;\r\n if (offset < 0) {\r\n offset = dashSum + offset;\r\n }\r\n offset %= dashSum;\r\n x -= offset * dx;\r\n y -= offset * dy;\r\n while ((dx > 0 && x <= x1) || (dx < 0 && x >= x1)\r\n || (dx === 0 && ((dy > 0 && y <= y1) || (dy < 0 && y >= y1)))) {\r\n idx = this._dashIdx;\r\n dash = lineDash[idx];\r\n x += dx * dash;\r\n y += dy * dash;\r\n this._dashIdx = (idx + 1) % nDash;\r\n if ((dx > 0 && x < x0) || (dx < 0 && x > x0) || (dy > 0 && y < y0) || (dy < 0 && y > y0)) {\r\n continue;\r\n }\r\n ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin$2(x, x1) : mathMax$2(x, x1), dy >= 0 ? mathMin$2(y, y1) : mathMax$2(y, y1));\r\n }\r\n dx = x - x1;\r\n dy = y - y1;\r\n this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n };\r\n PathProxy.prototype._dashedBezierTo = function (x1, y1, x2, y2, x3, y3) {\r\n var ctx = this._ctx;\r\n var dashSum = this._dashSum;\r\n var offset = this._dashOffset;\r\n var lineDash = this._lineDash;\r\n var x0 = this._xi;\r\n var y0 = this._yi;\r\n var bezierLen = 0;\r\n var idx = this._dashIdx;\r\n var nDash = lineDash.length;\r\n var t;\r\n var dx;\r\n var dy;\r\n var x;\r\n var y;\r\n var tmpLen = 0;\r\n if (offset < 0) {\r\n offset = dashSum + offset;\r\n }\r\n offset %= dashSum;\r\n for (t = 0; t < 1; t += 0.1) {\r\n dx = cubicAt(x0, x1, x2, x3, t + 0.1)\r\n - cubicAt(x0, x1, x2, x3, t);\r\n dy = cubicAt(y0, y1, y2, y3, t + 0.1)\r\n - cubicAt(y0, y1, y2, y3, t);\r\n bezierLen += mathSqrt$1(dx * dx + dy * dy);\r\n }\r\n for (; idx < nDash; idx++) {\r\n tmpLen += lineDash[idx];\r\n if (tmpLen > offset) {\r\n break;\r\n }\r\n }\r\n t = (tmpLen - offset) / bezierLen;\r\n while (t <= 1) {\r\n x = cubicAt(x0, x1, x2, x3, t);\r\n y = cubicAt(y0, y1, y2, y3, t);\r\n idx % 2 ? ctx.moveTo(x, y)\r\n : ctx.lineTo(x, y);\r\n t += lineDash[idx] / bezierLen;\r\n idx = (idx + 1) % nDash;\r\n }\r\n (idx % 2 !== 0) && ctx.lineTo(x3, y3);\r\n dx = x3 - x;\r\n dy = y3 - y;\r\n this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n };\r\n PathProxy.prototype._dashedQuadraticTo = function (x1, y1, x2, y2) {\r\n var x3 = x2;\r\n var y3 = y2;\r\n x2 = (x2 + 2 * x1) / 3;\r\n y2 = (y2 + 2 * y1) / 3;\r\n x1 = (this._xi + 2 * x1) / 3;\r\n y1 = (this._yi + 2 * y1) / 3;\r\n this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\r\n };\r\n PathProxy.prototype.toStatic = function () {\r\n if (!this._saveData) {\r\n return;\r\n }\r\n var data = this.data;\r\n if (data instanceof Array) {\r\n data.length = this._len;\r\n if (hasTypedArray && this._len > 11) {\r\n this.data = new Float32Array(data);\r\n }\r\n }\r\n };\r\n PathProxy.prototype.getBoundingRect = function () {\r\n min$1[0] = min$1[1] = min2[0] = min2[1] = Number.MAX_VALUE;\r\n max$1[0] = max$1[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\r\n var data = this.data;\r\n var xi = 0;\r\n var yi = 0;\r\n var x0 = 0;\r\n var y0 = 0;\r\n var i;\r\n for (i = 0; i < this._len;) {\r\n var cmd = data[i++];\r\n var isFirst = i === 1;\r\n if (isFirst) {\r\n xi = data[i];\r\n yi = data[i + 1];\r\n x0 = xi;\r\n y0 = yi;\r\n }\r\n switch (cmd) {\r\n case CMD.M:\r\n xi = x0 = data[i++];\r\n yi = y0 = data[i++];\r\n min2[0] = x0;\r\n min2[1] = y0;\r\n max2[0] = x0;\r\n max2[1] = y0;\r\n break;\r\n case CMD.L:\r\n fromLine(xi, yi, data[i], data[i + 1], min2, max2);\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD.C:\r\n fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD.Q:\r\n fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD.A:\r\n var cx = data[i++];\r\n var cy = data[i++];\r\n var rx = data[i++];\r\n var ry = data[i++];\r\n var startAngle = data[i++];\r\n var endAngle = data[i++] + startAngle;\r\n i += 1;\r\n var anticlockwise = !data[i++];\r\n if (isFirst) {\r\n x0 = mathCos$1(startAngle) * rx + cx;\r\n y0 = mathSin$1(startAngle) * ry + cy;\r\n }\r\n fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\r\n xi = mathCos$1(endAngle) * rx + cx;\r\n yi = mathSin$1(endAngle) * ry + cy;\r\n break;\r\n case CMD.R:\r\n x0 = xi = data[i++];\r\n y0 = yi = data[i++];\r\n var width = data[i++];\r\n var height = data[i++];\r\n fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\r\n break;\r\n case CMD.Z:\r\n xi = x0;\r\n yi = y0;\r\n break;\r\n }\r\n min(min$1, min$1, min2);\r\n max(max$1, max$1, max2);\r\n }\r\n if (i === 0) {\r\n min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0;\r\n }\r\n return new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]);\r\n };\r\n PathProxy.prototype._calculateLength = function () {\r\n var data = this.data;\r\n var len = this._len;\r\n var ux = this._ux;\r\n var uy = this._uy;\r\n var xi = 0;\r\n var yi = 0;\r\n var x0 = 0;\r\n var y0 = 0;\r\n if (!this._pathSegLen) {\r\n this._pathSegLen = [];\r\n }\r\n var pathSegLen = this._pathSegLen;\r\n var pathTotalLen = 0;\r\n var segCount = 0;\r\n for (var i = 0; i < len;) {\r\n var cmd = data[i++];\r\n var isFirst = i === 1;\r\n if (isFirst) {\r\n xi = data[i];\r\n yi = data[i + 1];\r\n x0 = xi;\r\n y0 = yi;\r\n }\r\n var l = -1;\r\n switch (cmd) {\r\n case CMD.M:\r\n xi = x0 = data[i++];\r\n yi = y0 = data[i++];\r\n break;\r\n case CMD.L: {\r\n var x2 = data[i++];\r\n var y2 = data[i++];\r\n var dx = x2 - xi;\r\n var dy = y2 - yi;\r\n if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\r\n l = Math.sqrt(dx * dx + dy * dy);\r\n xi = x2;\r\n yi = y2;\r\n }\r\n break;\r\n }\r\n case CMD.C: {\r\n var x1 = data[i++];\r\n var y1 = data[i++];\r\n var x2 = data[i++];\r\n var y2 = data[i++];\r\n var x3 = data[i++];\r\n var y3 = data[i++];\r\n l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\r\n xi = x3;\r\n yi = y3;\r\n break;\r\n }\r\n case CMD.Q: {\r\n var x1 = data[i++];\r\n var y1 = data[i++];\r\n var x2 = data[i++];\r\n var y2 = data[i++];\r\n l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\r\n xi = x2;\r\n yi = y2;\r\n break;\r\n }\r\n case CMD.A:\r\n var cx = data[i++];\r\n var cy = data[i++];\r\n var rx = data[i++];\r\n var ry = data[i++];\r\n var startAngle = data[i++];\r\n var delta = data[i++];\r\n var endAngle = delta + startAngle;\r\n i += 1;\r\n var anticlockwise = !data[i++];\r\n if (isFirst) {\r\n x0 = mathCos$1(startAngle) * rx + cx;\r\n y0 = mathSin$1(startAngle) * ry + cy;\r\n }\r\n l = mathMax$2(rx, ry) * mathMin$2(PI2$1, Math.abs(delta));\r\n xi = mathCos$1(endAngle) * rx + cx;\r\n yi = mathSin$1(endAngle) * ry + cy;\r\n break;\r\n case CMD.R: {\r\n x0 = xi = data[i++];\r\n y0 = yi = data[i++];\r\n var width = data[i++];\r\n var height = data[i++];\r\n l = width * 2 + height * 2;\r\n break;\r\n }\r\n case CMD.Z: {\r\n var dx = x0 - xi;\r\n var dy = y0 - yi;\r\n l = Math.sqrt(dx * dx + dy * dy);\r\n xi = x0;\r\n yi = y0;\r\n break;\r\n }\r\n }\r\n if (l >= 0) {\r\n pathSegLen[segCount++] = l;\r\n pathTotalLen += l;\r\n }\r\n }\r\n this._pathLen = pathTotalLen;\r\n return pathTotalLen;\r\n };\r\n PathProxy.prototype.rebuildPath = function (ctx, percent) {\r\n var d = this.data;\r\n var ux = this._ux;\r\n var uy = this._uy;\r\n var len = this._len;\r\n var x0;\r\n var y0;\r\n var xi;\r\n var yi;\r\n var x;\r\n var y;\r\n var drawPart = percent < 1;\r\n var pathSegLen;\r\n var pathTotalLen;\r\n var accumLength = 0;\r\n var segCount = 0;\r\n var displayedLength;\r\n if (drawPart) {\r\n if (!this._pathSegLen) {\r\n this._calculateLength();\r\n }\r\n pathSegLen = this._pathSegLen;\r\n pathTotalLen = this._pathLen;\r\n displayedLength = percent * pathTotalLen;\r\n if (!displayedLength) {\r\n return;\r\n }\r\n }\r\n lo: for (var i = 0; i < len;) {\r\n var cmd = d[i++];\r\n var isFirst = i === 1;\r\n if (isFirst) {\r\n xi = d[i];\r\n yi = d[i + 1];\r\n x0 = xi;\r\n y0 = yi;\r\n }\r\n switch (cmd) {\r\n case CMD.M:\r\n x0 = xi = d[i++];\r\n y0 = yi = d[i++];\r\n ctx.moveTo(xi, yi);\r\n break;\r\n case CMD.L: {\r\n x = d[i++];\r\n y = d[i++];\r\n if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\r\n if (drawPart) {\r\n var l = pathSegLen[segCount++];\r\n if (accumLength + l > displayedLength) {\r\n var t = (displayedLength - accumLength) / l;\r\n ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\r\n break lo;\r\n }\r\n accumLength += l;\r\n }\r\n ctx.lineTo(x, y);\r\n xi = x;\r\n yi = y;\r\n }\r\n break;\r\n }\r\n case CMD.C: {\r\n var x1 = d[i++];\r\n var y1 = d[i++];\r\n var x2 = d[i++];\r\n var y2 = d[i++];\r\n var x3 = d[i++];\r\n var y3 = d[i++];\r\n if (drawPart) {\r\n var l = pathSegLen[segCount++];\r\n if (accumLength + l > displayedLength) {\r\n var t = (displayedLength - accumLength) / l;\r\n cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\r\n cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\r\n ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\r\n break lo;\r\n }\r\n accumLength += l;\r\n }\r\n ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n xi = x3;\r\n yi = y3;\r\n break;\r\n }\r\n case CMD.Q: {\r\n var x1 = d[i++];\r\n var y1 = d[i++];\r\n var x2 = d[i++];\r\n var y2 = d[i++];\r\n if (drawPart) {\r\n var l = pathSegLen[segCount++];\r\n if (accumLength + l > displayedLength) {\r\n var t = (displayedLength - accumLength) / l;\r\n quadraticSubdivide(xi, x1, x2, t, tmpOutX);\r\n quadraticSubdivide(yi, y1, y2, t, tmpOutY);\r\n ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\r\n break lo;\r\n }\r\n accumLength += l;\r\n }\r\n ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n xi = x2;\r\n yi = y2;\r\n break;\r\n }\r\n case CMD.A:\r\n var cx = d[i++];\r\n var cy = d[i++];\r\n var rx = d[i++];\r\n var ry = d[i++];\r\n var startAngle = d[i++];\r\n var delta = d[i++];\r\n var psi = d[i++];\r\n var anticlockwise = !d[i++];\r\n var r = (rx > ry) ? rx : ry;\r\n var isEllipse = mathAbs(rx - ry) > 1e-3;\r\n var endAngle = startAngle + delta;\r\n var breakBuild = false;\r\n if (drawPart) {\r\n var l = pathSegLen[segCount++];\r\n if (accumLength + l > displayedLength) {\r\n endAngle = startAngle + delta * (displayedLength - accumLength) / l;\r\n breakBuild = true;\r\n }\r\n accumLength += l;\r\n }\r\n if (isEllipse && ctx.ellipse) {\r\n ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\r\n }\r\n else {\r\n ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n }\r\n if (breakBuild) {\r\n break lo;\r\n }\r\n if (isFirst) {\r\n x0 = mathCos$1(startAngle) * rx + cx;\r\n y0 = mathSin$1(startAngle) * ry + cy;\r\n }\r\n xi = mathCos$1(endAngle) * rx + cx;\r\n yi = mathSin$1(endAngle) * ry + cy;\r\n break;\r\n case CMD.R:\r\n x0 = xi = d[i];\r\n y0 = yi = d[i + 1];\r\n x = d[i++];\r\n y = d[i++];\r\n var width = d[i++];\r\n var height = d[i++];\r\n if (drawPart) {\r\n var l = pathSegLen[segCount++];\r\n if (accumLength + l > displayedLength) {\r\n var d_1 = displayedLength - accumLength;\r\n ctx.moveTo(x, y);\r\n ctx.lineTo(x + mathMin$2(d_1, width), y);\r\n d_1 -= width;\r\n if (d_1 > 0) {\r\n ctx.lineTo(x + width, y + mathMin$2(d_1, height));\r\n }\r\n d_1 -= height;\r\n if (d_1 > 0) {\r\n ctx.lineTo(x + mathMax$2(width - d_1, 0), y + height);\r\n }\r\n d_1 -= width;\r\n if (d_1 > 0) {\r\n ctx.lineTo(x, y + mathMax$2(height - d_1, 0));\r\n }\r\n break lo;\r\n }\r\n accumLength += l;\r\n }\r\n ctx.rect(x, y, width, height);\r\n break;\r\n case CMD.Z:\r\n if (drawPart) {\r\n var l = pathSegLen[segCount++];\r\n if (accumLength + l > displayedLength) {\r\n var t = (displayedLength - accumLength) / l;\r\n ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\r\n break lo;\r\n }\r\n accumLength += l;\r\n }\r\n ctx.closePath();\r\n xi = x0;\r\n yi = y0;\r\n }\r\n }\r\n };\r\n PathProxy.CMD = CMD;\r\n PathProxy.initDefaultProps = (function () {\r\n var proto = PathProxy.prototype;\r\n proto._saveData = true;\r\n proto._needsDash = false;\r\n proto._dashOffset = 0;\r\n proto._dashIdx = 0;\r\n proto._dashSum = 0;\r\n proto._ux = 0;\r\n proto._uy = 0;\r\n })();\r\n return PathProxy;\r\n}());\n\nfunction containStroke(x0, y0, x1, y1, lineWidth, x, y) {\r\n if (lineWidth === 0) {\r\n return false;\r\n }\r\n var _l = lineWidth;\r\n var _a = 0;\r\n var _b = x0;\r\n if ((y > y0 + _l && y > y1 + _l)\r\n || (y < y0 - _l && y < y1 - _l)\r\n || (x > x0 + _l && x > x1 + _l)\r\n || (x < x0 - _l && x < x1 - _l)) {\r\n return false;\r\n }\r\n if (x0 !== x1) {\r\n _a = (y0 - y1) / (x0 - x1);\r\n _b = (x0 * y1 - x1 * y0) / (x0 - x1);\r\n }\r\n else {\r\n return Math.abs(x - x0) <= _l / 2;\r\n }\r\n var tmp = _a * x - y + _b;\r\n var _s = tmp * tmp / (_a * _a + 1);\r\n return _s <= _l / 2 * _l / 2;\r\n}\n\nfunction containStroke$1(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\r\n if (lineWidth === 0) {\r\n return false;\r\n }\r\n var _l = lineWidth;\r\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\r\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\r\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\r\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\r\n return false;\r\n }\r\n var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\r\n return d <= _l / 2;\r\n}\n\nfunction containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\r\n if (lineWidth === 0) {\r\n return false;\r\n }\r\n var _l = lineWidth;\r\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\r\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\r\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\r\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\r\n return false;\r\n }\r\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\r\n return d <= _l / 2;\r\n}\n\nvar PI2$2 = Math.PI * 2;\r\nfunction normalizeRadian(angle) {\r\n angle %= PI2$2;\r\n if (angle < 0) {\r\n angle += PI2$2;\r\n }\r\n return angle;\r\n}\n\nvar PI2$3 = Math.PI * 2;\r\nfunction containStroke$3(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\r\n if (lineWidth === 0) {\r\n return false;\r\n }\r\n var _l = lineWidth;\r\n x -= cx;\r\n y -= cy;\r\n var d = Math.sqrt(x * x + y * y);\r\n if ((d - _l > r) || (d + _l < r)) {\r\n return false;\r\n }\r\n if (Math.abs(startAngle - endAngle) % PI2$3 < 1e-4) {\r\n return true;\r\n }\r\n if (anticlockwise) {\r\n var tmp = startAngle;\r\n startAngle = normalizeRadian(endAngle);\r\n endAngle = normalizeRadian(tmp);\r\n }\r\n else {\r\n startAngle = normalizeRadian(startAngle);\r\n endAngle = normalizeRadian(endAngle);\r\n }\r\n if (startAngle > endAngle) {\r\n endAngle += PI2$3;\r\n }\r\n var angle = Math.atan2(y, x);\r\n if (angle < 0) {\r\n angle += PI2$3;\r\n }\r\n return (angle >= startAngle && angle <= endAngle)\r\n || (angle + PI2$3 >= startAngle && angle + PI2$3 <= endAngle);\r\n}\n\nfunction windingLine(x0, y0, x1, y1, x, y) {\r\n if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\r\n return 0;\r\n }\r\n if (y1 === y0) {\r\n return 0;\r\n }\r\n var t = (y - y0) / (y1 - y0);\r\n var dir = y1 < y0 ? 1 : -1;\r\n if (t === 1 || t === 0) {\r\n dir = y1 < y0 ? 0.5 : -0.5;\r\n }\r\n var x_ = t * (x1 - x0) + x0;\r\n return x_ === x ? Infinity : x_ > x ? dir : 0;\r\n}\n\nvar CMD$1 = PathProxy.CMD;\r\nvar PI2$4 = Math.PI * 2;\r\nvar EPSILON$2 = 1e-4;\r\nfunction isAroundEqual(a, b) {\r\n return Math.abs(a - b) < EPSILON$2;\r\n}\r\nvar roots = [-1, -1, -1];\r\nvar extrema = [-1, -1];\r\nfunction swapExtrema() {\r\n var tmp = extrema[0];\r\n extrema[0] = extrema[1];\r\n extrema[1] = tmp;\r\n}\r\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\r\n if ((y > y0 && y > y1 && y > y2 && y > y3)\r\n || (y < y0 && y < y1 && y < y2 && y < y3)) {\r\n return 0;\r\n }\r\n var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots);\r\n if (nRoots === 0) {\r\n return 0;\r\n }\r\n else {\r\n var w = 0;\r\n var nExtrema = -1;\r\n var y0_ = void 0;\r\n var y1_ = void 0;\r\n for (var i = 0; i < nRoots; i++) {\r\n var t = roots[i];\r\n var unit = (t === 0 || t === 1) ? 0.5 : 1;\r\n var x_ = cubicAt(x0, x1, x2, x3, t);\r\n if (x_ < x) {\r\n continue;\r\n }\r\n if (nExtrema < 0) {\r\n nExtrema = cubicExtrema(y0, y1, y2, y3, extrema);\r\n if (extrema[1] < extrema[0] && nExtrema > 1) {\r\n swapExtrema();\r\n }\r\n y0_ = cubicAt(y0, y1, y2, y3, extrema[0]);\r\n if (nExtrema > 1) {\r\n y1_ = cubicAt(y0, y1, y2, y3, extrema[1]);\r\n }\r\n }\r\n if (nExtrema === 2) {\r\n if (t < extrema[0]) {\r\n w += y0_ < y0 ? unit : -unit;\r\n }\r\n else if (t < extrema[1]) {\r\n w += y1_ < y0_ ? unit : -unit;\r\n }\r\n else {\r\n w += y3 < y1_ ? unit : -unit;\r\n }\r\n }\r\n else {\r\n if (t < extrema[0]) {\r\n w += y0_ < y0 ? unit : -unit;\r\n }\r\n else {\r\n w += y3 < y0_ ? unit : -unit;\r\n }\r\n }\r\n }\r\n return w;\r\n }\r\n}\r\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\r\n if ((y > y0 && y > y1 && y > y2)\r\n || (y < y0 && y < y1 && y < y2)) {\r\n return 0;\r\n }\r\n var nRoots = quadraticRootAt(y0, y1, y2, y, roots);\r\n if (nRoots === 0) {\r\n return 0;\r\n }\r\n else {\r\n var t = quadraticExtremum(y0, y1, y2);\r\n if (t >= 0 && t <= 1) {\r\n var w = 0;\r\n var y_ = quadraticAt(y0, y1, y2, t);\r\n for (var i = 0; i < nRoots; i++) {\r\n var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\r\n var x_ = quadraticAt(x0, x1, x2, roots[i]);\r\n if (x_ < x) {\r\n continue;\r\n }\r\n if (roots[i] < t) {\r\n w += y_ < y0 ? unit : -unit;\r\n }\r\n else {\r\n w += y2 < y_ ? unit : -unit;\r\n }\r\n }\r\n return w;\r\n }\r\n else {\r\n var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\r\n var x_ = quadraticAt(x0, x1, x2, roots[0]);\r\n if (x_ < x) {\r\n return 0;\r\n }\r\n return y2 < y0 ? unit : -unit;\r\n }\r\n }\r\n}\r\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\r\n y -= cy;\r\n if (y > r || y < -r) {\r\n return 0;\r\n }\r\n var tmp = Math.sqrt(r * r - y * y);\r\n roots[0] = -tmp;\r\n roots[1] = tmp;\r\n var dTheta = Math.abs(startAngle - endAngle);\r\n if (dTheta < 1e-4) {\r\n return 0;\r\n }\r\n if (dTheta >= PI2$4 - 1e-4) {\r\n startAngle = 0;\r\n endAngle = PI2$4;\r\n var dir = anticlockwise ? 1 : -1;\r\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\r\n return dir;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (startAngle > endAngle) {\r\n var tmp_1 = startAngle;\r\n startAngle = endAngle;\r\n endAngle = tmp_1;\r\n }\r\n if (startAngle < 0) {\r\n startAngle += PI2$4;\r\n endAngle += PI2$4;\r\n }\r\n var w = 0;\r\n for (var i = 0; i < 2; i++) {\r\n var x_ = roots[i];\r\n if (x_ + cx > x) {\r\n var angle = Math.atan2(y, x_);\r\n var dir = anticlockwise ? 1 : -1;\r\n if (angle < 0) {\r\n angle = PI2$4 + angle;\r\n }\r\n if ((angle >= startAngle && angle <= endAngle)\r\n || (angle + PI2$4 >= startAngle && angle + PI2$4 <= endAngle)) {\r\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\r\n dir = -dir;\r\n }\r\n w += dir;\r\n }\r\n }\r\n }\r\n return w;\r\n}\r\nfunction containPath(path, lineWidth, isStroke, x, y) {\r\n var data = path.data;\r\n var len = path.len();\r\n var w = 0;\r\n var xi = 0;\r\n var yi = 0;\r\n var x0 = 0;\r\n var y0 = 0;\r\n var x1;\r\n var y1;\r\n for (var i = 0; i < len;) {\r\n var cmd = data[i++];\r\n var isFirst = i === 1;\r\n if (cmd === CMD$1.M && i > 1) {\r\n if (!isStroke) {\r\n w += windingLine(xi, yi, x0, y0, x, y);\r\n }\r\n }\r\n if (isFirst) {\r\n xi = data[i];\r\n yi = data[i + 1];\r\n x0 = xi;\r\n y0 = yi;\r\n }\r\n switch (cmd) {\r\n case CMD$1.M:\r\n x0 = data[i++];\r\n y0 = data[i++];\r\n xi = x0;\r\n yi = y0;\r\n break;\r\n case CMD$1.L:\r\n if (isStroke) {\r\n if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\r\n }\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD$1.C:\r\n if (isStroke) {\r\n if (containStroke$1(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n }\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD$1.Q:\r\n if (isStroke) {\r\n if (containStroke$2(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n }\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD$1.A:\r\n var cx = data[i++];\r\n var cy = data[i++];\r\n var rx = data[i++];\r\n var ry = data[i++];\r\n var theta = data[i++];\r\n var dTheta = data[i++];\r\n i += 1;\r\n var anticlockwise = !!(1 - data[i++]);\r\n x1 = Math.cos(theta) * rx + cx;\r\n y1 = Math.sin(theta) * ry + cy;\r\n if (!isFirst) {\r\n w += windingLine(xi, yi, x1, y1, x, y);\r\n }\r\n else {\r\n x0 = x1;\r\n y0 = y1;\r\n }\r\n var _x = (x - cx) * ry / rx + cx;\r\n if (isStroke) {\r\n if (containStroke$3(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\r\n }\r\n xi = Math.cos(theta + dTheta) * rx + cx;\r\n yi = Math.sin(theta + dTheta) * ry + cy;\r\n break;\r\n case CMD$1.R:\r\n x0 = xi = data[i++];\r\n y0 = yi = data[i++];\r\n var width = data[i++];\r\n var height = data[i++];\r\n x1 = x0 + width;\r\n y1 = y0 + height;\r\n if (isStroke) {\r\n if (containStroke(x0, y0, x1, y0, lineWidth, x, y)\r\n || containStroke(x1, y0, x1, y1, lineWidth, x, y)\r\n || containStroke(x1, y1, x0, y1, lineWidth, x, y)\r\n || containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n w += windingLine(x1, y0, x1, y1, x, y);\r\n w += windingLine(x0, y1, x0, y0, x, y);\r\n }\r\n break;\r\n case CMD$1.Z:\r\n if (isStroke) {\r\n if (containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n w += windingLine(xi, yi, x0, y0, x, y);\r\n }\r\n xi = x0;\r\n yi = y0;\r\n break;\r\n }\r\n }\r\n if (!isStroke && !isAroundEqual(yi, y0)) {\r\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\r\n }\r\n return w !== 0;\r\n}\r\nfunction contain(pathProxy, x, y) {\r\n return containPath(pathProxy, 0, false, x, y);\r\n}\r\nfunction containStroke$4(pathProxy, lineWidth, x, y) {\r\n return containPath(pathProxy, lineWidth, true, x, y);\r\n}\n\nvar DEFAULT_PATH_STYLE = defaults({\r\n fill: '#000',\r\n stroke: null,\r\n strokePercent: 1,\r\n fillOpacity: 1,\r\n strokeOpacity: 1,\r\n lineDashOffset: 0,\r\n lineWidth: 1,\r\n lineCap: 'butt',\r\n miterLimit: 10,\r\n strokeNoScale: false,\r\n strokeFirst: false\r\n}, DEFAULT_COMMON_STYLE);\r\nvar DEFAULT_PATH_ANIMATION_PROPS = {\r\n style: defaults({\r\n fill: true,\r\n stroke: true,\r\n strokePercent: true,\r\n fillOpacity: true,\r\n strokeOpacity: true,\r\n lineDashOffset: true,\r\n lineWidth: true,\r\n miterLimit: true\r\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n};\r\nvar pathCopyParams = [\r\n 'x', 'y', 'rotation', 'scaleX', 'scaleY', 'originX', 'originY', 'invisible',\r\n 'culling', 'z', 'z2', 'zlevel', 'parent'\r\n];\r\nvar Path = (function (_super) {\r\n __extends(Path, _super);\r\n function Path(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Path.prototype.update = function () {\r\n var _this = this;\r\n _super.prototype.update.call(this);\r\n var style = this.style;\r\n if (style.decal) {\r\n var decalEl = this._decalEl\r\n = this._decalEl || new Path();\r\n if (decalEl.buildPath === Path.prototype.buildPath) {\r\n decalEl.buildPath = function (ctx) {\r\n _this.buildPath(ctx, _this.shape);\r\n };\r\n }\r\n decalEl.silent = true;\r\n var decalElStyle = decalEl.style;\r\n for (var key in style) {\r\n if (decalElStyle[key] !== style[key]) {\r\n decalElStyle[key] = style[key];\r\n }\r\n }\r\n decalElStyle.fill = style.fill ? style.decal : null;\r\n decalElStyle.decal = null;\r\n decalElStyle.shadowColor = null;\r\n style.strokeFirst && (decalElStyle.stroke = null);\r\n for (var i = 0; i < pathCopyParams.length; ++i) {\r\n decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\r\n }\r\n decalEl.__dirty |= Element.REDARAW_BIT;\r\n }\r\n else if (this._decalEl) {\r\n this._decalEl = null;\r\n }\r\n };\r\n Path.prototype.getDecalElement = function () {\r\n return this._decalEl;\r\n };\r\n Path.prototype._init = function (props) {\r\n var keysArr = keys(props);\r\n this.shape = this.getDefaultShape();\r\n var defaultStyle = this.getDefaultStyle();\r\n if (defaultStyle) {\r\n this.useStyle(defaultStyle);\r\n }\r\n for (var i = 0; i < keysArr.length; i++) {\r\n var key = keysArr[i];\r\n var value = props[key];\r\n if (key === 'style') {\r\n if (!this.style) {\r\n this.useStyle(value);\r\n }\r\n else {\r\n extend(this.style, value);\r\n }\r\n }\r\n else if (key === 'shape') {\r\n extend(this.shape, value);\r\n }\r\n else {\r\n _super.prototype.attrKV.call(this, key, value);\r\n }\r\n }\r\n if (!this.style) {\r\n this.useStyle({});\r\n }\r\n };\r\n Path.prototype.getDefaultStyle = function () {\r\n return null;\r\n };\r\n Path.prototype.getDefaultShape = function () {\r\n return {};\r\n };\r\n Path.prototype.canBeInsideText = function () {\r\n return this.hasFill();\r\n };\r\n Path.prototype.getInsideTextFill = function () {\r\n var pathFill = this.style.fill;\r\n if (pathFill !== 'none') {\r\n if (isString(pathFill)) {\r\n var fillLum = lum(pathFill, 0);\r\n if (fillLum > 0.5) {\r\n return DARK_LABEL_COLOR;\r\n }\r\n else if (fillLum > 0.2) {\r\n return LIGHTER_LABEL_COLOR;\r\n }\r\n return LIGHT_LABEL_COLOR;\r\n }\r\n else if (pathFill) {\r\n return LIGHT_LABEL_COLOR;\r\n }\r\n }\r\n return DARK_LABEL_COLOR;\r\n };\r\n Path.prototype.getInsideTextStroke = function (textFill) {\r\n var pathFill = this.style.fill;\r\n if (isString(pathFill)) {\r\n var zr = this.__zr;\r\n var isDarkMode = !!(zr && zr.isDarkMode());\r\n var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\r\n if (isDarkMode === isDarkLabel) {\r\n return pathFill;\r\n }\r\n }\r\n };\r\n Path.prototype.buildPath = function (ctx, shapeCfg, inBundle) { };\r\n Path.prototype.pathUpdated = function () {\r\n this.__dirty &= ~Path.SHAPE_CHANGED_BIT;\r\n };\r\n Path.prototype.createPathProxy = function () {\r\n this.path = new PathProxy(false);\r\n };\r\n Path.prototype.hasStroke = function () {\r\n var style = this.style;\r\n var stroke = style.stroke;\r\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n };\r\n Path.prototype.hasFill = function () {\r\n var style = this.style;\r\n var fill = style.fill;\r\n return fill != null && fill !== 'none';\r\n };\r\n Path.prototype.getBoundingRect = function () {\r\n var rect = this._rect;\r\n var style = this.style;\r\n var needsUpdateRect = !rect;\r\n if (needsUpdateRect) {\r\n var firstInvoke = false;\r\n if (!this.path) {\r\n firstInvoke = true;\r\n this.createPathProxy();\r\n }\r\n var path = this.path;\r\n if (firstInvoke || (this.__dirty & Path.SHAPE_CHANGED_BIT)) {\r\n path.beginPath();\r\n this.buildPath(path, this.shape, false);\r\n this.pathUpdated();\r\n }\r\n rect = path.getBoundingRect();\r\n }\r\n this._rect = rect;\r\n if (this.hasStroke() && this.path && this.path.len() > 0) {\r\n var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\r\n if (this.__dirty || needsUpdateRect) {\r\n rectWithStroke.copy(rect);\r\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n var w = style.lineWidth;\r\n if (!this.hasFill()) {\r\n var strokeContainThreshold = this.strokeContainThreshold;\r\n w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\r\n }\r\n if (lineScale > 1e-10) {\r\n rectWithStroke.width += w / lineScale;\r\n rectWithStroke.height += w / lineScale;\r\n rectWithStroke.x -= w / lineScale / 2;\r\n rectWithStroke.y -= w / lineScale / 2;\r\n }\r\n }\r\n return rectWithStroke;\r\n }\r\n return rect;\r\n };\r\n Path.prototype.contain = function (x, y) {\r\n var localPos = this.transformCoordToLocal(x, y);\r\n var rect = this.getBoundingRect();\r\n var style = this.style;\r\n x = localPos[0];\r\n y = localPos[1];\r\n if (rect.contain(x, y)) {\r\n var pathProxy = this.path;\r\n if (this.hasStroke()) {\r\n var lineWidth = style.lineWidth;\r\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n if (lineScale > 1e-10) {\r\n if (!this.hasFill()) {\r\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\r\n }\r\n if (containStroke$4(pathProxy, lineWidth / lineScale, x, y)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (this.hasFill()) {\r\n return contain(pathProxy, x, y);\r\n }\r\n }\r\n return false;\r\n };\r\n Path.prototype.dirtyShape = function () {\r\n this.__dirty |= Path.SHAPE_CHANGED_BIT;\r\n if (this._rect) {\r\n this._rect = null;\r\n }\r\n if (this._decalEl) {\r\n this._decalEl.dirtyShape();\r\n }\r\n this.markRedraw();\r\n };\r\n Path.prototype.dirty = function () {\r\n this.dirtyStyle();\r\n this.dirtyShape();\r\n };\r\n Path.prototype.animateShape = function (loop) {\r\n return this.animate('shape', loop);\r\n };\r\n Path.prototype.updateDuringAnimation = function (targetKey) {\r\n if (targetKey === 'style') {\r\n this.dirtyStyle();\r\n }\r\n else if (targetKey === 'shape') {\r\n this.dirtyShape();\r\n }\r\n else {\r\n this.markRedraw();\r\n }\r\n };\r\n Path.prototype.attrKV = function (key, value) {\r\n if (key === 'shape') {\r\n this.setShape(value);\r\n }\r\n else {\r\n _super.prototype.attrKV.call(this, key, value);\r\n }\r\n };\r\n Path.prototype.setShape = function (keyOrObj, value) {\r\n var shape = this.shape;\r\n if (!shape) {\r\n shape = this.shape = {};\r\n }\r\n if (typeof keyOrObj === 'string') {\r\n shape[keyOrObj] = value;\r\n }\r\n else {\r\n extend(shape, keyOrObj);\r\n }\r\n this.dirtyShape();\r\n return this;\r\n };\r\n Path.prototype.shapeChanged = function () {\r\n return !!(this.__dirty & Path.SHAPE_CHANGED_BIT);\r\n };\r\n Path.prototype.createStyle = function (obj) {\r\n return createObject(DEFAULT_PATH_STYLE, obj);\r\n };\r\n Path.prototype._innerSaveToNormal = function (toState) {\r\n _super.prototype._innerSaveToNormal.call(this, toState);\r\n var normalState = this._normalState;\r\n if (toState.shape && !normalState.shape) {\r\n normalState.shape = extend({}, this.shape);\r\n }\r\n };\r\n Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n var needsRestoreToNormal = !(state && keepCurrentStates);\r\n var targetShape;\r\n if (state && state.shape) {\r\n if (transition) {\r\n if (keepCurrentStates) {\r\n targetShape = state.shape;\r\n }\r\n else {\r\n targetShape = extend({}, normalState.shape);\r\n extend(targetShape, state.shape);\r\n }\r\n }\r\n else {\r\n targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\r\n extend(targetShape, state.shape);\r\n }\r\n }\r\n else if (needsRestoreToNormal) {\r\n targetShape = normalState.shape;\r\n }\r\n if (targetShape) {\r\n if (transition) {\r\n this.shape = extend({}, this.shape);\r\n var targetShapePrimaryProps = {};\r\n var shapeKeys = keys(targetShape);\r\n for (var i = 0; i < shapeKeys.length; i++) {\r\n var key = shapeKeys[i];\r\n if (typeof targetShape[key] === 'object') {\r\n this.shape[key] = targetShape[key];\r\n }\r\n else {\r\n targetShapePrimaryProps[key] = targetShape[key];\r\n }\r\n }\r\n this._transitionState(stateName, {\r\n shape: targetShapePrimaryProps\r\n }, animationCfg);\r\n }\r\n else {\r\n this.shape = targetShape;\r\n this.dirtyShape();\r\n }\r\n }\r\n };\r\n Path.prototype._mergeStates = function (states) {\r\n var mergedState = _super.prototype._mergeStates.call(this, states);\r\n var mergedShape;\r\n for (var i = 0; i < states.length; i++) {\r\n var state = states[i];\r\n if (state.shape) {\r\n mergedShape = mergedShape || {};\r\n this._mergeStyle(mergedShape, state.shape);\r\n }\r\n }\r\n if (mergedShape) {\r\n mergedState.shape = mergedShape;\r\n }\r\n return mergedState;\r\n };\r\n Path.prototype.getAnimationStyleProps = function () {\r\n return DEFAULT_PATH_ANIMATION_PROPS;\r\n };\r\n Path.prototype.isZeroArea = function () {\r\n return false;\r\n };\r\n Path.extend = function (defaultProps) {\r\n var Sub = (function (_super) {\r\n __extends(Sub, _super);\r\n function Sub(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n defaultProps.init && defaultProps.init.call(_this, opts);\r\n return _this;\r\n }\r\n Sub.prototype.getDefaultStyle = function () {\r\n return clone(defaultProps.style);\r\n };\r\n Sub.prototype.getDefaultShape = function () {\r\n return clone(defaultProps.shape);\r\n };\r\n return Sub;\r\n }(Path));\r\n for (var key in defaultProps) {\r\n if (typeof defaultProps[key] === 'function') {\r\n Sub.prototype[key] = defaultProps[key];\r\n }\r\n }\r\n return Sub;\r\n };\r\n Path.SHAPE_CHANGED_BIT = 4;\r\n Path.initDefaultProps = (function () {\r\n var pathProto = Path.prototype;\r\n pathProto.type = 'path';\r\n pathProto.strokeContainThreshold = 5;\r\n pathProto.segmentIgnoreThreshold = 0;\r\n pathProto.subPixelOptimize = false;\r\n pathProto.autoBatch = false;\r\n pathProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT | Path.SHAPE_CHANGED_BIT;\r\n })();\r\n return Path;\r\n}(Displayable));\n\nvar CMD$2 = PathProxy.CMD;\r\nvar points = [[], [], []];\r\nvar mathSqrt$2 = Math.sqrt;\r\nvar mathAtan2 = Math.atan2;\r\nfunction transformPath(path, m) {\r\n var data = path.data;\r\n var len = path.len();\r\n var cmd;\r\n var nPoint;\r\n var i;\r\n var j;\r\n var k;\r\n var p;\r\n var M = CMD$2.M;\r\n var C = CMD$2.C;\r\n var L = CMD$2.L;\r\n var R = CMD$2.R;\r\n var A = CMD$2.A;\r\n var Q = CMD$2.Q;\r\n for (i = 0, j = 0; i < len;) {\r\n cmd = data[i++];\r\n j = i;\r\n nPoint = 0;\r\n switch (cmd) {\r\n case M:\r\n nPoint = 1;\r\n break;\r\n case L:\r\n nPoint = 1;\r\n break;\r\n case C:\r\n nPoint = 3;\r\n break;\r\n case Q:\r\n nPoint = 2;\r\n break;\r\n case A:\r\n var x = m[4];\r\n var y = m[5];\r\n var sx = mathSqrt$2(m[0] * m[0] + m[1] * m[1]);\r\n var sy = mathSqrt$2(m[2] * m[2] + m[3] * m[3]);\r\n var angle = mathAtan2(-m[1] / sy, m[0] / sx);\r\n data[i] *= sx;\r\n data[i++] += x;\r\n data[i] *= sy;\r\n data[i++] += y;\r\n data[i++] *= sx;\r\n data[i++] *= sy;\r\n data[i++] += angle;\r\n data[i++] += angle;\r\n i += 2;\r\n j = i;\r\n break;\r\n case R:\r\n p[0] = data[i++];\r\n p[1] = data[i++];\r\n applyTransform(p, p, m);\r\n data[j++] = p[0];\r\n data[j++] = p[1];\r\n p[0] += data[i++];\r\n p[1] += data[i++];\r\n applyTransform(p, p, m);\r\n data[j++] = p[0];\r\n data[j++] = p[1];\r\n }\r\n for (k = 0; k < nPoint; k++) {\r\n var p_1 = points[k];\r\n p_1[0] = data[i++];\r\n p_1[1] = data[i++];\r\n applyTransform(p_1, p_1, m);\r\n data[j++] = p_1[0];\r\n data[j++] = p_1[1];\r\n }\r\n }\r\n path.increaseVersion();\r\n}\n\nvar mathSqrt$3 = Math.sqrt;\r\nvar mathSin$2 = Math.sin;\r\nvar mathCos$2 = Math.cos;\r\nvar PI$1 = Math.PI;\r\nfunction vMag(v) {\r\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\r\n}\r\nfunction vRatio(u, v) {\r\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\r\n}\r\nfunction vAngle(u, v) {\r\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1)\r\n * Math.acos(vRatio(u, v));\r\n}\r\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\r\n var psi = psiDeg * (PI$1 / 180.0);\r\n var xp = mathCos$2(psi) * (x1 - x2) / 2.0\r\n + mathSin$2(psi) * (y1 - y2) / 2.0;\r\n var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2.0\r\n + mathCos$2(psi) * (y1 - y2) / 2.0;\r\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\r\n if (lambda > 1) {\r\n rx *= mathSqrt$3(lambda);\r\n ry *= mathSqrt$3(lambda);\r\n }\r\n var f = (fa === fs ? -1 : 1)\r\n * mathSqrt$3((((rx * rx) * (ry * ry))\r\n - ((rx * rx) * (yp * yp))\r\n - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp)\r\n + (ry * ry) * (xp * xp))) || 0;\r\n var cxp = f * rx * yp / ry;\r\n var cyp = f * -ry * xp / rx;\r\n var cx = (x1 + x2) / 2.0\r\n + mathCos$2(psi) * cxp\r\n - mathSin$2(psi) * cyp;\r\n var cy = (y1 + y2) / 2.0\r\n + mathSin$2(psi) * cxp\r\n + mathCos$2(psi) * cyp;\r\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\r\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\r\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\r\n var dTheta = vAngle(u, v);\r\n if (vRatio(u, v) <= -1) {\r\n dTheta = PI$1;\r\n }\r\n if (vRatio(u, v) >= 1) {\r\n dTheta = 0;\r\n }\r\n if (dTheta < 0) {\r\n var n = Math.round(dTheta / PI$1 * 1e6) / 1e6;\r\n dTheta = PI$1 * 2 + (n % 2) * PI$1;\r\n }\r\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\r\n}\r\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\r\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\r\nfunction createPathProxyFromString(data) {\r\n if (!data) {\r\n return new PathProxy();\r\n }\r\n var cpx = 0;\r\n var cpy = 0;\r\n var subpathX = cpx;\r\n var subpathY = cpy;\r\n var prevCmd;\r\n var path = new PathProxy();\r\n var CMD = PathProxy.CMD;\r\n var cmdList = data.match(commandReg);\r\n for (var l = 0; l < cmdList.length; l++) {\r\n var cmdText = cmdList[l];\r\n var cmdStr = cmdText.charAt(0);\r\n var cmd = void 0;\r\n var p = cmdText.match(numberReg) || [];\r\n var pLen = p.length;\r\n for (var i = 0; i < pLen; i++) {\r\n p[i] = parseFloat(p[i]);\r\n }\r\n var off = 0;\r\n while (off < pLen) {\r\n var ctlPtx = void 0;\r\n var ctlPty = void 0;\r\n var rx = void 0;\r\n var ry = void 0;\r\n var psi = void 0;\r\n var fa = void 0;\r\n var fs = void 0;\r\n var x1 = cpx;\r\n var y1 = cpy;\r\n var len = void 0;\r\n var pathData = void 0;\r\n switch (cmdStr) {\r\n case 'l':\r\n cpx += p[off++];\r\n cpy += p[off++];\r\n cmd = CMD.L;\r\n path.addData(cmd, cpx, cpy);\r\n break;\r\n case 'L':\r\n cpx = p[off++];\r\n cpy = p[off++];\r\n cmd = CMD.L;\r\n path.addData(cmd, cpx, cpy);\r\n break;\r\n case 'm':\r\n cpx += p[off++];\r\n cpy += p[off++];\r\n cmd = CMD.M;\r\n path.addData(cmd, cpx, cpy);\r\n subpathX = cpx;\r\n subpathY = cpy;\r\n cmdStr = 'l';\r\n break;\r\n case 'M':\r\n cpx = p[off++];\r\n cpy = p[off++];\r\n cmd = CMD.M;\r\n path.addData(cmd, cpx, cpy);\r\n subpathX = cpx;\r\n subpathY = cpy;\r\n cmdStr = 'L';\r\n break;\r\n case 'h':\r\n cpx += p[off++];\r\n cmd = CMD.L;\r\n path.addData(cmd, cpx, cpy);\r\n break;\r\n case 'H':\r\n cpx = p[off++];\r\n cmd = CMD.L;\r\n path.addData(cmd, cpx, cpy);\r\n break;\r\n case 'v':\r\n cpy += p[off++];\r\n cmd = CMD.L;\r\n path.addData(cmd, cpx, cpy);\r\n break;\r\n case 'V':\r\n cpy = p[off++];\r\n cmd = CMD.L;\r\n path.addData(cmd, cpx, cpy);\r\n break;\r\n case 'C':\r\n cmd = CMD.C;\r\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\r\n cpx = p[off - 2];\r\n cpy = p[off - 1];\r\n break;\r\n case 'c':\r\n cmd = CMD.C;\r\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\r\n cpx += p[off - 2];\r\n cpy += p[off - 1];\r\n break;\r\n case 'S':\r\n ctlPtx = cpx;\r\n ctlPty = cpy;\r\n len = path.len();\r\n pathData = path.data;\r\n if (prevCmd === CMD.C) {\r\n ctlPtx += cpx - pathData[len - 4];\r\n ctlPty += cpy - pathData[len - 3];\r\n }\r\n cmd = CMD.C;\r\n x1 = p[off++];\r\n y1 = p[off++];\r\n cpx = p[off++];\r\n cpy = p[off++];\r\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n break;\r\n case 's':\r\n ctlPtx = cpx;\r\n ctlPty = cpy;\r\n len = path.len();\r\n pathData = path.data;\r\n if (prevCmd === CMD.C) {\r\n ctlPtx += cpx - pathData[len - 4];\r\n ctlPty += cpy - pathData[len - 3];\r\n }\r\n cmd = CMD.C;\r\n x1 = cpx + p[off++];\r\n y1 = cpy + p[off++];\r\n cpx += p[off++];\r\n cpy += p[off++];\r\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n break;\r\n case 'Q':\r\n x1 = p[off++];\r\n y1 = p[off++];\r\n cpx = p[off++];\r\n cpy = p[off++];\r\n cmd = CMD.Q;\r\n path.addData(cmd, x1, y1, cpx, cpy);\r\n break;\r\n case 'q':\r\n x1 = p[off++] + cpx;\r\n y1 = p[off++] + cpy;\r\n cpx += p[off++];\r\n cpy += p[off++];\r\n cmd = CMD.Q;\r\n path.addData(cmd, x1, y1, cpx, cpy);\r\n break;\r\n case 'T':\r\n ctlPtx = cpx;\r\n ctlPty = cpy;\r\n len = path.len();\r\n pathData = path.data;\r\n if (prevCmd === CMD.Q) {\r\n ctlPtx += cpx - pathData[len - 4];\r\n ctlPty += cpy - pathData[len - 3];\r\n }\r\n cpx = p[off++];\r\n cpy = p[off++];\r\n cmd = CMD.Q;\r\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n break;\r\n case 't':\r\n ctlPtx = cpx;\r\n ctlPty = cpy;\r\n len = path.len();\r\n pathData = path.data;\r\n if (prevCmd === CMD.Q) {\r\n ctlPtx += cpx - pathData[len - 4];\r\n ctlPty += cpy - pathData[len - 3];\r\n }\r\n cpx += p[off++];\r\n cpy += p[off++];\r\n cmd = CMD.Q;\r\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n break;\r\n case 'A':\r\n rx = p[off++];\r\n ry = p[off++];\r\n psi = p[off++];\r\n fa = p[off++];\r\n fs = p[off++];\r\n x1 = cpx, y1 = cpy;\r\n cpx = p[off++];\r\n cpy = p[off++];\r\n cmd = CMD.A;\r\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n break;\r\n case 'a':\r\n rx = p[off++];\r\n ry = p[off++];\r\n psi = p[off++];\r\n fa = p[off++];\r\n fs = p[off++];\r\n x1 = cpx, y1 = cpy;\r\n cpx += p[off++];\r\n cpy += p[off++];\r\n cmd = CMD.A;\r\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n break;\r\n }\r\n }\r\n if (cmdStr === 'z' || cmdStr === 'Z') {\r\n cmd = CMD.Z;\r\n path.addData(cmd);\r\n cpx = subpathX;\r\n cpy = subpathY;\r\n }\r\n prevCmd = cmd;\r\n }\r\n path.toStatic();\r\n return path;\r\n}\r\nvar SVGPath = (function (_super) {\r\n __extends(SVGPath, _super);\r\n function SVGPath() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SVGPath.prototype.applyTransform = function (m) { };\r\n return SVGPath;\r\n}(Path));\r\nfunction isPathProxy(path) {\r\n return path.setData != null;\r\n}\r\nfunction createPathOptions(str, opts) {\r\n var pathProxy = createPathProxyFromString(str);\r\n var innerOpts = extend({}, opts);\r\n innerOpts.buildPath = function (path) {\r\n if (isPathProxy(path)) {\r\n path.setData(pathProxy.data);\r\n var ctx = path.getContext();\r\n if (ctx) {\r\n path.rebuildPath(ctx, 1);\r\n }\r\n }\r\n else {\r\n var ctx = path;\r\n pathProxy.rebuildPath(ctx, 1);\r\n }\r\n };\r\n innerOpts.applyTransform = function (m) {\r\n transformPath(pathProxy, m);\r\n this.dirtyShape();\r\n };\r\n return innerOpts;\r\n}\r\nfunction createFromString(str, opts) {\r\n return new SVGPath(createPathOptions(str, opts));\r\n}\r\nfunction extendFromString(str, defaultOpts) {\r\n var innerOpts = createPathOptions(str, defaultOpts);\r\n var Sub = (function (_super) {\r\n __extends(Sub, _super);\r\n function Sub(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.applyTransform = innerOpts.applyTransform;\r\n _this.buildPath = innerOpts.buildPath;\r\n return _this;\r\n }\r\n return Sub;\r\n }(SVGPath));\r\n return Sub;\r\n}\r\nfunction mergePath(pathEls, opts) {\r\n var pathList = [];\r\n var len = pathEls.length;\r\n for (var i = 0; i < len; i++) {\r\n var pathEl = pathEls[i];\r\n if (!pathEl.path) {\r\n pathEl.createPathProxy();\r\n }\r\n if (pathEl.shapeChanged()) {\r\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\r\n }\r\n pathList.push(pathEl.path);\r\n }\r\n var pathBundle = new Path(opts);\r\n pathBundle.createPathProxy();\r\n pathBundle.buildPath = function (path) {\r\n if (isPathProxy(path)) {\r\n path.appendPath(pathList);\r\n var ctx = path.getContext();\r\n if (ctx) {\r\n path.rebuildPath(ctx, 1);\r\n }\r\n }\r\n };\r\n return pathBundle;\r\n}\n\nvar Group = (function (_super) {\r\n __extends(Group, _super);\r\n function Group(opts) {\r\n var _this = _super.call(this) || this;\r\n _this.isGroup = true;\r\n _this._children = [];\r\n _this.attr(opts);\r\n return _this;\r\n }\r\n Group.prototype.childrenRef = function () {\r\n return this._children;\r\n };\r\n Group.prototype.children = function () {\r\n return this._children.slice();\r\n };\r\n Group.prototype.childAt = function (idx) {\r\n return this._children[idx];\r\n };\r\n Group.prototype.childOfName = function (name) {\r\n var children = this._children;\r\n for (var i = 0; i < children.length; i++) {\r\n if (children[i].name === name) {\r\n return children[i];\r\n }\r\n }\r\n };\r\n Group.prototype.childCount = function () {\r\n return this._children.length;\r\n };\r\n Group.prototype.add = function (child) {\r\n if (child) {\r\n if (child !== this && child.parent !== this) {\r\n this._children.push(child);\r\n this._doAdd(child);\r\n }\r\n if (child.__hostTarget) {\r\n throw 'This elemenet has been used as an attachment';\r\n }\r\n }\r\n return this;\r\n };\r\n Group.prototype.addBefore = function (child, nextSibling) {\r\n if (child && child !== this && child.parent !== this\r\n && nextSibling && nextSibling.parent === this) {\r\n var children = this._children;\r\n var idx = children.indexOf(nextSibling);\r\n if (idx >= 0) {\r\n children.splice(idx, 0, child);\r\n this._doAdd(child);\r\n }\r\n }\r\n return this;\r\n };\r\n Group.prototype.replaceAt = function (child, index) {\r\n var children = this._children;\r\n var old = children[index];\r\n if (child && child !== this && child.parent !== this && child !== old) {\r\n children[index] = child;\r\n old.parent = null;\r\n var zr = this.__zr;\r\n if (zr) {\r\n old.removeSelfFromZr(zr);\r\n }\r\n this._doAdd(child);\r\n }\r\n return this;\r\n };\r\n Group.prototype._doAdd = function (child) {\r\n if (child.parent) {\r\n child.parent.remove(child);\r\n }\r\n child.parent = this;\r\n var zr = this.__zr;\r\n if (zr && zr !== child.__zr) {\r\n child.addSelfToZr(zr);\r\n }\r\n zr && zr.refresh();\r\n };\r\n Group.prototype.remove = function (child) {\r\n var zr = this.__zr;\r\n var children = this._children;\r\n var idx = indexOf(children, child);\r\n if (idx < 0) {\r\n return this;\r\n }\r\n children.splice(idx, 1);\r\n child.parent = null;\r\n if (zr) {\r\n child.removeSelfFromZr(zr);\r\n }\r\n zr && zr.refresh();\r\n return this;\r\n };\r\n Group.prototype.removeAll = function () {\r\n var children = this._children;\r\n var zr = this.__zr;\r\n for (var i = 0; i < children.length; i++) {\r\n var child = children[i];\r\n if (zr) {\r\n child.removeSelfFromZr(zr);\r\n }\r\n child.parent = null;\r\n }\r\n children.length = 0;\r\n return this;\r\n };\r\n Group.prototype.eachChild = function (cb, context) {\r\n var children = this._children;\r\n for (var i = 0; i < children.length; i++) {\r\n var child = children[i];\r\n cb.call(context, child, i);\r\n }\r\n return this;\r\n };\r\n Group.prototype.traverse = function (cb, context) {\r\n for (var i = 0; i < this._children.length; i++) {\r\n var child = this._children[i];\r\n var stopped = cb.call(context, child);\r\n if (child.isGroup && !stopped) {\r\n child.traverse(cb, context);\r\n }\r\n }\r\n return this;\r\n };\r\n Group.prototype.addSelfToZr = function (zr) {\r\n _super.prototype.addSelfToZr.call(this, zr);\r\n for (var i = 0; i < this._children.length; i++) {\r\n var child = this._children[i];\r\n child.addSelfToZr(zr);\r\n }\r\n };\r\n Group.prototype.removeSelfFromZr = function (zr) {\r\n _super.prototype.removeSelfFromZr.call(this, zr);\r\n for (var i = 0; i < this._children.length; i++) {\r\n var child = this._children[i];\r\n child.removeSelfFromZr(zr);\r\n }\r\n };\r\n Group.prototype.getBoundingRect = function (includeChildren) {\r\n var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n var children = includeChildren || this._children;\r\n var tmpMat = [];\r\n var rect = null;\r\n for (var i = 0; i < children.length; i++) {\r\n var child = children[i];\r\n if (child.ignore || child.invisible) {\r\n continue;\r\n }\r\n var childRect = child.getBoundingRect();\r\n var transform = child.getLocalTransform(tmpMat);\r\n if (transform) {\r\n BoundingRect.applyTransform(tmpRect, childRect, transform);\r\n rect = rect || tmpRect.clone();\r\n rect.union(tmpRect);\r\n }\r\n else {\r\n rect = rect || childRect.clone();\r\n rect.union(childRect);\r\n }\r\n }\r\n return rect || tmpRect;\r\n };\r\n return Group;\r\n}(Element));\r\nGroup.prototype.type = 'group';\n\nvar DEFAULT_IMAGE_STYLE = defaults({\r\n x: 0,\r\n y: 0\r\n}, DEFAULT_COMMON_STYLE);\r\nvar DEFAULT_IMAGE_ANIMATION_PROPS = {\r\n style: defaults({\r\n x: true,\r\n y: true,\r\n width: true,\r\n height: true,\r\n sx: true,\r\n sy: true,\r\n sWidth: true,\r\n sHeight: true\r\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n};\r\nfunction isImageLike(source) {\r\n return !!(source\r\n && typeof source !== 'string'\r\n && source.width && source.height);\r\n}\r\nvar ZRImage = (function (_super) {\r\n __extends(ZRImage, _super);\r\n function ZRImage() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ZRImage.prototype.createStyle = function (obj) {\r\n return createObject(DEFAULT_IMAGE_STYLE, obj);\r\n };\r\n ZRImage.prototype._getSize = function (dim) {\r\n var style = this.style;\r\n var size = style[dim];\r\n if (size != null) {\r\n return size;\r\n }\r\n var imageSource = isImageLike(style.image)\r\n ? style.image : this.__image;\r\n if (!imageSource) {\r\n return 0;\r\n }\r\n var otherDim = dim === 'width' ? 'height' : 'width';\r\n var otherDimSize = style[otherDim];\r\n if (otherDimSize == null) {\r\n return imageSource[dim];\r\n }\r\n else {\r\n return imageSource[dim] / imageSource[otherDim] * otherDimSize;\r\n }\r\n };\r\n ZRImage.prototype.getWidth = function () {\r\n return this._getSize('width');\r\n };\r\n ZRImage.prototype.getHeight = function () {\r\n return this._getSize('height');\r\n };\r\n ZRImage.prototype.getAnimationStyleProps = function () {\r\n return DEFAULT_IMAGE_ANIMATION_PROPS;\r\n };\r\n ZRImage.prototype.getBoundingRect = function () {\r\n var style = this.style;\r\n if (!this._rect) {\r\n this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\r\n }\r\n return this._rect;\r\n };\r\n return ZRImage;\r\n}(Displayable));\r\nZRImage.prototype.type = 'image';\n\nvar CircleShape = (function () {\r\n function CircleShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.r = 0;\r\n }\r\n return CircleShape;\r\n}());\r\nvar Circle = (function (_super) {\r\n __extends(Circle, _super);\r\n function Circle(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Circle.prototype.getDefaultShape = function () {\r\n return new CircleShape();\r\n };\r\n Circle.prototype.buildPath = function (ctx, shape, inBundle) {\r\n if (inBundle) {\r\n ctx.moveTo(shape.cx + shape.r, shape.cy);\r\n }\r\n ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\r\n };\r\n return Circle;\r\n}(Path));\r\nCircle.prototype.type = 'circle';\n\nfunction buildPath(ctx, shape) {\r\n var x = shape.x;\r\n var y = shape.y;\r\n var width = shape.width;\r\n var height = shape.height;\r\n var r = shape.r;\r\n var r1;\r\n var r2;\r\n var r3;\r\n var r4;\r\n if (width < 0) {\r\n x = x + width;\r\n width = -width;\r\n }\r\n if (height < 0) {\r\n y = y + height;\r\n height = -height;\r\n }\r\n if (typeof r === 'number') {\r\n r1 = r2 = r3 = r4 = r;\r\n }\r\n else if (r instanceof Array) {\r\n if (r.length === 1) {\r\n r1 = r2 = r3 = r4 = r[0];\r\n }\r\n else if (r.length === 2) {\r\n r1 = r3 = r[0];\r\n r2 = r4 = r[1];\r\n }\r\n else if (r.length === 3) {\r\n r1 = r[0];\r\n r2 = r4 = r[1];\r\n r3 = r[2];\r\n }\r\n else {\r\n r1 = r[0];\r\n r2 = r[1];\r\n r3 = r[2];\r\n r4 = r[3];\r\n }\r\n }\r\n else {\r\n r1 = r2 = r3 = r4 = 0;\r\n }\r\n var total;\r\n if (r1 + r2 > width) {\r\n total = r1 + r2;\r\n r1 *= width / total;\r\n r2 *= width / total;\r\n }\r\n if (r3 + r4 > width) {\r\n total = r3 + r4;\r\n r3 *= width / total;\r\n r4 *= width / total;\r\n }\r\n if (r2 + r3 > height) {\r\n total = r2 + r3;\r\n r2 *= height / total;\r\n r3 *= height / total;\r\n }\r\n if (r1 + r4 > height) {\r\n total = r1 + r4;\r\n r1 *= height / total;\r\n r4 *= height / total;\r\n }\r\n ctx.moveTo(x + r1, y);\r\n ctx.lineTo(x + width - r2, y);\r\n r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\r\n ctx.lineTo(x + width, y + height - r3);\r\n r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\r\n ctx.lineTo(x + r4, y + height);\r\n r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\r\n ctx.lineTo(x, y + r1);\r\n r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\r\n}\n\nvar round = Math.round;\r\nfunction subPixelOptimizeLine(outputShape, inputShape, style) {\r\n if (!inputShape) {\r\n return;\r\n }\r\n var x1 = inputShape.x1;\r\n var x2 = inputShape.x2;\r\n var y1 = inputShape.y1;\r\n var y2 = inputShape.y2;\r\n outputShape.x1 = x1;\r\n outputShape.x2 = x2;\r\n outputShape.y1 = y1;\r\n outputShape.y2 = y2;\r\n var lineWidth = style && style.lineWidth;\r\n if (!lineWidth) {\r\n return outputShape;\r\n }\r\n if (round(x1 * 2) === round(x2 * 2)) {\r\n outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\r\n }\r\n if (round(y1 * 2) === round(y2 * 2)) {\r\n outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\r\n }\r\n return outputShape;\r\n}\r\nfunction subPixelOptimizeRect(outputShape, inputShape, style) {\r\n if (!inputShape) {\r\n return;\r\n }\r\n var originX = inputShape.x;\r\n var originY = inputShape.y;\r\n var originWidth = inputShape.width;\r\n var originHeight = inputShape.height;\r\n outputShape.x = originX;\r\n outputShape.y = originY;\r\n outputShape.width = originWidth;\r\n outputShape.height = originHeight;\r\n var lineWidth = style && style.lineWidth;\r\n if (!lineWidth) {\r\n return outputShape;\r\n }\r\n outputShape.x = subPixelOptimize(originX, lineWidth, true);\r\n outputShape.y = subPixelOptimize(originY, lineWidth, true);\r\n outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\r\n outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\r\n return outputShape;\r\n}\r\nfunction subPixelOptimize(position, lineWidth, positiveOrNegative) {\r\n if (!lineWidth) {\r\n return position;\r\n }\r\n var doubledPosition = round(position * 2);\r\n return (doubledPosition + round(lineWidth)) % 2 === 0\r\n ? doubledPosition / 2\r\n : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\r\n}\n\nvar RectShape = (function () {\r\n function RectShape() {\r\n this.x = 0;\r\n this.y = 0;\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n return RectShape;\r\n}());\r\nvar subPixelOptimizeOutputShape = {};\r\nvar Rect = (function (_super) {\r\n __extends(Rect, _super);\r\n function Rect(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Rect.prototype.getDefaultShape = function () {\r\n return new RectShape();\r\n };\r\n Rect.prototype.buildPath = function (ctx, shape) {\r\n var x;\r\n var y;\r\n var width;\r\n var height;\r\n if (this.subPixelOptimize) {\r\n var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\r\n x = optimizedShape.x;\r\n y = optimizedShape.y;\r\n width = optimizedShape.width;\r\n height = optimizedShape.height;\r\n optimizedShape.r = shape.r;\r\n shape = optimizedShape;\r\n }\r\n else {\r\n x = shape.x;\r\n y = shape.y;\r\n width = shape.width;\r\n height = shape.height;\r\n }\r\n if (!shape.r) {\r\n ctx.rect(x, y, width, height);\r\n }\r\n else {\r\n buildPath(ctx, shape);\r\n }\r\n };\r\n Rect.prototype.isZeroArea = function () {\r\n return !this.shape.width || !this.shape.height;\r\n };\r\n return Rect;\r\n}(Path));\r\nRect.prototype.type = 'rect';\n\nvar EllipseShape = (function () {\r\n function EllipseShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.rx = 0;\r\n this.ry = 0;\r\n }\r\n return EllipseShape;\r\n}());\r\nvar Ellipse = (function (_super) {\r\n __extends(Ellipse, _super);\r\n function Ellipse(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Ellipse.prototype.getDefaultShape = function () {\r\n return new EllipseShape();\r\n };\r\n Ellipse.prototype.buildPath = function (ctx, shape) {\r\n var k = 0.5522848;\r\n var x = shape.cx;\r\n var y = shape.cy;\r\n var a = shape.rx;\r\n var b = shape.ry;\r\n var ox = a * k;\r\n var oy = b * k;\r\n ctx.moveTo(x - a, y);\r\n ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\r\n ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\r\n ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\r\n ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\r\n ctx.closePath();\r\n };\r\n return Ellipse;\r\n}(Path));\r\nEllipse.prototype.type = 'ellipse';\n\nvar subPixelOptimizeOutputShape$1 = {};\r\nvar LineShape = (function () {\r\n function LineShape() {\r\n this.x1 = 0;\r\n this.y1 = 0;\r\n this.x2 = 0;\r\n this.y2 = 0;\r\n this.percent = 1;\r\n }\r\n return LineShape;\r\n}());\r\nvar Line = (function (_super) {\r\n __extends(Line, _super);\r\n function Line(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Line.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n Line.prototype.getDefaultShape = function () {\r\n return new LineShape();\r\n };\r\n Line.prototype.buildPath = function (ctx, shape) {\r\n var x1;\r\n var y1;\r\n var x2;\r\n var y2;\r\n if (this.subPixelOptimize) {\r\n var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape$1, shape, this.style);\r\n x1 = optimizedShape.x1;\r\n y1 = optimizedShape.y1;\r\n x2 = optimizedShape.x2;\r\n y2 = optimizedShape.y2;\r\n }\r\n else {\r\n x1 = shape.x1;\r\n y1 = shape.y1;\r\n x2 = shape.x2;\r\n y2 = shape.y2;\r\n }\r\n var percent = shape.percent;\r\n if (percent === 0) {\r\n return;\r\n }\r\n ctx.moveTo(x1, y1);\r\n if (percent < 1) {\r\n x2 = x1 * (1 - percent) + x2 * percent;\r\n y2 = y1 * (1 - percent) + y2 * percent;\r\n }\r\n ctx.lineTo(x2, y2);\r\n };\r\n Line.prototype.pointAt = function (p) {\r\n var shape = this.shape;\r\n return [\r\n shape.x1 * (1 - p) + shape.x2 * p,\r\n shape.y1 * (1 - p) + shape.y2 * p\r\n ];\r\n };\r\n return Line;\r\n}(Path));\r\nLine.prototype.type = 'line';\n\nfunction interpolate(p0, p1, p2, p3, t, t2, t3) {\r\n var v0 = (p2 - p0) * 0.5;\r\n var v1 = (p3 - p1) * 0.5;\r\n return (2 * (p1 - p2) + v0 + v1) * t3\r\n + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n + v0 * t + p1;\r\n}\r\nfunction smoothSpline(points, isLoop) {\r\n var len = points.length;\r\n var ret = [];\r\n var distance$1 = 0;\r\n for (var i = 1; i < len; i++) {\r\n distance$1 += distance(points[i - 1], points[i]);\r\n }\r\n var segs = distance$1 / 2;\r\n segs = segs < len ? len : segs;\r\n for (var i = 0; i < segs; i++) {\r\n var pos = i / (segs - 1) * (isLoop ? len : len - 1);\r\n var idx = Math.floor(pos);\r\n var w = pos - idx;\r\n var p0 = void 0;\r\n var p1 = points[idx % len];\r\n var p2 = void 0;\r\n var p3 = void 0;\r\n if (!isLoop) {\r\n p0 = points[idx === 0 ? idx : idx - 1];\r\n p2 = points[idx > len - 2 ? len - 1 : idx + 1];\r\n p3 = points[idx > len - 3 ? len - 1 : idx + 2];\r\n }\r\n else {\r\n p0 = points[(idx - 1 + len) % len];\r\n p2 = points[(idx + 1) % len];\r\n p3 = points[(idx + 2) % len];\r\n }\r\n var w2 = w * w;\r\n var w3 = w * w2;\r\n ret.push([\r\n interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3),\r\n interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)\r\n ]);\r\n }\r\n return ret;\r\n}\n\nfunction smoothBezier(points, smooth, isLoop, constraint) {\r\n var cps = [];\r\n var v = [];\r\n var v1 = [];\r\n var v2 = [];\r\n var prevPoint;\r\n var nextPoint;\r\n var min$1;\r\n var max$1;\r\n if (constraint) {\r\n min$1 = [Infinity, Infinity];\r\n max$1 = [-Infinity, -Infinity];\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n min(min$1, min$1, points[i]);\r\n max(max$1, max$1, points[i]);\r\n }\r\n min(min$1, min$1, constraint[0]);\r\n max(max$1, max$1, constraint[1]);\r\n }\r\n for (var i = 0, len = points.length; i < len; i++) {\r\n var point = points[i];\r\n if (isLoop) {\r\n prevPoint = points[i ? i - 1 : len - 1];\r\n nextPoint = points[(i + 1) % len];\r\n }\r\n else {\r\n if (i === 0 || i === len - 1) {\r\n cps.push(clone$1(points[i]));\r\n continue;\r\n }\r\n else {\r\n prevPoint = points[i - 1];\r\n nextPoint = points[i + 1];\r\n }\r\n }\r\n sub(v, nextPoint, prevPoint);\r\n scale(v, v, smooth);\r\n var d0 = distance(point, prevPoint);\r\n var d1 = distance(point, nextPoint);\r\n var sum = d0 + d1;\r\n if (sum !== 0) {\r\n d0 /= sum;\r\n d1 /= sum;\r\n }\r\n scale(v1, v, -d0);\r\n scale(v2, v, d1);\r\n var cp0 = add([], point, v1);\r\n var cp1 = add([], point, v2);\r\n if (constraint) {\r\n max(cp0, cp0, min$1);\r\n min(cp0, cp0, max$1);\r\n max(cp1, cp1, min$1);\r\n min(cp1, cp1, max$1);\r\n }\r\n cps.push(cp0);\r\n cps.push(cp1);\r\n }\r\n if (isLoop) {\r\n cps.push(cps.shift());\r\n }\r\n return cps;\r\n}\n\nfunction buildPath$1(ctx, shape, closePath) {\r\n var smooth = shape.smooth;\r\n var points = shape.points;\r\n if (points && points.length >= 2) {\r\n if (smooth && smooth !== 'spline') {\r\n var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\r\n ctx.moveTo(points[0][0], points[0][1]);\r\n var len = points.length;\r\n for (var i = 0; i < (closePath ? len : len - 1); i++) {\r\n var cp1 = controlPoints[i * 2];\r\n var cp2 = controlPoints[i * 2 + 1];\r\n var p = points[(i + 1) % len];\r\n ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\r\n }\r\n }\r\n else {\r\n if (smooth === 'spline') {\r\n points = smoothSpline(points, closePath);\r\n }\r\n ctx.moveTo(points[0][0], points[0][1]);\r\n for (var i = 1, l = points.length; i < l; i++) {\r\n ctx.lineTo(points[i][0], points[i][1]);\r\n }\r\n }\r\n closePath && ctx.closePath();\r\n }\r\n}\n\nvar PolygonShape = (function () {\r\n function PolygonShape() {\r\n this.points = null;\r\n this.smooth = 0;\r\n this.smoothConstraint = null;\r\n }\r\n return PolygonShape;\r\n}());\r\nvar Polygon = (function (_super) {\r\n __extends(Polygon, _super);\r\n function Polygon(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Polygon.prototype.getDefaultShape = function () {\r\n return new PolygonShape();\r\n };\r\n Polygon.prototype.buildPath = function (ctx, shape) {\r\n buildPath$1(ctx, shape, true);\r\n };\r\n return Polygon;\r\n}(Path));\r\nPolygon.prototype.type = 'polygon';\n\nvar PolylineShape = (function () {\r\n function PolylineShape() {\r\n this.points = null;\r\n this.percent = 1;\r\n this.smooth = 0;\r\n this.smoothConstraint = null;\r\n }\r\n return PolylineShape;\r\n}());\r\nvar Polyline = (function (_super) {\r\n __extends(Polyline, _super);\r\n function Polyline(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Polyline.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n Polyline.prototype.getDefaultShape = function () {\r\n return new PolylineShape();\r\n };\r\n Polyline.prototype.buildPath = function (ctx, shape) {\r\n buildPath$1(ctx, shape, false);\r\n };\r\n return Polyline;\r\n}(Path));\r\nPolyline.prototype.type = 'polyline';\n\nvar Gradient = (function () {\r\n function Gradient(colorStops) {\r\n this.colorStops = colorStops || [];\r\n }\r\n Gradient.prototype.addColorStop = function (offset, color) {\r\n this.colorStops.push({\r\n offset: offset,\r\n color: color\r\n });\r\n };\r\n return Gradient;\r\n}());\n\nvar LinearGradient = (function (_super) {\r\n __extends(LinearGradient, _super);\r\n function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\r\n var _this = _super.call(this, colorStops) || this;\r\n _this.x = x == null ? 0 : x;\r\n _this.y = y == null ? 0 : y;\r\n _this.x2 = x2 == null ? 1 : x2;\r\n _this.y2 = y2 == null ? 0 : y2;\r\n _this.type = 'linear';\r\n _this.global = globalCoord || false;\r\n return _this;\r\n }\r\n return LinearGradient;\r\n}(Gradient));\n\nvar DEFAULT_TSPAN_STYLE = defaults({\r\n strokeFirst: true,\r\n font: DEFAULT_FONT,\r\n x: 0,\r\n y: 0,\r\n textAlign: 'left',\r\n textBaseline: 'top',\r\n miterLimit: 2\r\n}, DEFAULT_PATH_STYLE);\r\nvar TSpan = (function (_super) {\r\n __extends(TSpan, _super);\r\n function TSpan() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TSpan.prototype.hasStroke = function () {\r\n var style = this.style;\r\n var stroke = style.stroke;\r\n return stroke != null && stroke !== 'none' && style.lineWidth > 0;\r\n };\r\n TSpan.prototype.hasFill = function () {\r\n var style = this.style;\r\n var fill = style.fill;\r\n return fill != null && fill !== 'none';\r\n };\r\n TSpan.prototype.createStyle = function (obj) {\r\n return createObject(DEFAULT_TSPAN_STYLE, obj);\r\n };\r\n TSpan.prototype.setBoundingRect = function (rect) {\r\n this._rect = rect;\r\n };\r\n TSpan.prototype.getBoundingRect = function () {\r\n var style = this.style;\r\n if (!this._rect) {\r\n var text = style.text;\r\n text != null ? (text += '') : (text = '');\r\n var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\r\n rect.x += style.x || 0;\r\n rect.y += style.y || 0;\r\n if (this.hasStroke()) {\r\n var w = style.lineWidth;\r\n rect.x -= w / 2;\r\n rect.y -= w / 2;\r\n rect.width += w;\r\n rect.height += w;\r\n }\r\n this._rect = rect;\r\n }\r\n return this._rect;\r\n };\r\n TSpan.initDefaultProps = (function () {\r\n var tspanProto = TSpan.prototype;\r\n tspanProto.dirtyRectTolerance = 10;\r\n })();\r\n return TSpan;\r\n}(Displayable));\r\nTSpan.prototype.type = 'tspan';\n\nvar DILIMITER_REG = /[\\s,]+/;\r\nfunction parseXML(svg) {\r\n if (isString(svg)) {\r\n var parser = new DOMParser();\r\n svg = parser.parseFromString(svg, 'text/xml');\r\n }\r\n var svgNode = svg;\r\n if (svgNode.nodeType === 9) {\r\n svgNode = svgNode.firstChild;\r\n }\r\n while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {\r\n svgNode = svgNode.nextSibling;\r\n }\r\n return svgNode;\r\n}\r\nvar nodeParsers;\r\nvar SVGParser = (function () {\r\n function SVGParser() {\r\n this._defs = {};\r\n this._root = null;\r\n this._isDefine = false;\r\n this._isText = false;\r\n }\r\n SVGParser.prototype.parse = function (xml, opt) {\r\n opt = opt || {};\r\n var svg = parseXML(xml);\r\n if (!svg) {\r\n throw new Error('Illegal svg');\r\n }\r\n var root = new Group();\r\n this._root = root;\r\n var viewBox = svg.getAttribute('viewBox') || '';\r\n var width = parseFloat((svg.getAttribute('width') || opt.width));\r\n var height = parseFloat((svg.getAttribute('height') || opt.height));\r\n isNaN(width) && (width = null);\r\n isNaN(height) && (height = null);\r\n parseAttributes(svg, root, null, true);\r\n var child = svg.firstChild;\r\n while (child) {\r\n this._parseNode(child, root);\r\n child = child.nextSibling;\r\n }\r\n var viewBoxRect;\r\n var viewBoxTransform;\r\n if (viewBox) {\r\n var viewBoxArr = trim(viewBox).split(DILIMITER_REG);\r\n if (viewBoxArr.length >= 4) {\r\n viewBoxRect = {\r\n x: parseFloat((viewBoxArr[0] || 0)),\r\n y: parseFloat((viewBoxArr[1] || 0)),\r\n width: parseFloat(viewBoxArr[2]),\r\n height: parseFloat(viewBoxArr[3])\r\n };\r\n }\r\n }\r\n if (viewBoxRect && width != null && height != null) {\r\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\r\n if (!opt.ignoreViewBox) {\r\n var elRoot = root;\r\n root = new Group();\r\n root.add(elRoot);\r\n elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale;\r\n elRoot.x = viewBoxTransform.x;\r\n elRoot.y = viewBoxTransform.y;\r\n }\r\n }\r\n if (!opt.ignoreRootClip && width != null && height != null) {\r\n root.setClipPath(new Rect({\r\n shape: { x: 0, y: 0, width: width, height: height }\r\n }));\r\n }\r\n return {\r\n root: root,\r\n width: width,\r\n height: height,\r\n viewBoxRect: viewBoxRect,\r\n viewBoxTransform: viewBoxTransform\r\n };\r\n };\r\n SVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\r\n var nodeName = xmlNode.nodeName.toLowerCase();\r\n if (nodeName === 'defs') {\r\n this._isDefine = true;\r\n }\r\n else if (nodeName === 'text') {\r\n this._isText = true;\r\n }\r\n var el;\r\n if (this._isDefine) {\r\n var parser = defineParsers[nodeName];\r\n if (parser) {\r\n var def = parser.call(this, xmlNode);\r\n var id = xmlNode.getAttribute('id');\r\n if (id) {\r\n this._defs[id] = def;\r\n }\r\n }\r\n }\r\n else {\r\n var parser = nodeParsers[nodeName];\r\n if (parser) {\r\n el = parser.call(this, xmlNode, parentGroup);\r\n parentGroup.add(el);\r\n }\r\n }\r\n if (el) {\r\n var child = xmlNode.firstChild;\r\n while (child) {\r\n if (child.nodeType === 1) {\r\n this._parseNode(child, el);\r\n }\r\n if (child.nodeType === 3 && this._isText) {\r\n this._parseText(child, el);\r\n }\r\n child = child.nextSibling;\r\n }\r\n }\r\n if (nodeName === 'defs') {\r\n this._isDefine = false;\r\n }\r\n else if (nodeName === 'text') {\r\n this._isText = false;\r\n }\r\n };\r\n SVGParser.prototype._parseText = function (xmlNode, parentGroup) {\r\n if (xmlNode.nodeType === 1) {\r\n var dx = xmlNode.getAttribute('dx') || 0;\r\n var dy = xmlNode.getAttribute('dy') || 0;\r\n this._textX += parseFloat(dx);\r\n this._textY += parseFloat(dy);\r\n }\r\n var text = new TSpan({\r\n style: {\r\n text: xmlNode.textContent\r\n },\r\n x: this._textX || 0,\r\n y: this._textY || 0\r\n });\r\n inheritStyle(parentGroup, text);\r\n parseAttributes(xmlNode, text, this._defs);\r\n var textStyle = text.style;\r\n var fontSize = textStyle.fontSize;\r\n if (fontSize && fontSize < 9) {\r\n textStyle.fontSize = 9;\r\n text.scaleX *= fontSize / 9;\r\n text.scaleY *= fontSize / 9;\r\n }\r\n var font = (textStyle.fontSize || textStyle.fontFamily) && [\r\n textStyle.fontStyle,\r\n textStyle.fontWeight,\r\n (textStyle.fontSize || 12) + 'px',\r\n textStyle.fontFamily || 'sans-serif'\r\n ].join(' ');\r\n textStyle.font = font;\r\n var rect = text.getBoundingRect();\r\n this._textX += rect.width;\r\n parentGroup.add(text);\r\n return text;\r\n };\r\n SVGParser.internalField = (function () {\r\n nodeParsers = {\r\n 'g': function (xmlNode, parentGroup) {\r\n var g = new Group();\r\n inheritStyle(parentGroup, g);\r\n parseAttributes(xmlNode, g, this._defs);\r\n return g;\r\n },\r\n 'rect': function (xmlNode, parentGroup) {\r\n var rect = new Rect();\r\n inheritStyle(parentGroup, rect);\r\n parseAttributes(xmlNode, rect, this._defs);\r\n rect.setShape({\r\n x: parseFloat(xmlNode.getAttribute('x') || '0'),\r\n y: parseFloat(xmlNode.getAttribute('y') || '0'),\r\n width: parseFloat(xmlNode.getAttribute('width') || '0'),\r\n height: parseFloat(xmlNode.getAttribute('height') || '0')\r\n });\r\n return rect;\r\n },\r\n 'circle': function (xmlNode, parentGroup) {\r\n var circle = new Circle();\r\n inheritStyle(parentGroup, circle);\r\n parseAttributes(xmlNode, circle, this._defs);\r\n circle.setShape({\r\n cx: parseFloat(xmlNode.getAttribute('cx') || '0'),\r\n cy: parseFloat(xmlNode.getAttribute('cy') || '0'),\r\n r: parseFloat(xmlNode.getAttribute('r') || '0')\r\n });\r\n return circle;\r\n },\r\n 'line': function (xmlNode, parentGroup) {\r\n var line = new Line();\r\n inheritStyle(parentGroup, line);\r\n parseAttributes(xmlNode, line, this._defs);\r\n line.setShape({\r\n x1: parseFloat(xmlNode.getAttribute('x1') || '0'),\r\n y1: parseFloat(xmlNode.getAttribute('y1') || '0'),\r\n x2: parseFloat(xmlNode.getAttribute('x2') || '0'),\r\n y2: parseFloat(xmlNode.getAttribute('y2') || '0')\r\n });\r\n return line;\r\n },\r\n 'ellipse': function (xmlNode, parentGroup) {\r\n var ellipse = new Ellipse();\r\n inheritStyle(parentGroup, ellipse);\r\n parseAttributes(xmlNode, ellipse, this._defs);\r\n ellipse.setShape({\r\n cx: parseFloat(xmlNode.getAttribute('cx') || '0'),\r\n cy: parseFloat(xmlNode.getAttribute('cy') || '0'),\r\n rx: parseFloat(xmlNode.getAttribute('rx') || '0'),\r\n ry: parseFloat(xmlNode.getAttribute('ry') || '0')\r\n });\r\n return ellipse;\r\n },\r\n 'polygon': function (xmlNode, parentGroup) {\r\n var pointsStr = xmlNode.getAttribute('points');\r\n var pointsArr;\r\n if (pointsStr) {\r\n pointsArr = parsePoints(pointsStr);\r\n }\r\n var polygon = new Polygon({\r\n shape: {\r\n points: pointsArr || []\r\n }\r\n });\r\n inheritStyle(parentGroup, polygon);\r\n parseAttributes(xmlNode, polygon, this._defs);\r\n return polygon;\r\n },\r\n 'polyline': function (xmlNode, parentGroup) {\r\n var path = new Path();\r\n inheritStyle(parentGroup, path);\r\n parseAttributes(xmlNode, path, this._defs);\r\n var pointsStr = xmlNode.getAttribute('points');\r\n var pointsArr;\r\n if (pointsStr) {\r\n pointsArr = parsePoints(pointsStr);\r\n }\r\n var polyline = new Polyline({\r\n shape: {\r\n points: pointsArr || []\r\n }\r\n });\r\n return polyline;\r\n },\r\n 'image': function (xmlNode, parentGroup) {\r\n var img = new ZRImage();\r\n inheritStyle(parentGroup, img);\r\n parseAttributes(xmlNode, img, this._defs);\r\n img.setStyle({\r\n image: xmlNode.getAttribute('xlink:href'),\r\n x: +xmlNode.getAttribute('x'),\r\n y: +xmlNode.getAttribute('y'),\r\n width: +xmlNode.getAttribute('width'),\r\n height: +xmlNode.getAttribute('height')\r\n });\r\n return img;\r\n },\r\n 'text': function (xmlNode, parentGroup) {\r\n var x = xmlNode.getAttribute('x') || '0';\r\n var y = xmlNode.getAttribute('y') || '0';\r\n var dx = xmlNode.getAttribute('dx') || '0';\r\n var dy = xmlNode.getAttribute('dy') || '0';\r\n this._textX = parseFloat(x) + parseFloat(dx);\r\n this._textY = parseFloat(y) + parseFloat(dy);\r\n var g = new Group();\r\n inheritStyle(parentGroup, g);\r\n parseAttributes(xmlNode, g, this._defs);\r\n return g;\r\n },\r\n 'tspan': function (xmlNode, parentGroup) {\r\n var x = xmlNode.getAttribute('x');\r\n var y = xmlNode.getAttribute('y');\r\n if (x != null) {\r\n this._textX = parseFloat(x);\r\n }\r\n if (y != null) {\r\n this._textY = parseFloat(y);\r\n }\r\n var dx = xmlNode.getAttribute('dx') || 0;\r\n var dy = xmlNode.getAttribute('dy') || 0;\r\n var g = new Group();\r\n inheritStyle(parentGroup, g);\r\n parseAttributes(xmlNode, g, this._defs);\r\n this._textX += dx;\r\n this._textY += dy;\r\n return g;\r\n },\r\n 'path': function (xmlNode, parentGroup) {\r\n var d = xmlNode.getAttribute('d') || '';\r\n var path = createFromString(d);\r\n inheritStyle(parentGroup, path);\r\n parseAttributes(xmlNode, path, this._defs);\r\n return path;\r\n }\r\n };\r\n })();\r\n return SVGParser;\r\n}());\r\nvar defineParsers = {\r\n 'lineargradient': function (xmlNode) {\r\n var x1 = parseInt(xmlNode.getAttribute('x1') || '0', 10);\r\n var y1 = parseInt(xmlNode.getAttribute('y1') || '0', 10);\r\n var x2 = parseInt(xmlNode.getAttribute('x2') || '10', 10);\r\n var y2 = parseInt(xmlNode.getAttribute('y2') || '0', 10);\r\n var gradient = new LinearGradient(x1, y1, x2, y2);\r\n _parseGradientColorStops(xmlNode, gradient);\r\n return gradient;\r\n }\r\n};\r\nfunction _parseGradientColorStops(xmlNode, gradient) {\r\n var stop = xmlNode.firstChild;\r\n while (stop) {\r\n if (stop.nodeType === 1) {\r\n var offsetStr = stop.getAttribute('offset');\r\n var offset = void 0;\r\n if (offsetStr.indexOf('%') > 0) {\r\n offset = parseInt(offsetStr, 10) / 100;\r\n }\r\n else if (offsetStr) {\r\n offset = parseFloat(offsetStr);\r\n }\r\n else {\r\n offset = 0;\r\n }\r\n var stopColor = stop.getAttribute('stop-color') || '#000000';\r\n gradient.colorStops.push({\r\n offset: offset,\r\n color: stopColor\r\n });\r\n }\r\n stop = stop.nextSibling;\r\n }\r\n}\r\nfunction inheritStyle(parent, child) {\r\n if (parent && parent.__inheritedStyle) {\r\n if (!child.__inheritedStyle) {\r\n child.__inheritedStyle = {};\r\n }\r\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\r\n }\r\n}\r\nfunction parsePoints(pointsString) {\r\n var list = trim(pointsString).split(DILIMITER_REG);\r\n var points = [];\r\n for (var i = 0; i < list.length; i += 2) {\r\n var x = parseFloat(list[i]);\r\n var y = parseFloat(list[i + 1]);\r\n points.push([x, y]);\r\n }\r\n return points;\r\n}\r\nvar attributesMap = {\r\n 'fill': 'fill',\r\n 'stroke': 'stroke',\r\n 'stroke-width': 'lineWidth',\r\n 'opacity': 'opacity',\r\n 'fill-opacity': 'fillOpacity',\r\n 'stroke-opacity': 'strokeOpacity',\r\n 'stroke-dasharray': 'lineDash',\r\n 'stroke-dashoffset': 'lineDashOffset',\r\n 'stroke-linecap': 'lineCap',\r\n 'stroke-linejoin': 'lineJoin',\r\n 'stroke-miterlimit': 'miterLimit',\r\n 'font-family': 'fontFamily',\r\n 'font-size': 'fontSize',\r\n 'font-style': 'fontStyle',\r\n 'font-weight': 'fontWeight',\r\n 'text-align': 'textAlign',\r\n 'alignment-baseline': 'textBaseline'\r\n};\r\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\r\n var disp = el;\r\n var zrStyle = disp.__inheritedStyle || {};\r\n if (xmlNode.nodeType === 1) {\r\n parseTransformAttribute(xmlNode, el);\r\n extend(zrStyle, parseStyleAttribute(xmlNode));\r\n if (!onlyInlineStyle) {\r\n for (var svgAttrName in attributesMap) {\r\n if (attributesMap.hasOwnProperty(svgAttrName)) {\r\n var attrValue = xmlNode.getAttribute(svgAttrName);\r\n if (attrValue != null) {\r\n zrStyle[attributesMap[svgAttrName]] = attrValue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n disp.style = disp.style || {};\r\n zrStyle.fill != null && (disp.style.fill = getPaint(zrStyle.fill, defs));\r\n zrStyle.stroke != null && (disp.style.stroke = getPaint(zrStyle.stroke, defs));\r\n each([\r\n 'lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'\r\n ], function (propName) {\r\n zrStyle[propName] != null && (disp.style[propName] = parseFloat(zrStyle[propName]));\r\n });\r\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\r\n zrStyle.textBaseline = 'alphabetic';\r\n }\r\n if (zrStyle.textBaseline === 'alphabetic') {\r\n zrStyle.textBaseline = 'bottom';\r\n }\r\n if (zrStyle.textAlign === 'start') {\r\n zrStyle.textAlign = 'left';\r\n }\r\n if (zrStyle.textAlign === 'end') {\r\n zrStyle.textAlign = 'right';\r\n }\r\n each(['lineDashOffset', 'lineCap', 'lineJoin',\r\n 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'\r\n ], function (propName) {\r\n zrStyle[propName] != null && (disp.style[propName] = zrStyle[propName]);\r\n });\r\n if (zrStyle.lineDash) {\r\n disp.style.lineDash = map(trim(zrStyle.lineDash).split(DILIMITER_REG), function (str) {\r\n return parseFloat(str);\r\n });\r\n }\r\n disp.__inheritedStyle = zrStyle;\r\n}\r\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\r\nfunction getPaint(str, defs) {\r\n var urlMatch = defs && str && str.match(urlRegex);\r\n if (urlMatch) {\r\n var url = trim(urlMatch[1]);\r\n var def = defs[url];\r\n return def;\r\n }\r\n return str;\r\n}\r\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\r\nfunction parseTransformAttribute(xmlNode, node) {\r\n var transform = xmlNode.getAttribute('transform');\r\n if (transform) {\r\n transform = transform.replace(/,/g, ' ');\r\n var transformOps_1 = [];\r\n var m = null;\r\n transform.replace(transformRegex, function (str, type, value) {\r\n transformOps_1.push(type, value);\r\n return '';\r\n });\r\n for (var i = transformOps_1.length - 1; i > 0; i -= 2) {\r\n var value = transformOps_1[i];\r\n var type = transformOps_1[i - 1];\r\n var valueArr = void 0;\r\n m = m || create$1();\r\n switch (type) {\r\n case 'translate':\r\n valueArr = trim(value).split(DILIMITER_REG);\r\n translate(m, m, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || '0')]);\r\n break;\r\n case 'scale':\r\n valueArr = trim(value).split(DILIMITER_REG);\r\n scale$1(m, m, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]);\r\n break;\r\n case 'rotate':\r\n valueArr = trim(value).split(DILIMITER_REG);\r\n rotate(m, m, parseFloat(valueArr[0]));\r\n break;\r\n case 'skew':\r\n valueArr = trim(value).split(DILIMITER_REG);\r\n console.warn('Skew transform is not supported yet');\r\n break;\r\n case 'matrix':\r\n valueArr = trim(value).split(DILIMITER_REG);\r\n m[0] = parseFloat(valueArr[0]);\r\n m[1] = parseFloat(valueArr[1]);\r\n m[2] = parseFloat(valueArr[2]);\r\n m[3] = parseFloat(valueArr[3]);\r\n m[4] = parseFloat(valueArr[4]);\r\n m[5] = parseFloat(valueArr[5]);\r\n break;\r\n }\r\n }\r\n node.setLocalTransform(m);\r\n }\r\n}\r\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\r\nfunction parseStyleAttribute(xmlNode) {\r\n var style = xmlNode.getAttribute('style');\r\n var result = {};\r\n if (!style) {\r\n return result;\r\n }\r\n var styleList = {};\r\n styleRegex.lastIndex = 0;\r\n var styleRegResult;\r\n while ((styleRegResult = styleRegex.exec(style)) != null) {\r\n styleList[styleRegResult[1]] = styleRegResult[2];\r\n }\r\n for (var svgAttrName in attributesMap) {\r\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\r\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\r\n }\r\n }\r\n return result;\r\n}\r\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\r\n var scaleX = width / viewBoxRect.width;\r\n var scaleY = height / viewBoxRect.height;\r\n var scale = Math.min(scaleX, scaleY);\r\n return {\r\n scale: scale,\r\n x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2,\r\n y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2\r\n };\r\n}\r\nfunction parseSVG(xml, opt) {\r\n var parser = new SVGParser();\r\n return parser.parse(xml, opt);\r\n}\n\nvar PI$2 = Math.PI;\r\nvar PI2$5 = PI$2 * 2;\r\nvar mathSin$3 = Math.sin;\r\nvar mathCos$3 = Math.cos;\r\nvar mathACos = Math.acos;\r\nvar mathATan2 = Math.atan2;\r\nvar mathAbs$1 = Math.abs;\r\nvar mathSqrt$4 = Math.sqrt;\r\nvar mathMax$3 = Math.max;\r\nvar mathMin$3 = Math.min;\r\nvar e = 1e-4;\r\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\r\n var x10 = x1 - x0;\r\n var y10 = y1 - y0;\r\n var x32 = x3 - x2;\r\n var y32 = y3 - y2;\r\n var t = y32 * x10 - x32 * y10;\r\n if (t * t < e) {\r\n return;\r\n }\r\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\r\n return [x0 + t * x10, y0 + t * y10];\r\n}\r\nfunction computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {\r\n var x01 = x0 - x1;\r\n var y01 = y0 - y1;\r\n var lo = (clockwise ? cr : -cr) / mathSqrt$4(x01 * x01 + y01 * y01);\r\n var ox = lo * y01;\r\n var oy = -lo * x01;\r\n var x11 = x0 + ox;\r\n var y11 = y0 + oy;\r\n var x10 = x1 + ox;\r\n var y10 = y1 + oy;\r\n var x00 = (x11 + x10) / 2;\r\n var y00 = (y11 + y10) / 2;\r\n var dx = x10 - x11;\r\n var dy = y10 - y11;\r\n var d2 = dx * dx + dy * dy;\r\n var r = radius - cr;\r\n var s = x11 * y10 - x10 * y11;\r\n var d = (dy < 0 ? -1 : 1) * mathSqrt$4(mathMax$3(0, r * r * d2 - s * s));\r\n var cx0 = (s * dy - dx * d) / d2;\r\n var cy0 = (-s * dx - dy * d) / d2;\r\n var cx1 = (s * dy + dx * d) / d2;\r\n var cy1 = (-s * dx + dy * d) / d2;\r\n var dx0 = cx0 - x00;\r\n var dy0 = cy0 - y00;\r\n var dx1 = cx1 - x00;\r\n var dy1 = cy1 - y00;\r\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\r\n cx0 = cx1;\r\n cy0 = cy1;\r\n }\r\n return {\r\n cx: cx0,\r\n cy: cy0,\r\n x01: -ox,\r\n y01: -oy,\r\n x11: cx0 * (radius / r - 1),\r\n y11: cy0 * (radius / r - 1)\r\n };\r\n}\r\nfunction buildPath$2(ctx, shape) {\r\n var radius = mathMax$3(shape.r, 0);\r\n var innerRadius = mathMax$3(shape.r0 || 0, 0);\r\n var hasRadius = radius > 0;\r\n var hasInnerRadius = innerRadius > 0;\r\n if (!hasRadius && !hasInnerRadius) {\r\n return;\r\n }\r\n if (!hasRadius) {\r\n radius = innerRadius;\r\n innerRadius = 0;\r\n }\r\n if (innerRadius > radius) {\r\n var tmp = radius;\r\n radius = innerRadius;\r\n innerRadius = tmp;\r\n }\r\n var clockwise = !!shape.clockwise;\r\n var startAngle = shape.startAngle;\r\n var endAngle = shape.endAngle;\r\n var tmpAngles = [startAngle, endAngle];\r\n normalizeArcAngles(tmpAngles, !clockwise);\r\n var arc = mathAbs$1(tmpAngles[0] - tmpAngles[1]);\r\n var x = shape.cx;\r\n var y = shape.cy;\r\n var cornerRadius = shape.cornerRadius || 0;\r\n var innerCornerRadius = shape.innerCornerRadius || 0;\r\n if (!(radius > e)) {\r\n ctx.moveTo(x, y);\r\n }\r\n else if (arc > PI2$5 - e) {\r\n ctx.moveTo(x + radius * mathCos$3(startAngle), y + radius * mathSin$3(startAngle));\r\n ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\r\n if (innerRadius > e) {\r\n ctx.moveTo(x + innerRadius * mathCos$3(endAngle), y + innerRadius * mathSin$3(endAngle));\r\n ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\r\n }\r\n }\r\n else {\r\n var halfRd = mathAbs$1(radius - innerRadius) / 2;\r\n var cr = mathMin$3(halfRd, cornerRadius);\r\n var icr = mathMin$3(halfRd, innerCornerRadius);\r\n var cr0 = icr;\r\n var cr1 = cr;\r\n var xrs = radius * mathCos$3(startAngle);\r\n var yrs = radius * mathSin$3(startAngle);\r\n var xire = innerRadius * mathCos$3(endAngle);\r\n var yire = innerRadius * mathSin$3(endAngle);\r\n var xre = void 0;\r\n var yre = void 0;\r\n var xirs = void 0;\r\n var yirs = void 0;\r\n if (cr > e || icr > e) {\r\n xre = radius * mathCos$3(endAngle);\r\n yre = radius * mathSin$3(endAngle);\r\n xirs = innerRadius * mathCos$3(startAngle);\r\n yirs = innerRadius * mathSin$3(startAngle);\r\n if (arc < PI$2) {\r\n var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);\r\n if (it_1) {\r\n var x0 = xrs - it_1[0];\r\n var y0 = yrs - it_1[1];\r\n var x1 = xre - it_1[0];\r\n var y1 = yre - it_1[1];\r\n var a = 1 / mathSin$3(mathACos((x0 * x1 + y0 * y1) / (mathSqrt$4(x0 * x0 + y0 * y0) * mathSqrt$4(x1 * x1 + y1 * y1))) / 2);\r\n var b = mathSqrt$4(it_1[0] * it_1[0] + it_1[1] * it_1[1]);\r\n cr0 = mathMin$3(icr, (innerRadius - b) / (a - 1));\r\n cr1 = mathMin$3(cr, (radius - b) / (a + 1));\r\n }\r\n }\r\n }\r\n if (!(arc > e)) {\r\n ctx.moveTo(x + xrs, y + yrs);\r\n }\r\n else if (cr1 > e) {\r\n var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, cr1, clockwise);\r\n var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, cr1, clockwise);\r\n ctx.moveTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\r\n if (cr1 < cr) {\r\n ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n }\r\n else {\r\n ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\r\n ctx.arc(x, y, radius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), !clockwise);\r\n ctx.arc(x + ct1.cx, y + ct1.cy, cr1, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n }\r\n }\r\n else {\r\n ctx.moveTo(x + xrs, y + yrs);\r\n ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\r\n }\r\n if (!(innerRadius > e) || !(arc > e)) {\r\n ctx.lineTo(x + xire, y + yire);\r\n }\r\n else if (cr0 > e) {\r\n var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -cr0, clockwise);\r\n var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -cr0, clockwise);\r\n ctx.lineTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\r\n if (cr0 < icr) {\r\n ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n }\r\n else {\r\n ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\r\n ctx.arc(x, y, innerRadius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), clockwise);\r\n ctx.arc(x + ct1.cx, y + ct1.cy, cr0, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n }\r\n }\r\n else {\r\n ctx.lineTo(x + xire, y + yire);\r\n ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\r\n }\r\n }\r\n ctx.closePath();\r\n}\n\nvar SectorShape = (function () {\r\n function SectorShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.r0 = 0;\r\n this.r = 0;\r\n this.startAngle = 0;\r\n this.endAngle = Math.PI * 2;\r\n this.clockwise = true;\r\n this.cornerRadius = 0;\r\n this.innerCornerRadius = 0;\r\n }\r\n return SectorShape;\r\n}());\r\nvar Sector = (function (_super) {\r\n __extends(Sector, _super);\r\n function Sector(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Sector.prototype.getDefaultShape = function () {\r\n return new SectorShape();\r\n };\r\n Sector.prototype.buildPath = function (ctx, shape) {\r\n buildPath$2(ctx, shape);\r\n };\r\n Sector.prototype.isZeroArea = function () {\r\n return this.shape.startAngle === this.shape.endAngle\r\n || this.shape.r === this.shape.r0;\r\n };\r\n return Sector;\r\n}(Path));\r\nSector.prototype.type = 'sector';\n\nvar CMD$3 = PathProxy.CMD;\r\nvar PI2$6 = Math.PI * 2;\r\nvar PROP_XY = ['x', 'y'];\r\nvar PROP_WH = ['width', 'height'];\r\nvar tmpArr = [];\r\nfunction aroundEqual(a, b) {\r\n return Math.abs(a - b) < 1e-5;\r\n}\r\nfunction pathToBezierCurves(path) {\r\n var data = path.data;\r\n var len = path.len();\r\n var bezierArray = [];\r\n var currentSubpath;\r\n var xi = 0;\r\n var yi = 0;\r\n var x0 = 0;\r\n var y0 = 0;\r\n function createNewSubpath(x, y) {\r\n if (currentSubpath && currentSubpath.length > 2) {\r\n bezierArray.push(currentSubpath);\r\n }\r\n currentSubpath = [x, y];\r\n }\r\n function addLine(x0, y0, x1, y1) {\r\n if (!(aroundEqual(x0, x1) && aroundEqual(y0, y1))) {\r\n currentSubpath.push(x0, y0, x1, y1, x1, y1);\r\n }\r\n }\r\n function addArc(startAngle, endAngle, cx, cy, rx, ry) {\r\n var delta = Math.abs(endAngle - startAngle);\r\n var len = Math.tan(delta / 4) * 4 / 3;\r\n var dir = endAngle < startAngle ? -1 : 1;\r\n var c1 = Math.cos(startAngle);\r\n var s1 = Math.sin(startAngle);\r\n var c2 = Math.cos(endAngle);\r\n var s2 = Math.sin(endAngle);\r\n var x1 = c1 * rx + cx;\r\n var y1 = s1 * ry + cy;\r\n var x4 = c2 * rx + cx;\r\n var y4 = s2 * ry + cy;\r\n var hx = rx * len * dir;\r\n var hy = ry * len * dir;\r\n currentSubpath.push(x1 - hx * s1, y1 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);\r\n }\r\n var x1;\r\n var y1;\r\n var x2;\r\n var y2;\r\n for (var i = 0; i < len;) {\r\n var cmd = data[i++];\r\n var isFirst = i === 1;\r\n if (isFirst) {\r\n xi = data[i];\r\n yi = data[i + 1];\r\n x0 = xi;\r\n y0 = yi;\r\n if (cmd === CMD$3.L || cmd === CMD$3.C || cmd === CMD$3.Q) {\r\n currentSubpath = [x0, y0];\r\n }\r\n }\r\n switch (cmd) {\r\n case CMD$3.M:\r\n xi = x0 = data[i++];\r\n yi = y0 = data[i++];\r\n createNewSubpath(x0, y0);\r\n break;\r\n case CMD$3.L:\r\n x1 = data[i++];\r\n y1 = data[i++];\r\n addLine(xi, yi, x1, y1);\r\n xi = x1;\r\n yi = y1;\r\n break;\r\n case CMD$3.C:\r\n currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]);\r\n break;\r\n case CMD$3.Q:\r\n x1 = data[i++];\r\n y1 = data[i++];\r\n x2 = data[i++];\r\n y2 = data[i++];\r\n currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);\r\n xi = x2;\r\n yi = y2;\r\n break;\r\n case CMD$3.A:\r\n var cx = data[i++];\r\n var cy = data[i++];\r\n var rx = data[i++];\r\n var ry = data[i++];\r\n var startAngle = data[i++];\r\n var endAngle = data[i++] + startAngle;\r\n i += 1;\r\n var anticlockwise = !data[i++];\r\n x1 = Math.cos(startAngle) * rx + cx;\r\n y1 = Math.sin(startAngle) * ry + cy;\r\n if (isFirst) {\r\n x0 = x1;\r\n y0 = y1;\r\n createNewSubpath(x0, y0);\r\n }\r\n else {\r\n addLine(xi, yi, x1, y1);\r\n }\r\n xi = Math.cos(endAngle) * rx + cx;\r\n yi = Math.sin(endAngle) * ry + cy;\r\n var step = (anticlockwise ? -1 : 1) * Math.PI / 2;\r\n for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {\r\n var nextAngle = anticlockwise ? Math.max(angle + step, endAngle)\r\n : Math.min(angle + step, endAngle);\r\n addArc(angle, nextAngle, cx, cy, rx, ry);\r\n }\r\n break;\r\n case CMD$3.R:\r\n x0 = xi = data[i++];\r\n y0 = yi = data[i++];\r\n x1 = x0 + data[i++];\r\n y1 = y0 + data[i++];\r\n createNewSubpath(x1, y0);\r\n addLine(x1, y0, x1, y1);\r\n addLine(x1, y1, x0, y1);\r\n addLine(x0, y1, x0, y0);\r\n addLine(x0, y0, x1, y0);\r\n break;\r\n case CMD$3.Z:\r\n currentSubpath && addLine(xi, yi, x0, y0);\r\n xi = x0;\r\n yi = y0;\r\n break;\r\n }\r\n }\r\n if (currentSubpath && currentSubpath.length > 2) {\r\n bezierArray.push(currentSubpath);\r\n }\r\n return bezierArray;\r\n}\r\nfunction alignSubpath(subpath1, subpath2) {\r\n var len1 = subpath1.length;\r\n var len2 = subpath2.length;\r\n if (len1 === len2) {\r\n return [subpath1, subpath2];\r\n }\r\n var shorterPath = len1 < len2 ? subpath1 : subpath2;\r\n var shorterLen = Math.min(len1, len2);\r\n var diff = Math.abs(len2 - len1) / 6;\r\n var shorterBezierCount = (shorterLen - 2) / 6;\r\n var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;\r\n var newSubpath = [shorterPath[0], shorterPath[1]];\r\n var remained = diff;\r\n var tmpSegX = [];\r\n var tmpSegY = [];\r\n for (var i = 2; i < shorterLen;) {\r\n var x0 = shorterPath[i - 2];\r\n var y0 = shorterPath[i - 1];\r\n var x1 = shorterPath[i++];\r\n var y1 = shorterPath[i++];\r\n var x2 = shorterPath[i++];\r\n var y2 = shorterPath[i++];\r\n var x3 = shorterPath[i++];\r\n var y3 = shorterPath[i++];\r\n if (remained <= 0) {\r\n newSubpath.push(x1, y1, x2, y2, x3, y3);\r\n continue;\r\n }\r\n var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;\r\n for (var k = 1; k <= actualSubDivCount; k++) {\r\n var p = k / actualSubDivCount;\r\n cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);\r\n cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);\r\n x0 = tmpSegX[3];\r\n y0 = tmpSegY[3];\r\n newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);\r\n x1 = tmpSegX[5];\r\n y1 = tmpSegY[5];\r\n x2 = tmpSegX[6];\r\n y2 = tmpSegY[6];\r\n }\r\n remained -= actualSubDivCount - 1;\r\n }\r\n return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];\r\n}\r\nfunction createSubpath(lastSubpathSubpath, otherSubpath) {\r\n var len = lastSubpathSubpath.length;\r\n var lastX = lastSubpathSubpath[len - 2];\r\n var lastY = lastSubpathSubpath[len - 1];\r\n var newSubpath = [];\r\n for (var i = 0; i < otherSubpath.length;) {\r\n newSubpath[i++] = lastX;\r\n newSubpath[i++] = lastY;\r\n }\r\n return newSubpath;\r\n}\r\nfunction alignBezierCurves(array1, array2) {\r\n var _a;\r\n var lastSubpath1;\r\n var lastSubpath2;\r\n var newArray1 = [];\r\n var newArray2 = [];\r\n for (var i = 0; i < Math.max(array1.length, array2.length); i++) {\r\n var subpath1 = array1[i];\r\n var subpath2 = array2[i];\r\n var newSubpath1 = void 0;\r\n var newSubpath2 = void 0;\r\n if (!subpath1) {\r\n newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);\r\n newSubpath2 = subpath2;\r\n }\r\n else if (!subpath2) {\r\n newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);\r\n newSubpath1 = subpath1;\r\n }\r\n else {\r\n _a = alignSubpath(subpath1, subpath2), newSubpath1 = _a[0], newSubpath2 = _a[1];\r\n lastSubpath1 = newSubpath1;\r\n lastSubpath2 = newSubpath2;\r\n }\r\n newArray1.push(newSubpath1);\r\n newArray2.push(newSubpath2);\r\n }\r\n return [newArray1, newArray2];\r\n}\r\nfunction centroid(array) {\r\n var signedArea = 0;\r\n var cx = 0;\r\n var cy = 0;\r\n var len = array.length;\r\n for (var i = 0, j = len - 2; i < len; j = i, i += 2) {\r\n var x0 = array[j];\r\n var y0 = array[j + 1];\r\n var x1 = array[i];\r\n var y1 = array[i + 1];\r\n var a = x0 * y1 - x1 * y0;\r\n signedArea += a;\r\n cx += (x0 + x1) * a;\r\n cy += (y0 + y1) * a;\r\n }\r\n if (signedArea === 0) {\r\n return [array[0] || 0, array[1] || 0];\r\n }\r\n return [cx / signedArea / 3, cy / signedArea / 3, signedArea];\r\n}\r\nfunction findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {\r\n var bezierCount = (fromSubBeziers.length - 2) / 6;\r\n var bestScore = Infinity;\r\n var bestOffset = 0;\r\n var len = fromSubBeziers.length;\r\n var len2 = len - 2;\r\n for (var offset = 0; offset < bezierCount; offset++) {\r\n var cursorOffset = offset * 6;\r\n var score = 0;\r\n for (var k = 0; k < len; k += 2) {\r\n var idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2 + 2);\r\n var x0 = fromSubBeziers[idx] - fromCp[0];\r\n var y0 = fromSubBeziers[idx + 1] - fromCp[1];\r\n var x1 = toSubBeziers[k] - toCp[0];\r\n var y1 = toSubBeziers[k + 1] - toCp[1];\r\n var dx = x1 - x0;\r\n var dy = y1 - y0;\r\n score += dx * dx + dy * dy;\r\n }\r\n if (score < bestScore) {\r\n bestScore = score;\r\n bestOffset = offset;\r\n }\r\n }\r\n return bestOffset;\r\n}\r\nfunction reverse(array) {\r\n var newArr = [];\r\n var len = array.length;\r\n for (var i = 0; i < len; i += 2) {\r\n newArr[i] = array[len - i - 2];\r\n newArr[i + 1] = array[len - i - 1];\r\n }\r\n return newArr;\r\n}\r\nfunction findBestMorphingRotation(fromArr, toArr, searchAngleIteration, searchAngleRange) {\r\n var result = [];\r\n var fromNeedsReverse;\r\n for (var i = 0; i < fromArr.length; i++) {\r\n var fromSubpathBezier = fromArr[i];\r\n var toSubpathBezier = toArr[i];\r\n var fromCp = centroid(fromSubpathBezier);\r\n var toCp = centroid(toSubpathBezier);\r\n if (fromNeedsReverse == null) {\r\n fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;\r\n }\r\n var newFromSubpathBezier = [];\r\n var newToSubpathBezier = [];\r\n var bestAngle = 0;\r\n var bestScore = Infinity;\r\n var tmpArr_1 = [];\r\n var len = fromSubpathBezier.length;\r\n if (fromNeedsReverse) {\r\n fromSubpathBezier = reverse(fromSubpathBezier);\r\n }\r\n var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;\r\n var len2 = len - 2;\r\n for (var k = 0; k < len2; k += 2) {\r\n var idx = (offset + k) % len2 + 2;\r\n newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];\r\n newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];\r\n }\r\n newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];\r\n newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];\r\n if (searchAngleIteration > 0) {\r\n var step = searchAngleRange / searchAngleIteration;\r\n for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {\r\n var sa = Math.sin(angle);\r\n var ca = Math.cos(angle);\r\n var score = 0;\r\n for (var k = 0; k < fromSubpathBezier.length; k += 2) {\r\n var x0 = newFromSubpathBezier[k];\r\n var y0 = newFromSubpathBezier[k + 1];\r\n var x1 = toSubpathBezier[k] - toCp[0];\r\n var y1 = toSubpathBezier[k + 1] - toCp[1];\r\n var newX1 = x1 * ca - y1 * sa;\r\n var newY1 = x1 * sa + y1 * ca;\r\n tmpArr_1[k] = newX1;\r\n tmpArr_1[k + 1] = newY1;\r\n var dx = newX1 - x0;\r\n var dy = newY1 - y0;\r\n score += dx * dx + dy * dy;\r\n }\r\n if (score < bestScore) {\r\n bestScore = score;\r\n bestAngle = angle;\r\n for (var m = 0; m < tmpArr_1.length; m++) {\r\n newToSubpathBezier[m] = tmpArr_1[m];\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i_1 = 0; i_1 < len; i_1 += 2) {\r\n newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0];\r\n newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1];\r\n }\r\n }\r\n result.push({\r\n from: newFromSubpathBezier,\r\n to: newToSubpathBezier,\r\n fromCp: fromCp,\r\n toCp: toCp,\r\n rotation: -bestAngle\r\n });\r\n }\r\n return result;\r\n}\r\nfunction morphPath(fromPath, toPath, animationOpts) {\r\n var fromPathProxy;\r\n var toPathProxy;\r\n if (!fromPath || !toPath) {\r\n return toPath;\r\n }\r\n !fromPath.path && fromPath.createPathProxy();\r\n fromPathProxy = fromPath.path;\r\n fromPathProxy.beginPath();\r\n fromPath.buildPath(fromPathProxy, fromPath.shape);\r\n !toPath.path && toPath.createPathProxy();\r\n toPathProxy = toPath.path;\r\n toPathProxy === fromPathProxy && (toPathProxy = new PathProxy(false));\r\n toPathProxy.beginPath();\r\n if (isIndividualMorphingPath(toPath)) {\r\n toPath.__oldBuildPath(toPathProxy, toPath.shape);\r\n }\r\n else {\r\n toPath.buildPath(toPathProxy, toPath.shape);\r\n }\r\n var _a = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a[0], toBezierCurves = _a[1];\r\n var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);\r\n becomeIndividualMorphingPath(toPath, morphingData, 0);\r\n var oldDone = animationOpts && animationOpts.done;\r\n var oldAborted = animationOpts && animationOpts.aborted;\r\n var oldDuring = animationOpts && animationOpts.during;\r\n toPath.animateTo({\r\n __morphT: 1\r\n }, defaults({\r\n during: function (p) {\r\n toPath.dirtyShape();\r\n oldDuring && oldDuring(p);\r\n },\r\n done: function () {\r\n restoreIndividualMorphingPath(toPath);\r\n toPath.createPathProxy();\r\n toPath.dirtyShape();\r\n oldDone && oldDone();\r\n },\r\n aborted: function () {\r\n oldAborted && oldAborted();\r\n }\r\n }, animationOpts));\r\n return toPath;\r\n}\r\nfunction morphingPathBuildPath(path) {\r\n var morphingData = this.__morphingData;\r\n var t = this.__morphT;\r\n var onet = 1 - t;\r\n var newCp = [];\r\n for (var i = 0; i < morphingData.length; i++) {\r\n var item = morphingData[i];\r\n var from = item.from;\r\n var to = item.to;\r\n var angle = item.rotation * t;\r\n var fromCp = item.fromCp;\r\n var toCp = item.toCp;\r\n var sa = Math.sin(angle);\r\n var ca = Math.cos(angle);\r\n lerp(newCp, fromCp, toCp, t);\r\n for (var m = 0; m < from.length; m += 2) {\r\n var x0 = from[m];\r\n var y0 = from[m + 1];\r\n var x1 = to[m];\r\n var y1 = to[m + 1];\r\n var x = x0 * onet + x1 * t;\r\n var y = y0 * onet + y1 * t;\r\n tmpArr[m] = (x * ca - y * sa) + newCp[0];\r\n tmpArr[m + 1] = (x * sa + y * ca) + newCp[1];\r\n }\r\n for (var m = 0; m < from.length;) {\r\n if (m === 0) {\r\n path.moveTo(tmpArr[m++], tmpArr[m++]);\r\n }\r\n path.bezierCurveTo(tmpArr[m++], tmpArr[m++], tmpArr[m++], tmpArr[m++], tmpArr[m++], tmpArr[m++]);\r\n }\r\n }\r\n}\r\nfunction becomeIndividualMorphingPath(path, morphingData, morphT) {\r\n if (isIndividualMorphingPath(path)) {\r\n updateIndividualMorphingPath(path, morphingData, morphT);\r\n return;\r\n }\r\n var morphingPath = path;\r\n morphingPath.__oldBuildPath = morphingPath.buildPath;\r\n morphingPath.buildPath = morphingPathBuildPath;\r\n updateIndividualMorphingPath(morphingPath, morphingData, morphT);\r\n}\r\nfunction updateIndividualMorphingPath(morphingPath, morphingData, morphT) {\r\n morphingPath.__morphingData = morphingData;\r\n morphingPath.__morphT = morphT;\r\n}\r\nfunction restoreIndividualMorphingPath(path) {\r\n if (isIndividualMorphingPath(path)) {\r\n path.buildPath = path.__oldBuildPath;\r\n path.__oldBuildPath = path.__morphingData = null;\r\n }\r\n}\r\nfunction isIndividualMorphingPath(path) {\r\n return path.__oldBuildPath != null;\r\n}\r\nfunction isCombiningPath(path) {\r\n return !!path.__combiningSubList;\r\n}\r\nfunction isInAnyMorphing(path) {\r\n return isIndividualMorphingPath(path) || isCombiningPath(path);\r\n}\r\nfunction combine(fromPathList, toPath, animationOpts, copyPropsIfDivided) {\r\n var fromIndividuals = [];\r\n var separateCount = 0;\r\n for (var i = 0; i < fromPathList.length; i++) {\r\n var fromPath = fromPathList[i];\r\n if (isCombiningPath(fromPath)) {\r\n var fromCombiningSubList = fromPath.__combiningSubList;\r\n for (var j = 0; j < fromCombiningSubList.length; j++) {\r\n fromIndividuals.push(fromCombiningSubList[j]);\r\n }\r\n separateCount += fromCombiningSubList.length;\r\n }\r\n else {\r\n fromIndividuals.push(fromPath);\r\n separateCount++;\r\n }\r\n }\r\n if (!separateCount) {\r\n return;\r\n }\r\n var dividingMethod = animationOpts ? animationOpts.dividingMethod : null;\r\n var toPathSplittedList = divideShape(toPath, separateCount, dividingMethod);\r\n assert(toPathSplittedList.length === separateCount);\r\n var oldDone = animationOpts && animationOpts.done;\r\n var oldAborted = animationOpts && animationOpts.aborted;\r\n var oldDuring = animationOpts && animationOpts.during;\r\n var doneCount = 0;\r\n var abortedCalled = false;\r\n var morphAnimationOpts = defaults({\r\n during: function (p) {\r\n oldDuring && oldDuring(p);\r\n },\r\n done: function () {\r\n doneCount++;\r\n if (doneCount === toPathSplittedList.length) {\r\n restoreCombiningPath(toPath);\r\n oldDone && oldDone();\r\n }\r\n },\r\n aborted: function () {\r\n if (!abortedCalled) {\r\n abortedCalled = true;\r\n oldAborted && oldAborted();\r\n }\r\n }\r\n }, animationOpts);\r\n for (var i = 0; i < separateCount; i++) {\r\n var from = fromIndividuals[i];\r\n var to = toPathSplittedList[i];\r\n copyPropsIfDivided && copyPropsIfDivided(toPath, to, true);\r\n morphPath(from, to, morphAnimationOpts);\r\n }\r\n becomeCombiningPath(toPath, toPathSplittedList);\r\n return {\r\n fromIndividuals: fromIndividuals,\r\n toIndividuals: toPathSplittedList,\r\n count: separateCount\r\n };\r\n}\r\nfunction becomeCombiningPath(path, combiningSubList) {\r\n if (isCombiningPath(path)) {\r\n updateCombiningPathSubList(path, combiningSubList);\r\n return;\r\n }\r\n var combiningPath = path;\r\n updateCombiningPathSubList(combiningPath, combiningSubList);\r\n combiningPath.__oldAddSelfToZr = path.addSelfToZr;\r\n combiningPath.__oldRemoveSelfFromZr = path.removeSelfFromZr;\r\n combiningPath.addSelfToZr = combiningAddSelfToZr;\r\n combiningPath.removeSelfFromZr = combiningRemoveSelfFromZr;\r\n combiningPath.__oldBuildPath = combiningPath.buildPath;\r\n combiningPath.buildPath = noop;\r\n combiningPath.childrenRef = combiningChildrenRef;\r\n}\r\nfunction restoreCombiningPath(path) {\r\n if (!isCombiningPath(path)) {\r\n return;\r\n }\r\n var combiningPath = path;\r\n updateCombiningPathSubList(combiningPath, null);\r\n combiningPath.addSelfToZr = combiningPath.__oldAddSelfToZr;\r\n combiningPath.removeSelfFromZr = combiningPath.__oldRemoveSelfFromZr;\r\n combiningPath.buildPath = combiningPath.__oldBuildPath;\r\n combiningPath.childrenRef =\r\n combiningPath.__combiningSubList =\r\n combiningPath.__oldAddSelfToZr =\r\n combiningPath.__oldRemoveSelfFromZr =\r\n combiningPath.__oldBuildPath = null;\r\n}\r\nfunction updateCombiningPathSubList(combiningPath, combiningSubList) {\r\n if (combiningPath.__combiningSubList !== combiningSubList) {\r\n combiningPathSubListAddRemoveWithZr(combiningPath, 'removeSelfFromZr');\r\n combiningPath.__combiningSubList = combiningSubList;\r\n if (combiningSubList) {\r\n for (var i = 0; i < combiningSubList.length; i++) {\r\n combiningSubList[i].parent = combiningPath;\r\n }\r\n }\r\n combiningPathSubListAddRemoveWithZr(combiningPath, 'addSelfToZr');\r\n }\r\n}\r\nfunction combiningAddSelfToZr(zr) {\r\n this.__oldAddSelfToZr(zr);\r\n combiningPathSubListAddRemoveWithZr(this, 'addSelfToZr');\r\n}\r\nfunction combiningPathSubListAddRemoveWithZr(path, method) {\r\n var combiningSubList = path.__combiningSubList;\r\n var zr = path.__zr;\r\n if (combiningSubList && zr) {\r\n for (var i = 0; i < combiningSubList.length; i++) {\r\n var child = combiningSubList[i];\r\n child[method](zr);\r\n }\r\n }\r\n}\r\nfunction combiningRemoveSelfFromZr(zr) {\r\n this.__oldRemoveSelfFromZr(zr);\r\n var combiningSubList = this.__combiningSubList;\r\n for (var i = 0; i < combiningSubList.length; i++) {\r\n var child = combiningSubList[i];\r\n child.removeSelfFromZr(zr);\r\n }\r\n}\r\nfunction combiningChildrenRef() {\r\n return this.__combiningSubList;\r\n}\r\nfunction separate(fromPath, toPathList, animationOpts, copyPropsIfDivided) {\r\n var toPathListLen = toPathList.length;\r\n var fromPathList;\r\n var dividingMethod = animationOpts ? animationOpts.dividingMethod : null;\r\n var copyProps = false;\r\n if (isCombiningPath(fromPath)) {\r\n var fromCombiningSubList = fromPath.__combiningSubList;\r\n if (fromCombiningSubList.length === toPathListLen) {\r\n fromPathList = fromCombiningSubList;\r\n }\r\n else {\r\n fromPathList = divideShape(fromPath, toPathListLen, dividingMethod);\r\n copyProps = true;\r\n }\r\n }\r\n else {\r\n fromPathList = divideShape(fromPath, toPathListLen, dividingMethod);\r\n copyProps = true;\r\n }\r\n assert(fromPathList.length === toPathListLen);\r\n for (var i = 0; i < toPathListLen; i++) {\r\n if (copyProps && copyPropsIfDivided) {\r\n copyPropsIfDivided(fromPath, fromPathList[i], false);\r\n }\r\n morphPath(fromPathList[i], toPathList[i], animationOpts);\r\n }\r\n return {\r\n fromIndividuals: fromPathList,\r\n toIndividuals: toPathList,\r\n count: toPathListLen\r\n };\r\n}\r\nfunction divideShape(path, separateCount, dividingMethod) {\r\n return dividingMethod === 'duplicate'\r\n ? duplicateShape(path, separateCount)\r\n : splitShape(path, separateCount);\r\n}\r\nfunction splitShape(path, separateCount) {\r\n var resultPaths = [];\r\n if (separateCount <= 0) {\r\n return resultPaths;\r\n }\r\n if (separateCount === 1) {\r\n return duplicateShape(path, separateCount);\r\n }\r\n if (path instanceof Rect) {\r\n var toPathShape = path.shape;\r\n var splitPropIdx = toPathShape.height > toPathShape.width ? 1 : 0;\r\n var propWH = PROP_WH[splitPropIdx];\r\n var propXY = PROP_XY[splitPropIdx];\r\n var subWH = toPathShape[propWH] / separateCount;\r\n var xyCurr = toPathShape[propXY];\r\n for (var i = 0; i < separateCount; i++, xyCurr += subWH) {\r\n var subShape = {\r\n x: toPathShape.x,\r\n y: toPathShape.y,\r\n width: toPathShape.width,\r\n height: toPathShape.height\r\n };\r\n subShape[propXY] = xyCurr;\r\n subShape[propWH] = i < separateCount - 1\r\n ? subWH\r\n : toPathShape[propXY] + toPathShape[propWH] - xyCurr;\r\n var splitted = new Rect({ shape: subShape });\r\n resultPaths.push(splitted);\r\n }\r\n }\r\n else if (path instanceof Sector) {\r\n var toPathShape = path.shape;\r\n var clockwise = toPathShape.clockwise;\r\n var startAngle = toPathShape.startAngle;\r\n var endAngle = toPathShape.endAngle;\r\n var endAngleNormalized = normalizeRadian$1(startAngle, toPathShape.endAngle, clockwise);\r\n var step = (endAngleNormalized - startAngle) / separateCount;\r\n var angleCurr = startAngle;\r\n for (var i = 0; i < separateCount; i++, angleCurr += step) {\r\n var splitted = new Sector({\r\n shape: {\r\n cx: toPathShape.cx,\r\n cy: toPathShape.cy,\r\n r: toPathShape.r,\r\n r0: toPathShape.r0,\r\n clockwise: clockwise,\r\n startAngle: angleCurr,\r\n endAngle: i === separateCount - 1 ? endAngle : angleCurr + step\r\n }\r\n });\r\n resultPaths.push(splitted);\r\n }\r\n }\r\n else {\r\n return duplicateShape(path, separateCount);\r\n }\r\n return resultPaths;\r\n}\r\nfunction duplicateShape(path, separateCount) {\r\n var resultPaths = [];\r\n if (separateCount <= 0) {\r\n return resultPaths;\r\n }\r\n var ctor = path.constructor;\r\n for (var i = 0; i < separateCount; i++) {\r\n var sub = new ctor({\r\n shape: clone(path.shape)\r\n });\r\n resultPaths.push(sub);\r\n }\r\n return resultPaths;\r\n}\r\nfunction normalizeRadian$1(start, end, clockwise) {\r\n return end + PI2$6 * (Math[clockwise ? 'ceil' : 'floor']((start - end) / PI2$6));\r\n}\n\nvar CompoundPath = (function (_super) {\r\n __extends(CompoundPath, _super);\r\n function CompoundPath() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = 'compound';\r\n return _this;\r\n }\r\n CompoundPath.prototype._updatePathDirty = function () {\r\n var paths = this.shape.paths;\r\n var dirtyPath = this.shapeChanged();\r\n for (var i = 0; i < paths.length; i++) {\r\n dirtyPath = dirtyPath || paths[i].shapeChanged();\r\n }\r\n if (dirtyPath) {\r\n this.dirtyShape();\r\n }\r\n };\r\n CompoundPath.prototype.beforeBrush = function () {\r\n this._updatePathDirty();\r\n var paths = this.shape.paths || [];\r\n var scale = this.getGlobalScale();\r\n for (var i = 0; i < paths.length; i++) {\r\n if (!paths[i].path) {\r\n paths[i].createPathProxy();\r\n }\r\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\r\n }\r\n };\r\n CompoundPath.prototype.buildPath = function (ctx, shape) {\r\n var paths = shape.paths || [];\r\n for (var i = 0; i < paths.length; i++) {\r\n paths[i].buildPath(ctx, paths[i].shape, true);\r\n }\r\n };\r\n CompoundPath.prototype.afterBrush = function () {\r\n var paths = this.shape.paths || [];\r\n for (var i = 0; i < paths.length; i++) {\r\n paths[i].pathUpdated();\r\n }\r\n };\r\n CompoundPath.prototype.getBoundingRect = function () {\r\n this._updatePathDirty.call(this);\r\n return Path.prototype.getBoundingRect.call(this);\r\n };\r\n return CompoundPath;\r\n}(Path));\n\nvar m = [];\r\nvar IncrementalDisplayble = (function (_super) {\r\n __extends(IncrementalDisplayble, _super);\r\n function IncrementalDisplayble() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.notClear = true;\r\n _this.incremental = true;\r\n _this._displayables = [];\r\n _this._temporaryDisplayables = [];\r\n _this._cursor = 0;\r\n return _this;\r\n }\r\n IncrementalDisplayble.prototype.traverse = function (cb, context) {\r\n cb.call(context, this);\r\n };\r\n IncrementalDisplayble.prototype.useStyle = function () {\r\n this.style = {};\r\n };\r\n IncrementalDisplayble.prototype.getCursor = function () {\r\n return this._cursor;\r\n };\r\n IncrementalDisplayble.prototype.innerAfterBrush = function () {\r\n this._cursor = this._displayables.length;\r\n };\r\n IncrementalDisplayble.prototype.clearDisplaybles = function () {\r\n this._displayables = [];\r\n this._temporaryDisplayables = [];\r\n this._cursor = 0;\r\n this.markRedraw();\r\n this.notClear = false;\r\n };\r\n IncrementalDisplayble.prototype.clearTemporalDisplayables = function () {\r\n this._temporaryDisplayables = [];\r\n };\r\n IncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\r\n if (notPersistent) {\r\n this._temporaryDisplayables.push(displayable);\r\n }\r\n else {\r\n this._displayables.push(displayable);\r\n }\r\n this.markRedraw();\r\n };\r\n IncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\r\n notPersistent = notPersistent || false;\r\n for (var i = 0; i < displayables.length; i++) {\r\n this.addDisplayable(displayables[i], notPersistent);\r\n }\r\n };\r\n IncrementalDisplayble.prototype.getDisplayables = function () {\r\n return this._displayables;\r\n };\r\n IncrementalDisplayble.prototype.getTemporalDisplayables = function () {\r\n return this._temporaryDisplayables;\r\n };\r\n IncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\r\n for (var i = this._cursor; i < this._displayables.length; i++) {\r\n cb && cb(this._displayables[i]);\r\n }\r\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n cb && cb(this._temporaryDisplayables[i]);\r\n }\r\n };\r\n IncrementalDisplayble.prototype.update = function () {\r\n this.updateTransform();\r\n for (var i = this._cursor; i < this._displayables.length; i++) {\r\n var displayable = this._displayables[i];\r\n displayable.parent = this;\r\n displayable.update();\r\n displayable.parent = null;\r\n }\r\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n var displayable = this._temporaryDisplayables[i];\r\n displayable.parent = this;\r\n displayable.update();\r\n displayable.parent = null;\r\n }\r\n };\r\n IncrementalDisplayble.prototype.getBoundingRect = function () {\r\n if (!this._rect) {\r\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\r\n for (var i = 0; i < this._displayables.length; i++) {\r\n var displayable = this._displayables[i];\r\n var childRect = displayable.getBoundingRect().clone();\r\n if (displayable.needLocalTransform()) {\r\n childRect.applyTransform(displayable.getLocalTransform(m));\r\n }\r\n rect.union(childRect);\r\n }\r\n this._rect = rect;\r\n }\r\n return this._rect;\r\n };\r\n IncrementalDisplayble.prototype.contain = function (x, y) {\r\n var localPos = this.transformCoordToLocal(x, y);\r\n var rect = this.getBoundingRect();\r\n if (rect.contain(localPos[0], localPos[1])) {\r\n for (var i = 0; i < this._displayables.length; i++) {\r\n var displayable = this._displayables[i];\r\n if (displayable.contain(x, y)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n return IncrementalDisplayble;\r\n}(Displayable));\n\nvar globalImageCache = new LRU(50);\r\nfunction findExistImage(newImageOrSrc) {\r\n if (typeof newImageOrSrc === 'string') {\r\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n return cachedImgObj && cachedImgObj.image;\r\n }\r\n else {\r\n return newImageOrSrc;\r\n }\r\n}\r\nfunction createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\r\n if (!newImageOrSrc) {\r\n return image;\r\n }\r\n else if (typeof newImageOrSrc === 'string') {\r\n if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\r\n return image;\r\n }\r\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\r\n if (cachedImgObj) {\r\n image = cachedImgObj.image;\r\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\r\n }\r\n else {\r\n image = new Image();\r\n image.onload = image.onerror = imageOnLoad;\r\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\r\n image: image,\r\n pending: [pendingWrap]\r\n });\r\n image.src = image.__zrImageSrc = newImageOrSrc;\r\n }\r\n return image;\r\n }\r\n else {\r\n return newImageOrSrc;\r\n }\r\n}\r\nfunction imageOnLoad() {\r\n var cachedImgObj = this.__cachedImgObj;\r\n this.onload = this.onerror = this.__cachedImgObj = null;\r\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\r\n var pendingWrap = cachedImgObj.pending[i];\r\n var cb = pendingWrap.cb;\r\n cb && cb(this, pendingWrap.cbPayload);\r\n pendingWrap.hostEl.dirty();\r\n }\r\n cachedImgObj.pending.length = 0;\r\n}\r\nfunction isImageReady(image) {\r\n return image && image.width && image.height;\r\n}\n\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\r\nfunction truncateText(text, containerWidth, font, ellipsis, options) {\r\n if (!containerWidth) {\r\n return '';\r\n }\r\n var textLines = (text + '').split('\\n');\r\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\r\n for (var i = 0, len = textLines.length; i < len; i++) {\r\n textLines[i] = truncateSingleLine(textLines[i], options);\r\n }\r\n return textLines.join('\\n');\r\n}\r\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\r\n options = options || {};\r\n var preparedOpts = extend({}, options);\r\n preparedOpts.font = font;\r\n ellipsis = retrieve2(ellipsis, '...');\r\n preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\r\n var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\r\n preparedOpts.cnCharWidth = getWidth('国', font);\r\n var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\r\n preparedOpts.placeholder = retrieve2(options.placeholder, '');\r\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\r\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\r\n contentWidth -= ascCharWidth;\r\n }\r\n var ellipsisWidth = getWidth(ellipsis, font);\r\n if (ellipsisWidth > contentWidth) {\r\n ellipsis = '';\r\n ellipsisWidth = 0;\r\n }\r\n contentWidth = containerWidth - ellipsisWidth;\r\n preparedOpts.ellipsis = ellipsis;\r\n preparedOpts.ellipsisWidth = ellipsisWidth;\r\n preparedOpts.contentWidth = contentWidth;\r\n preparedOpts.containerWidth = containerWidth;\r\n return preparedOpts;\r\n}\r\nfunction truncateSingleLine(textLine, options) {\r\n var containerWidth = options.containerWidth;\r\n var font = options.font;\r\n var contentWidth = options.contentWidth;\r\n if (!containerWidth) {\r\n return '';\r\n }\r\n var lineWidth = getWidth(textLine, font);\r\n if (lineWidth <= containerWidth) {\r\n return textLine;\r\n }\r\n for (var j = 0;; j++) {\r\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\r\n textLine += options.ellipsis;\r\n break;\r\n }\r\n var subLength = j === 0\r\n ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\r\n : lineWidth > 0\r\n ? Math.floor(textLine.length * contentWidth / lineWidth)\r\n : 0;\r\n textLine = textLine.substr(0, subLength);\r\n lineWidth = getWidth(textLine, font);\r\n }\r\n if (textLine === '') {\r\n textLine = options.placeholder;\r\n }\r\n return textLine;\r\n}\r\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\r\n var width = 0;\r\n var i = 0;\r\n for (var len = text.length; i < len && width < contentWidth; i++) {\r\n var charCode = text.charCodeAt(i);\r\n width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\r\n }\r\n return i;\r\n}\r\nfunction parsePlainText(text, style) {\r\n text != null && (text += '');\r\n var overflow = style.overflow;\r\n var padding = style.padding;\r\n var font = style.font;\r\n var truncate = overflow === 'truncate';\r\n var calculatedLineHeight = getLineHeight(font);\r\n var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\r\n var truncateLineOverflow = style.lineOverflow === 'truncate';\r\n var width = style.width;\r\n var lines;\r\n if (width != null && overflow === 'break' || overflow === 'breakAll') {\r\n lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\r\n }\r\n else {\r\n lines = text ? text.split('\\n') : [];\r\n }\r\n var contentHeight = lines.length * lineHeight;\r\n var height = retrieve2(style.height, contentHeight);\r\n if (contentHeight > height && truncateLineOverflow) {\r\n var lineCount = Math.floor(height / lineHeight);\r\n lines = lines.slice(0, lineCount);\r\n }\r\n var outerHeight = height;\r\n var outerWidth = width;\r\n if (padding) {\r\n outerHeight += padding[0] + padding[2];\r\n if (outerWidth != null) {\r\n outerWidth += padding[1] + padding[3];\r\n }\r\n }\r\n if (text && truncate && outerWidth != null) {\r\n var options = prepareTruncateOptions(width, font, style.ellipsis, {\r\n minChar: style.truncateMinChar,\r\n placeholder: style.placeholder\r\n });\r\n for (var i = 0; i < lines.length; i++) {\r\n lines[i] = truncateSingleLine(lines[i], options);\r\n }\r\n }\r\n if (width == null) {\r\n var maxWidth = 0;\r\n for (var i = 0; i < lines.length; i++) {\r\n maxWidth = Math.max(getWidth(lines[i], font), maxWidth);\r\n }\r\n width = maxWidth;\r\n }\r\n return {\r\n lines: lines,\r\n height: height,\r\n outerHeight: outerHeight,\r\n lineHeight: lineHeight,\r\n calculatedLineHeight: calculatedLineHeight,\r\n contentHeight: contentHeight,\r\n width: width\r\n };\r\n}\r\nvar RichTextToken = (function () {\r\n function RichTextToken() {\r\n }\r\n return RichTextToken;\r\n}());\r\nvar RichTextLine = (function () {\r\n function RichTextLine(tokens) {\r\n this.tokens = [];\r\n if (tokens) {\r\n this.tokens = tokens;\r\n }\r\n }\r\n return RichTextLine;\r\n}());\r\nvar RichTextContentBlock = (function () {\r\n function RichTextContentBlock() {\r\n this.width = 0;\r\n this.height = 0;\r\n this.contentWidth = 0;\r\n this.contentHeight = 0;\r\n this.outerWidth = 0;\r\n this.outerHeight = 0;\r\n this.lines = [];\r\n }\r\n return RichTextContentBlock;\r\n}());\r\nfunction parseRichText(text, style) {\r\n var contentBlock = new RichTextContentBlock();\r\n text != null && (text += '');\r\n if (!text) {\r\n return contentBlock;\r\n }\r\n var topWidth = style.width;\r\n var topHeight = style.height;\r\n var overflow = style.overflow;\r\n var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\r\n ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\r\n : null;\r\n var lastIndex = STYLE_REG.lastIndex = 0;\r\n var result;\r\n while ((result = STYLE_REG.exec(text)) != null) {\r\n var matchedIndex = result.index;\r\n if (matchedIndex > lastIndex) {\r\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\r\n }\r\n pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\r\n lastIndex = STYLE_REG.lastIndex;\r\n }\r\n if (lastIndex < text.length) {\r\n pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\r\n }\r\n var pendingList = [];\r\n var calculatedHeight = 0;\r\n var calculatedWidth = 0;\r\n var stlPadding = style.padding;\r\n var truncate = overflow === 'truncate';\r\n var truncateLine = style.lineOverflow === 'truncate';\r\n function finishLine(line, lineWidth, lineHeight) {\r\n line.width = lineWidth;\r\n line.lineHeight = lineHeight;\r\n calculatedHeight += lineHeight;\r\n calculatedWidth = Math.max(calculatedWidth, lineWidth);\r\n }\r\n outer: for (var i = 0; i < contentBlock.lines.length; i++) {\r\n var line = contentBlock.lines[i];\r\n var lineHeight = 0;\r\n var lineWidth = 0;\r\n for (var j = 0; j < line.tokens.length; j++) {\r\n var token = line.tokens[j];\r\n var tokenStyle = token.styleName && style.rich[token.styleName] || {};\r\n var textPadding = token.textPadding = tokenStyle.padding;\r\n var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\r\n var font = token.font = tokenStyle.font || style.font;\r\n token.contentHeight = getLineHeight(font);\r\n var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\r\n token.innerHeight = tokenHeight;\r\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\r\n token.height = tokenHeight;\r\n token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\r\n token.align = tokenStyle && tokenStyle.align || style.align;\r\n token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\r\n if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\r\n if (j > 0) {\r\n line.tokens = line.tokens.slice(0, j);\r\n finishLine(line, lineWidth, lineHeight);\r\n contentBlock.lines = contentBlock.lines.slice(0, i + 1);\r\n }\r\n else {\r\n contentBlock.lines = contentBlock.lines.slice(0, i);\r\n }\r\n break outer;\r\n }\r\n var styleTokenWidth = tokenStyle.width;\r\n var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\r\n if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\r\n token.percentWidth = styleTokenWidth;\r\n pendingList.push(token);\r\n token.contentWidth = getWidth(token.text, font);\r\n }\r\n else {\r\n if (tokenWidthNotSpecified) {\r\n var textBackgroundColor = tokenStyle.backgroundColor;\r\n var bgImg = textBackgroundColor && textBackgroundColor.image;\r\n if (bgImg) {\r\n bgImg = findExistImage(bgImg);\r\n if (isImageReady(bgImg)) {\r\n token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\r\n }\r\n }\r\n }\r\n var remainTruncWidth = truncate && topWidth != null\r\n ? topWidth - lineWidth : null;\r\n if (remainTruncWidth != null && remainTruncWidth < token.width) {\r\n if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\r\n token.text = '';\r\n token.width = token.contentWidth = 0;\r\n }\r\n else {\r\n token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\r\n token.width = token.contentWidth = getWidth(token.text, font);\r\n }\r\n }\r\n else {\r\n token.contentWidth = getWidth(token.text, font);\r\n }\r\n }\r\n token.width += paddingH;\r\n lineWidth += token.width;\r\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\r\n }\r\n finishLine(line, lineWidth, lineHeight);\r\n }\r\n contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\r\n contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\r\n contentBlock.contentHeight = calculatedHeight;\r\n contentBlock.contentWidth = calculatedWidth;\r\n if (stlPadding) {\r\n contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\r\n contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\r\n }\r\n for (var i = 0; i < pendingList.length; i++) {\r\n var token = pendingList[i];\r\n var percentWidth = token.percentWidth;\r\n token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\r\n }\r\n return contentBlock;\r\n}\r\nfunction pushTokens(block, str, style, wrapInfo, styleName) {\r\n var isEmptyStr = str === '';\r\n var tokenStyle = styleName && style.rich[styleName] || {};\r\n var lines = block.lines;\r\n var font = tokenStyle.font || style.font;\r\n var newLine = false;\r\n var strLines;\r\n var linesWidths;\r\n if (wrapInfo) {\r\n var tokenPadding = tokenStyle.padding;\r\n var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\r\n if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\r\n var outerWidth_1 = parsePercent$1(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\r\n if (lines.length > 0) {\r\n if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\r\n strLines = str.split('\\n');\r\n newLine = true;\r\n }\r\n }\r\n wrapInfo.accumWidth = outerWidth_1;\r\n }\r\n else {\r\n var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\r\n wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\r\n linesWidths = res.linesWidths;\r\n strLines = res.lines;\r\n }\r\n }\r\n else {\r\n strLines = str.split('\\n');\r\n }\r\n for (var i = 0; i < strLines.length; i++) {\r\n var text = strLines[i];\r\n var token = new RichTextToken();\r\n token.styleName = styleName;\r\n token.text = text;\r\n token.isLineHolder = !text && !isEmptyStr;\r\n if (typeof tokenStyle.width === 'number') {\r\n token.width = tokenStyle.width;\r\n }\r\n else {\r\n token.width = linesWidths\r\n ? linesWidths[i]\r\n : getWidth(text, font);\r\n }\r\n if (!i && !newLine) {\r\n var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\r\n var tokensLen = tokens.length;\r\n (tokensLen === 1 && tokens[0].isLineHolder)\r\n ? (tokens[0] = token)\r\n : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\r\n }\r\n else {\r\n lines.push(new RichTextLine([token]));\r\n }\r\n }\r\n}\r\nfunction isLatin(ch) {\r\n var code = ch.charCodeAt(0);\r\n return code >= 0x21 && code <= 0xFF;\r\n}\r\nvar breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\r\n obj[ch] = true;\r\n return obj;\r\n}, {});\r\nfunction isWordBreakChar(ch) {\r\n if (isLatin(ch)) {\r\n if (breakCharMap[ch]) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\r\n var lines = [];\r\n var linesWidths = [];\r\n var line = '';\r\n var currentWord = '';\r\n var currentWordWidth = 0;\r\n var accumWidth = 0;\r\n for (var i = 0; i < text.length; i++) {\r\n var ch = text.charAt(i);\r\n if (ch === '\\n') {\r\n if (currentWord) {\r\n line += currentWord;\r\n accumWidth += currentWordWidth;\r\n }\r\n lines.push(line);\r\n linesWidths.push(accumWidth);\r\n line = '';\r\n currentWord = '';\r\n currentWordWidth = 0;\r\n accumWidth = 0;\r\n continue;\r\n }\r\n var chWidth = getWidth(ch, font);\r\n var inWord = isBreakAll ? false : !isWordBreakChar(ch);\r\n if (!lines.length\r\n ? lastAccumWidth + accumWidth + chWidth > lineWidth\r\n : accumWidth + chWidth > lineWidth) {\r\n if (!accumWidth) {\r\n if (inWord) {\r\n lines.push(currentWord);\r\n linesWidths.push(currentWordWidth);\r\n currentWord = ch;\r\n currentWordWidth = chWidth;\r\n }\r\n else {\r\n lines.push(ch);\r\n linesWidths.push(chWidth);\r\n }\r\n }\r\n else if (line || currentWord) {\r\n if (inWord) {\r\n if (!line) {\r\n line = currentWord;\r\n currentWord = '';\r\n currentWordWidth = 0;\r\n accumWidth = currentWordWidth;\r\n }\r\n lines.push(line);\r\n linesWidths.push(accumWidth - currentWordWidth);\r\n currentWord += ch;\r\n currentWordWidth += chWidth;\r\n line = '';\r\n accumWidth = currentWordWidth;\r\n }\r\n else {\r\n if (currentWord) {\r\n line += currentWord;\r\n accumWidth += currentWordWidth;\r\n currentWord = '';\r\n currentWordWidth = 0;\r\n }\r\n lines.push(line);\r\n linesWidths.push(accumWidth);\r\n line = ch;\r\n accumWidth = chWidth;\r\n }\r\n }\r\n continue;\r\n }\r\n accumWidth += chWidth;\r\n if (inWord) {\r\n currentWord += ch;\r\n currentWordWidth += chWidth;\r\n }\r\n else {\r\n if (currentWord) {\r\n line += currentWord;\r\n currentWord = '';\r\n currentWordWidth = 0;\r\n }\r\n line += ch;\r\n }\r\n }\r\n if (!lines.length && !line) {\r\n line = text;\r\n currentWord = '';\r\n currentWordWidth = 0;\r\n }\r\n if (currentWord) {\r\n line += currentWord;\r\n }\r\n if (line) {\r\n lines.push(line);\r\n linesWidths.push(accumWidth);\r\n }\r\n if (lines.length === 1) {\r\n accumWidth += lastAccumWidth;\r\n }\r\n return {\r\n accumWidth: accumWidth,\r\n lines: lines,\r\n linesWidths: linesWidths\r\n };\r\n}\r\nfunction parsePercent$1(value, maxValue) {\r\n if (typeof value === 'string') {\r\n if (value.lastIndexOf('%') >= 0) {\r\n return parseFloat(value) / 100 * maxValue;\r\n }\r\n return parseFloat(value);\r\n }\r\n return value;\r\n}\n\nvar DEFAULT_RICH_TEXT_COLOR = {\r\n fill: '#000'\r\n};\r\nvar DEFAULT_STROKE_LINE_WIDTH = 2;\r\nvar DEFAULT_TEXT_ANIMATION_PROPS = {\r\n style: defaults({\r\n fill: true,\r\n stroke: true,\r\n fillOpacity: true,\r\n strokeOpacity: true,\r\n lineWidth: true,\r\n fontSize: true,\r\n lineHeight: true,\r\n width: true,\r\n height: true,\r\n textShadowColor: true,\r\n textShadowBlur: true,\r\n textShadowOffsetX: true,\r\n textShadowOffsetY: true,\r\n backgroundColor: true,\r\n padding: true,\r\n borderColor: true,\r\n borderWidth: true,\r\n borderRadius: true\r\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n};\r\nvar ZRText = (function (_super) {\r\n __extends(ZRText, _super);\r\n function ZRText(opts) {\r\n var _this = _super.call(this) || this;\r\n _this.type = 'text';\r\n _this._children = [];\r\n _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\r\n _this.attr(opts);\r\n return _this;\r\n }\r\n ZRText.prototype.childrenRef = function () {\r\n return this._children;\r\n };\r\n ZRText.prototype.update = function () {\r\n if (this.styleChanged()) {\r\n this._updateSubTexts();\r\n }\r\n for (var i = 0; i < this._children.length; i++) {\r\n var child = this._children[i];\r\n child.zlevel = this.zlevel;\r\n child.z = this.z;\r\n child.z2 = this.z2;\r\n child.culling = this.culling;\r\n child.cursor = this.cursor;\r\n child.invisible = this.invisible;\r\n }\r\n var attachedTransform = this.attachedTransform;\r\n if (attachedTransform) {\r\n attachedTransform.updateTransform();\r\n var m = attachedTransform.transform;\r\n if (m) {\r\n this.transform = this.transform || [];\r\n copy$1(this.transform, m);\r\n }\r\n else {\r\n this.transform = null;\r\n }\r\n }\r\n else {\r\n _super.prototype.update.call(this);\r\n }\r\n };\r\n ZRText.prototype.getComputedTransform = function () {\r\n if (this.__hostTarget) {\r\n this.__hostTarget.getComputedTransform();\r\n this.__hostTarget.updateInnerText(true);\r\n }\r\n return this.attachedTransform ? this.attachedTransform.getComputedTransform()\r\n : _super.prototype.getComputedTransform.call(this);\r\n };\r\n ZRText.prototype._updateSubTexts = function () {\r\n this._childCursor = 0;\r\n normalizeTextStyle(this.style);\r\n this.style.rich\r\n ? this._updateRichTexts()\r\n : this._updatePlainTexts();\r\n this._children.length = this._childCursor;\r\n this.styleUpdated();\r\n };\r\n ZRText.prototype.addSelfToZr = function (zr) {\r\n _super.prototype.addSelfToZr.call(this, zr);\r\n for (var i = 0; i < this._children.length; i++) {\r\n this._children[i].__zr = zr;\r\n }\r\n };\r\n ZRText.prototype.removeSelfFromZr = function (zr) {\r\n _super.prototype.removeSelfFromZr.call(this, zr);\r\n for (var i = 0; i < this._children.length; i++) {\r\n this._children[i].__zr = null;\r\n }\r\n };\r\n ZRText.prototype.getBoundingRect = function () {\r\n if (this.styleChanged()) {\r\n this._updateSubTexts();\r\n }\r\n if (!this._rect) {\r\n var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n var children = this._children;\r\n var tmpMat = [];\r\n var rect = null;\r\n for (var i = 0; i < children.length; i++) {\r\n var child = children[i];\r\n var childRect = child.getBoundingRect();\r\n var transform = child.getLocalTransform(tmpMat);\r\n if (transform) {\r\n tmpRect.copy(childRect);\r\n tmpRect.applyTransform(transform);\r\n rect = rect || tmpRect.clone();\r\n rect.union(tmpRect);\r\n }\r\n else {\r\n rect = rect || childRect.clone();\r\n rect.union(childRect);\r\n }\r\n }\r\n this._rect = rect || tmpRect;\r\n }\r\n return this._rect;\r\n };\r\n ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\r\n this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\r\n };\r\n ZRText.prototype.setTextContent = function (textContent) {\r\n throw new Error('Can\\'t attach text on another text');\r\n };\r\n ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n if (!sourceStyle) {\r\n return targetStyle;\r\n }\r\n var sourceRich = sourceStyle.rich;\r\n var targetRich = targetStyle.rich || (sourceRich && {});\r\n extend(targetStyle, sourceStyle);\r\n if (sourceRich && targetRich) {\r\n this._mergeRich(targetRich, sourceRich);\r\n targetStyle.rich = targetRich;\r\n }\r\n else if (targetRich) {\r\n targetStyle.rich = targetRich;\r\n }\r\n return targetStyle;\r\n };\r\n ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\r\n var richNames = keys(sourceRich);\r\n for (var i = 0; i < richNames.length; i++) {\r\n var richName = richNames[i];\r\n targetRich[richName] = targetRich[richName] || {};\r\n extend(targetRich[richName], sourceRich[richName]);\r\n }\r\n };\r\n ZRText.prototype.getAnimationStyleProps = function () {\r\n return DEFAULT_TEXT_ANIMATION_PROPS;\r\n };\r\n ZRText.prototype._getOrCreateChild = function (Ctor) {\r\n var child = this._children[this._childCursor];\r\n if (!child || !(child instanceof Ctor)) {\r\n child = new Ctor();\r\n }\r\n this._children[this._childCursor++] = child;\r\n child.__zr = this.__zr;\r\n child.parent = this;\r\n return child;\r\n };\r\n ZRText.prototype._updatePlainTexts = function () {\r\n var style = this.style;\r\n var textFont = style.font || DEFAULT_FONT;\r\n var textPadding = style.padding;\r\n var text = getStyleText(style);\r\n var contentBlock = parsePlainText(text, style);\r\n var needDrawBg = needDrawBackground(style);\r\n var bgColorDrawn = !!(style.backgroundColor);\r\n var outerHeight = contentBlock.outerHeight;\r\n var textLines = contentBlock.lines;\r\n var lineHeight = contentBlock.lineHeight;\r\n var defaultStyle = this._defaultStyle;\r\n var baseX = style.x || 0;\r\n var baseY = style.y || 0;\r\n var textAlign = style.align || defaultStyle.align || 'left';\r\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\r\n var textX = baseX;\r\n var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\r\n if (needDrawBg || textPadding) {\r\n var outerWidth_1 = contentBlock.width;\r\n textPadding && (outerWidth_1 += textPadding[1] + textPadding[3]);\r\n var boxX = adjustTextX(baseX, outerWidth_1, textAlign);\r\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth_1, outerHeight);\r\n }\r\n textY += lineHeight / 2;\r\n if (textPadding) {\r\n textX = getTextXForPadding(baseX, textAlign, textPadding);\r\n if (verticalAlign === 'top') {\r\n textY += textPadding[0];\r\n }\r\n else if (verticalAlign === 'bottom') {\r\n textY -= textPadding[2];\r\n }\r\n }\r\n var defaultLineWidth = 0;\r\n var useDefaultFill = false;\r\n var textFill = getFill('fill' in style\r\n ? style.fill\r\n : (useDefaultFill = true, defaultStyle.fill));\r\n var textStroke = getStroke('stroke' in style\r\n ? style.stroke\r\n : (!bgColorDrawn\r\n && (!defaultStyle.autoStroke || useDefaultFill))\r\n ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n : null);\r\n var hasShadow = style.textShadowBlur > 0;\r\n var fixedBoundingRect = style.width != null\r\n && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\r\n var calculatedLineHeight = contentBlock.calculatedLineHeight;\r\n for (var i = 0; i < textLines.length; i++) {\r\n var el = this._getOrCreateChild(TSpan);\r\n var subElStyle = el.createStyle();\r\n el.useStyle(subElStyle);\r\n subElStyle.text = textLines[i];\r\n subElStyle.x = textX;\r\n subElStyle.y = textY;\r\n if (textAlign) {\r\n subElStyle.textAlign = textAlign;\r\n }\r\n subElStyle.textBaseline = 'middle';\r\n subElStyle.opacity = style.opacity;\r\n subElStyle.strokeFirst = true;\r\n if (hasShadow) {\r\n subElStyle.shadowBlur = style.textShadowBlur || 0;\r\n subElStyle.shadowColor = style.textShadowColor || 'transparent';\r\n subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\r\n subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\r\n }\r\n if (textStroke) {\r\n subElStyle.stroke = textStroke;\r\n subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\r\n subElStyle.lineDash = style.lineDash;\r\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n }\r\n if (textFill) {\r\n subElStyle.fill = textFill;\r\n }\r\n subElStyle.font = textFont;\r\n textY += lineHeight;\r\n if (fixedBoundingRect) {\r\n el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), style.width, calculatedLineHeight));\r\n }\r\n }\r\n };\r\n ZRText.prototype._updateRichTexts = function () {\r\n var style = this.style;\r\n var text = getStyleText(style);\r\n var contentBlock = parseRichText(text, style);\r\n var contentWidth = contentBlock.width;\r\n var outerWidth = contentBlock.outerWidth;\r\n var outerHeight = contentBlock.outerHeight;\r\n var textPadding = style.padding;\r\n var baseX = style.x || 0;\r\n var baseY = style.y || 0;\r\n var defaultStyle = this._defaultStyle;\r\n var textAlign = style.align || defaultStyle.align;\r\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\r\n var boxX = adjustTextX(baseX, outerWidth, textAlign);\r\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n var xLeft = boxX;\r\n var lineTop = boxY;\r\n if (textPadding) {\r\n xLeft += textPadding[3];\r\n lineTop += textPadding[0];\r\n }\r\n var xRight = xLeft + contentWidth;\r\n if (needDrawBackground(style)) {\r\n this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\r\n }\r\n var bgColorDrawn = !!(style.backgroundColor);\r\n for (var i = 0; i < contentBlock.lines.length; i++) {\r\n var line = contentBlock.lines[i];\r\n var tokens = line.tokens;\r\n var tokenCount = tokens.length;\r\n var lineHeight = line.lineHeight;\r\n var remainedWidth = line.width;\r\n var leftIndex = 0;\r\n var lineXLeft = xLeft;\r\n var lineXRight = xRight;\r\n var rightIndex = tokenCount - 1;\r\n var token = void 0;\r\n while (leftIndex < tokenCount\r\n && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\r\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\r\n remainedWidth -= token.width;\r\n lineXLeft += token.width;\r\n leftIndex++;\r\n }\r\n while (rightIndex >= 0\r\n && (token = tokens[rightIndex], token.align === 'right')) {\r\n this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\r\n remainedWidth -= token.width;\r\n lineXRight -= token.width;\r\n rightIndex--;\r\n }\r\n lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\r\n while (leftIndex <= rightIndex) {\r\n token = tokens[leftIndex];\r\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\r\n lineXLeft += token.width;\r\n leftIndex++;\r\n }\r\n lineTop += lineHeight;\r\n }\r\n };\r\n ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\r\n var tokenStyle = style.rich[token.styleName] || {};\r\n tokenStyle.text = token.text;\r\n var verticalAlign = token.verticalAlign;\r\n var y = lineTop + lineHeight / 2;\r\n if (verticalAlign === 'top') {\r\n y = lineTop + token.height / 2;\r\n }\r\n else if (verticalAlign === 'bottom') {\r\n y = lineTop + lineHeight - token.height / 2;\r\n }\r\n var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\r\n needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\r\n ? x - token.width\r\n : textAlign === 'center'\r\n ? x - token.width / 2\r\n : x, y - token.height / 2, token.width, token.height);\r\n var bgColorDrawn = !!tokenStyle.backgroundColor;\r\n var textPadding = token.textPadding;\r\n if (textPadding) {\r\n x = getTextXForPadding(x, textAlign, textPadding);\r\n y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\r\n }\r\n var el = this._getOrCreateChild(TSpan);\r\n var subElStyle = el.createStyle();\r\n el.useStyle(subElStyle);\r\n var defaultStyle = this._defaultStyle;\r\n var useDefaultFill = false;\r\n var defaultLineWidth = 0;\r\n var textFill = getStroke('fill' in tokenStyle ? tokenStyle.fill\r\n : 'fill' in style ? style.fill\r\n : (useDefaultFill = true, defaultStyle.fill));\r\n var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\r\n : 'stroke' in style ? style.stroke\r\n : (!bgColorDrawn\r\n && !parentBgColorDrawn\r\n && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n : null);\r\n var hasShadow = tokenStyle.textShadowBlur > 0\r\n || style.textShadowBlur > 0;\r\n subElStyle.text = token.text;\r\n subElStyle.x = x;\r\n subElStyle.y = y;\r\n if (hasShadow) {\r\n subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\r\n subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\r\n subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\r\n subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\r\n }\r\n subElStyle.textAlign = textAlign;\r\n subElStyle.textBaseline = 'middle';\r\n subElStyle.font = token.font || DEFAULT_FONT;\r\n subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\r\n if (textStroke) {\r\n subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\r\n subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\r\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n subElStyle.stroke = textStroke;\r\n }\r\n if (textFill) {\r\n subElStyle.fill = textFill;\r\n }\r\n var textWidth = token.contentWidth;\r\n var textHeight = token.contentHeight;\r\n el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\r\n };\r\n ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\r\n var textBackgroundColor = style.backgroundColor;\r\n var textBorderWidth = style.borderWidth;\r\n var textBorderColor = style.borderColor;\r\n var isPlainBg = isString(textBackgroundColor);\r\n var textBorderRadius = style.borderRadius;\r\n var self = this;\r\n var rectEl;\r\n var imgEl;\r\n if (isPlainBg || (textBorderWidth && textBorderColor)) {\r\n rectEl = this._getOrCreateChild(Rect);\r\n rectEl.useStyle(rectEl.createStyle());\r\n rectEl.style.fill = null;\r\n var rectShape = rectEl.shape;\r\n rectShape.x = x;\r\n rectShape.y = y;\r\n rectShape.width = width;\r\n rectShape.height = height;\r\n rectShape.r = textBorderRadius;\r\n rectEl.dirtyShape();\r\n }\r\n if (isPlainBg) {\r\n var rectStyle = rectEl.style;\r\n rectStyle.fill = textBackgroundColor || null;\r\n rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\r\n }\r\n else if (textBackgroundColor && textBackgroundColor.image) {\r\n imgEl = this._getOrCreateChild(ZRImage);\r\n imgEl.onload = function () {\r\n self.dirtyStyle();\r\n };\r\n var imgStyle = imgEl.style;\r\n imgStyle.image = textBackgroundColor.image;\r\n imgStyle.x = x;\r\n imgStyle.y = y;\r\n imgStyle.width = width;\r\n imgStyle.height = height;\r\n }\r\n if (textBorderWidth && textBorderColor) {\r\n var rectStyle = rectEl.style;\r\n rectStyle.lineWidth = textBorderWidth;\r\n rectStyle.stroke = textBorderColor;\r\n rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\r\n rectStyle.lineDash = style.borderDash;\r\n rectStyle.lineDashOffset = style.borderDashOffset || 0;\r\n rectEl.strokeContainThreshold = 0;\r\n if (rectEl.hasFill() && rectEl.hasStroke()) {\r\n rectStyle.strokeFirst = true;\r\n rectStyle.lineWidth *= 2;\r\n }\r\n }\r\n var commonStyle = (rectEl || imgEl).style;\r\n commonStyle.shadowBlur = style.shadowBlur || 0;\r\n commonStyle.shadowColor = style.shadowColor || 'transparent';\r\n commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\r\n commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\r\n commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\r\n };\r\n ZRText.makeFont = function (style) {\r\n var font = '';\r\n if (style.fontSize || style.fontFamily || style.fontWeight) {\r\n var fontSize = '';\r\n if (typeof style.fontSize === 'string'\r\n && (style.fontSize.indexOf('px') !== -1\r\n || style.fontSize.indexOf('rem') !== -1\r\n || style.fontSize.indexOf('em') !== -1)) {\r\n fontSize = style.fontSize;\r\n }\r\n else if (!isNaN(+style.fontSize)) {\r\n fontSize = style.fontSize + 'px';\r\n }\r\n else {\r\n fontSize = '12px';\r\n }\r\n font = [\r\n style.fontStyle,\r\n style.fontWeight,\r\n fontSize,\r\n style.fontFamily || 'sans-serif'\r\n ].join(' ');\r\n }\r\n return font && trim(font) || style.textFont || style.font;\r\n };\r\n return ZRText;\r\n}(Displayable));\r\nvar VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\r\nvar VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\r\nfunction normalizeTextStyle(style) {\r\n normalizeStyle(style);\r\n each(style.rich, normalizeStyle);\r\n return style;\r\n}\r\nfunction normalizeStyle(style) {\r\n if (style) {\r\n style.font = ZRText.makeFont(style);\r\n var textAlign = style.align;\r\n textAlign === 'middle' && (textAlign = 'center');\r\n style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\r\n var verticalAlign = style.verticalAlign;\r\n verticalAlign === 'center' && (verticalAlign = 'middle');\r\n style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\r\n var textPadding = style.padding;\r\n if (textPadding) {\r\n style.padding = normalizeCssArray(style.padding);\r\n }\r\n }\r\n}\r\nfunction getStroke(stroke, lineWidth) {\r\n return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\r\n ? null\r\n : (stroke.image || stroke.colorStops)\r\n ? '#000'\r\n : stroke;\r\n}\r\nfunction getFill(fill) {\r\n return (fill == null || fill === 'none')\r\n ? null\r\n : (fill.image || fill.colorStops)\r\n ? '#000'\r\n : fill;\r\n}\r\nfunction getTextXForPadding(x, textAlign, textPadding) {\r\n return textAlign === 'right'\r\n ? (x - textPadding[1])\r\n : textAlign === 'center'\r\n ? (x + textPadding[3] / 2 - textPadding[1] / 2)\r\n : (x + textPadding[3]);\r\n}\r\nfunction getStyleText(style) {\r\n var text = style.text;\r\n text != null && (text += '');\r\n return text;\r\n}\r\nfunction needDrawBackground(style) {\r\n return !!(style.backgroundColor\r\n || (style.borderWidth && style.borderColor));\r\n}\n\nvar ArcShape = (function () {\r\n function ArcShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.r = 0;\r\n this.startAngle = 0;\r\n this.endAngle = Math.PI * 2;\r\n this.clockwise = true;\r\n }\r\n return ArcShape;\r\n}());\r\nvar Arc = (function (_super) {\r\n __extends(Arc, _super);\r\n function Arc(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Arc.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n Arc.prototype.getDefaultShape = function () {\r\n return new ArcShape();\r\n };\r\n Arc.prototype.buildPath = function (ctx, shape) {\r\n var x = shape.cx;\r\n var y = shape.cy;\r\n var r = Math.max(shape.r, 0);\r\n var startAngle = shape.startAngle;\r\n var endAngle = shape.endAngle;\r\n var clockwise = shape.clockwise;\r\n var unitX = Math.cos(startAngle);\r\n var unitY = Math.sin(startAngle);\r\n ctx.moveTo(unitX * r + x, unitY * r + y);\r\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n };\r\n return Arc;\r\n}(Path));\r\nArc.prototype.type = 'arc';\n\nvar out = [];\r\nvar BezierCurveShape = (function () {\r\n function BezierCurveShape() {\r\n this.x1 = 0;\r\n this.y1 = 0;\r\n this.x2 = 0;\r\n this.y2 = 0;\r\n this.cpx1 = 0;\r\n this.cpy1 = 0;\r\n this.percent = 1;\r\n }\r\n return BezierCurveShape;\r\n}());\r\nfunction someVectorAt(shape, t, isTangent) {\r\n var cpx2 = shape.cpx2;\r\n var cpy2 = shape.cpy2;\r\n if (cpx2 === null || cpy2 === null) {\r\n return [\r\n (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\r\n (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\r\n ];\r\n }\r\n else {\r\n return [\r\n (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\r\n (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\r\n ];\r\n }\r\n}\r\nvar BezierCurve = (function (_super) {\r\n __extends(BezierCurve, _super);\r\n function BezierCurve(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n BezierCurve.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n BezierCurve.prototype.getDefaultShape = function () {\r\n return new BezierCurveShape();\r\n };\r\n BezierCurve.prototype.buildPath = function (ctx, shape) {\r\n var x1 = shape.x1;\r\n var y1 = shape.y1;\r\n var x2 = shape.x2;\r\n var y2 = shape.y2;\r\n var cpx1 = shape.cpx1;\r\n var cpy1 = shape.cpy1;\r\n var cpx2 = shape.cpx2;\r\n var cpy2 = shape.cpy2;\r\n var percent = shape.percent;\r\n if (percent === 0) {\r\n return;\r\n }\r\n ctx.moveTo(x1, y1);\r\n if (cpx2 == null || cpy2 == null) {\r\n if (percent < 1) {\r\n quadraticSubdivide(x1, cpx1, x2, percent, out);\r\n cpx1 = out[1];\r\n x2 = out[2];\r\n quadraticSubdivide(y1, cpy1, y2, percent, out);\r\n cpy1 = out[1];\r\n y2 = out[2];\r\n }\r\n ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\r\n }\r\n else {\r\n if (percent < 1) {\r\n cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\r\n cpx1 = out[1];\r\n cpx2 = out[2];\r\n x2 = out[3];\r\n cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\r\n cpy1 = out[1];\r\n cpy2 = out[2];\r\n y2 = out[3];\r\n }\r\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\r\n }\r\n };\r\n BezierCurve.prototype.pointAt = function (t) {\r\n return someVectorAt(this.shape, t, false);\r\n };\r\n BezierCurve.prototype.tangentAt = function (t) {\r\n var p = someVectorAt(this.shape, t, true);\r\n return normalize(p, p);\r\n };\r\n return BezierCurve;\r\n}(Path));\r\nBezierCurve.prototype.type = 'bezier-curve';\n\nvar DropletShape = (function () {\r\n function DropletShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n return DropletShape;\r\n}());\r\nvar Droplet = (function (_super) {\r\n __extends(Droplet, _super);\r\n function Droplet(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Droplet.prototype.getDefaultShape = function () {\r\n return new DropletShape();\r\n };\r\n Droplet.prototype.buildPath = function (ctx, shape) {\r\n var x = shape.cx;\r\n var y = shape.cy;\r\n var a = shape.width;\r\n var b = shape.height;\r\n ctx.moveTo(x, y + a);\r\n ctx.bezierCurveTo(x + a, y + a, x + a * 3 / 2, y - a / 3, x, y - b);\r\n ctx.bezierCurveTo(x - a * 3 / 2, y - a / 3, x - a, y + a, x, y + a);\r\n ctx.closePath();\r\n };\r\n return Droplet;\r\n}(Path));\r\nDroplet.prototype.type = 'droplet';\n\nvar HeartShape = (function () {\r\n function HeartShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.width = 0;\r\n this.height = 0;\r\n }\r\n return HeartShape;\r\n}());\r\nvar Heart = (function (_super) {\r\n __extends(Heart, _super);\r\n function Heart(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Heart.prototype.getDefaultShape = function () {\r\n return new HeartShape();\r\n };\r\n Heart.prototype.buildPath = function (ctx, shape) {\r\n var x = shape.cx;\r\n var y = shape.cy;\r\n var a = shape.width;\r\n var b = shape.height;\r\n ctx.moveTo(x, y);\r\n ctx.bezierCurveTo(x + a / 2, y - b * 2 / 3, x + a * 2, y + b / 3, x, y + b);\r\n ctx.bezierCurveTo(x - a * 2, y + b / 3, x - a / 2, y - b * 2 / 3, x, y);\r\n };\r\n return Heart;\r\n}(Path));\r\nHeart.prototype.type = 'heart';\n\nvar PI$3 = Math.PI;\r\nvar sin = Math.sin;\r\nvar cos = Math.cos;\r\nvar IsogonShape = (function () {\r\n function IsogonShape() {\r\n this.x = 0;\r\n this.y = 0;\r\n this.r = 0;\r\n this.n = 0;\r\n }\r\n return IsogonShape;\r\n}());\r\nvar Isogon = (function (_super) {\r\n __extends(Isogon, _super);\r\n function Isogon(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Isogon.prototype.getDefaultShape = function () {\r\n return new IsogonShape();\r\n };\r\n Isogon.prototype.buildPath = function (ctx, shape) {\r\n var n = shape.n;\r\n if (!n || n < 2) {\r\n return;\r\n }\r\n var x = shape.x;\r\n var y = shape.y;\r\n var r = shape.r;\r\n var dStep = 2 * PI$3 / n;\r\n var deg = -PI$3 / 2;\r\n ctx.moveTo(x + r * cos(deg), y + r * sin(deg));\r\n for (var i = 0, end = n - 1; i < end; i++) {\r\n deg += dStep;\r\n ctx.lineTo(x + r * cos(deg), y + r * sin(deg));\r\n }\r\n ctx.closePath();\r\n return;\r\n };\r\n return Isogon;\r\n}(Path));\r\nIsogon.prototype.type = 'isogon';\n\nvar RingShape = (function () {\r\n function RingShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.r = 0;\r\n this.r0 = 0;\r\n }\r\n return RingShape;\r\n}());\r\nvar Ring = (function (_super) {\r\n __extends(Ring, _super);\r\n function Ring(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Ring.prototype.getDefaultShape = function () {\r\n return new RingShape();\r\n };\r\n Ring.prototype.buildPath = function (ctx, shape) {\r\n var x = shape.cx;\r\n var y = shape.cy;\r\n var PI2 = Math.PI * 2;\r\n ctx.moveTo(x + shape.r, y);\r\n ctx.arc(x, y, shape.r, 0, PI2, false);\r\n ctx.moveTo(x + shape.r0, y);\r\n ctx.arc(x, y, shape.r0, 0, PI2, true);\r\n };\r\n return Ring;\r\n}(Path));\r\nRing.prototype.type = 'ring';\n\nvar sin$1 = Math.sin;\r\nvar cos$1 = Math.cos;\r\nvar radian = Math.PI / 180;\r\nvar RoseShape = (function () {\r\n function RoseShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.r = [];\r\n this.k = 0;\r\n this.n = 1;\r\n }\r\n return RoseShape;\r\n}());\r\nvar Rose = (function (_super) {\r\n __extends(Rose, _super);\r\n function Rose(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Rose.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n Rose.prototype.getDefaultShape = function () {\r\n return new RoseShape();\r\n };\r\n Rose.prototype.buildPath = function (ctx, shape) {\r\n var R = shape.r;\r\n var k = shape.k;\r\n var n = shape.n;\r\n var x0 = shape.cx;\r\n var y0 = shape.cy;\r\n var x;\r\n var y;\r\n var r;\r\n ctx.moveTo(x0, y0);\r\n for (var i = 0, len = R.length; i < len; i++) {\r\n r = R[i];\r\n for (var j = 0; j <= 360 * n; j++) {\r\n x = r\r\n * sin$1(k / n * j % 360 * radian)\r\n * cos$1(j * radian)\r\n + x0;\r\n y = r\r\n * sin$1(k / n * j % 360 * radian)\r\n * sin$1(j * radian)\r\n + y0;\r\n ctx.lineTo(x, y);\r\n }\r\n }\r\n };\r\n return Rose;\r\n}(Path));\r\nRose.prototype.type = 'rose';\n\nvar PI$4 = Math.PI;\r\nvar cos$2 = Math.cos;\r\nvar sin$2 = Math.sin;\r\nvar StarShape = (function () {\r\n function StarShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.n = 3;\r\n this.r = 0;\r\n }\r\n return StarShape;\r\n}());\r\nvar Star = (function (_super) {\r\n __extends(Star, _super);\r\n function Star(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Star.prototype.getDefaultShape = function () {\r\n return new StarShape();\r\n };\r\n Star.prototype.buildPath = function (ctx, shape) {\r\n var n = shape.n;\r\n if (!n || n < 2) {\r\n return;\r\n }\r\n var x = shape.cx;\r\n var y = shape.cy;\r\n var r = shape.r;\r\n var r0 = shape.r0;\r\n if (r0 == null) {\r\n r0 = n > 4\r\n ? r * cos$2(2 * PI$4 / n) / cos$2(PI$4 / n)\r\n : r / 3;\r\n }\r\n var dStep = PI$4 / n;\r\n var deg = -PI$4 / 2;\r\n var xStart = x + r * cos$2(deg);\r\n var yStart = y + r * sin$2(deg);\r\n deg += dStep;\r\n ctx.moveTo(xStart, yStart);\r\n for (var i = 0, end = n * 2 - 1, ri = void 0; i < end; i++) {\r\n ri = i % 2 === 0 ? r0 : r;\r\n ctx.lineTo(x + ri * cos$2(deg), y + ri * sin$2(deg));\r\n deg += dStep;\r\n }\r\n ctx.closePath();\r\n };\r\n return Star;\r\n}(Path));\r\nStar.prototype.type = 'star';\n\nvar cos$3 = Math.cos;\r\nvar sin$3 = Math.sin;\r\nvar TrochoidShape = (function () {\r\n function TrochoidShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.r = 0;\r\n this.r0 = 0;\r\n this.d = 0;\r\n this.location = 'out';\r\n }\r\n return TrochoidShape;\r\n}());\r\nvar Trochoid = (function (_super) {\r\n __extends(Trochoid, _super);\r\n function Trochoid(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n Trochoid.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n Trochoid.prototype.getDefaultShape = function () {\r\n return new TrochoidShape();\r\n };\r\n Trochoid.prototype.buildPath = function (ctx, shape) {\r\n var R = shape.r;\r\n var r = shape.r0;\r\n var d = shape.d;\r\n var offsetX = shape.cx;\r\n var offsetY = shape.cy;\r\n var delta = shape.location === 'out' ? 1 : -1;\r\n var x1;\r\n var y1;\r\n var x2;\r\n var y2;\r\n if (shape.location && R <= r) {\r\n return;\r\n }\r\n var num = 0;\r\n var i = 1;\r\n var theta;\r\n x1 = (R + delta * r) * cos$3(0)\r\n - delta * d * cos$3(0) + offsetX;\r\n y1 = (R + delta * r) * sin$3(0)\r\n - d * sin$3(0) + offsetY;\r\n ctx.moveTo(x1, y1);\r\n do {\r\n num++;\r\n } while ((r * num) % (R + delta * r) !== 0);\r\n do {\r\n theta = Math.PI / 180 * i;\r\n x2 = (R + delta * r) * cos$3(theta)\r\n - delta * d * cos$3((R / r + delta) * theta)\r\n + offsetX;\r\n y2 = (R + delta * r) * sin$3(theta)\r\n - d * sin$3((R / r + delta) * theta)\r\n + offsetY;\r\n ctx.lineTo(x2, y2);\r\n i++;\r\n } while (i <= (r * num) / (R + delta * r) * 360);\r\n };\r\n return Trochoid;\r\n}(Path));\r\nTrochoid.prototype.type = 'trochoid';\n\nvar RadialGradient = (function (_super) {\r\n __extends(RadialGradient, _super);\r\n function RadialGradient(x, y, r, colorStops, globalCoord) {\r\n var _this = _super.call(this, colorStops) || this;\r\n _this.x = x == null ? 0.5 : x;\r\n _this.y = y == null ? 0.5 : y;\r\n _this.r = r == null ? 0.5 : r;\r\n _this.type = 'radial';\r\n _this.global = globalCoord || false;\r\n return _this;\r\n }\r\n return RadialGradient;\r\n}(Gradient));\n\nvar extent = [0, 0];\r\nvar extent2 = [0, 0];\r\nvar minTv$1 = new Point();\r\nvar maxTv$1 = new Point();\r\nvar OrientedBoundingRect = (function () {\r\n function OrientedBoundingRect(rect, transform) {\r\n this._corners = [];\r\n this._axes = [];\r\n this._origin = [0, 0];\r\n for (var i = 0; i < 4; i++) {\r\n this._corners[i] = new Point();\r\n }\r\n for (var i = 0; i < 2; i++) {\r\n this._axes[i] = new Point();\r\n }\r\n if (rect) {\r\n this.fromBoundingRect(rect, transform);\r\n }\r\n }\r\n OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\r\n var corners = this._corners;\r\n var axes = this._axes;\r\n var x = rect.x;\r\n var y = rect.y;\r\n var x2 = x + rect.width;\r\n var y2 = y + rect.height;\r\n corners[0].set(x, y);\r\n corners[1].set(x2, y);\r\n corners[2].set(x2, y2);\r\n corners[3].set(x, y2);\r\n if (transform) {\r\n for (var i = 0; i < 4; i++) {\r\n corners[i].transform(transform);\r\n }\r\n }\r\n Point.sub(axes[0], corners[1], corners[0]);\r\n Point.sub(axes[1], corners[3], corners[0]);\r\n axes[0].normalize();\r\n axes[1].normalize();\r\n for (var i = 0; i < 2; i++) {\r\n this._origin[i] = axes[i].dot(corners[0]);\r\n }\r\n };\r\n OrientedBoundingRect.prototype.intersect = function (other, mtv) {\r\n var overlapped = true;\r\n var noMtv = !mtv;\r\n minTv$1.set(Infinity, Infinity);\r\n maxTv$1.set(0, 0);\r\n if (!this._intersectCheckOneSide(this, other, minTv$1, maxTv$1, noMtv, 1)) {\r\n overlapped = false;\r\n if (noMtv) {\r\n return overlapped;\r\n }\r\n }\r\n if (!this._intersectCheckOneSide(other, this, minTv$1, maxTv$1, noMtv, -1)) {\r\n overlapped = false;\r\n if (noMtv) {\r\n return overlapped;\r\n }\r\n }\r\n if (!noMtv) {\r\n Point.copy(mtv, overlapped ? minTv$1 : maxTv$1);\r\n }\r\n return overlapped;\r\n };\r\n OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\r\n var overlapped = true;\r\n for (var i = 0; i < 2; i++) {\r\n var axis = this._axes[i];\r\n this._getProjMinMaxOnAxis(i, self._corners, extent);\r\n this._getProjMinMaxOnAxis(i, other._corners, extent2);\r\n if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\r\n overlapped = false;\r\n if (noMtv) {\r\n return overlapped;\r\n }\r\n var dist0 = Math.abs(extent2[0] - extent[1]);\r\n var dist1 = Math.abs(extent[0] - extent2[1]);\r\n if (Math.min(dist0, dist1) > maxTv.len()) {\r\n if (dist0 < dist1) {\r\n Point.scale(maxTv, axis, -dist0 * inverse);\r\n }\r\n else {\r\n Point.scale(maxTv, axis, dist1 * inverse);\r\n }\r\n }\r\n }\r\n else if (minTv) {\r\n var dist0 = Math.abs(extent2[0] - extent[1]);\r\n var dist1 = Math.abs(extent[0] - extent2[1]);\r\n if (Math.min(dist0, dist1) < minTv.len()) {\r\n if (dist0 < dist1) {\r\n Point.scale(minTv, axis, dist0 * inverse);\r\n }\r\n else {\r\n Point.scale(minTv, axis, -dist1 * inverse);\r\n }\r\n }\r\n }\r\n }\r\n return overlapped;\r\n };\r\n OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\r\n var axis = this._axes[dim];\r\n var origin = this._origin;\r\n var proj = corners[0].dot(axis) + origin[dim];\r\n var min = proj;\r\n var max = proj;\r\n for (var i = 1; i < corners.length; i++) {\r\n var proj_1 = corners[i].dot(axis) + origin[dim];\r\n min = Math.min(proj_1, min);\r\n max = Math.max(proj_1, max);\r\n }\r\n out[0] = min;\r\n out[1] = max;\r\n };\r\n return OrientedBoundingRect;\r\n}());\n\n/*!\r\n* ZRender, a high performance 2d drawing library.\r\n*\r\n* Copyright (c) 2013, Baidu Inc.\r\n* All rights reserved.\r\n*\r\n* LICENSE\r\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\r\n*/\r\nvar useVML = !env.canvasSupported;\r\nvar painterCtors = {};\r\nvar instances = {};\r\nfunction delInstance(id) {\r\n delete instances[id];\r\n}\r\nfunction isDarkMode(backgroundColor) {\r\n if (!backgroundColor) {\r\n return false;\r\n }\r\n if (typeof backgroundColor === 'string') {\r\n return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\r\n }\r\n else if (backgroundColor.colorStops) {\r\n var colorStops = backgroundColor.colorStops;\r\n var totalLum = 0;\r\n var len = colorStops.length;\r\n for (var i = 0; i < len; i++) {\r\n totalLum += lum(colorStops[i].color, 1);\r\n }\r\n totalLum /= len;\r\n return totalLum < DARK_MODE_THRESHOLD;\r\n }\r\n return false;\r\n}\r\nvar ZRender = (function () {\r\n function ZRender(id, dom, opts) {\r\n var _this = this;\r\n this._sleepAfterStill = 10;\r\n this._stillFrameAccum = 0;\r\n this._needsRefresh = true;\r\n this._needsRefreshHover = true;\r\n this._darkMode = false;\r\n opts = opts || {};\r\n this.dom = dom;\r\n this.id = id;\r\n var storage = new Storage();\r\n var rendererType = opts.renderer;\r\n if (useVML) {\r\n if (!painterCtors.vml) {\r\n throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\r\n }\r\n rendererType = 'vml';\r\n }\r\n else if (!rendererType) {\r\n rendererType = 'canvas';\r\n }\r\n if (!painterCtors[rendererType]) {\r\n throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\r\n }\r\n opts.useDirtyRect = opts.useDirtyRect == null\r\n ? false\r\n : opts.useDirtyRect;\r\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\r\n this.storage = storage;\r\n this.painter = painter;\r\n var handerProxy = (!env.node && !env.worker)\r\n ? new HandlerDomProxy(painter.getViewportRoot(), painter.root)\r\n : null;\r\n this.handler = new Handler(storage, painter, handerProxy, painter.root);\r\n this.animation = new Animation({\r\n stage: {\r\n update: function () { return _this._flush(true); }\r\n }\r\n });\r\n this.animation.start();\r\n }\r\n ZRender.prototype.add = function (el) {\r\n if (!el) {\r\n return;\r\n }\r\n this.storage.addRoot(el);\r\n el.addSelfToZr(this);\r\n this.refresh();\r\n };\r\n ZRender.prototype.remove = function (el) {\r\n if (!el) {\r\n return;\r\n }\r\n this.storage.delRoot(el);\r\n el.removeSelfFromZr(this);\r\n this.refresh();\r\n };\r\n ZRender.prototype.configLayer = function (zLevel, config) {\r\n if (this.painter.configLayer) {\r\n this.painter.configLayer(zLevel, config);\r\n }\r\n this.refresh();\r\n };\r\n ZRender.prototype.setBackgroundColor = function (backgroundColor) {\r\n if (this.painter.setBackgroundColor) {\r\n this.painter.setBackgroundColor(backgroundColor);\r\n }\r\n this.refresh();\r\n this._backgroundColor = backgroundColor;\r\n this._darkMode = isDarkMode(backgroundColor);\r\n };\r\n ZRender.prototype.getBackgroundColor = function () {\r\n return this._backgroundColor;\r\n };\r\n ZRender.prototype.setDarkMode = function (darkMode) {\r\n this._darkMode = darkMode;\r\n };\r\n ZRender.prototype.isDarkMode = function () {\r\n return this._darkMode;\r\n };\r\n ZRender.prototype.refreshImmediately = function (fromInside) {\r\n if (!fromInside) {\r\n this.animation.update(true);\r\n }\r\n this._needsRefresh = false;\r\n this.painter.refresh();\r\n this._needsRefresh = false;\r\n };\r\n ZRender.prototype.refresh = function () {\r\n this._needsRefresh = true;\r\n this.animation.start();\r\n };\r\n ZRender.prototype.flush = function () {\r\n this._flush(false);\r\n };\r\n ZRender.prototype._flush = function (fromInside) {\r\n var triggerRendered;\r\n var start = new Date().getTime();\r\n if (this._needsRefresh) {\r\n triggerRendered = true;\r\n this.refreshImmediately(fromInside);\r\n }\r\n if (this._needsRefreshHover) {\r\n triggerRendered = true;\r\n this.refreshHoverImmediately();\r\n }\r\n var end = new Date().getTime();\r\n if (triggerRendered) {\r\n this._stillFrameAccum = 0;\r\n this.trigger('rendered', {\r\n elapsedTime: end - start\r\n });\r\n }\r\n else if (this._sleepAfterStill > 0) {\r\n this._stillFrameAccum++;\r\n if (this._stillFrameAccum > this._sleepAfterStill) {\r\n this.animation.stop();\r\n }\r\n }\r\n };\r\n ZRender.prototype.setSleepAfterStill = function (stillFramesCount) {\r\n this._sleepAfterStill = stillFramesCount;\r\n };\r\n ZRender.prototype.wakeUp = function () {\r\n this.animation.start();\r\n this._stillFrameAccum = 0;\r\n };\r\n ZRender.prototype.addHover = function (el) {\r\n };\r\n ZRender.prototype.removeHover = function (el) {\r\n };\r\n ZRender.prototype.clearHover = function () {\r\n };\r\n ZRender.prototype.refreshHover = function () {\r\n this._needsRefreshHover = true;\r\n };\r\n ZRender.prototype.refreshHoverImmediately = function () {\r\n this._needsRefreshHover = false;\r\n if (this.painter.refreshHover && this.painter.getType() === 'canvas') {\r\n this.painter.refreshHover();\r\n }\r\n };\r\n ZRender.prototype.resize = function (opts) {\r\n opts = opts || {};\r\n this.painter.resize(opts.width, opts.height);\r\n this.handler.resize();\r\n };\r\n ZRender.prototype.clearAnimation = function () {\r\n this.animation.clear();\r\n };\r\n ZRender.prototype.getWidth = function () {\r\n return this.painter.getWidth();\r\n };\r\n ZRender.prototype.getHeight = function () {\r\n return this.painter.getHeight();\r\n };\r\n ZRender.prototype.pathToImage = function (e, dpr) {\r\n if (this.painter.pathToImage) {\r\n return this.painter.pathToImage(e, dpr);\r\n }\r\n };\r\n ZRender.prototype.setCursorStyle = function (cursorStyle) {\r\n this.handler.setCursorStyle(cursorStyle);\r\n };\r\n ZRender.prototype.findHover = function (x, y) {\r\n return this.handler.findHover(x, y);\r\n };\r\n ZRender.prototype.on = function (eventName, eventHandler, context) {\r\n this.handler.on(eventName, eventHandler, context);\r\n return this;\r\n };\r\n ZRender.prototype.off = function (eventName, eventHandler) {\r\n this.handler.off(eventName, eventHandler);\r\n };\r\n ZRender.prototype.trigger = function (eventName, event) {\r\n this.handler.trigger(eventName, event);\r\n };\r\n ZRender.prototype.clear = function () {\r\n var roots = this.storage.getRoots();\r\n for (var i = 0; i < roots.length; i++) {\r\n if (roots[i] instanceof Group) {\r\n roots[i].removeSelfFromZr(this);\r\n }\r\n }\r\n this.storage.delAllRoots();\r\n this.painter.clear();\r\n };\r\n ZRender.prototype.dispose = function () {\r\n this.animation.stop();\r\n this.clear();\r\n this.storage.dispose();\r\n this.painter.dispose();\r\n this.handler.dispose();\r\n this.animation =\r\n this.storage =\r\n this.painter =\r\n this.handler = null;\r\n delInstance(this.id);\r\n };\r\n return ZRender;\r\n}());\r\nfunction init(dom, opts) {\r\n var zr = new ZRender(guid(), dom, opts);\r\n instances[zr.id] = zr;\r\n return zr;\r\n}\r\nfunction dispose(zr) {\r\n zr.dispose();\r\n}\r\nfunction disposeAll() {\r\n for (var key in instances) {\r\n if (instances.hasOwnProperty(key)) {\r\n instances[key].dispose();\r\n }\r\n }\r\n instances = {};\r\n}\r\nfunction getInstance(id) {\r\n return instances[id];\r\n}\r\nfunction registerPainter(name, Ctor) {\r\n painterCtors[name] = Ctor;\r\n}\r\nvar version = '5.0.1';\n\nvar zrender = /*#__PURE__*/Object.freeze({\n __proto__: null,\n init: init,\n dispose: dispose,\n disposeAll: disposeAll,\n getInstance: getInstance,\n registerPainter: registerPainter,\n version: version\n});\n\nvar RADIAN_EPSILON = 1e-4;\r\nfunction _trim(str) {\r\n return str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\nfunction linearMap(val, domain, range, clamp) {\r\n var subDomain = domain[1] - domain[0];\r\n var subRange = range[1] - range[0];\r\n if (subDomain === 0) {\r\n return subRange === 0\r\n ? range[0]\r\n : (range[0] + range[1]) / 2;\r\n }\r\n if (clamp) {\r\n if (subDomain > 0) {\r\n if (val <= domain[0]) {\r\n return range[0];\r\n }\r\n else if (val >= domain[1]) {\r\n return range[1];\r\n }\r\n }\r\n else {\r\n if (val >= domain[0]) {\r\n return range[0];\r\n }\r\n else if (val <= domain[1]) {\r\n return range[1];\r\n }\r\n }\r\n }\r\n else {\r\n if (val === domain[0]) {\r\n return range[0];\r\n }\r\n if (val === domain[1]) {\r\n return range[1];\r\n }\r\n }\r\n return (val - domain[0]) / subDomain * subRange + range[0];\r\n}\r\nfunction parsePercent$2(percent, all) {\r\n switch (percent) {\r\n case 'center':\r\n case 'middle':\r\n percent = '50%';\r\n break;\r\n case 'left':\r\n case 'top':\r\n percent = '0%';\r\n break;\r\n case 'right':\r\n case 'bottom':\r\n percent = '100%';\r\n break;\r\n }\r\n if (typeof percent === 'string') {\r\n if (_trim(percent).match(/%$/)) {\r\n return parseFloat(percent) / 100 * all;\r\n }\r\n return parseFloat(percent);\r\n }\r\n return percent == null ? NaN : +percent;\r\n}\r\nfunction round$1(x, precision, returnStr) {\r\n if (precision == null) {\r\n precision = 10;\r\n }\r\n precision = Math.min(Math.max(0, precision), 20);\r\n x = (+x).toFixed(precision);\r\n return (returnStr ? x : +x);\r\n}\r\nfunction asc(arr) {\r\n arr.sort(function (a, b) {\r\n return a - b;\r\n });\r\n return arr;\r\n}\r\nfunction getPrecision(val) {\r\n val = +val;\r\n if (isNaN(val)) {\r\n return 0;\r\n }\r\n var e = 1;\r\n var count = 0;\r\n while (Math.round(val * e) / e !== val) {\r\n e *= 10;\r\n count++;\r\n }\r\n return count;\r\n}\r\nfunction getPrecisionSafe(val) {\r\n var str = val.toString();\r\n var eIndex = str.indexOf('e');\r\n if (eIndex > 0) {\r\n var precision = +str.slice(eIndex + 1);\r\n return precision < 0 ? -precision : 0;\r\n }\r\n else {\r\n var dotIndex = str.indexOf('.');\r\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\r\n }\r\n}\r\nfunction getPixelPrecision(dataExtent, pixelExtent) {\r\n var log = Math.log;\r\n var LN10 = Math.LN10;\r\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\r\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10);\r\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\r\n return !isFinite(precision) ? 20 : precision;\r\n}\r\nfunction getPercentWithPrecision(valueList, idx, precision) {\r\n if (!valueList[idx]) {\r\n return 0;\r\n }\r\n var sum = reduce(valueList, function (acc, val) {\r\n return acc + (isNaN(val) ? 0 : val);\r\n }, 0);\r\n if (sum === 0) {\r\n return 0;\r\n }\r\n var digits = Math.pow(10, precision);\r\n var votesPerQuota = map(valueList, function (val) {\r\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\r\n });\r\n var targetSeats = digits * 100;\r\n var seats = map(votesPerQuota, function (votes) {\r\n return Math.floor(votes);\r\n });\r\n var currentSum = reduce(seats, function (acc, val) {\r\n return acc + val;\r\n }, 0);\r\n var remainder = map(votesPerQuota, function (votes, idx) {\r\n return votes - seats[idx];\r\n });\r\n while (currentSum < targetSeats) {\r\n var max = Number.NEGATIVE_INFINITY;\r\n var maxId = null;\r\n for (var i = 0, len = remainder.length; i < len; ++i) {\r\n if (remainder[i] > max) {\r\n max = remainder[i];\r\n maxId = i;\r\n }\r\n }\r\n ++seats[maxId];\r\n remainder[maxId] = 0;\r\n ++currentSum;\r\n }\r\n return seats[idx] / digits;\r\n}\r\nvar MAX_SAFE_INTEGER = 9007199254740991;\r\nfunction remRadian(radian) {\r\n var pi2 = Math.PI * 2;\r\n return (radian % pi2 + pi2) % pi2;\r\n}\r\nfunction isRadianAroundZero(val) {\r\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\r\n}\r\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d{1,2})(?::(\\d{1,2})(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/;\r\nfunction parseDate(value) {\r\n if (value instanceof Date) {\r\n return value;\r\n }\r\n else if (typeof value === 'string') {\r\n var match = TIME_REG.exec(value);\r\n if (!match) {\r\n return new Date(NaN);\r\n }\r\n if (!match[8]) {\r\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\r\n }\r\n else {\r\n var hour = +match[4] || 0;\r\n if (match[8].toUpperCase() !== 'Z') {\r\n hour -= +match[8].slice(0, 3);\r\n }\r\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\r\n }\r\n }\r\n else if (value == null) {\r\n return new Date(NaN);\r\n }\r\n return new Date(Math.round(value));\r\n}\r\nfunction quantity(val) {\r\n return Math.pow(10, quantityExponent(val));\r\n}\r\nfunction quantityExponent(val) {\r\n if (val === 0) {\r\n return 0;\r\n }\r\n var exp = Math.floor(Math.log(val) / Math.LN10);\r\n if (val / Math.pow(10, exp) >= 10) {\r\n exp++;\r\n }\r\n return exp;\r\n}\r\nfunction nice(val, round) {\r\n var exponent = quantityExponent(val);\r\n var exp10 = Math.pow(10, exponent);\r\n var f = val / exp10;\r\n var nf;\r\n if (round) {\r\n if (f < 1.5) {\r\n nf = 1;\r\n }\r\n else if (f < 2.5) {\r\n nf = 2;\r\n }\r\n else if (f < 4) {\r\n nf = 3;\r\n }\r\n else if (f < 7) {\r\n nf = 5;\r\n }\r\n else {\r\n nf = 10;\r\n }\r\n }\r\n else {\r\n if (f < 1) {\r\n nf = 1;\r\n }\r\n else if (f < 2) {\r\n nf = 2;\r\n }\r\n else if (f < 3) {\r\n nf = 3;\r\n }\r\n else if (f < 5) {\r\n nf = 5;\r\n }\r\n else {\r\n nf = 10;\r\n }\r\n }\r\n val = nf * exp10;\r\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\r\n}\r\nfunction quantile(ascArr, p) {\r\n var H = (ascArr.length - 1) * p + 1;\r\n var h = Math.floor(H);\r\n var v = +ascArr[h - 1];\r\n var e = H - h;\r\n return e ? v + e * (ascArr[h] - v) : v;\r\n}\r\nfunction reformIntervals(list) {\r\n list.sort(function (a, b) {\r\n return littleThan(a, b, 0) ? -1 : 1;\r\n });\r\n var curr = -Infinity;\r\n var currClose = 1;\r\n for (var i = 0; i < list.length;) {\r\n var interval = list[i].interval;\r\n var close_1 = list[i].close;\r\n for (var lg = 0; lg < 2; lg++) {\r\n if (interval[lg] <= curr) {\r\n interval[lg] = curr;\r\n close_1[lg] = (!lg ? 1 - currClose : 1);\r\n }\r\n curr = interval[lg];\r\n currClose = close_1[lg];\r\n }\r\n if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) {\r\n list.splice(i, 1);\r\n }\r\n else {\r\n i++;\r\n }\r\n }\r\n return list;\r\n function littleThan(a, b, lg) {\r\n return a.interval[lg] < b.interval[lg]\r\n || (a.interval[lg] === b.interval[lg]\r\n && ((a.close[lg] - b.close[lg] === (!lg ? 1 : -1))\r\n || (!lg && littleThan(a, b, 1))));\r\n }\r\n}\r\nfunction numericToNumber(val) {\r\n var valFloat = parseFloat(val);\r\n return (valFloat == val\r\n && (valFloat !== 0 || typeof val !== 'string' || val.indexOf('x') <= 0)) ? valFloat : NaN;\r\n}\r\nfunction isNumeric(val) {\r\n return !isNaN(numericToNumber(val));\r\n}\r\nfunction getRandomIdBase() {\r\n return Math.round(Math.random() * 9);\r\n}\r\nfunction getGreatestCommonDividor(a, b) {\r\n if (b === 0) {\r\n return a;\r\n }\r\n return getGreatestCommonDividor(b, a % b);\r\n}\r\nfunction getLeastCommonMultiple(a, b) {\r\n if (a == null) {\r\n return b;\r\n }\r\n if (b == null) {\r\n return a;\r\n }\r\n return a * b / getGreatestCommonDividor(a, b);\r\n}\n\nvar numberUtil = /*#__PURE__*/Object.freeze({\n __proto__: null,\n linearMap: linearMap,\n parsePercent: parsePercent$2,\n round: round$1,\n asc: asc,\n getPrecision: getPrecision,\n getPrecisionSafe: getPrecisionSafe,\n getPixelPrecision: getPixelPrecision,\n getPercentWithPrecision: getPercentWithPrecision,\n MAX_SAFE_INTEGER: MAX_SAFE_INTEGER,\n remRadian: remRadian,\n isRadianAroundZero: isRadianAroundZero,\n parseDate: parseDate,\n quantity: quantity,\n quantityExponent: quantityExponent,\n nice: nice,\n quantile: quantile,\n reformIntervals: reformIntervals,\n numericToNumber: numericToNumber,\n isNumeric: isNumeric,\n getRandomIdBase: getRandomIdBase,\n getGreatestCommonDividor: getGreatestCommonDividor,\n getLeastCommonMultiple: getLeastCommonMultiple\n});\n\nvar ECHARTS_PREFIX = '[ECharts] ';\r\nvar storedLogs = {};\r\nvar hasConsole = typeof console !== 'undefined'\r\n && console.warn && console.log;\r\nfunction warn(str) {\r\n if (hasConsole) {\r\n console.warn(ECHARTS_PREFIX + str);\r\n }\r\n}\r\nfunction error(str) {\r\n if (hasConsole) {\r\n console.error(ECHARTS_PREFIX + str);\r\n }\r\n}\r\nfunction deprecateLog(str) {\r\n if (__DEV__) {\r\n if (storedLogs[str]) {\r\n return;\r\n }\r\n if (hasConsole) {\r\n storedLogs[str] = true;\r\n console.warn(ECHARTS_PREFIX + 'DEPRECATED: ' + str);\r\n }\r\n }\r\n}\r\nfunction deprecateReplaceLog(oldOpt, newOpt, scope) {\r\n if (__DEV__) {\r\n deprecateLog((scope ? \"[\" + scope + \"]\" : '') + (oldOpt + \" is deprecated, use \" + newOpt + \" instead.\"));\r\n }\r\n}\r\nfunction consoleLog() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (__DEV__) {\r\n if (typeof console !== 'undefined' && console.log) {\r\n console.log.apply(console, args);\r\n }\r\n }\r\n}\r\nfunction makePrintable() {\r\n var hintInfo = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n hintInfo[_i] = arguments[_i];\r\n }\r\n var msg = '';\r\n if (__DEV__) {\r\n var makePrintableStringIfPossible_1 = function (val) {\r\n return val === void 0 ? 'undefined'\r\n : val === Infinity ? 'Infinity'\r\n : val === -Infinity ? '-Infinity'\r\n : eqNaN(val) ? 'NaN'\r\n : val instanceof Date ? 'Date(' + val.toISOString() + ')'\r\n : isFunction(val) ? 'function () { ... }'\r\n : isRegExp(val) ? val + ''\r\n : null;\r\n };\r\n msg = map(hintInfo, function (arg) {\r\n if (isString(arg)) {\r\n return arg;\r\n }\r\n else {\r\n var printableStr = makePrintableStringIfPossible_1(arg);\r\n if (printableStr != null) {\r\n return printableStr;\r\n }\r\n else if (typeof JSON !== 'undefined' && JSON.stringify) {\r\n try {\r\n return JSON.stringify(arg, function (n, val) {\r\n var printableStr = makePrintableStringIfPossible_1(val);\r\n return printableStr == null ? val : printableStr;\r\n });\r\n }\r\n catch (err) {\r\n return '?';\r\n }\r\n }\r\n else {\r\n return '?';\r\n }\r\n }\r\n }).join(' ');\r\n }\r\n return msg;\r\n}\r\nfunction throwError(msg) {\r\n throw new Error(msg);\r\n}\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\r\nvar INTERNAL_COMPONENT_ID_PREFIX = '\\0_ec_\\0';\r\nfunction normalizeToArray(value) {\r\n return value instanceof Array\r\n ? value\r\n : value == null\r\n ? []\r\n : [value];\r\n}\r\nfunction defaultEmphasis(opt, key, subOpts) {\r\n if (opt) {\r\n opt[key] = opt[key] || {};\r\n opt.emphasis = opt.emphasis || {};\r\n opt.emphasis[key] = opt.emphasis[key] || {};\r\n for (var i = 0, len = subOpts.length; i < len; i++) {\r\n var subOptName = subOpts[i];\r\n if (!opt.emphasis[key].hasOwnProperty(subOptName)\r\n && opt[key].hasOwnProperty(subOptName)) {\r\n opt.emphasis[key][subOptName] = opt[key][subOptName];\r\n }\r\n }\r\n }\r\n}\r\nvar TEXT_STYLE_OPTIONS = [\r\n 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth',\r\n 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline',\r\n 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY',\r\n 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY',\r\n 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding'\r\n];\r\nfunction getDataItemValue(dataItem) {\r\n return (isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date))\r\n ? dataItem.value : dataItem;\r\n}\r\nfunction isDataItemOption(dataItem) {\r\n return isObject(dataItem)\r\n && !(dataItem instanceof Array);\r\n}\r\nfunction mappingToExists(existings, newCmptOptions, mode) {\r\n var isNormalMergeMode = mode === 'normalMerge';\r\n var isReplaceMergeMode = mode === 'replaceMerge';\r\n var isReplaceAllMode = mode === 'replaceAll';\r\n existings = existings || [];\r\n newCmptOptions = (newCmptOptions || []).slice();\r\n var existingIdIdxMap = createHashMap();\r\n each(newCmptOptions, function (cmptOption, index) {\r\n if (!isObject(cmptOption)) {\r\n newCmptOptions[index] = null;\r\n return;\r\n }\r\n if (__DEV__) {\r\n if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) {\r\n warnInvalidateIdOrName(cmptOption.id);\r\n }\r\n if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) {\r\n warnInvalidateIdOrName(cmptOption.name);\r\n }\r\n }\r\n });\r\n var result = prepareResult(existings, existingIdIdxMap, mode);\r\n if (isNormalMergeMode || isReplaceMergeMode) {\r\n mappingById(result, existings, existingIdIdxMap, newCmptOptions);\r\n }\r\n if (isNormalMergeMode) {\r\n mappingByName(result, newCmptOptions);\r\n }\r\n if (isNormalMergeMode || isReplaceMergeMode) {\r\n mappingByIndex(result, newCmptOptions, isReplaceMergeMode);\r\n }\r\n else if (isReplaceAllMode) {\r\n mappingInReplaceAllMode(result, newCmptOptions);\r\n }\r\n makeIdAndName(result);\r\n return result;\r\n}\r\nfunction prepareResult(existings, existingIdIdxMap, mode) {\r\n var result = [];\r\n if (mode === 'replaceAll') {\r\n return result;\r\n }\r\n for (var index = 0; index < existings.length; index++) {\r\n var existing = existings[index];\r\n if (existing && existing.id != null) {\r\n existingIdIdxMap.set(existing.id, index);\r\n }\r\n result.push({\r\n existing: (mode === 'replaceMerge' || isComponentIdInternal(existing))\r\n ? null\r\n : existing,\r\n newOption: null,\r\n keyInfo: null,\r\n brandNew: null\r\n });\r\n }\r\n return result;\r\n}\r\nfunction mappingById(result, existings, existingIdIdxMap, newCmptOptions) {\r\n each(newCmptOptions, function (cmptOption, index) {\r\n if (!cmptOption || cmptOption.id == null) {\r\n return;\r\n }\r\n var optionId = makeComparableKey(cmptOption.id);\r\n var existingIdx = existingIdIdxMap.get(optionId);\r\n if (existingIdx != null) {\r\n var resultItem = result[existingIdx];\r\n assert(!resultItem.newOption, 'Duplicated option on id \"' + optionId + '\".');\r\n resultItem.newOption = cmptOption;\r\n resultItem.existing = existings[existingIdx];\r\n newCmptOptions[index] = null;\r\n }\r\n });\r\n}\r\nfunction mappingByName(result, newCmptOptions) {\r\n each(newCmptOptions, function (cmptOption, index) {\r\n if (!cmptOption || cmptOption.name == null) {\r\n return;\r\n }\r\n for (var i = 0; i < result.length; i++) {\r\n var existing = result[i].existing;\r\n if (!result[i].newOption\r\n && existing\r\n && (existing.id == null || cmptOption.id == null)\r\n && !isComponentIdInternal(cmptOption)\r\n && !isComponentIdInternal(existing)\r\n && keyExistAndEqual('name', existing, cmptOption)) {\r\n result[i].newOption = cmptOption;\r\n newCmptOptions[index] = null;\r\n return;\r\n }\r\n }\r\n });\r\n}\r\nfunction mappingByIndex(result, newCmptOptions, brandNew) {\r\n each(newCmptOptions, function (cmptOption) {\r\n if (!cmptOption) {\r\n return;\r\n }\r\n var resultItem;\r\n var nextIdx = 0;\r\n while ((resultItem = result[nextIdx])\r\n && (resultItem.newOption\r\n || isComponentIdInternal(resultItem.existing)\r\n || (resultItem.existing\r\n && cmptOption.id != null\r\n && !keyExistAndEqual('id', cmptOption, resultItem.existing)))) {\r\n nextIdx++;\r\n }\r\n if (resultItem) {\r\n resultItem.newOption = cmptOption;\r\n resultItem.brandNew = brandNew;\r\n }\r\n else {\r\n result.push({\r\n newOption: cmptOption,\r\n brandNew: brandNew,\r\n existing: null,\r\n keyInfo: null\r\n });\r\n }\r\n nextIdx++;\r\n });\r\n}\r\nfunction mappingInReplaceAllMode(result, newCmptOptions) {\r\n each(newCmptOptions, function (cmptOption) {\r\n result.push({\r\n newOption: cmptOption,\r\n brandNew: true,\r\n existing: null,\r\n keyInfo: null\r\n });\r\n });\r\n}\r\nfunction makeIdAndName(mapResult) {\r\n var idMap = createHashMap();\r\n each(mapResult, function (item) {\r\n var existing = item.existing;\r\n existing && idMap.set(existing.id, item);\r\n });\r\n each(mapResult, function (item) {\r\n var opt = item.newOption;\r\n assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\r\n opt && opt.id != null && idMap.set(opt.id, item);\r\n !item.keyInfo && (item.keyInfo = {});\r\n });\r\n each(mapResult, function (item, index) {\r\n var existing = item.existing;\r\n var opt = item.newOption;\r\n var keyInfo = item.keyInfo;\r\n if (!isObject(opt)) {\r\n return;\r\n }\r\n keyInfo.name = opt.name != null\r\n ? makeComparableKey(opt.name)\r\n : existing\r\n ? existing.name\r\n : DUMMY_COMPONENT_NAME_PREFIX + index;\r\n if (existing) {\r\n keyInfo.id = makeComparableKey(existing.id);\r\n }\r\n else if (opt.id != null) {\r\n keyInfo.id = makeComparableKey(opt.id);\r\n }\r\n else {\r\n var idNum = 0;\r\n do {\r\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\r\n } while (idMap.get(keyInfo.id));\r\n }\r\n idMap.set(keyInfo.id, item);\r\n });\r\n}\r\nfunction keyExistAndEqual(attr, obj1, obj2) {\r\n var key1 = convertOptionIdName(obj1[attr], null);\r\n var key2 = convertOptionIdName(obj2[attr], null);\r\n return key1 != null && key2 != null && key1 === key2;\r\n}\r\nfunction makeComparableKey(val) {\r\n if (__DEV__) {\r\n if (val == null) {\r\n throw new Error();\r\n }\r\n }\r\n return convertOptionIdName(val, '');\r\n}\r\nfunction convertOptionIdName(idOrName, defaultValue) {\r\n if (idOrName == null) {\r\n return defaultValue;\r\n }\r\n var type = typeof idOrName;\r\n return type === 'string'\r\n ? idOrName\r\n : (type === 'number' || isStringSafe(idOrName))\r\n ? idOrName + ''\r\n : defaultValue;\r\n}\r\nfunction warnInvalidateIdOrName(idOrName) {\r\n if (__DEV__) {\r\n warn('`' + idOrName + '` is invalid id or name. Must be a string or number.');\r\n }\r\n}\r\nfunction isValidIdOrName(idOrName) {\r\n return isStringSafe(idOrName) || isNumeric(idOrName);\r\n}\r\nfunction isNameSpecified(componentModel) {\r\n var name = componentModel.name;\r\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\r\n}\r\nfunction isComponentIdInternal(cmptOption) {\r\n return cmptOption\r\n && cmptOption.id != null\r\n && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;\r\n}\r\nfunction makeInternalComponentId(idSuffix) {\r\n return INTERNAL_COMPONENT_ID_PREFIX + idSuffix;\r\n}\r\nfunction setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {\r\n each(mappingResult, function (item) {\r\n var newOption = item.newOption;\r\n if (isObject(newOption)) {\r\n item.keyInfo.mainType = mainType;\r\n item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);\r\n }\r\n });\r\n}\r\nfunction determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {\r\n var subType = newCmptOption.type\r\n ? newCmptOption.type\r\n : existComponent\r\n ? existComponent.subType\r\n : componentModelCtor.determineSubType(mainType, newCmptOption);\r\n return subType;\r\n}\r\nfunction compressBatches(batchA, batchB) {\r\n var mapA = {};\r\n var mapB = {};\r\n makeMap(batchA || [], mapA);\r\n makeMap(batchB || [], mapB, mapA);\r\n return [mapToArray(mapA), mapToArray(mapB)];\r\n function makeMap(sourceBatch, map, otherMap) {\r\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\r\n var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null);\r\n if (seriesId == null) {\r\n return;\r\n }\r\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\r\n var otherDataIndices = otherMap && otherMap[seriesId];\r\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\r\n var dataIndex = dataIndices[j];\r\n if (otherDataIndices && otherDataIndices[dataIndex]) {\r\n otherDataIndices[dataIndex] = null;\r\n }\r\n else {\r\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\r\n }\r\n }\r\n }\r\n }\r\n function mapToArray(map, isData) {\r\n var result = [];\r\n for (var i in map) {\r\n if (map.hasOwnProperty(i) && map[i] != null) {\r\n if (isData) {\r\n result.push(+i);\r\n }\r\n else {\r\n var dataIndices = mapToArray(map[i], true);\r\n dataIndices.length && result.push({ seriesId: i, dataIndex: dataIndices });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\nfunction queryDataIndex(data, payload) {\r\n if (payload.dataIndexInside != null) {\r\n return payload.dataIndexInside;\r\n }\r\n else if (payload.dataIndex != null) {\r\n return isArray(payload.dataIndex)\r\n ? map(payload.dataIndex, function (value) {\r\n return data.indexOfRawIndex(value);\r\n })\r\n : data.indexOfRawIndex(payload.dataIndex);\r\n }\r\n else if (payload.name != null) {\r\n return isArray(payload.name)\r\n ? map(payload.name, function (value) {\r\n return data.indexOfName(value);\r\n })\r\n : data.indexOfName(payload.name);\r\n }\r\n}\r\nfunction makeInner() {\r\n var key = '__ec_inner_' + innerUniqueIndex++;\r\n return function (hostObj) {\r\n return hostObj[key] || (hostObj[key] = {});\r\n };\r\n}\r\nvar innerUniqueIndex = getRandomIdBase();\r\nfunction parseFinder(ecModel, finderInput, opt) {\r\n var finder;\r\n if (isString(finderInput)) {\r\n var obj = {};\r\n obj[finderInput + 'Index'] = 0;\r\n finder = obj;\r\n }\r\n else {\r\n finder = finderInput;\r\n }\r\n var queryOptionMap = createHashMap();\r\n var result = {};\r\n var mainTypeSpecified = false;\r\n each(finder, function (value, key) {\r\n if (key === 'dataIndex' || key === 'dataIndexInside') {\r\n result[key] = value;\r\n return;\r\n }\r\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\r\n var mainType = parsedKey[1];\r\n var queryType = (parsedKey[2] || '').toLowerCase();\r\n if (!mainType\r\n || !queryType\r\n || (opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0)) {\r\n return;\r\n }\r\n mainTypeSpecified = mainTypeSpecified || !!mainType;\r\n var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});\r\n queryOption[queryType] = value;\r\n });\r\n var defaultMainType = opt ? opt.defaultMainType : null;\r\n if (!mainTypeSpecified && defaultMainType) {\r\n queryOptionMap.set(defaultMainType, {});\r\n }\r\n queryOptionMap.each(function (queryOption, mainType) {\r\n var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {\r\n useDefault: defaultMainType === mainType,\r\n enableAll: (opt && opt.enableAll != null) ? opt.enableAll : true,\r\n enableNone: (opt && opt.enableNone != null) ? opt.enableNone : true\r\n });\r\n result[mainType + 'Models'] = queryResult.models;\r\n result[mainType + 'Model'] = queryResult.models[0];\r\n });\r\n return result;\r\n}\r\nvar SINGLE_REFERRING = { useDefault: true, enableAll: false, enableNone: false };\r\nvar MULTIPLE_REFERRING = { useDefault: false, enableAll: true, enableNone: true };\r\nfunction queryReferringComponents(ecModel, mainType, userOption, opt) {\r\n opt = opt || SINGLE_REFERRING;\r\n var indexOption = userOption.index;\r\n var idOption = userOption.id;\r\n var nameOption = userOption.name;\r\n var result = {\r\n models: null,\r\n specified: indexOption != null || idOption != null || nameOption != null\r\n };\r\n if (!result.specified) {\r\n var firstCmpt = void 0;\r\n result.models = (opt.useDefault && (firstCmpt = ecModel.getComponent(mainType))) ? [firstCmpt] : [];\r\n return result;\r\n }\r\n if (indexOption === 'none' || indexOption === false) {\r\n assert(opt.enableNone, '`\"none\"` or `false` is not a valid value on index option.');\r\n result.models = [];\r\n return result;\r\n }\r\n if (indexOption === 'all') {\r\n assert(opt.enableAll, '`\"all\"` is not a valid value on index option.');\r\n indexOption = idOption = nameOption = null;\r\n }\r\n result.models = ecModel.queryComponents({\r\n mainType: mainType,\r\n index: indexOption,\r\n id: idOption,\r\n name: nameOption\r\n });\r\n return result;\r\n}\r\nfunction setAttribute(dom, key, value) {\r\n dom.setAttribute\r\n ? dom.setAttribute(key, value)\r\n : (dom[key] = value);\r\n}\r\nfunction getAttribute(dom, key) {\r\n return dom.getAttribute\r\n ? dom.getAttribute(key)\r\n : dom[key];\r\n}\r\nfunction getTooltipRenderMode(renderModeOption) {\r\n if (renderModeOption === 'auto') {\r\n return env.domSupported ? 'html' : 'richText';\r\n }\r\n else {\r\n return renderModeOption || 'html';\r\n }\r\n}\r\nfunction groupData(array, getKey) {\r\n var buckets = createHashMap();\r\n var keys = [];\r\n each(array, function (item) {\r\n var key = getKey(item);\r\n (buckets.get(key)\r\n || (keys.push(key), buckets.set(key, []))).push(item);\r\n });\r\n return {\r\n keys: keys,\r\n buckets: buckets\r\n };\r\n}\r\nfunction interpolateRawValues(data, precision, sourceValue, targetValue, percent) {\r\n var isAutoPrecision = precision == null || precision === 'auto';\r\n if (targetValue == null) {\r\n return targetValue;\r\n }\r\n if (typeof targetValue === 'number') {\r\n var value = interpolateNumber(sourceValue || 0, targetValue, percent);\r\n return round$1(value, isAutoPrecision ? Math.max(getPrecisionSafe(sourceValue || 0), getPrecisionSafe(targetValue))\r\n : precision);\r\n }\r\n else if (typeof targetValue === 'string') {\r\n return percent < 1 ? sourceValue : targetValue;\r\n }\r\n else {\r\n var interpolated = [];\r\n var leftArr = sourceValue || [];\r\n var rightArr = targetValue;\r\n var length_1 = Math.max(leftArr.length, rightArr.length);\r\n for (var i = 0; i < length_1; ++i) {\r\n var info = data.getDimensionInfo(i);\r\n if (info.type === 'ordinal') {\r\n interpolated[i] = (percent < 1 ? leftArr : rightArr)[i];\r\n }\r\n else {\r\n var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0;\r\n var rightVal = rightArr[i];\r\n var value = leftArr == null\r\n ? targetValue[i]\r\n : interpolateNumber(leftVal, rightVal, percent);\r\n interpolated[i] = round$1(value, isAutoPrecision ? Math.max(getPrecisionSafe(leftVal), getPrecisionSafe(rightVal))\r\n : precision);\r\n }\r\n }\r\n return interpolated;\r\n }\r\n}\n\nvar TYPE_DELIMITER = '.';\r\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\r\nvar IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___';\r\nfunction parseClassType(componentType) {\r\n var ret = { main: '', sub: '' };\r\n if (componentType) {\r\n var typeArr = componentType.split(TYPE_DELIMITER);\r\n ret.main = typeArr[0] || '';\r\n ret.sub = typeArr[1] || '';\r\n }\r\n return ret;\r\n}\r\nfunction checkClassType(componentType) {\r\n assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\r\n}\r\nfunction isExtendedClass(clz) {\r\n return !!(clz && clz[IS_EXTENDED_CLASS]);\r\n}\r\nfunction enableClassExtend(rootClz, mandatoryMethods) {\r\n rootClz.$constructor = rootClz;\r\n rootClz.extend = function (proto) {\r\n if (__DEV__) {\r\n each(mandatoryMethods, function (method) {\r\n if (!proto[method]) {\r\n console.warn('Method `' + method + '` should be implemented'\r\n + (proto.type ? ' in ' + proto.type : '') + '.');\r\n }\r\n });\r\n }\r\n var superClass = this;\r\n function ExtendedClass() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (!proto.$constructor) {\r\n if (!isESClass(superClass)) {\r\n superClass.apply(this, arguments);\r\n }\r\n else {\r\n var ins = createObject(ExtendedClass.prototype, new (superClass.bind.apply(superClass, __spreadArrays([void 0], args)))());\r\n return ins;\r\n }\r\n }\r\n else {\r\n proto.$constructor.apply(this, arguments);\r\n }\r\n }\r\n ExtendedClass[IS_EXTENDED_CLASS] = true;\r\n extend(ExtendedClass.prototype, proto);\r\n ExtendedClass.extend = this.extend;\r\n ExtendedClass.superCall = superCall;\r\n ExtendedClass.superApply = superApply;\r\n inherits(ExtendedClass, this);\r\n ExtendedClass.superClass = superClass;\r\n return ExtendedClass;\r\n };\r\n}\r\nfunction isESClass(fn) {\r\n return typeof fn === 'function'\r\n && /^class\\s/.test(Function.prototype.toString.call(fn));\r\n}\r\nfunction mountExtend(SubClz, SupperClz) {\r\n SubClz.extend = SupperClz.extend;\r\n}\r\nvar classBase = Math.round(Math.random() * 10);\r\nfunction enableClassCheck(target) {\r\n var classAttr = ['__\\0is_clz', classBase++].join('_');\r\n target.prototype[classAttr] = true;\r\n if (__DEV__) {\r\n assert(!target.isInstance, 'The method \"is\" can not be defined.');\r\n }\r\n target.isInstance = function (obj) {\r\n return !!(obj && obj[classAttr]);\r\n };\r\n}\r\nfunction superCall(context, methodName) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n return this.superClass.prototype[methodName].apply(context, args);\r\n}\r\nfunction superApply(context, methodName, args) {\r\n return this.superClass.prototype[methodName].apply(context, args);\r\n}\r\nfunction enableClassManagement(target, options) {\r\n options = options || {};\r\n var storage = {};\r\n target.registerClass = function (clz) {\r\n var componentFullType = clz.type || clz.prototype.type;\r\n if (componentFullType) {\r\n checkClassType(componentFullType);\r\n clz.prototype.type = componentFullType;\r\n var componentTypeInfo = parseClassType(componentFullType);\r\n if (!componentTypeInfo.sub) {\r\n if (__DEV__) {\r\n if (storage[componentTypeInfo.main]) {\r\n console.warn(componentTypeInfo.main + ' exists.');\r\n }\r\n }\r\n storage[componentTypeInfo.main] = clz;\r\n }\r\n else if (componentTypeInfo.sub !== IS_CONTAINER) {\r\n var container = makeContainer(componentTypeInfo);\r\n container[componentTypeInfo.sub] = clz;\r\n }\r\n }\r\n return clz;\r\n };\r\n target.getClass = function (mainType, subType, throwWhenNotFound) {\r\n var clz = storage[mainType];\r\n if (clz && clz[IS_CONTAINER]) {\r\n clz = subType ? clz[subType] : null;\r\n }\r\n if (throwWhenNotFound && !clz) {\r\n throw new Error(!subType\r\n ? mainType + '.' + 'type should be specified.'\r\n : 'Component ' + mainType + '.' + (subType || '') + ' not exists. Load it first.');\r\n }\r\n return clz;\r\n };\r\n target.getClassesByMainType = function (componentType) {\r\n var componentTypeInfo = parseClassType(componentType);\r\n var result = [];\r\n var obj = storage[componentTypeInfo.main];\r\n if (obj && obj[IS_CONTAINER]) {\r\n each(obj, function (o, type) {\r\n type !== IS_CONTAINER && result.push(o);\r\n });\r\n }\r\n else {\r\n result.push(obj);\r\n }\r\n return result;\r\n };\r\n target.hasClass = function (componentType) {\r\n var componentTypeInfo = parseClassType(componentType);\r\n return !!storage[componentTypeInfo.main];\r\n };\r\n target.getAllClassMainTypes = function () {\r\n var types = [];\r\n each(storage, function (obj, type) {\r\n types.push(type);\r\n });\r\n return types;\r\n };\r\n target.hasSubTypes = function (componentType) {\r\n var componentTypeInfo = parseClassType(componentType);\r\n var obj = storage[componentTypeInfo.main];\r\n return obj && obj[IS_CONTAINER];\r\n };\r\n function makeContainer(componentTypeInfo) {\r\n var container = storage[componentTypeInfo.main];\r\n if (!container || !container[IS_CONTAINER]) {\r\n container = storage[componentTypeInfo.main] = {};\r\n container[IS_CONTAINER] = true;\r\n }\r\n return container;\r\n }\r\n if (options.registerWhenExtend) {\r\n var originalExtend_1 = target.extend;\r\n if (originalExtend_1) {\r\n target.extend = function (proto) {\r\n var ExtendedClass = originalExtend_1.call(this, proto);\r\n return target.registerClass(ExtendedClass);\r\n };\r\n }\r\n }\r\n}\n\nfunction makeStyleMapper(properties, ignoreParent) {\r\n for (var i = 0; i < properties.length; i++) {\r\n if (!properties[i][1]) {\r\n properties[i][1] = properties[i][0];\r\n }\r\n }\r\n ignoreParent = ignoreParent || false;\r\n return function (model, excludes, includes) {\r\n var style = {};\r\n for (var i = 0; i < properties.length; i++) {\r\n var propName = properties[i][1];\r\n if ((excludes && indexOf(excludes, propName) >= 0)\r\n || (includes && indexOf(includes, propName) < 0)) {\r\n continue;\r\n }\r\n var val = model.getShallow(propName, ignoreParent);\r\n if (val != null) {\r\n style[properties[i][0]] = val;\r\n }\r\n }\r\n return style;\r\n };\r\n}\n\nvar AREA_STYLE_KEY_MAP = [\r\n ['fill', 'color'],\r\n ['shadowBlur'],\r\n ['shadowOffsetX'],\r\n ['shadowOffsetY'],\r\n ['opacity'],\r\n ['shadowColor']\r\n];\r\nvar getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);\r\nvar AreaStyleMixin = (function () {\r\n function AreaStyleMixin() {\r\n }\r\n AreaStyleMixin.prototype.getAreaStyle = function (excludes, includes) {\r\n return getAreaStyle(this, excludes, includes);\r\n };\r\n return AreaStyleMixin;\r\n}());\n\nvar getECData = makeInner();\n\nvar _highlightNextDigit = 1;\r\nvar _highlightKeyMap = {};\r\nvar getSavedStates = makeInner();\r\nvar HOVER_STATE_NORMAL = 0;\r\nvar HOVER_STATE_BLUR = 1;\r\nvar HOVER_STATE_EMPHASIS = 2;\r\nvar SPECIAL_STATES = ['emphasis', 'blur', 'select'];\r\nvar DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select'];\r\nvar Z2_EMPHASIS_LIFT = 10;\r\nvar Z2_SELECT_LIFT = 9;\r\nvar HIGHLIGHT_ACTION_TYPE = 'highlight';\r\nvar DOWNPLAY_ACTION_TYPE = 'downplay';\r\nvar SELECT_ACTION_TYPE = 'select';\r\nvar UNSELECT_ACTION_TYPE = 'unselect';\r\nvar TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect';\r\nfunction hasFillOrStroke(fillOrStroke) {\r\n return fillOrStroke != null && fillOrStroke !== 'none';\r\n}\r\nvar liftedColorCache = new LRU(100);\r\nfunction liftColor(color$1) {\r\n if (typeof color$1 !== 'string') {\r\n return color$1;\r\n }\r\n var liftedColor = liftedColorCache.get(color$1);\r\n if (!liftedColor) {\r\n liftedColor = lift(color$1, -0.1);\r\n liftedColorCache.put(color$1, liftedColor);\r\n }\r\n return liftedColor;\r\n}\r\nfunction doChangeHoverState(el, stateName, hoverStateEnum) {\r\n if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) {\r\n el.onHoverStateChange(stateName);\r\n }\r\n el.hoverState = hoverStateEnum;\r\n}\r\nfunction singleEnterEmphasis(el) {\r\n doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS);\r\n}\r\nfunction singleLeaveEmphasis(el) {\r\n if (el.hoverState === HOVER_STATE_EMPHASIS) {\r\n doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n }\r\n}\r\nfunction singleEnterBlur(el) {\r\n doChangeHoverState(el, 'blur', HOVER_STATE_BLUR);\r\n}\r\nfunction singleLeaveBlur(el) {\r\n if (el.hoverState === HOVER_STATE_BLUR) {\r\n doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n }\r\n}\r\nfunction singleEnterSelect(el) {\r\n el.selected = true;\r\n}\r\nfunction singleLeaveSelect(el) {\r\n el.selected = false;\r\n}\r\nfunction updateElementState(el, updater, commonParam) {\r\n updater(el, commonParam);\r\n}\r\nfunction traverseUpdateState(el, updater, commonParam) {\r\n updateElementState(el, updater, commonParam);\r\n el.isGroup && el.traverse(function (child) {\r\n updateElementState(child, updater, commonParam);\r\n });\r\n}\r\nfunction setStatesFlag(el, stateName) {\r\n switch (stateName) {\r\n case 'emphasis':\r\n el.hoverState = HOVER_STATE_EMPHASIS;\r\n break;\r\n case 'normal':\r\n el.hoverState = HOVER_STATE_NORMAL;\r\n break;\r\n case 'blur':\r\n el.hoverState = HOVER_STATE_BLUR;\r\n break;\r\n case 'select':\r\n el.selected = true;\r\n }\r\n}\r\nfunction getFromStateStyle(el, props, toStateName, defaultValue) {\r\n var style = el.style;\r\n var fromState = {};\r\n for (var i = 0; i < props.length; i++) {\r\n var propName = props[i];\r\n var val = style[propName];\r\n fromState[propName] = val == null ? (defaultValue && defaultValue[propName]) : val;\r\n }\r\n for (var i = 0; i < el.animators.length; i++) {\r\n var animator = el.animators[i];\r\n if (animator.__fromStateTransition\r\n && animator.__fromStateTransition.indexOf(toStateName) < 0\r\n && animator.targetName === 'style') {\r\n animator.saveFinalToTarget(fromState, props);\r\n }\r\n }\r\n return fromState;\r\n}\r\nfunction createEmphasisDefaultState(el, stateName, targetStates, state) {\r\n var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0;\r\n var cloned = false;\r\n if (el instanceof Path) {\r\n var store = getSavedStates(el);\r\n var fromFill = hasSelect ? (store.selectFill || store.normalFill) : store.normalFill;\r\n var fromStroke = hasSelect ? (store.selectStroke || store.normalStroke) : store.normalStroke;\r\n if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {\r\n state = state || {};\r\n var emphasisStyle = state.style || {};\r\n if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {\r\n cloned = true;\r\n state = extend({}, state);\r\n emphasisStyle = extend({}, emphasisStyle);\r\n emphasisStyle.fill = liftColor(fromFill);\r\n }\r\n else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {\r\n if (!cloned) {\r\n state = extend({}, state);\r\n emphasisStyle = extend({}, emphasisStyle);\r\n }\r\n emphasisStyle.stroke = liftColor(fromStroke);\r\n }\r\n state.style = emphasisStyle;\r\n }\r\n }\r\n if (state) {\r\n if (state.z2 == null) {\r\n if (!cloned) {\r\n state = extend({}, state);\r\n }\r\n var z2EmphasisLift = el.z2EmphasisLift;\r\n state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);\r\n }\r\n }\r\n return state;\r\n}\r\nfunction createSelectDefaultState(el, stateName, state) {\r\n if (state) {\r\n if (state.z2 == null) {\r\n state = extend({}, state);\r\n var z2SelectLift = el.z2SelectLift;\r\n state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);\r\n }\r\n }\r\n return state;\r\n}\r\nfunction createBlurDefaultState(el, stateName, state) {\r\n var hasBlur = indexOf(el.currentStates, stateName) >= 0;\r\n var currentOpacity = el.style.opacity;\r\n var fromState = !hasBlur\r\n ? getFromStateStyle(el, ['opacity'], stateName, {\r\n opacity: 1\r\n })\r\n : null;\r\n state = state || {};\r\n var blurStyle = state.style || {};\r\n if (blurStyle.opacity == null) {\r\n state = extend({}, state);\r\n blurStyle = extend({\r\n opacity: hasBlur ? currentOpacity : (fromState.opacity * 0.1)\r\n }, blurStyle);\r\n state.style = blurStyle;\r\n }\r\n return state;\r\n}\r\nfunction elementStateProxy(stateName, targetStates) {\r\n var state = this.states[stateName];\r\n if (this.style) {\r\n if (stateName === 'emphasis') {\r\n return createEmphasisDefaultState(this, stateName, targetStates, state);\r\n }\r\n else if (stateName === 'blur') {\r\n return createBlurDefaultState(this, stateName, state);\r\n }\r\n else if (stateName === 'select') {\r\n return createSelectDefaultState(this, stateName, state);\r\n }\r\n }\r\n return state;\r\n}\r\nfunction setDefaultStateProxy(el) {\r\n el.stateProxy = elementStateProxy;\r\n var textContent = el.getTextContent();\r\n var textGuide = el.getTextGuideLine();\r\n if (textContent) {\r\n textContent.stateProxy = elementStateProxy;\r\n }\r\n if (textGuide) {\r\n textGuide.stateProxy = elementStateProxy;\r\n }\r\n}\r\nfunction enterEmphasisWhenMouseOver(el, e) {\r\n !shouldSilent(el, e)\r\n && !el.__highByOuter\r\n && traverseUpdateState(el, singleEnterEmphasis);\r\n}\r\nfunction leaveEmphasisWhenMouseOut(el, e) {\r\n !shouldSilent(el, e)\r\n && !el.__highByOuter\r\n && traverseUpdateState(el, singleLeaveEmphasis);\r\n}\r\nfunction enterEmphasis(el, highlightDigit) {\r\n el.__highByOuter |= 1 << (highlightDigit || 0);\r\n traverseUpdateState(el, singleEnterEmphasis);\r\n}\r\nfunction leaveEmphasis(el, highlightDigit) {\r\n !(el.__highByOuter &= ~(1 << (highlightDigit || 0)))\r\n && traverseUpdateState(el, singleLeaveEmphasis);\r\n}\r\nfunction enterBlur(el) {\r\n traverseUpdateState(el, singleEnterBlur);\r\n}\r\nfunction leaveBlur(el) {\r\n traverseUpdateState(el, singleLeaveBlur);\r\n}\r\nfunction enterSelect(el) {\r\n traverseUpdateState(el, singleEnterSelect);\r\n}\r\nfunction leaveSelect(el) {\r\n traverseUpdateState(el, singleLeaveSelect);\r\n}\r\nfunction shouldSilent(el, e) {\r\n return el.__highDownSilentOnTouch && e.zrByTouch;\r\n}\r\nfunction allLeaveBlur(api) {\r\n var model = api.getModel();\r\n model.eachComponent(function (componentType, componentModel) {\r\n var view = componentType === 'series'\r\n ? api.getViewOfSeriesModel(componentModel)\r\n : api.getViewOfComponentModel(componentModel);\r\n view.group.traverse(function (child) {\r\n singleLeaveBlur(child);\r\n });\r\n });\r\n}\r\nfunction toggleSeriesBlurState(targetSeriesIndex, focus, blurScope, api, isBlur) {\r\n var ecModel = api.getModel();\r\n blurScope = blurScope || 'coordinateSystem';\r\n function leaveBlurOfIndices(data, dataIndices) {\r\n for (var i = 0; i < dataIndices.length; i++) {\r\n var itemEl = data.getItemGraphicEl(dataIndices[i]);\r\n itemEl && leaveBlur(itemEl);\r\n }\r\n }\r\n if (!isBlur) {\r\n allLeaveBlur(api);\r\n return;\r\n }\r\n if (targetSeriesIndex == null) {\r\n return;\r\n }\r\n if (!focus || focus === 'none') {\r\n return;\r\n }\r\n var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);\r\n var targetCoordSys = targetSeriesModel.coordinateSystem;\r\n if (targetCoordSys && targetCoordSys.master) {\r\n targetCoordSys = targetCoordSys.master;\r\n }\r\n var blurredSeries = [];\r\n ecModel.eachSeries(function (seriesModel) {\r\n var sameSeries = targetSeriesModel === seriesModel;\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys && coordSys.master) {\r\n coordSys = coordSys.master;\r\n }\r\n var sameCoordSys = coordSys && targetCoordSys\r\n ? coordSys === targetCoordSys\r\n : sameSeries;\r\n if (!(blurScope === 'series' && !sameSeries\r\n || blurScope === 'coordinateSystem' && !sameCoordSys\r\n || focus === 'series' && sameSeries)) {\r\n var view = api.getViewOfSeriesModel(seriesModel);\r\n view.group.traverse(function (child) {\r\n singleEnterBlur(child);\r\n });\r\n if (isArrayLike(focus)) {\r\n leaveBlurOfIndices(seriesModel.getData(), focus);\r\n }\r\n else if (isObject(focus)) {\r\n var dataTypes = keys(focus);\r\n for (var d = 0; d < dataTypes.length; d++) {\r\n leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]);\r\n }\r\n }\r\n blurredSeries.push(seriesModel);\r\n }\r\n });\r\n ecModel.eachComponent(function (componentType, componentModel) {\r\n if (componentType === 'series') {\r\n return;\r\n }\r\n var view = api.getViewOfComponentModel(componentModel);\r\n if (view && view.blurSeries) {\r\n view.blurSeries(blurredSeries, ecModel);\r\n }\r\n });\r\n}\r\nfunction toggleSeriesBlurStateFromPayload(seriesModel, payload, api) {\r\n if (!isHighDownPayload(payload)) {\r\n return;\r\n }\r\n var isHighlight = payload.type === HIGHLIGHT_ACTION_TYPE;\r\n var seriesIndex = seriesModel.seriesIndex;\r\n var data = seriesModel.getData(payload.dataType);\r\n var dataIndex = queryDataIndex(data, payload);\r\n dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0;\r\n var el = data.getItemGraphicEl(dataIndex);\r\n if (!el) {\r\n var count = data.count();\r\n var current = 0;\r\n while (!el && current < count) {\r\n el = data.getItemGraphicEl(current++);\r\n }\r\n }\r\n if (el) {\r\n var ecData = getECData(el);\r\n toggleSeriesBlurState(seriesIndex, ecData.focus, ecData.blurScope, api, isHighlight);\r\n }\r\n else {\r\n var focus_1 = seriesModel.get(['emphasis', 'focus']);\r\n var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n if (focus_1 != null) {\r\n toggleSeriesBlurState(seriesIndex, focus_1, blurScope, api, isHighlight);\r\n }\r\n }\r\n}\r\nfunction toggleSelectionFromPayload(seriesModel, payload, api) {\r\n if (!(isSelectChangePayload(payload))) {\r\n return;\r\n }\r\n var dataType = payload.dataType;\r\n var data = seriesModel.getData(dataType);\r\n var dataIndex = queryDataIndex(data, payload);\r\n if (!isArray(dataIndex)) {\r\n dataIndex = [dataIndex];\r\n }\r\n seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? 'toggleSelect'\r\n : payload.type === SELECT_ACTION_TYPE ? 'select' : 'unselect'](dataIndex, dataType);\r\n}\r\nfunction updateSeriesElementSelection(seriesModel) {\r\n var allData = seriesModel.getAllData();\r\n each(allData, function (_a) {\r\n var data = _a.data, type = _a.type;\r\n data.eachItemGraphicEl(function (el, idx) {\r\n seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el);\r\n });\r\n });\r\n}\r\nfunction getAllSelectedIndices(ecModel) {\r\n var ret = [];\r\n ecModel.eachSeries(function (seriesModel) {\r\n var allData = seriesModel.getAllData();\r\n each(allData, function (_a) {\r\n var data = _a.data, type = _a.type;\r\n var dataIndices = seriesModel.getSelectedDataIndices();\r\n if (dataIndices.length > 0) {\r\n var item = {\r\n dataIndex: dataIndices,\r\n seriesIndex: seriesModel.seriesIndex\r\n };\r\n if (type != null) {\r\n item.dataType = type;\r\n }\r\n ret.push(item);\r\n }\r\n });\r\n });\r\n return ret;\r\n}\r\nfunction enableHoverEmphasis(el, focus, blurScope) {\r\n setAsHighDownDispatcher(el, true);\r\n traverseUpdateState(el, setDefaultStateProxy);\r\n enableHoverFocus(el, focus, blurScope);\r\n}\r\nfunction enableHoverFocus(el, focus, blurScope) {\r\n var ecData = getECData(el);\r\n if (focus != null) {\r\n ecData.focus = focus;\r\n ecData.blurScope = blurScope;\r\n }\r\n else if (ecData.focus) {\r\n ecData.focus = null;\r\n }\r\n}\r\nvar OTHER_STATES = ['emphasis', 'blur', 'select'];\r\nvar defaultStyleGetterMap = {\r\n itemStyle: 'getItemStyle',\r\n lineStyle: 'getLineStyle',\r\n areaStyle: 'getAreaStyle'\r\n};\r\nfunction setStatesStylesFromModel(el, itemModel, styleType, getter) {\r\n styleType = styleType || 'itemStyle';\r\n for (var i = 0; i < OTHER_STATES.length; i++) {\r\n var stateName = OTHER_STATES[i];\r\n var model = itemModel.getModel([stateName, styleType]);\r\n var state = el.ensureState(stateName);\r\n state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]]();\r\n }\r\n}\r\nfunction setAsHighDownDispatcher(el, asDispatcher) {\r\n var disable = asDispatcher === false;\r\n var extendedEl = el;\r\n if (el.highDownSilentOnTouch) {\r\n extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch;\r\n }\r\n if (!disable || extendedEl.__highDownDispatcher) {\r\n extendedEl.__highByOuter = extendedEl.__highByOuter || 0;\r\n extendedEl.__highDownDispatcher = !disable;\r\n }\r\n}\r\nfunction isHighDownDispatcher(el) {\r\n return !!(el && el.__highDownDispatcher);\r\n}\r\nfunction getHighlightDigit(highlightKey) {\r\n var highlightDigit = _highlightKeyMap[highlightKey];\r\n if (highlightDigit == null && _highlightNextDigit <= 32) {\r\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\r\n }\r\n return highlightDigit;\r\n}\r\nfunction isSelectChangePayload(payload) {\r\n var payloadType = payload.type;\r\n return payloadType === SELECT_ACTION_TYPE\r\n || payloadType === UNSELECT_ACTION_TYPE\r\n || payloadType === TOGGLE_SELECT_ACTION_TYPE;\r\n}\r\nfunction isHighDownPayload(payload) {\r\n var payloadType = payload.type;\r\n return payloadType === HIGHLIGHT_ACTION_TYPE\r\n || payloadType === DOWNPLAY_ACTION_TYPE;\r\n}\r\nfunction savePathStates(el) {\r\n var store = getSavedStates(el);\r\n store.normalFill = el.style.fill;\r\n store.normalStroke = el.style.stroke;\r\n var selectState = el.states.select || {};\r\n store.selectFill = (selectState.style && selectState.style.fill) || null;\r\n store.selectStroke = (selectState.style && selectState.style.stroke) || null;\r\n}\n\nvar mathMax$4 = Math.max;\r\nvar mathMin$4 = Math.min;\r\nvar _customShapeMap = {};\r\nfunction extendShape(opts) {\r\n return Path.extend(opts);\r\n}\r\nvar extendPathFromString = extendFromString;\r\nfunction extendPath(pathData, opts) {\r\n return extendPathFromString(pathData, opts);\r\n}\r\nfunction registerShape(name, ShapeClass) {\r\n _customShapeMap[name] = ShapeClass;\r\n}\r\nfunction getShapeClass(name) {\r\n if (_customShapeMap.hasOwnProperty(name)) {\r\n return _customShapeMap[name];\r\n }\r\n}\r\nfunction makePath(pathData, opts, rect, layout) {\r\n var path = createFromString(pathData, opts);\r\n if (rect) {\r\n if (layout === 'center') {\r\n rect = centerGraphic(rect, path.getBoundingRect());\r\n }\r\n resizePath(path, rect);\r\n }\r\n return path;\r\n}\r\nfunction makeImage(imageUrl, rect, layout) {\r\n var zrImg = new ZRImage({\r\n style: {\r\n image: imageUrl,\r\n x: rect.x,\r\n y: rect.y,\r\n width: rect.width,\r\n height: rect.height\r\n },\r\n onload: function (img) {\r\n if (layout === 'center') {\r\n var boundingRect = {\r\n width: img.width,\r\n height: img.height\r\n };\r\n zrImg.setStyle(centerGraphic(rect, boundingRect));\r\n }\r\n }\r\n });\r\n return zrImg;\r\n}\r\nfunction centerGraphic(rect, boundingRect) {\r\n var aspect = boundingRect.width / boundingRect.height;\r\n var width = rect.height * aspect;\r\n var height;\r\n if (width <= rect.width) {\r\n height = rect.height;\r\n }\r\n else {\r\n width = rect.width;\r\n height = width / aspect;\r\n }\r\n var cx = rect.x + rect.width / 2;\r\n var cy = rect.y + rect.height / 2;\r\n return {\r\n x: cx - width / 2,\r\n y: cy - height / 2,\r\n width: width,\r\n height: height\r\n };\r\n}\r\nvar mergePath$1 = mergePath;\r\nfunction resizePath(path, rect) {\r\n if (!path.applyTransform) {\r\n return;\r\n }\r\n var pathRect = path.getBoundingRect();\r\n var m = pathRect.calculateTransform(rect);\r\n path.applyTransform(m);\r\n}\r\nfunction subPixelOptimizeLine$1(param) {\r\n subPixelOptimizeLine(param.shape, param.shape, param.style);\r\n return param;\r\n}\r\nfunction subPixelOptimizeRect$1(param) {\r\n subPixelOptimizeRect(param.shape, param.shape, param.style);\r\n return param;\r\n}\r\nvar subPixelOptimize$1 = subPixelOptimize;\r\nfunction animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) {\r\n var isFrom = false;\r\n var removeOpt;\r\n if (typeof dataIndex === 'function') {\r\n during = cb;\r\n cb = dataIndex;\r\n dataIndex = null;\r\n }\r\n else if (isObject(dataIndex)) {\r\n cb = dataIndex.cb;\r\n during = dataIndex.during;\r\n isFrom = dataIndex.isFrom;\r\n removeOpt = dataIndex.removeOpt;\r\n dataIndex = dataIndex.dataIndex;\r\n }\r\n var isUpdate = animationType === 'update';\r\n var isRemove = animationType === 'remove';\r\n var animationPayload;\r\n if (animatableModel && animatableModel.ecModel) {\r\n var updatePayload = animatableModel.ecModel.getUpdatePayload();\r\n animationPayload = (updatePayload && updatePayload.animation);\r\n }\r\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\r\n if (!isRemove) {\r\n el.stopAnimation('remove');\r\n }\r\n if (animationEnabled) {\r\n var duration = void 0;\r\n var animationEasing = void 0;\r\n var animationDelay = void 0;\r\n if (animationPayload) {\r\n duration = animationPayload.duration || 0;\r\n animationEasing = animationPayload.easing || 'cubicOut';\r\n animationDelay = animationPayload.delay || 0;\r\n }\r\n else if (isRemove) {\r\n removeOpt = removeOpt || {};\r\n duration = retrieve2(removeOpt.duration, 200);\r\n animationEasing = retrieve2(removeOpt.easing, 'cubicOut');\r\n animationDelay = 0;\r\n }\r\n else {\r\n duration = animatableModel.getShallow(isUpdate ? 'animationDurationUpdate' : 'animationDuration');\r\n animationEasing = animatableModel.getShallow(isUpdate ? 'animationEasingUpdate' : 'animationEasing');\r\n animationDelay = animatableModel.getShallow(isUpdate ? 'animationDelayUpdate' : 'animationDelay');\r\n }\r\n if (typeof animationDelay === 'function') {\r\n animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams\r\n ? animatableModel.getAnimationDelayParams(el, dataIndex)\r\n : null);\r\n }\r\n if (typeof duration === 'function') {\r\n duration = duration(dataIndex);\r\n }\r\n duration > 0\r\n ? (isFrom\r\n ? el.animateFrom(props, {\r\n duration: duration,\r\n delay: animationDelay || 0,\r\n easing: animationEasing,\r\n done: cb,\r\n force: !!cb || !!during,\r\n scope: animationType,\r\n during: during\r\n })\r\n : el.animateTo(props, {\r\n duration: duration,\r\n delay: animationDelay || 0,\r\n easing: animationEasing,\r\n done: cb,\r\n force: !!cb || !!during,\r\n setToFinal: true,\r\n scope: animationType,\r\n during: during\r\n }))\r\n : (el.stopAnimation(),\r\n !isFrom && el.attr(props),\r\n cb && cb());\r\n }\r\n else {\r\n el.stopAnimation();\r\n !isFrom && el.attr(props);\r\n during && during(1);\r\n cb && cb();\r\n }\r\n}\r\nfunction updateProps(el, props, animatableModel, dataIndex, cb, during) {\r\n animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during);\r\n}\r\nfunction initProps(el, props, animatableModel, dataIndex, cb, during) {\r\n animateOrSetProps('init', el, props, animatableModel, dataIndex, cb, during);\r\n}\r\nfunction removeElement(el, props, animatableModel, dataIndex, cb, during) {\r\n if (isElementRemoved(el)) {\r\n return;\r\n }\r\n animateOrSetProps('remove', el, props, animatableModel, dataIndex, cb, during);\r\n}\r\nfunction fadeOutDisplayable(el, animatableModel, dataIndex, done) {\r\n el.removeTextContent();\r\n el.removeTextGuideLine();\r\n removeElement(el, {\r\n style: {\r\n opacity: 0\r\n }\r\n }, animatableModel, dataIndex, done);\r\n}\r\nfunction removeElementWithFadeOut(el, animatableModel, dataIndex) {\r\n function doRemove() {\r\n el.parent && el.parent.remove(el);\r\n }\r\n if (!el.isGroup) {\r\n fadeOutDisplayable(el, animatableModel, dataIndex, doRemove);\r\n }\r\n else {\r\n el.traverse(function (disp) {\r\n if (!disp.isGroup) {\r\n fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);\r\n }\r\n });\r\n }\r\n}\r\nfunction isElementRemoved(el) {\r\n if (!el.__zr) {\r\n return true;\r\n }\r\n for (var i = 0; i < el.animators.length; i++) {\r\n var animator = el.animators[i];\r\n if (animator.scope === 'remove') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction getTransform(target, ancestor) {\r\n var mat = identity([]);\r\n while (target && target !== ancestor) {\r\n mul$1(mat, target.getLocalTransform(), mat);\r\n target = target.parent;\r\n }\r\n return mat;\r\n}\r\nfunction applyTransform$1(target, transform, invert$1) {\r\n if (transform && !isArrayLike(transform)) {\r\n transform = Transformable.getLocalTransform(transform);\r\n }\r\n if (invert$1) {\r\n transform = invert([], transform);\r\n }\r\n return applyTransform([], target, transform);\r\n}\r\nfunction transformDirection(direction, transform, invert) {\r\n var hBase = (transform[4] === 0 || transform[5] === 0 || transform[0] === 0)\r\n ? 1 : Math.abs(2 * transform[4] / transform[0]);\r\n var vBase = (transform[4] === 0 || transform[5] === 0 || transform[2] === 0)\r\n ? 1 : Math.abs(2 * transform[4] / transform[2]);\r\n var vertex = [\r\n direction === 'left' ? -hBase : direction === 'right' ? hBase : 0,\r\n direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0\r\n ];\r\n vertex = applyTransform$1(vertex, transform, invert);\r\n return Math.abs(vertex[0]) > Math.abs(vertex[1])\r\n ? (vertex[0] > 0 ? 'right' : 'left')\r\n : (vertex[1] > 0 ? 'bottom' : 'top');\r\n}\r\nfunction isNotGroup(el) {\r\n return !el.isGroup;\r\n}\r\nfunction isPath(el) {\r\n return el.shape != null;\r\n}\r\nfunction groupTransition(g1, g2, animatableModel) {\r\n if (!g1 || !g2) {\r\n return;\r\n }\r\n function getElMap(g) {\r\n var elMap = {};\r\n g.traverse(function (el) {\r\n if (isNotGroup(el) && el.anid) {\r\n elMap[el.anid] = el;\r\n }\r\n });\r\n return elMap;\r\n }\r\n function getAnimatableProps(el) {\r\n var obj = {\r\n x: el.x,\r\n y: el.y,\r\n rotation: el.rotation\r\n };\r\n if (isPath(el)) {\r\n obj.shape = extend({}, el.shape);\r\n }\r\n return obj;\r\n }\r\n var elMap1 = getElMap(g1);\r\n g2.traverse(function (el) {\r\n if (isNotGroup(el) && el.anid) {\r\n var oldEl = elMap1[el.anid];\r\n if (oldEl) {\r\n var newProp = getAnimatableProps(el);\r\n el.attr(getAnimatableProps(oldEl));\r\n updateProps(el, newProp, animatableModel, getECData(el).dataIndex);\r\n }\r\n }\r\n });\r\n}\r\nfunction clipPointsByRect(points, rect) {\r\n return map(points, function (point) {\r\n var x = point[0];\r\n x = mathMax$4(x, rect.x);\r\n x = mathMin$4(x, rect.x + rect.width);\r\n var y = point[1];\r\n y = mathMax$4(y, rect.y);\r\n y = mathMin$4(y, rect.y + rect.height);\r\n return [x, y];\r\n });\r\n}\r\nfunction clipRectByRect(targetRect, rect) {\r\n var x = mathMax$4(targetRect.x, rect.x);\r\n var x2 = mathMin$4(targetRect.x + targetRect.width, rect.x + rect.width);\r\n var y = mathMax$4(targetRect.y, rect.y);\r\n var y2 = mathMin$4(targetRect.y + targetRect.height, rect.y + rect.height);\r\n if (x2 >= x && y2 >= y) {\r\n return {\r\n x: x,\r\n y: y,\r\n width: x2 - x,\r\n height: y2 - y\r\n };\r\n }\r\n}\r\nfunction createIcon(iconStr, opt, rect) {\r\n var innerOpts = extend({ rectHover: true }, opt);\r\n var style = innerOpts.style = { strokeNoScale: true };\r\n rect = rect || { x: -1, y: -1, width: 2, height: 2 };\r\n if (iconStr) {\r\n return iconStr.indexOf('image://') === 0\r\n ? (style.image = iconStr.slice(8),\r\n defaults(style, rect),\r\n new ZRImage(innerOpts))\r\n : (makePath(iconStr.replace('path://', ''), innerOpts, rect, 'center'));\r\n }\r\n}\r\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\r\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\r\n var p = points[i];\r\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\r\n return true;\r\n }\r\n p2 = p;\r\n }\r\n}\r\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\r\n var mx = a2x - a1x;\r\n var my = a2y - a1y;\r\n var nx = b2x - b1x;\r\n var ny = b2y - b1y;\r\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\r\n if (nearZero(nmCrossProduct)) {\r\n return false;\r\n }\r\n var b1a1x = a1x - b1x;\r\n var b1a1y = a1y - b1y;\r\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\r\n if (q < 0 || q > 1) {\r\n return false;\r\n }\r\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\r\n if (p < 0 || p > 1) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction crossProduct2d(x1, y1, x2, y2) {\r\n return x1 * y2 - x2 * y1;\r\n}\r\nfunction nearZero(val) {\r\n return val <= (1e-6) && val >= -(1e-6);\r\n}\r\nregisterShape('circle', Circle);\r\nregisterShape('ellipse', Ellipse);\r\nregisterShape('sector', Sector);\r\nregisterShape('ring', Ring);\r\nregisterShape('polygon', Polygon);\r\nregisterShape('polyline', Polyline);\r\nregisterShape('rect', Rect);\r\nregisterShape('line', Line);\r\nregisterShape('bezierCurve', BezierCurve);\r\nregisterShape('arc', Arc);\n\nvar graphic = /*#__PURE__*/Object.freeze({\n __proto__: null,\n extendShape: extendShape,\n extendPath: extendPath,\n registerShape: registerShape,\n getShapeClass: getShapeClass,\n makePath: makePath,\n makeImage: makeImage,\n mergePath: mergePath$1,\n resizePath: resizePath,\n subPixelOptimizeLine: subPixelOptimizeLine$1,\n subPixelOptimizeRect: subPixelOptimizeRect$1,\n subPixelOptimize: subPixelOptimize$1,\n updateProps: updateProps,\n initProps: initProps,\n removeElement: removeElement,\n removeElementWithFadeOut: removeElementWithFadeOut,\n isElementRemoved: isElementRemoved,\n getTransform: getTransform,\n applyTransform: applyTransform$1,\n transformDirection: transformDirection,\n groupTransition: groupTransition,\n clipPointsByRect: clipPointsByRect,\n clipRectByRect: clipRectByRect,\n createIcon: createIcon,\n linePolygonIntersect: linePolygonIntersect,\n lineLineIntersect: lineLineIntersect,\n Group: Group,\n Image: ZRImage,\n Text: ZRText,\n Circle: Circle,\n Ellipse: Ellipse,\n Sector: Sector,\n Ring: Ring,\n Polygon: Polygon,\n Polyline: Polyline,\n Rect: Rect,\n Line: Line,\n BezierCurve: BezierCurve,\n Arc: Arc,\n IncrementalDisplayable: IncrementalDisplayble,\n CompoundPath: CompoundPath,\n LinearGradient: LinearGradient,\n RadialGradient: RadialGradient,\n BoundingRect: BoundingRect,\n OrientedBoundingRect: OrientedBoundingRect,\n Point: Point,\n Path: Path\n});\n\nvar EMPTY_OBJ = {};\r\nfunction setLabelText(label, labelTexts) {\r\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n var stateName = SPECIAL_STATES[i];\r\n var text = labelTexts[stateName];\r\n var state = label.ensureState(stateName);\r\n state.style = state.style || {};\r\n state.style.text = text;\r\n }\r\n var oldStates = label.currentStates.slice();\r\n label.clearStates(true);\r\n label.setStyle({ text: labelTexts.normal });\r\n label.useStates(oldStates, true);\r\n}\r\nfunction getLabelText(opt, stateModels, overrideValue) {\r\n var labelFetcher = opt.labelFetcher;\r\n var labelDataIndex = opt.labelDataIndex;\r\n var labelDimIndex = opt.labelDimIndex;\r\n var normalModel = stateModels.normal;\r\n var baseText;\r\n if (labelFetcher) {\r\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), overrideValue != null ? {\r\n value: overrideValue\r\n } : null);\r\n }\r\n if (baseText == null) {\r\n baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, overrideValue) : opt.defaultText;\r\n }\r\n var statesText = {\r\n normal: baseText\r\n };\r\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n var stateName = SPECIAL_STATES[i];\r\n var stateModel = stateModels[stateName];\r\n statesText[stateName] = retrieve2(labelFetcher\r\n ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter'))\r\n : null, baseText);\r\n }\r\n return statesText;\r\n}\r\nfunction setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) {\r\n opt = opt || EMPTY_OBJ;\r\n var isSetOnText = targetEl instanceof ZRText;\r\n var needsCreateText = false;\r\n for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n var stateModel = labelStatesModels[DISPLAY_STATES[i]];\r\n if (stateModel && stateModel.getShallow('show')) {\r\n needsCreateText = true;\r\n break;\r\n }\r\n }\r\n var textContent = isSetOnText ? targetEl : targetEl.getTextContent();\r\n if (needsCreateText) {\r\n if (!isSetOnText) {\r\n if (!textContent) {\r\n textContent = new ZRText();\r\n targetEl.setTextContent(textContent);\r\n }\r\n if (targetEl.stateProxy) {\r\n textContent.stateProxy = targetEl.stateProxy;\r\n }\r\n }\r\n var labelStatesTexts = getLabelText(opt, labelStatesModels);\r\n var normalModel = labelStatesModels.normal;\r\n var showNormal = !!normalModel.getShallow('show');\r\n var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);\r\n normalStyle.text = labelStatesTexts.normal;\r\n if (!isSetOnText) {\r\n targetEl.setTextConfig(createTextConfig(normalModel, opt, false));\r\n }\r\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n var stateName = SPECIAL_STATES[i];\r\n var stateModel = labelStatesModels[stateName];\r\n if (stateModel) {\r\n var stateObj = textContent.ensureState(stateName);\r\n var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal);\r\n if (stateShow !== showNormal) {\r\n stateObj.ignore = !stateShow;\r\n }\r\n stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);\r\n stateObj.style.text = labelStatesTexts[stateName];\r\n if (!isSetOnText) {\r\n var targetElEmphasisState = targetEl.ensureState(stateName);\r\n targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);\r\n }\r\n }\r\n }\r\n textContent.silent = !!normalModel.getShallow('silent');\r\n if (textContent.style.x != null) {\r\n normalStyle.x = textContent.style.x;\r\n }\r\n if (textContent.style.y != null) {\r\n normalStyle.y = textContent.style.y;\r\n }\r\n textContent.ignore = !showNormal;\r\n textContent.useStyle(normalStyle);\r\n textContent.dirty();\r\n if (opt.enableTextSetter) {\r\n labelInner(textContent).setLabelText = function (overrideValue) {\r\n var labelStatesTexts = getLabelText(opt, labelStatesModels, overrideValue);\r\n setLabelText(textContent, labelStatesTexts);\r\n };\r\n }\r\n }\r\n else if (textContent) {\r\n textContent.ignore = true;\r\n }\r\n targetEl.dirty();\r\n}\r\nfunction getLabelStatesModels(itemModel, labelName) {\r\n labelName = (labelName || 'label');\r\n var statesModels = {\r\n normal: itemModel.getModel(labelName)\r\n };\r\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n var stateName = SPECIAL_STATES[i];\r\n statesModels[stateName] = itemModel.getModel([stateName, labelName]);\r\n }\r\n return statesModels;\r\n}\r\nfunction createTextStyle(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) {\r\n var textStyle = {};\r\n setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);\r\n specifiedTextStyle && extend(textStyle, specifiedTextStyle);\r\n return textStyle;\r\n}\r\nfunction createTextConfig(textStyleModel, opt, isNotNormal) {\r\n opt = opt || {};\r\n var textConfig = {};\r\n var labelPosition;\r\n var labelRotate = textStyleModel.getShallow('rotate');\r\n var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5);\r\n var labelOffset = textStyleModel.getShallow('offset');\r\n labelPosition = textStyleModel.getShallow('position')\r\n || (isNotNormal ? null : 'inside');\r\n labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top');\r\n if (labelPosition != null) {\r\n textConfig.position = labelPosition;\r\n }\r\n if (labelOffset != null) {\r\n textConfig.offset = labelOffset;\r\n }\r\n if (labelRotate != null) {\r\n labelRotate *= Math.PI / 180;\r\n textConfig.rotation = labelRotate;\r\n }\r\n if (labelDistance != null) {\r\n textConfig.distance = labelDistance;\r\n }\r\n textConfig.outsideFill = textStyleModel.get('color') === 'inherit'\r\n ? (opt.inheritColor || null)\r\n : 'auto';\r\n return textConfig;\r\n}\r\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {\r\n opt = opt || EMPTY_OBJ;\r\n var ecModel = textStyleModel.ecModel;\r\n var globalTextStyle = ecModel && ecModel.option.textStyle;\r\n var richItemNames = getRichItemNames(textStyleModel);\r\n var richResult;\r\n if (richItemNames) {\r\n richResult = {};\r\n for (var name_1 in richItemNames) {\r\n if (richItemNames.hasOwnProperty(name_1)) {\r\n var richTextStyle = textStyleModel.getModel(['rich', name_1]);\r\n setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);\r\n }\r\n }\r\n }\r\n if (richResult) {\r\n textStyle.rich = richResult;\r\n }\r\n var overflow = textStyleModel.get('overflow');\r\n if (overflow) {\r\n textStyle.overflow = overflow;\r\n }\r\n var margin = textStyleModel.get('minMargin');\r\n if (margin != null) {\r\n textStyle.margin = margin;\r\n }\r\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);\r\n}\r\nfunction getRichItemNames(textStyleModel) {\r\n var richItemNameMap;\r\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\r\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\r\n if (rich) {\r\n richItemNameMap = richItemNameMap || {};\r\n var richKeys = keys(rich);\r\n for (var i = 0; i < richKeys.length; i++) {\r\n var richKey = richKeys[i];\r\n richItemNameMap[richKey] = 1;\r\n }\r\n }\r\n textStyleModel = textStyleModel.parentModel;\r\n }\r\n return richItemNameMap;\r\n}\r\nvar TEXT_PROPS_WITH_GLOBAL = [\r\n 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'\r\n];\r\nvar TEXT_PROPS_SELF = [\r\n 'align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign'\r\n];\r\nvar TEXT_PROPS_BOX = [\r\n 'padding', 'borderWidth', 'borderRadius', 'borderDashOffset',\r\n 'backgroundColor', 'borderColor',\r\n 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'\r\n];\r\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {\r\n globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;\r\n var inheritColor = opt && opt.inheritColor;\r\n var fillColor = textStyleModel.getShallow('color');\r\n var strokeColor = textStyleModel.getShallow('textBorderColor');\r\n var opacity = retrieve2(textStyleModel.getShallow('opacity'), globalTextStyle.opacity);\r\n if (fillColor === 'inherit' || fillColor === 'auto') {\r\n if (__DEV__) {\r\n if (fillColor === 'auto') {\r\n deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n }\r\n }\r\n if (inheritColor) {\r\n fillColor = inheritColor;\r\n }\r\n else {\r\n fillColor = null;\r\n }\r\n }\r\n if (strokeColor === 'inherit' || (strokeColor === 'auto')) {\r\n if (__DEV__) {\r\n if (strokeColor === 'auto') {\r\n deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n }\r\n }\r\n if (inheritColor) {\r\n strokeColor = inheritColor;\r\n }\r\n else {\r\n strokeColor = null;\r\n }\r\n }\r\n if (!isAttached) {\r\n fillColor = fillColor || globalTextStyle.color;\r\n strokeColor = strokeColor || globalTextStyle.textBorderColor;\r\n }\r\n if (fillColor != null) {\r\n textStyle.fill = fillColor;\r\n }\r\n if (strokeColor != null) {\r\n textStyle.stroke = strokeColor;\r\n }\r\n var textBorderWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\r\n if (textBorderWidth != null) {\r\n textStyle.lineWidth = textBorderWidth;\r\n }\r\n var textBorderType = retrieve2(textStyleModel.getShallow('textBorderType'), globalTextStyle.textBorderType);\r\n if (textBorderType != null) {\r\n textStyle.lineDash = textBorderType;\r\n }\r\n var textBorderDashOffset = retrieve2(textStyleModel.getShallow('textBorderDashOffset'), globalTextStyle.textBorderDashOffset);\r\n if (textBorderDashOffset != null) {\r\n textStyle.lineDashOffset = textBorderDashOffset;\r\n }\r\n if (!isNotNormal && (opacity == null) && !inRich) {\r\n opacity = opt && opt.defaultOpacity;\r\n }\r\n if (opacity != null) {\r\n textStyle.opacity = opacity;\r\n }\r\n if (!isNotNormal && !isAttached) {\r\n if (textStyle.fill == null && opt.inheritColor) {\r\n textStyle.fill = opt.inheritColor;\r\n }\r\n }\r\n for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {\r\n var key = TEXT_PROPS_WITH_GLOBAL[i];\r\n var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);\r\n if (val != null) {\r\n textStyle[key] = val;\r\n }\r\n }\r\n for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {\r\n var key = TEXT_PROPS_SELF[i];\r\n var val = textStyleModel.getShallow(key);\r\n if (val != null) {\r\n textStyle[key] = val;\r\n }\r\n }\r\n if (textStyle.verticalAlign == null) {\r\n var baseline = textStyleModel.getShallow('baseline');\r\n if (baseline != null) {\r\n textStyle.verticalAlign = baseline;\r\n }\r\n }\r\n if (!isBlock || !opt.disableBox) {\r\n for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {\r\n var key = TEXT_PROPS_BOX[i];\r\n var val = textStyleModel.getShallow(key);\r\n if (val != null) {\r\n textStyle[key] = val;\r\n }\r\n }\r\n var borderType = textStyleModel.getShallow('borderType');\r\n if (borderType != null) {\r\n textStyle.borderDash = borderType;\r\n }\r\n if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) {\r\n if (__DEV__) {\r\n if (textStyle.backgroundColor === 'auto') {\r\n deprecateReplaceLog('backgroundColor: \\'auto\\'', 'backgroundColor: \\'inherit\\'');\r\n }\r\n }\r\n textStyle.backgroundColor = inheritColor;\r\n }\r\n if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) {\r\n if (__DEV__) {\r\n if (textStyle.borderColor === 'auto') {\r\n deprecateReplaceLog('borderColor: \\'auto\\'', 'borderColor: \\'inherit\\'');\r\n }\r\n }\r\n textStyle.borderColor = inheritColor;\r\n }\r\n }\r\n}\r\nfunction getFont(opt, ecModel) {\r\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\r\n return trim([\r\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '',\r\n opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '',\r\n (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px',\r\n opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'\r\n ].join(' '));\r\n}\r\nvar labelInner = makeInner();\r\nfunction setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {\r\n if (!label) {\r\n return;\r\n }\r\n var obj = labelInner(label);\r\n obj.prevValue = obj.value;\r\n obj.value = value;\r\n var normalLabelModel = labelStatesModels.normal;\r\n obj.valueAnimation = normalLabelModel.get('valueAnimation');\r\n if (obj.valueAnimation) {\r\n obj.precision = normalLabelModel.get('precision');\r\n obj.defaultInterpolatedText = getDefaultText;\r\n obj.statesModels = labelStatesModels;\r\n }\r\n}\r\nfunction animateLabelValue(textEl, dataIndex, data, seriesModel) {\r\n var labelInnerStore = labelInner(textEl);\r\n if (!labelInnerStore.valueAnimation) {\r\n return;\r\n }\r\n var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText;\r\n var prevValue = labelInnerStore.prevValue;\r\n var currentValue = labelInnerStore.value;\r\n function during(percent) {\r\n var interpolated = interpolateRawValues(data, labelInnerStore.precision, prevValue, currentValue, percent);\r\n var labelText = getLabelText({\r\n labelDataIndex: dataIndex,\r\n defaultText: defaultInterpolatedText\r\n ? defaultInterpolatedText(interpolated)\r\n : interpolated + ''\r\n }, labelInnerStore.statesModels, interpolated);\r\n setLabelText(textEl, labelText);\r\n }\r\n (prevValue == null ? initProps\r\n : updateProps)(textEl, {}, seriesModel, dataIndex, null, during);\r\n}\n\nvar PATH_COLOR = ['textStyle', 'color'];\r\nvar tmpRichText = new ZRText();\r\nvar TextStyleMixin = (function () {\r\n function TextStyleMixin() {\r\n }\r\n TextStyleMixin.prototype.getTextColor = function (isEmphasis) {\r\n var ecModel = this.ecModel;\r\n return this.getShallow('color')\r\n || ((!isEmphasis && ecModel) ? ecModel.get(PATH_COLOR) : null);\r\n };\r\n TextStyleMixin.prototype.getFont = function () {\r\n return getFont({\r\n fontStyle: this.getShallow('fontStyle'),\r\n fontWeight: this.getShallow('fontWeight'),\r\n fontSize: this.getShallow('fontSize'),\r\n fontFamily: this.getShallow('fontFamily')\r\n }, this.ecModel);\r\n };\r\n TextStyleMixin.prototype.getTextRect = function (text) {\r\n tmpRichText.useStyle({\r\n text: text,\r\n fontStyle: this.getShallow('fontStyle'),\r\n fontWeight: this.getShallow('fontWeight'),\r\n fontSize: this.getShallow('fontSize'),\r\n fontFamily: this.getShallow('fontFamily'),\r\n verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline'),\r\n padding: this.getShallow('padding'),\r\n lineHeight: this.getShallow('lineHeight'),\r\n rich: this.getShallow('rich')\r\n });\r\n tmpRichText.update();\r\n return tmpRichText.getBoundingRect();\r\n };\r\n return TextStyleMixin;\r\n}());\n\nvar LINE_STYLE_KEY_MAP = [\r\n ['lineWidth', 'width'],\r\n ['stroke', 'color'],\r\n ['opacity'],\r\n ['shadowBlur'],\r\n ['shadowOffsetX'],\r\n ['shadowOffsetY'],\r\n ['shadowColor'],\r\n ['lineDash', 'type'],\r\n ['lineDashOffset', 'dashOffset'],\r\n ['lineCap', 'cap'],\r\n ['lineJoin', 'join'],\r\n ['miterLimit']\r\n];\r\nvar getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);\r\nvar LineStyleMixin = (function () {\r\n function LineStyleMixin() {\r\n }\r\n LineStyleMixin.prototype.getLineStyle = function (excludes) {\r\n return getLineStyle(this, excludes);\r\n };\r\n return LineStyleMixin;\r\n}());\n\nvar ITEM_STYLE_KEY_MAP = [\r\n ['fill', 'color'],\r\n ['stroke', 'borderColor'],\r\n ['lineWidth', 'borderWidth'],\r\n ['opacity'],\r\n ['shadowBlur'],\r\n ['shadowOffsetX'],\r\n ['shadowOffsetY'],\r\n ['shadowColor'],\r\n ['lineDash', 'borderType'],\r\n ['lineDashOffset', 'borderDashOffset'],\r\n ['lineCap', 'borderCap'],\r\n ['lineJoin', 'borderJoin'],\r\n ['miterLimit', 'borderMiterLimit']\r\n];\r\nvar getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);\r\nvar ItemStyleMixin = (function () {\r\n function ItemStyleMixin() {\r\n }\r\n ItemStyleMixin.prototype.getItemStyle = function (excludes, includes) {\r\n return getItemStyle(this, excludes, includes);\r\n };\r\n return ItemStyleMixin;\r\n}());\n\nvar Model = (function () {\r\n function Model(option, parentModel, ecModel) {\r\n this.parentModel = parentModel;\r\n this.ecModel = ecModel;\r\n this.option = option;\r\n }\r\n Model.prototype.init = function (option, parentModel, ecModel) {\r\n var rest = [];\r\n for (var _i = 3; _i < arguments.length; _i++) {\r\n rest[_i - 3] = arguments[_i];\r\n }\r\n };\r\n Model.prototype.mergeOption = function (option, ecModel) {\r\n merge(this.option, option, true);\r\n };\r\n Model.prototype.get = function (path, ignoreParent) {\r\n if (path == null) {\r\n return this.option;\r\n }\r\n return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);\r\n };\r\n Model.prototype.getShallow = function (key, ignoreParent) {\r\n var option = this.option;\r\n var val = option == null ? option : option[key];\r\n if (val == null && !ignoreParent) {\r\n var parentModel = this.parentModel;\r\n if (parentModel) {\r\n val = parentModel.getShallow(key);\r\n }\r\n }\r\n return val;\r\n };\r\n Model.prototype.getModel = function (path, parentModel) {\r\n var hasPath = path != null;\r\n var pathFinal = hasPath ? this.parsePath(path) : null;\r\n var obj = hasPath\r\n ? this._doGet(pathFinal)\r\n : this.option;\r\n parentModel = parentModel || (this.parentModel\r\n && this.parentModel.getModel(this.resolveParentPath(pathFinal)));\r\n return new Model(obj, parentModel, this.ecModel);\r\n };\r\n Model.prototype.isEmpty = function () {\r\n return this.option == null;\r\n };\r\n Model.prototype.restoreData = function () { };\r\n Model.prototype.clone = function () {\r\n var Ctor = this.constructor;\r\n return new Ctor(clone(this.option));\r\n };\r\n Model.prototype.parsePath = function (path) {\r\n if (typeof path === 'string') {\r\n return path.split('.');\r\n }\r\n return path;\r\n };\r\n Model.prototype.resolveParentPath = function (path) {\r\n return path;\r\n };\r\n Model.prototype.isAnimationEnabled = function () {\r\n if (!env.node && this.option) {\r\n if (this.option.animation != null) {\r\n return !!this.option.animation;\r\n }\r\n else if (this.parentModel) {\r\n return this.parentModel.isAnimationEnabled();\r\n }\r\n }\r\n };\r\n Model.prototype._doGet = function (pathArr, parentModel) {\r\n var obj = this.option;\r\n if (!pathArr) {\r\n return obj;\r\n }\r\n for (var i = 0; i < pathArr.length; i++) {\r\n if (!pathArr[i]) {\r\n continue;\r\n }\r\n obj = (obj && typeof obj === 'object') ? obj[pathArr[i]] : null;\r\n if (obj == null) {\r\n break;\r\n }\r\n }\r\n if (obj == null && parentModel) {\r\n obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);\r\n }\r\n return obj;\r\n };\r\n return Model;\r\n}());\r\nenableClassExtend(Model);\r\nenableClassCheck(Model);\r\nmixin(Model, LineStyleMixin);\r\nmixin(Model, ItemStyleMixin);\r\nmixin(Model, AreaStyleMixin);\r\nmixin(Model, TextStyleMixin);\n\nvar base = Math.round(Math.random() * 10);\r\nfunction getUID(type) {\r\n return [(type || ''), base++].join('_');\r\n}\r\nfunction enableSubTypeDefaulter(target) {\r\n var subTypeDefaulters = {};\r\n target.registerSubTypeDefaulter = function (componentType, defaulter) {\r\n var componentTypeInfo = parseClassType(componentType);\r\n subTypeDefaulters[componentTypeInfo.main] = defaulter;\r\n };\r\n target.determineSubType = function (componentType, option) {\r\n var type = option.type;\r\n if (!type) {\r\n var componentTypeMain = parseClassType(componentType).main;\r\n if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\r\n type = subTypeDefaulters[componentTypeMain](option);\r\n }\r\n }\r\n return type;\r\n };\r\n}\r\nfunction enableTopologicalTravel(entity, dependencyGetter) {\r\n entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\r\n if (!targetNameList.length) {\r\n return;\r\n }\r\n var result = makeDepndencyGraph(fullNameList);\r\n var graph = result.graph;\r\n var noEntryList = result.noEntryList;\r\n var targetNameSet = {};\r\n each(targetNameList, function (name) {\r\n targetNameSet[name] = true;\r\n });\r\n while (noEntryList.length) {\r\n var currComponentType = noEntryList.pop();\r\n var currVertex = graph[currComponentType];\r\n var isInTargetNameSet = !!targetNameSet[currComponentType];\r\n if (isInTargetNameSet) {\r\n callback.call(context, currComponentType, currVertex.originalDeps.slice());\r\n delete targetNameSet[currComponentType];\r\n }\r\n each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\r\n }\r\n each(targetNameSet, function () {\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = makePrintable('Circle dependency may exists: ', targetNameSet, targetNameList, fullNameList);\r\n }\r\n throw new Error(errMsg);\r\n });\r\n function removeEdge(succComponentType) {\r\n graph[succComponentType].entryCount--;\r\n if (graph[succComponentType].entryCount === 0) {\r\n noEntryList.push(succComponentType);\r\n }\r\n }\r\n function removeEdgeAndAdd(succComponentType) {\r\n targetNameSet[succComponentType] = true;\r\n removeEdge(succComponentType);\r\n }\r\n };\r\n function makeDepndencyGraph(fullNameList) {\r\n var graph = {};\r\n var noEntryList = [];\r\n each(fullNameList, function (name) {\r\n var thisItem = createDependencyGraphItem(graph, name);\r\n var originalDeps = thisItem.originalDeps = dependencyGetter(name);\r\n var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\r\n thisItem.entryCount = availableDeps.length;\r\n if (thisItem.entryCount === 0) {\r\n noEntryList.push(name);\r\n }\r\n each(availableDeps, function (dependentName) {\r\n if (indexOf(thisItem.predecessor, dependentName) < 0) {\r\n thisItem.predecessor.push(dependentName);\r\n }\r\n var thatItem = createDependencyGraphItem(graph, dependentName);\r\n if (indexOf(thatItem.successor, dependentName) < 0) {\r\n thatItem.successor.push(name);\r\n }\r\n });\r\n });\r\n return { graph: graph, noEntryList: noEntryList };\r\n }\r\n function createDependencyGraphItem(graph, name) {\r\n if (!graph[name]) {\r\n graph[name] = { predecessor: [], successor: [] };\r\n }\r\n return graph[name];\r\n }\r\n function getAvailableDependencies(originalDeps, fullNameList) {\r\n var availableDeps = [];\r\n each(originalDeps, function (dep) {\r\n indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\r\n });\r\n return availableDeps;\r\n }\r\n}\r\nfunction inheritDefaultOption(superOption, subOption) {\r\n return merge(merge({}, superOption, true), subOption, true);\r\n}\n\nvar langEN = {\r\n time: {\r\n month: [\r\n 'January', 'February', 'March', 'April', 'May', 'June',\r\n 'July', 'August', 'September', 'October', 'November', 'December'\r\n ],\r\n monthAbbr: [\r\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\r\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\r\n ],\r\n dayOfWeek: [\r\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\r\n ],\r\n dayOfWeekAbbr: [\r\n 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'\r\n ]\r\n },\r\n legend: {\r\n selector: {\r\n all: 'All',\r\n inverse: 'Inv'\r\n }\r\n },\r\n toolbox: {\r\n brush: {\r\n title: {\r\n rect: 'Box Select',\r\n polygon: 'Lasso Select',\r\n lineX: 'Horizontally Select',\r\n lineY: 'Vertically Select',\r\n keep: 'Keep Selections',\r\n clear: 'Clear Selections'\r\n }\r\n },\r\n dataView: {\r\n title: 'Data View',\r\n lang: ['Data View', 'Close', 'Refresh']\r\n },\r\n dataZoom: {\r\n title: {\r\n zoom: 'Zoom',\r\n back: 'Zoom Reset'\r\n }\r\n },\r\n magicType: {\r\n title: {\r\n line: 'Switch to Line Chart',\r\n bar: 'Switch to Bar Chart',\r\n stack: 'Stack',\r\n tiled: 'Tile'\r\n }\r\n },\r\n restore: {\r\n title: 'Restore'\r\n },\r\n saveAsImage: {\r\n title: 'Save as Image',\r\n lang: ['Right Click to Save Image']\r\n }\r\n },\r\n series: {\r\n typeNames: {\r\n pie: 'Pie chart',\r\n bar: 'Bar chart',\r\n line: 'Line chart',\r\n scatter: 'Scatter plot',\r\n effectScatter: 'Ripple scatter plot',\r\n radar: 'Radar chart',\r\n tree: 'Tree',\r\n treemap: 'Treemap',\r\n boxplot: 'Boxplot',\r\n candlestick: 'Candlestick',\r\n k: 'K line chart',\r\n heatmap: 'Heat map',\r\n map: 'Map',\r\n parallel: 'Parallel coordinate map',\r\n lines: 'Line graph',\r\n graph: 'Relationship graph',\r\n sankey: 'Sankey diagram',\r\n funnel: 'Funnel chart',\r\n gauge: 'Guage',\r\n pictorialBar: 'Pictorial bar',\r\n themeRiver: 'Theme River Map',\r\n sunburst: 'Sunburst'\r\n }\r\n },\r\n aria: {\r\n general: {\r\n withTitle: 'This is a chart about \"{title}\"',\r\n withoutTitle: 'This is a chart'\r\n },\r\n series: {\r\n single: {\r\n prefix: '',\r\n withName: ' with type {seriesType} named {seriesName}.',\r\n withoutName: ' with type {seriesType}.'\r\n },\r\n multiple: {\r\n prefix: '. It consists of {seriesCount} series count.',\r\n withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\r\n withoutName: ' The {seriesId} series is a {seriesType}.',\r\n separator: {\r\n middle: '',\r\n end: ''\r\n }\r\n }\r\n },\r\n data: {\r\n allData: 'The data is as follows: ',\r\n partialData: 'The first {displayCnt} items are: ',\r\n withName: 'the data for {name} is {value}',\r\n withoutName: '{value}',\r\n separator: {\r\n middle: ', ',\r\n end: '. '\r\n }\r\n }\r\n }\r\n};\n\nvar langZH = {\r\n time: {\r\n month: [\r\n '一月', '二月', '三月', '四月', '五月', '六月',\r\n '七月', '八月', '九月', '十月', '十一月', '十二月'\r\n ],\r\n monthAbbr: [\r\n '1月', '2月', '3月', '4月', '5月', '6月',\r\n '7月', '8月', '9月', '10月', '11月', '12月'\r\n ],\r\n dayOfWeek: [\r\n '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'\r\n ],\r\n dayOfWeekAbbr: [\r\n '日', '一', '二', '三', '四', '五', '六'\r\n ]\r\n },\r\n legend: {\r\n selector: {\r\n all: '全选',\r\n inverse: '反选'\r\n }\r\n },\r\n toolbox: {\r\n brush: {\r\n title: {\r\n rect: '矩形选择',\r\n polygon: '圈选',\r\n lineX: '横向选择',\r\n lineY: '纵向选择',\r\n keep: '保持选择',\r\n clear: '清除选择'\r\n }\r\n },\r\n dataView: {\r\n title: '数据视图',\r\n lang: ['数据视图', '关闭', '刷新']\r\n },\r\n dataZoom: {\r\n title: {\r\n zoom: '区域缩放',\r\n back: '区域缩放还原'\r\n }\r\n },\r\n magicType: {\r\n title: {\r\n line: '切换为折线图',\r\n bar: '切换为柱状图',\r\n stack: '切换为堆叠',\r\n tiled: '切换为平铺'\r\n }\r\n },\r\n restore: {\r\n title: '还原'\r\n },\r\n saveAsImage: {\r\n title: '保存为图片',\r\n lang: ['右键另存为图片']\r\n }\r\n },\r\n series: {\r\n typeNames: {\r\n pie: '饼图',\r\n bar: '柱状图',\r\n line: '折线图',\r\n scatter: '散点图',\r\n effectScatter: '涟漪散点图',\r\n radar: '雷达图',\r\n tree: '树图',\r\n treemap: '矩形树图',\r\n boxplot: '箱型图',\r\n candlestick: 'K线图',\r\n k: 'K线图',\r\n heatmap: '热力图',\r\n map: '地图',\r\n parallel: '平行坐标图',\r\n lines: '线图',\r\n graph: '关系图',\r\n sankey: '桑基图',\r\n funnel: '漏斗图',\r\n gauge: '仪表盘图',\r\n pictorialBar: '象形柱图',\r\n themeRiver: '主题河流图',\r\n sunburst: '旭日图'\r\n }\r\n },\r\n aria: {\r\n general: {\r\n withTitle: '这是一个关于“{title}”的图表。',\r\n withoutTitle: '这是一个图表,'\r\n },\r\n series: {\r\n single: {\r\n prefix: '',\r\n withName: '图表类型是{seriesType},表示{seriesName}。',\r\n withoutName: '图表类型是{seriesType}。'\r\n },\r\n multiple: {\r\n prefix: '它由{seriesCount}个图表系列组成。',\r\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\r\n withoutName: '第{seriesId}个系列是一个{seriesType},',\r\n separator: {\r\n middle: ';',\r\n end: '。'\r\n }\r\n }\r\n },\r\n data: {\r\n allData: '其数据是——',\r\n partialData: '其中,前{displayCnt}项是——',\r\n withName: '{name}的数据是{value}',\r\n withoutName: '{value}',\r\n separator: {\r\n middle: ',',\r\n end: ''\r\n }\r\n }\r\n }\r\n};\n\nvar LOCALE_ZH = 'ZH';\r\nvar LOCALE_EN = 'EN';\r\nvar DEFAULT_LOCALE = LOCALE_EN;\r\nvar localeStorage = {};\r\nvar localeModels = {};\r\nvar SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : (function () {\r\n var langStr = (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase();\r\n return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;\r\n})();\r\nfunction registerLocale(locale, localeObj) {\r\n locale = locale.toUpperCase();\r\n localeModels[locale] = new Model(localeObj);\r\n localeStorage[locale] = localeObj;\r\n}\r\nfunction createLocaleObject(locale) {\r\n if (isString(locale)) {\r\n var localeObj = localeStorage[locale.toUpperCase()] || {};\r\n if (locale === LOCALE_ZH || locale === LOCALE_EN) {\r\n return clone(localeObj);\r\n }\r\n else {\r\n return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n }\r\n }\r\n else {\r\n return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n }\r\n}\r\nfunction getLocaleModel(lang) {\r\n return localeModels[lang];\r\n}\r\nfunction getDefaultLocaleModel() {\r\n return localeModels[DEFAULT_LOCALE];\r\n}\r\nregisterLocale(LOCALE_EN, langEN);\r\nregisterLocale(LOCALE_ZH, langZH);\n\nvar ONE_SECOND = 1000;\r\nvar ONE_MINUTE = ONE_SECOND * 60;\r\nvar ONE_HOUR = ONE_MINUTE * 60;\r\nvar ONE_DAY = ONE_HOUR * 24;\r\nvar ONE_YEAR = ONE_DAY * 365;\r\nvar defaultLeveledFormatter = {\r\n year: '{yyyy}',\r\n month: '{MMM}',\r\n day: '{d}',\r\n hour: '{HH}:{mm}',\r\n minute: '{HH}:{mm}',\r\n second: '{HH}:{mm}:{ss}',\r\n millisecond: '{hh}:{mm}:{ss} {SSS}',\r\n none: '{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}'\r\n};\r\nvar fullDayFormatter = '{yyyy}-{MM}-{dd}';\r\nvar fullLeveledFormatter = {\r\n year: '{yyyy}',\r\n month: '{yyyy}-{MM}',\r\n day: fullDayFormatter,\r\n hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour,\r\n minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute,\r\n second: fullDayFormatter + ' ' + defaultLeveledFormatter.second,\r\n millisecond: defaultLeveledFormatter.none\r\n};\r\nvar primaryTimeUnits = [\r\n 'year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'\r\n];\r\nvar timeUnits = [\r\n 'year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day',\r\n 'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond'\r\n];\r\nfunction pad(str, len) {\r\n str += '';\r\n return '0000'.substr(0, len - str.length) + str;\r\n}\r\nfunction getPrimaryTimeUnit(timeUnit) {\r\n switch (timeUnit) {\r\n case 'half-year':\r\n case 'quarter':\r\n return 'month';\r\n case 'week':\r\n case 'half-week':\r\n return 'day';\r\n case 'half-day':\r\n case 'quarter-day':\r\n return 'hour';\r\n default:\r\n return timeUnit;\r\n }\r\n}\r\nfunction isPrimaryTimeUnit(timeUnit) {\r\n return timeUnit === getPrimaryTimeUnit(timeUnit);\r\n}\r\nfunction getDefaultFormatPrecisionOfInterval(timeUnit) {\r\n switch (timeUnit) {\r\n case 'year':\r\n case 'month':\r\n return 'day';\r\n case 'millisecond':\r\n return 'millisecond';\r\n default:\r\n return 'second';\r\n }\r\n}\r\nfunction format(time, template, isUTC, lang) {\r\n var date = parseDate(time);\r\n var y = date[fullYearGetterName(isUTC)]();\r\n var M = date[monthGetterName(isUTC)]() + 1;\r\n var q = Math.floor((M - 1) / 4) + 1;\r\n var d = date[dateGetterName(isUTC)]();\r\n var e = date['get' + (isUTC ? 'UTC' : '') + 'Day']();\r\n var H = date[hoursGetterName(isUTC)]();\r\n var h = (H - 1) % 12 + 1;\r\n var m = date[minutesGetterName(isUTC)]();\r\n var s = date[secondsGetterName(isUTC)]();\r\n var S = date[millisecondsGetterName(isUTC)]();\r\n var localeModel = lang instanceof Model ? lang\r\n : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();\r\n var timeModel = localeModel.getModel('time');\r\n var month = timeModel.get('month');\r\n var monthAbbr = timeModel.get('monthAbbr');\r\n var dayOfWeek = timeModel.get('dayOfWeek');\r\n var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr');\r\n return (template || '')\r\n .replace(/{yyyy}/g, y + '')\r\n .replace(/{yy}/g, y % 100 + '')\r\n .replace(/{Q}/g, q + '')\r\n .replace(/{MMMM}/g, month[M - 1])\r\n .replace(/{MMM}/g, monthAbbr[M - 1])\r\n .replace(/{MM}/g, pad(M, 2))\r\n .replace(/{M}/g, M + '')\r\n .replace(/{dd}/g, pad(d, 2))\r\n .replace(/{d}/g, d + '')\r\n .replace(/{eeee}/g, dayOfWeek[e])\r\n .replace(/{ee}/g, dayOfWeekAbbr[e])\r\n .replace(/{e}/g, e + '')\r\n .replace(/{HH}/g, pad(H, 2))\r\n .replace(/{H}/g, H + '')\r\n .replace(/{hh}/g, pad(h + '', 2))\r\n .replace(/{h}/g, h + '')\r\n .replace(/{mm}/g, pad(m, 2))\r\n .replace(/{m}/g, m + '')\r\n .replace(/{ss}/g, pad(s, 2))\r\n .replace(/{s}/g, s + '')\r\n .replace(/{SSS}/g, pad(S, 3))\r\n .replace(/{S}/g, S + '');\r\n}\r\nfunction leveledFormat(tick, idx, formatter, lang, isUTC) {\r\n var template = null;\r\n if (typeof formatter === 'string') {\r\n template = formatter;\r\n }\r\n else if (typeof formatter === 'function') {\r\n template = formatter(tick.value, idx, {\r\n level: tick.level\r\n });\r\n }\r\n else {\r\n var defaults$1 = extend({}, defaultLeveledFormatter);\r\n if (tick.level > 0) {\r\n for (var i = 0; i < primaryTimeUnits.length; ++i) {\r\n defaults$1[primaryTimeUnits[i]] = \"{primary|\" + defaults$1[primaryTimeUnits[i]] + \"}\";\r\n }\r\n }\r\n var mergedFormatter = (formatter\r\n ? (formatter.inherit === false\r\n ? formatter\r\n : defaults(formatter, defaults$1))\r\n : defaults$1);\r\n var unit = getUnitFromValue(tick.value, isUTC);\r\n if (mergedFormatter[unit]) {\r\n template = mergedFormatter[unit];\r\n }\r\n else if (mergedFormatter.inherit) {\r\n var targetId = timeUnits.indexOf(unit);\r\n for (var i = targetId - 1; i >= 0; --i) {\r\n if (mergedFormatter[unit]) {\r\n template = mergedFormatter[unit];\r\n break;\r\n }\r\n }\r\n template = template || defaults$1.none;\r\n }\r\n if (isArray(template)) {\r\n var levelId = tick.level == null\r\n ? 0\r\n : (tick.level >= 0 ? tick.level : template.length + tick.level);\r\n levelId = Math.min(levelId, template.length - 1);\r\n template = template[levelId];\r\n }\r\n }\r\n return format(new Date(tick.value), template, isUTC, lang);\r\n}\r\nfunction getUnitFromValue(value, isUTC) {\r\n var date = parseDate(value);\r\n var M = date[monthGetterName(isUTC)]() + 1;\r\n var d = date[dateGetterName(isUTC)]();\r\n var h = date[hoursGetterName(isUTC)]();\r\n var m = date[minutesGetterName(isUTC)]();\r\n var s = date[secondsGetterName(isUTC)]();\r\n var S = date[millisecondsGetterName(isUTC)]();\r\n var isSecond = S === 0;\r\n var isMinute = isSecond && s === 0;\r\n var isHour = isMinute && m === 0;\r\n var isDay = isHour && h === 0;\r\n var isMonth = isDay && d === 1;\r\n var isYear = isMonth && M === 1;\r\n if (isYear) {\r\n return 'year';\r\n }\r\n else if (isMonth) {\r\n return 'month';\r\n }\r\n else if (isDay) {\r\n return 'day';\r\n }\r\n else if (isHour) {\r\n return 'hour';\r\n }\r\n else if (isMinute) {\r\n return 'minute';\r\n }\r\n else if (isSecond) {\r\n return 'second';\r\n }\r\n else {\r\n return 'millisecond';\r\n }\r\n}\r\nfunction getUnitValue(value, unit, isUTC) {\r\n var date = typeof value === 'number'\r\n ? parseDate(value)\r\n : value;\r\n unit = unit || getUnitFromValue(value, isUTC);\r\n switch (unit) {\r\n case 'year':\r\n return date[fullYearGetterName(isUTC)]();\r\n case 'half-year':\r\n return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0;\r\n case 'quarter':\r\n return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4);\r\n case 'month':\r\n return date[monthGetterName(isUTC)]();\r\n case 'day':\r\n return date[dateGetterName(isUTC)]();\r\n case 'half-day':\r\n return date[hoursGetterName(isUTC)]() / 24;\r\n case 'hour':\r\n return date[hoursGetterName(isUTC)]();\r\n case 'minute':\r\n return date[minutesGetterName(isUTC)]();\r\n case 'second':\r\n return date[secondsGetterName(isUTC)]();\r\n case 'millisecond':\r\n return date[millisecondsGetterName(isUTC)]();\r\n }\r\n}\r\nfunction fullYearGetterName(isUTC) {\r\n return isUTC ? 'getUTCFullYear' : 'getFullYear';\r\n}\r\nfunction monthGetterName(isUTC) {\r\n return isUTC ? 'getUTCMonth' : 'getMonth';\r\n}\r\nfunction dateGetterName(isUTC) {\r\n return isUTC ? 'getUTCDate' : 'getDate';\r\n}\r\nfunction hoursGetterName(isUTC) {\r\n return isUTC ? 'getUTCHours' : 'getHours';\r\n}\r\nfunction minutesGetterName(isUTC) {\r\n return isUTC ? 'getUTCMinutes' : 'getMinutes';\r\n}\r\nfunction secondsGetterName(isUTC) {\r\n return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n}\r\nfunction millisecondsGetterName(isUTC) {\r\n return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n}\r\nfunction fullYearSetterName(isUTC) {\r\n return isUTC ? 'setUTCFullYear' : 'setFullYear';\r\n}\r\nfunction monthSetterName(isUTC) {\r\n return isUTC ? 'setUTCMonth' : 'setMonth';\r\n}\r\nfunction dateSetterName(isUTC) {\r\n return isUTC ? 'setUTCDate' : 'setDate';\r\n}\r\nfunction hoursSetterName(isUTC) {\r\n return isUTC ? 'setUTCHours' : 'setHours';\r\n}\r\nfunction minutesSetterName(isUTC) {\r\n return isUTC ? 'setUTCMinutes' : 'setMinutes';\r\n}\r\nfunction secondsSetterName(isUTC) {\r\n return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n}\r\nfunction millisecondsSetterName(isUTC) {\r\n return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n}\n\nfunction getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {\r\n deprecateLog('getTextRect is deprecated.');\r\n var textEl = new ZRText({\r\n style: {\r\n text: text,\r\n font: font,\r\n align: align,\r\n verticalAlign: verticalAlign,\r\n padding: padding,\r\n rich: rich,\r\n overflow: truncate ? 'truncate' : null,\r\n lineHeight: lineHeight\r\n }\r\n });\r\n return textEl.getBoundingRect();\r\n}\n\nfunction addCommas(x) {\r\n if (!isNumeric(x)) {\r\n return isString(x) ? x : '-';\r\n }\r\n var parts = (x + '').split('.');\r\n return parts[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,')\r\n + (parts.length > 1 ? ('.' + parts[1]) : '');\r\n}\r\nfunction toCamelCase(str, upperCaseFirst) {\r\n str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\r\n return group1.toUpperCase();\r\n });\r\n if (upperCaseFirst && str) {\r\n str = str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n return str;\r\n}\r\nvar normalizeCssArray$1 = normalizeCssArray;\r\nvar replaceReg = /([&<>\"'])/g;\r\nvar replaceMap = {\r\n '&': '&amp;',\r\n '<': '&lt;',\r\n '>': '&gt;',\r\n '\"': '&quot;',\r\n '\\'': '&#39;'\r\n};\r\nfunction encodeHTML(source) {\r\n return source == null\r\n ? ''\r\n : (source + '').replace(replaceReg, function (str, c) {\r\n return replaceMap[c];\r\n });\r\n}\r\nfunction makeValueReadable(value, valueType, useUTC) {\r\n var USER_READABLE_DEFUALT_TIME_PATTERN = 'yyyy-MM-dd hh:mm:ss';\r\n function stringToUserReadable(str) {\r\n return (str && trim(str)) ? str : '-';\r\n }\r\n function isNumberUserReadable(num) {\r\n return !!(num != null && !isNaN(num) && isFinite(num));\r\n }\r\n var isTypeTime = valueType === 'time';\r\n var isValueDate = value instanceof Date;\r\n if (isTypeTime || isValueDate) {\r\n var date = isTypeTime ? parseDate(value) : value;\r\n if (!isNaN(+date)) {\r\n return format(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC);\r\n }\r\n else if (isValueDate) {\r\n return '-';\r\n }\r\n }\r\n if (valueType === 'ordinal') {\r\n return isStringSafe(value)\r\n ? stringToUserReadable(value)\r\n : isNumber(value)\r\n ? (isNumberUserReadable(value) ? value + '' : '-')\r\n : '-';\r\n }\r\n var numericResult = numericToNumber(value);\r\n return isNumberUserReadable(numericResult)\r\n ? addCommas(numericResult)\r\n : isStringSafe(value)\r\n ? stringToUserReadable(value)\r\n : '-';\r\n}\r\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\r\nvar wrapVar = function (varName, seriesIdx) {\r\n return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\r\n};\r\nfunction formatTpl(tpl, paramsList, encode) {\r\n if (!isArray(paramsList)) {\r\n paramsList = [paramsList];\r\n }\r\n var seriesLen = paramsList.length;\r\n if (!seriesLen) {\r\n return '';\r\n }\r\n var $vars = paramsList[0].$vars || [];\r\n for (var i = 0; i < $vars.length; i++) {\r\n var alias = TPL_VAR_ALIAS[i];\r\n tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\r\n }\r\n for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\r\n for (var k = 0; k < $vars.length; k++) {\r\n var val = paramsList[seriesIdx][$vars[k]];\r\n tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\r\n }\r\n }\r\n return tpl;\r\n}\r\nfunction formatTplSimple(tpl, param, encode) {\r\n each(param, function (value, key) {\r\n tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\r\n });\r\n return tpl;\r\n}\r\nfunction getTooltipMarker(inOpt, extraCssText) {\r\n var opt = isString(inOpt) ? {\r\n color: inOpt,\r\n extraCssText: extraCssText\r\n } : (inOpt || {});\r\n var color = opt.color;\r\n var type = opt.type;\r\n extraCssText = opt.extraCssText;\r\n var renderMode = opt.renderMode || 'html';\r\n if (!color) {\r\n return '';\r\n }\r\n if (renderMode === 'html') {\r\n return type === 'subItem'\r\n ? '<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;'\r\n + 'border-radius:4px;width:4px;height:4px;background-color:'\r\n + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>'\r\n : '<span style=\"display:inline-block;margin-right:4px;'\r\n + 'border-radius:10px;width:10px;height:10px;background-color:'\r\n + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>';\r\n }\r\n else {\r\n var markerId = opt.markerId || 'markerX';\r\n return {\r\n renderMode: renderMode,\r\n content: '{' + markerId + '|} ',\r\n style: type === 'subItem'\r\n ? {\r\n width: 4,\r\n height: 4,\r\n borderRadius: 2,\r\n backgroundColor: color\r\n }\r\n : {\r\n width: 10,\r\n height: 10,\r\n borderRadius: 5,\r\n backgroundColor: color\r\n }\r\n };\r\n }\r\n}\r\nfunction formatTime(tpl, value, isUTC) {\r\n if (__DEV__) {\r\n deprecateReplaceLog('echarts.format.formatTime', 'echarts.time.format');\r\n }\r\n if (tpl === 'week'\r\n || tpl === 'month'\r\n || tpl === 'quarter'\r\n || tpl === 'half-year'\r\n || tpl === 'year') {\r\n tpl = 'MM-dd\\nyyyy';\r\n }\r\n var date = parseDate(value);\r\n var utc = isUTC ? 'UTC' : '';\r\n var y = date['get' + utc + 'FullYear']();\r\n var M = date['get' + utc + 'Month']() + 1;\r\n var d = date['get' + utc + 'Date']();\r\n var h = date['get' + utc + 'Hours']();\r\n var m = date['get' + utc + 'Minutes']();\r\n var s = date['get' + utc + 'Seconds']();\r\n var S = date['get' + utc + 'Milliseconds']();\r\n tpl = tpl.replace('MM', pad(M, 2))\r\n .replace('M', M)\r\n .replace('yyyy', y)\r\n .replace('yy', y % 100 + '')\r\n .replace('dd', pad(d, 2))\r\n .replace('d', d)\r\n .replace('hh', pad(h, 2))\r\n .replace('h', h)\r\n .replace('mm', pad(m, 2))\r\n .replace('m', m)\r\n .replace('ss', pad(s, 2))\r\n .replace('s', s)\r\n .replace('SSS', pad(S, 3));\r\n return tpl;\r\n}\r\nfunction capitalFirst(str) {\r\n return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\r\n}\r\nfunction convertToColorString(color, defaultColor) {\r\n defaultColor = defaultColor || 'transparent';\r\n return isString(color)\r\n ? color\r\n : isObject(color)\r\n ? (color.colorStops\r\n && (color.colorStops[0] || {}).color\r\n || defaultColor)\r\n : defaultColor;\r\n}\r\nfunction windowOpen(link, target) {\r\n if (target === '_blank' || target === 'blank') {\r\n var blank = window.open();\r\n blank.opener = null;\r\n blank.location.href = link;\r\n }\r\n else {\r\n window.open(link, target);\r\n }\r\n}\n\nvar formatUtil = /*#__PURE__*/Object.freeze({\n __proto__: null,\n addCommas: addCommas,\n toCamelCase: toCamelCase,\n normalizeCssArray: normalizeCssArray$1,\n encodeHTML: encodeHTML,\n makeValueReadable: makeValueReadable,\n formatTpl: formatTpl,\n formatTplSimple: formatTplSimple,\n getTooltipMarker: getTooltipMarker,\n formatTime: formatTime,\n capitalFirst: capitalFirst,\n convertToColorString: convertToColorString,\n windowOpen: windowOpen,\n truncateText: truncateText,\n getTextRect: getTextRect\n});\n\nvar each$1 = each;\r\nvar LOCATION_PARAMS = [\r\n 'left', 'right', 'top', 'bottom', 'width', 'height'\r\n];\r\nvar HV_NAMES = [\r\n ['width', 'left', 'right'],\r\n ['height', 'top', 'bottom']\r\n];\r\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\r\n var x = 0;\r\n var y = 0;\r\n if (maxWidth == null) {\r\n maxWidth = Infinity;\r\n }\r\n if (maxHeight == null) {\r\n maxHeight = Infinity;\r\n }\r\n var currentLineMaxSize = 0;\r\n group.eachChild(function (child, idx) {\r\n var rect = child.getBoundingRect();\r\n var nextChild = group.childAt(idx + 1);\r\n var nextChildRect = nextChild && nextChild.getBoundingRect();\r\n var nextX;\r\n var nextY;\r\n if (orient === 'horizontal') {\r\n var moveX = rect.width + (nextChildRect ? (-nextChildRect.x + rect.x) : 0);\r\n nextX = x + moveX;\r\n if (nextX > maxWidth || child.newline) {\r\n x = 0;\r\n nextX = moveX;\r\n y += currentLineMaxSize + gap;\r\n currentLineMaxSize = rect.height;\r\n }\r\n else {\r\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\r\n }\r\n }\r\n else {\r\n var moveY = rect.height + (nextChildRect ? (-nextChildRect.y + rect.y) : 0);\r\n nextY = y + moveY;\r\n if (nextY > maxHeight || child.newline) {\r\n x += currentLineMaxSize + gap;\r\n y = 0;\r\n nextY = moveY;\r\n currentLineMaxSize = rect.width;\r\n }\r\n else {\r\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\r\n }\r\n }\r\n if (child.newline) {\r\n return;\r\n }\r\n child.x = x;\r\n child.y = y;\r\n child.markRedraw();\r\n orient === 'horizontal'\r\n ? (x = nextX + gap)\r\n : (y = nextY + gap);\r\n });\r\n}\r\nvar box = boxLayout;\r\nvar vbox = curry(boxLayout, 'vertical');\r\nvar hbox = curry(boxLayout, 'horizontal');\r\nfunction getAvailableSize(positionInfo, containerRect, margin) {\r\n var containerWidth = containerRect.width;\r\n var containerHeight = containerRect.height;\r\n var x = parsePercent$2(positionInfo.left, containerWidth);\r\n var y = parsePercent$2(positionInfo.top, containerHeight);\r\n var x2 = parsePercent$2(positionInfo.right, containerWidth);\r\n var y2 = parsePercent$2(positionInfo.bottom, containerHeight);\r\n (isNaN(x) || isNaN(parseFloat(positionInfo.left))) && (x = 0);\r\n (isNaN(x2) || isNaN(parseFloat(positionInfo.right))) && (x2 = containerWidth);\r\n (isNaN(y) || isNaN(parseFloat(positionInfo.top))) && (y = 0);\r\n (isNaN(y2) || isNaN(parseFloat(positionInfo.bottom))) && (y2 = containerHeight);\r\n margin = normalizeCssArray$1(margin || 0);\r\n return {\r\n width: Math.max(x2 - x - margin[1] - margin[3], 0),\r\n height: Math.max(y2 - y - margin[0] - margin[2], 0)\r\n };\r\n}\r\nfunction getLayoutRect(positionInfo, containerRect, margin) {\r\n margin = normalizeCssArray$1(margin || 0);\r\n var containerWidth = containerRect.width;\r\n var containerHeight = containerRect.height;\r\n var left = parsePercent$2(positionInfo.left, containerWidth);\r\n var top = parsePercent$2(positionInfo.top, containerHeight);\r\n var right = parsePercent$2(positionInfo.right, containerWidth);\r\n var bottom = parsePercent$2(positionInfo.bottom, containerHeight);\r\n var width = parsePercent$2(positionInfo.width, containerWidth);\r\n var height = parsePercent$2(positionInfo.height, containerHeight);\r\n var verticalMargin = margin[2] + margin[0];\r\n var horizontalMargin = margin[1] + margin[3];\r\n var aspect = positionInfo.aspect;\r\n if (isNaN(width)) {\r\n width = containerWidth - right - horizontalMargin - left;\r\n }\r\n if (isNaN(height)) {\r\n height = containerHeight - bottom - verticalMargin - top;\r\n }\r\n if (aspect != null) {\r\n if (isNaN(width) && isNaN(height)) {\r\n if (aspect > containerWidth / containerHeight) {\r\n width = containerWidth * 0.8;\r\n }\r\n else {\r\n height = containerHeight * 0.8;\r\n }\r\n }\r\n if (isNaN(width)) {\r\n width = aspect * height;\r\n }\r\n if (isNaN(height)) {\r\n height = width / aspect;\r\n }\r\n }\r\n if (isNaN(left)) {\r\n left = containerWidth - right - width - horizontalMargin;\r\n }\r\n if (isNaN(top)) {\r\n top = containerHeight - bottom - height - verticalMargin;\r\n }\r\n switch (positionInfo.left || positionInfo.right) {\r\n case 'center':\r\n left = containerWidth / 2 - width / 2 - margin[3];\r\n break;\r\n case 'right':\r\n left = containerWidth - width - horizontalMargin;\r\n break;\r\n }\r\n switch (positionInfo.top || positionInfo.bottom) {\r\n case 'middle':\r\n case 'center':\r\n top = containerHeight / 2 - height / 2 - margin[0];\r\n break;\r\n case 'bottom':\r\n top = containerHeight - height - verticalMargin;\r\n break;\r\n }\r\n left = left || 0;\r\n top = top || 0;\r\n if (isNaN(width)) {\r\n width = containerWidth - horizontalMargin - left - (right || 0);\r\n }\r\n if (isNaN(height)) {\r\n height = containerHeight - verticalMargin - top - (bottom || 0);\r\n }\r\n var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\r\n rect.margin = margin;\r\n return rect;\r\n}\r\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\r\n var h = !opt || !opt.hv || opt.hv[0];\r\n var v = !opt || !opt.hv || opt.hv[1];\r\n var boundingMode = opt && opt.boundingMode || 'all';\r\n if (!h && !v) {\r\n return;\r\n }\r\n var rect;\r\n if (boundingMode === 'raw') {\r\n rect = el.type === 'group'\r\n ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0)\r\n : el.getBoundingRect();\r\n }\r\n else {\r\n rect = el.getBoundingRect();\r\n if (el.needLocalTransform()) {\r\n var transform = el.getLocalTransform();\r\n rect = rect.clone();\r\n rect.applyTransform(transform);\r\n }\r\n }\r\n var layoutRect = getLayoutRect(defaults({ width: rect.width, height: rect.height }, positionInfo), containerRect, margin);\r\n var dx = h ? layoutRect.x - rect.x : 0;\r\n var dy = v ? layoutRect.y - rect.y : 0;\r\n if (boundingMode === 'raw') {\r\n el.x = dx;\r\n el.y = dy;\r\n }\r\n else {\r\n el.x += dx;\r\n el.y += dy;\r\n }\r\n el.markRedraw();\r\n}\r\nfunction sizeCalculable(option, hvIdx) {\r\n return option[HV_NAMES[hvIdx][0]] != null\r\n || (option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null);\r\n}\r\nfunction fetchLayoutMode(ins) {\r\n var layoutMode = ins.layoutMode || ins.constructor.layoutMode;\r\n return isObject(layoutMode)\r\n ? layoutMode\r\n : layoutMode\r\n ? { type: layoutMode }\r\n : null;\r\n}\r\nfunction mergeLayoutParam(targetOption, newOption, opt) {\r\n var ignoreSize = opt && opt.ignoreSize;\r\n !isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\r\n var hResult = merge(HV_NAMES[0], 0);\r\n var vResult = merge(HV_NAMES[1], 1);\r\n copy(HV_NAMES[0], targetOption, hResult);\r\n copy(HV_NAMES[1], targetOption, vResult);\r\n function merge(names, hvIdx) {\r\n var newParams = {};\r\n var newValueCount = 0;\r\n var merged = {};\r\n var mergedValueCount = 0;\r\n var enoughParamNumber = 2;\r\n each$1(names, function (name) {\r\n merged[name] = targetOption[name];\r\n });\r\n each$1(names, function (name) {\r\n hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\r\n hasValue(newParams, name) && newValueCount++;\r\n hasValue(merged, name) && mergedValueCount++;\r\n });\r\n if (ignoreSize[hvIdx]) {\r\n if (hasValue(newOption, names[1])) {\r\n merged[names[2]] = null;\r\n }\r\n else if (hasValue(newOption, names[2])) {\r\n merged[names[1]] = null;\r\n }\r\n return merged;\r\n }\r\n if (mergedValueCount === enoughParamNumber || !newValueCount) {\r\n return merged;\r\n }\r\n else if (newValueCount >= enoughParamNumber) {\r\n return newParams;\r\n }\r\n else {\r\n for (var i = 0; i < names.length; i++) {\r\n var name_1 = names[i];\r\n if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {\r\n newParams[name_1] = targetOption[name_1];\r\n break;\r\n }\r\n }\r\n return newParams;\r\n }\r\n }\r\n function hasProp(obj, name) {\r\n return obj.hasOwnProperty(name);\r\n }\r\n function hasValue(obj, name) {\r\n return obj[name] != null && obj[name] !== 'auto';\r\n }\r\n function copy(names, target, source) {\r\n each$1(names, function (name) {\r\n target[name] = source[name];\r\n });\r\n }\r\n}\r\nfunction getLayoutParams(source) {\r\n return copyLayoutParams({}, source);\r\n}\r\nfunction copyLayoutParams(target, source) {\r\n source && target && each$1(LOCATION_PARAMS, function (name) {\r\n source.hasOwnProperty(name) && (target[name] = source[name]);\r\n });\r\n return target;\r\n}\n\nvar inner = makeInner();\r\nvar ComponentModel = (function (_super) {\r\n __extends(ComponentModel, _super);\r\n function ComponentModel(option, parentModel, ecModel) {\r\n var _this = _super.call(this, option, parentModel, ecModel) || this;\r\n _this.uid = getUID('ec_cpt_model');\r\n return _this;\r\n }\r\n ComponentModel.prototype.init = function (option, parentModel, ecModel) {\r\n this.mergeDefaultAndTheme(option, ecModel);\r\n };\r\n ComponentModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n var layoutMode = fetchLayoutMode(this);\r\n var inputPositionParams = layoutMode\r\n ? getLayoutParams(option) : {};\r\n var themeModel = ecModel.getTheme();\r\n merge(option, themeModel.get(this.mainType));\r\n merge(option, this.getDefaultOption());\r\n if (layoutMode) {\r\n mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n }\r\n };\r\n ComponentModel.prototype.mergeOption = function (option, ecModel) {\r\n merge(this.option, option, true);\r\n var layoutMode = fetchLayoutMode(this);\r\n if (layoutMode) {\r\n mergeLayoutParam(this.option, option, layoutMode);\r\n }\r\n };\r\n ComponentModel.prototype.optionUpdated = function (newCptOption, isInit) { };\r\n ComponentModel.prototype.getDefaultOption = function () {\r\n var ctor = this.constructor;\r\n if (!isExtendedClass(ctor)) {\r\n return ctor.defaultOption;\r\n }\r\n var fields = inner(this);\r\n if (!fields.defaultOption) {\r\n var optList = [];\r\n var clz = ctor;\r\n while (clz) {\r\n var opt = clz.prototype.defaultOption;\r\n opt && optList.push(opt);\r\n clz = clz.superClass;\r\n }\r\n var defaultOption = {};\r\n for (var i = optList.length - 1; i >= 0; i--) {\r\n defaultOption = merge(defaultOption, optList[i], true);\r\n }\r\n fields.defaultOption = defaultOption;\r\n }\r\n return fields.defaultOption;\r\n };\r\n ComponentModel.prototype.getReferringComponents = function (mainType, opt) {\r\n var indexKey = (mainType + 'Index');\r\n var idKey = (mainType + 'Id');\r\n return queryReferringComponents(this.ecModel, mainType, {\r\n index: this.get(indexKey, true),\r\n id: this.get(idKey, true)\r\n }, opt);\r\n };\r\n ComponentModel.prototype.getBoxLayoutParams = function () {\r\n var boxLayoutModel = this;\r\n return {\r\n left: boxLayoutModel.get('left'),\r\n top: boxLayoutModel.get('top'),\r\n right: boxLayoutModel.get('right'),\r\n bottom: boxLayoutModel.get('bottom'),\r\n width: boxLayoutModel.get('width'),\r\n height: boxLayoutModel.get('height')\r\n };\r\n };\r\n ComponentModel.protoInitialize = (function () {\r\n var proto = ComponentModel.prototype;\r\n proto.type = 'component';\r\n proto.id = '';\r\n proto.name = '';\r\n proto.mainType = '';\r\n proto.subType = '';\r\n proto.componentIndex = 0;\r\n })();\r\n return ComponentModel;\r\n}(Model));\r\nmountExtend(ComponentModel, Model);\r\nenableClassManagement(ComponentModel, { registerWhenExtend: true });\r\nenableSubTypeDefaulter(ComponentModel);\r\nenableTopologicalTravel(ComponentModel, getDependencies);\r\nfunction getDependencies(componentType) {\r\n var deps = [];\r\n each(ComponentModel.getClassesByMainType(componentType), function (clz) {\r\n deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []);\r\n });\r\n deps = map(deps, function (type) {\r\n return parseClassType(type).main;\r\n });\r\n if (componentType !== 'dataset' && indexOf(deps, 'dataset') <= 0) {\r\n deps.unshift('dataset');\r\n }\r\n return deps;\r\n}\n\nvar platform = '';\r\nif (typeof navigator !== 'undefined') {\r\n platform = navigator.platform || '';\r\n}\r\nvar decalColor = 'rgba(0, 0, 0, 0.2)';\r\nvar globalDefault = {\r\n darkMode: 'auto',\r\n color: [\r\n '#5470c6',\r\n '#91cc75',\r\n '#fac858',\r\n '#ee6666',\r\n '#73c0de',\r\n '#3ba272',\r\n '#fc8452',\r\n '#9a60b4',\r\n '#ea7ccc'\r\n ],\r\n gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\r\n aria: {\r\n decal: {\r\n decals: [{\r\n color: decalColor,\r\n dashArrayX: [1, 0],\r\n dashArrayY: [2, 5],\r\n symbolSize: 1,\r\n rotation: Math.PI / 6\r\n }, {\r\n color: decalColor,\r\n symbol: 'circle',\r\n dashArrayX: [[8, 8], [0, 8, 8, 0]],\r\n dashArrayY: [6, 0],\r\n symbolSize: 0.8\r\n }, {\r\n color: decalColor,\r\n dashArrayX: [1, 0],\r\n dashArrayY: [4, 3],\r\n dashLineOffset: 0,\r\n rotation: -Math.PI / 4\r\n }, {\r\n color: decalColor,\r\n dashArrayX: [[6, 6], [0, 6, 6, 0]],\r\n dashArrayY: [6, 0]\r\n }, {\r\n color: decalColor,\r\n dashArrayX: [[1, 0], [1, 6]],\r\n dashArrayY: [1, 0, 6, 0],\r\n rotation: Math.PI / 4\r\n }, {\r\n color: decalColor,\r\n symbol: 'triangle',\r\n dashArrayX: [[9, 9], [0, 9, 9, 0]],\r\n dashArrayY: [7, 2],\r\n symbolSize: 0.75\r\n }]\r\n }\r\n },\r\n textStyle: {\r\n fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\r\n fontSize: 12,\r\n fontStyle: 'normal',\r\n fontWeight: 'normal'\r\n },\r\n blendMode: null,\r\n stateAnimation: {\r\n duration: 300,\r\n easing: 'cubicOut'\r\n },\r\n animation: 'auto',\r\n animationDuration: 1000,\r\n animationDurationUpdate: 500,\r\n animationEasing: 'cubicInOut',\r\n animationEasingUpdate: 'cubicInOut',\r\n animationThreshold: 2000,\r\n progressiveThreshold: 3000,\r\n progressive: 400,\r\n hoverLayerThreshold: 3000,\r\n useUTC: false\r\n};\n\nvar VISUAL_DIMENSIONS = createHashMap([\r\n 'tooltip', 'label', 'itemName', 'itemId', 'seriesName'\r\n]);\r\nvar SOURCE_FORMAT_ORIGINAL = 'original';\r\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\r\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\r\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\r\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\r\nvar SOURCE_FORMAT_UNKNOWN = 'unknown';\r\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\r\nvar SERIES_LAYOUT_BY_ROW = 'row';\n\nvar BE_ORDINAL = {\r\n Must: 1,\r\n Might: 2,\r\n Not: 3\r\n};\r\nvar innerGlobalModel = makeInner();\r\nfunction resetSourceDefaulter(ecModel) {\r\n innerGlobalModel(ecModel).datasetMap = createHashMap();\r\n}\r\nfunction inheritSourceMetaRawOption(upstream, newMetaRawOption) {\r\n var parentMetaRawOption = upstream ? upstream.metaRawOption : null;\r\n var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, parentMetaRawOption ? parentMetaRawOption.seriesLayoutBy : null);\r\n var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upstream ? upstream.startIndex : null);\r\n var dimensions = retrieve2(newMetaRawOption.dimensions, upstream ? upstream.dimensionsDefine : null);\r\n return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n}\r\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\r\n var encode = {};\r\n var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n if (!datasetModel || !coordDimensions) {\r\n return encode;\r\n }\r\n var encodeItemName = [];\r\n var encodeSeriesName = [];\r\n var ecModel = seriesModel.ecModel;\r\n var datasetMap = innerGlobalModel(ecModel).datasetMap;\r\n var key = datasetModel.uid + '_' + source.seriesLayoutBy;\r\n var baseCategoryDimIndex;\r\n var categoryWayValueDimStart;\r\n coordDimensions = coordDimensions.slice();\r\n each(coordDimensions, function (coordDimInfoLoose, coordDimIdx) {\r\n var coordDimInfo = isObject(coordDimInfoLoose)\r\n ? coordDimInfoLoose\r\n : (coordDimensions[coordDimIdx] = { name: coordDimInfoLoose });\r\n if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\r\n baseCategoryDimIndex = coordDimIdx;\r\n categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo);\r\n }\r\n encode[coordDimInfo.name] = [];\r\n });\r\n var datasetRecord = datasetMap.get(key)\r\n || datasetMap.set(key, { categoryWayDim: categoryWayValueDimStart, valueWayDim: 0 });\r\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\r\n var coordDimName = coordDimInfo.name;\r\n var count = getDataDimCountOnCoordDim(coordDimInfo);\r\n if (baseCategoryDimIndex == null) {\r\n var start = datasetRecord.valueWayDim;\r\n pushDim(encode[coordDimName], start, count);\r\n pushDim(encodeSeriesName, start, count);\r\n datasetRecord.valueWayDim += count;\r\n }\r\n else if (baseCategoryDimIndex === coordDimIdx) {\r\n pushDim(encode[coordDimName], 0, count);\r\n pushDim(encodeItemName, 0, count);\r\n }\r\n else {\r\n var start = datasetRecord.categoryWayDim;\r\n pushDim(encode[coordDimName], start, count);\r\n pushDim(encodeSeriesName, start, count);\r\n datasetRecord.categoryWayDim += count;\r\n }\r\n });\r\n function pushDim(dimIdxArr, idxFrom, idxCount) {\r\n for (var i = 0; i < idxCount; i++) {\r\n dimIdxArr.push(idxFrom + i);\r\n }\r\n }\r\n function getDataDimCountOnCoordDim(coordDimInfo) {\r\n var dimsDef = coordDimInfo.dimsDef;\r\n return dimsDef ? dimsDef.length : 1;\r\n }\r\n encodeItemName.length && (encode.itemName = encodeItemName);\r\n encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\r\n return encode;\r\n}\r\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\r\n var encode = {};\r\n var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n if (!datasetModel) {\r\n return encode;\r\n }\r\n var sourceFormat = source.sourceFormat;\r\n var dimensionsDefine = source.dimensionsDefine;\r\n var potentialNameDimIndex;\r\n if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n each(dimensionsDefine, function (dim, idx) {\r\n if ((isObject(dim) ? dim.name : dim) === 'name') {\r\n potentialNameDimIndex = idx;\r\n }\r\n });\r\n }\r\n var idxResult = (function () {\r\n var idxRes0 = {};\r\n var idxRes1 = {};\r\n var guessRecords = [];\r\n for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\r\n var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\r\n guessRecords.push(guessResult);\r\n var isPureNumber = guessResult === BE_ORDINAL.Not;\r\n if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\r\n idxRes0.v = i;\r\n }\r\n if (idxRes0.n == null\r\n || (idxRes0.n === idxRes0.v)\r\n || (!isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not)) {\r\n idxRes0.n = i;\r\n }\r\n if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\r\n return idxRes0;\r\n }\r\n if (!isPureNumber) {\r\n if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\r\n idxRes1.v = i;\r\n }\r\n if (idxRes1.n == null || (idxRes1.n === idxRes1.v)) {\r\n idxRes1.n = i;\r\n }\r\n }\r\n }\r\n function fulfilled(idxResult) {\r\n return idxResult.v != null && idxResult.n != null;\r\n }\r\n return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\r\n })();\r\n if (idxResult) {\r\n encode.value = [idxResult.v];\r\n var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;\r\n encode.itemName = [nameDimIndex];\r\n encode.seriesName = [nameDimIndex];\r\n }\r\n return encode;\r\n}\r\nfunction querySeriesUpstreamDatasetModel(seriesModel) {\r\n var thisData = seriesModel.get('data', true);\r\n if (!thisData) {\r\n return queryReferringComponents(seriesModel.ecModel, 'dataset', {\r\n index: seriesModel.get('datasetIndex', true),\r\n id: seriesModel.get('datasetId', true)\r\n }, SINGLE_REFERRING).models[0];\r\n }\r\n}\r\nfunction queryDatasetUpstreamDatasetModels(datasetModel) {\r\n if (!datasetModel.get('transform', true)\r\n && !datasetModel.get('fromTransformResult', true)) {\r\n return [];\r\n }\r\n return queryReferringComponents(datasetModel.ecModel, 'dataset', {\r\n index: datasetModel.get('fromDatasetIndex', true),\r\n id: datasetModel.get('fromDatasetId', true)\r\n }, SINGLE_REFERRING).models;\r\n}\r\nfunction guessOrdinal(source, dimIndex) {\r\n return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\r\n}\r\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\r\n var result;\r\n var maxLoop = 5;\r\n if (isTypedArray(data)) {\r\n return BE_ORDINAL.Not;\r\n }\r\n var dimName;\r\n var dimType;\r\n if (dimensionsDefine) {\r\n var dimDefItem = dimensionsDefine[dimIndex];\r\n if (isObject(dimDefItem)) {\r\n dimName = dimDefItem.name;\r\n dimType = dimDefItem.type;\r\n }\r\n else if (isString(dimDefItem)) {\r\n dimName = dimDefItem;\r\n }\r\n }\r\n if (dimType != null) {\r\n return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\r\n }\r\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n var dataArrayRows = data;\r\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n var sample = dataArrayRows[dimIndex];\r\n for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\r\n if ((result = detectValue(sample[startIndex + i])) != null) {\r\n return result;\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) {\r\n var row = dataArrayRows[startIndex + i];\r\n if (row && (result = detectValue(row[dimIndex])) != null) {\r\n return result;\r\n }\r\n }\r\n }\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n var dataObjectRows = data;\r\n if (!dimName) {\r\n return BE_ORDINAL.Not;\r\n }\r\n for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) {\r\n var item = dataObjectRows[i];\r\n if (item && (result = detectValue(item[dimName])) != null) {\r\n return result;\r\n }\r\n }\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n var dataKeyedColumns = data;\r\n if (!dimName) {\r\n return BE_ORDINAL.Not;\r\n }\r\n var sample = dataKeyedColumns[dimName];\r\n if (!sample || isTypedArray(sample)) {\r\n return BE_ORDINAL.Not;\r\n }\r\n for (var i = 0; i < sample.length && i < maxLoop; i++) {\r\n if ((result = detectValue(sample[i])) != null) {\r\n return result;\r\n }\r\n }\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n var dataOriginal = data;\r\n for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) {\r\n var item = dataOriginal[i];\r\n var val = getDataItemValue(item);\r\n if (!isArray(val)) {\r\n return BE_ORDINAL.Not;\r\n }\r\n if ((result = detectValue(val[dimIndex])) != null) {\r\n return result;\r\n }\r\n }\r\n }\r\n function detectValue(val) {\r\n var beStr = isString(val);\r\n if (val != null && isFinite(val) && val !== '') {\r\n return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\r\n }\r\n else if (beStr && val !== '-') {\r\n return BE_ORDINAL.Must;\r\n }\r\n }\r\n return BE_ORDINAL.Not;\r\n}\n\nvar internalOptionCreatorMap = createHashMap();\r\nfunction registerInternalOptionCreator(mainType, creator) {\r\n assert(internalOptionCreatorMap.get(mainType) == null && creator);\r\n internalOptionCreatorMap.set(mainType, creator);\r\n}\r\nfunction concatInternalOptions(ecModel, mainType, newCmptOptionList) {\r\n var internalOptionCreator = internalOptionCreatorMap.get(mainType);\r\n if (!internalOptionCreator) {\r\n return newCmptOptionList;\r\n }\r\n var internalOptions = internalOptionCreator(ecModel);\r\n if (!internalOptions) {\r\n return newCmptOptionList;\r\n }\r\n if (__DEV__) {\r\n for (var i = 0; i < internalOptions.length; i++) {\r\n assert(isComponentIdInternal(internalOptions[i]));\r\n }\r\n }\r\n return newCmptOptionList.concat(internalOptions);\r\n}\n\nvar innerColor = makeInner();\r\nvar innerDecal = makeInner();\r\nvar PaletteMixin = (function () {\r\n function PaletteMixin() {\r\n }\r\n PaletteMixin.prototype.getColorFromPalette = function (name, scope, requestNum) {\r\n var defaultPalette = normalizeToArray(this.get('color', true));\r\n var layeredPalette = this.get('colorLayer', true);\r\n return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum);\r\n };\r\n PaletteMixin.prototype.clearColorPalette = function () {\r\n clearPalette(this, innerColor);\r\n };\r\n return PaletteMixin;\r\n}());\r\nfunction getDecalFromPalette(ecModel, name, scope, requestNum) {\r\n var defaultDecals = normalizeToArray(ecModel.get(['aria', 'decal', 'decals']));\r\n return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum);\r\n}\r\nfunction getNearestPalette(palettes, requestColorNum) {\r\n var paletteNum = palettes.length;\r\n for (var i = 0; i < paletteNum; i++) {\r\n if (palettes[i].length > requestColorNum) {\r\n return palettes[i];\r\n }\r\n }\r\n return palettes[paletteNum - 1];\r\n}\r\nfunction getFromPalette(that, inner, defaultPalette, layeredPalette, name, scope, requestNum) {\r\n scope = scope || that;\r\n var scopeFields = inner(scope);\r\n var paletteIdx = scopeFields.paletteIdx || 0;\r\n var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {};\r\n if (paletteNameMap.hasOwnProperty(name)) {\r\n return paletteNameMap[name];\r\n }\r\n var palette = ((requestNum == null || !layeredPalette)\r\n ? defaultPalette : getNearestPalette(layeredPalette, requestNum));\r\n palette = palette || defaultPalette;\r\n if (!palette || !palette.length) {\r\n return;\r\n }\r\n var pickedPaletteItem = palette[paletteIdx];\r\n if (name) {\r\n paletteNameMap[name] = pickedPaletteItem;\r\n }\r\n scopeFields.paletteIdx = (paletteIdx + 1) % palette.length;\r\n return pickedPaletteItem;\r\n}\r\nfunction clearPalette(that, inner) {\r\n inner(that).paletteIdx = 0;\r\n inner(that).paletteNameMap = {};\r\n}\n\nvar reCreateSeriesIndices;\r\nvar assertSeriesInitialized;\r\nvar initBase;\r\nvar OPTION_INNER_KEY = '\\0_ec_inner';\r\nvar GlobalModel = (function (_super) {\r\n __extends(GlobalModel, _super);\r\n function GlobalModel() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n GlobalModel.prototype.init = function (option, parentModel, ecModel, theme, locale, optionManager) {\r\n theme = theme || {};\r\n this.option = null;\r\n this._theme = new Model(theme);\r\n this._locale = new Model(locale);\r\n this._optionManager = optionManager;\r\n };\r\n GlobalModel.prototype.setOption = function (option, opts, optionPreprocessorFuncs) {\r\n assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\r\n var innerOpt = normalizeSetOptionInput(opts);\r\n this._optionManager.setOption(option, optionPreprocessorFuncs, innerOpt);\r\n this._resetOption(null, innerOpt);\r\n };\r\n GlobalModel.prototype.resetOption = function (type, opt) {\r\n return this._resetOption(type, normalizeSetOptionInput(opt));\r\n };\r\n GlobalModel.prototype._resetOption = function (type, opt) {\r\n var optionChanged = false;\r\n var optionManager = this._optionManager;\r\n if (!type || type === 'recreate') {\r\n var baseOption = optionManager.mountOption(type === 'recreate');\r\n if (!this.option || type === 'recreate') {\r\n initBase(this, baseOption);\r\n }\r\n else {\r\n this.restoreData();\r\n this._mergeOption(baseOption, opt);\r\n }\r\n optionChanged = true;\r\n }\r\n if (type === 'timeline' || type === 'media') {\r\n this.restoreData();\r\n }\r\n if (!type || type === 'recreate' || type === 'timeline') {\r\n var timelineOption = optionManager.getTimelineOption(this);\r\n if (timelineOption) {\r\n optionChanged = true;\r\n this._mergeOption(timelineOption, opt);\r\n }\r\n }\r\n if (!type || type === 'recreate' || type === 'media') {\r\n var mediaOptions = optionManager.getMediaOption(this);\r\n if (mediaOptions.length) {\r\n each(mediaOptions, function (mediaOption) {\r\n optionChanged = true;\r\n this._mergeOption(mediaOption, opt);\r\n }, this);\r\n }\r\n }\r\n return optionChanged;\r\n };\r\n GlobalModel.prototype.mergeOption = function (option) {\r\n this._mergeOption(option, null);\r\n };\r\n GlobalModel.prototype._mergeOption = function (newOption, opt) {\r\n var option = this.option;\r\n var componentsMap = this._componentsMap;\r\n var componentsCount = this._componentsCount;\r\n var newCmptTypes = [];\r\n var newCmptTypeMap = createHashMap();\r\n var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap;\r\n resetSourceDefaulter(this);\r\n each(newOption, function (componentOption, mainType) {\r\n if (componentOption == null) {\r\n return;\r\n }\r\n if (!ComponentModel.hasClass(mainType)) {\r\n option[mainType] = option[mainType] == null\r\n ? clone(componentOption)\r\n : merge(option[mainType], componentOption, true);\r\n }\r\n else if (mainType) {\r\n newCmptTypes.push(mainType);\r\n newCmptTypeMap.set(mainType, true);\r\n }\r\n });\r\n if (replaceMergeMainTypeMap) {\r\n replaceMergeMainTypeMap.each(function (val, mainTypeInReplaceMerge) {\r\n if (ComponentModel.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) {\r\n newCmptTypes.push(mainTypeInReplaceMerge);\r\n newCmptTypeMap.set(mainTypeInReplaceMerge, true);\r\n }\r\n });\r\n }\r\n ComponentModel.topologicalTravel(newCmptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\r\n function visitComponent(mainType) {\r\n var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType]));\r\n var oldCmptList = componentsMap.get(mainType);\r\n var mergeMode = !oldCmptList ? 'replaceAll'\r\n : (replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType)) ? 'replaceMerge'\r\n : 'normalMerge';\r\n var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode);\r\n setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel);\r\n option[mainType] = null;\r\n componentsMap.set(mainType, null);\r\n componentsCount.set(mainType, 0);\r\n var optionsByMainType = [];\r\n var cmptsByMainType = [];\r\n var cmptsCountByMainType = 0;\r\n each(mappingResult, function (resultItem, index) {\r\n var componentModel = resultItem.existing;\r\n var newCmptOption = resultItem.newOption;\r\n if (!newCmptOption) {\r\n if (componentModel) {\r\n componentModel.mergeOption({}, this);\r\n componentModel.optionUpdated({}, false);\r\n }\r\n }\r\n else {\r\n var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\r\n if (componentModel && componentModel.constructor === ComponentModelClass) {\r\n componentModel.name = resultItem.keyInfo.name;\r\n componentModel.mergeOption(newCmptOption, this);\r\n componentModel.optionUpdated(newCmptOption, false);\r\n }\r\n else {\r\n var extraOpt = extend({\r\n componentIndex: index\r\n }, resultItem.keyInfo);\r\n componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt);\r\n extend(componentModel, extraOpt);\r\n if (resultItem.brandNew) {\r\n componentModel.__requireNewView = true;\r\n }\r\n componentModel.init(newCmptOption, this, this);\r\n componentModel.optionUpdated(null, true);\r\n }\r\n }\r\n if (componentModel) {\r\n optionsByMainType.push(componentModel.option);\r\n cmptsByMainType.push(componentModel);\r\n cmptsCountByMainType++;\r\n }\r\n else {\r\n optionsByMainType.push(void 0);\r\n cmptsByMainType.push(void 0);\r\n }\r\n }, this);\r\n option[mainType] = optionsByMainType;\r\n componentsMap.set(mainType, cmptsByMainType);\r\n componentsCount.set(mainType, cmptsCountByMainType);\r\n if (mainType === 'series') {\r\n reCreateSeriesIndices(this);\r\n }\r\n }\r\n if (!this._seriesIndices) {\r\n reCreateSeriesIndices(this);\r\n }\r\n };\r\n GlobalModel.prototype.getOption = function () {\r\n var option = clone(this.option);\r\n each(option, function (optInMainType, mainType) {\r\n if (ComponentModel.hasClass(mainType)) {\r\n var opts = normalizeToArray(optInMainType);\r\n var realLen = opts.length;\r\n var metNonInner = false;\r\n for (var i = realLen - 1; i >= 0; i--) {\r\n if (opts[i] && !isComponentIdInternal(opts[i])) {\r\n metNonInner = true;\r\n }\r\n else {\r\n opts[i] = null;\r\n !metNonInner && realLen--;\r\n }\r\n }\r\n opts.length = realLen;\r\n option[mainType] = opts;\r\n }\r\n });\r\n delete option[OPTION_INNER_KEY];\r\n return option;\r\n };\r\n GlobalModel.prototype.getTheme = function () {\r\n return this._theme;\r\n };\r\n GlobalModel.prototype.getLocaleModel = function () {\r\n return this._locale;\r\n };\r\n GlobalModel.prototype.getLocale = function (localePosition) {\r\n var locale = this.getLocaleModel();\r\n return locale.get(localePosition);\r\n };\r\n GlobalModel.prototype.setUpdatePayload = function (payload) {\r\n this._payload = payload;\r\n };\r\n GlobalModel.prototype.getUpdatePayload = function () {\r\n return this._payload;\r\n };\r\n GlobalModel.prototype.getComponent = function (mainType, idx) {\r\n var list = this._componentsMap.get(mainType);\r\n if (list) {\r\n var cmpt = list[idx || 0];\r\n if (cmpt) {\r\n return cmpt;\r\n }\r\n else if (idx == null) {\r\n for (var i = 0; i < list.length; i++) {\r\n if (list[i]) {\r\n return list[i];\r\n }\r\n }\r\n }\r\n }\r\n };\r\n GlobalModel.prototype.queryComponents = function (condition) {\r\n var mainType = condition.mainType;\r\n if (!mainType) {\r\n return [];\r\n }\r\n var index = condition.index;\r\n var id = condition.id;\r\n var name = condition.name;\r\n var cmpts = this._componentsMap.get(mainType);\r\n if (!cmpts || !cmpts.length) {\r\n return [];\r\n }\r\n var result;\r\n if (index != null) {\r\n result = [];\r\n each(normalizeToArray(index), function (idx) {\r\n cmpts[idx] && result.push(cmpts[idx]);\r\n });\r\n }\r\n else if (id != null) {\r\n result = queryByIdOrName('id', id, cmpts);\r\n }\r\n else if (name != null) {\r\n result = queryByIdOrName('name', name, cmpts);\r\n }\r\n else {\r\n result = filter(cmpts, function (cmpt) { return !!cmpt; });\r\n }\r\n return filterBySubType(result, condition);\r\n };\r\n GlobalModel.prototype.findComponents = function (condition) {\r\n var query = condition.query;\r\n var mainType = condition.mainType;\r\n var queryCond = getQueryCond(query);\r\n var result = queryCond\r\n ? this.queryComponents(queryCond)\r\n : filter(this._componentsMap.get(mainType), function (cmpt) { return !!cmpt; });\r\n return doFilter(filterBySubType(result, condition));\r\n function getQueryCond(q) {\r\n var indexAttr = mainType + 'Index';\r\n var idAttr = mainType + 'Id';\r\n var nameAttr = mainType + 'Name';\r\n return q && (q[indexAttr] != null\r\n || q[idAttr] != null\r\n || q[nameAttr] != null)\r\n ? {\r\n mainType: mainType,\r\n index: q[indexAttr],\r\n id: q[idAttr],\r\n name: q[nameAttr]\r\n }\r\n : null;\r\n }\r\n function doFilter(res) {\r\n return condition.filter\r\n ? filter(res, condition.filter)\r\n : res;\r\n }\r\n };\r\n GlobalModel.prototype.eachComponent = function (mainType, cb, context) {\r\n var componentsMap = this._componentsMap;\r\n if (isFunction(mainType)) {\r\n var ctxForAll_1 = cb;\r\n var cbForAll_1 = mainType;\r\n componentsMap.each(function (cmpts, componentType) {\r\n for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n var cmpt = cmpts[i];\r\n cmpt && cbForAll_1.call(ctxForAll_1, componentType, cmpt, cmpt.componentIndex);\r\n }\r\n });\r\n }\r\n else {\r\n var cmpts = isString(mainType)\r\n ? componentsMap.get(mainType)\r\n : isObject(mainType)\r\n ? this.findComponents(mainType)\r\n : null;\r\n for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n var cmpt = cmpts[i];\r\n cmpt && cb.call(context, cmpt, cmpt.componentIndex);\r\n }\r\n }\r\n };\r\n GlobalModel.prototype.getSeriesByName = function (name) {\r\n var nameStr = convertOptionIdName(name, null);\r\n return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && nameStr != null && oneSeries.name === nameStr; });\r\n };\r\n GlobalModel.prototype.getSeriesByIndex = function (seriesIndex) {\r\n return this._componentsMap.get('series')[seriesIndex];\r\n };\r\n GlobalModel.prototype.getSeriesByType = function (subType) {\r\n return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && oneSeries.subType === subType; });\r\n };\r\n GlobalModel.prototype.getSeries = function () {\r\n return filter(this._componentsMap.get('series').slice(), function (oneSeries) { return !!oneSeries; });\r\n };\r\n GlobalModel.prototype.getSeriesCount = function () {\r\n return this._componentsCount.get('series');\r\n };\r\n GlobalModel.prototype.eachSeries = function (cb, context) {\r\n assertSeriesInitialized(this);\r\n each(this._seriesIndices, function (rawSeriesIndex) {\r\n var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n cb.call(context, series, rawSeriesIndex);\r\n }, this);\r\n };\r\n GlobalModel.prototype.eachRawSeries = function (cb, context) {\r\n each(this._componentsMap.get('series'), function (series) {\r\n series && cb.call(context, series, series.componentIndex);\r\n });\r\n };\r\n GlobalModel.prototype.eachSeriesByType = function (subType, cb, context) {\r\n assertSeriesInitialized(this);\r\n each(this._seriesIndices, function (rawSeriesIndex) {\r\n var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n if (series.subType === subType) {\r\n cb.call(context, series, rawSeriesIndex);\r\n }\r\n }, this);\r\n };\r\n GlobalModel.prototype.eachRawSeriesByType = function (subType, cb, context) {\r\n return each(this.getSeriesByType(subType), cb, context);\r\n };\r\n GlobalModel.prototype.isSeriesFiltered = function (seriesModel) {\r\n assertSeriesInitialized(this);\r\n return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\r\n };\r\n GlobalModel.prototype.getCurrentSeriesIndices = function () {\r\n return (this._seriesIndices || []).slice();\r\n };\r\n GlobalModel.prototype.filterSeries = function (cb, context) {\r\n assertSeriesInitialized(this);\r\n var newSeriesIndices = [];\r\n each(this._seriesIndices, function (seriesRawIdx) {\r\n var series = this._componentsMap.get('series')[seriesRawIdx];\r\n cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx);\r\n }, this);\r\n this._seriesIndices = newSeriesIndices;\r\n this._seriesIndicesMap = createHashMap(newSeriesIndices);\r\n };\r\n GlobalModel.prototype.restoreData = function (payload) {\r\n reCreateSeriesIndices(this);\r\n var componentsMap = this._componentsMap;\r\n var componentTypes = [];\r\n componentsMap.each(function (components, componentType) {\r\n if (ComponentModel.hasClass(componentType)) {\r\n componentTypes.push(componentType);\r\n }\r\n });\r\n ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType) {\r\n each(componentsMap.get(componentType), function (component) {\r\n if (component\r\n && (componentType !== 'series'\r\n || !isNotTargetSeries(component, payload))) {\r\n component.restoreData();\r\n }\r\n });\r\n });\r\n };\r\n GlobalModel.internalField = (function () {\r\n reCreateSeriesIndices = function (ecModel) {\r\n var seriesIndices = ecModel._seriesIndices = [];\r\n each(ecModel._componentsMap.get('series'), function (series) {\r\n series && seriesIndices.push(series.componentIndex);\r\n });\r\n ecModel._seriesIndicesMap = createHashMap(seriesIndices);\r\n };\r\n assertSeriesInitialized = function (ecModel) {\r\n if (__DEV__) {\r\n if (!ecModel._seriesIndices) {\r\n throw new Error('Option should contains series.');\r\n }\r\n }\r\n };\r\n initBase = function (ecModel, baseOption) {\r\n ecModel.option = {};\r\n ecModel.option[OPTION_INNER_KEY] = 1;\r\n ecModel._componentsMap = createHashMap({ series: [] });\r\n ecModel._componentsCount = createHashMap();\r\n var airaOption = baseOption.aria;\r\n if (isObject(airaOption) && airaOption.enabled == null) {\r\n airaOption.enabled = true;\r\n }\r\n mergeTheme(baseOption, ecModel._theme.option);\r\n merge(baseOption, globalDefault, false);\r\n ecModel._mergeOption(baseOption, null);\r\n };\r\n })();\r\n return GlobalModel;\r\n}(Model));\r\nfunction isNotTargetSeries(seriesModel, payload) {\r\n if (payload) {\r\n var index = payload.seriesIndex;\r\n var id = payload.seriesId;\r\n var name_1 = payload.seriesName;\r\n return (index != null && seriesModel.componentIndex !== index)\r\n || (id != null && seriesModel.id !== id)\r\n || (name_1 != null && seriesModel.name !== name_1);\r\n }\r\n}\r\nfunction mergeTheme(option, theme) {\r\n var notMergeColorLayer = option.color && !option.colorLayer;\r\n each(theme, function (themeItem, name) {\r\n if (name === 'colorLayer' && notMergeColorLayer) {\r\n return;\r\n }\r\n if (!ComponentModel.hasClass(name)) {\r\n if (typeof themeItem === 'object') {\r\n option[name] = !option[name]\r\n ? clone(themeItem)\r\n : merge(option[name], themeItem, false);\r\n }\r\n else {\r\n if (option[name] == null) {\r\n option[name] = themeItem;\r\n }\r\n }\r\n }\r\n });\r\n}\r\nfunction queryByIdOrName(attr, idOrName, cmpts) {\r\n if (isArray(idOrName)) {\r\n var keyMap_1 = createHashMap();\r\n each(idOrName, function (idOrNameItem) {\r\n if (idOrNameItem != null) {\r\n var idName = convertOptionIdName(idOrNameItem, null);\r\n idName != null && keyMap_1.set(idOrNameItem, true);\r\n }\r\n });\r\n return filter(cmpts, function (cmpt) { return cmpt && keyMap_1.get(cmpt[attr]); });\r\n }\r\n else {\r\n var idName_1 = convertOptionIdName(idOrName, null);\r\n return filter(cmpts, function (cmpt) { return cmpt && idName_1 != null && cmpt[attr] === idName_1; });\r\n }\r\n}\r\nfunction filterBySubType(components, condition) {\r\n return condition.hasOwnProperty('subType')\r\n ? filter(components, function (cmpt) { return cmpt && cmpt.subType === condition.subType; })\r\n : components;\r\n}\r\nfunction normalizeSetOptionInput(opts) {\r\n var replaceMergeMainTypeMap = createHashMap();\r\n opts && each(normalizeToArray(opts.replaceMerge), function (mainType) {\r\n if (__DEV__) {\r\n assert(ComponentModel.hasClass(mainType), '\"' + mainType + '\" is not valid component main type in \"replaceMerge\"');\r\n }\r\n replaceMergeMainTypeMap.set(mainType, true);\r\n });\r\n return {\r\n replaceMergeMainTypeMap: replaceMergeMainTypeMap\r\n };\r\n}\r\nmixin(GlobalModel, PaletteMixin);\n\nvar availableMethods = [\r\n 'getDom',\r\n 'getZr',\r\n 'getWidth',\r\n 'getHeight',\r\n 'getDevicePixelRatio',\r\n 'dispatchAction',\r\n 'isDisposed',\r\n 'on',\r\n 'off',\r\n 'getDataURL',\r\n 'getConnectedDataURL',\r\n 'getOption',\r\n 'getId',\r\n 'updateLabelLayout'\r\n];\r\nvar ExtensionAPI = (function () {\r\n function ExtensionAPI(ecInstance) {\r\n each(availableMethods, function (methodName) {\r\n this[methodName] = bind(ecInstance[methodName], ecInstance);\r\n }, this);\r\n }\r\n return ExtensionAPI;\r\n}());\n\nvar coordinateSystemCreators = {};\r\nvar CoordinateSystemManager = (function () {\r\n function CoordinateSystemManager() {\r\n this._coordinateSystems = [];\r\n }\r\n CoordinateSystemManager.prototype.create = function (ecModel, api) {\r\n var coordinateSystems = [];\r\n each(coordinateSystemCreators, function (creater, type) {\r\n var list = creater.create(ecModel, api);\r\n coordinateSystems = coordinateSystems.concat(list || []);\r\n });\r\n this._coordinateSystems = coordinateSystems;\r\n };\r\n CoordinateSystemManager.prototype.update = function (ecModel, api) {\r\n each(this._coordinateSystems, function (coordSys) {\r\n coordSys.update && coordSys.update(ecModel, api);\r\n });\r\n };\r\n CoordinateSystemManager.prototype.getCoordinateSystems = function () {\r\n return this._coordinateSystems.slice();\r\n };\r\n CoordinateSystemManager.register = function (type, creator) {\r\n coordinateSystemCreators[type] = creator;\r\n };\r\n CoordinateSystemManager.get = function (type) {\r\n return coordinateSystemCreators[type];\r\n };\r\n return CoordinateSystemManager;\r\n}());\n\nvar QUERY_REG = /^(min|max)?(.+)$/;\r\nvar OptionManager = (function () {\r\n function OptionManager(api) {\r\n this._timelineOptions = [];\r\n this._mediaList = [];\r\n this._currentMediaIndices = [];\r\n this._api = api;\r\n }\r\n OptionManager.prototype.setOption = function (rawOption, optionPreprocessorFuncs, opt) {\r\n if (rawOption) {\r\n each(normalizeToArray(rawOption.series), function (series) {\r\n series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data);\r\n });\r\n each(normalizeToArray(rawOption.dataset), function (dataset) {\r\n dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source);\r\n });\r\n }\r\n rawOption = clone(rawOption);\r\n var optionBackup = this._optionBackup;\r\n var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs, !optionBackup);\r\n this._newBaseOption = newParsedOption.baseOption;\r\n if (optionBackup) {\r\n if (newParsedOption.timelineOptions.length) {\r\n optionBackup.timelineOptions = newParsedOption.timelineOptions;\r\n }\r\n if (newParsedOption.mediaList.length) {\r\n optionBackup.mediaList = newParsedOption.mediaList;\r\n }\r\n if (newParsedOption.mediaDefault) {\r\n optionBackup.mediaDefault = newParsedOption.mediaDefault;\r\n }\r\n }\r\n else {\r\n this._optionBackup = newParsedOption;\r\n }\r\n };\r\n OptionManager.prototype.mountOption = function (isRecreate) {\r\n var optionBackup = this._optionBackup;\r\n this._timelineOptions = optionBackup.timelineOptions;\r\n this._mediaList = optionBackup.mediaList;\r\n this._mediaDefault = optionBackup.mediaDefault;\r\n this._currentMediaIndices = [];\r\n return clone(isRecreate\r\n ? optionBackup.baseOption : this._newBaseOption);\r\n };\r\n OptionManager.prototype.getTimelineOption = function (ecModel) {\r\n var option;\r\n var timelineOptions = this._timelineOptions;\r\n if (timelineOptions.length) {\r\n var timelineModel = ecModel.getComponent('timeline');\r\n if (timelineModel) {\r\n option = clone(timelineOptions[timelineModel.getCurrentIndex()]);\r\n }\r\n }\r\n return option;\r\n };\r\n OptionManager.prototype.getMediaOption = function (ecModel) {\r\n var ecWidth = this._api.getWidth();\r\n var ecHeight = this._api.getHeight();\r\n var mediaList = this._mediaList;\r\n var mediaDefault = this._mediaDefault;\r\n var indices = [];\r\n var result = [];\r\n if (!mediaList.length && !mediaDefault) {\r\n return result;\r\n }\r\n for (var i = 0, len = mediaList.length; i < len; i++) {\r\n if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\r\n indices.push(i);\r\n }\r\n }\r\n if (!indices.length && mediaDefault) {\r\n indices = [-1];\r\n }\r\n if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\r\n result = map(indices, function (index) {\r\n return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\r\n });\r\n }\r\n this._currentMediaIndices = indices;\r\n return result;\r\n };\r\n return OptionManager;\r\n}());\r\nfunction parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\r\n var mediaList = [];\r\n var mediaDefault;\r\n var baseOption;\r\n var declaredBaseOption = rawOption.baseOption;\r\n var timelineOnRoot = rawOption.timeline;\r\n var timelineOptionsOnRoot = rawOption.options;\r\n var mediaOnRoot = rawOption.media;\r\n var hasMedia = !!rawOption.media;\r\n var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || (declaredBaseOption && declaredBaseOption.timeline));\r\n if (declaredBaseOption) {\r\n baseOption = declaredBaseOption;\r\n if (!baseOption.timeline) {\r\n baseOption.timeline = timelineOnRoot;\r\n }\r\n }\r\n else {\r\n if (hasTimeline || hasMedia) {\r\n rawOption.options = rawOption.media = null;\r\n }\r\n baseOption = rawOption;\r\n }\r\n if (hasMedia) {\r\n if (isArray(mediaOnRoot)) {\r\n each(mediaOnRoot, function (singleMedia) {\r\n if (__DEV__) {\r\n if (singleMedia\r\n && !singleMedia.option\r\n && isObject(singleMedia.query)\r\n && isObject(singleMedia.query.option)) {\r\n error('Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }');\r\n }\r\n }\r\n if (singleMedia && singleMedia.option) {\r\n if (singleMedia.query) {\r\n mediaList.push(singleMedia);\r\n }\r\n else if (!mediaDefault) {\r\n mediaDefault = singleMedia;\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n if (__DEV__) {\r\n error('Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }');\r\n }\r\n }\r\n }\r\n doPreprocess(baseOption);\r\n each(timelineOptionsOnRoot, function (option) { return doPreprocess(option); });\r\n each(mediaList, function (media) { return doPreprocess(media.option); });\r\n function doPreprocess(option) {\r\n each(optionPreprocessorFuncs, function (preProcess) {\r\n preProcess(option, isNew);\r\n });\r\n }\r\n return {\r\n baseOption: baseOption,\r\n timelineOptions: timelineOptionsOnRoot || [],\r\n mediaDefault: mediaDefault,\r\n mediaList: mediaList\r\n };\r\n}\r\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\r\n var realMap = {\r\n width: ecWidth,\r\n height: ecHeight,\r\n aspectratio: ecWidth / ecHeight\r\n };\r\n var applicatable = true;\r\n each(query, function (value, attr) {\r\n var matched = attr.match(QUERY_REG);\r\n if (!matched || !matched[1] || !matched[2]) {\r\n return;\r\n }\r\n var operator = matched[1];\r\n var realAttr = matched[2].toLowerCase();\r\n if (!compare(realMap[realAttr], value, operator)) {\r\n applicatable = false;\r\n }\r\n });\r\n return applicatable;\r\n}\r\nfunction compare(real, expect, operator) {\r\n if (operator === 'min') {\r\n return real >= expect;\r\n }\r\n else if (operator === 'max') {\r\n return real <= expect;\r\n }\r\n else {\r\n return real === expect;\r\n }\r\n}\r\nfunction indicesEquals(indices1, indices2) {\r\n return indices1.join(',') === indices2.join(',');\r\n}\n\nvar each$2 = each;\r\nvar isObject$1 = isObject;\r\nvar POSSIBLE_STYLES = [\r\n 'areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle',\r\n 'chordStyle', 'label', 'labelLine'\r\n];\r\nfunction compatEC2ItemStyle(opt) {\r\n var itemStyleOpt = opt && opt.itemStyle;\r\n if (!itemStyleOpt) {\r\n return;\r\n }\r\n for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\r\n var styleName = POSSIBLE_STYLES[i];\r\n var normalItemStyleOpt = itemStyleOpt.normal;\r\n var emphasisItemStyleOpt = itemStyleOpt.emphasis;\r\n if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\r\n if (__DEV__) {\r\n deprecateReplaceLog(\"itemStyle.normal.\" + styleName, styleName);\r\n }\r\n opt[styleName] = opt[styleName] || {};\r\n if (!opt[styleName].normal) {\r\n opt[styleName].normal = normalItemStyleOpt[styleName];\r\n }\r\n else {\r\n merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\r\n }\r\n normalItemStyleOpt[styleName] = null;\r\n }\r\n if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\r\n if (__DEV__) {\r\n deprecateReplaceLog(\"itemStyle.emphasis.\" + styleName, \"emphasis.\" + styleName);\r\n }\r\n opt[styleName] = opt[styleName] || {};\r\n if (!opt[styleName].emphasis) {\r\n opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\r\n }\r\n else {\r\n merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\r\n }\r\n emphasisItemStyleOpt[styleName] = null;\r\n }\r\n }\r\n}\r\nfunction convertNormalEmphasis(opt, optType, useExtend) {\r\n if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\r\n var normalOpt = opt[optType].normal;\r\n var emphasisOpt = opt[optType].emphasis;\r\n if (normalOpt) {\r\n if (__DEV__) {\r\n deprecateLog(\"'normal' hierarchy in \" + optType + \" has been removed since 4.0. All style properties are configured in \" + optType + \" directly now.\");\r\n }\r\n if (useExtend) {\r\n opt[optType].normal = opt[optType].emphasis = null;\r\n defaults(opt[optType], normalOpt);\r\n }\r\n else {\r\n opt[optType] = normalOpt;\r\n }\r\n }\r\n if (emphasisOpt) {\r\n if (__DEV__) {\r\n deprecateLog(optType + \".emphasis has been changed to emphasis.\" + optType + \" since 4.0\");\r\n }\r\n opt.emphasis = opt.emphasis || {};\r\n opt.emphasis[optType] = emphasisOpt;\r\n if (emphasisOpt.focus) {\r\n opt.emphasis.focus = emphasisOpt.focus;\r\n }\r\n if (emphasisOpt.blurScope) {\r\n opt.emphasis.blurScope = emphasisOpt.blurScope;\r\n }\r\n }\r\n }\r\n}\r\nfunction removeEC3NormalStatus(opt) {\r\n convertNormalEmphasis(opt, 'itemStyle');\r\n convertNormalEmphasis(opt, 'lineStyle');\r\n convertNormalEmphasis(opt, 'areaStyle');\r\n convertNormalEmphasis(opt, 'label');\r\n convertNormalEmphasis(opt, 'labelLine');\r\n convertNormalEmphasis(opt, 'upperLabel');\r\n convertNormalEmphasis(opt, 'edgeLabel');\r\n}\r\nfunction compatTextStyle(opt, propName) {\r\n var labelOptSingle = isObject$1(opt) && opt[propName];\r\n var textStyle = isObject$1(labelOptSingle) && labelOptSingle.textStyle;\r\n if (textStyle) {\r\n if (__DEV__) {\r\n deprecateLog(\"textStyle hierarchy in \" + propName + \" has been removed since 4.0. All textStyle properties are configured in \" + propName + \" directly now.\");\r\n }\r\n for (var i = 0, len = TEXT_STYLE_OPTIONS.length; i < len; i++) {\r\n var textPropName = TEXT_STYLE_OPTIONS[i];\r\n if (textStyle.hasOwnProperty(textPropName)) {\r\n labelOptSingle[textPropName] = textStyle[textPropName];\r\n }\r\n }\r\n }\r\n}\r\nfunction compatEC3CommonStyles(opt) {\r\n if (opt) {\r\n removeEC3NormalStatus(opt);\r\n compatTextStyle(opt, 'label');\r\n opt.emphasis && compatTextStyle(opt.emphasis, 'label');\r\n }\r\n}\r\nfunction processSeries(seriesOpt) {\r\n if (!isObject$1(seriesOpt)) {\r\n return;\r\n }\r\n compatEC2ItemStyle(seriesOpt);\r\n removeEC3NormalStatus(seriesOpt);\r\n compatTextStyle(seriesOpt, 'label');\r\n compatTextStyle(seriesOpt, 'upperLabel');\r\n compatTextStyle(seriesOpt, 'edgeLabel');\r\n if (seriesOpt.emphasis) {\r\n compatTextStyle(seriesOpt.emphasis, 'label');\r\n compatTextStyle(seriesOpt.emphasis, 'upperLabel');\r\n compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\r\n }\r\n var markPoint = seriesOpt.markPoint;\r\n if (markPoint) {\r\n compatEC2ItemStyle(markPoint);\r\n compatEC3CommonStyles(markPoint);\r\n }\r\n var markLine = seriesOpt.markLine;\r\n if (markLine) {\r\n compatEC2ItemStyle(markLine);\r\n compatEC3CommonStyles(markLine);\r\n }\r\n var markArea = seriesOpt.markArea;\r\n if (markArea) {\r\n compatEC3CommonStyles(markArea);\r\n }\r\n var data = seriesOpt.data;\r\n if (seriesOpt.type === 'graph') {\r\n data = data || seriesOpt.nodes;\r\n var edgeData = seriesOpt.links || seriesOpt.edges;\r\n if (edgeData && !isTypedArray(edgeData)) {\r\n for (var i = 0; i < edgeData.length; i++) {\r\n compatEC3CommonStyles(edgeData[i]);\r\n }\r\n }\r\n each(seriesOpt.categories, function (opt) {\r\n removeEC3NormalStatus(opt);\r\n });\r\n }\r\n if (data && !isTypedArray(data)) {\r\n for (var i = 0; i < data.length; i++) {\r\n compatEC3CommonStyles(data[i]);\r\n }\r\n }\r\n markPoint = seriesOpt.markPoint;\r\n if (markPoint && markPoint.data) {\r\n var mpData = markPoint.data;\r\n for (var i = 0; i < mpData.length; i++) {\r\n compatEC3CommonStyles(mpData[i]);\r\n }\r\n }\r\n markLine = seriesOpt.markLine;\r\n if (markLine && markLine.data) {\r\n var mlData = markLine.data;\r\n for (var i = 0; i < mlData.length; i++) {\r\n if (isArray(mlData[i])) {\r\n compatEC3CommonStyles(mlData[i][0]);\r\n compatEC3CommonStyles(mlData[i][1]);\r\n }\r\n else {\r\n compatEC3CommonStyles(mlData[i]);\r\n }\r\n }\r\n }\r\n if (seriesOpt.type === 'gauge') {\r\n compatTextStyle(seriesOpt, 'axisLabel');\r\n compatTextStyle(seriesOpt, 'title');\r\n compatTextStyle(seriesOpt, 'detail');\r\n }\r\n else if (seriesOpt.type === 'treemap') {\r\n convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\r\n each(seriesOpt.levels, function (opt) {\r\n removeEC3NormalStatus(opt);\r\n });\r\n }\r\n else if (seriesOpt.type === 'tree') {\r\n removeEC3NormalStatus(seriesOpt.leaves);\r\n }\r\n}\r\nfunction toArr(o) {\r\n return isArray(o) ? o : o ? [o] : [];\r\n}\r\nfunction toObj(o) {\r\n return (isArray(o) ? o[0] : o) || {};\r\n}\r\nfunction globalCompatStyle(option, isTheme) {\r\n each$2(toArr(option.series), function (seriesOpt) {\r\n isObject$1(seriesOpt) && processSeries(seriesOpt);\r\n });\r\n var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\r\n isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\r\n each$2(axes, function (axisName) {\r\n each$2(toArr(option[axisName]), function (axisOpt) {\r\n if (axisOpt) {\r\n compatTextStyle(axisOpt, 'axisLabel');\r\n compatTextStyle(axisOpt.axisPointer, 'label');\r\n }\r\n });\r\n });\r\n each$2(toArr(option.parallel), function (parallelOpt) {\r\n var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\r\n compatTextStyle(parallelAxisDefault, 'axisLabel');\r\n compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\r\n });\r\n each$2(toArr(option.calendar), function (calendarOpt) {\r\n convertNormalEmphasis(calendarOpt, 'itemStyle');\r\n compatTextStyle(calendarOpt, 'dayLabel');\r\n compatTextStyle(calendarOpt, 'monthLabel');\r\n compatTextStyle(calendarOpt, 'yearLabel');\r\n });\r\n each$2(toArr(option.radar), function (radarOpt) {\r\n compatTextStyle(radarOpt, 'name');\r\n if (radarOpt.name && radarOpt.axisName == null) {\r\n radarOpt.axisName = radarOpt.name;\r\n delete radarOpt.name;\r\n if (__DEV__) {\r\n deprecateLog('name property in radar component has been changed to axisName');\r\n }\r\n }\r\n if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {\r\n radarOpt.axisNameGap = radarOpt.nameGap;\r\n delete radarOpt.nameGap;\r\n if (__DEV__) {\r\n deprecateLog('nameGap property in radar component has been changed to axisNameGap');\r\n }\r\n }\r\n });\r\n each$2(toArr(option.geo), function (geoOpt) {\r\n if (isObject$1(geoOpt)) {\r\n compatEC3CommonStyles(geoOpt);\r\n each$2(toArr(geoOpt.regions), function (regionObj) {\r\n compatEC3CommonStyles(regionObj);\r\n });\r\n }\r\n });\r\n each$2(toArr(option.timeline), function (timelineOpt) {\r\n compatEC3CommonStyles(timelineOpt);\r\n convertNormalEmphasis(timelineOpt, 'label');\r\n convertNormalEmphasis(timelineOpt, 'itemStyle');\r\n convertNormalEmphasis(timelineOpt, 'controlStyle', true);\r\n var data = timelineOpt.data;\r\n isArray(data) && each(data, function (item) {\r\n if (isObject(item)) {\r\n convertNormalEmphasis(item, 'label');\r\n convertNormalEmphasis(item, 'itemStyle');\r\n }\r\n });\r\n });\r\n each$2(toArr(option.toolbox), function (toolboxOpt) {\r\n convertNormalEmphasis(toolboxOpt, 'iconStyle');\r\n each$2(toolboxOpt.feature, function (featureOpt) {\r\n convertNormalEmphasis(featureOpt, 'iconStyle');\r\n });\r\n });\r\n compatTextStyle(toObj(option.axisPointer), 'label');\r\n compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\r\n}\n\nfunction get(opt, path) {\r\n var pathArr = path.split(',');\r\n var obj = opt;\r\n for (var i = 0; i < pathArr.length; i++) {\r\n obj = obj && obj[pathArr[i]];\r\n if (obj == null) {\r\n break;\r\n }\r\n }\r\n return obj;\r\n}\r\nfunction set$1(opt, path, val, overwrite) {\r\n var pathArr = path.split(',');\r\n var obj = opt;\r\n var key;\r\n var i = 0;\r\n for (; i < pathArr.length - 1; i++) {\r\n key = pathArr[i];\r\n if (obj[key] == null) {\r\n obj[key] = {};\r\n }\r\n obj = obj[key];\r\n }\r\n if (overwrite || obj[pathArr[i]] == null) {\r\n obj[pathArr[i]] = val;\r\n }\r\n}\r\nfunction compatLayoutProperties(option) {\r\n option && each(LAYOUT_PROPERTIES, function (prop) {\r\n if (prop[0] in option && !(prop[1] in option)) {\r\n option[prop[1]] = option[prop[0]];\r\n }\r\n });\r\n}\r\nvar LAYOUT_PROPERTIES = [\r\n ['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']\r\n];\r\nvar COMPATITABLE_COMPONENTS = [\r\n 'grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'\r\n];\r\nvar BAR_ITEM_STYLE_MAP = [\r\n ['borderRadius', 'barBorderRadius'],\r\n ['borderColor', 'barBorderColor'],\r\n ['borderWidth', 'barBorderWidth']\r\n];\r\nfunction compatBarItemStyle(option) {\r\n var itemStyle = option && option.itemStyle;\r\n if (itemStyle) {\r\n for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {\r\n var oldName = BAR_ITEM_STYLE_MAP[i][1];\r\n var newName = BAR_ITEM_STYLE_MAP[i][0];\r\n if (itemStyle[oldName] != null) {\r\n itemStyle[newName] = itemStyle[oldName];\r\n if (__DEV__) {\r\n deprecateReplaceLog(oldName, newName);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction compatPieLabel(option) {\r\n if (!option) {\r\n return;\r\n }\r\n if (option.alignTo === 'edge' && option.margin != null && option.edgeDistance == null) {\r\n if (__DEV__) {\r\n deprecateReplaceLog('label.margin', 'label.edgeDistance', 'pie');\r\n }\r\n option.edgeDistance = option.margin;\r\n }\r\n}\r\nfunction compatSunburstState(option) {\r\n if (!option) {\r\n return;\r\n }\r\n if (option.downplay && !option.blur) {\r\n option.blur = option.downplay;\r\n if (__DEV__) {\r\n deprecateReplaceLog('downplay', 'blur', 'sunburst');\r\n }\r\n }\r\n}\r\nfunction compatGraphFocus(option) {\r\n if (!option) {\r\n return;\r\n }\r\n if (option.focusNodeAdjacency != null) {\r\n option.emphasis = option.emphasis || {};\r\n if (option.emphasis.focus == null) {\r\n if (__DEV__) {\r\n deprecateReplaceLog('focusNodeAdjacency', 'emphasis: { focus: \\'adjacency\\'}', 'graph/sankey');\r\n }\r\n option.emphasis.focus = 'adjacency';\r\n }\r\n }\r\n}\r\nfunction traverseTree(data, cb) {\r\n if (data) {\r\n for (var i = 0; i < data.length; i++) {\r\n cb(data[i]);\r\n data[i] && traverseTree(data[i].children, cb);\r\n }\r\n }\r\n}\r\nfunction globalBackwardCompat(option, isTheme) {\r\n globalCompatStyle(option, isTheme);\r\n option.series = normalizeToArray(option.series);\r\n each(option.series, function (seriesOpt) {\r\n if (!isObject(seriesOpt)) {\r\n return;\r\n }\r\n var seriesType = seriesOpt.type;\r\n if (seriesType === 'line') {\r\n if (seriesOpt.clipOverflow != null) {\r\n seriesOpt.clip = seriesOpt.clipOverflow;\r\n if (__DEV__) {\r\n deprecateReplaceLog('clipOverflow', 'clip', 'line');\r\n }\r\n }\r\n }\r\n else if (seriesType === 'pie' || seriesType === 'gauge') {\r\n if (seriesOpt.clockWise != null) {\r\n seriesOpt.clockwise = seriesOpt.clockWise;\r\n if (__DEV__) {\r\n deprecateReplaceLog('clockWise', 'clockwise');\r\n }\r\n }\r\n compatPieLabel(seriesOpt.label);\r\n var data = seriesOpt.data;\r\n if (data && !isTypedArray(data)) {\r\n for (var i = 0; i < data.length; i++) {\r\n compatPieLabel(data[i]);\r\n }\r\n }\r\n if (seriesOpt.hoverOffset != null) {\r\n seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n if (seriesOpt.emphasis.scaleSize = null) {\r\n if (__DEV__) {\r\n deprecateReplaceLog('hoverOffset', 'emphasis.scaleSize');\r\n }\r\n seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;\r\n }\r\n }\r\n }\r\n else if (seriesType === 'gauge') {\r\n var pointerColor = get(seriesOpt, 'pointer.color');\r\n pointerColor != null\r\n && set$1(seriesOpt, 'itemStyle.color', pointerColor);\r\n }\r\n else if (seriesType === 'bar') {\r\n compatBarItemStyle(seriesOpt);\r\n compatBarItemStyle(seriesOpt.backgroundStyle);\r\n compatBarItemStyle(seriesOpt.emphasis);\r\n var data = seriesOpt.data;\r\n if (data && !isTypedArray(data)) {\r\n for (var i = 0; i < data.length; i++) {\r\n if (typeof data[i] === 'object') {\r\n compatBarItemStyle(data[i]);\r\n compatBarItemStyle(data[i] && data[i].emphasis);\r\n }\r\n }\r\n }\r\n }\r\n else if (seriesType === 'sunburst') {\r\n var highlightPolicy = seriesOpt.highlightPolicy;\r\n if (highlightPolicy) {\r\n seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n if (!seriesOpt.emphasis.focus) {\r\n seriesOpt.emphasis.focus = highlightPolicy;\r\n if (__DEV__) {\r\n deprecateReplaceLog('highlightPolicy', 'emphasis.focus', 'sunburst');\r\n }\r\n }\r\n }\r\n compatSunburstState(seriesOpt);\r\n traverseTree(seriesOpt.data, compatSunburstState);\r\n }\r\n else if (seriesType === 'graph' || seriesType === 'sankey') {\r\n compatGraphFocus(seriesOpt);\r\n }\r\n else if (seriesType === 'map') {\r\n if (seriesOpt.mapType && !seriesOpt.map) {\r\n if (__DEV__) {\r\n deprecateReplaceLog('mapType', 'map', 'map');\r\n }\r\n seriesOpt.map = seriesOpt.mapType;\r\n }\r\n if (seriesOpt.mapLocation) {\r\n if (__DEV__) {\r\n deprecateLog('`mapLocation` is not used anymore.');\r\n }\r\n defaults(seriesOpt, seriesOpt.mapLocation);\r\n }\r\n }\r\n if (seriesOpt.hoverAnimation != null) {\r\n seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {\r\n if (__DEV__) {\r\n deprecateReplaceLog('hoverAnimation', 'emphasis.scale');\r\n }\r\n seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;\r\n }\r\n }\r\n compatLayoutProperties(seriesOpt);\r\n });\r\n if (option.dataRange) {\r\n option.visualMap = option.dataRange;\r\n }\r\n each(COMPATITABLE_COMPONENTS, function (componentName) {\r\n var options = option[componentName];\r\n if (options) {\r\n if (!isArray(options)) {\r\n options = [options];\r\n }\r\n each(options, function (option) {\r\n compatLayoutProperties(option);\r\n });\r\n }\r\n });\r\n}\n\nfunction dataStack(ecModel) {\r\n var stackInfoMap = createHashMap();\r\n ecModel.eachSeries(function (seriesModel) {\r\n var stack = seriesModel.get('stack');\r\n if (stack) {\r\n var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\r\n var data = seriesModel.getData();\r\n var stackInfo = {\r\n stackResultDimension: data.getCalculationInfo('stackResultDimension'),\r\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\r\n stackedDimension: data.getCalculationInfo('stackedDimension'),\r\n stackedByDimension: data.getCalculationInfo('stackedByDimension'),\r\n isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\r\n data: data,\r\n seriesModel: seriesModel\r\n };\r\n if (!stackInfo.stackedDimension\r\n || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\r\n return;\r\n }\r\n stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\r\n stackInfoList.push(stackInfo);\r\n }\r\n });\r\n stackInfoMap.each(calculateStack);\r\n}\r\nfunction calculateStack(stackInfoList) {\r\n each(stackInfoList, function (targetStackInfo, idxInStack) {\r\n var resultVal = [];\r\n var resultNaN = [NaN, NaN];\r\n var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\r\n var targetData = targetStackInfo.data;\r\n var isStackedByIndex = targetStackInfo.isStackedByIndex;\r\n var newData = targetData.map(dims, function (v0, v1, dataIndex) {\r\n var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex);\r\n if (isNaN(sum)) {\r\n return resultNaN;\r\n }\r\n var byValue;\r\n var stackedDataRawIndex;\r\n if (isStackedByIndex) {\r\n stackedDataRawIndex = targetData.getRawIndex(dataIndex);\r\n }\r\n else {\r\n byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\r\n }\r\n var stackedOver = NaN;\r\n for (var j = idxInStack - 1; j >= 0; j--) {\r\n var stackInfo = stackInfoList[j];\r\n if (!isStackedByIndex) {\r\n stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\r\n }\r\n if (stackedDataRawIndex >= 0) {\r\n var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex);\r\n if ((sum >= 0 && val > 0)\r\n || (sum <= 0 && val < 0)) {\r\n sum += val;\r\n stackedOver = val;\r\n break;\r\n }\r\n }\r\n }\r\n resultVal[0] = sum;\r\n resultVal[1] = stackedOver;\r\n return resultVal;\r\n });\r\n targetData.hostModel.setData(newData);\r\n targetStackInfo.data = newData;\r\n });\r\n}\n\nvar SourceImpl = (function () {\r\n function SourceImpl(fields) {\r\n this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\r\n this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\r\n this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\r\n this.startIndex = fields.startIndex || 0;\r\n this.dimensionsDefine = fields.dimensionsDefine;\r\n this.dimensionsDetectedCount = fields.dimensionsDetectedCount;\r\n this.encodeDefine = fields.encodeDefine;\r\n this.metaRawOption = fields.metaRawOption;\r\n }\r\n return SourceImpl;\r\n}());\r\nfunction isSourceInstance(val) {\r\n return val instanceof SourceImpl;\r\n}\r\nfunction createSource(sourceData, thisMetaRawOption, sourceFormat, encodeDefine) {\r\n sourceFormat = sourceFormat || detectSourceFormat(sourceData);\r\n var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy;\r\n var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions);\r\n var source = new SourceImpl({\r\n data: sourceData,\r\n sourceFormat: sourceFormat,\r\n seriesLayoutBy: seriesLayoutBy,\r\n dimensionsDefine: determined.dimensionsDefine,\r\n startIndex: determined.startIndex,\r\n dimensionsDetectedCount: determined.dimensionsDetectedCount,\r\n encodeDefine: makeEncodeDefine(encodeDefine),\r\n metaRawOption: clone(thisMetaRawOption)\r\n });\r\n return source;\r\n}\r\nfunction createSourceFromSeriesDataOption(data) {\r\n return new SourceImpl({\r\n data: data,\r\n sourceFormat: isTypedArray(data)\r\n ? SOURCE_FORMAT_TYPED_ARRAY\r\n : SOURCE_FORMAT_ORIGINAL\r\n });\r\n}\r\nfunction cloneSourceShallow(source) {\r\n return new SourceImpl({\r\n data: source.data,\r\n sourceFormat: source.sourceFormat,\r\n seriesLayoutBy: source.seriesLayoutBy,\r\n dimensionsDefine: clone(source.dimensionsDefine),\r\n startIndex: source.startIndex,\r\n dimensionsDetectedCount: source.dimensionsDetectedCount,\r\n encodeDefine: makeEncodeDefine(source.encodeDefine)\r\n });\r\n}\r\nfunction makeEncodeDefine(encodeDefine) {\r\n return encodeDefine\r\n ? createHashMap(encodeDefine)\r\n : null;\r\n}\r\nfunction detectSourceFormat(data) {\r\n var sourceFormat = SOURCE_FORMAT_UNKNOWN;\r\n if (isTypedArray(data)) {\r\n sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\r\n }\r\n else if (isArray(data)) {\r\n if (data.length === 0) {\r\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n }\r\n for (var i = 0, len = data.length; i < len; i++) {\r\n var item = data[i];\r\n if (item == null) {\r\n continue;\r\n }\r\n else if (isArray(item)) {\r\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n break;\r\n }\r\n else if (isObject(item)) {\r\n sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\r\n break;\r\n }\r\n }\r\n }\r\n else if (isObject(data)) {\r\n for (var key in data) {\r\n if (hasOwn(data, key) && isArrayLike(data[key])) {\r\n sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\r\n break;\r\n }\r\n }\r\n }\r\n else if (data != null) {\r\n throw new Error('Invalid data');\r\n }\r\n return sourceFormat;\r\n}\r\nfunction determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\r\n var dimensionsDetectedCount;\r\n var startIndex;\r\n if (!data) {\r\n return {\r\n dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n startIndex: startIndex,\r\n dimensionsDetectedCount: dimensionsDetectedCount\r\n };\r\n }\r\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n var dataArrayRows = data;\r\n if (sourceHeader === 'auto' || sourceHeader == null) {\r\n arrayRowsTravelFirst(function (val) {\r\n if (val != null && val !== '-') {\r\n if (isString(val)) {\r\n startIndex == null && (startIndex = 1);\r\n }\r\n else {\r\n startIndex = 0;\r\n }\r\n }\r\n }, seriesLayoutBy, dataArrayRows, 10);\r\n }\r\n else {\r\n startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0;\r\n }\r\n if (!dimensionsDefine && startIndex === 1) {\r\n dimensionsDefine = [];\r\n arrayRowsTravelFirst(function (val, index) {\r\n dimensionsDefine[index] = (val != null ? val + '' : '');\r\n }, seriesLayoutBy, dataArrayRows, Infinity);\r\n }\r\n dimensionsDetectedCount = dimensionsDefine\r\n ? dimensionsDefine.length\r\n : seriesLayoutBy === SERIES_LAYOUT_BY_ROW\r\n ? dataArrayRows.length\r\n : dataArrayRows[0]\r\n ? dataArrayRows[0].length\r\n : null;\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n if (!dimensionsDefine) {\r\n dimensionsDefine = objectRowsCollectDimensions(data);\r\n }\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n if (!dimensionsDefine) {\r\n dimensionsDefine = [];\r\n each(data, function (colArr, key) {\r\n dimensionsDefine.push(key);\r\n });\r\n }\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n var value0 = getDataItemValue(data[0]);\r\n dimensionsDetectedCount = isArray(value0) && value0.length || 1;\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n if (__DEV__) {\r\n assert(!!dimensionsDefine, 'dimensions must be given if data is TypedArray.');\r\n }\r\n }\r\n return {\r\n startIndex: startIndex,\r\n dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n dimensionsDetectedCount: dimensionsDetectedCount\r\n };\r\n}\r\nfunction objectRowsCollectDimensions(data) {\r\n var firstIndex = 0;\r\n var obj;\r\n while (firstIndex < data.length && !(obj = data[firstIndex++])) { }\r\n if (obj) {\r\n var dimensions_1 = [];\r\n each(obj, function (value, key) {\r\n dimensions_1.push(key);\r\n });\r\n return dimensions_1;\r\n }\r\n}\r\nfunction normalizeDimensionsOption(dimensionsDefine) {\r\n if (!dimensionsDefine) {\r\n return;\r\n }\r\n var nameMap = createHashMap();\r\n return map(dimensionsDefine, function (rawItem, index) {\r\n rawItem = isObject(rawItem) ? rawItem : { name: rawItem };\r\n var item = {\r\n name: rawItem.name,\r\n displayName: rawItem.displayName,\r\n type: rawItem.type\r\n };\r\n if (name == null) {\r\n return item;\r\n }\r\n item.name += '';\r\n if (item.displayName == null) {\r\n item.displayName = item.name;\r\n }\r\n var exist = nameMap.get(item.name);\r\n if (!exist) {\r\n nameMap.set(item.name, { count: 1 });\r\n }\r\n else {\r\n item.name += '-' + exist.count++;\r\n }\r\n return item;\r\n });\r\n}\r\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\r\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n for (var i = 0; i < data.length && i < maxLoop; i++) {\r\n cb(data[i] ? data[i][0] : null, i);\r\n }\r\n }\r\n else {\r\n var value0 = data[0] || [];\r\n for (var i = 0; i < value0.length && i < maxLoop; i++) {\r\n cb(value0[i], i);\r\n }\r\n }\r\n}\n\nvar _a, _b, _c;\r\nvar providerMethods;\r\nvar mountMethods;\r\nvar DefaultDataProvider = (function () {\r\n function DefaultDataProvider(sourceParam, dimSize) {\r\n var source = !isSourceInstance(sourceParam)\r\n ? createSourceFromSeriesDataOption(sourceParam)\r\n : sourceParam;\r\n this._source = source;\r\n var data = this._data = source.data;\r\n if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n if (__DEV__) {\r\n if (dimSize == null) {\r\n throw new Error('Typed array data must specify dimension size');\r\n }\r\n }\r\n this._offset = 0;\r\n this._dimSize = dimSize;\r\n this._data = data;\r\n }\r\n mountMethods(this, data, source);\r\n }\r\n DefaultDataProvider.prototype.getSource = function () {\r\n return this._source;\r\n };\r\n DefaultDataProvider.prototype.count = function () {\r\n return 0;\r\n };\r\n DefaultDataProvider.prototype.getItem = function (idx, out) {\r\n return;\r\n };\r\n DefaultDataProvider.prototype.appendData = function (newData) {\r\n };\r\n DefaultDataProvider.prototype.clean = function () {\r\n };\r\n DefaultDataProvider.protoInitialize = (function () {\r\n var proto = DefaultDataProvider.prototype;\r\n proto.pure = false;\r\n proto.persistent = true;\r\n })();\r\n DefaultDataProvider.internalField = (function () {\r\n var _a;\r\n mountMethods = function (provider, data, source) {\r\n var sourceFormat = source.sourceFormat;\r\n var seriesLayoutBy = source.seriesLayoutBy;\r\n var startIndex = source.startIndex;\r\n var dimsDef = source.dimensionsDefine;\r\n var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n if (__DEV__) {\r\n assert(methods, 'Invalide sourceFormat: ' + sourceFormat);\r\n }\r\n extend(provider, methods);\r\n if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n provider.getItem = getItemForTypedArray;\r\n provider.count = countForTypedArray;\r\n provider.fillStorage = fillStorageForTypedArray;\r\n }\r\n else {\r\n var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);\r\n provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef);\r\n var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);\r\n provider.count = bind(rawCounter, null, data, startIndex, dimsDef);\r\n }\r\n };\r\n var getItemForTypedArray = function (idx, out) {\r\n idx = idx - this._offset;\r\n out = out || [];\r\n var data = this._data;\r\n var dimSize = this._dimSize;\r\n var offset = dimSize * idx;\r\n for (var i = 0; i < dimSize; i++) {\r\n out[i] = data[offset + i];\r\n }\r\n return out;\r\n };\r\n var fillStorageForTypedArray = function (start, end, storage, extent) {\r\n var data = this._data;\r\n var dimSize = this._dimSize;\r\n for (var dim = 0; dim < dimSize; dim++) {\r\n var dimExtent = extent[dim];\r\n var min = dimExtent[0] == null ? Infinity : dimExtent[0];\r\n var max = dimExtent[1] == null ? -Infinity : dimExtent[1];\r\n var count = end - start;\r\n var arr = storage[dim];\r\n for (var i = 0; i < count; i++) {\r\n var val = data[(start + i) * dimSize + dim];\r\n arr[start + i] = val;\r\n val < min && (min = val);\r\n val > max && (max = val);\r\n }\r\n dimExtent[0] = min;\r\n dimExtent[1] = max;\r\n }\r\n };\r\n var countForTypedArray = function () {\r\n return this._data ? (this._data.length / this._dimSize) : 0;\r\n };\r\n providerMethods = (_a = {},\r\n _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = {\r\n pure: true,\r\n appendData: appendDataSimply\r\n },\r\n _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = {\r\n pure: true,\r\n appendData: function () {\r\n throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\r\n }\r\n },\r\n _a[SOURCE_FORMAT_OBJECT_ROWS] = {\r\n pure: true,\r\n appendData: appendDataSimply\r\n },\r\n _a[SOURCE_FORMAT_KEYED_COLUMNS] = {\r\n pure: true,\r\n appendData: function (newData) {\r\n var data = this._data;\r\n each(newData, function (newCol, key) {\r\n var oldCol = data[key] || (data[key] = []);\r\n for (var i = 0; i < (newCol || []).length; i++) {\r\n oldCol.push(newCol[i]);\r\n }\r\n });\r\n }\r\n },\r\n _a[SOURCE_FORMAT_ORIGINAL] = {\r\n appendData: appendDataSimply\r\n },\r\n _a[SOURCE_FORMAT_TYPED_ARRAY] = {\r\n persistent: false,\r\n pure: true,\r\n appendData: function (newData) {\r\n if (__DEV__) {\r\n assert(isTypedArray(newData), 'Added data must be TypedArray if data in initialization is TypedArray');\r\n }\r\n this._data = newData;\r\n },\r\n clean: function () {\r\n this._offset += this.count();\r\n this._data = null;\r\n }\r\n },\r\n _a);\r\n function appendDataSimply(newData) {\r\n for (var i = 0; i < newData.length; i++) {\r\n this._data.push(newData[i]);\r\n }\r\n }\r\n })();\r\n return DefaultDataProvider;\r\n}());\r\nvar getItemSimply = function (rawData, startIndex, dimsDef, idx) {\r\n return rawData[idx];\r\n};\r\nvar rawSourceItemGetterMap = (_a = {},\r\n _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef, idx) {\r\n return rawData[idx + startIndex];\r\n },\r\n _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef, idx) {\r\n idx += startIndex;\r\n var item = [];\r\n var data = rawData;\r\n for (var i = 0; i < data.length; i++) {\r\n var row = data[i];\r\n item.push(row ? row[idx] : null);\r\n }\r\n return item;\r\n },\r\n _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply,\r\n _a[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef, idx) {\r\n var item = [];\r\n for (var i = 0; i < dimsDef.length; i++) {\r\n var dimName = dimsDef[i].name;\r\n if (__DEV__) {\r\n if (dimName == null) {\r\n throw new Error();\r\n }\r\n }\r\n var col = rawData[dimName];\r\n item.push(col ? col[idx] : null);\r\n }\r\n return item;\r\n },\r\n _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply,\r\n _a);\r\nfunction getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {\r\n var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n if (__DEV__) {\r\n assert(method, 'Do not suppport get item on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n }\r\n return method;\r\n}\r\nvar countSimply = function (rawData, startIndex, dimsDef) {\r\n return rawData.length;\r\n};\r\nvar rawSourceDataCounterMap = (_b = {},\r\n _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef) {\r\n return Math.max(0, rawData.length - startIndex);\r\n },\r\n _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef) {\r\n var row = rawData[0];\r\n return row ? Math.max(0, row.length - startIndex) : 0;\r\n },\r\n _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply,\r\n _b[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef) {\r\n var dimName = dimsDef[0].name;\r\n if (__DEV__) {\r\n if (dimName == null) {\r\n throw new Error();\r\n }\r\n }\r\n var col = rawData[dimName];\r\n return col ? col.length : 0;\r\n },\r\n _b[SOURCE_FORMAT_ORIGINAL] = countSimply,\r\n _b);\r\nfunction getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {\r\n var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n if (__DEV__) {\r\n assert(method, 'Do not suppport count on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n }\r\n return method;\r\n}\r\nvar getRawValueSimply = function (dataItem, dimIndex, dimName) {\r\n return dimIndex != null ? dataItem[dimIndex] : dataItem;\r\n};\r\nvar rawSourceValueGetterMap = (_c = {},\r\n _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply,\r\n _c[SOURCE_FORMAT_OBJECT_ROWS] = function (dataItem, dimIndex, dimName) {\r\n return dimIndex != null ? dataItem[dimName] : dataItem;\r\n },\r\n _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply,\r\n _c[SOURCE_FORMAT_ORIGINAL] = function (dataItem, dimIndex, dimName) {\r\n var value = getDataItemValue(dataItem);\r\n return (dimIndex == null || !(value instanceof Array))\r\n ? value\r\n : value[dimIndex];\r\n },\r\n _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply,\r\n _c);\r\nfunction getRawSourceValueGetter(sourceFormat) {\r\n var method = rawSourceValueGetterMap[sourceFormat];\r\n if (__DEV__) {\r\n assert(method, 'Do not suppport get value on \"' + sourceFormat + '\".');\r\n }\r\n return method;\r\n}\r\nfunction getMethodMapKey(sourceFormat, seriesLayoutBy) {\r\n return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n ? sourceFormat + '_' + seriesLayoutBy\r\n : sourceFormat;\r\n}\r\nfunction retrieveRawValue(data, dataIndex, dim) {\r\n if (!data) {\r\n return;\r\n }\r\n var dataItem = data.getRawDataItem(dataIndex);\r\n if (dataItem == null) {\r\n return;\r\n }\r\n var sourceFormat = data.getProvider().getSource().sourceFormat;\r\n var dimName;\r\n var dimIndex;\r\n var dimInfo = data.getDimensionInfo(dim);\r\n if (dimInfo) {\r\n dimName = dimInfo.name;\r\n dimIndex = dimInfo.index;\r\n }\r\n return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, dimName);\r\n}\n\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g;\r\nvar DataFormatMixin = (function () {\r\n function DataFormatMixin() {\r\n }\r\n DataFormatMixin.prototype.getDataParams = function (dataIndex, dataType) {\r\n var data = this.getData(dataType);\r\n var rawValue = this.getRawValue(dataIndex, dataType);\r\n var rawDataIndex = data.getRawIndex(dataIndex);\r\n var name = data.getName(dataIndex);\r\n var itemOpt = data.getRawDataItem(dataIndex);\r\n var style = data.getItemVisual(dataIndex, 'style');\r\n var color = style && style[data.getItemVisual(dataIndex, 'drawType') || 'fill'];\r\n var borderColor = style && style.stroke;\r\n var mainType = this.mainType;\r\n var isSeries = mainType === 'series';\r\n var userOutput = data.userOutput;\r\n return {\r\n componentType: mainType,\r\n componentSubType: this.subType,\r\n componentIndex: this.componentIndex,\r\n seriesType: isSeries ? this.subType : null,\r\n seriesIndex: this.seriesIndex,\r\n seriesId: isSeries ? this.id : null,\r\n seriesName: isSeries ? this.name : null,\r\n name: name,\r\n dataIndex: rawDataIndex,\r\n data: itemOpt,\r\n dataType: dataType,\r\n value: rawValue,\r\n color: color,\r\n borderColor: borderColor,\r\n dimensionNames: userOutput ? userOutput.dimensionNames : null,\r\n encode: userOutput ? userOutput.encode : null,\r\n $vars: ['seriesName', 'name', 'value']\r\n };\r\n };\r\n DataFormatMixin.prototype.getFormattedLabel = function (dataIndex, status, dataType, labelDimIndex, formatter, extendParams) {\r\n status = status || 'normal';\r\n var data = this.getData(dataType);\r\n var params = this.getDataParams(dataIndex, dataType);\r\n if (extendParams) {\r\n extend(params, extendParams);\r\n }\r\n if (labelDimIndex != null && (params.value instanceof Array)) {\r\n params.value = params.value[labelDimIndex];\r\n }\r\n if (!formatter) {\r\n var itemModel = data.getItemModel(dataIndex);\r\n formatter = itemModel.get(status === 'normal'\r\n ? ['label', 'formatter']\r\n : [status, 'label', 'formatter']);\r\n }\r\n if (typeof formatter === 'function') {\r\n params.status = status;\r\n params.dimensionIndex = labelDimIndex;\r\n return formatter(params);\r\n }\r\n else if (typeof formatter === 'string') {\r\n var str = formatTpl(formatter, params);\r\n return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\r\n var len = dim.length;\r\n if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\r\n dim = +dim.slice(1, len - 1);\r\n }\r\n return retrieveRawValue(data, dataIndex, dim);\r\n });\r\n }\r\n };\r\n DataFormatMixin.prototype.getRawValue = function (idx, dataType) {\r\n return retrieveRawValue(this.getData(dataType), idx);\r\n };\r\n DataFormatMixin.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n return;\r\n };\r\n return DataFormatMixin;\r\n}());\r\nfunction normalizeTooltipFormatResult(result) {\r\n var markupText;\r\n var markupFragment;\r\n if (isObject(result)) {\r\n if (result.type) {\r\n markupFragment = result;\r\n }\r\n else {\r\n if (__DEV__) {\r\n console.warn('The return type of `formatTooltip` is not supported: ' + makePrintable(result));\r\n }\r\n }\r\n }\r\n else {\r\n markupText = result;\r\n }\r\n return {\r\n markupText: markupText,\r\n markupFragment: markupFragment\r\n };\r\n}\n\nfunction createTask(define) {\r\n return new Task(define);\r\n}\r\nvar Task = (function () {\r\n function Task(define) {\r\n define = define || {};\r\n this._reset = define.reset;\r\n this._plan = define.plan;\r\n this._count = define.count;\r\n this._onDirty = define.onDirty;\r\n this._dirty = true;\r\n }\r\n Task.prototype.perform = function (performArgs) {\r\n var upTask = this._upstream;\r\n var skip = performArgs && performArgs.skip;\r\n if (this._dirty && upTask) {\r\n var context = this.context;\r\n context.data = context.outputData = upTask.context.outputData;\r\n }\r\n if (this.__pipeline) {\r\n this.__pipeline.currentTask = this;\r\n }\r\n var planResult;\r\n if (this._plan && !skip) {\r\n planResult = this._plan(this.context);\r\n }\r\n var lastModBy = normalizeModBy(this._modBy);\r\n var lastModDataCount = this._modDataCount || 0;\r\n var modBy = normalizeModBy(performArgs && performArgs.modBy);\r\n var modDataCount = performArgs && performArgs.modDataCount || 0;\r\n if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\r\n planResult = 'reset';\r\n }\r\n function normalizeModBy(val) {\r\n !(val >= 1) && (val = 1);\r\n return val;\r\n }\r\n var forceFirstProgress;\r\n if (this._dirty || planResult === 'reset') {\r\n this._dirty = false;\r\n forceFirstProgress = this._doReset(skip);\r\n }\r\n this._modBy = modBy;\r\n this._modDataCount = modDataCount;\r\n var step = performArgs && performArgs.step;\r\n if (upTask) {\r\n if (__DEV__) {\r\n assert(upTask._outputDueEnd != null);\r\n }\r\n this._dueEnd = upTask._outputDueEnd;\r\n }\r\n else {\r\n if (__DEV__) {\r\n assert(!this._progress || this._count);\r\n }\r\n this._dueEnd = this._count ? this._count(this.context) : Infinity;\r\n }\r\n if (this._progress) {\r\n var start = this._dueIndex;\r\n var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\r\n if (!skip && (forceFirstProgress || start < end)) {\r\n var progress = this._progress;\r\n if (isArray(progress)) {\r\n for (var i = 0; i < progress.length; i++) {\r\n this._doProgress(progress[i], start, end, modBy, modDataCount);\r\n }\r\n }\r\n else {\r\n this._doProgress(progress, start, end, modBy, modDataCount);\r\n }\r\n }\r\n this._dueIndex = end;\r\n var outputDueEnd = this._settedOutputEnd != null\r\n ? this._settedOutputEnd : end;\r\n if (__DEV__) {\r\n assert(outputDueEnd >= this._outputDueEnd);\r\n }\r\n this._outputDueEnd = outputDueEnd;\r\n }\r\n else {\r\n this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null\r\n ? this._settedOutputEnd : this._dueEnd;\r\n }\r\n return this.unfinished();\r\n };\r\n Task.prototype.dirty = function () {\r\n this._dirty = true;\r\n this._onDirty && this._onDirty(this.context);\r\n };\r\n Task.prototype._doProgress = function (progress, start, end, modBy, modDataCount) {\r\n iterator.reset(start, end, modBy, modDataCount);\r\n this._callingProgress = progress;\r\n this._callingProgress({\r\n start: start, end: end, count: end - start, next: iterator.next\r\n }, this.context);\r\n };\r\n Task.prototype._doReset = function (skip) {\r\n this._dueIndex = this._outputDueEnd = this._dueEnd = 0;\r\n this._settedOutputEnd = null;\r\n var progress;\r\n var forceFirstProgress;\r\n if (!skip && this._reset) {\r\n progress = this._reset(this.context);\r\n if (progress && progress.progress) {\r\n forceFirstProgress = progress.forceFirstProgress;\r\n progress = progress.progress;\r\n }\r\n if (isArray(progress) && !progress.length) {\r\n progress = null;\r\n }\r\n }\r\n this._progress = progress;\r\n this._modBy = this._modDataCount = null;\r\n var downstream = this._downstream;\r\n downstream && downstream.dirty();\r\n return forceFirstProgress;\r\n };\r\n Task.prototype.unfinished = function () {\r\n return this._progress && this._dueIndex < this._dueEnd;\r\n };\r\n Task.prototype.pipe = function (downTask) {\r\n if (__DEV__) {\r\n assert(downTask && !downTask._disposed && downTask !== this);\r\n }\r\n if (this._downstream !== downTask || this._dirty) {\r\n this._downstream = downTask;\r\n downTask._upstream = this;\r\n downTask.dirty();\r\n }\r\n };\r\n Task.prototype.dispose = function () {\r\n if (this._disposed) {\r\n return;\r\n }\r\n this._upstream && (this._upstream._downstream = null);\r\n this._downstream && (this._downstream._upstream = null);\r\n this._dirty = false;\r\n this._disposed = true;\r\n };\r\n Task.prototype.getUpstream = function () {\r\n return this._upstream;\r\n };\r\n Task.prototype.getDownstream = function () {\r\n return this._downstream;\r\n };\r\n Task.prototype.setOutputEnd = function (end) {\r\n this._outputDueEnd = this._settedOutputEnd = end;\r\n };\r\n return Task;\r\n}());\r\nvar iterator = (function () {\r\n var end;\r\n var current;\r\n var modBy;\r\n var modDataCount;\r\n var winCount;\r\n var it = {\r\n reset: function (s, e, sStep, sCount) {\r\n current = s;\r\n end = e;\r\n modBy = sStep;\r\n modDataCount = sCount;\r\n winCount = Math.ceil(modDataCount / modBy);\r\n it.next = (modBy > 1 && modDataCount > 0) ? modNext : sequentialNext;\r\n }\r\n };\r\n return it;\r\n function sequentialNext() {\r\n return current < end ? current++ : null;\r\n }\r\n function modNext() {\r\n var dataIndex = (current % winCount) * modBy + Math.ceil(current / winCount);\r\n var result = current >= end\r\n ? null\r\n : dataIndex < modDataCount\r\n ? dataIndex\r\n : current;\r\n current++;\r\n return result;\r\n }\r\n})();\n\nfunction parseDataValue(value, opt) {\r\n var dimType = opt && opt.type;\r\n if (dimType === 'ordinal') {\r\n var ordinalMeta = opt && opt.ordinalMeta;\r\n return ordinalMeta\r\n ? ordinalMeta.parseAndCollect(value)\r\n : value;\r\n }\r\n if (dimType === 'time'\r\n && typeof value !== 'number'\r\n && value != null\r\n && value !== '-') {\r\n value = +parseDate(value);\r\n }\r\n return (value == null || value === '')\r\n ? NaN\r\n : +value;\r\n}\r\nvar valueParserMap = createHashMap({\r\n 'number': function (val) {\r\n return parseFloat(val);\r\n },\r\n 'time': function (val) {\r\n return +parseDate(val);\r\n },\r\n 'trim': function (val) {\r\n return typeof val === 'string' ? trim(val) : val;\r\n }\r\n});\r\nfunction getRawValueParser(type) {\r\n return valueParserMap.get(type);\r\n}\r\nvar ORDER_COMPARISON_OP_MAP = {\r\n lt: function (lval, rval) { return lval < rval; },\r\n lte: function (lval, rval) { return lval <= rval; },\r\n gt: function (lval, rval) { return lval > rval; },\r\n gte: function (lval, rval) { return lval >= rval; }\r\n};\r\nvar FilterOrderComparator = (function () {\r\n function FilterOrderComparator(op, rval) {\r\n if (typeof rval !== 'number') {\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = 'rvalue of \"<\", \">\", \"<=\", \">=\" can only be number in filter.';\r\n }\r\n throwError(errMsg);\r\n }\r\n this._opFn = ORDER_COMPARISON_OP_MAP[op];\r\n this._rvalFloat = numericToNumber(rval);\r\n }\r\n FilterOrderComparator.prototype.evaluate = function (lval) {\r\n return typeof lval === 'number'\r\n ? this._opFn(lval, this._rvalFloat)\r\n : this._opFn(numericToNumber(lval), this._rvalFloat);\r\n };\r\n return FilterOrderComparator;\r\n}());\r\nvar SortOrderComparator = (function () {\r\n function SortOrderComparator(order, incomparable) {\r\n var isDesc = order === 'desc';\r\n this._resultLT = isDesc ? 1 : -1;\r\n if (incomparable == null) {\r\n incomparable = isDesc ? 'min' : 'max';\r\n }\r\n this._incomparable = incomparable === 'min' ? -Infinity : Infinity;\r\n }\r\n SortOrderComparator.prototype.evaluate = function (lval, rval) {\r\n var lvalTypeof = typeof lval;\r\n var rvalTypeof = typeof rval;\r\n var lvalFloat = lvalTypeof === 'number' ? lval : numericToNumber(lval);\r\n var rvalFloat = rvalTypeof === 'number' ? rval : numericToNumber(rval);\r\n var lvalNotNumeric = isNaN(lvalFloat);\r\n var rvalNotNumeric = isNaN(rvalFloat);\r\n if (lvalNotNumeric) {\r\n lvalFloat = this._incomparable;\r\n }\r\n if (rvalNotNumeric) {\r\n rvalFloat = this._incomparable;\r\n }\r\n if (lvalNotNumeric && rvalNotNumeric) {\r\n var lvalIsStr = lvalTypeof === 'string';\r\n var rvalIsStr = rvalTypeof === 'string';\r\n if (lvalIsStr) {\r\n lvalFloat = rvalIsStr ? lval : 0;\r\n }\r\n if (rvalIsStr) {\r\n rvalFloat = lvalIsStr ? rval : 0;\r\n }\r\n }\r\n return lvalFloat < rvalFloat ? this._resultLT\r\n : lvalFloat > rvalFloat ? -this._resultLT\r\n : 0;\r\n };\r\n return SortOrderComparator;\r\n}());\r\nvar FilterEqualityComparator = (function () {\r\n function FilterEqualityComparator(isEq, rval) {\r\n this._rval = rval;\r\n this._isEQ = isEq;\r\n this._rvalTypeof = typeof rval;\r\n this._rvalFloat = numericToNumber(rval);\r\n }\r\n FilterEqualityComparator.prototype.evaluate = function (lval) {\r\n var eqResult = lval === this._rval;\r\n if (!eqResult) {\r\n var lvalTypeof = typeof lval;\r\n if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === 'number' || this._rvalTypeof === 'number')) {\r\n eqResult = numericToNumber(lval) === this._rvalFloat;\r\n }\r\n }\r\n return this._isEQ ? eqResult : !eqResult;\r\n };\r\n return FilterEqualityComparator;\r\n}());\r\nfunction createFilterComparator(op, rval) {\r\n return (op === 'eq' || op === 'ne')\r\n ? new FilterEqualityComparator(op === 'eq', rval)\r\n : hasOwn(ORDER_COMPARISON_OP_MAP, op)\r\n ? new FilterOrderComparator(op, rval)\r\n : null;\r\n}\n\nvar ExternalSource = (function () {\r\n function ExternalSource() {\r\n }\r\n ExternalSource.prototype.getRawData = function () {\r\n throw new Error('not supported');\r\n };\r\n ExternalSource.prototype.getRawDataItem = function (dataIndex) {\r\n throw new Error('not supported');\r\n };\r\n ExternalSource.prototype.cloneRawData = function () {\r\n return;\r\n };\r\n ExternalSource.prototype.getDimensionInfo = function (dim) {\r\n return;\r\n };\r\n ExternalSource.prototype.cloneAllDimensionInfo = function () {\r\n return;\r\n };\r\n ExternalSource.prototype.count = function () {\r\n return;\r\n };\r\n ExternalSource.prototype.retrieveValue = function (dataIndex, dimIndex) {\r\n return;\r\n };\r\n ExternalSource.prototype.retrieveValueFromItem = function (dataItem, dimIndex) {\r\n return;\r\n };\r\n ExternalSource.prototype.convertValue = function (rawVal, dimInfo) {\r\n return parseDataValue(rawVal, dimInfo);\r\n };\r\n return ExternalSource;\r\n}());\r\nfunction createExternalSource(internalSource, externalTransform) {\r\n var extSource = new ExternalSource();\r\n var data = internalSource.data;\r\n var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat;\r\n var sourceHeaderCount = internalSource.startIndex;\r\n var dimensions = [];\r\n var dimsByName = {};\r\n var dimsDef = internalSource.dimensionsDefine;\r\n if (dimsDef) {\r\n each(dimsDef, function (dimDef, idx) {\r\n var name = dimDef.name;\r\n var dimDefExt = {\r\n index: idx,\r\n name: name,\r\n displayName: dimDef.displayName\r\n };\r\n dimensions.push(dimDefExt);\r\n if (name != null) {\r\n var errMsg = '';\r\n if (hasOwn(dimsByName, name)) {\r\n if (__DEV__) {\r\n errMsg = 'dimension name \"' + name + '\" duplicated.';\r\n }\r\n throwError(errMsg);\r\n }\r\n dimsByName[name] = dimDefExt;\r\n }\r\n });\r\n }\r\n else {\r\n for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) {\r\n dimensions.push({ index: i });\r\n }\r\n }\r\n var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n if (externalTransform.__isBuiltIn) {\r\n extSource.getRawDataItem = function (dataIndex) {\r\n return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\r\n };\r\n extSource.getRawData = bind(getRawData, null, internalSource);\r\n }\r\n extSource.cloneRawData = bind(cloneRawData, null, internalSource);\r\n var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions);\r\n var rawValueGetter = getRawSourceValueGetter(sourceFormat);\r\n extSource.retrieveValue = function (dataIndex, dimIndex) {\r\n var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\r\n return retrieveValueFromItem(rawItem, dimIndex);\r\n };\r\n var retrieveValueFromItem = extSource.retrieveValueFromItem = function (dataItem, dimIndex) {\r\n if (dataItem == null) {\r\n return;\r\n }\r\n var dimDef = dimensions[dimIndex];\r\n if (dimDef) {\r\n return rawValueGetter(dataItem, dimIndex, dimDef.name);\r\n }\r\n };\r\n extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName);\r\n extSource.cloneAllDimensionInfo = bind(cloneAllDimensionInfo, null, dimensions);\r\n return extSource;\r\n}\r\nfunction getRawData(upstream) {\r\n var sourceFormat = upstream.sourceFormat;\r\n var data = upstream.data;\r\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS\r\n || !data\r\n || (isArray(data) && !data.length)) {\r\n return upstream.data;\r\n }\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = '`getRawData` is not supported in source format ' + sourceFormat;\r\n }\r\n throwError(errMsg);\r\n}\r\nfunction cloneRawData(upstream) {\r\n var sourceFormat = upstream.sourceFormat;\r\n var data = upstream.data;\r\n if (!data) {\r\n return data;\r\n }\r\n else if (isArray(data) && !data.length) {\r\n return [];\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n var result = [];\r\n for (var i = 0, len = data.length; i < len; i++) {\r\n result.push(data[i].slice());\r\n }\r\n return result;\r\n }\r\n else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n var result = [];\r\n for (var i = 0, len = data.length; i < len; i++) {\r\n result.push(extend({}, data[i]));\r\n }\r\n return result;\r\n }\r\n}\r\nfunction getDimensionInfo(dimensions, dimsByName, dim) {\r\n if (dim == null) {\r\n return;\r\n }\r\n if (typeof dim === 'number'\r\n || (!isNaN(dim) && !hasOwn(dimsByName, dim))) {\r\n return dimensions[dim];\r\n }\r\n else if (hasOwn(dimsByName, dim)) {\r\n return dimsByName[dim];\r\n }\r\n}\r\nfunction cloneAllDimensionInfo(dimensions) {\r\n return clone(dimensions);\r\n}\r\nvar externalTransformMap = createHashMap();\r\nfunction registerExternalTransform(externalTransform) {\r\n externalTransform = clone(externalTransform);\r\n var type = externalTransform.type;\r\n var errMsg = '';\r\n if (!type) {\r\n if (__DEV__) {\r\n errMsg = 'Must have a `type` when `registerTransform`.';\r\n }\r\n throwError(errMsg);\r\n }\r\n var typeParsed = type.split(':');\r\n if (typeParsed.length !== 2) {\r\n if (__DEV__) {\r\n errMsg = 'Name must include namespace like \"ns:regression\".';\r\n }\r\n throwError(errMsg);\r\n }\r\n var isBuiltIn = false;\r\n if (typeParsed[0] === 'echarts') {\r\n type = typeParsed[1];\r\n isBuiltIn = true;\r\n }\r\n externalTransform.__isBuiltIn = isBuiltIn;\r\n externalTransformMap.set(type, externalTransform);\r\n}\r\nfunction applyDataTransform(rawTransOption, sourceList, infoForPrint) {\r\n var pipedTransOption = normalizeToArray(rawTransOption);\r\n var pipeLen = pipedTransOption.length;\r\n var errMsg = '';\r\n if (!pipeLen) {\r\n if (__DEV__) {\r\n errMsg = 'If `transform` declared, it should at least contain one transform.';\r\n }\r\n throwError(errMsg);\r\n }\r\n for (var i = 0, len = pipeLen; i < len; i++) {\r\n var transOption = pipedTransOption[i];\r\n sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i);\r\n if (i !== len - 1) {\r\n sourceList.length = Math.max(sourceList.length, 1);\r\n }\r\n }\r\n return sourceList;\r\n}\r\nfunction applySingleDataTransform(transOption, upSourceList, infoForPrint, pipeIndex) {\r\n var errMsg = '';\r\n if (!upSourceList.length) {\r\n if (__DEV__) {\r\n errMsg = 'Must have at least one upstream dataset.';\r\n }\r\n throwError(errMsg);\r\n }\r\n if (!isObject(transOption)) {\r\n if (__DEV__) {\r\n errMsg = 'transform declaration must be an object rather than ' + typeof transOption + '.';\r\n }\r\n throwError(errMsg);\r\n }\r\n var transType = transOption.type;\r\n var externalTransform = externalTransformMap.get(transType);\r\n if (!externalTransform) {\r\n if (__DEV__) {\r\n errMsg = 'Can not find transform on type \"' + transType + '\".';\r\n }\r\n throwError(errMsg);\r\n }\r\n var extUpSourceList = map(upSourceList, function (upSource) { return createExternalSource(upSource, externalTransform); });\r\n var resultList = normalizeToArray(externalTransform.transform({\r\n upstream: extUpSourceList[0],\r\n upstreamList: extUpSourceList,\r\n config: clone(transOption.config)\r\n }));\r\n if (__DEV__) {\r\n if (transOption.print) {\r\n var printStrArr = map(resultList, function (extSource) {\r\n var pipeIndexStr = pipeIndex != null ? ' === pipe index: ' + pipeIndex : '';\r\n return [\r\n '=== dataset index: ' + infoForPrint.datasetIndex + pipeIndexStr + ' ===',\r\n '- transform result data:',\r\n makePrintable(extSource.data),\r\n '- transform result dimensions:',\r\n makePrintable(extSource.dimensions)\r\n ].join('\\n');\r\n }).join('\\n');\r\n consoleLog(printStrArr);\r\n }\r\n }\r\n return map(resultList, function (result) {\r\n var errMsg = '';\r\n if (!isObject(result)) {\r\n if (__DEV__) {\r\n errMsg = 'A transform should not return some empty results.';\r\n }\r\n throwError(errMsg);\r\n }\r\n var resultData = result.data;\r\n if (resultData != null) {\r\n if (!isObject(resultData) && !isArrayLike(resultData)) {\r\n if (__DEV__) {\r\n errMsg = 'Result data should be object or array in data transform.';\r\n }\r\n throwError(errMsg);\r\n }\r\n }\r\n else {\r\n resultData = upSourceList[0].data;\r\n }\r\n var resultMetaRawOption = inheritSourceMetaRawOption(upSourceList[0], {\r\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\r\n sourceHeader: 0,\r\n dimensions: result.dimensions\r\n });\r\n return createSource(resultData, resultMetaRawOption, null, null);\r\n });\r\n}\n\nvar SourceManager = (function () {\r\n function SourceManager(sourceHost) {\r\n this._sourceList = [];\r\n this._upstreamSignList = [];\r\n this._versionSignBase = 0;\r\n this._sourceHost = sourceHost;\r\n }\r\n SourceManager.prototype.dirty = function () {\r\n this._setLocalSource([], []);\r\n };\r\n SourceManager.prototype._setLocalSource = function (sourceList, upstreamSignList) {\r\n this._sourceList = sourceList;\r\n this._upstreamSignList = upstreamSignList;\r\n this._versionSignBase++;\r\n if (this._versionSignBase > 9e10) {\r\n this._versionSignBase = 0;\r\n }\r\n };\r\n SourceManager.prototype._getVersionSign = function () {\r\n return this._sourceHost.uid + '_' + this._versionSignBase;\r\n };\r\n SourceManager.prototype.prepareSource = function () {\r\n if (this._isDirty()) {\r\n this._createSource();\r\n }\r\n };\r\n SourceManager.prototype._createSource = function () {\r\n this._setLocalSource([], []);\r\n var sourceHost = this._sourceHost;\r\n var upSourceMgrList = this._getUpstreamSourceManagers();\r\n var hasUpstream = !!upSourceMgrList.length;\r\n var resultSourceList;\r\n var upstreamSignList;\r\n if (isSeries(sourceHost)) {\r\n var seriesModel = sourceHost;\r\n var data = void 0;\r\n var sourceFormat = void 0;\r\n var upSource = void 0;\r\n if (hasUpstream) {\r\n var upSourceMgr = upSourceMgrList[0];\r\n upSourceMgr.prepareSource();\r\n upSource = upSourceMgr.getSource();\r\n data = upSource.data;\r\n sourceFormat = upSource.sourceFormat;\r\n upstreamSignList = [upSourceMgr._getVersionSign()];\r\n }\r\n else {\r\n data = seriesModel.get('data', true);\r\n sourceFormat = isTypedArray(data)\r\n ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\r\n upstreamSignList = [];\r\n }\r\n var thisMetaRawOption = inheritSourceMetaRawOption(upSource, this._getSourceMetaRawOption());\r\n resultSourceList = [createSource(data, thisMetaRawOption, sourceFormat, seriesModel.get('encode', true))];\r\n }\r\n else {\r\n var datasetModel = sourceHost;\r\n if (hasUpstream) {\r\n var result = this._applyTransform(upSourceMgrList);\r\n resultSourceList = result.sourceList;\r\n upstreamSignList = result.upstreamSignList;\r\n }\r\n else {\r\n var sourceData = datasetModel.get('source', true);\r\n resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null, null)];\r\n upstreamSignList = [];\r\n }\r\n }\r\n if (__DEV__) {\r\n assert(resultSourceList && upstreamSignList);\r\n }\r\n this._setLocalSource(resultSourceList, upstreamSignList);\r\n };\r\n SourceManager.prototype._applyTransform = function (upMgrList) {\r\n var datasetModel = this._sourceHost;\r\n var transformOption = datasetModel.get('transform', true);\r\n var fromTransformResult = datasetModel.get('fromTransformResult', true);\r\n if (__DEV__) {\r\n assert(fromTransformResult != null || transformOption != null);\r\n }\r\n if (fromTransformResult != null) {\r\n var errMsg = '';\r\n if (upMgrList.length !== 1) {\r\n if (__DEV__) {\r\n errMsg = 'When using `fromTransformResult`, there should be only one upstream dataset';\r\n }\r\n doThrow(errMsg);\r\n }\r\n }\r\n var sourceList;\r\n var upSourceList = [];\r\n var upstreamSignList = [];\r\n each(upMgrList, function (upMgr) {\r\n upMgr.prepareSource();\r\n var upSource = upMgr.getSource(fromTransformResult || 0);\r\n var errMsg = '';\r\n if (fromTransformResult != null && !upSource) {\r\n if (__DEV__) {\r\n errMsg = 'Can not retrieve result by `fromTransformResult`: ' + fromTransformResult;\r\n }\r\n doThrow(errMsg);\r\n }\r\n upSourceList.push(upSource);\r\n upstreamSignList.push(upMgr._getVersionSign());\r\n });\r\n if (transformOption) {\r\n sourceList = applyDataTransform(transformOption, upSourceList, { datasetIndex: datasetModel.componentIndex });\r\n }\r\n else if (fromTransformResult != null) {\r\n sourceList = [cloneSourceShallow(upSourceList[0])];\r\n }\r\n return { sourceList: sourceList, upstreamSignList: upstreamSignList };\r\n };\r\n SourceManager.prototype._isDirty = function () {\r\n var sourceList = this._sourceList;\r\n if (!sourceList.length) {\r\n return true;\r\n }\r\n var upSourceMgrList = this._getUpstreamSourceManagers();\r\n for (var i = 0; i < upSourceMgrList.length; i++) {\r\n var upSrcMgr = upSourceMgrList[i];\r\n if (upSrcMgr._isDirty()\r\n || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) {\r\n return true;\r\n }\r\n }\r\n };\r\n SourceManager.prototype.getSource = function (sourceIndex) {\r\n return this._sourceList[sourceIndex || 0];\r\n };\r\n SourceManager.prototype._getUpstreamSourceManagers = function () {\r\n var sourceHost = this._sourceHost;\r\n if (isSeries(sourceHost)) {\r\n var datasetModel = querySeriesUpstreamDatasetModel(sourceHost);\r\n return !datasetModel ? [] : [datasetModel.getSourceManager()];\r\n }\r\n else {\r\n return map(queryDatasetUpstreamDatasetModels(sourceHost), function (datasetModel) { return datasetModel.getSourceManager(); });\r\n }\r\n };\r\n SourceManager.prototype._getSourceMetaRawOption = function () {\r\n var sourceHost = this._sourceHost;\r\n var seriesLayoutBy;\r\n var sourceHeader;\r\n var dimensions;\r\n if (isSeries(sourceHost)) {\r\n seriesLayoutBy = sourceHost.get('seriesLayoutBy', true);\r\n sourceHeader = sourceHost.get('sourceHeader', true);\r\n dimensions = sourceHost.get('dimensions', true);\r\n }\r\n else if (!this._getUpstreamSourceManagers().length) {\r\n var model = sourceHost;\r\n seriesLayoutBy = model.get('seriesLayoutBy', true);\r\n sourceHeader = model.get('sourceHeader', true);\r\n dimensions = model.get('dimensions', true);\r\n }\r\n return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n };\r\n return SourceManager;\r\n}());\r\nfunction disableTransformOptionMerge(datasetModel) {\r\n var transformOption = datasetModel.option.transform;\r\n transformOption && setAsPrimitive(datasetModel.option.transform);\r\n}\r\nfunction isSeries(sourceHost) {\r\n return sourceHost.mainType === 'series';\r\n}\r\nfunction doThrow(errMsg) {\r\n throw new Error(errMsg);\r\n}\n\nvar TOOLTIP_NAME_TEXT_STYLE_CSS = 'font-size:12px;color:#6e7079';\r\nvar TOOLTIP_TEXT_STYLE_RICH = {\r\n fontSize: 12,\r\n fill: '#6e7079'\r\n};\r\nvar TOOLTIP_VALUE_TEXT_STYLE_CSS = 'font-size:14px;color:#464646;font-weight:900';\r\nvar TOOLTIP_VALUE_TEXT_STYLE_RICH = {\r\n fontSize: 14,\r\n fill: '#464646',\r\n fontWeight: 900\r\n};\r\nvar TOOLTIP_LINE_HEIGHT_CSS = 'line-height:1';\r\nvar HTML_GAPS = [0, 10, 20, 30];\r\nvar RICH_TEXT_GAPS = ['', '\\n', '\\n\\n', '\\n\\n\\n'];\r\nfunction createTooltipMarkup(type, option) {\r\n option.type = type;\r\n return option;\r\n}\r\nfunction getBuilder(fragment) {\r\n return hasOwn(builderMap, fragment.type) && builderMap[fragment.type];\r\n}\r\nvar builderMap = {\r\n section: {\r\n planLayout: function (fragment) {\r\n var subBlockLen = fragment.blocks.length;\r\n var thisBlockHasInnerGap = subBlockLen > 1 || (subBlockLen > 0 && !fragment.noHeader);\r\n var thisGapLevelBetweenSubBlocks = 0;\r\n each(fragment.blocks, function (subBlock) {\r\n getBuilder(subBlock).planLayout(subBlock);\r\n var subGapLevel = subBlock.__gapLevelBetweenSubBlocks;\r\n if (subGapLevel >= thisGapLevelBetweenSubBlocks) {\r\n thisGapLevelBetweenSubBlocks = subGapLevel + ((thisBlockHasInnerGap && (!subGapLevel\r\n || (subBlock.type === 'section' && !subBlock.noHeader))) ? 1 : 0);\r\n }\r\n });\r\n fragment.__gapLevelBetweenSubBlocks = thisGapLevelBetweenSubBlocks;\r\n },\r\n build: function (ctx, fragment, topMarginForOuterGap) {\r\n var noHeader = fragment.noHeader;\r\n var gaps = getGap(fragment);\r\n var subMarkupText = buildSubBlocks(ctx, fragment, noHeader ? topMarginForOuterGap : gaps.html);\r\n if (noHeader) {\r\n return subMarkupText;\r\n }\r\n var displayableHeader = makeValueReadable(fragment.header, 'ordinal', ctx.useUTC);\r\n if (ctx.renderMode === 'richText') {\r\n return wrapInlineNameRichText(ctx, displayableHeader) + gaps.richText\r\n + subMarkupText;\r\n }\r\n else {\r\n return wrapBlockHTML(\"<div style=\\\"\" + TOOLTIP_NAME_TEXT_STYLE_CSS + \";\" + TOOLTIP_LINE_HEIGHT_CSS + \";\\\">\"\r\n + encodeHTML(displayableHeader)\r\n + '</div>'\r\n + subMarkupText, topMarginForOuterGap);\r\n }\r\n }\r\n },\r\n nameValue: {\r\n planLayout: function (fragment) {\r\n fragment.__gapLevelBetweenSubBlocks = 0;\r\n },\r\n build: function (ctx, fragment, topMarginForOuterGap) {\r\n var renderMode = ctx.renderMode;\r\n var noName = fragment.noName;\r\n var noValue = fragment.noValue;\r\n var noMarker = !fragment.markerType;\r\n var name = fragment.name;\r\n var value = fragment.value;\r\n var useUTC = ctx.useUTC;\r\n if (noName && noValue) {\r\n return;\r\n }\r\n var markerStr = noMarker\r\n ? ''\r\n : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || '#333', renderMode);\r\n var readableName = noName\r\n ? ''\r\n : makeValueReadable(name, 'ordinal', useUTC);\r\n var valueTypeOption = fragment.valueType;\r\n var readableValueList = noValue\r\n ? []\r\n : (isArray(value)\r\n ? map(value, function (val, idx) { return makeValueReadable(val, isArray(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC); })\r\n : [makeValueReadable(value, isArray(valueTypeOption) ? valueTypeOption[0] : valueTypeOption, useUTC)]);\r\n var valueAlignRight = !noMarker || !noName;\r\n var valueCloseToMarker = !noMarker && noName;\r\n return renderMode === 'richText'\r\n ? ((noMarker ? '' : markerStr)\r\n + (noName ? '' : wrapInlineNameRichText(ctx, readableName))\r\n + (noValue ? '' : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker)))\r\n : wrapBlockHTML((noMarker ? '' : markerStr)\r\n + (noName ? '' : wrapInlineNameHTML(readableName, !noMarker))\r\n + (noValue ? '' : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker)), topMarginForOuterGap);\r\n }\r\n }\r\n};\r\nfunction buildSubBlocks(ctx, fragment, topMarginForOuterGap) {\r\n var subMarkupTextList = [];\r\n var subBlocks = fragment.blocks || [];\r\n assert(!subBlocks || isArray(subBlocks));\r\n subBlocks = subBlocks || [];\r\n var orderMode = ctx.orderMode;\r\n if (fragment.sortBlocks && orderMode) {\r\n subBlocks = subBlocks.slice();\r\n var orderMap = { valueAsc: 'asc', valueDesc: 'desc' };\r\n if (hasOwn(orderMap, orderMode)) {\r\n var comparator_1 = new SortOrderComparator(orderMap[orderMode], null);\r\n subBlocks.sort(function (a, b) { return comparator_1.evaluate(a.sortParam, b.sortParam); });\r\n }\r\n else if (orderMode === 'seriesDesc') {\r\n subBlocks.reverse();\r\n }\r\n }\r\n var gaps = getGap(fragment);\r\n each(subBlocks, function (subBlock, idx) {\r\n var subMarkupText = getBuilder(subBlock).build(ctx, subBlock, idx > 0 ? gaps.html : 0);\r\n subMarkupText != null && subMarkupTextList.push(subMarkupText);\r\n });\r\n if (!subMarkupTextList.length) {\r\n return;\r\n }\r\n return ctx.renderMode === 'richText'\r\n ? subMarkupTextList.join(gaps.richText)\r\n : wrapBlockHTML(subMarkupTextList.join(''), topMarginForOuterGap);\r\n}\r\nfunction buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC) {\r\n if (!fragment) {\r\n return;\r\n }\r\n var builder = getBuilder(fragment);\r\n builder.planLayout(fragment);\r\n var ctx = {\r\n useUTC: useUTC,\r\n renderMode: renderMode,\r\n orderMode: orderMode,\r\n markupStyleCreator: markupStyleCreator\r\n };\r\n return builder.build(ctx, fragment, 0);\r\n}\r\nfunction getGap(fragment) {\r\n var gapLevelBetweenSubBlocks = fragment.__gapLevelBetweenSubBlocks;\r\n return {\r\n html: HTML_GAPS[gapLevelBetweenSubBlocks],\r\n richText: RICH_TEXT_GAPS[gapLevelBetweenSubBlocks]\r\n };\r\n}\r\nfunction wrapBlockHTML(encodedContent, topGap) {\r\n var clearfix = '<div style=\"clear:both\"></div>';\r\n var marginCSS = \"margin: \" + topGap + \"px 0 0\";\r\n return \"<div style=\\\"\" + marginCSS + \";\" + TOOLTIP_LINE_HEIGHT_CSS + \";\\\">\"\r\n + encodedContent + clearfix\r\n + '</div>';\r\n}\r\nfunction wrapInlineNameHTML(name, leftHasMarker) {\r\n var marginCss = leftHasMarker ? 'margin-left:2px' : '';\r\n return \"<span style=\\\"\" + TOOLTIP_NAME_TEXT_STYLE_CSS + \";\" + marginCss + \"\\\">\"\r\n + encodeHTML(name)\r\n + '</span>';\r\n}\r\nfunction wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker) {\r\n var paddingStr = valueCloseToMarker ? '10px' : '20px';\r\n var alignCSS = alignRight ? \"float:right;margin-left:\" + paddingStr : '';\r\n return (\"<span style=\\\"\" + alignCSS + \";\" + TOOLTIP_VALUE_TEXT_STYLE_CSS + \"\\\">\"\r\n + map(valueList, function (value) { return encodeHTML(value); }).join('&nbsp;&nbsp;')\r\n + '</span>');\r\n}\r\nfunction wrapInlineNameRichText(ctx, name) {\r\n return ctx.markupStyleCreator.wrapRichTextStyle(name, TOOLTIP_TEXT_STYLE_RICH);\r\n}\r\nfunction wrapInlineValueRichText(ctx, valueList, alignRight, valueCloseToMarker) {\r\n var styles = [TOOLTIP_VALUE_TEXT_STYLE_RICH];\r\n var paddingLeft = valueCloseToMarker ? 10 : 20;\r\n alignRight && styles.push({ padding: [0, 0, 0, paddingLeft], align: 'right' });\r\n return ctx.markupStyleCreator.wrapRichTextStyle(valueList.join(' '), styles);\r\n}\r\nfunction retrieveVisualColorForTooltipMarker(series, dataIndex) {\r\n var style = series.getData().getItemVisual(dataIndex, 'style');\r\n var color = style[series.visualDrawType];\r\n return convertToColorString(color);\r\n}\r\nfunction getPaddingFromTooltipModel(model, renderMode) {\r\n var padding = model.get('padding');\r\n return padding != null\r\n ? padding\r\n : renderMode === 'richText'\r\n ? [8, 10]\r\n : 10;\r\n}\r\nvar TooltipMarkupStyleCreator = (function () {\r\n function TooltipMarkupStyleCreator() {\r\n this.richTextStyles = {};\r\n this._nextStyleNameId = getRandomIdBase();\r\n }\r\n TooltipMarkupStyleCreator.prototype._generateStyleName = function () {\r\n return '__EC_aUTo_' + this._nextStyleNameId++;\r\n };\r\n TooltipMarkupStyleCreator.prototype.makeTooltipMarker = function (markerType, colorStr, renderMode) {\r\n var markerId = renderMode === 'richText'\r\n ? this._generateStyleName()\r\n : null;\r\n var marker = getTooltipMarker({\r\n color: colorStr,\r\n type: markerType,\r\n renderMode: renderMode,\r\n markerId: markerId\r\n });\r\n if (isString(marker)) {\r\n return marker;\r\n }\r\n else {\r\n if (__DEV__) {\r\n assert(markerId);\r\n }\r\n this.richTextStyles[markerId] = marker.style;\r\n return marker.content;\r\n }\r\n };\r\n TooltipMarkupStyleCreator.prototype.wrapRichTextStyle = function (text, styles) {\r\n var finalStl = {};\r\n if (isArray(styles)) {\r\n each(styles, function (stl) { return extend(finalStl, stl); });\r\n }\r\n else {\r\n extend(finalStl, styles);\r\n }\r\n var styleName = this._generateStyleName();\r\n this.richTextStyles[styleName] = finalStl;\r\n return \"{\" + styleName + \"|\" + text + \"}\";\r\n };\r\n return TooltipMarkupStyleCreator;\r\n}());\n\nfunction defaultSeriesFormatTooltip(opt) {\r\n var series = opt.series;\r\n var dataIndex = opt.dataIndex;\r\n var multipleSeries = opt.multipleSeries;\r\n var data = series.getData();\r\n var tooltipDims = data.mapDimensionsAll('defaultedTooltip');\r\n var tooltipDimLen = tooltipDims.length;\r\n var value = series.getRawValue(dataIndex);\r\n var isValueArr = isArray(value);\r\n var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex);\r\n var inlineValue;\r\n var inlineValueType;\r\n var subBlocks;\r\n var sortParam;\r\n if (tooltipDimLen > 1 || (isValueArr && !tooltipDimLen)) {\r\n var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor);\r\n inlineValue = formatArrResult.inlineValues;\r\n inlineValueType = formatArrResult.inlineValueTypes;\r\n subBlocks = formatArrResult.blocks;\r\n sortParam = formatArrResult.inlineValues[0];\r\n }\r\n else if (tooltipDimLen) {\r\n var dimInfo = data.getDimensionInfo(tooltipDims[0]);\r\n sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]);\r\n inlineValueType = dimInfo.type;\r\n }\r\n else {\r\n sortParam = inlineValue = isValueArr ? value[0] : value;\r\n }\r\n var seriesNameSpecified = isNameSpecified(series);\r\n var seriesName = seriesNameSpecified && series.name || '';\r\n var itemName = data.getName(dataIndex);\r\n var inlineName = multipleSeries ? seriesName : itemName;\r\n return createTooltipMarkup('section', {\r\n header: seriesName,\r\n noHeader: multipleSeries || !seriesNameSpecified,\r\n sortParam: sortParam,\r\n blocks: [\r\n createTooltipMarkup('nameValue', {\r\n markerType: 'item',\r\n markerColor: markerColor,\r\n name: inlineName,\r\n noName: !trim(inlineName),\r\n value: inlineValue,\r\n valueType: inlineValueType\r\n })\r\n ].concat(subBlocks || [])\r\n });\r\n}\r\nfunction formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) {\r\n var data = series.getData();\r\n var isValueMultipleLine = reduce(value, function (isValueMultipleLine, val, idx) {\r\n var dimItem = data.getDimensionInfo(idx);\r\n return isValueMultipleLine = isValueMultipleLine\r\n || (dimItem && dimItem.tooltip !== false && dimItem.displayName != null);\r\n }, false);\r\n var inlineValues = [];\r\n var inlineValueTypes = [];\r\n var blocks = [];\r\n tooltipDims.length\r\n ? each(tooltipDims, function (dim) {\r\n setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\r\n })\r\n : each(value, setEachItem);\r\n function setEachItem(val, dim) {\r\n var dimInfo = data.getDimensionInfo(dim);\r\n if (!dimInfo || dimInfo.otherDims.tooltip === false) {\r\n return;\r\n }\r\n if (isValueMultipleLine) {\r\n blocks.push(createTooltipMarkup('nameValue', {\r\n markerType: 'subItem',\r\n markerColor: colorStr,\r\n name: dimInfo.displayName,\r\n value: val,\r\n valueType: dimInfo.type\r\n }));\r\n }\r\n else {\r\n inlineValues.push(val);\r\n inlineValueTypes.push(dimInfo.type);\r\n }\r\n }\r\n return { inlineValues: inlineValues, inlineValueTypes: inlineValueTypes, blocks: blocks };\r\n}\n\nvar inner$1 = makeInner();\r\nfunction getSelectionKey(data, dataIndex) {\r\n return data.getName(dataIndex) || data.getId(dataIndex);\r\n}\r\nvar SeriesModel = (function (_super) {\r\n __extends(SeriesModel, _super);\r\n function SeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this._selectedDataIndicesMap = {};\r\n return _this;\r\n }\r\n SeriesModel.prototype.init = function (option, parentModel, ecModel) {\r\n this.seriesIndex = this.componentIndex;\r\n this.dataTask = createTask({\r\n count: dataTaskCount,\r\n reset: dataTaskReset\r\n });\r\n this.dataTask.context = { model: this };\r\n this.mergeDefaultAndTheme(option, ecModel);\r\n var sourceManager = inner$1(this).sourceManager = new SourceManager(this);\r\n sourceManager.prepareSource();\r\n var data = this.getInitialData(option, ecModel);\r\n wrapData(data, this);\r\n this.dataTask.context.data = data;\r\n if (__DEV__) {\r\n assert(data, 'getInitialData returned invalid data.');\r\n }\r\n inner$1(this).dataBeforeProcessed = data;\r\n autoSeriesName(this);\r\n this._initSelectedMapFromData(data);\r\n };\r\n SeriesModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n var layoutMode = fetchLayoutMode(this);\r\n var inputPositionParams = layoutMode\r\n ? getLayoutParams(option) : {};\r\n var themeSubType = this.subType;\r\n if (ComponentModel.hasClass(themeSubType)) {\r\n themeSubType += 'Series';\r\n }\r\n merge(option, ecModel.getTheme().get(this.subType));\r\n merge(option, this.getDefaultOption());\r\n defaultEmphasis(option, 'label', ['show']);\r\n this.fillDataTextStyle(option.data);\r\n if (layoutMode) {\r\n mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n }\r\n };\r\n SeriesModel.prototype.mergeOption = function (newSeriesOption, ecModel) {\r\n newSeriesOption = merge(this.option, newSeriesOption, true);\r\n this.fillDataTextStyle(newSeriesOption.data);\r\n var layoutMode = fetchLayoutMode(this);\r\n if (layoutMode) {\r\n mergeLayoutParam(this.option, newSeriesOption, layoutMode);\r\n }\r\n var sourceManager = inner$1(this).sourceManager;\r\n sourceManager.dirty();\r\n sourceManager.prepareSource();\r\n var data = this.getInitialData(newSeriesOption, ecModel);\r\n wrapData(data, this);\r\n this.dataTask.dirty();\r\n this.dataTask.context.data = data;\r\n inner$1(this).dataBeforeProcessed = data;\r\n autoSeriesName(this);\r\n this._initSelectedMapFromData(data);\r\n };\r\n SeriesModel.prototype.fillDataTextStyle = function (data) {\r\n if (data && !isTypedArray(data)) {\r\n var props = ['show'];\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i] && data[i].label) {\r\n defaultEmphasis(data[i], 'label', props);\r\n }\r\n }\r\n }\r\n };\r\n SeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return;\r\n };\r\n SeriesModel.prototype.appendData = function (params) {\r\n var data = this.getRawData();\r\n data.appendData(params.data);\r\n };\r\n SeriesModel.prototype.getData = function (dataType) {\r\n var task = getCurrentTask(this);\r\n if (task) {\r\n var data = task.context.data;\r\n return (dataType == null ? data : data.getLinkedData(dataType));\r\n }\r\n else {\r\n return inner$1(this).data;\r\n }\r\n };\r\n SeriesModel.prototype.getAllData = function () {\r\n var mainData = this.getData();\r\n return (mainData && mainData.getLinkedDataAll)\r\n ? mainData.getLinkedDataAll()\r\n : [{ data: mainData }];\r\n };\r\n SeriesModel.prototype.setData = function (data) {\r\n var task = getCurrentTask(this);\r\n if (task) {\r\n var context = task.context;\r\n context.outputData = data;\r\n if (task !== this.dataTask) {\r\n context.data = data;\r\n }\r\n }\r\n inner$1(this).data = data;\r\n };\r\n SeriesModel.prototype.getSource = function () {\r\n return inner$1(this).sourceManager.getSource();\r\n };\r\n SeriesModel.prototype.getRawData = function () {\r\n return inner$1(this).dataBeforeProcessed;\r\n };\r\n SeriesModel.prototype.getBaseAxis = function () {\r\n var coordSys = this.coordinateSystem;\r\n return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\r\n };\r\n SeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n return defaultSeriesFormatTooltip({\r\n series: this,\r\n dataIndex: dataIndex,\r\n multipleSeries: multipleSeries\r\n });\r\n };\r\n SeriesModel.prototype.isAnimationEnabled = function () {\r\n if (env.node) {\r\n return false;\r\n }\r\n var animationEnabled = this.getShallow('animation');\r\n if (animationEnabled) {\r\n if (this.getData().count() > this.getShallow('animationThreshold')) {\r\n animationEnabled = false;\r\n }\r\n }\r\n return !!animationEnabled;\r\n };\r\n SeriesModel.prototype.restoreData = function () {\r\n this.dataTask.dirty();\r\n };\r\n SeriesModel.prototype.getColorFromPalette = function (name, scope, requestColorNum) {\r\n var ecModel = this.ecModel;\r\n var color = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum);\r\n if (!color) {\r\n color = ecModel.getColorFromPalette(name, scope, requestColorNum);\r\n }\r\n return color;\r\n };\r\n SeriesModel.prototype.coordDimToDataDim = function (coordDim) {\r\n return this.getRawData().mapDimensionsAll(coordDim);\r\n };\r\n SeriesModel.prototype.getProgressive = function () {\r\n return this.get('progressive');\r\n };\r\n SeriesModel.prototype.getProgressiveThreshold = function () {\r\n return this.get('progressiveThreshold');\r\n };\r\n SeriesModel.prototype.select = function (innerDataIndices, dataType) {\r\n this._innerSelect(this.getData(dataType), innerDataIndices);\r\n };\r\n SeriesModel.prototype.unselect = function (innerDataIndices, dataType) {\r\n var selectedMap = this.option.selectedMap;\r\n if (!selectedMap) {\r\n return;\r\n }\r\n var data = this.getData(dataType);\r\n for (var i = 0; i < innerDataIndices.length; i++) {\r\n var dataIndex = innerDataIndices[i];\r\n var nameOrId = getSelectionKey(data, dataIndex);\r\n selectedMap[nameOrId] = false;\r\n this._selectedDataIndicesMap[nameOrId] = -1;\r\n }\r\n };\r\n SeriesModel.prototype.toggleSelect = function (innerDataIndices, dataType) {\r\n var tmpArr = [];\r\n for (var i = 0; i < innerDataIndices.length; i++) {\r\n tmpArr[0] = innerDataIndices[i];\r\n this.isSelected(innerDataIndices[i], dataType)\r\n ? this.unselect(tmpArr, dataType)\r\n : this.select(tmpArr, dataType);\r\n }\r\n };\r\n SeriesModel.prototype.getSelectedDataIndices = function () {\r\n var selectedDataIndicesMap = this._selectedDataIndicesMap;\r\n var nameOrIds = keys(selectedDataIndicesMap);\r\n var dataIndices = [];\r\n for (var i = 0; i < nameOrIds.length; i++) {\r\n var dataIndex = selectedDataIndicesMap[nameOrIds[i]];\r\n if (dataIndex >= 0) {\r\n dataIndices.push(dataIndex);\r\n }\r\n }\r\n return dataIndices;\r\n };\r\n SeriesModel.prototype.isSelected = function (dataIndex, dataType) {\r\n var selectedMap = this.option.selectedMap;\r\n if (!selectedMap) {\r\n return false;\r\n }\r\n var data = this.getData(dataType);\r\n var nameOrId = getSelectionKey(data, dataIndex);\r\n return selectedMap[nameOrId] || false;\r\n };\r\n SeriesModel.prototype._innerSelect = function (data, innerDataIndices) {\r\n var _a, _b;\r\n var selectedMode = this.option.selectedMode;\r\n var len = innerDataIndices.length;\r\n if (!selectedMode || !len) {\r\n return;\r\n }\r\n if (selectedMode === 'multiple') {\r\n var selectedMap = this.option.selectedMap || (this.option.selectedMap = {});\r\n for (var i = 0; i < len; i++) {\r\n var dataIndex = innerDataIndices[i];\r\n var nameOrId = getSelectionKey(data, dataIndex);\r\n selectedMap[nameOrId] = true;\r\n this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);\r\n }\r\n }\r\n else if (selectedMode === 'single' || selectedMode === true) {\r\n var lastDataIndex = innerDataIndices[len - 1];\r\n var nameOrId = getSelectionKey(data, lastDataIndex);\r\n this.option.selectedMap = (_a = {},\r\n _a[nameOrId] = true,\r\n _a);\r\n this._selectedDataIndicesMap = (_b = {},\r\n _b[nameOrId] = data.getRawIndex(lastDataIndex),\r\n _b);\r\n }\r\n };\r\n SeriesModel.prototype._initSelectedMapFromData = function (data) {\r\n if (this.option.selectedMap) {\r\n return;\r\n }\r\n var dataIndices = [];\r\n if (data.hasItemOption) {\r\n data.each(function (idx) {\r\n var rawItem = data.getRawDataItem(idx);\r\n if (typeof rawItem === 'object'\r\n && rawItem.selected) {\r\n dataIndices.push(idx);\r\n }\r\n });\r\n }\r\n if (dataIndices.length > 0) {\r\n this._innerSelect(data, dataIndices);\r\n }\r\n };\r\n SeriesModel.registerClass = function (clz) {\r\n return ComponentModel.registerClass(clz);\r\n };\r\n SeriesModel.protoInitialize = (function () {\r\n var proto = SeriesModel.prototype;\r\n proto.type = 'series.__base__';\r\n proto.seriesIndex = 0;\r\n proto.useColorPaletteOnData = false;\r\n proto.ignoreStyleOnData = false;\r\n proto.hasSymbolVisual = false;\r\n proto.defaultSymbol = 'circle';\r\n proto.visualStyleAccessPath = 'itemStyle';\r\n proto.visualDrawType = 'fill';\r\n })();\r\n return SeriesModel;\r\n}(ComponentModel));\r\nmixin(SeriesModel, DataFormatMixin);\r\nmixin(SeriesModel, PaletteMixin);\r\nmountExtend(SeriesModel, ComponentModel);\r\nfunction autoSeriesName(seriesModel) {\r\n var name = seriesModel.name;\r\n if (!isNameSpecified(seriesModel)) {\r\n seriesModel.name = getSeriesAutoName(seriesModel) || name;\r\n }\r\n}\r\nfunction getSeriesAutoName(seriesModel) {\r\n var data = seriesModel.getRawData();\r\n var dataDims = data.mapDimensionsAll('seriesName');\r\n var nameArr = [];\r\n each(dataDims, function (dataDim) {\r\n var dimInfo = data.getDimensionInfo(dataDim);\r\n dimInfo.displayName && nameArr.push(dimInfo.displayName);\r\n });\r\n return nameArr.join(' ');\r\n}\r\nfunction dataTaskCount(context) {\r\n return context.model.getRawData().count();\r\n}\r\nfunction dataTaskReset(context) {\r\n var seriesModel = context.model;\r\n seriesModel.setData(seriesModel.getRawData().cloneShallow());\r\n return dataTaskProgress;\r\n}\r\nfunction dataTaskProgress(param, context) {\r\n if (context.outputData && param.end > context.outputData.count()) {\r\n context.model.getRawData().cloneShallow(context.outputData);\r\n }\r\n}\r\nfunction wrapData(data, seriesModel) {\r\n each(__spreadArrays(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function (methodName) {\r\n data.wrapMethod(methodName, curry(onDataChange, seriesModel));\r\n });\r\n}\r\nfunction onDataChange(seriesModel, newList) {\r\n var task = getCurrentTask(seriesModel);\r\n if (task) {\r\n task.setOutputEnd((newList || this).count());\r\n }\r\n return newList;\r\n}\r\nfunction getCurrentTask(seriesModel) {\r\n var scheduler = (seriesModel.ecModel || {}).scheduler;\r\n var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\r\n if (pipeline) {\r\n var task = pipeline.currentTask;\r\n if (task) {\r\n var agentStubMap = task.agentStubMap;\r\n if (agentStubMap) {\r\n task = agentStubMap.get(seriesModel.uid);\r\n }\r\n }\r\n return task;\r\n }\r\n}\n\nvar ComponentView = (function () {\r\n function ComponentView() {\r\n this.group = new Group();\r\n this.uid = getUID('viewComponent');\r\n }\r\n ComponentView.prototype.init = function (ecModel, api) { };\r\n ComponentView.prototype.render = function (model, ecModel, api, payload) { };\r\n ComponentView.prototype.dispose = function (ecModel, api) { };\r\n ComponentView.prototype.updateView = function (model, ecModel, api, payload) {\r\n };\r\n ComponentView.prototype.updateLayout = function (model, ecModel, api, payload) {\r\n };\r\n ComponentView.prototype.updateVisual = function (model, ecModel, api, payload) {\r\n };\r\n ComponentView.prototype.blurSeries = function (seriesModels, ecModel) {\r\n };\r\n return ComponentView;\r\n}());\r\nenableClassExtend(ComponentView);\r\nenableClassManagement(ComponentView, { registerWhenExtend: true });\n\nfunction createRenderPlanner() {\r\n var inner = makeInner();\r\n return function (seriesModel) {\r\n var fields = inner(seriesModel);\r\n var pipelineContext = seriesModel.pipelineContext;\r\n var originalLarge = !!fields.large;\r\n var originalProgressive = !!fields.progressiveRender;\r\n var large = fields.large = !!(pipelineContext && pipelineContext.large);\r\n var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);\r\n return (!!((originalLarge !== large) || (originalProgressive !== progressive)) && 'reset');\r\n };\r\n}\n\nvar inner$2 = makeInner();\r\nvar renderPlanner = createRenderPlanner();\r\nvar ChartView = (function () {\r\n function ChartView() {\r\n this.group = new Group();\r\n this.uid = getUID('viewChart');\r\n this.renderTask = createTask({\r\n plan: renderTaskPlan,\r\n reset: renderTaskReset\r\n });\r\n this.renderTask.context = { view: this };\r\n }\r\n ChartView.prototype.init = function (ecModel, api) { };\r\n ChartView.prototype.render = function (seriesModel, ecModel, api, payload) { };\r\n ChartView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n toggleHighlight(seriesModel.getData(), payload, 'emphasis');\r\n };\r\n ChartView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n toggleHighlight(seriesModel.getData(), payload, 'normal');\r\n };\r\n ChartView.prototype.remove = function (ecModel, api) {\r\n this.group.removeAll();\r\n };\r\n ChartView.prototype.dispose = function (ecModel, api) { };\r\n ChartView.prototype.updateView = function (seriesModel, ecModel, api, payload) {\r\n this.render(seriesModel, ecModel, api, payload);\r\n };\r\n ChartView.prototype.updateLayout = function (seriesModel, ecModel, api, payload) {\r\n this.render(seriesModel, ecModel, api, payload);\r\n };\r\n ChartView.prototype.updateVisual = function (seriesModel, ecModel, api, payload) {\r\n this.render(seriesModel, ecModel, api, payload);\r\n };\r\n ChartView.markUpdateMethod = function (payload, methodName) {\r\n inner$2(payload).updateMethod = methodName;\r\n };\r\n ChartView.protoInitialize = (function () {\r\n var proto = ChartView.prototype;\r\n proto.type = 'chart';\r\n })();\r\n return ChartView;\r\n}());\r\nfunction elSetState(el, state, highlightDigit) {\r\n if (el) {\r\n (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit);\r\n }\r\n}\r\nfunction toggleHighlight(data, payload, state) {\r\n var dataIndex = queryDataIndex(data, payload);\r\n var highlightDigit = (payload && payload.highlightKey != null)\r\n ? getHighlightDigit(payload.highlightKey)\r\n : null;\r\n if (dataIndex != null) {\r\n each(normalizeToArray(dataIndex), function (dataIdx) {\r\n elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\r\n });\r\n }\r\n else {\r\n data.eachItemGraphicEl(function (el) {\r\n elSetState(el, state, highlightDigit);\r\n });\r\n }\r\n}\r\nenableClassExtend(ChartView, ['dispose']);\r\nenableClassManagement(ChartView, { registerWhenExtend: true });\r\nfunction renderTaskPlan(context) {\r\n return renderPlanner(context.model);\r\n}\r\nfunction renderTaskReset(context) {\r\n var seriesModel = context.model;\r\n var ecModel = context.ecModel;\r\n var api = context.api;\r\n var payload = context.payload;\r\n var progressiveRender = seriesModel.pipelineContext.progressiveRender;\r\n var view = context.view;\r\n var updateMethod = payload && inner$2(payload).updateMethod;\r\n var methodName = progressiveRender\r\n ? 'incrementalPrepareRender'\r\n : (updateMethod && view[updateMethod])\r\n ? updateMethod\r\n : 'render';\r\n if (methodName !== 'render') {\r\n view[methodName](seriesModel, ecModel, api, payload);\r\n }\r\n return progressMethodMap[methodName];\r\n}\r\nvar progressMethodMap = {\r\n incrementalPrepareRender: {\r\n progress: function (params, context) {\r\n context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\r\n }\r\n },\r\n render: {\r\n forceFirstProgress: true,\r\n progress: function (params, context) {\r\n context.view.render(context.model, context.ecModel, context.api, context.payload);\r\n }\r\n }\r\n};\n\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\r\nvar RATE = '\\0__throttleRate';\r\nvar THROTTLE_TYPE = '\\0__throttleType';\r\nfunction throttle(fn, delay, debounce) {\r\n var currCall;\r\n var lastCall = 0;\r\n var lastExec = 0;\r\n var timer = null;\r\n var diff;\r\n var scope;\r\n var args;\r\n var debounceNextCall;\r\n delay = delay || 0;\r\n function exec() {\r\n lastExec = (new Date()).getTime();\r\n timer = null;\r\n fn.apply(scope, args || []);\r\n }\r\n var cb = function () {\r\n var cbArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n cbArgs[_i] = arguments[_i];\r\n }\r\n currCall = (new Date()).getTime();\r\n scope = this;\r\n args = cbArgs;\r\n var thisDelay = debounceNextCall || delay;\r\n var thisDebounce = debounceNextCall || debounce;\r\n debounceNextCall = null;\r\n diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\r\n clearTimeout(timer);\r\n if (thisDebounce) {\r\n timer = setTimeout(exec, thisDelay);\r\n }\r\n else {\r\n if (diff >= 0) {\r\n exec();\r\n }\r\n else {\r\n timer = setTimeout(exec, -diff);\r\n }\r\n }\r\n lastCall = currCall;\r\n };\r\n cb.clear = function () {\r\n if (timer) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n };\r\n cb.debounceNextCall = function (debounceDelay) {\r\n debounceNextCall = debounceDelay;\r\n };\r\n return cb;\r\n}\r\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\r\n var fn = obj[fnAttr];\r\n if (!fn) {\r\n return;\r\n }\r\n var originFn = fn[ORIGIN_METHOD] || fn;\r\n var lastThrottleType = fn[THROTTLE_TYPE];\r\n var lastRate = fn[RATE];\r\n if (lastRate !== rate || lastThrottleType !== throttleType) {\r\n if (rate == null || !throttleType) {\r\n return (obj[fnAttr] = originFn);\r\n }\r\n fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\r\n fn[ORIGIN_METHOD] = originFn;\r\n fn[THROTTLE_TYPE] = throttleType;\r\n fn[RATE] = rate;\r\n }\r\n return fn;\r\n}\r\nfunction clear(obj, fnAttr) {\r\n var fn = obj[fnAttr];\r\n if (fn && fn[ORIGIN_METHOD]) {\r\n obj[fnAttr] = fn[ORIGIN_METHOD];\r\n }\r\n}\n\nvar inner$3 = makeInner();\r\nvar defaultStyleMappers = {\r\n itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),\r\n lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)\r\n};\r\nvar defaultColorKey = {\r\n lineStyle: 'stroke',\r\n itemStyle: 'fill'\r\n};\r\nfunction getStyleMapper(seriesModel, stylePath) {\r\n var styleMapper = seriesModel.visualStyleMapper\r\n || defaultStyleMappers[stylePath];\r\n if (!styleMapper) {\r\n console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n return defaultStyleMappers.itemStyle;\r\n }\r\n return styleMapper;\r\n}\r\nfunction getDefaultColorKey(seriesModel, stylePath) {\r\n var colorKey = seriesModel.visualDrawType\r\n || defaultColorKey[stylePath];\r\n if (!colorKey) {\r\n console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n return 'fill';\r\n }\r\n return colorKey;\r\n}\r\nvar seriesStyleTask = {\r\n createOnAllSeries: true,\r\n performRawSeries: true,\r\n reset: function (seriesModel, ecModel) {\r\n var data = seriesModel.getData();\r\n var stylePath = seriesModel.visualStyleAccessPath\r\n || 'itemStyle';\r\n var styleModel = seriesModel.getModel(stylePath);\r\n var getStyle = getStyleMapper(seriesModel, stylePath);\r\n var globalStyle = getStyle(styleModel);\r\n var decalOption = styleModel.getShallow('decal');\r\n if (decalOption) {\r\n data.setVisual('decal', decalOption);\r\n decalOption.dirty = true;\r\n }\r\n var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n var color = globalStyle[colorKey];\r\n var colorCallback = isFunction(color) ? color : null;\r\n if (!globalStyle[colorKey] || colorCallback) {\r\n globalStyle[colorKey] = seriesModel.getColorFromPalette(seriesModel.name, null, ecModel.getSeriesCount());\r\n data.setVisual('colorFromPalette', true);\r\n }\r\n data.setVisual('style', globalStyle);\r\n data.setVisual('drawType', colorKey);\r\n if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {\r\n data.setVisual('colorFromPalette', false);\r\n return {\r\n dataEach: function (data, idx) {\r\n var dataParams = seriesModel.getDataParams(idx);\r\n var itemStyle = extend({}, globalStyle);\r\n itemStyle[colorKey] = colorCallback(dataParams);\r\n data.setItemVisual(idx, 'style', itemStyle);\r\n }\r\n };\r\n }\r\n }\r\n};\r\nvar sharedModel = new Model();\r\nvar dataStyleTask = {\r\n createOnAllSeries: true,\r\n performRawSeries: true,\r\n reset: function (seriesModel, ecModel) {\r\n if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n var stylePath = seriesModel.visualStyleAccessPath\r\n || 'itemStyle';\r\n var getStyle = getStyleMapper(seriesModel, stylePath);\r\n var colorKey = data.getVisual('drawType');\r\n return {\r\n dataEach: data.hasItemOption ? function (data, idx) {\r\n var rawItem = data.getRawDataItem(idx);\r\n if (rawItem && rawItem[stylePath]) {\r\n sharedModel.option = rawItem[stylePath];\r\n var style = getStyle(sharedModel);\r\n var existsStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n extend(existsStyle, style);\r\n if (sharedModel.option.decal) {\r\n data.setItemVisual(idx, 'decal', sharedModel.option.decal);\r\n sharedModel.option.decal.dirty = true;\r\n }\r\n if (colorKey in style) {\r\n data.setItemVisual(idx, 'colorFromPalette', false);\r\n }\r\n }\r\n } : null\r\n };\r\n }\r\n};\r\nvar dataColorPaletteTask = {\r\n performRawSeries: true,\r\n overallReset: function (ecModel) {\r\n var paletteScopeGroupByType = createHashMap();\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (!seriesModel.useColorPaletteOnData) {\r\n return;\r\n }\r\n var colorScope = paletteScopeGroupByType.get(seriesModel.type);\r\n if (!colorScope) {\r\n colorScope = {};\r\n paletteScopeGroupByType.set(seriesModel.type, colorScope);\r\n }\r\n inner$3(seriesModel).scope = colorScope;\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (!seriesModel.useColorPaletteOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n return;\r\n }\r\n var dataAll = seriesModel.getRawData();\r\n var idxMap = {};\r\n var data = seriesModel.getData();\r\n var colorScope = inner$3(seriesModel).scope;\r\n var stylePath = seriesModel.visualStyleAccessPath\r\n || 'itemStyle';\r\n var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n data.each(function (idx) {\r\n var rawIdx = data.getRawIndex(idx);\r\n idxMap[rawIdx] = idx;\r\n });\r\n dataAll.each(function (rawIdx) {\r\n var idx = idxMap[rawIdx];\r\n var fromPalette = data.getItemVisual(idx, 'colorFromPalette');\r\n if (fromPalette) {\r\n var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n var name_1 = dataAll.getName(rawIdx) || (rawIdx + '');\r\n var dataCount = dataAll.count();\r\n itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount);\r\n }\r\n });\r\n });\r\n }\r\n};\n\nvar PI$5 = Math.PI;\r\nfunction defaultLoading(api, opts) {\r\n opts = opts || {};\r\n defaults(opts, {\r\n text: 'loading',\r\n textColor: '#000',\r\n fontSize: '12px',\r\n maskColor: 'rgba(255, 255, 255, 0.8)',\r\n showSpinner: true,\r\n color: '#5470c6',\r\n spinnerRadius: 10,\r\n lineWidth: 5,\r\n zlevel: 0\r\n });\r\n var group = new Group();\r\n var mask = new Rect({\r\n style: {\r\n fill: opts.maskColor\r\n },\r\n zlevel: opts.zlevel,\r\n z: 10000\r\n });\r\n group.add(mask);\r\n var font = opts.fontSize + ' sans-serif';\r\n var labelRect = new Rect({\r\n style: {\r\n fill: 'none'\r\n },\r\n textContent: new ZRText({\r\n style: {\r\n text: opts.text,\r\n fill: opts.textColor,\r\n font: font\r\n }\r\n }),\r\n textConfig: {\r\n position: 'right',\r\n distance: 10\r\n },\r\n zlevel: opts.zlevel,\r\n z: 10001\r\n });\r\n group.add(labelRect);\r\n var arc;\r\n if (opts.showSpinner) {\r\n arc = new Arc({\r\n shape: {\r\n startAngle: -PI$5 / 2,\r\n endAngle: -PI$5 / 2 + 0.1,\r\n r: opts.spinnerRadius\r\n },\r\n style: {\r\n stroke: opts.color,\r\n lineCap: 'round',\r\n lineWidth: opts.lineWidth\r\n },\r\n zlevel: opts.zlevel,\r\n z: 10001\r\n });\r\n arc.animateShape(true)\r\n .when(1000, {\r\n endAngle: PI$5 * 3 / 2\r\n })\r\n .start('circularInOut');\r\n arc.animateShape(true)\r\n .when(1000, {\r\n startAngle: PI$5 * 3 / 2\r\n })\r\n .delay(300)\r\n .start('circularInOut');\r\n group.add(arc);\r\n }\r\n group.resize = function () {\r\n var textWidth = getWidth(opts.text, font);\r\n var r = opts.showSpinner ? opts.spinnerRadius : 0;\r\n var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2\r\n - (opts.showSpinner ? 0 : textWidth / 2);\r\n var cy = api.getHeight() / 2;\r\n opts.showSpinner && arc.setShape({\r\n cx: cx,\r\n cy: cy\r\n });\r\n labelRect.setShape({\r\n x: cx - r,\r\n y: cy - r,\r\n width: r * 2,\r\n height: r * 2\r\n });\r\n mask.setShape({\r\n x: 0,\r\n y: 0,\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n };\r\n group.resize();\r\n return group;\r\n}\n\nvar Scheduler = (function () {\r\n function Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\r\n this._stageTaskMap = createHashMap();\r\n this.ecInstance = ecInstance;\r\n this.api = api;\r\n dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\r\n visualHandlers = this._visualHandlers = visualHandlers.slice();\r\n this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\r\n }\r\n Scheduler.prototype.restoreData = function (ecModel, payload) {\r\n ecModel.restoreData(payload);\r\n this._stageTaskMap.each(function (taskRecord) {\r\n var overallTask = taskRecord.overallTask;\r\n overallTask && overallTask.dirty();\r\n });\r\n };\r\n Scheduler.prototype.getPerformArgs = function (task, isBlock) {\r\n if (!task.__pipeline) {\r\n return;\r\n }\r\n var pipeline = this._pipelineMap.get(task.__pipeline.id);\r\n var pCtx = pipeline.context;\r\n var incremental = !isBlock\r\n && pipeline.progressiveEnabled\r\n && (!pCtx || pCtx.progressiveRender)\r\n && task.__idxInPipeline > pipeline.blockIndex;\r\n var step = incremental ? pipeline.step : null;\r\n var modDataCount = pCtx && pCtx.modDataCount;\r\n var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\r\n return { step: step, modBy: modBy, modDataCount: modDataCount };\r\n };\r\n Scheduler.prototype.getPipeline = function (pipelineId) {\r\n return this._pipelineMap.get(pipelineId);\r\n };\r\n Scheduler.prototype.updateStreamModes = function (seriesModel, view) {\r\n var pipeline = this._pipelineMap.get(seriesModel.uid);\r\n var data = seriesModel.getData();\r\n var dataLen = data.count();\r\n var progressiveRender = pipeline.progressiveEnabled\r\n && view.incrementalPrepareRender\r\n && dataLen >= pipeline.threshold;\r\n var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold');\r\n var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\r\n seriesModel.pipelineContext = pipeline.context = {\r\n progressiveRender: progressiveRender,\r\n modDataCount: modDataCount,\r\n large: large\r\n };\r\n };\r\n Scheduler.prototype.restorePipelines = function (ecModel) {\r\n var scheduler = this;\r\n var pipelineMap = scheduler._pipelineMap = createHashMap();\r\n ecModel.eachSeries(function (seriesModel) {\r\n var progressive = seriesModel.getProgressive();\r\n var pipelineId = seriesModel.uid;\r\n pipelineMap.set(pipelineId, {\r\n id: pipelineId,\r\n head: null,\r\n tail: null,\r\n threshold: seriesModel.getProgressiveThreshold(),\r\n progressiveEnabled: progressive\r\n && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\r\n blockIndex: -1,\r\n step: Math.round(progressive || 700),\r\n count: 0\r\n });\r\n scheduler._pipe(seriesModel, seriesModel.dataTask);\r\n });\r\n };\r\n Scheduler.prototype.prepareStageTasks = function () {\r\n var stageTaskMap = this._stageTaskMap;\r\n var ecModel = this.api.getModel();\r\n var api = this.api;\r\n each(this._allHandlers, function (handler) {\r\n var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {});\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = '\"reset\" and \"overallReset\" must not be both specified.';\r\n }\r\n assert(!(handler.reset && handler.overallReset), errMsg);\r\n handler.reset && this._createSeriesStageTask(handler, record, ecModel, api);\r\n handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api);\r\n }, this);\r\n };\r\n Scheduler.prototype.prepareView = function (view, model, ecModel, api) {\r\n var renderTask = view.renderTask;\r\n var context = renderTask.context;\r\n context.model = model;\r\n context.ecModel = ecModel;\r\n context.api = api;\r\n renderTask.__block = !view.incrementalPrepareRender;\r\n this._pipe(model, renderTask);\r\n };\r\n Scheduler.prototype.performDataProcessorTasks = function (ecModel, payload) {\r\n this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { block: true });\r\n };\r\n Scheduler.prototype.performVisualTasks = function (ecModel, payload, opt) {\r\n this._performStageTasks(this._visualHandlers, ecModel, payload, opt);\r\n };\r\n Scheduler.prototype._performStageTasks = function (stageHandlers, ecModel, payload, opt) {\r\n opt = opt || {};\r\n var unfinished = false;\r\n var scheduler = this;\r\n each(stageHandlers, function (stageHandler, idx) {\r\n if (opt.visualType && opt.visualType !== stageHandler.visualType) {\r\n return;\r\n }\r\n var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\r\n var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n var overallTask = stageHandlerRecord.overallTask;\r\n if (overallTask) {\r\n var overallNeedDirty_1;\r\n var agentStubMap = overallTask.agentStubMap;\r\n agentStubMap.each(function (stub) {\r\n if (needSetDirty(opt, stub)) {\r\n stub.dirty();\r\n overallNeedDirty_1 = true;\r\n }\r\n });\r\n overallNeedDirty_1 && overallTask.dirty();\r\n scheduler.updatePayload(overallTask, payload);\r\n var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block);\r\n agentStubMap.each(function (stub) {\r\n stub.perform(performArgs_1);\r\n });\r\n if (overallTask.perform(performArgs_1)) {\r\n unfinished = true;\r\n }\r\n }\r\n else if (seriesTaskMap) {\r\n seriesTaskMap.each(function (task, pipelineId) {\r\n if (needSetDirty(opt, task)) {\r\n task.dirty();\r\n }\r\n var performArgs = scheduler.getPerformArgs(task, opt.block);\r\n performArgs.skip = !stageHandler.performRawSeries\r\n && ecModel.isSeriesFiltered(task.context.model);\r\n scheduler.updatePayload(task, payload);\r\n if (task.perform(performArgs)) {\r\n unfinished = true;\r\n }\r\n });\r\n }\r\n });\r\n function needSetDirty(opt, task) {\r\n return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\r\n }\r\n this.unfinished = unfinished || this.unfinished;\r\n };\r\n Scheduler.prototype.performSeriesTasks = function (ecModel) {\r\n var unfinished;\r\n ecModel.eachSeries(function (seriesModel) {\r\n unfinished = seriesModel.dataTask.perform() || unfinished;\r\n });\r\n this.unfinished = unfinished || this.unfinished;\r\n };\r\n Scheduler.prototype.plan = function () {\r\n this._pipelineMap.each(function (pipeline) {\r\n var task = pipeline.tail;\r\n do {\r\n if (task.__block) {\r\n pipeline.blockIndex = task.__idxInPipeline;\r\n break;\r\n }\r\n task = task.getUpstream();\r\n } while (task);\r\n });\r\n };\r\n Scheduler.prototype.updatePayload = function (task, payload) {\r\n payload !== 'remain' && (task.context.payload = payload);\r\n };\r\n Scheduler.prototype._createSeriesStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n var scheduler = this;\r\n var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap();\r\n var seriesType = stageHandler.seriesType;\r\n var getTargetSeries = stageHandler.getTargetSeries;\r\n if (stageHandler.createOnAllSeries) {\r\n ecModel.eachRawSeries(create);\r\n }\r\n else if (seriesType) {\r\n ecModel.eachRawSeriesByType(seriesType, create);\r\n }\r\n else if (getTargetSeries) {\r\n getTargetSeries(ecModel, api).each(create);\r\n }\r\n function create(seriesModel) {\r\n var pipelineId = seriesModel.uid;\r\n var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId)\r\n || createTask({\r\n plan: seriesTaskPlan,\r\n reset: seriesTaskReset,\r\n count: seriesTaskCount\r\n }));\r\n task.context = {\r\n model: seriesModel,\r\n ecModel: ecModel,\r\n api: api,\r\n useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\r\n plan: stageHandler.plan,\r\n reset: stageHandler.reset,\r\n scheduler: scheduler\r\n };\r\n scheduler._pipe(seriesModel, task);\r\n }\r\n };\r\n Scheduler.prototype._createOverallStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n var scheduler = this;\r\n var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask\r\n || createTask({ reset: overallTaskReset });\r\n overallTask.context = {\r\n ecModel: ecModel,\r\n api: api,\r\n overallReset: stageHandler.overallReset,\r\n scheduler: scheduler\r\n };\r\n var oldAgentStubMap = overallTask.agentStubMap;\r\n var newAgentStubMap = overallTask.agentStubMap = createHashMap();\r\n var seriesType = stageHandler.seriesType;\r\n var getTargetSeries = stageHandler.getTargetSeries;\r\n var overallProgress = true;\r\n var shouldOverallTaskDirty = false;\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = '\"createOnAllSeries\" do not supported for \"overallReset\", '\r\n + 'becuase it will block all streams.';\r\n }\r\n assert(!stageHandler.createOnAllSeries, errMsg);\r\n if (seriesType) {\r\n ecModel.eachRawSeriesByType(seriesType, createStub);\r\n }\r\n else if (getTargetSeries) {\r\n getTargetSeries(ecModel, api).each(createStub);\r\n }\r\n else {\r\n overallProgress = false;\r\n each(ecModel.getSeries(), createStub);\r\n }\r\n function createStub(seriesModel) {\r\n var pipelineId = seriesModel.uid;\r\n var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId)\r\n || (shouldOverallTaskDirty = true,\r\n createTask({ reset: stubReset, onDirty: stubOnDirty })));\r\n stub.context = {\r\n model: seriesModel,\r\n overallProgress: overallProgress\r\n };\r\n stub.agent = overallTask;\r\n stub.__block = overallProgress;\r\n scheduler._pipe(seriesModel, stub);\r\n }\r\n if (shouldOverallTaskDirty) {\r\n overallTask.dirty();\r\n }\r\n };\r\n Scheduler.prototype._pipe = function (seriesModel, task) {\r\n var pipelineId = seriesModel.uid;\r\n var pipeline = this._pipelineMap.get(pipelineId);\r\n !pipeline.head && (pipeline.head = task);\r\n pipeline.tail && pipeline.tail.pipe(task);\r\n pipeline.tail = task;\r\n task.__idxInPipeline = pipeline.count++;\r\n task.__pipeline = pipeline;\r\n };\r\n Scheduler.wrapStageHandler = function (stageHandler, visualType) {\r\n if (isFunction(stageHandler)) {\r\n stageHandler = {\r\n overallReset: stageHandler,\r\n seriesType: detectSeriseType(stageHandler)\r\n };\r\n }\r\n stageHandler.uid = getUID('stageHandler');\r\n visualType && (stageHandler.visualType = visualType);\r\n return stageHandler;\r\n };\r\n return Scheduler;\r\n}());\r\nfunction overallTaskReset(context) {\r\n context.overallReset(context.ecModel, context.api, context.payload);\r\n}\r\nfunction stubReset(context) {\r\n return context.overallProgress && stubProgress;\r\n}\r\nfunction stubProgress() {\r\n this.agent.dirty();\r\n this.getDownstream().dirty();\r\n}\r\nfunction stubOnDirty() {\r\n this.agent && this.agent.dirty();\r\n}\r\nfunction seriesTaskPlan(context) {\r\n return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;\r\n}\r\nfunction seriesTaskReset(context) {\r\n if (context.useClearVisual) {\r\n context.data.clearAllVisual();\r\n }\r\n var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\r\n return resetDefines.length > 1\r\n ? map(resetDefines, function (v, idx) {\r\n return makeSeriesTaskProgress(idx);\r\n })\r\n : singleSeriesTaskProgress;\r\n}\r\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\r\nfunction makeSeriesTaskProgress(resetDefineIdx) {\r\n return function (params, context) {\r\n var data = context.data;\r\n var resetDefine = context.resetDefines[resetDefineIdx];\r\n if (resetDefine && resetDefine.dataEach) {\r\n for (var i = params.start; i < params.end; i++) {\r\n resetDefine.dataEach(data, i);\r\n }\r\n }\r\n else if (resetDefine && resetDefine.progress) {\r\n resetDefine.progress(params, data);\r\n }\r\n };\r\n}\r\nfunction seriesTaskCount(context) {\r\n return context.data.count();\r\n}\r\nfunction detectSeriseType(legacyFunc) {\r\n seriesType = null;\r\n try {\r\n legacyFunc(ecModelMock, apiMock);\r\n }\r\n catch (e) {\r\n }\r\n return seriesType;\r\n}\r\nvar ecModelMock = {};\r\nvar apiMock = {};\r\nvar seriesType;\r\nmockMethods(ecModelMock, GlobalModel);\r\nmockMethods(apiMock, ExtensionAPI);\r\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\r\n seriesType = type;\r\n};\r\necModelMock.eachComponent = function (cond) {\r\n if (cond.mainType === 'series' && cond.subType) {\r\n seriesType = cond.subType;\r\n }\r\n};\r\nfunction mockMethods(target, Clz) {\r\n for (var name_1 in Clz.prototype) {\r\n target[name_1] = noop;\r\n }\r\n}\n\nvar colorAll = [\r\n '#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f',\r\n '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'\r\n];\r\nvar lightTheme = {\r\n color: colorAll,\r\n colorLayer: [\r\n ['#37A2DA', '#ffd85c', '#fd7b5f'],\r\n ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'],\r\n ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'],\r\n colorAll\r\n ]\r\n};\n\nvar contrastColor = '#B9B8CE';\r\nvar backgroundColor = '#100C2A';\r\nvar axisCommon = function () {\r\n return {\r\n axisLine: {\r\n lineStyle: {\r\n color: contrastColor\r\n }\r\n },\r\n splitLine: {\r\n lineStyle: {\r\n color: '#484753'\r\n }\r\n },\r\n splitArea: {\r\n areaStyle: {\r\n color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)']\r\n }\r\n },\r\n minorSplitLine: {\r\n lineStyle: {\r\n color: '#20203B'\r\n }\r\n }\r\n };\r\n};\r\nvar colorPalette = [\r\n '#4992ff',\r\n '#7cffb2',\r\n '#fddd60',\r\n '#ff6e76',\r\n '#58d9f9',\r\n '#05c091',\r\n '#ff8a45',\r\n '#8d48e3',\r\n '#dd79ff'\r\n];\r\nvar theme = {\r\n darkMode: true,\r\n color: colorPalette,\r\n backgroundColor: backgroundColor,\r\n axisPointer: {\r\n lineStyle: {\r\n color: '#817f91'\r\n },\r\n crossStyle: {\r\n color: '#817f91'\r\n },\r\n label: {\r\n color: '#fff'\r\n }\r\n },\r\n legend: {\r\n textStyle: {\r\n color: contrastColor\r\n }\r\n },\r\n textStyle: {\r\n color: contrastColor\r\n },\r\n title: {\r\n textStyle: {\r\n color: '#EEF1FA'\r\n },\r\n subtextStyle: {\r\n color: '#B9B8CE'\r\n }\r\n },\r\n toolbox: {\r\n iconStyle: {\r\n borderColor: contrastColor\r\n }\r\n },\r\n dataZoom: {\r\n borderColor: '#71708A',\r\n textStyle: {\r\n color: contrastColor\r\n },\r\n brushStyle: {\r\n color: 'rgba(135,163,206,0.3)'\r\n },\r\n handleStyle: {\r\n color: '#353450',\r\n borderColor: '#C5CBE3'\r\n },\r\n moveHandleStyle: {\r\n color: '#B0B6C3',\r\n opacity: 0.3\r\n },\r\n fillerColor: 'rgba(135,163,206,0.2)',\r\n emphasis: {\r\n handleStyle: {\r\n borderColor: '#91B7F2',\r\n color: '#4D587D'\r\n },\r\n moveHandleStyle: {\r\n color: '#636D9A',\r\n opacity: 0.7\r\n }\r\n },\r\n dataBackground: {\r\n lineStyle: {\r\n color: '#71708A',\r\n width: 1\r\n },\r\n areaStyle: {\r\n color: '#71708A'\r\n }\r\n },\r\n selectedDataBackground: {\r\n lineStyle: {\r\n color: '#87A3CE'\r\n },\r\n areaStyle: {\r\n color: '#87A3CE'\r\n }\r\n }\r\n },\r\n visualMap: {\r\n textStyle: {\r\n color: contrastColor\r\n }\r\n },\r\n timeline: {\r\n lineStyle: {\r\n color: contrastColor\r\n },\r\n label: {\r\n color: contrastColor\r\n },\r\n controlStyle: {\r\n color: contrastColor,\r\n borderColor: contrastColor\r\n }\r\n },\r\n calendar: {\r\n itemStyle: {\r\n color: backgroundColor\r\n },\r\n dayLabel: {\r\n color: contrastColor\r\n },\r\n monthLabel: {\r\n color: contrastColor\r\n },\r\n yearLabel: {\r\n color: contrastColor\r\n }\r\n },\r\n timeAxis: axisCommon(),\r\n logAxis: axisCommon(),\r\n valueAxis: axisCommon(),\r\n categoryAxis: axisCommon(),\r\n line: {\r\n symbol: 'circle'\r\n },\r\n graph: {\r\n color: colorPalette\r\n },\r\n gauge: {\r\n title: {\r\n color: contrastColor\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: [[1, 'rgba(207,212,219,0.2)']]\r\n }\r\n },\r\n axisLabel: {\r\n color: contrastColor\r\n },\r\n detail: {\r\n color: '#EEF1FA'\r\n }\r\n },\r\n candlestick: {\r\n itemStyle: {\r\n color: '#FD1050',\r\n color0: '#0CF49B',\r\n borderColor: '#FD1050',\r\n borderColor0: '#0CF49B'\r\n }\r\n }\r\n};\r\ntheme.categoryAxis.splitLine.show = false;\n\nvar DatasetModel = (function (_super) {\r\n __extends(DatasetModel, _super);\r\n function DatasetModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = 'dataset';\r\n return _this;\r\n }\r\n DatasetModel.prototype.init = function (option, parentModel, ecModel) {\r\n _super.prototype.init.call(this, option, parentModel, ecModel);\r\n this._sourceManager = new SourceManager(this);\r\n disableTransformOptionMerge(this);\r\n };\r\n DatasetModel.prototype.mergeOption = function (newOption, ecModel) {\r\n _super.prototype.mergeOption.call(this, newOption, ecModel);\r\n disableTransformOptionMerge(this);\r\n };\r\n DatasetModel.prototype.optionUpdated = function () {\r\n this._sourceManager.dirty();\r\n };\r\n DatasetModel.prototype.getSourceManager = function () {\r\n return this._sourceManager;\r\n };\r\n DatasetModel.type = 'dataset';\r\n DatasetModel.defaultOption = {\r\n seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN\r\n };\r\n return DatasetModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(DatasetModel);\r\nvar DatasetView = (function (_super) {\r\n __extends(DatasetView, _super);\r\n function DatasetView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = 'dataset';\r\n return _this;\r\n }\r\n DatasetView.type = 'dataset';\r\n return DatasetView;\r\n}(ComponentView));\r\nComponentView.registerClass(DatasetView);\n\nvar storage = createHashMap();\r\nvar mapDataStorage = {\r\n registerMap: function (mapName, rawDef, rawSpecialAreas) {\r\n var records;\r\n if (isArray(rawDef)) {\r\n records = rawDef;\r\n }\r\n else if (rawDef.svg) {\r\n records = [{\r\n type: 'svg',\r\n source: rawDef.svg,\r\n specialAreas: rawDef.specialAreas\r\n }];\r\n }\r\n else {\r\n var geoSource = rawDef.geoJson\r\n || rawDef.geoJSON;\r\n if (geoSource && !rawDef.features) {\r\n rawSpecialAreas = rawDef.specialAreas;\r\n rawDef = geoSource;\r\n }\r\n records = [{\r\n type: 'geoJSON',\r\n source: rawDef,\r\n specialAreas: rawSpecialAreas\r\n }];\r\n }\r\n each(records, function (record) {\r\n var type = record.type;\r\n type === 'geoJson' && (type = record.type = 'geoJSON');\r\n var parse = parsers[type];\r\n if (__DEV__) {\r\n assert(parse, 'Illegal map type: ' + type);\r\n }\r\n parse(record);\r\n });\r\n return storage.set(mapName, records);\r\n },\r\n retrieveMap: function (mapName) {\r\n return storage.get(mapName);\r\n }\r\n};\r\nvar parsers = {\r\n geoJSON: function (record) {\r\n var source = record.source;\r\n record.geoJSON = !isString(source)\r\n ? source\r\n : (typeof JSON !== 'undefined' && JSON.parse)\r\n ? JSON.parse(source)\r\n : (new Function('return (' + source + ');'))();\r\n },\r\n svg: function (record) {\r\n record.svgXML = parseXML(record.source);\r\n }\r\n};\n\nvar ECEventProcessor = (function () {\r\n function ECEventProcessor() {\r\n }\r\n ECEventProcessor.prototype.normalizeQuery = function (query) {\r\n var cptQuery = {};\r\n var dataQuery = {};\r\n var otherQuery = {};\r\n if (isString(query)) {\r\n var condCptType = parseClassType(query);\r\n cptQuery.mainType = condCptType.main || null;\r\n cptQuery.subType = condCptType.sub || null;\r\n }\r\n else {\r\n var suffixes_1 = ['Index', 'Name', 'Id'];\r\n var dataKeys_1 = { name: 1, dataIndex: 1, dataType: 1 };\r\n each(query, function (val, key) {\r\n var reserved = false;\r\n for (var i = 0; i < suffixes_1.length; i++) {\r\n var propSuffix = suffixes_1[i];\r\n var suffixPos = key.lastIndexOf(propSuffix);\r\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\r\n var mainType = key.slice(0, suffixPos);\r\n if (mainType !== 'data') {\r\n cptQuery.mainType = mainType;\r\n cptQuery[propSuffix.toLowerCase()] = val;\r\n reserved = true;\r\n }\r\n }\r\n }\r\n if (dataKeys_1.hasOwnProperty(key)) {\r\n dataQuery[key] = val;\r\n reserved = true;\r\n }\r\n if (!reserved) {\r\n otherQuery[key] = val;\r\n }\r\n });\r\n }\r\n return {\r\n cptQuery: cptQuery,\r\n dataQuery: dataQuery,\r\n otherQuery: otherQuery\r\n };\r\n };\r\n ECEventProcessor.prototype.filter = function (eventType, query) {\r\n var eventInfo = this.eventInfo;\r\n if (!eventInfo) {\r\n return true;\r\n }\r\n var targetEl = eventInfo.targetEl;\r\n var packedEvent = eventInfo.packedEvent;\r\n var model = eventInfo.model;\r\n var view = eventInfo.view;\r\n if (!model || !view) {\r\n return true;\r\n }\r\n var cptQuery = query.cptQuery;\r\n var dataQuery = query.dataQuery;\r\n return check(cptQuery, model, 'mainType')\r\n && check(cptQuery, model, 'subType')\r\n && check(cptQuery, model, 'index', 'componentIndex')\r\n && check(cptQuery, model, 'name')\r\n && check(cptQuery, model, 'id')\r\n && check(dataQuery, packedEvent, 'name')\r\n && check(dataQuery, packedEvent, 'dataIndex')\r\n && check(dataQuery, packedEvent, 'dataType')\r\n && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\r\n function check(query, host, prop, propOnHost) {\r\n return query[prop] == null || host[propOnHost || prop] === query[prop];\r\n }\r\n };\r\n ECEventProcessor.prototype.afterTrigger = function () {\r\n this.eventInfo = null;\r\n };\r\n return ECEventProcessor;\r\n}());\n\nvar seriesSymbolTask = {\r\n createOnAllSeries: true,\r\n performRawSeries: true,\r\n reset: function (seriesModel, ecModel) {\r\n var data = seriesModel.getData();\r\n if (seriesModel.legendSymbol) {\r\n data.setVisual('legendSymbol', seriesModel.legendSymbol);\r\n }\r\n if (!seriesModel.hasSymbolVisual) {\r\n return;\r\n }\r\n var symbolType = seriesModel.get('symbol');\r\n var symbolSize = seriesModel.get('symbolSize');\r\n var keepAspect = seriesModel.get('symbolKeepAspect');\r\n var symbolRotate = seriesModel.get('symbolRotate');\r\n var hasSymbolTypeCallback = isFunction(symbolType);\r\n var hasSymbolSizeCallback = isFunction(symbolSize);\r\n var hasSymbolRotateCallback = isFunction(symbolRotate);\r\n var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\r\n var seriesSymbol = (!hasSymbolTypeCallback && symbolType) ? symbolType : seriesModel.defaultSymbol;\r\n var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\r\n var seriesSymbolRotate = !hasSymbolRotateCallback ? symbolRotate : null;\r\n data.setVisual({\r\n legendSymbol: seriesModel.legendSymbol || seriesSymbol,\r\n symbol: seriesSymbol,\r\n symbolSize: seriesSymbolSize,\r\n symbolKeepAspect: keepAspect,\r\n symbolRotate: seriesSymbolRotate\r\n });\r\n if (ecModel.isSeriesFiltered(seriesModel)) {\r\n return;\r\n }\r\n function dataEach(data, idx) {\r\n var rawValue = seriesModel.getRawValue(idx);\r\n var params = seriesModel.getDataParams(idx);\r\n hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\r\n hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\r\n hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\r\n }\r\n return { dataEach: hasCallback ? dataEach : null };\r\n }\r\n};\r\nvar dataSymbolTask = {\r\n createOnAllSeries: true,\r\n performRawSeries: true,\r\n reset: function (seriesModel, ecModel) {\r\n if (!seriesModel.hasSymbolVisual) {\r\n return;\r\n }\r\n if (ecModel.isSeriesFiltered(seriesModel)) {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n function dataEach(data, idx) {\r\n var itemModel = data.getItemModel(idx);\r\n var itemSymbolType = itemModel.getShallow('symbol', true);\r\n var itemSymbolSize = itemModel.getShallow('symbolSize', true);\r\n var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\r\n var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true);\r\n if (itemSymbolType != null) {\r\n data.setItemVisual(idx, 'symbol', itemSymbolType);\r\n }\r\n if (itemSymbolSize != null) {\r\n data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\r\n }\r\n if (itemSymbolRotate != null) {\r\n data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\r\n }\r\n if (itemSymbolKeepAspect != null) {\r\n data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\r\n }\r\n }\r\n return { dataEach: data.hasItemOption ? dataEach : null };\r\n }\r\n};\n\nfunction getItemVisualFromData(data, dataIndex, key) {\r\n switch (key) {\r\n case 'color':\r\n var style = data.getItemVisual(dataIndex, 'style');\r\n return style[data.getVisual('drawType')];\r\n case 'opacity':\r\n return data.getItemVisual(dataIndex, 'style').opacity;\r\n case 'symbol':\r\n case 'symbolSize':\r\n case 'liftZ':\r\n return data.getItemVisual(dataIndex, key);\r\n default:\r\n if (__DEV__) {\r\n console.warn(\"Unknown visual type \" + key);\r\n }\r\n }\r\n}\r\nfunction getVisualFromData(data, key) {\r\n switch (key) {\r\n case 'color':\r\n var style = data.getVisual('style');\r\n return style[data.getVisual('drawType')];\r\n case 'opacity':\r\n return data.getVisual('style').opacity;\r\n case 'symbol':\r\n case 'symbolSize':\r\n case 'liftZ':\r\n return data.getVisual(key);\r\n default:\r\n if (__DEV__) {\r\n console.warn(\"Unknown visual type \" + key);\r\n }\r\n }\r\n}\r\nfunction setItemVisualFromData(data, dataIndex, key, value) {\r\n switch (key) {\r\n case 'color':\r\n var style = data.ensureUniqueItemVisual(dataIndex, 'style');\r\n style[data.getVisual('drawType')] = value;\r\n data.setItemVisual(dataIndex, 'colorFromPalette', false);\r\n break;\r\n case 'opacity':\r\n data.ensureUniqueItemVisual(dataIndex, 'style').opacity = value;\r\n break;\r\n case 'symbol':\r\n case 'symbolSize':\r\n case 'liftZ':\r\n data.setItemVisual(dataIndex, key, value);\r\n break;\r\n default:\r\n if (__DEV__) {\r\n console.warn(\"Unknown visual type \" + key);\r\n }\r\n }\r\n}\n\nvar PI2$7 = Math.PI * 2;\r\nvar CMD$4 = PathProxy.CMD;\r\nvar DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\r\nfunction getCandidateAnchor(pos, distance, rect, outPt, outDir) {\r\n var width = rect.width;\r\n var height = rect.height;\r\n switch (pos) {\r\n case 'top':\r\n outPt.set(rect.x + width / 2, rect.y - distance);\r\n outDir.set(0, -1);\r\n break;\r\n case 'bottom':\r\n outPt.set(rect.x + width / 2, rect.y + height + distance);\r\n outDir.set(0, 1);\r\n break;\r\n case 'left':\r\n outPt.set(rect.x - distance, rect.y + height / 2);\r\n outDir.set(-1, 0);\r\n break;\r\n case 'right':\r\n outPt.set(rect.x + width + distance, rect.y + height / 2);\r\n outDir.set(1, 0);\r\n break;\r\n }\r\n}\r\nfunction projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\r\n x -= cx;\r\n y -= cy;\r\n var d = Math.sqrt(x * x + y * y);\r\n x /= d;\r\n y /= d;\r\n var ox = x * r + cx;\r\n var oy = y * r + cy;\r\n if (Math.abs(startAngle - endAngle) % PI2$7 < 1e-4) {\r\n out[0] = ox;\r\n out[1] = oy;\r\n return d - r;\r\n }\r\n if (anticlockwise) {\r\n var tmp = startAngle;\r\n startAngle = normalizeRadian(endAngle);\r\n endAngle = normalizeRadian(tmp);\r\n }\r\n else {\r\n startAngle = normalizeRadian(startAngle);\r\n endAngle = normalizeRadian(endAngle);\r\n }\r\n if (startAngle > endAngle) {\r\n endAngle += PI2$7;\r\n }\r\n var angle = Math.atan2(y, x);\r\n if (angle < 0) {\r\n angle += PI2$7;\r\n }\r\n if ((angle >= startAngle && angle <= endAngle)\r\n || (angle + PI2$7 >= startAngle && angle + PI2$7 <= endAngle)) {\r\n out[0] = ox;\r\n out[1] = oy;\r\n return d - r;\r\n }\r\n var x1 = r * Math.cos(startAngle) + cx;\r\n var y1 = r * Math.sin(startAngle) + cy;\r\n var x2 = r * Math.cos(endAngle) + cx;\r\n var y2 = r * Math.sin(endAngle) + cy;\r\n var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\r\n var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\r\n if (d1 < d2) {\r\n out[0] = x1;\r\n out[1] = y1;\r\n return Math.sqrt(d1);\r\n }\r\n else {\r\n out[0] = x2;\r\n out[1] = y2;\r\n return Math.sqrt(d2);\r\n }\r\n}\r\nfunction projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\r\n var dx = x - x1;\r\n var dy = y - y1;\r\n var dx1 = x2 - x1;\r\n var dy1 = y2 - y1;\r\n var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n dx1 /= lineLen;\r\n dy1 /= lineLen;\r\n var projectedLen = dx * dx1 + dy * dy1;\r\n var t = projectedLen / lineLen;\r\n if (limitToEnds) {\r\n t = Math.min(Math.max(t, 0), 1);\r\n }\r\n t *= lineLen;\r\n var ox = out[0] = x1 + t * dx1;\r\n var oy = out[1] = y1 + t * dy1;\r\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n}\r\nfunction projectPointToRect(x1, y1, width, height, x, y, out) {\r\n if (width < 0) {\r\n x1 = x1 + width;\r\n width = -width;\r\n }\r\n if (height < 0) {\r\n y1 = y1 + height;\r\n height = -height;\r\n }\r\n var x2 = x1 + width;\r\n var y2 = y1 + height;\r\n var ox = out[0] = Math.min(Math.max(x, x1), x2);\r\n var oy = out[1] = Math.min(Math.max(y, y1), y2);\r\n return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n}\r\nvar tmpPt = [];\r\nfunction nearestPointOnRect(pt, rect, out) {\r\n var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\r\n out.set(tmpPt[0], tmpPt[1]);\r\n return dist;\r\n}\r\nfunction nearestPointOnPath(pt, path, out) {\r\n var xi = 0;\r\n var yi = 0;\r\n var x0 = 0;\r\n var y0 = 0;\r\n var x1;\r\n var y1;\r\n var minDist = Infinity;\r\n var data = path.data;\r\n var x = pt.x;\r\n var y = pt.y;\r\n for (var i = 0; i < data.length;) {\r\n var cmd = data[i++];\r\n if (i === 1) {\r\n xi = data[i];\r\n yi = data[i + 1];\r\n x0 = xi;\r\n y0 = yi;\r\n }\r\n var d = minDist;\r\n switch (cmd) {\r\n case CMD$4.M:\r\n x0 = data[i++];\r\n y0 = data[i++];\r\n xi = x0;\r\n yi = y0;\r\n break;\r\n case CMD$4.L:\r\n d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD$4.C:\r\n d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD$4.Q:\r\n d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\r\n xi = data[i++];\r\n yi = data[i++];\r\n break;\r\n case CMD$4.A:\r\n var cx = data[i++];\r\n var cy = data[i++];\r\n var rx = data[i++];\r\n var ry = data[i++];\r\n var theta = data[i++];\r\n var dTheta = data[i++];\r\n i += 1;\r\n var anticlockwise = !!(1 - data[i++]);\r\n x1 = Math.cos(theta) * rx + cx;\r\n y1 = Math.sin(theta) * ry + cy;\r\n if (i <= 1) {\r\n x0 = x1;\r\n y0 = y1;\r\n }\r\n var _x = (x - cx) * ry / rx + cx;\r\n d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\r\n xi = Math.cos(theta + dTheta) * rx + cx;\r\n yi = Math.sin(theta + dTheta) * ry + cy;\r\n break;\r\n case CMD$4.R:\r\n x0 = xi = data[i++];\r\n y0 = yi = data[i++];\r\n var width = data[i++];\r\n var height = data[i++];\r\n d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\r\n break;\r\n case CMD$4.Z:\r\n d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\r\n xi = x0;\r\n yi = y0;\r\n break;\r\n }\r\n if (d < minDist) {\r\n minDist = d;\r\n out.set(tmpPt[0], tmpPt[1]);\r\n }\r\n }\r\n return minDist;\r\n}\r\nvar pt0 = new Point();\r\nvar pt1 = new Point();\r\nvar pt2 = new Point();\r\nvar dir = new Point();\r\nvar dir2 = new Point();\r\nfunction updateLabelLinePoints(target, labelLineModel) {\r\n if (!target) {\r\n return;\r\n }\r\n var labelLine = target.getTextGuideLine();\r\n var label = target.getTextContent();\r\n if (!(label && labelLine)) {\r\n return;\r\n }\r\n var labelGuideConfig = target.textGuideLineConfig || {};\r\n var points = [[0, 0], [0, 0], [0, 0]];\r\n var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\r\n var labelRect = label.getBoundingRect().clone();\r\n labelRect.applyTransform(label.getComputedTransform());\r\n var minDist = Infinity;\r\n var anchorPoint = labelGuideConfig.anchor;\r\n var targetTransform = target.getComputedTransform();\r\n var targetInversedTransform = targetTransform && invert([], targetTransform);\r\n var len = labelLineModel.get('length2') || 0;\r\n if (anchorPoint) {\r\n pt2.copy(anchorPoint);\r\n }\r\n for (var i = 0; i < searchSpace.length; i++) {\r\n var candidate = searchSpace[i];\r\n getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\r\n Point.scaleAndAdd(pt1, pt0, dir, len);\r\n pt1.transform(targetInversedTransform);\r\n var boundingRect = target.getBoundingRect();\r\n var dist = anchorPoint ? anchorPoint.distance(pt1)\r\n : (target instanceof Path\r\n ? nearestPointOnPath(pt1, target.path, pt2)\r\n : nearestPointOnRect(pt1, boundingRect, pt2));\r\n if (dist < minDist) {\r\n minDist = dist;\r\n pt1.transform(targetTransform);\r\n pt2.transform(targetTransform);\r\n pt2.toArray(points[0]);\r\n pt1.toArray(points[1]);\r\n pt0.toArray(points[2]);\r\n }\r\n }\r\n limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\r\n labelLine.setShape({ points: points });\r\n}\r\nvar tmpArr$1 = [];\r\nvar tmpProjPoint = new Point();\r\nfunction limitTurnAngle(linePoints, minTurnAngle) {\r\n if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\r\n return;\r\n }\r\n minTurnAngle = minTurnAngle / 180 * Math.PI;\r\n pt0.fromArray(linePoints[0]);\r\n pt1.fromArray(linePoints[1]);\r\n pt2.fromArray(linePoints[2]);\r\n Point.sub(dir, pt0, pt1);\r\n Point.sub(dir2, pt2, pt1);\r\n var len1 = dir.len();\r\n var len2 = dir2.len();\r\n if (len1 < 1e-3 || len2 < 1e-3) {\r\n return;\r\n }\r\n dir.scale(1 / len1);\r\n dir2.scale(1 / len2);\r\n var angleCos = dir.dot(dir2);\r\n var minTurnAngleCos = Math.cos(minTurnAngle);\r\n if (minTurnAngleCos < angleCos) {\r\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr$1, false);\r\n tmpProjPoint.fromArray(tmpArr$1);\r\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));\r\n var t = pt2.x !== pt1.x\r\n ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n if (isNaN(t)) {\r\n return;\r\n }\r\n if (t < 0) {\r\n Point.copy(tmpProjPoint, pt1);\r\n }\r\n else if (t > 1) {\r\n Point.copy(tmpProjPoint, pt2);\r\n }\r\n tmpProjPoint.toArray(linePoints[1]);\r\n }\r\n}\r\nfunction limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\r\n if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\r\n return;\r\n }\r\n maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\r\n pt0.fromArray(linePoints[0]);\r\n pt1.fromArray(linePoints[1]);\r\n pt2.fromArray(linePoints[2]);\r\n Point.sub(dir, pt1, pt0);\r\n Point.sub(dir2, pt2, pt1);\r\n var len1 = dir.len();\r\n var len2 = dir2.len();\r\n if (len1 < 1e-3 || len2 < 1e-3) {\r\n return;\r\n }\r\n dir.scale(1 / len1);\r\n dir2.scale(1 / len2);\r\n var angleCos = dir.dot(surfaceNormal);\r\n var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\r\n if (angleCos < maxSurfaceAngleCos) {\r\n var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr$1, false);\r\n tmpProjPoint.fromArray(tmpArr$1);\r\n var HALF_PI = Math.PI / 2;\r\n var angle2 = Math.acos(dir2.dot(surfaceNormal));\r\n var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\r\n if (newAngle >= HALF_PI) {\r\n Point.copy(tmpProjPoint, pt2);\r\n }\r\n else {\r\n tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));\r\n var t = pt2.x !== pt1.x\r\n ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n if (isNaN(t)) {\r\n return;\r\n }\r\n if (t < 0) {\r\n Point.copy(tmpProjPoint, pt1);\r\n }\r\n else if (t > 1) {\r\n Point.copy(tmpProjPoint, pt2);\r\n }\r\n }\r\n tmpProjPoint.toArray(linePoints[1]);\r\n }\r\n}\r\nfunction setLabelLineState(labelLine, ignore, stateName, stateModel) {\r\n var isNormal = stateName === 'normal';\r\n var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);\r\n stateObj.ignore = ignore;\r\n var smooth = stateModel.get('smooth');\r\n if (smooth && smooth === true) {\r\n smooth = 0.3;\r\n }\r\n stateObj.shape = stateObj.shape || {};\r\n if (smooth > 0) {\r\n stateObj.shape.smooth = smooth;\r\n }\r\n var styleObj = stateModel.getModel('lineStyle').getLineStyle();\r\n isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\r\n}\r\nfunction buildLabelLinePath(path, shape) {\r\n var smooth = shape.smooth;\r\n var points = shape.points;\r\n if (!points) {\r\n return;\r\n }\r\n path.moveTo(points[0][0], points[0][1]);\r\n if (smooth > 0 && points.length >= 3) {\r\n var len1 = dist(points[0], points[1]);\r\n var len2 = dist(points[1], points[2]);\r\n if (!len1 || !len2) {\r\n path.lineTo(points[1][0], points[1][1]);\r\n path.lineTo(points[2][0], points[2][1]);\r\n return;\r\n }\r\n var moveLen = Math.min(len1, len2) * smooth;\r\n var midPoint0 = lerp([], points[1], points[0], moveLen / len1);\r\n var midPoint2 = lerp([], points[1], points[2], moveLen / len2);\r\n var midPoint1 = lerp([], midPoint0, midPoint2, 0.5);\r\n path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\r\n path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\r\n }\r\n else {\r\n for (var i = 1; i < points.length; i++) {\r\n path.lineTo(points[i][0], points[i][1]);\r\n }\r\n }\r\n}\r\nfunction setLabelLineStyle(targetEl, statesModels, defaultStyle) {\r\n var labelLine = targetEl.getTextGuideLine();\r\n var label = targetEl.getTextContent();\r\n if (!label) {\r\n if (labelLine) {\r\n targetEl.removeTextGuideLine();\r\n }\r\n return;\r\n }\r\n var normalModel = statesModels.normal;\r\n var showNormal = normalModel.get('show');\r\n var labelIgnoreNormal = label.ignore;\r\n for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n var stateName = DISPLAY_STATES[i];\r\n var stateModel = statesModels[stateName];\r\n var isNormal = stateName === 'normal';\r\n if (stateModel) {\r\n var stateShow = stateModel.get('show');\r\n var isLabelIgnored = isNormal\r\n ? labelIgnoreNormal\r\n : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\r\n if (isLabelIgnored\r\n || !retrieve2(stateShow, showNormal)) {\r\n var stateObj = isNormal ? labelLine : (labelLine && labelLine.states.normal);\r\n if (stateObj) {\r\n stateObj.ignore = true;\r\n }\r\n continue;\r\n }\r\n if (!labelLine) {\r\n labelLine = new Polyline();\r\n targetEl.setTextGuideLine(labelLine);\r\n if (!isNormal && (labelIgnoreNormal || !showNormal)) {\r\n setLabelLineState(labelLine, true, 'normal', statesModels.normal);\r\n }\r\n if (targetEl.stateProxy) {\r\n labelLine.stateProxy = targetEl.stateProxy;\r\n }\r\n }\r\n setLabelLineState(labelLine, false, stateName, stateModel);\r\n }\r\n }\r\n if (labelLine) {\r\n defaults(labelLine.style, defaultStyle);\r\n labelLine.style.fill = null;\r\n var showAbove = normalModel.get('showAbove');\r\n var labelLineConfig = (targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {});\r\n labelLineConfig.showAbove = showAbove || false;\r\n labelLine.buildPath = buildLabelLinePath;\r\n }\r\n}\r\nfunction getLabelLineStatesModels(itemModel, labelLineName) {\r\n labelLineName = (labelLineName || 'labelLine');\r\n var statesModels = {\r\n normal: itemModel.getModel(labelLineName)\r\n };\r\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n var stateName = SPECIAL_STATES[i];\r\n statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\r\n }\r\n return statesModels;\r\n}\n\nfunction prepareLayoutList(input) {\r\n var list = [];\r\n for (var i = 0; i < input.length; i++) {\r\n var rawItem = input[i];\r\n if (rawItem.defaultAttr.ignore) {\r\n continue;\r\n }\r\n var label = rawItem.label;\r\n var transform = label.getComputedTransform();\r\n var localRect = label.getBoundingRect();\r\n var isAxisAligned = !transform || (transform[1] < 1e-5 && transform[2] < 1e-5);\r\n var minMargin = label.style.margin || 0;\r\n var globalRect = localRect.clone();\r\n globalRect.applyTransform(transform);\r\n globalRect.x -= minMargin / 2;\r\n globalRect.y -= minMargin / 2;\r\n globalRect.width += minMargin;\r\n globalRect.height += minMargin;\r\n var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform) : null;\r\n list.push({\r\n label: label,\r\n labelLine: rawItem.labelLine,\r\n rect: globalRect,\r\n localRect: localRect,\r\n obb: obb,\r\n priority: rawItem.priority,\r\n defaultAttr: rawItem.defaultAttr,\r\n layoutOption: rawItem.computedLayoutOption,\r\n axisAligned: isAxisAligned,\r\n transform: transform\r\n });\r\n }\r\n return list;\r\n}\r\nfunction shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {\r\n var len = list.length;\r\n if (len < 2) {\r\n return;\r\n }\r\n list.sort(function (a, b) {\r\n return a.rect[xyDim] - b.rect[xyDim];\r\n });\r\n var lastPos = 0;\r\n var delta;\r\n var adjusted = false;\r\n var totalShifts = 0;\r\n for (var i = 0; i < len; i++) {\r\n var item = list[i];\r\n var rect = item.rect;\r\n delta = rect[xyDim] - lastPos;\r\n if (delta < 0) {\r\n rect[xyDim] -= delta;\r\n item.label[xyDim] -= delta;\r\n adjusted = true;\r\n }\r\n var shift = Math.max(-delta, 0);\r\n totalShifts += shift;\r\n lastPos = rect[xyDim] + rect[sizeDim];\r\n }\r\n if (totalShifts > 0 && balanceShift) {\r\n shiftList(-totalShifts / len, 0, len);\r\n }\r\n var first = list[0];\r\n var last = list[len - 1];\r\n var minGap;\r\n var maxGap;\r\n updateMinMaxGap();\r\n minGap < 0 && squeezeGaps(-minGap, 0.8);\r\n maxGap < 0 && squeezeGaps(maxGap, 0.8);\r\n updateMinMaxGap();\r\n takeBoundsGap(minGap, maxGap, 1);\r\n takeBoundsGap(maxGap, minGap, -1);\r\n updateMinMaxGap();\r\n if (minGap < 0) {\r\n squeezeWhenBailout(-minGap);\r\n }\r\n if (maxGap < 0) {\r\n squeezeWhenBailout(maxGap);\r\n }\r\n function updateMinMaxGap() {\r\n minGap = first.rect[xyDim] - minBound;\r\n maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];\r\n }\r\n function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {\r\n if (gapThisBound < 0) {\r\n var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);\r\n if (moveFromMaxGap > 0) {\r\n shiftList(moveFromMaxGap * moveDir, 0, len);\r\n var remained = moveFromMaxGap + gapThisBound;\r\n if (remained < 0) {\r\n squeezeGaps(-remained * moveDir, 1);\r\n }\r\n }\r\n else {\r\n squeezeGaps(-gapThisBound * moveDir, 1);\r\n }\r\n }\r\n }\r\n function shiftList(delta, start, end) {\r\n if (delta !== 0) {\r\n adjusted = true;\r\n }\r\n for (var i = start; i < end; i++) {\r\n var item = list[i];\r\n var rect = item.rect;\r\n rect[xyDim] += delta;\r\n item.label[xyDim] += delta;\r\n }\r\n }\r\n function squeezeGaps(delta, maxSqeezePercent) {\r\n var gaps = [];\r\n var totalGaps = 0;\r\n for (var i = 1; i < len; i++) {\r\n var prevItemRect = list[i - 1].rect;\r\n var gap = Math.max(list[i].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);\r\n gaps.push(gap);\r\n totalGaps += gap;\r\n }\r\n if (!totalGaps) {\r\n return;\r\n }\r\n var squeezePercent = Math.min(Math.abs(delta) / totalGaps, maxSqeezePercent);\r\n if (delta > 0) {\r\n for (var i = 0; i < len - 1; i++) {\r\n var movement = gaps[i] * squeezePercent;\r\n shiftList(movement, 0, i + 1);\r\n }\r\n }\r\n else {\r\n for (var i = len - 1; i > 0; i--) {\r\n var movement = gaps[i - 1] * squeezePercent;\r\n shiftList(-movement, i, len);\r\n }\r\n }\r\n }\r\n function squeezeWhenBailout(delta) {\r\n var dir = delta < 0 ? -1 : 1;\r\n delta = Math.abs(delta);\r\n var moveForEachLabel = Math.ceil(delta / (len - 1));\r\n for (var i = 0; i < len - 1; i++) {\r\n if (dir > 0) {\r\n shiftList(moveForEachLabel, 0, i + 1);\r\n }\r\n else {\r\n shiftList(-moveForEachLabel, len - i - 1, len);\r\n }\r\n delta -= moveForEachLabel;\r\n if (delta <= 0) {\r\n return;\r\n }\r\n }\r\n }\r\n return adjusted;\r\n}\r\nfunction shiftLayoutOnX(list, leftBound, rightBound, balanceShift) {\r\n return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift);\r\n}\r\nfunction shiftLayoutOnY(list, topBound, bottomBound, balanceShift) {\r\n return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift);\r\n}\r\nfunction hideOverlap(labelList) {\r\n var displayedLabels = [];\r\n labelList.sort(function (a, b) {\r\n return b.priority - a.priority;\r\n });\r\n var globalRect = new BoundingRect(0, 0, 0, 0);\r\n function hideEl(el) {\r\n if (!el.ignore) {\r\n var emphasisState = el.ensureState('emphasis');\r\n if (emphasisState.ignore == null) {\r\n emphasisState.ignore = false;\r\n }\r\n }\r\n el.ignore = true;\r\n }\r\n for (var i = 0; i < labelList.length; i++) {\r\n var labelItem = labelList[i];\r\n var isAxisAligned = labelItem.axisAligned;\r\n var localRect = labelItem.localRect;\r\n var transform = labelItem.transform;\r\n var label = labelItem.label;\r\n var labelLine = labelItem.labelLine;\r\n globalRect.copy(labelItem.rect);\r\n globalRect.width -= 0.1;\r\n globalRect.height -= 0.1;\r\n globalRect.x += 0.05;\r\n globalRect.y += 0.05;\r\n var obb = labelItem.obb;\r\n var overlapped = false;\r\n for (var j = 0; j < displayedLabels.length; j++) {\r\n var existsTextCfg = displayedLabels[j];\r\n if (!globalRect.intersect(existsTextCfg.rect)) {\r\n continue;\r\n }\r\n if (isAxisAligned && existsTextCfg.axisAligned) {\r\n overlapped = true;\r\n break;\r\n }\r\n if (!existsTextCfg.obb) {\r\n existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform);\r\n }\r\n if (!obb) {\r\n obb = new OrientedBoundingRect(localRect, transform);\r\n }\r\n if (obb.intersect(existsTextCfg.obb)) {\r\n overlapped = true;\r\n break;\r\n }\r\n }\r\n if (overlapped) {\r\n hideEl(label);\r\n labelLine && hideEl(labelLine);\r\n }\r\n else {\r\n label.attr('ignore', labelItem.defaultAttr.ignore);\r\n labelLine && labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore);\r\n displayedLabels.push(labelItem);\r\n }\r\n }\r\n}\n\nfunction cloneArr(points) {\r\n if (points) {\r\n var newPoints = [];\r\n for (var i = 0; i < points.length; i++) {\r\n newPoints.push(points[i].slice());\r\n }\r\n return newPoints;\r\n }\r\n}\r\nfunction prepareLayoutCallbackParams(labelItem, hostEl) {\r\n var label = labelItem.label;\r\n var labelLine = hostEl && hostEl.getTextGuideLine();\r\n return {\r\n dataIndex: labelItem.dataIndex,\r\n dataType: labelItem.dataType,\r\n seriesIndex: labelItem.seriesModel.seriesIndex,\r\n text: labelItem.label.style.text,\r\n rect: labelItem.hostRect,\r\n labelRect: labelItem.rect,\r\n align: label.style.align,\r\n verticalAlign: label.style.verticalAlign,\r\n labelLinePoints: cloneArr(labelLine && labelLine.shape.points)\r\n };\r\n}\r\nvar LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\r\nvar dummyTransformable = new Transformable();\r\nvar labelLayoutInnerStore = makeInner();\r\nvar labelLineAnimationStore = makeInner();\r\nfunction extendWithKeys(target, source, keys) {\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n if (source[key] != null) {\r\n target[key] = source[key];\r\n }\r\n }\r\n}\r\nvar LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\r\nvar LabelManager = (function () {\r\n function LabelManager() {\r\n this._labelList = [];\r\n this._chartViewList = [];\r\n }\r\n LabelManager.prototype.clearLabels = function () {\r\n this._labelList = [];\r\n this._chartViewList = [];\r\n };\r\n LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) {\r\n var labelStyle = label.style;\r\n var hostEl = label.__hostTarget;\r\n var textConfig = hostEl.textConfig || {};\r\n var labelTransform = label.getComputedTransform();\r\n var labelRect = label.getBoundingRect().plain();\r\n BoundingRect.applyTransform(labelRect, labelRect, labelTransform);\r\n if (labelTransform) {\r\n dummyTransformable.setLocalTransform(labelTransform);\r\n }\r\n else {\r\n dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation =\r\n dummyTransformable.originX = dummyTransformable.originY = 0;\r\n dummyTransformable.scaleX = dummyTransformable.scaleY = 1;\r\n }\r\n var host = label.__hostTarget;\r\n var hostRect;\r\n if (host) {\r\n hostRect = host.getBoundingRect().plain();\r\n var transform = host.getComputedTransform();\r\n BoundingRect.applyTransform(hostRect, hostRect, transform);\r\n }\r\n var labelGuide = hostRect && host.getTextGuideLine();\r\n this._labelList.push({\r\n label: label,\r\n labelLine: labelGuide,\r\n seriesModel: seriesModel,\r\n dataIndex: dataIndex,\r\n dataType: dataType,\r\n layoutOption: layoutOption,\r\n computedLayoutOption: null,\r\n rect: labelRect,\r\n hostRect: hostRect,\r\n priority: hostRect ? hostRect.width * hostRect.height : 0,\r\n defaultAttr: {\r\n ignore: label.ignore,\r\n labelGuideIgnore: labelGuide && labelGuide.ignore,\r\n x: dummyTransformable.x,\r\n y: dummyTransformable.y,\r\n rotation: dummyTransformable.rotation,\r\n style: {\r\n x: labelStyle.x,\r\n y: labelStyle.y,\r\n align: labelStyle.align,\r\n verticalAlign: labelStyle.verticalAlign,\r\n width: labelStyle.width,\r\n height: labelStyle.height,\r\n fontSize: labelStyle.fontSize\r\n },\r\n cursor: label.cursor,\r\n attachedPos: textConfig.position,\r\n attachedRot: textConfig.rotation\r\n }\r\n });\r\n };\r\n LabelManager.prototype.addLabelsOfSeries = function (chartView) {\r\n var _this = this;\r\n this._chartViewList.push(chartView);\r\n var seriesModel = chartView.__model;\r\n var layoutOption = seriesModel.get('labelLayout');\r\n if (!(isFunction(layoutOption) || keys(layoutOption).length)) {\r\n return;\r\n }\r\n chartView.group.traverse(function (child) {\r\n if (child.ignore) {\r\n return true;\r\n }\r\n var textEl = child.getTextContent();\r\n var ecData = getECData(child);\r\n if (textEl && !textEl.disableLabelLayout) {\r\n _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);\r\n }\r\n });\r\n };\r\n LabelManager.prototype.updateLayoutConfig = function (api) {\r\n var width = api.getWidth();\r\n var height = api.getHeight();\r\n function createDragHandler(el, labelLineModel) {\r\n return function () {\r\n updateLabelLinePoints(el, labelLineModel);\r\n };\r\n }\r\n for (var i = 0; i < this._labelList.length; i++) {\r\n var labelItem = this._labelList[i];\r\n var label = labelItem.label;\r\n var hostEl = label.__hostTarget;\r\n var defaultLabelAttr = labelItem.defaultAttr;\r\n var layoutOption = void 0;\r\n if (typeof labelItem.layoutOption === 'function') {\r\n layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));\r\n }\r\n else {\r\n layoutOption = labelItem.layoutOption;\r\n }\r\n layoutOption = layoutOption || {};\r\n labelItem.computedLayoutOption = layoutOption;\r\n var degreeToRadian = Math.PI / 180;\r\n if (hostEl) {\r\n hostEl.setTextConfig({\r\n local: false,\r\n position: (layoutOption.x != null || layoutOption.y != null)\r\n ? null : defaultLabelAttr.attachedPos,\r\n rotation: layoutOption.rotate != null\r\n ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,\r\n offset: [layoutOption.dx || 0, layoutOption.dy || 0]\r\n });\r\n }\r\n var needsUpdateLabelLine = false;\r\n if (layoutOption.x != null) {\r\n label.x = parsePercent$2(layoutOption.x, width);\r\n label.setStyle('x', 0);\r\n needsUpdateLabelLine = true;\r\n }\r\n else {\r\n label.x = defaultLabelAttr.x;\r\n label.setStyle('x', defaultLabelAttr.style.x);\r\n }\r\n if (layoutOption.y != null) {\r\n label.y = parsePercent$2(layoutOption.y, height);\r\n label.setStyle('y', 0);\r\n needsUpdateLabelLine = true;\r\n }\r\n else {\r\n label.y = defaultLabelAttr.y;\r\n label.setStyle('y', defaultLabelAttr.style.y);\r\n }\r\n if (layoutOption.labelLinePoints) {\r\n var guideLine = hostEl.getTextGuideLine();\r\n if (guideLine) {\r\n guideLine.setShape({ points: layoutOption.labelLinePoints });\r\n needsUpdateLabelLine = false;\r\n }\r\n }\r\n var labelLayoutStore = labelLayoutInnerStore(label);\r\n labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;\r\n label.rotation = layoutOption.rotate != null\r\n ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;\r\n for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {\r\n var key = LABEL_OPTION_TO_STYLE_KEYS[k];\r\n label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);\r\n }\r\n if (layoutOption.draggable) {\r\n label.draggable = true;\r\n label.cursor = 'move';\r\n if (hostEl) {\r\n var hostModel = labelItem.seriesModel;\r\n if (labelItem.dataIndex != null) {\r\n var data = labelItem.seriesModel.getData(labelItem.dataType);\r\n hostModel = data.getItemModel(labelItem.dataIndex);\r\n }\r\n label.on('drag', createDragHandler(hostEl, hostModel.getModel('labelLine')));\r\n }\r\n }\r\n else {\r\n label.off('drag');\r\n label.cursor = defaultLabelAttr.cursor;\r\n }\r\n }\r\n };\r\n LabelManager.prototype.layout = function (api) {\r\n var width = api.getWidth();\r\n var height = api.getHeight();\r\n var labelList = prepareLayoutList(this._labelList);\r\n var labelsNeedsAdjustOnX = filter(labelList, function (item) {\r\n return item.layoutOption.moveOverlap === 'shiftX';\r\n });\r\n var labelsNeedsAdjustOnY = filter(labelList, function (item) {\r\n return item.layoutOption.moveOverlap === 'shiftY';\r\n });\r\n shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);\r\n shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);\r\n var labelsNeedsHideOverlap = filter(labelList, function (item) {\r\n return item.layoutOption.hideOverlap;\r\n });\r\n hideOverlap(labelsNeedsHideOverlap);\r\n };\r\n LabelManager.prototype.processLabelsOverall = function () {\r\n var _this = this;\r\n each(this._chartViewList, function (chartView) {\r\n var seriesModel = chartView.__model;\r\n var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;\r\n var animationEnabled = seriesModel.isAnimationEnabled();\r\n chartView.group.traverse(function (child) {\r\n if (child.ignore) {\r\n return true;\r\n }\r\n var needsUpdateLabelLine = !ignoreLabelLineUpdate;\r\n var label = child.getTextContent();\r\n if (!needsUpdateLabelLine && label) {\r\n needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;\r\n }\r\n if (needsUpdateLabelLine) {\r\n _this._updateLabelLine(child, seriesModel);\r\n }\r\n if (animationEnabled) {\r\n _this._animateLabels(child, seriesModel);\r\n }\r\n });\r\n });\r\n };\r\n LabelManager.prototype._updateLabelLine = function (el, seriesModel) {\r\n var textEl = el.getTextContent();\r\n var ecData = getECData(el);\r\n var dataIndex = ecData.dataIndex;\r\n if (textEl && dataIndex != null) {\r\n var data = seriesModel.getData(ecData.dataType);\r\n var itemModel = data.getItemModel(dataIndex);\r\n var defaultStyle = {};\r\n var visualStyle = data.getItemVisual(dataIndex, 'style');\r\n var visualType = data.getVisual('drawType');\r\n defaultStyle.stroke = visualStyle[visualType];\r\n var labelLineModel = itemModel.getModel('labelLine');\r\n setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);\r\n updateLabelLinePoints(el, labelLineModel);\r\n }\r\n };\r\n LabelManager.prototype._animateLabels = function (el, seriesModel) {\r\n var textEl = el.getTextContent();\r\n var guideLine = el.getTextGuideLine();\r\n if (textEl\r\n && !textEl.ignore\r\n && !textEl.invisible\r\n && !el.disableLabelAnimation\r\n && !isElementRemoved(el)) {\r\n var layoutStore = labelLayoutInnerStore(textEl);\r\n var oldLayout = layoutStore.oldLayout;\r\n var ecData = getECData(el);\r\n var dataIndex = ecData.dataIndex;\r\n var newProps = {\r\n x: textEl.x,\r\n y: textEl.y,\r\n rotation: textEl.rotation\r\n };\r\n var data = seriesModel.getData(ecData.dataType);\r\n if (!oldLayout) {\r\n textEl.attr(newProps);\r\n if (!labelInner(textEl).valueAnimation) {\r\n var oldOpacity = retrieve2(textEl.style.opacity, 1);\r\n textEl.style.opacity = 0;\r\n initProps(textEl, {\r\n style: { opacity: oldOpacity }\r\n }, seriesModel, dataIndex);\r\n }\r\n }\r\n else {\r\n textEl.attr(oldLayout);\r\n var prevStates = el.prevStates;\r\n if (prevStates) {\r\n if (indexOf(prevStates, 'select') >= 0) {\r\n textEl.attr(layoutStore.oldLayoutSelect);\r\n }\r\n if (indexOf(prevStates, 'emphasis') >= 0) {\r\n textEl.attr(layoutStore.oldLayoutEmphasis);\r\n }\r\n }\r\n updateProps(textEl, newProps, seriesModel, dataIndex);\r\n }\r\n layoutStore.oldLayout = newProps;\r\n if (textEl.states.select) {\r\n var layoutSelect = layoutStore.oldLayoutSelect = {};\r\n extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);\r\n extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);\r\n }\r\n if (textEl.states.emphasis) {\r\n var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};\r\n extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);\r\n extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);\r\n }\r\n animateLabelValue(textEl, dataIndex, data, seriesModel);\r\n }\r\n if (guideLine && !guideLine.ignore && !guideLine.invisible) {\r\n var layoutStore = labelLineAnimationStore(guideLine);\r\n var oldLayout = layoutStore.oldLayout;\r\n var newLayout = { points: guideLine.shape.points };\r\n if (!oldLayout) {\r\n guideLine.setShape(newLayout);\r\n guideLine.style.strokePercent = 0;\r\n initProps(guideLine, {\r\n style: { strokePercent: 1 }\r\n }, seriesModel);\r\n }\r\n else {\r\n guideLine.attr({ shape: oldLayout });\r\n updateProps(guideLine, {\r\n shape: newLayout\r\n }, seriesModel);\r\n }\r\n layoutStore.oldLayout = newLayout;\r\n }\r\n };\r\n return LabelManager;\r\n}());\n\nfunction createLegacyDataSelectAction(seriesType, ecRegisterAction) {\r\n function getSeriesIndices(ecModel, payload) {\r\n var seriesIndices = [];\r\n ecModel.eachComponent({\r\n mainType: 'series', subType: seriesType, query: payload\r\n }, function (seriesModel) {\r\n seriesIndices.push(seriesModel.seriesIndex);\r\n });\r\n return seriesIndices;\r\n }\r\n each([\r\n [seriesType + 'ToggleSelect', 'toggleSelect'],\r\n [seriesType + 'Select', 'select'],\r\n [seriesType + 'UnSelect', 'unselect']\r\n ], function (eventsMap) {\r\n ecRegisterAction(eventsMap[0], function (payload, ecModel, api) {\r\n payload = extend({}, payload);\r\n if (__DEV__) {\r\n deprecateReplaceLog(payload.type, eventsMap[1]);\r\n }\r\n api.dispatchAction(extend(payload, {\r\n type: eventsMap[1],\r\n seriesIndex: getSeriesIndices(ecModel, payload)\r\n }));\r\n });\r\n });\r\n}\r\nfunction handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) {\r\n var legacyEventName = type + eventPostfix;\r\n if (!ecIns.isSilent(legacyEventName)) {\r\n if (__DEV__) {\r\n deprecateLog(\"event \" + legacyEventName + \" is deprecated.\");\r\n }\r\n ecModel.eachComponent({\r\n mainType: 'series', subType: 'pie'\r\n }, function (seriesModel) {\r\n var seriesIndex = seriesModel.seriesIndex;\r\n var selected = payload.selected;\r\n for (var i = 0; i < selected.length; i++) {\r\n if (selected[i].seriesIndex === seriesIndex) {\r\n var data = seriesModel.getData();\r\n var dataIndex = queryDataIndex(data, payload.fromActionPayload);\r\n ecIns.trigger(legacyEventName, {\r\n type: legacyEventName,\r\n seriesId: seriesModel.id,\r\n name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),\r\n selected: extend({}, seriesModel.option.selectedMap)\r\n });\r\n }\r\n }\r\n });\r\n }\r\n}\r\nfunction handleLegacySelectEvents(messageCenter, ecIns, ecModel) {\r\n messageCenter.on('selectchanged', function (params) {\r\n if (params.isFromClick) {\r\n handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, ecModel, params);\r\n handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, ecModel, params);\r\n }\r\n else if (params.fromAction === 'select') {\r\n handleSeriesLegacySelectEvents('map', 'selected', ecIns, ecModel, params);\r\n handleSeriesLegacySelectEvents('pie', 'selected', ecIns, ecModel, params);\r\n }\r\n else if (params.fromAction === 'unselect') {\r\n handleSeriesLegacySelectEvents('map', 'unselected', ecIns, ecModel, params);\r\n handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, ecModel, params);\r\n }\r\n });\r\n}\n\nfunction createLinearGradient(ctx, obj, rect) {\r\n var x = obj.x == null ? 0 : obj.x;\r\n var x2 = obj.x2 == null ? 1 : obj.x2;\r\n var y = obj.y == null ? 0 : obj.y;\r\n var y2 = obj.y2 == null ? 0 : obj.y2;\r\n if (!obj.global) {\r\n x = x * rect.width + rect.x;\r\n x2 = x2 * rect.width + rect.x;\r\n y = y * rect.height + rect.y;\r\n y2 = y2 * rect.height + rect.y;\r\n }\r\n x = isNaN(x) ? 0 : x;\r\n x2 = isNaN(x2) ? 1 : x2;\r\n y = isNaN(y) ? 0 : y;\r\n y2 = isNaN(y2) ? 0 : y2;\r\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\r\n return canvasGradient;\r\n}\r\nfunction createRadialGradient(ctx, obj, rect) {\r\n var width = rect.width;\r\n var height = rect.height;\r\n var min = Math.min(width, height);\r\n var x = obj.x == null ? 0.5 : obj.x;\r\n var y = obj.y == null ? 0.5 : obj.y;\r\n var r = obj.r == null ? 0.5 : obj.r;\r\n if (!obj.global) {\r\n x = x * width + rect.x;\r\n y = y * height + rect.y;\r\n r = r * min;\r\n }\r\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\r\n return canvasGradient;\r\n}\r\nfunction getCanvasGradient(ctx, obj, rect) {\r\n var canvasGradient = obj.type === 'radial'\r\n ? createRadialGradient(ctx, obj, rect)\r\n : createLinearGradient(ctx, obj, rect);\r\n var colorStops = obj.colorStops;\r\n for (var i = 0; i < colorStops.length; i++) {\r\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\r\n }\r\n return canvasGradient;\r\n}\r\nfunction isClipPathChanged(clipPaths, prevClipPaths) {\r\n if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\r\n return false;\r\n }\r\n if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\r\n return true;\r\n }\r\n for (var i = 0; i < clipPaths.length; i++) {\r\n if (clipPaths[i] !== prevClipPaths[i]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\n\nfunction normalizeLineDash(lineType, lineWidth) {\r\n if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {\r\n return null;\r\n }\r\n lineWidth = lineWidth || 1;\r\n return lineType === 'dashed'\r\n ? [4 * lineWidth, 2 * lineWidth]\r\n : lineType === 'dotted'\r\n ? [lineWidth]\r\n : isNumber(lineType)\r\n ? [lineType] : isArray(lineType) ? lineType : null;\r\n}\n\nvar pathProxyForDraw = new PathProxy(true);\r\nfunction styleHasStroke(style) {\r\n var stroke = style.stroke;\r\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n}\r\nfunction styleHasFill(style) {\r\n var fill = style.fill;\r\n return fill != null && fill !== 'none';\r\n}\r\nfunction doFillPath(ctx, style) {\r\n if (style.fillOpacity != null && style.fillOpacity !== 1) {\r\n var originalGlobalAlpha = ctx.globalAlpha;\r\n ctx.globalAlpha = style.fillOpacity * style.opacity;\r\n ctx.fill();\r\n ctx.globalAlpha = originalGlobalAlpha;\r\n }\r\n else {\r\n ctx.fill();\r\n }\r\n}\r\nfunction doStrokePath(ctx, style) {\r\n if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\r\n var originalGlobalAlpha = ctx.globalAlpha;\r\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\r\n ctx.stroke();\r\n ctx.globalAlpha = originalGlobalAlpha;\r\n }\r\n else {\r\n ctx.stroke();\r\n }\r\n}\r\nfunction createCanvasPattern(ctx, pattern, el) {\r\n var image = createOrUpdateImage(pattern.image, pattern.__image, el);\r\n if (isImageReady(image)) {\r\n var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\r\n if (typeof DOMMatrix === 'function') {\r\n var matrix = new DOMMatrix();\r\n matrix.rotateSelf(0, 0, (pattern.rotation || 0) / Math.PI * 180);\r\n matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\r\n matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\r\n canvasPattern.setTransform(matrix);\r\n }\r\n return canvasPattern;\r\n }\r\n}\r\nfunction brushPath(ctx, el, style, inBatch) {\r\n var hasStroke = styleHasStroke(style);\r\n var hasFill = styleHasFill(style);\r\n var strokePercent = style.strokePercent;\r\n var strokePart = strokePercent < 1;\r\n var firstDraw = !el.path;\r\n if ((!el.silent || strokePart) && firstDraw) {\r\n el.createPathProxy();\r\n }\r\n var path = el.path || pathProxyForDraw;\r\n if (!inBatch) {\r\n var fill = style.fill;\r\n var stroke = style.stroke;\r\n var hasFillGradient = hasFill && !!fill.colorStops;\r\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\r\n var hasFillPattern = hasFill && !!fill.image;\r\n var hasStrokePattern = hasStroke && !!stroke.image;\r\n var fillGradient = void 0;\r\n var strokeGradient = void 0;\r\n var fillPattern = void 0;\r\n var strokePattern = void 0;\r\n var rect = void 0;\r\n if (hasFillGradient || hasStrokeGradient) {\r\n rect = el.getBoundingRect();\r\n }\r\n if (hasFillGradient) {\r\n fillGradient = el.__dirty\r\n ? getCanvasGradient(ctx, fill, rect)\r\n : el.__canvasFillGradient;\r\n el.__canvasFillGradient = fillGradient;\r\n }\r\n if (hasStrokeGradient) {\r\n strokeGradient = el.__dirty\r\n ? getCanvasGradient(ctx, stroke, rect)\r\n : el.__canvasStrokeGradient;\r\n el.__canvasStrokeGradient = strokeGradient;\r\n }\r\n if (hasFillPattern) {\r\n fillPattern = (el.__dirty || !el.__canvasFillPattern)\r\n ? createCanvasPattern(ctx, fill, el)\r\n : el.__canvasFillPattern;\r\n el.__canvasFillPattern = fillPattern;\r\n }\r\n if (hasStrokePattern) {\r\n strokePattern = (el.__dirty || !el.__canvasStrokePattern)\r\n ? createCanvasPattern(ctx, stroke, el)\r\n : el.__canvasStrokePattern;\r\n el.__canvasStrokePattern = fillPattern;\r\n }\r\n if (hasFillGradient) {\r\n ctx.fillStyle = fillGradient;\r\n }\r\n else if (hasFillPattern) {\r\n if (fillPattern) {\r\n ctx.fillStyle = fillPattern;\r\n }\r\n else {\r\n hasFill = false;\r\n }\r\n }\r\n if (hasStrokeGradient) {\r\n ctx.strokeStyle = strokeGradient;\r\n }\r\n else if (hasStrokePattern) {\r\n if (strokePattern) {\r\n ctx.strokeStyle = strokePattern;\r\n }\r\n else {\r\n hasStroke = false;\r\n }\r\n }\r\n }\r\n var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\r\n var lineDashOffset = style.lineDashOffset;\r\n var ctxLineDash = !!ctx.setLineDash;\r\n var scale = el.getGlobalScale();\r\n path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\r\n if (lineDash) {\r\n var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n if (lineScale_1 && lineScale_1 !== 1) {\r\n lineDash = map(lineDash, function (rawVal) {\r\n return rawVal / lineScale_1;\r\n });\r\n lineDashOffset /= lineScale_1;\r\n }\r\n }\r\n var needsRebuild = true;\r\n if (firstDraw || (el.__dirty & Path.SHAPE_CHANGED_BIT)\r\n || (lineDash && !ctxLineDash && hasStroke)) {\r\n path.setDPR(ctx.dpr);\r\n if (strokePart) {\r\n path.setContext(null);\r\n }\r\n else {\r\n path.setContext(ctx);\r\n needsRebuild = false;\r\n }\r\n path.reset();\r\n if (lineDash && !ctxLineDash) {\r\n path.setLineDash(lineDash);\r\n path.setLineDashOffset(lineDashOffset);\r\n }\r\n el.buildPath(path, el.shape, inBatch);\r\n path.toStatic();\r\n el.pathUpdated();\r\n }\r\n if (needsRebuild) {\r\n path.rebuildPath(ctx, strokePart ? strokePercent : 1);\r\n }\r\n if (lineDash && ctxLineDash) {\r\n ctx.setLineDash(lineDash);\r\n ctx.lineDashOffset = lineDashOffset;\r\n }\r\n if (!inBatch) {\r\n if (style.strokeFirst) {\r\n if (hasStroke) {\r\n doStrokePath(ctx, style);\r\n }\r\n if (hasFill) {\r\n doFillPath(ctx, style);\r\n }\r\n }\r\n else {\r\n if (hasFill) {\r\n doFillPath(ctx, style);\r\n }\r\n if (hasStroke) {\r\n doStrokePath(ctx, style);\r\n }\r\n }\r\n }\r\n if (lineDash && ctxLineDash) {\r\n ctx.setLineDash([]);\r\n }\r\n}\r\nfunction brushImage(ctx, el, style) {\r\n var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\r\n if (!image || !isImageReady(image)) {\r\n return;\r\n }\r\n var x = style.x || 0;\r\n var y = style.y || 0;\r\n var width = el.getWidth();\r\n var height = el.getHeight();\r\n var aspect = image.width / image.height;\r\n if (width == null && height != null) {\r\n width = height * aspect;\r\n }\r\n else if (height == null && width != null) {\r\n height = width / aspect;\r\n }\r\n else if (width == null && height == null) {\r\n width = image.width;\r\n height = image.height;\r\n }\r\n if (style.sWidth && style.sHeight) {\r\n var sx = style.sx || 0;\r\n var sy = style.sy || 0;\r\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\r\n }\r\n else if (style.sx && style.sy) {\r\n var sx = style.sx;\r\n var sy = style.sy;\r\n var sWidth = width - sx;\r\n var sHeight = height - sy;\r\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\r\n }\r\n else {\r\n ctx.drawImage(image, x, y, width, height);\r\n }\r\n}\r\nfunction brushText(ctx, el, style) {\r\n var text = style.text;\r\n text != null && (text += '');\r\n if (text) {\r\n ctx.font = style.font || DEFAULT_FONT;\r\n ctx.textAlign = style.textAlign;\r\n ctx.textBaseline = style.textBaseline;\r\n var hasLineDash = void 0;\r\n if (ctx.setLineDash) {\r\n var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\r\n var lineDashOffset = style.lineDashOffset;\r\n if (lineDash) {\r\n var lineScale_2 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n if (lineScale_2 && lineScale_2 !== 1) {\r\n lineDash = map(lineDash, function (rawVal) {\r\n return rawVal / lineScale_2;\r\n });\r\n lineDashOffset /= lineScale_2;\r\n }\r\n ctx.setLineDash(lineDash);\r\n ctx.lineDashOffset = lineDashOffset;\r\n hasLineDash = true;\r\n }\r\n }\r\n if (style.strokeFirst) {\r\n if (styleHasStroke(style)) {\r\n ctx.strokeText(text, style.x, style.y);\r\n }\r\n if (styleHasFill(style)) {\r\n ctx.fillText(text, style.x, style.y);\r\n }\r\n }\r\n else {\r\n if (styleHasFill(style)) {\r\n ctx.fillText(text, style.x, style.y);\r\n }\r\n if (styleHasStroke(style)) {\r\n ctx.strokeText(text, style.x, style.y);\r\n }\r\n }\r\n if (hasLineDash) {\r\n ctx.setLineDash([]);\r\n }\r\n }\r\n}\r\nvar SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\r\nvar STROKE_PROPS = [\r\n ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\r\n];\r\nfunction bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\r\n var styleChanged = false;\r\n if (!forceSetAll) {\r\n prevStyle = prevStyle || {};\r\n if (style === prevStyle) {\r\n return false;\r\n }\r\n }\r\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.globalAlpha = style.opacity == null ? DEFAULT_COMMON_STYLE.opacity : style.opacity;\r\n }\r\n if (forceSetAll || style.blend !== prevStyle.blend) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\r\n }\r\n for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\r\n var propName = SHADOW_NUMBER_PROPS[i];\r\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx[propName] = ctx.dpr * (style[propName] || 0);\r\n }\r\n }\r\n if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\r\n }\r\n return styleChanged;\r\n}\r\nfunction bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n var style = getStyle(el, scope.inHover);\r\n var prevStyle = forceSetAll\r\n ? null\r\n : (prevEl && getStyle(prevEl, scope.inHover) || {});\r\n if (style === prevStyle) {\r\n return false;\r\n }\r\n var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\r\n if (forceSetAll || style.fill !== prevStyle.fill) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.fillStyle = style.fill;\r\n }\r\n if (forceSetAll || style.stroke !== prevStyle.stroke) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.strokeStyle = style.stroke;\r\n }\r\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\r\n }\r\n if (el.hasStroke()) {\r\n var lineWidth = style.lineWidth;\r\n var newLineWidth = lineWidth / ((style.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1);\r\n if (ctx.lineWidth !== newLineWidth) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx.lineWidth = newLineWidth;\r\n }\r\n }\r\n for (var i = 0; i < STROKE_PROPS.length; i++) {\r\n var prop = STROKE_PROPS[i];\r\n var propName = prop[0];\r\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n if (!styleChanged) {\r\n flushPathDrawn(ctx, scope);\r\n styleChanged = true;\r\n }\r\n ctx[propName] = style[propName] || prop[1];\r\n }\r\n }\r\n return styleChanged;\r\n}\r\nfunction bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\r\n}\r\nfunction setContextTransform(ctx, el) {\r\n var m = el.transform;\r\n var dpr = ctx.dpr || 1;\r\n if (m) {\r\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\r\n }\r\n else {\r\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n }\r\n}\r\nfunction updateClipStatus(clipPaths, ctx, scope) {\r\n var allClipped = false;\r\n for (var i = 0; i < clipPaths.length; i++) {\r\n var clipPath = clipPaths[i];\r\n allClipped = allClipped || clipPath.isZeroArea();\r\n setContextTransform(ctx, clipPath);\r\n ctx.beginPath();\r\n clipPath.buildPath(ctx, clipPath.shape);\r\n ctx.clip();\r\n }\r\n scope.allClipped = allClipped;\r\n}\r\nfunction isTransformChanged(m0, m1) {\r\n if (m0 && m1) {\r\n return m0[0] !== m1[0]\r\n || m0[1] !== m1[1]\r\n || m0[2] !== m1[2]\r\n || m0[3] !== m1[3]\r\n || m0[4] !== m1[4]\r\n || m0[5] !== m1[5];\r\n }\r\n else if (!m0 && !m1) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar DRAW_TYPE_PATH = 1;\r\nvar DRAW_TYPE_IMAGE = 2;\r\nvar DRAW_TYPE_TEXT = 3;\r\nvar DRAW_TYPE_INCREMENTAL = 4;\r\nfunction canPathBatch(style) {\r\n var hasFill = styleHasFill(style);\r\n var hasStroke = styleHasStroke(style);\r\n return !(style.lineDash\r\n || !(+hasFill ^ +hasStroke)\r\n || (hasFill && typeof style.fill !== 'string')\r\n || (hasStroke && typeof style.stroke !== 'string')\r\n || style.strokePercent < 1\r\n || style.strokeOpacity < 1\r\n || style.fillOpacity < 1);\r\n}\r\nfunction flushPathDrawn(ctx, scope) {\r\n scope.batchFill && ctx.fill();\r\n scope.batchStroke && ctx.stroke();\r\n scope.batchFill = '';\r\n scope.batchStroke = '';\r\n}\r\nfunction getStyle(el, inHover) {\r\n return inHover ? (el.__hoverStyle || el.style) : el.style;\r\n}\r\nfunction brushSingle(ctx, el) {\r\n brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\r\n}\r\nfunction brush(ctx, el, scope, isLast) {\r\n var m = el.transform;\r\n if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\r\n el.__dirty &= ~Element.REDARAW_BIT;\r\n el.__isRendered = false;\r\n return;\r\n }\r\n var clipPaths = el.__clipPaths;\r\n var prevElClipPaths = scope.prevElClipPaths;\r\n var forceSetTransform = false;\r\n var forceSetStyle = false;\r\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\r\n if (prevElClipPaths && prevElClipPaths.length) {\r\n flushPathDrawn(ctx, scope);\r\n ctx.restore();\r\n forceSetStyle = forceSetTransform = true;\r\n scope.prevElClipPaths = null;\r\n scope.allClipped = false;\r\n scope.prevEl = null;\r\n }\r\n if (clipPaths && clipPaths.length) {\r\n flushPathDrawn(ctx, scope);\r\n ctx.save();\r\n updateClipStatus(clipPaths, ctx, scope);\r\n forceSetTransform = true;\r\n }\r\n scope.prevElClipPaths = clipPaths;\r\n }\r\n if (scope.allClipped) {\r\n el.__isRendered = false;\r\n return;\r\n }\r\n el.beforeBrush && el.beforeBrush();\r\n el.innerBeforeBrush();\r\n var prevEl = scope.prevEl;\r\n if (!prevEl) {\r\n forceSetStyle = forceSetTransform = true;\r\n }\r\n var canBatchPath = el instanceof Path\r\n && el.autoBatch\r\n && canPathBatch(el.style);\r\n if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\r\n flushPathDrawn(ctx, scope);\r\n setContextTransform(ctx, el);\r\n }\r\n else if (!canBatchPath) {\r\n flushPathDrawn(ctx, scope);\r\n }\r\n var style = getStyle(el, scope.inHover);\r\n if (el instanceof Path) {\r\n if (scope.lastDrawType !== DRAW_TYPE_PATH) {\r\n forceSetStyle = true;\r\n scope.lastDrawType = DRAW_TYPE_PATH;\r\n }\r\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\r\n ctx.beginPath();\r\n }\r\n brushPath(ctx, el, style, canBatchPath);\r\n if (canBatchPath) {\r\n scope.batchFill = style.fill || '';\r\n scope.batchStroke = style.stroke || '';\r\n }\r\n }\r\n else {\r\n if (el instanceof TSpan) {\r\n if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\r\n forceSetStyle = true;\r\n scope.lastDrawType = DRAW_TYPE_TEXT;\r\n }\r\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n brushText(ctx, el, style);\r\n }\r\n else if (el instanceof ZRImage) {\r\n if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\r\n forceSetStyle = true;\r\n scope.lastDrawType = DRAW_TYPE_IMAGE;\r\n }\r\n bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n brushImage(ctx, el, style);\r\n }\r\n else if (el instanceof IncrementalDisplayble) {\r\n if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\r\n forceSetStyle = true;\r\n scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\r\n }\r\n brushIncremental(ctx, el, scope);\r\n }\r\n }\r\n if (canBatchPath && isLast) {\r\n flushPathDrawn(ctx, scope);\r\n }\r\n el.innerAfterBrush();\r\n el.afterBrush && el.afterBrush();\r\n scope.prevEl = el;\r\n el.__dirty = 0;\r\n el.__isRendered = true;\r\n}\r\nfunction brushIncremental(ctx, el, scope) {\r\n var displayables = el.getDisplayables();\r\n var temporalDisplayables = el.getTemporalDisplayables();\r\n ctx.save();\r\n var innerScope = {\r\n prevElClipPaths: null,\r\n prevEl: null,\r\n allClipped: false,\r\n viewWidth: scope.viewWidth,\r\n viewHeight: scope.viewHeight,\r\n inHover: scope.inHover\r\n };\r\n var i;\r\n var len;\r\n for (i = el.getCursor(), len = displayables.length; i < len; i++) {\r\n var displayable = displayables[i];\r\n displayable.beforeBrush && displayable.beforeBrush();\r\n displayable.innerBeforeBrush();\r\n brush(ctx, displayable, innerScope, i === len - 1);\r\n displayable.innerAfterBrush();\r\n displayable.afterBrush && displayable.afterBrush();\r\n innerScope.prevEl = displayable;\r\n }\r\n for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\r\n var displayable = temporalDisplayables[i_1];\r\n displayable.beforeBrush && displayable.beforeBrush();\r\n displayable.innerBeforeBrush();\r\n brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\r\n displayable.innerAfterBrush();\r\n displayable.afterBrush && displayable.afterBrush();\r\n innerScope.prevEl = displayable;\r\n }\r\n el.clearTemporalDisplayables();\r\n el.notClear = true;\r\n ctx.restore();\r\n}\n\nfunction returnFalse() {\r\n return false;\r\n}\r\nfunction createDom(id, painter, dpr) {\r\n var newDom = createCanvas();\r\n var width = painter.getWidth();\r\n var height = painter.getHeight();\r\n var newDomStyle = newDom.style;\r\n if (newDomStyle) {\r\n newDomStyle.position = 'absolute';\r\n newDomStyle.left = '0';\r\n newDomStyle.top = '0';\r\n newDomStyle.width = width + 'px';\r\n newDomStyle.height = height + 'px';\r\n newDom.setAttribute('data-zr-dom-id', id);\r\n }\r\n newDom.width = width * dpr;\r\n newDom.height = height * dpr;\r\n return newDom;\r\n}\r\nvar Layer = (function (_super) {\r\n __extends(Layer, _super);\r\n function Layer(id, painter, dpr) {\r\n var _this = _super.call(this) || this;\r\n _this.motionBlur = false;\r\n _this.lastFrameAlpha = 0.7;\r\n _this.dpr = 1;\r\n _this.virtual = false;\r\n _this.config = {};\r\n _this.incremental = false;\r\n _this.zlevel = 0;\r\n _this.maxRepaintRectCount = 5;\r\n _this.__dirty = true;\r\n _this.__firstTimePaint = true;\r\n _this.__used = false;\r\n _this.__drawIndex = 0;\r\n _this.__startIndex = 0;\r\n _this.__endIndex = 0;\r\n _this.__prevStartIndex = null;\r\n _this.__prevEndIndex = null;\r\n var dom;\r\n dpr = dpr || devicePixelRatio;\r\n if (typeof id === 'string') {\r\n dom = createDom(id, painter, dpr);\r\n }\r\n else if (isObject(id)) {\r\n dom = id;\r\n id = dom.id;\r\n }\r\n _this.id = id;\r\n _this.dom = dom;\r\n var domStyle = dom.style;\r\n if (domStyle) {\r\n dom.onselectstart = returnFalse;\r\n domStyle.webkitUserSelect = 'none';\r\n domStyle.userSelect = 'none';\r\n domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\r\n domStyle['-webkit-touch-callout'] = 'none';\r\n domStyle.padding = '0';\r\n domStyle.margin = '0';\r\n domStyle.borderWidth = '0';\r\n }\r\n _this.domBack = null;\r\n _this.ctxBack = null;\r\n _this.painter = painter;\r\n _this.config = null;\r\n _this.dpr = dpr;\r\n return _this;\r\n }\r\n Layer.prototype.getElementCount = function () {\r\n return this.__endIndex - this.__startIndex;\r\n };\r\n Layer.prototype.afterBrush = function () {\r\n this.__prevStartIndex = this.__startIndex;\r\n this.__prevEndIndex = this.__endIndex;\r\n };\r\n Layer.prototype.initContext = function () {\r\n this.ctx = this.dom.getContext('2d');\r\n this.ctx.dpr = this.dpr;\r\n };\r\n Layer.prototype.setUnpainted = function () {\r\n this.__firstTimePaint = true;\r\n };\r\n Layer.prototype.createBackBuffer = function () {\r\n var dpr = this.dpr;\r\n this.domBack = createDom('back-' + this.id, this.painter, dpr);\r\n this.ctxBack = this.domBack.getContext('2d');\r\n if (dpr !== 1) {\r\n this.ctxBack.scale(dpr, dpr);\r\n }\r\n };\r\n Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) {\r\n if (this.__firstTimePaint) {\r\n this.__firstTimePaint = false;\r\n return null;\r\n }\r\n var mergedRepaintRects = [];\r\n var maxRepaintRectCount = this.maxRepaintRectCount;\r\n var full = false;\r\n var pendingRect = new BoundingRect(0, 0, 0, 0);\r\n function addRectToMergePool(rect) {\r\n if (!rect.isFinite() || rect.isZero()) {\r\n return;\r\n }\r\n if (mergedRepaintRects.length === 0) {\r\n var boundingRect = new BoundingRect(0, 0, 0, 0);\r\n boundingRect.copy(rect);\r\n mergedRepaintRects.push(boundingRect);\r\n }\r\n else {\r\n var isMerged = false;\r\n var minDeltaArea = Infinity;\r\n var bestRectToMergeIdx = 0;\r\n for (var i = 0; i < mergedRepaintRects.length; ++i) {\r\n var mergedRect = mergedRepaintRects[i];\r\n if (mergedRect.intersect(rect)) {\r\n var pendingRect_1 = new BoundingRect(0, 0, 0, 0);\r\n pendingRect_1.copy(mergedRect);\r\n pendingRect_1.union(rect);\r\n mergedRepaintRects[i] = pendingRect_1;\r\n isMerged = true;\r\n break;\r\n }\r\n else if (full) {\r\n pendingRect.copy(rect);\r\n pendingRect.union(mergedRect);\r\n var aArea = rect.width * rect.height;\r\n var bArea = mergedRect.width * mergedRect.height;\r\n var pendingArea = pendingRect.width * pendingRect.height;\r\n var deltaArea = pendingArea - aArea - bArea;\r\n if (deltaArea < minDeltaArea) {\r\n minDeltaArea = minDeltaArea;\r\n bestRectToMergeIdx = i;\r\n }\r\n }\r\n }\r\n if (full) {\r\n mergedRepaintRects[bestRectToMergeIdx].union(rect);\r\n isMerged = true;\r\n }\r\n if (!isMerged) {\r\n var boundingRect = new BoundingRect(0, 0, 0, 0);\r\n boundingRect.copy(rect);\r\n mergedRepaintRects.push(boundingRect);\r\n }\r\n if (!full) {\r\n full = mergedRepaintRects.length >= maxRepaintRectCount;\r\n }\r\n }\r\n }\r\n for (var i = this.__startIndex; i < this.__endIndex; ++i) {\r\n var el = displayList[i];\r\n if (el) {\r\n var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\r\n var prevRect = el.__isRendered && ((el.__dirty & Element.REDARAW_BIT) || !shouldPaint)\r\n ? el.getPrevPaintRect()\r\n : null;\r\n if (prevRect) {\r\n addRectToMergePool(prevRect);\r\n }\r\n var curRect = shouldPaint && ((el.__dirty & Element.REDARAW_BIT) || !el.__isRendered)\r\n ? el.getPaintRect()\r\n : null;\r\n if (curRect) {\r\n addRectToMergePool(curRect);\r\n }\r\n }\r\n }\r\n for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {\r\n var el = prevList[i];\r\n var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\r\n if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {\r\n var prevRect = el.getPrevPaintRect();\r\n if (prevRect) {\r\n addRectToMergePool(prevRect);\r\n }\r\n }\r\n }\r\n var hasIntersections;\r\n do {\r\n hasIntersections = false;\r\n for (var i = 0; i < mergedRepaintRects.length;) {\r\n if (mergedRepaintRects[i].isZero()) {\r\n mergedRepaintRects.splice(i, 1);\r\n continue;\r\n }\r\n for (var j = i + 1; j < mergedRepaintRects.length;) {\r\n if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {\r\n hasIntersections = true;\r\n mergedRepaintRects[i].union(mergedRepaintRects[j]);\r\n mergedRepaintRects.splice(j, 1);\r\n }\r\n else {\r\n j++;\r\n }\r\n }\r\n i++;\r\n }\r\n } while (hasIntersections);\r\n this._paintRects = mergedRepaintRects;\r\n return mergedRepaintRects;\r\n };\r\n Layer.prototype.debugGetPaintRects = function () {\r\n return (this._paintRects || []).slice();\r\n };\r\n Layer.prototype.resize = function (width, height) {\r\n var dpr = this.dpr;\r\n var dom = this.dom;\r\n var domStyle = dom.style;\r\n var domBack = this.domBack;\r\n if (domStyle) {\r\n domStyle.width = width + 'px';\r\n domStyle.height = height + 'px';\r\n }\r\n dom.width = width * dpr;\r\n dom.height = height * dpr;\r\n if (domBack) {\r\n domBack.width = width * dpr;\r\n domBack.height = height * dpr;\r\n if (dpr !== 1) {\r\n this.ctxBack.scale(dpr, dpr);\r\n }\r\n }\r\n };\r\n Layer.prototype.clear = function (clearAll, clearColor, repaintRects) {\r\n var dom = this.dom;\r\n var ctx = this.ctx;\r\n var width = dom.width;\r\n var height = dom.height;\r\n clearColor = clearColor || this.clearColor;\r\n var haveMotionBLur = this.motionBlur && !clearAll;\r\n var lastFrameAlpha = this.lastFrameAlpha;\r\n var dpr = this.dpr;\r\n var self = this;\r\n if (haveMotionBLur) {\r\n if (!this.domBack) {\r\n this.createBackBuffer();\r\n }\r\n this.ctxBack.globalCompositeOperation = 'copy';\r\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\r\n }\r\n var domBack = this.domBack;\r\n function doClear(x, y, width, height) {\r\n ctx.clearRect(x, y, width, height);\r\n if (clearColor && clearColor !== 'transparent') {\r\n var clearColorGradientOrPattern = void 0;\r\n if (isGradientObject(clearColor)) {\r\n clearColorGradientOrPattern = clearColor.__canvasGradient\r\n || getCanvasGradient(ctx, clearColor, {\r\n x: 0,\r\n y: 0,\r\n width: width,\r\n height: height\r\n });\r\n clearColor.__canvasGradient = clearColorGradientOrPattern;\r\n }\r\n else if (isPatternObject(clearColor)) {\r\n clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\r\n dirty: function () {\r\n self.setUnpainted();\r\n self.__painter.refresh();\r\n }\r\n });\r\n }\r\n ctx.save();\r\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\r\n ctx.fillRect(x, y, width, height);\r\n ctx.restore();\r\n }\r\n if (haveMotionBLur) {\r\n ctx.save();\r\n ctx.globalAlpha = lastFrameAlpha;\r\n ctx.drawImage(domBack, x, y, width, height);\r\n ctx.restore();\r\n }\r\n }\r\n if (!repaintRects || haveMotionBLur) {\r\n doClear(0, 0, width, height);\r\n }\r\n else if (repaintRects.length) {\r\n each(repaintRects, function (rect) {\r\n doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\r\n });\r\n }\r\n };\r\n return Layer;\r\n}(Eventful));\n\nvar HOVER_LAYER_ZLEVEL = 1e5;\r\nvar CANVAS_ZLEVEL = 314159;\r\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\r\nvar INCREMENTAL_INC = 0.001;\r\nfunction parseInt10(val) {\r\n return parseInt(val, 10);\r\n}\r\nfunction isLayerValid(layer) {\r\n if (!layer) {\r\n return false;\r\n }\r\n if (layer.__builtin__) {\r\n return true;\r\n }\r\n if (typeof (layer.resize) !== 'function'\r\n || typeof (layer.refresh) !== 'function') {\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction createRoot(width, height) {\r\n var domRoot = document.createElement('div');\r\n domRoot.style.cssText = [\r\n 'position:relative',\r\n 'width:' + width + 'px',\r\n 'height:' + height + 'px',\r\n 'padding:0',\r\n 'margin:0',\r\n 'border-width:0'\r\n ].join(';') + ';';\r\n return domRoot;\r\n}\r\nvar CanvasPainter = (function () {\r\n function CanvasPainter(root, storage, opts, id) {\r\n this.type = 'canvas';\r\n this._zlevelList = [];\r\n this._prevDisplayList = [];\r\n this._layers = {};\r\n this._layerConfig = {};\r\n this._needsManuallyCompositing = false;\r\n this.type = 'canvas';\r\n var singleCanvas = !root.nodeName\r\n || root.nodeName.toUpperCase() === 'CANVAS';\r\n this._opts = opts = extend({}, opts || {});\r\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\r\n this._singleCanvas = singleCanvas;\r\n this.root = root;\r\n var rootStyle = root.style;\r\n if (rootStyle) {\r\n rootStyle.webkitTapHighlightColor = 'transparent';\r\n rootStyle.webkitUserSelect = 'none';\r\n rootStyle.userSelect = 'none';\r\n rootStyle['-webkit-touch-callout'] = 'none';\r\n root.innerHTML = '';\r\n }\r\n this.storage = storage;\r\n var zlevelList = this._zlevelList;\r\n this._prevDisplayList = [];\r\n var layers = this._layers;\r\n if (!singleCanvas) {\r\n this._width = this._getSize(0);\r\n this._height = this._getSize(1);\r\n var domRoot = this._domRoot = createRoot(this._width, this._height);\r\n root.appendChild(domRoot);\r\n }\r\n else {\r\n var rootCanvas = root;\r\n var width = rootCanvas.width;\r\n var height = rootCanvas.height;\r\n if (opts.width != null) {\r\n width = opts.width;\r\n }\r\n if (opts.height != null) {\r\n height = opts.height;\r\n }\r\n this.dpr = opts.devicePixelRatio || 1;\r\n rootCanvas.width = width * this.dpr;\r\n rootCanvas.height = height * this.dpr;\r\n this._width = width;\r\n this._height = height;\r\n var mainLayer = new Layer(rootCanvas, this, this.dpr);\r\n mainLayer.__builtin__ = true;\r\n mainLayer.initContext();\r\n layers[CANVAS_ZLEVEL] = mainLayer;\r\n mainLayer.zlevel = CANVAS_ZLEVEL;\r\n zlevelList.push(CANVAS_ZLEVEL);\r\n this._domRoot = root;\r\n }\r\n }\r\n CanvasPainter.prototype.getType = function () {\r\n return 'canvas';\r\n };\r\n CanvasPainter.prototype.isSingleCanvas = function () {\r\n return this._singleCanvas;\r\n };\r\n CanvasPainter.prototype.getViewportRoot = function () {\r\n return this._domRoot;\r\n };\r\n CanvasPainter.prototype.getViewportRootOffset = function () {\r\n var viewportRoot = this.getViewportRoot();\r\n if (viewportRoot) {\r\n return {\r\n offsetLeft: viewportRoot.offsetLeft || 0,\r\n offsetTop: viewportRoot.offsetTop || 0\r\n };\r\n }\r\n };\r\n CanvasPainter.prototype.refresh = function (paintAll) {\r\n var list = this.storage.getDisplayList(true);\r\n var prevList = this._prevDisplayList;\r\n var zlevelList = this._zlevelList;\r\n this._redrawId = Math.random();\r\n this._paintList(list, prevList, paintAll, this._redrawId);\r\n for (var i = 0; i < zlevelList.length; i++) {\r\n var z = zlevelList[i];\r\n var layer = this._layers[z];\r\n if (!layer.__builtin__ && layer.refresh) {\r\n var clearColor = i === 0 ? this._backgroundColor : null;\r\n layer.refresh(clearColor);\r\n }\r\n }\r\n if (this._opts.useDirtyRect) {\r\n this._prevDisplayList = list.slice();\r\n }\r\n return this;\r\n };\r\n CanvasPainter.prototype.refreshHover = function () {\r\n this._paintHoverList(this.storage.getDisplayList(false));\r\n };\r\n CanvasPainter.prototype._paintHoverList = function (list) {\r\n var len = list.length;\r\n var hoverLayer = this._hoverlayer;\r\n hoverLayer && hoverLayer.clear();\r\n if (!len) {\r\n return;\r\n }\r\n var scope = {\r\n inHover: true,\r\n viewWidth: this._width,\r\n viewHeight: this._height\r\n };\r\n var ctx;\r\n for (var i = 0; i < len; i++) {\r\n var el = list[i];\r\n if (el.__inHover) {\r\n if (!hoverLayer) {\r\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\r\n }\r\n if (!ctx) {\r\n ctx = hoverLayer.ctx;\r\n ctx.save();\r\n }\r\n brush(ctx, el, scope, i === len - 1);\r\n }\r\n }\r\n if (ctx) {\r\n ctx.restore();\r\n }\r\n };\r\n CanvasPainter.prototype.getHoverLayer = function () {\r\n return this.getLayer(HOVER_LAYER_ZLEVEL);\r\n };\r\n CanvasPainter.prototype.paintOne = function (ctx, el) {\r\n brushSingle(ctx, el);\r\n };\r\n CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\r\n if (this._redrawId !== redrawId) {\r\n return;\r\n }\r\n paintAll = paintAll || false;\r\n this._updateLayerStatus(list);\r\n var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\r\n if (this._needsManuallyCompositing) {\r\n this._compositeManually();\r\n }\r\n if (needsRefreshHover) {\r\n this._paintHoverList(list);\r\n }\r\n if (!finished) {\r\n var self_1 = this;\r\n requestAnimationFrame$1(function () {\r\n self_1._paintList(list, prevList, paintAll, redrawId);\r\n });\r\n }\r\n else {\r\n this.eachLayer(function (layer) {\r\n layer.afterBrush && layer.afterBrush();\r\n });\r\n }\r\n };\r\n CanvasPainter.prototype._compositeManually = function () {\r\n var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\r\n var width = this._domRoot.width;\r\n var height = this._domRoot.height;\r\n ctx.clearRect(0, 0, width, height);\r\n this.eachBuiltinLayer(function (layer) {\r\n if (layer.virtual) {\r\n ctx.drawImage(layer.dom, 0, 0, width, height);\r\n }\r\n });\r\n };\r\n CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\r\n var _this = this;\r\n var layerList = [];\r\n var useDirtyRect = this._opts.useDirtyRect;\r\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\r\n var zlevel = this._zlevelList[zi];\r\n var layer = this._layers[zlevel];\r\n if (layer.__builtin__\r\n && layer !== this._hoverlayer\r\n && (layer.__dirty || paintAll)) {\r\n layerList.push(layer);\r\n }\r\n }\r\n var finished = true;\r\n var needsRefreshHover = false;\r\n var _loop_1 = function (k) {\r\n var layer = layerList[k];\r\n var ctx = layer.ctx;\r\n var repaintRects = useDirtyRect\r\n && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\r\n ctx.save();\r\n var start = paintAll ? layer.__startIndex : layer.__drawIndex;\r\n var useTimer = !paintAll && layer.incremental && Date.now;\r\n var startTime = useTimer && Date.now();\r\n var clearColor = layer.zlevel === this_1._zlevelList[0]\r\n ? this_1._backgroundColor : null;\r\n if (layer.__startIndex === layer.__endIndex) {\r\n layer.clear(false, clearColor, repaintRects);\r\n }\r\n else if (start === layer.__startIndex) {\r\n var firstEl = list[start];\r\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\r\n layer.clear(false, clearColor, repaintRects);\r\n }\r\n }\r\n if (start === -1) {\r\n console.error('For some unknown reason. drawIndex is -1');\r\n start = layer.__startIndex;\r\n }\r\n var i;\r\n var repaint = function (repaintRect) {\r\n var scope = {\r\n inHover: false,\r\n allClipped: false,\r\n prevEl: null,\r\n viewWidth: _this._width,\r\n viewHeight: _this._height\r\n };\r\n for (i = start; i < layer.__endIndex; i++) {\r\n var el = list[i];\r\n if (el.__inHover) {\r\n needsRefreshHover = true;\r\n }\r\n _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\r\n if (useTimer) {\r\n var dTime = Date.now() - startTime;\r\n if (dTime > 15) {\r\n break;\r\n }\r\n }\r\n }\r\n if (scope.prevElClipPaths) {\r\n ctx.restore();\r\n }\r\n };\r\n if (repaintRects) {\r\n if (repaintRects.length === 0) {\r\n i = layer.__endIndex;\r\n }\r\n else {\r\n var dpr = this_1.dpr;\r\n for (var r = 0; r < repaintRects.length; ++r) {\r\n var rect = repaintRects[r];\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\r\n ctx.clip();\r\n repaint(rect);\r\n ctx.restore();\r\n }\r\n }\r\n }\r\n else {\r\n ctx.save();\r\n repaint();\r\n ctx.restore();\r\n }\r\n layer.__drawIndex = i;\r\n if (layer.__drawIndex < layer.__endIndex) {\r\n finished = false;\r\n }\r\n };\r\n var this_1 = this;\r\n for (var k = 0; k < layerList.length; k++) {\r\n _loop_1(k);\r\n }\r\n if (env.wxa) {\r\n each(this._layers, function (layer) {\r\n if (layer && layer.ctx && layer.ctx.draw) {\r\n layer.ctx.draw();\r\n }\r\n });\r\n }\r\n return {\r\n finished: finished,\r\n needsRefreshHover: needsRefreshHover\r\n };\r\n };\r\n CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\r\n var ctx = currentLayer.ctx;\r\n if (useDirtyRect) {\r\n var paintRect = el.getPaintRect();\r\n if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\r\n brush(ctx, el, scope, isLast);\r\n el.setPrevPaintRect(paintRect);\r\n }\r\n }\r\n else {\r\n brush(ctx, el, scope, isLast);\r\n }\r\n };\r\n CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\r\n if (this._singleCanvas && !this._needsManuallyCompositing) {\r\n zlevel = CANVAS_ZLEVEL;\r\n }\r\n var layer = this._layers[zlevel];\r\n if (!layer) {\r\n layer = new Layer('zr_' + zlevel, this, this.dpr);\r\n layer.zlevel = zlevel;\r\n layer.__builtin__ = true;\r\n if (this._layerConfig[zlevel]) {\r\n merge(layer, this._layerConfig[zlevel], true);\r\n }\r\n else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\r\n merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\r\n }\r\n if (virtual) {\r\n layer.virtual = virtual;\r\n }\r\n this.insertLayer(zlevel, layer);\r\n layer.initContext();\r\n }\r\n return layer;\r\n };\r\n CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\r\n var layersMap = this._layers;\r\n var zlevelList = this._zlevelList;\r\n var len = zlevelList.length;\r\n var domRoot = this._domRoot;\r\n var prevLayer = null;\r\n var i = -1;\r\n if (layersMap[zlevel]) {\r\n logError('ZLevel ' + zlevel + ' has been used already');\r\n return;\r\n }\r\n if (!isLayerValid(layer)) {\r\n logError('Layer of zlevel ' + zlevel + ' is not valid');\r\n return;\r\n }\r\n if (len > 0 && zlevel > zlevelList[0]) {\r\n for (i = 0; i < len - 1; i++) {\r\n if (zlevelList[i] < zlevel\r\n && zlevelList[i + 1] > zlevel) {\r\n break;\r\n }\r\n }\r\n prevLayer = layersMap[zlevelList[i]];\r\n }\r\n zlevelList.splice(i + 1, 0, zlevel);\r\n layersMap[zlevel] = layer;\r\n if (!layer.virtual) {\r\n if (prevLayer) {\r\n var prevDom = prevLayer.dom;\r\n if (prevDom.nextSibling) {\r\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\r\n }\r\n else {\r\n domRoot.appendChild(layer.dom);\r\n }\r\n }\r\n else {\r\n if (domRoot.firstChild) {\r\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\r\n }\r\n else {\r\n domRoot.appendChild(layer.dom);\r\n }\r\n }\r\n }\r\n layer.__painter = this;\r\n };\r\n CanvasPainter.prototype.eachLayer = function (cb, context) {\r\n var zlevelList = this._zlevelList;\r\n for (var i = 0; i < zlevelList.length; i++) {\r\n var z = zlevelList[i];\r\n cb.call(context, this._layers[z], z);\r\n }\r\n };\r\n CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\r\n var zlevelList = this._zlevelList;\r\n for (var i = 0; i < zlevelList.length; i++) {\r\n var z = zlevelList[i];\r\n var layer = this._layers[z];\r\n if (layer.__builtin__) {\r\n cb.call(context, layer, z);\r\n }\r\n }\r\n };\r\n CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\r\n var zlevelList = this._zlevelList;\r\n for (var i = 0; i < zlevelList.length; i++) {\r\n var z = zlevelList[i];\r\n var layer = this._layers[z];\r\n if (!layer.__builtin__) {\r\n cb.call(context, layer, z);\r\n }\r\n }\r\n };\r\n CanvasPainter.prototype.getLayers = function () {\r\n return this._layers;\r\n };\r\n CanvasPainter.prototype._updateLayerStatus = function (list) {\r\n this.eachBuiltinLayer(function (layer, z) {\r\n layer.__dirty = layer.__used = false;\r\n });\r\n function updatePrevLayer(idx) {\r\n if (prevLayer) {\r\n if (prevLayer.__endIndex !== idx) {\r\n prevLayer.__dirty = true;\r\n }\r\n prevLayer.__endIndex = idx;\r\n }\r\n }\r\n if (this._singleCanvas) {\r\n for (var i_1 = 1; i_1 < list.length; i_1++) {\r\n var el = list[i_1];\r\n if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\r\n this._needsManuallyCompositing = true;\r\n break;\r\n }\r\n }\r\n }\r\n var prevLayer = null;\r\n var incrementalLayerCount = 0;\r\n var prevZlevel;\r\n var i;\r\n for (i = 0; i < list.length; i++) {\r\n var el = list[i];\r\n var zlevel = el.zlevel;\r\n var layer = void 0;\r\n if (prevZlevel !== zlevel) {\r\n prevZlevel = zlevel;\r\n incrementalLayerCount = 0;\r\n }\r\n if (el.incremental) {\r\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\r\n layer.incremental = true;\r\n incrementalLayerCount = 1;\r\n }\r\n else {\r\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\r\n }\r\n if (!layer.__builtin__) {\r\n logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\r\n }\r\n if (layer !== prevLayer) {\r\n layer.__used = true;\r\n if (layer.__startIndex !== i) {\r\n layer.__dirty = true;\r\n }\r\n layer.__startIndex = i;\r\n if (!layer.incremental) {\r\n layer.__drawIndex = i;\r\n }\r\n else {\r\n layer.__drawIndex = -1;\r\n }\r\n updatePrevLayer(i);\r\n prevLayer = layer;\r\n }\r\n if ((el.__dirty & Element.REDARAW_BIT) && !el.__inHover) {\r\n layer.__dirty = true;\r\n if (layer.incremental && layer.__drawIndex < 0) {\r\n layer.__drawIndex = i;\r\n }\r\n }\r\n }\r\n updatePrevLayer(i);\r\n this.eachBuiltinLayer(function (layer, z) {\r\n if (!layer.__used && layer.getElementCount() > 0) {\r\n layer.__dirty = true;\r\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\r\n }\r\n if (layer.__dirty && layer.__drawIndex < 0) {\r\n layer.__drawIndex = layer.__startIndex;\r\n }\r\n });\r\n };\r\n CanvasPainter.prototype.clear = function () {\r\n this.eachBuiltinLayer(this._clearLayer);\r\n return this;\r\n };\r\n CanvasPainter.prototype._clearLayer = function (layer) {\r\n layer.clear();\r\n };\r\n CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\r\n this._backgroundColor = backgroundColor;\r\n each(this._layers, function (layer) {\r\n layer.setUnpainted();\r\n });\r\n };\r\n CanvasPainter.prototype.configLayer = function (zlevel, config) {\r\n if (config) {\r\n var layerConfig = this._layerConfig;\r\n if (!layerConfig[zlevel]) {\r\n layerConfig[zlevel] = config;\r\n }\r\n else {\r\n merge(layerConfig[zlevel], config, true);\r\n }\r\n for (var i = 0; i < this._zlevelList.length; i++) {\r\n var _zlevel = this._zlevelList[i];\r\n if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\r\n var layer = this._layers[_zlevel];\r\n merge(layer, layerConfig[zlevel], true);\r\n }\r\n }\r\n }\r\n };\r\n CanvasPainter.prototype.delLayer = function (zlevel) {\r\n var layers = this._layers;\r\n var zlevelList = this._zlevelList;\r\n var layer = layers[zlevel];\r\n if (!layer) {\r\n return;\r\n }\r\n layer.dom.parentNode.removeChild(layer.dom);\r\n delete layers[zlevel];\r\n zlevelList.splice(indexOf(zlevelList, zlevel), 1);\r\n };\r\n CanvasPainter.prototype.resize = function (width, height) {\r\n if (!this._domRoot.style) {\r\n if (width == null || height == null) {\r\n return;\r\n }\r\n this._width = width;\r\n this._height = height;\r\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\r\n }\r\n else {\r\n var domRoot = this._domRoot;\r\n domRoot.style.display = 'none';\r\n var opts = this._opts;\r\n width != null && (opts.width = width);\r\n height != null && (opts.height = height);\r\n width = this._getSize(0);\r\n height = this._getSize(1);\r\n domRoot.style.display = '';\r\n if (this._width !== width || height !== this._height) {\r\n domRoot.style.width = width + 'px';\r\n domRoot.style.height = height + 'px';\r\n for (var id in this._layers) {\r\n if (this._layers.hasOwnProperty(id)) {\r\n this._layers[id].resize(width, height);\r\n }\r\n }\r\n this.refresh(true);\r\n }\r\n this._width = width;\r\n this._height = height;\r\n }\r\n return this;\r\n };\r\n CanvasPainter.prototype.clearLayer = function (zlevel) {\r\n var layer = this._layers[zlevel];\r\n if (layer) {\r\n layer.clear();\r\n }\r\n };\r\n CanvasPainter.prototype.dispose = function () {\r\n this.root.innerHTML = '';\r\n this.root =\r\n this.storage =\r\n this._domRoot =\r\n this._layers = null;\r\n };\r\n CanvasPainter.prototype.getRenderedCanvas = function (opts) {\r\n opts = opts || {};\r\n if (this._singleCanvas && !this._compositeManually) {\r\n return this._layers[CANVAS_ZLEVEL].dom;\r\n }\r\n var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\r\n var ctx = imageLayer.ctx;\r\n imageLayer.initContext();\r\n imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\r\n if (opts.pixelRatio <= this.dpr) {\r\n this.refresh();\r\n var width_1 = imageLayer.dom.width;\r\n var height_1 = imageLayer.dom.height;\r\n var ctx_1 = imageLayer.ctx;\r\n this.eachLayer(function (layer) {\r\n if (layer.__builtin__) {\r\n ctx_1.drawImage(layer.dom, 0, 0, width_1, height_1);\r\n }\r\n else if (layer.renderToCanvas) {\r\n imageLayer.ctx.save();\r\n layer.renderToCanvas(imageLayer.ctx);\r\n imageLayer.ctx.restore();\r\n }\r\n });\r\n }\r\n else {\r\n var scope = {\r\n inHover: false,\r\n viewWidth: this._width,\r\n viewHeight: this._height\r\n };\r\n var displayList = this.storage.getDisplayList(true);\r\n for (var i = 0, len = displayList.length; i < len; i++) {\r\n var el = displayList[i];\r\n brush(ctx, el, scope, i === len - 1);\r\n }\r\n }\r\n return imageLayer.dom;\r\n };\r\n CanvasPainter.prototype.getWidth = function () {\r\n return this._width;\r\n };\r\n CanvasPainter.prototype.getHeight = function () {\r\n return this._height;\r\n };\r\n CanvasPainter.prototype._getSize = function (whIdx) {\r\n var opts = this._opts;\r\n var wh = ['width', 'height'][whIdx];\r\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\r\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\r\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\r\n if (opts[wh] != null && opts[wh] !== 'auto') {\r\n return parseFloat(opts[wh]);\r\n }\r\n var root = this.root;\r\n var stl = document.defaultView.getComputedStyle(root);\r\n return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\r\n - (parseInt10(stl[plt]) || 0)\r\n - (parseInt10(stl[prb]) || 0)) | 0;\r\n };\r\n CanvasPainter.prototype.pathToImage = function (path, dpr) {\r\n dpr = dpr || this.dpr;\r\n var canvas = document.createElement('canvas');\r\n var ctx = canvas.getContext('2d');\r\n var rect = path.getBoundingRect();\r\n var style = path.style;\r\n var shadowBlurSize = style.shadowBlur * dpr;\r\n var shadowOffsetX = style.shadowOffsetX * dpr;\r\n var shadowOffsetY = style.shadowOffsetY * dpr;\r\n var lineWidth = path.hasStroke() ? style.lineWidth : 0;\r\n var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\r\n var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\r\n var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\r\n var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\r\n var width = rect.width + leftMargin + rightMargin;\r\n var height = rect.height + topMargin + bottomMargin;\r\n canvas.width = width * dpr;\r\n canvas.height = height * dpr;\r\n ctx.scale(dpr, dpr);\r\n ctx.clearRect(0, 0, width, height);\r\n ctx.dpr = dpr;\r\n var pathTransform = {\r\n x: path.x,\r\n y: path.y,\r\n scaleX: path.scaleX,\r\n scaleY: path.scaleY,\r\n rotation: path.rotation,\r\n originX: path.originX,\r\n originY: path.originY\r\n };\r\n path.x = leftMargin - rect.x;\r\n path.y = topMargin - rect.y;\r\n path.rotation = 0;\r\n path.scaleX = 1;\r\n path.scaleY = 1;\r\n path.updateTransform();\r\n if (path) {\r\n brush(ctx, path, {\r\n inHover: false,\r\n viewWidth: this._width,\r\n viewHeight: this._height\r\n }, true);\r\n }\r\n var imgShape = new ZRImage({\r\n style: {\r\n x: 0,\r\n y: 0,\r\n image: canvas\r\n }\r\n });\r\n extend(path, pathTransform);\r\n return imgShape;\r\n };\r\n return CanvasPainter;\r\n}());\n\nregisterPainter('canvas', CanvasPainter);\n\nfunction findEventDispatcher(target, det, returnFirstMatch) {\r\n var found;\r\n while (target) {\r\n if (det(target)) {\r\n found = target;\r\n if (returnFirstMatch) {\r\n break;\r\n }\r\n }\r\n target = target.__hostTarget || target.parent;\r\n }\r\n return found;\r\n}\n\nvar wmUniqueIndex = Math.round(Math.random() * 9);\r\nvar WeakMap = (function () {\r\n function WeakMap() {\r\n this._id = '__ec_inner_' + wmUniqueIndex++;\r\n }\r\n WeakMap.prototype.get = function (key) {\r\n return this._guard(key)[this._id];\r\n };\r\n WeakMap.prototype.set = function (key, value) {\r\n var target = this._guard(key);\r\n if (typeof Object.defineProperty === 'function') {\r\n Object.defineProperty(target, this._id, {\r\n value: value,\r\n enumerable: false,\r\n configurable: true\r\n });\r\n }\r\n else {\r\n target[this._id] = value;\r\n }\r\n return this;\r\n };\r\n WeakMap.prototype[\"delete\"] = function (key) {\r\n if (this.has(key)) {\r\n delete this._guard(key)[this._id];\r\n return true;\r\n }\r\n return false;\r\n };\r\n WeakMap.prototype.has = function (key) {\r\n return !!this._guard(key)[this._id];\r\n };\r\n WeakMap.prototype._guard = function (key) {\r\n if (key !== Object(key)) {\r\n throw TypeError('Value of WeakMap is not a non-null object.');\r\n }\r\n return key;\r\n };\r\n return WeakMap;\r\n}());\n\nvar Triangle = Path.extend({\r\n type: 'triangle',\r\n shape: {\r\n cx: 0,\r\n cy: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n buildPath: function (path, shape) {\r\n var cx = shape.cx;\r\n var cy = shape.cy;\r\n var width = shape.width / 2;\r\n var height = shape.height / 2;\r\n path.moveTo(cx, cy - height);\r\n path.lineTo(cx + width, cy + height);\r\n path.lineTo(cx - width, cy + height);\r\n path.closePath();\r\n }\r\n});\r\nvar Diamond = Path.extend({\r\n type: 'diamond',\r\n shape: {\r\n cx: 0,\r\n cy: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n buildPath: function (path, shape) {\r\n var cx = shape.cx;\r\n var cy = shape.cy;\r\n var width = shape.width / 2;\r\n var height = shape.height / 2;\r\n path.moveTo(cx, cy - height);\r\n path.lineTo(cx + width, cy);\r\n path.lineTo(cx, cy + height);\r\n path.lineTo(cx - width, cy);\r\n path.closePath();\r\n }\r\n});\r\nvar Pin = Path.extend({\r\n type: 'pin',\r\n shape: {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n buildPath: function (path, shape) {\r\n var x = shape.x;\r\n var y = shape.y;\r\n var w = shape.width / 5 * 3;\r\n var h = Math.max(w, shape.height);\r\n var r = w / 2;\r\n var dy = r * r / (h - r);\r\n var cy = y - h + r + dy;\r\n var angle = Math.asin(dy / r);\r\n var dx = Math.cos(angle) * r;\r\n var tanX = Math.sin(angle);\r\n var tanY = Math.cos(angle);\r\n var cpLen = r * 0.6;\r\n var cpLen2 = r * 0.7;\r\n path.moveTo(x - dx, cy + dy);\r\n path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\r\n path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\r\n path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\r\n path.closePath();\r\n }\r\n});\r\nvar Arrow = Path.extend({\r\n type: 'arrow',\r\n shape: {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n buildPath: function (ctx, shape) {\r\n var height = shape.height;\r\n var width = shape.width;\r\n var x = shape.x;\r\n var y = shape.y;\r\n var dx = width / 3 * 2;\r\n ctx.moveTo(x, y);\r\n ctx.lineTo(x + dx, y + height);\r\n ctx.lineTo(x, y + height / 4 * 3);\r\n ctx.lineTo(x - dx, y + height);\r\n ctx.lineTo(x, y);\r\n ctx.closePath();\r\n }\r\n});\r\nvar symbolCtors = {\r\n line: Rect,\r\n rect: Rect,\r\n roundRect: Rect,\r\n square: Rect,\r\n circle: Circle,\r\n diamond: Diamond,\r\n pin: Pin,\r\n arrow: Arrow,\r\n triangle: Triangle\r\n};\r\nvar symbolShapeMakers = {\r\n line: function (x, y, w, h, shape) {\r\n var thickness = 2;\r\n shape.x = x;\r\n shape.y = y + h / 2 - thickness / 2;\r\n shape.width = w;\r\n shape.height = thickness;\r\n },\r\n rect: function (x, y, w, h, shape) {\r\n shape.x = x;\r\n shape.y = y;\r\n shape.width = w;\r\n shape.height = h;\r\n },\r\n roundRect: function (x, y, w, h, shape) {\r\n shape.x = x;\r\n shape.y = y;\r\n shape.width = w;\r\n shape.height = h;\r\n shape.r = Math.min(w, h) / 4;\r\n },\r\n square: function (x, y, w, h, shape) {\r\n var size = Math.min(w, h);\r\n shape.x = x;\r\n shape.y = y;\r\n shape.width = size;\r\n shape.height = size;\r\n },\r\n circle: function (x, y, w, h, shape) {\r\n shape.cx = x + w / 2;\r\n shape.cy = y + h / 2;\r\n shape.r = Math.min(w, h) / 2;\r\n },\r\n diamond: function (x, y, w, h, shape) {\r\n shape.cx = x + w / 2;\r\n shape.cy = y + h / 2;\r\n shape.width = w;\r\n shape.height = h;\r\n },\r\n pin: function (x, y, w, h, shape) {\r\n shape.x = x + w / 2;\r\n shape.y = y + h / 2;\r\n shape.width = w;\r\n shape.height = h;\r\n },\r\n arrow: function (x, y, w, h, shape) {\r\n shape.x = x + w / 2;\r\n shape.y = y + h / 2;\r\n shape.width = w;\r\n shape.height = h;\r\n },\r\n triangle: function (x, y, w, h, shape) {\r\n shape.cx = x + w / 2;\r\n shape.cy = y + h / 2;\r\n shape.width = w;\r\n shape.height = h;\r\n }\r\n};\r\nvar symbolBuildProxies = {};\r\neach(symbolCtors, function (Ctor, name) {\r\n symbolBuildProxies[name] = new Ctor();\r\n});\r\nvar SymbolClz = Path.extend({\r\n type: 'symbol',\r\n shape: {\r\n symbolType: '',\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n calculateTextPosition: function (out, config, rect) {\r\n var res = calculateTextPosition(out, config, rect);\r\n var shape = this.shape;\r\n if (shape && shape.symbolType === 'pin' && config.position === 'inside') {\r\n res.y = rect.y + rect.height * 0.4;\r\n }\r\n return res;\r\n },\r\n buildPath: function (ctx, shape, inBundle) {\r\n var symbolType = shape.symbolType;\r\n if (symbolType !== 'none') {\r\n var proxySymbol = symbolBuildProxies[symbolType];\r\n if (!proxySymbol) {\r\n symbolType = 'rect';\r\n proxySymbol = symbolBuildProxies[symbolType];\r\n }\r\n symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\r\n proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\r\n }\r\n }\r\n});\r\nfunction symbolPathSetColor(color, innerColor) {\r\n if (this.type !== 'image') {\r\n var symbolStyle = this.style;\r\n if (this.__isEmptyBrush) {\r\n symbolStyle.stroke = color;\r\n symbolStyle.fill = innerColor || '#fff';\r\n symbolStyle.lineWidth = 2;\r\n }\r\n else {\r\n symbolStyle.fill = color;\r\n }\r\n this.markRedraw();\r\n }\r\n}\r\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\r\n var isEmpty = symbolType.indexOf('empty') === 0;\r\n if (isEmpty) {\r\n symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\r\n }\r\n var symbolPath;\r\n if (symbolType.indexOf('image://') === 0) {\r\n symbolPath = makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n }\r\n else if (symbolType.indexOf('path://') === 0) {\r\n symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n }\r\n else {\r\n symbolPath = new SymbolClz({\r\n shape: {\r\n symbolType: symbolType,\r\n x: x,\r\n y: y,\r\n width: w,\r\n height: h\r\n }\r\n });\r\n }\r\n symbolPath.__isEmptyBrush = isEmpty;\r\n symbolPath.setColor = symbolPathSetColor;\r\n if (color) {\r\n symbolPath.setColor(color);\r\n }\r\n return symbolPath;\r\n}\n\nvar decalMap = new WeakMap();\r\nvar decalCache = new LRU(100);\r\nvar decalKeys = [\r\n 'symbol', 'symbolSize', 'symbolKeepAspect',\r\n 'color', 'backgroundColor',\r\n 'dashArrayX', 'dashArrayY', 'dashLineOffset',\r\n 'maxTileWidth', 'maxTileHeight'\r\n];\r\nfunction createOrUpdatePatternFromDecal(decalObject, api) {\r\n if (decalObject === 'none') {\r\n return null;\r\n }\r\n var dpr = api.getDevicePixelRatio();\r\n var zr = api.getZr();\r\n var isSVG = zr.painter.type === 'svg';\r\n if (decalObject.dirty) {\r\n decalMap[\"delete\"](decalObject);\r\n }\r\n var oldPattern = decalMap.get(decalObject);\r\n if (oldPattern) {\r\n return oldPattern;\r\n }\r\n var decalOpt = defaults(decalObject, {\r\n symbol: 'rect',\r\n symbolSize: 1,\r\n symbolKeepAspect: true,\r\n color: 'rgba(0, 0, 0, 0.2)',\r\n backgroundColor: null,\r\n dashArrayX: 5,\r\n dashArrayY: 5,\r\n dashLineOffset: 0,\r\n rotation: 0,\r\n maxTileWidth: 512,\r\n maxTileHeight: 512\r\n });\r\n if (decalOpt.backgroundColor === 'none') {\r\n decalOpt.backgroundColor = null;\r\n }\r\n var pattern = { repeat: 'repeat' };\r\n setPatternnSource(pattern);\r\n pattern.rotation = decalOpt.rotation;\r\n pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr;\r\n decalMap.set(decalObject, pattern);\r\n decalObject.dirty = false;\r\n return pattern;\r\n function setPatternnSource(pattern) {\r\n var keys = [dpr];\r\n var isValidKey = true;\r\n for (var i = 0; i < decalKeys.length; ++i) {\r\n var value = decalOpt[decalKeys[i]];\r\n var valueType = typeof value;\r\n if (value != null\r\n && !isArray(value)\r\n && valueType !== 'string'\r\n && valueType !== 'number'\r\n && valueType !== 'boolean') {\r\n isValidKey = false;\r\n break;\r\n }\r\n keys.push(value);\r\n }\r\n var cacheKey;\r\n if (isValidKey) {\r\n cacheKey = keys.join(',') + (isSVG ? '-svg' : '');\r\n var cache = decalCache.get(cacheKey);\r\n if (cache) {\r\n isSVG ? pattern.svgElement = cache\r\n : pattern.image = cache;\r\n }\r\n }\r\n var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);\r\n var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);\r\n var symbolArray = normalizeSymbolArray(decalOpt.symbol);\r\n var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);\r\n var lineBlockLengthY = getLineBlockLengthY(dashArrayY);\r\n var canvas = !isSVG && createCanvas();\r\n var svgRoot = isSVG && zr.painter.createSVGElement('g');\r\n var pSize = getPatternSize();\r\n var ctx;\r\n if (canvas) {\r\n canvas.width = pSize.width * dpr;\r\n canvas.height = pSize.height * dpr;\r\n ctx = canvas.getContext('2d');\r\n }\r\n brushDecal();\r\n if (isValidKey) {\r\n decalCache.put(cacheKey, canvas || svgRoot);\r\n }\r\n pattern.image = canvas;\r\n pattern.svgElement = svgRoot;\r\n pattern.svgWidth = pSize.width;\r\n pattern.svgHeight = pSize.height;\r\n function getPatternSize() {\r\n var width = 1;\r\n for (var i = 0, xlen = lineBlockLengthsX.length; i < xlen; ++i) {\r\n width = getLeastCommonMultiple(width, lineBlockLengthsX[i]);\r\n }\r\n var symbolRepeats = 1;\r\n for (var i = 0, xlen = symbolArray.length; i < xlen; ++i) {\r\n symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i].length);\r\n }\r\n width *= symbolRepeats;\r\n var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;\r\n if (__DEV__) {\r\n var warn = function (attrName) {\r\n console.warn(\"Calculated decal size is greater than \" + attrName + \" due to decal option settings so \" + attrName + \" is used for the decal size. Please consider changing the decal option to make a smaller decal or set \" + attrName + \" to be larger to avoid incontinuity.\");\r\n };\r\n if (width > decalOpt.maxTileWidth) {\r\n warn('maxTileWidth');\r\n }\r\n if (height > decalOpt.maxTileHeight) {\r\n warn('maxTileHeight');\r\n }\r\n }\r\n return {\r\n width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),\r\n height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))\r\n };\r\n }\r\n function brushDecal() {\r\n if (ctx) {\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n if (decalOpt.backgroundColor) {\r\n ctx.fillStyle = decalOpt.backgroundColor;\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n }\r\n }\r\n var ySum = 0;\r\n for (var i = 0; i < dashArrayY.length; ++i) {\r\n ySum += dashArrayY[i];\r\n }\r\n if (ySum <= 0) {\r\n return;\r\n }\r\n var y = -lineBlockLengthY;\r\n var yId = 0;\r\n var yIdTotal = 0;\r\n var xId0 = 0;\r\n while (y < pSize.height) {\r\n if (yId % 2 === 0) {\r\n var symbolYId = (yIdTotal / 2) % symbolArray.length;\r\n var x = 0;\r\n var xId1 = 0;\r\n var xId1Total = 0;\r\n while (x < pSize.width * 2) {\r\n var xSum = 0;\r\n for (var i = 0; i < dashArrayX[xId0].length; ++i) {\r\n xSum += dashArrayX[xId0][i];\r\n }\r\n if (xSum <= 0) {\r\n break;\r\n }\r\n if (xId1 % 2 === 0) {\r\n var size = (1 - decalOpt.symbolSize) * 0.5;\r\n var left = x + dashArrayX[xId0][xId1] * size;\r\n var top_1 = y + dashArrayY[yId] * size;\r\n var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;\r\n var height = dashArrayY[yId] * decalOpt.symbolSize;\r\n var symbolXId = (xId1Total / 2) % symbolArray[symbolYId].length;\r\n brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);\r\n }\r\n x += dashArrayX[xId0][xId1];\r\n ++xId1Total;\r\n ++xId1;\r\n if (xId1 === dashArrayX[xId0].length) {\r\n xId1 = 0;\r\n }\r\n }\r\n ++xId0;\r\n if (xId0 === dashArrayX.length) {\r\n xId0 = 0;\r\n }\r\n }\r\n y += dashArrayY[yId];\r\n ++yIdTotal;\r\n ++yId;\r\n if (yId === dashArrayY.length) {\r\n yId = 0;\r\n }\r\n }\r\n function brushSymbol(x, y, width, height, symbolType) {\r\n var scale = isSVG ? 1 : dpr;\r\n var symbol = createSymbol(symbolType, x * scale, y * scale, width * scale, height * scale, decalOpt.color, decalOpt.symbolKeepAspect);\r\n if (isSVG) {\r\n svgRoot.appendChild(zr.painter.paintOne(symbol));\r\n }\r\n else {\r\n brushSingle(ctx, symbol);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction normalizeSymbolArray(symbol) {\r\n if (!symbol || symbol.length === 0) {\r\n return [['rect']];\r\n }\r\n if (typeof symbol === 'string') {\r\n return [[symbol]];\r\n }\r\n var isAllString = true;\r\n for (var i = 0; i < symbol.length; ++i) {\r\n if (typeof symbol[i] !== 'string') {\r\n isAllString = false;\r\n break;\r\n }\r\n }\r\n if (isAllString) {\r\n return normalizeSymbolArray([symbol]);\r\n }\r\n var result = [];\r\n for (var i = 0; i < symbol.length; ++i) {\r\n if (typeof symbol[i] === 'string') {\r\n result.push([symbol[i]]);\r\n }\r\n else {\r\n result.push(symbol[i]);\r\n }\r\n }\r\n return result;\r\n}\r\nfunction normalizeDashArrayX(dash) {\r\n if (!dash || dash.length === 0) {\r\n return [[0, 0]];\r\n }\r\n if (typeof dash === 'number') {\r\n var dashValue = Math.ceil(dash);\r\n return [[dashValue, dashValue]];\r\n }\r\n var isAllNumber = true;\r\n for (var i = 0; i < dash.length; ++i) {\r\n if (typeof dash[i] !== 'number') {\r\n isAllNumber = false;\r\n break;\r\n }\r\n }\r\n if (isAllNumber) {\r\n return normalizeDashArrayX([dash]);\r\n }\r\n var result = [];\r\n for (var i = 0; i < dash.length; ++i) {\r\n if (typeof dash[i] === 'number') {\r\n var dashValue = Math.ceil(dash[i]);\r\n result.push([dashValue, dashValue]);\r\n }\r\n else {\r\n var dashValue = map(dash[i], function (n) { return Math.ceil(n); });\r\n if (dashValue.length % 2 === 1) {\r\n result.push(dashValue.concat(dashValue));\r\n }\r\n else {\r\n result.push(dashValue);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\nfunction normalizeDashArrayY(dash) {\r\n if (!dash || typeof dash === 'object' && dash.length === 0) {\r\n return [0, 0];\r\n }\r\n if (typeof dash === 'number') {\r\n var dashValue_1 = Math.ceil(dash);\r\n return [dashValue_1, dashValue_1];\r\n }\r\n var dashValue = map(dash, function (n) { return Math.ceil(n); });\r\n return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;\r\n}\r\nfunction getLineBlockLengthX(dash) {\r\n return map(dash, function (line) {\r\n return getLineBlockLengthY(line);\r\n });\r\n}\r\nfunction getLineBlockLengthY(dash) {\r\n var blockLength = 0;\r\n for (var i = 0; i < dash.length; ++i) {\r\n blockLength += dash[i];\r\n }\r\n if (dash.length % 2 === 1) {\r\n return blockLength * 2;\r\n }\r\n return blockLength;\r\n}\n\nfunction decalVisual(ecModel, api) {\r\n ecModel.eachRawSeries(function (seriesModel) {\r\n if (ecModel.isSeriesFiltered(seriesModel)) {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n if (data.hasItemVisual()) {\r\n data.each(function (idx) {\r\n var decal = data.getItemVisual(idx, 'decal');\r\n if (decal) {\r\n var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n itemStyle.decal = createOrUpdatePatternFromDecal(decal, api);\r\n }\r\n });\r\n }\r\n var decal = data.getVisual('decal');\r\n if (decal) {\r\n var style = data.getVisual('style');\r\n style.decal = createOrUpdatePatternFromDecal(decal, api);\r\n }\r\n });\r\n}\n\nvar assert$1 = assert;\r\nvar each$3 = each;\r\nvar isFunction$1 = isFunction;\r\nvar isObject$2 = isObject;\r\nvar version$1 = '5.0.0';\r\nvar dependencies = {\r\n zrender: '5.0.1'\r\n};\r\nvar TEST_FRAME_REMAIN_TIME = 1;\r\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\r\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\r\nvar PRIORITY_PROCESSOR_FILTER = 1000;\r\nvar PRIORITY_PROCESSOR_DEFAULT = 2000;\r\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\r\nvar PRIORITY_VISUAL_LAYOUT = 1000;\r\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\r\nvar PRIORITY_VISUAL_GLOBAL = 2000;\r\nvar PRIORITY_VISUAL_CHART = 3000;\r\nvar PRIORITY_VISUAL_COMPONENT = 4000;\r\nvar PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500;\r\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;\r\nvar PRIORITY_VISUAL_BRUSH = 5000;\r\nvar PRIORITY_VISUAL_ARIA = 6000;\r\nvar PRIORITY_VISUAL_DECAL = 7000;\r\nvar PRIORITY = {\r\n PROCESSOR: {\r\n FILTER: PRIORITY_PROCESSOR_FILTER,\r\n SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\r\n STATISTIC: PRIORITY_PROCESSOR_STATISTIC\r\n },\r\n VISUAL: {\r\n LAYOUT: PRIORITY_VISUAL_LAYOUT,\r\n PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\r\n GLOBAL: PRIORITY_VISUAL_GLOBAL,\r\n CHART: PRIORITY_VISUAL_CHART,\r\n POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\r\n COMPONENT: PRIORITY_VISUAL_COMPONENT,\r\n BRUSH: PRIORITY_VISUAL_BRUSH,\r\n CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,\r\n ARIA: PRIORITY_VISUAL_ARIA,\r\n DECAL: PRIORITY_VISUAL_DECAL\r\n }\r\n};\r\nvar IN_MAIN_PROCESS_KEY = '__flagInMainProcess';\r\nvar OPTION_UPDATED_KEY = '__optionUpdated';\r\nvar STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\r\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\r\nvar CONNECT_STATUS_KEY = '__connectUpdateStatus';\r\nvar CONNECT_STATUS_PENDING = 0;\r\nvar CONNECT_STATUS_UPDATING = 1;\r\nvar CONNECT_STATUS_UPDATED = 2;\r\nfunction createRegisterEventWithLowercaseECharts(method) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (this.isDisposed()) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n return toLowercaseNameAndCallEventful(this, method, args);\r\n };\r\n}\r\nfunction createRegisterEventWithLowercaseMessageCenter(method) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return toLowercaseNameAndCallEventful(this, method, args);\r\n };\r\n}\r\nfunction toLowercaseNameAndCallEventful(host, method, args) {\r\n args[0] = args[0] && args[0].toLowerCase();\r\n return Eventful.prototype[method].apply(host, args);\r\n}\r\nvar MessageCenter = (function (_super) {\r\n __extends(MessageCenter, _super);\r\n function MessageCenter() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return MessageCenter;\r\n}(Eventful));\r\nvar messageCenterProto = MessageCenter.prototype;\r\nmessageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\r\nmessageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off');\r\nvar prepare;\r\nvar prepareView;\r\nvar updateDirectly;\r\nvar updateMethods;\r\nvar doConvertPixel;\r\nvar updateStreamModes;\r\nvar doDispatchAction;\r\nvar flushPendingActions;\r\nvar triggerUpdatedEvent;\r\nvar bindRenderedEvent;\r\nvar bindMouseEvent;\r\nvar clearColorPalette;\r\nvar render;\r\nvar renderComponents;\r\nvar renderSeries;\r\nvar performPostUpdateFuncs;\r\nvar createExtensionAPI;\r\nvar enableConnect;\r\nvar setTransitionOpt;\r\nvar markStatusToUpdate;\r\nvar applyChangedStates;\r\nvar ECharts = (function (_super) {\r\n __extends(ECharts, _super);\r\n function ECharts(dom, theme, opts) {\r\n var _this = _super.call(this, new ECEventProcessor()) || this;\r\n _this._chartsViews = [];\r\n _this._chartsMap = {};\r\n _this._componentsViews = [];\r\n _this._componentsMap = {};\r\n _this._pendingActions = [];\r\n opts = opts || {};\r\n if (typeof theme === 'string') {\r\n theme = themeStorage[theme];\r\n }\r\n _this._dom = dom;\r\n var root = (typeof window === 'undefined' ? global : window);\r\n var defaultRenderer = 'canvas';\r\n var defaultUseDirtyRect = false;\r\n if (__DEV__) {\r\n defaultRenderer = root.__ECHARTS__DEFAULT__RENDERER__ || defaultRenderer;\r\n var devUseDirtyRect = root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__;\r\n defaultUseDirtyRect = devUseDirtyRect == null\r\n ? defaultUseDirtyRect\r\n : devUseDirtyRect;\r\n }\r\n var zr = _this._zr = init(dom, {\r\n renderer: opts.renderer || defaultRenderer,\r\n devicePixelRatio: opts.devicePixelRatio,\r\n width: opts.width,\r\n height: opts.height,\r\n useDirtyRect: opts.useDirtyRect == null ? defaultUseDirtyRect : opts.useDirtyRect\r\n });\r\n _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);\r\n theme = clone(theme);\r\n theme && globalBackwardCompat(theme, true);\r\n _this._theme = theme;\r\n _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);\r\n _this._coordSysMgr = new CoordinateSystemManager();\r\n var api = _this._api = createExtensionAPI(_this);\r\n function prioritySortFunc(a, b) {\r\n return a.__prio - b.__prio;\r\n }\r\n sort(visualFuncs, prioritySortFunc);\r\n sort(dataProcessorFuncs, prioritySortFunc);\r\n _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);\r\n _this._messageCenter = new MessageCenter();\r\n _this._labelManager = new LabelManager();\r\n _this._initEvents();\r\n _this.resize = bind(_this.resize, _this);\r\n zr.animation.on('frame', _this._onframe, _this);\r\n bindRenderedEvent(zr, _this);\r\n bindMouseEvent(zr, _this);\r\n setAsPrimitive(_this);\r\n return _this;\r\n }\r\n ECharts.prototype._onframe = function () {\r\n if (this._disposed) {\r\n return;\r\n }\r\n applyChangedStates(this);\r\n var scheduler = this._scheduler;\r\n if (this[OPTION_UPDATED_KEY]) {\r\n var silent = this[OPTION_UPDATED_KEY].silent;\r\n this[IN_MAIN_PROCESS_KEY] = true;\r\n prepare(this);\r\n updateMethods.update.call(this);\r\n this._zr.flush();\r\n this[IN_MAIN_PROCESS_KEY] = false;\r\n this[OPTION_UPDATED_KEY] = false;\r\n flushPendingActions.call(this, silent);\r\n triggerUpdatedEvent.call(this, silent);\r\n }\r\n else if (scheduler.unfinished) {\r\n var remainTime = TEST_FRAME_REMAIN_TIME;\r\n var ecModel = this._model;\r\n var api = this._api;\r\n scheduler.unfinished = false;\r\n do {\r\n var startTime = +new Date();\r\n scheduler.performSeriesTasks(ecModel);\r\n scheduler.performDataProcessorTasks(ecModel);\r\n updateStreamModes(this, ecModel);\r\n scheduler.performVisualTasks(ecModel);\r\n renderSeries(this, this._model, api, 'remain');\r\n remainTime -= (+new Date() - startTime);\r\n } while (remainTime > 0 && scheduler.unfinished);\r\n if (!scheduler.unfinished) {\r\n this._zr.flush();\r\n }\r\n }\r\n };\r\n ECharts.prototype.getDom = function () {\r\n return this._dom;\r\n };\r\n ECharts.prototype.getId = function () {\r\n return this.id;\r\n };\r\n ECharts.prototype.getZr = function () {\r\n return this._zr;\r\n };\r\n ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) {\r\n if (__DEV__) {\r\n assert$1(!this[IN_MAIN_PROCESS_KEY], '`setOption` should not be called during main process.');\r\n }\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n var silent;\r\n var replaceMerge;\r\n var transitionOpt;\r\n if (isObject$2(notMerge)) {\r\n lazyUpdate = notMerge.lazyUpdate;\r\n silent = notMerge.silent;\r\n replaceMerge = notMerge.replaceMerge;\r\n transitionOpt = notMerge.transition;\r\n notMerge = notMerge.notMerge;\r\n }\r\n this[IN_MAIN_PROCESS_KEY] = true;\r\n if (!this._model || notMerge) {\r\n var optionManager = new OptionManager(this._api);\r\n var theme = this._theme;\r\n var ecModel = this._model = new GlobalModel();\r\n ecModel.scheduler = this._scheduler;\r\n ecModel.init(null, null, null, theme, this._locale, optionManager);\r\n }\r\n this._model.setOption(option, { replaceMerge: replaceMerge }, optionPreprocessorFuncs);\r\n setTransitionOpt(this, transitionOpt);\r\n if (lazyUpdate) {\r\n this[OPTION_UPDATED_KEY] = { silent: silent };\r\n this[IN_MAIN_PROCESS_KEY] = false;\r\n this.getZr().wakeUp();\r\n }\r\n else {\r\n prepare(this);\r\n updateMethods.update.call(this);\r\n this._zr.flush();\r\n this[OPTION_UPDATED_KEY] = false;\r\n this[IN_MAIN_PROCESS_KEY] = false;\r\n flushPendingActions.call(this, silent);\r\n triggerUpdatedEvent.call(this, silent);\r\n }\r\n };\r\n ECharts.prototype.setTheme = function () {\r\n console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\r\n };\r\n ECharts.prototype.getModel = function () {\r\n return this._model;\r\n };\r\n ECharts.prototype.getOption = function () {\r\n return this._model && this._model.getOption();\r\n };\r\n ECharts.prototype.getWidth = function () {\r\n return this._zr.getWidth();\r\n };\r\n ECharts.prototype.getHeight = function () {\r\n return this._zr.getHeight();\r\n };\r\n ECharts.prototype.getDevicePixelRatio = function () {\r\n return this._zr.painter.dpr || window.devicePixelRatio || 1;\r\n };\r\n ECharts.prototype.getRenderedCanvas = function (opts) {\r\n if (!env.canvasSupported) {\r\n return;\r\n }\r\n opts = extend({}, opts || {});\r\n opts.pixelRatio = opts.pixelRatio || 1;\r\n opts.backgroundColor = opts.backgroundColor\r\n || this._model.get('backgroundColor');\r\n var zr = this._zr;\r\n return zr.painter.getRenderedCanvas(opts);\r\n };\r\n ECharts.prototype.getSvgDataURL = function () {\r\n if (!env.svgSupported) {\r\n return;\r\n }\r\n var zr = this._zr;\r\n var list = zr.storage.getDisplayList();\r\n each(list, function (el) {\r\n el.stopAnimation(null, true);\r\n });\r\n return zr.painter.toDataURL();\r\n };\r\n ECharts.prototype.getDataURL = function (opts) {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n opts = opts || {};\r\n var excludeComponents = opts.excludeComponents;\r\n var ecModel = this._model;\r\n var excludesComponentViews = [];\r\n var self = this;\r\n each$3(excludeComponents, function (componentType) {\r\n ecModel.eachComponent({\r\n mainType: componentType\r\n }, function (component) {\r\n var view = self._componentsMap[component.__viewId];\r\n if (!view.group.ignore) {\r\n excludesComponentViews.push(view);\r\n view.group.ignore = true;\r\n }\r\n });\r\n });\r\n var url = this._zr.painter.getType() === 'svg'\r\n ? this.getSvgDataURL()\r\n : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\r\n each$3(excludesComponentViews, function (view) {\r\n view.group.ignore = false;\r\n });\r\n return url;\r\n };\r\n ECharts.prototype.getConnectedDataURL = function (opts) {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n if (!env.canvasSupported) {\r\n return;\r\n }\r\n var isSvg = opts.type === 'svg';\r\n var groupId = this.group;\r\n var mathMin = Math.min;\r\n var mathMax = Math.max;\r\n var MAX_NUMBER = Infinity;\r\n if (connectedGroups[groupId]) {\r\n var left_1 = MAX_NUMBER;\r\n var top_1 = MAX_NUMBER;\r\n var right_1 = -MAX_NUMBER;\r\n var bottom_1 = -MAX_NUMBER;\r\n var canvasList_1 = [];\r\n var dpr_1 = (opts && opts.pixelRatio) || 1;\r\n each(instances$1, function (chart, id) {\r\n if (chart.group === groupId) {\r\n var canvas = isSvg\r\n ? chart.getZr().painter.getSvgDom().innerHTML\r\n : chart.getRenderedCanvas(clone(opts));\r\n var boundingRect = chart.getDom().getBoundingClientRect();\r\n left_1 = mathMin(boundingRect.left, left_1);\r\n top_1 = mathMin(boundingRect.top, top_1);\r\n right_1 = mathMax(boundingRect.right, right_1);\r\n bottom_1 = mathMax(boundingRect.bottom, bottom_1);\r\n canvasList_1.push({\r\n dom: canvas,\r\n left: boundingRect.left,\r\n top: boundingRect.top\r\n });\r\n }\r\n });\r\n left_1 *= dpr_1;\r\n top_1 *= dpr_1;\r\n right_1 *= dpr_1;\r\n bottom_1 *= dpr_1;\r\n var width = right_1 - left_1;\r\n var height = bottom_1 - top_1;\r\n var targetCanvas = createCanvas();\r\n var zr_1 = init(targetCanvas, {\r\n renderer: isSvg ? 'svg' : 'canvas'\r\n });\r\n zr_1.resize({\r\n width: width,\r\n height: height\r\n });\r\n if (isSvg) {\r\n var content_1 = '';\r\n each$3(canvasList_1, function (item) {\r\n var x = item.left - left_1;\r\n var y = item.top - top_1;\r\n content_1 += '<g transform=\"translate(' + x + ','\r\n + y + ')\">' + item.dom + '</g>';\r\n });\r\n zr_1.painter.getSvgRoot().innerHTML = content_1;\r\n if (opts.connectedBackgroundColor) {\r\n zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);\r\n }\r\n zr_1.refreshImmediately();\r\n return zr_1.painter.toDataURL();\r\n }\r\n else {\r\n if (opts.connectedBackgroundColor) {\r\n zr_1.add(new Rect({\r\n shape: {\r\n x: 0,\r\n y: 0,\r\n width: width,\r\n height: height\r\n },\r\n style: {\r\n fill: opts.connectedBackgroundColor\r\n }\r\n }));\r\n }\r\n each$3(canvasList_1, function (item) {\r\n var img = new ZRImage({\r\n style: {\r\n x: item.left * dpr_1 - left_1,\r\n y: item.top * dpr_1 - top_1,\r\n image: item.dom\r\n }\r\n });\r\n zr_1.add(img);\r\n });\r\n zr_1.refreshImmediately();\r\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\r\n }\r\n }\r\n else {\r\n return this.getDataURL(opts);\r\n }\r\n };\r\n ECharts.prototype.convertToPixel = function (finder, value) {\r\n return doConvertPixel(this, 'convertToPixel', finder, value);\r\n };\r\n ECharts.prototype.convertFromPixel = function (finder, value) {\r\n return doConvertPixel(this, 'convertFromPixel', finder, value);\r\n };\r\n ECharts.prototype.containPixel = function (finder, value) {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n var ecModel = this._model;\r\n var result;\r\n var findResult = parseFinder(ecModel, finder);\r\n each(findResult, function (models, key) {\r\n key.indexOf('Models') >= 0 && each(models, function (model) {\r\n var coordSys = model.coordinateSystem;\r\n if (coordSys && coordSys.containPoint) {\r\n result = result || !!coordSys.containPoint(value);\r\n }\r\n else if (key === 'seriesModels') {\r\n var view = this._chartsMap[model.__viewId];\r\n if (view && view.containPoint) {\r\n result = result || view.containPoint(value, model);\r\n }\r\n else {\r\n if (__DEV__) {\r\n console.warn(key + ': ' + (view\r\n ? 'The found component do not support containPoint.'\r\n : 'No view mapping to the found component.'));\r\n }\r\n }\r\n }\r\n else {\r\n if (__DEV__) {\r\n console.warn(key + ': containPoint is not supported');\r\n }\r\n }\r\n }, this);\r\n }, this);\r\n return !!result;\r\n };\r\n ECharts.prototype.getVisual = function (finder, visualType) {\r\n var ecModel = this._model;\r\n var parsedFinder = parseFinder(ecModel, finder, {\r\n defaultMainType: 'series'\r\n });\r\n var seriesModel = parsedFinder.seriesModel;\r\n if (__DEV__) {\r\n if (!seriesModel) {\r\n console.warn('There is no specified seires model');\r\n }\r\n }\r\n var data = seriesModel.getData();\r\n var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside')\r\n ? parsedFinder.dataIndexInside\r\n : parsedFinder.hasOwnProperty('dataIndex')\r\n ? data.indexOfRawIndex(parsedFinder.dataIndex)\r\n : null;\r\n return dataIndexInside != null\r\n ? getItemVisualFromData(data, dataIndexInside, visualType)\r\n : getVisualFromData(data, visualType);\r\n };\r\n ECharts.prototype.getViewOfComponentModel = function (componentModel) {\r\n return this._componentsMap[componentModel.__viewId];\r\n };\r\n ECharts.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n return this._chartsMap[seriesModel.__viewId];\r\n };\r\n ECharts.prototype._initEvents = function () {\r\n var _this = this;\r\n each$3(MOUSE_EVENT_NAMES, function (eveName) {\r\n var handler = function (e) {\r\n var ecModel = _this.getModel();\r\n var el = e.target;\r\n var params;\r\n var isGlobalOut = eveName === 'globalout';\r\n if (isGlobalOut) {\r\n params = {};\r\n }\r\n else {\r\n el && findEventDispatcher(el, function (parent) {\r\n var ecData = getECData(parent);\r\n if (ecData && ecData.dataIndex != null) {\r\n var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);\r\n params = (dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType) || {});\r\n return true;\r\n }\r\n else if (ecData.eventData) {\r\n params = extend({}, ecData.eventData);\r\n return true;\r\n }\r\n }, true);\r\n }\r\n if (params) {\r\n var componentType = params.componentType;\r\n var componentIndex = params.componentIndex;\r\n if (componentType === 'markLine'\r\n || componentType === 'markPoint'\r\n || componentType === 'markArea') {\r\n componentType = 'series';\r\n componentIndex = params.seriesIndex;\r\n }\r\n var model = componentType && componentIndex != null\r\n && ecModel.getComponent(componentType, componentIndex);\r\n var view = model && _this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\r\n if (__DEV__) {\r\n if (!isGlobalOut && !(model && view)) {\r\n console.warn('model or view can not be found by params');\r\n }\r\n }\r\n params.event = e;\r\n params.type = eveName;\r\n _this._$eventProcessor.eventInfo = {\r\n targetEl: el,\r\n packedEvent: params,\r\n model: model,\r\n view: view\r\n };\r\n _this.trigger(eveName, params);\r\n }\r\n };\r\n handler.zrEventfulCallAtLast = true;\r\n _this._zr.on(eveName, handler, _this);\r\n });\r\n each$3(eventActionMap, function (actionType, eventType) {\r\n _this._messageCenter.on(eventType, function (event) {\r\n this.trigger(eventType, event);\r\n }, _this);\r\n });\r\n each$3(['selectchanged'], function (eventType) {\r\n _this._messageCenter.on(eventType, function (event) {\r\n this.trigger(eventType, event);\r\n }, _this);\r\n });\r\n handleLegacySelectEvents(this._messageCenter, this, this._model);\r\n };\r\n ECharts.prototype.isDisposed = function () {\r\n return this._disposed;\r\n };\r\n ECharts.prototype.clear = function () {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n this.setOption({ series: [] }, true);\r\n };\r\n ECharts.prototype.dispose = function () {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n this._disposed = true;\r\n setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\r\n var api = this._api;\r\n var ecModel = this._model;\r\n each$3(this._componentsViews, function (component) {\r\n component.dispose(ecModel, api);\r\n });\r\n each$3(this._chartsViews, function (chart) {\r\n chart.dispose(ecModel, api);\r\n });\r\n this._zr.dispose();\r\n delete instances$1[this.id];\r\n };\r\n ECharts.prototype.resize = function (opts) {\r\n if (__DEV__) {\r\n assert$1(!this[IN_MAIN_PROCESS_KEY], '`resize` should not be called during main process.');\r\n }\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n this._zr.resize(opts);\r\n var ecModel = this._model;\r\n this._loadingFX && this._loadingFX.resize();\r\n if (!ecModel) {\r\n return;\r\n }\r\n var optionChanged = ecModel.resetOption('media');\r\n var silent = opts && opts.silent;\r\n this[IN_MAIN_PROCESS_KEY] = true;\r\n optionChanged && prepare(this);\r\n updateMethods.update.call(this, {\r\n type: 'resize',\r\n animation: {\r\n duration: 0\r\n }\r\n });\r\n this[IN_MAIN_PROCESS_KEY] = false;\r\n flushPendingActions.call(this, silent);\r\n triggerUpdatedEvent.call(this, silent);\r\n };\r\n ECharts.prototype.showLoading = function (name, cfg) {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n if (isObject$2(name)) {\r\n cfg = name;\r\n name = '';\r\n }\r\n name = name || 'default';\r\n this.hideLoading();\r\n if (!loadingEffects[name]) {\r\n if (__DEV__) {\r\n console.warn('Loading effects ' + name + ' not exists.');\r\n }\r\n return;\r\n }\r\n var el = loadingEffects[name](this._api, cfg);\r\n var zr = this._zr;\r\n this._loadingFX = el;\r\n zr.add(el);\r\n };\r\n ECharts.prototype.hideLoading = function () {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n this._loadingFX && this._zr.remove(this._loadingFX);\r\n this._loadingFX = null;\r\n };\r\n ECharts.prototype.makeActionFromEvent = function (eventObj) {\r\n var payload = extend({}, eventObj);\r\n payload.type = eventActionMap[eventObj.type];\r\n return payload;\r\n };\r\n ECharts.prototype.dispatchAction = function (payload, opt) {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n if (!isObject$2(opt)) {\r\n opt = { silent: !!opt };\r\n }\r\n if (!actions[payload.type]) {\r\n return;\r\n }\r\n if (!this._model) {\r\n return;\r\n }\r\n if (this[IN_MAIN_PROCESS_KEY]) {\r\n this._pendingActions.push(payload);\r\n return;\r\n }\r\n var silent = opt.silent;\r\n doDispatchAction.call(this, payload, silent);\r\n var flush = opt.flush;\r\n if (flush) {\r\n this._zr.flush();\r\n }\r\n else if (flush !== false && env.browser.weChat) {\r\n this._throttledZrFlush();\r\n }\r\n flushPendingActions.call(this, silent);\r\n triggerUpdatedEvent.call(this, silent);\r\n };\r\n ECharts.prototype.updateLabelLayout = function () {\r\n var labelManager = this._labelManager;\r\n labelManager.updateLayoutConfig(this._api);\r\n labelManager.layout(this._api);\r\n labelManager.processLabelsOverall();\r\n };\r\n ECharts.prototype.appendData = function (params) {\r\n if (this._disposed) {\r\n disposedWarning(this.id);\r\n return;\r\n }\r\n var seriesIndex = params.seriesIndex;\r\n var ecModel = this.getModel();\r\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n if (__DEV__) {\r\n assert$1(params.data && seriesModel);\r\n }\r\n seriesModel.appendData(params);\r\n this._scheduler.unfinished = true;\r\n this.getZr().wakeUp();\r\n };\r\n ECharts.internalField = (function () {\r\n prepare = function (ecIns) {\r\n var scheduler = ecIns._scheduler;\r\n scheduler.restorePipelines(ecIns._model);\r\n scheduler.prepareStageTasks();\r\n prepareView(ecIns, true);\r\n prepareView(ecIns, false);\r\n scheduler.plan();\r\n };\r\n prepareView = function (ecIns, isComponent) {\r\n var ecModel = ecIns._model;\r\n var scheduler = ecIns._scheduler;\r\n var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\r\n var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\r\n var zr = ecIns._zr;\r\n var api = ecIns._api;\r\n for (var i = 0; i < viewList.length; i++) {\r\n viewList[i].__alive = false;\r\n }\r\n isComponent\r\n ? ecModel.eachComponent(function (componentType, model) {\r\n componentType !== 'series' && doPrepare(model);\r\n })\r\n : ecModel.eachSeries(doPrepare);\r\n function doPrepare(model) {\r\n var requireNewView = model.__requireNewView;\r\n model.__requireNewView = false;\r\n var viewId = '_ec_' + model.id + '_' + model.type;\r\n var view = !requireNewView && viewMap[viewId];\r\n if (!view) {\r\n var classType = parseClassType(model.type);\r\n var Clazz = isComponent\r\n ? ComponentView.getClass(classType.main, classType.sub)\r\n : (ChartView.getClass(classType.sub));\r\n if (__DEV__) {\r\n assert$1(Clazz, classType.sub + ' does not exist.');\r\n }\r\n view = new Clazz();\r\n view.init(ecModel, api);\r\n viewMap[viewId] = view;\r\n viewList.push(view);\r\n zr.add(view.group);\r\n }\r\n model.__viewId = view.__id = viewId;\r\n view.__alive = true;\r\n view.__model = model;\r\n view.group.__ecComponentInfo = {\r\n mainType: model.mainType,\r\n index: model.componentIndex\r\n };\r\n !isComponent && scheduler.prepareView(view, model, ecModel, api);\r\n }\r\n for (var i = 0; i < viewList.length;) {\r\n var view = viewList[i];\r\n if (!view.__alive) {\r\n !isComponent && view.renderTask.dispose();\r\n zr.remove(view.group);\r\n view.dispose(ecModel, api);\r\n viewList.splice(i, 1);\r\n if (viewMap[view.__id] === view) {\r\n delete viewMap[view.__id];\r\n }\r\n view.__id = view.group.__ecComponentInfo = null;\r\n }\r\n else {\r\n i++;\r\n }\r\n }\r\n };\r\n updateDirectly = function (ecIns, method, payload, mainType, subType) {\r\n var ecModel = ecIns._model;\r\n ecModel.setUpdatePayload(payload);\r\n if (!mainType) {\r\n each$3([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView);\r\n return;\r\n }\r\n var query = {};\r\n query[mainType + 'Id'] = payload[mainType + 'Id'];\r\n query[mainType + 'Index'] = payload[mainType + 'Index'];\r\n query[mainType + 'Name'] = payload[mainType + 'Name'];\r\n var condition = { mainType: mainType, query: query };\r\n subType && (condition.subType = subType);\r\n var excludeSeriesId = payload.excludeSeriesId;\r\n var excludeSeriesIdMap;\r\n if (excludeSeriesId != null) {\r\n excludeSeriesIdMap = createHashMap();\r\n each$3(normalizeToArray(excludeSeriesId), function (id) {\r\n var modelId = convertOptionIdName(id, null);\r\n if (modelId != null) {\r\n excludeSeriesIdMap.set(modelId, true);\r\n }\r\n });\r\n }\r\n ecModel && ecModel.eachComponent(condition, function (model) {\r\n if (!excludeSeriesIdMap || excludeSeriesIdMap.get(model.id) == null) {\r\n if (isHighDownPayload(payload) && !payload.notBlur) {\r\n if (model instanceof SeriesModel) {\r\n toggleSeriesBlurStateFromPayload(model, payload, ecIns._api);\r\n }\r\n }\r\n else if (isSelectChangePayload(payload)) {\r\n if (model instanceof SeriesModel) {\r\n toggleSelectionFromPayload(model, payload, ecIns._api);\r\n updateSeriesElementSelection(model);\r\n markStatusToUpdate(ecIns);\r\n }\r\n }\r\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\r\n }\r\n }, ecIns);\r\n function callView(view) {\r\n view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\r\n }\r\n };\r\n updateMethods = {\r\n prepareAndUpdate: function (payload) {\r\n prepare(this);\r\n updateMethods.update.call(this, payload);\r\n },\r\n update: function (payload) {\r\n var ecModel = this._model;\r\n var api = this._api;\r\n var zr = this._zr;\r\n var coordSysMgr = this._coordSysMgr;\r\n var scheduler = this._scheduler;\r\n if (!ecModel) {\r\n return;\r\n }\r\n ecModel.setUpdatePayload(payload);\r\n scheduler.restoreData(ecModel, payload);\r\n scheduler.performSeriesTasks(ecModel);\r\n coordSysMgr.create(ecModel, api);\r\n scheduler.performDataProcessorTasks(ecModel, payload);\r\n updateStreamModes(this, ecModel);\r\n coordSysMgr.update(ecModel, api);\r\n clearColorPalette(ecModel);\r\n scheduler.performVisualTasks(ecModel, payload);\r\n render(this, ecModel, api, payload);\r\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\r\n var darkMode = ecModel.get('darkMode');\r\n if (!env.canvasSupported) {\r\n var colorArr = parse(backgroundColor);\r\n backgroundColor = stringify(colorArr, 'rgb');\r\n if (colorArr[3] === 0) {\r\n backgroundColor = 'transparent';\r\n }\r\n }\r\n else {\r\n zr.setBackgroundColor(backgroundColor);\r\n if (darkMode != null && darkMode !== 'auto') {\r\n zr.setDarkMode(darkMode);\r\n }\r\n }\r\n performPostUpdateFuncs(ecModel, api);\r\n },\r\n updateTransform: function (payload) {\r\n var _this = this;\r\n var ecModel = this._model;\r\n var api = this._api;\r\n if (!ecModel) {\r\n return;\r\n }\r\n ecModel.setUpdatePayload(payload);\r\n var componentDirtyList = [];\r\n ecModel.eachComponent(function (componentType, componentModel) {\r\n if (componentType === 'series') {\r\n return;\r\n }\r\n var componentView = _this.getViewOfComponentModel(componentModel);\r\n if (componentView && componentView.__alive) {\r\n if (componentView.updateTransform) {\r\n var result = componentView.updateTransform(componentModel, ecModel, api, payload);\r\n result && result.update && componentDirtyList.push(componentView);\r\n }\r\n else {\r\n componentDirtyList.push(componentView);\r\n }\r\n }\r\n });\r\n var seriesDirtyMap = createHashMap();\r\n ecModel.eachSeries(function (seriesModel) {\r\n var chartView = _this._chartsMap[seriesModel.__viewId];\r\n if (chartView.updateTransform) {\r\n var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\r\n result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\r\n }\r\n else {\r\n seriesDirtyMap.set(seriesModel.uid, 1);\r\n }\r\n });\r\n clearColorPalette(ecModel);\r\n this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true, dirtyMap: seriesDirtyMap });\r\n renderSeries(this, ecModel, api, payload, seriesDirtyMap);\r\n performPostUpdateFuncs(ecModel, this._api);\r\n },\r\n updateView: function (payload) {\r\n var ecModel = this._model;\r\n if (!ecModel) {\r\n return;\r\n }\r\n ecModel.setUpdatePayload(payload);\r\n ChartView.markUpdateMethod(payload, 'updateView');\r\n clearColorPalette(ecModel);\r\n this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true });\r\n render(this, this._model, this._api, payload);\r\n performPostUpdateFuncs(ecModel, this._api);\r\n },\r\n updateVisual: function (payload) {\r\n var _this = this;\r\n var ecModel = this._model;\r\n if (!ecModel) {\r\n return;\r\n }\r\n ecModel.setUpdatePayload(payload);\r\n ecModel.eachSeries(function (seriesModel) {\r\n seriesModel.getData().clearAllVisual();\r\n });\r\n ChartView.markUpdateMethod(payload, 'updateVisual');\r\n clearColorPalette(ecModel);\r\n this._scheduler.performVisualTasks(ecModel, payload, { visualType: 'visual', setDirty: true });\r\n ecModel.eachComponent(function (componentType, componentModel) {\r\n if (componentType !== 'series') {\r\n var componentView = _this.getViewOfComponentModel(componentModel);\r\n componentView && componentView.__alive\r\n && componentView.updateVisual(componentModel, ecModel, _this._api, payload);\r\n }\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n var chartView = _this._chartsMap[seriesModel.__viewId];\r\n chartView.updateVisual(seriesModel, ecModel, _this._api, payload);\r\n });\r\n performPostUpdateFuncs(ecModel, this._api);\r\n },\r\n updateLayout: function (payload) {\r\n updateMethods.update.call(this, payload);\r\n }\r\n };\r\n doConvertPixel = function (ecIns, methodName, finder, value) {\r\n if (ecIns._disposed) {\r\n disposedWarning(ecIns.id);\r\n return;\r\n }\r\n var ecModel = ecIns._model;\r\n var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();\r\n var result;\r\n var parsedFinder = parseFinder(ecModel, finder);\r\n for (var i = 0; i < coordSysList.length; i++) {\r\n var coordSys = coordSysList[i];\r\n if (coordSys[methodName]\r\n && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) {\r\n return result;\r\n }\r\n }\r\n if (__DEV__) {\r\n console.warn('No coordinate system that supports ' + methodName + ' found by the given finder.');\r\n }\r\n };\r\n updateStreamModes = function (ecIns, ecModel) {\r\n var chartsMap = ecIns._chartsMap;\r\n var scheduler = ecIns._scheduler;\r\n ecModel.eachSeries(function (seriesModel) {\r\n scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\r\n });\r\n };\r\n doDispatchAction = function (payload, silent) {\r\n var _this = this;\r\n var ecModel = this.getModel();\r\n var payloadType = payload.type;\r\n var escapeConnect = payload.escapeConnect;\r\n var actionWrap = actions[payloadType];\r\n var actionInfo = actionWrap.actionInfo;\r\n var cptTypeTmp = (actionInfo.update || 'update').split(':');\r\n var updateMethod = cptTypeTmp.pop();\r\n var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);\r\n this[IN_MAIN_PROCESS_KEY] = true;\r\n var payloads = [payload];\r\n var batched = false;\r\n if (payload.batch) {\r\n batched = true;\r\n payloads = map(payload.batch, function (item) {\r\n item = defaults(extend({}, item), payload);\r\n item.batch = null;\r\n return item;\r\n });\r\n }\r\n var eventObjBatch = [];\r\n var eventObj;\r\n var isSelectChange = isSelectChangePayload(payload);\r\n var isStatusChange = isHighDownPayload(payload) || isSelectChange;\r\n each$3(payloads, function (batchItem) {\r\n eventObj = actionWrap.action(batchItem, _this._model, _this._api);\r\n eventObj = eventObj || extend({}, batchItem);\r\n eventObj.type = actionInfo.event || eventObj.type;\r\n eventObjBatch.push(eventObj);\r\n if (isStatusChange) {\r\n updateDirectly(_this, updateMethod, batchItem, 'series');\r\n markStatusToUpdate(_this);\r\n }\r\n else if (cptType) {\r\n updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);\r\n }\r\n });\r\n if (updateMethod !== 'none' && !isStatusChange && !cptType) {\r\n if (this[OPTION_UPDATED_KEY]) {\r\n prepare(this);\r\n updateMethods.update.call(this, payload);\r\n this[OPTION_UPDATED_KEY] = false;\r\n }\r\n else {\r\n updateMethods[updateMethod].call(this, payload);\r\n }\r\n }\r\n if (batched) {\r\n eventObj = {\r\n type: actionInfo.event || payloadType,\r\n escapeConnect: escapeConnect,\r\n batch: eventObjBatch\r\n };\r\n }\r\n else {\r\n eventObj = eventObjBatch[0];\r\n }\r\n this[IN_MAIN_PROCESS_KEY] = false;\r\n if (!silent) {\r\n var messageCenter = this._messageCenter;\r\n messageCenter.trigger(eventObj.type, eventObj);\r\n if (isSelectChange) {\r\n var newObj = {\r\n type: 'selectchanged',\r\n escapeConnect: escapeConnect,\r\n selected: getAllSelectedIndices(ecModel),\r\n isFromClick: payload.isFromClick || false,\r\n fromAction: payload.type,\r\n fromActionPayload: payload\r\n };\r\n messageCenter.trigger(newObj.type, newObj);\r\n }\r\n }\r\n };\r\n flushPendingActions = function (silent) {\r\n var pendingActions = this._pendingActions;\r\n while (pendingActions.length) {\r\n var payload = pendingActions.shift();\r\n doDispatchAction.call(this, payload, silent);\r\n }\r\n };\r\n triggerUpdatedEvent = function (silent) {\r\n !silent && this.trigger('updated');\r\n };\r\n bindRenderedEvent = function (zr, ecIns) {\r\n zr.on('rendered', function (params) {\r\n ecIns.trigger('rendered', params);\r\n if (zr.animation.isFinished()\r\n && !ecIns[OPTION_UPDATED_KEY]\r\n && !ecIns._scheduler.unfinished\r\n && !ecIns._pendingActions.length) {\r\n ecIns.trigger('finished');\r\n }\r\n });\r\n };\r\n bindMouseEvent = function (zr, ecIns) {\r\n zr.on('mouseover', function (e) {\r\n var el = e.target;\r\n var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\r\n if (dispatcher) {\r\n var ecData = getECData(dispatcher);\r\n toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, true);\r\n enterEmphasisWhenMouseOver(dispatcher, e);\r\n markStatusToUpdate(ecIns);\r\n }\r\n }).on('mouseout', function (e) {\r\n var el = e.target;\r\n var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\r\n if (dispatcher) {\r\n var ecData = getECData(dispatcher);\r\n toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, false);\r\n leaveEmphasisWhenMouseOut(dispatcher, e);\r\n markStatusToUpdate(ecIns);\r\n }\r\n }).on('click', function (e) {\r\n var el = e.target;\r\n var dispatcher = findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; }, true);\r\n if (dispatcher) {\r\n var actionType = dispatcher.selected ? 'unselect' : 'select';\r\n var ecData = getECData(dispatcher);\r\n ecIns._api.dispatchAction({\r\n type: actionType,\r\n dataType: ecData.dataType,\r\n dataIndexInside: ecData.dataIndex,\r\n seriesIndex: ecData.seriesIndex,\r\n isFromClick: true\r\n });\r\n }\r\n });\r\n };\r\n clearColorPalette = function (ecModel) {\r\n ecModel.clearColorPalette();\r\n ecModel.eachSeries(function (seriesModel) {\r\n seriesModel.clearColorPalette();\r\n });\r\n };\r\n render = function (ecIns, ecModel, api, payload) {\r\n renderComponents(ecIns, ecModel, api, payload);\r\n each$3(ecIns._chartsViews, function (chart) {\r\n chart.__alive = false;\r\n });\r\n renderSeries(ecIns, ecModel, api, payload);\r\n each$3(ecIns._chartsViews, function (chart) {\r\n if (!chart.__alive) {\r\n chart.remove(ecModel, api);\r\n }\r\n });\r\n };\r\n renderComponents = function (ecIns, ecModel, api, payload, dirtyList) {\r\n each$3(dirtyList || ecIns._componentsViews, function (componentView) {\r\n var componentModel = componentView.__model;\r\n clearStates(componentModel, componentView);\r\n componentView.render(componentModel, ecModel, api, payload);\r\n updateZ(componentModel, componentView);\r\n updateStates(componentModel, componentView);\r\n });\r\n };\r\n renderSeries = function (ecIns, ecModel, api, payload, dirtyMap) {\r\n var scheduler = ecIns._scheduler;\r\n var labelManager = ecIns._labelManager;\r\n labelManager.clearLabels();\r\n var unfinished = false;\r\n ecModel.eachSeries(function (seriesModel) {\r\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n chartView.__alive = true;\r\n var renderTask = chartView.renderTask;\r\n scheduler.updatePayload(renderTask, payload);\r\n clearStates(seriesModel, chartView);\r\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\r\n renderTask.dirty();\r\n }\r\n if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {\r\n unfinished = true;\r\n }\r\n seriesModel.__transientTransitionOpt = null;\r\n chartView.group.silent = !!seriesModel.get('silent');\r\n updateBlend(seriesModel, chartView);\r\n updateSeriesElementSelection(seriesModel);\r\n labelManager.addLabelsOfSeries(chartView);\r\n });\r\n scheduler.unfinished = unfinished || scheduler.unfinished;\r\n labelManager.updateLayoutConfig(api);\r\n labelManager.layout(api);\r\n labelManager.processLabelsOverall();\r\n ecModel.eachSeries(function (seriesModel) {\r\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n updateZ(seriesModel, chartView);\r\n updateStates(seriesModel, chartView);\r\n });\r\n updateHoverLayerStatus(ecIns, ecModel);\r\n };\r\n performPostUpdateFuncs = function (ecModel, api) {\r\n each$3(postUpdateFuncs, function (func) {\r\n func(ecModel, api);\r\n });\r\n };\r\n markStatusToUpdate = function (ecIns) {\r\n ecIns[STATUS_NEEDS_UPDATE_KEY] = true;\r\n ecIns.getZr().wakeUp();\r\n };\r\n applyChangedStates = function (ecIns) {\r\n if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {\r\n return;\r\n }\r\n ecIns.getZr().storage.traverse(function (el) {\r\n if (isElementRemoved(el)) {\r\n return;\r\n }\r\n applyElementStates(el);\r\n });\r\n ecIns[STATUS_NEEDS_UPDATE_KEY] = false;\r\n };\r\n function applyElementStates(el) {\r\n var newStates = [];\r\n var oldStates = el.currentStates;\r\n for (var i = 0; i < oldStates.length; i++) {\r\n var stateName = oldStates[i];\r\n if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) {\r\n newStates.push(stateName);\r\n }\r\n }\r\n if (el.selected && el.states.select) {\r\n newStates.push('select');\r\n }\r\n if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {\r\n newStates.push('emphasis');\r\n }\r\n else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {\r\n newStates.push('blur');\r\n }\r\n el.useStates(newStates);\r\n }\r\n function updateHoverLayerStatus(ecIns, ecModel) {\r\n var zr = ecIns._zr;\r\n var storage = zr.storage;\r\n var elCount = 0;\r\n storage.traverse(function (el) {\r\n if (!el.isGroup) {\r\n elCount++;\r\n }\r\n });\r\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node && !env.worker) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (seriesModel.preventUsingHoverLayer) {\r\n return;\r\n }\r\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n if (chartView.__alive) {\r\n chartView.group.traverse(function (el) {\r\n if (el.states.emphasis) {\r\n el.states.emphasis.hoverLayer = true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n function updateBlend(seriesModel, chartView) {\r\n var blendMode = seriesModel.get('blendMode') || null;\r\n if (__DEV__) {\r\n if (!env.canvasSupported && blendMode && blendMode !== 'source-over') {\r\n console.warn('Only canvas support blendMode');\r\n }\r\n }\r\n chartView.group.traverse(function (el) {\r\n if (!el.isGroup) {\r\n el.style.blend = blendMode;\r\n }\r\n if (el.eachPendingDisplayable) {\r\n el.eachPendingDisplayable(function (displayable) {\r\n displayable.style.blend = blendMode;\r\n });\r\n }\r\n });\r\n }\r\n function updateZ(model, view) {\r\n if (model.preventAutoZ) {\r\n return;\r\n }\r\n var z = model.get('z');\r\n var zlevel = model.get('zlevel');\r\n view.group.traverse(function (el) {\r\n if (!el.isGroup) {\r\n z != null && (el.z = z);\r\n zlevel != null && (el.zlevel = zlevel);\r\n var label = el.getTextContent();\r\n var labelLine = el.getTextGuideLine();\r\n if (label) {\r\n label.z = el.z;\r\n label.zlevel = el.zlevel;\r\n label.z2 = el.z2 + 2;\r\n }\r\n if (labelLine) {\r\n var showAbove = el.textGuideLineConfig && el.textGuideLineConfig.showAbove;\r\n labelLine.z = el.z;\r\n labelLine.zlevel = el.zlevel;\r\n labelLine.z2 = el.z2 + (showAbove ? 1 : -1);\r\n }\r\n }\r\n });\r\n }\r\n function clearStates(model, view) {\r\n view.group.traverse(function (el) {\r\n if (isElementRemoved(el)) {\r\n return;\r\n }\r\n var textContent = el.getTextContent();\r\n var textGuide = el.getTextGuideLine();\r\n if (el.stateTransition) {\r\n el.stateTransition = null;\r\n }\r\n if (textContent && textContent.stateTransition) {\r\n textContent.stateTransition = null;\r\n }\r\n if (textGuide && textGuide.stateTransition) {\r\n textGuide.stateTransition = null;\r\n }\r\n if (el.hasState()) {\r\n el.prevStates = el.currentStates;\r\n el.clearStates();\r\n }\r\n else if (el.prevStates) {\r\n el.prevStates = null;\r\n }\r\n });\r\n }\r\n function updateStates(model, view) {\r\n var stateAnimationModel = model.getModel('stateAnimation');\r\n var enableAnimation = model.isAnimationEnabled();\r\n var duration = stateAnimationModel.get('duration');\r\n var stateTransition = duration > 0 ? {\r\n duration: duration,\r\n delay: stateAnimationModel.get('delay'),\r\n easing: stateAnimationModel.get('easing')\r\n } : null;\r\n view.group.traverse(function (el) {\r\n if (el.states && el.states.emphasis) {\r\n if (isElementRemoved(el)) {\r\n return;\r\n }\r\n if (el instanceof Path) {\r\n savePathStates(el);\r\n }\r\n if (el.__dirty) {\r\n var prevStates = el.prevStates;\r\n if (prevStates) {\r\n el.useStates(prevStates);\r\n }\r\n }\r\n if (enableAnimation) {\r\n el.stateTransition = stateTransition;\r\n var textContent = el.getTextContent();\r\n var textGuide = el.getTextGuideLine();\r\n if (textContent) {\r\n textContent.stateTransition = stateTransition;\r\n }\r\n if (textGuide) {\r\n textGuide.stateTransition = stateTransition;\r\n }\r\n }\r\n if (el.__dirty) {\r\n applyElementStates(el);\r\n }\r\n }\r\n });\r\n }\r\n createExtensionAPI = function (ecIns) {\r\n return new ((function (_super) {\r\n __extends(class_1, _super);\r\n function class_1() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n class_1.prototype.getCoordinateSystems = function () {\r\n return ecIns._coordSysMgr.getCoordinateSystems();\r\n };\r\n class_1.prototype.getComponentByElement = function (el) {\r\n while (el) {\r\n var modelInfo = el.__ecComponentInfo;\r\n if (modelInfo != null) {\r\n return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);\r\n }\r\n el = el.parent;\r\n }\r\n };\r\n class_1.prototype.enterEmphasis = function (el, highlightDigit) {\r\n enterEmphasis(el, highlightDigit);\r\n markStatusToUpdate(ecIns);\r\n };\r\n class_1.prototype.leaveEmphasis = function (el, highlightDigit) {\r\n leaveEmphasis(el, highlightDigit);\r\n markStatusToUpdate(ecIns);\r\n };\r\n class_1.prototype.enterBlur = function (el) {\r\n enterBlur(el);\r\n markStatusToUpdate(ecIns);\r\n };\r\n class_1.prototype.leaveBlur = function (el) {\r\n leaveBlur(el);\r\n markStatusToUpdate(ecIns);\r\n };\r\n class_1.prototype.enterSelect = function (el) {\r\n enterSelect(el);\r\n markStatusToUpdate(ecIns);\r\n };\r\n class_1.prototype.leaveSelect = function (el) {\r\n leaveSelect(el);\r\n markStatusToUpdate(ecIns);\r\n };\r\n class_1.prototype.getModel = function () {\r\n return ecIns.getModel();\r\n };\r\n class_1.prototype.getViewOfComponentModel = function (componentModel) {\r\n return ecIns.getViewOfComponentModel(componentModel);\r\n };\r\n class_1.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n return ecIns.getViewOfSeriesModel(seriesModel);\r\n };\r\n return class_1;\r\n }(ExtensionAPI)))(ecIns);\r\n };\r\n enableConnect = function (chart) {\r\n function updateConnectedChartsStatus(charts, status) {\r\n for (var i = 0; i < charts.length; i++) {\r\n var otherChart = charts[i];\r\n otherChart[CONNECT_STATUS_KEY] = status;\r\n }\r\n }\r\n each$3(eventActionMap, function (actionType, eventType) {\r\n chart._messageCenter.on(eventType, function (event) {\r\n if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {\r\n if (event && event.escapeConnect) {\r\n return;\r\n }\r\n var action_1 = chart.makeActionFromEvent(event);\r\n var otherCharts_1 = [];\r\n each$3(instances$1, function (otherChart) {\r\n if (otherChart !== chart && otherChart.group === chart.group) {\r\n otherCharts_1.push(otherChart);\r\n }\r\n });\r\n updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);\r\n each$3(otherCharts_1, function (otherChart) {\r\n if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {\r\n otherChart.dispatchAction(action_1);\r\n }\r\n });\r\n updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);\r\n }\r\n });\r\n });\r\n };\r\n setTransitionOpt = function (chart, transitionOpt) {\r\n var ecModel = chart._model;\r\n each(normalizeToArray(transitionOpt), function (transOpt) {\r\n var errMsg;\r\n var fromOpt = transOpt.from;\r\n var toOpt = transOpt.to;\r\n if (toOpt == null) {\r\n if (__DEV__) {\r\n errMsg = '`transition.to` must be specified.';\r\n }\r\n throwError(errMsg);\r\n }\r\n var finderOpt = {\r\n includeMainTypes: ['series'],\r\n enableAll: false,\r\n enableNone: false\r\n };\r\n var fromResult = fromOpt ? parseFinder(ecModel, fromOpt, finderOpt) : null;\r\n var toResult = parseFinder(ecModel, toOpt, finderOpt);\r\n var toSeries = toResult.seriesModel;\r\n if (toSeries == null) {\r\n errMsg = '';\r\n if (__DEV__) {\r\n errMsg = '`transition` is only supported on series.';\r\n }\r\n }\r\n if (fromResult && fromResult.seriesModel !== toSeries) {\r\n errMsg = '';\r\n if (__DEV__) {\r\n errMsg = '`transition.from` and `transition.to` must be specified to the same series.';\r\n }\r\n }\r\n if (errMsg != null) {\r\n throwError(errMsg);\r\n }\r\n toSeries.__transientTransitionOpt = {\r\n from: fromOpt ? fromOpt.dimension : null,\r\n to: toOpt.dimension,\r\n dividingMethod: transOpt.dividingMethod\r\n };\r\n });\r\n };\r\n })();\r\n return ECharts;\r\n}(Eventful));\r\nvar echartsProto = ECharts.prototype;\r\nechartsProto.on = createRegisterEventWithLowercaseECharts('on');\r\nechartsProto.off = createRegisterEventWithLowercaseECharts('off');\r\nechartsProto.one = function (eventName, cb, ctx) {\r\n var self = this;\r\n deprecateLog('ECharts#one is deprecated.');\r\n function wrapped() {\r\n var args2 = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args2[_i] = arguments[_i];\r\n }\r\n cb && cb.apply && cb.apply(this, args2);\r\n self.off(eventName, wrapped);\r\n }\r\n this.on.call(this, eventName, wrapped, ctx);\r\n};\r\nvar MOUSE_EVENT_NAMES = [\r\n 'click', 'dblclick', 'mouseover', 'mouseout', 'mousemove',\r\n 'mousedown', 'mouseup', 'globalout', 'contextmenu'\r\n];\r\nfunction disposedWarning(id) {\r\n if (__DEV__) {\r\n console.warn('Instance ' + id + ' has been disposed');\r\n }\r\n}\r\nvar actions = {};\r\nvar eventActionMap = {};\r\nvar dataProcessorFuncs = [];\r\nvar optionPreprocessorFuncs = [];\r\nvar postInitFuncs = [];\r\nvar postUpdateFuncs = [];\r\nvar visualFuncs = [];\r\nvar themeStorage = {};\r\nvar loadingEffects = {};\r\nvar instances$1 = {};\r\nvar connectedGroups = {};\r\nvar idBase = +(new Date()) - 0;\r\nvar groupIdBase = +(new Date()) - 0;\r\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\r\nfunction init$1(dom, theme, opts) {\r\n if (__DEV__) {\r\n if (!dom) {\r\n throw new Error('Initialize failed: invalid dom.');\r\n }\r\n }\r\n var existInstance = getInstanceByDom(dom);\r\n if (existInstance) {\r\n if (__DEV__) {\r\n console.warn('There is a chart instance already initialized on the dom.');\r\n }\r\n return existInstance;\r\n }\r\n if (__DEV__) {\r\n if (isDom(dom)\r\n && dom.nodeName.toUpperCase() !== 'CANVAS'\r\n && ((!dom.clientWidth && (!opts || opts.width == null))\r\n || (!dom.clientHeight && (!opts || opts.height == null)))) {\r\n console.warn('Can\\'t get DOM width or height. Please check '\r\n + 'dom.clientWidth and dom.clientHeight. They should not be 0.'\r\n + 'For example, you may need to call this in the callback '\r\n + 'of window.onload.');\r\n }\r\n }\r\n var chart = new ECharts(dom, theme, opts);\r\n chart.id = 'ec_' + idBase++;\r\n instances$1[chart.id] = chart;\r\n setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\r\n enableConnect(chart);\r\n each$3(postInitFuncs, function (postInitFunc) {\r\n postInitFunc(chart);\r\n });\r\n return chart;\r\n}\r\nfunction connect(groupId) {\r\n if (isArray(groupId)) {\r\n var charts = groupId;\r\n groupId = null;\r\n each$3(charts, function (chart) {\r\n if (chart.group != null) {\r\n groupId = chart.group;\r\n }\r\n });\r\n groupId = groupId || ('g_' + groupIdBase++);\r\n each$3(charts, function (chart) {\r\n chart.group = groupId;\r\n });\r\n }\r\n connectedGroups[groupId] = true;\r\n return groupId;\r\n}\r\nfunction disConnect(groupId) {\r\n connectedGroups[groupId] = false;\r\n}\r\nvar disconnect = disConnect;\r\nfunction dispose$1(chart) {\r\n if (typeof chart === 'string') {\r\n chart = instances$1[chart];\r\n }\r\n else if (!(chart instanceof ECharts)) {\r\n chart = getInstanceByDom(chart);\r\n }\r\n if ((chart instanceof ECharts) && !chart.isDisposed()) {\r\n chart.dispose();\r\n }\r\n}\r\nfunction getInstanceByDom(dom) {\r\n return instances$1[getAttribute(dom, DOM_ATTRIBUTE_KEY)];\r\n}\r\nfunction getInstanceById(key) {\r\n return instances$1[key];\r\n}\r\nfunction registerTheme(name, theme) {\r\n themeStorage[name] = theme;\r\n}\r\nfunction registerPreprocessor(preprocessorFunc) {\r\n optionPreprocessorFuncs.push(preprocessorFunc);\r\n}\r\nfunction registerProcessor(priority, processor) {\r\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\r\n}\r\nfunction registerPostInit(postInitFunc) {\r\n postInitFunc && postInitFuncs.push(postInitFunc);\r\n}\r\nfunction registerPostUpdate(postUpdateFunc) {\r\n postUpdateFunc && postUpdateFuncs.push(postUpdateFunc);\r\n}\r\nfunction registerAction(actionInfo, eventName, action) {\r\n if (typeof eventName === 'function') {\r\n action = eventName;\r\n eventName = '';\r\n }\r\n var actionType = isObject$2(actionInfo)\r\n ? actionInfo.type\r\n : ([actionInfo, actionInfo = {\r\n event: eventName\r\n }][0]);\r\n actionInfo.event = (actionInfo.event || actionType).toLowerCase();\r\n eventName = actionInfo.event;\r\n assert$1(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\r\n if (!actions[actionType]) {\r\n actions[actionType] = { action: action, actionInfo: actionInfo };\r\n }\r\n eventActionMap[eventName] = actionType;\r\n}\r\nfunction registerCoordinateSystem(type, coordSysCreator) {\r\n CoordinateSystemManager.register(type, coordSysCreator);\r\n}\r\nfunction getCoordinateSystemDimensions(type) {\r\n var coordSysCreator = CoordinateSystemManager.get(type);\r\n if (coordSysCreator) {\r\n return coordSysCreator.getDimensionsInfo\r\n ? coordSysCreator.getDimensionsInfo()\r\n : coordSysCreator.dimensions.slice();\r\n }\r\n}\r\nfunction registerLayout(priority, layoutTask) {\r\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\r\n}\r\nfunction registerVisual(priority, visualTask) {\r\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\r\n}\r\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\r\n if (isFunction$1(priority) || isObject$2(priority)) {\r\n fn = priority;\r\n priority = defaultPriority;\r\n }\r\n if (__DEV__) {\r\n if (isNaN(priority) || priority == null) {\r\n throw new Error('Illegal priority');\r\n }\r\n each$3(targetList, function (wrap) {\r\n assert$1(wrap.__raw !== fn);\r\n });\r\n }\r\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\r\n stageHandler.__prio = priority;\r\n stageHandler.__raw = fn;\r\n targetList.push(stageHandler);\r\n}\r\nfunction registerLoading(name, loadingFx) {\r\n loadingEffects[name] = loadingFx;\r\n}\r\nfunction extendComponentModel(proto) {\r\n return ComponentModel.extend(proto);\r\n}\r\nfunction extendComponentView(proto) {\r\n return ComponentView.extend(proto);\r\n}\r\nfunction extendSeriesModel(proto) {\r\n return SeriesModel.extend(proto);\r\n}\r\nfunction extendChartView(proto) {\r\n return ChartView.extend(proto);\r\n}\r\nfunction setCanvasCreator(creator) {\r\n $override('createCanvas', creator);\r\n}\r\nfunction registerMap(mapName, geoJson, specialAreas) {\r\n mapDataStorage.registerMap(mapName, geoJson, specialAreas);\r\n}\r\nfunction getMap(mapName) {\r\n var records = mapDataStorage.retrieveMap(mapName);\r\n return records && records[0] && {\r\n geoJson: records[0].geoJSON,\r\n specialAreas: records[0].specialAreas\r\n };\r\n}\r\nvar registerTransform = registerExternalTransform;\r\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\r\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\r\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\r\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\r\nregisterVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\r\nregisterVisual(PRIORITY_VISUAL_DECAL, decalVisual);\r\nregisterPreprocessor(globalBackwardCompat);\r\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\r\nregisterLoading('default', defaultLoading);\r\nregisterAction({\r\n type: HIGHLIGHT_ACTION_TYPE,\r\n event: HIGHLIGHT_ACTION_TYPE,\r\n update: HIGHLIGHT_ACTION_TYPE\r\n}, noop);\r\nregisterAction({\r\n type: DOWNPLAY_ACTION_TYPE,\r\n event: DOWNPLAY_ACTION_TYPE,\r\n update: DOWNPLAY_ACTION_TYPE\r\n}, noop);\r\nregisterAction({\r\n type: SELECT_ACTION_TYPE,\r\n event: SELECT_ACTION_TYPE,\r\n update: SELECT_ACTION_TYPE\r\n}, noop);\r\nregisterAction({\r\n type: UNSELECT_ACTION_TYPE,\r\n event: UNSELECT_ACTION_TYPE,\r\n update: UNSELECT_ACTION_TYPE\r\n}, noop);\r\nregisterAction({\r\n type: TOGGLE_SELECT_ACTION_TYPE,\r\n event: TOGGLE_SELECT_ACTION_TYPE,\r\n update: TOGGLE_SELECT_ACTION_TYPE\r\n}, noop);\r\nregisterTheme('light', lightTheme);\r\nregisterTheme('dark', theme);\r\nvar dataTool = {};\n\nfunction dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {\r\n return valNumOrArrLengthMoreThan2 == null\r\n ? 0\r\n : (valNumOrArrLengthMoreThan2.length || 1);\r\n}\r\nfunction defaultKeyGetter(item) {\r\n return item;\r\n}\r\nvar DataDiffer = (function () {\r\n function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) {\r\n this._old = oldArr;\r\n this._new = newArr;\r\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\r\n this._newKeyGetter = newKeyGetter || defaultKeyGetter;\r\n this.context = context;\r\n this._diffModeMultiple = diffMode === 'multiple';\r\n }\r\n DataDiffer.prototype.add = function (func) {\r\n this._add = func;\r\n return this;\r\n };\r\n DataDiffer.prototype.update = function (func) {\r\n this._update = func;\r\n return this;\r\n };\r\n DataDiffer.prototype.updateManyToOne = function (func) {\r\n this._updateManyToOne = func;\r\n return this;\r\n };\r\n DataDiffer.prototype.updateOneToMany = function (func) {\r\n this._updateOneToMany = func;\r\n return this;\r\n };\r\n DataDiffer.prototype.remove = function (func) {\r\n this._remove = func;\r\n return this;\r\n };\r\n DataDiffer.prototype.execute = function () {\r\n this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne']();\r\n };\r\n DataDiffer.prototype._executeOneToOne = function () {\r\n var oldArr = this._old;\r\n var newArr = this._new;\r\n var newDataIndexMap = {};\r\n var oldDataKeyArr = new Array(oldArr.length);\r\n var newDataKeyArr = new Array(newArr.length);\r\n this._initIndexMap(oldArr, null, oldDataKeyArr, '_oldKeyGetter');\r\n this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n for (var i = 0; i < oldArr.length; i++) {\r\n var oldKey = oldDataKeyArr[i];\r\n var newIdxMapVal = newDataIndexMap[oldKey];\r\n var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n if (newIdxMapValLen > 1) {\r\n var newIdx = newIdxMapVal.shift();\r\n if (newIdxMapVal.length === 1) {\r\n newDataIndexMap[oldKey] = newIdxMapVal[0];\r\n }\r\n this._update && this._update(newIdx, i);\r\n }\r\n else if (newIdxMapValLen === 1) {\r\n newDataIndexMap[oldKey] = null;\r\n this._update && this._update(newIdxMapVal, i);\r\n }\r\n else {\r\n this._remove && this._remove(i);\r\n }\r\n }\r\n this._performRestAdd(newDataKeyArr, newDataIndexMap);\r\n };\r\n DataDiffer.prototype._executeMultiple = function () {\r\n var oldArr = this._old;\r\n var newArr = this._new;\r\n var oldDataIndexMap = {};\r\n var newDataIndexMap = {};\r\n var oldDataKeyArr = [];\r\n var newDataKeyArr = [];\r\n this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter');\r\n this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n for (var i = 0; i < oldDataKeyArr.length; i++) {\r\n var oldKey = oldDataKeyArr[i];\r\n var oldIdxMapVal = oldDataIndexMap[oldKey];\r\n var newIdxMapVal = newDataIndexMap[oldKey];\r\n var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal);\r\n var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {\r\n this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal);\r\n newDataIndexMap[oldKey] = null;\r\n }\r\n else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {\r\n this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal);\r\n newDataIndexMap[oldKey] = null;\r\n }\r\n else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {\r\n this._update && this._update(newIdxMapVal, oldIdxMapVal);\r\n newDataIndexMap[oldKey] = null;\r\n }\r\n else if (oldIdxMapValLen > 1) {\r\n for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {\r\n this._remove && this._remove(oldIdxMapVal[i_1]);\r\n }\r\n }\r\n else {\r\n this._remove && this._remove(oldIdxMapVal);\r\n }\r\n }\r\n this._performRestAdd(newDataKeyArr, newDataIndexMap);\r\n };\r\n DataDiffer.prototype._performRestAdd = function (newDataKeyArr, newDataIndexMap) {\r\n for (var i = 0; i < newDataKeyArr.length; i++) {\r\n var newKey = newDataKeyArr[i];\r\n var newIdxMapVal = newDataIndexMap[newKey];\r\n var idxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n if (idxMapValLen > 1) {\r\n for (var j = 0; j < idxMapValLen; j++) {\r\n this._add && this._add(newIdxMapVal[j]);\r\n }\r\n }\r\n else if (idxMapValLen === 1) {\r\n this._add && this._add(newIdxMapVal);\r\n }\r\n newDataIndexMap[newKey] = null;\r\n }\r\n };\r\n DataDiffer.prototype._initIndexMap = function (arr, map, keyArr, keyGetterName) {\r\n var cbModeMultiple = this._diffModeMultiple;\r\n for (var i = 0; i < arr.length; i++) {\r\n var key = '_ec_' + this[keyGetterName](arr[i], i);\r\n if (!cbModeMultiple) {\r\n keyArr[i] = key;\r\n }\r\n if (!map) {\r\n continue;\r\n }\r\n var idxMapVal = map[key];\r\n var idxMapValLen = dataIndexMapValueLength(idxMapVal);\r\n if (idxMapValLen === 0) {\r\n map[key] = i;\r\n if (cbModeMultiple) {\r\n keyArr.push(key);\r\n }\r\n }\r\n else if (idxMapValLen === 1) {\r\n map[key] = [idxMapVal, i];\r\n }\r\n else {\r\n idxMapVal.push(i);\r\n }\r\n }\r\n };\r\n return DataDiffer;\r\n}());\n\nfunction summarizeDimensions(data) {\r\n var summary = {};\r\n var encode = summary.encode = {};\r\n var notExtraCoordDimMap = createHashMap();\r\n var defaultedLabel = [];\r\n var defaultedTooltip = [];\r\n var userOutput = summary.userOutput = {\r\n dimensionNames: data.dimensions.slice(),\r\n encode: {}\r\n };\r\n each(data.dimensions, function (dimName) {\r\n var dimItem = data.getDimensionInfo(dimName);\r\n var coordDim = dimItem.coordDim;\r\n if (coordDim) {\r\n if (__DEV__) {\r\n assert(VISUAL_DIMENSIONS.get(coordDim) == null);\r\n }\r\n var coordDimIndex = dimItem.coordDimIndex;\r\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\r\n if (!dimItem.isExtraCoord) {\r\n notExtraCoordDimMap.set(coordDim, 1);\r\n if (mayLabelDimType(dimItem.type)) {\r\n defaultedLabel[0] = dimName;\r\n }\r\n getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\r\n }\r\n if (dimItem.defaultTooltip) {\r\n defaultedTooltip.push(dimName);\r\n }\r\n }\r\n VISUAL_DIMENSIONS.each(function (v, otherDim) {\r\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\r\n var dimIndex = dimItem.otherDims[otherDim];\r\n if (dimIndex != null && dimIndex !== false) {\r\n encodeArr[dimIndex] = dimItem.name;\r\n }\r\n });\r\n });\r\n var dataDimsOnCoord = [];\r\n var encodeFirstDimNotExtra = {};\r\n notExtraCoordDimMap.each(function (v, coordDim) {\r\n var dimArr = encode[coordDim];\r\n encodeFirstDimNotExtra[coordDim] = dimArr[0];\r\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\r\n });\r\n summary.dataDimsOnCoord = dataDimsOnCoord;\r\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\r\n var encodeLabel = encode.label;\r\n if (encodeLabel && encodeLabel.length) {\r\n defaultedLabel = encodeLabel.slice();\r\n }\r\n var encodeTooltip = encode.tooltip;\r\n if (encodeTooltip && encodeTooltip.length) {\r\n defaultedTooltip = encodeTooltip.slice();\r\n }\r\n else if (!defaultedTooltip.length) {\r\n defaultedTooltip = defaultedLabel.slice();\r\n }\r\n encode.defaultedLabel = defaultedLabel;\r\n encode.defaultedTooltip = defaultedTooltip;\r\n return summary;\r\n}\r\nfunction getOrCreateEncodeArr(encode, dim) {\r\n if (!encode.hasOwnProperty(dim)) {\r\n encode[dim] = [];\r\n }\r\n return encode[dim];\r\n}\r\nfunction getDimensionTypeByAxis(axisType) {\r\n return axisType === 'category'\r\n ? 'ordinal'\r\n : axisType === 'time'\r\n ? 'time'\r\n : 'float';\r\n}\r\nfunction mayLabelDimType(dimType) {\r\n return !(dimType === 'ordinal' || dimType === 'time');\r\n}\n\nvar DataDimensionInfo = (function () {\r\n function DataDimensionInfo(opt) {\r\n this.otherDims = {};\r\n if (opt != null) {\r\n extend(this, opt);\r\n }\r\n }\r\n return DataDimensionInfo;\r\n}());\n\nvar mathFloor = Math.floor;\r\nvar isObject$3 = isObject;\r\nvar map$1 = map;\r\nvar UNDEFINED = 'undefined';\r\nvar INDEX_NOT_FOUND = -1;\r\nvar ID_PREFIX = 'e\\0\\0';\r\nvar dataCtors = {\r\n 'float': typeof Float64Array === UNDEFINED\r\n ? Array : Float64Array,\r\n 'int': typeof Int32Array === UNDEFINED\r\n ? Array : Int32Array,\r\n 'ordinal': Array,\r\n 'number': Array,\r\n 'time': Array\r\n};\r\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\r\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\r\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\r\nvar TRANSFERABLE_PROPERTIES = [\r\n 'hasItemOption', '_nameList', '_idList', '_invertedIndicesMap',\r\n '_rawData', '_dimValueGetter',\r\n '_count', '_rawCount', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount'\r\n];\r\nvar CLONE_PROPERTIES = [\r\n '_extent', '_approximateExtent', '_rawExtent'\r\n];\r\nvar defaultDimValueGetters;\r\nvar prepareInvertedIndex;\r\nvar getIndicesCtor;\r\nvar prepareStorage;\r\nvar getRawIndexWithoutIndices;\r\nvar getRawIndexWithIndices;\r\nvar getId;\r\nvar getIdNameFromStore;\r\nvar makeIdFromName;\r\nvar normalizeDimensions;\r\nvar validateDimensions;\r\nvar cloneListForMapAndSample;\r\nvar getInitialExtent;\r\nvar setItemDataAndSeriesIndex;\r\nvar transferProperties;\r\nvar List = (function () {\r\n function List(dimensions, hostModel) {\r\n this.type = 'list';\r\n this._count = 0;\r\n this._rawCount = 0;\r\n this._storage = {};\r\n this._storageArr = [];\r\n this._nameList = [];\r\n this._idList = [];\r\n this._visual = {};\r\n this._layout = {};\r\n this._itemVisuals = [];\r\n this._itemLayouts = [];\r\n this._graphicEls = [];\r\n this._rawExtent = {};\r\n this._extent = {};\r\n this._approximateExtent = {};\r\n this._calculationInfo = {};\r\n this.hasItemOption = true;\r\n this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map'];\r\n this.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\r\n this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample'];\r\n this.getRawIndex = getRawIndexWithoutIndices;\r\n dimensions = dimensions || ['x', 'y'];\r\n var dimensionInfos = {};\r\n var dimensionNames = [];\r\n var invertedIndicesMap = {};\r\n for (var i = 0; i < dimensions.length; i++) {\r\n var dimInfoInput = dimensions[i];\r\n var dimensionInfo = isString(dimInfoInput)\r\n ? new DataDimensionInfo({ name: dimInfoInput })\r\n : !(dimInfoInput instanceof DataDimensionInfo)\r\n ? new DataDimensionInfo(dimInfoInput)\r\n : dimInfoInput;\r\n var dimensionName = dimensionInfo.name;\r\n dimensionInfo.type = dimensionInfo.type || 'float';\r\n if (!dimensionInfo.coordDim) {\r\n dimensionInfo.coordDim = dimensionName;\r\n dimensionInfo.coordDimIndex = 0;\r\n }\r\n var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {};\r\n dimensionNames.push(dimensionName);\r\n dimensionInfos[dimensionName] = dimensionInfo;\r\n dimensionInfo.index = i;\r\n if (dimensionInfo.createInvertedIndices) {\r\n invertedIndicesMap[dimensionName] = [];\r\n }\r\n if (otherDims.itemName === 0) {\r\n this._nameDimIdx = i;\r\n this._nameOrdinalMeta = dimensionInfo.ordinalMeta;\r\n }\r\n if (otherDims.itemId === 0) {\r\n this._idDimIdx = i;\r\n this._idOrdinalMeta = dimensionInfo.ordinalMeta;\r\n }\r\n }\r\n this.dimensions = dimensionNames;\r\n this._dimensionInfos = dimensionInfos;\r\n this.hostModel = hostModel;\r\n this._dimensionsSummary = summarizeDimensions(this);\r\n this._invertedIndicesMap = invertedIndicesMap;\r\n this.userOutput = this._dimensionsSummary.userOutput;\r\n }\r\n List.prototype.getDimension = function (dim) {\r\n if (typeof dim === 'number'\r\n || (!isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim))) {\r\n dim = this.dimensions[dim];\r\n }\r\n return dim;\r\n };\r\n List.prototype.getDimensionInfo = function (dim) {\r\n return this._dimensionInfos[this.getDimension(dim)];\r\n };\r\n List.prototype.getDimensionsOnCoord = function () {\r\n return this._dimensionsSummary.dataDimsOnCoord.slice();\r\n };\r\n List.prototype.mapDimension = function (coordDim, idx) {\r\n var dimensionsSummary = this._dimensionsSummary;\r\n if (idx == null) {\r\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\r\n }\r\n var dims = dimensionsSummary.encode[coordDim];\r\n return dims ? dims[idx] : null;\r\n };\r\n List.prototype.mapDimensionsAll = function (coordDim) {\r\n var dimensionsSummary = this._dimensionsSummary;\r\n var dims = dimensionsSummary.encode[coordDim];\r\n return (dims || []).slice();\r\n };\r\n List.prototype.initData = function (data, nameList, dimValueGetter) {\r\n var notProvider = isSourceInstance(data) || isArrayLike(data);\r\n var provider = notProvider\r\n ? new DefaultDataProvider(data, this.dimensions.length)\r\n : data;\r\n if (__DEV__) {\r\n assert(notProvider || (isFunction(provider.getItem)\r\n && isFunction(provider.count)), 'Inavlid data provider.');\r\n }\r\n this._rawData = provider;\r\n var sourceFormat = provider.getSource().sourceFormat;\r\n this._storage = {};\r\n this._indices = null;\r\n this._dontMakeIdFromName =\r\n this._idDimIdx != null\r\n || sourceFormat === SOURCE_FORMAT_TYPED_ARRAY\r\n || !!provider.fillStorage;\r\n this._nameList = (nameList || []).slice();\r\n this._idList = [];\r\n this._nameRepeatCount = {};\r\n if (!dimValueGetter) {\r\n this.hasItemOption = false;\r\n }\r\n this.defaultDimValueGetter = defaultDimValueGetters[sourceFormat];\r\n this._dimValueGetter = dimValueGetter = dimValueGetter\r\n || this.defaultDimValueGetter;\r\n this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows;\r\n this._rawExtent = {};\r\n this._initDataFromProvider(0, provider.count());\r\n if (provider.pure) {\r\n this.hasItemOption = false;\r\n }\r\n };\r\n List.prototype.getProvider = function () {\r\n return this._rawData;\r\n };\r\n List.prototype.appendData = function (data) {\r\n if (__DEV__) {\r\n assert(!this._indices, 'appendData can only be called on raw data.');\r\n }\r\n var rawData = this._rawData;\r\n var start = this.count();\r\n rawData.appendData(data);\r\n var end = rawData.count();\r\n if (!rawData.persistent) {\r\n end += start;\r\n }\r\n this._initDataFromProvider(start, end, true);\r\n };\r\n List.prototype.appendValues = function (values, names) {\r\n var storage = this._storage;\r\n var dimensions = this.dimensions;\r\n var dimLen = dimensions.length;\r\n var rawExtent = this._rawExtent;\r\n var start = this.count();\r\n var end = start + Math.max(values.length, names ? names.length : 0);\r\n for (var i = 0; i < dimLen; i++) {\r\n var dim = dimensions[i];\r\n if (!rawExtent[dim]) {\r\n rawExtent[dim] = getInitialExtent();\r\n }\r\n prepareStorage(storage, this._dimensionInfos[dim], end, true);\r\n }\r\n var rawExtentArr = map$1(dimensions, function (dim) {\r\n return rawExtent[dim];\r\n });\r\n var storageArr = this._storageArr = map$1(dimensions, function (dim) {\r\n return storage[dim];\r\n });\r\n var emptyDataItem = [];\r\n for (var idx = start; idx < end; idx++) {\r\n var sourceIdx = idx - start;\r\n for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\r\n var dim = dimensions[dimIdx];\r\n var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, dimIdx);\r\n storageArr[dimIdx][idx] = val;\r\n var dimRawExtent = rawExtentArr[dimIdx];\r\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n }\r\n if (names) {\r\n this._nameList[idx] = names[sourceIdx];\r\n if (!this._dontMakeIdFromName) {\r\n makeIdFromName(this, idx);\r\n }\r\n }\r\n }\r\n this._rawCount = this._count = end;\r\n this._extent = {};\r\n prepareInvertedIndex(this);\r\n };\r\n List.prototype._initDataFromProvider = function (start, end, append) {\r\n if (start >= end) {\r\n return;\r\n }\r\n var rawData = this._rawData;\r\n var storage = this._storage;\r\n var dimensions = this.dimensions;\r\n var dimLen = dimensions.length;\r\n var dimensionInfoMap = this._dimensionInfos;\r\n var nameList = this._nameList;\r\n var idList = this._idList;\r\n var rawExtent = this._rawExtent;\r\n var sourceFormat = rawData.getSource().sourceFormat;\r\n var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL;\r\n for (var i = 0; i < dimLen; i++) {\r\n var dim = dimensions[i];\r\n if (!rawExtent[dim]) {\r\n rawExtent[dim] = getInitialExtent();\r\n }\r\n prepareStorage(storage, dimensionInfoMap[dim], end, append);\r\n }\r\n var storageArr = this._storageArr = map$1(dimensions, function (dim) {\r\n return storage[dim];\r\n });\r\n var rawExtentArr = map$1(dimensions, function (dim) {\r\n return rawExtent[dim];\r\n });\r\n if (rawData.fillStorage) {\r\n rawData.fillStorage(start, end, storageArr, rawExtentArr);\r\n }\r\n else {\r\n var dataItem = [];\r\n for (var idx = start; idx < end; idx++) {\r\n dataItem = rawData.getItem(idx, dataItem);\r\n for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\r\n var dim = dimensions[dimIdx];\r\n var dimStorage = storageArr[dimIdx];\r\n var val = this._dimValueGetter(dataItem, dim, idx, dimIdx);\r\n dimStorage[idx] = val;\r\n var dimRawExtent = rawExtentArr[dimIdx];\r\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n }\r\n if (isFormatOriginal && !rawData.pure && dataItem) {\r\n var itemName = dataItem.name;\r\n if (nameList[idx] == null && itemName != null) {\r\n nameList[idx] = convertOptionIdName(itemName, null);\r\n }\r\n var itemId = dataItem.id;\r\n if (idList[idx] == null && itemId != null) {\r\n idList[idx] = convertOptionIdName(itemId, null);\r\n }\r\n }\r\n if (!this._dontMakeIdFromName) {\r\n makeIdFromName(this, idx);\r\n }\r\n }\r\n }\r\n if (!rawData.persistent && rawData.clean) {\r\n rawData.clean();\r\n }\r\n this._rawCount = this._count = end;\r\n this._extent = {};\r\n prepareInvertedIndex(this);\r\n };\r\n List.prototype.count = function () {\r\n return this._count;\r\n };\r\n List.prototype.getIndices = function () {\r\n var newIndices;\r\n var indices = this._indices;\r\n if (indices) {\r\n var Ctor = indices.constructor;\r\n var thisCount = this._count;\r\n if (Ctor === Array) {\r\n newIndices = new Ctor(thisCount);\r\n for (var i = 0; i < thisCount; i++) {\r\n newIndices[i] = indices[i];\r\n }\r\n }\r\n else {\r\n newIndices = new Ctor(indices.buffer, 0, thisCount);\r\n }\r\n }\r\n else {\r\n var Ctor = getIndicesCtor(this);\r\n newIndices = new Ctor(this.count());\r\n for (var i = 0; i < newIndices.length; i++) {\r\n newIndices[i] = i;\r\n }\r\n }\r\n return newIndices;\r\n };\r\n List.prototype.getByDimIdx = function (dimIdx, idx) {\r\n if (!(idx >= 0 && idx < this._count)) {\r\n return NaN;\r\n }\r\n var dimStore = this._storageArr[dimIdx];\r\n return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\r\n };\r\n List.prototype.get = function (dim, idx) {\r\n if (!(idx >= 0 && idx < this._count)) {\r\n return NaN;\r\n }\r\n var dimStore = this._storage[dim];\r\n return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\r\n };\r\n List.prototype.getByRawIndex = function (dim, rawIdx) {\r\n if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\r\n return NaN;\r\n }\r\n var dimStore = this._storage[dim];\r\n return dimStore ? dimStore[rawIdx] : NaN;\r\n };\r\n List.prototype.getValues = function (dimensions, idx) {\r\n var values = [];\r\n if (!isArray(dimensions)) {\r\n idx = dimensions;\r\n dimensions = this.dimensions;\r\n }\r\n for (var i = 0, len = dimensions.length; i < len; i++) {\r\n values.push(this.get(dimensions[i], idx));\r\n }\r\n return values;\r\n };\r\n List.prototype.hasValue = function (idx) {\r\n var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\r\n for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\r\n if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n List.prototype.getDataExtent = function (dim) {\r\n dim = this.getDimension(dim);\r\n var dimData = this._storage[dim];\r\n var initialExtent = getInitialExtent();\r\n if (!dimData) {\r\n return initialExtent;\r\n }\r\n var currEnd = this.count();\r\n var useRaw = !this._indices;\r\n var dimExtent;\r\n if (useRaw) {\r\n return this._rawExtent[dim].slice();\r\n }\r\n dimExtent = this._extent[dim];\r\n if (dimExtent) {\r\n return dimExtent.slice();\r\n }\r\n dimExtent = initialExtent;\r\n var min = dimExtent[0];\r\n var max = dimExtent[1];\r\n for (var i = 0; i < currEnd; i++) {\r\n var rawIdx = this.getRawIndex(i);\r\n var value = dimData[rawIdx];\r\n value < min && (min = value);\r\n value > max && (max = value);\r\n }\r\n dimExtent = [min, max];\r\n this._extent[dim] = dimExtent;\r\n return dimExtent;\r\n };\r\n List.prototype.getApproximateExtent = function (dim) {\r\n dim = this.getDimension(dim);\r\n return this._approximateExtent[dim] || this.getDataExtent(dim);\r\n };\r\n List.prototype.setApproximateExtent = function (extent, dim) {\r\n dim = this.getDimension(dim);\r\n this._approximateExtent[dim] = extent.slice();\r\n };\r\n List.prototype.getCalculationInfo = function (key) {\r\n return this._calculationInfo[key];\r\n };\r\n List.prototype.setCalculationInfo = function (key, value) {\r\n isObject$3(key)\r\n ? extend(this._calculationInfo, key)\r\n : (this._calculationInfo[key] = value);\r\n };\r\n List.prototype.getSum = function (dim) {\r\n var dimData = this._storage[dim];\r\n var sum = 0;\r\n if (dimData) {\r\n for (var i = 0, len = this.count(); i < len; i++) {\r\n var value = this.get(dim, i);\r\n if (!isNaN(value)) {\r\n sum += value;\r\n }\r\n }\r\n }\r\n return sum;\r\n };\r\n List.prototype.getMedian = function (dim) {\r\n var dimDataArray = [];\r\n this.each(dim, function (val) {\r\n if (!isNaN(val)) {\r\n dimDataArray.push(val);\r\n }\r\n });\r\n var sortedDimDataArray = dimDataArray.sort(function (a, b) {\r\n return a - b;\r\n });\r\n var len = this.count();\r\n return len === 0\r\n ? 0\r\n : len % 2 === 1\r\n ? sortedDimDataArray[(len - 1) / 2]\r\n : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\r\n };\r\n List.prototype.rawIndexOf = function (dim, value) {\r\n var invertedIndices = dim && this._invertedIndicesMap[dim];\r\n if (__DEV__) {\r\n if (!invertedIndices) {\r\n throw new Error('Do not supported yet');\r\n }\r\n }\r\n var rawIndex = invertedIndices[value];\r\n if (rawIndex == null || isNaN(rawIndex)) {\r\n return INDEX_NOT_FOUND;\r\n }\r\n return rawIndex;\r\n };\r\n List.prototype.indexOfName = function (name) {\r\n for (var i = 0, len = this.count(); i < len; i++) {\r\n if (this.getName(i) === name) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n List.prototype.indexOfRawIndex = function (rawIndex) {\r\n if (rawIndex >= this._rawCount || rawIndex < 0) {\r\n return -1;\r\n }\r\n if (!this._indices) {\r\n return rawIndex;\r\n }\r\n var indices = this._indices;\r\n var rawDataIndex = indices[rawIndex];\r\n if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\r\n return rawIndex;\r\n }\r\n var left = 0;\r\n var right = this._count - 1;\r\n while (left <= right) {\r\n var mid = (left + right) / 2 | 0;\r\n if (indices[mid] < rawIndex) {\r\n left = mid + 1;\r\n }\r\n else if (indices[mid] > rawIndex) {\r\n right = mid - 1;\r\n }\r\n else {\r\n return mid;\r\n }\r\n }\r\n return -1;\r\n };\r\n List.prototype.indicesOfNearest = function (dim, value, maxDistance) {\r\n var storage = this._storage;\r\n var dimData = storage[dim];\r\n var nearestIndices = [];\r\n if (!dimData) {\r\n return nearestIndices;\r\n }\r\n if (maxDistance == null) {\r\n maxDistance = Infinity;\r\n }\r\n var minDist = Infinity;\r\n var minDiff = -1;\r\n var nearestIndicesLen = 0;\r\n for (var i = 0, len = this.count(); i < len; i++) {\r\n var dataIndex = this.getRawIndex(i);\r\n var diff = value - dimData[dataIndex];\r\n var dist = Math.abs(diff);\r\n if (dist <= maxDistance) {\r\n if (dist < minDist\r\n || (dist === minDist && diff >= 0 && minDiff < 0)) {\r\n minDist = dist;\r\n minDiff = diff;\r\n nearestIndicesLen = 0;\r\n }\r\n if (diff === minDiff) {\r\n nearestIndices[nearestIndicesLen++] = i;\r\n }\r\n }\r\n }\r\n nearestIndices.length = nearestIndicesLen;\r\n return nearestIndices;\r\n };\r\n List.prototype.getRawDataItem = function (idx) {\r\n if (!this._rawData.persistent) {\r\n var val = [];\r\n for (var i = 0; i < this.dimensions.length; i++) {\r\n var dim = this.dimensions[i];\r\n val.push(this.get(dim, idx));\r\n }\r\n return val;\r\n }\r\n else {\r\n return this._rawData.getItem(this.getRawIndex(idx));\r\n }\r\n };\r\n List.prototype.getName = function (idx) {\r\n var rawIndex = this.getRawIndex(idx);\r\n var name = this._nameList[rawIndex];\r\n if (name == null && this._nameDimIdx != null) {\r\n name = getIdNameFromStore(this, this._nameDimIdx, this._nameOrdinalMeta, rawIndex);\r\n }\r\n if (name == null) {\r\n name = '';\r\n }\r\n return name;\r\n };\r\n List.prototype.getId = function (idx) {\r\n return getId(this, this.getRawIndex(idx));\r\n };\r\n List.prototype.each = function (dims, cb, ctx, ctxCompat) {\r\n var _this = this;\r\n if (!this._count) {\r\n return;\r\n }\r\n if (typeof dims === 'function') {\r\n ctxCompat = ctx;\r\n ctx = cb;\r\n cb = dims;\r\n dims = [];\r\n }\r\n var fCtx = (ctx || ctxCompat || this);\r\n var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n if (__DEV__) {\r\n validateDimensions(this, dimNames);\r\n }\r\n var dimSize = dimNames.length;\r\n var dimIndices = map$1(dimNames, function (dimName) {\r\n return _this._dimensionInfos[dimName].index;\r\n });\r\n var storageArr = this._storageArr;\r\n for (var i = 0, len = this.count(); i < len; i++) {\r\n var rawIdx = this.getRawIndex(i);\r\n switch (dimSize) {\r\n case 0:\r\n cb.call(fCtx, i);\r\n break;\r\n case 1:\r\n cb.call(fCtx, storageArr[dimIndices[0]][rawIdx], i);\r\n break;\r\n case 2:\r\n cb.call(fCtx, storageArr[dimIndices[0]][rawIdx], storageArr[dimIndices[1]][rawIdx], i);\r\n break;\r\n default:\r\n var k = 0;\r\n var value = [];\r\n for (; k < dimSize; k++) {\r\n value[k] = storageArr[dimIndices[k]][rawIdx];\r\n }\r\n value[k] = i;\r\n cb.apply(fCtx, value);\r\n }\r\n }\r\n };\r\n List.prototype.filterSelf = function (dims, cb, ctx, ctxCompat) {\r\n var _this = this;\r\n if (!this._count) {\r\n return;\r\n }\r\n if (typeof dims === 'function') {\r\n ctxCompat = ctx;\r\n ctx = cb;\r\n cb = dims;\r\n dims = [];\r\n }\r\n var fCtx = (ctx || ctxCompat || this);\r\n var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n if (__DEV__) {\r\n validateDimensions(this, dimNames);\r\n }\r\n var count = this.count();\r\n var Ctor = getIndicesCtor(this);\r\n var newIndices = new Ctor(count);\r\n var value = [];\r\n var dimSize = dimNames.length;\r\n var offset = 0;\r\n var dimIndices = map$1(dimNames, function (dimName) {\r\n return _this._dimensionInfos[dimName].index;\r\n });\r\n var dim0 = dimIndices[0];\r\n var storageArr = this._storageArr;\r\n for (var i = 0; i < count; i++) {\r\n var keep = void 0;\r\n var rawIdx = this.getRawIndex(i);\r\n if (dimSize === 0) {\r\n keep = cb.call(fCtx, i);\r\n }\r\n else if (dimSize === 1) {\r\n var val = storageArr[dim0][rawIdx];\r\n keep = cb.call(fCtx, val, i);\r\n }\r\n else {\r\n var k = 0;\r\n for (; k < dimSize; k++) {\r\n value[k] = storageArr[dimIndices[k]][rawIdx];\r\n }\r\n value[k] = i;\r\n keep = cb.apply(fCtx, value);\r\n }\r\n if (keep) {\r\n newIndices[offset++] = rawIdx;\r\n }\r\n }\r\n if (offset < count) {\r\n this._indices = newIndices;\r\n }\r\n this._count = offset;\r\n this._extent = {};\r\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n return this;\r\n };\r\n List.prototype.selectRange = function (range) {\r\n var _this = this;\r\n var len = this._count;\r\n if (!len) {\r\n return;\r\n }\r\n var dimensions = [];\r\n for (var dim in range) {\r\n if (range.hasOwnProperty(dim)) {\r\n dimensions.push(dim);\r\n }\r\n }\r\n if (__DEV__) {\r\n validateDimensions(this, dimensions);\r\n }\r\n var dimSize = dimensions.length;\r\n if (!dimSize) {\r\n return;\r\n }\r\n var originalCount = this.count();\r\n var Ctor = getIndicesCtor(this);\r\n var newIndices = new Ctor(originalCount);\r\n var offset = 0;\r\n var dim0 = dimensions[0];\r\n var dimIndices = map$1(dimensions, function (dimName) {\r\n return _this._dimensionInfos[dimName].index;\r\n });\r\n var min = range[dim0][0];\r\n var max = range[dim0][1];\r\n var storageArr = this._storageArr;\r\n var quickFinished = false;\r\n if (!this._indices) {\r\n var idx = 0;\r\n if (dimSize === 1) {\r\n var dimStorage = storageArr[dimIndices[0]];\r\n for (var i = 0; i < len; i++) {\r\n var val = dimStorage[i];\r\n if ((val >= min && val <= max) || isNaN(val)) {\r\n newIndices[offset++] = idx;\r\n }\r\n idx++;\r\n }\r\n quickFinished = true;\r\n }\r\n else if (dimSize === 2) {\r\n var dimStorage = storageArr[dimIndices[0]];\r\n var dimStorage2 = storageArr[dimIndices[1]];\r\n var min2 = range[dimensions[1]][0];\r\n var max2 = range[dimensions[1]][1];\r\n for (var i = 0; i < len; i++) {\r\n var val = dimStorage[i];\r\n var val2 = dimStorage2[i];\r\n if (((val >= min && val <= max) || isNaN(val))\r\n && ((val2 >= min2 && val2 <= max2) || isNaN(val2))) {\r\n newIndices[offset++] = idx;\r\n }\r\n idx++;\r\n }\r\n quickFinished = true;\r\n }\r\n }\r\n if (!quickFinished) {\r\n if (dimSize === 1) {\r\n for (var i = 0; i < originalCount; i++) {\r\n var rawIndex = this.getRawIndex(i);\r\n var val = storageArr[dimIndices[0]][rawIndex];\r\n if ((val >= min && val <= max) || isNaN(val)) {\r\n newIndices[offset++] = rawIndex;\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < originalCount; i++) {\r\n var keep = true;\r\n var rawIndex = this.getRawIndex(i);\r\n for (var k = 0; k < dimSize; k++) {\r\n var dimk = dimensions[k];\r\n var val = storageArr[dimIndices[k]][rawIndex];\r\n if (val < range[dimk][0] || val > range[dimk][1]) {\r\n keep = false;\r\n }\r\n }\r\n if (keep) {\r\n newIndices[offset++] = this.getRawIndex(i);\r\n }\r\n }\r\n }\r\n }\r\n if (offset < originalCount) {\r\n this._indices = newIndices;\r\n }\r\n this._count = offset;\r\n this._extent = {};\r\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n return this;\r\n };\r\n List.prototype.mapArray = function (dims, cb, ctx, ctxCompat) {\r\n if (typeof dims === 'function') {\r\n ctxCompat = ctx;\r\n ctx = cb;\r\n cb = dims;\r\n dims = [];\r\n }\r\n ctx = (ctx || ctxCompat || this);\r\n var result = [];\r\n this.each(dims, function () {\r\n result.push(cb && cb.apply(this, arguments));\r\n }, ctx);\r\n return result;\r\n };\r\n List.prototype.map = function (dims, cb, ctx, ctxCompat) {\r\n var fCtx = (ctx || ctxCompat || this);\r\n var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n if (__DEV__) {\r\n validateDimensions(this, dimNames);\r\n }\r\n var list = cloneListForMapAndSample(this, dimNames);\r\n var storage = list._storage;\r\n list._indices = this._indices;\r\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n var tmpRetValue = [];\r\n var dimSize = dimNames.length;\r\n var dataCount = this.count();\r\n var values = [];\r\n var rawExtent = list._rawExtent;\r\n for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\r\n for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\r\n values[dimIndex] = this.get(dimNames[dimIndex], dataIndex);\r\n }\r\n values[dimSize] = dataIndex;\r\n var retValue = cb && cb.apply(fCtx, values);\r\n if (retValue != null) {\r\n if (typeof retValue !== 'object') {\r\n tmpRetValue[0] = retValue;\r\n retValue = tmpRetValue;\r\n }\r\n var rawIndex = this.getRawIndex(dataIndex);\r\n for (var i = 0; i < retValue.length; i++) {\r\n var dim = dimNames[i];\r\n var val = retValue[i];\r\n var rawExtentOnDim = rawExtent[dim];\r\n var dimStore = storage[dim];\r\n if (dimStore) {\r\n dimStore[rawIndex] = val;\r\n }\r\n if (val < rawExtentOnDim[0]) {\r\n rawExtentOnDim[0] = val;\r\n }\r\n if (val > rawExtentOnDim[1]) {\r\n rawExtentOnDim[1] = val;\r\n }\r\n }\r\n }\r\n }\r\n return list;\r\n };\r\n List.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) {\r\n var list = cloneListForMapAndSample(this, [dimension]);\r\n var targetStorage = list._storage;\r\n var frameValues = [];\r\n var frameSize = mathFloor(1 / rate);\r\n var dimStore = targetStorage[dimension];\r\n var len = this.count();\r\n var rawExtentOnDim = list._rawExtent[dimension];\r\n var newIndices = new (getIndicesCtor(this))(len);\r\n var offset = 0;\r\n for (var i = 0; i < len; i += frameSize) {\r\n if (frameSize > len - i) {\r\n frameSize = len - i;\r\n frameValues.length = frameSize;\r\n }\r\n for (var k = 0; k < frameSize; k++) {\r\n var dataIdx = this.getRawIndex(i + k);\r\n frameValues[k] = dimStore[dataIdx];\r\n }\r\n var value = sampleValue(frameValues);\r\n var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\r\n dimStore[sampleFrameIdx] = value;\r\n if (value < rawExtentOnDim[0]) {\r\n rawExtentOnDim[0] = value;\r\n }\r\n if (value > rawExtentOnDim[1]) {\r\n rawExtentOnDim[1] = value;\r\n }\r\n newIndices[offset++] = sampleFrameIdx;\r\n }\r\n list._count = offset;\r\n list._indices = newIndices;\r\n list.getRawIndex = getRawIndexWithIndices;\r\n return list;\r\n };\r\n List.prototype.lttbDownSample = function (valueDimension, rate) {\r\n var list = cloneListForMapAndSample(this, []);\r\n var targetStorage = list._storage;\r\n var dimStore = targetStorage[valueDimension];\r\n var len = this.count();\r\n var newIndices = new (getIndicesCtor(this))(len);\r\n var sampledIndex = 0;\r\n var frameSize = mathFloor(1 / rate);\r\n var currentRawIndex = this.getRawIndex(0);\r\n var maxArea;\r\n var area;\r\n var nextRawIndex;\r\n newIndices[sampledIndex++] = currentRawIndex;\r\n for (var i = 1; i < len - 1; i += frameSize) {\r\n var nextFrameStart = Math.min(i + frameSize, len - 1);\r\n var nextFrameEnd = Math.min(i + frameSize * 2, len);\r\n var avgX = (nextFrameEnd + nextFrameStart) / 2;\r\n var avgY = 0;\r\n for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) {\r\n var rawIndex = this.getRawIndex(idx);\r\n var y = dimStore[rawIndex];\r\n if (isNaN(y)) {\r\n continue;\r\n }\r\n avgY += y;\r\n }\r\n avgY /= (nextFrameEnd - nextFrameStart);\r\n var frameStart = i;\r\n var frameEnd = Math.min(i + frameSize, len);\r\n var pointAX = i - 1;\r\n var pointAY = dimStore[currentRawIndex];\r\n maxArea = -1;\r\n nextRawIndex = frameStart;\r\n for (var idx = frameStart; idx < frameEnd; idx++) {\r\n var rawIndex = this.getRawIndex(idx);\r\n var y = dimStore[rawIndex];\r\n if (isNaN(y)) {\r\n continue;\r\n }\r\n area = Math.abs((pointAX - avgX) * (y - pointAY)\r\n - (pointAX - idx) * (avgY - pointAY));\r\n if (area > maxArea) {\r\n maxArea = area;\r\n nextRawIndex = rawIndex;\r\n }\r\n }\r\n newIndices[sampledIndex++] = nextRawIndex;\r\n currentRawIndex = nextRawIndex;\r\n }\r\n newIndices[sampledIndex++] = this.getRawIndex(len - 1);\r\n list._count = sampledIndex;\r\n list._indices = newIndices;\r\n list.getRawIndex = getRawIndexWithIndices;\r\n return list;\r\n };\r\n List.prototype.getItemModel = function (idx) {\r\n var hostModel = this.hostModel;\r\n var dataItem = this.getRawDataItem(idx);\r\n return new Model(dataItem, hostModel, hostModel && hostModel.ecModel);\r\n };\r\n List.prototype.diff = function (otherList) {\r\n var thisList = this;\r\n return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\r\n return getId(otherList, idx);\r\n }, function (idx) {\r\n return getId(thisList, idx);\r\n });\r\n };\r\n List.prototype.getVisual = function (key) {\r\n var visual = this._visual;\r\n return visual && visual[key];\r\n };\r\n List.prototype.setVisual = function (kvObj, val) {\r\n this._visual = this._visual || {};\r\n if (isObject$3(kvObj)) {\r\n extend(this._visual, kvObj);\r\n }\r\n else {\r\n this._visual[kvObj] = val;\r\n }\r\n };\r\n List.prototype.getItemVisual = function (idx, key) {\r\n var itemVisual = this._itemVisuals[idx];\r\n var val = itemVisual && itemVisual[key];\r\n if (val == null) {\r\n return this.getVisual(key);\r\n }\r\n return val;\r\n };\r\n List.prototype.hasItemVisual = function () {\r\n return this._itemVisuals.length > 0;\r\n };\r\n List.prototype.ensureUniqueItemVisual = function (idx, key) {\r\n var itemVisuals = this._itemVisuals;\r\n var itemVisual = itemVisuals[idx];\r\n if (!itemVisual) {\r\n itemVisual = itemVisuals[idx] = {};\r\n }\r\n var val = itemVisual[key];\r\n if (val == null) {\r\n val = this.getVisual(key);\r\n if (isArray(val)) {\r\n val = val.slice();\r\n }\r\n else if (isObject$3(val)) {\r\n val = extend({}, val);\r\n }\r\n itemVisual[key] = val;\r\n }\r\n return val;\r\n };\r\n List.prototype.setItemVisual = function (idx, key, value) {\r\n var itemVisual = this._itemVisuals[idx] || {};\r\n this._itemVisuals[idx] = itemVisual;\r\n if (isObject$3(key)) {\r\n extend(itemVisual, key);\r\n }\r\n else {\r\n itemVisual[key] = value;\r\n }\r\n };\r\n List.prototype.clearAllVisual = function () {\r\n this._visual = {};\r\n this._itemVisuals = [];\r\n };\r\n List.prototype.setLayout = function (key, val) {\r\n if (isObject$3(key)) {\r\n for (var name_1 in key) {\r\n if (key.hasOwnProperty(name_1)) {\r\n this.setLayout(name_1, key[name_1]);\r\n }\r\n }\r\n return;\r\n }\r\n this._layout[key] = val;\r\n };\r\n List.prototype.getLayout = function (key) {\r\n return this._layout[key];\r\n };\r\n List.prototype.getItemLayout = function (idx) {\r\n return this._itemLayouts[idx];\r\n };\r\n List.prototype.setItemLayout = function (idx, layout, merge) {\r\n this._itemLayouts[idx] = merge\r\n ? extend(this._itemLayouts[idx] || {}, layout)\r\n : layout;\r\n };\r\n List.prototype.clearItemLayouts = function () {\r\n this._itemLayouts.length = 0;\r\n };\r\n List.prototype.setItemGraphicEl = function (idx, el) {\r\n var hostModel = this.hostModel;\r\n if (el) {\r\n var ecData = getECData(el);\r\n ecData.dataIndex = idx;\r\n ecData.dataType = this.dataType;\r\n ecData.seriesIndex = hostModel && hostModel.seriesIndex;\r\n if (el.type === 'group') {\r\n el.traverse(setItemDataAndSeriesIndex, el);\r\n }\r\n }\r\n this._graphicEls[idx] = el;\r\n };\r\n List.prototype.getItemGraphicEl = function (idx) {\r\n return this._graphicEls[idx];\r\n };\r\n List.prototype.eachItemGraphicEl = function (cb, context) {\r\n each(this._graphicEls, function (el, idx) {\r\n if (el) {\r\n cb && cb.call(context, el, idx);\r\n }\r\n });\r\n };\r\n List.prototype.cloneShallow = function (list) {\r\n if (!list) {\r\n var dimensionInfoList = map$1(this.dimensions, this.getDimensionInfo, this);\r\n list = new List(dimensionInfoList, this.hostModel);\r\n }\r\n list._storage = this._storage;\r\n list._storageArr = this._storageArr;\r\n transferProperties(list, this);\r\n if (this._indices) {\r\n var Ctor = this._indices.constructor;\r\n if (Ctor === Array) {\r\n var thisCount = this._indices.length;\r\n list._indices = new Ctor(thisCount);\r\n for (var i = 0; i < thisCount; i++) {\r\n list._indices[i] = this._indices[i];\r\n }\r\n }\r\n else {\r\n list._indices = new Ctor(this._indices);\r\n }\r\n }\r\n else {\r\n list._indices = null;\r\n }\r\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n return list;\r\n };\r\n List.prototype.wrapMethod = function (methodName, injectFunction) {\r\n var originalMethod = this[methodName];\r\n if (typeof originalMethod !== 'function') {\r\n return;\r\n }\r\n this.__wrappedMethods = this.__wrappedMethods || [];\r\n this.__wrappedMethods.push(methodName);\r\n this[methodName] = function () {\r\n var res = originalMethod.apply(this, arguments);\r\n return injectFunction.apply(this, [res].concat(slice(arguments)));\r\n };\r\n };\r\n List.internalField = (function () {\r\n defaultDimValueGetters = {\r\n arrayRows: getDimValueSimply,\r\n objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\r\n return parseDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\r\n },\r\n keyedColumns: getDimValueSimply,\r\n original: function (dataItem, dimName, dataIndex, dimIndex) {\r\n var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value);\r\n if (!this._rawData.pure && isDataItemOption(dataItem)) {\r\n this.hasItemOption = true;\r\n }\r\n return parseDataValue((value instanceof Array)\r\n ? value[dimIndex]\r\n : value, this._dimensionInfos[dimName]);\r\n },\r\n typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\r\n return dataItem[dimIndex];\r\n }\r\n };\r\n function getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\r\n return parseDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\r\n }\r\n prepareInvertedIndex = function (list) {\r\n var invertedIndicesMap = list._invertedIndicesMap;\r\n each(invertedIndicesMap, function (invertedIndices, dim) {\r\n var dimInfo = list._dimensionInfos[dim];\r\n var ordinalMeta = dimInfo.ordinalMeta;\r\n if (ordinalMeta) {\r\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length);\r\n for (var i = 0; i < invertedIndices.length; i++) {\r\n invertedIndices[i] = INDEX_NOT_FOUND;\r\n }\r\n for (var i = 0; i < list._count; i++) {\r\n invertedIndices[list.get(dim, i)] = i;\r\n }\r\n }\r\n });\r\n };\r\n getIdNameFromStore = function (list, dimIdx, ordinalMeta, rawIndex) {\r\n var val;\r\n var chunk = list._storageArr[dimIdx];\r\n if (chunk) {\r\n val = chunk[rawIndex];\r\n if (ordinalMeta && ordinalMeta.categories.length) {\r\n val = ordinalMeta.categories[val];\r\n }\r\n }\r\n return convertOptionIdName(val, null);\r\n };\r\n getIndicesCtor = function (list) {\r\n return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\r\n };\r\n prepareStorage = function (storage, dimInfo, end, append) {\r\n var DataCtor = dataCtors[dimInfo.type];\r\n var dim = dimInfo.name;\r\n if (append) {\r\n var oldStore = storage[dim];\r\n var oldLen = oldStore && oldStore.length;\r\n if (!(oldLen === end)) {\r\n var newStore = new DataCtor(end);\r\n for (var j = 0; j < oldLen; j++) {\r\n newStore[j] = oldStore[j];\r\n }\r\n storage[dim] = newStore;\r\n }\r\n }\r\n else {\r\n storage[dim] = new DataCtor(end);\r\n }\r\n };\r\n getRawIndexWithoutIndices = function (idx) {\r\n return idx;\r\n };\r\n getRawIndexWithIndices = function (idx) {\r\n if (idx < this._count && idx >= 0) {\r\n return this._indices[idx];\r\n }\r\n return -1;\r\n };\r\n getId = function (list, rawIndex) {\r\n var id = list._idList[rawIndex];\r\n if (id == null && list._idDimIdx != null) {\r\n id = getIdNameFromStore(list, list._idDimIdx, list._idOrdinalMeta, rawIndex);\r\n }\r\n if (id == null) {\r\n id = ID_PREFIX + rawIndex;\r\n }\r\n return id;\r\n };\r\n normalizeDimensions = function (dimensions) {\r\n if (!isArray(dimensions)) {\r\n dimensions = dimensions != null ? [dimensions] : [];\r\n }\r\n return dimensions;\r\n };\r\n validateDimensions = function (list, dims) {\r\n for (var i = 0; i < dims.length; i++) {\r\n if (!list._dimensionInfos[dims[i]]) {\r\n console.error('Unkown dimension ' + dims[i]);\r\n }\r\n }\r\n };\r\n cloneListForMapAndSample = function (original, excludeDimensions) {\r\n var allDimensions = original.dimensions;\r\n var list = new List(map$1(allDimensions, original.getDimensionInfo, original), original.hostModel);\r\n transferProperties(list, original);\r\n var storage = list._storage = {};\r\n var originalStorage = original._storage;\r\n var storageArr = list._storageArr = [];\r\n for (var i = 0; i < allDimensions.length; i++) {\r\n var dim = allDimensions[i];\r\n if (originalStorage[dim]) {\r\n if (indexOf(excludeDimensions, dim) >= 0) {\r\n storage[dim] = cloneChunk(originalStorage[dim]);\r\n list._rawExtent[dim] = getInitialExtent();\r\n list._extent[dim] = null;\r\n }\r\n else {\r\n storage[dim] = originalStorage[dim];\r\n }\r\n storageArr.push(storage[dim]);\r\n }\r\n }\r\n return list;\r\n };\r\n function cloneChunk(originalChunk) {\r\n var Ctor = originalChunk.constructor;\r\n return Ctor === Array\r\n ? originalChunk.slice()\r\n : new Ctor(originalChunk);\r\n }\r\n getInitialExtent = function () {\r\n return [Infinity, -Infinity];\r\n };\r\n setItemDataAndSeriesIndex = function (child) {\r\n var childECData = getECData(child);\r\n var thisECData = getECData(this);\r\n childECData.seriesIndex = thisECData.seriesIndex;\r\n childECData.dataIndex = thisECData.dataIndex;\r\n childECData.dataType = thisECData.dataType;\r\n };\r\n transferProperties = function (target, source) {\r\n each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\r\n if (source.hasOwnProperty(propName)) {\r\n target[propName] = source[propName];\r\n }\r\n });\r\n target.__wrappedMethods = source.__wrappedMethods;\r\n each(CLONE_PROPERTIES, function (propName) {\r\n target[propName] = clone(source[propName]);\r\n });\r\n target._calculationInfo = extend({}, source._calculationInfo);\r\n };\r\n makeIdFromName = function (list, idx) {\r\n var nameList = list._nameList;\r\n var idList = list._idList;\r\n var nameDimIdx = list._nameDimIdx;\r\n var idDimIdx = list._idDimIdx;\r\n var name = nameList[idx];\r\n var id = idList[idx];\r\n if (name == null && nameDimIdx != null) {\r\n nameList[idx] = name = getIdNameFromStore(list, nameDimIdx, list._nameOrdinalMeta, idx);\r\n }\r\n if (id == null && idDimIdx != null) {\r\n idList[idx] = id = getIdNameFromStore(list, idDimIdx, list._idOrdinalMeta, idx);\r\n }\r\n if (id == null && name != null) {\r\n var nameRepeatCount = list._nameRepeatCount;\r\n var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1;\r\n id = name;\r\n if (nmCnt > 1) {\r\n id += '__ec__' + nmCnt;\r\n }\r\n idList[idx] = id;\r\n }\r\n };\r\n })();\r\n return List;\r\n}());\n\nfunction completeDimensions(sysDims, source, opt) {\r\n if (!isSourceInstance(source)) {\r\n source = createSourceFromSeriesDataOption(source);\r\n }\r\n opt = opt || {};\r\n sysDims = (sysDims || []).slice();\r\n var dimsDef = (opt.dimsDef || []).slice();\r\n var dataDimNameMap = createHashMap();\r\n var coordDimNameMap = createHashMap();\r\n var result = [];\r\n var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount);\r\n for (var i = 0; i < dimCount; i++) {\r\n var dimDefItemRaw = dimsDef[i];\r\n var dimDefItem = dimsDef[i] = extend({}, isObject(dimDefItemRaw) ? dimDefItemRaw : { name: dimDefItemRaw });\r\n var userDimName = dimDefItem.name;\r\n var resultItem = result[i] = new DataDimensionInfo();\r\n if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\r\n resultItem.name = resultItem.displayName = userDimName;\r\n dataDimNameMap.set(userDimName, i);\r\n }\r\n dimDefItem.type != null && (resultItem.type = dimDefItem.type);\r\n dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\r\n }\r\n var encodeDef = opt.encodeDef;\r\n if (!encodeDef && opt.encodeDefaulter) {\r\n encodeDef = opt.encodeDefaulter(source, dimCount);\r\n }\r\n var encodeDefMap = createHashMap(encodeDef);\r\n encodeDefMap.each(function (dataDimsRaw, coordDim) {\r\n var dataDims = normalizeToArray(dataDimsRaw).slice();\r\n if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\r\n encodeDefMap.set(coordDim, false);\r\n return;\r\n }\r\n var validDataDims = encodeDefMap.set(coordDim, []);\r\n each(dataDims, function (resultDimIdxOrName, idx) {\r\n var resultDimIdx = isString(resultDimIdxOrName)\r\n ? dataDimNameMap.get(resultDimIdxOrName)\r\n : resultDimIdxOrName;\r\n if (resultDimIdx != null && resultDimIdx < dimCount) {\r\n validDataDims[idx] = resultDimIdx;\r\n applyDim(result[resultDimIdx], coordDim, idx);\r\n }\r\n });\r\n });\r\n var availDimIdx = 0;\r\n each(sysDims, function (sysDimItemRaw) {\r\n var coordDim;\r\n var sysDimItemDimsDef;\r\n var sysDimItemOtherDims;\r\n var sysDimItem;\r\n if (isString(sysDimItemRaw)) {\r\n coordDim = sysDimItemRaw;\r\n sysDimItem = {};\r\n }\r\n else {\r\n sysDimItem = sysDimItemRaw;\r\n coordDim = sysDimItem.name;\r\n var ordinalMeta = sysDimItem.ordinalMeta;\r\n sysDimItem.ordinalMeta = null;\r\n sysDimItem = clone(sysDimItem);\r\n sysDimItem.ordinalMeta = ordinalMeta;\r\n sysDimItemDimsDef = sysDimItem.dimsDef;\r\n sysDimItemOtherDims = sysDimItem.otherDims;\r\n sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex =\r\n sysDimItem.dimsDef = sysDimItem.otherDims = null;\r\n }\r\n var dataDims = encodeDefMap.get(coordDim);\r\n if (dataDims === false) {\r\n return;\r\n }\r\n dataDims = normalizeToArray(dataDims);\r\n if (!dataDims.length) {\r\n for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\r\n while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\r\n availDimIdx++;\r\n }\r\n availDimIdx < result.length && dataDims.push(availDimIdx++);\r\n }\r\n }\r\n each(dataDims, function (resultDimIdx, coordDimIndex) {\r\n var resultItem = result[resultDimIdx];\r\n applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\r\n if (resultItem.name == null && sysDimItemDimsDef) {\r\n var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\r\n !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { name: sysDimItemDimsDefItem });\r\n resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\r\n resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\r\n }\r\n sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\r\n });\r\n });\r\n function applyDim(resultItem, coordDim, coordDimIndex) {\r\n if (VISUAL_DIMENSIONS.get(coordDim) != null) {\r\n resultItem.otherDims[coordDim] = coordDimIndex;\r\n }\r\n else {\r\n resultItem.coordDim = coordDim;\r\n resultItem.coordDimIndex = coordDimIndex;\r\n coordDimNameMap.set(coordDim, true);\r\n }\r\n }\r\n var generateCoord = opt.generateCoord;\r\n var generateCoordCount = opt.generateCoordCount;\r\n var fromZero = generateCoordCount != null;\r\n generateCoordCount = generateCoord ? (generateCoordCount || 1) : 0;\r\n var extra = generateCoord || 'value';\r\n for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\r\n var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\r\n var coordDim = resultItem.coordDim;\r\n if (coordDim == null) {\r\n resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\r\n resultItem.coordDimIndex = 0;\r\n if (!generateCoord || generateCoordCount <= 0) {\r\n resultItem.isExtraCoord = true;\r\n }\r\n generateCoordCount--;\r\n }\r\n resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap, false));\r\n if (resultItem.type == null\r\n && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must\r\n || (resultItem.isExtraCoord\r\n && (resultItem.otherDims.itemName != null\r\n || resultItem.otherDims.seriesName != null)))) {\r\n resultItem.type = 'ordinal';\r\n }\r\n }\r\n return result;\r\n}\r\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\r\n var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\r\n each(sysDims, function (sysDimItem) {\r\n var sysDimItemDimsDef;\r\n if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {\r\n dimCount = Math.max(dimCount, sysDimItemDimsDef.length);\r\n }\r\n });\r\n return dimCount;\r\n}\r\nfunction genName(name, map, fromZero) {\r\n if (fromZero || map.get(name) != null) {\r\n var i = 0;\r\n while (map.get(name + i) != null) {\r\n i++;\r\n }\r\n name += i;\r\n }\r\n map.set(name, true);\r\n return name;\r\n}\n\nfunction createDimensions(source, opt) {\r\n opt = opt || {};\r\n return completeDimensions(opt.coordDimensions || [], source, {\r\n dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\r\n encodeDef: opt.encodeDefine || source.encodeDefine,\r\n dimCount: opt.dimensionsCount,\r\n encodeDefaulter: opt.encodeDefaulter,\r\n generateCoord: opt.generateCoord,\r\n generateCoordCount: opt.generateCoordCount\r\n });\r\n}\n\nvar CoordSysInfo = (function () {\r\n function CoordSysInfo(coordSysName) {\r\n this.coordSysDims = [];\r\n this.axisMap = createHashMap();\r\n this.categoryAxisMap = createHashMap();\r\n this.coordSysName = coordSysName;\r\n }\r\n return CoordSysInfo;\r\n}());\r\nfunction getCoordSysInfoBySeries(seriesModel) {\r\n var coordSysName = seriesModel.get('coordinateSystem');\r\n var result = new CoordSysInfo(coordSysName);\r\n var fetch = fetchers[coordSysName];\r\n if (fetch) {\r\n fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\r\n return result;\r\n }\r\n}\r\nvar fetchers = {\r\n cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\r\n var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\r\n if (__DEV__) {\r\n if (!xAxisModel) {\r\n throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\r\n }\r\n if (!yAxisModel) {\r\n throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\r\n }\r\n }\r\n result.coordSysDims = ['x', 'y'];\r\n axisMap.set('x', xAxisModel);\r\n axisMap.set('y', yAxisModel);\r\n if (isCategory(xAxisModel)) {\r\n categoryAxisMap.set('x', xAxisModel);\r\n result.firstCategoryDimIndex = 0;\r\n }\r\n if (isCategory(yAxisModel)) {\r\n categoryAxisMap.set('y', yAxisModel);\r\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n }\r\n },\r\n singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n if (__DEV__) {\r\n if (!singleAxisModel) {\r\n throw new Error('singleAxis should be specified.');\r\n }\r\n }\r\n result.coordSysDims = ['single'];\r\n axisMap.set('single', singleAxisModel);\r\n if (isCategory(singleAxisModel)) {\r\n categoryAxisMap.set('single', singleAxisModel);\r\n result.firstCategoryDimIndex = 0;\r\n }\r\n },\r\n polar: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\r\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\r\n if (__DEV__) {\r\n if (!angleAxisModel) {\r\n throw new Error('angleAxis option not found');\r\n }\r\n if (!radiusAxisModel) {\r\n throw new Error('radiusAxis option not found');\r\n }\r\n }\r\n result.coordSysDims = ['radius', 'angle'];\r\n axisMap.set('radius', radiusAxisModel);\r\n axisMap.set('angle', angleAxisModel);\r\n if (isCategory(radiusAxisModel)) {\r\n categoryAxisMap.set('radius', radiusAxisModel);\r\n result.firstCategoryDimIndex = 0;\r\n }\r\n if (isCategory(angleAxisModel)) {\r\n categoryAxisMap.set('angle', angleAxisModel);\r\n result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n }\r\n },\r\n geo: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n result.coordSysDims = ['lng', 'lat'];\r\n },\r\n parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n var ecModel = seriesModel.ecModel;\r\n var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\r\n var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\r\n each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\r\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\r\n var axisDim = coordSysDims[index];\r\n axisMap.set(axisDim, axisModel);\r\n if (isCategory(axisModel)) {\r\n categoryAxisMap.set(axisDim, axisModel);\r\n if (result.firstCategoryDimIndex == null) {\r\n result.firstCategoryDimIndex = index;\r\n }\r\n }\r\n });\r\n }\r\n};\r\nfunction isCategory(axisModel) {\r\n return axisModel.get('type') === 'category';\r\n}\n\nfunction enableDataStack(seriesModel, dimensionInfoList, opt) {\r\n opt = opt || {};\r\n var byIndex = opt.byIndex;\r\n var stackedCoordDimension = opt.stackedCoordDimension;\r\n var mayStack = !!(seriesModel && seriesModel.get('stack'));\r\n var stackedByDimInfo;\r\n var stackedDimInfo;\r\n var stackResultDimension;\r\n var stackedOverDimension;\r\n each(dimensionInfoList, function (dimensionInfo, index) {\r\n if (isString(dimensionInfo)) {\r\n dimensionInfoList[index] = dimensionInfo = {\r\n name: dimensionInfo\r\n };\r\n }\r\n if (mayStack && !dimensionInfo.isExtraCoord) {\r\n if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\r\n stackedByDimInfo = dimensionInfo;\r\n }\r\n if (!stackedDimInfo\r\n && dimensionInfo.type !== 'ordinal'\r\n && dimensionInfo.type !== 'time'\r\n && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\r\n stackedDimInfo = dimensionInfo;\r\n }\r\n }\r\n });\r\n if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\r\n byIndex = true;\r\n }\r\n if (stackedDimInfo) {\r\n stackResultDimension = '__\\0ecstackresult';\r\n stackedOverDimension = '__\\0ecstackedover';\r\n if (stackedByDimInfo) {\r\n stackedByDimInfo.createInvertedIndices = true;\r\n }\r\n var stackedDimCoordDim_1 = stackedDimInfo.coordDim;\r\n var stackedDimType = stackedDimInfo.type;\r\n var stackedDimCoordIndex_1 = 0;\r\n each(dimensionInfoList, function (dimensionInfo) {\r\n if (dimensionInfo.coordDim === stackedDimCoordDim_1) {\r\n stackedDimCoordIndex_1++;\r\n }\r\n });\r\n dimensionInfoList.push({\r\n name: stackResultDimension,\r\n coordDim: stackedDimCoordDim_1,\r\n coordDimIndex: stackedDimCoordIndex_1,\r\n type: stackedDimType,\r\n isExtraCoord: true,\r\n isCalculationCoord: true\r\n });\r\n stackedDimCoordIndex_1++;\r\n dimensionInfoList.push({\r\n name: stackedOverDimension,\r\n coordDim: stackedOverDimension,\r\n coordDimIndex: stackedDimCoordIndex_1,\r\n type: stackedDimType,\r\n isExtraCoord: true,\r\n isCalculationCoord: true\r\n });\r\n }\r\n return {\r\n stackedDimension: stackedDimInfo && stackedDimInfo.name,\r\n stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\r\n isStackedByIndex: byIndex,\r\n stackedOverDimension: stackedOverDimension,\r\n stackResultDimension: stackResultDimension\r\n };\r\n}\r\nfunction isDimensionStacked(data, stackedDim) {\r\n return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension');\r\n}\r\nfunction getStackedDimension(data, targetDim) {\r\n return isDimensionStacked(data, targetDim)\r\n ? data.getCalculationInfo('stackResultDimension')\r\n : targetDim;\r\n}\n\nfunction createListFromArray(source, seriesModel, opt) {\r\n opt = opt || {};\r\n if (!isSourceInstance(source)) {\r\n source = createSourceFromSeriesDataOption(source);\r\n }\r\n var coordSysName = seriesModel.get('coordinateSystem');\r\n var registeredCoordSys = CoordinateSystemManager.get(coordSysName);\r\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\r\n var coordSysDimDefs;\r\n if (coordSysInfo && coordSysInfo.coordSysDims) {\r\n coordSysDimDefs = map(coordSysInfo.coordSysDims, function (dim) {\r\n var dimInfo = {\r\n name: dim\r\n };\r\n var axisModel = coordSysInfo.axisMap.get(dim);\r\n if (axisModel) {\r\n var axisType = axisModel.get('type');\r\n dimInfo.type = getDimensionTypeByAxis(axisType);\r\n }\r\n return dimInfo;\r\n });\r\n }\r\n if (!coordSysDimDefs) {\r\n coordSysDimDefs = (registeredCoordSys && (registeredCoordSys.getDimensionsInfo\r\n ? registeredCoordSys.getDimensionsInfo()\r\n : registeredCoordSys.dimensions.slice())) || ['x', 'y'];\r\n }\r\n var useEncodeDefaulter = opt.useEncodeDefaulter;\r\n var dimInfoList = createDimensions(source, {\r\n coordDimensions: coordSysDimDefs,\r\n generateCoord: opt.generateCoord,\r\n encodeDefaulter: isFunction(useEncodeDefaulter)\r\n ? useEncodeDefaulter\r\n : useEncodeDefaulter\r\n ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel)\r\n : null\r\n });\r\n var firstCategoryDimIndex;\r\n var hasNameEncode;\r\n coordSysInfo && each(dimInfoList, function (dimInfo, dimIndex) {\r\n var coordDim = dimInfo.coordDim;\r\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\r\n if (categoryAxisModel) {\r\n if (firstCategoryDimIndex == null) {\r\n firstCategoryDimIndex = dimIndex;\r\n }\r\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\r\n }\r\n if (dimInfo.otherDims.itemName != null) {\r\n hasNameEncode = true;\r\n }\r\n });\r\n if (!hasNameEncode && firstCategoryDimIndex != null) {\r\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\r\n }\r\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\r\n var list = new List(dimInfoList, seriesModel);\r\n list.setCalculationInfo(stackCalculationInfo);\r\n var dimValueGetter = (firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source))\r\n ? function (itemOpt, dimName, dataIndex, dimIndex) {\r\n return dimIndex === firstCategoryDimIndex\r\n ? dataIndex\r\n : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\r\n }\r\n : null;\r\n list.hasItemOption = false;\r\n list.initData(source, null, dimValueGetter);\r\n return list;\r\n}\r\nfunction isNeedCompleteOrdinalData(source) {\r\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n var sampleItem = firstDataNotNull(source.data || []);\r\n return sampleItem != null\r\n && !isArray(getDataItemValue(sampleItem));\r\n }\r\n}\r\nfunction firstDataNotNull(data) {\r\n var i = 0;\r\n while (i < data.length && data[i] == null) {\r\n i++;\r\n }\r\n return data[i];\r\n}\n\nvar Scale = (function () {\r\n function Scale(setting) {\r\n this._setting = setting || {};\r\n this._extent = [Infinity, -Infinity];\r\n }\r\n Scale.prototype.getSetting = function (name) {\r\n return this._setting[name];\r\n };\r\n Scale.prototype.unionExtent = function (other) {\r\n var extent = this._extent;\r\n other[0] < extent[0] && (extent[0] = other[0]);\r\n other[1] > extent[1] && (extent[1] = other[1]);\r\n };\r\n Scale.prototype.unionExtentFromData = function (data, dim) {\r\n this.unionExtent(data.getApproximateExtent(dim));\r\n };\r\n Scale.prototype.getExtent = function () {\r\n return this._extent.slice();\r\n };\r\n Scale.prototype.setExtent = function (start, end) {\r\n var thisExtent = this._extent;\r\n if (!isNaN(start)) {\r\n thisExtent[0] = start;\r\n }\r\n if (!isNaN(end)) {\r\n thisExtent[1] = end;\r\n }\r\n };\r\n Scale.prototype.isInExtentRange = function (value) {\r\n return this._extent[0] <= value && this._extent[1] >= value;\r\n };\r\n Scale.prototype.isBlank = function () {\r\n return this._isBlank;\r\n };\r\n Scale.prototype.setBlank = function (isBlank) {\r\n this._isBlank = isBlank;\r\n };\r\n return Scale;\r\n}());\r\nenableClassManagement(Scale, {\r\n registerWhenExtend: true\r\n});\n\nvar OrdinalMeta = (function () {\r\n function OrdinalMeta(opt) {\r\n this.categories = opt.categories || [];\r\n this._needCollect = opt.needCollect;\r\n this._deduplication = opt.deduplication;\r\n }\r\n OrdinalMeta.createByAxisModel = function (axisModel) {\r\n var option = axisModel.option;\r\n var data = option.data;\r\n var categories = data && map(data, getName);\r\n return new OrdinalMeta({\r\n categories: categories,\r\n needCollect: !categories,\r\n deduplication: option.dedplication !== false\r\n });\r\n };\r\n OrdinalMeta.prototype.getOrdinal = function (category) {\r\n return this._getOrCreateMap().get(category);\r\n };\r\n OrdinalMeta.prototype.parseAndCollect = function (category) {\r\n var index;\r\n var needCollect = this._needCollect;\r\n if (typeof category !== 'string' && !needCollect) {\r\n return category;\r\n }\r\n if (needCollect && !this._deduplication) {\r\n index = this.categories.length;\r\n this.categories[index] = category;\r\n return index;\r\n }\r\n var map = this._getOrCreateMap();\r\n index = map.get(category);\r\n if (index == null) {\r\n if (needCollect) {\r\n index = this.categories.length;\r\n this.categories[index] = category;\r\n map.set(category, index);\r\n }\r\n else {\r\n index = NaN;\r\n }\r\n }\r\n return index;\r\n };\r\n OrdinalMeta.prototype._getOrCreateMap = function () {\r\n return this._map || (this._map = createHashMap(this.categories));\r\n };\r\n return OrdinalMeta;\r\n}());\r\nfunction getName(obj) {\r\n if (isObject(obj) && obj.value != null) {\r\n return obj.value;\r\n }\r\n else {\r\n return obj + '';\r\n }\r\n}\n\nvar roundNumber = round$1;\r\nfunction intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\r\n var result = {};\r\n var span = extent[1] - extent[0];\r\n var interval = result.interval = nice(span / splitNumber, true);\r\n if (minInterval != null && interval < minInterval) {\r\n interval = result.interval = minInterval;\r\n }\r\n if (maxInterval != null && interval > maxInterval) {\r\n interval = result.interval = maxInterval;\r\n }\r\n var precision = result.intervalPrecision = getIntervalPrecision(interval);\r\n var niceTickExtent = result.niceTickExtent = [\r\n roundNumber(Math.ceil(extent[0] / interval) * interval, precision),\r\n roundNumber(Math.floor(extent[1] / interval) * interval, precision)\r\n ];\r\n fixExtent(niceTickExtent, extent);\r\n return result;\r\n}\r\nfunction getIntervalPrecision(interval) {\r\n return getPrecisionSafe(interval) + 2;\r\n}\r\nfunction clamp(niceTickExtent, idx, extent) {\r\n niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\r\n}\r\nfunction fixExtent(niceTickExtent, extent) {\r\n !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\r\n !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\r\n clamp(niceTickExtent, 0, extent);\r\n clamp(niceTickExtent, 1, extent);\r\n if (niceTickExtent[0] > niceTickExtent[1]) {\r\n niceTickExtent[0] = niceTickExtent[1];\r\n }\r\n}\r\nfunction contain$1(val, extent) {\r\n return val >= extent[0] && val <= extent[1];\r\n}\r\nfunction normalize$1(val, extent) {\r\n if (extent[1] === extent[0]) {\r\n return 0.5;\r\n }\r\n return (val - extent[0]) / (extent[1] - extent[0]);\r\n}\r\nfunction scale$2(val, extent) {\r\n return val * (extent[1] - extent[0]) + extent[0];\r\n}\n\nvar OrdinalScale = (function (_super) {\r\n __extends(OrdinalScale, _super);\r\n function OrdinalScale(setting) {\r\n var _this = _super.call(this, setting) || this;\r\n _this.type = 'ordinal';\r\n var ordinalMeta = _this.getSetting('ordinalMeta');\r\n if (!ordinalMeta) {\r\n ordinalMeta = new OrdinalMeta({});\r\n }\r\n if (isArray(ordinalMeta)) {\r\n ordinalMeta = new OrdinalMeta({\r\n categories: map(ordinalMeta, function (item) { return (isObject(item) ? item.value : item); })\r\n });\r\n }\r\n _this._ordinalMeta = ordinalMeta;\r\n _this._categorySortInfo = [];\r\n _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1];\r\n return _this;\r\n }\r\n OrdinalScale.prototype.parse = function (val) {\r\n return typeof val === 'string'\r\n ? this._ordinalMeta.getOrdinal(val)\r\n : Math.round(val);\r\n };\r\n OrdinalScale.prototype.contain = function (rank) {\r\n rank = this.parse(rank);\r\n return contain$1(rank, this._extent)\r\n && this._ordinalMeta.categories[rank] != null;\r\n };\r\n OrdinalScale.prototype.normalize = function (val) {\r\n val = this.getCategoryIndex(this.parse(val));\r\n return normalize$1(val, this._extent);\r\n };\r\n OrdinalScale.prototype.scale = function (val) {\r\n val = this.getCategoryIndex(val);\r\n return Math.round(scale$2(val, this._extent));\r\n };\r\n OrdinalScale.prototype.getTicks = function () {\r\n var ticks = [];\r\n var extent = this._extent;\r\n var rank = extent[0];\r\n while (rank <= extent[1]) {\r\n ticks.push({\r\n value: this.getCategoryIndex(rank)\r\n });\r\n rank++;\r\n }\r\n return ticks;\r\n };\r\n OrdinalScale.prototype.getMinorTicks = function (splitNumber) {\r\n return;\r\n };\r\n OrdinalScale.prototype.setCategorySortInfo = function (info) {\r\n this._categorySortInfo = info;\r\n };\r\n OrdinalScale.prototype.getCategorySortInfo = function () {\r\n return this._categorySortInfo;\r\n };\r\n OrdinalScale.prototype.getCategoryIndex = function (n) {\r\n if (this._categorySortInfo.length) {\r\n return this._categorySortInfo[n].beforeSortIndex;\r\n }\r\n else {\r\n return n;\r\n }\r\n };\r\n OrdinalScale.prototype.getRawIndex = function (displayIndex) {\r\n if (this._categorySortInfo.length) {\r\n return this._categorySortInfo[displayIndex].ordinalNumber;\r\n }\r\n else {\r\n return displayIndex;\r\n }\r\n };\r\n OrdinalScale.prototype.getLabel = function (tick) {\r\n if (!this.isBlank()) {\r\n var rawIndex = this.getRawIndex(tick.value);\r\n var cateogry = this._ordinalMeta.categories[rawIndex];\r\n return cateogry == null ? '' : cateogry + '';\r\n }\r\n };\r\n OrdinalScale.prototype.count = function () {\r\n return this._extent[1] - this._extent[0] + 1;\r\n };\r\n OrdinalScale.prototype.unionExtentFromData = function (data, dim) {\r\n this.unionExtent(data.getApproximateExtent(dim));\r\n };\r\n OrdinalScale.prototype.isInExtentRange = function (value) {\r\n value = this.getCategoryIndex(value);\r\n return this._extent[0] <= value && this._extent[1] >= value;\r\n };\r\n OrdinalScale.prototype.getOrdinalMeta = function () {\r\n return this._ordinalMeta;\r\n };\r\n OrdinalScale.prototype.niceTicks = function () { };\r\n OrdinalScale.prototype.niceExtent = function () { };\r\n OrdinalScale.type = 'ordinal';\r\n return OrdinalScale;\r\n}(Scale));\r\nScale.registerClass(OrdinalScale);\n\nvar roundNumber$1 = round$1;\r\nvar IntervalScale = (function (_super) {\r\n __extends(IntervalScale, _super);\r\n function IntervalScale() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = 'interval';\r\n _this._interval = 0;\r\n _this._intervalPrecision = 2;\r\n return _this;\r\n }\r\n IntervalScale.prototype.parse = function (val) {\r\n return val;\r\n };\r\n IntervalScale.prototype.contain = function (val) {\r\n return contain$1(val, this._extent);\r\n };\r\n IntervalScale.prototype.normalize = function (val) {\r\n return normalize$1(val, this._extent);\r\n };\r\n IntervalScale.prototype.scale = function (val) {\r\n return scale$2(val, this._extent);\r\n };\r\n IntervalScale.prototype.setExtent = function (start, end) {\r\n var thisExtent = this._extent;\r\n if (!isNaN(start)) {\r\n thisExtent[0] = parseFloat(start);\r\n }\r\n if (!isNaN(end)) {\r\n thisExtent[1] = parseFloat(end);\r\n }\r\n };\r\n IntervalScale.prototype.unionExtent = function (other) {\r\n var extent = this._extent;\r\n other[0] < extent[0] && (extent[0] = other[0]);\r\n other[1] > extent[1] && (extent[1] = other[1]);\r\n this.setExtent(extent[0], extent[1]);\r\n };\r\n IntervalScale.prototype.getInterval = function () {\r\n return this._interval;\r\n };\r\n IntervalScale.prototype.setInterval = function (interval) {\r\n this._interval = interval;\r\n this._niceExtent = this._extent.slice();\r\n this._intervalPrecision = getIntervalPrecision(interval);\r\n };\r\n IntervalScale.prototype.getTicks = function (expandToNicedExtent) {\r\n var interval = this._interval;\r\n var extent = this._extent;\r\n var niceTickExtent = this._niceExtent;\r\n var intervalPrecision = this._intervalPrecision;\r\n var ticks = [];\r\n if (!interval) {\r\n return ticks;\r\n }\r\n var safeLimit = 10000;\r\n if (extent[0] < niceTickExtent[0]) {\r\n if (expandToNicedExtent) {\r\n ticks.push({\r\n value: roundNumber$1(niceTickExtent[0] - interval, intervalPrecision)\r\n });\r\n }\r\n else {\r\n ticks.push({\r\n value: extent[0]\r\n });\r\n }\r\n }\r\n var tick = niceTickExtent[0];\r\n while (tick <= niceTickExtent[1]) {\r\n ticks.push({\r\n value: tick\r\n });\r\n tick = roundNumber$1(tick + interval, intervalPrecision);\r\n if (tick === ticks[ticks.length - 1].value) {\r\n break;\r\n }\r\n if (ticks.length > safeLimit) {\r\n return [];\r\n }\r\n }\r\n var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];\r\n if (extent[1] > lastNiceTick) {\r\n if (expandToNicedExtent) {\r\n ticks.push({\r\n value: roundNumber$1(lastNiceTick + interval, intervalPrecision)\r\n });\r\n }\r\n else {\r\n ticks.push({\r\n value: extent[1]\r\n });\r\n }\r\n }\r\n return ticks;\r\n };\r\n IntervalScale.prototype.getMinorTicks = function (splitNumber) {\r\n var ticks = this.getTicks(true);\r\n var minorTicks = [];\r\n var extent = this.getExtent();\r\n for (var i = 1; i < ticks.length; i++) {\r\n var nextTick = ticks[i];\r\n var prevTick = ticks[i - 1];\r\n var count = 0;\r\n var minorTicksGroup = [];\r\n var interval = nextTick.value - prevTick.value;\r\n var minorInterval = interval / splitNumber;\r\n while (count < splitNumber - 1) {\r\n var minorTick = roundNumber$1(prevTick.value + (count + 1) * minorInterval);\r\n if (minorTick > extent[0] && minorTick < extent[1]) {\r\n minorTicksGroup.push(minorTick);\r\n }\r\n count++;\r\n }\r\n minorTicks.push(minorTicksGroup);\r\n }\r\n return minorTicks;\r\n };\r\n IntervalScale.prototype.getLabel = function (data, opt) {\r\n if (data == null) {\r\n return '';\r\n }\r\n var precision = opt && opt.precision;\r\n if (precision == null) {\r\n precision = getPrecisionSafe(data.value) || 0;\r\n }\r\n else if (precision === 'auto') {\r\n precision = this._intervalPrecision;\r\n }\r\n var dataNum = roundNumber$1(data.value, precision, true);\r\n return addCommas(dataNum);\r\n };\r\n IntervalScale.prototype.niceTicks = function (splitNumber, minInterval, maxInterval) {\r\n splitNumber = splitNumber || 5;\r\n var extent = this._extent;\r\n var span = extent[1] - extent[0];\r\n if (!isFinite(span)) {\r\n return;\r\n }\r\n if (span < 0) {\r\n span = -span;\r\n extent.reverse();\r\n }\r\n var result = intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\r\n this._intervalPrecision = result.intervalPrecision;\r\n this._interval = result.interval;\r\n this._niceExtent = result.niceTickExtent;\r\n };\r\n IntervalScale.prototype.niceExtent = function (opt) {\r\n var extent = this._extent;\r\n if (extent[0] === extent[1]) {\r\n if (extent[0] !== 0) {\r\n var expandSize = extent[0];\r\n if (!opt.fixMax) {\r\n extent[1] += expandSize / 2;\r\n extent[0] -= expandSize / 2;\r\n }\r\n else {\r\n extent[0] -= expandSize / 2;\r\n }\r\n }\r\n else {\r\n extent[1] = 1;\r\n }\r\n }\r\n var span = extent[1] - extent[0];\r\n if (!isFinite(span)) {\r\n extent[0] = 0;\r\n extent[1] = 1;\r\n }\r\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n var interval = this._interval;\r\n if (!opt.fixMin) {\r\n extent[0] = roundNumber$1(Math.floor(extent[0] / interval) * interval);\r\n }\r\n if (!opt.fixMax) {\r\n extent[1] = roundNumber$1(Math.ceil(extent[1] / interval) * interval);\r\n }\r\n };\r\n IntervalScale.type = 'interval';\r\n return IntervalScale;\r\n}(Scale));\r\nScale.registerClass(IntervalScale);\n\nvar STACK_PREFIX = '__ec_stack_';\r\nvar LARGE_BAR_MIN_WIDTH = 0.5;\r\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\nfunction getSeriesStackId(seriesModel) {\r\n return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\r\n}\r\nfunction getAxisKey(axis) {\r\n return axis.dim + axis.index;\r\n}\r\nfunction getLayoutOnAxis(opt) {\r\n var params = [];\r\n var baseAxis = opt.axis;\r\n var axisKey = 'axis0';\r\n if (baseAxis.type !== 'category') {\r\n return;\r\n }\r\n var bandWidth = baseAxis.getBandWidth();\r\n for (var i = 0; i < opt.count || 0; i++) {\r\n params.push(defaults({\r\n bandWidth: bandWidth,\r\n axisKey: axisKey,\r\n stackId: STACK_PREFIX + i\r\n }, opt));\r\n }\r\n var widthAndOffsets = doCalBarWidthAndOffset(params);\r\n var result = [];\r\n for (var i = 0; i < opt.count; i++) {\r\n var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\r\n item.offsetCenter = item.offset + item.width / 2;\r\n result.push(item);\r\n }\r\n return result;\r\n}\r\nfunction prepareLayoutBarSeries(seriesType, ecModel) {\r\n var seriesModels = [];\r\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\r\n seriesModels.push(seriesModel);\r\n }\r\n });\r\n return seriesModels;\r\n}\r\nfunction getValueAxesMinGaps(barSeries) {\r\n var axisValues = {};\r\n each(barSeries, function (seriesModel) {\r\n var cartesian = seriesModel.coordinateSystem;\r\n var baseAxis = cartesian.getBaseAxis();\r\n if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n var key = baseAxis.dim + '_' + baseAxis.index;\r\n var dim = data.mapDimension(baseAxis.dim);\r\n for (var i = 0, cnt = data.count(); i < cnt; ++i) {\r\n var value = data.get(dim, i);\r\n if (!axisValues[key]) {\r\n axisValues[key] = [value];\r\n }\r\n else {\r\n axisValues[key].push(value);\r\n }\r\n }\r\n });\r\n var axisMinGaps = {};\r\n for (var key in axisValues) {\r\n if (axisValues.hasOwnProperty(key)) {\r\n var valuesInAxis = axisValues[key];\r\n if (valuesInAxis) {\r\n valuesInAxis.sort(function (a, b) {\r\n return a - b;\r\n });\r\n var min = null;\r\n for (var j = 1; j < valuesInAxis.length; ++j) {\r\n var delta = valuesInAxis[j] - valuesInAxis[j - 1];\r\n if (delta > 0) {\r\n min = min === null ? delta : Math.min(min, delta);\r\n }\r\n }\r\n axisMinGaps[key] = min;\r\n }\r\n }\r\n }\r\n return axisMinGaps;\r\n}\r\nfunction makeColumnLayout(barSeries) {\r\n var axisMinGaps = getValueAxesMinGaps(barSeries);\r\n var seriesInfoList = [];\r\n each(barSeries, function (seriesModel) {\r\n var cartesian = seriesModel.coordinateSystem;\r\n var baseAxis = cartesian.getBaseAxis();\r\n var axisExtent = baseAxis.getExtent();\r\n var bandWidth;\r\n if (baseAxis.type === 'category') {\r\n bandWidth = baseAxis.getBandWidth();\r\n }\r\n else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\r\n var key = baseAxis.dim + '_' + baseAxis.index;\r\n var minGap = axisMinGaps[key];\r\n var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\r\n var scale = baseAxis.scale.getExtent();\r\n var scaleSpan = Math.abs(scale[1] - scale[0]);\r\n bandWidth = minGap\r\n ? extentSpan / scaleSpan * minGap\r\n : extentSpan;\r\n }\r\n else {\r\n var data = seriesModel.getData();\r\n bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\r\n }\r\n var barWidth = parsePercent$2(seriesModel.get('barWidth'), bandWidth);\r\n var barMaxWidth = parsePercent$2(seriesModel.get('barMaxWidth'), bandWidth);\r\n var barMinWidth = parsePercent$2(seriesModel.get('barMinWidth') || 1, bandWidth);\r\n var barGap = seriesModel.get('barGap');\r\n var barCategoryGap = seriesModel.get('barCategoryGap');\r\n seriesInfoList.push({\r\n bandWidth: bandWidth,\r\n barWidth: barWidth,\r\n barMaxWidth: barMaxWidth,\r\n barMinWidth: barMinWidth,\r\n barGap: barGap,\r\n barCategoryGap: barCategoryGap,\r\n axisKey: getAxisKey(baseAxis),\r\n stackId: getSeriesStackId(seriesModel)\r\n });\r\n });\r\n return doCalBarWidthAndOffset(seriesInfoList);\r\n}\r\nfunction doCalBarWidthAndOffset(seriesInfoList) {\r\n var columnsMap = {};\r\n each(seriesInfoList, function (seriesInfo, idx) {\r\n var axisKey = seriesInfo.axisKey;\r\n var bandWidth = seriesInfo.bandWidth;\r\n var columnsOnAxis = columnsMap[axisKey] || {\r\n bandWidth: bandWidth,\r\n remainedWidth: bandWidth,\r\n autoWidthCount: 0,\r\n categoryGap: null,\r\n gap: '20%',\r\n stacks: {}\r\n };\r\n var stacks = columnsOnAxis.stacks;\r\n columnsMap[axisKey] = columnsOnAxis;\r\n var stackId = seriesInfo.stackId;\r\n if (!stacks[stackId]) {\r\n columnsOnAxis.autoWidthCount++;\r\n }\r\n stacks[stackId] = stacks[stackId] || {\r\n width: 0,\r\n maxWidth: 0\r\n };\r\n var barWidth = seriesInfo.barWidth;\r\n if (barWidth && !stacks[stackId].width) {\r\n stacks[stackId].width = barWidth;\r\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\r\n columnsOnAxis.remainedWidth -= barWidth;\r\n }\r\n var barMaxWidth = seriesInfo.barMaxWidth;\r\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\r\n var barMinWidth = seriesInfo.barMinWidth;\r\n barMinWidth && (stacks[stackId].minWidth = barMinWidth);\r\n var barGap = seriesInfo.barGap;\r\n (barGap != null) && (columnsOnAxis.gap = barGap);\r\n var barCategoryGap = seriesInfo.barCategoryGap;\r\n (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap);\r\n });\r\n var result = {};\r\n each(columnsMap, function (columnsOnAxis, coordSysName) {\r\n result[coordSysName] = {};\r\n var stacks = columnsOnAxis.stacks;\r\n var bandWidth = columnsOnAxis.bandWidth;\r\n var categoryGapPercent = columnsOnAxis.categoryGap;\r\n if (categoryGapPercent == null) {\r\n var columnCount = keys(stacks).length;\r\n categoryGapPercent = Math.max((35 - columnCount * 4), 15) + '%';\r\n }\r\n var categoryGap = parsePercent$2(categoryGapPercent, bandWidth);\r\n var barGapPercent = parsePercent$2(columnsOnAxis.gap, 1);\r\n var remainedWidth = columnsOnAxis.remainedWidth;\r\n var autoWidthCount = columnsOnAxis.autoWidthCount;\r\n var autoWidth = (remainedWidth - categoryGap)\r\n / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n autoWidth = Math.max(autoWidth, 0);\r\n each(stacks, function (column) {\r\n var maxWidth = column.maxWidth;\r\n var minWidth = column.minWidth;\r\n if (!column.width) {\r\n var finalWidth = autoWidth;\r\n if (maxWidth && maxWidth < finalWidth) {\r\n finalWidth = Math.min(maxWidth, remainedWidth);\r\n }\r\n if (minWidth && minWidth > finalWidth) {\r\n finalWidth = minWidth;\r\n }\r\n if (finalWidth !== autoWidth) {\r\n column.width = finalWidth;\r\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n autoWidthCount--;\r\n }\r\n }\r\n else {\r\n var finalWidth = column.width;\r\n if (maxWidth) {\r\n finalWidth = Math.min(finalWidth, maxWidth);\r\n }\r\n if (minWidth) {\r\n finalWidth = Math.max(finalWidth, minWidth);\r\n }\r\n column.width = finalWidth;\r\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n autoWidthCount--;\r\n }\r\n });\r\n autoWidth = (remainedWidth - categoryGap)\r\n / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n autoWidth = Math.max(autoWidth, 0);\r\n var widthSum = 0;\r\n var lastColumn;\r\n each(stacks, function (column, idx) {\r\n if (!column.width) {\r\n column.width = autoWidth;\r\n }\r\n lastColumn = column;\r\n widthSum += column.width * (1 + barGapPercent);\r\n });\r\n if (lastColumn) {\r\n widthSum -= lastColumn.width * barGapPercent;\r\n }\r\n var offset = -widthSum / 2;\r\n each(stacks, function (column, stackId) {\r\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\r\n bandWidth: bandWidth,\r\n offset: offset,\r\n width: column.width\r\n };\r\n offset += column.width * (1 + barGapPercent);\r\n });\r\n });\r\n return result;\r\n}\r\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\r\n if (barWidthAndOffset && axis) {\r\n var result = barWidthAndOffset[getAxisKey(axis)];\r\n if (result != null && seriesModel != null) {\r\n return result[getSeriesStackId(seriesModel)];\r\n }\r\n return result;\r\n }\r\n}\r\nfunction layout(seriesType, ecModel) {\r\n var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\r\n var barWidthAndOffset = makeColumnLayout(seriesModels);\r\n var lastStackCoords = {};\r\n each(seriesModels, function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var cartesian = seriesModel.coordinateSystem;\r\n var baseAxis = cartesian.getBaseAxis();\r\n var stackId = getSeriesStackId(seriesModel);\r\n var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\r\n var columnOffset = columnLayoutInfo.offset;\r\n var columnWidth = columnLayoutInfo.width;\r\n var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\r\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\r\n data.setLayout({\r\n bandWidth: columnLayoutInfo.bandWidth,\r\n offset: columnOffset,\r\n size: columnWidth\r\n });\r\n var valueDim = data.mapDimension(valueAxis.dim);\r\n var baseDim = data.mapDimension(baseAxis.dim);\r\n var stacked = isDimensionStacked(data, valueDim);\r\n var isValueAxisH = valueAxis.isHorizontal();\r\n var valueAxisStart = getValueAxisStart(baseAxis, valueAxis);\r\n for (var idx = 0, len = data.count(); idx < len; idx++) {\r\n var value = data.get(valueDim, idx);\r\n var baseValue = data.get(baseDim, idx);\r\n var sign = value >= 0 ? 'p' : 'n';\r\n var baseCoord = valueAxisStart;\r\n if (stacked) {\r\n if (!lastStackCoords[stackId][baseValue]) {\r\n lastStackCoords[stackId][baseValue] = {\r\n p: valueAxisStart,\r\n n: valueAxisStart\r\n };\r\n }\r\n baseCoord = lastStackCoords[stackId][baseValue][sign];\r\n }\r\n var x = void 0;\r\n var y = void 0;\r\n var width = void 0;\r\n var height = void 0;\r\n if (isValueAxisH) {\r\n var coord = cartesian.dataToPoint([value, baseValue]);\r\n x = baseCoord;\r\n y = coord[1] + columnOffset;\r\n width = coord[0] - valueAxisStart;\r\n height = columnWidth;\r\n if (Math.abs(width) < barMinHeight) {\r\n width = (width < 0 ? -1 : 1) * barMinHeight;\r\n }\r\n if (!isNaN(width)) {\r\n stacked && (lastStackCoords[stackId][baseValue][sign] += width);\r\n }\r\n }\r\n else {\r\n var coord = cartesian.dataToPoint([baseValue, value]);\r\n x = coord[0] + columnOffset;\r\n y = baseCoord;\r\n width = columnWidth;\r\n height = coord[1] - valueAxisStart;\r\n if (Math.abs(height) < barMinHeight) {\r\n height = (height <= 0 ? -1 : 1) * barMinHeight;\r\n }\r\n if (!isNaN(height)) {\r\n stacked && (lastStackCoords[stackId][baseValue][sign] += height);\r\n }\r\n }\r\n data.setItemLayout(idx, {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n });\r\n }\r\n });\r\n}\r\nvar largeLayout = {\r\n seriesType: 'bar',\r\n plan: createRenderPlanner(),\r\n reset: function (seriesModel) {\r\n if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n var cartesian = seriesModel.coordinateSystem;\r\n var coordLayout = cartesian.master.getRect();\r\n var baseAxis = cartesian.getBaseAxis();\r\n var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n var valueDim = data.mapDimension(valueAxis.dim);\r\n var baseDim = data.mapDimension(baseAxis.dim);\r\n var valueAxisHorizontal = valueAxis.isHorizontal();\r\n var valueDimIdx = valueAxisHorizontal ? 0 : 1;\r\n var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\r\n if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\r\n barWidth = LARGE_BAR_MIN_WIDTH;\r\n }\r\n return {\r\n progress: function (params, data) {\r\n var count = params.count;\r\n var largePoints = new LargeArr(count * 2);\r\n var largeBackgroundPoints = new LargeArr(count * 2);\r\n var largeDataIndices = new LargeArr(count);\r\n var dataIndex;\r\n var coord = [];\r\n var valuePair = [];\r\n var pointsOffset = 0;\r\n var idxOffset = 0;\r\n while ((dataIndex = params.next()) != null) {\r\n valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\r\n valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\r\n coord = cartesian.dataToPoint(valuePair, null, coord);\r\n largeBackgroundPoints[pointsOffset] =\r\n valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\r\n largePoints[pointsOffset++] = coord[0];\r\n largeBackgroundPoints[pointsOffset] =\r\n valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\r\n largePoints[pointsOffset++] = coord[1];\r\n largeDataIndices[idxOffset++] = dataIndex;\r\n }\r\n data.setLayout({\r\n largePoints: largePoints,\r\n largeDataIndices: largeDataIndices,\r\n largeBackgroundPoints: largeBackgroundPoints,\r\n barWidth: barWidth,\r\n valueAxisStart: getValueAxisStart(baseAxis, valueAxis),\r\n backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\r\n valueAxisHorizontal: valueAxisHorizontal\r\n });\r\n }\r\n };\r\n }\r\n};\r\nfunction isOnCartesian(seriesModel) {\r\n return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\r\n}\r\nfunction isInLargeMode(seriesModel) {\r\n return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\r\n}\r\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\r\n return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\r\n}\n\nvar bisect = function (a, x, lo, hi) {\r\n while (lo < hi) {\r\n var mid = lo + hi >>> 1;\r\n if (a[mid][1] < x) {\r\n lo = mid + 1;\r\n }\r\n else {\r\n hi = mid;\r\n }\r\n }\r\n return lo;\r\n};\r\nvar TimeScale = (function (_super) {\r\n __extends(TimeScale, _super);\r\n function TimeScale(settings) {\r\n var _this = _super.call(this, settings) || this;\r\n _this.type = 'time';\r\n return _this;\r\n }\r\n TimeScale.prototype.getLabel = function (tick) {\r\n var useUTC = this.getSetting('useUTC');\r\n return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting('locale'));\r\n };\r\n TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) {\r\n var isUTC = this.getSetting('useUTC');\r\n var lang = this.getSetting('locale');\r\n return leveledFormat(tick, idx, labelFormatter, lang, isUTC);\r\n };\r\n TimeScale.prototype.getTicks = function (expandToNicedExtent) {\r\n var interval = this._interval;\r\n var extent = this._extent;\r\n var ticks = [];\r\n if (!interval) {\r\n return ticks;\r\n }\r\n ticks.push({\r\n value: extent[0],\r\n level: 0\r\n });\r\n var useUTC = this.getSetting('useUTC');\r\n var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent);\r\n ticks = ticks.concat(innerTicks);\r\n ticks.push({\r\n value: extent[1],\r\n level: 0\r\n });\r\n return ticks;\r\n };\r\n TimeScale.prototype.niceExtent = function (opt) {\r\n var extent = this._extent;\r\n if (extent[0] === extent[1]) {\r\n extent[0] -= ONE_DAY;\r\n extent[1] += ONE_DAY;\r\n }\r\n if (extent[1] === -Infinity && extent[0] === Infinity) {\r\n var d = new Date();\r\n extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\r\n extent[0] = extent[1] - ONE_DAY;\r\n }\r\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n };\r\n TimeScale.prototype.niceTicks = function (approxTickNum, minInterval, maxInterval) {\r\n approxTickNum = approxTickNum || 10;\r\n var extent = this._extent;\r\n var span = extent[1] - extent[0];\r\n this._approxInterval = span / approxTickNum;\r\n if (minInterval != null && this._approxInterval < minInterval) {\r\n this._approxInterval = minInterval;\r\n }\r\n if (maxInterval != null && this._approxInterval > maxInterval) {\r\n this._approxInterval = maxInterval;\r\n }\r\n var scaleIntervalsLen = scaleIntervals.length;\r\n var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1);\r\n this._interval = scaleIntervals[idx][1];\r\n this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];\r\n };\r\n TimeScale.prototype.parse = function (val) {\r\n return typeof val === 'number' ? val : +parseDate(val);\r\n };\r\n TimeScale.prototype.contain = function (val) {\r\n return contain$1(this.parse(val), this._extent);\r\n };\r\n TimeScale.prototype.normalize = function (val) {\r\n return normalize$1(this.parse(val), this._extent);\r\n };\r\n TimeScale.prototype.scale = function (val) {\r\n return scale$2(val, this._extent);\r\n };\r\n TimeScale.type = 'time';\r\n return TimeScale;\r\n}(IntervalScale));\r\nvar scaleIntervals = [\r\n ['second', ONE_SECOND],\r\n ['minute', ONE_MINUTE],\r\n ['hour', ONE_HOUR],\r\n ['quarter-day', ONE_HOUR * 6],\r\n ['half-day', ONE_HOUR * 12],\r\n ['day', ONE_DAY * 1.2],\r\n ['half-week', ONE_DAY * 3.5],\r\n ['week', ONE_DAY * 7],\r\n ['month', ONE_DAY * 31],\r\n ['quarter', ONE_DAY * 95],\r\n ['half-year', ONE_YEAR / 2],\r\n ['year', ONE_YEAR]\r\n];\r\nfunction isUnitValueSame(unit, valueA, valueB, isUTC) {\r\n var dateA = parseDate(valueA);\r\n var dateB = parseDate(valueB);\r\n var isSame = function (unit) {\r\n return getUnitValue(dateA, unit, isUTC)\r\n === getUnitValue(dateB, unit, isUTC);\r\n };\r\n var isSameYear = function () { return isSame('year'); };\r\n var isSameMonth = function () { return isSameYear() && isSame('month'); };\r\n var isSameDay = function () { return isSameMonth() && isSame('day'); };\r\n var isSameHour = function () { return isSameDay() && isSame('hour'); };\r\n var isSameMinute = function () { return isSameHour() && isSame('minute'); };\r\n var isSameSecond = function () { return isSameMinute() && isSame('second'); };\r\n var isSameMilliSecond = function () { return isSameSecond() && isSame('millisecond'); };\r\n switch (unit) {\r\n case 'year':\r\n return isSameYear();\r\n case 'month':\r\n return isSameMonth();\r\n case 'day':\r\n return isSameDay();\r\n case 'hour':\r\n return isSameHour();\r\n case 'minute':\r\n return isSameMinute();\r\n case 'second':\r\n return isSameSecond();\r\n case 'millisecond':\r\n return isSameMilliSecond();\r\n }\r\n}\r\nfunction getDateInterval(approxInterval, daysInMonth) {\r\n approxInterval /= ONE_DAY;\r\n return approxInterval > 16 ? 16\r\n : approxInterval > 7.5 ? 7\r\n : approxInterval > 3.5 ? 4\r\n : approxInterval > 1.5 ? 2 : 1;\r\n}\r\nfunction getMonthInterval(approxInterval) {\r\n var APPROX_ONE_MONTH = 30 * ONE_DAY;\r\n approxInterval /= APPROX_ONE_MONTH;\r\n return approxInterval > 6 ? 6\r\n : approxInterval > 3 ? 3\r\n : approxInterval > 2 ? 2 : 1;\r\n}\r\nfunction getHourInterval(approxInterval) {\r\n approxInterval /= ONE_HOUR;\r\n return approxInterval > 12 ? 12\r\n : approxInterval > 6 ? 6\r\n : approxInterval > 3.5 ? 4\r\n : approxInterval > 2 ? 2 : 1;\r\n}\r\nfunction getMinutesAndSecondsInterval(approxInterval, isMinutes) {\r\n approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;\r\n return approxInterval > 30 ? 30\r\n : approxInterval > 20 ? 20\r\n : approxInterval > 15 ? 15\r\n : approxInterval > 10 ? 10\r\n : approxInterval > 5 ? 5\r\n : approxInterval > 2 ? 2 : 1;\r\n}\r\nfunction getMillisecondsInterval(approxInterval) {\r\n return nice(approxInterval, true);\r\n}\r\nfunction getFirstTimestampOfUnit(date, unitName, isUTC) {\r\n var outDate = new Date(date);\r\n switch (getPrimaryTimeUnit(unitName)) {\r\n case 'year':\r\n case 'month':\r\n outDate[monthSetterName(isUTC)](0);\r\n case 'day':\r\n outDate[dateSetterName(isUTC)](1);\r\n case 'hour':\r\n outDate[hoursSetterName(isUTC)](0);\r\n case 'minute':\r\n outDate[minutesSetterName(isUTC)](0);\r\n case 'second':\r\n outDate[secondsSetterName(isUTC)](0);\r\n outDate[millisecondsSetterName(isUTC)](0);\r\n }\r\n return outDate.getTime();\r\n}\r\nfunction getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) {\r\n var safeLimit = 10000;\r\n var unitNames = timeUnits;\r\n var iter = 0;\r\n function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) {\r\n var date = new Date(minTimestamp);\r\n var dateTime = minTimestamp;\r\n var d = date[getMethodName]();\r\n while (dateTime < maxTimestamp && dateTime <= extent[1]) {\r\n out.push({\r\n value: dateTime\r\n });\r\n d += interval;\r\n date[setMethodName](d);\r\n dateTime = date.getTime();\r\n }\r\n out.push({\r\n value: dateTime,\r\n notAdd: true\r\n });\r\n }\r\n function addLevelTicks(unitName, lastLevelTicks, levelTicks) {\r\n var newAddedTicks = [];\r\n var isFirstLevel = !lastLevelTicks.length;\r\n if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) {\r\n return;\r\n }\r\n if (isFirstLevel) {\r\n lastLevelTicks = [{\r\n value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC)\r\n }, {\r\n value: extent[1]\r\n }];\r\n }\r\n for (var i = 0; i < lastLevelTicks.length - 1; i++) {\r\n var startTick = lastLevelTicks[i].value;\r\n var endTick = lastLevelTicks[i + 1].value;\r\n if (startTick === endTick) {\r\n continue;\r\n }\r\n var interval = void 0;\r\n var getterName = void 0;\r\n var setterName = void 0;\r\n var isDate = false;\r\n switch (unitName) {\r\n case 'year':\r\n interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));\r\n getterName = fullYearGetterName(isUTC);\r\n setterName = fullYearSetterName(isUTC);\r\n break;\r\n case 'half-year':\r\n case 'quarter':\r\n case 'month':\r\n interval = getMonthInterval(approxInterval);\r\n getterName = monthGetterName(isUTC);\r\n setterName = monthSetterName(isUTC);\r\n break;\r\n case 'week':\r\n case 'half-week':\r\n case 'day':\r\n interval = getDateInterval(approxInterval);\r\n getterName = dateGetterName(isUTC);\r\n setterName = dateSetterName(isUTC);\r\n isDate = true;\r\n break;\r\n case 'half-day':\r\n case 'quarter-day':\r\n case 'hour':\r\n interval = getHourInterval(approxInterval);\r\n getterName = hoursGetterName(isUTC);\r\n setterName = hoursSetterName(isUTC);\r\n break;\r\n case 'minute':\r\n interval = getMinutesAndSecondsInterval(approxInterval, true);\r\n getterName = minutesGetterName(isUTC);\r\n setterName = minutesSetterName(isUTC);\r\n break;\r\n case 'second':\r\n interval = getMinutesAndSecondsInterval(approxInterval, false);\r\n getterName = secondsGetterName(isUTC);\r\n setterName = secondsSetterName(isUTC);\r\n break;\r\n case 'millisecond':\r\n interval = getMillisecondsInterval(approxInterval);\r\n getterName = millisecondsGetterName(isUTC);\r\n setterName = millisecondsSetterName(isUTC);\r\n break;\r\n }\r\n addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);\r\n if (unitName === 'year' && levelTicks.length > 1 && i === 0) {\r\n levelTicks.unshift({\r\n value: levelTicks[0].value - interval\r\n });\r\n }\r\n }\r\n for (var i = 0; i < newAddedTicks.length; i++) {\r\n levelTicks.push(newAddedTicks[i]);\r\n }\r\n return newAddedTicks;\r\n }\r\n var levelsTicks = [];\r\n var currentLevelTicks = [];\r\n var tickCount = 0;\r\n var lastLevelTickCount = 0;\r\n for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {\r\n var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);\r\n if (!isPrimaryTimeUnit(unitNames[i])) {\r\n continue;\r\n }\r\n addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);\r\n var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;\r\n if (primaryTimeUnit !== nextPrimaryTimeUnit) {\r\n if (currentLevelTicks.length) {\r\n lastLevelTickCount = tickCount;\r\n currentLevelTicks.sort(function (a, b) { return a.value - b.value; });\r\n var levelTicksRemoveDuplicated = [];\r\n for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {\r\n var tickValue = currentLevelTicks[i_1].value;\r\n if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {\r\n levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);\r\n if (tickValue >= extent[0] && tickValue <= extent[1]) {\r\n tickCount++;\r\n }\r\n }\r\n }\r\n var targetTickNum = (extent[1] - extent[0]) / approxInterval;\r\n if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {\r\n break;\r\n }\r\n levelsTicks.push(levelTicksRemoveDuplicated);\r\n if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {\r\n break;\r\n }\r\n }\r\n currentLevelTicks = [];\r\n }\r\n }\r\n if (__DEV__) {\r\n if (iter >= safeLimit) {\r\n warn('Exceed safe limit.');\r\n }\r\n }\r\n var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) {\r\n return filter(levelTicks, function (tick) { return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd; });\r\n }), function (levelTicks) { return levelTicks.length > 0; });\r\n var ticks = [];\r\n var maxLevel = levelsTicksInExtent.length - 1;\r\n for (var i = 0; i < levelsTicksInExtent.length; ++i) {\r\n var levelTicks = levelsTicksInExtent[i];\r\n for (var k = 0; k < levelTicks.length; ++k) {\r\n ticks.push({\r\n value: levelTicks[k].value,\r\n level: maxLevel - i\r\n });\r\n }\r\n }\r\n ticks.sort(function (a, b) { return a.value - b.value; });\r\n var result = [];\r\n for (var i = 0; i < ticks.length; ++i) {\r\n if (i === 0 || ticks[i].value !== ticks[i - 1].value) {\r\n result.push(ticks[i]);\r\n }\r\n }\r\n return result;\r\n}\r\nScale.registerClass(TimeScale);\n\nvar scaleProto = Scale.prototype;\r\nvar intervalScaleProto = IntervalScale.prototype;\r\nvar getPrecisionSafe$1 = getPrecisionSafe;\r\nvar roundingErrorFix = round$1;\r\nvar mathFloor$1 = Math.floor;\r\nvar mathCeil = Math.ceil;\r\nvar mathPow$1 = Math.pow;\r\nvar mathLog = Math.log;\r\nvar LogScale = (function (_super) {\r\n __extends(LogScale, _super);\r\n function LogScale() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = 'log';\r\n _this.base = 10;\r\n _this._originalScale = new IntervalScale();\r\n _this._interval = 0;\r\n return _this;\r\n }\r\n LogScale.prototype.getTicks = function (expandToNicedExtent) {\r\n var originalScale = this._originalScale;\r\n var extent = this._extent;\r\n var originalExtent = originalScale.getExtent();\r\n var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);\r\n return map(ticks, function (tick) {\r\n var val = tick.value;\r\n var powVal = round$1(mathPow$1(this.base, val));\r\n powVal = (val === extent[0] && this._fixMin)\r\n ? fixRoundingError(powVal, originalExtent[0])\r\n : powVal;\r\n powVal = (val === extent[1] && this._fixMax)\r\n ? fixRoundingError(powVal, originalExtent[1])\r\n : powVal;\r\n return {\r\n value: powVal\r\n };\r\n }, this);\r\n };\r\n LogScale.prototype.setExtent = function (start, end) {\r\n var base = this.base;\r\n start = mathLog(start) / mathLog(base);\r\n end = mathLog(end) / mathLog(base);\r\n intervalScaleProto.setExtent.call(this, start, end);\r\n };\r\n LogScale.prototype.getExtent = function () {\r\n var base = this.base;\r\n var extent = scaleProto.getExtent.call(this);\r\n extent[0] = mathPow$1(base, extent[0]);\r\n extent[1] = mathPow$1(base, extent[1]);\r\n var originalScale = this._originalScale;\r\n var originalExtent = originalScale.getExtent();\r\n this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\r\n this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\r\n return extent;\r\n };\r\n LogScale.prototype.unionExtent = function (extent) {\r\n this._originalScale.unionExtent(extent);\r\n var base = this.base;\r\n extent[0] = mathLog(extent[0]) / mathLog(base);\r\n extent[1] = mathLog(extent[1]) / mathLog(base);\r\n scaleProto.unionExtent.call(this, extent);\r\n };\r\n LogScale.prototype.unionExtentFromData = function (data, dim) {\r\n this.unionExtent(data.getApproximateExtent(dim));\r\n };\r\n LogScale.prototype.niceTicks = function (approxTickNum) {\r\n approxTickNum = approxTickNum || 10;\r\n var extent = this._extent;\r\n var span = extent[1] - extent[0];\r\n if (span === Infinity || span <= 0) {\r\n return;\r\n }\r\n var interval = quantity(span);\r\n var err = approxTickNum / span * interval;\r\n if (err <= 0.5) {\r\n interval *= 10;\r\n }\r\n while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\r\n interval *= 10;\r\n }\r\n var niceExtent = [\r\n round$1(mathCeil(extent[0] / interval) * interval),\r\n round$1(mathFloor$1(extent[1] / interval) * interval)\r\n ];\r\n this._interval = interval;\r\n this._niceExtent = niceExtent;\r\n };\r\n LogScale.prototype.niceExtent = function (opt) {\r\n intervalScaleProto.niceExtent.call(this, opt);\r\n this._fixMin = opt.fixMin;\r\n this._fixMax = opt.fixMax;\r\n };\r\n LogScale.prototype.parse = function (val) {\r\n return val;\r\n };\r\n LogScale.prototype.contain = function (val) {\r\n val = mathLog(val) / mathLog(this.base);\r\n return contain$1(val, this._extent);\r\n };\r\n LogScale.prototype.normalize = function (val) {\r\n val = mathLog(val) / mathLog(this.base);\r\n return normalize$1(val, this._extent);\r\n };\r\n LogScale.prototype.scale = function (val) {\r\n val = scale$2(val, this._extent);\r\n return mathPow$1(this.base, val);\r\n };\r\n LogScale.type = 'log';\r\n return LogScale;\r\n}(Scale));\r\nvar proto = LogScale.prototype;\r\nproto.getMinorTicks = intervalScaleProto.getMinorTicks;\r\nproto.getLabel = intervalScaleProto.getLabel;\r\nfunction fixRoundingError(val, originalVal) {\r\n return roundingErrorFix(val, getPrecisionSafe$1(originalVal));\r\n}\r\nScale.registerClass(LogScale);\n\nvar ScaleRawExtentInfo = (function () {\r\n function ScaleRawExtentInfo(scale, model, originalExtent) {\r\n this._prepareParams(scale, model, originalExtent);\r\n }\r\n ScaleRawExtentInfo.prototype._prepareParams = function (scale, model, dataExtent) {\r\n if (dataExtent[1] < dataExtent[0]) {\r\n dataExtent = [NaN, NaN];\r\n }\r\n this._dataMin = dataExtent[0];\r\n this._dataMax = dataExtent[1];\r\n var isOrdinal = this._isOrdinal = scale.type === 'ordinal';\r\n this._needCrossZero = model.getNeedCrossZero && model.getNeedCrossZero();\r\n var modelMinRaw = this._modelMinRaw = model.get('min', true);\r\n if (isFunction(modelMinRaw)) {\r\n this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({\r\n min: dataExtent[0],\r\n max: dataExtent[1]\r\n }));\r\n }\r\n else if (modelMinRaw !== 'dataMin') {\r\n this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw);\r\n }\r\n var modelMaxRaw = this._modelMaxRaw = model.get('max', true);\r\n if (isFunction(modelMaxRaw)) {\r\n this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({\r\n min: dataExtent[0],\r\n max: dataExtent[1]\r\n }));\r\n }\r\n else if (modelMaxRaw !== 'dataMax') {\r\n this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);\r\n }\r\n if (isOrdinal) {\r\n this._axisDataLen = model.getCategories().length;\r\n }\r\n else {\r\n var boundaryGap = model.get('boundaryGap');\r\n var boundaryGapArr = isArray(boundaryGap)\r\n ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];\r\n if (typeof boundaryGapArr[0] === 'boolean' || typeof boundaryGapArr[1] === 'boolean') {\r\n if (__DEV__) {\r\n console.warn('Boolean type for boundaryGap is only '\r\n + 'allowed for ordinal axis. Please use string in '\r\n + 'percentage instead, e.g., \"20%\". Currently, '\r\n + 'boundaryGap is set to be 0.');\r\n }\r\n this._boundaryGapInner = [0, 0];\r\n }\r\n else {\r\n this._boundaryGapInner = [\r\n parsePercent(boundaryGapArr[0], 1),\r\n parsePercent(boundaryGapArr[1], 1)\r\n ];\r\n }\r\n }\r\n };\r\n ScaleRawExtentInfo.prototype.calculate = function () {\r\n var isOrdinal = this._isOrdinal;\r\n var dataMin = this._dataMin;\r\n var dataMax = this._dataMax;\r\n var axisDataLen = this._axisDataLen;\r\n var boundaryGapInner = this._boundaryGapInner;\r\n var span = !isOrdinal\r\n ? ((dataMax - dataMin) || Math.abs(dataMin))\r\n : null;\r\n var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum;\r\n var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum;\r\n var minFixed = min != null;\r\n var maxFixed = max != null;\r\n if (min == null) {\r\n min = isOrdinal\r\n ? (axisDataLen ? 0 : NaN)\r\n : dataMin - boundaryGapInner[0] * span;\r\n }\r\n if (max == null) {\r\n max = isOrdinal\r\n ? (axisDataLen ? axisDataLen - 1 : NaN)\r\n : dataMax + boundaryGapInner[1] * span;\r\n }\r\n (min == null || !isFinite(min)) && (min = NaN);\r\n (max == null || !isFinite(max)) && (max = NaN);\r\n if (min > max) {\r\n min = NaN;\r\n max = NaN;\r\n }\r\n var isBlank = eqNaN(min)\r\n || eqNaN(max)\r\n || (isOrdinal && !axisDataLen);\r\n if (this._needCrossZero) {\r\n if (min > 0 && max > 0 && !minFixed) {\r\n min = 0;\r\n }\r\n if (min < 0 && max < 0 && !maxFixed) {\r\n max = 0;\r\n }\r\n }\r\n var determinedMin = this._determinedMin;\r\n var determinedMax = this._determinedMax;\r\n if (determinedMin != null) {\r\n min = determinedMin;\r\n minFixed = true;\r\n }\r\n if (determinedMax != null) {\r\n max = determinedMax;\r\n maxFixed = true;\r\n }\r\n return {\r\n min: min,\r\n max: max,\r\n minFixed: minFixed,\r\n maxFixed: maxFixed,\r\n isBlank: isBlank\r\n };\r\n };\r\n ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) {\r\n if (__DEV__) {\r\n assert(!this.frozen);\r\n }\r\n this[DATA_MIN_MAX_ATTR[minMaxName]] = val;\r\n };\r\n ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) {\r\n var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];\r\n if (__DEV__) {\r\n assert(!this.frozen\r\n && (this[attr] == null));\r\n }\r\n this[attr] = val;\r\n };\r\n ScaleRawExtentInfo.prototype.freeze = function () {\r\n this.frozen = true;\r\n };\r\n return ScaleRawExtentInfo;\r\n}());\r\nvar DETERMINED_MIN_MAX_ATTR = { min: '_determinedMin', max: '_determinedMax' };\r\nvar DATA_MIN_MAX_ATTR = { min: '_dataMin', max: '_dataMax' };\r\nfunction ensureScaleRawExtentInfo(scale, model, originalExtent) {\r\n var rawExtentInfo = scale.rawExtentInfo;\r\n if (rawExtentInfo) {\r\n return rawExtentInfo;\r\n }\r\n rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent);\r\n scale.rawExtentInfo = rawExtentInfo;\r\n return rawExtentInfo;\r\n}\r\nfunction parseAxisModelMinMax(scale, minMax) {\r\n return minMax == null ? null\r\n : eqNaN(minMax) ? NaN\r\n : scale.parse(minMax);\r\n}\n\nfunction getScaleExtent(scale, model) {\r\n var scaleType = scale.type;\r\n var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\r\n scale.setBlank(rawExtentResult.isBlank);\r\n var min = rawExtentResult.min;\r\n var max = rawExtentResult.max;\r\n var ecModel = model.ecModel;\r\n if (ecModel && (scaleType === 'time')) {\r\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\r\n var isBaseAxisAndHasBarSeries_1 = false;\r\n each(barSeriesModels, function (seriesModel) {\r\n isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\r\n });\r\n if (isBaseAxisAndHasBarSeries_1) {\r\n var barWidthAndOffset = makeColumnLayout(barSeriesModels);\r\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\r\n min = adjustedScale.min;\r\n max = adjustedScale.max;\r\n }\r\n }\r\n return {\r\n extent: [min, max],\r\n fixMin: rawExtentResult.minFixed,\r\n fixMax: rawExtentResult.maxFixed\r\n };\r\n}\r\nfunction adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\r\n var axisExtent = model.axis.getExtent();\r\n var axisLength = axisExtent[1] - axisExtent[0];\r\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\r\n if (barsOnCurrentAxis === undefined) {\r\n return { min: min, max: max };\r\n }\r\n var minOverflow = Infinity;\r\n each(barsOnCurrentAxis, function (item) {\r\n minOverflow = Math.min(item.offset, minOverflow);\r\n });\r\n var maxOverflow = -Infinity;\r\n each(barsOnCurrentAxis, function (item) {\r\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\r\n });\r\n minOverflow = Math.abs(minOverflow);\r\n maxOverflow = Math.abs(maxOverflow);\r\n var totalOverFlow = minOverflow + maxOverflow;\r\n var oldRange = max - min;\r\n var oldRangePercentOfNew = (1 - (minOverflow + maxOverflow) / axisLength);\r\n var overflowBuffer = ((oldRange / oldRangePercentOfNew) - oldRange);\r\n max += overflowBuffer * (maxOverflow / totalOverFlow);\r\n min -= overflowBuffer * (minOverflow / totalOverFlow);\r\n return { min: min, max: max };\r\n}\r\nfunction niceScaleExtent(scale, model) {\r\n var extentInfo = getScaleExtent(scale, model);\r\n var extent = extentInfo.extent;\r\n var splitNumber = model.get('splitNumber');\r\n if (scale instanceof LogScale) {\r\n scale.base = model.get('logBase');\r\n }\r\n var scaleType = scale.type;\r\n scale.setExtent(extent[0], extent[1]);\r\n scale.niceExtent({\r\n splitNumber: splitNumber,\r\n fixMin: extentInfo.fixMin,\r\n fixMax: extentInfo.fixMax,\r\n minInterval: (scaleType === 'interval' || scaleType === 'time')\r\n ? model.get('minInterval') : null,\r\n maxInterval: (scaleType === 'interval' || scaleType === 'time')\r\n ? model.get('maxInterval') : null\r\n });\r\n var interval = model.get('interval');\r\n if (interval != null) {\r\n scale.setInterval && scale.setInterval(interval);\r\n }\r\n}\r\nfunction createScaleByModel(model, axisType) {\r\n axisType = axisType || model.get('type');\r\n if (axisType) {\r\n switch (axisType) {\r\n case 'category':\r\n return new OrdinalScale({\r\n ordinalMeta: model.getOrdinalMeta\r\n ? model.getOrdinalMeta()\r\n : model.getCategories(),\r\n extent: [Infinity, -Infinity]\r\n });\r\n case 'time':\r\n return new TimeScale({\r\n locale: model.ecModel.getLocaleModel(),\r\n useUTC: model.ecModel.get('useUTC')\r\n });\r\n default:\r\n return new (Scale.getClass(axisType) || IntervalScale)();\r\n }\r\n }\r\n}\r\nfunction ifAxisCrossZero(axis) {\r\n var dataExtent = axis.scale.getExtent();\r\n var min = dataExtent[0];\r\n var max = dataExtent[1];\r\n return !((min > 0 && max > 0) || (min < 0 && max < 0));\r\n}\r\nfunction makeLabelFormatter(axis) {\r\n var labelFormatter = axis.getLabelModel().get('formatter');\r\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\r\n if (axis.scale.type === 'time') {\r\n return (function (tpl) {\r\n return function (tick, idx) {\r\n return axis.scale.getFormattedLabel(tick, idx, tpl);\r\n };\r\n })(labelFormatter);\r\n }\r\n else if (typeof labelFormatter === 'string') {\r\n return (function (tpl) {\r\n return function (tick) {\r\n var label = axis.scale.getLabel(tick);\r\n var text = tpl.replace('{value}', label != null ? label : '');\r\n return text;\r\n };\r\n })(labelFormatter);\r\n }\r\n else if (typeof labelFormatter === 'function') {\r\n return (function (cb) {\r\n return function (tick, idx) {\r\n if (categoryTickStart != null) {\r\n idx = tick.value - categoryTickStart;\r\n }\r\n return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\r\n level: tick.level\r\n } : null);\r\n };\r\n })(labelFormatter);\r\n }\r\n else {\r\n return function (tick) {\r\n return axis.scale.getLabel(tick);\r\n };\r\n }\r\n}\r\nfunction getAxisRawValue(axis, tick) {\r\n return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\r\n}\r\nfunction estimateLabelUnionRect(axis) {\r\n var axisModel = axis.model;\r\n var scale = axis.scale;\r\n if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\r\n return;\r\n }\r\n var realNumberScaleTicks;\r\n var tickCount;\r\n var categoryScaleExtent = scale.getExtent();\r\n if (scale instanceof OrdinalScale) {\r\n tickCount = scale.count();\r\n }\r\n else {\r\n realNumberScaleTicks = scale.getTicks();\r\n tickCount = realNumberScaleTicks.length;\r\n }\r\n var axisLabelModel = axis.getLabelModel();\r\n var labelFormatter = makeLabelFormatter(axis);\r\n var rect;\r\n var step = 1;\r\n if (tickCount > 40) {\r\n step = Math.ceil(tickCount / 40);\r\n }\r\n for (var i = 0; i < tickCount; i += step) {\r\n var tick = realNumberScaleTicks\r\n ? realNumberScaleTicks[i]\r\n : {\r\n value: categoryScaleExtent[0] + i\r\n };\r\n var label = labelFormatter(tick, i);\r\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\r\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\r\n rect ? rect.union(singleRect) : (rect = singleRect);\r\n }\r\n return rect;\r\n}\r\nfunction rotateTextRect(textRect, rotate) {\r\n var rotateRadians = rotate * Math.PI / 180;\r\n var beforeWidth = textRect.width;\r\n var beforeHeight = textRect.height;\r\n var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians))\r\n + Math.abs(beforeHeight * Math.sin(rotateRadians));\r\n var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians))\r\n + Math.abs(beforeHeight * Math.cos(rotateRadians));\r\n var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\r\n return rotatedRect;\r\n}\r\nfunction getOptionCategoryInterval(model) {\r\n var interval = model.get('interval');\r\n return interval == null ? 'auto' : interval;\r\n}\r\nfunction shouldShowAllLabels(axis) {\r\n return axis.type === 'category'\r\n && getOptionCategoryInterval(axis.getLabelModel()) === 0;\r\n}\r\nfunction getDataDimensionsOnAxis(data, axisDim) {\r\n var dataDimMap = {};\r\n each(data.mapDimensionsAll(axisDim), function (dataDim) {\r\n dataDimMap[getStackedDimension(data, dataDim)] = true;\r\n });\r\n return keys(dataDimMap);\r\n}\r\nfunction unionAxisExtentFromData(dataExtent, data, axisDim) {\r\n if (data) {\r\n each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\r\n var seriesExtent = data.getApproximateExtent(dim);\r\n seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\r\n seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\r\n });\r\n }\r\n}\n\nvar AxisModelCommonMixin = (function () {\r\n function AxisModelCommonMixin() {\r\n }\r\n AxisModelCommonMixin.prototype.getNeedCrossZero = function () {\r\n var option = this.option;\r\n return !option.scale;\r\n };\r\n AxisModelCommonMixin.prototype.getCoordSysModel = function () {\r\n return;\r\n };\r\n return AxisModelCommonMixin;\r\n}());\n\nfunction createList(seriesModel) {\r\n return createListFromArray(seriesModel.getSource(), seriesModel);\r\n}\r\nvar dataStack$1 = {\r\n isDimensionStacked: isDimensionStacked,\r\n enableDataStack: enableDataStack,\r\n getStackedDimension: getStackedDimension\r\n};\r\nfunction createScale(dataExtent, option) {\r\n var axisModel = option;\r\n if (!(option instanceof Model)) {\r\n axisModel = new Model(option);\r\n }\r\n var scale = createScaleByModel(axisModel);\r\n scale.setExtent(dataExtent[0], dataExtent[1]);\r\n niceScaleExtent(scale, axisModel);\r\n return scale;\r\n}\r\nfunction mixinAxisModelCommonMethods(Model) {\r\n mixin(Model, AxisModelCommonMixin);\r\n}\n\nvar helper = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createList: createList,\n getLayoutRect: getLayoutRect,\n dataStack: dataStack$1,\n createScale: createScale,\n mixinAxisModelCommonMethods: mixinAxisModelCommonMethods,\n getECData: getECData,\n createDimensions: createDimensions,\n createSymbol: createSymbol\n});\n\nvar EPSILON$3 = 1e-8;\r\nfunction isAroundEqual$1(a, b) {\r\n return Math.abs(a - b) < EPSILON$3;\r\n}\r\nfunction contain$2(points, x, y) {\r\n var w = 0;\r\n var p = points[0];\r\n if (!p) {\r\n return false;\r\n }\r\n for (var i = 1; i < points.length; i++) {\r\n var p2 = points[i];\r\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\r\n p = p2;\r\n }\r\n var p0 = points[0];\r\n if (!isAroundEqual$1(p[0], p0[0]) || !isAroundEqual$1(p[1], p0[1])) {\r\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\r\n }\r\n return w !== 0;\r\n}\n\nvar Region = (function () {\r\n function Region(name, geometries, cp) {\r\n this.name = name;\r\n this.geometries = geometries;\r\n if (!cp) {\r\n var rect = this.getBoundingRect();\r\n cp = [\r\n rect.x + rect.width / 2,\r\n rect.y + rect.height / 2\r\n ];\r\n }\r\n else {\r\n cp = [cp[0], cp[1]];\r\n }\r\n this.center = cp;\r\n }\r\n Region.prototype.getBoundingRect = function () {\r\n var rect = this._rect;\r\n if (rect) {\r\n return rect;\r\n }\r\n var MAX_NUMBER = Number.MAX_VALUE;\r\n var min$1 = [MAX_NUMBER, MAX_NUMBER];\r\n var max$1 = [-MAX_NUMBER, -MAX_NUMBER];\r\n var min2 = [];\r\n var max2 = [];\r\n var geometries = this.geometries;\r\n var i = 0;\r\n for (; i < geometries.length; i++) {\r\n if (geometries[i].type !== 'polygon') {\r\n continue;\r\n }\r\n var exterior = geometries[i].exterior;\r\n fromPoints(exterior, min2, max2);\r\n min(min$1, min$1, min2);\r\n max(max$1, max$1, max2);\r\n }\r\n if (i === 0) {\r\n min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0;\r\n }\r\n return (this._rect = new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]));\r\n };\r\n Region.prototype.contain = function (coord) {\r\n var rect = this.getBoundingRect();\r\n var geometries = this.geometries;\r\n if (!rect.contain(coord[0], coord[1])) {\r\n return false;\r\n }\r\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\r\n if (geometries[i].type !== 'polygon') {\r\n continue;\r\n }\r\n var exterior = geometries[i].exterior;\r\n var interiors = geometries[i].interiors;\r\n if (contain$2(exterior, coord[0], coord[1])) {\r\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\r\n if (contain$2(interiors[k], coord[0], coord[1])) {\r\n continue loopGeo;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Region.prototype.transformTo = function (x, y, width, height) {\r\n var rect = this.getBoundingRect();\r\n var aspect = rect.width / rect.height;\r\n if (!width) {\r\n width = aspect * height;\r\n }\r\n else if (!height) {\r\n height = width / aspect;\r\n }\r\n var target = new BoundingRect(x, y, width, height);\r\n var transform = rect.calculateTransform(target);\r\n var geometries = this.geometries;\r\n for (var i = 0; i < geometries.length; i++) {\r\n if (geometries[i].type !== 'polygon') {\r\n continue;\r\n }\r\n var exterior = geometries[i].exterior;\r\n var interiors = geometries[i].interiors;\r\n for (var p = 0; p < exterior.length; p++) {\r\n applyTransform(exterior[p], exterior[p], transform);\r\n }\r\n for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\r\n for (var p = 0; p < interiors[h].length; p++) {\r\n applyTransform(interiors[h][p], interiors[h][p], transform);\r\n }\r\n }\r\n }\r\n rect = this._rect;\r\n rect.copy(target);\r\n this.center = [\r\n rect.x + rect.width / 2,\r\n rect.y + rect.height / 2\r\n ];\r\n };\r\n Region.prototype.cloneShallow = function (name) {\r\n name == null && (name = this.name);\r\n var newRegion = new Region(name, this.geometries, this.center);\r\n newRegion._rect = this._rect;\r\n newRegion.transformTo = null;\r\n return newRegion;\r\n };\r\n return Region;\r\n}());\n\nfunction decode(json) {\r\n if (!json.UTF8Encoding) {\r\n return json;\r\n }\r\n var jsonCompressed = json;\r\n var encodeScale = jsonCompressed.UTF8Scale;\r\n if (encodeScale == null) {\r\n encodeScale = 1024;\r\n }\r\n var features = jsonCompressed.features;\r\n for (var f = 0; f < features.length; f++) {\r\n var feature = features[f];\r\n var geometry = feature.geometry;\r\n if (geometry.type === 'Polygon') {\r\n var coordinates = geometry.coordinates;\r\n for (var c = 0; c < coordinates.length; c++) {\r\n coordinates[c] = decodePolygon(coordinates[c], geometry.encodeOffsets[c], encodeScale);\r\n }\r\n }\r\n else if (geometry.type === 'MultiPolygon') {\r\n var coordinates = geometry.coordinates;\r\n for (var c = 0; c < coordinates.length; c++) {\r\n var coordinate = coordinates[c];\r\n for (var c2 = 0; c2 < coordinate.length; c2++) {\r\n coordinate[c2] = decodePolygon(coordinate[c2], geometry.encodeOffsets[c][c2], encodeScale);\r\n }\r\n }\r\n }\r\n }\r\n jsonCompressed.UTF8Encoding = false;\r\n return jsonCompressed;\r\n}\r\nfunction decodePolygon(coordinate, encodeOffsets, encodeScale) {\r\n var result = [];\r\n var prevX = encodeOffsets[0];\r\n var prevY = encodeOffsets[1];\r\n for (var i = 0; i < coordinate.length; i += 2) {\r\n var x = coordinate.charCodeAt(i) - 64;\r\n var y = coordinate.charCodeAt(i + 1) - 64;\r\n x = (x >> 1) ^ (-(x & 1));\r\n y = (y >> 1) ^ (-(y & 1));\r\n x += prevX;\r\n y += prevY;\r\n prevX = x;\r\n prevY = y;\r\n result.push([x / encodeScale, y / encodeScale]);\r\n }\r\n return result;\r\n}\r\nfunction parseGeoJSON(geoJson, nameProperty) {\r\n geoJson = decode(geoJson);\r\n return map(filter(geoJson.features, function (featureObj) {\r\n return featureObj.geometry\r\n && featureObj.properties\r\n && featureObj.geometry.coordinates.length > 0;\r\n }), function (featureObj) {\r\n var properties = featureObj.properties;\r\n var geo = featureObj.geometry;\r\n var geometries = [];\r\n if (geo.type === 'Polygon') {\r\n var coordinates = geo.coordinates;\r\n geometries.push({\r\n type: 'polygon',\r\n exterior: coordinates[0],\r\n interiors: coordinates.slice(1)\r\n });\r\n }\r\n if (geo.type === 'MultiPolygon') {\r\n var coordinates = geo.coordinates;\r\n each(coordinates, function (item) {\r\n if (item[0]) {\r\n geometries.push({\r\n type: 'polygon',\r\n exterior: item[0],\r\n interiors: item.slice(1)\r\n });\r\n }\r\n });\r\n }\r\n var region = new Region(properties[nameProperty || 'name'], geometries, properties.cp);\r\n region.properties = properties;\r\n return region;\r\n });\r\n}\n\nvar inner$4 = makeInner();\r\nfunction createAxisLabels(axis) {\r\n return axis.type === 'category'\r\n ? makeCategoryLabels(axis)\r\n : makeRealNumberLabels(axis);\r\n}\r\nfunction createAxisTicks(axis, tickModel) {\r\n return axis.type === 'category'\r\n ? makeCategoryTicks(axis, tickModel)\r\n : { ticks: map(axis.scale.getTicks(), function (tick) { return tick.value; }) };\r\n}\r\nfunction makeCategoryLabels(axis) {\r\n var labelModel = axis.getLabelModel();\r\n var result = makeCategoryLabelsActually(axis, labelModel);\r\n return (!labelModel.get('show') || axis.scale.isBlank())\r\n ? { labels: [], labelCategoryInterval: result.labelCategoryInterval }\r\n : result;\r\n}\r\nfunction makeCategoryLabelsActually(axis, labelModel) {\r\n var labelsCache = getListCache(axis, 'labels');\r\n var optionLabelInterval = getOptionCategoryInterval(labelModel);\r\n var result = listCacheGet(labelsCache, optionLabelInterval);\r\n if (result) {\r\n return result;\r\n }\r\n var labels;\r\n var numericLabelInterval;\r\n if (isFunction(optionLabelInterval)) {\r\n labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\r\n }\r\n else {\r\n numericLabelInterval = optionLabelInterval === 'auto'\r\n ? makeAutoCategoryInterval(axis) : optionLabelInterval;\r\n labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\r\n }\r\n return listCacheSet(labelsCache, optionLabelInterval, {\r\n labels: labels, labelCategoryInterval: numericLabelInterval\r\n });\r\n}\r\nfunction makeCategoryTicks(axis, tickModel) {\r\n var ticksCache = getListCache(axis, 'ticks');\r\n var optionTickInterval = getOptionCategoryInterval(tickModel);\r\n var result = listCacheGet(ticksCache, optionTickInterval);\r\n if (result) {\r\n return result;\r\n }\r\n var ticks;\r\n var tickCategoryInterval;\r\n if (!tickModel.get('show') || axis.scale.isBlank()) {\r\n ticks = [];\r\n }\r\n if (isFunction(optionTickInterval)) {\r\n ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\r\n }\r\n else if (optionTickInterval === 'auto') {\r\n var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\r\n tickCategoryInterval = labelsResult.labelCategoryInterval;\r\n ticks = map(labelsResult.labels, function (labelItem) {\r\n return labelItem.tickValue;\r\n });\r\n }\r\n else {\r\n tickCategoryInterval = optionTickInterval;\r\n ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\r\n }\r\n return listCacheSet(ticksCache, optionTickInterval, {\r\n ticks: ticks, tickCategoryInterval: tickCategoryInterval\r\n });\r\n}\r\nfunction makeRealNumberLabels(axis) {\r\n var ticks = axis.scale.getTicks();\r\n var labelFormatter = makeLabelFormatter(axis);\r\n return {\r\n labels: map(ticks, function (tick, idx) {\r\n return {\r\n formattedLabel: labelFormatter(tick, idx),\r\n rawLabel: axis.scale.getLabel(tick),\r\n tickValue: tick.value\r\n };\r\n })\r\n };\r\n}\r\nfunction getListCache(axis, prop) {\r\n return inner$4(axis)[prop] || (inner$4(axis)[prop] = []);\r\n}\r\nfunction listCacheGet(cache, key) {\r\n for (var i = 0; i < cache.length; i++) {\r\n if (cache[i].key === key) {\r\n return cache[i].value;\r\n }\r\n }\r\n}\r\nfunction listCacheSet(cache, key, value) {\r\n cache.push({ key: key, value: value });\r\n return value;\r\n}\r\nfunction makeAutoCategoryInterval(axis) {\r\n var result = inner$4(axis).autoInterval;\r\n return result != null\r\n ? result\r\n : (inner$4(axis).autoInterval = axis.calculateCategoryInterval());\r\n}\r\nfunction calculateCategoryInterval(axis) {\r\n var params = fetchAutoCategoryIntervalCalculationParams(axis);\r\n var labelFormatter = makeLabelFormatter(axis);\r\n var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\r\n var ordinalScale = axis.scale;\r\n var ordinalExtent = ordinalScale.getExtent();\r\n var tickCount = ordinalScale.count();\r\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\r\n return 0;\r\n }\r\n var step = 1;\r\n if (tickCount > 40) {\r\n step = Math.max(1, Math.floor(tickCount / 40));\r\n }\r\n var tickValue = ordinalExtent[0];\r\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\r\n var unitW = Math.abs(unitSpan * Math.cos(rotation));\r\n var unitH = Math.abs(unitSpan * Math.sin(rotation));\r\n var maxW = 0;\r\n var maxH = 0;\r\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n var width = 0;\r\n var height = 0;\r\n var rect = getBoundingRect(labelFormatter({ value: tickValue }), params.font, 'center', 'top');\r\n width = rect.width * 1.3;\r\n height = rect.height * 1.3;\r\n maxW = Math.max(maxW, width, 7);\r\n maxH = Math.max(maxH, height, 7);\r\n }\r\n var dw = maxW / unitW;\r\n var dh = maxH / unitH;\r\n isNaN(dw) && (dw = Infinity);\r\n isNaN(dh) && (dh = Infinity);\r\n var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\r\n var cache = inner$4(axis.model);\r\n var axisExtent = axis.getExtent();\r\n var lastAutoInterval = cache.lastAutoInterval;\r\n var lastTickCount = cache.lastTickCount;\r\n if (lastAutoInterval != null\r\n && lastTickCount != null\r\n && Math.abs(lastAutoInterval - interval) <= 1\r\n && Math.abs(lastTickCount - tickCount) <= 1\r\n && lastAutoInterval > interval\r\n && cache.axisExtent0 === axisExtent[0]\r\n && cache.axisExtent1 === axisExtent[1]) {\r\n interval = lastAutoInterval;\r\n }\r\n else {\r\n cache.lastTickCount = tickCount;\r\n cache.lastAutoInterval = interval;\r\n cache.axisExtent0 = axisExtent[0];\r\n cache.axisExtent1 = axisExtent[1];\r\n }\r\n return interval;\r\n}\r\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\r\n var labelModel = axis.getLabelModel();\r\n return {\r\n axisRotate: axis.getRotate\r\n ? axis.getRotate()\r\n : (axis.isHorizontal && !axis.isHorizontal())\r\n ? 90\r\n : 0,\r\n labelRotate: labelModel.get('rotate') || 0,\r\n font: labelModel.getFont()\r\n };\r\n}\r\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\r\n var labelFormatter = makeLabelFormatter(axis);\r\n var ordinalScale = axis.scale;\r\n var ordinalExtent = ordinalScale.getExtent();\r\n var labelModel = axis.getLabelModel();\r\n var result = [];\r\n var step = Math.max((categoryInterval || 0) + 1, 1);\r\n var startTick = ordinalExtent[0];\r\n var tickCount = ordinalScale.count();\r\n if (startTick !== 0 && step > 1 && tickCount / step > 2) {\r\n startTick = Math.round(Math.ceil(startTick / step) * step);\r\n }\r\n var showAllLabel = shouldShowAllLabels(axis);\r\n var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\r\n var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\r\n if (includeMinLabel && startTick !== ordinalExtent[0]) {\r\n addItem(ordinalExtent[0]);\r\n }\r\n var tickValue = startTick;\r\n for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n addItem(tickValue);\r\n }\r\n if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\r\n addItem(ordinalExtent[1]);\r\n }\r\n function addItem(tickValue) {\r\n var tickObj = { value: tickValue };\r\n result.push(onlyTick\r\n ? tickValue\r\n : {\r\n formattedLabel: labelFormatter(tickObj),\r\n rawLabel: ordinalScale.getLabel(tickObj),\r\n tickValue: tickValue\r\n });\r\n }\r\n return result;\r\n}\r\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\r\n var ordinalScale = axis.scale;\r\n var labelFormatter = makeLabelFormatter(axis);\r\n var result = [];\r\n each(ordinalScale.getTicks(), function (tick) {\r\n var rawLabel = ordinalScale.getLabel(tick);\r\n var tickValue = tick.value;\r\n if (categoryInterval(tick.value, rawLabel)) {\r\n result.push(onlyTick\r\n ? tickValue\r\n : {\r\n formattedLabel: labelFormatter(tick),\r\n rawLabel: rawLabel,\r\n tickValue: tickValue\r\n });\r\n }\r\n });\r\n return result;\r\n}\n\nvar NORMALIZED_EXTENT = [0, 1];\r\nvar Axis = (function () {\r\n function Axis(dim, scale, extent) {\r\n this.onBand = false;\r\n this.inverse = false;\r\n this.dim = dim;\r\n this.scale = scale;\r\n this._extent = extent || [0, 0];\r\n }\r\n Axis.prototype.contain = function (coord) {\r\n var extent = this._extent;\r\n var min = Math.min(extent[0], extent[1]);\r\n var max = Math.max(extent[0], extent[1]);\r\n return coord >= min && coord <= max;\r\n };\r\n Axis.prototype.containData = function (data) {\r\n return this.scale.contain(data);\r\n };\r\n Axis.prototype.getExtent = function () {\r\n return this._extent.slice();\r\n };\r\n Axis.prototype.getPixelPrecision = function (dataExtent) {\r\n return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\r\n };\r\n Axis.prototype.setExtent = function (start, end) {\r\n var extent = this._extent;\r\n extent[0] = start;\r\n extent[1] = end;\r\n };\r\n Axis.prototype.dataToCoord = function (data, clamp) {\r\n var extent = this._extent;\r\n var scale = this.scale;\r\n data = scale.normalize(data);\r\n if (this.onBand && scale.type === 'ordinal') {\r\n extent = extent.slice();\r\n fixExtentWithBands(extent, scale.count());\r\n }\r\n return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\r\n };\r\n Axis.prototype.coordToData = function (coord, clamp) {\r\n var extent = this._extent;\r\n var scale = this.scale;\r\n if (this.onBand && scale.type === 'ordinal') {\r\n extent = extent.slice();\r\n fixExtentWithBands(extent, scale.count());\r\n }\r\n var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\r\n return this.scale.scale(t);\r\n };\r\n Axis.prototype.pointToData = function (point, clamp) {\r\n return;\r\n };\r\n Axis.prototype.getTicksCoords = function (opt) {\r\n opt = opt || {};\r\n var tickModel = opt.tickModel || this.getTickModel();\r\n var result = createAxisTicks(this, tickModel);\r\n var ticks = result.ticks;\r\n var ticksCoords = map(ticks, function (tickVal) {\r\n return {\r\n coord: this.dataToCoord(this.scale.type === 'ordinal'\r\n ? this.scale.getRawIndex(tickVal)\r\n : tickVal),\r\n tickValue: tickVal\r\n };\r\n }, this);\r\n var alignWithLabel = tickModel.get('alignWithLabel');\r\n fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\r\n return ticksCoords;\r\n };\r\n Axis.prototype.getMinorTicksCoords = function () {\r\n if (this.scale.type === 'ordinal') {\r\n return [];\r\n }\r\n var minorTickModel = this.model.getModel('minorTick');\r\n var splitNumber = minorTickModel.get('splitNumber');\r\n if (!(splitNumber > 0 && splitNumber < 100)) {\r\n splitNumber = 5;\r\n }\r\n var minorTicks = this.scale.getMinorTicks(splitNumber);\r\n var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\r\n return map(minorTicksGroup, function (minorTick) {\r\n return {\r\n coord: this.dataToCoord(minorTick),\r\n tickValue: minorTick\r\n };\r\n }, this);\r\n }, this);\r\n return minorTicksCoords;\r\n };\r\n Axis.prototype.getViewLabels = function () {\r\n return createAxisLabels(this).labels;\r\n };\r\n Axis.prototype.getLabelModel = function () {\r\n return this.model.getModel('axisLabel');\r\n };\r\n Axis.prototype.getTickModel = function () {\r\n return this.model.getModel('axisTick');\r\n };\r\n Axis.prototype.getBandWidth = function () {\r\n var axisExtent = this._extent;\r\n var dataExtent = this.scale.getExtent();\r\n var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);\r\n len === 0 && (len = 1);\r\n var size = Math.abs(axisExtent[1] - axisExtent[0]);\r\n return Math.abs(size) / len;\r\n };\r\n Axis.prototype.calculateCategoryInterval = function () {\r\n return calculateCategoryInterval(this);\r\n };\r\n return Axis;\r\n}());\r\nfunction fixExtentWithBands(extent, nTick) {\r\n var size = extent[1] - extent[0];\r\n var len = nTick;\r\n var margin = size / len / 2;\r\n extent[0] += margin;\r\n extent[1] -= margin;\r\n}\r\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\r\n var ticksLen = ticksCoords.length;\r\n if (!axis.onBand || alignWithLabel || !ticksLen) {\r\n return;\r\n }\r\n var axisExtent = axis.getExtent();\r\n var last;\r\n var diffSize;\r\n if (ticksLen === 1) {\r\n ticksCoords[0].coord = axisExtent[0];\r\n last = ticksCoords[1] = { coord: axisExtent[0] };\r\n }\r\n else {\r\n var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\r\n var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\r\n each(ticksCoords, function (ticksItem) {\r\n ticksItem.coord -= shift_1 / 2;\r\n });\r\n var dataExtent = axis.scale.getExtent();\r\n diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\r\n last = { coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize };\r\n ticksCoords.push(last);\r\n }\r\n var inverse = axisExtent[0] > axisExtent[1];\r\n if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\r\n clamp ? (ticksCoords[0].coord = axisExtent[0]) : ticksCoords.shift();\r\n }\r\n if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\r\n ticksCoords.unshift({ coord: axisExtent[0] });\r\n }\r\n if (littleThan(axisExtent[1], last.coord)) {\r\n clamp ? (last.coord = axisExtent[1]) : ticksCoords.pop();\r\n }\r\n if (clamp && littleThan(last.coord, axisExtent[1])) {\r\n ticksCoords.push({ coord: axisExtent[1] });\r\n }\r\n function littleThan(a, b) {\r\n a = round$1(a);\r\n b = round$1(b);\r\n return inverse ? a > b : a < b;\r\n }\r\n}\n\nvar parseGeoJson = parseGeoJSON;\r\nvar number = {};\r\neach([\r\n 'linearMap',\r\n 'round',\r\n 'asc',\r\n 'getPrecision',\r\n 'getPrecisionSafe',\r\n 'getPixelPrecision',\r\n 'getPercentWithPrecision',\r\n 'MAX_SAFE_INTEGER',\r\n 'remRadian',\r\n 'isRadianAroundZero',\r\n 'parseDate',\r\n 'quantity',\r\n 'quantityExponent',\r\n 'nice',\r\n 'quantile',\r\n 'reformIntervals',\r\n 'isNumeric',\r\n 'numericToNumber'\r\n], function (name) {\r\n number[name] = numberUtil[name];\r\n});\r\nvar format$1 = {};\r\neach([\r\n 'addCommas',\r\n 'toCamelCase',\r\n 'normalizeCssArray',\r\n 'encodeHTML',\r\n 'formatTpl',\r\n 'getTooltipMarker',\r\n 'formatTime',\r\n 'capitalFirst',\r\n 'truncateText',\r\n 'getTextRect'\r\n], function (name) {\r\n format$1[name] = formatUtil[name];\r\n});\r\nvar time = {\r\n parse: parseDate,\r\n format: format\r\n};\r\nvar ecUtil = {};\r\neach([\r\n 'map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter',\r\n 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction',\r\n 'extend', 'defaults', 'clone', 'merge'\r\n], function (name) {\r\n ecUtil[name] = zrUtil[name];\r\n});\r\nvar GRAPHIC_KEYS = [\r\n 'extendShape', 'extendPath', 'makePath', 'makeImage',\r\n 'mergePath', 'resizePath', 'createIcon',\r\n 'updateProps', 'initProps', 'getTransform',\r\n 'clipPointsByRect', 'clipRectByRect',\r\n 'registerShape', 'getShapeClass',\r\n 'Group',\r\n 'Image',\r\n 'Text',\r\n 'Circle',\r\n 'Ellipse',\r\n 'Sector',\r\n 'Ring',\r\n 'Polygon',\r\n 'Polyline',\r\n 'Rect',\r\n 'Line',\r\n 'BezierCurve',\r\n 'Arc',\r\n 'IncrementalDisplayable',\r\n 'CompoundPath',\r\n 'LinearGradient',\r\n 'RadialGradient',\r\n 'BoundingRect'\r\n];\r\nvar graphic$1 = {};\r\neach(GRAPHIC_KEYS, function (name) {\r\n graphic$1[name] = graphic[name];\r\n});\n\nvar RELATIONAL_EXPRESSION_OP_ALIAS_MAP = {\r\n value: 'eq',\r\n '<': 'lt',\r\n '<=': 'lte',\r\n '>': 'gt',\r\n '>=': 'gte',\r\n '=': 'eq',\r\n '!=': 'ne',\r\n '<>': 'ne'\r\n};\r\nvar RegExpEvaluator = (function () {\r\n function RegExpEvaluator(rVal) {\r\n var condValue = this._condVal = isString(rVal) ? new RegExp(rVal)\r\n : isRegExp(rVal) ? rVal\r\n : null;\r\n if (condValue == null) {\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = makePrintable('Illegal regexp', rVal, 'in');\r\n }\r\n throwError(errMsg);\r\n }\r\n }\r\n RegExpEvaluator.prototype.evaluate = function (lVal) {\r\n var type = typeof lVal;\r\n return type === 'string' ? this._condVal.test(lVal)\r\n : type === 'number' ? this._condVal.test(lVal + '')\r\n : false;\r\n };\r\n return RegExpEvaluator;\r\n}());\r\nvar ConstConditionInternal = (function () {\r\n function ConstConditionInternal() {\r\n }\r\n ConstConditionInternal.prototype.evaluate = function () {\r\n return this.value;\r\n };\r\n return ConstConditionInternal;\r\n}());\r\nvar AndConditionInternal = (function () {\r\n function AndConditionInternal() {\r\n }\r\n AndConditionInternal.prototype.evaluate = function () {\r\n var children = this.children;\r\n for (var i = 0; i < children.length; i++) {\r\n if (!children[i].evaluate()) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return AndConditionInternal;\r\n}());\r\nvar OrConditionInternal = (function () {\r\n function OrConditionInternal() {\r\n }\r\n OrConditionInternal.prototype.evaluate = function () {\r\n var children = this.children;\r\n for (var i = 0; i < children.length; i++) {\r\n if (children[i].evaluate()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return OrConditionInternal;\r\n}());\r\nvar NotConditionInternal = (function () {\r\n function NotConditionInternal() {\r\n }\r\n NotConditionInternal.prototype.evaluate = function () {\r\n return !this.child.evaluate();\r\n };\r\n return NotConditionInternal;\r\n}());\r\nvar RelationalConditionInternal = (function () {\r\n function RelationalConditionInternal() {\r\n }\r\n RelationalConditionInternal.prototype.evaluate = function () {\r\n var needParse = !!this.valueParser;\r\n var getValue = this.getValue;\r\n var tarValRaw = getValue(this.valueGetterParam);\r\n var tarValParsed = needParse ? this.valueParser(tarValRaw) : null;\r\n for (var i = 0; i < this.subCondList.length; i++) {\r\n if (!this.subCondList[i].evaluate(needParse ? tarValParsed : tarValRaw)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return RelationalConditionInternal;\r\n}());\r\nfunction parseOption(exprOption, getters) {\r\n if (exprOption === true || exprOption === false) {\r\n var cond = new ConstConditionInternal();\r\n cond.value = exprOption;\r\n return cond;\r\n }\r\n var errMsg = '';\r\n if (!isObjectNotArray(exprOption)) {\r\n if (__DEV__) {\r\n errMsg = makePrintable('Illegal config. Expect a plain object but actually', exprOption);\r\n }\r\n throwError(errMsg);\r\n }\r\n if (exprOption.and) {\r\n return parseAndOrOption('and', exprOption, getters);\r\n }\r\n else if (exprOption.or) {\r\n return parseAndOrOption('or', exprOption, getters);\r\n }\r\n else if (exprOption.not) {\r\n return parseNotOption(exprOption, getters);\r\n }\r\n return parseRelationalOption(exprOption, getters);\r\n}\r\nfunction parseAndOrOption(op, exprOption, getters) {\r\n var subOptionArr = exprOption[op];\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = makePrintable('\"and\"/\"or\" condition should only be `' + op + ': [...]` and must not be empty array.', 'Illegal condition:', exprOption);\r\n }\r\n if (!isArray(subOptionArr)) {\r\n throwError(errMsg);\r\n }\r\n if (!subOptionArr.length) {\r\n throwError(errMsg);\r\n }\r\n var cond = op === 'and' ? new AndConditionInternal() : new OrConditionInternal();\r\n cond.children = map(subOptionArr, function (subOption) { return parseOption(subOption, getters); });\r\n if (!cond.children.length) {\r\n throwError(errMsg);\r\n }\r\n return cond;\r\n}\r\nfunction parseNotOption(exprOption, getters) {\r\n var subOption = exprOption.not;\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = makePrintable('\"not\" condition should only be `not: {}`.', 'Illegal condition:', exprOption);\r\n }\r\n if (!isObjectNotArray(subOption)) {\r\n throwError(errMsg);\r\n }\r\n var cond = new NotConditionInternal();\r\n cond.child = parseOption(subOption, getters);\r\n if (!cond.child) {\r\n throwError(errMsg);\r\n }\r\n return cond;\r\n}\r\nfunction parseRelationalOption(exprOption, getters) {\r\n var errMsg = '';\r\n var valueGetterParam = getters.prepareGetValue(exprOption);\r\n var subCondList = [];\r\n var exprKeys = keys(exprOption);\r\n var parserName = exprOption.parser;\r\n var valueParser = parserName ? getRawValueParser(parserName) : null;\r\n for (var i = 0; i < exprKeys.length; i++) {\r\n var keyRaw = exprKeys[i];\r\n if (keyRaw === 'parser' || getters.valueGetterAttrMap.get(keyRaw)) {\r\n continue;\r\n }\r\n var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw)\r\n ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw]\r\n : keyRaw;\r\n var condValueRaw = exprOption[keyRaw];\r\n var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw;\r\n var evaluator = createFilterComparator(op, condValueParsed)\r\n || (op === 'reg' && new RegExpEvaluator(condValueParsed));\r\n if (!evaluator) {\r\n if (__DEV__) {\r\n errMsg = makePrintable('Illegal relational operation: \"' + keyRaw + '\" in condition:', exprOption);\r\n }\r\n throwError(errMsg);\r\n }\r\n subCondList.push(evaluator);\r\n }\r\n if (!subCondList.length) {\r\n if (__DEV__) {\r\n errMsg = makePrintable('Relational condition must have at least one operator.', 'Illegal condition:', exprOption);\r\n }\r\n throwError(errMsg);\r\n }\r\n var cond = new RelationalConditionInternal();\r\n cond.valueGetterParam = valueGetterParam;\r\n cond.valueParser = valueParser;\r\n cond.getValue = getters.getValue;\r\n cond.subCondList = subCondList;\r\n return cond;\r\n}\r\nfunction isObjectNotArray(val) {\r\n return isObject(val) && !isArrayLike(val);\r\n}\r\nvar ConditionalExpressionParsed = (function () {\r\n function ConditionalExpressionParsed(exprOption, getters) {\r\n this._cond = parseOption(exprOption, getters);\r\n }\r\n ConditionalExpressionParsed.prototype.evaluate = function () {\r\n return this._cond.evaluate();\r\n };\r\n return ConditionalExpressionParsed;\r\n}());\r\nfunction parseConditionalExpression(exprOption, getters) {\r\n return new ConditionalExpressionParsed(exprOption, getters);\r\n}\n\nvar filterTransform = {\r\n type: 'echarts:filter',\r\n transform: function (params) {\r\n var upstream = params.upstream;\r\n var rawItem;\r\n var condition = parseConditionalExpression(params.config, {\r\n valueGetterAttrMap: createHashMap({ dimension: true }),\r\n prepareGetValue: function (exprOption) {\r\n var errMsg = '';\r\n var dimLoose = exprOption.dimension;\r\n if (!hasOwn(exprOption, 'dimension')) {\r\n if (__DEV__) {\r\n errMsg = makePrintable('Relation condition must has prop \"dimension\" specified.', 'Illegal condition:', exprOption);\r\n }\r\n throwError(errMsg);\r\n }\r\n var dimInfo = upstream.getDimensionInfo(dimLoose);\r\n if (!dimInfo) {\r\n if (__DEV__) {\r\n errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\\n', 'Illegal condition:', exprOption, '.\\n');\r\n }\r\n throwError(errMsg);\r\n }\r\n return { dimIdx: dimInfo.index };\r\n },\r\n getValue: function (param) {\r\n return upstream.retrieveValueFromItem(rawItem, param.dimIdx);\r\n }\r\n });\r\n var resultData = [];\r\n for (var i = 0, len = upstream.count(); i < len; i++) {\r\n rawItem = upstream.getRawDataItem(i);\r\n if (condition.evaluate()) {\r\n resultData.push(rawItem);\r\n }\r\n }\r\n return {\r\n data: resultData\r\n };\r\n }\r\n};\n\nvar sampleLog = '';\r\nif (__DEV__) {\r\n sampleLog = [\r\n 'Valid config is like:',\r\n '{ dimension: \"age\", order: \"asc\" }',\r\n 'or [{ dimension: \"age\", order: \"asc\"], { dimension: \"date\", order: \"desc\" }]'\r\n ].join(' ');\r\n}\r\nvar sortTransform = {\r\n type: 'echarts:sort',\r\n transform: function (params) {\r\n var upstream = params.upstream;\r\n var config = params.config;\r\n var errMsg = '';\r\n var orderExprList = normalizeToArray(config);\r\n if (!orderExprList.length) {\r\n if (__DEV__) {\r\n errMsg = 'Empty `config` in sort transform.';\r\n }\r\n throwError(errMsg);\r\n }\r\n var orderDefList = [];\r\n each(orderExprList, function (orderExpr) {\r\n var dimLoose = orderExpr.dimension;\r\n var order = orderExpr.order;\r\n var parserName = orderExpr.parser;\r\n var incomparable = orderExpr.incomparable;\r\n if (dimLoose == null) {\r\n if (__DEV__) {\r\n errMsg = 'Sort transform config must has \"dimension\" specified.' + sampleLog;\r\n }\r\n throwError(errMsg);\r\n }\r\n if (order !== 'asc' && order !== 'desc') {\r\n if (__DEV__) {\r\n errMsg = 'Sort transform config must has \"order\" specified.' + sampleLog;\r\n }\r\n throwError(errMsg);\r\n }\r\n if (incomparable && (incomparable !== 'min' && incomparable !== 'max')) {\r\n var errMsg_1 = '';\r\n if (__DEV__) {\r\n errMsg_1 = 'incomparable must be \"min\" or \"max\" rather than \"' + incomparable + '\".';\r\n }\r\n throwError(errMsg_1);\r\n }\r\n if (order !== 'asc' && order !== 'desc') {\r\n var errMsg_2 = '';\r\n if (__DEV__) {\r\n errMsg_2 = 'order must be \"asc\" or \"desc\" rather than \"' + order + '\".';\r\n }\r\n throwError(errMsg_2);\r\n }\r\n var dimInfo = upstream.getDimensionInfo(dimLoose);\r\n if (!dimInfo) {\r\n if (__DEV__) {\r\n errMsg = makePrintable('Can not find dimension info via: ' + dimLoose + '.\\n', 'Existing dimensions: ', upstream.cloneAllDimensionInfo(), '.\\n', 'Illegal config:', orderExpr, '.\\n');\r\n }\r\n throwError(errMsg);\r\n }\r\n var parser = parserName ? getRawValueParser(parserName) : null;\r\n if (parserName && !parser) {\r\n if (__DEV__) {\r\n errMsg = makePrintable('Invalid parser name ' + parserName + '.\\n', 'Illegal config:', orderExpr, '.\\n');\r\n }\r\n throwError(errMsg);\r\n }\r\n orderDefList.push({\r\n dimIdx: dimInfo.index,\r\n parser: parser,\r\n comparator: new SortOrderComparator(order, incomparable)\r\n });\r\n });\r\n var sourceFormat = upstream.sourceFormat;\r\n if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS\r\n && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\r\n if (__DEV__) {\r\n errMsg = 'sourceFormat \"' + sourceFormat + '\" is not supported yet';\r\n }\r\n throwError(errMsg);\r\n }\r\n var resultData = [];\r\n for (var i = 0, len = upstream.count(); i < len; i++) {\r\n resultData.push(upstream.getRawDataItem(i));\r\n }\r\n resultData.sort(function (item0, item1) {\r\n for (var i = 0; i < orderDefList.length; i++) {\r\n var orderDef = orderDefList[i];\r\n var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx);\r\n var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx);\r\n if (orderDef.parser) {\r\n val0 = orderDef.parser(val0);\r\n val1 = orderDef.parser(val1);\r\n }\r\n var result = orderDef.comparator.evaluate(val0, val1);\r\n if (result !== 0) {\r\n return result;\r\n }\r\n }\r\n return 0;\r\n });\r\n return {\r\n data: resultData\r\n };\r\n }\r\n};\n\nregisterTransform(filterTransform);\r\nregisterTransform(sortTransform);\n\nvar LineSeriesModel = (function (_super) {\r\n __extends(LineSeriesModel, _super);\r\n function LineSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = LineSeriesModel.type;\r\n _this.hasSymbolVisual = true;\r\n _this.legendSymbol = 'line';\r\n return _this;\r\n }\r\n LineSeriesModel.prototype.getInitialData = function (option) {\r\n if (__DEV__) {\r\n var coordSys = option.coordinateSystem;\r\n if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\r\n throw new Error('Line not support coordinateSystem besides cartesian and polar');\r\n }\r\n }\r\n return createListFromArray(this.getSource(), this, {\r\n useEncodeDefaulter: true\r\n });\r\n };\r\n LineSeriesModel.type = 'series.line';\r\n LineSeriesModel.dependencies = ['grid', 'polar'];\r\n LineSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 3,\r\n coordinateSystem: 'cartesian2d',\r\n legendHoverLink: true,\r\n clip: true,\r\n label: {\r\n position: 'top'\r\n },\r\n endLabel: {\r\n show: false,\r\n valueAnimation: true,\r\n distance: 8\r\n },\r\n lineStyle: {\r\n width: 2,\r\n type: 'solid'\r\n },\r\n emphasis: {\r\n scale: true,\r\n lineStyle: {\r\n width: 'bolder'\r\n }\r\n },\r\n step: false,\r\n smooth: false,\r\n smoothMonotone: null,\r\n symbol: 'emptyCircle',\r\n symbolSize: 4,\r\n symbolRotate: null,\r\n showSymbol: true,\r\n showAllSymbol: 'auto',\r\n connectNulls: false,\r\n sampling: 'none',\r\n animationEasing: 'linear',\r\n progressive: 0,\r\n hoverLayerThreshold: Infinity\r\n };\r\n return LineSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(LineSeriesModel);\n\nfunction getDefaultLabel(data, dataIndex) {\r\n var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n var len = labelDims.length;\r\n if (len === 1) {\r\n return retrieveRawValue(data, dataIndex, labelDims[0]);\r\n }\r\n else if (len) {\r\n var vals = [];\r\n for (var i = 0; i < labelDims.length; i++) {\r\n vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));\r\n }\r\n return vals.join(' ');\r\n }\r\n}\r\nfunction getDefaultInterpolatedLabel(data, interpolatedValue) {\r\n var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n if (!isArray(interpolatedValue)) {\r\n return interpolatedValue + '';\r\n }\r\n var vals = [];\r\n for (var i = 0; i < labelDims.length; i++) {\r\n var dimInfo = data.getDimensionInfo(labelDims[i]);\r\n if (dimInfo) {\r\n vals.push(interpolatedValue[dimInfo.index]);\r\n }\r\n }\r\n return vals.join(' ');\r\n}\n\nvar Symbol = (function (_super) {\r\n __extends(Symbol, _super);\r\n function Symbol(data, idx, seriesScope, opts) {\r\n var _this = _super.call(this) || this;\r\n _this.updateData(data, idx, seriesScope, opts);\r\n return _this;\r\n }\r\n Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\r\n this.removeAll();\r\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\r\n symbolPath.attr({\r\n z2: 100,\r\n culling: true,\r\n scaleX: symbolSize[0] / 2,\r\n scaleY: symbolSize[1] / 2\r\n });\r\n symbolPath.drift = driftSymbol;\r\n this._symbolType = symbolType;\r\n this.add(symbolPath);\r\n };\r\n Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\r\n this.childAt(0).stopAnimation(null, toLastFrame);\r\n };\r\n Symbol.prototype.getSymbolPath = function () {\r\n return this.childAt(0);\r\n };\r\n Symbol.prototype.highlight = function () {\r\n enterEmphasis(this.childAt(0));\r\n };\r\n Symbol.prototype.downplay = function () {\r\n leaveEmphasis(this.childAt(0));\r\n };\r\n Symbol.prototype.setZ = function (zlevel, z) {\r\n var symbolPath = this.childAt(0);\r\n symbolPath.zlevel = zlevel;\r\n symbolPath.z = z;\r\n };\r\n Symbol.prototype.setDraggable = function (draggable) {\r\n var symbolPath = this.childAt(0);\r\n symbolPath.draggable = draggable;\r\n symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\r\n };\r\n Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\r\n this.silent = false;\r\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\r\n var seriesModel = data.hostModel;\r\n var symbolSize = Symbol.getSymbolSize(data, idx);\r\n var isInit = symbolType !== this._symbolType;\r\n var disableAnimation = opts && opts.disableAnimation;\r\n if (isInit) {\r\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\r\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\r\n }\r\n else {\r\n var symbolPath = this.childAt(0);\r\n symbolPath.silent = false;\r\n var target = {\r\n scaleX: symbolSize[0] / 2,\r\n scaleY: symbolSize[1] / 2\r\n };\r\n disableAnimation ? symbolPath.attr(target)\r\n : updateProps(symbolPath, target, seriesModel, idx);\r\n }\r\n this._updateCommon(data, idx, symbolSize, seriesScope, opts);\r\n if (isInit) {\r\n var symbolPath = this.childAt(0);\r\n if (!disableAnimation) {\r\n var target = {\r\n scaleX: this._sizeX,\r\n scaleY: this._sizeY,\r\n style: {\r\n opacity: symbolPath.style.opacity\r\n }\r\n };\r\n symbolPath.scaleX = symbolPath.scaleY = 0;\r\n symbolPath.style.opacity = 0;\r\n initProps(symbolPath, target, seriesModel, idx);\r\n }\r\n }\r\n if (disableAnimation) {\r\n this.childAt(0).stopAnimation('remove');\r\n }\r\n this._seriesModel = seriesModel;\r\n };\r\n Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\r\n var symbolPath = this.childAt(0);\r\n var seriesModel = data.hostModel;\r\n var emphasisItemStyle;\r\n var blurItemStyle;\r\n var selectItemStyle;\r\n var focus;\r\n var blurScope;\r\n var symbolOffset;\r\n var labelStatesModels;\r\n var hoverScale;\r\n var cursorStyle;\r\n if (seriesScope) {\r\n emphasisItemStyle = seriesScope.emphasisItemStyle;\r\n blurItemStyle = seriesScope.blurItemStyle;\r\n selectItemStyle = seriesScope.selectItemStyle;\r\n focus = seriesScope.focus;\r\n blurScope = seriesScope.blurScope;\r\n symbolOffset = seriesScope.symbolOffset;\r\n labelStatesModels = seriesScope.labelStatesModels;\r\n hoverScale = seriesScope.hoverScale;\r\n cursorStyle = seriesScope.cursorStyle;\r\n }\r\n if (!seriesScope || data.hasItemOption) {\r\n var itemModel = (seriesScope && seriesScope.itemModel)\r\n ? seriesScope.itemModel : data.getItemModel(idx);\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n focus = emphasisModel.get('focus');\r\n blurScope = emphasisModel.get('blurScope');\r\n symbolOffset = itemModel.getShallow('symbolOffset');\r\n labelStatesModels = getLabelStatesModels(itemModel);\r\n hoverScale = emphasisModel.getShallow('scale');\r\n cursorStyle = itemModel.getShallow('cursor');\r\n }\r\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\r\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\r\n if (symbolOffset) {\r\n symbolPath.x = parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n symbolPath.y = parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n }\r\n cursorStyle && symbolPath.attr('cursor', cursorStyle);\r\n var symbolStyle = data.getItemVisual(idx, 'style');\r\n var visualColor = symbolStyle.fill;\r\n if (symbolPath instanceof ZRImage) {\r\n var pathStyle = symbolPath.style;\r\n symbolPath.useStyle(extend({\r\n image: pathStyle.image,\r\n x: pathStyle.x, y: pathStyle.y,\r\n width: pathStyle.width, height: pathStyle.height\r\n }, symbolStyle));\r\n }\r\n else {\r\n if (symbolPath.__isEmptyBrush) {\r\n symbolPath.useStyle(extend({}, symbolStyle));\r\n }\r\n else {\r\n symbolPath.useStyle(symbolStyle);\r\n }\r\n symbolPath.style.decal = null;\r\n symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\r\n symbolPath.style.strokeNoScale = true;\r\n }\r\n var liftZ = data.getItemVisual(idx, 'liftZ');\r\n var z2Origin = this._z2;\r\n if (liftZ != null) {\r\n if (z2Origin == null) {\r\n this._z2 = symbolPath.z2;\r\n symbolPath.z2 += liftZ;\r\n }\r\n }\r\n else if (z2Origin != null) {\r\n symbolPath.z2 = z2Origin;\r\n this._z2 = null;\r\n }\r\n var useNameLabel = opts && opts.useNameLabel;\r\n setLabelStyle(symbolPath, labelStatesModels, {\r\n labelFetcher: seriesModel,\r\n labelDataIndex: idx,\r\n defaultText: getLabelDefaultText,\r\n inheritColor: visualColor,\r\n defaultOpacity: symbolStyle.opacity\r\n });\r\n function getLabelDefaultText(idx) {\r\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\r\n }\r\n this._sizeX = symbolSize[0] / 2;\r\n this._sizeY = symbolSize[1] / 2;\r\n var emphasisState = symbolPath.ensureState('emphasis');\r\n emphasisState.style = emphasisItemStyle;\r\n symbolPath.ensureState('select').style = selectItemStyle;\r\n symbolPath.ensureState('blur').style = blurItemStyle;\r\n if (hoverScale) {\r\n var scaleRatio = Math.max(1.1, 3 / this._sizeY);\r\n emphasisState.scaleX = this._sizeX * scaleRatio;\r\n emphasisState.scaleY = this._sizeY * scaleRatio;\r\n }\r\n this.setSymbolScale(1);\r\n enableHoverEmphasis(this, focus, blurScope);\r\n };\r\n Symbol.prototype.setSymbolScale = function (scale) {\r\n this.scaleX = this.scaleY = scale;\r\n };\r\n Symbol.prototype.fadeOut = function (cb, opt) {\r\n var symbolPath = this.childAt(0);\r\n var seriesModel = this._seriesModel;\r\n var dataIndex = getECData(this).dataIndex;\r\n var animationOpt = opt && opt.animation;\r\n this.silent = symbolPath.silent = true;\r\n if (opt && opt.fadeLabel) {\r\n var textContent = symbolPath.getTextContent();\r\n if (textContent) {\r\n removeElement(textContent, {\r\n style: {\r\n opacity: 0\r\n }\r\n }, seriesModel, {\r\n dataIndex: dataIndex,\r\n removeOpt: animationOpt,\r\n cb: function () {\r\n symbolPath.removeTextContent();\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n symbolPath.removeTextContent();\r\n }\r\n removeElement(symbolPath, {\r\n style: {\r\n opacity: 0\r\n },\r\n scaleX: 0,\r\n scaleY: 0\r\n }, seriesModel, { dataIndex: dataIndex, cb: cb, removeOpt: animationOpt });\r\n };\r\n Symbol.getSymbolSize = function (data, idx) {\r\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\r\n return symbolSize instanceof Array\r\n ? symbolSize.slice()\r\n : [+symbolSize, +symbolSize];\r\n };\r\n return Symbol;\r\n}(Group));\r\nfunction driftSymbol(dx, dy) {\r\n this.parent.drift(dx, dy);\r\n}\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\r\n return point && !isNaN(point[0]) && !isNaN(point[1])\r\n && !(opt.isIgnore && opt.isIgnore(idx))\r\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1]))\r\n && data.getItemVisual(idx, 'symbol') !== 'none';\r\n}\r\nfunction normalizeUpdateOpt(opt) {\r\n if (opt != null && !isObject(opt)) {\r\n opt = { isIgnore: opt };\r\n }\r\n return opt || {};\r\n}\r\nfunction makeSeriesScope(data) {\r\n var seriesModel = data.hostModel;\r\n var emphasisModel = seriesModel.getModel('emphasis');\r\n return {\r\n emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\r\n blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\r\n selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\r\n focus: emphasisModel.get('focus'),\r\n blurScope: emphasisModel.get('blurScope'),\r\n symbolRotate: seriesModel.get('symbolRotate'),\r\n symbolOffset: seriesModel.get('symbolOffset'),\r\n hoverScale: emphasisModel.get('scale'),\r\n labelStatesModels: getLabelStatesModels(seriesModel),\r\n cursorStyle: seriesModel.get('cursor')\r\n };\r\n}\r\nvar SymbolDraw = (function () {\r\n function SymbolDraw(SymbolCtor) {\r\n this.group = new Group();\r\n this._SymbolCtor = SymbolCtor || Symbol;\r\n }\r\n SymbolDraw.prototype.updateData = function (data, opt) {\r\n opt = normalizeUpdateOpt(opt);\r\n var group = this.group;\r\n var seriesModel = data.hostModel;\r\n var oldData = this._data;\r\n var SymbolCtor = this._SymbolCtor;\r\n var disableAnimation = opt.disableAnimation;\r\n var seriesScope = makeSeriesScope(data);\r\n var symbolUpdateOpt = { disableAnimation: disableAnimation };\r\n var getSymbolPoint = opt.getSymbolPoint || function (idx) {\r\n return data.getItemLayout(idx);\r\n };\r\n if (!oldData) {\r\n group.removeAll();\r\n }\r\n data.diff(oldData)\r\n .add(function (newIdx) {\r\n var point = getSymbolPoint(newIdx);\r\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\r\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\r\n symbolEl.setPosition(point);\r\n data.setItemGraphicEl(newIdx, symbolEl);\r\n group.add(symbolEl);\r\n }\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n var point = getSymbolPoint(newIdx);\r\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\r\n group.remove(symbolEl);\r\n return;\r\n }\r\n if (!symbolEl) {\r\n symbolEl = new SymbolCtor(data, newIdx);\r\n symbolEl.setPosition(point);\r\n }\r\n else {\r\n symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\r\n var target = {\r\n x: point[0],\r\n y: point[1]\r\n };\r\n disableAnimation\r\n ? symbolEl.attr(target)\r\n : updateProps(symbolEl, target, seriesModel);\r\n }\r\n group.add(symbolEl);\r\n data.setItemGraphicEl(newIdx, symbolEl);\r\n })\r\n .remove(function (oldIdx) {\r\n var el = oldData.getItemGraphicEl(oldIdx);\r\n el && el.fadeOut(function () {\r\n group.remove(el);\r\n });\r\n })\r\n .execute();\r\n this._getSymbolPoint = getSymbolPoint;\r\n this._data = data;\r\n };\r\n SymbolDraw.prototype.isPersistent = function () {\r\n return true;\r\n };\r\n SymbolDraw.prototype.updateLayout = function () {\r\n var _this = this;\r\n var data = this._data;\r\n if (data) {\r\n data.eachItemGraphicEl(function (el, idx) {\r\n var point = _this._getSymbolPoint(idx);\r\n el.setPosition(point);\r\n el.markRedraw();\r\n });\r\n }\r\n };\r\n SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n this._seriesScope = makeSeriesScope(data);\r\n this._data = null;\r\n this.group.removeAll();\r\n };\r\n SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\r\n opt = normalizeUpdateOpt(opt);\r\n function updateIncrementalAndHover(el) {\r\n if (!el.isGroup) {\r\n el.incremental = true;\r\n el.ensureState('emphasis').hoverLayer = true;\r\n }\r\n }\r\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\r\n var point = data.getItemLayout(idx);\r\n if (symbolNeedsDraw(data, point, idx, opt)) {\r\n var el = new this._SymbolCtor(data, idx, this._seriesScope);\r\n el.traverse(updateIncrementalAndHover);\r\n el.setPosition(point);\r\n this.group.add(el);\r\n data.setItemGraphicEl(idx, el);\r\n }\r\n }\r\n };\r\n SymbolDraw.prototype.remove = function (enableAnimation) {\r\n var group = this.group;\r\n var data = this._data;\r\n if (data && enableAnimation) {\r\n data.eachItemGraphicEl(function (el) {\r\n el.fadeOut(function () {\r\n group.remove(el);\r\n });\r\n });\r\n }\r\n else {\r\n group.removeAll();\r\n }\r\n };\r\n return SymbolDraw;\r\n}());\n\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\r\n var baseAxis = coordSys.getBaseAxis();\r\n var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n var valueStart = getValueStart(valueAxis, valueOrigin);\r\n var baseAxisDim = baseAxis.dim;\r\n var valueAxisDim = valueAxis.dim;\r\n var valueDim = data.mapDimension(valueAxisDim);\r\n var baseDim = data.mapDimension(baseAxisDim);\r\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\r\n var dims = map(coordSys.dimensions, function (coordDim) {\r\n return data.mapDimension(coordDim);\r\n });\r\n var stacked = false;\r\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n if (isDimensionStacked(data, dims[0])) {\r\n stacked = true;\r\n dims[0] = stackResultDim;\r\n }\r\n if (isDimensionStacked(data, dims[1])) {\r\n stacked = true;\r\n dims[1] = stackResultDim;\r\n }\r\n return {\r\n dataDimsForPoint: dims,\r\n valueStart: valueStart,\r\n valueAxisDim: valueAxisDim,\r\n baseAxisDim: baseAxisDim,\r\n stacked: !!stacked,\r\n valueDim: valueDim,\r\n baseDim: baseDim,\r\n baseDataOffset: baseDataOffset,\r\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\r\n };\r\n}\r\nfunction getValueStart(valueAxis, valueOrigin) {\r\n var valueStart = 0;\r\n var extent = valueAxis.scale.getExtent();\r\n if (valueOrigin === 'start') {\r\n valueStart = extent[0];\r\n }\r\n else if (valueOrigin === 'end') {\r\n valueStart = extent[1];\r\n }\r\n else {\r\n if (extent[0] > 0) {\r\n valueStart = extent[0];\r\n }\r\n else if (extent[1] < 0) {\r\n valueStart = extent[1];\r\n }\r\n }\r\n return valueStart;\r\n}\r\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\r\n var value = NaN;\r\n if (dataCoordInfo.stacked) {\r\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\r\n }\r\n if (isNaN(value)) {\r\n value = dataCoordInfo.valueStart;\r\n }\r\n var baseDataOffset = dataCoordInfo.baseDataOffset;\r\n var stackedData = [];\r\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\r\n stackedData[1 - baseDataOffset] = value;\r\n return coordSys.dataToPoint(stackedData);\r\n}\n\nvar supportFloat32Array = typeof Float32Array !== 'undefined';\r\nvar Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;\r\nfunction createFloat32Array(arg) {\r\n if (isArray(arg)) {\r\n return supportFloat32Array ? new Float32Array(arg) : arg;\r\n }\r\n return new Float32ArrayCtor(arg);\r\n}\n\nfunction diffData(oldData, newData) {\r\n var diffResult = [];\r\n newData.diff(oldData)\r\n .add(function (idx) {\r\n diffResult.push({ cmd: '+', idx: idx });\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n diffResult.push({ cmd: '=', idx: oldIdx, idx1: newIdx });\r\n })\r\n .remove(function (idx) {\r\n diffResult.push({ cmd: '-', idx: idx });\r\n })\r\n .execute();\r\n return diffResult;\r\n}\r\nfunction lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\r\n var diff = diffData(oldData, newData);\r\n var currPoints = [];\r\n var nextPoints = [];\r\n var currStackedPoints = [];\r\n var nextStackedPoints = [];\r\n var status = [];\r\n var sortedIndices = [];\r\n var rawIndices = [];\r\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\r\n var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\r\n var oldPoints = oldData.getLayout('points') || [];\r\n var newPoints = newData.getLayout('points') || [];\r\n for (var i = 0; i < diff.length; i++) {\r\n var diffItem = diff[i];\r\n var pointAdded = true;\r\n var oldIdx2 = void 0;\r\n var newIdx2 = void 0;\r\n switch (diffItem.cmd) {\r\n case '=':\r\n oldIdx2 = diffItem.idx * 2;\r\n newIdx2 = diffItem.idx1 * 2;\r\n var currentX = oldPoints[oldIdx2];\r\n var currentY = oldPoints[oldIdx2 + 1];\r\n var nextX = newPoints[newIdx2];\r\n var nextY = newPoints[newIdx2 + 1];\r\n if (isNaN(currentX) || isNaN(currentY)) {\r\n currentX = nextX;\r\n currentY = nextY;\r\n }\r\n currPoints.push(currentX, currentY);\r\n nextPoints.push(nextX, nextY);\r\n currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\r\n nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\r\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\r\n break;\r\n case '+':\r\n var newIdx = diffItem.idx;\r\n var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;\r\n var oldPt = oldCoordSys.dataToPoint([\r\n newData.get(newDataDimsForPoint[0], newIdx),\r\n newData.get(newDataDimsForPoint[1], newIdx)\r\n ]);\r\n newIdx2 = newIdx * 2;\r\n currPoints.push(oldPt[0], oldPt[1]);\r\n nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);\r\n var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);\r\n currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);\r\n nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\r\n rawIndices.push(newData.getRawIndex(newIdx));\r\n break;\r\n case '-':\r\n var oldIdx = diffItem.idx;\r\n var rawIndex = oldData.getRawIndex(oldIdx);\r\n var oldDataDimsForPoint = oldDataNewCoordInfo.dataDimsForPoint;\r\n oldIdx2 = oldIdx * 2;\r\n if (rawIndex !== oldIdx) {\r\n var newPt = newCoordSys.dataToPoint([\r\n oldData.get(oldDataDimsForPoint[0], oldIdx),\r\n oldData.get(oldDataDimsForPoint[1], oldIdx)\r\n ]);\r\n var newStackedOnPt = getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, oldIdx);\r\n currPoints.push(oldPoints[oldIdx2], oldPoints[oldIdx2 + 1]);\r\n nextPoints.push(newPt[0], newPt[1]);\r\n currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\r\n nextStackedPoints.push(newStackedOnPt[0], newStackedOnPt[1]);\r\n rawIndices.push(rawIndex);\r\n }\r\n else {\r\n pointAdded = false;\r\n }\r\n }\r\n if (pointAdded) {\r\n status.push(diffItem);\r\n sortedIndices.push(sortedIndices.length);\r\n }\r\n }\r\n sortedIndices.sort(function (a, b) {\r\n return rawIndices[a] - rawIndices[b];\r\n });\r\n var len = currPoints.length;\r\n var sortedCurrPoints = createFloat32Array(len);\r\n var sortedNextPoints = createFloat32Array(len);\r\n var sortedCurrStackedPoints = createFloat32Array(len);\r\n var sortedNextStackedPoints = createFloat32Array(len);\r\n var sortedStatus = [];\r\n for (var i = 0; i < sortedIndices.length; i++) {\r\n var idx = sortedIndices[i];\r\n var i2 = i * 2;\r\n var idx2 = idx * 2;\r\n sortedCurrPoints[i2] = currPoints[idx2];\r\n sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];\r\n sortedNextPoints[i2] = nextPoints[idx2];\r\n sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];\r\n sortedCurrStackedPoints[i2] = currStackedPoints[idx2];\r\n sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];\r\n sortedNextStackedPoints[i2] = nextStackedPoints[idx2];\r\n sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];\r\n sortedStatus[i] = status[idx];\r\n }\r\n return {\r\n current: sortedCurrPoints,\r\n next: sortedNextPoints,\r\n stackedOnCurrent: sortedCurrStackedPoints,\r\n stackedOnNext: sortedNextStackedPoints,\r\n status: sortedStatus\r\n };\r\n}\n\nvar mathMin$5 = Math.min;\r\nvar mathMax$5 = Math.max;\r\nfunction isPointNull(x, y) {\r\n return isNaN(x) || isNaN(y);\r\n}\r\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {\r\n var prevX;\r\n var prevY;\r\n var cpx0;\r\n var cpy0;\r\n var cpx1;\r\n var cpy1;\r\n var idx = start;\r\n var k = 0;\r\n for (; k < segLen; k++) {\r\n var x = points[idx * 2];\r\n var y = points[idx * 2 + 1];\r\n if (idx >= allLen || idx < 0) {\r\n break;\r\n }\r\n if (isPointNull(x, y)) {\r\n if (connectNulls) {\r\n idx += dir;\r\n continue;\r\n }\r\n break;\r\n }\r\n if (idx === start) {\r\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y);\r\n cpx0 = x;\r\n cpy0 = y;\r\n }\r\n else {\r\n var dx = x - prevX;\r\n var dy = y - prevY;\r\n if ((dx * dx + dy * dy) < 0.5) {\r\n idx += dir;\r\n continue;\r\n }\r\n if (smooth > 0) {\r\n var nextIdx = idx + dir;\r\n var nextX = points[nextIdx * 2];\r\n var nextY = points[nextIdx * 2 + 1];\r\n var tmpK = k + 1;\r\n if (connectNulls) {\r\n while (isPointNull(nextX, nextY) && tmpK < segLen) {\r\n tmpK++;\r\n nextIdx += dir;\r\n nextX = points[nextIdx * 2];\r\n nextY = points[nextIdx * 2 + 1];\r\n }\r\n }\r\n var ratioNextSeg = 0.5;\r\n var vx = 0;\r\n var vy = 0;\r\n var nextCpx0 = void 0;\r\n var nextCpy0 = void 0;\r\n if (tmpK >= segLen || isPointNull(nextX, nextY)) {\r\n cpx1 = x;\r\n cpy1 = y;\r\n }\r\n else {\r\n vx = nextX - prevX;\r\n vy = nextY - prevY;\r\n var dx0 = x - prevX;\r\n var dx1 = nextX - x;\r\n var dy0 = y - prevY;\r\n var dy1 = nextY - y;\r\n var lenPrevSeg = void 0;\r\n var lenNextSeg = void 0;\r\n if (smoothMonotone === 'x') {\r\n lenPrevSeg = Math.abs(dx0);\r\n lenNextSeg = Math.abs(dx1);\r\n cpx1 = x - lenPrevSeg * smooth;\r\n cpy1 = y;\r\n nextCpx0 = x + lenPrevSeg * smooth;\r\n nextCpy0 = y;\r\n }\r\n else if (smoothMonotone === 'y') {\r\n lenPrevSeg = Math.abs(dy0);\r\n lenNextSeg = Math.abs(dy1);\r\n cpx1 = x;\r\n cpy1 = y - lenPrevSeg * smooth;\r\n nextCpx0 = x;\r\n nextCpy0 = y + lenPrevSeg * smooth;\r\n }\r\n else {\r\n lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);\r\n lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\r\n cpx1 = x - vx * smooth * (1 - ratioNextSeg);\r\n cpy1 = y - vy * smooth * (1 - ratioNextSeg);\r\n nextCpx0 = x + vx * smooth * ratioNextSeg;\r\n nextCpy0 = y + vy * smooth * ratioNextSeg;\r\n nextCpx0 = mathMin$5(nextCpx0, mathMax$5(nextX, x));\r\n nextCpy0 = mathMin$5(nextCpy0, mathMax$5(nextY, y));\r\n nextCpx0 = mathMax$5(nextCpx0, mathMin$5(nextX, x));\r\n nextCpy0 = mathMax$5(nextCpy0, mathMin$5(nextY, y));\r\n vx = nextCpx0 - x;\r\n vy = nextCpy0 - y;\r\n cpx1 = x - vx * lenPrevSeg / lenNextSeg;\r\n cpy1 = y - vy * lenPrevSeg / lenNextSeg;\r\n cpx1 = mathMin$5(cpx1, mathMax$5(prevX, x));\r\n cpy1 = mathMin$5(cpy1, mathMax$5(prevY, y));\r\n cpx1 = mathMax$5(cpx1, mathMin$5(prevX, x));\r\n cpy1 = mathMax$5(cpy1, mathMin$5(prevY, y));\r\n vx = x - cpx1;\r\n vy = y - cpy1;\r\n nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;\r\n nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;\r\n }\r\n }\r\n ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);\r\n cpx0 = nextCpx0;\r\n cpy0 = nextCpy0;\r\n }\r\n else {\r\n ctx.lineTo(x, y);\r\n }\r\n }\r\n prevX = x;\r\n prevY = y;\r\n idx += dir;\r\n }\r\n return k;\r\n}\r\nvar ECPolylineShape = (function () {\r\n function ECPolylineShape() {\r\n this.smooth = 0;\r\n this.smoothConstraint = true;\r\n }\r\n return ECPolylineShape;\r\n}());\r\nvar ECPolyline = (function (_super) {\r\n __extends(ECPolyline, _super);\r\n function ECPolyline(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'ec-polyline';\r\n return _this;\r\n }\r\n ECPolyline.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n ECPolyline.prototype.getDefaultShape = function () {\r\n return new ECPolylineShape();\r\n };\r\n ECPolyline.prototype.buildPath = function (ctx, shape) {\r\n var points = shape.points;\r\n var i = 0;\r\n var len = points.length / 2;\r\n if (shape.connectNulls) {\r\n for (; len > 0; len--) {\r\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\r\n break;\r\n }\r\n }\r\n for (; i < len; i++) {\r\n if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\r\n break;\r\n }\r\n }\r\n }\r\n while (i < len) {\r\n i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\r\n }\r\n };\r\n ECPolyline.prototype.getPointOn = function (xOrY, dim) {\r\n if (!this.path) {\r\n this.createPathProxy();\r\n this.buildPath(this.path, this.shape);\r\n }\r\n var path = this.path;\r\n var data = path.data;\r\n var CMD = PathProxy.CMD;\r\n var x0;\r\n var y0;\r\n var isDimX = dim === 'x';\r\n var roots = [];\r\n for (var i = 0; i < data.length;) {\r\n var cmd = data[i++];\r\n var x = void 0;\r\n var y = void 0;\r\n var x2 = void 0;\r\n var y2 = void 0;\r\n var x3 = void 0;\r\n var y3 = void 0;\r\n var t = void 0;\r\n switch (cmd) {\r\n case CMD.M:\r\n x0 = data[i++];\r\n y0 = data[i++];\r\n break;\r\n case CMD.L:\r\n x = data[i++];\r\n y = data[i++];\r\n t = isDimX ? (xOrY - x0) / (x - x0)\r\n : (xOrY - y0) / (y - y0);\r\n if (t <= 1 && t >= 0) {\r\n var val = isDimX ? (y - y0) * t + y0\r\n : (x - x0) * t + x0;\r\n return isDimX ? [xOrY, val] : [val, xOrY];\r\n }\r\n x0 = x;\r\n y0 = y;\r\n break;\r\n case CMD.C:\r\n x = data[i++];\r\n y = data[i++];\r\n x2 = data[i++];\r\n y2 = data[i++];\r\n x3 = data[i++];\r\n y3 = data[i++];\r\n var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots)\r\n : cubicRootAt(y0, y, y2, y3, xOrY, roots);\r\n if (nRoot > 0) {\r\n for (var i_1 = 0; i_1 < nRoot; i_1++) {\r\n var t_1 = roots[i_1];\r\n if (t_1 <= 1 && t_1 >= 0) {\r\n var val = isDimX ? cubicAt(y0, y, y2, y3, t_1)\r\n : cubicAt(x0, x, x2, x3, t_1);\r\n return isDimX ? [xOrY, val] : [val, xOrY];\r\n }\r\n }\r\n }\r\n x0 = x3;\r\n y0 = y3;\r\n break;\r\n }\r\n }\r\n };\r\n return ECPolyline;\r\n}(Path));\r\nvar ECPolygonShape = (function (_super) {\r\n __extends(ECPolygonShape, _super);\r\n function ECPolygonShape() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return ECPolygonShape;\r\n}(ECPolylineShape));\r\nvar ECPolygon = (function (_super) {\r\n __extends(ECPolygon, _super);\r\n function ECPolygon(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'ec-polygon';\r\n return _this;\r\n }\r\n ECPolygon.prototype.getDefaultShape = function () {\r\n return new ECPolygonShape();\r\n };\r\n ECPolygon.prototype.buildPath = function (ctx, shape) {\r\n var points = shape.points;\r\n var stackedOnPoints = shape.stackedOnPoints;\r\n var i = 0;\r\n var len = points.length / 2;\r\n var smoothMonotone = shape.smoothMonotone;\r\n if (shape.connectNulls) {\r\n for (; len > 0; len--) {\r\n if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\r\n break;\r\n }\r\n }\r\n for (; i < len; i++) {\r\n if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\r\n break;\r\n }\r\n }\r\n }\r\n while (i < len) {\r\n var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls);\r\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\r\n i += k + 1;\r\n ctx.closePath();\r\n }\r\n };\r\n return ECPolygon;\r\n}(Path));\n\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {\r\n var rect = cartesian.getArea();\r\n var x = rect.x;\r\n var y = rect.y;\r\n var width = rect.width;\r\n var height = rect.height;\r\n var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2;\r\n x -= lineWidth / 2;\r\n y -= lineWidth / 2;\r\n width += lineWidth;\r\n height += lineWidth;\r\n x = Math.floor(x);\r\n width = Math.round(width);\r\n var clipPath = new Rect({\r\n shape: {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n }\r\n });\r\n if (hasAnimation) {\r\n var baseAxis = cartesian.getBaseAxis();\r\n var isHorizontal = baseAxis.isHorizontal();\r\n var isAxisInversed = baseAxis.inverse;\r\n if (isHorizontal) {\r\n if (isAxisInversed) {\r\n clipPath.shape.x += width;\r\n }\r\n clipPath.shape.width = 0;\r\n }\r\n else {\r\n if (!isAxisInversed) {\r\n clipPath.shape.y += height;\r\n }\r\n clipPath.shape.height = 0;\r\n }\r\n var duringCb = typeof during === 'function'\r\n ? function (percent) {\r\n during(percent, clipPath);\r\n }\r\n : null;\r\n initProps(clipPath, {\r\n shape: {\r\n width: width,\r\n height: height,\r\n x: x,\r\n y: y\r\n }\r\n }, seriesModel, null, done, duringCb);\r\n }\r\n return clipPath;\r\n}\r\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\r\n var sectorArea = polar.getArea();\r\n var r0 = round$1(sectorArea.r0, 1);\r\n var r = round$1(sectorArea.r, 1);\r\n var clipPath = new Sector({\r\n shape: {\r\n cx: round$1(polar.cx, 1),\r\n cy: round$1(polar.cy, 1),\r\n r0: r0,\r\n r: r,\r\n startAngle: sectorArea.startAngle,\r\n endAngle: sectorArea.endAngle,\r\n clockwise: sectorArea.clockwise\r\n }\r\n });\r\n if (hasAnimation) {\r\n var isRadial = polar.getBaseAxis().dim === 'angle';\r\n if (isRadial) {\r\n clipPath.shape.endAngle = sectorArea.startAngle;\r\n }\r\n else {\r\n clipPath.shape.r = r0;\r\n }\r\n initProps(clipPath, {\r\n shape: {\r\n endAngle: sectorArea.endAngle,\r\n r: r\r\n }\r\n }, seriesModel);\r\n }\r\n return clipPath;\r\n}\r\nfunction createClipPath(coordSys, hasAnimation, seriesModel, done, during) {\r\n if (!coordSys) {\r\n return null;\r\n }\r\n else if (coordSys.type === 'polar') {\r\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n }\r\n else if (coordSys.type === 'cartesian2d') {\r\n return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);\r\n }\r\n return null;\r\n}\n\nfunction isCoordinateSystemType(coordSys, type) {\r\n return coordSys.type === type;\r\n}\n\nfunction isPointsSame(points1, points2) {\r\n if (points1.length !== points2.length) {\r\n return;\r\n }\r\n for (var i = 0; i < points1.length; i++) {\r\n if (points1[i] !== points2[i]) {\r\n return;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction bboxFromPoints(points) {\r\n var minX = Infinity;\r\n var minY = Infinity;\r\n var maxX = -Infinity;\r\n var maxY = -Infinity;\r\n for (var i = 0; i < points.length;) {\r\n var x = points[i++];\r\n var y = points[i++];\r\n if (!isNaN(x)) {\r\n minX = Math.min(x, minX);\r\n maxX = Math.max(x, maxX);\r\n }\r\n if (!isNaN(y)) {\r\n minY = Math.min(y, minY);\r\n maxY = Math.max(y, maxY);\r\n }\r\n }\r\n return [\r\n [minX, minY],\r\n [maxX, maxY]\r\n ];\r\n}\r\nfunction getBoundingDiff(points1, points2) {\r\n var _a = bboxFromPoints(points1), min1 = _a[0], max1 = _a[1];\r\n var _b = bboxFromPoints(points2), min2 = _b[0], max2 = _b[1];\r\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\r\n}\r\nfunction getSmooth(smooth) {\r\n return typeof smooth === 'number' ? smooth : (smooth ? 0.5 : 0);\r\n}\r\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\r\n if (!dataCoordInfo.valueDim) {\r\n return [];\r\n }\r\n var len = data.count();\r\n var points = createFloat32Array(len * 2);\r\n for (var idx = 0; idx < len; idx++) {\r\n var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\r\n points[idx * 2] = pt[0];\r\n points[idx * 2 + 1] = pt[1];\r\n }\r\n return points;\r\n}\r\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\r\n var baseAxis = coordSys.getBaseAxis();\r\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\r\n var stepPoints = [];\r\n var i = 0;\r\n var stepPt = [];\r\n var pt = [];\r\n var nextPt = [];\r\n for (; i < points.length - 2; i += 2) {\r\n nextPt[0] = points[i + 2];\r\n nextPt[1] = points[i + 3];\r\n pt[0] = points[i];\r\n pt[1] = points[i + 1];\r\n stepPoints.push(pt[0], pt[1]);\r\n switch (stepTurnAt) {\r\n case 'end':\r\n stepPt[baseIndex] = nextPt[baseIndex];\r\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n stepPoints.push(stepPt[0], stepPt[1]);\r\n break;\r\n case 'middle':\r\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\r\n var stepPt2 = [];\r\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\r\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\r\n stepPoints.push(stepPt[0], stepPt[1]);\r\n stepPoints.push(stepPt2[0], stepPt2[1]);\r\n break;\r\n default:\r\n stepPt[baseIndex] = pt[baseIndex];\r\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\r\n stepPoints.push(stepPt[0], stepPt[1]);\r\n }\r\n }\r\n stepPoints.push(points[i++], points[i++]);\r\n return stepPoints;\r\n}\r\nfunction getVisualGradient(data, coordSys) {\r\n var visualMetaList = data.getVisual('visualMeta');\r\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\r\n return;\r\n }\r\n if (coordSys.type !== 'cartesian2d') {\r\n if (__DEV__) {\r\n console.warn('Visual map on line style is only supported on cartesian2d.');\r\n }\r\n return;\r\n }\r\n var coordDim;\r\n var visualMeta;\r\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\r\n var dimIndex = visualMetaList[i].dimension;\r\n var dimName = data.dimensions[dimIndex];\r\n var dimInfo = data.getDimensionInfo(dimName);\r\n coordDim = (dimInfo && dimInfo.coordDim);\r\n if (coordDim === 'x' || coordDim === 'y') {\r\n visualMeta = visualMetaList[i];\r\n break;\r\n }\r\n }\r\n if (!visualMeta) {\r\n if (__DEV__) {\r\n console.warn('Visual map on line style only support x or y dimension.');\r\n }\r\n return;\r\n }\r\n var axis = coordSys.getAxis(coordDim);\r\n var colorStops = map(visualMeta.stops, function (stop) {\r\n return {\r\n offset: 0,\r\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\r\n color: stop.color\r\n };\r\n });\r\n var stopLen = colorStops.length;\r\n var outerColors = visualMeta.outerColors.slice();\r\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\r\n colorStops.reverse();\r\n outerColors.reverse();\r\n }\r\n var tinyExtent = 10;\r\n var minCoord = colorStops[0].coord - tinyExtent;\r\n var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\r\n var coordSpan = maxCoord - minCoord;\r\n if (coordSpan < 1e-3) {\r\n return 'transparent';\r\n }\r\n each(colorStops, function (stop) {\r\n stop.offset = (stop.coord - minCoord) / coordSpan;\r\n });\r\n colorStops.push({\r\n offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\r\n color: outerColors[1] || 'transparent'\r\n });\r\n colorStops.unshift({\r\n offset: stopLen ? colorStops[0].offset : 0.5,\r\n color: outerColors[0] || 'transparent'\r\n });\r\n var gradient = new LinearGradient(0, 0, 0, 0, colorStops, true);\r\n gradient[coordDim] = minCoord;\r\n gradient[coordDim + '2'] = maxCoord;\r\n return gradient;\r\n}\r\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\r\n var showAllSymbol = seriesModel.get('showAllSymbol');\r\n var isAuto = showAllSymbol === 'auto';\r\n if (showAllSymbol && !isAuto) {\r\n return;\r\n }\r\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\r\n if (!categoryAxis) {\r\n return;\r\n }\r\n if (isAuto\r\n && canShowAllSymbolForCategory(categoryAxis, data)) {\r\n return;\r\n }\r\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\r\n var labelMap = {};\r\n each(categoryAxis.getViewLabels(), function (labelItem) {\r\n labelMap[labelItem.tickValue] = 1;\r\n });\r\n return function (dataIndex) {\r\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\r\n };\r\n}\r\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\r\n var axisExtent = categoryAxis.getExtent();\r\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\r\n isNaN(availSize) && (availSize = 0);\r\n var dataLen = data.count();\r\n var step = Math.max(1, Math.round(dataLen / 5));\r\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\r\n if (Symbol.getSymbolSize(data, dataIndex)[categoryAxis.isHorizontal() ? 1 : 0]\r\n * 1.5 > availSize) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isPointNull$1(x, y) {\r\n return isNaN(x) || isNaN(y);\r\n}\r\nfunction getLastIndexNotNull(points) {\r\n var len = points.length / 2;\r\n for (; len > 0; len--) {\r\n if (!isPointNull$1(points[len * 2 - 2], points[len * 2 - 1])) {\r\n break;\r\n }\r\n }\r\n return len - 1;\r\n}\r\nfunction getPointAtIndex(points, idx) {\r\n return [points[idx * 2], points[idx * 2 + 1]];\r\n}\r\nfunction getIndexRange(points, xOrY, dim) {\r\n var len = points.length / 2;\r\n var dimIdx = dim === 'x' ? 0 : 1;\r\n var a;\r\n var b;\r\n var prevIndex = 0;\r\n var nextIndex = -1;\r\n for (var i = 0; i < len; i++) {\r\n b = points[i * 2 + dimIdx];\r\n if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\r\n continue;\r\n }\r\n if (i === 0) {\r\n a = b;\r\n continue;\r\n }\r\n if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\r\n nextIndex = i;\r\n break;\r\n }\r\n prevIndex = i;\r\n a = b;\r\n }\r\n return {\r\n range: [prevIndex, nextIndex],\r\n t: (xOrY - a) / (b - a)\r\n };\r\n}\r\nfunction createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\r\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n var endLabelModel_1 = seriesModel.getModel('endLabel');\r\n var showEndLabel = endLabelModel_1.get('show');\r\n var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\r\n var data_1 = seriesModel.getData();\r\n var labelAnimationRecord_1 = { lastFrameIndex: 0 };\r\n var during = showEndLabel\r\n ? function (percent, clipRect) {\r\n lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\r\n }\r\n : null;\r\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\r\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\r\n var endLabel = lineView._endLabel;\r\n if (endLabel && hasAnimation) {\r\n if (labelAnimationRecord_1.originalX != null) {\r\n endLabel.attr({\r\n x: labelAnimationRecord_1.originalX,\r\n y: labelAnimationRecord_1.originalY\r\n });\r\n }\r\n }\r\n }, during);\r\n if (!seriesModel.get('clip', true)) {\r\n var rectShape = clipPath.shape;\r\n var expandSize = Math.max(rectShape.width, rectShape.height);\r\n if (isHorizontal) {\r\n rectShape.y -= expandSize;\r\n rectShape.height += expandSize * 2;\r\n }\r\n else {\r\n rectShape.x -= expandSize;\r\n rectShape.width += expandSize * 2;\r\n }\r\n }\r\n if (during) {\r\n during(1, clipPath);\r\n }\r\n return clipPath;\r\n }\r\n else {\r\n if (__DEV__) {\r\n if (seriesModel.get(['endLabel', 'show'])) {\r\n console.warn('endLabel is not supported for lines in polar systems.');\r\n }\r\n }\r\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n }\r\n}\r\nfunction getEndLabelStateSpecified(endLabelModel, coordSys) {\r\n var baseAxis = coordSys.getBaseAxis();\r\n var isHorizontal = baseAxis.isHorizontal();\r\n var isBaseInversed = baseAxis.inverse;\r\n var align = isHorizontal\r\n ? isBaseInversed ? 'right' : 'left'\r\n : 'center';\r\n var verticalAlign = isHorizontal\r\n ? 'middle'\r\n : (isBaseInversed ? 'top' : 'bottom');\r\n return {\r\n normal: {\r\n align: endLabelModel.get('align') || align,\r\n verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign,\r\n padding: endLabelModel.get('distance') || 0\r\n }\r\n };\r\n}\r\nvar LineView = (function (_super) {\r\n __extends(LineView, _super);\r\n function LineView() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n LineView.prototype.init = function () {\r\n var lineGroup = new Group();\r\n var symbolDraw = new SymbolDraw();\r\n this.group.add(symbolDraw.group);\r\n this._symbolDraw = symbolDraw;\r\n this._lineGroup = lineGroup;\r\n };\r\n LineView.prototype.render = function (seriesModel, ecModel, api) {\r\n var _this = this;\r\n var coordSys = seriesModel.coordinateSystem;\r\n var group = this.group;\r\n var data = seriesModel.getData();\r\n var lineStyleModel = seriesModel.getModel('lineStyle');\r\n var areaStyleModel = seriesModel.getModel('areaStyle');\r\n var points = data.getLayout('points') || [];\r\n var isCoordSysPolar = coordSys.type === 'polar';\r\n var prevCoordSys = this._coordSys;\r\n var symbolDraw = this._symbolDraw;\r\n var polyline = this._polyline;\r\n var polygon = this._polygon;\r\n var lineGroup = this._lineGroup;\r\n var hasAnimation = seriesModel.get('animation');\r\n var isAreaChart = !areaStyleModel.isEmpty();\r\n var valueOrigin = areaStyleModel.get('origin');\r\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\r\n var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\r\n var showSymbol = seriesModel.get('showSymbol');\r\n var isIgnoreFunc = showSymbol && !isCoordSysPolar\r\n && getIsIgnoreFunc(seriesModel, data, coordSys);\r\n var oldData = this._data;\r\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n if (el.__temp) {\r\n group.remove(el);\r\n oldData.setItemGraphicEl(idx, null);\r\n }\r\n });\r\n if (!showSymbol) {\r\n symbolDraw.remove();\r\n }\r\n group.add(lineGroup);\r\n var step = !isCoordSysPolar ? seriesModel.get('step') : false;\r\n var clipShapeForSymbol;\r\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\r\n clipShapeForSymbol = coordSys.getArea();\r\n if (clipShapeForSymbol.width != null) {\r\n clipShapeForSymbol.x -= 0.1;\r\n clipShapeForSymbol.y -= 0.1;\r\n clipShapeForSymbol.width += 0.2;\r\n clipShapeForSymbol.height += 0.2;\r\n }\r\n else if (clipShapeForSymbol.r0) {\r\n clipShapeForSymbol.r0 -= 0.5;\r\n clipShapeForSymbol.r += 0.5;\r\n }\r\n }\r\n this._clipShapeForSymbol = clipShapeForSymbol;\r\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\r\n showSymbol && symbolDraw.updateData(data, {\r\n isIgnore: isIgnoreFunc,\r\n clipShape: clipShapeForSymbol,\r\n disableAnimation: true,\r\n getSymbolPoint: function (idx) {\r\n return [points[idx * 2], points[idx * 2 + 1]];\r\n }\r\n });\r\n hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\r\n if (step) {\r\n points = turnPointsIntoStep(points, coordSys, step);\r\n if (stackedOnPoints) {\r\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n }\r\n }\r\n polyline = this._newPolyline(points);\r\n if (isAreaChart) {\r\n polygon = this._newPolygon(points, stackedOnPoints);\r\n }\r\n if (!isCoordSysPolar) {\r\n this._initOrUpdateEndLabel(seriesModel, coordSys);\r\n }\r\n lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\r\n }\r\n else {\r\n if (isAreaChart && !polygon) {\r\n polygon = this._newPolygon(points, stackedOnPoints);\r\n }\r\n else if (polygon && !isAreaChart) {\r\n lineGroup.remove(polygon);\r\n polygon = this._polygon = null;\r\n }\r\n if (!isCoordSysPolar) {\r\n this._initOrUpdateEndLabel(seriesModel, coordSys);\r\n }\r\n lineGroup.setClipPath(createLineClipPath(this, coordSys, false, seriesModel));\r\n showSymbol && symbolDraw.updateData(data, {\r\n isIgnore: isIgnoreFunc,\r\n clipShape: clipShapeForSymbol,\r\n disableAnimation: true,\r\n getSymbolPoint: function (idx) {\r\n return [points[idx * 2], points[idx * 2 + 1]];\r\n }\r\n });\r\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints)\r\n || !isPointsSame(this._points, points)) {\r\n if (hasAnimation) {\r\n this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\r\n }\r\n else {\r\n if (step) {\r\n points = turnPointsIntoStep(points, coordSys, step);\r\n if (stackedOnPoints) {\r\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n }\r\n }\r\n polyline.setShape({\r\n points: points\r\n });\r\n polygon && polygon.setShape({\r\n points: points,\r\n stackedOnPoints: stackedOnPoints\r\n });\r\n }\r\n }\r\n }\r\n var visualColor = getVisualGradient(data, coordSys)\r\n || data.getVisual('style')[data.getVisual('drawType')];\r\n var focus = seriesModel.get(['emphasis', 'focus']);\r\n var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n polyline.useStyle(defaults(lineStyleModel.getLineStyle(), {\r\n fill: 'none',\r\n stroke: visualColor,\r\n lineJoin: 'bevel'\r\n }));\r\n setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\r\n if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\r\n var emphasisLineStyle = polyline.getState('emphasis').style;\r\n emphasisLineStyle.lineWidth = polyline.style.lineWidth + 1;\r\n }\r\n getECData(polyline).seriesIndex = seriesModel.seriesIndex;\r\n enableHoverEmphasis(polyline, focus, blurScope);\r\n var smooth = getSmooth(seriesModel.get('smooth'));\r\n var smoothMonotone = seriesModel.get('smoothMonotone');\r\n var connectNulls = seriesModel.get('connectNulls');\r\n polyline.setShape({\r\n smooth: smooth,\r\n smoothMonotone: smoothMonotone,\r\n connectNulls: connectNulls\r\n });\r\n if (polygon) {\r\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\r\n var stackedOnSmooth = 0;\r\n polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {\r\n fill: visualColor,\r\n opacity: 0.7,\r\n lineJoin: 'bevel',\r\n decal: data.getVisual('style').decal\r\n }));\r\n if (stackedOnSeries) {\r\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\r\n }\r\n polygon.setShape({\r\n smooth: smooth,\r\n stackedOnSmooth: stackedOnSmooth,\r\n smoothMonotone: smoothMonotone,\r\n connectNulls: connectNulls\r\n });\r\n setStatesStylesFromModel(polygon, seriesModel, 'areaStyle');\r\n getECData(polygon).seriesIndex = seriesModel.seriesIndex;\r\n enableHoverEmphasis(polygon, focus, blurScope);\r\n }\r\n var changePolyState = function (toState) {\r\n _this._changePolyState(toState);\r\n };\r\n data.eachItemGraphicEl(function (el) {\r\n el && (el.onHoverStateChange = changePolyState);\r\n });\r\n this._polyline.onHoverStateChange = changePolyState;\r\n this._data = data;\r\n this._coordSys = coordSys;\r\n this._stackedOnPoints = stackedOnPoints;\r\n this._points = points;\r\n this._step = step;\r\n this._valueOrigin = valueOrigin;\r\n };\r\n LineView.prototype.dispose = function () { };\r\n LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n var data = seriesModel.getData();\r\n var dataIndex = queryDataIndex(data, payload);\r\n this._changePolyState('emphasis');\r\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\r\n var points = data.getLayout('points');\r\n var symbol = data.getItemGraphicEl(dataIndex);\r\n if (!symbol) {\r\n var x = points[dataIndex * 2];\r\n var y = points[dataIndex * 2 + 1];\r\n if (isNaN(x) || isNaN(y)) {\r\n return;\r\n }\r\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\r\n return;\r\n }\r\n symbol = new Symbol(data, dataIndex);\r\n symbol.x = x;\r\n symbol.y = y;\r\n symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\r\n symbol.__temp = true;\r\n data.setItemGraphicEl(dataIndex, symbol);\r\n symbol.stopSymbolAnimation(true);\r\n this.group.add(symbol);\r\n }\r\n symbol.highlight();\r\n }\r\n else {\r\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\r\n }\r\n };\r\n LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n var data = seriesModel.getData();\r\n var dataIndex = queryDataIndex(data, payload);\r\n this._changePolyState('normal');\r\n if (dataIndex != null && dataIndex >= 0) {\r\n var symbol = data.getItemGraphicEl(dataIndex);\r\n if (symbol) {\r\n if (symbol.__temp) {\r\n data.setItemGraphicEl(dataIndex, null);\r\n this.group.remove(symbol);\r\n }\r\n else {\r\n symbol.downplay();\r\n }\r\n }\r\n }\r\n else {\r\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\r\n }\r\n };\r\n LineView.prototype._changePolyState = function (toState) {\r\n var polygon = this._polygon;\r\n setStatesFlag(this._polyline, toState);\r\n polygon && setStatesFlag(polygon, toState);\r\n };\r\n LineView.prototype._newPolyline = function (points) {\r\n var polyline = this._polyline;\r\n if (polyline) {\r\n this._lineGroup.remove(polyline);\r\n }\r\n polyline = new ECPolyline({\r\n shape: {\r\n points: points\r\n },\r\n segmentIgnoreThreshold: 2,\r\n z2: 10\r\n });\r\n this._lineGroup.add(polyline);\r\n this._polyline = polyline;\r\n return polyline;\r\n };\r\n LineView.prototype._newPolygon = function (points, stackedOnPoints) {\r\n var polygon = this._polygon;\r\n if (polygon) {\r\n this._lineGroup.remove(polygon);\r\n }\r\n polygon = new ECPolygon({\r\n shape: {\r\n points: points,\r\n stackedOnPoints: stackedOnPoints\r\n },\r\n segmentIgnoreThreshold: 2\r\n });\r\n this._lineGroup.add(polygon);\r\n this._polygon = polygon;\r\n return polygon;\r\n };\r\n LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\r\n var isHorizontalOrRadial;\r\n var isCoordSysPolar;\r\n var baseAxis = coordSys.getBaseAxis();\r\n var isAxisInverse = baseAxis.inverse;\r\n if (coordSys.type === 'cartesian2d') {\r\n isHorizontalOrRadial = baseAxis.isHorizontal();\r\n isCoordSysPolar = false;\r\n }\r\n else if (coordSys.type === 'polar') {\r\n isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n isCoordSysPolar = true;\r\n }\r\n var seriesModel = data.hostModel;\r\n var seriesDuration = seriesModel.get('animationDuration');\r\n if (typeof seriesDuration === 'function') {\r\n seriesDuration = seriesDuration(null);\r\n }\r\n var seriesDalay = seriesModel.get('animationDelay') || 0;\r\n var seriesDalayValue = typeof seriesDalay === 'function'\r\n ? seriesDalay(null)\r\n : seriesDalay;\r\n data.eachItemGraphicEl(function (symbol, idx) {\r\n var el = symbol;\r\n if (el) {\r\n var point = [symbol.x, symbol.y];\r\n var start = void 0;\r\n var end = void 0;\r\n var current = void 0;\r\n if (isCoordSysPolar) {\r\n var polarClip = clipShape;\r\n var coord = coordSys.pointToCoord(point);\r\n if (isHorizontalOrRadial) {\r\n start = polarClip.startAngle;\r\n end = polarClip.endAngle;\r\n current = -coord[1] / 180 * Math.PI;\r\n }\r\n else {\r\n start = polarClip.r0;\r\n end = polarClip.r;\r\n current = coord[0];\r\n }\r\n }\r\n else {\r\n var gridClip = clipShape;\r\n if (isHorizontalOrRadial) {\r\n start = gridClip.x;\r\n end = gridClip.x + gridClip.width;\r\n current = symbol.x;\r\n }\r\n else {\r\n start = gridClip.y + gridClip.height;\r\n end = gridClip.y;\r\n current = symbol.y;\r\n }\r\n }\r\n var ratio = end === start ? 0 : (current - start) / (end - start);\r\n if (isAxisInverse) {\r\n ratio = 1 - ratio;\r\n }\r\n var delay = typeof seriesDalay === 'function' ? seriesDalay(idx)\r\n : (seriesDuration * ratio) + seriesDalayValue;\r\n var symbolPath = el.getSymbolPath();\r\n var text = symbolPath.getTextContent();\r\n el.attr({ scaleX: 0, scaleY: 0 });\r\n el.animateTo({\r\n scaleX: 1,\r\n scaleY: 1\r\n }, {\r\n duration: 200,\r\n delay: delay\r\n });\r\n if (text) {\r\n text.animateFrom({\r\n style: {\r\n opacity: 0\r\n }\r\n }, {\r\n duration: 300,\r\n delay: delay\r\n });\r\n }\r\n symbolPath.disableLabelAnimation = true;\r\n }\r\n });\r\n };\r\n LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys) {\r\n var endLabelModel = seriesModel.getModel('endLabel');\r\n if (endLabelModel.get('show')) {\r\n var data_2 = seriesModel.getData();\r\n var polyline = this._polyline;\r\n var endLabel = this._endLabel;\r\n if (!endLabel) {\r\n endLabel = this._endLabel = new ZRText({\r\n z2: 200\r\n });\r\n endLabel.ignoreClip = true;\r\n polyline.setTextContent(this._endLabel);\r\n polyline.disableLabelAnimation = true;\r\n }\r\n var dataIndex = getLastIndexNotNull(data_2.getLayout('points'));\r\n if (dataIndex >= 0) {\r\n setLabelStyle(endLabel, getLabelStatesModels(seriesModel, 'endLabel'), {\r\n labelFetcher: seriesModel,\r\n labelDataIndex: dataIndex,\r\n defaultText: function (dataIndex, opt, overrideValue) {\r\n return overrideValue ? getDefaultInterpolatedLabel(data_2, overrideValue)\r\n : getDefaultLabel(data_2, dataIndex);\r\n },\r\n enableTextSetter: true\r\n }, getEndLabelStateSpecified(endLabelModel, coordSys));\r\n }\r\n }\r\n else if (this._endLabel) {\r\n this._polyline.removeTextContent();\r\n this._endLabel = null;\r\n }\r\n };\r\n LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\r\n var endLabel = this._endLabel;\r\n var polyline = this._polyline;\r\n if (endLabel) {\r\n if (percent < 1 && animationRecord.originalX == null) {\r\n animationRecord.originalX = endLabel.x;\r\n animationRecord.originalY = endLabel.y;\r\n }\r\n var points = data.getLayout('points');\r\n var seriesModel = data.hostModel;\r\n var connectNulls = seriesModel.get('connectNulls');\r\n var precision = endLabelModel.get('precision');\r\n var baseAxis = coordSys.getBaseAxis();\r\n var isHorizontal = baseAxis.isHorizontal();\r\n var isBaseInversed = baseAxis.inverse;\r\n var clipShape = clipRect.shape;\r\n var xOrY = isBaseInversed\r\n ? isHorizontal ? clipShape.x : (clipShape.y + clipShape.height)\r\n : isHorizontal ? (clipShape.x + clipShape.width) : clipShape.y;\r\n var dim = isHorizontal ? 'x' : 'y';\r\n var dataIndexRange = getIndexRange(points, xOrY, dim);\r\n var indices = dataIndexRange.range;\r\n var diff = indices[1] - indices[0];\r\n var value = void 0;\r\n if (diff >= 1) {\r\n if (diff > 1 && !connectNulls) {\r\n var pt = getPointAtIndex(points, indices[0]);\r\n endLabel.attr({ x: pt[0], y: pt[1] });\r\n valueAnimation && (value = seriesModel.getRawValue(indices[0]));\r\n }\r\n else {\r\n var pt = polyline.getPointOn(xOrY, dim);\r\n pt && endLabel.attr({ x: pt[0], y: pt[1] });\r\n var startValue = seriesModel.getRawValue(indices[0]);\r\n var endValue = seriesModel.getRawValue(indices[1]);\r\n valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\r\n }\r\n animationRecord.lastFrameIndex = indices[0];\r\n }\r\n else {\r\n var idx = (percent === 1 || animationRecord.lastFrameIndex > 0) ? indices[0] : 0;\r\n var pt = getPointAtIndex(points, idx);\r\n valueAnimation && (value = seriesModel.getRawValue(idx));\r\n endLabel.attr({ x: pt[0], y: pt[1] });\r\n }\r\n if (valueAnimation) {\r\n labelInner(endLabel).setLabelText(value);\r\n }\r\n }\r\n };\r\n LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\r\n var polyline = this._polyline;\r\n var polygon = this._polygon;\r\n var seriesModel = data.hostModel;\r\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\r\n var current = diff.current;\r\n var stackedOnCurrent = diff.stackedOnCurrent;\r\n var next = diff.next;\r\n var stackedOnNext = diff.stackedOnNext;\r\n if (step) {\r\n current = turnPointsIntoStep(diff.current, coordSys, step);\r\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\r\n next = turnPointsIntoStep(diff.next, coordSys, step);\r\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\r\n }\r\n if (getBoundingDiff(current, next) > 3000\r\n || (polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000)) {\r\n polyline.setShape({\r\n points: next\r\n });\r\n if (polygon) {\r\n polygon.setShape({\r\n points: next,\r\n stackedOnPoints: stackedOnNext\r\n });\r\n }\r\n return;\r\n }\r\n polyline.shape.__points = diff.current;\r\n polyline.shape.points = current;\r\n var target = {\r\n shape: {\r\n points: next\r\n }\r\n };\r\n if (diff.current !== current) {\r\n target.shape.__points = diff.next;\r\n }\r\n polyline.stopAnimation();\r\n updateProps(polyline, target, seriesModel);\r\n if (polygon) {\r\n polygon.setShape({\r\n points: current,\r\n stackedOnPoints: stackedOnCurrent\r\n });\r\n polygon.stopAnimation();\r\n updateProps(polygon, {\r\n shape: {\r\n stackedOnPoints: stackedOnNext\r\n }\r\n }, seriesModel);\r\n if (polyline.shape.points !== polygon.shape.points) {\r\n polygon.shape.points = polyline.shape.points;\r\n }\r\n }\r\n var updatedDataInfo = [];\r\n var diffStatus = diff.status;\r\n for (var i = 0; i < diffStatus.length; i++) {\r\n var cmd = diffStatus[i].cmd;\r\n if (cmd === '=') {\r\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\r\n if (el) {\r\n updatedDataInfo.push({\r\n el: el,\r\n ptIdx: i\r\n });\r\n }\r\n }\r\n }\r\n if (polyline.animators && polyline.animators.length) {\r\n polyline.animators[0].during(function () {\r\n polygon && polygon.dirtyShape();\r\n var points = polyline.shape.__points;\r\n for (var i = 0; i < updatedDataInfo.length; i++) {\r\n var el = updatedDataInfo[i].el;\r\n var offset = updatedDataInfo[i].ptIdx * 2;\r\n el.x = points[offset];\r\n el.y = points[offset + 1];\r\n el.markRedraw();\r\n }\r\n });\r\n }\r\n };\r\n LineView.prototype.remove = function (ecModel) {\r\n var group = this.group;\r\n var oldData = this._data;\r\n this._lineGroup.removeAll();\r\n this._symbolDraw.remove(true);\r\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n if (el.__temp) {\r\n group.remove(el);\r\n oldData.setItemGraphicEl(idx, null);\r\n }\r\n });\r\n this._polyline =\r\n this._polygon =\r\n this._coordSys =\r\n this._points =\r\n this._stackedOnPoints =\r\n this._endLabel =\r\n this._data = null;\r\n };\r\n LineView.type = 'line';\r\n return LineView;\r\n}(ChartView));\r\nChartView.registerClass(LineView);\n\nfunction pointsLayout(seriesType, forceStoreInTypedArray) {\r\n return {\r\n seriesType: seriesType,\r\n plan: createRenderPlanner(),\r\n reset: function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var coordSys = seriesModel.coordinateSystem;\r\n var pipelineContext = seriesModel.pipelineContext;\r\n var useTypedArray = forceStoreInTypedArray || pipelineContext.large;\r\n if (!coordSys) {\r\n return;\r\n }\r\n var dims = map(coordSys.dimensions, function (dim) {\r\n return data.mapDimension(dim);\r\n }).slice(0, 2);\r\n var dimLen = dims.length;\r\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n if (isDimensionStacked(data, dims[0])) {\r\n dims[0] = stackResultDim;\r\n }\r\n if (isDimensionStacked(data, dims[1])) {\r\n dims[1] = stackResultDim;\r\n }\r\n var dimInfo0 = data.getDimensionInfo(dims[0]);\r\n var dimInfo1 = data.getDimensionInfo(dims[1]);\r\n var dimIdx0 = dimInfo0 && dimInfo0.index;\r\n var dimIdx1 = dimInfo1 && dimInfo1.index;\r\n return dimLen && {\r\n progress: function (params, data) {\r\n var segCount = params.end - params.start;\r\n var points = useTypedArray && createFloat32Array(segCount * dimLen);\r\n var tmpIn = [];\r\n var tmpOut = [];\r\n for (var i = params.start, offset = 0; i < params.end; i++) {\r\n var point = void 0;\r\n if (dimLen === 1) {\r\n var x = data.getByDimIdx(dimIdx0, i);\r\n point = coordSys.dataToPoint(x, null, tmpOut);\r\n }\r\n else {\r\n tmpIn[0] = data.getByDimIdx(dimIdx0, i);\r\n tmpIn[1] = data.getByDimIdx(dimIdx1, i);\r\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n }\r\n if (useTypedArray) {\r\n points[offset++] = point[0];\r\n points[offset++] = point[1];\r\n }\r\n else {\r\n data.setItemLayout(i, point.slice());\r\n }\r\n }\r\n useTypedArray && data.setLayout('points', points);\r\n }\r\n };\r\n }\r\n };\r\n}\n\nvar samplers = {\r\n average: function (frame) {\r\n var sum = 0;\r\n var count = 0;\r\n for (var i = 0; i < frame.length; i++) {\r\n if (!isNaN(frame[i])) {\r\n sum += frame[i];\r\n count++;\r\n }\r\n }\r\n return count === 0 ? NaN : sum / count;\r\n },\r\n sum: function (frame) {\r\n var sum = 0;\r\n for (var i = 0; i < frame.length; i++) {\r\n sum += frame[i] || 0;\r\n }\r\n return sum;\r\n },\r\n max: function (frame) {\r\n var max = -Infinity;\r\n for (var i = 0; i < frame.length; i++) {\r\n frame[i] > max && (max = frame[i]);\r\n }\r\n return isFinite(max) ? max : NaN;\r\n },\r\n min: function (frame) {\r\n var min = Infinity;\r\n for (var i = 0; i < frame.length; i++) {\r\n frame[i] < min && (min = frame[i]);\r\n }\r\n return isFinite(min) ? min : NaN;\r\n },\r\n nearest: function (frame) {\r\n return frame[0];\r\n }\r\n};\r\nvar indexSampler = function (frame) {\r\n return Math.round(frame.length / 2);\r\n};\r\nfunction dataSample(seriesType) {\r\n return {\r\n seriesType: seriesType,\r\n reset: function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var sampling = seriesModel.get('sampling');\r\n var coordSys = seriesModel.coordinateSystem;\r\n var count = data.count();\r\n if (count > 10 && coordSys.type === 'cartesian2d' && sampling) {\r\n var baseAxis = coordSys.getBaseAxis();\r\n var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n var extent = baseAxis.getExtent();\r\n var dpr = api.getDevicePixelRatio();\r\n var size = Math.abs(extent[1] - extent[0]) * (dpr || 1);\r\n var rate = Math.round(count / size);\r\n if (rate > 1) {\r\n if (sampling === 'lttb') {\r\n seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate));\r\n }\r\n var sampler = void 0;\r\n if (typeof sampling === 'string') {\r\n sampler = samplers[sampling];\r\n }\r\n else if (typeof sampling === 'function') {\r\n sampler = sampling;\r\n }\r\n if (sampler) {\r\n seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\r\n }\r\n }\r\n }\r\n }\r\n };\r\n}\n\nvar defaultOption = {\r\n show: true,\r\n zlevel: 0,\r\n z: 0,\r\n inverse: false,\r\n name: '',\r\n nameLocation: 'end',\r\n nameRotate: null,\r\n nameTruncate: {\r\n maxWidth: null,\r\n ellipsis: '...',\r\n placeholder: '.'\r\n },\r\n nameTextStyle: {},\r\n nameGap: 15,\r\n silent: false,\r\n triggerEvent: false,\r\n tooltip: {\r\n show: false\r\n },\r\n axisPointer: {},\r\n axisLine: {\r\n show: true,\r\n onZero: true,\r\n onZeroAxisIndex: null,\r\n lineStyle: {\r\n color: '#6E7079',\r\n width: 1,\r\n type: 'solid'\r\n },\r\n symbol: ['none', 'none'],\r\n symbolSize: [10, 15]\r\n },\r\n axisTick: {\r\n show: true,\r\n inside: false,\r\n length: 5,\r\n lineStyle: {\r\n width: 1\r\n }\r\n },\r\n axisLabel: {\r\n show: true,\r\n inside: false,\r\n rotate: 0,\r\n showMinLabel: null,\r\n showMaxLabel: null,\r\n margin: 8,\r\n fontSize: 12\r\n },\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: ['#E0E6F1'],\r\n width: 1,\r\n type: 'solid'\r\n }\r\n },\r\n splitArea: {\r\n show: false,\r\n areaStyle: {\r\n color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)']\r\n }\r\n }\r\n};\r\nvar categoryAxis = merge({\r\n boundaryGap: true,\r\n deduplication: null,\r\n splitLine: {\r\n show: false\r\n },\r\n axisTick: {\r\n alignWithLabel: false,\r\n interval: 'auto'\r\n },\r\n axisLabel: {\r\n interval: 'auto'\r\n }\r\n}, defaultOption);\r\nvar valueAxis = merge({\r\n boundaryGap: [0, 0],\r\n axisLine: {\r\n show: 'auto'\r\n },\r\n axisTick: {\r\n show: 'auto'\r\n },\r\n splitNumber: 5,\r\n minorTick: {\r\n show: false,\r\n splitNumber: 5,\r\n length: 3,\r\n lineStyle: {}\r\n },\r\n minorSplitLine: {\r\n show: false,\r\n lineStyle: {\r\n color: '#F4F7FD',\r\n width: 1\r\n }\r\n }\r\n}, defaultOption);\r\nvar timeAxis = merge({\r\n scale: true,\r\n splitNumber: 6,\r\n axisLabel: {\r\n showMinLabel: false,\r\n showMaxLabel: false,\r\n rich: {\r\n primary: {\r\n fontWeight: 'bold'\r\n }\r\n }\r\n },\r\n splitLine: {\r\n show: false\r\n }\r\n}, valueAxis);\r\nvar logAxis = defaults({\r\n scale: true,\r\n logBase: 10\r\n}, valueAxis);\r\nvar axisDefault = {\r\n category: categoryAxis,\r\n value: valueAxis,\r\n time: timeAxis,\r\n log: logAxis\r\n};\n\nvar AXIS_TYPES = { value: 1, category: 1, time: 1, log: 1 };\n\nfunction axisModelCreator(axisName, BaseAxisModelClass, extraDefaultOption) {\r\n each(AXIS_TYPES, function (v, axisType) {\r\n var defaultOption = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true);\r\n var AxisModel = (function (_super) {\r\n __extends(AxisModel, _super);\r\n function AxisModel() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var _this = _super.apply(this, args) || this;\r\n _this.type = axisName + 'Axis.' + axisType;\r\n return _this;\r\n }\r\n AxisModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n var layoutMode = fetchLayoutMode(this);\r\n var inputPositionParams = layoutMode\r\n ? getLayoutParams(option) : {};\r\n var themeModel = ecModel.getTheme();\r\n merge(option, themeModel.get(axisType + 'Axis'));\r\n merge(option, this.getDefaultOption());\r\n option.type = getAxisType(option);\r\n if (layoutMode) {\r\n mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n }\r\n };\r\n AxisModel.prototype.optionUpdated = function () {\r\n var thisOption = this.option;\r\n if (thisOption.type === 'category') {\r\n this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\r\n }\r\n };\r\n AxisModel.prototype.getCategories = function (rawData) {\r\n var option = this.option;\r\n if (option.type === 'category') {\r\n if (rawData) {\r\n return option.data;\r\n }\r\n return this.__ordinalMeta.categories;\r\n }\r\n };\r\n AxisModel.prototype.getOrdinalMeta = function () {\r\n return this.__ordinalMeta;\r\n };\r\n AxisModel.type = axisName + 'Axis.' + axisType;\r\n AxisModel.defaultOption = defaultOption;\r\n return AxisModel;\r\n }(BaseAxisModelClass));\r\n ComponentModel.registerClass(AxisModel);\r\n });\r\n ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', getAxisType);\r\n}\r\nfunction getAxisType(option) {\r\n return option.type || (option.data ? 'category' : 'value');\r\n}\n\nvar CartesianAxisModel = (function (_super) {\r\n __extends(CartesianAxisModel, _super);\r\n function CartesianAxisModel() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CartesianAxisModel.prototype.getCoordSysModel = function () {\r\n return this.getReferringComponents('grid', SINGLE_REFERRING).models[0];\r\n };\r\n CartesianAxisModel.type = 'cartesian2dAxis';\r\n return CartesianAxisModel;\r\n}(ComponentModel));\r\nmixin(CartesianAxisModel, AxisModelCommonMixin);\r\nvar extraOption = {\r\n offset: 0,\r\n categorySortInfo: []\r\n};\r\naxisModelCreator('x', CartesianAxisModel, extraOption);\r\naxisModelCreator('y', CartesianAxisModel, extraOption);\n\nvar PI$6 = Math.PI;\r\nvar AxisBuilder = (function () {\r\n function AxisBuilder(axisModel, opt) {\r\n this.group = new Group();\r\n this.opt = opt;\r\n this.axisModel = axisModel;\r\n defaults(opt, {\r\n labelOffset: 0,\r\n nameDirection: 1,\r\n tickDirection: 1,\r\n labelDirection: 1,\r\n silent: true,\r\n handleAutoShown: function () { return true; }\r\n });\r\n var transformGroup = new Group({\r\n x: opt.position[0],\r\n y: opt.position[1],\r\n rotation: opt.rotation\r\n });\r\n transformGroup.updateTransform();\r\n this._transformGroup = transformGroup;\r\n }\r\n AxisBuilder.prototype.hasBuilder = function (name) {\r\n return !!builders[name];\r\n };\r\n AxisBuilder.prototype.add = function (name) {\r\n builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\r\n };\r\n AxisBuilder.prototype.getGroup = function () {\r\n return this.group;\r\n };\r\n AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\r\n var rotationDiff = remRadian(textRotation - axisRotation);\r\n var textAlign;\r\n var textVerticalAlign;\r\n if (isRadianAroundZero(rotationDiff)) {\r\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\r\n textAlign = 'center';\r\n }\r\n else if (isRadianAroundZero(rotationDiff - PI$6)) {\r\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\r\n textAlign = 'center';\r\n }\r\n else {\r\n textVerticalAlign = 'middle';\r\n if (rotationDiff > 0 && rotationDiff < PI$6) {\r\n textAlign = direction > 0 ? 'right' : 'left';\r\n }\r\n else {\r\n textAlign = direction > 0 ? 'left' : 'right';\r\n }\r\n }\r\n return {\r\n rotation: rotationDiff,\r\n textAlign: textAlign,\r\n textVerticalAlign: textVerticalAlign\r\n };\r\n };\r\n AxisBuilder.makeAxisEventDataBase = function (axisModel) {\r\n var eventData = {\r\n componentType: axisModel.mainType,\r\n componentIndex: axisModel.componentIndex\r\n };\r\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\r\n return eventData;\r\n };\r\n AxisBuilder.isLabelSilent = function (axisModel) {\r\n var tooltipOpt = axisModel.get('tooltip');\r\n return axisModel.get('silent')\r\n || !(axisModel.get('triggerEvent') || (tooltipOpt && tooltipOpt.show));\r\n };\r\n return AxisBuilder;\r\n}());\r\nvar builders = {\r\n axisLine: function (opt, axisModel, group, transformGroup) {\r\n var shown = axisModel.get(['axisLine', 'show']);\r\n if (shown === 'auto' && opt.handleAutoShown) {\r\n shown = opt.handleAutoShown('axisLine');\r\n }\r\n if (!shown) {\r\n return;\r\n }\r\n var extent = axisModel.axis.getExtent();\r\n var matrix = transformGroup.transform;\r\n var pt1 = [extent[0], 0];\r\n var pt2 = [extent[1], 0];\r\n if (matrix) {\r\n applyTransform(pt1, pt1, matrix);\r\n applyTransform(pt2, pt2, matrix);\r\n }\r\n var lineStyle = extend({\r\n lineCap: 'round'\r\n }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\r\n var line = new Line({\r\n subPixelOptimize: true,\r\n shape: {\r\n x1: pt1[0],\r\n y1: pt1[1],\r\n x2: pt2[0],\r\n y2: pt2[1]\r\n },\r\n style: lineStyle,\r\n strokeContainThreshold: opt.strokeContainThreshold || 5,\r\n silent: true,\r\n z2: 1\r\n });\r\n line.anid = 'line';\r\n group.add(line);\r\n var arrows = axisModel.get(['axisLine', 'symbol']);\r\n var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\r\n var arrowOffset = axisModel.get(['axisLine', 'symbolOffset']) || 0;\r\n if (typeof arrowOffset === 'number') {\r\n arrowOffset = [arrowOffset, arrowOffset];\r\n }\r\n if (arrows != null) {\r\n if (typeof arrows === 'string') {\r\n arrows = [arrows, arrows];\r\n }\r\n if (typeof arrowSize === 'string'\r\n || typeof arrowSize === 'number') {\r\n arrowSize = [arrowSize, arrowSize];\r\n }\r\n var symbolWidth_1 = arrowSize[0];\r\n var symbolHeight_1 = arrowSize[1];\r\n each([{\r\n rotate: opt.rotation + Math.PI / 2,\r\n offset: arrowOffset[0],\r\n r: 0\r\n }, {\r\n rotate: opt.rotation - Math.PI / 2,\r\n offset: arrowOffset[1],\r\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0])\r\n + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\r\n }], function (point, index) {\r\n if (arrows[index] !== 'none' && arrows[index] != null) {\r\n var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true);\r\n var r = point.r + point.offset;\r\n symbol.attr({\r\n rotation: point.rotate,\r\n x: pt1[0] + r * Math.cos(opt.rotation),\r\n y: pt1[1] - r * Math.sin(opt.rotation),\r\n silent: true,\r\n z2: 11\r\n });\r\n group.add(symbol);\r\n }\r\n });\r\n }\r\n },\r\n axisTickLabel: function (opt, axisModel, group, transformGroup) {\r\n var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\r\n var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\r\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\r\n buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection);\r\n },\r\n axisName: function (opt, axisModel, group, transformGroup) {\r\n var name = retrieve(opt.axisName, axisModel.get('name'));\r\n if (!name) {\r\n return;\r\n }\r\n var nameLocation = axisModel.get('nameLocation');\r\n var nameDirection = opt.nameDirection;\r\n var textStyleModel = axisModel.getModel('nameTextStyle');\r\n var gap = axisModel.get('nameGap') || 0;\r\n var extent = axisModel.axis.getExtent();\r\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\r\n var pos = [\r\n nameLocation === 'start'\r\n ? extent[0] - gapSignal * gap\r\n : nameLocation === 'end'\r\n ? extent[1] + gapSignal * gap\r\n : (extent[0] + extent[1]) / 2,\r\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0\r\n ];\r\n var labelLayout;\r\n var nameRotation = axisModel.get('nameRotate');\r\n if (nameRotation != null) {\r\n nameRotation = nameRotation * PI$6 / 180;\r\n }\r\n var axisNameAvailableWidth;\r\n if (isNameLocationCenter(nameLocation)) {\r\n labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, nameDirection);\r\n }\r\n else {\r\n labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\r\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\r\n if (axisNameAvailableWidth != null) {\r\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\r\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\r\n }\r\n }\r\n var textFont = textStyleModel.getFont();\r\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\r\n var ellipsis = truncateOpt.ellipsis;\r\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\r\n var tooltipOpt = axisModel.get('tooltip', true);\r\n var mainType = axisModel.mainType;\r\n var formatterParams = {\r\n componentType: mainType,\r\n name: name,\r\n $vars: ['name']\r\n };\r\n formatterParams[mainType + 'Index'] = axisModel.componentIndex;\r\n var textEl = new ZRText({\r\n x: pos[0],\r\n y: pos[1],\r\n rotation: labelLayout.rotation,\r\n silent: AxisBuilder.isLabelSilent(axisModel),\r\n style: createTextStyle(textStyleModel, {\r\n text: name,\r\n font: textFont,\r\n overflow: 'truncate',\r\n width: maxWidth,\r\n ellipsis: ellipsis,\r\n fill: textStyleModel.getTextColor()\r\n || axisModel.get(['axisLine', 'lineStyle', 'color']),\r\n align: textStyleModel.get('align')\r\n || labelLayout.textAlign,\r\n verticalAlign: textStyleModel.get('verticalAlign')\r\n || labelLayout.textVerticalAlign\r\n }),\r\n z2: 1\r\n });\r\n textEl.tooltip = (tooltipOpt && tooltipOpt.show)\r\n ? extend({\r\n content: name,\r\n formatter: function () {\r\n return name;\r\n },\r\n formatterParams: formatterParams\r\n }, tooltipOpt)\r\n : null;\r\n textEl.__fullText = name;\r\n textEl.anid = 'name';\r\n if (axisModel.get('triggerEvent')) {\r\n var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n eventData.targetType = 'axisName';\r\n eventData.name = name;\r\n getECData(textEl).eventData = eventData;\r\n }\r\n transformGroup.add(textEl);\r\n textEl.updateTransform();\r\n group.add(textEl);\r\n textEl.decomposeTransform();\r\n }\r\n};\r\nfunction endTextLayout(rotation, textPosition, textRotate, extent) {\r\n var rotationDiff = remRadian(textRotate - rotation);\r\n var textAlign;\r\n var textVerticalAlign;\r\n var inverse = extent[0] > extent[1];\r\n var onLeft = (textPosition === 'start' && !inverse)\r\n || (textPosition !== 'start' && inverse);\r\n if (isRadianAroundZero(rotationDiff - PI$6 / 2)) {\r\n textVerticalAlign = onLeft ? 'bottom' : 'top';\r\n textAlign = 'center';\r\n }\r\n else if (isRadianAroundZero(rotationDiff - PI$6 * 1.5)) {\r\n textVerticalAlign = onLeft ? 'top' : 'bottom';\r\n textAlign = 'center';\r\n }\r\n else {\r\n textVerticalAlign = 'middle';\r\n if (rotationDiff < PI$6 * 1.5 && rotationDiff > PI$6 / 2) {\r\n textAlign = onLeft ? 'left' : 'right';\r\n }\r\n else {\r\n textAlign = onLeft ? 'right' : 'left';\r\n }\r\n }\r\n return {\r\n rotation: rotationDiff,\r\n textAlign: textAlign,\r\n textVerticalAlign: textVerticalAlign\r\n };\r\n}\r\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\r\n if (shouldShowAllLabels(axisModel.axis)) {\r\n return;\r\n }\r\n var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\r\n var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']);\r\n labelEls = labelEls || [];\r\n tickEls = tickEls || [];\r\n var firstLabel = labelEls[0];\r\n var nextLabel = labelEls[1];\r\n var lastLabel = labelEls[labelEls.length - 1];\r\n var prevLabel = labelEls[labelEls.length - 2];\r\n var firstTick = tickEls[0];\r\n var nextTick = tickEls[1];\r\n var lastTick = tickEls[tickEls.length - 1];\r\n var prevTick = tickEls[tickEls.length - 2];\r\n if (showMinLabel === false) {\r\n ignoreEl(firstLabel);\r\n ignoreEl(firstTick);\r\n }\r\n else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\r\n if (showMinLabel) {\r\n ignoreEl(nextLabel);\r\n ignoreEl(nextTick);\r\n }\r\n else {\r\n ignoreEl(firstLabel);\r\n ignoreEl(firstTick);\r\n }\r\n }\r\n if (showMaxLabel === false) {\r\n ignoreEl(lastLabel);\r\n ignoreEl(lastTick);\r\n }\r\n else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\r\n if (showMaxLabel) {\r\n ignoreEl(prevLabel);\r\n ignoreEl(prevTick);\r\n }\r\n else {\r\n ignoreEl(lastLabel);\r\n ignoreEl(lastTick);\r\n }\r\n }\r\n}\r\nfunction ignoreEl(el) {\r\n el && (el.ignore = true);\r\n}\r\nfunction isTwoLabelOverlapped(current, next) {\r\n var firstRect = current && current.getBoundingRect().clone();\r\n var nextRect = next && next.getBoundingRect().clone();\r\n if (!firstRect || !nextRect) {\r\n return;\r\n }\r\n var mRotationBack = identity([]);\r\n rotate(mRotationBack, mRotationBack, -current.rotation);\r\n firstRect.applyTransform(mul$1([], mRotationBack, current.getLocalTransform()));\r\n nextRect.applyTransform(mul$1([], mRotationBack, next.getLocalTransform()));\r\n return firstRect.intersect(nextRect);\r\n}\r\nfunction isNameLocationCenter(nameLocation) {\r\n return nameLocation === 'middle' || nameLocation === 'center';\r\n}\r\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\r\n var tickEls = [];\r\n var pt1 = [];\r\n var pt2 = [];\r\n for (var i = 0; i < ticksCoords.length; i++) {\r\n var tickCoord = ticksCoords[i].coord;\r\n pt1[0] = tickCoord;\r\n pt1[1] = 0;\r\n pt2[0] = tickCoord;\r\n pt2[1] = tickEndCoord;\r\n if (tickTransform) {\r\n applyTransform(pt1, pt1, tickTransform);\r\n applyTransform(pt2, pt2, tickTransform);\r\n }\r\n var tickEl = new Line({\r\n subPixelOptimize: true,\r\n shape: {\r\n x1: pt1[0],\r\n y1: pt1[1],\r\n x2: pt2[0],\r\n y2: pt2[1]\r\n },\r\n style: tickLineStyle,\r\n z2: 2,\r\n autoBatch: true,\r\n silent: true\r\n });\r\n tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\r\n tickEls.push(tickEl);\r\n }\r\n return tickEls;\r\n}\r\nfunction buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\r\n var axis = axisModel.axis;\r\n var tickModel = axisModel.getModel('axisTick');\r\n var shown = tickModel.get('show');\r\n if (shown === 'auto' && opt.handleAutoShown) {\r\n shown = opt.handleAutoShown('axisTick');\r\n }\r\n if (!shown || axis.scale.isBlank()) {\r\n return;\r\n }\r\n var lineStyleModel = tickModel.getModel('lineStyle');\r\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\r\n var ticksCoords = axis.getTicksCoords();\r\n var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\r\n stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n }), 'ticks');\r\n for (var i = 0; i < ticksEls.length; i++) {\r\n group.add(ticksEls[i]);\r\n }\r\n return ticksEls;\r\n}\r\nfunction buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\r\n var axis = axisModel.axis;\r\n var minorTickModel = axisModel.getModel('minorTick');\r\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\r\n return;\r\n }\r\n var minorTicksCoords = axis.getMinorTicksCoords();\r\n if (!minorTicksCoords.length) {\r\n return;\r\n }\r\n var lineStyleModel = minorTickModel.getModel('lineStyle');\r\n var tickEndCoord = tickDirection * minorTickModel.get('length');\r\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\r\n stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n }));\r\n for (var i = 0; i < minorTicksCoords.length; i++) {\r\n var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\r\n for (var k = 0; k < minorTicksEls.length; k++) {\r\n group.add(minorTicksEls[k]);\r\n }\r\n }\r\n}\r\nfunction buildAxisLabel(group, transformGroup, axisModel, opt) {\r\n var axis = axisModel.axis;\r\n var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\r\n if (!show || axis.scale.isBlank()) {\r\n return;\r\n }\r\n var labelModel = axisModel.getModel('axisLabel');\r\n var labelMargin = labelModel.get('margin');\r\n var labels = axis.getViewLabels();\r\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI$6 / 180;\r\n var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\r\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\r\n var labelEls = [];\r\n var silent = AxisBuilder.isLabelSilent(axisModel);\r\n var triggerEvent = axisModel.get('triggerEvent');\r\n each(labels, function (labelItem, index) {\r\n var tickValue = axis.scale.type === 'ordinal'\r\n ? axis.scale.getRawIndex(labelItem.tickValue)\r\n : labelItem.tickValue;\r\n var formattedLabel = labelItem.formattedLabel;\r\n var rawLabel = labelItem.rawLabel;\r\n var itemLabelModel = labelModel;\r\n if (rawCategoryData && rawCategoryData[tickValue]) {\r\n var rawCategoryItem = rawCategoryData[tickValue];\r\n if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\r\n itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\r\n }\r\n }\r\n var textColor = itemLabelModel.getTextColor()\r\n || axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n var tickCoord = axis.dataToCoord(tickValue);\r\n var textEl = new ZRText({\r\n x: tickCoord,\r\n y: opt.labelOffset + opt.labelDirection * labelMargin,\r\n rotation: labelLayout.rotation,\r\n silent: silent,\r\n z2: 10,\r\n style: createTextStyle(itemLabelModel, {\r\n text: formattedLabel,\r\n align: itemLabelModel.getShallow('align', true)\r\n || labelLayout.textAlign,\r\n verticalAlign: itemLabelModel.getShallow('verticalAlign', true)\r\n || itemLabelModel.getShallow('baseline', true)\r\n || labelLayout.textVerticalAlign,\r\n fill: typeof textColor === 'function'\r\n ? textColor(axis.type === 'category'\r\n ? rawLabel\r\n : axis.type === 'value'\r\n ? tickValue + ''\r\n : tickValue, index)\r\n : textColor\r\n })\r\n });\r\n textEl.anid = 'label_' + tickValue;\r\n if (triggerEvent) {\r\n var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n eventData.targetType = 'axisLabel';\r\n eventData.value = rawLabel;\r\n getECData(textEl).eventData = eventData;\r\n }\r\n transformGroup.add(textEl);\r\n textEl.updateTransform();\r\n labelEls.push(textEl);\r\n group.add(textEl);\r\n textEl.decomposeTransform();\r\n });\r\n return labelEls;\r\n}\n\nfunction collect(ecModel, api) {\r\n var result = {\r\n axesInfo: {},\r\n seriesInvolved: false,\r\n coordSysAxesInfo: {},\r\n coordSysMap: {}\r\n };\r\n collectAxesInfo(result, ecModel, api);\r\n result.seriesInvolved && collectSeriesInfo(result, ecModel);\r\n return result;\r\n}\r\nfunction collectAxesInfo(result, ecModel, api) {\r\n var globalTooltipModel = ecModel.getComponent('tooltip');\r\n var globalAxisPointerModel = ecModel.getComponent('axisPointer');\r\n var linksOption = globalAxisPointerModel.get('link', true) || [];\r\n var linkGroups = [];\r\n each(api.getCoordinateSystems(), function (coordSys) {\r\n if (!coordSys.axisPointerEnabled) {\r\n return;\r\n }\r\n var coordSysKey = makeKey(coordSys.model);\r\n var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\r\n result.coordSysMap[coordSysKey] = coordSys;\r\n var coordSysModel = coordSys.model;\r\n var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\r\n each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null));\r\n if (coordSys.getTooltipAxes\r\n && globalTooltipModel\r\n && baseTooltipModel.get('show')) {\r\n var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\r\n var cross = baseTooltipModel.get(['axisPointer', 'type']) === 'cross';\r\n var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(['axisPointer', 'axis']));\r\n if (triggerAxis || cross) {\r\n each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\r\n }\r\n if (cross) {\r\n each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\r\n }\r\n }\r\n function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\r\n var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\r\n var axisPointerShow = axisPointerModel.get('show');\r\n if (!axisPointerShow || (axisPointerShow === 'auto'\r\n && !fromTooltip\r\n && !isHandleTrigger(axisPointerModel))) {\r\n return;\r\n }\r\n if (triggerTooltip == null) {\r\n triggerTooltip = axisPointerModel.get('triggerTooltip');\r\n }\r\n axisPointerModel = fromTooltip\r\n ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip)\r\n : axisPointerModel;\r\n var snap = axisPointerModel.get('snap');\r\n var axisKey = makeKey(axis.model);\r\n var involveSeries = triggerTooltip || snap || axis.type === 'category';\r\n var axisInfo = result.axesInfo[axisKey] = {\r\n key: axisKey,\r\n axis: axis,\r\n coordSys: coordSys,\r\n axisPointerModel: axisPointerModel,\r\n triggerTooltip: triggerTooltip,\r\n involveSeries: involveSeries,\r\n snap: snap,\r\n useHandle: isHandleTrigger(axisPointerModel),\r\n seriesModels: [],\r\n linkGroup: null\r\n };\r\n axesInfoInCoordSys[axisKey] = axisInfo;\r\n result.seriesInvolved = result.seriesInvolved || involveSeries;\r\n var groupIndex = getLinkGroupIndex(linksOption, axis);\r\n if (groupIndex != null) {\r\n var linkGroup = linkGroups[groupIndex]\r\n || (linkGroups[groupIndex] = { axesInfo: {} });\r\n linkGroup.axesInfo[axisKey] = axisInfo;\r\n linkGroup.mapper = linksOption[groupIndex].mapper;\r\n axisInfo.linkGroup = linkGroup;\r\n }\r\n }\r\n });\r\n}\r\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\r\n var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\r\n var fields = [\r\n 'type', 'snap', 'lineStyle', 'shadowStyle', 'label',\r\n 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'\r\n ];\r\n var volatileOption = {};\r\n each(fields, function (field) {\r\n volatileOption[field] = clone(tooltipAxisPointerModel.get(field));\r\n });\r\n volatileOption.snap = axis.type !== 'category' && !!triggerTooltip;\r\n if (tooltipAxisPointerModel.get('type') === 'cross') {\r\n volatileOption.type = 'line';\r\n }\r\n var labelOption = volatileOption.label || (volatileOption.label = {});\r\n labelOption.show == null && (labelOption.show = false);\r\n if (fromTooltip === 'cross') {\r\n var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(['label', 'show']);\r\n labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true;\r\n if (!triggerTooltip) {\r\n var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\r\n crossStyle && defaults(labelOption, crossStyle.textStyle);\r\n }\r\n }\r\n return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\r\n}\r\nfunction collectSeriesInfo(result, ecModel) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var seriesTooltipTrigger = seriesModel.get(['tooltip', 'trigger'], true);\r\n var seriesTooltipShow = seriesModel.get(['tooltip', 'show'], true);\r\n if (!coordSys\r\n || seriesTooltipTrigger === 'none'\r\n || seriesTooltipTrigger === false\r\n || seriesTooltipTrigger === 'item'\r\n || seriesTooltipShow === false\r\n || seriesModel.get(['axisPointer', 'show'], true) === false) {\r\n return;\r\n }\r\n each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\r\n var axis = axisInfo.axis;\r\n if (coordSys.getAxis(axis.dim) === axis) {\r\n axisInfo.seriesModels.push(seriesModel);\r\n axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\r\n axisInfo.seriesDataCount += seriesModel.getData().count();\r\n }\r\n });\r\n });\r\n}\r\nfunction getLinkGroupIndex(linksOption, axis) {\r\n var axisModel = axis.model;\r\n var dim = axis.dim;\r\n for (var i = 0; i < linksOption.length; i++) {\r\n var linkOption = linksOption[i] || {};\r\n if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id)\r\n || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex)\r\n || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\r\n return i;\r\n }\r\n }\r\n}\r\nfunction checkPropInLink(linkPropValue, axisPropValue) {\r\n return linkPropValue === 'all'\r\n || (isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0)\r\n || linkPropValue === axisPropValue;\r\n}\r\nfunction fixValue(axisModel) {\r\n var axisInfo = getAxisInfo(axisModel);\r\n if (!axisInfo) {\r\n return;\r\n }\r\n var axisPointerModel = axisInfo.axisPointerModel;\r\n var scale = axisInfo.axis.scale;\r\n var option = axisPointerModel.option;\r\n var status = axisPointerModel.get('status');\r\n var value = axisPointerModel.get('value');\r\n if (value != null) {\r\n value = scale.parse(value);\r\n }\r\n var useHandle = isHandleTrigger(axisPointerModel);\r\n if (status == null) {\r\n option.status = useHandle ? 'show' : 'hide';\r\n }\r\n var extent = scale.getExtent().slice();\r\n extent[0] > extent[1] && extent.reverse();\r\n if (value == null\r\n || value > extent[1]) {\r\n value = extent[1];\r\n }\r\n if (value < extent[0]) {\r\n value = extent[0];\r\n }\r\n option.value = value;\r\n if (useHandle) {\r\n option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\r\n }\r\n}\r\nfunction getAxisInfo(axisModel) {\r\n var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {})\r\n .coordSysAxesInfo;\r\n return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\r\n}\r\nfunction getAxisPointerModel(axisModel) {\r\n var axisInfo = getAxisInfo(axisModel);\r\n return axisInfo && axisInfo.axisPointerModel;\r\n}\r\nfunction isHandleTrigger(axisPointerModel) {\r\n return !!axisPointerModel.get(['handle', 'show']);\r\n}\r\nfunction makeKey(model) {\r\n return model.type + '||' + model.id;\r\n}\n\nvar axisPointerClazz = {};\r\nvar AxisView = (function (_super) {\r\n __extends(AxisView, _super);\r\n function AxisView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = AxisView.type;\r\n return _this;\r\n }\r\n AxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n this.axisPointerClass && fixValue(axisModel);\r\n _super.prototype.render.apply(this, arguments);\r\n this._doUpdateAxisPointerClass(axisModel, api, true);\r\n };\r\n AxisView.prototype.updateAxisPointer = function (axisModel, ecModel, api, payload) {\r\n this._doUpdateAxisPointerClass(axisModel, api, false);\r\n };\r\n AxisView.prototype.remove = function (ecModel, api) {\r\n var axisPointer = this._axisPointer;\r\n axisPointer && axisPointer.remove(api);\r\n };\r\n AxisView.prototype.dispose = function (ecModel, api) {\r\n this._disposeAxisPointer(api);\r\n _super.prototype.dispose.apply(this, arguments);\r\n };\r\n AxisView.prototype._doUpdateAxisPointerClass = function (axisModel, api, forceRender) {\r\n var Clazz = AxisView.getAxisPointerClass(this.axisPointerClass);\r\n if (!Clazz) {\r\n return;\r\n }\r\n var axisPointerModel = getAxisPointerModel(axisModel);\r\n axisPointerModel\r\n ? (this._axisPointer || (this._axisPointer = new Clazz()))\r\n .render(axisModel, axisPointerModel, api, forceRender)\r\n : this._disposeAxisPointer(api);\r\n };\r\n AxisView.prototype._disposeAxisPointer = function (api) {\r\n this._axisPointer && this._axisPointer.dispose(api);\r\n this._axisPointer = null;\r\n };\r\n AxisView.registerAxisPointerClass = function (type, clazz) {\r\n if (__DEV__) {\r\n if (axisPointerClazz[type]) {\r\n throw new Error('axisPointer ' + type + ' exists');\r\n }\r\n }\r\n axisPointerClazz[type] = clazz;\r\n };\r\n AxisView.getAxisPointerClass = function (type) {\r\n return type && axisPointerClazz[type];\r\n };\r\n AxisView.type = 'axis';\r\n return AxisView;\r\n}(ComponentView));\n\nfunction layout$1(gridModel, axisModel, opt) {\r\n opt = opt || {};\r\n var grid = gridModel.coordinateSystem;\r\n var axis = axisModel.axis;\r\n var layout = {};\r\n var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\r\n var rawAxisPosition = axis.position;\r\n var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\r\n var axisDim = axis.dim;\r\n var rect = grid.getRect();\r\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\r\n var idx = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 };\r\n var axisOffset = axisModel.get('offset') || 0;\r\n var posBound = axisDim === 'x'\r\n ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset]\r\n : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\r\n if (otherAxisOnZeroOf) {\r\n var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\r\n posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\r\n }\r\n layout.position = [\r\n axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0],\r\n axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]\r\n ];\r\n layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);\r\n var dirMap = { top: -1, bottom: 1, left: -1, right: 1 };\r\n layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\r\n layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\r\n if (axisModel.get(['axisTick', 'inside'])) {\r\n layout.tickDirection = -layout.tickDirection;\r\n }\r\n if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\r\n layout.labelDirection = -layout.labelDirection;\r\n }\r\n var labelRotate = axisModel.get(['axisLabel', 'rotate']);\r\n layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate;\r\n layout.z2 = 1;\r\n return layout;\r\n}\r\nfunction isCartesian2DSeries(seriesModel) {\r\n return seriesModel.get('coordinateSystem') === 'cartesian2d';\r\n}\r\nfunction findAxisModels(seriesModel) {\r\n var axisModelMap = {\r\n xAxisModel: null,\r\n yAxisModel: null\r\n };\r\n each(axisModelMap, function (v, key) {\r\n var axisType = key.replace(/Model$/, '');\r\n var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\r\n if (__DEV__) {\r\n if (!axisModel) {\r\n throw new Error(axisType + ' \"' + retrieve3(seriesModel.get(axisType + 'Index'), seriesModel.get(axisType + 'Id'), 0) + '\" not found');\r\n }\r\n }\r\n axisModelMap[key] = axisModel;\r\n });\r\n return axisModelMap;\r\n}\n\nvar inner$5 = makeInner();\r\nfunction rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\r\n var axis = axisModel.axis;\r\n if (axis.scale.isBlank()) {\r\n return;\r\n }\r\n var splitAreaModel = axisModel.getModel('splitArea');\r\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n var areaColors = areaStyleModel.get('color');\r\n var gridRect = gridModel.coordinateSystem.getRect();\r\n var ticksCoords = axis.getTicksCoords({\r\n tickModel: splitAreaModel,\r\n clamp: true\r\n });\r\n if (!ticksCoords.length) {\r\n return;\r\n }\r\n var areaColorsLen = areaColors.length;\r\n var lastSplitAreaColors = inner$5(axisView).splitAreaColors;\r\n var newSplitAreaColors = createHashMap();\r\n var colorIndex = 0;\r\n if (lastSplitAreaColors) {\r\n for (var i = 0; i < ticksCoords.length; i++) {\r\n var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\r\n if (cIndex != null) {\r\n colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\r\n break;\r\n }\r\n }\r\n }\r\n var prev = axis.toGlobalCoord(ticksCoords[0].coord);\r\n var areaStyle = areaStyleModel.getAreaStyle();\r\n areaColors = isArray(areaColors) ? areaColors : [areaColors];\r\n for (var i = 1; i < ticksCoords.length; i++) {\r\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n var x = void 0;\r\n var y = void 0;\r\n var width = void 0;\r\n var height = void 0;\r\n if (axis.isHorizontal()) {\r\n x = prev;\r\n y = gridRect.y;\r\n width = tickCoord - x;\r\n height = gridRect.height;\r\n prev = x + width;\r\n }\r\n else {\r\n x = gridRect.x;\r\n y = prev;\r\n width = gridRect.width;\r\n height = tickCoord - y;\r\n prev = y + height;\r\n }\r\n var tickValue = ticksCoords[i - 1].tickValue;\r\n tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\r\n axisGroup.add(new Rect({\r\n anid: tickValue != null ? 'area_' + tickValue : null,\r\n shape: {\r\n x: x,\r\n y: y,\r\n width: width,\r\n height: height\r\n },\r\n style: defaults({\r\n fill: areaColors[colorIndex]\r\n }, areaStyle),\r\n autoBatch: true,\r\n silent: true\r\n }));\r\n colorIndex = (colorIndex + 1) % areaColorsLen;\r\n }\r\n inner$5(axisView).splitAreaColors = newSplitAreaColors;\r\n}\r\nfunction rectCoordAxisHandleRemove(axisView) {\r\n inner$5(axisView).splitAreaColors = null;\r\n}\n\nvar axisBuilderAttrs = [\r\n 'axisLine', 'axisTickLabel', 'axisName'\r\n];\r\nvar selfBuilderAttrs = [\r\n 'splitArea', 'splitLine', 'minorSplitLine'\r\n];\r\nvar CartesianAxisView = (function (_super) {\r\n __extends(CartesianAxisView, _super);\r\n function CartesianAxisView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CartesianAxisView.type;\r\n _this.axisPointerClass = 'CartesianAxisPointer';\r\n return _this;\r\n }\r\n CartesianAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n this.group.removeAll();\r\n var oldAxisGroup = this._axisGroup;\r\n this._axisGroup = new Group();\r\n this.group.add(this._axisGroup);\r\n if (!axisModel.get('show')) {\r\n return;\r\n }\r\n var gridModel = axisModel.getCoordSysModel();\r\n var layout = layout$1(gridModel, axisModel);\r\n var axisBuilder = new AxisBuilder(axisModel, extend({\r\n handleAutoShown: function (elementType) {\r\n var cartesians = gridModel.coordinateSystem.getCartesians();\r\n for (var i = 0; i < cartesians.length; i++) {\r\n var otherAxisType = cartesians[i].getOtherAxis(axisModel.axis).type;\r\n if (otherAxisType === 'value' || otherAxisType === 'log') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n }, layout));\r\n each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\r\n this._axisGroup.add(axisBuilder.getGroup());\r\n each(selfBuilderAttrs, function (name) {\r\n if (axisModel.get([name, 'show'])) {\r\n axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel);\r\n }\r\n }, this);\r\n groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n _super.prototype.render.call(this, axisModel, ecModel, api, payload);\r\n };\r\n CartesianAxisView.prototype.remove = function () {\r\n rectCoordAxisHandleRemove(this);\r\n };\r\n CartesianAxisView.type = 'cartesianAxis';\r\n return CartesianAxisView;\r\n}(AxisView));\r\nvar axisElementBuilders = {\r\n splitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n var axis = axisModel.axis;\r\n if (axis.scale.isBlank()) {\r\n return;\r\n }\r\n var splitLineModel = axisModel.getModel('splitLine');\r\n var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n var lineColors = lineStyleModel.get('color');\r\n lineColors = isArray(lineColors) ? lineColors : [lineColors];\r\n var gridRect = gridModel.coordinateSystem.getRect();\r\n var isHorizontal = axis.isHorizontal();\r\n var lineCount = 0;\r\n var ticksCoords = axis.getTicksCoords({\r\n tickModel: splitLineModel\r\n });\r\n var p1 = [];\r\n var p2 = [];\r\n var lineStyle = lineStyleModel.getLineStyle();\r\n for (var i = 0; i < ticksCoords.length; i++) {\r\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n if (isHorizontal) {\r\n p1[0] = tickCoord;\r\n p1[1] = gridRect.y;\r\n p2[0] = tickCoord;\r\n p2[1] = gridRect.y + gridRect.height;\r\n }\r\n else {\r\n p1[0] = gridRect.x;\r\n p1[1] = tickCoord;\r\n p2[0] = gridRect.x + gridRect.width;\r\n p2[1] = tickCoord;\r\n }\r\n var colorIndex = (lineCount++) % lineColors.length;\r\n var tickValue = ticksCoords[i].tickValue;\r\n axisGroup.add(new Line({\r\n anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\r\n subPixelOptimize: true,\r\n autoBatch: true,\r\n shape: {\r\n x1: p1[0],\r\n y1: p1[1],\r\n x2: p2[0],\r\n y2: p2[1]\r\n },\r\n style: defaults({\r\n stroke: lineColors[colorIndex]\r\n }, lineStyle),\r\n silent: true\r\n }));\r\n }\r\n },\r\n minorSplitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n var axis = axisModel.axis;\r\n var minorSplitLineModel = axisModel.getModel('minorSplitLine');\r\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n var gridRect = gridModel.coordinateSystem.getRect();\r\n var isHorizontal = axis.isHorizontal();\r\n var minorTicksCoords = axis.getMinorTicksCoords();\r\n if (!minorTicksCoords.length) {\r\n return;\r\n }\r\n var p1 = [];\r\n var p2 = [];\r\n var lineStyle = lineStyleModel.getLineStyle();\r\n for (var i = 0; i < minorTicksCoords.length; i++) {\r\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\r\n var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\r\n if (isHorizontal) {\r\n p1[0] = tickCoord;\r\n p1[1] = gridRect.y;\r\n p2[0] = tickCoord;\r\n p2[1] = gridRect.y + gridRect.height;\r\n }\r\n else {\r\n p1[0] = gridRect.x;\r\n p1[1] = tickCoord;\r\n p2[0] = gridRect.x + gridRect.width;\r\n p2[1] = tickCoord;\r\n }\r\n axisGroup.add(new Line({\r\n anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\r\n subPixelOptimize: true,\r\n autoBatch: true,\r\n shape: {\r\n x1: p1[0],\r\n y1: p1[1],\r\n x2: p2[0],\r\n y2: p2[1]\r\n },\r\n style: lineStyle,\r\n silent: true\r\n }));\r\n }\r\n }\r\n },\r\n splitArea: function (axisView, axisGroup, axisModel, gridModel) {\r\n rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel);\r\n }\r\n};\r\nvar CartesianXAxisView = (function (_super) {\r\n __extends(CartesianXAxisView, _super);\r\n function CartesianXAxisView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CartesianXAxisView.type;\r\n return _this;\r\n }\r\n CartesianXAxisView.type = 'xAxis';\r\n return CartesianXAxisView;\r\n}(CartesianAxisView));\r\nvar CartesianYAxisView = (function (_super) {\r\n __extends(CartesianYAxisView, _super);\r\n function CartesianYAxisView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CartesianXAxisView.type;\r\n return _this;\r\n }\r\n CartesianYAxisView.type = 'yAxis';\r\n return CartesianYAxisView;\r\n}(CartesianAxisView));\r\nComponentView.registerClass(CartesianXAxisView);\r\nComponentView.registerClass(CartesianYAxisView);\n\nregisterProcessor(PRIORITY.PROCESSOR.FILTER + 10, {\r\n getTargetSeries: function (ecModel) {\r\n var seriesModelMap = createHashMap();\r\n ecModel.eachSeries(function (seriesModel) {\r\n isCartesian2DSeries(seriesModel) && seriesModelMap.set(seriesModel.uid, seriesModel);\r\n });\r\n return seriesModelMap;\r\n },\r\n overallReset: function (ecModel, api) {\r\n var seriesRecords = [];\r\n var axisRecordMap = createHashMap();\r\n prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords);\r\n calculateFilteredExtent(axisRecordMap, seriesRecords);\r\n shrinkAxisExtent(axisRecordMap);\r\n }\r\n});\r\nfunction prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (!isCartesian2DSeries(seriesModel)) {\r\n return;\r\n }\r\n var axesModelMap = findAxisModels(seriesModel);\r\n var xAxisModel = axesModelMap.xAxisModel;\r\n var yAxisModel = axesModelMap.yAxisModel;\r\n var xAxis = xAxisModel.axis;\r\n var yAxis = yAxisModel.axis;\r\n var xRawExtentInfo = xAxis.scale.rawExtentInfo;\r\n var yRawExtentInfo = yAxis.scale.rawExtentInfo;\r\n var data = seriesModel.getData();\r\n if ((xRawExtentInfo && xRawExtentInfo.frozen)\r\n || (yRawExtentInfo && yRawExtentInfo.frozen)) {\r\n return;\r\n }\r\n seriesRecords.push({\r\n seriesModel: seriesModel,\r\n xAxisModel: xAxisModel,\r\n yAxisModel: yAxisModel\r\n });\r\n unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, xAxisModel).condExtent, data, xAxis.dim);\r\n unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, yAxisModel).condExtent, data, yAxis.dim);\r\n });\r\n}\r\nfunction calculateFilteredExtent(axisRecordMap, seriesRecords) {\r\n each(seriesRecords, function (seriesRecord) {\r\n var xAxisModel = seriesRecord.xAxisModel;\r\n var yAxisModel = seriesRecord.yAxisModel;\r\n var xAxis = xAxisModel.axis;\r\n var yAxis = yAxisModel.axis;\r\n var xAxisRecord = prepareAxisRecord(axisRecordMap, xAxisModel);\r\n var yAxisRecord = prepareAxisRecord(axisRecordMap, yAxisModel);\r\n xAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(xAxis.scale, xAxisModel, xAxisRecord.condExtent);\r\n yAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(yAxis.scale, yAxisModel, yAxisRecord.condExtent);\r\n xAxisRecord.rawExtentResult = xAxisRecord.rawExtentInfo.calculate();\r\n yAxisRecord.rawExtentResult = yAxisRecord.rawExtentInfo.calculate();\r\n var data = seriesRecord.seriesModel.getData();\r\n var condDimMap = {};\r\n var tarDimMap = {};\r\n var condAxis;\r\n var tarAxisRecord;\r\n function addCondition(axis, axisRecord) {\r\n var condExtent = axisRecord.condExtent;\r\n var rawExtentResult = axisRecord.rawExtentResult;\r\n if (axis.type === 'category'\r\n && (condExtent[0] < rawExtentResult.min || rawExtentResult.max < condExtent[1])) {\r\n each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n if (!hasOwn(condDimMap, dataDim)) {\r\n condDimMap[dataDim] = true;\r\n condAxis = axis;\r\n }\r\n });\r\n }\r\n }\r\n function addTarget(axis, axisRecord) {\r\n var rawExtentResult = axisRecord.rawExtentResult;\r\n if (axis.type !== 'category'\r\n && (!rawExtentResult.minFixed || !rawExtentResult.maxFixed)) {\r\n each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n if (!hasOwn(condDimMap, dataDim) && !hasOwn(tarDimMap, dataDim)) {\r\n tarDimMap[dataDim] = true;\r\n tarAxisRecord = axisRecord;\r\n }\r\n });\r\n }\r\n }\r\n addCondition(xAxis, xAxisRecord);\r\n addCondition(yAxis, yAxisRecord);\r\n addTarget(xAxis, xAxisRecord);\r\n addTarget(yAxis, yAxisRecord);\r\n var condDims = keys(condDimMap);\r\n var tarDims = keys(tarDimMap);\r\n var tarDimExtents = map(tarDims, function () {\r\n return initExtent();\r\n });\r\n var condDimsLen = condDims.length;\r\n var tarDimsLen = tarDims.length;\r\n if (!condDimsLen || !tarDimsLen) {\r\n return;\r\n }\r\n var singleCondDim = condDimsLen === 1 ? condDims[0] : null;\r\n var singleTarDim = tarDimsLen === 1 ? tarDims[0] : null;\r\n var dataLen = data.count();\r\n if (singleCondDim && singleTarDim) {\r\n for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n var condVal = data.get(singleCondDim, dataIdx);\r\n if (condAxis.scale.isInExtentRange(condVal)) {\r\n unionExtent(tarDimExtents[0], data.get(singleTarDim, dataIdx));\r\n }\r\n }\r\n }\r\n else {\r\n for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n for (var j = 0; j < condDimsLen; j++) {\r\n var condVal = data.get(condDims[j], dataIdx);\r\n if (condAxis.scale.isInExtentRange(condVal)) {\r\n for (var k = 0; k < tarDimsLen; k++) {\r\n unionExtent(tarDimExtents[k], data.get(tarDims[k], dataIdx));\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n each(tarDimExtents, function (tarDimExtent, i) {\r\n var dim = tarDims[i];\r\n data.setApproximateExtent(tarDimExtent, dim);\r\n var tarAxisExtent = tarAxisRecord.tarExtent = tarAxisRecord.tarExtent || initExtent();\r\n unionExtent(tarAxisExtent, tarDimExtent[0]);\r\n unionExtent(tarAxisExtent, tarDimExtent[1]);\r\n });\r\n });\r\n}\r\nfunction shrinkAxisExtent(axisRecordMap) {\r\n axisRecordMap.each(function (axisRecord) {\r\n var tarAxisExtent = axisRecord.tarExtent;\r\n if (tarAxisExtent) {\r\n var rawExtentResult = axisRecord.rawExtentResult;\r\n var rawExtentInfo = axisRecord.rawExtentInfo;\r\n if (!rawExtentResult.minFixed && tarAxisExtent[0] > rawExtentResult.min) {\r\n rawExtentInfo.modifyDataMinMax('min', tarAxisExtent[0]);\r\n }\r\n if (!rawExtentResult.maxFixed && tarAxisExtent[1] < rawExtentResult.max) {\r\n rawExtentInfo.modifyDataMinMax('max', tarAxisExtent[1]);\r\n }\r\n }\r\n });\r\n}\r\nfunction prepareAxisRecord(axisRecordMap, axisModel) {\r\n return axisRecordMap.get(axisModel.uid)\r\n || axisRecordMap.set(axisModel.uid, { condExtent: initExtent() });\r\n}\r\nfunction initExtent() {\r\n return [Infinity, -Infinity];\r\n}\r\nfunction unionExtent(extent, val) {\r\n val < extent[0] && (extent[0] = val);\r\n val > extent[1] && (extent[1] = val);\r\n}\n\nvar GridModel = (function (_super) {\r\n __extends(GridModel, _super);\r\n function GridModel() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n GridModel.type = 'grid';\r\n GridModel.dependencies = ['xAxis', 'yAxis'];\r\n GridModel.layoutMode = 'box';\r\n GridModel.defaultOption = {\r\n show: false,\r\n zlevel: 0,\r\n z: 0,\r\n left: '10%',\r\n top: 60,\r\n right: '10%',\r\n bottom: 70,\r\n containLabel: false,\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n borderWidth: 1,\r\n borderColor: '#ccc'\r\n };\r\n return GridModel;\r\n}(ComponentModel));\n\nvar GridView = (function (_super) {\r\n __extends(GridView, _super);\r\n function GridView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = 'grid';\r\n return _this;\r\n }\r\n GridView.prototype.render = function (gridModel, ecModel) {\r\n this.group.removeAll();\r\n if (gridModel.get('show')) {\r\n this.group.add(new Rect({\r\n shape: gridModel.coordinateSystem.getRect(),\r\n style: defaults({\r\n fill: gridModel.get('backgroundColor')\r\n }, gridModel.getItemStyle()),\r\n silent: true,\r\n z2: -1\r\n }));\r\n }\r\n };\r\n GridView.type = 'grid';\r\n return GridView;\r\n}(ComponentView));\r\nComponentView.registerClass(GridView);\r\nComponentModel.registerClass(GridModel);\r\nregisterPreprocessor(function (option) {\r\n if (option.xAxis && option.yAxis && !option.grid) {\r\n option.grid = {};\r\n }\r\n});\n\nregisterLayout(pointsLayout('line', true));\r\nregisterProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n\nvar Cartesian = (function () {\r\n function Cartesian(name) {\r\n this.type = 'cartesian';\r\n this._dimList = [];\r\n this._axes = {};\r\n this.name = name || '';\r\n }\r\n Cartesian.prototype.getAxis = function (dim) {\r\n return this._axes[dim];\r\n };\r\n Cartesian.prototype.getAxes = function () {\r\n return map(this._dimList, function (dim) {\r\n return this._axes[dim];\r\n }, this);\r\n };\r\n Cartesian.prototype.getAxesByScale = function (scaleType) {\r\n scaleType = scaleType.toLowerCase();\r\n return filter(this.getAxes(), function (axis) {\r\n return axis.scale.type === scaleType;\r\n });\r\n };\r\n Cartesian.prototype.addAxis = function (axis) {\r\n var dim = axis.dim;\r\n this._axes[dim] = axis;\r\n this._dimList.push(dim);\r\n };\r\n return Cartesian;\r\n}());\n\nvar cartesian2DDimensions = ['x', 'y'];\r\nfunction canCalculateAffineTransform(scale) {\r\n return scale.type === 'interval' || scale.type === 'time';\r\n}\r\nvar Cartesian2D = (function (_super) {\r\n __extends(Cartesian2D, _super);\r\n function Cartesian2D() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = 'cartesian2d';\r\n _this.dimensions = cartesian2DDimensions;\r\n return _this;\r\n }\r\n Cartesian2D.prototype.calcAffineTransform = function () {\r\n this._transform = this._invTransform = null;\r\n var xAxisScale = this.getAxis('x').scale;\r\n var yAxisScale = this.getAxis('y').scale;\r\n if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) {\r\n return;\r\n }\r\n var xScaleExtent = xAxisScale.getExtent();\r\n var yScaleExtent = yAxisScale.getExtent();\r\n var start = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]);\r\n var end = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]);\r\n var xScaleSpan = xScaleExtent[1] - xScaleExtent[0];\r\n var yScaleSpan = yScaleExtent[1] - yScaleExtent[0];\r\n if (!xScaleSpan || !yScaleSpan) {\r\n return;\r\n }\r\n var scaleX = (end[0] - start[0]) / xScaleSpan;\r\n var scaleY = (end[1] - start[1]) / yScaleSpan;\r\n var translateX = start[0] - xScaleExtent[0] * scaleX;\r\n var translateY = start[1] - yScaleExtent[0] * scaleY;\r\n var m = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY];\r\n this._invTransform = invert([], m);\r\n };\r\n Cartesian2D.prototype.getBaseAxis = function () {\r\n return this.getAxesByScale('ordinal')[0]\r\n || this.getAxesByScale('time')[0]\r\n || this.getAxis('x');\r\n };\r\n Cartesian2D.prototype.containPoint = function (point) {\r\n var axisX = this.getAxis('x');\r\n var axisY = this.getAxis('y');\r\n return axisX.contain(axisX.toLocalCoord(point[0]))\r\n && axisY.contain(axisY.toLocalCoord(point[1]));\r\n };\r\n Cartesian2D.prototype.containData = function (data) {\r\n return this.getAxis('x').containData(data[0])\r\n && this.getAxis('y').containData(data[1]);\r\n };\r\n Cartesian2D.prototype.dataToPoint = function (data, reserved, out) {\r\n out = out || [];\r\n var xVal = data[0];\r\n var yVal = data[1];\r\n if (this._transform\r\n && xVal != null\r\n && isFinite(xVal)\r\n && yVal != null\r\n && isFinite(yVal)) {\r\n return applyTransform(out, data, this._transform);\r\n }\r\n var xAxis = this.getAxis('x');\r\n var yAxis = this.getAxis('y');\r\n out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal));\r\n out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal));\r\n return out;\r\n };\r\n Cartesian2D.prototype.clampData = function (data, out) {\r\n var xScale = this.getAxis('x').scale;\r\n var yScale = this.getAxis('y').scale;\r\n var xAxisExtent = xScale.getExtent();\r\n var yAxisExtent = yScale.getExtent();\r\n var x = xScale.parse(data[0]);\r\n var y = yScale.parse(data[1]);\r\n out = out || [];\r\n out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\r\n out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\r\n return out;\r\n };\r\n Cartesian2D.prototype.pointToData = function (point, out) {\r\n out = out || [];\r\n if (this._invTransform) {\r\n return applyTransform(out, point, this._invTransform);\r\n }\r\n var xAxis = this.getAxis('x');\r\n var yAxis = this.getAxis('y');\r\n out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\r\n out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\r\n return out;\r\n };\r\n Cartesian2D.prototype.getOtherAxis = function (axis) {\r\n return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\r\n };\r\n Cartesian2D.prototype.getArea = function () {\r\n var xExtent = this.getAxis('x').getGlobalExtent();\r\n var yExtent = this.getAxis('y').getGlobalExtent();\r\n var x = Math.min(xExtent[0], xExtent[1]);\r\n var y = Math.min(yExtent[0], yExtent[1]);\r\n var width = Math.max(xExtent[0], xExtent[1]) - x;\r\n var height = Math.max(yExtent[0], yExtent[1]) - y;\r\n return new BoundingRect(x, y, width, height);\r\n };\r\n return Cartesian2D;\r\n}(Cartesian));\n\nvar Axis2D = (function (_super) {\r\n __extends(Axis2D, _super);\r\n function Axis2D(dim, scale, coordExtent, axisType, position) {\r\n var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n _this.index = 0;\r\n _this.type = axisType || 'value';\r\n _this.position = position || 'bottom';\r\n return _this;\r\n }\r\n Axis2D.prototype.isHorizontal = function () {\r\n var position = this.position;\r\n return position === 'top' || position === 'bottom';\r\n };\r\n Axis2D.prototype.getGlobalExtent = function (asc) {\r\n var ret = this.getExtent();\r\n ret[0] = this.toGlobalCoord(ret[0]);\r\n ret[1] = this.toGlobalCoord(ret[1]);\r\n asc && ret[0] > ret[1] && ret.reverse();\r\n return ret;\r\n };\r\n Axis2D.prototype.pointToData = function (point, clamp) {\r\n return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\r\n };\r\n Axis2D.prototype.setCategorySortInfo = function (info) {\r\n if (this.type !== 'category') {\r\n return false;\r\n }\r\n this.model.option.categorySortInfo = info;\r\n this.scale.setCategorySortInfo(info);\r\n };\r\n return Axis2D;\r\n}(Axis));\n\nvar Grid = (function () {\r\n function Grid(gridModel, ecModel, api) {\r\n this.type = 'grid';\r\n this._coordsMap = {};\r\n this._coordsList = [];\r\n this._axesMap = {};\r\n this._axesList = [];\r\n this.axisPointerEnabled = true;\r\n this.dimensions = cartesian2DDimensions;\r\n this._initCartesian(gridModel, ecModel, api);\r\n this.model = gridModel;\r\n }\r\n Grid.prototype.getRect = function () {\r\n return this._rect;\r\n };\r\n Grid.prototype.update = function (ecModel, api) {\r\n var axesMap = this._axesMap;\r\n this._updateScale(ecModel, this.model);\r\n each(axesMap.x, function (xAxis) {\r\n niceScaleExtent(xAxis.scale, xAxis.model);\r\n });\r\n each(axesMap.y, function (yAxis) {\r\n niceScaleExtent(yAxis.scale, yAxis.model);\r\n });\r\n var onZeroRecords = {};\r\n each(axesMap.x, function (xAxis) {\r\n fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\r\n });\r\n each(axesMap.y, function (yAxis) {\r\n fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\r\n });\r\n this.resize(this.model, api);\r\n };\r\n Grid.prototype.resize = function (gridModel, api, ignoreContainLabel) {\r\n var boxLayoutParams = gridModel.getBoxLayoutParams();\r\n var isContainLabel = !ignoreContainLabel && gridModel.get('containLabel');\r\n var gridRect = getLayoutRect(boxLayoutParams, {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n this._rect = gridRect;\r\n var axesList = this._axesList;\r\n adjustAxes();\r\n if (isContainLabel) {\r\n each(axesList, function (axis) {\r\n if (!axis.model.get(['axisLabel', 'inside'])) {\r\n var labelUnionRect = estimateLabelUnionRect(axis);\r\n if (labelUnionRect) {\r\n var dim = axis.isHorizontal() ? 'height' : 'width';\r\n var margin = axis.model.get(['axisLabel', 'margin']);\r\n gridRect[dim] -= labelUnionRect[dim] + margin;\r\n if (axis.position === 'top') {\r\n gridRect.y += labelUnionRect.height + margin;\r\n }\r\n else if (axis.position === 'left') {\r\n gridRect.x += labelUnionRect.width + margin;\r\n }\r\n }\r\n }\r\n });\r\n adjustAxes();\r\n }\r\n each(this._coordsList, function (coord) {\r\n coord.calcAffineTransform();\r\n });\r\n function adjustAxes() {\r\n each(axesList, function (axis) {\r\n var isHorizontal = axis.isHorizontal();\r\n var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\r\n var idx = axis.inverse ? 1 : 0;\r\n axis.setExtent(extent[idx], extent[1 - idx]);\r\n updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\r\n });\r\n }\r\n };\r\n Grid.prototype.getAxis = function (dim, axisIndex) {\r\n var axesMapOnDim = this._axesMap[dim];\r\n if (axesMapOnDim != null) {\r\n return axesMapOnDim[axisIndex || 0];\r\n }\r\n };\r\n Grid.prototype.getAxes = function () {\r\n return this._axesList.slice();\r\n };\r\n Grid.prototype.getCartesian = function (xAxisIndex, yAxisIndex) {\r\n if (xAxisIndex != null && yAxisIndex != null) {\r\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n return this._coordsMap[key];\r\n }\r\n if (isObject(xAxisIndex)) {\r\n yAxisIndex = xAxisIndex.yAxisIndex;\r\n xAxisIndex = xAxisIndex.xAxisIndex;\r\n }\r\n for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\r\n if (coordList[i].getAxis('x').index === xAxisIndex\r\n || coordList[i].getAxis('y').index === yAxisIndex) {\r\n return coordList[i];\r\n }\r\n }\r\n };\r\n Grid.prototype.getCartesians = function () {\r\n return this._coordsList.slice();\r\n };\r\n Grid.prototype.convertToPixel = function (ecModel, finder, value) {\r\n var target = this._findConvertTarget(finder);\r\n return target.cartesian\r\n ? target.cartesian.dataToPoint(value)\r\n : target.axis\r\n ? target.axis.toGlobalCoord(target.axis.dataToCoord(value))\r\n : null;\r\n };\r\n Grid.prototype.convertFromPixel = function (ecModel, finder, value) {\r\n var target = this._findConvertTarget(finder);\r\n return target.cartesian\r\n ? target.cartesian.pointToData(value)\r\n : target.axis\r\n ? target.axis.coordToData(target.axis.toLocalCoord(value))\r\n : null;\r\n };\r\n Grid.prototype._findConvertTarget = function (finder) {\r\n var seriesModel = finder.seriesModel;\r\n var xAxisModel = finder.xAxisModel\r\n || (seriesModel && seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0]);\r\n var yAxisModel = finder.yAxisModel\r\n || (seriesModel && seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0]);\r\n var gridModel = finder.gridModel;\r\n var coordsList = this._coordsList;\r\n var cartesian;\r\n var axis;\r\n if (seriesModel) {\r\n cartesian = seriesModel.coordinateSystem;\r\n indexOf(coordsList, cartesian) < 0 && (cartesian = null);\r\n }\r\n else if (xAxisModel && yAxisModel) {\r\n cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n }\r\n else if (xAxisModel) {\r\n axis = this.getAxis('x', xAxisModel.componentIndex);\r\n }\r\n else if (yAxisModel) {\r\n axis = this.getAxis('y', yAxisModel.componentIndex);\r\n }\r\n else if (gridModel) {\r\n var grid = gridModel.coordinateSystem;\r\n if (grid === this) {\r\n cartesian = this._coordsList[0];\r\n }\r\n }\r\n return { cartesian: cartesian, axis: axis };\r\n };\r\n Grid.prototype.containPoint = function (point) {\r\n var coord = this._coordsList[0];\r\n if (coord) {\r\n return coord.containPoint(point);\r\n }\r\n };\r\n Grid.prototype._initCartesian = function (gridModel, ecModel, api) {\r\n var _this = this;\r\n var grid = this;\r\n var axisPositionUsed = {\r\n left: false,\r\n right: false,\r\n top: false,\r\n bottom: false\r\n };\r\n var axesMap = {\r\n x: {},\r\n y: {}\r\n };\r\n var axesCount = {\r\n x: 0,\r\n y: 0\r\n };\r\n ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\r\n ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\r\n if (!axesCount.x || !axesCount.y) {\r\n this._axesMap = {};\r\n this._axesList = [];\r\n return;\r\n }\r\n this._axesMap = axesMap;\r\n each(axesMap.x, function (xAxis, xAxisIndex) {\r\n each(axesMap.y, function (yAxis, yAxisIndex) {\r\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n var cartesian = new Cartesian2D(key);\r\n cartesian.master = _this;\r\n cartesian.model = gridModel;\r\n _this._coordsMap[key] = cartesian;\r\n _this._coordsList.push(cartesian);\r\n cartesian.addAxis(xAxis);\r\n cartesian.addAxis(yAxis);\r\n });\r\n });\r\n function createAxisCreator(dimName) {\r\n return function (axisModel, idx) {\r\n if (!isAxisUsedInTheGrid(axisModel, gridModel)) {\r\n return;\r\n }\r\n var axisPosition = axisModel.get('position');\r\n if (dimName === 'x') {\r\n if (axisPosition !== 'top' && axisPosition !== 'bottom') {\r\n axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\r\n }\r\n }\r\n else {\r\n if (axisPosition !== 'left' && axisPosition !== 'right') {\r\n axisPosition = axisPositionUsed.left ? 'right' : 'left';\r\n }\r\n }\r\n axisPositionUsed[axisPosition] = true;\r\n var axis = new Axis2D(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\r\n var isCategory = axis.type === 'category';\r\n axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n axis.inverse = axisModel.get('inverse');\r\n axisModel.axis = axis;\r\n axis.model = axisModel;\r\n axis.grid = grid;\r\n axis.index = idx;\r\n grid._axesList.push(axis);\r\n axesMap[dimName][idx] = axis;\r\n axesCount[dimName]++;\r\n };\r\n }\r\n };\r\n Grid.prototype._updateScale = function (ecModel, gridModel) {\r\n each(this._axesList, function (axis) {\r\n axis.scale.setExtent(Infinity, -Infinity);\r\n if (axis.type === 'category') {\r\n var categorySortInfo = axis.model.get('categorySortInfo');\r\n axis.scale.setCategorySortInfo(categorySortInfo);\r\n }\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (isCartesian2DSeries(seriesModel)) {\r\n var axesModelMap = findAxisModels(seriesModel);\r\n var xAxisModel = axesModelMap.xAxisModel;\r\n var yAxisModel = axesModelMap.yAxisModel;\r\n if (!isAxisUsedInTheGrid(xAxisModel, gridModel)\r\n || !isAxisUsedInTheGrid(yAxisModel, gridModel)) {\r\n return;\r\n }\r\n var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n var data = seriesModel.getData();\r\n var xAxis = cartesian.getAxis('x');\r\n var yAxis = cartesian.getAxis('y');\r\n if (data.type === 'list') {\r\n unionExtent(data, xAxis);\r\n unionExtent(data, yAxis);\r\n }\r\n }\r\n }, this);\r\n function unionExtent(data, axis) {\r\n each(getDataDimensionsOnAxis(data, axis.dim), function (dim) {\r\n axis.scale.unionExtentFromData(data, dim);\r\n });\r\n }\r\n };\r\n Grid.prototype.getTooltipAxes = function (dim) {\r\n var baseAxes = [];\r\n var otherAxes = [];\r\n each(this.getCartesians(), function (cartesian) {\r\n var baseAxis = (dim != null && dim !== 'auto')\r\n ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\r\n var otherAxis = cartesian.getOtherAxis(baseAxis);\r\n indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\r\n indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\r\n });\r\n return { baseAxes: baseAxes, otherAxes: otherAxes };\r\n };\r\n Grid.create = function (ecModel, api) {\r\n var grids = [];\r\n ecModel.eachComponent('grid', function (gridModel, idx) {\r\n var grid = new Grid(gridModel, ecModel, api);\r\n grid.name = 'grid_' + idx;\r\n grid.resize(gridModel, api, true);\r\n gridModel.coordinateSystem = grid;\r\n grids.push(grid);\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (!isCartesian2DSeries(seriesModel)) {\r\n return;\r\n }\r\n var axesModelMap = findAxisModels(seriesModel);\r\n var xAxisModel = axesModelMap.xAxisModel;\r\n var yAxisModel = axesModelMap.yAxisModel;\r\n var gridModel = xAxisModel.getCoordSysModel();\r\n if (__DEV__) {\r\n if (!gridModel) {\r\n throw new Error('Grid \"' + retrieve3(xAxisModel.get('gridIndex'), xAxisModel.get('gridId'), 0) + '\" not found');\r\n }\r\n if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) {\r\n throw new Error('xAxis and yAxis must use the same grid');\r\n }\r\n }\r\n var grid = gridModel.coordinateSystem;\r\n seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n });\r\n return grids;\r\n };\r\n Grid.dimensions = cartesian2DDimensions;\r\n return Grid;\r\n}());\r\nfunction isAxisUsedInTheGrid(axisModel, gridModel) {\r\n return axisModel.getCoordSysModel() === gridModel;\r\n}\r\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\r\n axis.getAxesOnZeroOf = function () {\r\n return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\r\n };\r\n var otherAxes = axesMap[otherAxisDim];\r\n var otherAxisOnZeroOf;\r\n var axisModel = axis.model;\r\n var onZero = axisModel.get(['axisLine', 'onZero']);\r\n var onZeroAxisIndex = axisModel.get(['axisLine', 'onZeroAxisIndex']);\r\n if (!onZero) {\r\n return;\r\n }\r\n if (onZeroAxisIndex != null) {\r\n if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\r\n otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\r\n }\r\n }\r\n else {\r\n for (var idx in otherAxes) {\r\n if (otherAxes.hasOwnProperty(idx)\r\n && canOnZeroToAxis(otherAxes[idx])\r\n && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\r\n otherAxisOnZeroOf = otherAxes[idx];\r\n break;\r\n }\r\n }\r\n }\r\n if (otherAxisOnZeroOf) {\r\n onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\r\n }\r\n function getOnZeroRecordKey(axis) {\r\n return axis.dim + '_' + axis.index;\r\n }\r\n}\r\nfunction canOnZeroToAxis(axis) {\r\n return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\r\n}\r\nfunction updateAxisTransform(axis, coordBase) {\r\n var axisExtent = axis.getExtent();\r\n var axisExtentSum = axisExtent[0] + axisExtent[1];\r\n axis.toGlobalCoord = axis.dim === 'x'\r\n ? function (coord) {\r\n return coord + coordBase;\r\n }\r\n : function (coord) {\r\n return axisExtentSum - coord + coordBase;\r\n };\r\n axis.toLocalCoord = axis.dim === 'x'\r\n ? function (coord) {\r\n return coord - coordBase;\r\n }\r\n : function (coord) {\r\n return axisExtentSum - coord + coordBase;\r\n };\r\n}\r\nCoordinateSystemManager.register('cartesian2d', Grid);\n\nvar BaseBarSeriesModel = (function (_super) {\r\n __extends(BaseBarSeriesModel, _super);\r\n function BaseBarSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = BaseBarSeriesModel.type;\r\n return _this;\r\n }\r\n BaseBarSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListFromArray(this.getSource(), this, { useEncodeDefaulter: true });\r\n };\r\n BaseBarSeriesModel.prototype.getMarkerPosition = function (value) {\r\n var coordSys = this.coordinateSystem;\r\n if (coordSys) {\r\n var pt = coordSys.dataToPoint(coordSys.clampData(value));\r\n var data = this.getData();\r\n var offset = data.getLayout('offset');\r\n var size = data.getLayout('size');\r\n var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\r\n pt[offsetIndex] += offset + size / 2;\r\n return pt;\r\n }\r\n return [NaN, NaN];\r\n };\r\n BaseBarSeriesModel.type = 'series.__base_bar__';\r\n BaseBarSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'cartesian2d',\r\n legendHoverLink: true,\r\n barMinHeight: 0,\r\n barMinAngle: 0,\r\n large: false,\r\n largeThreshold: 400,\r\n progressive: 3e3,\r\n progressiveChunkMode: 'mod'\r\n };\r\n return BaseBarSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(BaseBarSeriesModel);\n\nvar BarSeriesModel = (function (_super) {\r\n __extends(BarSeriesModel, _super);\r\n function BarSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = BarSeriesModel.type;\r\n return _this;\r\n }\r\n BarSeriesModel.prototype.getProgressive = function () {\r\n return this.get('large')\r\n ? this.get('progressive')\r\n : false;\r\n };\r\n BarSeriesModel.prototype.getProgressiveThreshold = function () {\r\n var progressiveThreshold = this.get('progressiveThreshold');\r\n var largeThreshold = this.get('largeThreshold');\r\n if (largeThreshold > progressiveThreshold) {\r\n progressiveThreshold = largeThreshold;\r\n }\r\n return progressiveThreshold;\r\n };\r\n BarSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n return selectors.rect(data.getItemLayout(dataIndex));\r\n };\r\n BarSeriesModel.type = 'series.bar';\r\n BarSeriesModel.dependencies = ['grid', 'polar'];\r\n BarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\r\n clip: true,\r\n roundCap: false,\r\n showBackground: false,\r\n backgroundStyle: {\r\n color: 'rgba(180, 180, 180, 0.2)',\r\n borderColor: null,\r\n borderWidth: 0,\r\n borderType: 'solid',\r\n borderRadius: 0,\r\n shadowBlur: 0,\r\n shadowColor: null,\r\n shadowOffsetX: 0,\r\n shadowOffsetY: 0,\r\n opacity: 1\r\n },\r\n select: {\r\n itemStyle: {\r\n borderColor: '#212121'\r\n }\r\n },\r\n realtimeSort: false\r\n });\r\n return BarSeriesModel;\r\n}(BaseBarSeriesModel));\r\nSeriesModel.registerClass(BarSeriesModel);\n\nvar SausageShape = (function () {\r\n function SausageShape() {\r\n this.cx = 0;\r\n this.cy = 0;\r\n this.r0 = 0;\r\n this.r = 0;\r\n this.startAngle = 0;\r\n this.endAngle = Math.PI * 2;\r\n this.clockwise = true;\r\n }\r\n return SausageShape;\r\n}());\r\nvar SausagePath = (function (_super) {\r\n __extends(SausagePath, _super);\r\n function SausagePath(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'sausage';\r\n return _this;\r\n }\r\n SausagePath.prototype.getDefaultShape = function () {\r\n return new SausageShape();\r\n };\r\n SausagePath.prototype.buildPath = function (ctx, shape) {\r\n var x = shape.cx;\r\n var y = shape.cy;\r\n var r0 = Math.max(shape.r0 || 0, 0);\r\n var r = Math.max(shape.r, 0);\r\n var dr = (r - r0) * 0.5;\r\n var rCenter = r0 + dr;\r\n var startAngle = shape.startAngle;\r\n var endAngle = shape.endAngle;\r\n var clockwise = shape.clockwise;\r\n var unitStartX = Math.cos(startAngle);\r\n var unitStartY = Math.sin(startAngle);\r\n var unitEndX = Math.cos(endAngle);\r\n var unitEndY = Math.sin(endAngle);\r\n var lessThanCircle = clockwise\r\n ? endAngle - startAngle < Math.PI * 2\r\n : startAngle - endAngle < Math.PI * 2;\r\n if (lessThanCircle) {\r\n ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\r\n ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\r\n }\r\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\r\n ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\r\n if (r0 !== 0) {\r\n ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\r\n ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\r\n }\r\n ctx.closePath();\r\n };\r\n return SausagePath;\r\n}(Path));\n\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth'];\r\nvar BAR_BORDER_RADIUS_QUERY = ['itemStyle', 'borderRadius'];\r\nvar _eventPos = [0, 0];\r\nvar mathMax$6 = Math.max;\r\nvar mathMin$6 = Math.min;\r\nfunction getClipArea(coord, data) {\r\n var coordSysClipArea = coord.getArea && coord.getArea();\r\n if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n var baseAxis = coord.getBaseAxis();\r\n if (baseAxis.type !== 'category' || !baseAxis.onBand) {\r\n var expandWidth = data.getLayout('bandWidth');\r\n if (baseAxis.isHorizontal()) {\r\n coordSysClipArea.x -= expandWidth;\r\n coordSysClipArea.width += expandWidth * 2;\r\n }\r\n else {\r\n coordSysClipArea.y -= expandWidth;\r\n coordSysClipArea.height += expandWidth * 2;\r\n }\r\n }\r\n }\r\n return coordSysClipArea;\r\n}\r\nvar BarView = (function (_super) {\r\n __extends(BarView, _super);\r\n function BarView() {\r\n var _this = _super.call(this) || this;\r\n _this.type = BarView.type;\r\n _this._isFirstFrame = true;\r\n return _this;\r\n }\r\n BarView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n this._model = seriesModel;\r\n this.removeOnRenderedListener(api);\r\n this._updateDrawMode(seriesModel);\r\n var coordinateSystemType = seriesModel.get('coordinateSystem');\r\n if (coordinateSystemType === 'cartesian2d'\r\n || coordinateSystemType === 'polar') {\r\n this._isLargeDraw\r\n ? this._renderLarge(seriesModel, ecModel, api)\r\n : this._renderNormal(seriesModel, ecModel, api, payload);\r\n }\r\n else if (__DEV__) {\r\n console.warn('Only cartesian2d and polar supported for bar.');\r\n }\r\n };\r\n BarView.prototype.incrementalPrepareRender = function (seriesModel) {\r\n this._clear();\r\n this._updateDrawMode(seriesModel);\r\n this._updateLargeClip(seriesModel);\r\n };\r\n BarView.prototype.incrementalRender = function (params, seriesModel) {\r\n this._incrementalRenderLarge(params, seriesModel);\r\n };\r\n BarView.prototype._updateDrawMode = function (seriesModel) {\r\n var isLargeDraw = seriesModel.pipelineContext.large;\r\n if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\r\n this._isLargeDraw = isLargeDraw;\r\n this._clear();\r\n }\r\n };\r\n BarView.prototype._renderNormal = function (seriesModel, ecModel, api, payload) {\r\n var _this = this;\r\n var group = this.group;\r\n var data = seriesModel.getData();\r\n var oldData = this._data;\r\n var coord = seriesModel.coordinateSystem;\r\n var baseAxis = coord.getBaseAxis();\r\n var isHorizontalOrRadial;\r\n if (coord.type === 'cartesian2d') {\r\n isHorizontalOrRadial = baseAxis.isHorizontal();\r\n }\r\n else if (coord.type === 'polar') {\r\n isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n }\r\n var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\r\n var axis2DModel = baseAxis.model;\r\n var realtimeSort = seriesModel.get('realtimeSort');\r\n if (realtimeSort && data.count()) {\r\n if (this._isFirstFrame) {\r\n this._initSort(data, isHorizontalOrRadial, baseAxis, api);\r\n this._isFirstFrame = false;\r\n return;\r\n }\r\n else {\r\n this._onRendered = function () {\r\n var orderMap = function (idx) {\r\n var el = data.getItemGraphicEl(idx);\r\n if (el) {\r\n var shape = el.shape;\r\n return (isHorizontalOrRadial ? shape.y + shape.height : shape.x + shape.width) || 0;\r\n }\r\n else {\r\n return 0;\r\n }\r\n };\r\n _this._updateSort(data, orderMap, baseAxis, api);\r\n };\r\n api.getZr().on('rendered', this._onRendered);\r\n }\r\n }\r\n var needsClip = seriesModel.get('clip', true) || realtimeSort;\r\n var coordSysClipArea = getClipArea(coord, data);\r\n group.removeClipPath();\r\n var roundCap = seriesModel.get('roundCap', true);\r\n var drawBackground = seriesModel.get('showBackground', true);\r\n var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n var barBorderRadius = backgroundModel.get('borderRadius') || 0;\r\n var bgEls = [];\r\n var oldBgEls = this._backgroundEls;\r\n var isInitSort = payload && payload.isInitSort;\r\n var isChangeOrder = payload && payload.type === 'changeAxisOrder';\r\n function createBackground(dataIndex) {\r\n var bgLayout = getLayout[coord.type](data, dataIndex);\r\n var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\r\n bgEl.useStyle(backgroundModel.getItemStyle());\r\n if (coord.type === 'cartesian2d') {\r\n bgEl.setShape('r', barBorderRadius);\r\n }\r\n bgEls[dataIndex] = bgEl;\r\n return bgEl;\r\n }\r\n data.diff(oldData)\r\n .add(function (dataIndex) {\r\n var itemModel = data.getItemModel(dataIndex);\r\n var layout = getLayout[coord.type](data, dataIndex, itemModel);\r\n if (drawBackground) {\r\n createBackground(dataIndex);\r\n }\r\n if (!data.hasValue(dataIndex)) {\r\n return;\r\n }\r\n var isClipped = false;\r\n if (needsClip) {\r\n isClipped = clip[coord.type](coordSysClipArea, layout);\r\n }\r\n var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);\r\n updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n if (isInitSort) {\r\n el.attr({ shape: layout });\r\n }\r\n else if (realtimeSort) {\r\n updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, dataIndex, isHorizontalOrRadial, false, false);\r\n }\r\n else {\r\n initProps(el, { shape: layout }, seriesModel, dataIndex);\r\n }\r\n data.setItemGraphicEl(dataIndex, el);\r\n group.add(el);\r\n el.ignore = isClipped;\r\n })\r\n .update(function (newIndex, oldIndex) {\r\n var itemModel = data.getItemModel(newIndex);\r\n var layout = getLayout[coord.type](data, newIndex, itemModel);\r\n if (drawBackground) {\r\n var bgEl = void 0;\r\n if (oldBgEls.length === 0) {\r\n bgEl = createBackground(oldIndex);\r\n }\r\n else {\r\n bgEl = oldBgEls[oldIndex];\r\n bgEl.useStyle(backgroundModel.getItemStyle());\r\n if (coord.type === 'cartesian2d') {\r\n bgEl.setShape('r', barBorderRadius);\r\n }\r\n bgEls[newIndex] = bgEl;\r\n }\r\n var bgLayout = getLayout[coord.type](data, newIndex);\r\n var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\r\n updateProps(bgEl, { shape: shape }, animationModel, newIndex);\r\n }\r\n var el = oldData.getItemGraphicEl(oldIndex);\r\n if (!data.hasValue(newIndex)) {\r\n group.remove(el);\r\n el = null;\r\n return;\r\n }\r\n var isClipped = false;\r\n if (needsClip) {\r\n isClipped = clip[coord.type](coordSysClipArea, layout);\r\n if (isClipped) {\r\n group.remove(el);\r\n }\r\n }\r\n if (!el) {\r\n el = elementCreator[coord.type](seriesModel, data, newIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);\r\n }\r\n if (!isChangeOrder) {\r\n updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n }\r\n if (isInitSort) {\r\n el.attr({ shape: layout });\r\n }\r\n else if (realtimeSort) {\r\n updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, newIndex, isHorizontalOrRadial, true, isChangeOrder);\r\n }\r\n else {\r\n updateProps(el, {\r\n shape: layout\r\n }, seriesModel, newIndex, null);\r\n }\r\n data.setItemGraphicEl(newIndex, el);\r\n el.ignore = isClipped;\r\n group.add(el);\r\n })\r\n .remove(function (dataIndex) {\r\n var el = oldData.getItemGraphicEl(dataIndex);\r\n el && removeElementWithFadeOut(el, seriesModel, dataIndex);\r\n })\r\n .execute();\r\n var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\r\n bgGroup.removeAll();\r\n for (var i = 0; i < bgEls.length; ++i) {\r\n bgGroup.add(bgEls[i]);\r\n }\r\n group.add(bgGroup);\r\n this._backgroundEls = bgEls;\r\n this._data = data;\r\n };\r\n BarView.prototype._renderLarge = function (seriesModel, ecModel, api) {\r\n this._clear();\r\n createLarge(seriesModel, this.group);\r\n this._updateLargeClip(seriesModel);\r\n };\r\n BarView.prototype._incrementalRenderLarge = function (params, seriesModel) {\r\n this._removeBackground();\r\n createLarge(seriesModel, this.group, true);\r\n };\r\n BarView.prototype._updateLargeClip = function (seriesModel) {\r\n var clipPath = seriesModel.get('clip', true)\r\n ? createClipPath(seriesModel.coordinateSystem, false, seriesModel)\r\n : null;\r\n if (clipPath) {\r\n this.group.setClipPath(clipPath);\r\n }\r\n else {\r\n this.group.removeClipPath();\r\n }\r\n };\r\n BarView.prototype._dataSort = function (data, idxMap) {\r\n var info = [];\r\n data.each(function (idx) {\r\n info.push({\r\n mappedValue: idxMap(idx),\r\n ordinalNumber: idx,\r\n beforeSortIndex: null\r\n });\r\n });\r\n info.sort(function (a, b) {\r\n return b.mappedValue - a.mappedValue;\r\n });\r\n for (var i = 0; i < info.length; ++i) {\r\n info[info[i].ordinalNumber].beforeSortIndex = i;\r\n }\r\n return map(info, function (item) {\r\n return {\r\n ordinalNumber: item.ordinalNumber,\r\n beforeSortIndex: item.beforeSortIndex\r\n };\r\n });\r\n };\r\n BarView.prototype._isDataOrderChanged = function (data, orderMap, oldOrder) {\r\n var oldCount = oldOrder ? oldOrder.length : 0;\r\n if (oldCount !== data.count()) {\r\n return true;\r\n }\r\n var lastValue = Number.MAX_VALUE;\r\n for (var i = 0; i < oldOrder.length; ++i) {\r\n var value = orderMap(oldOrder[i].ordinalNumber);\r\n if (value > lastValue) {\r\n return true;\r\n }\r\n lastValue = value;\r\n }\r\n return false;\r\n };\r\n BarView.prototype._updateSort = function (data, orderMap, baseAxis, api) {\r\n var oldOrder = baseAxis.scale.getCategorySortInfo();\r\n var isOrderChanged = this._isDataOrderChanged(data, orderMap, oldOrder);\r\n if (isOrderChanged) {\r\n var newOrder = this._dataSort(data, orderMap);\r\n var extent = baseAxis.scale.getExtent();\r\n for (var i = extent[0]; i < extent[1]; ++i) {\r\n if (!oldOrder[i] || oldOrder[i].ordinalNumber !== newOrder[i].ordinalNumber) {\r\n this.removeOnRenderedListener(api);\r\n var action = {\r\n type: 'changeAxisOrder',\r\n componentType: baseAxis.dim + 'Axis',\r\n axisId: baseAxis.index,\r\n sortInfo: newOrder\r\n };\r\n api.dispatchAction(action);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n BarView.prototype._initSort = function (data, isHorizontal, baseAxis, api) {\r\n var action = {\r\n type: 'changeAxisOrder',\r\n componentType: baseAxis.dim + 'Axis',\r\n isInitSort: true,\r\n axisId: baseAxis.index,\r\n sortInfo: this._dataSort(data, function (idx) { return parseFloat(data.get(isHorizontal ? 'y' : 'x', idx)) || 0; })\r\n };\r\n api.dispatchAction(action);\r\n };\r\n BarView.prototype.remove = function (ecModel, api) {\r\n this._clear(this._model);\r\n this.removeOnRenderedListener(api);\r\n };\r\n BarView.prototype.dispose = function (ecModel, api) {\r\n this.removeOnRenderedListener(api);\r\n };\r\n BarView.prototype.removeOnRenderedListener = function (api) {\r\n if (this._onRendered) {\r\n api.getZr().off('rendered', this._onRendered);\r\n this._onRendered = null;\r\n }\r\n };\r\n BarView.prototype._clear = function (model) {\r\n var group = this.group;\r\n var data = this._data;\r\n if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {\r\n this._removeBackground();\r\n this._backgroundEls = [];\r\n data.eachItemGraphicEl(function (el) {\r\n removeElementWithFadeOut(el, model, getECData(el).dataIndex);\r\n });\r\n }\r\n else {\r\n group.removeAll();\r\n }\r\n this._data = null;\r\n this._isFirstFrame = true;\r\n };\r\n BarView.prototype._removeBackground = function () {\r\n this.group.remove(this._backgroundGroup);\r\n this._backgroundGroup = null;\r\n };\r\n BarView.type = 'bar';\r\n return BarView;\r\n}(ChartView));\r\nvar clip = {\r\n cartesian2d: function (coordSysBoundingRect, layout) {\r\n var signWidth = layout.width < 0 ? -1 : 1;\r\n var signHeight = layout.height < 0 ? -1 : 1;\r\n if (signWidth < 0) {\r\n layout.x += layout.width;\r\n layout.width = -layout.width;\r\n }\r\n if (signHeight < 0) {\r\n layout.y += layout.height;\r\n layout.height = -layout.height;\r\n }\r\n var x = mathMax$6(layout.x, coordSysBoundingRect.x);\r\n var x2 = mathMin$6(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\r\n var y = mathMax$6(layout.y, coordSysBoundingRect.y);\r\n var y2 = mathMin$6(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\r\n layout.x = x;\r\n layout.y = y;\r\n layout.width = x2 - x;\r\n layout.height = y2 - y;\r\n var clipped = layout.width < 0 || layout.height < 0;\r\n if (signWidth < 0) {\r\n layout.x += layout.width;\r\n layout.width = -layout.width;\r\n }\r\n if (signHeight < 0) {\r\n layout.y += layout.height;\r\n layout.height = -layout.height;\r\n }\r\n return clipped;\r\n },\r\n polar: function (coordSysClipArea, layout) {\r\n var signR = layout.r0 <= layout.r ? 1 : -1;\r\n if (signR < 0) {\r\n var tmp = layout.r;\r\n layout.r = layout.r0;\r\n layout.r0 = tmp;\r\n }\r\n var r = mathMin$6(layout.r, coordSysClipArea.r);\r\n var r0 = mathMax$6(layout.r0, coordSysClipArea.r0);\r\n layout.r = r;\r\n layout.r0 = r0;\r\n var clipped = r - r0 < 0;\r\n if (signR < 0) {\r\n var tmp = layout.r;\r\n layout.r = layout.r0;\r\n layout.r0 = tmp;\r\n }\r\n return clipped;\r\n }\r\n};\r\nvar elementCreator = {\r\n cartesian2d: function (seriesModel, data, newIndex, layout, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {\r\n var rect = new Rect({\r\n shape: extend({}, layout),\r\n z2: 1\r\n });\r\n rect.__dataIndex = newIndex;\r\n rect.name = 'item';\r\n if (animationModel) {\r\n var rectShape = rect.shape;\r\n var animateProperty = isHorizontal ? 'height' : 'width';\r\n rectShape[animateProperty] = 0;\r\n }\r\n return rect;\r\n },\r\n polar: function (seriesModel, data, newIndex, layout, isRadial, animationModel, axisModel, isUpdate, roundCap) {\r\n var clockwise = layout.startAngle < layout.endAngle;\r\n var ShapeClass = (!isRadial && roundCap) ? SausagePath : Sector;\r\n var sector = new ShapeClass({\r\n shape: defaults({ clockwise: clockwise }, layout),\r\n z2: 1\r\n });\r\n sector.name = 'item';\r\n if (animationModel) {\r\n var sectorShape = sector.shape;\r\n var animateProperty = isRadial ? 'r' : 'endAngle';\r\n var animateTarget = {};\r\n sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\r\n animateTarget[animateProperty] = layout[animateProperty];\r\n (isUpdate ? updateProps : initProps)(sector, {\r\n shape: animateTarget\r\n }, animationModel);\r\n }\r\n return sector;\r\n }\r\n};\r\nfunction updateRealtimeAnimation(seriesModel, axisModel, animationModel, el, layout, newIndex, isHorizontal, isUpdate, isChangeOrder) {\r\n if (animationModel || axisModel) {\r\n var seriesTarget = void 0;\r\n var axisTarget = void 0;\r\n if (isHorizontal) {\r\n axisTarget = {\r\n x: layout.x,\r\n width: layout.width\r\n };\r\n seriesTarget = {\r\n y: layout.y,\r\n height: layout.height\r\n };\r\n }\r\n else {\r\n axisTarget = {\r\n y: layout.y,\r\n height: layout.height\r\n };\r\n seriesTarget = {\r\n x: layout.x,\r\n width: layout.width\r\n };\r\n }\r\n if (!isChangeOrder) {\r\n (isUpdate ? updateProps : initProps)(el, {\r\n shape: seriesTarget\r\n }, seriesModel, newIndex, null);\r\n }\r\n (isUpdate ? updateProps : initProps)(el, {\r\n shape: axisTarget\r\n }, axisModel, newIndex);\r\n }\r\n}\r\nvar getLayout = {\r\n cartesian2d: function (data, dataIndex, itemModel) {\r\n var layout = data.getItemLayout(dataIndex);\r\n var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0;\r\n var signX = layout.width > 0 ? 1 : -1;\r\n var signY = layout.height > 0 ? 1 : -1;\r\n return {\r\n x: layout.x + signX * fixedLineWidth / 2,\r\n y: layout.y + signY * fixedLineWidth / 2,\r\n width: layout.width - signX * fixedLineWidth,\r\n height: layout.height - signY * fixedLineWidth\r\n };\r\n },\r\n polar: function (data, dataIndex, itemModel) {\r\n var layout = data.getItemLayout(dataIndex);\r\n return {\r\n cx: layout.cx,\r\n cy: layout.cy,\r\n r0: layout.r0,\r\n r: layout.r,\r\n startAngle: layout.startAngle,\r\n endAngle: layout.endAngle\r\n };\r\n }\r\n};\r\nfunction isZeroOnPolar(layout) {\r\n return layout.startAngle != null\r\n && layout.endAngle != null\r\n && layout.startAngle === layout.endAngle;\r\n}\r\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\r\n var style = data.getItemVisual(dataIndex, 'style');\r\n if (!isPolar) {\r\n el.setShape('r', itemModel.get(BAR_BORDER_RADIUS_QUERY) || 0);\r\n }\r\n el.useStyle(style);\r\n var cursorStyle = itemModel.getShallow('cursor');\r\n cursorStyle && el.attr('cursor', cursorStyle);\r\n if (!isPolar) {\r\n var labelPositionOutside = isHorizontal\r\n ? (layout.height > 0 ? 'bottom' : 'top')\r\n : (layout.width > 0 ? 'left' : 'right');\r\n var labelStatesModels = getLabelStatesModels(itemModel);\r\n setLabelStyle(el, labelStatesModels, {\r\n labelFetcher: seriesModel,\r\n labelDataIndex: dataIndex,\r\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\r\n inheritColor: style.fill,\r\n defaultOpacity: style.opacity,\r\n defaultOutsidePosition: labelPositionOutside\r\n });\r\n var label = el.getTextContent();\r\n setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function (value) { return getDefaultInterpolatedLabel(data, value); });\r\n }\r\n var emphasisModel = itemModel.getModel(['emphasis']);\r\n enableHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n setStatesStylesFromModel(el, itemModel);\r\n if (isZeroOnPolar(layout)) {\r\n el.style.fill = 'none';\r\n el.style.stroke = 'none';\r\n each(el.states, function (state) {\r\n if (state.style) {\r\n state.style.fill = state.style.stroke = 'none';\r\n }\r\n });\r\n }\r\n}\r\nfunction getLineWidth(itemModel, rawLayout) {\r\n var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\r\n var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\r\n var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\r\n return Math.min(lineWidth, width, height);\r\n}\r\nvar LagePathShape = (function () {\r\n function LagePathShape() {\r\n }\r\n return LagePathShape;\r\n}());\r\nvar LargePath = (function (_super) {\r\n __extends(LargePath, _super);\r\n function LargePath(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'largeBar';\r\n return _this;\r\n }\r\n LargePath.prototype.getDefaultShape = function () {\r\n return new LagePathShape();\r\n };\r\n LargePath.prototype.buildPath = function (ctx, shape) {\r\n var points = shape.points;\r\n var startPoint = this.__startPoint;\r\n var baseDimIdx = this.__baseDimIdx;\r\n for (var i = 0; i < points.length; i += 2) {\r\n startPoint[baseDimIdx] = points[i + baseDimIdx];\r\n ctx.moveTo(startPoint[0], startPoint[1]);\r\n ctx.lineTo(points[i], points[i + 1]);\r\n }\r\n };\r\n return LargePath;\r\n}(Path));\r\nfunction createLarge(seriesModel, group, incremental) {\r\n var data = seriesModel.getData();\r\n var startPoint = [];\r\n var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\r\n startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\r\n var largeDataIndices = data.getLayout('largeDataIndices');\r\n var barWidth = data.getLayout('barWidth');\r\n var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n var drawBackground = seriesModel.get('showBackground', true);\r\n if (drawBackground) {\r\n var points = data.getLayout('largeBackgroundPoints');\r\n var backgroundStartPoint = [];\r\n backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\r\n var bgEl = new LargePath({\r\n shape: { points: points },\r\n incremental: !!incremental,\r\n silent: true,\r\n z2: 0\r\n });\r\n bgEl.__startPoint = backgroundStartPoint;\r\n bgEl.__baseDimIdx = baseDimIdx;\r\n bgEl.__largeDataIndices = largeDataIndices;\r\n bgEl.__barWidth = barWidth;\r\n setLargeBackgroundStyle(bgEl, backgroundModel, data);\r\n group.add(bgEl);\r\n }\r\n var el = new LargePath({\r\n shape: { points: data.getLayout('largePoints') },\r\n incremental: !!incremental\r\n });\r\n el.__startPoint = startPoint;\r\n el.__baseDimIdx = baseDimIdx;\r\n el.__largeDataIndices = largeDataIndices;\r\n el.__barWidth = barWidth;\r\n group.add(el);\r\n setLargeStyle(el, seriesModel, data);\r\n getECData(el).seriesIndex = seriesModel.seriesIndex;\r\n if (!seriesModel.get('silent')) {\r\n el.on('mousedown', largePathUpdateDataIndex);\r\n el.on('mousemove', largePathUpdateDataIndex);\r\n }\r\n}\r\nvar largePathUpdateDataIndex = throttle(function (event) {\r\n var largePath = this;\r\n var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\r\n getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;\r\n}, 30, false);\r\nfunction largePathFindDataIndex(largePath, x, y) {\r\n var baseDimIdx = largePath.__baseDimIdx;\r\n var valueDimIdx = 1 - baseDimIdx;\r\n var points = largePath.shape.points;\r\n var largeDataIndices = largePath.__largeDataIndices;\r\n var barWidthHalf = Math.abs(largePath.__barWidth / 2);\r\n var startValueVal = largePath.__startPoint[valueDimIdx];\r\n _eventPos[0] = x;\r\n _eventPos[1] = y;\r\n var pointerBaseVal = _eventPos[baseDimIdx];\r\n var pointerValueVal = _eventPos[1 - baseDimIdx];\r\n var baseLowerBound = pointerBaseVal - barWidthHalf;\r\n var baseUpperBound = pointerBaseVal + barWidthHalf;\r\n for (var i = 0, len = points.length / 2; i < len; i++) {\r\n var ii = i * 2;\r\n var barBaseVal = points[ii + baseDimIdx];\r\n var barValueVal = points[ii + valueDimIdx];\r\n if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound\r\n && (startValueVal <= barValueVal\r\n ? (pointerValueVal >= startValueVal && pointerValueVal <= barValueVal)\r\n : (pointerValueVal >= barValueVal && pointerValueVal <= startValueVal))) {\r\n return largeDataIndices[i];\r\n }\r\n }\r\n return -1;\r\n}\r\nfunction setLargeStyle(el, seriesModel, data) {\r\n var globalStyle = data.getVisual('style');\r\n el.useStyle(extend({}, globalStyle));\r\n el.style.fill = null;\r\n el.style.stroke = globalStyle.fill;\r\n el.style.lineWidth = data.getLayout('barWidth');\r\n}\r\nfunction setLargeBackgroundStyle(el, backgroundModel, data) {\r\n var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\r\n var itemStyle = backgroundModel.getItemStyle();\r\n el.useStyle(itemStyle);\r\n el.style.fill = null;\r\n el.style.stroke = borderColor;\r\n el.style.lineWidth = data.getLayout('barWidth');\r\n}\r\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\r\n if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n var rectShape = layout;\r\n var coordLayout = coord.getArea();\r\n return {\r\n x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,\r\n y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,\r\n width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,\r\n height: isHorizontalOrRadial ? coordLayout.height : rectShape.height\r\n };\r\n }\r\n else {\r\n var coordLayout = coord.getArea();\r\n var sectorShape = layout;\r\n return {\r\n cx: coordLayout.cx,\r\n cy: coordLayout.cy,\r\n r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,\r\n r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,\r\n startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,\r\n endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2\r\n };\r\n }\r\n}\r\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\r\n var ElementClz = coord.type === 'polar' ? Sector : Rect;\r\n return new ElementClz({\r\n shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\r\n silent: true,\r\n z2: 0\r\n });\r\n}\r\nChartView.registerClass(BarView);\n\nregisterAction({\r\n type: 'changeAxisOrder',\r\n event: 'changeAxisOrder',\r\n update: 'update'\r\n}, function (payload, ecModel) {\r\n var componentType = payload.componentType || 'series';\r\n ecModel.eachComponent({ mainType: componentType, query: payload }, function (componentModel) {\r\n if (payload.sortInfo) {\r\n componentModel.axis.setCategorySortInfo(payload.sortInfo);\r\n }\r\n });\r\n});\n\nregisterLayout(PRIORITY.VISUAL.LAYOUT, curry(layout, 'bar'));\r\nregisterLayout(PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\r\nregisterVisual({\r\n seriesType: 'bar',\r\n reset: function (seriesModel) {\r\n seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n }\r\n});\r\nregisterProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('bar'));\n\nfunction createListSimply(seriesModel, opt, nameList) {\r\n opt = isArray(opt) && { coordDimensions: opt } || extend({}, opt);\r\n var source = seriesModel.getSource();\r\n var dimensionsInfo = createDimensions(source, opt);\r\n var list = new List(dimensionsInfo, seriesModel);\r\n list.initData(source, nameList);\r\n return list;\r\n}\n\nvar LegendVisualProvider = (function () {\r\n function LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\r\n this._getDataWithEncodedVisual = getDataWithEncodedVisual;\r\n this._getRawData = getRawData;\r\n }\r\n LegendVisualProvider.prototype.getAllNames = function () {\r\n var rawData = this._getRawData();\r\n return rawData.mapArray(rawData.getName);\r\n };\r\n LegendVisualProvider.prototype.containName = function (name) {\r\n var rawData = this._getRawData();\r\n return rawData.indexOfName(name) >= 0;\r\n };\r\n LegendVisualProvider.prototype.indexOfName = function (name) {\r\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n return dataWithEncodedVisual.indexOfName(name);\r\n };\r\n LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\r\n var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\r\n };\r\n return LegendVisualProvider;\r\n}());\n\nvar PieSeriesModel = (function (_super) {\r\n __extends(PieSeriesModel, _super);\r\n function PieSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.useColorPaletteOnData = true;\r\n return _this;\r\n }\r\n PieSeriesModel.prototype.init = function (option) {\r\n _super.prototype.init.apply(this, arguments);\r\n this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n this._defaultLabelLine(option);\r\n };\r\n PieSeriesModel.prototype.mergeOption = function () {\r\n _super.prototype.mergeOption.apply(this, arguments);\r\n };\r\n PieSeriesModel.prototype.getInitialData = function () {\r\n return createListSimply(this, {\r\n coordDimensions: ['value'],\r\n encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n });\r\n };\r\n PieSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n var data = this.getData();\r\n var params = _super.prototype.getDataParams.call(this, dataIndex);\r\n var valueList = [];\r\n data.each(data.mapDimension('value'), function (value) {\r\n valueList.push(value);\r\n });\r\n params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\r\n params.$vars.push('percent');\r\n return params;\r\n };\r\n PieSeriesModel.prototype._defaultLabelLine = function (option) {\r\n defaultEmphasis(option, 'labelLine', ['show']);\r\n var labelLineNormalOpt = option.labelLine;\r\n var labelLineEmphasisOpt = option.emphasis.labelLine;\r\n labelLineNormalOpt.show = labelLineNormalOpt.show\r\n && option.label.show;\r\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show\r\n && option.emphasis.label.show;\r\n };\r\n PieSeriesModel.type = 'series.pie';\r\n PieSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n legendHoverLink: true,\r\n center: ['50%', '50%'],\r\n radius: [0, '75%'],\r\n clockwise: true,\r\n startAngle: 90,\r\n minAngle: 0,\r\n minShowLabelAngle: 0,\r\n selectedOffset: 10,\r\n percentPrecision: 2,\r\n stillShowZeroSum: true,\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n width: null,\r\n height: null,\r\n label: {\r\n rotate: 0,\r\n show: true,\r\n overflow: 'truncate',\r\n position: 'outer',\r\n alignTo: 'none',\r\n edgeDistance: '25%',\r\n bleedMargin: 10,\r\n distanceToLabelLine: 5\r\n },\r\n labelLine: {\r\n show: true,\r\n length: 15,\r\n length2: 15,\r\n smooth: false,\r\n minTurnAngle: 90,\r\n maxSurfaceAngle: 90,\r\n lineStyle: {\r\n width: 1,\r\n type: 'solid'\r\n }\r\n },\r\n itemStyle: {\r\n borderWidth: 1\r\n },\r\n labelLayout: {\r\n hideOverlap: true\r\n },\r\n emphasis: {\r\n scale: true,\r\n scaleSize: 5\r\n },\r\n avoidLabelOverlap: true,\r\n animationType: 'expansion',\r\n animationDuration: 1000,\r\n animationTypeUpdate: 'transition',\r\n animationEasingUpdate: 'cubicInOut',\r\n animationDurationUpdate: 500,\r\n animationEasing: 'cubicInOut'\r\n };\r\n return PieSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(PieSeriesModel);\n\nvar RADIAN = Math.PI / 180;\r\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\r\n if (list.length < 2) {\r\n return;\r\n }\r\n function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\r\n var rB = semi.rB;\r\n var rB2 = rB * rB;\r\n for (var i = 0; i < semi.list.length; i++) {\r\n var item = semi.list[i];\r\n var dy = Math.abs(item.label.y - cy);\r\n var rA = r + item.len;\r\n var rA2 = rA * rA;\r\n var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\r\n item.label.x = cx + (dx + item.len2) * dir;\r\n }\r\n }\r\n function recalculateX(items) {\r\n var topSemi = { list: [], maxY: 0 };\r\n var bottomSemi = { list: [], maxY: 0 };\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i].labelAlignTo !== 'none') {\r\n continue;\r\n }\r\n var item = items[i];\r\n var semi = item.label.y > cy ? bottomSemi : topSemi;\r\n var dy = Math.abs(item.label.y - cy);\r\n if (dy > semi.maxY) {\r\n var dx = item.label.x - cx - item.len2 * dir;\r\n var rA = r + item.len;\r\n var rB = dx < rA\r\n ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA))\r\n : rA;\r\n semi.rB = rB;\r\n semi.maxY = dy;\r\n }\r\n semi.list.push(item);\r\n }\r\n recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\r\n recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\r\n }\r\n var len = list.length;\r\n for (var i = 0; i < len; i++) {\r\n if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\r\n var dx = list[i].label.x - farthestX;\r\n list[i].linePoints[1][0] += dx;\r\n list[i].label.x = farthestX;\r\n }\r\n }\r\n if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\r\n recalculateX(list);\r\n }\r\n}\r\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\r\n var leftList = [];\r\n var rightList = [];\r\n var leftmostX = Number.MAX_VALUE;\r\n var rightmostX = -Number.MAX_VALUE;\r\n for (var i = 0; i < labelLayoutList.length; i++) {\r\n var label = labelLayoutList[i].label;\r\n if (isPositionCenter(labelLayoutList[i])) {\r\n continue;\r\n }\r\n if (label.x < cx) {\r\n leftmostX = Math.min(leftmostX, label.x);\r\n leftList.push(labelLayoutList[i]);\r\n }\r\n else {\r\n rightmostX = Math.max(rightmostX, label.x);\r\n rightList.push(labelLayoutList[i]);\r\n }\r\n }\r\n adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\r\n adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\r\n for (var i = 0; i < labelLayoutList.length; i++) {\r\n var layout = labelLayoutList[i];\r\n var label = layout.label;\r\n if (isPositionCenter(layout)) {\r\n continue;\r\n }\r\n var linePoints = layout.linePoints;\r\n if (linePoints) {\r\n var isAlignToEdge = layout.labelAlignTo === 'edge';\r\n var realTextWidth = layout.rect.width;\r\n var targetTextWidth = void 0;\r\n if (isAlignToEdge) {\r\n if (label.x < cx) {\r\n targetTextWidth = linePoints[2][0] - layout.labelDistance\r\n - viewLeft - layout.edgeDistance;\r\n }\r\n else {\r\n targetTextWidth = viewLeft + viewWidth - layout.edgeDistance\r\n - linePoints[2][0] - layout.labelDistance;\r\n }\r\n }\r\n else {\r\n if (label.x < cx) {\r\n targetTextWidth = label.x - viewLeft - layout.bleedMargin;\r\n }\r\n else {\r\n targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\r\n }\r\n }\r\n if (targetTextWidth < layout.rect.width) {\r\n layout.label.style.width = targetTextWidth;\r\n if (layout.labelAlignTo === 'edge') {\r\n realTextWidth = targetTextWidth;\r\n }\r\n }\r\n var dist = linePoints[1][0] - linePoints[2][0];\r\n if (isAlignToEdge) {\r\n if (label.x < cx) {\r\n linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\r\n }\r\n else {\r\n linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance\r\n - realTextWidth - layout.labelDistance;\r\n }\r\n }\r\n else {\r\n if (label.x < cx) {\r\n linePoints[2][0] = label.x + layout.labelDistance;\r\n }\r\n else {\r\n linePoints[2][0] = label.x - layout.labelDistance;\r\n }\r\n linePoints[1][0] = linePoints[2][0] + dist;\r\n }\r\n linePoints[1][1] = linePoints[2][1] = label.y;\r\n }\r\n }\r\n}\r\nfunction isPositionCenter(sectorShape) {\r\n return sectorShape.position === 'center';\r\n}\r\nfunction pieLabelLayout(seriesModel) {\r\n var data = seriesModel.getData();\r\n var labelLayoutList = [];\r\n var cx;\r\n var cy;\r\n var hasLabelRotate = false;\r\n var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\r\n var viewRect = data.getLayout('viewRect');\r\n var r = data.getLayout('r');\r\n var viewWidth = viewRect.width;\r\n var viewLeft = viewRect.x;\r\n var viewTop = viewRect.y;\r\n var viewHeight = viewRect.height;\r\n function setNotShow(el) {\r\n el.ignore = true;\r\n }\r\n function isLabelShown(label) {\r\n if (!label.ignore) {\r\n return true;\r\n }\r\n for (var key in label.states) {\r\n if (label.states[key].ignore === false) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n data.each(function (idx) {\r\n var sector = data.getItemGraphicEl(idx);\r\n var sectorShape = sector.shape;\r\n var label = sector.getTextContent();\r\n var labelLine = sector.getTextGuideLine();\r\n var itemModel = data.getItemModel(idx);\r\n var labelModel = itemModel.getModel('label');\r\n var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\r\n var labelDistance = labelModel.get('distanceToLabelLine');\r\n var labelAlignTo = labelModel.get('alignTo');\r\n var edgeDistance = parsePercent$2(labelModel.get('edgeDistance'), viewWidth);\r\n var bleedMargin = labelModel.get('bleedMargin');\r\n var labelLineModel = itemModel.getModel('labelLine');\r\n var labelLineLen = labelLineModel.get('length');\r\n labelLineLen = parsePercent$2(labelLineLen, viewWidth);\r\n var labelLineLen2 = labelLineModel.get('length2');\r\n labelLineLen2 = parsePercent$2(labelLineLen2, viewWidth);\r\n if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\r\n each(label.states, setNotShow);\r\n label.ignore = true;\r\n return;\r\n }\r\n if (!isLabelShown(label)) {\r\n return;\r\n }\r\n var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\r\n var nx = Math.cos(midAngle);\r\n var ny = Math.sin(midAngle);\r\n var textX;\r\n var textY;\r\n var linePoints;\r\n var textAlign;\r\n cx = sectorShape.cx;\r\n cy = sectorShape.cy;\r\n var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\r\n if (labelPosition === 'center') {\r\n textX = sectorShape.cx;\r\n textY = sectorShape.cy;\r\n textAlign = 'center';\r\n }\r\n else {\r\n var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\r\n var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\r\n textX = x1 + nx * 3;\r\n textY = y1 + ny * 3;\r\n if (!isLabelInside) {\r\n var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\r\n var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\r\n var x3 = x2 + ((nx < 0 ? -1 : 1) * labelLineLen2);\r\n var y3 = y2;\r\n if (labelAlignTo === 'edge') {\r\n textX = nx < 0\r\n ? viewLeft + edgeDistance\r\n : viewLeft + viewWidth - edgeDistance;\r\n }\r\n else {\r\n textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\r\n }\r\n textY = y3;\r\n linePoints = [[x1, y1], [x2, y2], [x3, y3]];\r\n }\r\n textAlign = isLabelInside\r\n ? 'center'\r\n : (labelAlignTo === 'edge'\r\n ? (nx > 0 ? 'right' : 'left')\r\n : (nx > 0 ? 'left' : 'right'));\r\n }\r\n var labelRotate;\r\n var rotate = labelModel.get('rotate');\r\n if (typeof rotate === 'number') {\r\n labelRotate = rotate * (Math.PI / 180);\r\n }\r\n else {\r\n labelRotate = rotate\r\n ? (nx < 0 ? -midAngle + Math.PI : -midAngle)\r\n : 0;\r\n }\r\n hasLabelRotate = !!labelRotate;\r\n label.x = textX;\r\n label.y = textY;\r\n label.rotation = labelRotate;\r\n label.setStyle({\r\n verticalAlign: 'middle'\r\n });\r\n if (!isLabelInside) {\r\n var textRect = label.getBoundingRect().clone();\r\n textRect.applyTransform(label.getComputedTransform());\r\n var margin = (label.style.margin || 0) + 2.1;\r\n textRect.y -= margin / 2;\r\n textRect.height += margin;\r\n labelLayoutList.push({\r\n label: label,\r\n labelLine: labelLine,\r\n position: labelPosition,\r\n len: labelLineLen,\r\n len2: labelLineLen2,\r\n minTurnAngle: labelLineModel.get('minTurnAngle'),\r\n maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\r\n surfaceNormal: new Point(nx, ny),\r\n linePoints: linePoints,\r\n textAlign: textAlign,\r\n labelDistance: labelDistance,\r\n labelAlignTo: labelAlignTo,\r\n edgeDistance: edgeDistance,\r\n bleedMargin: bleedMargin,\r\n rect: textRect\r\n });\r\n }\r\n else {\r\n label.setStyle({\r\n align: textAlign\r\n });\r\n var selectState = label.states.select;\r\n if (selectState) {\r\n selectState.x += label.x;\r\n selectState.y += label.y;\r\n }\r\n }\r\n sector.setTextConfig({\r\n inside: isLabelInside\r\n });\r\n });\r\n if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\r\n avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\r\n }\r\n for (var i = 0; i < labelLayoutList.length; i++) {\r\n var layout = labelLayoutList[i];\r\n var label = layout.label;\r\n var labelLine = layout.labelLine;\r\n var notShowLabel = isNaN(label.x) || isNaN(label.y);\r\n if (label) {\r\n label.setStyle({\r\n align: layout.textAlign\r\n });\r\n if (notShowLabel) {\r\n each(label.states, setNotShow);\r\n label.ignore = true;\r\n }\r\n var selectState = label.states.select;\r\n if (selectState) {\r\n selectState.x += label.x;\r\n selectState.y += label.y;\r\n }\r\n }\r\n if (labelLine) {\r\n var linePoints = layout.linePoints;\r\n if (notShowLabel || !linePoints) {\r\n each(labelLine.states, setNotShow);\r\n labelLine.ignore = true;\r\n }\r\n else {\r\n limitTurnAngle(linePoints, layout.minTurnAngle);\r\n limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\r\n labelLine.setShape({ points: linePoints });\r\n label.__hostTarget.textGuideLineConfig = {\r\n anchor: new Point(linePoints[0][0], linePoints[0][1])\r\n };\r\n }\r\n }\r\n }\r\n}\n\nfunction getSectorCornerRadius(model, shape) {\r\n var cornerRadius = model.get('borderRadius');\r\n if (cornerRadius == null) {\r\n return null;\r\n }\r\n if (!isArray(cornerRadius)) {\r\n cornerRadius = [cornerRadius, cornerRadius];\r\n }\r\n return {\r\n innerCornerRadius: parsePercent(cornerRadius[0], shape.r0),\r\n cornerRadius: parsePercent(cornerRadius[1], shape.r)\r\n };\r\n}\n\nvar PiePiece = (function (_super) {\r\n __extends(PiePiece, _super);\r\n function PiePiece(data, idx, startAngle) {\r\n var _this = _super.call(this) || this;\r\n _this.z2 = 2;\r\n var polyline = new Polyline();\r\n var text = new ZRText();\r\n _this.setTextGuideLine(polyline);\r\n _this.setTextContent(text);\r\n _this.updateData(data, idx, startAngle, true);\r\n return _this;\r\n }\r\n PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\r\n var sector = this;\r\n var seriesModel = data.hostModel;\r\n var itemModel = data.getItemModel(idx);\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n var layout = data.getItemLayout(idx);\r\n var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout) || {}, layout);\r\n if (firstCreate) {\r\n sector.setShape(sectorShape);\r\n var animationType = seriesModel.getShallow('animationType');\r\n if (animationType === 'scale') {\r\n sector.shape.r = layout.r0;\r\n initProps(sector, {\r\n shape: {\r\n r: layout.r\r\n }\r\n }, seriesModel, idx);\r\n }\r\n else {\r\n if (startAngle != null) {\r\n sector.setShape({ startAngle: startAngle, endAngle: startAngle });\r\n initProps(sector, {\r\n shape: {\r\n startAngle: layout.startAngle,\r\n endAngle: layout.endAngle\r\n }\r\n }, seriesModel, idx);\r\n }\r\n else {\r\n sector.shape.endAngle = layout.startAngle;\r\n updateProps(sector, {\r\n shape: {\r\n endAngle: layout.endAngle\r\n }\r\n }, seriesModel, idx);\r\n }\r\n }\r\n }\r\n else {\r\n updateProps(sector, {\r\n shape: sectorShape\r\n }, seriesModel, idx);\r\n }\r\n sector.useStyle(data.getItemVisual(idx, 'style'));\r\n setStatesStylesFromModel(sector, itemModel);\r\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\r\n var offset = seriesModel.get('selectedOffset');\r\n var dx = Math.cos(midAngle) * offset;\r\n var dy = Math.sin(midAngle) * offset;\r\n var cursorStyle = itemModel.getShallow('cursor');\r\n cursorStyle && sector.attr('cursor', cursorStyle);\r\n this._updateLabel(seriesModel, data, idx);\r\n sector.ensureState('emphasis').shape = __assign({ r: layout.r + (emphasisModel.get('scale')\r\n ? (emphasisModel.get('scaleSize') || 0) : 0) }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\r\n extend(sector.ensureState('select'), {\r\n x: dx,\r\n y: dy,\r\n shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\r\n });\r\n extend(sector.ensureState('blur'), {\r\n shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\r\n });\r\n var labelLine = sector.getTextGuideLine();\r\n var labelText = sector.getTextContent();\r\n extend(labelLine.ensureState('select'), {\r\n x: dx,\r\n y: dy\r\n });\r\n extend(labelText.ensureState('select'), {\r\n x: dx,\r\n y: dy\r\n });\r\n enableHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n };\r\n PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\r\n var sector = this;\r\n var itemModel = data.getItemModel(idx);\r\n var labelLineModel = itemModel.getModel('labelLine');\r\n var style = data.getItemVisual(idx, 'style');\r\n var visualColor = style && style.fill;\r\n var visualOpacity = style && style.opacity;\r\n setLabelStyle(sector, getLabelStatesModels(itemModel), {\r\n labelFetcher: data.hostModel,\r\n labelDataIndex: idx,\r\n inheritColor: visualColor,\r\n defaultOpacity: visualOpacity,\r\n defaultText: seriesModel.getFormattedLabel(idx, 'normal')\r\n || data.getName(idx)\r\n });\r\n var labelText = sector.getTextContent();\r\n sector.setTextConfig({\r\n position: null,\r\n rotation: null\r\n });\r\n labelText.attr({\r\n z2: 10\r\n });\r\n setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\r\n stroke: visualColor,\r\n opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\r\n });\r\n };\r\n return PiePiece;\r\n}(Sector));\r\nvar PieView = (function (_super) {\r\n __extends(PieView, _super);\r\n function PieView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.ignoreLabelLineUpdate = true;\r\n return _this;\r\n }\r\n PieView.prototype.init = function () {\r\n var sectorGroup = new Group();\r\n this._sectorGroup = sectorGroup;\r\n };\r\n PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n var data = seriesModel.getData();\r\n var oldData = this._data;\r\n var group = this.group;\r\n var startAngle;\r\n if (!oldData && data.count() > 0) {\r\n var shape = data.getItemLayout(0);\r\n for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\r\n shape = data.getItemLayout(s);\r\n }\r\n if (shape) {\r\n startAngle = shape.startAngle;\r\n }\r\n }\r\n data.diff(oldData)\r\n .add(function (idx) {\r\n var piePiece = new PiePiece(data, idx, startAngle);\r\n data.setItemGraphicEl(idx, piePiece);\r\n group.add(piePiece);\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n var piePiece = oldData.getItemGraphicEl(oldIdx);\r\n piePiece.updateData(data, newIdx, startAngle);\r\n piePiece.off('click');\r\n group.add(piePiece);\r\n data.setItemGraphicEl(newIdx, piePiece);\r\n })\r\n .remove(function (idx) {\r\n var piePiece = oldData.getItemGraphicEl(idx);\r\n removeElementWithFadeOut(piePiece, seriesModel, idx);\r\n })\r\n .execute();\r\n pieLabelLayout(seriesModel);\r\n if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\r\n this._data = data;\r\n }\r\n };\r\n PieView.prototype.dispose = function () { };\r\n PieView.prototype.containPoint = function (point, seriesModel) {\r\n var data = seriesModel.getData();\r\n var itemLayout = data.getItemLayout(0);\r\n if (itemLayout) {\r\n var dx = point[0] - itemLayout.cx;\r\n var dy = point[1] - itemLayout.cy;\r\n var radius = Math.sqrt(dx * dx + dy * dy);\r\n return radius <= itemLayout.r && radius >= itemLayout.r0;\r\n }\r\n };\r\n PieView.type = 'pie';\r\n return PieView;\r\n}(ChartView));\r\nChartView.registerClass(PieView);\n\nvar PI2$8 = Math.PI * 2;\r\nvar RADIAN$1 = Math.PI / 180;\r\nfunction getViewRect(seriesModel, api) {\r\n return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n}\r\nfunction pieLayout(seriesType, ecModel, api) {\r\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var valueDim = data.mapDimension('value');\r\n var viewRect = getViewRect(seriesModel, api);\r\n var center = seriesModel.get('center');\r\n var radius = seriesModel.get('radius');\r\n if (!isArray(radius)) {\r\n radius = [0, radius];\r\n }\r\n if (!isArray(center)) {\r\n center = [center, center];\r\n }\r\n var width = parsePercent$2(viewRect.width, api.getWidth());\r\n var height = parsePercent$2(viewRect.height, api.getHeight());\r\n var size = Math.min(width, height);\r\n var cx = parsePercent$2(center[0], width) + viewRect.x;\r\n var cy = parsePercent$2(center[1], height) + viewRect.y;\r\n var r0 = parsePercent$2(radius[0], size / 2);\r\n var r = parsePercent$2(radius[1], size / 2);\r\n var startAngle = -seriesModel.get('startAngle') * RADIAN$1;\r\n var minAngle = seriesModel.get('minAngle') * RADIAN$1;\r\n var validDataCount = 0;\r\n data.each(valueDim, function (value) {\r\n !isNaN(value) && validDataCount++;\r\n });\r\n var sum = data.getSum(valueDim);\r\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\r\n var clockwise = seriesModel.get('clockwise');\r\n var roseType = seriesModel.get('roseType');\r\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\r\n var extent = data.getDataExtent(valueDim);\r\n extent[0] = 0;\r\n var restAngle = PI2$8;\r\n var valueSumLargerThanMinAngle = 0;\r\n var currentAngle = startAngle;\r\n var dir = clockwise ? 1 : -1;\r\n data.setLayout({ viewRect: viewRect, r: r });\r\n data.each(valueDim, function (value, idx) {\r\n var angle;\r\n if (isNaN(value)) {\r\n data.setItemLayout(idx, {\r\n angle: NaN,\r\n startAngle: NaN,\r\n endAngle: NaN,\r\n clockwise: clockwise,\r\n cx: cx,\r\n cy: cy,\r\n r0: r0,\r\n r: roseType\r\n ? NaN\r\n : r\r\n });\r\n return;\r\n }\r\n if (roseType !== 'area') {\r\n angle = (sum === 0 && stillShowZeroSum)\r\n ? unitRadian : (value * unitRadian);\r\n }\r\n else {\r\n angle = PI2$8 / validDataCount;\r\n }\r\n if (angle < minAngle) {\r\n angle = minAngle;\r\n restAngle -= minAngle;\r\n }\r\n else {\r\n valueSumLargerThanMinAngle += value;\r\n }\r\n var endAngle = currentAngle + dir * angle;\r\n data.setItemLayout(idx, {\r\n angle: angle,\r\n startAngle: currentAngle,\r\n endAngle: endAngle,\r\n clockwise: clockwise,\r\n cx: cx,\r\n cy: cy,\r\n r0: r0,\r\n r: roseType\r\n ? linearMap(value, extent, [r0, r])\r\n : r\r\n });\r\n currentAngle = endAngle;\r\n });\r\n if (restAngle < PI2$8 && validDataCount) {\r\n if (restAngle <= 1e-3) {\r\n var angle_1 = PI2$8 / validDataCount;\r\n data.each(valueDim, function (value, idx) {\r\n if (!isNaN(value)) {\r\n var layout_1 = data.getItemLayout(idx);\r\n layout_1.angle = angle_1;\r\n layout_1.startAngle = startAngle + dir * idx * angle_1;\r\n layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;\r\n }\r\n });\r\n }\r\n else {\r\n unitRadian = restAngle / valueSumLargerThanMinAngle;\r\n currentAngle = startAngle;\r\n data.each(valueDim, function (value, idx) {\r\n if (!isNaN(value)) {\r\n var layout_2 = data.getItemLayout(idx);\r\n var angle = layout_2.angle === minAngle\r\n ? minAngle : value * unitRadian;\r\n layout_2.startAngle = currentAngle;\r\n layout_2.endAngle = currentAngle + dir * angle;\r\n currentAngle += dir * angle;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n}\n\nfunction dataFilter(seriesType) {\r\n return {\r\n seriesType: seriesType,\r\n reset: function (seriesModel, ecModel) {\r\n var legendModels = ecModel.findComponents({\r\n mainType: 'legend'\r\n });\r\n if (!legendModels || !legendModels.length) {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n data.filterSelf(function (idx) {\r\n var name = data.getName(idx);\r\n for (var i = 0; i < legendModels.length; i++) {\r\n if (!legendModels[i].isSelected(name)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n };\r\n}\n\ncreateLegacyDataSelectAction('pie', registerAction);\r\nregisterLayout(curry(pieLayout, 'pie'));\r\nregisterProcessor(dataFilter('pie'));\n\nvar ScatterSeriesModel = (function (_super) {\r\n __extends(ScatterSeriesModel, _super);\r\n function ScatterSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ScatterSeriesModel.type;\r\n _this.hasSymbolVisual = true;\r\n return _this;\r\n }\r\n ScatterSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListFromArray(this.getSource(), this, {\r\n useEncodeDefaulter: true\r\n });\r\n };\r\n ScatterSeriesModel.prototype.getProgressive = function () {\r\n var progressive = this.option.progressive;\r\n if (progressive == null) {\r\n return this.option.large ? 5e3 : this.get('progressive');\r\n }\r\n return progressive;\r\n };\r\n ScatterSeriesModel.prototype.getProgressiveThreshold = function () {\r\n var progressiveThreshold = this.option.progressiveThreshold;\r\n if (progressiveThreshold == null) {\r\n return this.option.large ? 1e4 : this.get('progressiveThreshold');\r\n }\r\n return progressiveThreshold;\r\n };\r\n ScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n return selectors.point(data.getItemLayout(dataIndex));\r\n };\r\n ScatterSeriesModel.type = 'series.scatter';\r\n ScatterSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\r\n ScatterSeriesModel.defaultOption = {\r\n coordinateSystem: 'cartesian2d',\r\n zlevel: 0,\r\n z: 2,\r\n legendHoverLink: true,\r\n symbolSize: 10,\r\n large: false,\r\n largeThreshold: 2000,\r\n itemStyle: {\r\n opacity: 0.8\r\n },\r\n emphasis: {\r\n scale: true\r\n },\r\n clip: true,\r\n select: {\r\n itemStyle: {\r\n borderColor: '#212121'\r\n }\r\n }\r\n };\r\n return ScatterSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(ScatterSeriesModel);\n\nvar BOOST_SIZE_THRESHOLD = 4;\r\nvar LargeSymbolPathShape = (function () {\r\n function LargeSymbolPathShape() {\r\n }\r\n return LargeSymbolPathShape;\r\n}());\r\nvar LargeSymbolPath = (function (_super) {\r\n __extends(LargeSymbolPath, _super);\r\n function LargeSymbolPath(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n LargeSymbolPath.prototype.getDefaultShape = function () {\r\n return new LargeSymbolPathShape();\r\n };\r\n LargeSymbolPath.prototype.buildPath = function (path, shape) {\r\n var points = shape.points;\r\n var size = shape.size;\r\n var symbolProxy = this.symbolProxy;\r\n var symbolProxyShape = symbolProxy.shape;\r\n var ctx = path.getContext\r\n ? path.getContext()\r\n : path;\r\n var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD;\r\n if (canBoost) {\r\n this._ctx = ctx;\r\n return;\r\n }\r\n this._ctx = null;\r\n for (var i = 0; i < points.length;) {\r\n var x = points[i++];\r\n var y = points[i++];\r\n if (isNaN(x) || isNaN(y)) {\r\n continue;\r\n }\r\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\r\n continue;\r\n }\r\n symbolProxyShape.x = x - size[0] / 2;\r\n symbolProxyShape.y = y - size[1] / 2;\r\n symbolProxyShape.width = size[0];\r\n symbolProxyShape.height = size[1];\r\n symbolProxy.buildPath(path, symbolProxyShape, true);\r\n }\r\n };\r\n LargeSymbolPath.prototype.afterBrush = function () {\r\n var shape = this.shape;\r\n var points = shape.points;\r\n var size = shape.size;\r\n var ctx = this._ctx;\r\n if (!ctx) {\r\n return;\r\n }\r\n for (var i = 0; i < points.length;) {\r\n var x = points[i++];\r\n var y = points[i++];\r\n if (isNaN(x) || isNaN(y)) {\r\n continue;\r\n }\r\n if (this.softClipShape && !this.softClipShape.contain(x, y)) {\r\n continue;\r\n }\r\n ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\r\n }\r\n };\r\n LargeSymbolPath.prototype.findDataIndex = function (x, y) {\r\n var shape = this.shape;\r\n var points = shape.points;\r\n var size = shape.size;\r\n var w = Math.max(size[0], 4);\r\n var h = Math.max(size[1], 4);\r\n for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\r\n var i = idx * 2;\r\n var x0 = points[i] - w / 2;\r\n var y0 = points[i + 1] - h / 2;\r\n if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\r\n return idx;\r\n }\r\n }\r\n return -1;\r\n };\r\n return LargeSymbolPath;\r\n}(Path));\r\nvar LargeSymbolDraw = (function () {\r\n function LargeSymbolDraw() {\r\n this.group = new Group();\r\n }\r\n LargeSymbolDraw.prototype.isPersistent = function () {\r\n return !this._incremental;\r\n };\r\n LargeSymbolDraw.prototype.updateData = function (data, opt) {\r\n this.group.removeAll();\r\n var symbolEl = new LargeSymbolPath({\r\n rectHover: true,\r\n cursor: 'default'\r\n });\r\n symbolEl.setShape({\r\n points: data.getLayout('points')\r\n });\r\n this._setCommon(symbolEl, data, false, opt);\r\n this.group.add(symbolEl);\r\n this._incremental = null;\r\n };\r\n LargeSymbolDraw.prototype.updateLayout = function (data) {\r\n if (this._incremental) {\r\n return;\r\n }\r\n var points = data.getLayout('points');\r\n this.group.eachChild(function (child) {\r\n if (child.startIndex != null) {\r\n var len = (child.endIndex - child.startIndex) * 2;\r\n var byteOffset = child.startIndex * 4 * 2;\r\n points = new Float32Array(points.buffer, byteOffset, len);\r\n }\r\n child.setShape('points', points);\r\n });\r\n };\r\n LargeSymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n this.group.removeAll();\r\n this._clearIncremental();\r\n if (data.count() > 2e6) {\r\n if (!this._incremental) {\r\n this._incremental = new IncrementalDisplayble({\r\n silent: true\r\n });\r\n }\r\n this.group.add(this._incremental);\r\n }\r\n else {\r\n this._incremental = null;\r\n }\r\n };\r\n LargeSymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\r\n var symbolEl;\r\n if (this._incremental) {\r\n symbolEl = new LargeSymbolPath();\r\n this._incremental.addDisplayable(symbolEl, true);\r\n }\r\n else {\r\n symbolEl = new LargeSymbolPath({\r\n rectHover: true,\r\n cursor: 'default',\r\n startIndex: taskParams.start,\r\n endIndex: taskParams.end\r\n });\r\n symbolEl.incremental = true;\r\n this.group.add(symbolEl);\r\n }\r\n symbolEl.setShape({\r\n points: data.getLayout('points')\r\n });\r\n this._setCommon(symbolEl, data, !!this._incremental, opt);\r\n };\r\n LargeSymbolDraw.prototype._setCommon = function (symbolEl, data, isIncremental, opt) {\r\n var hostModel = data.hostModel;\r\n opt = opt || {};\r\n var size = data.getVisual('symbolSize');\r\n symbolEl.setShape('size', (size instanceof Array) ? size : [size, size]);\r\n symbolEl.softClipShape = opt.clipShape || null;\r\n symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0);\r\n symbolEl.setColor = symbolEl.symbolProxy.setColor;\r\n var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\r\n symbolEl.useStyle(hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\r\n var globalStyle = data.getVisual('style');\r\n var visualColor = globalStyle && globalStyle.fill;\r\n if (visualColor) {\r\n symbolEl.setColor(visualColor);\r\n }\r\n if (!isIncremental) {\r\n var ecData_1 = getECData(symbolEl);\r\n ecData_1.seriesIndex = hostModel.seriesIndex;\r\n symbolEl.on('mousemove', function (e) {\r\n ecData_1.dataIndex = null;\r\n var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\r\n if (dataIndex >= 0) {\r\n ecData_1.dataIndex = dataIndex + (symbolEl.startIndex || 0);\r\n }\r\n });\r\n }\r\n };\r\n LargeSymbolDraw.prototype.remove = function () {\r\n this._clearIncremental();\r\n this._incremental = null;\r\n this.group.removeAll();\r\n };\r\n LargeSymbolDraw.prototype._clearIncremental = function () {\r\n var incremental = this._incremental;\r\n if (incremental) {\r\n incremental.clearDisplaybles();\r\n }\r\n };\r\n return LargeSymbolDraw;\r\n}());\n\nvar ScatterView = (function (_super) {\r\n __extends(ScatterView, _super);\r\n function ScatterView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ScatterView.type;\r\n return _this;\r\n }\r\n ScatterView.prototype.render = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var symbolDraw = this._updateSymbolDraw(data, seriesModel);\r\n symbolDraw.updateData(data, {\r\n clipShape: this._getClipShape(seriesModel)\r\n });\r\n this._finished = true;\r\n };\r\n ScatterView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var symbolDraw = this._updateSymbolDraw(data, seriesModel);\r\n symbolDraw.incrementalPrepareUpdate(data);\r\n this._finished = false;\r\n };\r\n ScatterView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\r\n this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {\r\n clipShape: this._getClipShape(seriesModel)\r\n });\r\n this._finished = taskParams.end === seriesModel.getData().count();\r\n };\r\n ScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n this.group.dirty();\r\n if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) {\r\n return {\r\n update: true\r\n };\r\n }\r\n else {\r\n var res = pointsLayout('').reset(seriesModel, ecModel, api);\r\n if (res.progress) {\r\n res.progress({ start: 0, end: data.count(), count: data.count() }, data);\r\n }\r\n this._symbolDraw.updateLayout(data);\r\n }\r\n };\r\n ScatterView.prototype._getClipShape = function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\r\n return seriesModel.get('clip', true) ? clipArea : null;\r\n };\r\n ScatterView.prototype._updateSymbolDraw = function (data, seriesModel) {\r\n var symbolDraw = this._symbolDraw;\r\n var pipelineContext = seriesModel.pipelineContext;\r\n var isLargeDraw = pipelineContext.large;\r\n if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\r\n symbolDraw && symbolDraw.remove();\r\n symbolDraw = this._symbolDraw = isLargeDraw\r\n ? new LargeSymbolDraw()\r\n : new SymbolDraw();\r\n this._isLargeDraw = isLargeDraw;\r\n this.group.removeAll();\r\n }\r\n this.group.add(symbolDraw.group);\r\n return symbolDraw;\r\n };\r\n ScatterView.prototype.remove = function (ecModel, api) {\r\n this._symbolDraw && this._symbolDraw.remove(true);\r\n this._symbolDraw = null;\r\n };\r\n ScatterView.prototype.dispose = function () { };\r\n ScatterView.type = 'scatter';\r\n return ScatterView;\r\n}(ChartView));\r\nChartView.registerClass(ScatterView);\n\nregisterLayout(pointsLayout('scatter'));\n\nvar IndicatorAxis = (function (_super) {\r\n __extends(IndicatorAxis, _super);\r\n function IndicatorAxis(dim, scale, radiusExtent) {\r\n var _this = _super.call(this, dim, scale, radiusExtent) || this;\r\n _this.type = 'value';\r\n _this.angle = 0;\r\n _this.name = '';\r\n return _this;\r\n }\r\n return IndicatorAxis;\r\n}(Axis));\n\nvar Radar = (function () {\r\n function Radar(radarModel, ecModel, api) {\r\n this.dimensions = [];\r\n this._model = radarModel;\r\n this._indicatorAxes = map(radarModel.getIndicatorModels(), function (indicatorModel, idx) {\r\n var dim = 'indicator_' + idx;\r\n var indicatorAxis = new IndicatorAxis(dim, new IntervalScale());\r\n indicatorAxis.name = indicatorModel.get('name');\r\n indicatorAxis.model = indicatorModel;\r\n indicatorModel.axis = indicatorAxis;\r\n this.dimensions.push(dim);\r\n return indicatorAxis;\r\n }, this);\r\n this.resize(radarModel, api);\r\n }\r\n Radar.prototype.getIndicatorAxes = function () {\r\n return this._indicatorAxes;\r\n };\r\n Radar.prototype.dataToPoint = function (value, indicatorIndex) {\r\n var indicatorAxis = this._indicatorAxes[indicatorIndex];\r\n return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);\r\n };\r\n Radar.prototype.coordToPoint = function (coord, indicatorIndex) {\r\n var indicatorAxis = this._indicatorAxes[indicatorIndex];\r\n var angle = indicatorAxis.angle;\r\n var x = this.cx + coord * Math.cos(angle);\r\n var y = this.cy - coord * Math.sin(angle);\r\n return [x, y];\r\n };\r\n Radar.prototype.pointToData = function (pt) {\r\n var dx = pt[0] - this.cx;\r\n var dy = pt[1] - this.cy;\r\n var radius = Math.sqrt(dx * dx + dy * dy);\r\n dx /= radius;\r\n dy /= radius;\r\n var radian = Math.atan2(-dy, dx);\r\n var minRadianDiff = Infinity;\r\n var closestAxis;\r\n var closestAxisIdx = -1;\r\n for (var i = 0; i < this._indicatorAxes.length; i++) {\r\n var indicatorAxis = this._indicatorAxes[i];\r\n var diff = Math.abs(radian - indicatorAxis.angle);\r\n if (diff < minRadianDiff) {\r\n closestAxis = indicatorAxis;\r\n closestAxisIdx = i;\r\n minRadianDiff = diff;\r\n }\r\n }\r\n return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))];\r\n };\r\n Radar.prototype.resize = function (radarModel, api) {\r\n var center = radarModel.get('center');\r\n var viewWidth = api.getWidth();\r\n var viewHeight = api.getHeight();\r\n var viewSize = Math.min(viewWidth, viewHeight) / 2;\r\n this.cx = parsePercent$2(center[0], viewWidth);\r\n this.cy = parsePercent$2(center[1], viewHeight);\r\n this.startAngle = radarModel.get('startAngle') * Math.PI / 180;\r\n var radius = radarModel.get('radius');\r\n if (typeof radius === 'string' || typeof radius === 'number') {\r\n radius = [0, radius];\r\n }\r\n this.r0 = parsePercent$2(radius[0], viewSize);\r\n this.r = parsePercent$2(radius[1], viewSize);\r\n each(this._indicatorAxes, function (indicatorAxis, idx) {\r\n indicatorAxis.setExtent(this.r0, this.r);\r\n var angle = (this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length);\r\n angle = Math.atan2(Math.sin(angle), Math.cos(angle));\r\n indicatorAxis.angle = angle;\r\n }, this);\r\n };\r\n Radar.prototype.update = function (ecModel, api) {\r\n var indicatorAxes = this._indicatorAxes;\r\n var radarModel = this._model;\r\n each(indicatorAxes, function (indicatorAxis) {\r\n indicatorAxis.scale.setExtent(Infinity, -Infinity);\r\n });\r\n ecModel.eachSeriesByType('radar', function (radarSeries, idx) {\r\n if (radarSeries.get('coordinateSystem') !== 'radar'\r\n || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) {\r\n return;\r\n }\r\n var data = radarSeries.getData();\r\n each(indicatorAxes, function (indicatorAxis) {\r\n indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));\r\n });\r\n }, this);\r\n var splitNumber = radarModel.get('splitNumber');\r\n function increaseInterval(interval) {\r\n var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10));\r\n var f = interval / exp10;\r\n if (f === 2) {\r\n f = 5;\r\n }\r\n else {\r\n f *= 2;\r\n }\r\n return f * exp10;\r\n }\r\n each(indicatorAxes, function (indicatorAxis, idx) {\r\n var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model).extent;\r\n niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);\r\n var axisModel = indicatorAxis.model;\r\n var scale = indicatorAxis.scale;\r\n var fixedMin = parseAxisModelMinMax(scale, axisModel.get('min', true));\r\n var fixedMax = parseAxisModelMinMax(scale, axisModel.get('max', true));\r\n var interval = scale.getInterval();\r\n if (fixedMin != null && fixedMax != null) {\r\n scale.setExtent(+fixedMin, +fixedMax);\r\n scale.setInterval((fixedMax - fixedMin) / splitNumber);\r\n }\r\n else if (fixedMin != null) {\r\n var max = void 0;\r\n do {\r\n max = fixedMin + interval * splitNumber;\r\n scale.setExtent(+fixedMin, max);\r\n scale.setInterval(interval);\r\n interval = increaseInterval(interval);\r\n } while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1]));\r\n }\r\n else if (fixedMax != null) {\r\n var min = void 0;\r\n do {\r\n min = fixedMax - interval * splitNumber;\r\n scale.setExtent(min, +fixedMax);\r\n scale.setInterval(interval);\r\n interval = increaseInterval(interval);\r\n } while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0]));\r\n }\r\n else {\r\n var nicedSplitNumber = scale.getTicks().length - 1;\r\n if (nicedSplitNumber > splitNumber) {\r\n interval = increaseInterval(interval);\r\n }\r\n var max = Math.ceil(rawExtent[1] / interval) * interval;\r\n var min = round$1(max - interval * splitNumber);\r\n scale.setExtent(min, max);\r\n scale.setInterval(interval);\r\n }\r\n });\r\n };\r\n Radar.prototype.convertToPixel = function (ecModel, finder, value) {\r\n console.warn('Not implemented.');\r\n return null;\r\n };\r\n Radar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n console.warn('Not implemented.');\r\n return null;\r\n };\r\n Radar.prototype.containPoint = function (point) {\r\n console.warn('Not implemented.');\r\n return false;\r\n };\r\n Radar.create = function (ecModel, api) {\r\n var radarList = [];\r\n ecModel.eachComponent('radar', function (radarModel) {\r\n var radar = new Radar(radarModel, ecModel, api);\r\n radarList.push(radar);\r\n radarModel.coordinateSystem = radar;\r\n });\r\n ecModel.eachSeriesByType('radar', function (radarSeries) {\r\n if (radarSeries.get('coordinateSystem') === 'radar') {\r\n radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0];\r\n }\r\n });\r\n return radarList;\r\n };\r\n Radar.dimensions = [];\r\n return Radar;\r\n}());\r\nCoordinateSystemManager.register('radar', Radar);\n\nvar valueAxisDefault = axisDefault.value;\r\nfunction defaultsShow(opt, show) {\r\n return defaults({\r\n show: show\r\n }, opt);\r\n}\r\nvar RadarModel = (function (_super) {\r\n __extends(RadarModel, _super);\r\n function RadarModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = RadarModel.type;\r\n return _this;\r\n }\r\n RadarModel.prototype.optionUpdated = function () {\r\n var boundaryGap = this.get('boundaryGap');\r\n var splitNumber = this.get('splitNumber');\r\n var scale = this.get('scale');\r\n var axisLine = this.get('axisLine');\r\n var axisTick = this.get('axisTick');\r\n var axisLabel = this.get('axisLabel');\r\n var nameTextStyle = this.get('axisName');\r\n var showName = this.get(['axisName', 'show']);\r\n var nameFormatter = this.get(['axisName', 'formatter']);\r\n var nameGap = this.get('axisNameGap');\r\n var triggerEvent = this.get('triggerEvent');\r\n var indicatorModels = map(this.get('indicator') || [], function (indicatorOpt) {\r\n if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {\r\n indicatorOpt.min = 0;\r\n }\r\n else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {\r\n indicatorOpt.max = 0;\r\n }\r\n var iNameTextStyle = nameTextStyle;\r\n if (indicatorOpt.color != null) {\r\n iNameTextStyle = defaults({\r\n color: indicatorOpt.color\r\n }, nameTextStyle);\r\n }\r\n var innerIndicatorOpt = merge(clone(indicatorOpt), {\r\n boundaryGap: boundaryGap,\r\n splitNumber: splitNumber,\r\n scale: scale,\r\n axisLine: axisLine,\r\n axisTick: axisTick,\r\n axisLabel: axisLabel,\r\n name: indicatorOpt.text,\r\n nameLocation: 'end',\r\n nameGap: nameGap,\r\n nameTextStyle: iNameTextStyle,\r\n triggerEvent: triggerEvent\r\n }, false);\r\n if (!showName) {\r\n innerIndicatorOpt.name = '';\r\n }\r\n if (typeof nameFormatter === 'string') {\r\n var indName = innerIndicatorOpt.name;\r\n innerIndicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : '');\r\n }\r\n else if (typeof nameFormatter === 'function') {\r\n innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt);\r\n }\r\n var model = new Model(innerIndicatorOpt, null, this.ecModel);\r\n mixin(model, AxisModelCommonMixin.prototype);\r\n model.mainType = 'radar';\r\n model.componentIndex = this.componentIndex;\r\n return model;\r\n }, this);\r\n this._indicatorModels = indicatorModels;\r\n };\r\n RadarModel.prototype.getIndicatorModels = function () {\r\n return this._indicatorModels;\r\n };\r\n RadarModel.type = 'radar';\r\n RadarModel.defaultOption = {\r\n zlevel: 0,\r\n z: 0,\r\n center: ['50%', '50%'],\r\n radius: '75%',\r\n startAngle: 90,\r\n axisName: {\r\n show: true\r\n },\r\n boundaryGap: [0, 0],\r\n splitNumber: 5,\r\n axisNameGap: 15,\r\n scale: false,\r\n shape: 'polygon',\r\n axisLine: merge({\r\n lineStyle: {\r\n color: '#bbb'\r\n }\r\n }, valueAxisDefault.axisLine),\r\n axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),\r\n axisTick: defaultsShow(valueAxisDefault.axisTick, false),\r\n splitLine: defaultsShow(valueAxisDefault.splitLine, true),\r\n splitArea: defaultsShow(valueAxisDefault.splitArea, true),\r\n indicator: []\r\n };\r\n return RadarModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(RadarModel);\n\nvar axisBuilderAttrs$1 = [\r\n 'axisLine', 'axisTickLabel', 'axisName'\r\n];\r\nvar RadarView = (function (_super) {\r\n __extends(RadarView, _super);\r\n function RadarView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = RadarView.type;\r\n return _this;\r\n }\r\n RadarView.prototype.render = function (radarModel, ecModel, api) {\r\n var group = this.group;\r\n group.removeAll();\r\n this._buildAxes(radarModel);\r\n this._buildSplitLineAndArea(radarModel);\r\n };\r\n RadarView.prototype._buildAxes = function (radarModel) {\r\n var radar = radarModel.coordinateSystem;\r\n var indicatorAxes = radar.getIndicatorAxes();\r\n var axisBuilders = map(indicatorAxes, function (indicatorAxis) {\r\n var axisBuilder = new AxisBuilder(indicatorAxis.model, {\r\n position: [radar.cx, radar.cy],\r\n rotation: indicatorAxis.angle,\r\n labelDirection: -1,\r\n tickDirection: -1,\r\n nameDirection: 1\r\n });\r\n return axisBuilder;\r\n });\r\n each(axisBuilders, function (axisBuilder) {\r\n each(axisBuilderAttrs$1, axisBuilder.add, axisBuilder);\r\n this.group.add(axisBuilder.getGroup());\r\n }, this);\r\n };\r\n RadarView.prototype._buildSplitLineAndArea = function (radarModel) {\r\n var radar = radarModel.coordinateSystem;\r\n var indicatorAxes = radar.getIndicatorAxes();\r\n if (!indicatorAxes.length) {\r\n return;\r\n }\r\n var shape = radarModel.get('shape');\r\n var splitLineModel = radarModel.getModel('splitLine');\r\n var splitAreaModel = radarModel.getModel('splitArea');\r\n var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n var showSplitLine = splitLineModel.get('show');\r\n var showSplitArea = splitAreaModel.get('show');\r\n var splitLineColors = lineStyleModel.get('color');\r\n var splitAreaColors = areaStyleModel.get('color');\r\n var splitLineColorsArr = isArray(splitLineColors) ? splitLineColors : [splitLineColors];\r\n var splitAreaColorsArr = isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];\r\n var splitLines = [];\r\n var splitAreas = [];\r\n function getColorIndex(areaOrLine, areaOrLineColorList, idx) {\r\n var colorIndex = idx % areaOrLineColorList.length;\r\n areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];\r\n return colorIndex;\r\n }\r\n if (shape === 'circle') {\r\n var ticksRadius = indicatorAxes[0].getTicksCoords();\r\n var cx = radar.cx;\r\n var cy = radar.cy;\r\n for (var i = 0; i < ticksRadius.length; i++) {\r\n if (showSplitLine) {\r\n var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);\r\n splitLines[colorIndex].push(new Circle({\r\n shape: {\r\n cx: cx,\r\n cy: cy,\r\n r: ticksRadius[i].coord\r\n }\r\n }));\r\n }\r\n if (showSplitArea && i < ticksRadius.length - 1) {\r\n var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i);\r\n splitAreas[colorIndex].push(new Ring({\r\n shape: {\r\n cx: cx,\r\n cy: cy,\r\n r0: ticksRadius[i].coord,\r\n r: ticksRadius[i + 1].coord\r\n }\r\n }));\r\n }\r\n }\r\n }\r\n else {\r\n var realSplitNumber_1;\r\n var axesTicksPoints = map(indicatorAxes, function (indicatorAxis, idx) {\r\n var ticksCoords = indicatorAxis.getTicksCoords();\r\n realSplitNumber_1 = realSplitNumber_1 == null\r\n ? ticksCoords.length - 1\r\n : Math.min(ticksCoords.length - 1, realSplitNumber_1);\r\n return map(ticksCoords, function (tickCoord) {\r\n return radar.coordToPoint(tickCoord.coord, idx);\r\n });\r\n });\r\n var prevPoints = [];\r\n for (var i = 0; i <= realSplitNumber_1; i++) {\r\n var points = [];\r\n for (var j = 0; j < indicatorAxes.length; j++) {\r\n points.push(axesTicksPoints[j][i]);\r\n }\r\n if (points[0]) {\r\n points.push(points[0].slice());\r\n }\r\n else {\r\n if (__DEV__) {\r\n console.error('Can\\'t draw value axis ' + i);\r\n }\r\n }\r\n if (showSplitLine) {\r\n var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);\r\n splitLines[colorIndex].push(new Polyline({\r\n shape: {\r\n points: points\r\n }\r\n }));\r\n }\r\n if (showSplitArea && prevPoints) {\r\n var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1);\r\n splitAreas[colorIndex].push(new Polygon({\r\n shape: {\r\n points: points.concat(prevPoints)\r\n }\r\n }));\r\n }\r\n prevPoints = points.slice().reverse();\r\n }\r\n }\r\n var lineStyle = lineStyleModel.getLineStyle();\r\n var areaStyle = areaStyleModel.getAreaStyle();\r\n each(splitAreas, function (splitAreas, idx) {\r\n this.group.add(mergePath$1(splitAreas, {\r\n style: defaults({\r\n stroke: 'none',\r\n fill: splitAreaColorsArr[idx % splitAreaColorsArr.length]\r\n }, areaStyle),\r\n silent: true\r\n }));\r\n }, this);\r\n each(splitLines, function (splitLines, idx) {\r\n this.group.add(mergePath$1(splitLines, {\r\n style: defaults({\r\n fill: 'none',\r\n stroke: splitLineColorsArr[idx % splitLineColorsArr.length]\r\n }, lineStyle),\r\n silent: true\r\n }));\r\n }, this);\r\n };\r\n RadarView.type = 'radar';\r\n return RadarView;\r\n}(ComponentView));\r\nComponentView.registerClass(RadarView);\n\nvar RadarSeriesModel = (function (_super) {\r\n __extends(RadarSeriesModel, _super);\r\n function RadarSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = RadarSeriesModel.type;\r\n _this.useColorPaletteOnData = true;\r\n _this.hasSymbolVisual = true;\r\n return _this;\r\n }\r\n RadarSeriesModel.prototype.init = function (option) {\r\n _super.prototype.init.apply(this, arguments);\r\n this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n };\r\n RadarSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListSimply(this, {\r\n generateCoord: 'indicator_',\r\n generateCoordCount: Infinity\r\n });\r\n };\r\n RadarSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n var data = this.getData();\r\n var coordSys = this.coordinateSystem;\r\n var indicatorAxes = coordSys.getIndicatorAxes();\r\n var name = this.getData().getName(dataIndex);\r\n var nameToDisplay = name === '' ? this.name : name;\r\n var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex);\r\n return createTooltipMarkup('section', {\r\n header: nameToDisplay,\r\n sortBlocks: true,\r\n blocks: map(indicatorAxes, function (axis) {\r\n var val = data.get(data.mapDimension(axis.dim), dataIndex);\r\n return createTooltipMarkup('nameValue', {\r\n markerType: 'subItem',\r\n markerColor: markerColor,\r\n name: axis.name,\r\n value: val,\r\n sortParam: val\r\n });\r\n })\r\n });\r\n };\r\n RadarSeriesModel.prototype.getTooltipPosition = function (dataIndex) {\r\n if (dataIndex != null) {\r\n var data_1 = this.getData();\r\n var coordSys = this.coordinateSystem;\r\n var values = data_1.getValues(map(coordSys.dimensions, function (dim) {\r\n return data_1.mapDimension(dim);\r\n }), dataIndex);\r\n for (var i = 0, len = values.length; i < len; i++) {\r\n if (!isNaN(values[i])) {\r\n var indicatorAxes = coordSys.getIndicatorAxes();\r\n return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);\r\n }\r\n }\r\n }\r\n };\r\n RadarSeriesModel.type = 'series.radar';\r\n RadarSeriesModel.dependencies = ['radar'];\r\n RadarSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'radar',\r\n legendHoverLink: true,\r\n radarIndex: 0,\r\n lineStyle: {\r\n width: 2,\r\n type: 'solid'\r\n },\r\n label: {\r\n position: 'top'\r\n },\r\n symbol: 'emptyCircle',\r\n symbolSize: 4\r\n };\r\n return RadarSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(RadarSeriesModel);\n\nfunction normalizeSymbolSize(symbolSize) {\r\n if (!isArray(symbolSize)) {\r\n symbolSize = [+symbolSize, +symbolSize];\r\n }\r\n return symbolSize;\r\n}\r\nvar RadarView$1 = (function (_super) {\r\n __extends(RadarView, _super);\r\n function RadarView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = RadarView.type;\r\n return _this;\r\n }\r\n RadarView.prototype.render = function (seriesModel, ecModel, api) {\r\n var polar = seriesModel.coordinateSystem;\r\n var group = this.group;\r\n var data = seriesModel.getData();\r\n var oldData = this._data;\r\n function createSymbol$1(data, idx) {\r\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\r\n if (symbolType === 'none') {\r\n return;\r\n }\r\n var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\r\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2);\r\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;\r\n symbolPath.attr({\r\n style: {\r\n strokeNoScale: true\r\n },\r\n z2: 100,\r\n scaleX: symbolSize[0] / 2,\r\n scaleY: symbolSize[1] / 2,\r\n rotation: symbolRotate * Math.PI / 180 || 0\r\n });\r\n return symbolPath;\r\n }\r\n function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {\r\n symbolGroup.removeAll();\r\n for (var i = 0; i < newPoints.length - 1; i++) {\r\n var symbolPath = createSymbol$1(data, idx);\r\n if (symbolPath) {\r\n symbolPath.__dimIdx = i;\r\n if (oldPoints[i]) {\r\n symbolPath.setPosition(oldPoints[i]);\r\n graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {\r\n x: newPoints[i][0],\r\n y: newPoints[i][1]\r\n }, seriesModel, idx);\r\n }\r\n else {\r\n symbolPath.setPosition(newPoints[i]);\r\n }\r\n symbolGroup.add(symbolPath);\r\n }\r\n }\r\n }\r\n function getInitialPoints(points) {\r\n return map(points, function (pt) {\r\n return [polar.cx, polar.cy];\r\n });\r\n }\r\n data.diff(oldData)\r\n .add(function (idx) {\r\n var points = data.getItemLayout(idx);\r\n if (!points) {\r\n return;\r\n }\r\n var polygon = new Polygon();\r\n var polyline = new Polyline();\r\n var target = {\r\n shape: {\r\n points: points\r\n }\r\n };\r\n polygon.shape.points = getInitialPoints(points);\r\n polyline.shape.points = getInitialPoints(points);\r\n initProps(polygon, target, seriesModel, idx);\r\n initProps(polyline, target, seriesModel, idx);\r\n var itemGroup = new Group();\r\n var symbolGroup = new Group();\r\n itemGroup.add(polyline);\r\n itemGroup.add(polygon);\r\n itemGroup.add(symbolGroup);\r\n updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);\r\n data.setItemGraphicEl(idx, itemGroup);\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n var itemGroup = oldData.getItemGraphicEl(oldIdx);\r\n var polyline = itemGroup.childAt(0);\r\n var polygon = itemGroup.childAt(1);\r\n var symbolGroup = itemGroup.childAt(2);\r\n var target = {\r\n shape: {\r\n points: data.getItemLayout(newIdx)\r\n }\r\n };\r\n if (!target.shape.points) {\r\n return;\r\n }\r\n updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);\r\n updateProps(polyline, target, seriesModel);\r\n updateProps(polygon, target, seriesModel);\r\n data.setItemGraphicEl(newIdx, itemGroup);\r\n })\r\n .remove(function (idx) {\r\n group.remove(oldData.getItemGraphicEl(idx));\r\n })\r\n .execute();\r\n data.eachItemGraphicEl(function (itemGroup, idx) {\r\n var itemModel = data.getItemModel(idx);\r\n var polyline = itemGroup.childAt(0);\r\n var polygon = itemGroup.childAt(1);\r\n var symbolGroup = itemGroup.childAt(2);\r\n var itemStyle = data.getItemVisual(idx, 'style');\r\n var color = itemStyle.fill;\r\n group.add(itemGroup);\r\n polyline.useStyle(defaults(itemModel.getModel('lineStyle').getLineStyle(), {\r\n fill: 'none',\r\n stroke: color\r\n }));\r\n setStatesStylesFromModel(polyline, itemModel, 'lineStyle');\r\n setStatesStylesFromModel(polygon, itemModel, 'areaStyle');\r\n var areaStyleModel = itemModel.getModel('areaStyle');\r\n var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();\r\n polygon.ignore = polygonIgnore;\r\n each(['emphasis', 'select', 'blur'], function (stateName) {\r\n var stateModel = itemModel.getModel([stateName, 'areaStyle']);\r\n var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty();\r\n polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore;\r\n });\r\n polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {\r\n fill: color,\r\n opacity: 0.7,\r\n decal: itemStyle.decal\r\n }));\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n var itemHoverStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n symbolGroup.eachChild(function (symbolPath) {\r\n if (symbolPath instanceof ZRImage) {\r\n var pathStyle = symbolPath.style;\r\n symbolPath.useStyle(extend({\r\n image: pathStyle.image,\r\n x: pathStyle.x, y: pathStyle.y,\r\n width: pathStyle.width, height: pathStyle.height\r\n }, itemStyle));\r\n }\r\n else {\r\n symbolPath.useStyle(itemStyle);\r\n symbolPath.setColor(color);\r\n }\r\n var pathEmphasisState = symbolPath.ensureState('emphasis');\r\n pathEmphasisState.style = clone(itemHoverStyle);\r\n var defaultText = data.get(data.dimensions[symbolPath.__dimIdx], idx);\r\n (defaultText == null || isNaN(defaultText)) && (defaultText = '');\r\n setLabelStyle(symbolPath, getLabelStatesModels(itemModel), {\r\n labelFetcher: data.hostModel,\r\n labelDataIndex: idx,\r\n labelDimIndex: symbolPath.__dimIdx,\r\n defaultText: defaultText,\r\n inheritColor: color,\r\n defaultOpacity: itemStyle.opacity\r\n });\r\n });\r\n enableHoverEmphasis(itemGroup, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n });\r\n this._data = data;\r\n };\r\n RadarView.prototype.remove = function () {\r\n this.group.removeAll();\r\n this._data = null;\r\n };\r\n RadarView.type = 'radar';\r\n return RadarView;\r\n}(ChartView));\r\nChartView.registerClass(RadarView$1);\n\nfunction radarLayout(ecModel) {\r\n ecModel.eachSeriesByType('radar', function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var points = [];\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (!coordSys) {\r\n return;\r\n }\r\n var axes = coordSys.getIndicatorAxes();\r\n each(axes, function (axis, axisIndex) {\r\n data.each(data.mapDimension(axes[axisIndex].dim), function (val, dataIndex) {\r\n points[dataIndex] = points[dataIndex] || [];\r\n var point = coordSys.dataToPoint(val, axisIndex);\r\n points[dataIndex][axisIndex] = isValidPoint(point)\r\n ? point : getValueMissingPoint(coordSys);\r\n });\r\n });\r\n data.each(function (idx) {\r\n var firstPoint = find(points[idx], function (point) {\r\n return isValidPoint(point);\r\n }) || getValueMissingPoint(coordSys);\r\n points[idx].push(firstPoint.slice());\r\n data.setItemLayout(idx, points[idx]);\r\n });\r\n });\r\n}\r\nfunction isValidPoint(point) {\r\n return !isNaN(point[0]) && !isNaN(point[1]);\r\n}\r\nfunction getValueMissingPoint(coordSys) {\r\n return [coordSys.cx, coordSys.cy];\r\n}\n\nfunction radarBackwardCompat(option) {\r\n var polarOptArr = option.polar;\r\n if (polarOptArr) {\r\n if (!isArray(polarOptArr)) {\r\n polarOptArr = [polarOptArr];\r\n }\r\n var polarNotRadar_1 = [];\r\n each(polarOptArr, function (polarOpt, idx) {\r\n if (polarOpt.indicator) {\r\n if (polarOpt.type && !polarOpt.shape) {\r\n polarOpt.shape = polarOpt.type;\r\n }\r\n option.radar = option.radar || [];\r\n if (!isArray(option.radar)) {\r\n option.radar = [option.radar];\r\n }\r\n option.radar.push(polarOpt);\r\n }\r\n else {\r\n polarNotRadar_1.push(polarOpt);\r\n }\r\n });\r\n option.polar = polarNotRadar_1;\r\n }\r\n each(option.series, function (seriesOpt) {\r\n if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {\r\n seriesOpt.radarIndex = seriesOpt.polarIndex;\r\n }\r\n });\r\n}\n\nregisterLayout(radarLayout);\r\nregisterProcessor(dataFilter('radar'));\r\nregisterPreprocessor(radarBackwardCompat);\n\nvar geoCoord = [126, 25];\r\nvar points$1 = [\r\n [[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7],\r\n [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]],\r\n [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]],\r\n [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]],\r\n [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]],\r\n [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]],\r\n [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]],\r\n [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]],\r\n [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]],\r\n [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]],\r\n [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]],\r\n [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]],\r\n [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4],\r\n [1, 92.4], [1, 3.5], [0, 3.5]]\r\n];\r\nfor (var i = 0; i < points$1.length; i++) {\r\n for (var k = 0; k < points$1[i].length; k++) {\r\n points$1[i][k][0] /= 10.5;\r\n points$1[i][k][1] /= -10.5 / 0.75;\r\n points$1[i][k][0] += geoCoord[0];\r\n points$1[i][k][1] += geoCoord[1];\r\n }\r\n}\r\nfunction fixNanhai(mapType, regions) {\r\n if (mapType === 'china') {\r\n regions.push(new Region('南海诸岛', map(points$1, function (exterior) {\r\n return {\r\n type: 'polygon',\r\n exterior: exterior\r\n };\r\n }), geoCoord));\r\n }\r\n}\n\nvar coordsOffsetMap = {\r\n '南海诸岛': [32, 80],\r\n '广东': [0, -10],\r\n '香港': [10, 5],\r\n '澳门': [-10, 10],\r\n '天津': [5, 5]\r\n};\r\nfunction fixTextCoords(mapType, region) {\r\n if (mapType === 'china') {\r\n var coordFix = coordsOffsetMap[region.name];\r\n if (coordFix) {\r\n var cp = region.center;\r\n cp[0] += coordFix[0] / 10.5;\r\n cp[1] += -coordFix[1] / (10.5 / 0.75);\r\n }\r\n }\r\n}\n\nvar geoCoordMap = {\r\n 'Russia': [100, 60],\r\n 'United States': [-99, 38],\r\n 'United States of America': [-99, 38]\r\n};\r\nfunction fixGeoCoords(mapType, region) {\r\n if (mapType === 'world') {\r\n var geoCoord = geoCoordMap[region.name];\r\n if (geoCoord) {\r\n var cp = region.center;\r\n cp[0] = geoCoord[0];\r\n cp[1] = geoCoord[1];\r\n }\r\n }\r\n}\n\nvar points$2 = [\r\n [\r\n [123.45165252685547, 25.73527164402261],\r\n [123.49731445312499, 25.73527164402261],\r\n [123.49731445312499, 25.750734064600884],\r\n [123.45165252685547, 25.750734064600884],\r\n [123.45165252685547, 25.73527164402261]\r\n ]\r\n];\r\nfunction fixDiaoyuIsland(mapType, region) {\r\n if (mapType === 'china' && region.name === '台湾') {\r\n region.geometries.push({\r\n type: 'polygon',\r\n exterior: points$2[0]\r\n });\r\n }\r\n}\n\nvar inner$6 = makeInner();\r\nvar geoJSONLoader = {\r\n load: function (mapName, mapRecord, nameProperty) {\r\n var parsed = inner$6(mapRecord).parsed;\r\n if (parsed) {\r\n return parsed;\r\n }\r\n var specialAreas = mapRecord.specialAreas || {};\r\n var geoJSON = mapRecord.geoJSON;\r\n var regions;\r\n try {\r\n regions = geoJSON ? parseGeoJSON(geoJSON, nameProperty) : [];\r\n }\r\n catch (e) {\r\n throw new Error('Invalid geoJson format\\n' + e.message);\r\n }\r\n fixNanhai(mapName, regions);\r\n each(regions, function (region) {\r\n var regionName = region.name;\r\n fixTextCoords(mapName, region);\r\n fixGeoCoords(mapName, region);\r\n fixDiaoyuIsland(mapName, region);\r\n var specialArea = specialAreas[regionName];\r\n if (specialArea) {\r\n region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);\r\n }\r\n });\r\n return (inner$6(mapRecord).parsed = {\r\n regions: regions,\r\n boundingRect: getBoundingRect$1(regions)\r\n });\r\n }\r\n};\r\nfunction getBoundingRect$1(regions) {\r\n var rect;\r\n for (var i = 0; i < regions.length; i++) {\r\n var regionRect = regions[i].getBoundingRect();\r\n rect = rect || regionRect.clone();\r\n rect.union(regionRect);\r\n }\r\n return rect;\r\n}\n\nvar inner$7 = makeInner();\r\nvar geoSVGLoader = {\r\n load: function (mapName, mapRecord) {\r\n var originRoot = inner$7(mapRecord).originRoot;\r\n if (originRoot) {\r\n return {\r\n root: originRoot,\r\n boundingRect: inner$7(mapRecord).boundingRect\r\n };\r\n }\r\n var graphic = buildGraphic(mapRecord);\r\n inner$7(mapRecord).originRoot = graphic.root;\r\n inner$7(mapRecord).boundingRect = graphic.boundingRect;\r\n return graphic;\r\n },\r\n makeGraphic: function (mapName, mapRecord, hostKey) {\r\n var field = inner$7(mapRecord);\r\n var rootMap = field.rootMap || (field.rootMap = createHashMap());\r\n var root = rootMap.get(hostKey);\r\n if (root) {\r\n return root;\r\n }\r\n var originRoot = field.originRoot;\r\n var boundingRect = field.boundingRect;\r\n if (!field.originRootHostKey) {\r\n field.originRootHostKey = hostKey;\r\n root = originRoot;\r\n }\r\n else {\r\n root = buildGraphic(mapRecord, boundingRect).root;\r\n }\r\n return rootMap.set(hostKey, root);\r\n },\r\n removeGraphic: function (mapName, mapRecord, hostKey) {\r\n var field = inner$7(mapRecord);\r\n var rootMap = field.rootMap;\r\n rootMap && rootMap.removeKey(hostKey);\r\n if (hostKey === field.originRootHostKey) {\r\n field.originRootHostKey = null;\r\n }\r\n }\r\n};\r\nfunction buildGraphic(mapRecord, boundingRect) {\r\n var svgXML = mapRecord.svgXML;\r\n var result;\r\n var root;\r\n try {\r\n result = svgXML && parseSVG(svgXML, {\r\n ignoreViewBox: true,\r\n ignoreRootClip: true\r\n }) || {};\r\n root = result.root;\r\n assert(root != null);\r\n }\r\n catch (e) {\r\n throw new Error('Invalid svg format\\n' + e.message);\r\n }\r\n var svgWidth = result.width;\r\n var svgHeight = result.height;\r\n var viewBoxRect = result.viewBoxRect;\r\n if (!boundingRect) {\r\n boundingRect = (svgWidth == null || svgHeight == null)\r\n ? root.getBoundingRect()\r\n : new BoundingRect(0, 0, 0, 0);\r\n if (svgWidth != null) {\r\n boundingRect.width = svgWidth;\r\n }\r\n if (svgHeight != null) {\r\n boundingRect.height = svgHeight;\r\n }\r\n }\r\n if (viewBoxRect) {\r\n var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect.width, boundingRect.height);\r\n var elRoot = root;\r\n root = new Group();\r\n root.add(elRoot);\r\n elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale;\r\n elRoot.x = viewBoxTransform.x;\r\n elRoot.y = viewBoxTransform.y;\r\n }\r\n root.setClipPath(new Rect({\r\n shape: boundingRect.plain()\r\n }));\r\n return {\r\n root: root,\r\n boundingRect: boundingRect\r\n };\r\n}\n\nvar loaders = {\r\n geoJSON: geoJSONLoader,\r\n svg: geoSVGLoader\r\n};\r\nvar geoSourceManager = {\r\n load: function (mapName, nameMap, nameProperty) {\r\n var regions = [];\r\n var regionsMap = createHashMap();\r\n var nameCoordMap = createHashMap();\r\n var boundingRect;\r\n var mapRecords = retrieveMap(mapName);\r\n each(mapRecords, function (record) {\r\n var singleSource = loaders[record.type].load(mapName, record, nameProperty);\r\n each(singleSource.regions, function (region) {\r\n var regionName = region.name;\r\n if (nameMap && nameMap.hasOwnProperty(regionName)) {\r\n region = region.cloneShallow(regionName = nameMap[regionName]);\r\n }\r\n regions.push(region);\r\n regionsMap.set(regionName, region);\r\n nameCoordMap.set(regionName, region.center);\r\n });\r\n var rect = singleSource.boundingRect;\r\n if (rect) {\r\n boundingRect\r\n ? boundingRect.union(rect)\r\n : (boundingRect = rect.clone());\r\n }\r\n });\r\n return {\r\n regions: regions,\r\n regionsMap: regionsMap,\r\n nameCoordMap: nameCoordMap,\r\n boundingRect: boundingRect || new BoundingRect(0, 0, 0, 0)\r\n };\r\n },\r\n makeGraphic: function (mapName, hostKey) {\r\n var mapRecords = retrieveMap(mapName);\r\n var results = [];\r\n each(mapRecords, function (record) {\r\n var method = loaders[record.type].makeGraphic;\r\n method && results.push(method(mapName, record, hostKey));\r\n });\r\n return results;\r\n },\r\n removeGraphic: function (mapName, hostKey) {\r\n var mapRecords = retrieveMap(mapName);\r\n each(mapRecords, function (record) {\r\n var method = loaders[record.type].makeGraphic;\r\n method && method(mapName, record, hostKey);\r\n });\r\n }\r\n};\r\nfunction mapNotExistsError(mapName) {\r\n if (__DEV__) {\r\n console.error('Map ' + mapName + ' not exists. The GeoJSON of the map must be provided.');\r\n }\r\n}\r\nfunction retrieveMap(mapName) {\r\n var mapRecords = mapDataStorage.retrieveMap(mapName) || [];\r\n if (__DEV__) {\r\n if (!mapRecords.length) {\r\n mapNotExistsError(mapName);\r\n }\r\n }\r\n return mapRecords;\r\n}\n\nvar MapSeries = (function (_super) {\r\n __extends(MapSeries, _super);\r\n function MapSeries() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MapSeries.type;\r\n _this.needsDrawMap = false;\r\n _this.seriesGroup = [];\r\n _this.getTooltipPosition = function (dataIndex) {\r\n if (dataIndex != null) {\r\n var name_1 = this.getData().getName(dataIndex);\r\n var geo = this.coordinateSystem;\r\n var region = geo.getRegion(name_1);\r\n return region && geo.dataToPoint(region.center);\r\n }\r\n };\r\n return _this;\r\n }\r\n MapSeries.prototype.getInitialData = function (option) {\r\n var data = createListSimply(this, {\r\n coordDimensions: ['value'],\r\n encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n });\r\n var dataNameMap = createHashMap();\r\n var toAppendNames = [];\r\n for (var i = 0, len = data.count(); i < len; i++) {\r\n var name_2 = data.getName(i);\r\n dataNameMap.set(name_2, true);\r\n }\r\n var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);\r\n each(geoSource.regions, function (region) {\r\n var name = region.name;\r\n if (!dataNameMap.get(name)) {\r\n toAppendNames.push(name);\r\n }\r\n });\r\n data.appendValues([], toAppendNames);\r\n return data;\r\n };\r\n MapSeries.prototype.getHostGeoModel = function () {\r\n var geoIndex = this.option.geoIndex;\r\n return geoIndex != null\r\n ? this.ecModel.getComponent('geo', geoIndex)\r\n : null;\r\n };\r\n MapSeries.prototype.getMapType = function () {\r\n return (this.getHostGeoModel() || this).option.map;\r\n };\r\n MapSeries.prototype.getRawValue = function (dataIndex) {\r\n var data = this.getData();\r\n return data.get(data.mapDimension('value'), dataIndex);\r\n };\r\n MapSeries.prototype.getRegionModel = function (regionName) {\r\n var data = this.getData();\r\n return data.getItemModel(data.indexOfName(regionName));\r\n };\r\n MapSeries.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n var data = this.getData();\r\n var value = this.getRawValue(dataIndex);\r\n var name = data.getName(dataIndex);\r\n var seriesGroup = this.seriesGroup;\r\n var seriesNames = [];\r\n for (var i = 0; i < seriesGroup.length; i++) {\r\n var otherIndex = seriesGroup[i].originalData.indexOfName(name);\r\n var valueDim = data.mapDimension('value');\r\n if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {\r\n seriesNames.push(seriesGroup[i].name);\r\n }\r\n }\r\n return createTooltipMarkup('section', {\r\n header: seriesNames.join(', '),\r\n noHeader: !seriesNames.length,\r\n blocks: [createTooltipMarkup('nameValue', {\r\n name: name, value: value\r\n })]\r\n });\r\n };\r\n MapSeries.prototype.setZoom = function (zoom) {\r\n this.option.zoom = zoom;\r\n };\r\n MapSeries.prototype.setCenter = function (center) {\r\n this.option.center = center;\r\n };\r\n MapSeries.type = 'series.map';\r\n MapSeries.dependencies = ['geo'];\r\n MapSeries.layoutMode = 'box';\r\n MapSeries.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'geo',\r\n map: '',\r\n left: 'center',\r\n top: 'center',\r\n aspectScale: 0.75,\r\n showLegendSymbol: true,\r\n boundingCoords: null,\r\n center: null,\r\n zoom: 1,\r\n scaleLimit: null,\r\n selectedMode: true,\r\n label: {\r\n show: false,\r\n color: '#000'\r\n },\r\n itemStyle: {\r\n borderWidth: 0.5,\r\n borderColor: '#444',\r\n areaColor: '#eee'\r\n },\r\n emphasis: {\r\n label: {\r\n show: true,\r\n color: 'rgb(100,0,0)'\r\n },\r\n itemStyle: {\r\n areaColor: 'rgba(255,215,0,0.8)'\r\n }\r\n },\r\n select: {\r\n label: {\r\n show: true,\r\n color: 'rgb(100,0,0)'\r\n },\r\n itemStyle: {\r\n color: 'rgba(255,215,0,0.8)'\r\n }\r\n },\r\n nameProperty: 'name'\r\n };\r\n return MapSeries;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(MapSeries);\n\nvar ATTR = '\\0_ec_interaction_mutex';\r\nfunction take(zr, resourceKey, userKey) {\r\n var store = getStore(zr);\r\n store[resourceKey] = userKey;\r\n}\r\nfunction release(zr, resourceKey, userKey) {\r\n var store = getStore(zr);\r\n var uKey = store[resourceKey];\r\n if (uKey === userKey) {\r\n store[resourceKey] = null;\r\n }\r\n}\r\nfunction isTaken(zr, resourceKey) {\r\n return !!getStore(zr)[resourceKey];\r\n}\r\nfunction getStore(zr) {\r\n return zr[ATTR] || (zr[ATTR] = {});\r\n}\r\nregisterAction({ type: 'takeGlobalCursor', event: 'globalCursorTaken', update: 'update' }, function () { });\n\nvar RoamController = (function (_super) {\r\n __extends(RoamController, _super);\r\n function RoamController(zr) {\r\n var _this = _super.call(this) || this;\r\n _this._zr = zr;\r\n var mousedownHandler = bind(_this._mousedownHandler, _this);\r\n var mousemoveHandler = bind(_this._mousemoveHandler, _this);\r\n var mouseupHandler = bind(_this._mouseupHandler, _this);\r\n var mousewheelHandler = bind(_this._mousewheelHandler, _this);\r\n var pinchHandler = bind(_this._pinchHandler, _this);\r\n _this.enable = function (controlType, opt) {\r\n this.disable();\r\n this._opt = defaults(clone(opt) || {}, {\r\n zoomOnMouseWheel: true,\r\n moveOnMouseMove: true,\r\n moveOnMouseWheel: false,\r\n preventDefaultMouseMove: true\r\n });\r\n if (controlType == null) {\r\n controlType = true;\r\n }\r\n if (controlType === true || (controlType === 'move' || controlType === 'pan')) {\r\n zr.on('mousedown', mousedownHandler);\r\n zr.on('mousemove', mousemoveHandler);\r\n zr.on('mouseup', mouseupHandler);\r\n }\r\n if (controlType === true || (controlType === 'scale' || controlType === 'zoom')) {\r\n zr.on('mousewheel', mousewheelHandler);\r\n zr.on('pinch', pinchHandler);\r\n }\r\n };\r\n _this.disable = function () {\r\n zr.off('mousedown', mousedownHandler);\r\n zr.off('mousemove', mousemoveHandler);\r\n zr.off('mouseup', mouseupHandler);\r\n zr.off('mousewheel', mousewheelHandler);\r\n zr.off('pinch', pinchHandler);\r\n };\r\n return _this;\r\n }\r\n RoamController.prototype.isDragging = function () {\r\n return this._dragging;\r\n };\r\n RoamController.prototype.isPinching = function () {\r\n return this._pinching;\r\n };\r\n RoamController.prototype.setPointerChecker = function (pointerChecker) {\r\n this.pointerChecker = pointerChecker;\r\n };\r\n RoamController.prototype.dispose = function () {\r\n this.disable();\r\n };\r\n RoamController.prototype._mousedownHandler = function (e) {\r\n if (isMiddleOrRightButtonOnMouseUpDown(e)\r\n || (e.target && e.target.draggable)) {\r\n return;\r\n }\r\n var x = e.offsetX;\r\n var y = e.offsetY;\r\n if (this.pointerChecker && this.pointerChecker(e, x, y)) {\r\n this._x = x;\r\n this._y = y;\r\n this._dragging = true;\r\n }\r\n };\r\n RoamController.prototype._mousemoveHandler = function (e) {\r\n if (!this._dragging\r\n || !isAvailableBehavior('moveOnMouseMove', e, this._opt)\r\n || e.gestureEvent === 'pinch'\r\n || isTaken(this._zr, 'globalPan')) {\r\n return;\r\n }\r\n var x = e.offsetX;\r\n var y = e.offsetY;\r\n var oldX = this._x;\r\n var oldY = this._y;\r\n var dx = x - oldX;\r\n var dy = y - oldY;\r\n this._x = x;\r\n this._y = y;\r\n this._opt.preventDefaultMouseMove && stop(e.event);\r\n trigger(this, 'pan', 'moveOnMouseMove', e, {\r\n dx: dx, dy: dy, oldX: oldX, oldY: oldY, newX: x, newY: y, isAvailableBehavior: null\r\n });\r\n };\r\n RoamController.prototype._mouseupHandler = function (e) {\r\n if (!isMiddleOrRightButtonOnMouseUpDown(e)) {\r\n this._dragging = false;\r\n }\r\n };\r\n RoamController.prototype._mousewheelHandler = function (e) {\r\n var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\r\n var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\r\n var wheelDelta = e.wheelDelta;\r\n var absWheelDeltaDelta = Math.abs(wheelDelta);\r\n var originX = e.offsetX;\r\n var originY = e.offsetY;\r\n if (wheelDelta === 0 || (!shouldZoom && !shouldMove)) {\r\n return;\r\n }\r\n if (shouldZoom) {\r\n var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\r\n var scale = wheelDelta > 0 ? factor : 1 / factor;\r\n checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\r\n scale: scale, originX: originX, originY: originY, isAvailableBehavior: null\r\n });\r\n }\r\n if (shouldMove) {\r\n var absDelta = Math.abs(wheelDelta);\r\n var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\r\n checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\r\n scrollDelta: scrollDelta, originX: originX, originY: originY, isAvailableBehavior: null\r\n });\r\n }\r\n };\r\n RoamController.prototype._pinchHandler = function (e) {\r\n if (isTaken(this._zr, 'globalPan')) {\r\n return;\r\n }\r\n var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\r\n checkPointerAndTrigger(this, 'zoom', null, e, {\r\n scale: scale, originX: e.pinchX, originY: e.pinchY, isAvailableBehavior: null\r\n });\r\n };\r\n return RoamController;\r\n}(Eventful));\r\nfunction checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\r\n if (controller.pointerChecker\r\n && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\r\n stop(e.event);\r\n trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\r\n }\r\n}\r\nfunction trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\r\n contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e);\r\n controller.trigger(eventName, contollerEvent);\r\n}\r\nfunction isAvailableBehavior(behaviorToCheck, e, settings) {\r\n var setting = settings[behaviorToCheck];\r\n return !behaviorToCheck || (setting && (!isString(setting) || e.event[setting + 'Key']));\r\n}\n\nfunction updateViewOnPan(controllerHost, dx, dy) {\r\n var target = controllerHost.target;\r\n target.x += dx;\r\n target.y += dy;\r\n target.dirty();\r\n}\r\nfunction updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\r\n var target = controllerHost.target;\r\n var zoomLimit = controllerHost.zoomLimit;\r\n var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\r\n newZoom *= zoomDelta;\r\n if (zoomLimit) {\r\n var zoomMin = zoomLimit.min || 0;\r\n var zoomMax = zoomLimit.max || Infinity;\r\n newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\r\n }\r\n var zoomScale = newZoom / controllerHost.zoom;\r\n controllerHost.zoom = newZoom;\r\n target.x -= (zoomX - target.x) * (zoomScale - 1);\r\n target.y -= (zoomY - target.y) * (zoomScale - 1);\r\n target.scaleX *= zoomScale;\r\n target.scaleY *= zoomScale;\r\n target.dirty();\r\n}\n\nvar IRRELEVANT_EXCLUDES = { 'axisPointer': 1, 'tooltip': 1, 'brush': 1 };\r\nfunction onIrrelevantElement(e, api, targetCoordSysModel) {\r\n var model = api.getComponentByElement(e.topTarget);\r\n var coordSys = model && model.coordinateSystem;\r\n return model\r\n && model !== targetCoordSysModel\r\n && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType)\r\n && (coordSys && coordSys.model !== targetCoordSysModel);\r\n}\n\nfunction getFixedItemStyle(model) {\r\n var itemStyle = model.getItemStyle();\r\n var areaColor = model.get('areaColor');\r\n if (areaColor != null) {\r\n itemStyle.fill = areaColor;\r\n }\r\n return itemStyle;\r\n}\r\nvar MapDraw = (function () {\r\n function MapDraw(api) {\r\n var group = new Group();\r\n this.uid = getUID('ec_map_draw');\r\n this._controller = new RoamController(api.getZr());\r\n this._controllerHost = { target: group };\r\n this.group = group;\r\n group.add(this._regionsGroup = new Group());\r\n group.add(this._backgroundGroup = new Group());\r\n }\r\n MapDraw.prototype.draw = function (mapOrGeoModel, ecModel, api, fromView, payload) {\r\n var isGeo = mapOrGeoModel.mainType === 'geo';\r\n var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\r\n isGeo && ecModel.eachComponent({ mainType: 'series', subType: 'map' }, function (mapSeries) {\r\n if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\r\n data = mapSeries.getData();\r\n }\r\n });\r\n var geo = mapOrGeoModel.coordinateSystem;\r\n this._updateBackground(geo);\r\n var regionsGroup = this._regionsGroup;\r\n var group = this.group;\r\n var transformInfo = geo.getTransformInfo();\r\n var isFirstDraw = !regionsGroup.childAt(0) || payload;\r\n var targetScaleX;\r\n var targetScaleY;\r\n if (isFirstDraw) {\r\n group.transform = transformInfo.roamTransform;\r\n group.decomposeTransform();\r\n group.dirty();\r\n }\r\n else {\r\n var target = new Transformable();\r\n target.transform = transformInfo.roamTransform;\r\n target.decomposeTransform();\r\n var props = {\r\n scaleX: target.scaleX,\r\n scaleY: target.scaleY,\r\n x: target.x,\r\n y: target.y\r\n };\r\n targetScaleX = target.scaleX;\r\n targetScaleY = target.scaleY;\r\n updateProps(group, props, mapOrGeoModel);\r\n }\r\n regionsGroup.removeAll();\r\n var nameMap = createHashMap();\r\n var isVisualEncodedByVisualMap = data\r\n && data.getVisual('visualMeta')\r\n && data.getVisual('visualMeta').length > 0;\r\n each(geo.regions, function (region) {\r\n var regionGroup = nameMap.get(region.name)\r\n || nameMap.set(region.name, new Group());\r\n var compoundPath = new CompoundPath({\r\n segmentIgnoreThreshold: 1,\r\n shape: {\r\n paths: []\r\n }\r\n });\r\n regionGroup.add(compoundPath);\r\n var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel;\r\n var itemStyleModel = regionModel.getModel('itemStyle');\r\n var emphasisModel = regionModel.getModel('emphasis');\r\n var emphasisItemStyleModel = emphasisModel.getModel('itemStyle');\r\n var blurItemStyleModel = regionModel.getModel(['blur', 'itemStyle']);\r\n var selectItemStyleModel = regionModel.getModel(['select', 'itemStyle']);\r\n var itemStyle = getFixedItemStyle(itemStyleModel);\r\n var emphasisItemStyle = getFixedItemStyle(emphasisItemStyleModel);\r\n var blurItemStyle = getFixedItemStyle(blurItemStyleModel);\r\n var selectItemStyle = getFixedItemStyle(selectItemStyleModel);\r\n var dataIdx;\r\n if (data) {\r\n dataIdx = data.indexOfName(region.name);\r\n var style = data.getItemVisual(dataIdx, 'style');\r\n var decal = data.getItemVisual(dataIdx, 'decal');\r\n if (isVisualEncodedByVisualMap && style.fill) {\r\n itemStyle.fill = style.fill;\r\n }\r\n if (decal) {\r\n itemStyle.decal = createOrUpdatePatternFromDecal(decal, api);\r\n }\r\n }\r\n var sx = transformInfo.rawScaleX;\r\n var sy = transformInfo.rawScaleY;\r\n var offsetX = transformInfo.rawX;\r\n var offsetY = transformInfo.rawY;\r\n var transformPoint = function (point) {\r\n return [\r\n point[0] * sx + offsetX,\r\n point[1] * sy + offsetY\r\n ];\r\n };\r\n each(region.geometries, function (geometry) {\r\n if (geometry.type !== 'polygon') {\r\n return;\r\n }\r\n var points = [];\r\n for (var i = 0; i < geometry.exterior.length; ++i) {\r\n points.push(transformPoint(geometry.exterior[i]));\r\n }\r\n compoundPath.shape.paths.push(new Polygon({\r\n segmentIgnoreThreshold: 1,\r\n shape: {\r\n points: points\r\n }\r\n }));\r\n for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); ++i) {\r\n var interior = geometry.interiors[i];\r\n var points_1 = [];\r\n for (var j = 0; j < interior.length; ++j) {\r\n points_1.push(transformPoint(interior[j]));\r\n }\r\n compoundPath.shape.paths.push(new Polygon({\r\n segmentIgnoreThreshold: 1,\r\n shape: {\r\n points: points_1\r\n }\r\n }));\r\n }\r\n });\r\n compoundPath.setStyle(itemStyle);\r\n compoundPath.style.strokeNoScale = true;\r\n compoundPath.culling = true;\r\n compoundPath.ensureState('emphasis').style = emphasisItemStyle;\r\n compoundPath.ensureState('blur').style = blurItemStyle;\r\n compoundPath.ensureState('select').style = selectItemStyle;\r\n var showLabel = false;\r\n for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n var stateName = DISPLAY_STATES[i];\r\n if (regionModel.get(stateName === 'normal' ? ['label', 'show'] : [stateName, 'label', 'show'])) {\r\n showLabel = true;\r\n break;\r\n }\r\n }\r\n var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\r\n var itemLayout = data && data.getItemLayout(dataIdx);\r\n if ((isGeo || isDataNaN && (showLabel))\r\n || (itemLayout && itemLayout.showLabel)) {\r\n var query = !isGeo ? dataIdx : region.name;\r\n var labelFetcher = void 0;\r\n if (!data || dataIdx >= 0) {\r\n labelFetcher = mapOrGeoModel;\r\n }\r\n var centerPt = transformPoint(region.center);\r\n var textEl = new ZRText({\r\n x: centerPt[0],\r\n y: centerPt[1],\r\n scaleX: 1 / group.scaleX,\r\n scaleY: 1 / group.scaleY,\r\n z2: 10,\r\n silent: true\r\n });\r\n setLabelStyle(textEl, getLabelStatesModels(regionModel), {\r\n labelFetcher: labelFetcher,\r\n labelDataIndex: query,\r\n defaultText: region.name\r\n }, { normal: {\r\n align: 'center',\r\n verticalAlign: 'middle'\r\n } });\r\n compoundPath.setTextContent(textEl);\r\n compoundPath.setTextConfig({\r\n local: true\r\n });\r\n compoundPath.disableLabelAnimation = true;\r\n if (!isFirstDraw) {\r\n updateProps(textEl, {\r\n scaleX: 1 / targetScaleX,\r\n scaleY: 1 / targetScaleY\r\n }, mapOrGeoModel);\r\n }\r\n }\r\n if (data) {\r\n data.setItemGraphicEl(dataIdx, regionGroup);\r\n }\r\n else {\r\n var regionModel_1 = mapOrGeoModel.getRegionModel(region.name);\r\n getECData(compoundPath).eventData = {\r\n componentType: 'geo',\r\n componentIndex: mapOrGeoModel.componentIndex,\r\n geoIndex: mapOrGeoModel.componentIndex,\r\n name: region.name,\r\n region: (regionModel_1 && regionModel_1.option) || {}\r\n };\r\n }\r\n var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);\r\n groupRegions.push(region);\r\n regionGroup.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode');\r\n enableHoverEmphasis(regionGroup, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n regionsGroup.add(regionGroup);\r\n });\r\n this._updateController(mapOrGeoModel, ecModel, api);\r\n this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView);\r\n };\r\n MapDraw.prototype.remove = function () {\r\n this._regionsGroup.removeAll();\r\n this._backgroundGroup.removeAll();\r\n this._controller.dispose();\r\n this._mapName && geoSourceManager.removeGraphic(this._mapName, this.uid);\r\n this._mapName = null;\r\n this._controllerHost = null;\r\n };\r\n MapDraw.prototype._updateBackground = function (geo) {\r\n var mapName = geo.map;\r\n if (this._mapName !== mapName) {\r\n each(geoSourceManager.makeGraphic(mapName, this.uid), function (root) {\r\n this._backgroundGroup.add(root);\r\n }, this);\r\n }\r\n this._mapName = mapName;\r\n };\r\n MapDraw.prototype._updateController = function (mapOrGeoModel, ecModel, api) {\r\n var geo = mapOrGeoModel.coordinateSystem;\r\n var controller = this._controller;\r\n var controllerHost = this._controllerHost;\r\n controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\r\n controllerHost.zoom = geo.getZoom();\r\n controller.enable(mapOrGeoModel.get('roam') || false);\r\n var mainType = mapOrGeoModel.mainType;\r\n function makeActionBase() {\r\n var action = {\r\n type: 'geoRoam',\r\n componentType: mainType\r\n };\r\n action[mainType + 'Id'] = mapOrGeoModel.id;\r\n return action;\r\n }\r\n controller.off('pan').on('pan', function (e) {\r\n this._mouseDownFlag = false;\r\n updateViewOnPan(controllerHost, e.dx, e.dy);\r\n api.dispatchAction(extend(makeActionBase(), {\r\n dx: e.dx,\r\n dy: e.dy\r\n }));\r\n }, this);\r\n controller.off('zoom').on('zoom', function (e) {\r\n this._mouseDownFlag = false;\r\n updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\r\n api.dispatchAction(extend(makeActionBase(), {\r\n zoom: e.scale,\r\n originX: e.originX,\r\n originY: e.originY\r\n }));\r\n var group = this.group;\r\n this._regionsGroup.traverse(function (el) {\r\n var textContent = el.getTextContent();\r\n if (textContent) {\r\n textContent.scaleX = 1 / group.scaleX;\r\n textContent.scaleY = 1 / group.scaleY;\r\n textContent.markRedraw();\r\n }\r\n });\r\n }, this);\r\n controller.setPointerChecker(function (e, x, y) {\r\n return geo.getViewRectAfterRoam().contain(x, y)\r\n && !onIrrelevantElement(e, api, mapOrGeoModel);\r\n });\r\n };\r\n MapDraw.prototype._updateMapSelectHandler = function (mapOrGeoModel, regionsGroup, api, fromView) {\r\n var mapDraw = this;\r\n regionsGroup.off('mousedown');\r\n if (mapOrGeoModel.get('selectedMode')) {\r\n regionsGroup.on('mousedown', function () {\r\n mapDraw._mouseDownFlag = true;\r\n });\r\n regionsGroup.on('click', function (e) {\r\n if (!mapDraw._mouseDownFlag) {\r\n return;\r\n }\r\n mapDraw._mouseDownFlag = false;\r\n });\r\n }\r\n };\r\n return MapDraw;\r\n}());\n\nvar MapView = (function (_super) {\r\n __extends(MapView, _super);\r\n function MapView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MapView.type;\r\n return _this;\r\n }\r\n MapView.prototype.render = function (mapModel, ecModel, api, payload) {\r\n if (payload && payload.type === 'mapToggleSelect'\r\n && payload.from === this.uid) {\r\n return;\r\n }\r\n var group = this.group;\r\n group.removeAll();\r\n if (mapModel.getHostGeoModel()) {\r\n return;\r\n }\r\n if (!(payload && payload.type === 'geoRoam'\r\n && payload.componentType === 'series'\r\n && payload.seriesId === mapModel.id)) {\r\n if (mapModel.needsDrawMap) {\r\n var mapDraw = this._mapDraw || new MapDraw(api);\r\n group.add(mapDraw.group);\r\n mapDraw.draw(mapModel, ecModel, api, this, payload);\r\n this._mapDraw = mapDraw;\r\n }\r\n else {\r\n this._mapDraw && this._mapDraw.remove();\r\n this._mapDraw = null;\r\n }\r\n }\r\n else {\r\n var mapDraw = this._mapDraw;\r\n mapDraw && group.add(mapDraw.group);\r\n }\r\n mapModel.get('showLegendSymbol') && ecModel.getComponent('legend')\r\n && this._renderSymbols(mapModel, ecModel, api);\r\n };\r\n MapView.prototype.remove = function () {\r\n this._mapDraw && this._mapDraw.remove();\r\n this._mapDraw = null;\r\n this.group.removeAll();\r\n };\r\n MapView.prototype.dispose = function () {\r\n this._mapDraw && this._mapDraw.remove();\r\n this._mapDraw = null;\r\n };\r\n MapView.prototype._renderSymbols = function (mapModel, ecModel, api) {\r\n var originalData = mapModel.originalData;\r\n var group = this.group;\r\n originalData.each(originalData.mapDimension('value'), function (value, originalDataIndex) {\r\n if (isNaN(value)) {\r\n return;\r\n }\r\n var layout = originalData.getItemLayout(originalDataIndex);\r\n if (!layout || !layout.point) {\r\n return;\r\n }\r\n var point = layout.point;\r\n var offset = layout.offset;\r\n var circle = new Circle({\r\n style: {\r\n fill: mapModel.getData().getVisual('style').fill\r\n },\r\n shape: {\r\n cx: point[0] + offset * 9,\r\n cy: point[1],\r\n r: 3\r\n },\r\n silent: true,\r\n z2: 8 + (!offset ? Z2_EMPHASIS_LIFT + 1 : 0)\r\n });\r\n if (!offset) {\r\n var fullData = mapModel.mainSeries.getData();\r\n var name_1 = originalData.getName(originalDataIndex);\r\n var fullIndex_1 = fullData.indexOfName(name_1);\r\n var itemModel = originalData.getItemModel(originalDataIndex);\r\n var labelModel = itemModel.getModel('label');\r\n var regionGroup = fullData.getItemGraphicEl(fullIndex_1);\r\n setLabelStyle(circle, getLabelStatesModels(itemModel), {\r\n labelFetcher: {\r\n getFormattedLabel: function (idx, state) {\r\n return mapModel.getFormattedLabel(fullIndex_1, state);\r\n }\r\n }\r\n });\r\n circle.disableLabelAnimation = true;\r\n if (!labelModel.get('position')) {\r\n circle.setTextConfig({\r\n position: 'bottom'\r\n });\r\n }\r\n regionGroup.onHoverStateChange = function (toState) {\r\n circle.useState(toState);\r\n };\r\n }\r\n group.add(circle);\r\n });\r\n };\r\n MapView.type = 'map';\r\n return MapView;\r\n}(ChartView));\r\nChartView.registerClass(MapView);\n\nfunction updateCenterAndZoom(view, payload, zoomLimit) {\r\n var previousZoom = view.getZoom();\r\n var center = view.getCenter();\r\n var zoom = payload.zoom;\r\n var point = view.dataToPoint(center);\r\n if (payload.dx != null && payload.dy != null) {\r\n point[0] -= payload.dx;\r\n point[1] -= payload.dy;\r\n view.setCenter(view.pointToData(point));\r\n }\r\n if (zoom != null) {\r\n if (zoomLimit) {\r\n var zoomMin = zoomLimit.min || 0;\r\n var zoomMax = zoomLimit.max || Infinity;\r\n zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\r\n }\r\n view.scaleX *= zoom;\r\n view.scaleY *= zoom;\r\n var fixX = (payload.originX - view.x) * (zoom - 1);\r\n var fixY = (payload.originY - view.y) * (zoom - 1);\r\n view.x -= fixX;\r\n view.y -= fixY;\r\n view.updateTransform();\r\n view.setCenter(view.pointToData(point));\r\n view.setZoom(zoom * previousZoom);\r\n }\r\n return {\r\n center: view.getCenter(),\r\n zoom: view.getZoom()\r\n };\r\n}\n\nregisterAction({\r\n type: 'geoRoam',\r\n event: 'geoRoam',\r\n update: 'updateTransform'\r\n}, function (payload, ecModel) {\r\n var componentType = payload.componentType || 'series';\r\n ecModel.eachComponent({ mainType: componentType, query: payload }, function (componentModel) {\r\n var geo = componentModel.coordinateSystem;\r\n if (geo.type !== 'geo') {\r\n return;\r\n }\r\n var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'));\r\n componentModel.setCenter\r\n && componentModel.setCenter(res.center);\r\n componentModel.setZoom\r\n && componentModel.setZoom(res.zoom);\r\n if (componentType === 'series') {\r\n each(componentModel.seriesGroup, function (seriesModel) {\r\n seriesModel.setCenter(res.center);\r\n seriesModel.setZoom(res.zoom);\r\n });\r\n }\r\n });\r\n});\n\nvar v2ApplyTransform = applyTransform;\r\nvar View = (function (_super) {\r\n __extends(View, _super);\r\n function View(name) {\r\n var _this = _super.call(this) || this;\r\n _this.type = 'view';\r\n _this.dimensions = ['x', 'y'];\r\n _this._roamTransformable = new Transformable();\r\n _this._rawTransformable = new Transformable();\r\n _this.name = name;\r\n return _this;\r\n }\r\n View.prototype.setBoundingRect = function (x, y, width, height) {\r\n this._rect = new BoundingRect(x, y, width, height);\r\n return this._rect;\r\n };\r\n View.prototype.getBoundingRect = function () {\r\n return this._rect;\r\n };\r\n View.prototype.setViewRect = function (x, y, width, height) {\r\n this.transformTo(x, y, width, height);\r\n this._viewRect = new BoundingRect(x, y, width, height);\r\n };\r\n View.prototype.transformTo = function (x, y, width, height) {\r\n var rect = this.getBoundingRect();\r\n var rawTransform = this._rawTransformable;\r\n rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\r\n rawTransform.decomposeTransform();\r\n this._updateTransform();\r\n };\r\n View.prototype.setCenter = function (centerCoord) {\r\n if (!centerCoord) {\r\n return;\r\n }\r\n this._center = centerCoord;\r\n this._updateCenterAndZoom();\r\n };\r\n View.prototype.setZoom = function (zoom) {\r\n zoom = zoom || 1;\r\n var zoomLimit = this.zoomLimit;\r\n if (zoomLimit) {\r\n if (zoomLimit.max != null) {\r\n zoom = Math.min(zoomLimit.max, zoom);\r\n }\r\n if (zoomLimit.min != null) {\r\n zoom = Math.max(zoomLimit.min, zoom);\r\n }\r\n }\r\n this._zoom = zoom;\r\n this._updateCenterAndZoom();\r\n };\r\n View.prototype.getDefaultCenter = function () {\r\n var rawRect = this.getBoundingRect();\r\n var cx = rawRect.x + rawRect.width / 2;\r\n var cy = rawRect.y + rawRect.height / 2;\r\n return [cx, cy];\r\n };\r\n View.prototype.getCenter = function () {\r\n return this._center || this.getDefaultCenter();\r\n };\r\n View.prototype.getZoom = function () {\r\n return this._zoom || 1;\r\n };\r\n View.prototype.getRoamTransform = function () {\r\n return this._roamTransformable.getLocalTransform();\r\n };\r\n View.prototype._updateCenterAndZoom = function () {\r\n var rawTransformMatrix = this._rawTransformable.getLocalTransform();\r\n var roamTransform = this._roamTransformable;\r\n var defaultCenter = this.getDefaultCenter();\r\n var center = this.getCenter();\r\n var zoom = this.getZoom();\r\n center = applyTransform([], center, rawTransformMatrix);\r\n defaultCenter = applyTransform([], defaultCenter, rawTransformMatrix);\r\n roamTransform.originX = center[0];\r\n roamTransform.originY = center[1];\r\n roamTransform.x = defaultCenter[0] - center[0];\r\n roamTransform.y = defaultCenter[1] - center[1];\r\n roamTransform.scaleX = roamTransform.scaleY = zoom;\r\n this._updateTransform();\r\n };\r\n View.prototype._updateTransform = function () {\r\n var roamTransformable = this._roamTransformable;\r\n var rawTransformable = this._rawTransformable;\r\n rawTransformable.parent = roamTransformable;\r\n roamTransformable.updateTransform();\r\n rawTransformable.updateTransform();\r\n copy$1(this.transform || (this.transform = []), rawTransformable.transform || create$1());\r\n this._rawTransform = rawTransformable.getLocalTransform();\r\n this.invTransform = this.invTransform || [];\r\n invert(this.invTransform, this.transform);\r\n this.decomposeTransform();\r\n };\r\n View.prototype.getTransformInfo = function () {\r\n var roamTransform = this._roamTransformable.transform;\r\n var rawTransformable = this._rawTransformable;\r\n return {\r\n roamTransform: roamTransform ? slice(roamTransform) : create$1(),\r\n rawScaleX: rawTransformable.scaleX,\r\n rawScaleY: rawTransformable.scaleY,\r\n rawX: rawTransformable.x,\r\n rawY: rawTransformable.y\r\n };\r\n };\r\n View.prototype.getViewRect = function () {\r\n return this._viewRect;\r\n };\r\n View.prototype.getViewRectAfterRoam = function () {\r\n var rect = this.getBoundingRect().clone();\r\n rect.applyTransform(this.transform);\r\n return rect;\r\n };\r\n View.prototype.dataToPoint = function (data, noRoam, out) {\r\n var transform = noRoam ? this._rawTransform : this.transform;\r\n out = out || [];\r\n return transform\r\n ? v2ApplyTransform(out, data, transform)\r\n : copy(out, data);\r\n };\r\n View.prototype.pointToData = function (point) {\r\n var invTransform = this.invTransform;\r\n return invTransform\r\n ? v2ApplyTransform([], point, invTransform)\r\n : [point[0], point[1]];\r\n };\r\n View.prototype.convertToPixel = function (ecModel, finder, value) {\r\n var coordSys = getCoordSys(finder);\r\n return coordSys === this ? coordSys.dataToPoint(value) : null;\r\n };\r\n View.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n var coordSys = getCoordSys(finder);\r\n return coordSys === this ? coordSys.pointToData(pixel) : null;\r\n };\r\n View.prototype.containPoint = function (point) {\r\n return this.getViewRectAfterRoam().contain(point[0], point[1]);\r\n };\r\n View.dimensions = ['x', 'y'];\r\n return View;\r\n}(Transformable));\r\nfunction getCoordSys(finder) {\r\n var seriesModel = finder.seriesModel;\r\n return seriesModel ? seriesModel.coordinateSystem : null;\r\n}\n\nvar Geo = (function (_super) {\r\n __extends(Geo, _super);\r\n function Geo(name, map, nameMap, invertLongitute) {\r\n var _this = _super.call(this, name) || this;\r\n _this.dimensions = ['lng', 'lat'];\r\n _this.type = 'geo';\r\n _this.map = map;\r\n var source = geoSourceManager.load(map, nameMap);\r\n _this._nameCoordMap = source.nameCoordMap;\r\n _this._regionsMap = source.regionsMap;\r\n _this._invertLongitute = invertLongitute == null ? true : invertLongitute;\r\n _this.regions = source.regions;\r\n _this._rect = source.boundingRect;\r\n return _this;\r\n }\r\n Geo.prototype.containCoord = function (coord) {\r\n var regions = this.regions;\r\n for (var i = 0; i < regions.length; i++) {\r\n if (regions[i].contain(coord)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Geo.prototype.transformTo = function (x, y, width, height) {\r\n var rect = this.getBoundingRect();\r\n var invertLongitute = this._invertLongitute;\r\n rect = rect.clone();\r\n if (invertLongitute) {\r\n rect.y = -rect.y - rect.height;\r\n }\r\n var rawTransformable = this._rawTransformable;\r\n rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\r\n rawTransformable.decomposeTransform();\r\n if (invertLongitute) {\r\n rawTransformable.scaleY = -rawTransformable.scaleY;\r\n }\r\n rawTransformable.updateTransform();\r\n this._updateTransform();\r\n };\r\n Geo.prototype.getRegion = function (name) {\r\n return this._regionsMap.get(name);\r\n };\r\n Geo.prototype.getRegionByCoord = function (coord) {\r\n var regions = this.regions;\r\n for (var i = 0; i < regions.length; i++) {\r\n if (regions[i].contain(coord)) {\r\n return regions[i];\r\n }\r\n }\r\n };\r\n Geo.prototype.addGeoCoord = function (name, geoCoord) {\r\n this._nameCoordMap.set(name, geoCoord);\r\n };\r\n Geo.prototype.getGeoCoord = function (name) {\r\n return this._nameCoordMap.get(name);\r\n };\r\n Geo.prototype.getBoundingRect = function () {\r\n return this._rect;\r\n };\r\n Geo.prototype.dataToPoint = function (data, noRoam, out) {\r\n if (typeof data === 'string') {\r\n data = this.getGeoCoord(data);\r\n }\r\n if (data) {\r\n return View.prototype.dataToPoint.call(this, data, noRoam, out);\r\n }\r\n };\r\n Geo.prototype.convertToPixel = function (ecModel, finder, value) {\r\n var coordSys = getCoordSys$1(finder);\r\n return coordSys === this ? coordSys.dataToPoint(value) : null;\r\n };\r\n Geo.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n var coordSys = getCoordSys$1(finder);\r\n return coordSys === this ? coordSys.pointToData(pixel) : null;\r\n };\r\n return Geo;\r\n}(View));\r\nmixin(Geo, View);\r\nfunction getCoordSys$1(finder) {\r\n var geoModel = finder.geoModel;\r\n var seriesModel = finder.seriesModel;\r\n return geoModel\r\n ? geoModel.coordinateSystem\r\n : seriesModel\r\n ? (seriesModel.coordinateSystem\r\n || (seriesModel.getReferringComponents('geo', SINGLE_REFERRING).models[0] || {}).coordinateSystem)\r\n : null;\r\n}\n\nfunction resizeGeo(geoModel, api) {\r\n var boundingCoords = geoModel.get('boundingCoords');\r\n if (boundingCoords != null) {\r\n var leftTop = boundingCoords[0];\r\n var rightBottom = boundingCoords[1];\r\n if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {\r\n if (__DEV__) {\r\n console.error('Invalid boundingCoords');\r\n }\r\n }\r\n else {\r\n this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);\r\n }\r\n }\r\n var rect = this.getBoundingRect();\r\n var centerOption = geoModel.get('layoutCenter');\r\n var sizeOption = geoModel.get('layoutSize');\r\n var viewWidth = api.getWidth();\r\n var viewHeight = api.getHeight();\r\n var aspect = rect.width / rect.height * this.aspectScale;\r\n var useCenterAndSize = false;\r\n var center;\r\n var size;\r\n if (centerOption && sizeOption) {\r\n center = [\r\n parsePercent$2(centerOption[0], viewWidth),\r\n parsePercent$2(centerOption[1], viewHeight)\r\n ];\r\n size = parsePercent$2(sizeOption, Math.min(viewWidth, viewHeight));\r\n if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\r\n useCenterAndSize = true;\r\n }\r\n else {\r\n if (__DEV__) {\r\n console.warn('Given layoutCenter or layoutSize data are invalid. Use left/top/width/height instead.');\r\n }\r\n }\r\n }\r\n var viewRect;\r\n if (useCenterAndSize) {\r\n viewRect = {};\r\n if (aspect > 1) {\r\n viewRect.width = size;\r\n viewRect.height = size / aspect;\r\n }\r\n else {\r\n viewRect.height = size;\r\n viewRect.width = size * aspect;\r\n }\r\n viewRect.y = center[1] - viewRect.height / 2;\r\n viewRect.x = center[0] - viewRect.width / 2;\r\n }\r\n else {\r\n var boxLayoutOption = geoModel.getBoxLayoutParams();\r\n boxLayoutOption.aspect = aspect;\r\n viewRect = getLayoutRect(boxLayoutOption, {\r\n width: viewWidth,\r\n height: viewHeight\r\n });\r\n }\r\n this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\r\n this.setCenter(geoModel.get('center'));\r\n this.setZoom(geoModel.get('zoom'));\r\n}\r\nfunction setGeoCoords(geo, model) {\r\n each(model.get('geoCoord'), function (geoCoord, name) {\r\n geo.addGeoCoord(name, geoCoord);\r\n });\r\n}\r\nvar GeoCreator = (function () {\r\n function GeoCreator() {\r\n this.dimensions = Geo.prototype.dimensions;\r\n }\r\n GeoCreator.prototype.create = function (ecModel, api) {\r\n var geoList = [];\r\n ecModel.eachComponent('geo', function (geoModel, idx) {\r\n var name = geoModel.get('map');\r\n var aspectScale = geoModel.get('aspectScale');\r\n var invertLongitute = true;\r\n var mapRecords = mapDataStorage.retrieveMap(name);\r\n if (mapRecords && mapRecords[0] && mapRecords[0].type === 'svg') {\r\n aspectScale == null && (aspectScale = 1);\r\n invertLongitute = false;\r\n }\r\n else {\r\n aspectScale == null && (aspectScale = 0.75);\r\n }\r\n var geo = new Geo(name + idx, name, geoModel.get('nameMap'), invertLongitute);\r\n geo.aspectScale = aspectScale;\r\n geo.zoomLimit = geoModel.get('scaleLimit');\r\n geoList.push(geo);\r\n geoModel.coordinateSystem = geo;\r\n geo.model = geoModel;\r\n geo.resize = resizeGeo;\r\n geo.resize(geoModel, api);\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n var coordSys = seriesModel.get('coordinateSystem');\r\n if (coordSys === 'geo') {\r\n var geoIndex = seriesModel.get('geoIndex') || 0;\r\n seriesModel.coordinateSystem = geoList[geoIndex];\r\n }\r\n });\r\n var mapModelGroupBySeries = {};\r\n ecModel.eachSeriesByType('map', function (seriesModel) {\r\n if (!seriesModel.getHostGeoModel()) {\r\n var mapType = seriesModel.getMapType();\r\n mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\r\n mapModelGroupBySeries[mapType].push(seriesModel);\r\n }\r\n });\r\n each(mapModelGroupBySeries, function (mapSeries, mapType) {\r\n var nameMapList = map(mapSeries, function (singleMapSeries) {\r\n return singleMapSeries.get('nameMap');\r\n });\r\n var geo = new Geo(mapType, mapType, mergeAll(nameMapList));\r\n geo.zoomLimit = retrieve.apply(null, map(mapSeries, function (singleMapSeries) {\r\n return singleMapSeries.get('scaleLimit');\r\n }));\r\n geoList.push(geo);\r\n geo.resize = resizeGeo;\r\n geo.aspectScale = mapSeries[0].get('aspectScale');\r\n geo.resize(mapSeries[0], api);\r\n each(mapSeries, function (singleMapSeries) {\r\n singleMapSeries.coordinateSystem = geo;\r\n setGeoCoords(geo, singleMapSeries);\r\n });\r\n });\r\n return geoList;\r\n };\r\n GeoCreator.prototype.getFilledRegions = function (originRegionArr, mapName, nameMap) {\r\n var regionsArr = (originRegionArr || []).slice();\r\n var dataNameMap = createHashMap();\r\n for (var i = 0; i < regionsArr.length; i++) {\r\n dataNameMap.set(regionsArr[i].name, regionsArr[i]);\r\n }\r\n var source = geoSourceManager.load(mapName, nameMap);\r\n each(source.regions, function (region) {\r\n var name = region.name;\r\n !dataNameMap.get(name) && regionsArr.push({ name: name });\r\n });\r\n return regionsArr;\r\n };\r\n return GeoCreator;\r\n}());\r\nvar geoCreator = new GeoCreator();\r\nregisterCoordinateSystem('geo', geoCreator);\n\nfunction mapSymbolLayout(ecModel) {\r\n var processedMapType = {};\r\n ecModel.eachSeriesByType('map', function (mapSeries) {\r\n var mapType = mapSeries.getMapType();\r\n if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {\r\n return;\r\n }\r\n var mapSymbolOffsets = {};\r\n each(mapSeries.seriesGroup, function (subMapSeries) {\r\n var geo = subMapSeries.coordinateSystem;\r\n var data = subMapSeries.originalData;\r\n if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) {\r\n data.each(data.mapDimension('value'), function (value, idx) {\r\n var name = data.getName(idx);\r\n var region = geo.getRegion(name);\r\n if (!region || isNaN(value)) {\r\n return;\r\n }\r\n var offset = mapSymbolOffsets[name] || 0;\r\n var point = geo.dataToPoint(region.center);\r\n mapSymbolOffsets[name] = offset + 1;\r\n data.setItemLayout(idx, {\r\n point: point,\r\n offset: offset\r\n });\r\n });\r\n }\r\n });\r\n var data = mapSeries.getData();\r\n data.each(function (idx) {\r\n var name = data.getName(idx);\r\n var layout = data.getItemLayout(idx) || {};\r\n layout.showLabel = !mapSymbolOffsets[name];\r\n data.setItemLayout(idx, layout);\r\n });\r\n processedMapType[mapType] = true;\r\n });\r\n}\n\nfunction dataStatistics(datas, statisticType) {\r\n var dataNameMap = {};\r\n each(datas, function (data) {\r\n data.each(data.mapDimension('value'), function (value, idx) {\r\n var mapKey = 'ec-' + data.getName(idx);\r\n dataNameMap[mapKey] = dataNameMap[mapKey] || [];\r\n if (!isNaN(value)) {\r\n dataNameMap[mapKey].push(value);\r\n }\r\n });\r\n });\r\n return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\r\n var mapKey = 'ec-' + datas[0].getName(idx);\r\n var sum = 0;\r\n var min = Infinity;\r\n var max = -Infinity;\r\n var len = dataNameMap[mapKey].length;\r\n for (var i = 0; i < len; i++) {\r\n min = Math.min(min, dataNameMap[mapKey][i]);\r\n max = Math.max(max, dataNameMap[mapKey][i]);\r\n sum += dataNameMap[mapKey][i];\r\n }\r\n var result;\r\n if (statisticType === 'min') {\r\n result = min;\r\n }\r\n else if (statisticType === 'max') {\r\n result = max;\r\n }\r\n else if (statisticType === 'average') {\r\n result = sum / len;\r\n }\r\n else {\r\n result = sum;\r\n }\r\n return len === 0 ? NaN : result;\r\n });\r\n}\r\nfunction mapDataStatistic(ecModel) {\r\n var seriesGroups = {};\r\n ecModel.eachSeriesByType('map', function (seriesModel) {\r\n var hostGeoModel = seriesModel.getHostGeoModel();\r\n var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\r\n (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\r\n });\r\n each(seriesGroups, function (seriesList, key) {\r\n var data = dataStatistics(map(seriesList, function (seriesModel) {\r\n return seriesModel.getData();\r\n }), seriesList[0].get('mapValueCalculation'));\r\n for (var i = 0; i < seriesList.length; i++) {\r\n seriesList[i].originalData = seriesList[i].getData();\r\n }\r\n for (var i = 0; i < seriesList.length; i++) {\r\n seriesList[i].seriesGroup = seriesList;\r\n seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\r\n seriesList[i].setData(data.cloneShallow());\r\n seriesList[i].mainSeries = seriesList[0];\r\n }\r\n });\r\n}\n\nregisterLayout(mapSymbolLayout);\r\nregisterProcessor(PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\r\ncreateLegacyDataSelectAction('map', registerAction);\n\nvar inner$8 = makeInner();\r\nfunction linkList(opt) {\r\n var mainData = opt.mainData;\r\n var datas = opt.datas;\r\n if (!datas) {\r\n datas = { main: mainData };\r\n opt.datasAttr = { main: 'data' };\r\n }\r\n opt.datas = opt.mainData = null;\r\n linkAll(mainData, datas, opt);\r\n each(datas, function (data) {\r\n each(mainData.TRANSFERABLE_METHODS, function (methodName) {\r\n data.wrapMethod(methodName, curry(transferInjection, opt));\r\n });\r\n });\r\n mainData.wrapMethod('cloneShallow', curry(cloneShallowInjection, opt));\r\n each(mainData.CHANGABLE_METHODS, function (methodName) {\r\n mainData.wrapMethod(methodName, curry(changeInjection, opt));\r\n });\r\n assert(datas[mainData.dataType] === mainData);\r\n}\r\nfunction transferInjection(opt, res) {\r\n if (isMainData(this)) {\r\n var datas = extend({}, inner$8(this).datas);\r\n datas[this.dataType] = res;\r\n linkAll(res, datas, opt);\r\n }\r\n else {\r\n linkSingle(res, this.dataType, inner$8(this).mainData, opt);\r\n }\r\n return res;\r\n}\r\nfunction changeInjection(opt, res) {\r\n opt.struct && opt.struct.update();\r\n return res;\r\n}\r\nfunction cloneShallowInjection(opt, res) {\r\n each(inner$8(res).datas, function (data, dataType) {\r\n data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\r\n });\r\n return res;\r\n}\r\nfunction getLinkedData(dataType) {\r\n var mainData = inner$8(this).mainData;\r\n return (dataType == null || mainData == null)\r\n ? mainData\r\n : inner$8(mainData).datas[dataType];\r\n}\r\nfunction getLinkedDataAll() {\r\n var mainData = inner$8(this).mainData;\r\n return (mainData == null)\r\n ? [{ data: mainData }]\r\n : map(keys(inner$8(mainData).datas), function (type) {\r\n return {\r\n type: type,\r\n data: inner$8(mainData).datas[type]\r\n };\r\n });\r\n}\r\nfunction isMainData(data) {\r\n return inner$8(data).mainData === data;\r\n}\r\nfunction linkAll(mainData, datas, opt) {\r\n inner$8(mainData).datas = {};\r\n each(datas, function (data, dataType) {\r\n linkSingle(data, dataType, mainData, opt);\r\n });\r\n}\r\nfunction linkSingle(data, dataType, mainData, opt) {\r\n inner$8(mainData).datas[dataType] = data;\r\n inner$8(data).mainData = mainData;\r\n data.dataType = dataType;\r\n if (opt.struct) {\r\n data[opt.structAttr] = opt.struct;\r\n opt.struct[opt.datasAttr[dataType]] = data;\r\n }\r\n data.getLinkedData = getLinkedData;\r\n data.getLinkedDataAll = getLinkedDataAll;\r\n}\n\nvar TreeNode = (function () {\r\n function TreeNode(name, hostTree) {\r\n this.depth = 0;\r\n this.height = 0;\r\n this.dataIndex = -1;\r\n this.children = [];\r\n this.viewChildren = [];\r\n this.isExpand = false;\r\n this.name = name || '';\r\n this.hostTree = hostTree;\r\n }\r\n TreeNode.prototype.isRemoved = function () {\r\n return this.dataIndex < 0;\r\n };\r\n TreeNode.prototype.eachNode = function (options, cb, context) {\r\n if (typeof options === 'function') {\r\n context = cb;\r\n cb = options;\r\n options = null;\r\n }\r\n options = options || {};\r\n if (isString(options)) {\r\n options = { order: options };\r\n }\r\n var order = options.order || 'preorder';\r\n var children = this[options.attr || 'children'];\r\n var suppressVisitSub;\r\n order === 'preorder' && (suppressVisitSub = cb.call(context, this));\r\n for (var i = 0; !suppressVisitSub && i < children.length; i++) {\r\n children[i].eachNode(options, cb, context);\r\n }\r\n order === 'postorder' && cb.call(context, this);\r\n };\r\n TreeNode.prototype.updateDepthAndHeight = function (depth) {\r\n var height = 0;\r\n this.depth = depth;\r\n for (var i = 0; i < this.children.length; i++) {\r\n var child = this.children[i];\r\n child.updateDepthAndHeight(depth + 1);\r\n if (child.height > height) {\r\n height = child.height;\r\n }\r\n }\r\n this.height = height + 1;\r\n };\r\n TreeNode.prototype.getNodeById = function (id) {\r\n if (this.getId() === id) {\r\n return this;\r\n }\r\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\r\n var res = children[i].getNodeById(id);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n };\r\n TreeNode.prototype.contains = function (node) {\r\n if (node === this) {\r\n return true;\r\n }\r\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\r\n var res = children[i].contains(node);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n };\r\n TreeNode.prototype.getAncestors = function (includeSelf) {\r\n var ancestors = [];\r\n var node = includeSelf ? this : this.parentNode;\r\n while (node) {\r\n ancestors.push(node);\r\n node = node.parentNode;\r\n }\r\n ancestors.reverse();\r\n return ancestors;\r\n };\r\n TreeNode.prototype.getAncestorsIndices = function () {\r\n var indices = [];\r\n var currNode = this;\r\n while (currNode) {\r\n indices.push(currNode.dataIndex);\r\n currNode = currNode.parentNode;\r\n }\r\n indices.reverse();\r\n return indices;\r\n };\r\n TreeNode.prototype.getDescendantIndices = function () {\r\n var indices = [];\r\n this.eachNode(function (childNode) {\r\n indices.push(childNode.dataIndex);\r\n });\r\n return indices;\r\n };\r\n TreeNode.prototype.getValue = function (dimension) {\r\n var data = this.hostTree.data;\r\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\r\n };\r\n TreeNode.prototype.setLayout = function (layout, merge) {\r\n this.dataIndex >= 0\r\n && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\r\n };\r\n TreeNode.prototype.getLayout = function () {\r\n return this.hostTree.data.getItemLayout(this.dataIndex);\r\n };\r\n TreeNode.prototype.getModel = function (path) {\r\n if (this.dataIndex < 0) {\r\n return;\r\n }\r\n var hostTree = this.hostTree;\r\n var itemModel = hostTree.data.getItemModel(this.dataIndex);\r\n return itemModel.getModel(path);\r\n };\r\n TreeNode.prototype.getLevelModel = function () {\r\n return (this.hostTree.levelModels || [])[this.depth];\r\n };\r\n TreeNode.prototype.setVisual = function (key, value) {\r\n this.dataIndex >= 0\r\n && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\r\n };\r\n TreeNode.prototype.getVisual = function (key) {\r\n return this.hostTree.data.getItemVisual(this.dataIndex, key);\r\n };\r\n TreeNode.prototype.getRawIndex = function () {\r\n return this.hostTree.data.getRawIndex(this.dataIndex);\r\n };\r\n TreeNode.prototype.getId = function () {\r\n return this.hostTree.data.getId(this.dataIndex);\r\n };\r\n TreeNode.prototype.isAncestorOf = function (node) {\r\n var parent = node.parentNode;\r\n while (parent) {\r\n if (parent === this) {\r\n return true;\r\n }\r\n parent = parent.parentNode;\r\n }\r\n return false;\r\n };\r\n TreeNode.prototype.isDescendantOf = function (node) {\r\n return node !== this && node.isAncestorOf(this);\r\n };\r\n return TreeNode;\r\n}());\r\nvar Tree = (function () {\r\n function Tree(hostModel) {\r\n this.type = 'tree';\r\n this._nodes = [];\r\n this.hostModel = hostModel;\r\n }\r\n Tree.prototype.eachNode = function (options, cb, context) {\r\n this.root.eachNode(options, cb, context);\r\n };\r\n Tree.prototype.getNodeByDataIndex = function (dataIndex) {\r\n var rawIndex = this.data.getRawIndex(dataIndex);\r\n return this._nodes[rawIndex];\r\n };\r\n Tree.prototype.getNodeById = function (name) {\r\n return this.root.getNodeById(name);\r\n };\r\n Tree.prototype.update = function () {\r\n var data = this.data;\r\n var nodes = this._nodes;\r\n for (var i = 0, len = nodes.length; i < len; i++) {\r\n nodes[i].dataIndex = -1;\r\n }\r\n for (var i = 0, len = data.count(); i < len; i++) {\r\n nodes[data.getRawIndex(i)].dataIndex = i;\r\n }\r\n };\r\n Tree.prototype.clearLayouts = function () {\r\n this.data.clearItemLayouts();\r\n };\r\n Tree.createTree = function (dataRoot, hostModel, beforeLink) {\r\n var tree = new Tree(hostModel);\r\n var listData = [];\r\n var dimMax = 1;\r\n buildHierarchy(dataRoot);\r\n function buildHierarchy(dataNode, parentNode) {\r\n var value = dataNode.value;\r\n dimMax = Math.max(dimMax, isArray(value) ? value.length : 1);\r\n listData.push(dataNode);\r\n var node = new TreeNode(convertOptionIdName(dataNode.name, ''), tree);\r\n parentNode\r\n ? addChild(node, parentNode)\r\n : (tree.root = node);\r\n tree._nodes.push(node);\r\n var children = dataNode.children;\r\n if (children) {\r\n for (var i = 0; i < children.length; i++) {\r\n buildHierarchy(children[i], node);\r\n }\r\n }\r\n }\r\n tree.root.updateDepthAndHeight(0);\r\n var dimensionsInfo = createDimensions(listData, {\r\n coordDimensions: ['value'],\r\n dimensionsCount: dimMax\r\n });\r\n var list = new List(dimensionsInfo, hostModel);\r\n list.initData(listData);\r\n beforeLink && beforeLink(list);\r\n linkList({\r\n mainData: list,\r\n struct: tree,\r\n structAttr: 'tree'\r\n });\r\n tree.update();\r\n return tree;\r\n };\r\n return Tree;\r\n}());\r\nfunction addChild(child, node) {\r\n var children = node.children;\r\n if (child.parentNode === node) {\r\n return;\r\n }\r\n children.push(child);\r\n child.parentNode = node;\r\n}\n\nvar TreeSeriesModel = (function (_super) {\r\n __extends(TreeSeriesModel, _super);\r\n function TreeSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.hasSymbolVisual = true;\r\n _this.ignoreStyleOnData = true;\r\n return _this;\r\n }\r\n TreeSeriesModel.prototype.getInitialData = function (option) {\r\n var root = {\r\n name: option.name,\r\n children: option.data\r\n };\r\n var leaves = option.leaves || {};\r\n var leavesModel = new Model(leaves, this, this.ecModel);\r\n var tree = Tree.createTree(root, this, beforeLink);\r\n function beforeLink(nodeData) {\r\n nodeData.wrapMethod('getItemModel', function (model, idx) {\r\n var node = tree.getNodeByDataIndex(idx);\r\n if (!node.children.length || !node.isExpand) {\r\n model.parentModel = leavesModel;\r\n }\r\n return model;\r\n });\r\n }\r\n var treeDepth = 0;\r\n tree.eachNode('preorder', function (node) {\r\n if (node.depth > treeDepth) {\r\n treeDepth = node.depth;\r\n }\r\n });\r\n var expandAndCollapse = option.expandAndCollapse;\r\n var expandTreeDepth = (expandAndCollapse && option.initialTreeDepth >= 0)\r\n ? option.initialTreeDepth : treeDepth;\r\n tree.root.eachNode('preorder', function (node) {\r\n var item = node.hostTree.data.getRawDataItem(node.dataIndex);\r\n node.isExpand = (item && item.collapsed != null)\r\n ? !item.collapsed\r\n : node.depth <= expandTreeDepth;\r\n });\r\n return tree.data;\r\n };\r\n TreeSeriesModel.prototype.getOrient = function () {\r\n var orient = this.get('orient');\r\n if (orient === 'horizontal') {\r\n orient = 'LR';\r\n }\r\n else if (orient === 'vertical') {\r\n orient = 'TB';\r\n }\r\n return orient;\r\n };\r\n TreeSeriesModel.prototype.setZoom = function (zoom) {\r\n this.option.zoom = zoom;\r\n };\r\n TreeSeriesModel.prototype.setCenter = function (center) {\r\n this.option.center = center;\r\n };\r\n TreeSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n var tree = this.getData().tree;\r\n var realRoot = tree.root.children[0];\r\n var node = tree.getNodeByDataIndex(dataIndex);\r\n var value = node.getValue();\r\n var name = node.name;\r\n while (node && (node !== realRoot)) {\r\n name = node.parentNode.name + '.' + name;\r\n node = node.parentNode;\r\n }\r\n return createTooltipMarkup('nameValue', {\r\n name: name,\r\n value: value,\r\n noValue: isNaN(value) || value == null\r\n });\r\n };\r\n TreeSeriesModel.type = 'series.tree';\r\n TreeSeriesModel.layoutMode = 'box';\r\n TreeSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'view',\r\n left: '12%',\r\n top: '12%',\r\n right: '12%',\r\n bottom: '12%',\r\n layout: 'orthogonal',\r\n edgeShape: 'curve',\r\n edgeForkPosition: '50%',\r\n roam: false,\r\n nodeScaleRatio: 0.4,\r\n center: null,\r\n zoom: 1,\r\n orient: 'LR',\r\n symbol: 'emptyCircle',\r\n symbolSize: 7,\r\n expandAndCollapse: true,\r\n initialTreeDepth: 2,\r\n lineStyle: {\r\n color: '#ccc',\r\n width: 1.5,\r\n curveness: 0.5\r\n },\r\n itemStyle: {\r\n color: 'lightsteelblue',\r\n borderColor: '#c23531',\r\n borderWidth: 1.5\r\n },\r\n label: {\r\n show: true\r\n },\r\n animationEasing: 'linear',\r\n animationDuration: 700,\r\n animationDurationUpdate: 500\r\n };\r\n return TreeSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(TreeSeriesModel);\n\nfunction init$2(inRoot) {\r\n var root = inRoot;\r\n root.hierNode = {\r\n defaultAncestor: null,\r\n ancestor: root,\r\n prelim: 0,\r\n modifier: 0,\r\n change: 0,\r\n shift: 0,\r\n i: 0,\r\n thread: null\r\n };\r\n var nodes = [root];\r\n var node;\r\n var children;\r\n while (node = nodes.pop()) {\r\n children = node.children;\r\n if (node.isExpand && children.length) {\r\n var n = children.length;\r\n for (var i = n - 1; i >= 0; i--) {\r\n var child = children[i];\r\n child.hierNode = {\r\n defaultAncestor: null,\r\n ancestor: child,\r\n prelim: 0,\r\n modifier: 0,\r\n change: 0,\r\n shift: 0,\r\n i: i,\r\n thread: null\r\n };\r\n nodes.push(child);\r\n }\r\n }\r\n }\r\n}\r\nfunction firstWalk(node, separation) {\r\n var children = node.isExpand ? node.children : [];\r\n var siblings = node.parentNode.children;\r\n var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\r\n if (children.length) {\r\n executeShifts(node);\r\n var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\r\n if (subtreeW) {\r\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\r\n node.hierNode.modifier = node.hierNode.prelim - midPoint;\r\n }\r\n else {\r\n node.hierNode.prelim = midPoint;\r\n }\r\n }\r\n else if (subtreeW) {\r\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\r\n }\r\n node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\r\n}\r\nfunction secondWalk(node) {\r\n var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\r\n node.setLayout({ x: nodeX }, true);\r\n node.hierNode.modifier += node.parentNode.hierNode.modifier;\r\n}\r\nfunction separation(cb) {\r\n return arguments.length ? cb : defaultSeparation;\r\n}\r\nfunction radialCoordinate(rad, r) {\r\n rad -= Math.PI / 2;\r\n return {\r\n x: r * Math.cos(rad),\r\n y: r * Math.sin(rad)\r\n };\r\n}\r\nfunction getViewRect$1(seriesModel, api) {\r\n return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n}\r\nfunction executeShifts(node) {\r\n var children = node.children;\r\n var n = children.length;\r\n var shift = 0;\r\n var change = 0;\r\n while (--n >= 0) {\r\n var child = children[n];\r\n child.hierNode.prelim += shift;\r\n child.hierNode.modifier += shift;\r\n change += child.hierNode.change;\r\n shift += child.hierNode.shift + change;\r\n }\r\n}\r\nfunction apportion(subtreeV, subtreeW, ancestor, separation) {\r\n if (subtreeW) {\r\n var nodeOutRight = subtreeV;\r\n var nodeInRight = subtreeV;\r\n var nodeOutLeft = nodeInRight.parentNode.children[0];\r\n var nodeInLeft = subtreeW;\r\n var sumOutRight = nodeOutRight.hierNode.modifier;\r\n var sumInRight = nodeInRight.hierNode.modifier;\r\n var sumOutLeft = nodeOutLeft.hierNode.modifier;\r\n var sumInLeft = nodeInLeft.hierNode.modifier;\r\n while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\r\n nodeOutRight = nextRight(nodeOutRight);\r\n nodeOutLeft = nextLeft(nodeOutLeft);\r\n nodeOutRight.hierNode.ancestor = subtreeV;\r\n var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim\r\n - sumInRight + separation(nodeInLeft, nodeInRight);\r\n if (shift > 0) {\r\n moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\r\n sumInRight += shift;\r\n sumOutRight += shift;\r\n }\r\n sumInLeft += nodeInLeft.hierNode.modifier;\r\n sumInRight += nodeInRight.hierNode.modifier;\r\n sumOutRight += nodeOutRight.hierNode.modifier;\r\n sumOutLeft += nodeOutLeft.hierNode.modifier;\r\n }\r\n if (nodeInLeft && !nextRight(nodeOutRight)) {\r\n nodeOutRight.hierNode.thread = nodeInLeft;\r\n nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\r\n }\r\n if (nodeInRight && !nextLeft(nodeOutLeft)) {\r\n nodeOutLeft.hierNode.thread = nodeInRight;\r\n nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\r\n ancestor = subtreeV;\r\n }\r\n }\r\n return ancestor;\r\n}\r\nfunction nextRight(node) {\r\n var children = node.children;\r\n return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\r\n}\r\nfunction nextLeft(node) {\r\n var children = node.children;\r\n return children.length && node.isExpand ? children[0] : node.hierNode.thread;\r\n}\r\nfunction nextAncestor(nodeInLeft, node, ancestor) {\r\n return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode\r\n ? nodeInLeft.hierNode.ancestor : ancestor;\r\n}\r\nfunction moveSubtree(wl, wr, shift) {\r\n var change = shift / (wr.hierNode.i - wl.hierNode.i);\r\n wr.hierNode.change -= change;\r\n wr.hierNode.shift += shift;\r\n wr.hierNode.modifier += shift;\r\n wr.hierNode.prelim += shift;\r\n wl.hierNode.change += change;\r\n}\r\nfunction defaultSeparation(node1, node2) {\r\n return node1.parentNode === node2.parentNode ? 1 : 2;\r\n}\n\nvar TreeEdgeShape = (function () {\r\n function TreeEdgeShape() {\r\n this.parentPoint = [];\r\n this.childPoints = [];\r\n }\r\n return TreeEdgeShape;\r\n}());\r\nvar TreePath = (function (_super) {\r\n __extends(TreePath, _super);\r\n function TreePath(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n TreePath.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n TreePath.prototype.getDefaultShape = function () {\r\n return new TreeEdgeShape();\r\n };\r\n TreePath.prototype.buildPath = function (ctx, shape) {\r\n var childPoints = shape.childPoints;\r\n var childLen = childPoints.length;\r\n var parentPoint = shape.parentPoint;\r\n var firstChildPos = childPoints[0];\r\n var lastChildPos = childPoints[childLen - 1];\r\n if (childLen === 1) {\r\n ctx.moveTo(parentPoint[0], parentPoint[1]);\r\n ctx.lineTo(firstChildPos[0], firstChildPos[1]);\r\n return;\r\n }\r\n var orient = shape.orient;\r\n var forkDim = (orient === 'TB' || orient === 'BT') ? 0 : 1;\r\n var otherDim = 1 - forkDim;\r\n var forkPosition = parsePercent$2(shape.forkPosition, 1);\r\n var tmpPoint = [];\r\n tmpPoint[forkDim] = parentPoint[forkDim];\r\n tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;\r\n ctx.moveTo(parentPoint[0], parentPoint[1]);\r\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\r\n ctx.moveTo(firstChildPos[0], firstChildPos[1]);\r\n tmpPoint[forkDim] = firstChildPos[forkDim];\r\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\r\n tmpPoint[forkDim] = lastChildPos[forkDim];\r\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\r\n ctx.lineTo(lastChildPos[0], lastChildPos[1]);\r\n for (var i = 1; i < childLen - 1; i++) {\r\n var point = childPoints[i];\r\n ctx.moveTo(point[0], point[1]);\r\n tmpPoint[forkDim] = point[forkDim];\r\n ctx.lineTo(tmpPoint[0], tmpPoint[1]);\r\n }\r\n };\r\n return TreePath;\r\n}(Path));\r\nvar TreeView = (function (_super) {\r\n __extends(TreeView, _super);\r\n function TreeView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TreeView.type;\r\n _this._mainGroup = new Group();\r\n return _this;\r\n }\r\n TreeView.prototype.init = function (ecModel, api) {\r\n this._controller = new RoamController(api.getZr());\r\n this._controllerHost = {\r\n target: this.group\r\n };\r\n this.group.add(this._mainGroup);\r\n };\r\n TreeView.prototype.render = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var layoutInfo = seriesModel.layoutInfo;\r\n var group = this._mainGroup;\r\n var layout = seriesModel.get('layout');\r\n if (layout === 'radial') {\r\n group.x = layoutInfo.x + layoutInfo.width / 2;\r\n group.y = layoutInfo.y + layoutInfo.height / 2;\r\n }\r\n else {\r\n group.x = layoutInfo.x;\r\n group.y = layoutInfo.y;\r\n }\r\n this._updateViewCoordSys(seriesModel);\r\n this._updateController(seriesModel, ecModel, api);\r\n var oldData = this._data;\r\n data.diff(oldData)\r\n .add(function (newIdx) {\r\n if (symbolNeedsDraw$1(data, newIdx)) {\r\n updateNode(data, newIdx, null, group, seriesModel);\r\n }\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n if (!symbolNeedsDraw$1(data, newIdx)) {\r\n symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel);\r\n return;\r\n }\r\n updateNode(data, newIdx, symbolEl, group, seriesModel);\r\n })\r\n .remove(function (oldIdx) {\r\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n if (symbolEl) {\r\n removeNode(oldData, oldIdx, symbolEl, group, seriesModel);\r\n }\r\n })\r\n .execute();\r\n this._nodeScaleRatio = seriesModel.get('nodeScaleRatio');\r\n this._updateNodeAndLinkScale(seriesModel);\r\n if (seriesModel.get('expandAndCollapse') === true) {\r\n data.eachItemGraphicEl(function (el, dataIndex) {\r\n el.off('click').on('click', function () {\r\n api.dispatchAction({\r\n type: 'treeExpandAndCollapse',\r\n seriesId: seriesModel.id,\r\n dataIndex: dataIndex\r\n });\r\n });\r\n });\r\n }\r\n this._data = data;\r\n };\r\n TreeView.prototype._updateViewCoordSys = function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var points = [];\r\n data.each(function (idx) {\r\n var layout = data.getItemLayout(idx);\r\n if (layout && !isNaN(layout.x) && !isNaN(layout.y)) {\r\n points.push([+layout.x, +layout.y]);\r\n }\r\n });\r\n var min = [];\r\n var max = [];\r\n fromPoints(points, min, max);\r\n var oldMin = this._min;\r\n var oldMax = this._max;\r\n if (max[0] - min[0] === 0) {\r\n min[0] = oldMin ? oldMin[0] : min[0] - 1;\r\n max[0] = oldMax ? oldMax[0] : max[0] + 1;\r\n }\r\n if (max[1] - min[1] === 0) {\r\n min[1] = oldMin ? oldMin[1] : min[1] - 1;\r\n max[1] = oldMax ? oldMax[1] : max[1] + 1;\r\n }\r\n var viewCoordSys = seriesModel.coordinateSystem = new View();\r\n viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\r\n viewCoordSys.setBoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\r\n viewCoordSys.setCenter(seriesModel.get('center'));\r\n viewCoordSys.setZoom(seriesModel.get('zoom'));\r\n this.group.attr({\r\n x: viewCoordSys.x,\r\n y: viewCoordSys.y,\r\n scaleX: viewCoordSys.scaleX,\r\n scaleY: viewCoordSys.scaleY\r\n });\r\n this._min = min;\r\n this._max = max;\r\n };\r\n TreeView.prototype._updateController = function (seriesModel, ecModel, api) {\r\n var _this = this;\r\n var controller = this._controller;\r\n var controllerHost = this._controllerHost;\r\n var group = this.group;\r\n controller.setPointerChecker(function (e, x, y) {\r\n var rect = group.getBoundingRect();\r\n rect.applyTransform(group.transform);\r\n return rect.contain(x, y)\r\n && !onIrrelevantElement(e, api, seriesModel);\r\n });\r\n controller.enable(seriesModel.get('roam'));\r\n controllerHost.zoomLimit = seriesModel.get('scaleLimit');\r\n controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\r\n controller\r\n .off('pan')\r\n .off('zoom')\r\n .on('pan', function (e) {\r\n updateViewOnPan(controllerHost, e.dx, e.dy);\r\n api.dispatchAction({\r\n seriesId: seriesModel.id,\r\n type: 'treeRoam',\r\n dx: e.dx,\r\n dy: e.dy\r\n });\r\n })\r\n .on('zoom', function (e) {\r\n updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\r\n api.dispatchAction({\r\n seriesId: seriesModel.id,\r\n type: 'treeRoam',\r\n zoom: e.scale,\r\n originX: e.originX,\r\n originY: e.originY\r\n });\r\n _this._updateNodeAndLinkScale(seriesModel);\r\n api.updateLabelLayout();\r\n });\r\n };\r\n TreeView.prototype._updateNodeAndLinkScale = function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var nodeScale = this._getNodeGlobalScale(seriesModel);\r\n data.eachItemGraphicEl(function (el, idx) {\r\n el.setSymbolScale(nodeScale);\r\n });\r\n };\r\n TreeView.prototype._getNodeGlobalScale = function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys.type !== 'view') {\r\n return 1;\r\n }\r\n var nodeScaleRatio = this._nodeScaleRatio;\r\n var groupZoom = coordSys.scaleX || 1;\r\n var roamZoom = coordSys.getZoom();\r\n var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\r\n return nodeScale / groupZoom;\r\n };\r\n TreeView.prototype.dispose = function () {\r\n this._controller && this._controller.dispose();\r\n this._controllerHost = null;\r\n };\r\n TreeView.prototype.remove = function () {\r\n this._mainGroup.removeAll();\r\n this._data = null;\r\n };\r\n TreeView.type = 'tree';\r\n return TreeView;\r\n}(ChartView));\r\nfunction symbolNeedsDraw$1(data, dataIndex) {\r\n var layout = data.getItemLayout(dataIndex);\r\n return layout\r\n && !isNaN(layout.x) && !isNaN(layout.y);\r\n}\r\nfunction updateNode(data, dataIndex, symbolEl, group, seriesModel) {\r\n var isInit = !symbolEl;\r\n var node = data.tree.getNodeByDataIndex(dataIndex);\r\n var itemModel = node.getModel();\r\n var visualColor = node.getVisual('style').fill;\r\n var symbolInnerColor = node.isExpand === false && node.children.length !== 0\r\n ? visualColor : '#fff';\r\n var virtualRoot = data.tree.root;\r\n var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\r\n var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\r\n var sourceLayout = source.getLayout();\r\n var sourceOldLayout = sourceSymbolEl\r\n ? {\r\n x: sourceSymbolEl.__oldX,\r\n y: sourceSymbolEl.__oldY,\r\n rawX: sourceSymbolEl.__radialOldRawX,\r\n rawY: sourceSymbolEl.__radialOldRawY\r\n }\r\n : sourceLayout;\r\n var targetLayout = node.getLayout();\r\n if (isInit) {\r\n symbolEl = new Symbol(data, dataIndex, null, {\r\n symbolInnerColor: symbolInnerColor,\r\n useNameLabel: true\r\n });\r\n symbolEl.x = sourceOldLayout.x;\r\n symbolEl.y = sourceOldLayout.y;\r\n }\r\n else {\r\n symbolEl.updateData(data, dataIndex, null, {\r\n symbolInnerColor: symbolInnerColor,\r\n useNameLabel: true\r\n });\r\n }\r\n symbolEl.__radialOldRawX = symbolEl.__radialRawX;\r\n symbolEl.__radialOldRawY = symbolEl.__radialRawY;\r\n symbolEl.__radialRawX = targetLayout.rawX;\r\n symbolEl.__radialRawY = targetLayout.rawY;\r\n group.add(symbolEl);\r\n data.setItemGraphicEl(dataIndex, symbolEl);\r\n symbolEl.__oldX = symbolEl.x;\r\n symbolEl.__oldY = symbolEl.y;\r\n updateProps(symbolEl, {\r\n x: targetLayout.x,\r\n y: targetLayout.y\r\n }, seriesModel);\r\n var symbolPath = symbolEl.getSymbolPath();\r\n if (seriesModel.get('layout') === 'radial') {\r\n var realRoot = virtualRoot.children[0];\r\n var rootLayout = realRoot.getLayout();\r\n var length_1 = realRoot.children.length;\r\n var rad = void 0;\r\n var isLeft = void 0;\r\n if (targetLayout.x === rootLayout.x && node.isExpand === true) {\r\n var center = {\r\n x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2,\r\n y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2\r\n };\r\n rad = Math.atan2(center.y - rootLayout.y, center.x - rootLayout.x);\r\n if (rad < 0) {\r\n rad = Math.PI * 2 + rad;\r\n }\r\n isLeft = center.x < rootLayout.x;\r\n if (isLeft) {\r\n rad = rad - Math.PI;\r\n }\r\n }\r\n else {\r\n rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);\r\n if (rad < 0) {\r\n rad = Math.PI * 2 + rad;\r\n }\r\n if (node.children.length === 0 || (node.children.length !== 0 && node.isExpand === false)) {\r\n isLeft = targetLayout.x < rootLayout.x;\r\n if (isLeft) {\r\n rad = rad - Math.PI;\r\n }\r\n }\r\n else {\r\n isLeft = targetLayout.x > rootLayout.x;\r\n if (!isLeft) {\r\n rad = rad - Math.PI;\r\n }\r\n }\r\n }\r\n var textPosition = isLeft ? 'left' : 'right';\r\n var normalLabelModel = itemModel.getModel('label');\r\n var rotate = normalLabelModel.get('rotate');\r\n var labelRotateRadian = rotate * (Math.PI / 180);\r\n var textContent = symbolPath.getTextContent();\r\n if (textContent) {\r\n symbolPath.setTextConfig({\r\n position: normalLabelModel.get('position') || textPosition,\r\n rotation: rotate == null ? -rad : labelRotateRadian,\r\n origin: 'center'\r\n });\r\n textContent.setStyle('verticalAlign', 'middle');\r\n }\r\n }\r\n var focus = itemModel.get(['emphasis', 'focus']);\r\n var focusDataIndices = focus === 'ancestor'\r\n ? node.getAncestorsIndices()\r\n : focus === 'descendant' ? node.getDescendantIndices() : null;\r\n if (focusDataIndices) {\r\n getECData(symbolEl).focus = focusDataIndices;\r\n }\r\n drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group);\r\n if (symbolEl.__edge) {\r\n symbolEl.onHoverStateChange = function (toState) {\r\n if (toState !== 'blur') {\r\n var parentEl = node.parentNode\r\n && data.getItemGraphicEl(node.parentNode.dataIndex);\r\n if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) {\r\n setStatesFlag(symbolEl.__edge, toState);\r\n }\r\n }\r\n };\r\n }\r\n}\r\nfunction drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) {\r\n var itemModel = node.getModel();\r\n var edgeShape = seriesModel.get('edgeShape');\r\n var layout = seriesModel.get('layout');\r\n var orient = seriesModel.getOrient();\r\n var curvature = seriesModel.get(['lineStyle', 'curveness']);\r\n var edgeForkPosition = seriesModel.get('edgeForkPosition');\r\n var lineStyle = itemModel.getModel('lineStyle').getLineStyle();\r\n var edge = symbolEl.__edge;\r\n if (edgeShape === 'curve') {\r\n if (node.parentNode && node.parentNode !== virtualRoot) {\r\n if (!edge) {\r\n edge = symbolEl.__edge = new BezierCurve({\r\n shape: getEdgeShape(layout, orient, curvature, sourceOldLayout, sourceOldLayout)\r\n });\r\n }\r\n updateProps(edge, {\r\n shape: getEdgeShape(layout, orient, curvature, sourceLayout, targetLayout)\r\n }, seriesModel);\r\n }\r\n }\r\n else if (edgeShape === 'polyline') {\r\n if (layout === 'orthogonal') {\r\n if (node !== virtualRoot && node.children && (node.children.length !== 0) && (node.isExpand === true)) {\r\n var children = node.children;\r\n var childPoints = [];\r\n for (var i = 0; i < children.length; i++) {\r\n var childLayout = children[i].getLayout();\r\n childPoints.push([childLayout.x, childLayout.y]);\r\n }\r\n if (!edge) {\r\n edge = symbolEl.__edge = new TreePath({\r\n shape: {\r\n parentPoint: [targetLayout.x, targetLayout.y],\r\n childPoints: [[targetLayout.x, targetLayout.y]],\r\n orient: orient,\r\n forkPosition: edgeForkPosition\r\n }\r\n });\r\n }\r\n updateProps(edge, {\r\n shape: {\r\n parentPoint: [targetLayout.x, targetLayout.y],\r\n childPoints: childPoints\r\n }\r\n }, seriesModel);\r\n }\r\n }\r\n else {\r\n if (__DEV__) {\r\n throw new Error('The polyline edgeShape can only be used in orthogonal layout');\r\n }\r\n }\r\n }\r\n if (edge) {\r\n edge.useStyle(defaults({\r\n strokeNoScale: true, fill: null\r\n }, lineStyle));\r\n setStatesStylesFromModel(edge, itemModel, 'lineStyle');\r\n setDefaultStateProxy(edge);\r\n group.add(edge);\r\n }\r\n}\r\nfunction removeNode(data, dataIndex, symbolEl, group, seriesModel) {\r\n var node = data.tree.getNodeByDataIndex(dataIndex);\r\n var virtualRoot = data.tree.root;\r\n var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\r\n var sourceLayout;\r\n while (sourceLayout = source.getLayout(), sourceLayout == null) {\r\n source = source.parentNode === virtualRoot ? source : source.parentNode || source;\r\n }\r\n var removeAnimationOpt = {\r\n duration: seriesModel.get('animationDurationUpdate'),\r\n easing: seriesModel.get('animationEasingUpdate')\r\n };\r\n removeElement(symbolEl, {\r\n x: sourceLayout.x + 1,\r\n y: sourceLayout.y + 1\r\n }, seriesModel, {\r\n cb: function () {\r\n group.remove(symbolEl);\r\n data.setItemGraphicEl(dataIndex, null);\r\n },\r\n removeOpt: removeAnimationOpt\r\n });\r\n symbolEl.fadeOut(null, {\r\n fadeLabel: true,\r\n animation: removeAnimationOpt\r\n });\r\n var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\r\n var sourceEdge = sourceSymbolEl.__edge;\r\n var edge = symbolEl.__edge\r\n || ((source.isExpand === false || source.children.length === 1) ? sourceEdge : undefined);\r\n var edgeShape = seriesModel.get('edgeShape');\r\n var layoutOpt = seriesModel.get('layout');\r\n var orient = seriesModel.get('orient');\r\n var curvature = seriesModel.get(['lineStyle', 'curveness']);\r\n if (edge) {\r\n if (edgeShape === 'curve') {\r\n removeElement(edge, {\r\n shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout),\r\n style: {\r\n opacity: 0\r\n }\r\n }, seriesModel, {\r\n cb: function () {\r\n group.remove(edge);\r\n },\r\n removeOpt: removeAnimationOpt\r\n });\r\n }\r\n else if (edgeShape === 'polyline' && seriesModel.get('layout') === 'orthogonal') {\r\n removeElement(edge, {\r\n shape: {\r\n parentPoint: [sourceLayout.x, sourceLayout.y],\r\n childPoints: [[sourceLayout.x, sourceLayout.y]]\r\n },\r\n style: {\r\n opacity: 0\r\n }\r\n }, seriesModel, {\r\n cb: function () {\r\n group.remove(edge);\r\n },\r\n removeOpt: removeAnimationOpt\r\n });\r\n }\r\n }\r\n}\r\nfunction getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) {\r\n var cpx1;\r\n var cpy1;\r\n var cpx2;\r\n var cpy2;\r\n var x1;\r\n var x2;\r\n var y1;\r\n var y2;\r\n if (layoutOpt === 'radial') {\r\n x1 = sourceLayout.rawX;\r\n y1 = sourceLayout.rawY;\r\n x2 = targetLayout.rawX;\r\n y2 = targetLayout.rawY;\r\n var radialCoor1 = radialCoordinate(x1, y1);\r\n var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature);\r\n var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature);\r\n var radialCoor4 = radialCoordinate(x2, y2);\r\n return {\r\n x1: radialCoor1.x || 0,\r\n y1: radialCoor1.y || 0,\r\n x2: radialCoor4.x || 0,\r\n y2: radialCoor4.y || 0,\r\n cpx1: radialCoor2.x || 0,\r\n cpy1: radialCoor2.y || 0,\r\n cpx2: radialCoor3.x || 0,\r\n cpy2: radialCoor3.y || 0\r\n };\r\n }\r\n else {\r\n x1 = sourceLayout.x;\r\n y1 = sourceLayout.y;\r\n x2 = targetLayout.x;\r\n y2 = targetLayout.y;\r\n if (orient === 'LR' || orient === 'RL') {\r\n cpx1 = x1 + (x2 - x1) * curvature;\r\n cpy1 = y1;\r\n cpx2 = x2 + (x1 - x2) * curvature;\r\n cpy2 = y2;\r\n }\r\n if (orient === 'TB' || orient === 'BT') {\r\n cpx1 = x1;\r\n cpy1 = y1 + (y2 - y1) * curvature;\r\n cpx2 = x2;\r\n cpy2 = y2 + (y1 - y2) * curvature;\r\n }\r\n }\r\n return {\r\n x1: x1,\r\n y1: y1,\r\n x2: x2,\r\n y2: y2,\r\n cpx1: cpx1,\r\n cpy1: cpy1,\r\n cpx2: cpx2,\r\n cpy2: cpy2\r\n };\r\n}\r\nChartView.registerClass(TreeView);\n\nregisterAction({\r\n type: 'treeExpandAndCollapse',\r\n event: 'treeExpandAndCollapse',\r\n update: 'update'\r\n}, function (payload, ecModel) {\r\n ecModel.eachComponent({\r\n mainType: 'series', subType: 'tree', query: payload\r\n }, function (seriesModel) {\r\n var dataIndex = payload.dataIndex;\r\n var tree = seriesModel.getData().tree;\r\n var node = tree.getNodeByDataIndex(dataIndex);\r\n node.isExpand = !node.isExpand;\r\n });\r\n});\r\nregisterAction({\r\n type: 'treeRoam',\r\n event: 'treeRoam',\r\n update: 'none'\r\n}, function (payload, ecModel) {\r\n ecModel.eachComponent({\r\n mainType: 'series', subType: 'tree', query: payload\r\n }, function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var res = updateCenterAndZoom(coordSys, payload);\r\n seriesModel.setCenter\r\n && seriesModel.setCenter(res.center);\r\n seriesModel.setZoom\r\n && seriesModel.setZoom(res.zoom);\r\n });\r\n});\n\nfunction eachAfter(root, callback, separation) {\r\n var nodes = [root];\r\n var next = [];\r\n var node;\r\n while (node = nodes.pop()) {\r\n next.push(node);\r\n if (node.isExpand) {\r\n var children = node.children;\r\n if (children.length) {\r\n for (var i = 0; i < children.length; i++) {\r\n nodes.push(children[i]);\r\n }\r\n }\r\n }\r\n }\r\n while (node = next.pop()) {\r\n callback(node, separation);\r\n }\r\n}\r\nfunction eachBefore(root, callback) {\r\n var nodes = [root];\r\n var node;\r\n while (node = nodes.pop()) {\r\n callback(node);\r\n if (node.isExpand) {\r\n var children = node.children;\r\n if (children.length) {\r\n for (var i = children.length - 1; i >= 0; i--) {\r\n nodes.push(children[i]);\r\n }\r\n }\r\n }\r\n }\r\n}\n\nfunction treeLayout(ecModel, api) {\r\n ecModel.eachSeriesByType('tree', function (seriesModel) {\r\n commonLayout(seriesModel, api);\r\n });\r\n}\r\nfunction commonLayout(seriesModel, api) {\r\n var layoutInfo = getViewRect$1(seriesModel, api);\r\n seriesModel.layoutInfo = layoutInfo;\r\n var layout = seriesModel.get('layout');\r\n var width = 0;\r\n var height = 0;\r\n var separation$1 = null;\r\n if (layout === 'radial') {\r\n width = 2 * Math.PI;\r\n height = Math.min(layoutInfo.height, layoutInfo.width) / 2;\r\n separation$1 = separation(function (node1, node2) {\r\n return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;\r\n });\r\n }\r\n else {\r\n width = layoutInfo.width;\r\n height = layoutInfo.height;\r\n separation$1 = separation();\r\n }\r\n var virtualRoot = seriesModel.getData().tree.root;\r\n var realRoot = virtualRoot.children[0];\r\n if (realRoot) {\r\n init$2(virtualRoot);\r\n eachAfter(realRoot, firstWalk, separation$1);\r\n virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;\r\n eachBefore(realRoot, secondWalk);\r\n var left_1 = realRoot;\r\n var right_1 = realRoot;\r\n var bottom_1 = realRoot;\r\n eachBefore(realRoot, function (node) {\r\n var x = node.getLayout().x;\r\n if (x < left_1.getLayout().x) {\r\n left_1 = node;\r\n }\r\n if (x > right_1.getLayout().x) {\r\n right_1 = node;\r\n }\r\n if (node.depth > bottom_1.depth) {\r\n bottom_1 = node;\r\n }\r\n });\r\n var delta = left_1 === right_1 ? 1 : separation$1(left_1, right_1) / 2;\r\n var tx_1 = delta - left_1.getLayout().x;\r\n var kx_1 = 0;\r\n var ky_1 = 0;\r\n var coorX_1 = 0;\r\n var coorY_1 = 0;\r\n if (layout === 'radial') {\r\n kx_1 = width / (right_1.getLayout().x + delta + tx_1);\r\n ky_1 = height / ((bottom_1.depth - 1) || 1);\r\n eachBefore(realRoot, function (node) {\r\n coorX_1 = (node.getLayout().x + tx_1) * kx_1;\r\n coorY_1 = (node.depth - 1) * ky_1;\r\n var finalCoor = radialCoordinate(coorX_1, coorY_1);\r\n node.setLayout({ x: finalCoor.x, y: finalCoor.y, rawX: coorX_1, rawY: coorY_1 }, true);\r\n });\r\n }\r\n else {\r\n var orient_1 = seriesModel.getOrient();\r\n if (orient_1 === 'RL' || orient_1 === 'LR') {\r\n ky_1 = height / (right_1.getLayout().x + delta + tx_1);\r\n kx_1 = width / ((bottom_1.depth - 1) || 1);\r\n eachBefore(realRoot, function (node) {\r\n coorY_1 = (node.getLayout().x + tx_1) * ky_1;\r\n coorX_1 = orient_1 === 'LR'\r\n ? (node.depth - 1) * kx_1\r\n : width - (node.depth - 1) * kx_1;\r\n node.setLayout({ x: coorX_1, y: coorY_1 }, true);\r\n });\r\n }\r\n else if (orient_1 === 'TB' || orient_1 === 'BT') {\r\n kx_1 = width / (right_1.getLayout().x + delta + tx_1);\r\n ky_1 = height / ((bottom_1.depth - 1) || 1);\r\n eachBefore(realRoot, function (node) {\r\n coorX_1 = (node.getLayout().x + tx_1) * kx_1;\r\n coorY_1 = orient_1 === 'TB'\r\n ? (node.depth - 1) * ky_1\r\n : height - (node.depth - 1) * ky_1;\r\n node.setLayout({ x: coorX_1, y: coorY_1 }, true);\r\n });\r\n }\r\n }\r\n }\r\n}\n\nfunction treeVisual(ecModel) {\r\n ecModel.eachSeriesByType('tree', function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var tree = data.tree;\r\n tree.eachNode(function (node) {\r\n var model = node.getModel();\r\n var style = model.getModel('itemStyle').getItemStyle();\r\n var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style');\r\n extend(existsStyle, style);\r\n });\r\n });\r\n}\n\nregisterLayout(treeLayout);\r\nregisterVisual(treeVisual);\n\nfunction retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\r\n if (payload && indexOf(validPayloadTypes, payload.type) >= 0) {\r\n var root = seriesModel.getData().tree.root;\r\n var targetNode = payload.targetNode;\r\n if (typeof targetNode === 'string') {\r\n targetNode = root.getNodeById(targetNode);\r\n }\r\n if (targetNode && root.contains(targetNode)) {\r\n return {\r\n node: targetNode\r\n };\r\n }\r\n var targetNodeId = payload.targetNodeId;\r\n if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\r\n return {\r\n node: targetNode\r\n };\r\n }\r\n }\r\n}\r\nfunction getPathToRoot(node) {\r\n var path = [];\r\n while (node) {\r\n node = node.parentNode;\r\n node && path.push(node);\r\n }\r\n return path.reverse();\r\n}\r\nfunction aboveViewRoot(viewRoot, node) {\r\n var viewPath = getPathToRoot(viewRoot);\r\n return indexOf(viewPath, node) >= 0;\r\n}\r\nfunction wrapTreePathInfo(node, seriesModel) {\r\n var treePathInfo = [];\r\n while (node) {\r\n var nodeDataIndex = node.dataIndex;\r\n treePathInfo.push({\r\n name: node.name,\r\n dataIndex: nodeDataIndex,\r\n value: seriesModel.getRawValue(nodeDataIndex)\r\n });\r\n node = node.parentNode;\r\n }\r\n treePathInfo.reverse();\r\n return treePathInfo;\r\n}\n\nfunction enableAriaDecalForTree(seriesModel) {\r\n var data = seriesModel.getData();\r\n var tree = data.tree;\r\n var decalPaletteScope = {};\r\n tree.eachNode(function (node) {\r\n var current = node;\r\n while (current && current.depth > 1) {\r\n current = current.parentNode;\r\n }\r\n var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + '', decalPaletteScope);\r\n node.setVisual('decal', decal);\r\n });\r\n}\n\nvar TreemapSeriesModel = (function (_super) {\r\n __extends(TreemapSeriesModel, _super);\r\n function TreemapSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TreemapSeriesModel.type;\r\n _this.preventUsingHoverLayer = true;\r\n return _this;\r\n }\r\n TreemapSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n var root = {\r\n name: option.name,\r\n children: option.data\r\n };\r\n completeTreeValue(root);\r\n var levels = option.levels || [];\r\n var designatedVisualItemStyle = this.designatedVisualItemStyle = {};\r\n var designatedVisualModel = new Model({ itemStyle: designatedVisualItemStyle }, this, ecModel);\r\n levels = option.levels = setDefault(levels, ecModel);\r\n var levelModels = map(levels || [], function (levelDefine) {\r\n return new Model(levelDefine, designatedVisualModel, ecModel);\r\n }, this);\r\n var tree = Tree.createTree(root, this, beforeLink);\r\n function beforeLink(nodeData) {\r\n nodeData.wrapMethod('getItemModel', function (model, idx) {\r\n var node = tree.getNodeByDataIndex(idx);\r\n var levelModel = levelModels[node.depth];\r\n model.parentModel = levelModel || designatedVisualModel;\r\n return model;\r\n });\r\n }\r\n return tree.data;\r\n };\r\n TreemapSeriesModel.prototype.optionUpdated = function () {\r\n this.resetViewRoot();\r\n };\r\n TreemapSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n var data = this.getData();\r\n var value = this.getRawValue(dataIndex);\r\n var name = data.getName(dataIndex);\r\n return createTooltipMarkup('nameValue', { name: name, value: value });\r\n };\r\n TreemapSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n var params = _super.prototype.getDataParams.apply(this, arguments);\r\n var node = this.getData().tree.getNodeByDataIndex(dataIndex);\r\n params.treePathInfo = wrapTreePathInfo(node, this);\r\n return params;\r\n };\r\n TreemapSeriesModel.prototype.setLayoutInfo = function (layoutInfo) {\r\n this.layoutInfo = this.layoutInfo || {};\r\n extend(this.layoutInfo, layoutInfo);\r\n };\r\n TreemapSeriesModel.prototype.mapIdToIndex = function (id) {\r\n var idIndexMap = this._idIndexMap;\r\n if (!idIndexMap) {\r\n idIndexMap = this._idIndexMap = createHashMap();\r\n this._idIndexMapCount = 0;\r\n }\r\n var index = idIndexMap.get(id);\r\n if (index == null) {\r\n idIndexMap.set(id, index = this._idIndexMapCount++);\r\n }\r\n return index;\r\n };\r\n TreemapSeriesModel.prototype.getViewRoot = function () {\r\n return this._viewRoot;\r\n };\r\n TreemapSeriesModel.prototype.resetViewRoot = function (viewRoot) {\r\n viewRoot\r\n ? (this._viewRoot = viewRoot)\r\n : (viewRoot = this._viewRoot);\r\n var root = this.getRawData().tree.root;\r\n if (!viewRoot\r\n || (viewRoot !== root && !root.contains(viewRoot))) {\r\n this._viewRoot = root;\r\n }\r\n };\r\n TreemapSeriesModel.prototype.enableAriaDecal = function () {\r\n enableAriaDecalForTree(this);\r\n };\r\n TreemapSeriesModel.type = 'series.treemap';\r\n TreemapSeriesModel.layoutMode = 'box';\r\n TreemapSeriesModel.defaultOption = {\r\n progressive: 0,\r\n left: 'center',\r\n top: 'middle',\r\n width: '80%',\r\n height: '80%',\r\n sort: true,\r\n clipWindow: 'origin',\r\n squareRatio: 0.5 * (1 + Math.sqrt(5)),\r\n leafDepth: null,\r\n drillDownIcon: '▶',\r\n zoomToNodeRatio: 0.32 * 0.32,\r\n roam: true,\r\n nodeClick: 'zoomToNode',\r\n animation: true,\r\n animationDurationUpdate: 900,\r\n animationEasing: 'quinticInOut',\r\n breadcrumb: {\r\n show: true,\r\n height: 22,\r\n left: 'center',\r\n top: 'bottom',\r\n emptyItemWidth: 25,\r\n itemStyle: {\r\n color: 'rgba(0,0,0,0.7)',\r\n textStyle: {\r\n color: '#fff'\r\n }\r\n }\r\n },\r\n label: {\r\n show: true,\r\n distance: 0,\r\n padding: 5,\r\n position: 'inside',\r\n color: '#fff',\r\n overflow: 'truncate'\r\n },\r\n upperLabel: {\r\n show: false,\r\n position: [0, '50%'],\r\n height: 20,\r\n overflow: 'truncate',\r\n verticalAlign: 'middle'\r\n },\r\n itemStyle: {\r\n color: null,\r\n colorAlpha: null,\r\n colorSaturation: null,\r\n borderWidth: 0,\r\n gapWidth: 0,\r\n borderColor: '#fff',\r\n borderColorSaturation: null\r\n },\r\n emphasis: {\r\n upperLabel: {\r\n show: true,\r\n position: [0, '50%'],\r\n ellipsis: true,\r\n verticalAlign: 'middle'\r\n }\r\n },\r\n visualDimension: 0,\r\n visualMin: null,\r\n visualMax: null,\r\n color: [],\r\n colorAlpha: null,\r\n colorSaturation: null,\r\n colorMappingBy: 'index',\r\n visibleMin: 10,\r\n childrenVisibleMin: null,\r\n levels: []\r\n };\r\n return TreemapSeriesModel;\r\n}(SeriesModel));\r\nfunction completeTreeValue(dataNode) {\r\n var sum = 0;\r\n each(dataNode.children, function (child) {\r\n completeTreeValue(child);\r\n var childValue = child.value;\r\n isArray(childValue) && (childValue = childValue[0]);\r\n sum += childValue;\r\n });\r\n var thisValue = dataNode.value;\r\n if (isArray(thisValue)) {\r\n thisValue = thisValue[0];\r\n }\r\n if (thisValue == null || isNaN(thisValue)) {\r\n thisValue = sum;\r\n }\r\n if (thisValue < 0) {\r\n thisValue = 0;\r\n }\r\n isArray(dataNode.value)\r\n ? (dataNode.value[0] = thisValue)\r\n : (dataNode.value = thisValue);\r\n}\r\nfunction setDefault(levels, ecModel) {\r\n var globalColorList = normalizeToArray(ecModel.get('color'));\r\n var globalDecalList = normalizeToArray(ecModel.get('decals'));\r\n if (!globalColorList) {\r\n return;\r\n }\r\n levels = levels || [];\r\n var hasColorDefine;\r\n var hasDecalDefine;\r\n each(levels, function (levelDefine) {\r\n var model = new Model(levelDefine);\r\n var modelColor = model.get('color');\r\n var modelDecal = model.get('decal');\r\n if (model.get(['itemStyle', 'color'])\r\n || (modelColor && modelColor !== 'none')) {\r\n hasColorDefine = true;\r\n }\r\n if (model.get(['itemStyle', 'decal'])\r\n || (modelDecal && modelDecal !== 'none')) {\r\n hasDecalDefine = true;\r\n }\r\n });\r\n var level0 = levels[0] || (levels[0] = {});\r\n if (!hasColorDefine) {\r\n level0.color = globalColorList.slice();\r\n }\r\n if (!hasDecalDefine && globalDecalList) {\r\n level0.decal = globalDecalList.slice();\r\n }\r\n return levels;\r\n}\r\nSeriesModel.registerClass(TreemapSeriesModel);\n\nvar TEXT_PADDING = 8;\r\nvar ITEM_GAP = 8;\r\nvar ARRAY_LENGTH = 5;\r\nvar Breadcrumb = (function () {\r\n function Breadcrumb(containerGroup) {\r\n this.group = new Group();\r\n containerGroup.add(this.group);\r\n }\r\n Breadcrumb.prototype.render = function (seriesModel, api, targetNode, onSelect) {\r\n var model = seriesModel.getModel('breadcrumb');\r\n var thisGroup = this.group;\r\n thisGroup.removeAll();\r\n if (!model.get('show') || !targetNode) {\r\n return;\r\n }\r\n var normalStyleModel = model.getModel('itemStyle');\r\n var textStyleModel = normalStyleModel.getModel('textStyle');\r\n var layoutParam = {\r\n pos: {\r\n left: model.get('left'),\r\n right: model.get('right'),\r\n top: model.get('top'),\r\n bottom: model.get('bottom')\r\n },\r\n box: {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n },\r\n emptyItemWidth: model.get('emptyItemWidth'),\r\n totalWidth: 0,\r\n renderList: []\r\n };\r\n this._prepare(targetNode, layoutParam, textStyleModel);\r\n this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect);\r\n positionElement(thisGroup, layoutParam.pos, layoutParam.box);\r\n };\r\n Breadcrumb.prototype._prepare = function (targetNode, layoutParam, textStyleModel) {\r\n for (var node = targetNode; node; node = node.parentNode) {\r\n var text = convertOptionIdName(node.getModel().get('name'), '');\r\n var textRect = textStyleModel.getTextRect(text);\r\n var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);\r\n layoutParam.totalWidth += itemWidth + ITEM_GAP;\r\n layoutParam.renderList.push({\r\n node: node,\r\n text: text,\r\n width: itemWidth\r\n });\r\n }\r\n };\r\n Breadcrumb.prototype._renderContent = function (seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) {\r\n var lastX = 0;\r\n var emptyItemWidth = layoutParam.emptyItemWidth;\r\n var height = seriesModel.get(['breadcrumb', 'height']);\r\n var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box);\r\n var totalWidth = layoutParam.totalWidth;\r\n var renderList = layoutParam.renderList;\r\n for (var i = renderList.length - 1; i >= 0; i--) {\r\n var item = renderList[i];\r\n var itemNode = item.node;\r\n var itemWidth = item.width;\r\n var text = item.text;\r\n if (totalWidth > availableSize.width) {\r\n totalWidth -= itemWidth - emptyItemWidth;\r\n itemWidth = emptyItemWidth;\r\n text = null;\r\n }\r\n var el = new Polygon({\r\n shape: {\r\n points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)\r\n },\r\n style: defaults(normalStyleModel.getItemStyle(), {\r\n lineJoin: 'bevel'\r\n }),\r\n textContent: new ZRText({\r\n style: {\r\n text: text,\r\n fill: textStyleModel.getTextColor(),\r\n font: textStyleModel.getFont()\r\n }\r\n }),\r\n textConfig: {\r\n position: 'inside'\r\n },\r\n z: 10,\r\n onclick: curry(onSelect, itemNode)\r\n });\r\n el.disableLabelAnimation = true;\r\n this.group.add(el);\r\n packEventData(el, seriesModel, itemNode);\r\n lastX += itemWidth + ITEM_GAP;\r\n }\r\n };\r\n Breadcrumb.prototype.remove = function () {\r\n this.group.removeAll();\r\n };\r\n return Breadcrumb;\r\n}());\r\nfunction makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {\r\n var points = [\r\n [head ? x : x - ARRAY_LENGTH, y],\r\n [x + itemWidth, y],\r\n [x + itemWidth, y + itemHeight],\r\n [head ? x : x - ARRAY_LENGTH, y + itemHeight]\r\n ];\r\n !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);\r\n !head && points.push([x, y + itemHeight / 2]);\r\n return points;\r\n}\r\nfunction packEventData(el, seriesModel, itemNode) {\r\n getECData(el).eventData = {\r\n componentType: 'series',\r\n componentSubType: 'treemap',\r\n componentIndex: seriesModel.componentIndex,\r\n seriesIndex: seriesModel.componentIndex,\r\n seriesName: seriesModel.name,\r\n seriesType: 'treemap',\r\n selfType: 'breadcrumb',\r\n nodeData: {\r\n dataIndex: itemNode && itemNode.dataIndex,\r\n name: itemNode && itemNode.name\r\n },\r\n treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)\r\n };\r\n}\n\nvar AnimationWrap = (function () {\r\n function AnimationWrap() {\r\n this._storage = [];\r\n this._elExistsMap = {};\r\n }\r\n AnimationWrap.prototype.add = function (el, target, duration, delay, easing) {\r\n if (this._elExistsMap[el.id]) {\r\n return false;\r\n }\r\n this._elExistsMap[el.id] = true;\r\n this._storage.push({\r\n el: el,\r\n target: target,\r\n duration: duration,\r\n delay: delay,\r\n easing: easing\r\n });\r\n return true;\r\n };\r\n AnimationWrap.prototype.finished = function (callback) {\r\n this._finishedCallback = callback;\r\n return this;\r\n };\r\n AnimationWrap.prototype.start = function () {\r\n var _this = this;\r\n var count = this._storage.length;\r\n var checkTerminate = function () {\r\n count--;\r\n if (count <= 0) {\r\n _this._storage.length = 0;\r\n _this._elExistsMap = {};\r\n _this._finishedCallback && _this._finishedCallback();\r\n }\r\n };\r\n for (var i = 0, len = this._storage.length; i < len; i++) {\r\n var item = this._storage[i];\r\n item.el.animateTo(item.target, {\r\n duration: item.duration,\r\n delay: item.delay,\r\n easing: item.easing,\r\n setToFinal: true,\r\n done: checkTerminate,\r\n aborted: checkTerminate\r\n });\r\n }\r\n return this;\r\n };\r\n return AnimationWrap;\r\n}());\r\nfunction createWrap() {\r\n return new AnimationWrap();\r\n}\n\nvar Group$1 = Group;\r\nvar Rect$1 = Rect;\r\nvar DRAG_THRESHOLD = 3;\r\nvar PATH_LABEL_NOAMAL = 'label';\r\nvar PATH_UPPERLABEL_NORMAL = 'upperLabel';\r\nvar Z_BASE = 10;\r\nvar Z_BG = 1;\r\nvar Z_CONTENT = 2;\r\nvar getStateItemStyle = makeStyleMapper([\r\n ['fill', 'color'],\r\n ['stroke', 'strokeColor'],\r\n ['lineWidth', 'strokeWidth'],\r\n ['shadowBlur'],\r\n ['shadowOffsetX'],\r\n ['shadowOffsetY'],\r\n ['shadowColor']\r\n]);\r\nvar getItemStyleNormal = function (model) {\r\n var itemStyle = getStateItemStyle(model);\r\n itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;\r\n return itemStyle;\r\n};\r\nvar inner$9 = makeInner();\r\nvar TreemapView = (function (_super) {\r\n __extends(TreemapView, _super);\r\n function TreemapView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TreemapView.type;\r\n _this._state = 'ready';\r\n _this._storage = createStorage();\r\n return _this;\r\n }\r\n TreemapView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n var models = ecModel.findComponents({\r\n mainType: 'series', subType: 'treemap', query: payload\r\n });\r\n if (indexOf(models, seriesModel) < 0) {\r\n return;\r\n }\r\n this.seriesModel = seriesModel;\r\n this.api = api;\r\n this.ecModel = ecModel;\r\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\r\n var targetInfo = retrieveTargetInfo(payload, types, seriesModel);\r\n var payloadType = payload && payload.type;\r\n var layoutInfo = seriesModel.layoutInfo;\r\n var isInit = !this._oldTree;\r\n var thisStorage = this._storage;\r\n var reRoot = (payloadType === 'treemapRootToNode' && targetInfo && thisStorage)\r\n ? {\r\n rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],\r\n direction: payload.direction\r\n }\r\n : null;\r\n var containerGroup = this._giveContainerGroup(layoutInfo);\r\n var renderResult = this._doRender(containerGroup, seriesModel, reRoot);\r\n (!isInit && (!payloadType\r\n || payloadType === 'treemapZoomToNode'\r\n || payloadType === 'treemapRootToNode'))\r\n ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot)\r\n : renderResult.renderFinally();\r\n this._resetController(api);\r\n this._renderBreadcrumb(seriesModel, api, targetInfo);\r\n };\r\n TreemapView.prototype._giveContainerGroup = function (layoutInfo) {\r\n var containerGroup = this._containerGroup;\r\n if (!containerGroup) {\r\n containerGroup = this._containerGroup = new Group$1();\r\n this._initEvents(containerGroup);\r\n this.group.add(containerGroup);\r\n }\r\n containerGroup.x = layoutInfo.x;\r\n containerGroup.y = layoutInfo.y;\r\n return containerGroup;\r\n };\r\n TreemapView.prototype._doRender = function (containerGroup, seriesModel, reRoot) {\r\n var thisTree = seriesModel.getData().tree;\r\n var oldTree = this._oldTree;\r\n var lastsForAnimation = createStorage();\r\n var thisStorage = createStorage();\r\n var oldStorage = this._storage;\r\n var willInvisibleEls = [];\r\n function doRenderNode(thisNode, oldNode, parentGroup, depth) {\r\n return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth);\r\n }\r\n dualTravel(thisTree.root ? [thisTree.root] : [], (oldTree && oldTree.root) ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0);\r\n var willDeleteEls = clearStorage(oldStorage);\r\n this._oldTree = thisTree;\r\n this._storage = thisStorage;\r\n return {\r\n lastsForAnimation: lastsForAnimation,\r\n willDeleteEls: willDeleteEls,\r\n renderFinally: renderFinally\r\n };\r\n function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {\r\n if (sameTree) {\r\n oldViewChildren = thisViewChildren;\r\n each(thisViewChildren, function (child, index) {\r\n !child.isRemoved() && processNode(index, index);\r\n });\r\n }\r\n else {\r\n (new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey))\r\n .add(processNode)\r\n .update(processNode)\r\n .remove(curry(processNode, null))\r\n .execute();\r\n }\r\n function getKey(node) {\r\n return node.getId();\r\n }\r\n function processNode(newIndex, oldIndex) {\r\n var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;\r\n var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;\r\n var group = doRenderNode(thisNode, oldNode, parentGroup, depth);\r\n group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);\r\n }\r\n }\r\n function clearStorage(storage) {\r\n var willDeleteEls = createStorage();\r\n storage && each(storage, function (store, storageName) {\r\n var delEls = willDeleteEls[storageName];\r\n each(store, function (el) {\r\n el && (delEls.push(el), inner$9(el).willDelete = true);\r\n });\r\n });\r\n return willDeleteEls;\r\n }\r\n function renderFinally() {\r\n each(willDeleteEls, function (els) {\r\n each(els, function (el) {\r\n el.parent && el.parent.remove(el);\r\n });\r\n });\r\n each(willInvisibleEls, function (el) {\r\n el.invisible = true;\r\n el.dirty();\r\n });\r\n }\r\n };\r\n TreemapView.prototype._doAnimation = function (containerGroup, renderResult, seriesModel, reRoot) {\r\n if (!seriesModel.get('animation')) {\r\n return;\r\n }\r\n var durationOption = seriesModel.get('animationDurationUpdate');\r\n var easingOption = seriesModel.get('animationEasing');\r\n var duration = (isFunction(durationOption) ? 0 : durationOption) || 0;\r\n var easing = (isFunction(easingOption) ? null : easingOption) || 'cubicOut';\r\n var animationWrap = createWrap();\r\n each(renderResult.willDeleteEls, function (store, storageName) {\r\n each(store, function (el, rawIndex) {\r\n if (el.invisible) {\r\n return;\r\n }\r\n var parent = el.parent;\r\n var target;\r\n var innerStore = inner$9(parent);\r\n if (reRoot && reRoot.direction === 'drillDown') {\r\n target = parent === reRoot.rootNodeGroup\r\n ? {\r\n shape: {\r\n x: 0,\r\n y: 0,\r\n width: innerStore.nodeWidth,\r\n height: innerStore.nodeHeight\r\n },\r\n style: {\r\n opacity: 0\r\n }\r\n }\r\n : { style: { opacity: 0 } };\r\n }\r\n else {\r\n var targetX = 0;\r\n var targetY = 0;\r\n if (!innerStore.willDelete) {\r\n targetX = innerStore.nodeWidth / 2;\r\n targetY = innerStore.nodeHeight / 2;\r\n }\r\n target = storageName === 'nodeGroup'\r\n ? { x: targetX, y: targetY, style: { opacity: 0 } }\r\n : {\r\n shape: { x: targetX, y: targetY, width: 0, height: 0 },\r\n style: { opacity: 0 }\r\n };\r\n }\r\n target && animationWrap.add(el, target, duration, 0, easing);\r\n });\r\n });\r\n each(this._storage, function (store, storageName) {\r\n each(store, function (el, rawIndex) {\r\n var last = renderResult.lastsForAnimation[storageName][rawIndex];\r\n var target = {};\r\n if (!last) {\r\n return;\r\n }\r\n if (el instanceof Group) {\r\n if (last.oldX != null) {\r\n target.x = el.x;\r\n target.y = el.y;\r\n el.x = last.oldX;\r\n el.y = last.oldY;\r\n }\r\n }\r\n else {\r\n if (last.oldShape) {\r\n target.shape = extend({}, el.shape);\r\n el.setShape(last.oldShape);\r\n }\r\n if (last.fadein) {\r\n el.setStyle('opacity', 0);\r\n target.style = { opacity: 1 };\r\n }\r\n else if (el.style.opacity !== 1) {\r\n target.style = { opacity: 1 };\r\n }\r\n }\r\n animationWrap.add(el, target, duration, 0, easing);\r\n });\r\n }, this);\r\n this._state = 'animating';\r\n animationWrap\r\n .finished(bind(function () {\r\n this._state = 'ready';\r\n renderResult.renderFinally();\r\n }, this))\r\n .start();\r\n };\r\n TreemapView.prototype._resetController = function (api) {\r\n var controller = this._controller;\r\n if (!controller) {\r\n controller = this._controller = new RoamController(api.getZr());\r\n controller.enable(this.seriesModel.get('roam'));\r\n controller.on('pan', bind(this._onPan, this));\r\n controller.on('zoom', bind(this._onZoom, this));\r\n }\r\n var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight());\r\n controller.setPointerChecker(function (e, x, y) {\r\n return rect.contain(x, y);\r\n });\r\n };\r\n TreemapView.prototype._clearController = function () {\r\n var controller = this._controller;\r\n if (controller) {\r\n controller.dispose();\r\n controller = null;\r\n }\r\n };\r\n TreemapView.prototype._onPan = function (e) {\r\n if (this._state !== 'animating'\r\n && (Math.abs(e.dx) > DRAG_THRESHOLD || Math.abs(e.dy) > DRAG_THRESHOLD)) {\r\n var root = this.seriesModel.getData().tree.root;\r\n if (!root) {\r\n return;\r\n }\r\n var rootLayout = root.getLayout();\r\n if (!rootLayout) {\r\n return;\r\n }\r\n this.api.dispatchAction({\r\n type: 'treemapMove',\r\n from: this.uid,\r\n seriesId: this.seriesModel.id,\r\n rootRect: {\r\n x: rootLayout.x + e.dx, y: rootLayout.y + e.dy,\r\n width: rootLayout.width, height: rootLayout.height\r\n }\r\n });\r\n }\r\n };\r\n TreemapView.prototype._onZoom = function (e) {\r\n var mouseX = e.originX;\r\n var mouseY = e.originY;\r\n if (this._state !== 'animating') {\r\n var root = this.seriesModel.getData().tree.root;\r\n if (!root) {\r\n return;\r\n }\r\n var rootLayout = root.getLayout();\r\n if (!rootLayout) {\r\n return;\r\n }\r\n var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);\r\n var layoutInfo = this.seriesModel.layoutInfo;\r\n mouseX -= layoutInfo.x;\r\n mouseY -= layoutInfo.y;\r\n var m = create$1();\r\n translate(m, m, [-mouseX, -mouseY]);\r\n scale$1(m, m, [e.scale, e.scale]);\r\n translate(m, m, [mouseX, mouseY]);\r\n rect.applyTransform(m);\r\n this.api.dispatchAction({\r\n type: 'treemapRender',\r\n from: this.uid,\r\n seriesId: this.seriesModel.id,\r\n rootRect: {\r\n x: rect.x, y: rect.y,\r\n width: rect.width, height: rect.height\r\n }\r\n });\r\n }\r\n };\r\n TreemapView.prototype._initEvents = function (containerGroup) {\r\n var _this = this;\r\n containerGroup.on('click', function (e) {\r\n if (_this._state !== 'ready') {\r\n return;\r\n }\r\n var nodeClick = _this.seriesModel.get('nodeClick', true);\r\n if (!nodeClick) {\r\n return;\r\n }\r\n var targetInfo = _this.findTarget(e.offsetX, e.offsetY);\r\n if (!targetInfo) {\r\n return;\r\n }\r\n var node = targetInfo.node;\r\n if (node.getLayout().isLeafRoot) {\r\n _this._rootToNode(targetInfo);\r\n }\r\n else {\r\n if (nodeClick === 'zoomToNode') {\r\n _this._zoomToNode(targetInfo);\r\n }\r\n else if (nodeClick === 'link') {\r\n var itemModel = node.hostTree.data.getItemModel(node.dataIndex);\r\n var link = itemModel.get('link', true);\r\n var linkTarget = itemModel.get('target', true) || 'blank';\r\n link && windowOpen(link, linkTarget);\r\n }\r\n }\r\n }, this);\r\n };\r\n TreemapView.prototype._renderBreadcrumb = function (seriesModel, api, targetInfo) {\r\n var _this = this;\r\n if (!targetInfo) {\r\n targetInfo = seriesModel.get('leafDepth', true) != null\r\n ? { node: seriesModel.getViewRoot() }\r\n : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);\r\n if (!targetInfo) {\r\n targetInfo = { node: seriesModel.getData().tree.root };\r\n }\r\n }\r\n (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group)))\r\n .render(seriesModel, api, targetInfo.node, function (node) {\r\n if (_this._state !== 'animating') {\r\n aboveViewRoot(seriesModel.getViewRoot(), node)\r\n ? _this._rootToNode({ node: node })\r\n : _this._zoomToNode({ node: node });\r\n }\r\n });\r\n };\r\n TreemapView.prototype.remove = function () {\r\n this._clearController();\r\n this._containerGroup && this._containerGroup.removeAll();\r\n this._storage = createStorage();\r\n this._state = 'ready';\r\n this._breadcrumb && this._breadcrumb.remove();\r\n };\r\n TreemapView.prototype.dispose = function () {\r\n this._clearController();\r\n };\r\n TreemapView.prototype._zoomToNode = function (targetInfo) {\r\n this.api.dispatchAction({\r\n type: 'treemapZoomToNode',\r\n from: this.uid,\r\n seriesId: this.seriesModel.id,\r\n targetNode: targetInfo.node\r\n });\r\n };\r\n TreemapView.prototype._rootToNode = function (targetInfo) {\r\n this.api.dispatchAction({\r\n type: 'treemapRootToNode',\r\n from: this.uid,\r\n seriesId: this.seriesModel.id,\r\n targetNode: targetInfo.node\r\n });\r\n };\r\n TreemapView.prototype.findTarget = function (x, y) {\r\n var targetInfo;\r\n var viewRoot = this.seriesModel.getViewRoot();\r\n viewRoot.eachNode({ attr: 'viewChildren', order: 'preorder' }, function (node) {\r\n var bgEl = this._storage.background[node.getRawIndex()];\r\n if (bgEl) {\r\n var point = bgEl.transformCoordToLocal(x, y);\r\n var shape = bgEl.shape;\r\n if (shape.x <= point[0]\r\n && point[0] <= shape.x + shape.width\r\n && shape.y <= point[1]\r\n && point[1] <= shape.y + shape.height) {\r\n targetInfo = {\r\n node: node,\r\n offsetX: point[0],\r\n offsetY: point[1]\r\n };\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n }, this);\r\n return targetInfo;\r\n };\r\n TreemapView.type = 'treemap';\r\n return TreemapView;\r\n}(ChartView));\r\nfunction createStorage() {\r\n return {\r\n nodeGroup: [],\r\n background: [],\r\n content: []\r\n };\r\n}\r\nfunction renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {\r\n if (!thisNode) {\r\n return;\r\n }\r\n var thisLayout = thisNode.getLayout();\r\n var data = seriesModel.getData();\r\n var nodeModel = thisNode.getModel();\r\n data.setItemGraphicEl(thisNode.dataIndex, null);\r\n if (!thisLayout || !thisLayout.isInView) {\r\n return;\r\n }\r\n var thisWidth = thisLayout.width;\r\n var thisHeight = thisLayout.height;\r\n var borderWidth = thisLayout.borderWidth;\r\n var thisInvisible = thisLayout.invisible;\r\n var thisRawIndex = thisNode.getRawIndex();\r\n var oldRawIndex = oldNode && oldNode.getRawIndex();\r\n var thisViewChildren = thisNode.viewChildren;\r\n var upperHeight = thisLayout.upperHeight;\r\n var isParent = thisViewChildren && thisViewChildren.length;\r\n var itemStyleNormalModel = nodeModel.getModel('itemStyle');\r\n var itemStyleEmphasisModel = nodeModel.getModel(['emphasis', 'itemStyle']);\r\n var itemStyleBlurModel = nodeModel.getModel(['blur', 'itemStyle']);\r\n var itemStyleSelectModel = nodeModel.getModel(['select', 'itemStyle']);\r\n var borderRadius = itemStyleNormalModel.get('borderRadius') || 0;\r\n var group = giveGraphic('nodeGroup', Group$1);\r\n if (!group) {\r\n return;\r\n }\r\n parentGroup.add(group);\r\n group.x = thisLayout.x || 0;\r\n group.y = thisLayout.y || 0;\r\n group.markRedraw();\r\n inner$9(group).nodeWidth = thisWidth;\r\n inner$9(group).nodeHeight = thisHeight;\r\n if (thisLayout.isAboveViewRoot) {\r\n return group;\r\n }\r\n var bg = giveGraphic('background', Rect$1, depth, Z_BG);\r\n bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight);\r\n var focus = nodeModel.get(['emphasis', 'focus']);\r\n var blurScope = nodeModel.get(['emphasis', 'blurScope']);\r\n var focusDataIndices = focus === 'ancestor'\r\n ? thisNode.getAncestorsIndices()\r\n : focus === 'descendant' ? thisNode.getDescendantIndices() : null;\r\n if (isParent) {\r\n if (isHighDownDispatcher(group)) {\r\n setAsHighDownDispatcher(group, false);\r\n }\r\n if (bg) {\r\n setAsHighDownDispatcher(bg, true);\r\n data.setItemGraphicEl(thisNode.dataIndex, bg);\r\n enableHoverFocus(bg, focusDataIndices || focus, blurScope);\r\n }\r\n }\r\n else {\r\n var content = giveGraphic('content', Rect$1, depth, Z_CONTENT);\r\n content && renderContent(group, content);\r\n if (bg && isHighDownDispatcher(bg)) {\r\n setAsHighDownDispatcher(bg, false);\r\n }\r\n setAsHighDownDispatcher(group, true);\r\n data.setItemGraphicEl(thisNode.dataIndex, group);\r\n enableHoverFocus(group, focusDataIndices || focus, blurScope);\r\n }\r\n return group;\r\n function renderBackground(group, bg, useUpperLabel) {\r\n var ecData = getECData(bg);\r\n ecData.dataIndex = thisNode.dataIndex;\r\n ecData.seriesIndex = seriesModel.seriesIndex;\r\n bg.setShape({ x: 0, y: 0, width: thisWidth, height: thisHeight, r: borderRadius });\r\n if (thisInvisible) {\r\n processInvisible(bg);\r\n }\r\n else {\r\n bg.invisible = false;\r\n var style = thisNode.getVisual('style');\r\n var visualBorderColor = style.stroke;\r\n var normalStyle = getItemStyleNormal(itemStyleNormalModel);\r\n normalStyle.fill = visualBorderColor;\r\n var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);\r\n emphasisStyle.fill = itemStyleEmphasisModel.get('borderColor');\r\n var blurStyle = getStateItemStyle(itemStyleBlurModel);\r\n blurStyle.fill = itemStyleBlurModel.get('borderColor');\r\n var selectStyle = getStateItemStyle(itemStyleSelectModel);\r\n selectStyle.fill = itemStyleSelectModel.get('borderColor');\r\n if (useUpperLabel) {\r\n var upperLabelWidth = thisWidth - 2 * borderWidth;\r\n prepareText(bg, visualBorderColor, upperLabelWidth, upperHeight, style.opacity, { x: borderWidth, y: 0, width: upperLabelWidth, height: upperHeight });\r\n }\r\n else {\r\n bg.removeTextContent();\r\n }\r\n bg.setStyle(normalStyle);\r\n bg.ensureState('emphasis').style = emphasisStyle;\r\n bg.ensureState('blur').style = blurStyle;\r\n bg.ensureState('select').style = selectStyle;\r\n setDefaultStateProxy(bg);\r\n }\r\n group.add(bg);\r\n }\r\n function renderContent(group, content) {\r\n var ecData = getECData(content);\r\n ecData.dataIndex = thisNode.dataIndex;\r\n ecData.seriesIndex = seriesModel.seriesIndex;\r\n var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);\r\n var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);\r\n content.culling = true;\r\n content.setShape({\r\n x: borderWidth,\r\n y: borderWidth,\r\n width: contentWidth,\r\n height: contentHeight,\r\n r: borderRadius\r\n });\r\n if (thisInvisible) {\r\n processInvisible(content);\r\n }\r\n else {\r\n content.invisible = false;\r\n var nodeStyle = thisNode.getVisual('style');\r\n var visualColor = nodeStyle.fill;\r\n var normalStyle = getItemStyleNormal(itemStyleNormalModel);\r\n normalStyle.fill = visualColor;\r\n normalStyle.decal = nodeStyle.decal;\r\n var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);\r\n var blurStyle = getStateItemStyle(itemStyleBlurModel);\r\n var selectStyle = getStateItemStyle(itemStyleSelectModel);\r\n prepareText(content, visualColor, contentWidth, nodeStyle.opacity);\r\n content.setStyle(normalStyle);\r\n content.ensureState('emphasis').style = emphasisStyle;\r\n content.ensureState('blur').style = blurStyle;\r\n content.ensureState('select').style = selectStyle;\r\n setDefaultStateProxy(content);\r\n }\r\n group.add(content);\r\n }\r\n function processInvisible(element) {\r\n !element.invisible && willInvisibleEls.push(element);\r\n }\r\n function prepareText(rectEl, visualColor, visualOpacity, width, height, upperLabelRect) {\r\n var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);\r\n var text = retrieve(seriesModel.getFormattedLabel(thisNode.dataIndex, 'normal', null, null, normalLabelModel.get('formatter')), convertOptionIdName(nodeModel.get('name'), null));\r\n if (!upperLabelRect && thisLayout.isLeafRoot) {\r\n var iconChar = seriesModel.get('drillDownIcon', true);\r\n text = iconChar ? iconChar + ' ' + text : text;\r\n }\r\n var isShow = normalLabelModel.getShallow('show');\r\n setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), {\r\n defaultText: isShow ? text : null,\r\n inheritColor: visualColor,\r\n defaultOpacity: visualOpacity,\r\n labelFetcher: seriesModel,\r\n labelDataIndex: thisNode.dataIndex\r\n });\r\n var textEl = rectEl.getTextContent();\r\n var textStyle = textEl.style;\r\n var textPadding = normalizeCssArray(textStyle.padding || 0);\r\n if (upperLabelRect) {\r\n rectEl.setTextConfig({\r\n layoutRect: upperLabelRect\r\n });\r\n textEl.disableLabelLayout = true;\r\n }\r\n textEl.beforeUpdate = function () {\r\n var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0);\r\n var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0);\r\n if (textStyle.width !== width || textStyle.height !== height) {\r\n textEl.setStyle({\r\n width: width,\r\n height: height\r\n });\r\n }\r\n };\r\n textStyle.truncateMinChar = 2;\r\n textStyle.lineOverflow = 'truncate';\r\n addDrillDownIcon(textStyle, upperLabelRect, thisLayout);\r\n var textEmphasisState = textEl.getState('emphasis');\r\n addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout);\r\n }\r\n function addDrillDownIcon(style, upperLabelRect, thisLayout) {\r\n var text = style ? style.text : null;\r\n if (!upperLabelRect && thisLayout.isLeafRoot && text != null) {\r\n var iconChar = seriesModel.get('drillDownIcon', true);\r\n style.text = iconChar ? iconChar + ' ' + text : text;\r\n }\r\n }\r\n function giveGraphic(storageName, Ctor, depth, z) {\r\n var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];\r\n var lasts = lastsForAnimation[storageName];\r\n if (element) {\r\n oldStorage[storageName][oldRawIndex] = null;\r\n prepareAnimationWhenHasOld(lasts, element);\r\n }\r\n else if (!thisInvisible) {\r\n element = new Ctor();\r\n if (element instanceof Displayable) {\r\n element.z = calculateZ(depth, z);\r\n }\r\n prepareAnimationWhenNoOld(lasts, element);\r\n }\r\n return (thisStorage[storageName][thisRawIndex] = element);\r\n }\r\n function prepareAnimationWhenHasOld(lasts, element) {\r\n var lastCfg = lasts[thisRawIndex] = {};\r\n if (element instanceof Group$1) {\r\n lastCfg.oldX = element.x;\r\n lastCfg.oldY = element.y;\r\n }\r\n else {\r\n lastCfg.oldShape = extend({}, element.shape);\r\n }\r\n }\r\n function prepareAnimationWhenNoOld(lasts, element) {\r\n var lastCfg = lasts[thisRawIndex] = {};\r\n var parentNode = thisNode.parentNode;\r\n var isGroup = element instanceof Group;\r\n if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) {\r\n var parentOldX = 0;\r\n var parentOldY = 0;\r\n var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()];\r\n if (!reRoot && parentOldBg && parentOldBg.oldShape) {\r\n parentOldX = parentOldBg.oldShape.width;\r\n parentOldY = parentOldBg.oldShape.height;\r\n }\r\n if (isGroup) {\r\n lastCfg.oldX = 0;\r\n lastCfg.oldY = parentOldY;\r\n }\r\n else {\r\n lastCfg.oldShape = { x: parentOldX, y: parentOldY, width: 0, height: 0 };\r\n }\r\n }\r\n lastCfg.fadein = !isGroup;\r\n }\r\n}\r\nfunction calculateZ(depth, zInLevel) {\r\n var zb = depth * Z_BASE + zInLevel;\r\n return (zb - 1) / zb;\r\n}\r\nChartView.registerClass(TreemapView);\n\nvar noop$1 = function () { };\r\nvar actionTypes = [\r\n 'treemapZoomToNode',\r\n 'treemapRender',\r\n 'treemapMove'\r\n];\r\nfor (var i$1 = 0; i$1 < actionTypes.length; i$1++) {\r\n registerAction({\r\n type: actionTypes[i$1],\r\n update: 'updateView'\r\n }, noop$1);\r\n}\r\nregisterAction({ type: 'treemapRootToNode', update: 'updateView' }, function (payload, ecModel) {\r\n ecModel.eachComponent({ mainType: 'series', subType: 'treemap', query: payload }, handleRootToNode);\r\n function handleRootToNode(model, index) {\r\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\r\n var targetInfo = retrieveTargetInfo(payload, types, model);\r\n if (targetInfo) {\r\n var originViewRoot = model.getViewRoot();\r\n if (originViewRoot) {\r\n payload.direction = aboveViewRoot(originViewRoot, targetInfo.node)\r\n ? 'rollUp' : 'drillDown';\r\n }\r\n model.resetViewRoot(targetInfo.node);\r\n }\r\n }\r\n});\n\nvar each$4 = each;\r\nvar isObject$4 = isObject;\r\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\r\nvar VisualMapping = (function () {\r\n function VisualMapping(option) {\r\n var mappingMethod = option.mappingMethod;\r\n var visualType = option.type;\r\n var thisOption = this.option = clone(option);\r\n this.type = visualType;\r\n this.mappingMethod = mappingMethod;\r\n this._normalizeData = normalizers[mappingMethod];\r\n var visualHandler = VisualMapping.visualHandlers[visualType];\r\n this.applyVisual = visualHandler.applyVisual;\r\n this.getColorMapper = visualHandler.getColorMapper;\r\n this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod];\r\n if (mappingMethod === 'piecewise') {\r\n normalizeVisualRange(thisOption);\r\n preprocessForPiecewise(thisOption);\r\n }\r\n else if (mappingMethod === 'category') {\r\n thisOption.categories\r\n ? preprocessForSpecifiedCategory(thisOption)\r\n : normalizeVisualRange(thisOption, true);\r\n }\r\n else {\r\n assert(mappingMethod !== 'linear' || thisOption.dataExtent);\r\n normalizeVisualRange(thisOption);\r\n }\r\n }\r\n VisualMapping.prototype.mapValueToVisual = function (value) {\r\n var normalized = this._normalizeData(value);\r\n return this._normalizedToVisual(normalized, value);\r\n };\r\n VisualMapping.prototype.getNormalizer = function () {\r\n return bind(this._normalizeData, this);\r\n };\r\n VisualMapping.listVisualTypes = function () {\r\n return keys(VisualMapping.visualHandlers);\r\n };\r\n VisualMapping.isValidType = function (visualType) {\r\n return VisualMapping.visualHandlers.hasOwnProperty(visualType);\r\n };\r\n VisualMapping.eachVisual = function (visual, callback, context) {\r\n if (isObject(visual)) {\r\n each(visual, callback, context);\r\n }\r\n else {\r\n callback.call(context, visual);\r\n }\r\n };\r\n VisualMapping.mapVisual = function (visual, callback, context) {\r\n var isPrimary;\r\n var newVisual = isArray(visual)\r\n ? []\r\n : isObject(visual)\r\n ? {}\r\n : (isPrimary = true, null);\r\n VisualMapping.eachVisual(visual, function (v, key) {\r\n var newVal = callback.call(context, v, key);\r\n isPrimary ? (newVisual = newVal) : (newVisual[key] = newVal);\r\n });\r\n return newVisual;\r\n };\r\n VisualMapping.retrieveVisuals = function (obj) {\r\n var ret = {};\r\n var hasVisual;\r\n obj && each$4(VisualMapping.visualHandlers, function (h, visualType) {\r\n if (obj.hasOwnProperty(visualType)) {\r\n ret[visualType] = obj[visualType];\r\n hasVisual = true;\r\n }\r\n });\r\n return hasVisual ? ret : null;\r\n };\r\n VisualMapping.prepareVisualTypes = function (visualTypes) {\r\n if (isArray(visualTypes)) {\r\n visualTypes = visualTypes.slice();\r\n }\r\n else if (isObject$4(visualTypes)) {\r\n var types_1 = [];\r\n each$4(visualTypes, function (item, type) {\r\n types_1.push(type);\r\n });\r\n visualTypes = types_1;\r\n }\r\n else {\r\n return [];\r\n }\r\n visualTypes.sort(function (type1, type2) {\r\n return (type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0)\r\n ? 1 : -1;\r\n });\r\n return visualTypes;\r\n };\r\n VisualMapping.dependsOn = function (visualType1, visualType2) {\r\n return visualType2 === 'color'\r\n ? !!(visualType1 && visualType1.indexOf(visualType2) === 0)\r\n : visualType1 === visualType2;\r\n };\r\n VisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\r\n var possibleI;\r\n var abs = Infinity;\r\n for (var i = 0, len = pieceList.length; i < len; i++) {\r\n var pieceValue = pieceList[i].value;\r\n if (pieceValue != null) {\r\n if (pieceValue === value\r\n || (typeof pieceValue === 'string' && pieceValue === value + '')) {\r\n return i;\r\n }\r\n findClosestWhenOutside && updatePossible(pieceValue, i);\r\n }\r\n }\r\n for (var i = 0, len = pieceList.length; i < len; i++) {\r\n var piece = pieceList[i];\r\n var interval = piece.interval;\r\n var close_1 = piece.close;\r\n if (interval) {\r\n if (interval[0] === -Infinity) {\r\n if (littleThan(close_1[1], value, interval[1])) {\r\n return i;\r\n }\r\n }\r\n else if (interval[1] === Infinity) {\r\n if (littleThan(close_1[0], interval[0], value)) {\r\n return i;\r\n }\r\n }\r\n else if (littleThan(close_1[0], interval[0], value)\r\n && littleThan(close_1[1], value, interval[1])) {\r\n return i;\r\n }\r\n findClosestWhenOutside && updatePossible(interval[0], i);\r\n findClosestWhenOutside && updatePossible(interval[1], i);\r\n }\r\n }\r\n if (findClosestWhenOutside) {\r\n return value === Infinity\r\n ? pieceList.length - 1\r\n : value === -Infinity\r\n ? 0\r\n : possibleI;\r\n }\r\n function updatePossible(val, index) {\r\n var newAbs = Math.abs(val - value);\r\n if (newAbs < abs) {\r\n abs = newAbs;\r\n possibleI = index;\r\n }\r\n }\r\n };\r\n VisualMapping.visualHandlers = {\r\n color: {\r\n applyVisual: makeApplyVisual('color'),\r\n getColorMapper: function () {\r\n var thisOption = this.option;\r\n return bind(thisOption.mappingMethod === 'category'\r\n ? function (value, isNormalized) {\r\n !isNormalized && (value = this._normalizeData(value));\r\n return doMapCategory.call(this, value);\r\n }\r\n : function (value, isNormalized, out) {\r\n var returnRGBArray = !!out;\r\n !isNormalized && (value = this._normalizeData(value));\r\n out = fastLerp(value, thisOption.parsedVisual, out);\r\n return returnRGBArray ? out : stringify(out, 'rgba');\r\n }, this);\r\n },\r\n _normalizedToVisual: {\r\n linear: function (normalized) {\r\n return stringify(fastLerp(normalized, this.option.parsedVisual), 'rgba');\r\n },\r\n category: doMapCategory,\r\n piecewise: function (normalized, value) {\r\n var result = getSpecifiedVisual.call(this, value);\r\n if (result == null) {\r\n result = stringify(fastLerp(normalized, this.option.parsedVisual), 'rgba');\r\n }\r\n return result;\r\n },\r\n fixed: doMapFixed\r\n }\r\n },\r\n colorHue: makePartialColorVisualHandler(function (color$1, value) {\r\n return modifyHSL(color$1, value);\r\n }),\r\n colorSaturation: makePartialColorVisualHandler(function (color$1, value) {\r\n return modifyHSL(color$1, null, value);\r\n }),\r\n colorLightness: makePartialColorVisualHandler(function (color$1, value) {\r\n return modifyHSL(color$1, null, null, value);\r\n }),\r\n colorAlpha: makePartialColorVisualHandler(function (color$1, value) {\r\n return modifyAlpha(color$1, value);\r\n }),\r\n decal: {\r\n applyVisual: makeApplyVisual('decal'),\r\n _normalizedToVisual: {\r\n linear: null,\r\n category: doMapCategory,\r\n piecewise: null,\r\n fixed: null\r\n }\r\n },\r\n opacity: {\r\n applyVisual: makeApplyVisual('opacity'),\r\n _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\r\n },\r\n liftZ: {\r\n applyVisual: makeApplyVisual('liftZ'),\r\n _normalizedToVisual: {\r\n linear: doMapFixed,\r\n category: doMapFixed,\r\n piecewise: doMapFixed,\r\n fixed: doMapFixed\r\n }\r\n },\r\n symbol: {\r\n applyVisual: function (value, getter, setter) {\r\n var symbolCfg = this.mapValueToVisual(value);\r\n setter('symbol', symbolCfg);\r\n },\r\n _normalizedToVisual: {\r\n linear: doMapToArray,\r\n category: doMapCategory,\r\n piecewise: function (normalized, value) {\r\n var result = getSpecifiedVisual.call(this, value);\r\n if (result == null) {\r\n result = doMapToArray.call(this, normalized);\r\n }\r\n return result;\r\n },\r\n fixed: doMapFixed\r\n }\r\n },\r\n symbolSize: {\r\n applyVisual: makeApplyVisual('symbolSize'),\r\n _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\r\n }\r\n };\r\n return VisualMapping;\r\n}());\r\nfunction preprocessForPiecewise(thisOption) {\r\n var pieceList = thisOption.pieceList;\r\n thisOption.hasSpecialVisual = false;\r\n each(pieceList, function (piece, index) {\r\n piece.originIndex = index;\r\n if (piece.visual != null) {\r\n thisOption.hasSpecialVisual = true;\r\n }\r\n });\r\n}\r\nfunction preprocessForSpecifiedCategory(thisOption) {\r\n var categories = thisOption.categories;\r\n var categoryMap = thisOption.categoryMap = {};\r\n var visual = thisOption.visual;\r\n each$4(categories, function (cate, index) {\r\n categoryMap[cate] = index;\r\n });\r\n if (!isArray(visual)) {\r\n var visualArr_1 = [];\r\n if (isObject(visual)) {\r\n each$4(visual, function (v, cate) {\r\n var index = categoryMap[cate];\r\n visualArr_1[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\r\n });\r\n }\r\n else {\r\n visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\r\n }\r\n visual = setVisualToOption(thisOption, visualArr_1);\r\n }\r\n for (var i = categories.length - 1; i >= 0; i--) {\r\n if (visual[i] == null) {\r\n delete categoryMap[categories[i]];\r\n categories.pop();\r\n }\r\n }\r\n}\r\nfunction normalizeVisualRange(thisOption, isCategory) {\r\n var visual = thisOption.visual;\r\n var visualArr = [];\r\n if (isObject(visual)) {\r\n each$4(visual, function (v) {\r\n visualArr.push(v);\r\n });\r\n }\r\n else if (visual != null) {\r\n visualArr.push(visual);\r\n }\r\n var doNotNeedPair = { color: 1, symbol: 1 };\r\n if (!isCategory\r\n && visualArr.length === 1\r\n && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\r\n visualArr[1] = visualArr[0];\r\n }\r\n setVisualToOption(thisOption, visualArr);\r\n}\r\nfunction makePartialColorVisualHandler(applyValue) {\r\n return {\r\n applyVisual: function (value, getter, setter) {\r\n var colorChannel = this.mapValueToVisual(value);\r\n setter('color', applyValue(getter('color'), colorChannel));\r\n },\r\n _normalizedToVisual: createNormalizedToNumericVisual([0, 1])\r\n };\r\n}\r\nfunction doMapToArray(normalized) {\r\n var visual = this.option.visual;\r\n return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};\r\n}\r\nfunction makeApplyVisual(visualType) {\r\n return function (value, getter, setter) {\r\n setter(visualType, this.mapValueToVisual(value));\r\n };\r\n}\r\nfunction doMapCategory(normalized) {\r\n var visual = this.option.visual;\r\n return visual[(this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX)\r\n ? normalized % visual.length\r\n : normalized];\r\n}\r\nfunction doMapFixed() {\r\n return this.option.visual[0];\r\n}\r\nfunction createNormalizedToNumericVisual(sourceExtent) {\r\n return {\r\n linear: function (normalized) {\r\n return linearMap(normalized, sourceExtent, this.option.visual, true);\r\n },\r\n category: doMapCategory,\r\n piecewise: function (normalized, value) {\r\n var result = getSpecifiedVisual.call(this, value);\r\n if (result == null) {\r\n result = linearMap(normalized, sourceExtent, this.option.visual, true);\r\n }\r\n return result;\r\n },\r\n fixed: doMapFixed\r\n };\r\n}\r\nfunction getSpecifiedVisual(value) {\r\n var thisOption = this.option;\r\n var pieceList = thisOption.pieceList;\r\n if (thisOption.hasSpecialVisual) {\r\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\r\n var piece = pieceList[pieceIndex];\r\n if (piece && piece.visual) {\r\n return piece.visual[this.type];\r\n }\r\n }\r\n}\r\nfunction setVisualToOption(thisOption, visualArr) {\r\n thisOption.visual = visualArr;\r\n if (thisOption.type === 'color') {\r\n thisOption.parsedVisual = map(visualArr, function (item) {\r\n return parse(item);\r\n });\r\n }\r\n return visualArr;\r\n}\r\nvar normalizers = {\r\n linear: function (value) {\r\n return linearMap(value, this.option.dataExtent, [0, 1], true);\r\n },\r\n piecewise: function (value) {\r\n var pieceList = this.option.pieceList;\r\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\r\n if (pieceIndex != null) {\r\n return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\r\n }\r\n },\r\n category: function (value) {\r\n var index = this.option.categories\r\n ? this.option.categoryMap[value]\r\n : value;\r\n return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\r\n },\r\n fixed: noop\r\n};\r\nfunction littleThan(close, a, b) {\r\n return close ? a <= b : a < b;\r\n}\n\nvar ITEM_STYLE_NORMAL = 'itemStyle';\r\nvar inner$a = makeInner();\r\nvar treemapVisual = {\r\n seriesType: 'treemap',\r\n reset: function (seriesModel) {\r\n var tree = seriesModel.getData().tree;\r\n var root = tree.root;\r\n if (root.isRemoved()) {\r\n return;\r\n }\r\n travelTree(root, {}, seriesModel.getViewRoot().getAncestors(), seriesModel);\r\n }\r\n};\r\nfunction travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {\r\n var nodeModel = node.getModel();\r\n var nodeLayout = node.getLayout();\r\n var data = node.hostTree.data;\r\n if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {\r\n return;\r\n }\r\n var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL);\r\n var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel);\r\n var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style');\r\n var borderColor = nodeItemStyleModel.get('borderColor');\r\n var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation');\r\n var thisNodeColor;\r\n if (borderColorSaturation != null) {\r\n thisNodeColor = calculateColor(visuals);\r\n borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);\r\n }\r\n existsStyle.stroke = borderColor;\r\n var viewChildren = node.viewChildren;\r\n if (!viewChildren || !viewChildren.length) {\r\n thisNodeColor = calculateColor(visuals);\r\n existsStyle.fill = thisNodeColor;\r\n }\r\n else {\r\n var mapping_1 = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren);\r\n each(viewChildren, function (child, index) {\r\n if (child.depth >= viewRootAncestors.length\r\n || child === viewRootAncestors[child.depth]) {\r\n var childVisual = mapVisual(nodeModel, visuals, child, index, mapping_1, seriesModel);\r\n travelTree(child, childVisual, viewRootAncestors, seriesModel);\r\n }\r\n });\r\n }\r\n}\r\nfunction buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {\r\n var visuals = extend({}, designatedVisual);\r\n var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;\r\n each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {\r\n designatedVisualItemStyle[visualName] = designatedVisual[visualName];\r\n var val = nodeItemStyleModel.get(visualName);\r\n designatedVisualItemStyle[visualName] = null;\r\n val != null && (visuals[visualName] = val);\r\n });\r\n return visuals;\r\n}\r\nfunction calculateColor(visuals) {\r\n var color = getValueVisualDefine(visuals, 'color');\r\n if (color) {\r\n var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha');\r\n var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation');\r\n if (colorSaturation) {\r\n color = modifyHSL(color, null, null, colorSaturation);\r\n }\r\n if (colorAlpha) {\r\n color = modifyAlpha(color, colorAlpha);\r\n }\r\n return color;\r\n }\r\n}\r\nfunction calculateBorderColor(borderColorSaturation, thisNodeColor) {\r\n return thisNodeColor != null\r\n ? modifyHSL(thisNodeColor, null, null, borderColorSaturation)\r\n : null;\r\n}\r\nfunction getValueVisualDefine(visuals, name) {\r\n var value = visuals[name];\r\n if (value != null && value !== 'none') {\r\n return value;\r\n }\r\n}\r\nfunction buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {\r\n if (!viewChildren || !viewChildren.length) {\r\n return;\r\n }\r\n var rangeVisual = getRangeVisual(nodeModel, 'color')\r\n || (visuals.color != null\r\n && visuals.color !== 'none'\r\n && (getRangeVisual(nodeModel, 'colorAlpha')\r\n || getRangeVisual(nodeModel, 'colorSaturation')));\r\n if (!rangeVisual) {\r\n return;\r\n }\r\n var visualMin = nodeModel.get('visualMin');\r\n var visualMax = nodeModel.get('visualMax');\r\n var dataExtent = nodeLayout.dataExtent.slice();\r\n visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);\r\n visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);\r\n var colorMappingBy = nodeModel.get('colorMappingBy');\r\n var opt = {\r\n type: rangeVisual.name,\r\n dataExtent: dataExtent,\r\n visual: rangeVisual.range\r\n };\r\n if (opt.type === 'color'\r\n && (colorMappingBy === 'index' || colorMappingBy === 'id')) {\r\n opt.mappingMethod = 'category';\r\n opt.loop = true;\r\n }\r\n else {\r\n opt.mappingMethod = 'linear';\r\n }\r\n var mapping = new VisualMapping(opt);\r\n inner$a(mapping).drColorMappingBy = colorMappingBy;\r\n return mapping;\r\n}\r\nfunction getRangeVisual(nodeModel, name) {\r\n var range = nodeModel.get(name);\r\n return (isArray(range) && range.length) ? {\r\n name: name,\r\n range: range\r\n } : null;\r\n}\r\nfunction mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {\r\n var childVisuals = extend({}, visuals);\r\n if (mapping) {\r\n var mappingType = mapping.type;\r\n var colorMappingBy = mappingType === 'color' && inner$a(mapping).drColorMappingBy;\r\n var value = colorMappingBy === 'index'\r\n ? index\r\n : colorMappingBy === 'id'\r\n ? seriesModel.mapIdToIndex(child.getId())\r\n : child.getValue(nodeModel.get('visualDimension'));\r\n childVisuals[mappingType] = mapping.mapValueToVisual(value);\r\n }\r\n return childVisuals;\r\n}\n\nvar mathMax$7 = Math.max;\r\nvar mathMin$7 = Math.min;\r\nvar retrieveValue = retrieve;\r\nvar each$5 = each;\r\nvar PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth'];\r\nvar PATH_GAP_WIDTH = ['itemStyle', 'gapWidth'];\r\nvar PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show'];\r\nvar PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height'];\r\nvar treemapLayout = {\r\n seriesType: 'treemap',\r\n reset: function (seriesModel, ecModel, api, payload) {\r\n var ecWidth = api.getWidth();\r\n var ecHeight = api.getHeight();\r\n var seriesOption = seriesModel.option;\r\n var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n var size = seriesOption.size || [];\r\n var containerWidth = parsePercent$2(retrieveValue(layoutInfo.width, size[0]), ecWidth);\r\n var containerHeight = parsePercent$2(retrieveValue(layoutInfo.height, size[1]), ecHeight);\r\n var payloadType = payload && payload.type;\r\n var types = ['treemapZoomToNode', 'treemapRootToNode'];\r\n var targetInfo = retrieveTargetInfo(payload, types, seriesModel);\r\n var rootRect = (payloadType === 'treemapRender' || payloadType === 'treemapMove')\r\n ? payload.rootRect : null;\r\n var viewRoot = seriesModel.getViewRoot();\r\n var viewAbovePath = getPathToRoot(viewRoot);\r\n if (payloadType !== 'treemapMove') {\r\n var rootSize = payloadType === 'treemapZoomToNode'\r\n ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight)\r\n : rootRect\r\n ? [rootRect.width, rootRect.height]\r\n : [containerWidth, containerHeight];\r\n var sort_1 = seriesOption.sort;\r\n if (sort_1 && sort_1 !== 'asc' && sort_1 !== 'desc') {\r\n sort_1 = 'desc';\r\n }\r\n var options = {\r\n squareRatio: seriesOption.squareRatio,\r\n sort: sort_1,\r\n leafDepth: seriesOption.leafDepth\r\n };\r\n viewRoot.hostTree.clearLayouts();\r\n var viewRootLayout_1 = {\r\n x: 0,\r\n y: 0,\r\n width: rootSize[0],\r\n height: rootSize[1],\r\n area: rootSize[0] * rootSize[1]\r\n };\r\n viewRoot.setLayout(viewRootLayout_1);\r\n squarify(viewRoot, options, false, 0);\r\n viewRootLayout_1 = viewRoot.getLayout();\r\n each$5(viewAbovePath, function (node, index) {\r\n var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();\r\n node.setLayout(extend({\r\n dataExtent: [childValue, childValue],\r\n borderWidth: 0,\r\n upperHeight: 0\r\n }, viewRootLayout_1));\r\n });\r\n }\r\n var treeRoot = seriesModel.getData().tree.root;\r\n treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);\r\n seriesModel.setLayoutInfo(layoutInfo);\r\n prunning(treeRoot, new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0);\r\n }\r\n};\r\nfunction squarify(node, options, hideChildren, depth) {\r\n var width;\r\n var height;\r\n if (node.isRemoved()) {\r\n return;\r\n }\r\n var thisLayout = node.getLayout();\r\n width = thisLayout.width;\r\n height = thisLayout.height;\r\n var nodeModel = node.getModel();\r\n var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);\r\n var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;\r\n var upperLabelHeight = getUpperLabelHeight(nodeModel);\r\n var upperHeight = Math.max(borderWidth, upperLabelHeight);\r\n var layoutOffset = borderWidth - halfGapWidth;\r\n var layoutOffsetUpper = upperHeight - halfGapWidth;\r\n node.setLayout({\r\n borderWidth: borderWidth,\r\n upperHeight: upperHeight,\r\n upperLabelHeight: upperLabelHeight\r\n }, true);\r\n width = mathMax$7(width - 2 * layoutOffset, 0);\r\n height = mathMax$7(height - layoutOffset - layoutOffsetUpper, 0);\r\n var totalArea = width * height;\r\n var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);\r\n if (!viewChildren.length) {\r\n return;\r\n }\r\n var rect = { x: layoutOffset, y: layoutOffsetUpper, width: width, height: height };\r\n var rowFixedLength = mathMin$7(width, height);\r\n var best = Infinity;\r\n var row = [];\r\n row.area = 0;\r\n for (var i = 0, len = viewChildren.length; i < len;) {\r\n var child = viewChildren[i];\r\n row.push(child);\r\n row.area += child.getLayout().area;\r\n var score = worst(row, rowFixedLength, options.squareRatio);\r\n if (score <= best) {\r\n i++;\r\n best = score;\r\n }\r\n else {\r\n row.area -= row.pop().getLayout().area;\r\n position(row, rowFixedLength, rect, halfGapWidth, false);\r\n rowFixedLength = mathMin$7(rect.width, rect.height);\r\n row.length = row.area = 0;\r\n best = Infinity;\r\n }\r\n }\r\n if (row.length) {\r\n position(row, rowFixedLength, rect, halfGapWidth, true);\r\n }\r\n if (!hideChildren) {\r\n var childrenVisibleMin = nodeModel.get('childrenVisibleMin');\r\n if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {\r\n hideChildren = true;\r\n }\r\n }\r\n for (var i = 0, len = viewChildren.length; i < len; i++) {\r\n squarify(viewChildren[i], options, hideChildren, depth + 1);\r\n }\r\n}\r\nfunction initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {\r\n var viewChildren = node.children || [];\r\n var orderBy = options.sort;\r\n orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null);\r\n var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth;\r\n if (hideChildren && !overLeafDepth) {\r\n return (node.viewChildren = []);\r\n }\r\n viewChildren = filter(viewChildren, function (child) {\r\n return !child.isRemoved();\r\n });\r\n sort$1(viewChildren, orderBy);\r\n var info = statistic(nodeModel, viewChildren, orderBy);\r\n if (info.sum === 0) {\r\n return (node.viewChildren = []);\r\n }\r\n info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);\r\n if (info.sum === 0) {\r\n return (node.viewChildren = []);\r\n }\r\n for (var i = 0, len = viewChildren.length; i < len; i++) {\r\n var area = viewChildren[i].getValue() / info.sum * totalArea;\r\n viewChildren[i].setLayout({\r\n area: area\r\n });\r\n }\r\n if (overLeafDepth) {\r\n viewChildren.length && node.setLayout({\r\n isLeafRoot: true\r\n }, true);\r\n viewChildren.length = 0;\r\n }\r\n node.viewChildren = viewChildren;\r\n node.setLayout({\r\n dataExtent: info.dataExtent\r\n }, true);\r\n return viewChildren;\r\n}\r\nfunction filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) {\r\n if (!orderBy) {\r\n return sum;\r\n }\r\n var visibleMin = nodeModel.get('visibleMin');\r\n var len = orderedChildren.length;\r\n var deletePoint = len;\r\n for (var i = len - 1; i >= 0; i--) {\r\n var value = orderedChildren[orderBy === 'asc' ? len - i - 1 : i].getValue();\r\n if (value / sum * totalArea < visibleMin) {\r\n deletePoint = i;\r\n sum -= value;\r\n }\r\n }\r\n orderBy === 'asc'\r\n ? orderedChildren.splice(0, len - deletePoint)\r\n : orderedChildren.splice(deletePoint, len - deletePoint);\r\n return sum;\r\n}\r\nfunction sort$1(viewChildren, orderBy) {\r\n if (orderBy) {\r\n viewChildren.sort(function (a, b) {\r\n var diff = orderBy === 'asc'\r\n ? a.getValue() - b.getValue()\r\n : b.getValue() - a.getValue();\r\n return diff === 0\r\n ? (orderBy === 'asc'\r\n ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex)\r\n : diff;\r\n });\r\n }\r\n return viewChildren;\r\n}\r\nfunction statistic(nodeModel, children, orderBy) {\r\n var sum = 0;\r\n for (var i = 0, len = children.length; i < len; i++) {\r\n sum += children[i].getValue();\r\n }\r\n var dimension = nodeModel.get('visualDimension');\r\n var dataExtent;\r\n if (!children || !children.length) {\r\n dataExtent = [NaN, NaN];\r\n }\r\n else if (dimension === 'value' && orderBy) {\r\n dataExtent = [\r\n children[children.length - 1].getValue(),\r\n children[0].getValue()\r\n ];\r\n orderBy === 'asc' && dataExtent.reverse();\r\n }\r\n else {\r\n dataExtent = [Infinity, -Infinity];\r\n each$5(children, function (child) {\r\n var value = child.getValue(dimension);\r\n value < dataExtent[0] && (dataExtent[0] = value);\r\n value > dataExtent[1] && (dataExtent[1] = value);\r\n });\r\n }\r\n return { sum: sum, dataExtent: dataExtent };\r\n}\r\nfunction worst(row, rowFixedLength, ratio) {\r\n var areaMax = 0;\r\n var areaMin = Infinity;\r\n for (var i = 0, area = void 0, len = row.length; i < len; i++) {\r\n area = row[i].getLayout().area;\r\n if (area) {\r\n area < areaMin && (areaMin = area);\r\n area > areaMax && (areaMax = area);\r\n }\r\n }\r\n var squareArea = row.area * row.area;\r\n var f = rowFixedLength * rowFixedLength * ratio;\r\n return squareArea\r\n ? mathMax$7((f * areaMax) / squareArea, squareArea / (f * areaMin))\r\n : Infinity;\r\n}\r\nfunction position(row, rowFixedLength, rect, halfGapWidth, flush) {\r\n var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;\r\n var idx1WhenH = 1 - idx0WhenH;\r\n var xy = ['x', 'y'];\r\n var wh = ['width', 'height'];\r\n var last = rect[xy[idx0WhenH]];\r\n var rowOtherLength = rowFixedLength\r\n ? row.area / rowFixedLength : 0;\r\n if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {\r\n rowOtherLength = rect[wh[idx1WhenH]];\r\n }\r\n for (var i = 0, rowLen = row.length; i < rowLen; i++) {\r\n var node = row[i];\r\n var nodeLayout = {};\r\n var step = rowOtherLength\r\n ? node.getLayout().area / rowOtherLength : 0;\r\n var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax$7(rowOtherLength - 2 * halfGapWidth, 0);\r\n var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;\r\n var modWH = (i === rowLen - 1 || remain < step) ? remain : step;\r\n var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax$7(modWH - 2 * halfGapWidth, 0);\r\n nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin$7(halfGapWidth, wh1 / 2);\r\n nodeLayout[xy[idx0WhenH]] = last + mathMin$7(halfGapWidth, wh0 / 2);\r\n last += modWH;\r\n node.setLayout(nodeLayout, true);\r\n }\r\n rect[xy[idx1WhenH]] += rowOtherLength;\r\n rect[wh[idx1WhenH]] -= rowOtherLength;\r\n}\r\nfunction estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {\r\n var currNode = (targetInfo || {}).node;\r\n var defaultSize = [containerWidth, containerHeight];\r\n if (!currNode || currNode === viewRoot) {\r\n return defaultSize;\r\n }\r\n var parent;\r\n var viewArea = containerWidth * containerHeight;\r\n var area = viewArea * seriesModel.option.zoomToNodeRatio;\r\n while (parent = currNode.parentNode) {\r\n var sum = 0;\r\n var siblings = parent.children;\r\n for (var i = 0, len = siblings.length; i < len; i++) {\r\n sum += siblings[i].getValue();\r\n }\r\n var currNodeValue = currNode.getValue();\r\n if (currNodeValue === 0) {\r\n return defaultSize;\r\n }\r\n area *= sum / currNodeValue;\r\n var parentModel = parent.getModel();\r\n var borderWidth = parentModel.get(PATH_BORDER_WIDTH);\r\n var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel));\r\n area += 4 * borderWidth * borderWidth\r\n + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);\r\n area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);\r\n currNode = parent;\r\n }\r\n area < viewArea && (area = viewArea);\r\n var scale = Math.pow(area / viewArea, 0.5);\r\n return [containerWidth * scale, containerHeight * scale];\r\n}\r\nfunction calculateRootPosition(layoutInfo, rootRect, targetInfo) {\r\n if (rootRect) {\r\n return { x: rootRect.x, y: rootRect.y };\r\n }\r\n var defaultPosition = { x: 0, y: 0 };\r\n if (!targetInfo) {\r\n return defaultPosition;\r\n }\r\n var targetNode = targetInfo.node;\r\n var layout = targetNode.getLayout();\r\n if (!layout) {\r\n return defaultPosition;\r\n }\r\n var targetCenter = [layout.width / 2, layout.height / 2];\r\n var node = targetNode;\r\n while (node) {\r\n var nodeLayout = node.getLayout();\r\n targetCenter[0] += nodeLayout.x;\r\n targetCenter[1] += nodeLayout.y;\r\n node = node.parentNode;\r\n }\r\n return {\r\n x: layoutInfo.width / 2 - targetCenter[0],\r\n y: layoutInfo.height / 2 - targetCenter[1]\r\n };\r\n}\r\nfunction prunning(node, clipRect, viewAbovePath, viewRoot, depth) {\r\n var nodeLayout = node.getLayout();\r\n var nodeInViewAbovePath = viewAbovePath[depth];\r\n var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;\r\n if ((nodeInViewAbovePath && !isAboveViewRoot)\r\n || (depth === viewAbovePath.length && node !== viewRoot)) {\r\n return;\r\n }\r\n node.setLayout({\r\n isInView: true,\r\n invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),\r\n isAboveViewRoot: isAboveViewRoot\r\n }, true);\r\n var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);\r\n each$5(node.viewChildren || [], function (child) {\r\n prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);\r\n });\r\n}\r\nfunction getUpperLabelHeight(model) {\r\n return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;\r\n}\n\nregisterVisual(treemapVisual);\r\nregisterLayout(treemapLayout);\n\nfunction generateNodeKey(id) {\r\n return '_EC_' + id;\r\n}\r\nvar Graph = (function () {\r\n function Graph(directed) {\r\n this.type = 'graph';\r\n this.nodes = [];\r\n this.edges = [];\r\n this._nodesMap = {};\r\n this._edgesMap = {};\r\n this._directed = directed || false;\r\n }\r\n Graph.prototype.isDirected = function () {\r\n return this._directed;\r\n };\r\n Graph.prototype.addNode = function (id, dataIndex) {\r\n id = id == null ? ('' + dataIndex) : ('' + id);\r\n var nodesMap = this._nodesMap;\r\n if (nodesMap[generateNodeKey(id)]) {\r\n if (__DEV__) {\r\n console.error('Graph nodes have duplicate name or id');\r\n }\r\n return;\r\n }\r\n var node = new GraphNode(id, dataIndex);\r\n node.hostGraph = this;\r\n this.nodes.push(node);\r\n nodesMap[generateNodeKey(id)] = node;\r\n return node;\r\n };\r\n Graph.prototype.getNodeByIndex = function (dataIndex) {\r\n var rawIdx = this.data.getRawIndex(dataIndex);\r\n return this.nodes[rawIdx];\r\n };\r\n Graph.prototype.getNodeById = function (id) {\r\n return this._nodesMap[generateNodeKey(id)];\r\n };\r\n Graph.prototype.addEdge = function (n1, n2, dataIndex) {\r\n var nodesMap = this._nodesMap;\r\n var edgesMap = this._edgesMap;\r\n if (typeof n1 === 'number') {\r\n n1 = this.nodes[n1];\r\n }\r\n if (typeof n2 === 'number') {\r\n n2 = this.nodes[n2];\r\n }\r\n if (!(n1 instanceof GraphNode)) {\r\n n1 = nodesMap[generateNodeKey(n1)];\r\n }\r\n if (!(n2 instanceof GraphNode)) {\r\n n2 = nodesMap[generateNodeKey(n2)];\r\n }\r\n if (!n1 || !n2) {\r\n return;\r\n }\r\n var key = n1.id + '-' + n2.id;\r\n var edge = new GraphEdge(n1, n2, dataIndex);\r\n edge.hostGraph = this;\r\n if (this._directed) {\r\n n1.outEdges.push(edge);\r\n n2.inEdges.push(edge);\r\n }\r\n n1.edges.push(edge);\r\n if (n1 !== n2) {\r\n n2.edges.push(edge);\r\n }\r\n this.edges.push(edge);\r\n edgesMap[key] = edge;\r\n return edge;\r\n };\r\n Graph.prototype.getEdgeByIndex = function (dataIndex) {\r\n var rawIdx = this.edgeData.getRawIndex(dataIndex);\r\n return this.edges[rawIdx];\r\n };\r\n Graph.prototype.getEdge = function (n1, n2) {\r\n if (n1 instanceof GraphNode) {\r\n n1 = n1.id;\r\n }\r\n if (n2 instanceof GraphNode) {\r\n n2 = n2.id;\r\n }\r\n var edgesMap = this._edgesMap;\r\n if (this._directed) {\r\n return edgesMap[n1 + '-' + n2];\r\n }\r\n else {\r\n return edgesMap[n1 + '-' + n2]\r\n || edgesMap[n2 + '-' + n1];\r\n }\r\n };\r\n Graph.prototype.eachNode = function (cb, context) {\r\n var nodes = this.nodes;\r\n var len = nodes.length;\r\n for (var i = 0; i < len; i++) {\r\n if (nodes[i].dataIndex >= 0) {\r\n cb.call(context, nodes[i], i);\r\n }\r\n }\r\n };\r\n Graph.prototype.eachEdge = function (cb, context) {\r\n var edges = this.edges;\r\n var len = edges.length;\r\n for (var i = 0; i < len; i++) {\r\n if (edges[i].dataIndex >= 0\r\n && edges[i].node1.dataIndex >= 0\r\n && edges[i].node2.dataIndex >= 0) {\r\n cb.call(context, edges[i], i);\r\n }\r\n }\r\n };\r\n Graph.prototype.breadthFirstTraverse = function (cb, startNode, direction, context) {\r\n if (!(startNode instanceof GraphNode)) {\r\n startNode = this._nodesMap[generateNodeKey(startNode)];\r\n }\r\n if (!startNode) {\r\n return;\r\n }\r\n var edgeType = direction === 'out'\r\n ? 'outEdges' : (direction === 'in' ? 'inEdges' : 'edges');\r\n for (var i = 0; i < this.nodes.length; i++) {\r\n this.nodes[i].__visited = false;\r\n }\r\n if (cb.call(context, startNode, null)) {\r\n return;\r\n }\r\n var queue = [startNode];\r\n while (queue.length) {\r\n var currentNode = queue.shift();\r\n var edges = currentNode[edgeType];\r\n for (var i = 0; i < edges.length; i++) {\r\n var e = edges[i];\r\n var otherNode = e.node1 === currentNode\r\n ? e.node2 : e.node1;\r\n if (!otherNode.__visited) {\r\n if (cb.call(context, otherNode, currentNode)) {\r\n return;\r\n }\r\n queue.push(otherNode);\r\n otherNode.__visited = true;\r\n }\r\n }\r\n }\r\n };\r\n Graph.prototype.update = function () {\r\n var data = this.data;\r\n var edgeData = this.edgeData;\r\n var nodes = this.nodes;\r\n var edges = this.edges;\r\n for (var i = 0, len = nodes.length; i < len; i++) {\r\n nodes[i].dataIndex = -1;\r\n }\r\n for (var i = 0, len = data.count(); i < len; i++) {\r\n nodes[data.getRawIndex(i)].dataIndex = i;\r\n }\r\n edgeData.filterSelf(function (idx) {\r\n var edge = edges[edgeData.getRawIndex(idx)];\r\n return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\r\n });\r\n for (var i = 0, len = edges.length; i < len; i++) {\r\n edges[i].dataIndex = -1;\r\n }\r\n for (var i = 0, len = edgeData.count(); i < len; i++) {\r\n edges[edgeData.getRawIndex(i)].dataIndex = i;\r\n }\r\n };\r\n Graph.prototype.clone = function () {\r\n var graph = new Graph(this._directed);\r\n var nodes = this.nodes;\r\n var edges = this.edges;\r\n for (var i = 0; i < nodes.length; i++) {\r\n graph.addNode(nodes[i].id, nodes[i].dataIndex);\r\n }\r\n for (var i = 0; i < edges.length; i++) {\r\n var e = edges[i];\r\n graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\r\n }\r\n return graph;\r\n };\r\n return Graph;\r\n}());\r\nvar GraphNode = (function () {\r\n function GraphNode(id, dataIndex) {\r\n this.inEdges = [];\r\n this.outEdges = [];\r\n this.edges = [];\r\n this.dataIndex = -1;\r\n this.id = id == null ? '' : id;\r\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\r\n }\r\n GraphNode.prototype.degree = function () {\r\n return this.edges.length;\r\n };\r\n GraphNode.prototype.inDegree = function () {\r\n return this.inEdges.length;\r\n };\r\n GraphNode.prototype.outDegree = function () {\r\n return this.outEdges.length;\r\n };\r\n GraphNode.prototype.getModel = function (path) {\r\n if (this.dataIndex < 0) {\r\n return;\r\n }\r\n var graph = this.hostGraph;\r\n var itemModel = graph.data.getItemModel(this.dataIndex);\r\n return itemModel.getModel(path);\r\n };\r\n GraphNode.prototype.getAdjacentDataIndices = function () {\r\n var dataIndices = {\r\n edge: [],\r\n node: []\r\n };\r\n for (var i = 0; i < this.edges.length; i++) {\r\n var adjacentEdge = this.edges[i];\r\n if (adjacentEdge.dataIndex < 0) {\r\n continue;\r\n }\r\n dataIndices.edge.push(adjacentEdge.dataIndex);\r\n dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex);\r\n }\r\n return dataIndices;\r\n };\r\n return GraphNode;\r\n}());\r\nvar GraphEdge = (function () {\r\n function GraphEdge(n1, n2, dataIndex) {\r\n this.dataIndex = -1;\r\n this.node1 = n1;\r\n this.node2 = n2;\r\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\r\n }\r\n GraphEdge.prototype.getModel = function (path) {\r\n if (this.dataIndex < 0) {\r\n return;\r\n }\r\n var graph = this.hostGraph;\r\n var itemModel = graph.edgeData.getItemModel(this.dataIndex);\r\n return itemModel.getModel(path);\r\n };\r\n GraphEdge.prototype.getAdjacentDataIndices = function () {\r\n return {\r\n edge: [this.dataIndex],\r\n node: [this.node1.dataIndex, this.node2.dataIndex]\r\n };\r\n };\r\n return GraphEdge;\r\n}());\r\nfunction createGraphDataProxyMixin(hostName, dataName) {\r\n return {\r\n getValue: function (dimension) {\r\n var data = this[hostName][dataName];\r\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\r\n },\r\n setVisual: function (key, value) {\r\n this.dataIndex >= 0\r\n && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\r\n },\r\n getVisual: function (key) {\r\n return this[hostName][dataName].getItemVisual(this.dataIndex, key);\r\n },\r\n setLayout: function (layout, merge) {\r\n this.dataIndex >= 0\r\n && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\r\n },\r\n getLayout: function () {\r\n return this[hostName][dataName].getItemLayout(this.dataIndex);\r\n },\r\n getGraphicEl: function () {\r\n return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\r\n },\r\n getRawIndex: function () {\r\n return this[hostName][dataName].getRawIndex(this.dataIndex);\r\n }\r\n };\r\n}\r\nmixin(GraphNode, createGraphDataProxyMixin('hostGraph', 'data'));\r\nmixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\n\nfunction createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) {\r\n var graph = new Graph(directed);\r\n for (var i = 0; i < nodes.length; i++) {\r\n graph.addNode(retrieve(nodes[i].id, nodes[i].name, i), i);\r\n }\r\n var linkNameList = [];\r\n var validEdges = [];\r\n var linkCount = 0;\r\n for (var i = 0; i < edges.length; i++) {\r\n var link = edges[i];\r\n var source = link.source;\r\n var target = link.target;\r\n if (graph.addEdge(source, target, linkCount)) {\r\n validEdges.push(link);\r\n linkNameList.push(retrieve(convertOptionIdName(link.id, null), source + ' > ' + target));\r\n linkCount++;\r\n }\r\n }\r\n var coordSys = seriesModel.get('coordinateSystem');\r\n var nodeData;\r\n if (coordSys === 'cartesian2d' || coordSys === 'polar') {\r\n nodeData = createListFromArray(nodes, seriesModel);\r\n }\r\n else {\r\n var coordSysCtor = CoordinateSystemManager.get(coordSys);\r\n var coordDimensions = coordSysCtor\r\n ? (coordSysCtor.dimensions || []) : [];\r\n if (indexOf(coordDimensions, 'value') < 0) {\r\n coordDimensions.concat(['value']);\r\n }\r\n var dimensionNames = createDimensions(nodes, {\r\n coordDimensions: coordDimensions\r\n });\r\n nodeData = new List(dimensionNames, seriesModel);\r\n nodeData.initData(nodes);\r\n }\r\n var edgeData = new List(['value'], seriesModel);\r\n edgeData.initData(validEdges, linkNameList);\r\n beforeLink && beforeLink(nodeData, edgeData);\r\n linkList({\r\n mainData: nodeData,\r\n struct: graph,\r\n structAttr: 'graph',\r\n datas: { node: nodeData, edge: edgeData },\r\n datasAttr: { node: 'data', edge: 'edgeData' }\r\n });\r\n graph.update();\r\n return graph;\r\n}\n\nvar KEY_DELIMITER = '-->';\r\nvar getAutoCurvenessParams = function (seriesModel) {\r\n return seriesModel.get('autoCurveness') || null;\r\n};\r\nvar createCurveness = function (seriesModel, appendLength) {\r\n var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\r\n var length = 20;\r\n var curvenessList = [];\r\n if (typeof autoCurvenessParmas === 'number') {\r\n length = autoCurvenessParmas;\r\n }\r\n else if (isArray(autoCurvenessParmas)) {\r\n seriesModel.__curvenessList = autoCurvenessParmas;\r\n return;\r\n }\r\n if (appendLength > length) {\r\n length = appendLength;\r\n }\r\n var len = length % 2 ? length + 2 : length + 3;\r\n curvenessList = [];\r\n for (var i = 0; i < len; i++) {\r\n curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\r\n }\r\n seriesModel.__curvenessList = curvenessList;\r\n};\r\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\r\n var source = [n1.id, n1.dataIndex].join('.');\r\n var target = [n2.id, n2.dataIndex].join('.');\r\n return [seriesModel.uid, source, target].join(KEY_DELIMITER);\r\n};\r\nvar getOppositeKey = function (key) {\r\n var keys = key.split(KEY_DELIMITER);\r\n return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\r\n};\r\nvar getEdgeFromMap = function (edge, seriesModel) {\r\n var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\r\n return seriesModel.__edgeMap[key];\r\n};\r\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\r\n var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\r\n var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\r\n return len + lenV;\r\n};\r\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\r\n var edgeMap = seriesModel.__edgeMap;\r\n return edgeMap[key] ? edgeMap[key].length : 0;\r\n};\r\nfunction initCurvenessList(seriesModel) {\r\n if (!getAutoCurvenessParams(seriesModel)) {\r\n return;\r\n }\r\n seriesModel.__curvenessList = [];\r\n seriesModel.__edgeMap = {};\r\n createCurveness(seriesModel);\r\n}\r\nfunction createEdgeMapForCurveness(n1, n2, seriesModel, index) {\r\n if (!getAutoCurvenessParams(seriesModel)) {\r\n return;\r\n }\r\n var key = getKeyOfEdges(n1, n2, seriesModel);\r\n var edgeMap = seriesModel.__edgeMap;\r\n var oppositeEdges = edgeMap[getOppositeKey(key)];\r\n if (edgeMap[key] && !oppositeEdges) {\r\n edgeMap[key].isForward = true;\r\n }\r\n else if (oppositeEdges && edgeMap[key]) {\r\n oppositeEdges.isForward = true;\r\n edgeMap[key].isForward = false;\r\n }\r\n edgeMap[key] = edgeMap[key] || [];\r\n edgeMap[key].push(index);\r\n}\r\nfunction getCurvenessForEdge(edge, seriesModel, index, needReverse) {\r\n var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\r\n var isArrayParam = isArray(autoCurvenessParams);\r\n if (!autoCurvenessParams) {\r\n return null;\r\n }\r\n var edgeArray = getEdgeFromMap(edge, seriesModel);\r\n if (!edgeArray) {\r\n return null;\r\n }\r\n var edgeIndex = -1;\r\n for (var i = 0; i < edgeArray.length; i++) {\r\n if (edgeArray[i] === index) {\r\n edgeIndex = i;\r\n break;\r\n }\r\n }\r\n var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\r\n createCurveness(seriesModel, totalLen);\r\n edge.lineStyle = edge.lineStyle || {};\r\n var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\r\n var curvenessList = seriesModel.__curvenessList;\r\n var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\r\n if (!edgeArray.isForward) {\r\n var oppositeKey = getOppositeKey(curKey);\r\n var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\r\n var resValue = curvenessList[edgeIndex + len + parityCorrection];\r\n if (needReverse) {\r\n if (isArrayParam) {\r\n if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\r\n return (len + parityCorrection) % 2 ? resValue : -resValue;\r\n }\r\n else {\r\n return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\r\n }\r\n }\r\n else {\r\n return (len + parityCorrection) % 2 ? resValue : -resValue;\r\n }\r\n }\r\n else {\r\n return curvenessList[edgeIndex + len + parityCorrection];\r\n }\r\n }\r\n else {\r\n return curvenessList[parityCorrection + edgeIndex];\r\n }\r\n}\n\nvar GraphSeriesModel = (function (_super) {\r\n __extends(GraphSeriesModel, _super);\r\n function GraphSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = GraphSeriesModel.type;\r\n _this.hasSymbolVisual = true;\r\n return _this;\r\n }\r\n GraphSeriesModel.prototype.init = function (option) {\r\n _super.prototype.init.apply(this, arguments);\r\n var self = this;\r\n function getCategoriesData() {\r\n return self._categoriesData;\r\n }\r\n this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData);\r\n this.fillDataTextStyle(option.edges || option.links);\r\n this._updateCategoriesData();\r\n };\r\n GraphSeriesModel.prototype.mergeOption = function (option) {\r\n _super.prototype.mergeOption.apply(this, arguments);\r\n this.fillDataTextStyle(option.edges || option.links);\r\n this._updateCategoriesData();\r\n };\r\n GraphSeriesModel.prototype.mergeDefaultAndTheme = function (option) {\r\n _super.prototype.mergeDefaultAndTheme.apply(this, arguments);\r\n defaultEmphasis(option, 'edgeLabel', ['show']);\r\n };\r\n GraphSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n var edges = option.edges || option.links || [];\r\n var nodes = option.data || option.nodes || [];\r\n var self = this;\r\n if (nodes && edges) {\r\n initCurvenessList(this);\r\n var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);\r\n each(graph.edges, function (edge) {\r\n createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);\r\n }, this);\r\n return graph.data;\r\n }\r\n function beforeLink(nodeData, edgeData) {\r\n nodeData.wrapMethod('getItemModel', function (model) {\r\n var categoriesModels = self._categoriesModels;\r\n var categoryIdx = model.getShallow('category');\r\n var categoryModel = categoriesModels[categoryIdx];\r\n if (categoryModel) {\r\n categoryModel.parentModel = model.parentModel;\r\n model.parentModel = categoryModel;\r\n }\r\n return model;\r\n });\r\n var oldGetModel = Model.prototype.getModel;\r\n function newGetModel(path, parentModel) {\r\n var model = oldGetModel.call(this, path, parentModel);\r\n model.resolveParentPath = resolveParentPath;\r\n return model;\r\n }\r\n edgeData.wrapMethod('getItemModel', function (model) {\r\n model.resolveParentPath = resolveParentPath;\r\n model.getModel = newGetModel;\r\n return model;\r\n });\r\n function resolveParentPath(pathArr) {\r\n if (pathArr && (pathArr[0] === 'label' || pathArr[1] === 'label')) {\r\n var newPathArr = pathArr.slice();\r\n if (pathArr[0] === 'label') {\r\n newPathArr[0] = 'edgeLabel';\r\n }\r\n else if (pathArr[1] === 'label') {\r\n newPathArr[1] = 'edgeLabel';\r\n }\r\n return newPathArr;\r\n }\r\n return pathArr;\r\n }\r\n }\r\n };\r\n GraphSeriesModel.prototype.getGraph = function () {\r\n return this.getData().graph;\r\n };\r\n GraphSeriesModel.prototype.getEdgeData = function () {\r\n return this.getGraph().edgeData;\r\n };\r\n GraphSeriesModel.prototype.getCategoriesData = function () {\r\n return this._categoriesData;\r\n };\r\n GraphSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n if (dataType === 'edge') {\r\n var nodeData = this.getData();\r\n var params = this.getDataParams(dataIndex, dataType);\r\n var edge = nodeData.graph.getEdgeByIndex(dataIndex);\r\n var sourceName = nodeData.getName(edge.node1.dataIndex);\r\n var targetName = nodeData.getName(edge.node2.dataIndex);\r\n var nameArr = [];\r\n sourceName != null && nameArr.push(sourceName);\r\n targetName != null && nameArr.push(targetName);\r\n return createTooltipMarkup('nameValue', {\r\n name: nameArr.join(' > '),\r\n value: params.value,\r\n noValue: params.value == null\r\n });\r\n }\r\n var nodeMarkup = defaultSeriesFormatTooltip({\r\n series: this,\r\n dataIndex: dataIndex,\r\n multipleSeries: multipleSeries\r\n });\r\n return nodeMarkup;\r\n };\r\n GraphSeriesModel.prototype._updateCategoriesData = function () {\r\n var categories = map(this.option.categories || [], function (category) {\r\n return category.value != null ? category : extend({\r\n value: 0\r\n }, category);\r\n });\r\n var categoriesData = new List(['value'], this);\r\n categoriesData.initData(categories);\r\n this._categoriesData = categoriesData;\r\n this._categoriesModels = categoriesData.mapArray(function (idx) {\r\n return categoriesData.getItemModel(idx);\r\n });\r\n };\r\n GraphSeriesModel.prototype.setZoom = function (zoom) {\r\n this.option.zoom = zoom;\r\n };\r\n GraphSeriesModel.prototype.setCenter = function (center) {\r\n this.option.center = center;\r\n };\r\n GraphSeriesModel.prototype.isAnimationEnabled = function () {\r\n return _super.prototype.isAnimationEnabled.call(this)\r\n && !(this.get('layout') === 'force' && this.get(['force', 'layoutAnimation']));\r\n };\r\n GraphSeriesModel.type = 'series.graph';\r\n GraphSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'view',\r\n legendHoverLink: true,\r\n layout: null,\r\n focusNodeAdjacency: false,\r\n circular: {\r\n rotateLabel: false\r\n },\r\n force: {\r\n initLayout: null,\r\n repulsion: [0, 50],\r\n gravity: 0.1,\r\n friction: 0.6,\r\n edgeLength: 30,\r\n layoutAnimation: true\r\n },\r\n left: 'center',\r\n top: 'center',\r\n symbol: 'circle',\r\n symbolSize: 10,\r\n edgeSymbol: ['none', 'none'],\r\n edgeSymbolSize: 10,\r\n edgeLabel: {\r\n position: 'middle',\r\n distance: 5\r\n },\r\n draggable: false,\r\n roam: false,\r\n center: null,\r\n zoom: 1,\r\n nodeScaleRatio: 0.6,\r\n label: {\r\n show: false,\r\n formatter: '{b}'\r\n },\r\n itemStyle: {},\r\n lineStyle: {\r\n color: '#aaa',\r\n width: 1,\r\n opacity: 0.5\r\n },\r\n emphasis: {\r\n scale: true,\r\n label: {\r\n show: true\r\n }\r\n },\r\n select: {\r\n itemStyle: {\r\n borderColor: '#212121'\r\n }\r\n }\r\n };\r\n return GraphSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(GraphSeriesModel);\n\nvar straightLineProto = Line.prototype;\r\nvar bezierCurveProto = BezierCurve.prototype;\r\nvar StraightLineShape = (function () {\r\n function StraightLineShape() {\r\n this.x1 = 0;\r\n this.y1 = 0;\r\n this.x2 = 0;\r\n this.y2 = 0;\r\n this.percent = 1;\r\n }\r\n return StraightLineShape;\r\n}());\r\nvar CurveShape = (function (_super) {\r\n __extends(CurveShape, _super);\r\n function CurveShape() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return CurveShape;\r\n}(StraightLineShape));\r\nfunction isStraightLine(shape) {\r\n return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\r\n}\r\nvar ECLinePath = (function (_super) {\r\n __extends(ECLinePath, _super);\r\n function ECLinePath(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'ec-line';\r\n return _this;\r\n }\r\n ECLinePath.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n ECLinePath.prototype.getDefaultShape = function () {\r\n return new StraightLineShape();\r\n };\r\n ECLinePath.prototype.buildPath = function (ctx, shape) {\r\n if (isStraightLine(shape)) {\r\n straightLineProto.buildPath.call(this, ctx, shape);\r\n }\r\n else {\r\n bezierCurveProto.buildPath.call(this, ctx, shape);\r\n }\r\n };\r\n ECLinePath.prototype.pointAt = function (t) {\r\n if (isStraightLine(this.shape)) {\r\n return straightLineProto.pointAt.call(this, t);\r\n }\r\n else {\r\n return bezierCurveProto.pointAt.call(this, t);\r\n }\r\n };\r\n ECLinePath.prototype.tangentAt = function (t) {\r\n var shape = this.shape;\r\n var p = isStraightLine(shape)\r\n ? [shape.x2 - shape.x1, shape.y2 - shape.y1]\r\n : bezierCurveProto.tangentAt.call(this, t);\r\n return normalize(p, p);\r\n };\r\n return ECLinePath;\r\n}(Path));\n\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\r\nfunction makeSymbolTypeKey(symbolCategory) {\r\n return '_' + symbolCategory + 'Type';\r\n}\r\nfunction createSymbol$1(name, lineData, idx) {\r\n var symbolType = lineData.getItemVisual(idx, name);\r\n if (!symbolType || symbolType === 'none') {\r\n return;\r\n }\r\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\r\n var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\r\n var symbolSizeArr = isArray(symbolSize)\r\n ? symbolSize : [symbolSize, symbolSize];\r\n var symbolPath = createSymbol(symbolType, -symbolSizeArr[0] / 2, -symbolSizeArr[1] / 2, symbolSizeArr[0], symbolSizeArr[1]);\r\n symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate)\r\n ? void 0\r\n : +symbolRotate * Math.PI / 180 || 0;\r\n symbolPath.name = name;\r\n return symbolPath;\r\n}\r\nfunction createLine(points) {\r\n var line = new ECLinePath({\r\n name: 'line',\r\n subPixelOptimize: true\r\n });\r\n setLinePoints(line.shape, points);\r\n return line;\r\n}\r\nfunction setLinePoints(targetShape, points) {\r\n targetShape.x1 = points[0][0];\r\n targetShape.y1 = points[0][1];\r\n targetShape.x2 = points[1][0];\r\n targetShape.y2 = points[1][1];\r\n targetShape.percent = 1;\r\n var cp1 = points[2];\r\n if (cp1) {\r\n targetShape.cpx1 = cp1[0];\r\n targetShape.cpy1 = cp1[1];\r\n }\r\n else {\r\n targetShape.cpx1 = NaN;\r\n targetShape.cpy1 = NaN;\r\n }\r\n}\r\nvar Line$1 = (function (_super) {\r\n __extends(Line, _super);\r\n function Line(lineData, idx, seriesScope) {\r\n var _this = _super.call(this) || this;\r\n _this._createLine(lineData, idx, seriesScope);\r\n return _this;\r\n }\r\n Line.prototype._createLine = function (lineData, idx, seriesScope) {\r\n var seriesModel = lineData.hostModel;\r\n var linePoints = lineData.getItemLayout(idx);\r\n var line = createLine(linePoints);\r\n line.shape.percent = 0;\r\n initProps(line, {\r\n shape: {\r\n percent: 1\r\n }\r\n }, seriesModel, idx);\r\n this.add(line);\r\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n var symbol = createSymbol$1(symbolCategory, lineData, idx);\r\n this.add(symbol);\r\n this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\r\n }, this);\r\n this._updateCommonStl(lineData, idx, seriesScope);\r\n };\r\n Line.prototype.updateData = function (lineData, idx, seriesScope) {\r\n var seriesModel = lineData.hostModel;\r\n var line = this.childOfName('line');\r\n var linePoints = lineData.getItemLayout(idx);\r\n var target = {\r\n shape: {}\r\n };\r\n setLinePoints(target.shape, linePoints);\r\n updateProps(line, target, seriesModel, idx);\r\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n var symbolType = lineData.getItemVisual(idx, symbolCategory);\r\n var key = makeSymbolTypeKey(symbolCategory);\r\n if (this[key] !== symbolType) {\r\n this.remove(this.childOfName(symbolCategory));\r\n var symbol = createSymbol$1(symbolCategory, lineData, idx);\r\n this.add(symbol);\r\n }\r\n this[key] = symbolType;\r\n }, this);\r\n this._updateCommonStl(lineData, idx, seriesScope);\r\n };\r\n Line.prototype.getLinePath = function () {\r\n return this.childAt(0);\r\n };\r\n Line.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\r\n var seriesModel = lineData.hostModel;\r\n var line = this.childOfName('line');\r\n var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;\r\n var blurLineStyle = seriesScope && seriesScope.blurLineStyle;\r\n var selectLineStyle = seriesScope && seriesScope.selectLineStyle;\r\n var labelStatesModels = seriesScope && seriesScope.labelStatesModels;\r\n if (!seriesScope || lineData.hasItemOption) {\r\n var itemModel = lineData.getItemModel(idx);\r\n emphasisLineStyle = itemModel.getModel(['emphasis', 'lineStyle']).getLineStyle();\r\n blurLineStyle = itemModel.getModel(['blur', 'lineStyle']).getLineStyle();\r\n selectLineStyle = itemModel.getModel(['select', 'lineStyle']).getLineStyle();\r\n labelStatesModels = getLabelStatesModels(itemModel);\r\n }\r\n var lineStyle = lineData.getItemVisual(idx, 'style');\r\n var visualColor = lineStyle.stroke;\r\n line.useStyle(lineStyle);\r\n line.style.fill = null;\r\n line.style.strokeNoScale = true;\r\n line.ensureState('emphasis').style = emphasisLineStyle;\r\n line.ensureState('blur').style = blurLineStyle;\r\n line.ensureState('select').style = selectLineStyle;\r\n each(SYMBOL_CATEGORIES, function (symbolCategory) {\r\n var symbol = this.childOfName(symbolCategory);\r\n if (symbol) {\r\n symbol.setColor(visualColor);\r\n symbol.style.opacity = lineStyle.opacity;\r\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n var stateName = SPECIAL_STATES[i];\r\n var lineState = line.getState(stateName);\r\n if (lineState) {\r\n var lineStateStyle = lineState.style || {};\r\n var state = symbol.ensureState(stateName);\r\n var stateStyle = state.style || (state.style = {});\r\n if (lineStateStyle.stroke != null) {\r\n stateStyle[symbol.__isEmptyBrush ? 'stroke' : 'fill'] = lineStateStyle.stroke;\r\n }\r\n if (lineStateStyle.opacity != null) {\r\n stateStyle.opacity = lineStateStyle.opacity;\r\n }\r\n }\r\n }\r\n symbol.markRedraw();\r\n }\r\n }, this);\r\n var rawVal = seriesModel.getRawValue(idx);\r\n setLabelStyle(this, labelStatesModels, {\r\n labelDataIndex: idx,\r\n labelFetcher: {\r\n getFormattedLabel: function (dataIndex, stateName) {\r\n return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType);\r\n }\r\n },\r\n inheritColor: visualColor || '#000',\r\n defaultOpacity: lineStyle.opacity,\r\n defaultText: (rawVal == null\r\n ? lineData.getName(idx)\r\n : isFinite(rawVal)\r\n ? round$1(rawVal)\r\n : rawVal) + ''\r\n });\r\n var label = this.getTextContent();\r\n if (label) {\r\n var labelNormalModel = labelStatesModels.normal;\r\n label.__align = label.style.align;\r\n label.__verticalAlign = label.style.verticalAlign;\r\n label.__position = labelNormalModel.get('position') || 'middle';\r\n var distance = labelNormalModel.get('distance');\r\n if (!isArray(distance)) {\r\n distance = [distance, distance];\r\n }\r\n label.__labelDistance = distance;\r\n }\r\n this.setTextConfig({\r\n position: null,\r\n local: true,\r\n inside: false\r\n });\r\n enableHoverEmphasis(this);\r\n };\r\n Line.prototype.highlight = function () {\r\n enterEmphasis(this);\r\n };\r\n Line.prototype.downplay = function () {\r\n leaveEmphasis(this);\r\n };\r\n Line.prototype.updateLayout = function (lineData, idx) {\r\n this.setLinePoints(lineData.getItemLayout(idx));\r\n };\r\n Line.prototype.setLinePoints = function (points) {\r\n var linePath = this.childOfName('line');\r\n setLinePoints(linePath.shape, points);\r\n linePath.dirty();\r\n };\r\n Line.prototype.beforeUpdate = function () {\r\n var lineGroup = this;\r\n var symbolFrom = lineGroup.childOfName('fromSymbol');\r\n var symbolTo = lineGroup.childOfName('toSymbol');\r\n var label = lineGroup.getTextContent();\r\n if (!symbolFrom && !symbolTo && (!label || label.ignore)) {\r\n return;\r\n }\r\n var invScale = 1;\r\n var parentNode = this.parent;\r\n while (parentNode) {\r\n if (parentNode.scaleX) {\r\n invScale /= parentNode.scaleX;\r\n }\r\n parentNode = parentNode.parent;\r\n }\r\n var line = lineGroup.childOfName('line');\r\n if (!this.__dirty && !line.__dirty) {\r\n return;\r\n }\r\n var percent = line.shape.percent;\r\n var fromPos = line.pointAt(0);\r\n var toPos = line.pointAt(percent);\r\n var d = sub([], toPos, fromPos);\r\n normalize(d, d);\r\n function setSymbolRotation(symbol, percent) {\r\n var specifiedRotation = symbol.__specifiedRotation;\r\n if (specifiedRotation == null) {\r\n var tangent = line.tangentAt(percent);\r\n symbol.attr('rotation', (percent === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\r\n }\r\n else {\r\n symbol.attr('rotation', specifiedRotation);\r\n }\r\n }\r\n if (symbolFrom) {\r\n symbolFrom.setPosition(fromPos);\r\n setSymbolRotation(symbolFrom, 0);\r\n symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent;\r\n symbolFrom.markRedraw();\r\n }\r\n if (symbolTo) {\r\n symbolTo.setPosition(toPos);\r\n setSymbolRotation(symbolTo, 1);\r\n symbolTo.scaleX = symbolTo.scaleY = invScale * percent;\r\n symbolTo.markRedraw();\r\n }\r\n if (label && !label.ignore) {\r\n label.x = label.y = 0;\r\n label.originX = label.originY = 0;\r\n var textAlign = void 0;\r\n var textVerticalAlign = void 0;\r\n var distance = label.__labelDistance;\r\n var distanceX = distance[0] * invScale;\r\n var distanceY = distance[1] * invScale;\r\n var halfPercent = percent / 2;\r\n var tangent = line.tangentAt(halfPercent);\r\n var n = [tangent[1], -tangent[0]];\r\n var cp = line.pointAt(halfPercent);\r\n if (n[1] > 0) {\r\n n[0] = -n[0];\r\n n[1] = -n[1];\r\n }\r\n var dir = tangent[0] < 0 ? -1 : 1;\r\n if (label.__position !== 'start' && label.__position !== 'end') {\r\n var rotation = -Math.atan2(tangent[1], tangent[0]);\r\n if (toPos[0] < fromPos[0]) {\r\n rotation = Math.PI + rotation;\r\n }\r\n label.rotation = rotation;\r\n }\r\n var dy = void 0;\r\n switch (label.__position) {\r\n case 'insideStartTop':\r\n case 'insideMiddleTop':\r\n case 'insideEndTop':\r\n case 'middle':\r\n dy = -distanceY;\r\n textVerticalAlign = 'bottom';\r\n break;\r\n case 'insideStartBottom':\r\n case 'insideMiddleBottom':\r\n case 'insideEndBottom':\r\n dy = distanceY;\r\n textVerticalAlign = 'top';\r\n break;\r\n default:\r\n dy = 0;\r\n textVerticalAlign = 'middle';\r\n }\r\n switch (label.__position) {\r\n case 'end':\r\n label.x = d[0] * distanceX + toPos[0];\r\n label.y = d[1] * distanceY + toPos[1];\r\n textAlign = d[0] > 0.8 ? 'left' : (d[0] < -0.8 ? 'right' : 'center');\r\n textVerticalAlign = d[1] > 0.8 ? 'top' : (d[1] < -0.8 ? 'bottom' : 'middle');\r\n break;\r\n case 'start':\r\n label.x = -d[0] * distanceX + fromPos[0];\r\n label.y = -d[1] * distanceY + fromPos[1];\r\n textAlign = d[0] > 0.8 ? 'right' : (d[0] < -0.8 ? 'left' : 'center');\r\n textVerticalAlign = d[1] > 0.8 ? 'bottom' : (d[1] < -0.8 ? 'top' : 'middle');\r\n break;\r\n case 'insideStartTop':\r\n case 'insideStart':\r\n case 'insideStartBottom':\r\n label.x = distanceX * dir + fromPos[0];\r\n label.y = fromPos[1] + dy;\r\n textAlign = tangent[0] < 0 ? 'right' : 'left';\r\n label.originX = -distanceX * dir;\r\n label.originY = -dy;\r\n break;\r\n case 'insideMiddleTop':\r\n case 'insideMiddle':\r\n case 'insideMiddleBottom':\r\n case 'middle':\r\n label.x = cp[0];\r\n label.y = cp[1] + dy;\r\n textAlign = 'center';\r\n label.originY = -dy;\r\n break;\r\n case 'insideEndTop':\r\n case 'insideEnd':\r\n case 'insideEndBottom':\r\n label.x = -distanceX * dir + toPos[0];\r\n label.y = toPos[1] + dy;\r\n textAlign = tangent[0] >= 0 ? 'right' : 'left';\r\n label.originX = distanceX * dir;\r\n label.originY = -dy;\r\n break;\r\n }\r\n label.scaleX = label.scaleY = invScale;\r\n label.setStyle({\r\n verticalAlign: label.__verticalAlign || textVerticalAlign,\r\n align: label.__align || textAlign\r\n });\r\n }\r\n };\r\n return Line;\r\n}(Group));\n\nvar LineDraw = (function () {\r\n function LineDraw(LineCtor) {\r\n this.group = new Group();\r\n this._LineCtor = LineCtor || Line$1;\r\n }\r\n LineDraw.prototype.isPersistent = function () {\r\n return true;\r\n };\r\n LineDraw.prototype.updateData = function (lineData) {\r\n var _this = this;\r\n var lineDraw = this;\r\n var group = lineDraw.group;\r\n var oldLineData = lineDraw._lineData;\r\n lineDraw._lineData = lineData;\r\n if (!oldLineData) {\r\n group.removeAll();\r\n }\r\n var seriesScope = makeSeriesScope$1(lineData);\r\n lineData.diff(oldLineData)\r\n .add(function (idx) {\r\n _this._doAdd(lineData, idx, seriesScope);\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope);\r\n })\r\n .remove(function (idx) {\r\n group.remove(oldLineData.getItemGraphicEl(idx));\r\n })\r\n .execute();\r\n };\r\n LineDraw.prototype.updateLayout = function () {\r\n var lineData = this._lineData;\r\n if (!lineData) {\r\n return;\r\n }\r\n lineData.eachItemGraphicEl(function (el, idx) {\r\n el.updateLayout(lineData, idx);\r\n }, this);\r\n };\r\n LineDraw.prototype.incrementalPrepareUpdate = function (lineData) {\r\n this._seriesScope = makeSeriesScope$1(lineData);\r\n this._lineData = null;\r\n this.group.removeAll();\r\n };\r\n LineDraw.prototype.incrementalUpdate = function (taskParams, lineData) {\r\n function updateIncrementalAndHover(el) {\r\n if (!el.isGroup && !isEffectObject(el)) {\r\n el.incremental = true;\r\n el.ensureState('emphasis').hoverLayer = true;\r\n }\r\n }\r\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\r\n var itemLayout = lineData.getItemLayout(idx);\r\n if (lineNeedsDraw(itemLayout)) {\r\n var el = new this._LineCtor(lineData, idx, this._seriesScope);\r\n el.traverse(updateIncrementalAndHover);\r\n this.group.add(el);\r\n lineData.setItemGraphicEl(idx, el);\r\n }\r\n }\r\n };\r\n LineDraw.prototype.remove = function () {\r\n this.group.removeAll();\r\n };\r\n LineDraw.prototype._doAdd = function (lineData, idx, seriesScope) {\r\n var itemLayout = lineData.getItemLayout(idx);\r\n if (!lineNeedsDraw(itemLayout)) {\r\n return;\r\n }\r\n var el = new this._LineCtor(lineData, idx, seriesScope);\r\n lineData.setItemGraphicEl(idx, el);\r\n this.group.add(el);\r\n };\r\n LineDraw.prototype._doUpdate = function (oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\r\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\r\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\r\n this.group.remove(itemEl);\r\n return;\r\n }\r\n if (!itemEl) {\r\n itemEl = new this._LineCtor(newLineData, newIdx, seriesScope);\r\n }\r\n else {\r\n itemEl.updateData(newLineData, newIdx, seriesScope);\r\n }\r\n newLineData.setItemGraphicEl(newIdx, itemEl);\r\n this.group.add(itemEl);\r\n };\r\n return LineDraw;\r\n}());\r\nfunction isEffectObject(el) {\r\n return el.animators && el.animators.length > 0;\r\n}\r\nfunction makeSeriesScope$1(lineData) {\r\n var hostModel = lineData.hostModel;\r\n return {\r\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\r\n emphasisLineStyle: hostModel.getModel(['emphasis', 'lineStyle']).getLineStyle(),\r\n blurLineStyle: hostModel.getModel(['blur', 'lineStyle']).getLineStyle(),\r\n selectLineStyle: hostModel.getModel(['select', 'lineStyle']).getLineStyle(),\r\n labelStatesModels: getLabelStatesModels(hostModel)\r\n };\r\n}\r\nfunction isPointNaN(pt) {\r\n return isNaN(pt[0]) || isNaN(pt[1]);\r\n}\r\nfunction lineNeedsDraw(pts) {\r\n return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\r\n}\n\nfunction getNodeGlobalScale(seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys.type !== 'view') {\r\n return 1;\r\n }\r\n var nodeScaleRatio = seriesModel.option.nodeScaleRatio;\r\n var groupZoom = coordSys.scaleX;\r\n var roamZoom = coordSys.getZoom();\r\n var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\r\n return nodeScale / groupZoom;\r\n}\r\nfunction getSymbolSize(node) {\r\n var symbolSize = node.getVisual('symbolSize');\r\n if (symbolSize instanceof Array) {\r\n symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\r\n }\r\n return +symbolSize;\r\n}\n\nvar v1 = [];\r\nvar v2 = [];\r\nvar v3 = [];\r\nvar quadraticAt$1 = quadraticAt;\r\nvar v2DistSquare = distSquare;\r\nvar mathAbs$2 = Math.abs;\r\nfunction intersectCurveCircle(curvePoints, center, radius) {\r\n var p0 = curvePoints[0];\r\n var p1 = curvePoints[1];\r\n var p2 = curvePoints[2];\r\n var d = Infinity;\r\n var t;\r\n var radiusSquare = radius * radius;\r\n var interval = 0.1;\r\n for (var _t = 0.1; _t <= 0.9; _t += 0.1) {\r\n v1[0] = quadraticAt$1(p0[0], p1[0], p2[0], _t);\r\n v1[1] = quadraticAt$1(p0[1], p1[1], p2[1], _t);\r\n var diff = mathAbs$2(v2DistSquare(v1, center) - radiusSquare);\r\n if (diff < d) {\r\n d = diff;\r\n t = _t;\r\n }\r\n }\r\n for (var i = 0; i < 32; i++) {\r\n var next = t + interval;\r\n v2[0] = quadraticAt$1(p0[0], p1[0], p2[0], t);\r\n v2[1] = quadraticAt$1(p0[1], p1[1], p2[1], t);\r\n v3[0] = quadraticAt$1(p0[0], p1[0], p2[0], next);\r\n v3[1] = quadraticAt$1(p0[1], p1[1], p2[1], next);\r\n var diff = v2DistSquare(v2, center) - radiusSquare;\r\n if (mathAbs$2(diff) < 1e-2) {\r\n break;\r\n }\r\n var nextDiff = v2DistSquare(v3, center) - radiusSquare;\r\n interval /= 2;\r\n if (diff < 0) {\r\n if (nextDiff >= 0) {\r\n t = t + interval;\r\n }\r\n else {\r\n t = t - interval;\r\n }\r\n }\r\n else {\r\n if (nextDiff >= 0) {\r\n t = t - interval;\r\n }\r\n else {\r\n t = t + interval;\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\nfunction adjustEdge(graph, scale) {\r\n var tmp0 = [];\r\n var quadraticSubdivide$1 = quadraticSubdivide;\r\n var pts = [[], [], []];\r\n var pts2 = [[], []];\r\n var v = [];\r\n scale /= 2;\r\n graph.eachEdge(function (edge, idx) {\r\n var linePoints = edge.getLayout();\r\n var fromSymbol = edge.getVisual('fromSymbol');\r\n var toSymbol = edge.getVisual('toSymbol');\r\n if (!linePoints.__original) {\r\n linePoints.__original = [\r\n clone$1(linePoints[0]),\r\n clone$1(linePoints[1])\r\n ];\r\n if (linePoints[2]) {\r\n linePoints.__original.push(clone$1(linePoints[2]));\r\n }\r\n }\r\n var originalPoints = linePoints.__original;\r\n if (linePoints[2] != null) {\r\n copy(pts[0], originalPoints[0]);\r\n copy(pts[1], originalPoints[2]);\r\n copy(pts[2], originalPoints[1]);\r\n if (fromSymbol && fromSymbol !== 'none') {\r\n var symbolSize = getSymbolSize(edge.node1);\r\n var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale);\r\n quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\r\n pts[0][0] = tmp0[3];\r\n pts[1][0] = tmp0[4];\r\n quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\r\n pts[0][1] = tmp0[3];\r\n pts[1][1] = tmp0[4];\r\n }\r\n if (toSymbol && toSymbol !== 'none') {\r\n var symbolSize = getSymbolSize(edge.node2);\r\n var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale);\r\n quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\r\n pts[1][0] = tmp0[1];\r\n pts[2][0] = tmp0[2];\r\n quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\r\n pts[1][1] = tmp0[1];\r\n pts[2][1] = tmp0[2];\r\n }\r\n copy(linePoints[0], pts[0]);\r\n copy(linePoints[1], pts[2]);\r\n copy(linePoints[2], pts[1]);\r\n }\r\n else {\r\n copy(pts2[0], originalPoints[0]);\r\n copy(pts2[1], originalPoints[1]);\r\n sub(v, pts2[1], pts2[0]);\r\n normalize(v, v);\r\n if (fromSymbol && fromSymbol !== 'none') {\r\n var symbolSize = getSymbolSize(edge.node1);\r\n scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale);\r\n }\r\n if (toSymbol && toSymbol !== 'none') {\r\n var symbolSize = getSymbolSize(edge.node2);\r\n scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale);\r\n }\r\n copy(linePoints[0], pts2[0]);\r\n copy(linePoints[1], pts2[1]);\r\n }\r\n });\r\n}\n\nfunction isViewCoordSys(coordSys) {\r\n return coordSys.type === 'view';\r\n}\r\nvar GraphView = (function (_super) {\r\n __extends(GraphView, _super);\r\n function GraphView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = GraphView.type;\r\n return _this;\r\n }\r\n GraphView.prototype.init = function (ecModel, api) {\r\n var symbolDraw = new SymbolDraw();\r\n var lineDraw = new LineDraw();\r\n var group = this.group;\r\n this._controller = new RoamController(api.getZr());\r\n this._controllerHost = {\r\n target: group\r\n };\r\n group.add(symbolDraw.group);\r\n group.add(lineDraw.group);\r\n this._symbolDraw = symbolDraw;\r\n this._lineDraw = lineDraw;\r\n this._firstRender = true;\r\n };\r\n GraphView.prototype.render = function (seriesModel, ecModel, api) {\r\n var _this = this;\r\n var coordSys = seriesModel.coordinateSystem;\r\n this._model = seriesModel;\r\n var symbolDraw = this._symbolDraw;\r\n var lineDraw = this._lineDraw;\r\n var group = this.group;\r\n if (isViewCoordSys(coordSys)) {\r\n var groupNewProp = {\r\n x: coordSys.x, y: coordSys.y,\r\n scaleX: coordSys.scaleX, scaleY: coordSys.scaleY\r\n };\r\n if (this._firstRender) {\r\n group.attr(groupNewProp);\r\n }\r\n else {\r\n updateProps(group, groupNewProp, seriesModel);\r\n }\r\n }\r\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\r\n var data = seriesModel.getData();\r\n symbolDraw.updateData(data);\r\n var edgeData = seriesModel.getEdgeData();\r\n lineDraw.updateData(edgeData);\r\n this._updateNodeAndLinkScale();\r\n this._updateController(seriesModel, ecModel, api);\r\n clearTimeout(this._layoutTimeout);\r\n var forceLayout = seriesModel.forceLayout;\r\n var layoutAnimation = seriesModel.get(['force', 'layoutAnimation']);\r\n if (forceLayout) {\r\n this._startForceLayoutIteration(forceLayout, layoutAnimation);\r\n }\r\n data.graph.eachNode(function (node) {\r\n var idx = node.dataIndex;\r\n var el = node.getGraphicEl();\r\n var itemModel = node.getModel();\r\n el.off('drag').off('dragend');\r\n var draggable = itemModel.get('draggable');\r\n if (draggable) {\r\n el.on('drag', function () {\r\n if (forceLayout) {\r\n forceLayout.warmUp();\r\n !_this._layouting\r\n && _this._startForceLayoutIteration(forceLayout, layoutAnimation);\r\n forceLayout.setFixed(idx);\r\n data.setItemLayout(idx, [el.x, el.y]);\r\n }\r\n }).on('dragend', function () {\r\n if (forceLayout) {\r\n forceLayout.setUnfixed(idx);\r\n }\r\n });\r\n }\r\n el.setDraggable(draggable && !!forceLayout);\r\n var focus = itemModel.get(['emphasis', 'focus']);\r\n if (focus === 'adjacency') {\r\n getECData(el).focus = node.getAdjacentDataIndices();\r\n }\r\n });\r\n data.graph.eachEdge(function (edge) {\r\n var el = edge.getGraphicEl();\r\n var focus = edge.getModel().get(['emphasis', 'focus']);\r\n if (focus === 'adjacency') {\r\n getECData(el).focus = {\r\n edge: [edge.dataIndex],\r\n node: [edge.node1.dataIndex, edge.node2.dataIndex]\r\n };\r\n }\r\n });\r\n var circularRotateLabel = seriesModel.get('layout') === 'circular'\r\n && seriesModel.get(['circular', 'rotateLabel']);\r\n var cx = data.getLayout('cx');\r\n var cy = data.getLayout('cy');\r\n data.eachItemGraphicEl(function (el, idx) {\r\n var itemModel = data.getItemModel(idx);\r\n var labelRotate = itemModel.get(['label', 'rotate']) || 0;\r\n var symbolPath = el.getSymbolPath();\r\n if (circularRotateLabel) {\r\n var pos = data.getItemLayout(idx);\r\n var rad = Math.atan2(pos[1] - cy, pos[0] - cx);\r\n if (rad < 0) {\r\n rad = Math.PI * 2 + rad;\r\n }\r\n var isLeft = pos[0] < cx;\r\n if (isLeft) {\r\n rad = rad - Math.PI;\r\n }\r\n var textPosition = isLeft ? 'left' : 'right';\r\n symbolPath.setTextConfig({\r\n rotation: -rad,\r\n position: textPosition,\r\n origin: 'center'\r\n });\r\n var emphasisState = symbolPath.ensureState('emphasis');\r\n extend(emphasisState.textConfig || (emphasisState.textConfig = {}), {\r\n position: textPosition\r\n });\r\n }\r\n else {\r\n symbolPath.setTextConfig({\r\n rotation: labelRotate *= Math.PI / 180\r\n });\r\n }\r\n });\r\n this._firstRender = false;\r\n };\r\n GraphView.prototype.dispose = function () {\r\n this._controller && this._controller.dispose();\r\n this._controllerHost = null;\r\n };\r\n GraphView.prototype._startForceLayoutIteration = function (forceLayout, layoutAnimation) {\r\n var self = this;\r\n (function step() {\r\n forceLayout.step(function (stopped) {\r\n self.updateLayout(self._model);\r\n (self._layouting = !stopped) && (layoutAnimation\r\n ? (self._layoutTimeout = setTimeout(step, 16))\r\n : step());\r\n });\r\n })();\r\n };\r\n GraphView.prototype._updateController = function (seriesModel, ecModel, api) {\r\n var _this = this;\r\n var controller = this._controller;\r\n var controllerHost = this._controllerHost;\r\n var group = this.group;\r\n controller.setPointerChecker(function (e, x, y) {\r\n var rect = group.getBoundingRect();\r\n rect.applyTransform(group.transform);\r\n return rect.contain(x, y)\r\n && !onIrrelevantElement(e, api, seriesModel);\r\n });\r\n if (!isViewCoordSys(seriesModel.coordinateSystem)) {\r\n controller.disable();\r\n return;\r\n }\r\n controller.enable(seriesModel.get('roam'));\r\n controllerHost.zoomLimit = seriesModel.get('scaleLimit');\r\n controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\r\n controller\r\n .off('pan')\r\n .off('zoom')\r\n .on('pan', function (e) {\r\n updateViewOnPan(controllerHost, e.dx, e.dy);\r\n api.dispatchAction({\r\n seriesId: seriesModel.id,\r\n type: 'graphRoam',\r\n dx: e.dx,\r\n dy: e.dy\r\n });\r\n })\r\n .on('zoom', function (e) {\r\n updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\r\n api.dispatchAction({\r\n seriesId: seriesModel.id,\r\n type: 'graphRoam',\r\n zoom: e.scale,\r\n originX: e.originX,\r\n originY: e.originY\r\n });\r\n _this._updateNodeAndLinkScale();\r\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\r\n _this._lineDraw.updateLayout();\r\n api.updateLabelLayout();\r\n });\r\n };\r\n GraphView.prototype._updateNodeAndLinkScale = function () {\r\n var seriesModel = this._model;\r\n var data = seriesModel.getData();\r\n var nodeScale = getNodeGlobalScale(seriesModel);\r\n data.eachItemGraphicEl(function (el, idx) {\r\n el.setSymbolScale(nodeScale);\r\n });\r\n };\r\n GraphView.prototype.updateLayout = function (seriesModel) {\r\n adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\r\n this._symbolDraw.updateLayout();\r\n this._lineDraw.updateLayout();\r\n };\r\n GraphView.prototype.remove = function (ecModel, api) {\r\n this._symbolDraw && this._symbolDraw.remove();\r\n this._lineDraw && this._lineDraw.remove();\r\n };\r\n GraphView.type = 'graph';\r\n return GraphView;\r\n}(ChartView));\r\nChartView.registerClass(GraphView);\n\nregisterAction({\r\n type: 'focusNodeAdjacency',\r\n event: 'focusNodeAdjacency',\r\n update: 'series:focusNodeAdjacency'\r\n}, function () { });\r\nregisterAction({\r\n type: 'unfocusNodeAdjacency',\r\n event: 'unfocusNodeAdjacency',\r\n update: 'series:unfocusNodeAdjacency'\r\n}, function () { });\n\nvar actionInfo = {\r\n type: 'graphRoam',\r\n event: 'graphRoam',\r\n update: 'none'\r\n};\r\nregisterAction(actionInfo, function (payload, ecModel) {\r\n ecModel.eachComponent({\r\n mainType: 'series', query: payload\r\n }, function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var res = updateCenterAndZoom(coordSys, payload);\r\n seriesModel.setCenter\r\n && seriesModel.setCenter(res.center);\r\n seriesModel.setZoom\r\n && seriesModel.setZoom(res.zoom);\r\n });\r\n});\n\nfunction categoryFilter(ecModel) {\r\n var legendModels = ecModel.findComponents({\r\n mainType: 'legend'\r\n });\r\n if (!legendModels || !legendModels.length) {\r\n return;\r\n }\r\n ecModel.eachSeriesByType('graph', function (graphSeries) {\r\n var categoriesData = graphSeries.getCategoriesData();\r\n var graph = graphSeries.getGraph();\r\n var data = graph.data;\r\n var categoryNames = categoriesData.mapArray(categoriesData.getName);\r\n data.filterSelf(function (idx) {\r\n var model = data.getItemModel(idx);\r\n var category = model.getShallow('category');\r\n if (category != null) {\r\n if (typeof category === 'number') {\r\n category = categoryNames[category];\r\n }\r\n for (var i = 0; i < legendModels.length; i++) {\r\n if (!legendModels[i].isSelected(category)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n });\r\n}\n\nfunction categoryVisual(ecModel) {\r\n var paletteScope = {};\r\n ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n var categoriesData = seriesModel.getCategoriesData();\r\n var data = seriesModel.getData();\r\n var categoryNameIdxMap = {};\r\n categoriesData.each(function (idx) {\r\n var name = categoriesData.getName(idx);\r\n categoryNameIdxMap['ec-' + name] = idx;\r\n var itemModel = categoriesData.getItemModel(idx);\r\n var style = itemModel.getModel('itemStyle').getItemStyle();\r\n if (!style.fill) {\r\n style.fill = seriesModel.getColorFromPalette(name, paletteScope);\r\n }\r\n categoriesData.setItemVisual(idx, 'style', style);\r\n var symbolVisualList = ['symbol', 'symbolSize', 'symbolKeepAspect'];\r\n for (var i = 0; i < symbolVisualList.length; i++) {\r\n var symbolVisual = itemModel.getShallow(symbolVisualList[i], true);\r\n if (symbolVisual != null) {\r\n categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual);\r\n }\r\n }\r\n });\r\n if (categoriesData.count()) {\r\n data.each(function (idx) {\r\n var model = data.getItemModel(idx);\r\n var categoryIdx = model.getShallow('category');\r\n if (categoryIdx != null) {\r\n if (typeof categoryIdx === 'string') {\r\n categoryIdx = categoryNameIdxMap['ec-' + categoryIdx];\r\n }\r\n var categoryStyle = categoriesData.getItemVisual(categoryIdx, 'style');\r\n var style = data.ensureUniqueItemVisual(idx, 'style');\r\n extend(style, categoryStyle);\r\n var visualList = ['symbol', 'symbolSize', 'symbolKeepAspect'];\r\n for (var i = 0; i < visualList.length; i++) {\r\n data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i]));\r\n }\r\n }\r\n });\r\n }\r\n });\r\n}\n\nfunction normalize$2(a) {\r\n if (!(a instanceof Array)) {\r\n a = [a, a];\r\n }\r\n return a;\r\n}\r\nfunction graphEdgeVisual(ecModel) {\r\n ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n var graph = seriesModel.getGraph();\r\n var edgeData = seriesModel.getEdgeData();\r\n var symbolType = normalize$2(seriesModel.get('edgeSymbol'));\r\n var symbolSize = normalize$2(seriesModel.get('edgeSymbolSize'));\r\n edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\r\n edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\r\n edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\r\n edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\r\n edgeData.setVisual('style', seriesModel.getModel('lineStyle').getLineStyle());\r\n edgeData.each(function (idx) {\r\n var itemModel = edgeData.getItemModel(idx);\r\n var edge = graph.getEdgeByIndex(idx);\r\n var symbolType = normalize$2(itemModel.getShallow('symbol', true));\r\n var symbolSize = normalize$2(itemModel.getShallow('symbolSize', true));\r\n var style = itemModel.getModel('lineStyle').getLineStyle();\r\n var existsStyle = edgeData.ensureUniqueItemVisual(idx, 'style');\r\n extend(existsStyle, style);\r\n switch (existsStyle.stroke) {\r\n case 'source': {\r\n var nodeStyle = edge.node1.getVisual('style');\r\n existsStyle.stroke = nodeStyle && nodeStyle.fill;\r\n break;\r\n }\r\n case 'target': {\r\n var nodeStyle = edge.node2.getVisual('style');\r\n existsStyle.stroke = nodeStyle && nodeStyle.fill;\r\n break;\r\n }\r\n }\r\n symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\r\n symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\r\n symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\r\n symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\r\n });\r\n });\r\n}\n\nfunction simpleLayout(seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys && coordSys.type !== 'view') {\r\n return;\r\n }\r\n var graph = seriesModel.getGraph();\r\n graph.eachNode(function (node) {\r\n var model = node.getModel();\r\n node.setLayout([+model.get('x'), +model.get('y')]);\r\n });\r\n simpleLayoutEdge(graph, seriesModel);\r\n}\r\nfunction simpleLayoutEdge(graph, seriesModel) {\r\n graph.eachEdge(function (edge, index) {\r\n var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, seriesModel, index, true), 0);\r\n var p1 = clone$1(edge.node1.getLayout());\r\n var p2 = clone$1(edge.node2.getLayout());\r\n var points = [p1, p2];\r\n if (+curveness) {\r\n points.push([\r\n (p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness,\r\n (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness\r\n ]);\r\n }\r\n edge.setLayout(points);\r\n });\r\n}\n\nfunction graphSimpleLayout(ecModel, api) {\r\n ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n var layout = seriesModel.get('layout');\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys && coordSys.type !== 'view') {\r\n var data_1 = seriesModel.getData();\r\n var dimensions_1 = [];\r\n each(coordSys.dimensions, function (coordDim) {\r\n dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim));\r\n });\r\n for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) {\r\n var value = [];\r\n var hasValue = false;\r\n for (var i = 0; i < dimensions_1.length; i++) {\r\n var val = data_1.get(dimensions_1[i], dataIndex);\r\n if (!isNaN(val)) {\r\n hasValue = true;\r\n }\r\n value.push(val);\r\n }\r\n if (hasValue) {\r\n data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value));\r\n }\r\n else {\r\n data_1.setItemLayout(dataIndex, [NaN, NaN]);\r\n }\r\n }\r\n simpleLayoutEdge(data_1.graph, seriesModel);\r\n }\r\n else if (!layout || layout === 'none') {\r\n simpleLayout(seriesModel);\r\n }\r\n });\r\n}\n\nvar PI$7 = Math.PI;\r\nvar _symbolRadiansHalf = [];\r\nfunction circularLayout(seriesModel, basedOn) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys && coordSys.type !== 'view') {\r\n return;\r\n }\r\n var rect = coordSys.getBoundingRect();\r\n var nodeData = seriesModel.getData();\r\n var graph = nodeData.graph;\r\n var cx = rect.width / 2 + rect.x;\r\n var cy = rect.height / 2 + rect.y;\r\n var r = Math.min(rect.width, rect.height) / 2;\r\n var count = nodeData.count();\r\n nodeData.setLayout({\r\n cx: cx,\r\n cy: cy\r\n });\r\n if (!count) {\r\n return;\r\n }\r\n _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count);\r\n graph.eachEdge(function (edge, index) {\r\n var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), getCurvenessForEdge(edge, seriesModel, index), 0);\r\n var p1 = clone$1(edge.node1.getLayout());\r\n var p2 = clone$1(edge.node2.getLayout());\r\n var cp1;\r\n var x12 = (p1[0] + p2[0]) / 2;\r\n var y12 = (p1[1] + p2[1]) / 2;\r\n if (+curveness) {\r\n curveness *= 3;\r\n cp1 = [\r\n cx * curveness + x12 * (1 - curveness),\r\n cy * curveness + y12 * (1 - curveness)\r\n ];\r\n }\r\n edge.setLayout([p1, p2, cp1]);\r\n });\r\n}\r\nvar _layoutNodesBasedOn = {\r\n value: function (seriesModel, graph, nodeData, r, cx, cy, count) {\r\n var angle = 0;\r\n var sum = nodeData.getSum('value');\r\n var unitAngle = Math.PI * 2 / (sum || count);\r\n graph.eachNode(function (node) {\r\n var value = node.getValue('value');\r\n var radianHalf = unitAngle * (sum ? value : 1) / 2;\r\n angle += radianHalf;\r\n node.setLayout([\r\n r * Math.cos(angle) + cx,\r\n r * Math.sin(angle) + cy\r\n ]);\r\n angle += radianHalf;\r\n });\r\n },\r\n symbolSize: function (seriesModel, graph, nodeData, r, cx, cy, count) {\r\n var sumRadian = 0;\r\n _symbolRadiansHalf.length = count;\r\n var nodeScale = getNodeGlobalScale(seriesModel);\r\n graph.eachNode(function (node) {\r\n var symbolSize = getSymbolSize(node);\r\n isNaN(symbolSize) && (symbolSize = 2);\r\n symbolSize < 0 && (symbolSize = 0);\r\n symbolSize *= nodeScale;\r\n var symbolRadianHalf = Math.asin(symbolSize / 2 / r);\r\n isNaN(symbolRadianHalf) && (symbolRadianHalf = PI$7 / 2);\r\n _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;\r\n sumRadian += symbolRadianHalf * 2;\r\n });\r\n var halfRemainRadian = (2 * PI$7 - sumRadian) / count / 2;\r\n var angle = 0;\r\n graph.eachNode(function (node) {\r\n var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];\r\n angle += radianHalf;\r\n node.setLayout([\r\n r * Math.cos(angle) + cx,\r\n r * Math.sin(angle) + cy\r\n ]);\r\n angle += radianHalf;\r\n });\r\n }\r\n};\n\nfunction graphCircularLayout(ecModel) {\r\n ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n if (seriesModel.get('layout') === 'circular') {\r\n circularLayout(seriesModel, 'symbolSize');\r\n }\r\n });\r\n}\n\nvar scaleAndAdd$1 = scaleAndAdd;\r\nfunction forceLayout(inNodes, inEdges, opts) {\r\n var nodes = inNodes;\r\n var edges = inEdges;\r\n var rect = opts.rect;\r\n var width = rect.width;\r\n var height = rect.height;\r\n var center = [rect.x + width / 2, rect.y + height / 2];\r\n var gravity = opts.gravity == null ? 0.1 : opts.gravity;\r\n for (var i = 0; i < nodes.length; i++) {\r\n var n = nodes[i];\r\n if (!n.p) {\r\n n.p = create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]);\r\n }\r\n n.pp = clone$1(n.p);\r\n n.edges = null;\r\n }\r\n var initialFriction = opts.friction == null ? 0.6 : opts.friction;\r\n var friction = initialFriction;\r\n var beforeStepCallback;\r\n var afterStepCallback;\r\n return {\r\n warmUp: function () {\r\n friction = initialFriction * 0.8;\r\n },\r\n setFixed: function (idx) {\r\n nodes[idx].fixed = true;\r\n },\r\n setUnfixed: function (idx) {\r\n nodes[idx].fixed = false;\r\n },\r\n beforeStep: function (cb) {\r\n beforeStepCallback = cb;\r\n },\r\n afterStep: function (cb) {\r\n afterStepCallback = cb;\r\n },\r\n step: function (cb) {\r\n beforeStepCallback && beforeStepCallback(nodes, edges);\r\n var v12 = [];\r\n var nLen = nodes.length;\r\n for (var i = 0; i < edges.length; i++) {\r\n var e = edges[i];\r\n if (e.ignoreForceLayout) {\r\n continue;\r\n }\r\n var n1 = e.n1;\r\n var n2 = e.n2;\r\n sub(v12, n2.p, n1.p);\r\n var d = len(v12) - e.d;\r\n var w = n2.w / (n1.w + n2.w);\r\n if (isNaN(w)) {\r\n w = 0;\r\n }\r\n normalize(v12, v12);\r\n !n1.fixed && scaleAndAdd$1(n1.p, n1.p, v12, w * d * friction);\r\n !n2.fixed && scaleAndAdd$1(n2.p, n2.p, v12, -(1 - w) * d * friction);\r\n }\r\n for (var i = 0; i < nLen; i++) {\r\n var n = nodes[i];\r\n if (!n.fixed) {\r\n sub(v12, center, n.p);\r\n scaleAndAdd$1(n.p, n.p, v12, gravity * friction);\r\n }\r\n }\r\n for (var i = 0; i < nLen; i++) {\r\n var n1 = nodes[i];\r\n for (var j = i + 1; j < nLen; j++) {\r\n var n2 = nodes[j];\r\n sub(v12, n2.p, n1.p);\r\n var d = len(v12);\r\n if (d === 0) {\r\n set(v12, Math.random() - 0.5, Math.random() - 0.5);\r\n d = 1;\r\n }\r\n var repFact = (n1.rep + n2.rep) / d / d;\r\n !n1.fixed && scaleAndAdd$1(n1.pp, n1.pp, v12, repFact);\r\n !n2.fixed && scaleAndAdd$1(n2.pp, n2.pp, v12, -repFact);\r\n }\r\n }\r\n var v = [];\r\n for (var i = 0; i < nLen; i++) {\r\n var n = nodes[i];\r\n if (!n.fixed) {\r\n sub(v, n.p, n.pp);\r\n scaleAndAdd$1(n.p, n.p, v, friction);\r\n copy(n.pp, n.p);\r\n }\r\n }\r\n friction = friction * 0.992;\r\n var finished = friction < 0.01;\r\n afterStepCallback && afterStepCallback(nodes, edges, finished);\r\n cb && cb(finished);\r\n }\r\n };\r\n}\n\nfunction graphForceLayout(ecModel) {\r\n ecModel.eachSeriesByType('graph', function (graphSeries) {\r\n var coordSys = graphSeries.coordinateSystem;\r\n if (coordSys && coordSys.type !== 'view') {\r\n return;\r\n }\r\n if (graphSeries.get('layout') === 'force') {\r\n var preservedPoints_1 = graphSeries.preservedPoints || {};\r\n var graph_1 = graphSeries.getGraph();\r\n var nodeData_1 = graph_1.data;\r\n var edgeData = graph_1.edgeData;\r\n var forceModel = graphSeries.getModel('force');\r\n var initLayout = forceModel.get('initLayout');\r\n if (graphSeries.preservedPoints) {\r\n nodeData_1.each(function (idx) {\r\n var id = nodeData_1.getId(idx);\r\n nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]);\r\n });\r\n }\r\n else if (!initLayout || initLayout === 'none') {\r\n simpleLayout(graphSeries);\r\n }\r\n else if (initLayout === 'circular') {\r\n circularLayout(graphSeries, 'value');\r\n }\r\n var nodeDataExtent_1 = nodeData_1.getDataExtent('value');\r\n var edgeDataExtent_1 = edgeData.getDataExtent('value');\r\n var repulsion = forceModel.get('repulsion');\r\n var edgeLength = forceModel.get('edgeLength');\r\n var repulsionArr_1 = isArray(repulsion)\r\n ? repulsion : [repulsion, repulsion];\r\n var edgeLengthArr_1 = isArray(edgeLength)\r\n ? edgeLength : [edgeLength, edgeLength];\r\n edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]];\r\n var nodes_1 = nodeData_1.mapArray('value', function (value, idx) {\r\n var point = nodeData_1.getItemLayout(idx);\r\n var rep = linearMap(value, nodeDataExtent_1, repulsionArr_1);\r\n if (isNaN(rep)) {\r\n rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2;\r\n }\r\n return {\r\n w: rep,\r\n rep: rep,\r\n fixed: nodeData_1.getItemModel(idx).get('fixed'),\r\n p: (!point || isNaN(point[0]) || isNaN(point[1])) ? null : point\r\n };\r\n });\r\n var edges = edgeData.mapArray('value', function (value, idx) {\r\n var edge = graph_1.getEdgeByIndex(idx);\r\n var d = linearMap(value, edgeDataExtent_1, edgeLengthArr_1);\r\n if (isNaN(d)) {\r\n d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2;\r\n }\r\n var edgeModel = edge.getModel();\r\n var curveness = retrieve3(edge.getModel().get(['lineStyle', 'curveness']), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);\r\n return {\r\n n1: nodes_1[edge.node1.dataIndex],\r\n n2: nodes_1[edge.node2.dataIndex],\r\n d: d,\r\n curveness: curveness,\r\n ignoreForceLayout: edgeModel.get('ignoreForceLayout')\r\n };\r\n });\r\n var rect = coordSys.getBoundingRect();\r\n var forceInstance = forceLayout(nodes_1, edges, {\r\n rect: rect,\r\n gravity: forceModel.get('gravity'),\r\n friction: forceModel.get('friction')\r\n });\r\n forceInstance.beforeStep(function (nodes, edges) {\r\n for (var i = 0, l = nodes.length; i < l; i++) {\r\n if (nodes[i].fixed) {\r\n copy(nodes[i].p, graph_1.getNodeByIndex(i).getLayout());\r\n }\r\n }\r\n });\r\n forceInstance.afterStep(function (nodes, edges, stopped) {\r\n for (var i = 0, l = nodes.length; i < l; i++) {\r\n if (!nodes[i].fixed) {\r\n graph_1.getNodeByIndex(i).setLayout(nodes[i].p);\r\n }\r\n preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p;\r\n }\r\n for (var i = 0, l = edges.length; i < l; i++) {\r\n var e = edges[i];\r\n var edge = graph_1.getEdgeByIndex(i);\r\n var p1 = e.n1.p;\r\n var p2 = e.n2.p;\r\n var points = edge.getLayout();\r\n points = points ? points.slice() : [];\r\n points[0] = points[0] || [];\r\n points[1] = points[1] || [];\r\n copy(points[0], p1);\r\n copy(points[1], p2);\r\n if (+e.curveness) {\r\n points[2] = [\r\n (p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness,\r\n (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness\r\n ];\r\n }\r\n edge.setLayout(points);\r\n }\r\n });\r\n graphSeries.forceLayout = forceInstance;\r\n graphSeries.preservedPoints = preservedPoints_1;\r\n forceInstance.step();\r\n }\r\n else {\r\n graphSeries.forceLayout = null;\r\n }\r\n });\r\n}\n\nfunction getViewRect$2(seriesModel, api, aspect) {\r\n var option = extend(seriesModel.getBoxLayoutParams(), {\r\n aspect: aspect\r\n });\r\n return getLayoutRect(option, {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n}\r\nfunction createViewCoordSys(ecModel, api) {\r\n var viewList = [];\r\n ecModel.eachSeriesByType('graph', function (seriesModel) {\r\n var coordSysType = seriesModel.get('coordinateSystem');\r\n if (!coordSysType || coordSysType === 'view') {\r\n var data_1 = seriesModel.getData();\r\n var positions = data_1.mapArray(function (idx) {\r\n var itemModel = data_1.getItemModel(idx);\r\n return [+itemModel.get('x'), +itemModel.get('y')];\r\n });\r\n var min = [];\r\n var max = [];\r\n fromPoints(positions, min, max);\r\n if (max[0] - min[0] === 0) {\r\n max[0] += 1;\r\n min[0] -= 1;\r\n }\r\n if (max[1] - min[1] === 0) {\r\n max[1] += 1;\r\n min[1] -= 1;\r\n }\r\n var aspect = (max[0] - min[0]) / (max[1] - min[1]);\r\n var viewRect = getViewRect$2(seriesModel, api, aspect);\r\n if (isNaN(aspect)) {\r\n min = [viewRect.x, viewRect.y];\r\n max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];\r\n }\r\n var bbWidth = max[0] - min[0];\r\n var bbHeight = max[1] - min[1];\r\n var viewWidth = viewRect.width;\r\n var viewHeight = viewRect.height;\r\n var viewCoordSys = seriesModel.coordinateSystem = new View();\r\n viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\r\n viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);\r\n viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight);\r\n viewCoordSys.setCenter(seriesModel.get('center'));\r\n viewCoordSys.setZoom(seriesModel.get('zoom'));\r\n viewList.push(viewCoordSys);\r\n }\r\n });\r\n return viewList;\r\n}\n\nregisterProcessor(categoryFilter);\r\nregisterVisual(categoryVisual);\r\nregisterVisual(graphEdgeVisual);\r\nregisterLayout(graphSimpleLayout);\r\nregisterLayout(PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout);\r\nregisterLayout(graphForceLayout);\r\nregisterCoordinateSystem('graphView', {\r\n dimensions: View.dimensions,\r\n create: createViewCoordSys\r\n});\n\nvar GaugeSeriesModel = (function (_super) {\r\n __extends(GaugeSeriesModel, _super);\r\n function GaugeSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = GaugeSeriesModel.type;\r\n _this.visualStyleAccessPath = 'itemStyle';\r\n _this.useColorPaletteOnData = true;\r\n return _this;\r\n }\r\n GaugeSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListSimply(this, ['value']);\r\n };\r\n GaugeSeriesModel.type = 'series.gauge';\r\n GaugeSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n center: ['50%', '50%'],\r\n legendHoverLink: true,\r\n radius: '75%',\r\n startAngle: 225,\r\n endAngle: -45,\r\n clockwise: true,\r\n min: 0,\r\n max: 100,\r\n splitNumber: 10,\r\n axisLine: {\r\n show: true,\r\n roundCap: false,\r\n lineStyle: {\r\n color: [[1, '#E6EBF8']],\r\n width: 10\r\n }\r\n },\r\n progress: {\r\n show: false,\r\n overlap: true,\r\n width: 10,\r\n roundCap: false,\r\n clip: true\r\n },\r\n splitLine: {\r\n show: true,\r\n length: 10,\r\n distance: 10,\r\n lineStyle: {\r\n color: '#63677A',\r\n width: 3,\r\n type: 'solid'\r\n }\r\n },\r\n axisTick: {\r\n show: true,\r\n splitNumber: 5,\r\n length: 6,\r\n distance: 10,\r\n lineStyle: {\r\n color: '#63677A',\r\n width: 1,\r\n type: 'solid'\r\n }\r\n },\r\n axisLabel: {\r\n show: true,\r\n distance: 15,\r\n color: '#464646',\r\n fontSize: 12\r\n },\r\n pointer: {\r\n icon: null,\r\n offsetCenter: [0, 0],\r\n show: true,\r\n length: '60%',\r\n width: 6,\r\n keepAspect: false\r\n },\r\n anchor: {\r\n show: false,\r\n showAbove: false,\r\n size: 6,\r\n icon: 'circle',\r\n offsetCenter: [0, 0],\r\n keepAspect: false,\r\n itemStyle: {\r\n color: '#fff',\r\n borderWidth: 0,\r\n borderColor: '#5470c6'\r\n }\r\n },\r\n title: {\r\n show: true,\r\n offsetCenter: [0, '20%'],\r\n color: '#464646',\r\n fontSize: 16,\r\n valueAnimation: false\r\n },\r\n detail: {\r\n show: true,\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n borderWidth: 0,\r\n borderColor: '#ccc',\r\n width: 100,\r\n height: null,\r\n padding: [5, 10],\r\n offsetCenter: [0, '40%'],\r\n color: '#464646',\r\n fontSize: 30,\r\n fontWeight: 'bold',\r\n lineHeight: 30,\r\n valueAnimation: false\r\n }\r\n };\r\n return GaugeSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(GaugeSeriesModel);\n\nvar PointerShape = (function () {\r\n function PointerShape() {\r\n this.angle = 0;\r\n this.width = 10;\r\n this.r = 10;\r\n this.x = 0;\r\n this.y = 0;\r\n }\r\n return PointerShape;\r\n}());\r\nvar PointerPath = (function (_super) {\r\n __extends(PointerPath, _super);\r\n function PointerPath(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'pointer';\r\n return _this;\r\n }\r\n PointerPath.prototype.getDefaultShape = function () {\r\n return new PointerShape();\r\n };\r\n PointerPath.prototype.buildPath = function (ctx, shape) {\r\n var mathCos = Math.cos;\r\n var mathSin = Math.sin;\r\n var r = shape.r;\r\n var width = shape.width;\r\n var angle = shape.angle;\r\n var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);\r\n var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);\r\n angle = shape.angle - Math.PI / 2;\r\n ctx.moveTo(x, y);\r\n ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);\r\n ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);\r\n ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);\r\n ctx.lineTo(x, y);\r\n };\r\n return PointerPath;\r\n}(Path));\n\nfunction parsePosition(seriesModel, api) {\r\n var center = seriesModel.get('center');\r\n var width = api.getWidth();\r\n var height = api.getHeight();\r\n var size = Math.min(width, height);\r\n var cx = parsePercent$2(center[0], api.getWidth());\r\n var cy = parsePercent$2(center[1], api.getHeight());\r\n var r = parsePercent$2(seriesModel.get('radius'), size / 2);\r\n return {\r\n cx: cx,\r\n cy: cy,\r\n r: r\r\n };\r\n}\r\nfunction formatLabel(value, labelFormatter) {\r\n var label = value == null ? '' : (value + '');\r\n if (labelFormatter) {\r\n if (typeof labelFormatter === 'string') {\r\n label = labelFormatter.replace('{value}', label);\r\n }\r\n else if (typeof labelFormatter === 'function') {\r\n label = labelFormatter(value);\r\n }\r\n }\r\n return label;\r\n}\r\nvar PI2$9 = Math.PI * 2;\r\nvar GaugeView = (function (_super) {\r\n __extends(GaugeView, _super);\r\n function GaugeView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = GaugeView.type;\r\n return _this;\r\n }\r\n GaugeView.prototype.render = function (seriesModel, ecModel, api) {\r\n this.group.removeAll();\r\n var colorList = seriesModel.get(['axisLine', 'lineStyle', 'color']);\r\n var posInfo = parsePosition(seriesModel, api);\r\n this._renderMain(seriesModel, ecModel, api, colorList, posInfo);\r\n this._data = seriesModel.getData();\r\n };\r\n GaugeView.prototype.dispose = function () { };\r\n GaugeView.prototype._renderMain = function (seriesModel, ecModel, api, colorList, posInfo) {\r\n var group = this.group;\r\n var clockwise = seriesModel.get('clockwise');\r\n var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI;\r\n var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI;\r\n var axisLineModel = seriesModel.getModel('axisLine');\r\n var roundCap = axisLineModel.get('roundCap');\r\n var MainPath = roundCap ? SausagePath : Sector;\r\n var showAxis = axisLineModel.get('show');\r\n var lineStyleModel = axisLineModel.getModel('lineStyle');\r\n var axisLineWidth = lineStyleModel.get('width');\r\n var angleRangeSpan = !((endAngle - startAngle) % PI2$9) && endAngle !== startAngle\r\n ? PI2$9 : (endAngle - startAngle) % PI2$9;\r\n var prevEndAngle = startAngle;\r\n for (var i = 0; showAxis && i < colorList.length; i++) {\r\n var percent = Math.min(Math.max(colorList[i][0], 0), 1);\r\n endAngle = startAngle + angleRangeSpan * percent;\r\n var sector = new MainPath({\r\n shape: {\r\n startAngle: prevEndAngle,\r\n endAngle: endAngle,\r\n cx: posInfo.cx,\r\n cy: posInfo.cy,\r\n clockwise: clockwise,\r\n r0: posInfo.r - axisLineWidth,\r\n r: posInfo.r\r\n },\r\n silent: true\r\n });\r\n sector.setStyle({\r\n fill: colorList[i][1]\r\n });\r\n sector.setStyle(lineStyleModel.getLineStyle(['color', 'width']));\r\n group.add(sector);\r\n prevEndAngle = endAngle;\r\n }\r\n var getColor = function (percent) {\r\n if (percent <= 0) {\r\n return colorList[0][1];\r\n }\r\n var i;\r\n for (i = 0; i < colorList.length; i++) {\r\n if (colorList[i][0] >= percent\r\n && (i === 0 ? 0 : colorList[i - 1][0]) < percent) {\r\n return colorList[i][1];\r\n }\r\n }\r\n return colorList[i - 1][1];\r\n };\r\n if (!clockwise) {\r\n var tmp = startAngle;\r\n startAngle = endAngle;\r\n endAngle = tmp;\r\n }\r\n this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);\r\n this._renderTitleAndDetail(seriesModel, ecModel, api, getColor, posInfo);\r\n this._renderAnchor(seriesModel, posInfo);\r\n this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth);\r\n };\r\n GaugeView.prototype._renderTicks = function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {\r\n var group = this.group;\r\n var cx = posInfo.cx;\r\n var cy = posInfo.cy;\r\n var r = posInfo.r;\r\n var minVal = +seriesModel.get('min');\r\n var maxVal = +seriesModel.get('max');\r\n var splitLineModel = seriesModel.getModel('splitLine');\r\n var tickModel = seriesModel.getModel('axisTick');\r\n var labelModel = seriesModel.getModel('axisLabel');\r\n var splitNumber = seriesModel.get('splitNumber');\r\n var subSplitNumber = tickModel.get('splitNumber');\r\n var splitLineLen = parsePercent$2(splitLineModel.get('length'), r);\r\n var tickLen = parsePercent$2(tickModel.get('length'), r);\r\n var angle = startAngle;\r\n var step = (endAngle - startAngle) / splitNumber;\r\n var subStep = step / subSplitNumber;\r\n var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle();\r\n var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle();\r\n var splitLineDistance = splitLineModel.get('distance');\r\n var unitX;\r\n var unitY;\r\n for (var i = 0; i <= splitNumber; i++) {\r\n unitX = Math.cos(angle);\r\n unitY = Math.sin(angle);\r\n if (splitLineModel.get('show')) {\r\n var distance = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth;\r\n var splitLine = new Line({\r\n shape: {\r\n x1: unitX * (r - distance) + cx,\r\n y1: unitY * (r - distance) + cy,\r\n x2: unitX * (r - splitLineLen - distance) + cx,\r\n y2: unitY * (r - splitLineLen - distance) + cy\r\n },\r\n style: splitLineStyle,\r\n silent: true\r\n });\r\n if (splitLineStyle.stroke === 'auto') {\r\n splitLine.setStyle({\r\n stroke: getColor(i / splitNumber)\r\n });\r\n }\r\n group.add(splitLine);\r\n }\r\n if (labelModel.get('show')) {\r\n var distance = labelModel.get('distance') + splitLineDistance;\r\n var label = formatLabel(round$1(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get('formatter'));\r\n var autoColor = getColor(i / splitNumber);\r\n group.add(new ZRText({\r\n style: createTextStyle(labelModel, {\r\n text: label,\r\n x: unitX * (r - splitLineLen - distance) + cx,\r\n y: unitY * (r - splitLineLen - distance) + cy,\r\n verticalAlign: unitY < -0.8 ? 'top' : (unitY > 0.8 ? 'bottom' : 'middle'),\r\n align: unitX < -0.4 ? 'left' : (unitX > 0.4 ? 'right' : 'center')\r\n }, {\r\n inheritColor: autoColor\r\n }),\r\n silent: true\r\n }));\r\n }\r\n if (tickModel.get('show') && i !== splitNumber) {\r\n var distance = tickModel.get('distance');\r\n distance = distance ? distance + axisLineWidth : axisLineWidth;\r\n for (var j = 0; j <= subSplitNumber; j++) {\r\n unitX = Math.cos(angle);\r\n unitY = Math.sin(angle);\r\n var tickLine = new Line({\r\n shape: {\r\n x1: unitX * (r - distance) + cx,\r\n y1: unitY * (r - distance) + cy,\r\n x2: unitX * (r - tickLen - distance) + cx,\r\n y2: unitY * (r - tickLen - distance) + cy\r\n },\r\n silent: true,\r\n style: tickLineStyle\r\n });\r\n if (tickLineStyle.stroke === 'auto') {\r\n tickLine.setStyle({\r\n stroke: getColor((i + j / subSplitNumber) / splitNumber)\r\n });\r\n }\r\n group.add(tickLine);\r\n angle += subStep;\r\n }\r\n angle -= subStep;\r\n }\r\n else {\r\n angle += step;\r\n }\r\n }\r\n };\r\n GaugeView.prototype._renderPointer = function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {\r\n var group = this.group;\r\n var oldData = this._data;\r\n var oldProgressData = this._progressEls;\r\n var progressList = [];\r\n var showPointer = seriesModel.get(['pointer', 'show']);\r\n var progressModel = seriesModel.getModel('progress');\r\n var showProgress = progressModel.get('show');\r\n var data = seriesModel.getData();\r\n var valueDim = data.mapDimension('value');\r\n var minVal = +seriesModel.get('min');\r\n var maxVal = +seriesModel.get('max');\r\n var valueExtent = [minVal, maxVal];\r\n var angleExtent = [startAngle, endAngle];\r\n function createPointer(idx, angle) {\r\n var itemModel = data.getItemModel(idx);\r\n var pointerModel = itemModel.getModel('pointer');\r\n var pointerWidth = parsePercent$2(pointerModel.get('width'), posInfo.r);\r\n var pointerLength = parsePercent$2(pointerModel.get('length'), posInfo.r);\r\n var pointerStr = seriesModel.get(['pointer', 'icon']);\r\n var pointerOffset = pointerModel.get('offsetCenter');\r\n var pointerKeepAspect = pointerModel.get('keepAspect');\r\n var pointer;\r\n if (pointerStr) {\r\n pointer = createSymbol(pointerStr, parsePercent$2(pointerOffset[0], posInfo.r) - pointerWidth / 2, parsePercent$2(pointerOffset[1], posInfo.r) - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect);\r\n }\r\n else {\r\n pointer = new PointerPath({\r\n shape: {\r\n angle: -Math.PI / 2,\r\n width: parsePercent$2(pointerModel.get('width'), posInfo.r),\r\n r: parsePercent$2(pointerModel.get('length'), posInfo.r)\r\n }\r\n });\r\n }\r\n pointer.rotation = -(angle + Math.PI / 2);\r\n pointer.x = posInfo.cx;\r\n pointer.y = posInfo.cy;\r\n return pointer;\r\n }\r\n function createProgress(idx, endAngle) {\r\n var roundCap = progressModel.get('roundCap');\r\n var ProgressPath = roundCap ? SausagePath : Sector;\r\n var isOverlap = progressModel.get('overlap');\r\n var progressWidth = isOverlap ? progressModel.get('width') : axisLineWidth / data.count();\r\n var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth;\r\n var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth;\r\n var progress = new ProgressPath({\r\n shape: {\r\n startAngle: startAngle,\r\n endAngle: endAngle,\r\n cx: posInfo.cx,\r\n cy: posInfo.cy,\r\n clockwise: clockwise,\r\n r0: r0,\r\n r: r\r\n }\r\n });\r\n isOverlap && (progress.z2 = maxVal - data.get(valueDim, idx) % maxVal);\r\n return progress;\r\n }\r\n if (showProgress || showPointer) {\r\n data.diff(oldData)\r\n .add(function (idx) {\r\n if (showPointer) {\r\n var pointer = createPointer(idx, startAngle);\r\n initProps(pointer, {\r\n rotation: -(linearMap(data.get(valueDim, idx), valueExtent, angleExtent, true)\r\n + Math.PI / 2)\r\n }, seriesModel);\r\n group.add(pointer);\r\n data.setItemGraphicEl(idx, pointer);\r\n }\r\n if (showProgress) {\r\n var progress = createProgress(idx, startAngle);\r\n var isClip = progressModel.get('clip');\r\n initProps(progress, {\r\n shape: {\r\n endAngle: linearMap(data.get(valueDim, idx), valueExtent, angleExtent, isClip)\r\n }\r\n }, seriesModel);\r\n group.add(progress);\r\n progressList[idx] = progress;\r\n }\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n if (showPointer) {\r\n var previousPointer = oldData.getItemGraphicEl(oldIdx);\r\n var previousRotate = previousPointer ? previousPointer.rotation : startAngle;\r\n var pointer = createPointer(newIdx, previousRotate);\r\n pointer.rotation = previousRotate;\r\n updateProps(pointer, {\r\n rotation: -(linearMap(data.get(valueDim, newIdx), valueExtent, angleExtent, true)\r\n + Math.PI / 2)\r\n }, seriesModel);\r\n group.add(pointer);\r\n data.setItemGraphicEl(newIdx, pointer);\r\n }\r\n if (showProgress) {\r\n var previousProgress = oldProgressData[oldIdx];\r\n var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle;\r\n var progress = createProgress(newIdx, previousEndAngle);\r\n var isClip = progressModel.get('clip');\r\n updateProps(progress, {\r\n shape: {\r\n endAngle: linearMap(data.get(valueDim, newIdx), valueExtent, angleExtent, isClip)\r\n }\r\n }, seriesModel);\r\n group.add(progress);\r\n progressList[newIdx] = progress;\r\n }\r\n })\r\n .execute();\r\n data.each(function (idx) {\r\n var itemModel = data.getItemModel(idx);\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n if (showPointer) {\r\n var pointer = data.getItemGraphicEl(idx);\r\n pointer.useStyle(data.getItemVisual(idx, 'style'));\r\n pointer.setStyle(itemModel.getModel(['pointer', 'itemStyle']).getItemStyle());\r\n if (pointer.style.fill === 'auto') {\r\n pointer.setStyle('fill', getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));\r\n }\r\n pointer.z2EmphasisLift = 0;\r\n setStatesStylesFromModel(pointer, itemModel);\r\n enableHoverEmphasis(pointer, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n }\r\n if (showProgress) {\r\n var progress = progressList[idx];\r\n progress.useStyle(data.getItemVisual(idx, 'style'));\r\n progress.setStyle(itemModel.getModel(['progress', 'itemStyle']).getItemStyle());\r\n progress.z2EmphasisLift = 0;\r\n setStatesStylesFromModel(progress, itemModel);\r\n enableHoverEmphasis(progress, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n }\r\n });\r\n this._progressEls = progressList;\r\n }\r\n };\r\n GaugeView.prototype._renderAnchor = function (seriesModel, posInfo) {\r\n var anchorModel = seriesModel.getModel('anchor');\r\n var showAnchor = anchorModel.get('show');\r\n if (showAnchor) {\r\n var anchorSize = anchorModel.get('size');\r\n var anchorType = anchorModel.get('icon');\r\n var offsetCenter = anchorModel.get('offsetCenter');\r\n var anchorKeepAspect = anchorModel.get('keepAspect');\r\n var anchor = createSymbol(anchorType, posInfo.cx - anchorSize / 2 + parsePercent$2(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent$2(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect);\r\n anchor.z2 = anchorModel.get('showAbove') ? 1 : 0;\r\n anchor.setStyle(anchorModel.getModel('itemStyle').getItemStyle());\r\n this.group.add(anchor);\r\n }\r\n };\r\n GaugeView.prototype._renderTitleAndDetail = function (seriesModel, ecModel, api, getColor, posInfo) {\r\n var _this = this;\r\n var data = seriesModel.getData();\r\n var valueDim = data.mapDimension('value');\r\n var minVal = +seriesModel.get('min');\r\n var maxVal = +seriesModel.get('max');\r\n var contentGroup = new Group();\r\n var newTitleEls = [];\r\n var newDetailEls = [];\r\n var hasAnimation = seriesModel.isAnimationEnabled();\r\n data.diff(this._data)\r\n .add(function (idx) {\r\n newTitleEls[idx] = new ZRText({\r\n silent: true\r\n });\r\n newDetailEls[idx] = new ZRText({\r\n silent: true\r\n });\r\n })\r\n .update(function (idx, oldIdx) {\r\n newTitleEls[idx] = _this._titleEls[oldIdx];\r\n newDetailEls[idx] = _this._detailEls[oldIdx];\r\n })\r\n .execute();\r\n data.each(function (idx) {\r\n var itemModel = data.getItemModel(idx);\r\n var value = data.get(valueDim, idx);\r\n var itemGroup = new Group();\r\n var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\r\n var itemTitleModel = itemModel.getModel('title');\r\n if (itemTitleModel.get('show')) {\r\n var titleOffsetCenter = itemTitleModel.get('offsetCenter');\r\n var titleX = posInfo.cx + parsePercent$2(titleOffsetCenter[0], posInfo.r);\r\n var titleY = posInfo.cy + parsePercent$2(titleOffsetCenter[1], posInfo.r);\r\n var labelEl = newTitleEls[idx];\r\n labelEl.attr({\r\n style: createTextStyle(itemTitleModel, {\r\n x: titleX,\r\n y: titleY,\r\n text: data.getName(idx),\r\n align: 'center',\r\n verticalAlign: 'middle'\r\n }, { inheritColor: autoColor })\r\n });\r\n setLabelValueAnimation(labelEl, { normal: itemTitleModel }, seriesModel.getRawValue(idx), function () { return data.getName(idx); });\r\n hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel);\r\n itemGroup.add(labelEl);\r\n }\r\n var itemDetailModel = itemModel.getModel('detail');\r\n if (itemDetailModel.get('show')) {\r\n var detailOffsetCenter = itemDetailModel.get('offsetCenter');\r\n var detailX = posInfo.cx + parsePercent$2(detailOffsetCenter[0], posInfo.r);\r\n var detailY = posInfo.cy + parsePercent$2(detailOffsetCenter[1], posInfo.r);\r\n var width = parsePercent$2(itemDetailModel.get('width'), posInfo.r);\r\n var height = parsePercent$2(itemDetailModel.get('height'), posInfo.r);\r\n var detailColor = (seriesModel.get(['progress', 'show']) ? data.getItemVisual(idx, 'style').fill : autoColor);\r\n var labelEl = newDetailEls[idx];\r\n var formatter_1 = itemDetailModel.get('formatter');\r\n labelEl.attr({\r\n style: createTextStyle(itemDetailModel, {\r\n x: detailX,\r\n y: detailY,\r\n text: formatLabel(value, formatter_1),\r\n width: isNaN(width) ? null : width,\r\n height: isNaN(height) ? null : height,\r\n align: 'center',\r\n verticalAlign: 'middle'\r\n }, { inheritColor: detailColor })\r\n });\r\n setLabelValueAnimation(labelEl, { normal: itemDetailModel }, seriesModel.getRawValue(idx), function (value) { return formatLabel(value, formatter_1); });\r\n hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel);\r\n itemGroup.add(labelEl);\r\n }\r\n contentGroup.add(itemGroup);\r\n });\r\n this.group.add(contentGroup);\r\n this._titleEls = newTitleEls;\r\n this._detailEls = newDetailEls;\r\n };\r\n GaugeView.type = 'gauge';\r\n return GaugeView;\r\n}(ChartView));\r\nChartView.registerClass(GaugeView);\n\nvar FunnelSeriesModel = (function (_super) {\r\n __extends(FunnelSeriesModel, _super);\r\n function FunnelSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = FunnelSeriesModel.type;\r\n _this.useColorPaletteOnData = true;\r\n return _this;\r\n }\r\n FunnelSeriesModel.prototype.init = function (option) {\r\n _super.prototype.init.apply(this, arguments);\r\n this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n this._defaultLabelLine(option);\r\n };\r\n FunnelSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListSimply(this, {\r\n coordDimensions: ['value'],\r\n encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n });\r\n };\r\n FunnelSeriesModel.prototype._defaultLabelLine = function (option) {\r\n defaultEmphasis(option, 'labelLine', ['show']);\r\n var labelLineNormalOpt = option.labelLine;\r\n var labelLineEmphasisOpt = option.emphasis.labelLine;\r\n labelLineNormalOpt.show = labelLineNormalOpt.show\r\n && option.label.show;\r\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show\r\n && option.emphasis.label.show;\r\n };\r\n FunnelSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n var data = this.getData();\r\n var params = _super.prototype.getDataParams.call(this, dataIndex);\r\n var valueDim = data.mapDimension('value');\r\n var sum = data.getSum(valueDim);\r\n params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2);\r\n params.$vars.push('percent');\r\n return params;\r\n };\r\n FunnelSeriesModel.type = 'series.funnel';\r\n FunnelSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n legendHoverLink: true,\r\n left: 80,\r\n top: 60,\r\n right: 80,\r\n bottom: 60,\r\n minSize: '0%',\r\n maxSize: '100%',\r\n sort: 'descending',\r\n orient: 'vertical',\r\n gap: 0,\r\n funnelAlign: 'center',\r\n label: {\r\n show: true,\r\n position: 'outer'\r\n },\r\n labelLine: {\r\n show: true,\r\n length: 20,\r\n lineStyle: {\r\n width: 1\r\n }\r\n },\r\n itemStyle: {\r\n borderColor: '#fff',\r\n borderWidth: 1\r\n },\r\n emphasis: {\r\n label: {\r\n show: true\r\n }\r\n },\r\n select: {\r\n itemStyle: {\r\n borderColor: '#212121'\r\n }\r\n }\r\n };\r\n return FunnelSeriesModel;\r\n}(SeriesModel));\r\nComponentModel.registerClass(FunnelSeriesModel);\n\nvar opacityAccessPath = ['itemStyle', 'opacity'];\r\nvar FunnelPiece = (function (_super) {\r\n __extends(FunnelPiece, _super);\r\n function FunnelPiece(data, idx) {\r\n var _this = _super.call(this) || this;\r\n var polygon = _this;\r\n var labelLine = new Polyline();\r\n var text = new ZRText();\r\n polygon.setTextContent(text);\r\n _this.setTextGuideLine(labelLine);\r\n _this.updateData(data, idx, true);\r\n return _this;\r\n }\r\n FunnelPiece.prototype.updateData = function (data, idx, firstCreate) {\r\n var polygon = this;\r\n var seriesModel = data.hostModel;\r\n var itemModel = data.getItemModel(idx);\r\n var layout = data.getItemLayout(idx);\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n var opacity = itemModel.get(opacityAccessPath);\r\n opacity = opacity == null ? 1 : opacity;\r\n polygon.useStyle(data.getItemVisual(idx, 'style'));\r\n polygon.style.lineJoin = 'round';\r\n if (firstCreate) {\r\n polygon.setShape({\r\n points: layout.points\r\n });\r\n polygon.style.opacity = 0;\r\n initProps(polygon, {\r\n style: {\r\n opacity: opacity\r\n }\r\n }, seriesModel, idx);\r\n }\r\n else {\r\n updateProps(polygon, {\r\n style: {\r\n opacity: opacity\r\n },\r\n shape: {\r\n points: layout.points\r\n }\r\n }, seriesModel, idx);\r\n }\r\n setStatesStylesFromModel(polygon, itemModel);\r\n this._updateLabel(data, idx);\r\n enableHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n };\r\n FunnelPiece.prototype._updateLabel = function (data, idx) {\r\n var polygon = this;\r\n var labelLine = this.getTextGuideLine();\r\n var labelText = polygon.getTextContent();\r\n var seriesModel = data.hostModel;\r\n var itemModel = data.getItemModel(idx);\r\n var layout = data.getItemLayout(idx);\r\n var labelLayout = layout.label;\r\n var style = data.getItemVisual(idx, 'style');\r\n var visualColor = style.fill;\r\n setLabelStyle(labelText, getLabelStatesModels(itemModel), {\r\n labelFetcher: data.hostModel,\r\n labelDataIndex: idx,\r\n defaultOpacity: style.opacity,\r\n defaultText: data.getName(idx)\r\n }, { normal: {\r\n align: labelLayout.textAlign,\r\n verticalAlign: labelLayout.verticalAlign\r\n } });\r\n polygon.setTextConfig({\r\n local: true,\r\n inside: !!labelLayout.inside,\r\n insideStroke: visualColor,\r\n outsideFill: visualColor\r\n });\r\n var linePoints = labelLayout.linePoints;\r\n labelLine.setShape({\r\n points: linePoints\r\n });\r\n polygon.textGuideLineConfig = {\r\n anchor: linePoints ? new Point(linePoints[0][0], linePoints[0][1]) : null\r\n };\r\n updateProps(labelText, {\r\n style: {\r\n x: labelLayout.x,\r\n y: labelLayout.y\r\n }\r\n }, seriesModel, idx);\r\n labelText.attr({\r\n rotation: labelLayout.rotation,\r\n originX: labelLayout.x,\r\n originY: labelLayout.y,\r\n z2: 10\r\n });\r\n setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), {\r\n stroke: visualColor\r\n });\r\n };\r\n return FunnelPiece;\r\n}(Polygon));\r\nvar FunnelView = (function (_super) {\r\n __extends(FunnelView, _super);\r\n function FunnelView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = FunnelView.type;\r\n _this.ignoreLabelLineUpdate = true;\r\n return _this;\r\n }\r\n FunnelView.prototype.render = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var oldData = this._data;\r\n var group = this.group;\r\n data.diff(oldData)\r\n .add(function (idx) {\r\n var funnelPiece = new FunnelPiece(data, idx);\r\n data.setItemGraphicEl(idx, funnelPiece);\r\n group.add(funnelPiece);\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n var piece = oldData.getItemGraphicEl(oldIdx);\r\n piece.updateData(data, newIdx);\r\n group.add(piece);\r\n data.setItemGraphicEl(newIdx, piece);\r\n })\r\n .remove(function (idx) {\r\n var piece = oldData.getItemGraphicEl(idx);\r\n removeElementWithFadeOut(piece, seriesModel, idx);\r\n })\r\n .execute();\r\n this._data = data;\r\n };\r\n FunnelView.prototype.remove = function () {\r\n this.group.removeAll();\r\n this._data = null;\r\n };\r\n FunnelView.prototype.dispose = function () { };\r\n FunnelView.type = 'funnel';\r\n return FunnelView;\r\n}(ChartView));\r\nChartView.registerClass(FunnelView);\n\nfunction getViewRect$3(seriesModel, api) {\r\n return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n}\r\nfunction getSortedIndices(data, sort) {\r\n var valueDim = data.mapDimension('value');\r\n var valueArr = data.mapArray(valueDim, function (val) {\r\n return val;\r\n });\r\n var indices = [];\r\n var isAscending = sort === 'ascending';\r\n for (var i = 0, len = data.count(); i < len; i++) {\r\n indices[i] = i;\r\n }\r\n if (typeof sort === 'function') {\r\n indices.sort(sort);\r\n }\r\n else if (sort !== 'none') {\r\n indices.sort(function (a, b) {\r\n return isAscending\r\n ? valueArr[a] - valueArr[b]\r\n : valueArr[b] - valueArr[a];\r\n });\r\n }\r\n return indices;\r\n}\r\nfunction labelLayout(data) {\r\n var seriesModel = data.hostModel;\r\n var orient = seriesModel.get('orient');\r\n data.each(function (idx) {\r\n var itemModel = data.getItemModel(idx);\r\n var labelModel = itemModel.getModel('label');\r\n var labelPosition = labelModel.get('position');\r\n var labelLineModel = itemModel.getModel('labelLine');\r\n var layout = data.getItemLayout(idx);\r\n var points = layout.points;\r\n var isLabelInside = labelPosition === 'inner'\r\n || labelPosition === 'inside' || labelPosition === 'center'\r\n || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\r\n var textAlign;\r\n var textX;\r\n var textY;\r\n var linePoints;\r\n if (isLabelInside) {\r\n if (labelPosition === 'insideLeft') {\r\n textX = (points[0][0] + points[3][0]) / 2 + 5;\r\n textY = (points[0][1] + points[3][1]) / 2;\r\n textAlign = 'left';\r\n }\r\n else if (labelPosition === 'insideRight') {\r\n textX = (points[1][0] + points[2][0]) / 2 - 5;\r\n textY = (points[1][1] + points[2][1]) / 2;\r\n textAlign = 'right';\r\n }\r\n else {\r\n textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\r\n textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\r\n textAlign = 'center';\r\n }\r\n linePoints = [\r\n [textX, textY], [textX, textY]\r\n ];\r\n }\r\n else {\r\n var x1 = void 0;\r\n var y1 = void 0;\r\n var x2 = void 0;\r\n var y2 = void 0;\r\n var labelLineLen = labelLineModel.get('length');\r\n if (__DEV__) {\r\n if (orient === 'vertical' && ['top', 'bottom'].indexOf(labelPosition) > -1) {\r\n labelPosition = 'left';\r\n console.warn('Position error: Funnel chart on vertical orient dose not support top and bottom.');\r\n }\r\n if (orient === 'horizontal' && ['left', 'right'].indexOf(labelPosition) > -1) {\r\n labelPosition = 'bottom';\r\n console.warn('Position error: Funnel chart on horizontal orient dose not support left and right.');\r\n }\r\n }\r\n if (labelPosition === 'left') {\r\n x1 = (points[3][0] + points[0][0]) / 2;\r\n y1 = (points[3][1] + points[0][1]) / 2;\r\n x2 = x1 - labelLineLen;\r\n textX = x2 - 5;\r\n textAlign = 'right';\r\n }\r\n else if (labelPosition === 'right') {\r\n x1 = (points[1][0] + points[2][0]) / 2;\r\n y1 = (points[1][1] + points[2][1]) / 2;\r\n x2 = x1 + labelLineLen;\r\n textX = x2 + 5;\r\n textAlign = 'left';\r\n }\r\n else if (labelPosition === 'top') {\r\n x1 = (points[3][0] + points[0][0]) / 2;\r\n y1 = (points[3][1] + points[0][1]) / 2;\r\n y2 = y1 - labelLineLen;\r\n textY = y2 - 5;\r\n textAlign = 'center';\r\n }\r\n else if (labelPosition === 'bottom') {\r\n x1 = (points[1][0] + points[2][0]) / 2;\r\n y1 = (points[1][1] + points[2][1]) / 2;\r\n y2 = y1 + labelLineLen;\r\n textY = y2 + 5;\r\n textAlign = 'center';\r\n }\r\n else if (labelPosition === 'rightTop') {\r\n x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\r\n y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\r\n if (orient === 'horizontal') {\r\n y2 = y1 - labelLineLen;\r\n textY = y2 - 5;\r\n textAlign = 'center';\r\n }\r\n else {\r\n x2 = x1 + labelLineLen;\r\n textX = x2 + 5;\r\n textAlign = 'top';\r\n }\r\n }\r\n else if (labelPosition === 'rightBottom') {\r\n x1 = points[2][0];\r\n y1 = points[2][1];\r\n if (orient === 'horizontal') {\r\n y2 = y1 + labelLineLen;\r\n textY = y2 + 5;\r\n textAlign = 'center';\r\n }\r\n else {\r\n x2 = x1 + labelLineLen;\r\n textX = x2 + 5;\r\n textAlign = 'bottom';\r\n }\r\n }\r\n else if (labelPosition === 'leftTop') {\r\n x1 = points[0][0];\r\n y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\r\n if (orient === 'horizontal') {\r\n y2 = y1 - labelLineLen;\r\n textY = y2 - 5;\r\n textAlign = 'center';\r\n }\r\n else {\r\n x2 = x1 - labelLineLen;\r\n textX = x2 - 5;\r\n textAlign = 'right';\r\n }\r\n }\r\n else if (labelPosition === 'leftBottom') {\r\n x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\r\n y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\r\n if (orient === 'horizontal') {\r\n y2 = y1 + labelLineLen;\r\n textY = y2 + 5;\r\n textAlign = 'center';\r\n }\r\n else {\r\n x2 = x1 - labelLineLen;\r\n textX = x2 - 5;\r\n textAlign = 'right';\r\n }\r\n }\r\n else {\r\n x1 = (points[1][0] + points[2][0]) / 2;\r\n y1 = (points[1][1] + points[2][1]) / 2;\r\n if (orient === 'horizontal') {\r\n y2 = y1 + labelLineLen;\r\n textY = y2 + 5;\r\n textAlign = 'center';\r\n }\r\n else {\r\n x2 = x1 + labelLineLen;\r\n textX = x2 + 5;\r\n textAlign = 'left';\r\n }\r\n }\r\n if (orient === 'horizontal') {\r\n x2 = x1;\r\n textX = x2;\r\n }\r\n else {\r\n y2 = y1;\r\n textY = y2;\r\n }\r\n linePoints = [[x1, y1], [x2, y2]];\r\n }\r\n layout.label = {\r\n linePoints: linePoints,\r\n x: textX,\r\n y: textY,\r\n verticalAlign: 'middle',\r\n textAlign: textAlign,\r\n inside: isLabelInside\r\n };\r\n });\r\n}\r\nfunction funnelLayout(ecModel, api) {\r\n ecModel.eachSeriesByType('funnel', function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var valueDim = data.mapDimension('value');\r\n var sort = seriesModel.get('sort');\r\n var viewRect = getViewRect$3(seriesModel, api);\r\n var orient = seriesModel.get('orient');\r\n var viewWidth = viewRect.width;\r\n var viewHeight = viewRect.height;\r\n var indices = getSortedIndices(data, sort);\r\n var x = viewRect.x;\r\n var y = viewRect.y;\r\n var sizeExtent = orient === 'horizontal' ? [\r\n parsePercent$2(seriesModel.get('minSize'), viewHeight),\r\n parsePercent$2(seriesModel.get('maxSize'), viewHeight)\r\n ] : [\r\n parsePercent$2(seriesModel.get('minSize'), viewWidth),\r\n parsePercent$2(seriesModel.get('maxSize'), viewWidth)\r\n ];\r\n var dataExtent = data.getDataExtent(valueDim);\r\n var min = seriesModel.get('min');\r\n var max = seriesModel.get('max');\r\n if (min == null) {\r\n min = Math.min(dataExtent[0], 0);\r\n }\r\n if (max == null) {\r\n max = dataExtent[1];\r\n }\r\n var funnelAlign = seriesModel.get('funnelAlign');\r\n var gap = seriesModel.get('gap');\r\n var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\r\n var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\r\n var getLinePoints = function (idx, offset) {\r\n if (orient === 'horizontal') {\r\n var val_1 = data.get(valueDim, idx) || 0;\r\n var itemHeight = linearMap(val_1, [min, max], sizeExtent, true);\r\n var y0 = void 0;\r\n switch (funnelAlign) {\r\n case 'top':\r\n y0 = y;\r\n break;\r\n case 'center':\r\n y0 = y + (viewHeight - itemHeight) / 2;\r\n break;\r\n case 'bottom':\r\n y0 = y + (viewHeight - itemHeight);\r\n break;\r\n }\r\n return [\r\n [offset, y0],\r\n [offset, y0 + itemHeight]\r\n ];\r\n }\r\n var val = data.get(valueDim, idx) || 0;\r\n var itemWidth = linearMap(val, [min, max], sizeExtent, true);\r\n var x0;\r\n switch (funnelAlign) {\r\n case 'left':\r\n x0 = x;\r\n break;\r\n case 'center':\r\n x0 = x + (viewWidth - itemWidth) / 2;\r\n break;\r\n case 'right':\r\n x0 = x + viewWidth - itemWidth;\r\n break;\r\n }\r\n return [\r\n [x0, offset],\r\n [x0 + itemWidth, offset]\r\n ];\r\n };\r\n if (sort === 'ascending') {\r\n itemSize = -itemSize;\r\n gap = -gap;\r\n if (orient === 'horizontal') {\r\n x += viewWidth;\r\n }\r\n else {\r\n y += viewHeight;\r\n }\r\n indices = indices.reverse();\r\n }\r\n for (var i = 0; i < indices.length; i++) {\r\n var idx = indices[i];\r\n var nextIdx = indices[i + 1];\r\n var itemModel = data.getItemModel(idx);\r\n if (orient === 'horizontal') {\r\n var width = itemModel.get(['itemStyle', 'width']);\r\n if (width == null) {\r\n width = itemSize;\r\n }\r\n else {\r\n width = parsePercent$2(width, viewWidth);\r\n if (sort === 'ascending') {\r\n width = -width;\r\n }\r\n }\r\n var start = getLinePoints(idx, x);\r\n var end = getLinePoints(nextIdx, x + width);\r\n x += width + gap;\r\n data.setItemLayout(idx, {\r\n points: start.concat(end.slice().reverse())\r\n });\r\n }\r\n else {\r\n var height = itemModel.get(['itemStyle', 'height']);\r\n if (height == null) {\r\n height = itemSize;\r\n }\r\n else {\r\n height = parsePercent$2(height, viewHeight);\r\n if (sort === 'ascending') {\r\n height = -height;\r\n }\r\n }\r\n var start = getLinePoints(idx, y);\r\n var end = getLinePoints(nextIdx, y + height);\r\n y += height + gap;\r\n data.setItemLayout(idx, {\r\n points: start.concat(end.slice().reverse())\r\n });\r\n }\r\n }\r\n labelLayout(data);\r\n });\r\n}\n\nregisterLayout(funnelLayout);\r\nregisterProcessor(dataFilter('funnel'));\n\nfunction parallelPreprocessor(option) {\r\n createParallelIfNeeded(option);\r\n mergeAxisOptionFromParallel(option);\r\n}\r\nfunction createParallelIfNeeded(option) {\r\n if (option.parallel) {\r\n return;\r\n }\r\n var hasParallelSeries = false;\r\n each(option.series, function (seriesOpt) {\r\n if (seriesOpt && seriesOpt.type === 'parallel') {\r\n hasParallelSeries = true;\r\n }\r\n });\r\n if (hasParallelSeries) {\r\n option.parallel = [{}];\r\n }\r\n}\r\nfunction mergeAxisOptionFromParallel(option) {\r\n var axes = normalizeToArray(option.parallelAxis);\r\n each(axes, function (axisOption) {\r\n if (!isObject(axisOption)) {\r\n return;\r\n }\r\n var parallelIndex = axisOption.parallelIndex || 0;\r\n var parallelOption = normalizeToArray(option.parallel)[parallelIndex];\r\n if (parallelOption && parallelOption.parallelAxisDefault) {\r\n merge(axisOption, parallelOption.parallelAxisDefault, false);\r\n }\r\n });\r\n}\n\nvar ParallelAxis = (function (_super) {\r\n __extends(ParallelAxis, _super);\r\n function ParallelAxis(dim, scale, coordExtent, axisType, axisIndex) {\r\n var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n _this.type = axisType || 'value';\r\n _this.axisIndex = axisIndex;\r\n return _this;\r\n }\r\n ParallelAxis.prototype.isHorizontal = function () {\r\n return this.coordinateSystem.getModel().get('layout') !== 'horizontal';\r\n };\r\n return ParallelAxis;\r\n}(Axis));\n\nfunction sliderMove(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\r\n delta = delta || 0;\r\n var extentSpan = extent[1] - extent[0];\r\n if (minSpan != null) {\r\n minSpan = restrict(minSpan, [0, extentSpan]);\r\n }\r\n if (maxSpan != null) {\r\n maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\r\n }\r\n if (handleIndex === 'all') {\r\n var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\r\n handleSpan = restrict(handleSpan, [0, extentSpan]);\r\n minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\r\n handleIndex = 0;\r\n }\r\n handleEnds[0] = restrict(handleEnds[0], extent);\r\n handleEnds[1] = restrict(handleEnds[1], extent);\r\n var originalDistSign = getSpanSign(handleEnds, handleIndex);\r\n handleEnds[handleIndex] += delta;\r\n var extentMinSpan = minSpan || 0;\r\n var realExtent = extent.slice();\r\n originalDistSign.sign < 0 ? (realExtent[0] += extentMinSpan) : (realExtent[1] -= extentMinSpan);\r\n handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent);\r\n var currDistSign;\r\n currDistSign = getSpanSign(handleEnds, handleIndex);\r\n if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\r\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\r\n }\r\n currDistSign = getSpanSign(handleEnds, handleIndex);\r\n if (maxSpan != null && currDistSign.span > maxSpan) {\r\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\r\n }\r\n return handleEnds;\r\n}\r\nfunction getSpanSign(handleEnds, handleIndex) {\r\n var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex];\r\n return { span: Math.abs(dist), sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1 };\r\n}\r\nfunction restrict(value, extend) {\r\n return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\r\n}\n\nvar each$6 = each;\r\nvar mathMin$8 = Math.min;\r\nvar mathMax$8 = Math.max;\r\nvar mathFloor$2 = Math.floor;\r\nvar mathCeil$1 = Math.ceil;\r\nvar round$2 = round$1;\r\nvar PI$8 = Math.PI;\r\nvar Parallel = (function () {\r\n function Parallel(parallelModel, ecModel, api) {\r\n this.type = 'parallel';\r\n this._axesMap = createHashMap();\r\n this._axesLayout = {};\r\n this.dimensions = parallelModel.dimensions;\r\n this._model = parallelModel;\r\n this._init(parallelModel, ecModel, api);\r\n }\r\n Parallel.prototype._init = function (parallelModel, ecModel, api) {\r\n var dimensions = parallelModel.dimensions;\r\n var parallelAxisIndex = parallelModel.parallelAxisIndex;\r\n each$6(dimensions, function (dim, idx) {\r\n var axisIndex = parallelAxisIndex[idx];\r\n var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\r\n var axis = this._axesMap.set(dim, new ParallelAxis(dim, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex));\r\n var isCategory = axis.type === 'category';\r\n axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n axis.inverse = axisModel.get('inverse');\r\n axisModel.axis = axis;\r\n axis.model = axisModel;\r\n axis.coordinateSystem = axisModel.coordinateSystem = this;\r\n }, this);\r\n };\r\n Parallel.prototype.update = function (ecModel, api) {\r\n this._updateAxesFromSeries(this._model, ecModel);\r\n };\r\n Parallel.prototype.containPoint = function (point) {\r\n var layoutInfo = this._makeLayoutInfo();\r\n var axisBase = layoutInfo.axisBase;\r\n var layoutBase = layoutInfo.layoutBase;\r\n var pixelDimIndex = layoutInfo.pixelDimIndex;\r\n var pAxis = point[1 - pixelDimIndex];\r\n var pLayout = point[pixelDimIndex];\r\n return pAxis >= axisBase\r\n && pAxis <= axisBase + layoutInfo.axisLength\r\n && pLayout >= layoutBase\r\n && pLayout <= layoutBase + layoutInfo.layoutLength;\r\n };\r\n Parallel.prototype.getModel = function () {\r\n return this._model;\r\n };\r\n Parallel.prototype._updateAxesFromSeries = function (parallelModel, ecModel) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (!parallelModel.contains(seriesModel, ecModel)) {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n each$6(this.dimensions, function (dim) {\r\n var axis = this._axesMap.get(dim);\r\n axis.scale.unionExtentFromData(data, data.mapDimension(dim));\r\n niceScaleExtent(axis.scale, axis.model);\r\n }, this);\r\n }, this);\r\n };\r\n Parallel.prototype.resize = function (parallelModel, api) {\r\n this._rect = getLayoutRect(parallelModel.getBoxLayoutParams(), {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n this._layoutAxes();\r\n };\r\n Parallel.prototype.getRect = function () {\r\n return this._rect;\r\n };\r\n Parallel.prototype._makeLayoutInfo = function () {\r\n var parallelModel = this._model;\r\n var rect = this._rect;\r\n var xy = ['x', 'y'];\r\n var wh = ['width', 'height'];\r\n var layout = parallelModel.get('layout');\r\n var pixelDimIndex = layout === 'horizontal' ? 0 : 1;\r\n var layoutLength = rect[wh[pixelDimIndex]];\r\n var layoutExtent = [0, layoutLength];\r\n var axisCount = this.dimensions.length;\r\n var axisExpandWidth = restrict$1(parallelModel.get('axisExpandWidth'), layoutExtent);\r\n var axisExpandCount = restrict$1(parallelModel.get('axisExpandCount') || 0, [0, axisCount]);\r\n var axisExpandable = parallelModel.get('axisExpandable')\r\n && axisCount > 3\r\n && axisCount > axisExpandCount\r\n && axisExpandCount > 1\r\n && axisExpandWidth > 0\r\n && layoutLength > 0;\r\n var axisExpandWindow = parallelModel.get('axisExpandWindow');\r\n var winSize;\r\n if (!axisExpandWindow) {\r\n winSize = restrict$1(axisExpandWidth * (axisExpandCount - 1), layoutExtent);\r\n var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor$2(axisCount / 2);\r\n axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];\r\n axisExpandWindow[1] = axisExpandWindow[0] + winSize;\r\n }\r\n else {\r\n winSize = restrict$1(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);\r\n axisExpandWindow[1] = axisExpandWindow[0] + winSize;\r\n }\r\n var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount);\r\n axisCollapseWidth < 3 && (axisCollapseWidth = 0);\r\n var winInnerIndices = [\r\n mathFloor$2(round$2(axisExpandWindow[0] / axisExpandWidth, 1)) + 1,\r\n mathCeil$1(round$2(axisExpandWindow[1] / axisExpandWidth, 1)) - 1\r\n ];\r\n var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];\r\n return {\r\n layout: layout,\r\n pixelDimIndex: pixelDimIndex,\r\n layoutBase: rect[xy[pixelDimIndex]],\r\n layoutLength: layoutLength,\r\n axisBase: rect[xy[1 - pixelDimIndex]],\r\n axisLength: rect[wh[1 - pixelDimIndex]],\r\n axisExpandable: axisExpandable,\r\n axisExpandWidth: axisExpandWidth,\r\n axisCollapseWidth: axisCollapseWidth,\r\n axisExpandWindow: axisExpandWindow,\r\n axisCount: axisCount,\r\n winInnerIndices: winInnerIndices,\r\n axisExpandWindow0Pos: axisExpandWindow0Pos\r\n };\r\n };\r\n Parallel.prototype._layoutAxes = function () {\r\n var rect = this._rect;\r\n var axes = this._axesMap;\r\n var dimensions = this.dimensions;\r\n var layoutInfo = this._makeLayoutInfo();\r\n var layout = layoutInfo.layout;\r\n axes.each(function (axis) {\r\n var axisExtent = [0, layoutInfo.axisLength];\r\n var idx = axis.inverse ? 1 : 0;\r\n axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);\r\n });\r\n each$6(dimensions, function (dim, idx) {\r\n var posInfo = (layoutInfo.axisExpandable\r\n ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);\r\n var positionTable = {\r\n horizontal: {\r\n x: posInfo.position,\r\n y: layoutInfo.axisLength\r\n },\r\n vertical: {\r\n x: 0,\r\n y: posInfo.position\r\n }\r\n };\r\n var rotationTable = {\r\n horizontal: PI$8 / 2,\r\n vertical: 0\r\n };\r\n var position = [\r\n positionTable[layout].x + rect.x,\r\n positionTable[layout].y + rect.y\r\n ];\r\n var rotation = rotationTable[layout];\r\n var transform = create$1();\r\n rotate(transform, transform, rotation);\r\n translate(transform, transform, position);\r\n this._axesLayout[dim] = {\r\n position: position,\r\n rotation: rotation,\r\n transform: transform,\r\n axisNameAvailableWidth: posInfo.axisNameAvailableWidth,\r\n axisLabelShow: posInfo.axisLabelShow,\r\n nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,\r\n tickDirection: 1,\r\n labelDirection: 1\r\n };\r\n }, this);\r\n };\r\n Parallel.prototype.getAxis = function (dim) {\r\n return this._axesMap.get(dim);\r\n };\r\n Parallel.prototype.dataToPoint = function (value, dim) {\r\n return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);\r\n };\r\n Parallel.prototype.eachActiveState = function (data, callback, start, end) {\r\n start == null && (start = 0);\r\n end == null && (end = data.count());\r\n var axesMap = this._axesMap;\r\n var dimensions = this.dimensions;\r\n var dataDimensions = [];\r\n var axisModels = [];\r\n each(dimensions, function (axisDim) {\r\n dataDimensions.push(data.mapDimension(axisDim));\r\n axisModels.push(axesMap.get(axisDim).model);\r\n });\r\n var hasActiveSet = this.hasAxisBrushed();\r\n for (var dataIndex = start; dataIndex < end; dataIndex++) {\r\n var activeState = void 0;\r\n if (!hasActiveSet) {\r\n activeState = 'normal';\r\n }\r\n else {\r\n activeState = 'active';\r\n var values = data.getValues(dataDimensions, dataIndex);\r\n for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\r\n var state = axisModels[j].getActiveState(values[j]);\r\n if (state === 'inactive') {\r\n activeState = 'inactive';\r\n break;\r\n }\r\n }\r\n }\r\n callback(activeState, dataIndex);\r\n }\r\n };\r\n Parallel.prototype.hasAxisBrushed = function () {\r\n var dimensions = this.dimensions;\r\n var axesMap = this._axesMap;\r\n var hasActiveSet = false;\r\n for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\r\n if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') {\r\n hasActiveSet = true;\r\n }\r\n }\r\n return hasActiveSet;\r\n };\r\n Parallel.prototype.axisCoordToPoint = function (coord, dim) {\r\n var axisLayout = this._axesLayout[dim];\r\n return applyTransform$1([coord, 0], axisLayout.transform);\r\n };\r\n Parallel.prototype.getAxisLayout = function (dim) {\r\n return clone(this._axesLayout[dim]);\r\n };\r\n Parallel.prototype.getSlidedAxisExpandWindow = function (point) {\r\n var layoutInfo = this._makeLayoutInfo();\r\n var pixelDimIndex = layoutInfo.pixelDimIndex;\r\n var axisExpandWindow = layoutInfo.axisExpandWindow.slice();\r\n var winSize = axisExpandWindow[1] - axisExpandWindow[0];\r\n var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)];\r\n if (!this.containPoint(point)) {\r\n return { behavior: 'none', axisExpandWindow: axisExpandWindow };\r\n }\r\n var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos;\r\n var delta;\r\n var behavior = 'slide';\r\n var axisCollapseWidth = layoutInfo.axisCollapseWidth;\r\n var triggerArea = this._model.get('axisExpandSlideTriggerArea');\r\n var useJump = triggerArea[0] != null;\r\n if (axisCollapseWidth) {\r\n if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {\r\n behavior = 'jump';\r\n delta = pointCoord - winSize * triggerArea[2];\r\n }\r\n else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {\r\n behavior = 'jump';\r\n delta = pointCoord - winSize * (1 - triggerArea[2]);\r\n }\r\n else {\r\n (delta = pointCoord - winSize * triggerArea[1]) >= 0\r\n && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0\r\n && (delta = 0);\r\n }\r\n delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;\r\n delta\r\n ? sliderMove(delta, axisExpandWindow, extent, 'all')\r\n : (behavior = 'none');\r\n }\r\n else {\r\n var winSize2 = axisExpandWindow[1] - axisExpandWindow[0];\r\n var pos = extent[1] * pointCoord / winSize2;\r\n axisExpandWindow = [mathMax$8(0, pos - winSize2 / 2)];\r\n axisExpandWindow[1] = mathMin$8(extent[1], axisExpandWindow[0] + winSize2);\r\n axisExpandWindow[0] = axisExpandWindow[1] - winSize2;\r\n }\r\n return {\r\n axisExpandWindow: axisExpandWindow,\r\n behavior: behavior\r\n };\r\n };\r\n return Parallel;\r\n}());\r\nfunction restrict$1(len, extent) {\r\n return mathMin$8(mathMax$8(len, extent[0]), extent[1]);\r\n}\r\nfunction layoutAxisWithoutExpand(axisIndex, layoutInfo) {\r\n var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);\r\n return {\r\n position: step * axisIndex,\r\n axisNameAvailableWidth: step,\r\n axisLabelShow: true\r\n };\r\n}\r\nfunction layoutAxisWithExpand(axisIndex, layoutInfo) {\r\n var layoutLength = layoutInfo.layoutLength;\r\n var axisExpandWidth = layoutInfo.axisExpandWidth;\r\n var axisCount = layoutInfo.axisCount;\r\n var axisCollapseWidth = layoutInfo.axisCollapseWidth;\r\n var winInnerIndices = layoutInfo.winInnerIndices;\r\n var position;\r\n var axisNameAvailableWidth = axisCollapseWidth;\r\n var axisLabelShow = false;\r\n var nameTruncateMaxWidth;\r\n if (axisIndex < winInnerIndices[0]) {\r\n position = axisIndex * axisCollapseWidth;\r\n nameTruncateMaxWidth = axisCollapseWidth;\r\n }\r\n else if (axisIndex <= winInnerIndices[1]) {\r\n position = layoutInfo.axisExpandWindow0Pos\r\n + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];\r\n axisNameAvailableWidth = axisExpandWidth;\r\n axisLabelShow = true;\r\n }\r\n else {\r\n position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;\r\n nameTruncateMaxWidth = axisCollapseWidth;\r\n }\r\n return {\r\n position: position,\r\n axisNameAvailableWidth: axisNameAvailableWidth,\r\n axisLabelShow: axisLabelShow,\r\n nameTruncateMaxWidth: nameTruncateMaxWidth\r\n };\r\n}\n\nfunction create$2(ecModel, api) {\r\n var coordSysList = [];\r\n ecModel.eachComponent('parallel', function (parallelModel, idx) {\r\n var coordSys = new Parallel(parallelModel, ecModel, api);\r\n coordSys.name = 'parallel_' + idx;\r\n coordSys.resize(parallelModel, api);\r\n parallelModel.coordinateSystem = coordSys;\r\n coordSys.model = parallelModel;\r\n coordSysList.push(coordSys);\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (seriesModel.get('coordinateSystem') === 'parallel') {\r\n var parallelModel = seriesModel.getReferringComponents('parallel', SINGLE_REFERRING).models[0];\r\n seriesModel.coordinateSystem = parallelModel.coordinateSystem;\r\n }\r\n });\r\n return coordSysList;\r\n}\r\nCoordinateSystemManager.register('parallel', { create: create$2 });\n\nvar ParallelAxisModel = (function (_super) {\r\n __extends(ParallelAxisModel, _super);\r\n function ParallelAxisModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ParallelAxisModel.type;\r\n _this.activeIntervals = [];\r\n return _this;\r\n }\r\n ParallelAxisModel.prototype.getAreaSelectStyle = function () {\r\n return makeStyleMapper([\r\n ['fill', 'color'],\r\n ['lineWidth', 'borderWidth'],\r\n ['stroke', 'borderColor'],\r\n ['width', 'width'],\r\n ['opacity', 'opacity']\r\n ])(this.getModel('areaSelectStyle'));\r\n };\r\n ParallelAxisModel.prototype.setActiveIntervals = function (intervals) {\r\n var activeIntervals = this.activeIntervals = clone(intervals);\r\n if (activeIntervals) {\r\n for (var i = activeIntervals.length - 1; i >= 0; i--) {\r\n asc(activeIntervals[i]);\r\n }\r\n }\r\n };\r\n ParallelAxisModel.prototype.getActiveState = function (value) {\r\n var activeIntervals = this.activeIntervals;\r\n if (!activeIntervals.length) {\r\n return 'normal';\r\n }\r\n if (value == null || isNaN(+value)) {\r\n return 'inactive';\r\n }\r\n if (activeIntervals.length === 1) {\r\n var interval = activeIntervals[0];\r\n if (interval[0] <= value && value <= interval[1]) {\r\n return 'active';\r\n }\r\n }\r\n else {\r\n for (var i = 0, len = activeIntervals.length; i < len; i++) {\r\n if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {\r\n return 'active';\r\n }\r\n }\r\n }\r\n return 'inactive';\r\n };\r\n return ParallelAxisModel;\r\n}(ComponentModel));\r\nvar defaultOption$1 = {\r\n type: 'value',\r\n areaSelectStyle: {\r\n width: 20,\r\n borderWidth: 1,\r\n borderColor: 'rgba(160,197,232)',\r\n color: 'rgba(160,197,232)',\r\n opacity: 0.3\r\n },\r\n realtime: true,\r\n z: 10\r\n};\r\nComponentModel.registerClass(ParallelAxisModel);\r\nmixin(ParallelAxisModel, AxisModelCommonMixin);\r\naxisModelCreator('parallel', ParallelAxisModel, defaultOption$1);\n\nvar ParallelModel = (function (_super) {\r\n __extends(ParallelModel, _super);\r\n function ParallelModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ParallelModel.type;\r\n return _this;\r\n }\r\n ParallelModel.prototype.init = function () {\r\n _super.prototype.init.apply(this, arguments);\r\n this.mergeOption({});\r\n };\r\n ParallelModel.prototype.mergeOption = function (newOption) {\r\n var thisOption = this.option;\r\n newOption && merge(thisOption, newOption, true);\r\n this._initDimensions();\r\n };\r\n ParallelModel.prototype.contains = function (model, ecModel) {\r\n var parallelIndex = model.get('parallelIndex');\r\n return parallelIndex != null\r\n && ecModel.getComponent('parallel', parallelIndex) === this;\r\n };\r\n ParallelModel.prototype.setAxisExpand = function (opt) {\r\n each([\r\n 'axisExpandable',\r\n 'axisExpandCenter',\r\n 'axisExpandCount',\r\n 'axisExpandWidth',\r\n 'axisExpandWindow'\r\n ], function (name) {\r\n if (opt.hasOwnProperty(name)) {\r\n this.option[name] = opt[name];\r\n }\r\n }, this);\r\n };\r\n ParallelModel.prototype._initDimensions = function () {\r\n var dimensions = this.dimensions = [];\r\n var parallelAxisIndex = this.parallelAxisIndex = [];\r\n var axisModels = filter(this.ecModel.queryComponents({ mainType: 'parallelAxis' }), function (axisModel) {\r\n return (axisModel.get('parallelIndex') || 0) === this.componentIndex;\r\n }, this);\r\n each(axisModels, function (axisModel) {\r\n dimensions.push('dim' + axisModel.get('dim'));\r\n parallelAxisIndex.push(axisModel.componentIndex);\r\n });\r\n };\r\n ParallelModel.type = 'parallel';\r\n ParallelModel.dependencies = ['parallelAxis'];\r\n ParallelModel.layoutMode = 'box';\r\n ParallelModel.defaultOption = {\r\n zlevel: 0,\r\n z: 0,\r\n left: 80,\r\n top: 60,\r\n right: 80,\r\n bottom: 60,\r\n layout: 'horizontal',\r\n axisExpandable: false,\r\n axisExpandCenter: null,\r\n axisExpandCount: 0,\r\n axisExpandWidth: 50,\r\n axisExpandRate: 17,\r\n axisExpandDebounce: 50,\r\n axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],\r\n axisExpandTriggerOn: 'click',\r\n parallelAxisDefault: null\r\n };\r\n return ParallelModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(ParallelModel);\n\nvar actionInfo$1 = {\r\n type: 'axisAreaSelect',\r\n event: 'axisAreaSelected'\r\n};\r\nregisterAction(actionInfo$1, function (payload, ecModel) {\r\n ecModel.eachComponent({ mainType: 'parallelAxis', query: payload }, function (parallelAxisModel) {\r\n parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);\r\n });\r\n});\r\nregisterAction('parallelAxisExpand', function (payload, ecModel) {\r\n ecModel.eachComponent({ mainType: 'parallel', query: payload }, function (parallelModel) {\r\n parallelModel.setAxisExpand(payload);\r\n });\r\n});\n\nvar BRUSH_PANEL_GLOBAL = true;\r\nvar mathMin$9 = Math.min;\r\nvar mathMax$9 = Math.max;\r\nvar mathPow$2 = Math.pow;\r\nvar COVER_Z = 10000;\r\nvar UNSELECT_THRESHOLD = 6;\r\nvar MIN_RESIZE_LINE_WIDTH = 6;\r\nvar MUTEX_RESOURCE_KEY = 'globalPan';\r\nvar DIRECTION_MAP = {\r\n w: [0, 0],\r\n e: [0, 1],\r\n n: [1, 0],\r\n s: [1, 1]\r\n};\r\nvar CURSOR_MAP = {\r\n w: 'ew',\r\n e: 'ew',\r\n n: 'ns',\r\n s: 'ns',\r\n ne: 'nesw',\r\n sw: 'nesw',\r\n nw: 'nwse',\r\n se: 'nwse'\r\n};\r\nvar DEFAULT_BRUSH_OPT = {\r\n brushStyle: {\r\n lineWidth: 2,\r\n stroke: 'rgba(210,219,238,0.3)',\r\n fill: '#D2DBEE'\r\n },\r\n transformable: true,\r\n brushMode: 'single',\r\n removeOnClick: false\r\n};\r\nvar baseUID = 0;\r\nvar BrushController = (function (_super) {\r\n __extends(BrushController, _super);\r\n function BrushController(zr) {\r\n var _this = _super.call(this) || this;\r\n _this._track = [];\r\n _this._covers = [];\r\n _this._handlers = {};\r\n if (__DEV__) {\r\n assert(zr);\r\n }\r\n _this._zr = zr;\r\n _this.group = new Group();\r\n _this._uid = 'brushController_' + baseUID++;\r\n each(pointerHandlers, function (handler, eventName) {\r\n this._handlers[eventName] = bind(handler, this);\r\n }, _this);\r\n return _this;\r\n }\r\n BrushController.prototype.enableBrush = function (brushOption) {\r\n if (__DEV__) {\r\n assert(this._mounted);\r\n }\r\n this._brushType && this._doDisableBrush();\r\n brushOption.brushType && this._doEnableBrush(brushOption);\r\n return this;\r\n };\r\n BrushController.prototype._doEnableBrush = function (brushOption) {\r\n var zr = this._zr;\r\n if (!this._enableGlobalPan) {\r\n take(zr, MUTEX_RESOURCE_KEY, this._uid);\r\n }\r\n each(this._handlers, function (handler, eventName) {\r\n zr.on(eventName, handler);\r\n });\r\n this._brushType = brushOption.brushType;\r\n this._brushOption = merge(clone(DEFAULT_BRUSH_OPT), brushOption, true);\r\n };\r\n BrushController.prototype._doDisableBrush = function () {\r\n var zr = this._zr;\r\n release(zr, MUTEX_RESOURCE_KEY, this._uid);\r\n each(this._handlers, function (handler, eventName) {\r\n zr.off(eventName, handler);\r\n });\r\n this._brushType = this._brushOption = null;\r\n };\r\n BrushController.prototype.setPanels = function (panelOpts) {\r\n if (panelOpts && panelOpts.length) {\r\n var panels_1 = this._panels = {};\r\n each(panelOpts, function (panelOpts) {\r\n panels_1[panelOpts.panelId] = clone(panelOpts);\r\n });\r\n }\r\n else {\r\n this._panels = null;\r\n }\r\n return this;\r\n };\r\n BrushController.prototype.mount = function (opt) {\r\n opt = opt || {};\r\n if (__DEV__) {\r\n this._mounted = true;\r\n }\r\n this._enableGlobalPan = opt.enableGlobalPan;\r\n var thisGroup = this.group;\r\n this._zr.add(thisGroup);\r\n thisGroup.attr({\r\n x: opt.x || 0,\r\n y: opt.y || 0,\r\n rotation: opt.rotation || 0,\r\n scaleX: opt.scaleX || 1,\r\n scaleY: opt.scaleY || 1\r\n });\r\n this._transform = thisGroup.getLocalTransform();\r\n return this;\r\n };\r\n BrushController.prototype.updateCovers = function (coverConfigList) {\r\n if (__DEV__) {\r\n assert(this._mounted);\r\n }\r\n coverConfigList = map(coverConfigList, function (coverConfig) {\r\n return merge(clone(DEFAULT_BRUSH_OPT), coverConfig, true);\r\n });\r\n var tmpIdPrefix = '\\0-brush-index-';\r\n var oldCovers = this._covers;\r\n var newCovers = this._covers = [];\r\n var controller = this;\r\n var creatingCover = this._creatingCover;\r\n (new DataDiffer(oldCovers, coverConfigList, oldGetKey, getKey))\r\n .add(addOrUpdate)\r\n .update(addOrUpdate)\r\n .remove(remove)\r\n .execute();\r\n return this;\r\n function getKey(brushOption, index) {\r\n return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index)\r\n + '-' + brushOption.brushType;\r\n }\r\n function oldGetKey(cover, index) {\r\n return getKey(cover.__brushOption, index);\r\n }\r\n function addOrUpdate(newIndex, oldIndex) {\r\n var newBrushInternal = coverConfigList[newIndex];\r\n if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\r\n newCovers[newIndex] = oldCovers[oldIndex];\r\n }\r\n else {\r\n var cover = newCovers[newIndex] = oldIndex != null\r\n ? (oldCovers[oldIndex].__brushOption = newBrushInternal,\r\n oldCovers[oldIndex])\r\n : endCreating(controller, createCover(controller, newBrushInternal));\r\n updateCoverAfterCreation(controller, cover);\r\n }\r\n }\r\n function remove(oldIndex) {\r\n if (oldCovers[oldIndex] !== creatingCover) {\r\n controller.group.remove(oldCovers[oldIndex]);\r\n }\r\n }\r\n };\r\n BrushController.prototype.unmount = function () {\r\n if (__DEV__) {\r\n if (!this._mounted) {\r\n return;\r\n }\r\n }\r\n this.enableBrush(false);\r\n clearCovers(this);\r\n this._zr.remove(this.group);\r\n if (__DEV__) {\r\n this._mounted = false;\r\n }\r\n return this;\r\n };\r\n BrushController.prototype.dispose = function () {\r\n this.unmount();\r\n this.off();\r\n };\r\n return BrushController;\r\n}(Eventful));\r\nfunction createCover(controller, brushOption) {\r\n var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\r\n cover.__brushOption = brushOption;\r\n updateZ(cover, brushOption);\r\n controller.group.add(cover);\r\n return cover;\r\n}\r\nfunction endCreating(controller, creatingCover) {\r\n var coverRenderer = getCoverRenderer(creatingCover);\r\n if (coverRenderer.endCreating) {\r\n coverRenderer.endCreating(controller, creatingCover);\r\n updateZ(creatingCover, creatingCover.__brushOption);\r\n }\r\n return creatingCover;\r\n}\r\nfunction updateCoverShape(controller, cover) {\r\n var brushOption = cover.__brushOption;\r\n getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\r\n}\r\nfunction updateZ(cover, brushOption) {\r\n var z = brushOption.z;\r\n z == null && (z = COVER_Z);\r\n cover.traverse(function (el) {\r\n el.z = z;\r\n el.z2 = z;\r\n });\r\n}\r\nfunction updateCoverAfterCreation(controller, cover) {\r\n getCoverRenderer(cover).updateCommon(controller, cover);\r\n updateCoverShape(controller, cover);\r\n}\r\nfunction getCoverRenderer(cover) {\r\n return coverRenderers[cover.__brushOption.brushType];\r\n}\r\nfunction getPanelByPoint(controller, e, localCursorPoint) {\r\n var panels = controller._panels;\r\n if (!panels) {\r\n return BRUSH_PANEL_GLOBAL;\r\n }\r\n var panel;\r\n var transform = controller._transform;\r\n each(panels, function (pn) {\r\n pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\r\n });\r\n return panel;\r\n}\r\nfunction getPanelByCover(controller, cover) {\r\n var panels = controller._panels;\r\n if (!panels) {\r\n return BRUSH_PANEL_GLOBAL;\r\n }\r\n var panelId = cover.__brushOption.panelId;\r\n return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL;\r\n}\r\nfunction clearCovers(controller) {\r\n var covers = controller._covers;\r\n var originalLength = covers.length;\r\n each(covers, function (cover) {\r\n controller.group.remove(cover);\r\n }, controller);\r\n covers.length = 0;\r\n return !!originalLength;\r\n}\r\nfunction trigger$1(controller, opt) {\r\n var areas = map(controller._covers, function (cover) {\r\n var brushOption = cover.__brushOption;\r\n var range = clone(brushOption.range);\r\n return {\r\n brushType: brushOption.brushType,\r\n panelId: brushOption.panelId,\r\n range: range\r\n };\r\n });\r\n controller.trigger('brush', {\r\n areas: areas,\r\n isEnd: !!opt.isEnd,\r\n removeOnClick: !!opt.removeOnClick\r\n });\r\n}\r\nfunction shouldShowCover(controller) {\r\n var track = controller._track;\r\n if (!track.length) {\r\n return false;\r\n }\r\n var p2 = track[track.length - 1];\r\n var p1 = track[0];\r\n var dx = p2[0] - p1[0];\r\n var dy = p2[1] - p1[1];\r\n var dist = mathPow$2(dx * dx + dy * dy, 0.5);\r\n return dist > UNSELECT_THRESHOLD;\r\n}\r\nfunction getTrackEnds(track) {\r\n var tail = track.length - 1;\r\n tail < 0 && (tail = 0);\r\n return [track[0], track[tail]];\r\n}\r\nfunction createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) {\r\n var cover = new Group();\r\n cover.add(new Rect({\r\n name: 'main',\r\n style: makeStyle(brushOption),\r\n silent: true,\r\n draggable: true,\r\n cursor: 'move',\r\n drift: curry(driftRect, rectRangeConverter, controller, cover, ['n', 's', 'w', 'e']),\r\n ondragend: curry(trigger$1, controller, { isEnd: true })\r\n }));\r\n each(edgeNameSequences, function (nameSequence) {\r\n cover.add(new Rect({\r\n name: nameSequence.join(''),\r\n style: { opacity: 0 },\r\n draggable: true,\r\n silent: true,\r\n invisible: true,\r\n drift: curry(driftRect, rectRangeConverter, controller, cover, nameSequence),\r\n ondragend: curry(trigger$1, controller, { isEnd: true })\r\n }));\r\n });\r\n return cover;\r\n}\r\nfunction updateBaseRect(controller, cover, localRange, brushOption) {\r\n var lineWidth = brushOption.brushStyle.lineWidth || 0;\r\n var handleSize = mathMax$9(lineWidth, MIN_RESIZE_LINE_WIDTH);\r\n var x = localRange[0][0];\r\n var y = localRange[1][0];\r\n var xa = x - lineWidth / 2;\r\n var ya = y - lineWidth / 2;\r\n var x2 = localRange[0][1];\r\n var y2 = localRange[1][1];\r\n var x2a = x2 - handleSize + lineWidth / 2;\r\n var y2a = y2 - handleSize + lineWidth / 2;\r\n var width = x2 - x;\r\n var height = y2 - y;\r\n var widtha = width + lineWidth;\r\n var heighta = height + lineWidth;\r\n updateRectShape(controller, cover, 'main', x, y, width, height);\r\n if (brushOption.transformable) {\r\n updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\r\n updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\r\n updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\r\n updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\r\n updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\r\n updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\r\n updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\r\n updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\r\n }\r\n}\r\nfunction updateCommon(controller, cover) {\r\n var brushOption = cover.__brushOption;\r\n var transformable = brushOption.transformable;\r\n var mainEl = cover.childAt(0);\r\n mainEl.useStyle(makeStyle(brushOption));\r\n mainEl.attr({\r\n silent: !transformable,\r\n cursor: transformable ? 'move' : 'default'\r\n });\r\n each([['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']], function (nameSequence) {\r\n var el = cover.childOfName(nameSequence.join(''));\r\n var globalDir = nameSequence.length === 1\r\n ? getGlobalDirection1(controller, nameSequence[0])\r\n : getGlobalDirection2(controller, nameSequence);\r\n el && el.attr({\r\n silent: !transformable,\r\n invisible: !transformable,\r\n cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\r\n });\r\n });\r\n}\r\nfunction updateRectShape(controller, cover, name, x, y, w, h) {\r\n var el = cover.childOfName(name);\r\n el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\r\n}\r\nfunction makeStyle(brushOption) {\r\n return defaults({ strokeNoScale: true }, brushOption.brushStyle);\r\n}\r\nfunction formatRectRange(x, y, x2, y2) {\r\n var min = [mathMin$9(x, x2), mathMin$9(y, y2)];\r\n var max = [mathMax$9(x, x2), mathMax$9(y, y2)];\r\n return [\r\n [min[0], max[0]],\r\n [min[1], max[1]]\r\n ];\r\n}\r\nfunction getTransform$1(controller) {\r\n return getTransform(controller.group);\r\n}\r\nfunction getGlobalDirection1(controller, localDirName) {\r\n var map = { w: 'left', e: 'right', n: 'top', s: 'bottom' };\r\n var inverseMap = { left: 'w', right: 'e', top: 'n', bottom: 's' };\r\n var dir = transformDirection(map[localDirName], getTransform$1(controller));\r\n return inverseMap[dir];\r\n}\r\nfunction getGlobalDirection2(controller, localDirNameSeq) {\r\n var globalDir = [\r\n getGlobalDirection1(controller, localDirNameSeq[0]),\r\n getGlobalDirection1(controller, localDirNameSeq[1])\r\n ];\r\n (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\r\n return globalDir.join('');\r\n}\r\nfunction driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) {\r\n var brushOption = cover.__brushOption;\r\n var rectRange = rectRangeConverter.toRectRange(brushOption.range);\r\n var localDelta = toLocalDelta(controller, dx, dy);\r\n each(dirNameSequence, function (dirName) {\r\n var ind = DIRECTION_MAP[dirName];\r\n rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\r\n });\r\n brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\r\n updateCoverAfterCreation(controller, cover);\r\n trigger$1(controller, { isEnd: false });\r\n}\r\nfunction driftPolygon(controller, cover, dx, dy) {\r\n var range = cover.__brushOption.range;\r\n var localDelta = toLocalDelta(controller, dx, dy);\r\n each(range, function (point) {\r\n point[0] += localDelta[0];\r\n point[1] += localDelta[1];\r\n });\r\n updateCoverAfterCreation(controller, cover);\r\n trigger$1(controller, { isEnd: false });\r\n}\r\nfunction toLocalDelta(controller, dx, dy) {\r\n var thisGroup = controller.group;\r\n var localD = thisGroup.transformCoordToLocal(dx, dy);\r\n var localZero = thisGroup.transformCoordToLocal(0, 0);\r\n return [localD[0] - localZero[0], localD[1] - localZero[1]];\r\n}\r\nfunction clipByPanel(controller, cover, data) {\r\n var panel = getPanelByCover(controller, cover);\r\n return (panel && panel !== BRUSH_PANEL_GLOBAL)\r\n ? panel.clipPath(data, controller._transform)\r\n : clone(data);\r\n}\r\nfunction pointsToRect(points) {\r\n var xmin = mathMin$9(points[0][0], points[1][0]);\r\n var ymin = mathMin$9(points[0][1], points[1][1]);\r\n var xmax = mathMax$9(points[0][0], points[1][0]);\r\n var ymax = mathMax$9(points[0][1], points[1][1]);\r\n return {\r\n x: xmin,\r\n y: ymin,\r\n width: xmax - xmin,\r\n height: ymax - ymin\r\n };\r\n}\r\nfunction resetCursor(controller, e, localCursorPoint) {\r\n if (!controller._brushType\r\n || isOutsideZrArea(controller, e.offsetX, e.offsetY)) {\r\n return;\r\n }\r\n var zr = controller._zr;\r\n var covers = controller._covers;\r\n var currPanel = getPanelByPoint(controller, e, localCursorPoint);\r\n if (!controller._dragging) {\r\n for (var i = 0; i < covers.length; i++) {\r\n var brushOption = covers[i].__brushOption;\r\n if (currPanel\r\n && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId)\r\n && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\r\n return;\r\n }\r\n }\r\n }\r\n currPanel && zr.setCursorStyle('crosshair');\r\n}\r\nfunction preventDefault(e) {\r\n var rawE = e.event;\r\n rawE.preventDefault && rawE.preventDefault();\r\n}\r\nfunction mainShapeContain(cover, x, y) {\r\n return cover.childOfName('main').contain(x, y);\r\n}\r\nfunction updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\r\n var creatingCover = controller._creatingCover;\r\n var panel = controller._creatingPanel;\r\n var thisBrushOption = controller._brushOption;\r\n var eventParams;\r\n controller._track.push(localCursorPoint.slice());\r\n if (shouldShowCover(controller) || creatingCover) {\r\n if (panel && !creatingCover) {\r\n thisBrushOption.brushMode === 'single' && clearCovers(controller);\r\n var brushOption = clone(thisBrushOption);\r\n brushOption.brushType = determineBrushType(brushOption.brushType, panel);\r\n brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId;\r\n creatingCover = controller._creatingCover = createCover(controller, brushOption);\r\n controller._covers.push(creatingCover);\r\n }\r\n if (creatingCover) {\r\n var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\r\n var coverBrushOption = creatingCover.__brushOption;\r\n coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\r\n if (isEnd) {\r\n endCreating(controller, creatingCover);\r\n coverRenderer.updateCommon(controller, creatingCover);\r\n }\r\n updateCoverShape(controller, creatingCover);\r\n eventParams = { isEnd: isEnd };\r\n }\r\n }\r\n else if (isEnd\r\n && thisBrushOption.brushMode === 'single'\r\n && thisBrushOption.removeOnClick) {\r\n if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\r\n eventParams = { isEnd: isEnd, removeOnClick: true };\r\n }\r\n }\r\n return eventParams;\r\n}\r\nfunction determineBrushType(brushType, panel) {\r\n if (brushType === 'auto') {\r\n if (__DEV__) {\r\n assert(panel && panel.defaultBrushType, 'MUST have defaultBrushType when brushType is \"atuo\"');\r\n }\r\n return panel.defaultBrushType;\r\n }\r\n return brushType;\r\n}\r\nvar pointerHandlers = {\r\n mousedown: function (e) {\r\n if (this._dragging) {\r\n handleDragEnd(this, e);\r\n }\r\n else if (!e.target || !e.target.draggable) {\r\n preventDefault(e);\r\n var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\r\n this._creatingCover = null;\r\n var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\r\n if (panel) {\r\n this._dragging = true;\r\n this._track = [localCursorPoint.slice()];\r\n }\r\n }\r\n },\r\n mousemove: function (e) {\r\n var x = e.offsetX;\r\n var y = e.offsetY;\r\n var localCursorPoint = this.group.transformCoordToLocal(x, y);\r\n resetCursor(this, e, localCursorPoint);\r\n if (this._dragging) {\r\n preventDefault(e);\r\n var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\r\n eventParams && trigger$1(this, eventParams);\r\n }\r\n },\r\n mouseup: function (e) {\r\n handleDragEnd(this, e);\r\n }\r\n};\r\nfunction handleDragEnd(controller, e) {\r\n if (controller._dragging) {\r\n preventDefault(e);\r\n var x = e.offsetX;\r\n var y = e.offsetY;\r\n var localCursorPoint = controller.group.transformCoordToLocal(x, y);\r\n var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\r\n controller._dragging = false;\r\n controller._track = [];\r\n controller._creatingCover = null;\r\n eventParams && trigger$1(controller, eventParams);\r\n }\r\n}\r\nfunction isOutsideZrArea(controller, x, y) {\r\n var zr = controller._zr;\r\n return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\r\n}\r\nvar coverRenderers = {\r\n lineX: getLineRenderer(0),\r\n lineY: getLineRenderer(1),\r\n rect: {\r\n createCover: function (controller, brushOption) {\r\n function returnInput(range) {\r\n return range;\r\n }\r\n return createBaseRectCover({\r\n toRectRange: returnInput,\r\n fromRectRange: returnInput\r\n }, controller, brushOption, [['w'], ['e'], ['n'], ['s'], ['s', 'e'], ['s', 'w'], ['n', 'e'], ['n', 'w']]);\r\n },\r\n getCreatingRange: function (localTrack) {\r\n var ends = getTrackEnds(localTrack);\r\n return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\r\n },\r\n updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n updateBaseRect(controller, cover, localRange, brushOption);\r\n },\r\n updateCommon: updateCommon,\r\n contain: mainShapeContain\r\n },\r\n polygon: {\r\n createCover: function (controller, brushOption) {\r\n var cover = new Group();\r\n cover.add(new Polyline({\r\n name: 'main',\r\n style: makeStyle(brushOption),\r\n silent: true\r\n }));\r\n return cover;\r\n },\r\n getCreatingRange: function (localTrack) {\r\n return localTrack;\r\n },\r\n endCreating: function (controller, cover) {\r\n cover.remove(cover.childAt(0));\r\n cover.add(new Polygon({\r\n name: 'main',\r\n draggable: true,\r\n drift: curry(driftPolygon, controller, cover),\r\n ondragend: curry(trigger$1, controller, { isEnd: true })\r\n }));\r\n },\r\n updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n cover.childAt(0).setShape({\r\n points: clipByPanel(controller, cover, localRange)\r\n });\r\n },\r\n updateCommon: updateCommon,\r\n contain: mainShapeContain\r\n }\r\n};\r\nfunction getLineRenderer(xyIndex) {\r\n return {\r\n createCover: function (controller, brushOption) {\r\n return createBaseRectCover({\r\n toRectRange: function (range) {\r\n var rectRange = [range, [0, 100]];\r\n xyIndex && rectRange.reverse();\r\n return rectRange;\r\n },\r\n fromRectRange: function (rectRange) {\r\n return rectRange[xyIndex];\r\n }\r\n }, controller, brushOption, [[['w'], ['e']], [['n'], ['s']]][xyIndex]);\r\n },\r\n getCreatingRange: function (localTrack) {\r\n var ends = getTrackEnds(localTrack);\r\n var min = mathMin$9(ends[0][xyIndex], ends[1][xyIndex]);\r\n var max = mathMax$9(ends[0][xyIndex], ends[1][xyIndex]);\r\n return [min, max];\r\n },\r\n updateCoverShape: function (controller, cover, localRange, brushOption) {\r\n var otherExtent;\r\n var panel = getPanelByCover(controller, cover);\r\n if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) {\r\n otherExtent = panel.getLinearBrushOtherExtent(xyIndex);\r\n }\r\n else {\r\n var zr = controller._zr;\r\n otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\r\n }\r\n var rectRange = [localRange, otherExtent];\r\n xyIndex && rectRange.reverse();\r\n updateBaseRect(controller, cover, rectRange, brushOption);\r\n },\r\n updateCommon: updateCommon,\r\n contain: mainShapeContain\r\n };\r\n}\n\nfunction makeRectPanelClipPath(rect) {\r\n rect = normalizeRect(rect);\r\n return function (localPoints) {\r\n return clipPointsByRect(localPoints, rect);\r\n };\r\n}\r\nfunction makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\r\n rect = normalizeRect(rect);\r\n return function (xyIndex) {\r\n var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\r\n var brushWidth = idx ? rect.width : rect.height;\r\n var base = idx ? rect.x : rect.y;\r\n return [base, base + (brushWidth || 0)];\r\n };\r\n}\r\nfunction makeRectIsTargetByCursor(rect, api, targetModel) {\r\n var boundingRect = normalizeRect(rect);\r\n return function (e, localCursorPoint) {\r\n return boundingRect.contain(localCursorPoint[0], localCursorPoint[1])\r\n && !onIrrelevantElement(e, api, targetModel);\r\n };\r\n}\r\nfunction normalizeRect(rect) {\r\n return BoundingRect.create(rect);\r\n}\n\nvar elementList = ['axisLine', 'axisTickLabel', 'axisName'];\r\nvar ParallelAxisView = (function (_super) {\r\n __extends(ParallelAxisView, _super);\r\n function ParallelAxisView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ParallelAxisView.type;\r\n return _this;\r\n }\r\n ParallelAxisView.prototype.init = function (ecModel, api) {\r\n _super.prototype.init.apply(this, arguments);\r\n (this._brushController = new BrushController(api.getZr()))\r\n .on('brush', bind(this._onBrush, this));\r\n };\r\n ParallelAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n if (fromAxisAreaSelect(axisModel, ecModel, payload)) {\r\n return;\r\n }\r\n this.axisModel = axisModel;\r\n this.api = api;\r\n this.group.removeAll();\r\n var oldAxisGroup = this._axisGroup;\r\n this._axisGroup = new Group();\r\n this.group.add(this._axisGroup);\r\n if (!axisModel.get('show')) {\r\n return;\r\n }\r\n var coordSysModel = getCoordSysModel(axisModel, ecModel);\r\n var coordSys = coordSysModel.coordinateSystem;\r\n var areaSelectStyle = axisModel.getAreaSelectStyle();\r\n var areaWidth = areaSelectStyle.width;\r\n var dim = axisModel.axis.dim;\r\n var axisLayout = coordSys.getAxisLayout(dim);\r\n var builderOpt = extend({ strokeContainThreshold: areaWidth }, axisLayout);\r\n var axisBuilder = new AxisBuilder(axisModel, builderOpt);\r\n each(elementList, axisBuilder.add, axisBuilder);\r\n this._axisGroup.add(axisBuilder.getGroup());\r\n this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);\r\n groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n };\r\n ParallelAxisView.prototype._refreshBrushController = function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {\r\n var extent = axisModel.axis.getExtent();\r\n var extentLen = extent[1] - extent[0];\r\n var extra = Math.min(30, Math.abs(extentLen) * 0.1);\r\n var rect = BoundingRect.create({\r\n x: extent[0],\r\n y: -areaWidth / 2,\r\n width: extentLen,\r\n height: areaWidth\r\n });\r\n rect.x -= extra;\r\n rect.width += 2 * extra;\r\n this._brushController\r\n .mount({\r\n enableGlobalPan: true,\r\n rotation: builderOpt.rotation,\r\n x: builderOpt.position[0],\r\n y: builderOpt.position[1]\r\n })\r\n .setPanels([{\r\n panelId: 'pl',\r\n clipPath: makeRectPanelClipPath(rect),\r\n isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel),\r\n getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0)\r\n }])\r\n .enableBrush({\r\n brushType: 'lineX',\r\n brushStyle: areaSelectStyle,\r\n removeOnClick: true\r\n })\r\n .updateCovers(getCoverInfoList(axisModel));\r\n };\r\n ParallelAxisView.prototype._onBrush = function (eventParam) {\r\n var coverInfoList = eventParam.areas;\r\n var axisModel = this.axisModel;\r\n var axis = axisModel.axis;\r\n var intervals = map(coverInfoList, function (coverInfo) {\r\n return [\r\n axis.coordToData(coverInfo.range[0], true),\r\n axis.coordToData(coverInfo.range[1], true)\r\n ];\r\n });\r\n if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) {\r\n this.api.dispatchAction({\r\n type: 'axisAreaSelect',\r\n parallelAxisId: axisModel.id,\r\n intervals: intervals\r\n });\r\n }\r\n };\r\n ParallelAxisView.prototype.dispose = function () {\r\n this._brushController.dispose();\r\n };\r\n ParallelAxisView.type = 'parallelAxis';\r\n return ParallelAxisView;\r\n}(ComponentView));\r\nComponentView.registerClass(ParallelAxisView);\r\nfunction fromAxisAreaSelect(axisModel, ecModel, payload) {\r\n return payload\r\n && payload.type === 'axisAreaSelect'\r\n && ecModel.findComponents({ mainType: 'parallelAxis', query: payload })[0] === axisModel;\r\n}\r\nfunction getCoverInfoList(axisModel) {\r\n var axis = axisModel.axis;\r\n return map(axisModel.activeIntervals, function (interval) {\r\n return {\r\n brushType: 'lineX',\r\n panelId: 'pl',\r\n range: [\r\n axis.dataToCoord(interval[0], true),\r\n axis.dataToCoord(interval[1], true)\r\n ]\r\n };\r\n });\r\n}\r\nfunction getCoordSysModel(axisModel, ecModel) {\r\n return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\r\n}\n\nvar CLICK_THRESHOLD = 5;\r\nvar ParallelView = (function (_super) {\r\n __extends(ParallelView, _super);\r\n function ParallelView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ParallelView.type;\r\n return _this;\r\n }\r\n ParallelView.prototype.render = function (parallelModel, ecModel, api) {\r\n this._model = parallelModel;\r\n this._api = api;\r\n if (!this._handlers) {\r\n this._handlers = {};\r\n each(handlers, function (handler, eventName) {\r\n api.getZr().on(eventName, this._handlers[eventName] = bind(handler, this));\r\n }, this);\r\n }\r\n createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\r\n };\r\n ParallelView.prototype.dispose = function (ecModel, api) {\r\n each(this._handlers, function (handler, eventName) {\r\n api.getZr().off(eventName, handler);\r\n });\r\n this._handlers = null;\r\n };\r\n ParallelView.prototype._throttledDispatchExpand = function (opt) {\r\n this._dispatchExpand(opt);\r\n };\r\n ParallelView.prototype._dispatchExpand = function (opt) {\r\n opt && this._api.dispatchAction(extend({ type: 'parallelAxisExpand' }, opt));\r\n };\r\n ParallelView.type = 'parallel';\r\n return ParallelView;\r\n}(ComponentView));\r\nComponentView.registerClass(ParallelView);\r\nvar handlers = {\r\n mousedown: function (e) {\r\n if (checkTrigger(this, 'click')) {\r\n this._mouseDownPoint = [e.offsetX, e.offsetY];\r\n }\r\n },\r\n mouseup: function (e) {\r\n var mouseDownPoint = this._mouseDownPoint;\r\n if (checkTrigger(this, 'click') && mouseDownPoint) {\r\n var point = [e.offsetX, e.offsetY];\r\n var dist = Math.pow(mouseDownPoint[0] - point[0], 2)\r\n + Math.pow(mouseDownPoint[1] - point[1], 2);\r\n if (dist > CLICK_THRESHOLD) {\r\n return;\r\n }\r\n var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\r\n result.behavior !== 'none' && this._dispatchExpand({\r\n axisExpandWindow: result.axisExpandWindow\r\n });\r\n }\r\n this._mouseDownPoint = null;\r\n },\r\n mousemove: function (e) {\r\n if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\r\n return;\r\n }\r\n var model = this._model;\r\n var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\r\n var behavior = result.behavior;\r\n behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\r\n this._throttledDispatchExpand(behavior === 'none'\r\n ? null\r\n : {\r\n axisExpandWindow: result.axisExpandWindow,\r\n animation: behavior === 'jump' ? null : {\r\n duration: 0\r\n }\r\n });\r\n }\r\n};\r\nfunction checkTrigger(view, triggerOn) {\r\n var model = view._model;\r\n return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\r\n}\r\nregisterPreprocessor(parallelPreprocessor);\n\nvar ParallelSeriesModel = (function (_super) {\r\n __extends(ParallelSeriesModel, _super);\r\n function ParallelSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ParallelSeriesModel.type;\r\n _this.visualStyleAccessPath = 'lineStyle';\r\n _this.visualDrawType = 'stroke';\r\n return _this;\r\n }\r\n ParallelSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListFromArray(this.getSource(), this, {\r\n useEncodeDefaulter: bind(makeDefaultEncode, null, this)\r\n });\r\n };\r\n ParallelSeriesModel.prototype.getRawIndicesByActiveState = function (activeState) {\r\n var coordSys = this.coordinateSystem;\r\n var data = this.getData();\r\n var indices = [];\r\n coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\r\n if (activeState === theActiveState) {\r\n indices.push(data.getRawIndex(dataIndex));\r\n }\r\n });\r\n return indices;\r\n };\r\n ParallelSeriesModel.type = 'series.parallel';\r\n ParallelSeriesModel.dependencies = ['parallel'];\r\n ParallelSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'parallel',\r\n parallelIndex: 0,\r\n label: {\r\n show: false\r\n },\r\n inactiveOpacity: 0.05,\r\n activeOpacity: 1,\r\n lineStyle: {\r\n width: 1,\r\n opacity: 0.45,\r\n type: 'solid'\r\n },\r\n emphasis: {\r\n label: {\r\n show: false\r\n }\r\n },\r\n progressive: 500,\r\n smooth: false,\r\n animationEasing: 'linear'\r\n };\r\n return ParallelSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(ParallelSeriesModel);\r\nfunction makeDefaultEncode(seriesModel) {\r\n var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\r\n if (!parallelModel) {\r\n return;\r\n }\r\n var encodeDefine = {};\r\n each(parallelModel.dimensions, function (axisDim) {\r\n var dataDimIndex = convertDimNameToNumber(axisDim);\r\n encodeDefine[axisDim] = dataDimIndex;\r\n });\r\n return encodeDefine;\r\n}\r\nfunction convertDimNameToNumber(dimName) {\r\n return +dimName.replace('dim', '');\r\n}\n\nvar DEFAULT_SMOOTH = 0.3;\r\nvar ParallelView$1 = (function (_super) {\r\n __extends(ParallelView, _super);\r\n function ParallelView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ParallelView.type;\r\n _this._dataGroup = new Group();\r\n _this._initialized = false;\r\n return _this;\r\n }\r\n ParallelView.prototype.init = function () {\r\n this.group.add(this._dataGroup);\r\n };\r\n ParallelView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n var dataGroup = this._dataGroup;\r\n var data = seriesModel.getData();\r\n var oldData = this._data;\r\n var coordSys = seriesModel.coordinateSystem;\r\n var dimensions = coordSys.dimensions;\r\n var seriesScope = makeSeriesScope$2(seriesModel);\r\n data.diff(oldData)\r\n .add(add)\r\n .update(update)\r\n .remove(remove)\r\n .execute();\r\n function add(newDataIndex) {\r\n var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);\r\n updateElCommon(line, data, newDataIndex, seriesScope);\r\n }\r\n function update(newDataIndex, oldDataIndex) {\r\n var line = oldData.getItemGraphicEl(oldDataIndex);\r\n var points = createLinePoints(data, newDataIndex, dimensions, coordSys);\r\n data.setItemGraphicEl(newDataIndex, line);\r\n updateProps(line, { shape: { points: points } }, seriesModel, newDataIndex);\r\n updateElCommon(line, data, newDataIndex, seriesScope);\r\n }\r\n function remove(oldDataIndex) {\r\n var line = oldData.getItemGraphicEl(oldDataIndex);\r\n dataGroup.remove(line);\r\n }\r\n if (!this._initialized) {\r\n this._initialized = true;\r\n var clipPath = createGridClipShape(coordSys, seriesModel, function () {\r\n setTimeout(function () {\r\n dataGroup.removeClipPath();\r\n });\r\n });\r\n dataGroup.setClipPath(clipPath);\r\n }\r\n this._data = data;\r\n };\r\n ParallelView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n this._initialized = true;\r\n this._data = null;\r\n this._dataGroup.removeAll();\r\n };\r\n ParallelView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\r\n var data = seriesModel.getData();\r\n var coordSys = seriesModel.coordinateSystem;\r\n var dimensions = coordSys.dimensions;\r\n var seriesScope = makeSeriesScope$2(seriesModel);\r\n for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {\r\n var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);\r\n line.incremental = true;\r\n updateElCommon(line, data, dataIndex, seriesScope);\r\n }\r\n };\r\n ParallelView.prototype.remove = function () {\r\n this._dataGroup && this._dataGroup.removeAll();\r\n this._data = null;\r\n };\r\n ParallelView.type = 'parallel';\r\n return ParallelView;\r\n}(ChartView));\r\nfunction createGridClipShape(coordSys, seriesModel, cb) {\r\n var parallelModel = coordSys.model;\r\n var rect = coordSys.getRect();\r\n var rectEl = new Rect({\r\n shape: {\r\n x: rect.x,\r\n y: rect.y,\r\n width: rect.width,\r\n height: rect.height\r\n }\r\n });\r\n var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height';\r\n rectEl.setShape(dim, 0);\r\n initProps(rectEl, {\r\n shape: {\r\n width: rect.width,\r\n height: rect.height\r\n }\r\n }, seriesModel, cb);\r\n return rectEl;\r\n}\r\nfunction createLinePoints(data, dataIndex, dimensions, coordSys) {\r\n var points = [];\r\n for (var i = 0; i < dimensions.length; i++) {\r\n var dimName = dimensions[i];\r\n var value = data.get(data.mapDimension(dimName), dataIndex);\r\n if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {\r\n points.push(coordSys.dataToPoint(value, dimName));\r\n }\r\n }\r\n return points;\r\n}\r\nfunction addEl(data, dataGroup, dataIndex, dimensions, coordSys) {\r\n var points = createLinePoints(data, dataIndex, dimensions, coordSys);\r\n var line = new Polyline({\r\n shape: { points: points },\r\n z2: 10\r\n });\r\n dataGroup.add(line);\r\n data.setItemGraphicEl(dataIndex, line);\r\n return line;\r\n}\r\nfunction makeSeriesScope$2(seriesModel) {\r\n var smooth = seriesModel.get('smooth', true);\r\n smooth === true && (smooth = DEFAULT_SMOOTH);\r\n smooth = numericToNumber(smooth);\r\n eqNaN(smooth) && (smooth = 0);\r\n return { smooth: smooth };\r\n}\r\nfunction updateElCommon(el, data, dataIndex, seriesScope) {\r\n el.useStyle(data.getItemVisual(dataIndex, 'style'));\r\n el.style.fill = null;\r\n el.setShape('smooth', seriesScope.smooth);\r\n var itemModel = data.getItemModel(dataIndex);\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n setStatesStylesFromModel(el, itemModel, 'lineStyle');\r\n enableHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n}\r\nfunction isEmptyValue(val, axisType) {\r\n return axisType === 'category'\r\n ? val == null\r\n : (val == null || isNaN(val));\r\n}\r\nChartView.registerClass(ParallelView$1);\n\nvar opacityAccessPath$1 = ['lineStyle', 'opacity'];\r\nvar parallelVisual = {\r\n seriesType: 'parallel',\r\n reset: function (seriesModel, ecModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var opacityMap = {\r\n normal: seriesModel.get(['lineStyle', 'opacity']),\r\n active: seriesModel.get('activeOpacity'),\r\n inactive: seriesModel.get('inactiveOpacity')\r\n };\r\n return {\r\n progress: function (params, data) {\r\n coordSys.eachActiveState(data, function (activeState, dataIndex) {\r\n var opacity = opacityMap[activeState];\r\n if (activeState === 'normal' && data.hasItemOption) {\r\n var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath$1, true);\r\n itemOpacity != null && (opacity = itemOpacity);\r\n }\r\n var existsStyle = data.ensureUniqueItemVisual(dataIndex, 'style');\r\n existsStyle.opacity = opacity;\r\n }, params.start, params.end);\r\n }\r\n };\r\n }\r\n};\n\nregisterVisual(PRIORITY.VISUAL.BRUSH, parallelVisual);\n\nvar SankeySeriesModel = (function (_super) {\r\n __extends(SankeySeriesModel, _super);\r\n function SankeySeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SankeySeriesModel.type;\r\n return _this;\r\n }\r\n SankeySeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n var links = option.edges || option.links;\r\n var nodes = option.data || option.nodes;\r\n var levels = option.levels;\r\n this.levelModels = [];\r\n var levelModels = this.levelModels;\r\n for (var i = 0; i < levels.length; i++) {\r\n if (levels[i].depth != null && levels[i].depth >= 0) {\r\n levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);\r\n }\r\n else {\r\n if (__DEV__) {\r\n throw new Error('levels[i].depth is mandatory and should be natural number');\r\n }\r\n }\r\n }\r\n if (nodes && links) {\r\n var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);\r\n return graph.data;\r\n }\r\n function beforeLink(nodeData, edgeData) {\r\n nodeData.wrapMethod('getItemModel', function (model, idx) {\r\n var seriesModel = model.parentModel;\r\n var layout = seriesModel.getData().getItemLayout(idx);\r\n if (layout) {\r\n var nodeDepth = layout.depth;\r\n var levelModel = seriesModel.levelModels[nodeDepth];\r\n if (levelModel) {\r\n model.parentModel = levelModel;\r\n }\r\n }\r\n return model;\r\n });\r\n edgeData.wrapMethod('getItemModel', function (model, idx) {\r\n var seriesModel = model.parentModel;\r\n var edge = seriesModel.getGraph().getEdgeByIndex(idx);\r\n var layout = edge.node1.getLayout();\r\n if (layout) {\r\n var depth = layout.depth;\r\n var levelModel = seriesModel.levelModels[depth];\r\n if (levelModel) {\r\n model.parentModel = levelModel;\r\n }\r\n }\r\n return model;\r\n });\r\n }\r\n };\r\n SankeySeriesModel.prototype.setNodePosition = function (dataIndex, localPosition) {\r\n var dataItem = this.option.data[dataIndex];\r\n dataItem.localX = localPosition[0];\r\n dataItem.localY = localPosition[1];\r\n };\r\n SankeySeriesModel.prototype.getGraph = function () {\r\n return this.getData().graph;\r\n };\r\n SankeySeriesModel.prototype.getEdgeData = function () {\r\n return this.getGraph().edgeData;\r\n };\r\n SankeySeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n function noValue(val) {\r\n return isNaN(val) || val == null;\r\n }\r\n if (dataType === 'edge') {\r\n var params = this.getDataParams(dataIndex, dataType);\r\n var rawDataOpt = params.data;\r\n var edgeValue = params.value;\r\n var edgeName = rawDataOpt.source + ' -- ' + rawDataOpt.target;\r\n return createTooltipMarkup('nameValue', {\r\n name: edgeName,\r\n value: edgeValue,\r\n noValue: noValue(edgeValue)\r\n });\r\n }\r\n else {\r\n var node = this.getGraph().getNodeByIndex(dataIndex);\r\n var value = node.getLayout().value;\r\n var name_1 = this.getDataParams(dataIndex, dataType).data.name;\r\n return createTooltipMarkup('nameValue', {\r\n name: name_1,\r\n value: value,\r\n noValue: noValue(value)\r\n });\r\n }\r\n };\r\n SankeySeriesModel.prototype.optionUpdated = function () {\r\n var option = this.option;\r\n if (option.focusNodeAdjacency === true) {\r\n option.focusNodeAdjacency = 'allEdges';\r\n }\r\n };\r\n SankeySeriesModel.prototype.getDataParams = function (dataIndex, dataType) {\r\n var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);\r\n if (params.value == null && dataType === 'node') {\r\n var node = this.getGraph().getNodeByIndex(dataIndex);\r\n var nodeValue = node.getLayout().value;\r\n params.value = nodeValue;\r\n }\r\n return params;\r\n };\r\n SankeySeriesModel.type = 'series.sankey';\r\n SankeySeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'view',\r\n left: '5%',\r\n top: '5%',\r\n right: '20%',\r\n bottom: '5%',\r\n orient: 'horizontal',\r\n nodeWidth: 20,\r\n nodeGap: 8,\r\n draggable: true,\r\n focusNodeAdjacency: false,\r\n layoutIterations: 32,\r\n label: {\r\n show: true,\r\n position: 'right',\r\n fontSize: 12\r\n },\r\n levels: [],\r\n nodeAlign: 'justify',\r\n lineStyle: {\r\n color: '#314656',\r\n opacity: 0.2,\r\n curveness: 0.5\r\n },\r\n emphasis: {\r\n label: {\r\n show: true\r\n },\r\n lineStyle: {\r\n opacity: 0.5\r\n }\r\n },\r\n select: {\r\n itemStyle: {\r\n borderColor: '#212121'\r\n }\r\n },\r\n animationEasing: 'linear',\r\n animationDuration: 1000\r\n };\r\n return SankeySeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(SankeySeriesModel);\n\nvar SankeyPathShape = (function () {\r\n function SankeyPathShape() {\r\n this.x1 = 0;\r\n this.y1 = 0;\r\n this.x2 = 0;\r\n this.y2 = 0;\r\n this.cpx1 = 0;\r\n this.cpy1 = 0;\r\n this.cpx2 = 0;\r\n this.cpy2 = 0;\r\n this.extent = 0;\r\n }\r\n return SankeyPathShape;\r\n}());\r\nvar SankeyPath = (function (_super) {\r\n __extends(SankeyPath, _super);\r\n function SankeyPath(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n SankeyPath.prototype.getDefaultShape = function () {\r\n return new SankeyPathShape();\r\n };\r\n SankeyPath.prototype.buildPath = function (ctx, shape) {\r\n var extent = shape.extent;\r\n ctx.moveTo(shape.x1, shape.y1);\r\n ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);\r\n if (shape.orient === 'vertical') {\r\n ctx.lineTo(shape.x2 + extent, shape.y2);\r\n ctx.bezierCurveTo(shape.cpx2 + extent, shape.cpy2, shape.cpx1 + extent, shape.cpy1, shape.x1 + extent, shape.y1);\r\n }\r\n else {\r\n ctx.lineTo(shape.x2, shape.y2 + extent);\r\n ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent, shape.cpx1, shape.cpy1 + extent, shape.x1, shape.y1 + extent);\r\n }\r\n ctx.closePath();\r\n };\r\n SankeyPath.prototype.highlight = function () {\r\n enterEmphasis(this);\r\n };\r\n SankeyPath.prototype.downplay = function () {\r\n leaveEmphasis(this);\r\n };\r\n return SankeyPath;\r\n}(Path));\r\nvar SankeyView = (function (_super) {\r\n __extends(SankeyView, _super);\r\n function SankeyView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SankeyView.type;\r\n _this._focusAdjacencyDisabled = false;\r\n return _this;\r\n }\r\n SankeyView.prototype.render = function (seriesModel, ecModel, api) {\r\n var sankeyView = this;\r\n var graph = seriesModel.getGraph();\r\n var group = this.group;\r\n var layoutInfo = seriesModel.layoutInfo;\r\n var width = layoutInfo.width;\r\n var height = layoutInfo.height;\r\n var nodeData = seriesModel.getData();\r\n var edgeData = seriesModel.getData('edge');\r\n var orient = seriesModel.get('orient');\r\n this._model = seriesModel;\r\n group.removeAll();\r\n group.x = layoutInfo.x;\r\n group.y = layoutInfo.y;\r\n graph.eachEdge(function (edge) {\r\n var curve = new SankeyPath();\r\n var ecData = getECData(curve);\r\n ecData.dataIndex = edge.dataIndex;\r\n ecData.seriesIndex = seriesModel.seriesIndex;\r\n ecData.dataType = 'edge';\r\n var edgeModel = edge.getModel();\r\n var lineStyleModel = edgeModel.getModel('lineStyle');\r\n var curvature = lineStyleModel.get('curveness');\r\n var n1Layout = edge.node1.getLayout();\r\n var node1Model = edge.node1.getModel();\r\n var dragX1 = node1Model.get('localX');\r\n var dragY1 = node1Model.get('localY');\r\n var n2Layout = edge.node2.getLayout();\r\n var node2Model = edge.node2.getModel();\r\n var dragX2 = node2Model.get('localX');\r\n var dragY2 = node2Model.get('localY');\r\n var edgeLayout = edge.getLayout();\r\n var x1;\r\n var y1;\r\n var x2;\r\n var y2;\r\n var cpx1;\r\n var cpy1;\r\n var cpx2;\r\n var cpy2;\r\n curve.shape.extent = Math.max(1, edgeLayout.dy);\r\n curve.shape.orient = orient;\r\n if (orient === 'vertical') {\r\n x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;\r\n y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;\r\n x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;\r\n y2 = dragY2 != null ? dragY2 * height : n2Layout.y;\r\n cpx1 = x1;\r\n cpy1 = y1 * (1 - curvature) + y2 * curvature;\r\n cpx2 = x2;\r\n cpy2 = y1 * curvature + y2 * (1 - curvature);\r\n }\r\n else {\r\n x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;\r\n y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;\r\n x2 = dragX2 != null ? dragX2 * width : n2Layout.x;\r\n y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;\r\n cpx1 = x1 * (1 - curvature) + x2 * curvature;\r\n cpy1 = y1;\r\n cpx2 = x1 * curvature + x2 * (1 - curvature);\r\n cpy2 = y2;\r\n }\r\n curve.setShape({\r\n x1: x1,\r\n y1: y1,\r\n x2: x2,\r\n y2: y2,\r\n cpx1: cpx1,\r\n cpy1: cpy1,\r\n cpx2: cpx2,\r\n cpy2: cpy2\r\n });\r\n curve.useStyle(lineStyleModel.getItemStyle());\r\n switch (curve.style.fill) {\r\n case 'source':\r\n curve.style.fill = edge.node1.getVisual('color');\r\n curve.style.decal = edge.node1.getVisual('style').decal;\r\n break;\r\n case 'target':\r\n curve.style.fill = edge.node2.getVisual('color');\r\n curve.style.decal = edge.node2.getVisual('style').decal;\r\n break;\r\n case 'gradient':\r\n var sourceColor = edge.node1.getVisual('color');\r\n var targetColor = edge.node2.getVisual('color');\r\n if (typeof sourceColor === 'string' && typeof targetColor === 'string') {\r\n curve.style.fill = new LinearGradient(0, 0, 1, 0, [{\r\n color: sourceColor,\r\n offset: 0\r\n }, {\r\n color: targetColor,\r\n offset: 1\r\n }]);\r\n }\r\n }\r\n var emphasisModel = edgeModel.getModel('emphasis');\r\n setStatesStylesFromModel(curve, edgeModel, 'lineStyle', function (model) { return model.getItemStyle(); });\r\n group.add(curve);\r\n edgeData.setItemGraphicEl(edge.dataIndex, curve);\r\n var focus = emphasisModel.get('focus');\r\n enableHoverEmphasis(curve, focus === 'adjacency' ? edge.getAdjacentDataIndices() : focus, emphasisModel.get('blurScope'));\r\n getECData(curve).dataType = 'edge';\r\n });\r\n graph.eachNode(function (node) {\r\n var layout = node.getLayout();\r\n var itemModel = node.getModel();\r\n var dragX = itemModel.get('localX');\r\n var dragY = itemModel.get('localY');\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n var rect = new Rect({\r\n shape: {\r\n x: dragX != null ? dragX * width : layout.x,\r\n y: dragY != null ? dragY * height : layout.y,\r\n width: layout.dx,\r\n height: layout.dy\r\n },\r\n style: itemModel.getModel('itemStyle').getItemStyle()\r\n });\r\n setLabelStyle(rect, getLabelStatesModels(itemModel), {\r\n labelFetcher: seriesModel,\r\n labelDataIndex: node.dataIndex,\r\n defaultText: node.id\r\n });\r\n rect.disableLabelAnimation = true;\r\n rect.setStyle('fill', node.getVisual('color'));\r\n rect.setStyle('decal', node.getVisual('style').decal);\r\n setStatesStylesFromModel(rect, itemModel);\r\n group.add(rect);\r\n nodeData.setItemGraphicEl(node.dataIndex, rect);\r\n getECData(rect).dataType = 'node';\r\n var focus = emphasisModel.get('focus');\r\n enableHoverEmphasis(rect, focus === 'adjacency' ? node.getAdjacentDataIndices() : focus, emphasisModel.get('blurScope'));\r\n });\r\n nodeData.eachItemGraphicEl(function (el, dataIndex) {\r\n var itemModel = nodeData.getItemModel(dataIndex);\r\n if (itemModel.get('draggable')) {\r\n el.drift = function (dx, dy) {\r\n sankeyView._focusAdjacencyDisabled = true;\r\n this.shape.x += dx;\r\n this.shape.y += dy;\r\n this.dirty();\r\n api.dispatchAction({\r\n type: 'dragNode',\r\n seriesId: seriesModel.id,\r\n dataIndex: nodeData.getRawIndex(dataIndex),\r\n localX: this.shape.x / width,\r\n localY: this.shape.y / height\r\n });\r\n };\r\n el.ondragend = function () {\r\n sankeyView._focusAdjacencyDisabled = false;\r\n };\r\n el.draggable = true;\r\n el.cursor = 'move';\r\n }\r\n });\r\n if (!this._data && seriesModel.isAnimationEnabled()) {\r\n group.setClipPath(createGridClipShape$1(group.getBoundingRect(), seriesModel, function () {\r\n group.removeClipPath();\r\n }));\r\n }\r\n this._data = seriesModel.getData();\r\n };\r\n SankeyView.prototype.dispose = function () {\r\n };\r\n SankeyView.type = 'sankey';\r\n return SankeyView;\r\n}(ChartView));\r\nfunction createGridClipShape$1(rect, seriesModel, cb) {\r\n var rectEl = new Rect({\r\n shape: {\r\n x: rect.x - 10,\r\n y: rect.y - 10,\r\n width: 0,\r\n height: rect.height + 20\r\n }\r\n });\r\n initProps(rectEl, {\r\n shape: {\r\n width: rect.width + 20\r\n }\r\n }, seriesModel, cb);\r\n return rectEl;\r\n}\r\nChartView.registerClass(SankeyView);\n\nregisterAction({\r\n type: 'dragNode',\r\n event: 'dragnode',\r\n update: 'update'\r\n}, function (payload, ecModel) {\r\n ecModel.eachComponent({\r\n mainType: 'series',\r\n subType: 'sankey',\r\n query: payload\r\n }, function (seriesModel) {\r\n seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);\r\n });\r\n});\n\nfunction sankeyLayout(ecModel, api) {\r\n ecModel.eachSeriesByType('sankey', function (seriesModel) {\r\n var nodeWidth = seriesModel.get('nodeWidth');\r\n var nodeGap = seriesModel.get('nodeGap');\r\n var layoutInfo = getViewRect$4(seriesModel, api);\r\n seriesModel.layoutInfo = layoutInfo;\r\n var width = layoutInfo.width;\r\n var height = layoutInfo.height;\r\n var graph = seriesModel.getGraph();\r\n var nodes = graph.nodes;\r\n var edges = graph.edges;\r\n computeNodeValues(nodes);\r\n var filteredNodes = filter(nodes, function (node) {\r\n return node.getLayout().value === 0;\r\n });\r\n var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations');\r\n var orient = seriesModel.get('orient');\r\n var nodeAlign = seriesModel.get('nodeAlign');\r\n layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);\r\n });\r\n}\r\nfunction getViewRect$4(seriesModel, api) {\r\n return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n}\r\nfunction layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {\r\n computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);\r\n computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);\r\n computeEdgeDepths(nodes, orient);\r\n}\r\nfunction computeNodeValues(nodes) {\r\n each(nodes, function (node) {\r\n var value1 = sum(node.outEdges, getEdgeValue);\r\n var value2 = sum(node.inEdges, getEdgeValue);\r\n var nodeRawValue = node.getValue() || 0;\r\n var value = Math.max(value1, value2, nodeRawValue);\r\n node.setLayout({ value: value }, true);\r\n });\r\n}\r\nfunction computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {\r\n var remainEdges = [];\r\n var indegreeArr = [];\r\n var zeroIndegrees = [];\r\n var nextTargetNode = [];\r\n var x = 0;\r\n for (var i = 0; i < edges.length; i++) {\r\n remainEdges[i] = 1;\r\n }\r\n for (var i = 0; i < nodes.length; i++) {\r\n indegreeArr[i] = nodes[i].inEdges.length;\r\n if (indegreeArr[i] === 0) {\r\n zeroIndegrees.push(nodes[i]);\r\n }\r\n }\r\n var maxNodeDepth = -1;\r\n while (zeroIndegrees.length) {\r\n for (var idx = 0; idx < zeroIndegrees.length; idx++) {\r\n var node = zeroIndegrees[idx];\r\n var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\r\n var isItemDepth = item.depth != null && item.depth >= 0;\r\n if (isItemDepth && item.depth > maxNodeDepth) {\r\n maxNodeDepth = item.depth;\r\n }\r\n node.setLayout({ depth: isItemDepth ? item.depth : x }, true);\r\n orient === 'vertical'\r\n ? node.setLayout({ dy: nodeWidth }, true)\r\n : node.setLayout({ dx: nodeWidth }, true);\r\n for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) {\r\n var edge = node.outEdges[edgeIdx];\r\n var indexEdge = edges.indexOf(edge);\r\n remainEdges[indexEdge] = 0;\r\n var targetNode = edge.node2;\r\n var nodeIndex = nodes.indexOf(targetNode);\r\n if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {\r\n nextTargetNode.push(targetNode);\r\n }\r\n }\r\n }\r\n ++x;\r\n zeroIndegrees = nextTargetNode;\r\n nextTargetNode = [];\r\n }\r\n for (var i = 0; i < remainEdges.length; i++) {\r\n if (remainEdges[i] === 1) {\r\n throw new Error('Sankey is a DAG, the original data has cycle!');\r\n }\r\n }\r\n var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1;\r\n if (nodeAlign && nodeAlign !== 'left') {\r\n adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);\r\n }\r\n var kx = orient === 'vertical'\r\n ? (height - nodeWidth) / maxDepth\r\n : (width - nodeWidth) / maxDepth;\r\n scaleNodeBreadths(nodes, kx, orient);\r\n}\r\nfunction isNodeDepth(node) {\r\n var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\r\n return item.depth != null && item.depth >= 0;\r\n}\r\nfunction adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {\r\n if (nodeAlign === 'right') {\r\n var nextSourceNode = [];\r\n var remainNodes = nodes;\r\n var nodeHeight = 0;\r\n while (remainNodes.length) {\r\n for (var i = 0; i < remainNodes.length; i++) {\r\n var node = remainNodes[i];\r\n node.setLayout({ skNodeHeight: nodeHeight }, true);\r\n for (var j = 0; j < node.inEdges.length; j++) {\r\n var edge = node.inEdges[j];\r\n if (nextSourceNode.indexOf(edge.node1) < 0) {\r\n nextSourceNode.push(edge.node1);\r\n }\r\n }\r\n }\r\n remainNodes = nextSourceNode;\r\n nextSourceNode = [];\r\n ++nodeHeight;\r\n }\r\n each(nodes, function (node) {\r\n if (!isNodeDepth(node)) {\r\n node.setLayout({ depth: Math.max(0, maxDepth - node.getLayout().skNodeHeight) }, true);\r\n }\r\n });\r\n }\r\n else if (nodeAlign === 'justify') {\r\n moveSinksRight(nodes, maxDepth);\r\n }\r\n}\r\nfunction moveSinksRight(nodes, maxDepth) {\r\n each(nodes, function (node) {\r\n if (!isNodeDepth(node) && !node.outEdges.length) {\r\n node.setLayout({ depth: maxDepth }, true);\r\n }\r\n });\r\n}\r\nfunction scaleNodeBreadths(nodes, kx, orient) {\r\n each(nodes, function (node) {\r\n var nodeDepth = node.getLayout().depth * kx;\r\n orient === 'vertical'\r\n ? node.setLayout({ y: nodeDepth }, true)\r\n : node.setLayout({ x: nodeDepth }, true);\r\n });\r\n}\r\nfunction computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {\r\n var nodesByBreadth = prepareNodesByBreadth(nodes, orient);\r\n initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);\r\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\r\n for (var alpha = 1; iterations > 0; iterations--) {\r\n alpha *= 0.99;\r\n relaxRightToLeft(nodesByBreadth, alpha, orient);\r\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\r\n relaxLeftToRight(nodesByBreadth, alpha, orient);\r\n resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\r\n }\r\n}\r\nfunction prepareNodesByBreadth(nodes, orient) {\r\n var nodesByBreadth = [];\r\n var keyAttr = orient === 'vertical' ? 'y' : 'x';\r\n var groupResult = groupData(nodes, function (node) {\r\n return node.getLayout()[keyAttr];\r\n });\r\n groupResult.keys.sort(function (a, b) {\r\n return a - b;\r\n });\r\n each(groupResult.keys, function (key) {\r\n nodesByBreadth.push(groupResult.buckets.get(key));\r\n });\r\n return nodesByBreadth;\r\n}\r\nfunction initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {\r\n var minKy = Infinity;\r\n each(nodesByBreadth, function (nodes) {\r\n var n = nodes.length;\r\n var sum = 0;\r\n each(nodes, function (node) {\r\n sum += node.getLayout().value;\r\n });\r\n var ky = orient === 'vertical'\r\n ? (width - (n - 1) * nodeGap) / sum\r\n : (height - (n - 1) * nodeGap) / sum;\r\n if (ky < minKy) {\r\n minKy = ky;\r\n }\r\n });\r\n each(nodesByBreadth, function (nodes) {\r\n each(nodes, function (node, i) {\r\n var nodeDy = node.getLayout().value * minKy;\r\n if (orient === 'vertical') {\r\n node.setLayout({ x: i }, true);\r\n node.setLayout({ dx: nodeDy }, true);\r\n }\r\n else {\r\n node.setLayout({ y: i }, true);\r\n node.setLayout({ dy: nodeDy }, true);\r\n }\r\n });\r\n });\r\n each(edges, function (edge) {\r\n var edgeDy = +edge.getValue() * minKy;\r\n edge.setLayout({ dy: edgeDy }, true);\r\n });\r\n}\r\nfunction resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {\r\n var keyAttr = orient === 'vertical' ? 'x' : 'y';\r\n each(nodesByBreadth, function (nodes) {\r\n nodes.sort(function (a, b) {\r\n return a.getLayout()[keyAttr] - b.getLayout()[keyAttr];\r\n });\r\n var nodeX;\r\n var node;\r\n var dy;\r\n var y0 = 0;\r\n var n = nodes.length;\r\n var nodeDyAttr = orient === 'vertical' ? 'dx' : 'dy';\r\n for (var i = 0; i < n; i++) {\r\n node = nodes[i];\r\n dy = y0 - node.getLayout()[keyAttr];\r\n if (dy > 0) {\r\n nodeX = node.getLayout()[keyAttr] + dy;\r\n orient === 'vertical'\r\n ? node.setLayout({ x: nodeX }, true)\r\n : node.setLayout({ y: nodeX }, true);\r\n }\r\n y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap;\r\n }\r\n var viewWidth = orient === 'vertical' ? width : height;\r\n dy = y0 - nodeGap - viewWidth;\r\n if (dy > 0) {\r\n nodeX = node.getLayout()[keyAttr] - dy;\r\n orient === 'vertical'\r\n ? node.setLayout({ x: nodeX }, true)\r\n : node.setLayout({ y: nodeX }, true);\r\n y0 = nodeX;\r\n for (var i = n - 2; i >= 0; --i) {\r\n node = nodes[i];\r\n dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0;\r\n if (dy > 0) {\r\n nodeX = node.getLayout()[keyAttr] - dy;\r\n orient === 'vertical'\r\n ? node.setLayout({ x: nodeX }, true)\r\n : node.setLayout({ y: nodeX }, true);\r\n }\r\n y0 = node.getLayout()[keyAttr];\r\n }\r\n }\r\n });\r\n}\r\nfunction relaxRightToLeft(nodesByBreadth, alpha, orient) {\r\n each(nodesByBreadth.slice().reverse(), function (nodes) {\r\n each(nodes, function (node) {\r\n if (node.outEdges.length) {\r\n var y = sum(node.outEdges, weightedTarget, orient)\r\n / sum(node.outEdges, getEdgeValue);\r\n if (isNaN(y)) {\r\n var len = node.outEdges.length;\r\n y = len ? sum(node.outEdges, centerTarget, orient) / len : 0;\r\n }\r\n if (orient === 'vertical') {\r\n var nodeX = node.getLayout().x + (y - center$1(node, orient)) * alpha;\r\n node.setLayout({ x: nodeX }, true);\r\n }\r\n else {\r\n var nodeY = node.getLayout().y + (y - center$1(node, orient)) * alpha;\r\n node.setLayout({ y: nodeY }, true);\r\n }\r\n }\r\n });\r\n });\r\n}\r\nfunction weightedTarget(edge, orient) {\r\n return center$1(edge.node2, orient) * edge.getValue();\r\n}\r\nfunction centerTarget(edge, orient) {\r\n return center$1(edge.node2, orient);\r\n}\r\nfunction weightedSource(edge, orient) {\r\n return center$1(edge.node1, orient) * edge.getValue();\r\n}\r\nfunction centerSource(edge, orient) {\r\n return center$1(edge.node1, orient);\r\n}\r\nfunction center$1(node, orient) {\r\n return orient === 'vertical'\r\n ? node.getLayout().x + node.getLayout().dx / 2\r\n : node.getLayout().y + node.getLayout().dy / 2;\r\n}\r\nfunction getEdgeValue(edge) {\r\n return edge.getValue();\r\n}\r\nfunction sum(array, cb, orient) {\r\n var sum = 0;\r\n var len = array.length;\r\n var i = -1;\r\n while (++i < len) {\r\n var value = +cb(array[i], orient);\r\n if (!isNaN(value)) {\r\n sum += value;\r\n }\r\n }\r\n return sum;\r\n}\r\nfunction relaxLeftToRight(nodesByBreadth, alpha, orient) {\r\n each(nodesByBreadth, function (nodes) {\r\n each(nodes, function (node) {\r\n if (node.inEdges.length) {\r\n var y = sum(node.inEdges, weightedSource, orient)\r\n / sum(node.inEdges, getEdgeValue);\r\n if (isNaN(y)) {\r\n var len = node.inEdges.length;\r\n y = len ? sum(node.inEdges, centerSource, orient) / len : 0;\r\n }\r\n if (orient === 'vertical') {\r\n var nodeX = node.getLayout().x + (y - center$1(node, orient)) * alpha;\r\n node.setLayout({ x: nodeX }, true);\r\n }\r\n else {\r\n var nodeY = node.getLayout().y + (y - center$1(node, orient)) * alpha;\r\n node.setLayout({ y: nodeY }, true);\r\n }\r\n }\r\n });\r\n });\r\n}\r\nfunction computeEdgeDepths(nodes, orient) {\r\n var keyAttr = orient === 'vertical' ? 'x' : 'y';\r\n each(nodes, function (node) {\r\n node.outEdges.sort(function (a, b) {\r\n return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr];\r\n });\r\n node.inEdges.sort(function (a, b) {\r\n return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr];\r\n });\r\n });\r\n each(nodes, function (node) {\r\n var sy = 0;\r\n var ty = 0;\r\n each(node.outEdges, function (edge) {\r\n edge.setLayout({ sy: sy }, true);\r\n sy += edge.getLayout().dy;\r\n });\r\n each(node.inEdges, function (edge) {\r\n edge.setLayout({ ty: ty }, true);\r\n ty += edge.getLayout().dy;\r\n });\r\n });\r\n}\n\nfunction sankeyVisual(ecModel) {\r\n ecModel.eachSeriesByType('sankey', function (seriesModel) {\r\n var graph = seriesModel.getGraph();\r\n var nodes = graph.nodes;\r\n if (nodes.length) {\r\n var minValue_1 = Infinity;\r\n var maxValue_1 = -Infinity;\r\n each(nodes, function (node) {\r\n var nodeValue = node.getLayout().value;\r\n if (nodeValue < minValue_1) {\r\n minValue_1 = nodeValue;\r\n }\r\n if (nodeValue > maxValue_1) {\r\n maxValue_1 = nodeValue;\r\n }\r\n });\r\n each(nodes, function (node) {\r\n var mapping = new VisualMapping({\r\n type: 'color',\r\n mappingMethod: 'linear',\r\n dataExtent: [minValue_1, maxValue_1],\r\n visual: seriesModel.get('color')\r\n });\r\n var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);\r\n var customColor = node.getModel().get(['itemStyle', 'color']);\r\n if (customColor != null) {\r\n node.setVisual('color', customColor);\r\n node.setVisual('style', { fill: customColor });\r\n }\r\n else {\r\n node.setVisual('color', mapValueToColor);\r\n node.setVisual('style', { fill: mapValueToColor });\r\n }\r\n });\r\n }\r\n });\r\n}\n\nregisterLayout(sankeyLayout);\r\nregisterVisual(sankeyVisual);\n\nvar WhiskerBoxCommonMixin = (function () {\r\n function WhiskerBoxCommonMixin() {\r\n }\r\n WhiskerBoxCommonMixin.prototype.getInitialData = function (option, ecModel) {\r\n var ordinalMeta;\r\n var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\r\n var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\r\n var xAxisType = xAxisModel.get('type');\r\n var yAxisType = yAxisModel.get('type');\r\n var addOrdinal;\r\n if (xAxisType === 'category') {\r\n option.layout = 'horizontal';\r\n ordinalMeta = xAxisModel.getOrdinalMeta();\r\n addOrdinal = true;\r\n }\r\n else if (yAxisType === 'category') {\r\n option.layout = 'vertical';\r\n ordinalMeta = yAxisModel.getOrdinalMeta();\r\n addOrdinal = true;\r\n }\r\n else {\r\n option.layout = option.layout || 'horizontal';\r\n }\r\n var coordDims = ['x', 'y'];\r\n var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\r\n var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\r\n var otherAxisDim = coordDims[1 - baseAxisDimIndex];\r\n var axisModels = [xAxisModel, yAxisModel];\r\n var baseAxisType = axisModels[baseAxisDimIndex].get('type');\r\n var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\r\n var data = option.data;\r\n if (data && addOrdinal) {\r\n var newOptionData_1 = [];\r\n each(data, function (item, index) {\r\n var newItem;\r\n if (isArray(item)) {\r\n newItem = item.slice();\r\n item.unshift(index);\r\n }\r\n else if (isArray(item.value)) {\r\n newItem = item.value.slice();\r\n item.value.unshift(index);\r\n }\r\n else {\r\n newItem = item;\r\n }\r\n newOptionData_1.push(newItem);\r\n });\r\n option.data = newOptionData_1;\r\n }\r\n var defaultValueDimensions = this.defaultValueDimensions;\r\n var coordDimensions = [{\r\n name: baseAxisDim,\r\n type: getDimensionTypeByAxis(baseAxisType),\r\n ordinalMeta: ordinalMeta,\r\n otherDims: {\r\n tooltip: false,\r\n itemName: 0\r\n },\r\n dimsDef: ['base']\r\n }, {\r\n name: otherAxisDim,\r\n type: getDimensionTypeByAxis(otherAxisType),\r\n dimsDef: defaultValueDimensions.slice()\r\n }];\r\n return createListSimply(this, {\r\n coordDimensions: coordDimensions,\r\n dimensionsCount: defaultValueDimensions.length + 1,\r\n encodeDefaulter: curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\r\n });\r\n };\r\n WhiskerBoxCommonMixin.prototype.getBaseAxis = function () {\r\n var dim = this._baseAxisDim;\r\n return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\r\n };\r\n return WhiskerBoxCommonMixin;\r\n}());\n\nvar BoxplotSeriesModel = (function (_super) {\r\n __extends(BoxplotSeriesModel, _super);\r\n function BoxplotSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = BoxplotSeriesModel.type;\r\n _this.defaultValueDimensions = [\r\n { name: 'min', defaultTooltip: true },\r\n { name: 'Q1', defaultTooltip: true },\r\n { name: 'median', defaultTooltip: true },\r\n { name: 'Q3', defaultTooltip: true },\r\n { name: 'max', defaultTooltip: true }\r\n ];\r\n _this.visualDrawType = 'stroke';\r\n return _this;\r\n }\r\n BoxplotSeriesModel.type = 'series.boxplot';\r\n BoxplotSeriesModel.dependencies = ['xAxis', 'yAxis', 'grid'];\r\n BoxplotSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'cartesian2d',\r\n legendHoverLink: true,\r\n layout: null,\r\n boxWidth: [7, 50],\r\n itemStyle: {\r\n color: '#fff',\r\n borderWidth: 1\r\n },\r\n emphasis: {\r\n scale: true,\r\n itemStyle: {\r\n borderWidth: 2,\r\n shadowBlur: 5,\r\n shadowOffsetX: 1,\r\n shadowOffsetY: 1,\r\n shadowColor: 'rgba(0,0,0,0.2)'\r\n }\r\n },\r\n animationDuration: 800\r\n };\r\n return BoxplotSeriesModel;\r\n}(SeriesModel));\r\nmixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true);\r\nSeriesModel.registerClass(BoxplotSeriesModel);\n\nvar BoxplotView = (function (_super) {\r\n __extends(BoxplotView, _super);\r\n function BoxplotView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = BoxplotView.type;\r\n return _this;\r\n }\r\n BoxplotView.prototype.render = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var group = this.group;\r\n var oldData = this._data;\r\n if (!this._data) {\r\n group.removeAll();\r\n }\r\n var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0;\r\n data.diff(oldData)\r\n .add(function (newIdx) {\r\n if (data.hasValue(newIdx)) {\r\n var itemLayout = data.getItemLayout(newIdx);\r\n var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);\r\n data.setItemGraphicEl(newIdx, symbolEl);\r\n group.add(symbolEl);\r\n }\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n if (!data.hasValue(newIdx)) {\r\n group.remove(symbolEl);\r\n return;\r\n }\r\n var itemLayout = data.getItemLayout(newIdx);\r\n if (!symbolEl) {\r\n symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);\r\n }\r\n else {\r\n updateNormalBoxData(itemLayout, symbolEl, data, newIdx);\r\n }\r\n group.add(symbolEl);\r\n data.setItemGraphicEl(newIdx, symbolEl);\r\n })\r\n .remove(function (oldIdx) {\r\n var el = oldData.getItemGraphicEl(oldIdx);\r\n el && group.remove(el);\r\n })\r\n .execute();\r\n this._data = data;\r\n };\r\n BoxplotView.prototype.remove = function (ecModel) {\r\n var group = this.group;\r\n var data = this._data;\r\n this._data = null;\r\n data && data.eachItemGraphicEl(function (el) {\r\n el && group.remove(el);\r\n });\r\n };\r\n BoxplotView.type = 'boxplot';\r\n return BoxplotView;\r\n}(ChartView));\r\nvar BoxPathShape = (function () {\r\n function BoxPathShape() {\r\n }\r\n return BoxPathShape;\r\n}());\r\nvar BoxPath = (function (_super) {\r\n __extends(BoxPath, _super);\r\n function BoxPath(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'boxplotBoxPath';\r\n return _this;\r\n }\r\n BoxPath.prototype.getDefaultShape = function () {\r\n return new BoxPathShape();\r\n };\r\n BoxPath.prototype.buildPath = function (ctx, shape) {\r\n var ends = shape.points;\r\n var i = 0;\r\n ctx.moveTo(ends[i][0], ends[i][1]);\r\n i++;\r\n for (; i < 4; i++) {\r\n ctx.lineTo(ends[i][0], ends[i][1]);\r\n }\r\n ctx.closePath();\r\n for (; i < ends.length; i++) {\r\n ctx.moveTo(ends[i][0], ends[i][1]);\r\n i++;\r\n ctx.lineTo(ends[i][0], ends[i][1]);\r\n }\r\n };\r\n return BoxPath;\r\n}(Path));\r\nfunction createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {\r\n var ends = itemLayout.ends;\r\n var el = new BoxPath({\r\n shape: {\r\n points: isInit\r\n ? transInit(ends, constDim, itemLayout)\r\n : ends\r\n }\r\n });\r\n updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);\r\n return el;\r\n}\r\nfunction updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {\r\n var seriesModel = data.hostModel;\r\n var updateMethod = graphic[isInit ? 'initProps' : 'updateProps'];\r\n updateMethod(el, { shape: { points: itemLayout.ends } }, seriesModel, dataIndex);\r\n el.useStyle(data.getItemVisual(dataIndex, 'style'));\r\n el.style.strokeNoScale = true;\r\n el.z2 = 100;\r\n var itemModel = data.getItemModel(dataIndex);\r\n setStatesStylesFromModel(el, itemModel);\r\n enableHoverEmphasis(el, itemModel.get(['emphasis', 'focus']), itemModel.get(['emphasis', 'blurScope']));\r\n}\r\nfunction transInit(points, dim, itemLayout) {\r\n return map(points, function (point) {\r\n point = point.slice();\r\n point[dim] = itemLayout.initBaseline;\r\n return point;\r\n });\r\n}\r\nChartView.registerClass(BoxplotView);\n\nfunction boxplotVisual(ecModel, api) {\r\n ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\r\n seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n });\r\n}\n\nvar each$7 = each;\r\nfunction boxplotLayout(ecModel) {\r\n var groupResult = groupSeriesByAxis(ecModel);\r\n each$7(groupResult, function (groupItem) {\r\n var seriesModels = groupItem.seriesModels;\r\n if (!seriesModels.length) {\r\n return;\r\n }\r\n calculateBase(groupItem);\r\n each$7(seriesModels, function (seriesModel, idx) {\r\n layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\r\n });\r\n });\r\n}\r\nfunction groupSeriesByAxis(ecModel) {\r\n var result = [];\r\n var axisList = [];\r\n ecModel.eachSeriesByType('boxplot', function (seriesModel) {\r\n var baseAxis = seriesModel.getBaseAxis();\r\n var idx = indexOf(axisList, baseAxis);\r\n if (idx < 0) {\r\n idx = axisList.length;\r\n axisList[idx] = baseAxis;\r\n result[idx] = {\r\n axis: baseAxis,\r\n seriesModels: []\r\n };\r\n }\r\n result[idx].seriesModels.push(seriesModel);\r\n });\r\n return result;\r\n}\r\nfunction calculateBase(groupItem) {\r\n var extent;\r\n var baseAxis = groupItem.axis;\r\n var seriesModels = groupItem.seriesModels;\r\n var seriesCount = seriesModels.length;\r\n var boxWidthList = groupItem.boxWidthList = [];\r\n var boxOffsetList = groupItem.boxOffsetList = [];\r\n var boundList = [];\r\n var bandWidth;\r\n if (baseAxis.type === 'category') {\r\n bandWidth = baseAxis.getBandWidth();\r\n }\r\n else {\r\n var maxDataCount_1 = 0;\r\n each$7(seriesModels, function (seriesModel) {\r\n maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count());\r\n });\r\n extent = baseAxis.getExtent(),\r\n Math.abs(extent[1] - extent[0]) / maxDataCount_1;\r\n }\r\n each$7(seriesModels, function (seriesModel) {\r\n var boxWidthBound = seriesModel.get('boxWidth');\r\n if (!isArray(boxWidthBound)) {\r\n boxWidthBound = [boxWidthBound, boxWidthBound];\r\n }\r\n boundList.push([\r\n parsePercent$2(boxWidthBound[0], bandWidth) || 0,\r\n parsePercent$2(boxWidthBound[1], bandWidth) || 0\r\n ]);\r\n });\r\n var availableWidth = bandWidth * 0.8 - 2;\r\n var boxGap = availableWidth / seriesCount * 0.3;\r\n var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\r\n var base = boxWidth / 2 - availableWidth / 2;\r\n each$7(seriesModels, function (seriesModel, idx) {\r\n boxOffsetList.push(base);\r\n base += boxGap + boxWidth;\r\n boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\r\n });\r\n}\r\nfunction layoutSingleSeries(seriesModel, offset, boxWidth) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var data = seriesModel.getData();\r\n var halfWidth = boxWidth / 2;\r\n var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1;\r\n var vDimIdx = 1 - cDimIdx;\r\n var coordDims = ['x', 'y'];\r\n var cDim = data.mapDimension(coordDims[cDimIdx]);\r\n var vDims = data.mapDimensionsAll(coordDims[vDimIdx]);\r\n if (cDim == null || vDims.length < 5) {\r\n return;\r\n }\r\n for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\r\n var axisDimVal = data.get(cDim, dataIndex);\r\n var median = getPoint(axisDimVal, vDims[2], dataIndex);\r\n var end1 = getPoint(axisDimVal, vDims[0], dataIndex);\r\n var end2 = getPoint(axisDimVal, vDims[1], dataIndex);\r\n var end4 = getPoint(axisDimVal, vDims[3], dataIndex);\r\n var end5 = getPoint(axisDimVal, vDims[4], dataIndex);\r\n var ends = [];\r\n addBodyEnd(ends, end2, false);\r\n addBodyEnd(ends, end4, true);\r\n ends.push(end1, end2, end5, end4);\r\n layEndLine(ends, end1);\r\n layEndLine(ends, end5);\r\n layEndLine(ends, median);\r\n data.setItemLayout(dataIndex, {\r\n initBaseline: median[vDimIdx],\r\n ends: ends\r\n });\r\n }\r\n function getPoint(axisDimVal, dim, dataIndex) {\r\n var val = data.get(dim, dataIndex);\r\n var p = [];\r\n p[cDimIdx] = axisDimVal;\r\n p[vDimIdx] = val;\r\n var point;\r\n if (isNaN(axisDimVal) || isNaN(val)) {\r\n point = [NaN, NaN];\r\n }\r\n else {\r\n point = coordSys.dataToPoint(p);\r\n point[cDimIdx] += offset;\r\n }\r\n return point;\r\n }\r\n function addBodyEnd(ends, point, start) {\r\n var point1 = point.slice();\r\n var point2 = point.slice();\r\n point1[cDimIdx] += halfWidth;\r\n point2[cDimIdx] -= halfWidth;\r\n start\r\n ? ends.push(point1, point2)\r\n : ends.push(point2, point1);\r\n }\r\n function layEndLine(ends, endCenter) {\r\n var from = endCenter.slice();\r\n var to = endCenter.slice();\r\n from[cDimIdx] -= halfWidth;\r\n to[cDimIdx] += halfWidth;\r\n ends.push(from, to);\r\n }\r\n}\n\nfunction prepareBoxplotData(rawData, opt) {\r\n opt = opt || {};\r\n var boxData = [];\r\n var outliers = [];\r\n var boundIQR = opt.boundIQR;\r\n var useExtreme = boundIQR === 'none' || boundIQR === 0;\r\n for (var i = 0; i < rawData.length; i++) {\r\n var ascList = asc(rawData[i].slice());\r\n var Q1 = quantile(ascList, 0.25);\r\n var Q2 = quantile(ascList, 0.5);\r\n var Q3 = quantile(ascList, 0.75);\r\n var min = ascList[0];\r\n var max = ascList[ascList.length - 1];\r\n var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);\r\n var low = useExtreme\r\n ? min\r\n : Math.max(min, Q1 - bound);\r\n var high = useExtreme\r\n ? max\r\n : Math.min(max, Q3 + bound);\r\n var itemNameFormatter = opt.itemNameFormatter;\r\n var itemName = isFunction(itemNameFormatter)\r\n ? itemNameFormatter({ value: i })\r\n : isString(itemNameFormatter)\r\n ? itemNameFormatter.replace('{value}', i + '')\r\n : i + '';\r\n boxData.push([itemName, low, Q1, Q2, Q3, high]);\r\n for (var j = 0; j < ascList.length; j++) {\r\n var dataItem = ascList[j];\r\n if (dataItem < low || dataItem > high) {\r\n var outlier = [itemName, dataItem];\r\n outliers.push(outlier);\r\n }\r\n }\r\n }\r\n return {\r\n boxData: boxData,\r\n outliers: outliers\r\n };\r\n}\n\nvar boxplotTransform = {\r\n type: 'echarts:boxplot',\r\n transform: function transform(params) {\r\n var upstream = params.upstream;\r\n if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) {\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = makePrintable('source data is not applicable for this boxplot transform. Expect number[][].');\r\n }\r\n throwError(errMsg);\r\n }\r\n var result = prepareBoxplotData(upstream.getRawData(), params.config);\r\n return [{\r\n dimensions: ['ItemName', 'Low', 'Q1', 'Q2', 'Q3', 'High'],\r\n data: result.boxData\r\n }, {\r\n data: result.outliers\r\n }];\r\n }\r\n};\n\nregisterVisual(boxplotVisual);\r\nregisterLayout(boxplotLayout);\r\nregisterTransform(boxplotTransform);\n\nvar CandlestickSeriesModel = (function (_super) {\r\n __extends(CandlestickSeriesModel, _super);\r\n function CandlestickSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CandlestickSeriesModel.type;\r\n _this.defaultValueDimensions = [\r\n { name: 'open', defaultTooltip: true },\r\n { name: 'close', defaultTooltip: true },\r\n { name: 'lowest', defaultTooltip: true },\r\n { name: 'highest', defaultTooltip: true }\r\n ];\r\n return _this;\r\n }\r\n CandlestickSeriesModel.prototype.getShadowDim = function () {\r\n return 'open';\r\n };\r\n CandlestickSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n var itemLayout = data.getItemLayout(dataIndex);\r\n return itemLayout && selectors.rect(itemLayout.brushRect);\r\n };\r\n CandlestickSeriesModel.type = 'series.candlestick';\r\n CandlestickSeriesModel.dependencies = ['xAxis', 'yAxis', 'grid'];\r\n CandlestickSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'cartesian2d',\r\n legendHoverLink: true,\r\n layout: null,\r\n clip: true,\r\n itemStyle: {\r\n color: '#c23531',\r\n color0: '#314656',\r\n borderWidth: 1,\r\n borderColor: '#c23531',\r\n borderColor0: '#314656'\r\n },\r\n emphasis: {\r\n scale: true,\r\n itemStyle: {\r\n borderWidth: 2\r\n }\r\n },\r\n barMaxWidth: null,\r\n barMinWidth: null,\r\n barWidth: null,\r\n large: true,\r\n largeThreshold: 600,\r\n progressive: 3e3,\r\n progressiveThreshold: 1e4,\r\n progressiveChunkMode: 'mod',\r\n animationEasing: 'linear',\r\n animationDuration: 300\r\n };\r\n return CandlestickSeriesModel;\r\n}(SeriesModel));\r\nmixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true);\r\nSeriesModel.registerClass(CandlestickSeriesModel);\n\nvar SKIP_PROPS = ['color', 'borderColor'];\r\nvar CandlestickView = (function (_super) {\r\n __extends(CandlestickView, _super);\r\n function CandlestickView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CandlestickView.type;\r\n return _this;\r\n }\r\n CandlestickView.prototype.render = function (seriesModel, ecModel, api) {\r\n this.group.removeClipPath();\r\n this._updateDrawMode(seriesModel);\r\n this._isLargeDraw\r\n ? this._renderLarge(seriesModel)\r\n : this._renderNormal(seriesModel);\r\n };\r\n CandlestickView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n this._clear();\r\n this._updateDrawMode(seriesModel);\r\n };\r\n CandlestickView.prototype.incrementalRender = function (params, seriesModel, ecModel, api) {\r\n this._isLargeDraw\r\n ? this._incrementalRenderLarge(params, seriesModel)\r\n : this._incrementalRenderNormal(params, seriesModel);\r\n };\r\n CandlestickView.prototype._updateDrawMode = function (seriesModel) {\r\n var isLargeDraw = seriesModel.pipelineContext.large;\r\n if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\r\n this._isLargeDraw = isLargeDraw;\r\n this._clear();\r\n }\r\n };\r\n CandlestickView.prototype._renderNormal = function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var oldData = this._data;\r\n var group = this.group;\r\n var isSimpleBox = data.getLayout('isSimpleBox');\r\n var needsClip = seriesModel.get('clip', true);\r\n var coord = seriesModel.coordinateSystem;\r\n var clipArea = coord.getArea && coord.getArea();\r\n if (!this._data) {\r\n group.removeAll();\r\n }\r\n data.diff(oldData)\r\n .add(function (newIdx) {\r\n if (data.hasValue(newIdx)) {\r\n var itemLayout = data.getItemLayout(newIdx);\r\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\r\n return;\r\n }\r\n var el = createNormalBox$1(itemLayout, newIdx, true);\r\n initProps(el, { shape: { points: itemLayout.ends } }, seriesModel, newIdx);\r\n setBoxCommon(el, data, newIdx, isSimpleBox);\r\n group.add(el);\r\n data.setItemGraphicEl(newIdx, el);\r\n }\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n var el = oldData.getItemGraphicEl(oldIdx);\r\n if (!data.hasValue(newIdx)) {\r\n group.remove(el);\r\n return;\r\n }\r\n var itemLayout = data.getItemLayout(newIdx);\r\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\r\n group.remove(el);\r\n return;\r\n }\r\n if (!el) {\r\n el = createNormalBox$1(itemLayout);\r\n }\r\n else {\r\n updateProps(el, {\r\n shape: {\r\n points: itemLayout.ends\r\n }\r\n }, seriesModel, newIdx);\r\n }\r\n setBoxCommon(el, data, newIdx, isSimpleBox);\r\n group.add(el);\r\n data.setItemGraphicEl(newIdx, el);\r\n })\r\n .remove(function (oldIdx) {\r\n var el = oldData.getItemGraphicEl(oldIdx);\r\n el && group.remove(el);\r\n })\r\n .execute();\r\n this._data = data;\r\n };\r\n CandlestickView.prototype._renderLarge = function (seriesModel) {\r\n this._clear();\r\n createLarge$1(seriesModel, this.group);\r\n var clipPath = seriesModel.get('clip', true)\r\n ? createClipPath(seriesModel.coordinateSystem, false, seriesModel)\r\n : null;\r\n if (clipPath) {\r\n this.group.setClipPath(clipPath);\r\n }\r\n else {\r\n this.group.removeClipPath();\r\n }\r\n };\r\n CandlestickView.prototype._incrementalRenderNormal = function (params, seriesModel) {\r\n var data = seriesModel.getData();\r\n var isSimpleBox = data.getLayout('isSimpleBox');\r\n var dataIndex;\r\n while ((dataIndex = params.next()) != null) {\r\n var itemLayout = data.getItemLayout(dataIndex);\r\n var el = createNormalBox$1(itemLayout);\r\n setBoxCommon(el, data, dataIndex, isSimpleBox);\r\n el.incremental = true;\r\n this.group.add(el);\r\n }\r\n };\r\n CandlestickView.prototype._incrementalRenderLarge = function (params, seriesModel) {\r\n createLarge$1(seriesModel, this.group, true);\r\n };\r\n CandlestickView.prototype.remove = function (ecModel) {\r\n this._clear();\r\n };\r\n CandlestickView.prototype._clear = function () {\r\n this.group.removeAll();\r\n this._data = null;\r\n };\r\n CandlestickView.type = 'candlestick';\r\n return CandlestickView;\r\n}(ChartView));\r\nChartView.registerClass(CandlestickView);\r\nvar NormalBoxPathShape = (function () {\r\n function NormalBoxPathShape() {\r\n }\r\n return NormalBoxPathShape;\r\n}());\r\nvar NormalBoxPath = (function (_super) {\r\n __extends(NormalBoxPath, _super);\r\n function NormalBoxPath(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'normalCandlestickBox';\r\n return _this;\r\n }\r\n NormalBoxPath.prototype.getDefaultShape = function () {\r\n return new NormalBoxPathShape();\r\n };\r\n NormalBoxPath.prototype.buildPath = function (ctx, shape) {\r\n var ends = shape.points;\r\n if (this.__simpleBox) {\r\n ctx.moveTo(ends[4][0], ends[4][1]);\r\n ctx.lineTo(ends[6][0], ends[6][1]);\r\n }\r\n else {\r\n ctx.moveTo(ends[0][0], ends[0][1]);\r\n ctx.lineTo(ends[1][0], ends[1][1]);\r\n ctx.lineTo(ends[2][0], ends[2][1]);\r\n ctx.lineTo(ends[3][0], ends[3][1]);\r\n ctx.closePath();\r\n ctx.moveTo(ends[4][0], ends[4][1]);\r\n ctx.lineTo(ends[5][0], ends[5][1]);\r\n ctx.moveTo(ends[6][0], ends[6][1]);\r\n ctx.lineTo(ends[7][0], ends[7][1]);\r\n }\r\n };\r\n return NormalBoxPath;\r\n}(Path));\r\nfunction createNormalBox$1(itemLayout, dataIndex, isInit) {\r\n var ends = itemLayout.ends;\r\n return new NormalBoxPath({\r\n shape: {\r\n points: isInit\r\n ? transInit$1(ends, itemLayout)\r\n : ends\r\n },\r\n z2: 100\r\n });\r\n}\r\nfunction isNormalBoxClipped(clipArea, itemLayout) {\r\n var clipped = true;\r\n for (var i = 0; i < itemLayout.ends.length; i++) {\r\n if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\r\n clipped = false;\r\n break;\r\n }\r\n }\r\n return clipped;\r\n}\r\nfunction setBoxCommon(el, data, dataIndex, isSimpleBox) {\r\n var itemModel = data.getItemModel(dataIndex);\r\n el.useStyle(data.getItemVisual(dataIndex, 'style'));\r\n el.style.strokeNoScale = true;\r\n el.__simpleBox = isSimpleBox;\r\n setStatesStylesFromModel(el, itemModel);\r\n}\r\nfunction transInit$1(points, itemLayout) {\r\n return map(points, function (point) {\r\n point = point.slice();\r\n point[1] = itemLayout.initBaseline;\r\n return point;\r\n });\r\n}\r\nvar LargeBoxPathShape = (function () {\r\n function LargeBoxPathShape() {\r\n }\r\n return LargeBoxPathShape;\r\n}());\r\nvar LargeBoxPath = (function (_super) {\r\n __extends(LargeBoxPath, _super);\r\n function LargeBoxPath(opts) {\r\n var _this = _super.call(this, opts) || this;\r\n _this.type = 'largeCandlestickBox';\r\n return _this;\r\n }\r\n LargeBoxPath.prototype.getDefaultShape = function () {\r\n return new LargeBoxPathShape();\r\n };\r\n LargeBoxPath.prototype.buildPath = function (ctx, shape) {\r\n var points = shape.points;\r\n for (var i = 0; i < points.length;) {\r\n if (this.__sign === points[i++]) {\r\n var x = points[i++];\r\n ctx.moveTo(x, points[i++]);\r\n ctx.lineTo(x, points[i++]);\r\n }\r\n else {\r\n i += 3;\r\n }\r\n }\r\n };\r\n return LargeBoxPath;\r\n}(Path));\r\nfunction createLarge$1(seriesModel, group, incremental) {\r\n var data = seriesModel.getData();\r\n var largePoints = data.getLayout('largePoints');\r\n var elP = new LargeBoxPath({\r\n shape: { points: largePoints },\r\n __sign: 1\r\n });\r\n group.add(elP);\r\n var elN = new LargeBoxPath({\r\n shape: { points: largePoints },\r\n __sign: -1\r\n });\r\n group.add(elN);\r\n setLargeStyle$1(1, elP, seriesModel);\r\n setLargeStyle$1(-1, elN, seriesModel);\r\n if (incremental) {\r\n elP.incremental = true;\r\n elN.incremental = true;\r\n }\r\n}\r\nfunction setLargeStyle$1(sign, el, seriesModel, data) {\r\n var borderColor = seriesModel.get(['itemStyle', sign > 0 ? 'borderColor' : 'borderColor0'])\r\n || seriesModel.get(['itemStyle', sign > 0 ? 'color' : 'color0']);\r\n var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(SKIP_PROPS);\r\n el.useStyle(itemStyle);\r\n el.style.fill = null;\r\n el.style.stroke = borderColor;\r\n}\n\nfunction candlestickPreprocessor(option) {\r\n if (!option || !isArray(option.series)) {\r\n return;\r\n }\r\n each(option.series, function (seriesItem) {\r\n if (isObject(seriesItem) && seriesItem.type === 'k') {\r\n seriesItem.type = 'candlestick';\r\n }\r\n });\r\n}\n\nvar positiveBorderColorQuery = ['itemStyle', 'borderColor'];\r\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\r\nvar positiveColorQuery = ['itemStyle', 'color'];\r\nvar negativeColorQuery = ['itemStyle', 'color0'];\r\nvar candlestickVisual = {\r\n seriesType: 'candlestick',\r\n plan: createRenderPlanner(),\r\n performRawSeries: true,\r\n reset: function (seriesModel, ecModel) {\r\n function getColor(sign, model) {\r\n return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);\r\n }\r\n function getBorderColor(sign, model) {\r\n return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);\r\n }\r\n var data = seriesModel.getData();\r\n data.setVisual('legendSymbol', 'roundRect');\r\n if (ecModel.isSeriesFiltered(seriesModel)) {\r\n return;\r\n }\r\n var isLargeRender = seriesModel.pipelineContext.large;\r\n return !isLargeRender && {\r\n progress: function (params, data) {\r\n var dataIndex;\r\n while ((dataIndex = params.next()) != null) {\r\n var itemModel = data.getItemModel(dataIndex);\r\n var sign = data.getItemLayout(dataIndex).sign;\r\n var style = itemModel.getItemStyle();\r\n style.fill = getColor(sign, itemModel);\r\n style.stroke = getBorderColor(sign, itemModel) || style.fill;\r\n var existsStyle = data.ensureUniqueItemVisual(dataIndex, 'style');\r\n extend(existsStyle, style);\r\n }\r\n }\r\n };\r\n }\r\n};\n\nvar LargeArr$1 = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\nvar candlestickLayout = {\r\n seriesType: 'candlestick',\r\n plan: createRenderPlanner(),\r\n reset: function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var data = seriesModel.getData();\r\n var candleWidth = calculateCandleWidth(seriesModel, data);\r\n var cDimIdx = 0;\r\n var vDimIdx = 1;\r\n var coordDims = ['x', 'y'];\r\n var cDim = data.mapDimension(coordDims[cDimIdx]);\r\n var vDims = data.mapDimensionsAll(coordDims[vDimIdx]);\r\n var openDim = vDims[0];\r\n var closeDim = vDims[1];\r\n var lowestDim = vDims[2];\r\n var highestDim = vDims[3];\r\n data.setLayout({\r\n candleWidth: candleWidth,\r\n isSimpleBox: candleWidth <= 1.3\r\n });\r\n if (cDim == null || vDims.length < 4) {\r\n return;\r\n }\r\n return {\r\n progress: seriesModel.pipelineContext.large\r\n ? largeProgress : normalProgress\r\n };\r\n function normalProgress(params, data) {\r\n var dataIndex;\r\n while ((dataIndex = params.next()) != null) {\r\n var axisDimVal = data.get(cDim, dataIndex);\r\n var openVal = data.get(openDim, dataIndex);\r\n var closeVal = data.get(closeDim, dataIndex);\r\n var lowestVal = data.get(lowestDim, dataIndex);\r\n var highestVal = data.get(highestDim, dataIndex);\r\n var ocLow = Math.min(openVal, closeVal);\r\n var ocHigh = Math.max(openVal, closeVal);\r\n var ocLowPoint = getPoint(ocLow, axisDimVal);\r\n var ocHighPoint = getPoint(ocHigh, axisDimVal);\r\n var lowestPoint = getPoint(lowestVal, axisDimVal);\r\n var highestPoint = getPoint(highestVal, axisDimVal);\r\n var ends = [];\r\n addBodyEnd(ends, ocHighPoint, 0);\r\n addBodyEnd(ends, ocLowPoint, 1);\r\n ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\r\n data.setItemLayout(dataIndex, {\r\n sign: getSign(data, dataIndex, openVal, closeVal, closeDim),\r\n initBaseline: openVal > closeVal\r\n ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\r\n ends: ends,\r\n brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\r\n });\r\n }\r\n function getPoint(val, axisDimVal) {\r\n var p = [];\r\n p[cDimIdx] = axisDimVal;\r\n p[vDimIdx] = val;\r\n return (isNaN(axisDimVal) || isNaN(val))\r\n ? [NaN, NaN]\r\n : coordSys.dataToPoint(p);\r\n }\r\n function addBodyEnd(ends, point, start) {\r\n var point1 = point.slice();\r\n var point2 = point.slice();\r\n point1[cDimIdx] = subPixelOptimize$1(point1[cDimIdx] + candleWidth / 2, 1, false);\r\n point2[cDimIdx] = subPixelOptimize$1(point2[cDimIdx] - candleWidth / 2, 1, true);\r\n start\r\n ? ends.push(point1, point2)\r\n : ends.push(point2, point1);\r\n }\r\n function makeBrushRect(lowestVal, highestVal, axisDimVal) {\r\n var pmin = getPoint(lowestVal, axisDimVal);\r\n var pmax = getPoint(highestVal, axisDimVal);\r\n pmin[cDimIdx] -= candleWidth / 2;\r\n pmax[cDimIdx] -= candleWidth / 2;\r\n return {\r\n x: pmin[0],\r\n y: pmin[1],\r\n width: candleWidth ,\r\n height: pmax[1] - pmin[1] \r\n };\r\n }\r\n function subPixelOptimizePoint(point) {\r\n point[cDimIdx] = subPixelOptimize$1(point[cDimIdx], 1);\r\n return point;\r\n }\r\n }\r\n function largeProgress(params, data) {\r\n var points = new LargeArr$1(params.count * 4);\r\n var offset = 0;\r\n var point;\r\n var tmpIn = [];\r\n var tmpOut = [];\r\n var dataIndex;\r\n while ((dataIndex = params.next()) != null) {\r\n var axisDimVal = data.get(cDim, dataIndex);\r\n var openVal = data.get(openDim, dataIndex);\r\n var closeVal = data.get(closeDim, dataIndex);\r\n var lowestVal = data.get(lowestDim, dataIndex);\r\n var highestVal = data.get(highestDim, dataIndex);\r\n if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\r\n points[offset++] = NaN;\r\n offset += 3;\r\n continue;\r\n }\r\n points[offset++] = getSign(data, dataIndex, openVal, closeVal, closeDim);\r\n tmpIn[cDimIdx] = axisDimVal;\r\n tmpIn[vDimIdx] = lowestVal;\r\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n points[offset++] = point ? point[0] : NaN;\r\n points[offset++] = point ? point[1] : NaN;\r\n tmpIn[vDimIdx] = highestVal;\r\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n points[offset++] = point ? point[1] : NaN;\r\n }\r\n data.setLayout('largePoints', points);\r\n }\r\n }\r\n};\r\nfunction getSign(data, dataIndex, openVal, closeVal, closeDim) {\r\n var sign;\r\n if (openVal > closeVal) {\r\n sign = -1;\r\n }\r\n else if (openVal < closeVal) {\r\n sign = 1;\r\n }\r\n else {\r\n sign = dataIndex > 0\r\n ? (data.get(closeDim, dataIndex - 1) <= closeVal ? 1 : -1)\r\n : 1;\r\n }\r\n return sign;\r\n}\r\nfunction calculateCandleWidth(seriesModel, data) {\r\n var baseAxis = seriesModel.getBaseAxis();\r\n var extent;\r\n var bandWidth = baseAxis.type === 'category'\r\n ? baseAxis.getBandWidth()\r\n : (extent = baseAxis.getExtent(),\r\n Math.abs(extent[1] - extent[0]) / data.count());\r\n var barMaxWidth = parsePercent$2(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\r\n var barMinWidth = parsePercent$2(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\r\n var barWidth = seriesModel.get('barWidth');\r\n return barWidth != null\r\n ? parsePercent$2(barWidth, bandWidth)\r\n : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\r\n}\n\nregisterPreprocessor(candlestickPreprocessor);\r\nregisterVisual(candlestickVisual);\r\nregisterLayout(candlestickLayout);\n\nvar EffectScatterSeriesModel = (function (_super) {\r\n __extends(EffectScatterSeriesModel, _super);\r\n function EffectScatterSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = EffectScatterSeriesModel.type;\r\n _this.hasSymbolVisual = true;\r\n return _this;\r\n }\r\n EffectScatterSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListFromArray(this.getSource(), this, { useEncodeDefaulter: true });\r\n };\r\n EffectScatterSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n return selectors.point(data.getItemLayout(dataIndex));\r\n };\r\n EffectScatterSeriesModel.type = 'series.effectScatter';\r\n EffectScatterSeriesModel.dependencies = ['grid', 'polar'];\r\n EffectScatterSeriesModel.defaultOption = {\r\n coordinateSystem: 'cartesian2d',\r\n zlevel: 0,\r\n z: 2,\r\n legendHoverLink: true,\r\n effectType: 'ripple',\r\n progressive: 0,\r\n showEffectOn: 'render',\r\n rippleEffect: {\r\n period: 4,\r\n scale: 2.5,\r\n brushType: 'fill'\r\n },\r\n symbolSize: 10\r\n };\r\n return EffectScatterSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(EffectScatterSeriesModel);\n\nvar EFFECT_RIPPLE_NUMBER = 3;\r\nfunction normalizeSymbolSize$1(symbolSize) {\r\n if (!isArray(symbolSize)) {\r\n symbolSize = [+symbolSize, +symbolSize];\r\n }\r\n return symbolSize;\r\n}\r\nfunction updateRipplePath(rippleGroup, effectCfg) {\r\n var color = effectCfg.rippleEffectColor || effectCfg.color;\r\n rippleGroup.eachChild(function (ripplePath) {\r\n ripplePath.attr({\r\n z: effectCfg.z,\r\n zlevel: effectCfg.zlevel,\r\n style: {\r\n stroke: effectCfg.brushType === 'stroke' ? color : null,\r\n fill: effectCfg.brushType === 'fill' ? color : null\r\n }\r\n });\r\n });\r\n}\r\nvar EffectSymbol = (function (_super) {\r\n __extends(EffectSymbol, _super);\r\n function EffectSymbol(data, idx) {\r\n var _this = _super.call(this) || this;\r\n var symbol = new Symbol(data, idx);\r\n var rippleGroup = new Group();\r\n _this.add(symbol);\r\n _this.add(rippleGroup);\r\n _this.updateData(data, idx);\r\n return _this;\r\n }\r\n EffectSymbol.prototype.stopEffectAnimation = function () {\r\n this.childAt(1).removeAll();\r\n };\r\n EffectSymbol.prototype.startEffectAnimation = function (effectCfg) {\r\n var symbolType = effectCfg.symbolType;\r\n var color = effectCfg.color;\r\n var rippleGroup = this.childAt(1);\r\n for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) {\r\n var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);\r\n ripplePath.attr({\r\n style: {\r\n strokeNoScale: true\r\n },\r\n z2: 99,\r\n silent: true,\r\n scaleX: 0.5,\r\n scaleY: 0.5\r\n });\r\n var delay = -i / EFFECT_RIPPLE_NUMBER * effectCfg.period + effectCfg.effectOffset;\r\n ripplePath.animate('', true)\r\n .when(effectCfg.period, {\r\n scale: [effectCfg.rippleScale / 2, effectCfg.rippleScale / 2]\r\n })\r\n .delay(delay)\r\n .start();\r\n ripplePath.animateStyle(true)\r\n .when(effectCfg.period, {\r\n opacity: 0\r\n })\r\n .delay(delay)\r\n .start();\r\n rippleGroup.add(ripplePath);\r\n }\r\n updateRipplePath(rippleGroup, effectCfg);\r\n };\r\n EffectSymbol.prototype.updateEffectAnimation = function (effectCfg) {\r\n var oldEffectCfg = this._effectCfg;\r\n var rippleGroup = this.childAt(1);\r\n var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale'];\r\n for (var i = 0; i < DIFFICULT_PROPS.length; i++) {\r\n var propName = DIFFICULT_PROPS[i];\r\n if (oldEffectCfg[propName] !== effectCfg[propName]) {\r\n this.stopEffectAnimation();\r\n this.startEffectAnimation(effectCfg);\r\n return;\r\n }\r\n }\r\n updateRipplePath(rippleGroup, effectCfg);\r\n };\r\n EffectSymbol.prototype.highlight = function () {\r\n enterEmphasis(this);\r\n };\r\n EffectSymbol.prototype.downplay = function () {\r\n leaveEmphasis(this);\r\n };\r\n EffectSymbol.prototype.updateData = function (data, idx) {\r\n var _this = this;\r\n var seriesModel = data.hostModel;\r\n this.childAt(0).updateData(data, idx);\r\n var rippleGroup = this.childAt(1);\r\n var itemModel = data.getItemModel(idx);\r\n var symbolType = data.getItemVisual(idx, 'symbol');\r\n var symbolSize = normalizeSymbolSize$1(data.getItemVisual(idx, 'symbolSize'));\r\n var symbolStyle = data.getItemVisual(idx, 'style');\r\n var color = symbolStyle && symbolStyle.fill;\r\n rippleGroup.setScale(symbolSize);\r\n rippleGroup.traverse(function (ripplePath) {\r\n ripplePath.setStyle('fill', color);\r\n });\r\n var symbolOffset = itemModel.getShallow('symbolOffset');\r\n if (symbolOffset) {\r\n rippleGroup.x = parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n rippleGroup.y = parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n }\r\n var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\r\n rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\r\n var effectCfg = {};\r\n effectCfg.showEffectOn = seriesModel.get('showEffectOn');\r\n effectCfg.rippleScale = itemModel.get(['rippleEffect', 'scale']);\r\n effectCfg.brushType = itemModel.get(['rippleEffect', 'brushType']);\r\n effectCfg.period = itemModel.get(['rippleEffect', 'period']) * 1000;\r\n effectCfg.effectOffset = idx / data.count();\r\n effectCfg.z = seriesModel.getShallow('z') || 0;\r\n effectCfg.zlevel = seriesModel.getShallow('zlevel') || 0;\r\n effectCfg.symbolType = symbolType;\r\n effectCfg.color = color;\r\n effectCfg.rippleEffectColor = itemModel.get(['rippleEffect', 'color']);\r\n this.off('mouseover').off('mouseout').off('emphasis').off('normal');\r\n if (effectCfg.showEffectOn === 'render') {\r\n this._effectCfg\r\n ? this.updateEffectAnimation(effectCfg)\r\n : this.startEffectAnimation(effectCfg);\r\n this._effectCfg = effectCfg;\r\n }\r\n else {\r\n this._effectCfg = null;\r\n this.stopEffectAnimation();\r\n this.onHoverStateChange = function (toState) {\r\n if (toState === 'emphasis') {\r\n if (effectCfg.showEffectOn !== 'render') {\r\n _this.startEffectAnimation(effectCfg);\r\n }\r\n }\r\n else if (toState === 'normal') {\r\n if (effectCfg.showEffectOn !== 'render') {\r\n _this.stopEffectAnimation();\r\n }\r\n }\r\n };\r\n }\r\n this._effectCfg = effectCfg;\r\n enableHoverEmphasis(this);\r\n };\r\n EffectSymbol.prototype.fadeOut = function (cb) {\r\n this.off('mouseover').off('mouseout');\r\n cb && cb();\r\n };\r\n return EffectSymbol;\r\n}(Group));\r\ninherits(EffectSymbol, Group);\n\nvar EffectScatterView = (function (_super) {\r\n __extends(EffectScatterView, _super);\r\n function EffectScatterView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = EffectScatterView.type;\r\n return _this;\r\n }\r\n EffectScatterView.prototype.init = function () {\r\n this._symbolDraw = new SymbolDraw(EffectSymbol);\r\n };\r\n EffectScatterView.prototype.render = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var effectSymbolDraw = this._symbolDraw;\r\n effectSymbolDraw.updateData(data);\r\n this.group.add(effectSymbolDraw.group);\r\n };\r\n EffectScatterView.prototype.updateTransform = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n this.group.dirty();\r\n var res = pointsLayout('').reset(seriesModel, ecModel, api);\r\n if (res.progress) {\r\n res.progress({\r\n start: 0,\r\n end: data.count(),\r\n count: data.count()\r\n }, data);\r\n }\r\n this._symbolDraw.updateLayout();\r\n };\r\n EffectScatterView.prototype._updateGroupTransform = function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys && coordSys.getRoamTransform) {\r\n this.group.transform = clone$2(coordSys.getRoamTransform());\r\n this.group.decomposeTransform();\r\n }\r\n };\r\n EffectScatterView.prototype.remove = function (ecModel, api) {\r\n this._symbolDraw && this._symbolDraw.remove(true);\r\n };\r\n EffectScatterView.type = 'effectScatter';\r\n return EffectScatterView;\r\n}(ChartView));\r\nChartView.registerClass(EffectScatterView);\n\nregisterLayout(pointsLayout('effectScatter'));\n\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\r\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\r\nfunction compatEc2(seriesOpt) {\r\n var data = seriesOpt.data;\r\n if (data && data[0] && data[0][0] && data[0][0].coord) {\r\n if (__DEV__) {\r\n console.warn('Lines data configuration has been changed to'\r\n + ' { coords:[[1,2],[2,3]] }');\r\n }\r\n seriesOpt.data = map(data, function (itemOpt) {\r\n var coords = [\r\n itemOpt[0].coord, itemOpt[1].coord\r\n ];\r\n var target = {\r\n coords: coords\r\n };\r\n if (itemOpt[0].name) {\r\n target.fromName = itemOpt[0].name;\r\n }\r\n if (itemOpt[1].name) {\r\n target.toName = itemOpt[1].name;\r\n }\r\n return mergeAll([target, itemOpt[0], itemOpt[1]]);\r\n });\r\n }\r\n}\r\nvar LinesSeriesModel = (function (_super) {\r\n __extends(LinesSeriesModel, _super);\r\n function LinesSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = LinesSeriesModel.type;\r\n _this.visualStyleAccessPath = 'lineStyle';\r\n _this.visualDrawType = 'stroke';\r\n return _this;\r\n }\r\n LinesSeriesModel.prototype.init = function (option) {\r\n option.data = option.data || [];\r\n compatEc2(option);\r\n var result = this._processFlatCoordsArray(option.data);\r\n this._flatCoords = result.flatCoords;\r\n this._flatCoordsOffset = result.flatCoordsOffset;\r\n if (result.flatCoords) {\r\n option.data = new Float32Array(result.count);\r\n }\r\n _super.prototype.init.apply(this, arguments);\r\n };\r\n LinesSeriesModel.prototype.mergeOption = function (option) {\r\n compatEc2(option);\r\n if (option.data) {\r\n var result = this._processFlatCoordsArray(option.data);\r\n this._flatCoords = result.flatCoords;\r\n this._flatCoordsOffset = result.flatCoordsOffset;\r\n if (result.flatCoords) {\r\n option.data = new Float32Array(result.count);\r\n }\r\n }\r\n _super.prototype.mergeOption.apply(this, arguments);\r\n };\r\n LinesSeriesModel.prototype.appendData = function (params) {\r\n var result = this._processFlatCoordsArray(params.data);\r\n if (result.flatCoords) {\r\n if (!this._flatCoords) {\r\n this._flatCoords = result.flatCoords;\r\n this._flatCoordsOffset = result.flatCoordsOffset;\r\n }\r\n else {\r\n this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\r\n this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\r\n }\r\n params.data = new Float32Array(result.count);\r\n }\r\n this.getRawData().appendData(params.data);\r\n };\r\n LinesSeriesModel.prototype._getCoordsFromItemModel = function (idx) {\r\n var itemModel = this.getData().getItemModel(idx);\r\n var coords = (itemModel.option instanceof Array)\r\n ? itemModel.option : itemModel.getShallow('coords');\r\n if (__DEV__) {\r\n if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) {\r\n throw new Error('Invalid coords ' + JSON.stringify(coords) + '. Lines must have 2d coords array in data item.');\r\n }\r\n }\r\n return coords;\r\n };\r\n LinesSeriesModel.prototype.getLineCoordsCount = function (idx) {\r\n if (this._flatCoordsOffset) {\r\n return this._flatCoordsOffset[idx * 2 + 1];\r\n }\r\n else {\r\n return this._getCoordsFromItemModel(idx).length;\r\n }\r\n };\r\n LinesSeriesModel.prototype.getLineCoords = function (idx, out) {\r\n if (this._flatCoordsOffset) {\r\n var offset = this._flatCoordsOffset[idx * 2];\r\n var len = this._flatCoordsOffset[idx * 2 + 1];\r\n for (var i = 0; i < len; i++) {\r\n out[i] = out[i] || [];\r\n out[i][0] = this._flatCoords[offset + i * 2];\r\n out[i][1] = this._flatCoords[offset + i * 2 + 1];\r\n }\r\n return len;\r\n }\r\n else {\r\n var coords = this._getCoordsFromItemModel(idx);\r\n for (var i = 0; i < coords.length; i++) {\r\n out[i] = out[i] || [];\r\n out[i][0] = coords[i][0];\r\n out[i][1] = coords[i][1];\r\n }\r\n return coords.length;\r\n }\r\n };\r\n LinesSeriesModel.prototype._processFlatCoordsArray = function (data) {\r\n var startOffset = 0;\r\n if (this._flatCoords) {\r\n startOffset = this._flatCoords.length;\r\n }\r\n if (typeof data[0] === 'number') {\r\n var len = data.length;\r\n var coordsOffsetAndLenStorage = new Uint32Arr(len);\r\n var coordsStorage = new Float64Arr(len);\r\n var coordsCursor = 0;\r\n var offsetCursor = 0;\r\n var dataCount = 0;\r\n for (var i = 0; i < len;) {\r\n dataCount++;\r\n var count = data[i++];\r\n coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset;\r\n coordsOffsetAndLenStorage[offsetCursor++] = count;\r\n for (var k = 0; k < count; k++) {\r\n var x = data[i++];\r\n var y = data[i++];\r\n coordsStorage[coordsCursor++] = x;\r\n coordsStorage[coordsCursor++] = y;\r\n if (i > len) {\r\n if (__DEV__) {\r\n throw new Error('Invalid data format.');\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\r\n flatCoords: coordsStorage,\r\n count: dataCount\r\n };\r\n }\r\n return {\r\n flatCoordsOffset: null,\r\n flatCoords: null,\r\n count: data.length\r\n };\r\n };\r\n LinesSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n if (__DEV__) {\r\n var CoordSys = CoordinateSystemManager.get(option.coordinateSystem);\r\n if (!CoordSys) {\r\n throw new Error('Unkown coordinate system ' + option.coordinateSystem);\r\n }\r\n }\r\n var lineData = new List(['value'], this);\r\n lineData.hasItemOption = false;\r\n lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\r\n if (dataItem instanceof Array) {\r\n return NaN;\r\n }\r\n else {\r\n lineData.hasItemOption = true;\r\n var value = dataItem.value;\r\n if (value != null) {\r\n return value instanceof Array ? value[dimIndex] : value;\r\n }\r\n }\r\n });\r\n return lineData;\r\n };\r\n LinesSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n var data = this.getData();\r\n var itemModel = data.getItemModel(dataIndex);\r\n var name = itemModel.get('name');\r\n if (name) {\r\n return name;\r\n }\r\n var fromName = itemModel.get('fromName');\r\n var toName = itemModel.get('toName');\r\n var nameArr = [];\r\n fromName != null && nameArr.push(fromName);\r\n toName != null && nameArr.push(toName);\r\n return createTooltipMarkup('nameValue', {\r\n name: nameArr.join(' > ')\r\n });\r\n };\r\n LinesSeriesModel.prototype.preventIncremental = function () {\r\n return !!this.get(['effect', 'show']);\r\n };\r\n LinesSeriesModel.prototype.getProgressive = function () {\r\n var progressive = this.option.progressive;\r\n if (progressive == null) {\r\n return this.option.large ? 1e4 : this.get('progressive');\r\n }\r\n return progressive;\r\n };\r\n LinesSeriesModel.prototype.getProgressiveThreshold = function () {\r\n var progressiveThreshold = this.option.progressiveThreshold;\r\n if (progressiveThreshold == null) {\r\n return this.option.large ? 2e4 : this.get('progressiveThreshold');\r\n }\r\n return progressiveThreshold;\r\n };\r\n LinesSeriesModel.type = 'series.lines';\r\n LinesSeriesModel.dependencies = ['grid', 'polar', 'geo', 'calendar'];\r\n LinesSeriesModel.defaultOption = {\r\n coordinateSystem: 'geo',\r\n zlevel: 0,\r\n z: 2,\r\n legendHoverLink: true,\r\n xAxisIndex: 0,\r\n yAxisIndex: 0,\r\n symbol: ['none', 'none'],\r\n symbolSize: [10, 10],\r\n geoIndex: 0,\r\n effect: {\r\n show: false,\r\n period: 4,\r\n constantSpeed: 0,\r\n symbol: 'circle',\r\n symbolSize: 3,\r\n loop: true,\r\n trailLength: 0.2\r\n },\r\n large: false,\r\n largeThreshold: 2000,\r\n polyline: false,\r\n clip: true,\r\n label: {\r\n show: false,\r\n position: 'end'\r\n },\r\n lineStyle: {\r\n opacity: 0.5\r\n }\r\n };\r\n return LinesSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(LinesSeriesModel);\n\nvar EffectLine = (function (_super) {\r\n __extends(EffectLine, _super);\r\n function EffectLine(lineData, idx, seriesScope) {\r\n var _this = _super.call(this) || this;\r\n _this.add(_this.createLine(lineData, idx, seriesScope));\r\n _this._updateEffectSymbol(lineData, idx);\r\n return _this;\r\n }\r\n EffectLine.prototype.createLine = function (lineData, idx, seriesScope) {\r\n return new Line$1(lineData, idx, seriesScope);\r\n };\r\n EffectLine.prototype._updateEffectSymbol = function (lineData, idx) {\r\n var itemModel = lineData.getItemModel(idx);\r\n var effectModel = itemModel.getModel('effect');\r\n var size = effectModel.get('symbolSize');\r\n var symbolType = effectModel.get('symbol');\r\n if (!isArray(size)) {\r\n size = [size, size];\r\n }\r\n var lineStyle = lineData.getItemVisual(idx, 'style');\r\n var color = effectModel.get('color') || (lineStyle && lineStyle.stroke);\r\n var symbol = this.childAt(1);\r\n if (this._symbolType !== symbolType) {\r\n this.remove(symbol);\r\n symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\r\n symbol.z2 = 100;\r\n symbol.culling = true;\r\n this.add(symbol);\r\n }\r\n if (!symbol) {\r\n return;\r\n }\r\n symbol.setStyle('shadowColor', color);\r\n symbol.setStyle(effectModel.getItemStyle(['color']));\r\n symbol.scaleX = size[0];\r\n symbol.scaleY = size[1];\r\n symbol.setColor(color);\r\n this._symbolType = symbolType;\r\n this._symbolScale = size;\r\n this._updateEffectAnimation(lineData, effectModel, idx);\r\n };\r\n EffectLine.prototype._updateEffectAnimation = function (lineData, effectModel, idx) {\r\n var symbol = this.childAt(1);\r\n if (!symbol) {\r\n return;\r\n }\r\n var self = this;\r\n var points = lineData.getItemLayout(idx);\r\n var period = effectModel.get('period') * 1000;\r\n var loop = effectModel.get('loop');\r\n var constantSpeed = effectModel.get('constantSpeed');\r\n var delayExpr = retrieve(effectModel.get('delay'), function (idx) {\r\n return idx / lineData.count() * period / 3;\r\n });\r\n symbol.ignore = true;\r\n this._updateAnimationPoints(symbol, points);\r\n if (constantSpeed > 0) {\r\n period = this._getLineLength(symbol) / constantSpeed * 1000;\r\n }\r\n if (period !== this._period || loop !== this._loop) {\r\n symbol.stopAnimation();\r\n if (period > 0) {\r\n var delayNum = void 0;\r\n if (typeof delayExpr === 'function') {\r\n delayNum = delayExpr(idx);\r\n }\r\n else {\r\n delayNum = delayExpr;\r\n }\r\n if (symbol.__t > 0) {\r\n delayNum = -period * symbol.__t;\r\n }\r\n symbol.__t = 0;\r\n var animator = symbol.animate('', loop)\r\n .when(period, {\r\n __t: 1\r\n })\r\n .delay(delayNum)\r\n .during(function () {\r\n self._updateSymbolPosition(symbol);\r\n });\r\n if (!loop) {\r\n animator.done(function () {\r\n self.remove(symbol);\r\n });\r\n }\r\n animator.start();\r\n }\r\n }\r\n this._period = period;\r\n this._loop = loop;\r\n };\r\n EffectLine.prototype._getLineLength = function (symbol) {\r\n return (dist(symbol.__p1, symbol.__cp1)\r\n + dist(symbol.__cp1, symbol.__p2));\r\n };\r\n EffectLine.prototype._updateAnimationPoints = function (symbol, points) {\r\n symbol.__p1 = points[0];\r\n symbol.__p2 = points[1];\r\n symbol.__cp1 = points[2] || [\r\n (points[0][0] + points[1][0]) / 2,\r\n (points[0][1] + points[1][1]) / 2\r\n ];\r\n };\r\n EffectLine.prototype.updateData = function (lineData, idx, seriesScope) {\r\n this.childAt(0).updateData(lineData, idx, seriesScope);\r\n this._updateEffectSymbol(lineData, idx);\r\n };\r\n EffectLine.prototype._updateSymbolPosition = function (symbol) {\r\n var p1 = symbol.__p1;\r\n var p2 = symbol.__p2;\r\n var cp1 = symbol.__cp1;\r\n var t = symbol.__t;\r\n var pos = [symbol.x, symbol.y];\r\n var lastPos = pos.slice();\r\n var quadraticAt$1 = quadraticAt;\r\n var quadraticDerivativeAt$1 = quadraticDerivativeAt;\r\n pos[0] = quadraticAt$1(p1[0], cp1[0], p2[0], t);\r\n pos[1] = quadraticAt$1(p1[1], cp1[1], p2[1], t);\r\n var tx = quadraticDerivativeAt$1(p1[0], cp1[0], p2[0], t);\r\n var ty = quadraticDerivativeAt$1(p1[1], cp1[1], p2[1], t);\r\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\r\n if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') {\r\n if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) {\r\n symbol.scaleY = dist(lastPos, pos) * 1.05;\r\n if (t === 1) {\r\n pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;\r\n pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;\r\n }\r\n }\r\n else if (symbol.__lastT === 1) {\r\n symbol.scaleY = 2 * dist(p1, pos);\r\n }\r\n else {\r\n symbol.scaleY = this._symbolScale[1];\r\n }\r\n }\r\n symbol.__lastT = symbol.__t;\r\n symbol.ignore = false;\r\n symbol.x = pos[0];\r\n symbol.y = pos[1];\r\n };\r\n EffectLine.prototype.updateLayout = function (lineData, idx) {\r\n this.childAt(0).updateLayout(lineData, idx);\r\n var effectModel = lineData.getItemModel(idx).getModel('effect');\r\n this._updateEffectAnimation(lineData, effectModel, idx);\r\n };\r\n return EffectLine;\r\n}(Group));\n\nvar Polyline$1 = (function (_super) {\r\n __extends(Polyline$1, _super);\r\n function Polyline$1(lineData, idx, seriesScope) {\r\n var _this = _super.call(this) || this;\r\n _this._createPolyline(lineData, idx, seriesScope);\r\n return _this;\r\n }\r\n Polyline$1.prototype._createPolyline = function (lineData, idx, seriesScope) {\r\n var points = lineData.getItemLayout(idx);\r\n var line = new Polyline({\r\n shape: {\r\n points: points\r\n }\r\n });\r\n this.add(line);\r\n this._updateCommonStl(lineData, idx, seriesScope);\r\n };\r\n Polyline$1.prototype.updateData = function (lineData, idx, seriesScope) {\r\n var seriesModel = lineData.hostModel;\r\n var line = this.childAt(0);\r\n var target = {\r\n shape: {\r\n points: lineData.getItemLayout(idx)\r\n }\r\n };\r\n updateProps(line, target, seriesModel, idx);\r\n this._updateCommonStl(lineData, idx, seriesScope);\r\n };\r\n Polyline$1.prototype._updateCommonStl = function (lineData, idx, seriesScope) {\r\n var line = this.childAt(0);\r\n var itemModel = lineData.getItemModel(idx);\r\n var hoverLineStyle = seriesScope && seriesScope.emphasisLineStyle;\r\n if (!seriesScope || lineData.hasItemOption) {\r\n hoverLineStyle = itemModel.getModel(['emphasis', 'lineStyle']).getLineStyle();\r\n }\r\n line.useStyle(lineData.getItemVisual(idx, 'style'));\r\n line.style.fill = null;\r\n line.style.strokeNoScale = true;\r\n var lineEmphasisState = line.ensureState('emphasis');\r\n lineEmphasisState.style = hoverLineStyle;\r\n enableHoverEmphasis(this);\r\n };\r\n Polyline$1.prototype.updateLayout = function (lineData, idx) {\r\n var polyline = this.childAt(0);\r\n polyline.setShape('points', lineData.getItemLayout(idx));\r\n };\r\n return Polyline$1;\r\n}(Group));\n\nvar EffectPolyline = (function (_super) {\r\n __extends(EffectPolyline, _super);\r\n function EffectPolyline() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this._lastFrame = 0;\r\n _this._lastFramePercent = 0;\r\n return _this;\r\n }\r\n EffectPolyline.prototype.createLine = function (lineData, idx, seriesScope) {\r\n return new Polyline$1(lineData, idx, seriesScope);\r\n };\r\n EffectPolyline.prototype._updateAnimationPoints = function (symbol, points) {\r\n this._points = points;\r\n var accLenArr = [0];\r\n var len = 0;\r\n for (var i = 1; i < points.length; i++) {\r\n var p1 = points[i - 1];\r\n var p2 = points[i];\r\n len += dist(p1, p2);\r\n accLenArr.push(len);\r\n }\r\n if (len === 0) {\r\n this._length = 0;\r\n return;\r\n }\r\n for (var i = 0; i < accLenArr.length; i++) {\r\n accLenArr[i] /= len;\r\n }\r\n this._offsets = accLenArr;\r\n this._length = len;\r\n };\r\n EffectPolyline.prototype._getLineLength = function () {\r\n return this._length;\r\n };\r\n EffectPolyline.prototype._updateSymbolPosition = function (symbol) {\r\n var t = symbol.__t;\r\n var points = this._points;\r\n var offsets = this._offsets;\r\n var len = points.length;\r\n if (!offsets) {\r\n return;\r\n }\r\n var lastFrame = this._lastFrame;\r\n var frame;\r\n if (t < this._lastFramePercent) {\r\n var start = Math.min(lastFrame + 1, len - 1);\r\n for (frame = start; frame >= 0; frame--) {\r\n if (offsets[frame] <= t) {\r\n break;\r\n }\r\n }\r\n frame = Math.min(frame, len - 2);\r\n }\r\n else {\r\n for (frame = lastFrame; frame < len; frame++) {\r\n if (offsets[frame] > t) {\r\n break;\r\n }\r\n }\r\n frame = Math.min(frame - 1, len - 2);\r\n }\r\n var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]);\r\n var p0 = points[frame];\r\n var p1 = points[frame + 1];\r\n symbol.x = p0[0] * (1 - p) + p * p1[0];\r\n symbol.y = p0[1] * (1 - p) + p * p1[1];\r\n var tx = p1[0] - p0[0];\r\n var ty = p1[1] - p0[1];\r\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\r\n this._lastFrame = frame;\r\n this._lastFramePercent = t;\r\n symbol.ignore = false;\r\n };\r\n return EffectPolyline;\r\n}(EffectLine));\n\nvar LargeLinesPathShape = (function () {\r\n function LargeLinesPathShape() {\r\n this.polyline = false;\r\n this.curveness = 0;\r\n this.segs = [];\r\n }\r\n return LargeLinesPathShape;\r\n}());\r\nvar LargeLinesPath = (function (_super) {\r\n __extends(LargeLinesPath, _super);\r\n function LargeLinesPath(opts) {\r\n return _super.call(this, opts) || this;\r\n }\r\n LargeLinesPath.prototype.getDefaultStyle = function () {\r\n return {\r\n stroke: '#000',\r\n fill: null\r\n };\r\n };\r\n LargeLinesPath.prototype.getDefaultShape = function () {\r\n return new LargeLinesPathShape();\r\n };\r\n LargeLinesPath.prototype.buildPath = function (ctx, shape) {\r\n var segs = shape.segs;\r\n var curveness = shape.curveness;\r\n if (shape.polyline) {\r\n for (var i = 0; i < segs.length;) {\r\n var count = segs[i++];\r\n if (count > 0) {\r\n ctx.moveTo(segs[i++], segs[i++]);\r\n for (var k = 1; k < count; k++) {\r\n ctx.lineTo(segs[i++], segs[i++]);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < segs.length;) {\r\n var x0 = segs[i++];\r\n var y0 = segs[i++];\r\n var x1 = segs[i++];\r\n var y1 = segs[i++];\r\n ctx.moveTo(x0, y0);\r\n if (curveness > 0) {\r\n var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\r\n var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\r\n ctx.quadraticCurveTo(x2, y2, x1, y1);\r\n }\r\n else {\r\n ctx.lineTo(x1, y1);\r\n }\r\n }\r\n }\r\n };\r\n LargeLinesPath.prototype.findDataIndex = function (x, y) {\r\n var shape = this.shape;\r\n var segs = shape.segs;\r\n var curveness = shape.curveness;\r\n var lineWidth = this.style.lineWidth;\r\n if (shape.polyline) {\r\n var dataIndex = 0;\r\n for (var i = 0; i < segs.length;) {\r\n var count = segs[i++];\r\n if (count > 0) {\r\n var x0 = segs[i++];\r\n var y0 = segs[i++];\r\n for (var k = 1; k < count; k++) {\r\n var x1 = segs[i++];\r\n var y1 = segs[i++];\r\n if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) {\r\n return dataIndex;\r\n }\r\n }\r\n }\r\n dataIndex++;\r\n }\r\n }\r\n else {\r\n var dataIndex = 0;\r\n for (var i = 0; i < segs.length;) {\r\n var x0 = segs[i++];\r\n var y0 = segs[i++];\r\n var x1 = segs[i++];\r\n var y1 = segs[i++];\r\n if (curveness > 0) {\r\n var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\r\n var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\r\n if (containStroke$2(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) {\r\n return dataIndex;\r\n }\r\n }\r\n else {\r\n if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) {\r\n return dataIndex;\r\n }\r\n }\r\n dataIndex++;\r\n }\r\n }\r\n return -1;\r\n };\r\n return LargeLinesPath;\r\n}(Path));\r\nvar LargeLineDraw = (function () {\r\n function LargeLineDraw() {\r\n this.group = new Group();\r\n }\r\n LargeLineDraw.prototype.isPersistent = function () {\r\n return !this._incremental;\r\n };\r\n LargeLineDraw.prototype.updateData = function (data) {\r\n this.group.removeAll();\r\n var lineEl = new LargeLinesPath({\r\n rectHover: true,\r\n cursor: 'default'\r\n });\r\n lineEl.setShape({\r\n segs: data.getLayout('linesPoints')\r\n });\r\n this._setCommon(lineEl, data);\r\n this.group.add(lineEl);\r\n this._incremental = null;\r\n };\r\n LargeLineDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n this.group.removeAll();\r\n this._clearIncremental();\r\n if (data.count() > 5e5) {\r\n if (!this._incremental) {\r\n this._incremental = new IncrementalDisplayble({\r\n silent: true\r\n });\r\n }\r\n this.group.add(this._incremental);\r\n }\r\n else {\r\n this._incremental = null;\r\n }\r\n };\r\n LargeLineDraw.prototype.incrementalUpdate = function (taskParams, data) {\r\n var lineEl = new LargeLinesPath();\r\n lineEl.setShape({\r\n segs: data.getLayout('linesPoints')\r\n });\r\n this._setCommon(lineEl, data, !!this._incremental);\r\n if (!this._incremental) {\r\n lineEl.rectHover = true;\r\n lineEl.cursor = 'default';\r\n lineEl.__startIndex = taskParams.start;\r\n this.group.add(lineEl);\r\n }\r\n else {\r\n this._incremental.addDisplayable(lineEl, true);\r\n }\r\n };\r\n LargeLineDraw.prototype.remove = function () {\r\n this._clearIncremental();\r\n this._incremental = null;\r\n this.group.removeAll();\r\n };\r\n LargeLineDraw.prototype._setCommon = function (lineEl, data, isIncremental) {\r\n var hostModel = data.hostModel;\r\n lineEl.setShape({\r\n polyline: hostModel.get('polyline'),\r\n curveness: hostModel.get(['lineStyle', 'curveness'])\r\n });\r\n lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle());\r\n lineEl.style.strokeNoScale = true;\r\n var style = data.getVisual('style');\r\n if (style && style.stroke) {\r\n lineEl.setStyle('stroke', style.stroke);\r\n }\r\n lineEl.setStyle('fill', null);\r\n if (!isIncremental) {\r\n var ecData_1 = getECData(lineEl);\r\n ecData_1.seriesIndex = hostModel.seriesIndex;\r\n lineEl.on('mousemove', function (e) {\r\n ecData_1.dataIndex = null;\r\n var dataIndex = lineEl.findDataIndex(e.offsetX, e.offsetY);\r\n if (dataIndex > 0) {\r\n ecData_1.dataIndex = dataIndex + lineEl.__startIndex;\r\n }\r\n });\r\n }\r\n };\r\n LargeLineDraw.prototype._clearIncremental = function () {\r\n var incremental = this._incremental;\r\n if (incremental) {\r\n incremental.clearDisplaybles();\r\n }\r\n };\r\n return LargeLineDraw;\r\n}());\n\nvar linesLayout = {\r\n seriesType: 'lines',\r\n plan: createRenderPlanner(),\r\n reset: function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var isPolyline = seriesModel.get('polyline');\r\n var isLarge = seriesModel.pipelineContext.large;\r\n return {\r\n progress: function (params, lineData) {\r\n var lineCoords = [];\r\n if (isLarge) {\r\n var points = void 0;\r\n var segCount = params.end - params.start;\r\n if (isPolyline) {\r\n var totalCoordsCount = 0;\r\n for (var i = params.start; i < params.end; i++) {\r\n totalCoordsCount += seriesModel.getLineCoordsCount(i);\r\n }\r\n points = new Float32Array(segCount + totalCoordsCount * 2);\r\n }\r\n else {\r\n points = new Float32Array(segCount * 4);\r\n }\r\n var offset = 0;\r\n var pt = [];\r\n for (var i = params.start; i < params.end; i++) {\r\n var len = seriesModel.getLineCoords(i, lineCoords);\r\n if (isPolyline) {\r\n points[offset++] = len;\r\n }\r\n for (var k = 0; k < len; k++) {\r\n pt = coordSys.dataToPoint(lineCoords[k], false, pt);\r\n points[offset++] = pt[0];\r\n points[offset++] = pt[1];\r\n }\r\n }\r\n lineData.setLayout('linesPoints', points);\r\n }\r\n else {\r\n for (var i = params.start; i < params.end; i++) {\r\n var itemModel = lineData.getItemModel(i);\r\n var len = seriesModel.getLineCoords(i, lineCoords);\r\n var pts = [];\r\n if (isPolyline) {\r\n for (var j = 0; j < len; j++) {\r\n pts.push(coordSys.dataToPoint(lineCoords[j]));\r\n }\r\n }\r\n else {\r\n pts[0] = coordSys.dataToPoint(lineCoords[0]);\r\n pts[1] = coordSys.dataToPoint(lineCoords[1]);\r\n var curveness = itemModel.get(['lineStyle', 'curveness']);\r\n if (+curveness) {\r\n pts[2] = [\r\n (pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness,\r\n (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness\r\n ];\r\n }\r\n }\r\n lineData.setItemLayout(i, pts);\r\n }\r\n }\r\n }\r\n };\r\n }\r\n};\n\nvar LinesView = (function (_super) {\r\n __extends(LinesView, _super);\r\n function LinesView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = LinesView.type;\r\n return _this;\r\n }\r\n LinesView.prototype.render = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var lineDraw = this._updateLineDraw(data, seriesModel);\r\n var zlevel = seriesModel.get('zlevel');\r\n var trailLength = seriesModel.get(['effect', 'trailLength']);\r\n var zr = api.getZr();\r\n var isSvg = zr.painter.getType() === 'svg';\r\n if (!isSvg) {\r\n zr.painter.getLayer(zlevel).clear(true);\r\n }\r\n if (this._lastZlevel != null && !isSvg) {\r\n zr.configLayer(this._lastZlevel, {\r\n motionBlur: false\r\n });\r\n }\r\n if (this._showEffect(seriesModel) && trailLength) {\r\n if (__DEV__) {\r\n var notInIndividual_1 = false;\r\n ecModel.eachSeries(function (otherSeriesModel) {\r\n if (otherSeriesModel !== seriesModel && otherSeriesModel.get('zlevel') === zlevel) {\r\n notInIndividual_1 = true;\r\n }\r\n });\r\n notInIndividual_1 && console.warn('Lines with trail effect should have an individual zlevel');\r\n }\r\n if (!isSvg) {\r\n zr.configLayer(zlevel, {\r\n motionBlur: true,\r\n lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\r\n });\r\n }\r\n }\r\n lineDraw.updateData(data);\r\n var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\r\n if (clipPath) {\r\n this.group.setClipPath(clipPath);\r\n }\r\n else {\r\n this.group.removeClipPath();\r\n }\r\n this._lastZlevel = zlevel;\r\n this._finished = true;\r\n };\r\n LinesView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var lineDraw = this._updateLineDraw(data, seriesModel);\r\n lineDraw.incrementalPrepareUpdate(data);\r\n this._clearLayer(api);\r\n this._finished = false;\r\n };\r\n LinesView.prototype.incrementalRender = function (taskParams, seriesModel, ecModel) {\r\n this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\r\n this._finished = taskParams.end === seriesModel.getData().count();\r\n };\r\n LinesView.prototype.updateTransform = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var pipelineContext = seriesModel.pipelineContext;\r\n if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {\r\n return {\r\n update: true\r\n };\r\n }\r\n else {\r\n var res = linesLayout.reset(seriesModel, ecModel, api);\r\n if (res.progress) {\r\n res.progress({\r\n start: 0,\r\n end: data.count(),\r\n count: data.count()\r\n }, data);\r\n }\r\n this._lineDraw.updateLayout();\r\n this._clearLayer(api);\r\n }\r\n };\r\n LinesView.prototype._updateLineDraw = function (data, seriesModel) {\r\n var lineDraw = this._lineDraw;\r\n var hasEffect = this._showEffect(seriesModel);\r\n var isPolyline = !!seriesModel.get('polyline');\r\n var pipelineContext = seriesModel.pipelineContext;\r\n var isLargeDraw = pipelineContext.large;\r\n if (__DEV__) {\r\n if (hasEffect && isLargeDraw) {\r\n console.warn('Large lines not support effect');\r\n }\r\n }\r\n if (!lineDraw\r\n || hasEffect !== this._hasEffet\r\n || isPolyline !== this._isPolyline\r\n || isLargeDraw !== this._isLargeDraw) {\r\n if (lineDraw) {\r\n lineDraw.remove();\r\n }\r\n lineDraw = this._lineDraw = isLargeDraw\r\n ? new LargeLineDraw()\r\n : new LineDraw(isPolyline\r\n ? (hasEffect ? EffectPolyline : Polyline$1)\r\n : (hasEffect ? EffectLine : Line$1));\r\n this._hasEffet = hasEffect;\r\n this._isPolyline = isPolyline;\r\n this._isLargeDraw = isLargeDraw;\r\n this.group.removeAll();\r\n }\r\n this.group.add(lineDraw.group);\r\n return lineDraw;\r\n };\r\n LinesView.prototype._showEffect = function (seriesModel) {\r\n return !!seriesModel.get(['effect', 'show']);\r\n };\r\n LinesView.prototype._clearLayer = function (api) {\r\n var zr = api.getZr();\r\n var isSvg = zr.painter.getType() === 'svg';\r\n if (!isSvg && this._lastZlevel != null) {\r\n zr.painter.getLayer(this._lastZlevel).clear(true);\r\n }\r\n };\r\n LinesView.prototype.remove = function (ecModel, api) {\r\n this._lineDraw && this._lineDraw.remove();\r\n this._lineDraw = null;\r\n this._clearLayer(api);\r\n };\r\n LinesView.type = 'lines';\r\n return LinesView;\r\n}(ChartView));\r\nChartView.registerClass(LinesView);\n\nfunction normalize$3(a) {\r\n if (!(a instanceof Array)) {\r\n a = [a, a];\r\n }\r\n return a;\r\n}\r\nvar linesVisual = {\r\n seriesType: 'lines',\r\n reset: function (seriesModel) {\r\n var symbolType = normalize$3(seriesModel.get('symbol'));\r\n var symbolSize = normalize$3(seriesModel.get('symbolSize'));\r\n var data = seriesModel.getData();\r\n data.setVisual('fromSymbol', symbolType && symbolType[0]);\r\n data.setVisual('toSymbol', symbolType && symbolType[1]);\r\n data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\r\n data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\r\n function dataEach(data, idx) {\r\n var itemModel = data.getItemModel(idx);\r\n var symbolType = normalize$3(itemModel.getShallow('symbol', true));\r\n var symbolSize = normalize$3(itemModel.getShallow('symbolSize', true));\r\n symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\r\n symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\r\n symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\r\n symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\r\n }\r\n return {\r\n dataEach: data.hasItemOption ? dataEach : null\r\n };\r\n }\r\n};\n\nregisterLayout(linesLayout);\r\nregisterVisual(linesVisual);\n\nvar HeatmapSeriesModel = (function (_super) {\r\n __extends(HeatmapSeriesModel, _super);\r\n function HeatmapSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = HeatmapSeriesModel.type;\r\n return _this;\r\n }\r\n HeatmapSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListFromArray(this.getSource(), this, {\r\n generateCoord: 'value'\r\n });\r\n };\r\n HeatmapSeriesModel.prototype.preventIncremental = function () {\r\n var coordSysCreator = CoordinateSystemManager.get(this.get('coordinateSystem'));\r\n if (coordSysCreator && coordSysCreator.dimensions) {\r\n return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat';\r\n }\r\n };\r\n HeatmapSeriesModel.type = 'series.heatmap';\r\n HeatmapSeriesModel.defaultOption = {\r\n coordinateSystem: 'cartesian2d',\r\n zlevel: 0,\r\n z: 2,\r\n geoIndex: 0,\r\n blurSize: 30,\r\n pointSize: 20,\r\n maxOpacity: 1,\r\n minOpacity: 0,\r\n select: {\r\n itemStyle: {\r\n borderColor: '#212121'\r\n }\r\n }\r\n };\r\n return HeatmapSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(HeatmapSeriesModel);\n\nvar GRADIENT_LEVELS = 256;\r\nvar HeatmapLayer = (function () {\r\n function HeatmapLayer() {\r\n this.blurSize = 30;\r\n this.pointSize = 20;\r\n this.maxOpacity = 1;\r\n this.minOpacity = 0;\r\n this._gradientPixels = {\r\n inRange: null,\r\n outOfRange: null\r\n };\r\n var canvas = createCanvas();\r\n this.canvas = canvas;\r\n }\r\n HeatmapLayer.prototype.update = function (data, width, height, normalize, colorFunc, isInRange) {\r\n var brush = this._getBrush();\r\n var gradientInRange = this._getGradient(colorFunc, 'inRange');\r\n var gradientOutOfRange = this._getGradient(colorFunc, 'outOfRange');\r\n var r = this.pointSize + this.blurSize;\r\n var canvas = this.canvas;\r\n var ctx = canvas.getContext('2d');\r\n var len = data.length;\r\n canvas.width = width;\r\n canvas.height = height;\r\n for (var i = 0; i < len; ++i) {\r\n var p = data[i];\r\n var x = p[0];\r\n var y = p[1];\r\n var value = p[2];\r\n var alpha = normalize(value);\r\n ctx.globalAlpha = alpha;\r\n ctx.drawImage(brush, x - r, y - r);\r\n }\r\n if (!canvas.width || !canvas.height) {\r\n return canvas;\r\n }\r\n var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n var pixels = imageData.data;\r\n var offset = 0;\r\n var pixelLen = pixels.length;\r\n var minOpacity = this.minOpacity;\r\n var maxOpacity = this.maxOpacity;\r\n var diffOpacity = maxOpacity - minOpacity;\r\n while (offset < pixelLen) {\r\n var alpha = pixels[offset + 3] / 256;\r\n var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4;\r\n if (alpha > 0) {\r\n var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange;\r\n alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);\r\n pixels[offset++] = gradient[gradientOffset];\r\n pixels[offset++] = gradient[gradientOffset + 1];\r\n pixels[offset++] = gradient[gradientOffset + 2];\r\n pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;\r\n }\r\n else {\r\n offset += 4;\r\n }\r\n }\r\n ctx.putImageData(imageData, 0, 0);\r\n return canvas;\r\n };\r\n HeatmapLayer.prototype._getBrush = function () {\r\n var brushCanvas = this._brushCanvas || (this._brushCanvas = createCanvas());\r\n var r = this.pointSize + this.blurSize;\r\n var d = r * 2;\r\n brushCanvas.width = d;\r\n brushCanvas.height = d;\r\n var ctx = brushCanvas.getContext('2d');\r\n ctx.clearRect(0, 0, d, d);\r\n ctx.shadowOffsetX = d;\r\n ctx.shadowBlur = this.blurSize;\r\n ctx.shadowColor = '#000';\r\n ctx.beginPath();\r\n ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);\r\n ctx.closePath();\r\n ctx.fill();\r\n return brushCanvas;\r\n };\r\n HeatmapLayer.prototype._getGradient = function (colorFunc, state) {\r\n var gradientPixels = this._gradientPixels;\r\n var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));\r\n var color = [0, 0, 0, 0];\r\n var off = 0;\r\n for (var i = 0; i < 256; i++) {\r\n colorFunc[state](i / 255, true, color);\r\n pixelsSingleState[off++] = color[0];\r\n pixelsSingleState[off++] = color[1];\r\n pixelsSingleState[off++] = color[2];\r\n pixelsSingleState[off++] = color[3];\r\n }\r\n return pixelsSingleState;\r\n };\r\n return HeatmapLayer;\r\n}());\n\nfunction getIsInPiecewiseRange(dataExtent, pieceList, selected) {\r\n var dataSpan = dataExtent[1] - dataExtent[0];\r\n pieceList = map(pieceList, function (piece) {\r\n return {\r\n interval: [\r\n (piece.interval[0] - dataExtent[0]) / dataSpan,\r\n (piece.interval[1] - dataExtent[0]) / dataSpan\r\n ]\r\n };\r\n });\r\n var len = pieceList.length;\r\n var lastIndex = 0;\r\n return function (val) {\r\n var i;\r\n for (i = lastIndex; i < len; i++) {\r\n var interval = pieceList[i].interval;\r\n if (interval[0] <= val && val <= interval[1]) {\r\n lastIndex = i;\r\n break;\r\n }\r\n }\r\n if (i === len) {\r\n for (i = lastIndex - 1; i >= 0; i--) {\r\n var interval = pieceList[i].interval;\r\n if (interval[0] <= val && val <= interval[1]) {\r\n lastIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n return i >= 0 && i < len && selected[i];\r\n };\r\n}\r\nfunction getIsInContinuousRange(dataExtent, range) {\r\n var dataSpan = dataExtent[1] - dataExtent[0];\r\n range = [\r\n (range[0] - dataExtent[0]) / dataSpan,\r\n (range[1] - dataExtent[0]) / dataSpan\r\n ];\r\n return function (val) {\r\n return val >= range[0] && val <= range[1];\r\n };\r\n}\r\nfunction isGeoCoordSys(coordSys) {\r\n var dimensions = coordSys.dimensions;\r\n return dimensions[0] === 'lng' && dimensions[1] === 'lat';\r\n}\r\nvar HeatmapView = (function (_super) {\r\n __extends(HeatmapView, _super);\r\n function HeatmapView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = HeatmapView.type;\r\n return _this;\r\n }\r\n HeatmapView.prototype.render = function (seriesModel, ecModel, api) {\r\n var visualMapOfThisSeries;\r\n ecModel.eachComponent('visualMap', function (visualMap) {\r\n visualMap.eachTargetSeries(function (targetSeries) {\r\n if (targetSeries === seriesModel) {\r\n visualMapOfThisSeries = visualMap;\r\n }\r\n });\r\n });\r\n if (__DEV__) {\r\n if (!visualMapOfThisSeries) {\r\n throw new Error('Heatmap must use with visualMap');\r\n }\r\n }\r\n this.group.removeAll();\r\n this._incrementalDisplayable = null;\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {\r\n this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());\r\n }\r\n else if (isGeoCoordSys(coordSys)) {\r\n this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);\r\n }\r\n };\r\n HeatmapView.prototype.incrementalPrepareRender = function (seriesModel, ecModel, api) {\r\n this.group.removeAll();\r\n };\r\n HeatmapView.prototype.incrementalRender = function (params, seriesModel, ecModel, api) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys) {\r\n this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);\r\n }\r\n };\r\n HeatmapView.prototype._renderOnCartesianAndCalendar = function (seriesModel, api, start, end, incremental) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var width;\r\n var height;\r\n var xAxisExtent;\r\n var yAxisExtent;\r\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n var xAxis = coordSys.getAxis('x');\r\n var yAxis = coordSys.getAxis('y');\r\n if (__DEV__) {\r\n if (!(xAxis.type === 'category' && yAxis.type === 'category')) {\r\n throw new Error('Heatmap on cartesian must have two category axes');\r\n }\r\n if (!(xAxis.onBand && yAxis.onBand)) {\r\n throw new Error('Heatmap on cartesian must have two axes with boundaryGap true');\r\n }\r\n }\r\n width = xAxis.getBandWidth();\r\n height = yAxis.getBandWidth();\r\n xAxisExtent = xAxis.scale.getExtent();\r\n yAxisExtent = yAxis.scale.getExtent();\r\n }\r\n var group = this.group;\r\n var data = seriesModel.getData();\r\n var emphasisStyle = seriesModel.getModel(['emphasis', 'itemStyle']).getItemStyle();\r\n var blurStyle = seriesModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n var selectStyle = seriesModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n var labelStatesModels = getLabelStatesModels(seriesModel);\r\n var focus = seriesModel.get(['emphasis', 'focus']);\r\n var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n var dataDims = isCoordinateSystemType(coordSys, 'cartesian2d')\r\n ? [\r\n data.mapDimension('x'),\r\n data.mapDimension('y'),\r\n data.mapDimension('value')\r\n ]\r\n : [\r\n data.mapDimension('time'),\r\n data.mapDimension('value')\r\n ];\r\n for (var idx = start; idx < end; idx++) {\r\n var rect = void 0;\r\n var style = data.getItemVisual(idx, 'style');\r\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n var dataDimX = data.get(dataDims[0], idx);\r\n var dataDimY = data.get(dataDims[1], idx);\r\n if (isNaN(data.get(dataDims[2], idx))\r\n || dataDimX < xAxisExtent[0]\r\n || dataDimX > xAxisExtent[1]\r\n || dataDimY < yAxisExtent[0]\r\n || dataDimY > yAxisExtent[1]) {\r\n continue;\r\n }\r\n var point = coordSys.dataToPoint([\r\n dataDimX,\r\n dataDimY\r\n ]);\r\n rect = new Rect({\r\n shape: {\r\n x: Math.floor(Math.round(point[0]) - width / 2),\r\n y: Math.floor(Math.round(point[1]) - height / 2),\r\n width: Math.ceil(width),\r\n height: Math.ceil(height)\r\n },\r\n style: style\r\n });\r\n }\r\n else {\r\n if (isNaN(data.get(dataDims[1], idx))) {\r\n continue;\r\n }\r\n rect = new Rect({\r\n z2: 1,\r\n shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,\r\n style: style\r\n });\r\n }\r\n var itemModel = data.getItemModel(idx);\r\n if (data.hasItemOption) {\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n emphasisStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n focus = emphasisModel.get('focus');\r\n blurScope = emphasisModel.get('blurScope');\r\n labelStatesModels = getLabelStatesModels(itemModel);\r\n }\r\n var rawValue = seriesModel.getRawValue(idx);\r\n var defaultText = '-';\r\n if (rawValue && rawValue[2] != null) {\r\n defaultText = rawValue[2] + '';\r\n }\r\n setLabelStyle(rect, labelStatesModels, {\r\n labelFetcher: seriesModel,\r\n labelDataIndex: idx,\r\n defaultOpacity: style.opacity,\r\n defaultText: defaultText\r\n });\r\n rect.ensureState('emphasis').style = emphasisStyle;\r\n rect.ensureState('blur').style = blurStyle;\r\n rect.ensureState('select').style = selectStyle;\r\n enableHoverEmphasis(rect, focus, blurScope);\r\n rect.incremental = incremental;\r\n if (incremental) {\r\n rect.states.emphasis.hoverLayer = true;\r\n }\r\n group.add(rect);\r\n data.setItemGraphicEl(idx, rect);\r\n }\r\n };\r\n HeatmapView.prototype._renderOnGeo = function (geo, seriesModel, visualMapModel, api) {\r\n var inRangeVisuals = visualMapModel.targetVisuals.inRange;\r\n var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange;\r\n var data = seriesModel.getData();\r\n var hmLayer = this._hmLayer || (this._hmLayer || new HeatmapLayer());\r\n hmLayer.blurSize = seriesModel.get('blurSize');\r\n hmLayer.pointSize = seriesModel.get('pointSize');\r\n hmLayer.minOpacity = seriesModel.get('minOpacity');\r\n hmLayer.maxOpacity = seriesModel.get('maxOpacity');\r\n var rect = geo.getViewRect().clone();\r\n var roamTransform = geo.getRoamTransform();\r\n rect.applyTransform(roamTransform);\r\n var x = Math.max(rect.x, 0);\r\n var y = Math.max(rect.y, 0);\r\n var x2 = Math.min(rect.width + rect.x, api.getWidth());\r\n var y2 = Math.min(rect.height + rect.y, api.getHeight());\r\n var width = x2 - x;\r\n var height = y2 - y;\r\n var dims = [\r\n data.mapDimension('lng'),\r\n data.mapDimension('lat'),\r\n data.mapDimension('value')\r\n ];\r\n var points = data.mapArray(dims, function (lng, lat, value) {\r\n var pt = geo.dataToPoint([lng, lat]);\r\n pt[0] -= x;\r\n pt[1] -= y;\r\n pt.push(value);\r\n return pt;\r\n });\r\n var dataExtent = visualMapModel.getExtent();\r\n var isInRange = visualMapModel.type === 'visualMap.continuous'\r\n ? getIsInContinuousRange(dataExtent, visualMapModel.option.range)\r\n : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);\r\n hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), {\r\n inRange: inRangeVisuals.color.getColorMapper(),\r\n outOfRange: outOfRangeVisuals.color.getColorMapper()\r\n }, isInRange);\r\n var img = new ZRImage({\r\n style: {\r\n width: width,\r\n height: height,\r\n x: x,\r\n y: y,\r\n image: hmLayer.canvas\r\n },\r\n silent: true\r\n });\r\n this.group.add(img);\r\n };\r\n HeatmapView.type = 'heatmap';\r\n return HeatmapView;\r\n}(ChartView));\r\nChartView.registerClass(HeatmapView);\n\nvar PictorialBarSeriesModel = (function (_super) {\r\n __extends(PictorialBarSeriesModel, _super);\r\n function PictorialBarSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = PictorialBarSeriesModel.type;\r\n _this.hasSymbolVisual = true;\r\n _this.defaultSymbol = 'roundRect';\r\n return _this;\r\n }\r\n PictorialBarSeriesModel.prototype.getInitialData = function (option) {\r\n option.stack = null;\r\n return _super.prototype.getInitialData.apply(this, arguments);\r\n };\r\n PictorialBarSeriesModel.type = 'series.pictorialBar';\r\n PictorialBarSeriesModel.dependencies = ['grid'];\r\n PictorialBarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\r\n symbol: 'circle',\r\n symbolSize: null,\r\n symbolRotate: null,\r\n symbolPosition: null,\r\n symbolOffset: null,\r\n symbolMargin: null,\r\n symbolRepeat: false,\r\n symbolRepeatDirection: 'end',\r\n symbolClip: false,\r\n symbolBoundingData: null,\r\n symbolPatternSize: 400,\r\n barGap: '-100%',\r\n progressive: 0,\r\n emphasis: {\r\n scale: false\r\n },\r\n select: {\r\n itemStyle: {\r\n borderColor: '#212121'\r\n }\r\n }\r\n });\r\n return PictorialBarSeriesModel;\r\n}(BaseBarSeriesModel));\r\nSeriesModel.registerClass(PictorialBarSeriesModel);\n\nvar BAR_BORDER_WIDTH_QUERY$1 = ['itemStyle', 'borderWidth'];\r\nvar LAYOUT_ATTRS = [\r\n { xy: 'x', wh: 'width', index: 0, posDesc: ['left', 'right'] },\r\n { xy: 'y', wh: 'height', index: 1, posDesc: ['top', 'bottom'] }\r\n];\r\nvar pathForLineWidth = new Circle();\r\nvar PictorialBarView = (function (_super) {\r\n __extends(PictorialBarView, _super);\r\n function PictorialBarView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = PictorialBarView.type;\r\n return _this;\r\n }\r\n PictorialBarView.prototype.render = function (seriesModel, ecModel, api) {\r\n var group = this.group;\r\n var data = seriesModel.getData();\r\n var oldData = this._data;\r\n var cartesian = seriesModel.coordinateSystem;\r\n var baseAxis = cartesian.getBaseAxis();\r\n var isHorizontal = baseAxis.isHorizontal();\r\n var coordSysRect = cartesian.master.getRect();\r\n var opt = {\r\n ecSize: { width: api.getWidth(), height: api.getHeight() },\r\n seriesModel: seriesModel,\r\n coordSys: cartesian,\r\n coordSysExtent: [\r\n [coordSysRect.x, coordSysRect.x + coordSysRect.width],\r\n [coordSysRect.y, coordSysRect.y + coordSysRect.height]\r\n ],\r\n isHorizontal: isHorizontal,\r\n valueDim: LAYOUT_ATTRS[+isHorizontal],\r\n categoryDim: LAYOUT_ATTRS[1 - (+isHorizontal)]\r\n };\r\n data.diff(oldData)\r\n .add(function (dataIndex) {\r\n if (!data.hasValue(dataIndex)) {\r\n return;\r\n }\r\n var itemModel = getItemModel(data, dataIndex);\r\n var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\r\n var bar = createBar(data, opt, symbolMeta);\r\n data.setItemGraphicEl(dataIndex, bar);\r\n group.add(bar);\r\n updateCommon$1(bar, opt, symbolMeta);\r\n })\r\n .update(function (newIndex, oldIndex) {\r\n var bar = oldData.getItemGraphicEl(oldIndex);\r\n if (!data.hasValue(newIndex)) {\r\n group.remove(bar);\r\n return;\r\n }\r\n var itemModel = getItemModel(data, newIndex);\r\n var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\r\n var pictorialShapeStr = getShapeStr(data, symbolMeta);\r\n if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\r\n group.remove(bar);\r\n data.setItemGraphicEl(newIndex, null);\r\n bar = null;\r\n }\r\n if (bar) {\r\n updateBar(bar, opt, symbolMeta);\r\n }\r\n else {\r\n bar = createBar(data, opt, symbolMeta, true);\r\n }\r\n data.setItemGraphicEl(newIndex, bar);\r\n bar.__pictorialSymbolMeta = symbolMeta;\r\n group.add(bar);\r\n updateCommon$1(bar, opt, symbolMeta);\r\n })\r\n .remove(function (dataIndex) {\r\n var bar = oldData.getItemGraphicEl(dataIndex);\r\n bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\r\n })\r\n .execute();\r\n this._data = data;\r\n return this.group;\r\n };\r\n PictorialBarView.prototype.remove = function (ecModel, api) {\r\n var group = this.group;\r\n var data = this._data;\r\n if (ecModel.get('animation')) {\r\n if (data) {\r\n data.eachItemGraphicEl(function (bar) {\r\n removeBar(data, getECData(bar).dataIndex, ecModel, bar);\r\n });\r\n }\r\n }\r\n else {\r\n group.removeAll();\r\n }\r\n };\r\n PictorialBarView.type = 'pictorialBar';\r\n return PictorialBarView;\r\n}(ChartView));\r\nfunction getSymbolMeta(data, dataIndex, itemModel, opt) {\r\n var layout = data.getItemLayout(dataIndex);\r\n var symbolRepeat = itemModel.get('symbolRepeat');\r\n var symbolClip = itemModel.get('symbolClip');\r\n var symbolPosition = itemModel.get('symbolPosition') || 'start';\r\n var symbolRotate = itemModel.get('symbolRotate');\r\n var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\r\n var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\r\n var isAnimationEnabled = itemModel.isAnimationEnabled();\r\n var symbolMeta = {\r\n dataIndex: dataIndex,\r\n layout: layout,\r\n itemModel: itemModel,\r\n symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\r\n style: data.getItemVisual(dataIndex, 'style'),\r\n symbolClip: symbolClip,\r\n symbolRepeat: symbolRepeat,\r\n symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\r\n symbolPatternSize: symbolPatternSize,\r\n rotation: rotation,\r\n animationModel: isAnimationEnabled ? itemModel : null,\r\n hoverScale: isAnimationEnabled && itemModel.get(['emphasis', 'scale']),\r\n z2: itemModel.getShallow('z', true) || 0\r\n };\r\n prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\r\n prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\r\n prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\r\n var symbolSize = symbolMeta.symbolSize;\r\n var symbolOffset = itemModel.get('symbolOffset');\r\n if (isArray(symbolOffset)) {\r\n symbolOffset = [\r\n parsePercent$2(symbolOffset[0], symbolSize[0]),\r\n parsePercent$2(symbolOffset[1], symbolSize[1])\r\n ];\r\n }\r\n prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\r\n return symbolMeta;\r\n}\r\nfunction prepareBarLength(itemModel, symbolRepeat, layout, opt, outputSymbolMeta) {\r\n var valueDim = opt.valueDim;\r\n var symbolBoundingData = itemModel.get('symbolBoundingData');\r\n var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\r\n var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\r\n var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\r\n var boundingLength;\r\n if (isArray(symbolBoundingData)) {\r\n var symbolBoundingExtent = [\r\n convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx,\r\n convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx\r\n ];\r\n symbolBoundingExtent[1] < symbolBoundingExtent[0] && (symbolBoundingExtent.reverse());\r\n boundingLength = symbolBoundingExtent[pxSignIdx];\r\n }\r\n else if (symbolBoundingData != null) {\r\n boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\r\n }\r\n else if (symbolRepeat) {\r\n boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\r\n }\r\n else {\r\n boundingLength = layout[valueDim.wh];\r\n }\r\n outputSymbolMeta.boundingLength = boundingLength;\r\n if (symbolRepeat) {\r\n outputSymbolMeta.repeatCutLength = layout[valueDim.wh];\r\n }\r\n outputSymbolMeta.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0;\r\n}\r\nfunction convertToCoordOnAxis(axis, value) {\r\n return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\r\n}\r\nfunction prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) {\r\n var valueDim = opt.valueDim;\r\n var categoryDim = opt.categoryDim;\r\n var categorySize = Math.abs(layout[categoryDim.wh]);\r\n var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\r\n var parsedSymbolSize;\r\n if (isArray(symbolSize)) {\r\n parsedSymbolSize = symbolSize.slice();\r\n }\r\n else {\r\n if (symbolSize == null) {\r\n parsedSymbolSize = ['100%', '100%'];\r\n }\r\n else {\r\n parsedSymbolSize = [symbolSize, symbolSize];\r\n }\r\n }\r\n parsedSymbolSize[categoryDim.index] = parsePercent$2(parsedSymbolSize[categoryDim.index], categorySize);\r\n parsedSymbolSize[valueDim.index] = parsePercent$2(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\r\n outputSymbolMeta.symbolSize = parsedSymbolSize;\r\n var symbolScale = outputSymbolMeta.symbolScale = [\r\n parsedSymbolSize[0] / symbolPatternSize,\r\n parsedSymbolSize[1] / symbolPatternSize\r\n ];\r\n symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\r\n}\r\nfunction prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) {\r\n var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY$1) || 0;\r\n if (valueLineWidth) {\r\n pathForLineWidth.attr({\r\n scaleX: symbolScale[0],\r\n scaleY: symbolScale[1],\r\n rotation: rotation\r\n });\r\n pathForLineWidth.updateTransform();\r\n valueLineWidth /= pathForLineWidth.getLineScale();\r\n valueLineWidth *= symbolScale[opt.valueDim.index];\r\n }\r\n outputSymbolMeta.valueLineWidth = valueLineWidth;\r\n}\r\nfunction prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) {\r\n var categoryDim = opt.categoryDim;\r\n var valueDim = opt.valueDim;\r\n var pxSign = outputSymbolMeta.pxSign;\r\n var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\r\n var pathLen = unitLength;\r\n if (symbolRepeat) {\r\n var absBoundingLength = Math.abs(boundingLength);\r\n var symbolMargin = retrieve(itemModel.get('symbolMargin'), '15%') + '';\r\n var hasEndGap = false;\r\n if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\r\n hasEndGap = true;\r\n symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\r\n }\r\n var symbolMarginNumeric = parsePercent$2(symbolMargin, symbolSize[valueDim.index]);\r\n var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0);\r\n var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;\r\n var repeatSpecified = isNumeric(symbolRepeat);\r\n var repeatTimes = repeatSpecified\r\n ? symbolRepeat\r\n : toIntTimes((absBoundingLength + endFix) / uLenWithMargin);\r\n var mDiff = absBoundingLength - repeatTimes * unitLength;\r\n symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1);\r\n uLenWithMargin = unitLength + symbolMarginNumeric * 2;\r\n endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;\r\n if (!repeatSpecified && symbolRepeat !== 'fixed') {\r\n repeatTimes = repeatCutLength\r\n ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin)\r\n : 0;\r\n }\r\n pathLen = repeatTimes * uLenWithMargin - endFix;\r\n outputSymbolMeta.repeatTimes = repeatTimes;\r\n outputSymbolMeta.symbolMargin = symbolMarginNumeric;\r\n }\r\n var sizeFix = pxSign * (pathLen / 2);\r\n var pathPosition = outputSymbolMeta.pathPosition = [];\r\n pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\r\n pathPosition[valueDim.index] = symbolPosition === 'start'\r\n ? sizeFix\r\n : symbolPosition === 'end'\r\n ? boundingLength - sizeFix\r\n : boundingLength / 2;\r\n if (symbolOffset) {\r\n pathPosition[0] += symbolOffset[0];\r\n pathPosition[1] += symbolOffset[1];\r\n }\r\n var bundlePosition = outputSymbolMeta.bundlePosition = [];\r\n bundlePosition[categoryDim.index] = layout[categoryDim.xy];\r\n bundlePosition[valueDim.index] = layout[valueDim.xy];\r\n var barRectShape = outputSymbolMeta.barRectShape = extend({}, layout);\r\n barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\r\n barRectShape[categoryDim.wh] = layout[categoryDim.wh];\r\n var clipShape = outputSymbolMeta.clipShape = {};\r\n clipShape[categoryDim.xy] = -layout[categoryDim.xy];\r\n clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\r\n clipShape[valueDim.xy] = 0;\r\n clipShape[valueDim.wh] = layout[valueDim.wh];\r\n}\r\nfunction createPath(symbolMeta) {\r\n var symbolPatternSize = symbolMeta.symbolPatternSize;\r\n var path = createSymbol(symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize);\r\n path.attr({\r\n culling: true\r\n });\r\n path.type !== 'image' && path.setStyle({\r\n strokeNoScale: true\r\n });\r\n return path;\r\n}\r\nfunction createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\r\n var bundle = bar.__pictorialBundle;\r\n var symbolSize = symbolMeta.symbolSize;\r\n var valueLineWidth = symbolMeta.valueLineWidth;\r\n var pathPosition = symbolMeta.pathPosition;\r\n var valueDim = opt.valueDim;\r\n var repeatTimes = symbolMeta.repeatTimes || 0;\r\n var index = 0;\r\n var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\r\n eachPath(bar, function (path) {\r\n path.__pictorialAnimationIndex = index;\r\n path.__pictorialRepeatTimes = repeatTimes;\r\n if (index < repeatTimes) {\r\n updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\r\n }\r\n else {\r\n updateAttr(path, null, { scaleX: 0, scaleY: 0 }, symbolMeta, isUpdate, function () {\r\n bundle.remove(path);\r\n });\r\n }\r\n index++;\r\n });\r\n for (; index < repeatTimes; index++) {\r\n var path = createPath(symbolMeta);\r\n path.__pictorialAnimationIndex = index;\r\n path.__pictorialRepeatTimes = repeatTimes;\r\n bundle.add(path);\r\n var target = makeTarget(index);\r\n updateAttr(path, {\r\n x: target.x,\r\n y: target.y,\r\n scaleX: 0,\r\n scaleY: 0\r\n }, {\r\n scaleX: target.scaleX,\r\n scaleY: target.scaleY,\r\n rotation: target.rotation\r\n }, symbolMeta, isUpdate);\r\n }\r\n function makeTarget(index) {\r\n var position = pathPosition.slice();\r\n var pxSign = symbolMeta.pxSign;\r\n var i = index;\r\n if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\r\n i = repeatTimes - 1 - index;\r\n }\r\n position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\r\n return {\r\n x: position[0],\r\n y: position[1],\r\n scaleX: symbolMeta.symbolScale[0],\r\n scaleY: symbolMeta.symbolScale[1],\r\n rotation: symbolMeta.rotation\r\n };\r\n }\r\n}\r\nfunction createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\r\n var bundle = bar.__pictorialBundle;\r\n var mainPath = bar.__pictorialMainPath;\r\n if (!mainPath) {\r\n mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\r\n bundle.add(mainPath);\r\n updateAttr(mainPath, {\r\n x: symbolMeta.pathPosition[0],\r\n y: symbolMeta.pathPosition[1],\r\n scaleX: 0,\r\n scaleY: 0,\r\n rotation: symbolMeta.rotation\r\n }, {\r\n scaleX: symbolMeta.symbolScale[0],\r\n scaleY: symbolMeta.symbolScale[1]\r\n }, symbolMeta, isUpdate);\r\n }\r\n else {\r\n updateAttr(mainPath, null, {\r\n x: symbolMeta.pathPosition[0],\r\n y: symbolMeta.pathPosition[1],\r\n scaleX: symbolMeta.symbolScale[0],\r\n scaleY: symbolMeta.symbolScale[1],\r\n rotation: symbolMeta.rotation\r\n }, symbolMeta, isUpdate);\r\n }\r\n}\r\nfunction createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\r\n var rectShape = extend({}, symbolMeta.barRectShape);\r\n var barRect = bar.__pictorialBarRect;\r\n if (!barRect) {\r\n barRect = bar.__pictorialBarRect = new Rect({\r\n z2: 2,\r\n shape: rectShape,\r\n silent: true,\r\n style: {\r\n stroke: 'transparent',\r\n fill: 'transparent',\r\n lineWidth: 0\r\n }\r\n });\r\n bar.add(barRect);\r\n }\r\n else {\r\n updateAttr(barRect, null, { shape: rectShape }, symbolMeta, isUpdate);\r\n }\r\n}\r\nfunction createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\r\n if (symbolMeta.symbolClip) {\r\n var clipPath = bar.__pictorialClipPath;\r\n var clipShape = extend({}, symbolMeta.clipShape);\r\n var valueDim = opt.valueDim;\r\n var animationModel = symbolMeta.animationModel;\r\n var dataIndex = symbolMeta.dataIndex;\r\n if (clipPath) {\r\n updateProps(clipPath, { shape: clipShape }, animationModel, dataIndex);\r\n }\r\n else {\r\n clipShape[valueDim.wh] = 0;\r\n clipPath = new Rect({ shape: clipShape });\r\n bar.__pictorialBundle.setClipPath(clipPath);\r\n bar.__pictorialClipPath = clipPath;\r\n var target = {};\r\n target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\r\n graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, { shape: target }, animationModel, dataIndex);\r\n }\r\n }\r\n}\r\nfunction getItemModel(data, dataIndex) {\r\n var itemModel = data.getItemModel(dataIndex);\r\n itemModel.getAnimationDelayParams = getAnimationDelayParams;\r\n itemModel.isAnimationEnabled = isAnimationEnabled;\r\n return itemModel;\r\n}\r\nfunction getAnimationDelayParams(path) {\r\n return {\r\n index: path.__pictorialAnimationIndex,\r\n count: path.__pictorialRepeatTimes\r\n };\r\n}\r\nfunction isAnimationEnabled() {\r\n return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\r\n}\r\nfunction createBar(data, opt, symbolMeta, isUpdate) {\r\n var bar = new Group();\r\n var bundle = new Group();\r\n bar.add(bundle);\r\n bar.__pictorialBundle = bundle;\r\n bundle.x = symbolMeta.bundlePosition[0];\r\n bundle.y = symbolMeta.bundlePosition[1];\r\n if (symbolMeta.symbolRepeat) {\r\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\r\n }\r\n else {\r\n createOrUpdateSingleSymbol(bar, opt, symbolMeta);\r\n }\r\n createOrUpdateBarRect(bar, symbolMeta, isUpdate);\r\n createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\r\n bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\r\n bar.__pictorialSymbolMeta = symbolMeta;\r\n return bar;\r\n}\r\nfunction updateBar(bar, opt, symbolMeta) {\r\n var animationModel = symbolMeta.animationModel;\r\n var dataIndex = symbolMeta.dataIndex;\r\n var bundle = bar.__pictorialBundle;\r\n updateProps(bundle, {\r\n x: symbolMeta.bundlePosition[0],\r\n y: symbolMeta.bundlePosition[1]\r\n }, animationModel, dataIndex);\r\n if (symbolMeta.symbolRepeat) {\r\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\r\n }\r\n else {\r\n createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\r\n }\r\n createOrUpdateBarRect(bar, symbolMeta, true);\r\n createOrUpdateClip(bar, opt, symbolMeta, true);\r\n}\r\nfunction removeBar(data, dataIndex, animationModel, bar) {\r\n var labelRect = bar.__pictorialBarRect;\r\n labelRect && (labelRect.removeTextContent());\r\n var pathes = [];\r\n eachPath(bar, function (path) {\r\n pathes.push(path);\r\n });\r\n bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath);\r\n bar.__pictorialClipPath && (animationModel = null);\r\n each(pathes, function (path) {\r\n removeElement(path, { scaleX: 0, scaleY: 0 }, animationModel, dataIndex, function () {\r\n bar.parent && bar.parent.remove(bar);\r\n });\r\n });\r\n data.setItemGraphicEl(dataIndex, null);\r\n}\r\nfunction getShapeStr(data, symbolMeta) {\r\n return [\r\n data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none',\r\n !!symbolMeta.symbolRepeat,\r\n !!symbolMeta.symbolClip\r\n ].join(':');\r\n}\r\nfunction eachPath(bar, cb, context) {\r\n each(bar.__pictorialBundle.children(), function (el) {\r\n el !== bar.__pictorialBarRect && cb.call(context, el);\r\n });\r\n}\r\nfunction updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\r\n immediateAttrs && el.attr(immediateAttrs);\r\n if (symbolMeta.symbolClip && !isUpdate) {\r\n animationAttrs && el.attr(animationAttrs);\r\n }\r\n else {\r\n animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\r\n }\r\n}\r\nfunction updateCommon$1(bar, opt, symbolMeta) {\r\n var dataIndex = symbolMeta.dataIndex;\r\n var itemModel = symbolMeta.itemModel;\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n var emphasisStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n var blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n var selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n var cursorStyle = itemModel.getShallow('cursor');\r\n var focus = emphasisModel.get('focus');\r\n var blurScope = emphasisModel.get('blurScope');\r\n var hoverScale = emphasisModel.get('scale');\r\n eachPath(bar, function (path) {\r\n if (path instanceof ZRImage) {\r\n var pathStyle = path.style;\r\n path.useStyle(extend({\r\n image: pathStyle.image,\r\n x: pathStyle.x, y: pathStyle.y,\r\n width: pathStyle.width, height: pathStyle.height\r\n }, symbolMeta.style));\r\n }\r\n else {\r\n path.useStyle(symbolMeta.style);\r\n }\r\n var emphasisState = path.ensureState('emphasis');\r\n emphasisState.style = emphasisStyle;\r\n if (hoverScale) {\r\n emphasisState.scaleX = path.scaleX * 1.1;\r\n emphasisState.scaleY = path.scaleY * 1.1;\r\n }\r\n path.ensureState('blur').style = blurStyle;\r\n path.ensureState('select').style = selectStyle;\r\n cursorStyle && (path.cursor = cursorStyle);\r\n path.z2 = symbolMeta.z2;\r\n });\r\n var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\r\n var barRect = bar.__pictorialBarRect;\r\n setLabelStyle(barRect, getLabelStatesModels(itemModel), {\r\n labelFetcher: opt.seriesModel,\r\n labelDataIndex: dataIndex,\r\n defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex),\r\n inheritColor: symbolMeta.style.fill,\r\n defaultOpacity: symbolMeta.style.opacity,\r\n defaultOutsidePosition: barPositionOutside\r\n });\r\n enableHoverEmphasis(bar, focus, blurScope);\r\n}\r\nfunction toIntTimes(times) {\r\n var roundedTimes = Math.round(times);\r\n return Math.abs(times - roundedTimes) < 1e-4\r\n ? roundedTimes\r\n : Math.ceil(times);\r\n}\r\nChartView.registerClass(PictorialBarView);\n\nregisterLayout(curry(layout, 'pictorialBar'));\n\nvar SingleAxis = (function (_super) {\r\n __extends(SingleAxis, _super);\r\n function SingleAxis(dim, scale, coordExtent, axisType, position) {\r\n var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n _this.type = axisType || 'value';\r\n _this.position = position || 'bottom';\r\n return _this;\r\n }\r\n SingleAxis.prototype.isHorizontal = function () {\r\n var position = this.position;\r\n return position === 'top' || position === 'bottom';\r\n };\r\n SingleAxis.prototype.pointToData = function (point, clamp) {\r\n return this.coordinateSystem.pointToData(point)[0];\r\n };\r\n return SingleAxis;\r\n}(Axis));\n\nvar Single = (function () {\r\n function Single(axisModel, ecModel, api) {\r\n this.type = 'single';\r\n this.dimension = 'single';\r\n this.dimensions = ['single'];\r\n this.axisPointerEnabled = true;\r\n this.model = axisModel;\r\n this._init(axisModel, ecModel, api);\r\n }\r\n Single.prototype._init = function (axisModel, ecModel, api) {\r\n var dim = this.dimension;\r\n var axis = new SingleAxis(dim, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position'));\r\n var isCategory = axis.type === 'category';\r\n axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n axis.inverse = axisModel.get('inverse');\r\n axis.orient = axisModel.get('orient');\r\n axisModel.axis = axis;\r\n axis.model = axisModel;\r\n axis.coordinateSystem = this;\r\n this._axis = axis;\r\n };\r\n Single.prototype.update = function (ecModel, api) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (seriesModel.coordinateSystem === this) {\r\n var data_1 = seriesModel.getData();\r\n each(data_1.mapDimensionsAll(this.dimension), function (dim) {\r\n this._axis.scale.unionExtentFromData(data_1, dim);\r\n }, this);\r\n niceScaleExtent(this._axis.scale, this._axis.model);\r\n }\r\n }, this);\r\n };\r\n Single.prototype.resize = function (axisModel, api) {\r\n this._rect = getLayoutRect({\r\n left: axisModel.get('left'),\r\n top: axisModel.get('top'),\r\n right: axisModel.get('right'),\r\n bottom: axisModel.get('bottom'),\r\n width: axisModel.get('width'),\r\n height: axisModel.get('height')\r\n }, {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n });\r\n this._adjustAxis();\r\n };\r\n Single.prototype.getRect = function () {\r\n return this._rect;\r\n };\r\n Single.prototype._adjustAxis = function () {\r\n var rect = this._rect;\r\n var axis = this._axis;\r\n var isHorizontal = axis.isHorizontal();\r\n var extent = isHorizontal ? [0, rect.width] : [0, rect.height];\r\n var idx = axis.reverse ? 1 : 0;\r\n axis.setExtent(extent[idx], extent[1 - idx]);\r\n this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);\r\n };\r\n Single.prototype._updateAxisTransform = function (axis, coordBase) {\r\n var axisExtent = axis.getExtent();\r\n var extentSum = axisExtent[0] + axisExtent[1];\r\n var isHorizontal = axis.isHorizontal();\r\n axis.toGlobalCoord = isHorizontal\r\n ? function (coord) {\r\n return coord + coordBase;\r\n }\r\n : function (coord) {\r\n return extentSum - coord + coordBase;\r\n };\r\n axis.toLocalCoord = isHorizontal\r\n ? function (coord) {\r\n return coord - coordBase;\r\n }\r\n : function (coord) {\r\n return extentSum - coord + coordBase;\r\n };\r\n };\r\n Single.prototype.getAxis = function () {\r\n return this._axis;\r\n };\r\n Single.prototype.getBaseAxis = function () {\r\n return this._axis;\r\n };\r\n Single.prototype.getAxes = function () {\r\n return [this._axis];\r\n };\r\n Single.prototype.getTooltipAxes = function () {\r\n return {\r\n baseAxes: [this.getAxis()],\r\n otherAxes: []\r\n };\r\n };\r\n Single.prototype.containPoint = function (point) {\r\n var rect = this.getRect();\r\n var axis = this.getAxis();\r\n var orient = axis.orient;\r\n if (orient === 'horizontal') {\r\n return axis.contain(axis.toLocalCoord(point[0]))\r\n && (point[1] >= rect.y && point[1] <= (rect.y + rect.height));\r\n }\r\n else {\r\n return axis.contain(axis.toLocalCoord(point[1]))\r\n && (point[0] >= rect.y && point[0] <= (rect.y + rect.height));\r\n }\r\n };\r\n Single.prototype.pointToData = function (point) {\r\n var axis = this.getAxis();\r\n return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))];\r\n };\r\n Single.prototype.dataToPoint = function (val) {\r\n var axis = this.getAxis();\r\n var rect = this.getRect();\r\n var pt = [];\r\n var idx = axis.orient === 'horizontal' ? 0 : 1;\r\n if (val instanceof Array) {\r\n val = val[0];\r\n }\r\n pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));\r\n pt[1 - idx] = idx === 0 ? (rect.y + rect.height / 2) : (rect.x + rect.width / 2);\r\n return pt;\r\n };\r\n Single.prototype.convertToPixel = function (ecModel, finder, value) {\r\n var coordSys = getCoordSys$2(finder);\r\n return coordSys === this ? this.dataToPoint(value) : null;\r\n };\r\n Single.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n var coordSys = getCoordSys$2(finder);\r\n return coordSys === this ? this.pointToData(pixel) : null;\r\n };\r\n return Single;\r\n}());\r\nfunction getCoordSys$2(finder) {\r\n var seriesModel = finder.seriesModel;\r\n var singleModel = finder.singleAxisModel;\r\n return singleModel && singleModel.coordinateSystem\r\n || seriesModel && seriesModel.coordinateSystem;\r\n}\n\nfunction create$3(ecModel, api) {\r\n var singles = [];\r\n ecModel.eachComponent('singleAxis', function (axisModel, idx) {\r\n var single = new Single(axisModel, ecModel, api);\r\n single.name = 'single_' + idx;\r\n single.resize(axisModel, api);\r\n axisModel.coordinateSystem = single;\r\n singles.push(single);\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (seriesModel.get('coordinateSystem') === 'singleAxis') {\r\n var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;\r\n }\r\n });\r\n return singles;\r\n}\r\nCoordinateSystemManager.register('single', {\r\n create: create$3,\r\n dimensions: Single.prototype.dimensions\r\n});\n\nfunction layout$2(axisModel, opt) {\r\n opt = opt || {};\r\n var single = axisModel.coordinateSystem;\r\n var axis = axisModel.axis;\r\n var layout = {};\r\n var axisPosition = axis.position;\r\n var orient = axis.orient;\r\n var rect = single.getRect();\r\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\r\n var positionMap = {\r\n horizontal: { top: rectBound[2], bottom: rectBound[3] },\r\n vertical: { left: rectBound[0], right: rectBound[1] }\r\n };\r\n layout.position = [\r\n orient === 'vertical'\r\n ? positionMap.vertical[axisPosition]\r\n : rectBound[0],\r\n orient === 'horizontal'\r\n ? positionMap.horizontal[axisPosition]\r\n : rectBound[3]\r\n ];\r\n var r = { horizontal: 0, vertical: 1 };\r\n layout.rotation = Math.PI / 2 * r[orient];\r\n var directionMap = { top: -1, bottom: 1, right: 1, left: -1 };\r\n layout.labelDirection = layout.tickDirection =\r\n layout.nameDirection = directionMap[axisPosition];\r\n if (axisModel.get(['axisTick', 'inside'])) {\r\n layout.tickDirection = -layout.tickDirection;\r\n }\r\n if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\r\n layout.labelDirection = -layout.labelDirection;\r\n }\r\n var labelRotation = opt.rotate;\r\n labelRotation == null && (labelRotation = axisModel.get(['axisLabel', 'rotate']));\r\n layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\r\n layout.z2 = 1;\r\n return layout;\r\n}\n\nvar axisBuilderAttrs$2 = [\r\n 'axisLine', 'axisTickLabel', 'axisName'\r\n];\r\nvar selfBuilderAttrs$1 = ['splitArea', 'splitLine'];\r\nvar SingleAxisView = (function (_super) {\r\n __extends(SingleAxisView, _super);\r\n function SingleAxisView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SingleAxisView.type;\r\n _this.axisPointerClass = 'SingleAxisPointer';\r\n return _this;\r\n }\r\n SingleAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n var group = this.group;\r\n group.removeAll();\r\n var oldAxisGroup = this._axisGroup;\r\n this._axisGroup = new Group();\r\n var layout = layout$2(axisModel);\r\n var axisBuilder = new AxisBuilder(axisModel, layout);\r\n each(axisBuilderAttrs$2, axisBuilder.add, axisBuilder);\r\n group.add(this._axisGroup);\r\n group.add(axisBuilder.getGroup());\r\n each(selfBuilderAttrs$1, function (name) {\r\n if (axisModel.get([name, 'show'])) {\r\n axisElementBuilders$1[name](this, this.group, this._axisGroup, axisModel);\r\n }\r\n }, this);\r\n groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n _super.prototype.render.call(this, axisModel, ecModel, api, payload);\r\n };\r\n SingleAxisView.prototype.remove = function () {\r\n rectCoordAxisHandleRemove(this);\r\n };\r\n SingleAxisView.type = 'singleAxis';\r\n return SingleAxisView;\r\n}(AxisView));\r\nvar axisElementBuilders$1 = {\r\n splitLine: function (axisView, group, axisGroup, axisModel) {\r\n var axis = axisModel.axis;\r\n if (axis.scale.isBlank()) {\r\n return;\r\n }\r\n var splitLineModel = axisModel.getModel('splitLine');\r\n var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n var lineColors = lineStyleModel.get('color');\r\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\r\n var gridRect = axisModel.coordinateSystem.getRect();\r\n var isHorizontal = axis.isHorizontal();\r\n var splitLines = [];\r\n var lineCount = 0;\r\n var ticksCoords = axis.getTicksCoords({\r\n tickModel: splitLineModel\r\n });\r\n var p1 = [];\r\n var p2 = [];\r\n for (var i = 0; i < ticksCoords.length; ++i) {\r\n var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n if (isHorizontal) {\r\n p1[0] = tickCoord;\r\n p1[1] = gridRect.y;\r\n p2[0] = tickCoord;\r\n p2[1] = gridRect.y + gridRect.height;\r\n }\r\n else {\r\n p1[0] = gridRect.x;\r\n p1[1] = tickCoord;\r\n p2[0] = gridRect.x + gridRect.width;\r\n p2[1] = tickCoord;\r\n }\r\n var colorIndex = (lineCount++) % lineColors.length;\r\n splitLines[colorIndex] = splitLines[colorIndex] || [];\r\n splitLines[colorIndex].push(new Line({\r\n subPixelOptimize: true,\r\n shape: {\r\n x1: p1[0],\r\n y1: p1[1],\r\n x2: p2[0],\r\n y2: p2[1]\r\n },\r\n silent: true\r\n }));\r\n }\r\n var lineStyle = lineStyleModel.getLineStyle(['color']);\r\n for (var i = 0; i < splitLines.length; ++i) {\r\n group.add(mergePath$1(splitLines[i], {\r\n style: defaults({\r\n stroke: lineColors[i % lineColors.length]\r\n }, lineStyle),\r\n silent: true\r\n }));\r\n }\r\n },\r\n splitArea: function (axisView, group, axisGroup, axisModel) {\r\n rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel);\r\n }\r\n};\r\nComponentView.registerClass(SingleAxisView);\n\nvar SingleAxisModel = (function (_super) {\r\n __extends(SingleAxisModel, _super);\r\n function SingleAxisModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SingleAxisModel.type;\r\n return _this;\r\n }\r\n SingleAxisModel.prototype.getCoordSysModel = function () {\r\n return this;\r\n };\r\n SingleAxisModel.type = 'singleAxis';\r\n SingleAxisModel.layoutMode = 'box';\r\n SingleAxisModel.defaultOption = {\r\n left: '5%',\r\n top: '5%',\r\n right: '5%',\r\n bottom: '5%',\r\n type: 'value',\r\n position: 'bottom',\r\n orient: 'horizontal',\r\n axisLine: {\r\n show: true,\r\n lineStyle: {\r\n width: 1,\r\n type: 'solid'\r\n }\r\n },\r\n tooltip: {\r\n show: true\r\n },\r\n axisTick: {\r\n show: true,\r\n length: 6,\r\n lineStyle: {\r\n width: 1\r\n }\r\n },\r\n axisLabel: {\r\n show: true,\r\n interval: 'auto'\r\n },\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n type: 'dashed',\r\n opacity: 0.2\r\n }\r\n }\r\n };\r\n return SingleAxisModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(SingleAxisModel);\r\nmixin(SingleAxisModel, AxisModelCommonMixin.prototype);\r\naxisModelCreator('single', SingleAxisModel, SingleAxisModel.defaultOption);\n\nfunction findPointFromSeries(finder, ecModel) {\r\n var point = [];\r\n var seriesIndex = finder.seriesIndex;\r\n var seriesModel;\r\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\r\n return {\r\n point: []\r\n };\r\n }\r\n var data = seriesModel.getData();\r\n var dataIndex = queryDataIndex(data, finder);\r\n if (dataIndex == null || dataIndex < 0 || isArray(dataIndex)) {\r\n return { point: [] };\r\n }\r\n var el = data.getItemGraphicEl(dataIndex);\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (seriesModel.getTooltipPosition) {\r\n point = seriesModel.getTooltipPosition(dataIndex) || [];\r\n }\r\n else if (coordSys && coordSys.dataToPoint) {\r\n if (finder.isStacked) {\r\n var baseAxis = coordSys.getBaseAxis();\r\n var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n var valueAxisDim = valueAxis.dim;\r\n var baseAxisDim = baseAxis.dim;\r\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\r\n var baseDim = data.mapDimension(baseAxisDim);\r\n var stackedData = [];\r\n stackedData[baseDataOffset] = data.get(baseDim, dataIndex);\r\n stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo('stackResultDimension'), dataIndex);\r\n point = coordSys.dataToPoint(stackedData) || [];\r\n }\r\n else {\r\n point = coordSys.dataToPoint(data.getValues(map(coordSys.dimensions, function (dim) {\r\n return data.mapDimension(dim);\r\n }), dataIndex)) || [];\r\n }\r\n }\r\n else if (el) {\r\n var rect = el.getBoundingRect().clone();\r\n rect.applyTransform(el.transform);\r\n point = [\r\n rect.x + rect.width / 2,\r\n rect.y + rect.height / 2\r\n ];\r\n }\r\n return { point: point, el: el };\r\n}\n\nvar inner$b = makeInner();\r\nfunction axisTrigger(payload, ecModel, api) {\r\n var currTrigger = payload.currTrigger;\r\n var point = [payload.x, payload.y];\r\n var finder = payload;\r\n var dispatchAction = payload.dispatchAction || bind(api.dispatchAction, api);\r\n var coordSysAxesInfo = ecModel.getComponent('axisPointer')\r\n .coordSysAxesInfo;\r\n if (!coordSysAxesInfo) {\r\n return;\r\n }\r\n if (illegalPoint(point)) {\r\n point = findPointFromSeries({\r\n seriesIndex: finder.seriesIndex,\r\n dataIndex: finder.dataIndex\r\n }, ecModel).point;\r\n }\r\n var isIllegalPoint = illegalPoint(point);\r\n var inputAxesInfo = finder.axesInfo;\r\n var axesInfo = coordSysAxesInfo.axesInfo;\r\n var shouldHide = currTrigger === 'leave' || illegalPoint(point);\r\n var outputPayload = {};\r\n var showValueMap = {};\r\n var dataByCoordSys = {\r\n list: [],\r\n map: {}\r\n };\r\n var updaters = {\r\n showPointer: curry(showPointer, showValueMap),\r\n showTooltip: curry(showTooltip, dataByCoordSys)\r\n };\r\n each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\r\n var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\r\n each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\r\n var axis = axisInfo.axis;\r\n var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo);\r\n if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\r\n var val = inputAxisInfo && inputAxisInfo.value;\r\n if (val == null && !isIllegalPoint) {\r\n val = axis.pointToData(point);\r\n }\r\n val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload);\r\n }\r\n });\r\n });\r\n var linkTriggers = {};\r\n each(axesInfo, function (tarAxisInfo, tarKey) {\r\n var linkGroup = tarAxisInfo.linkGroup;\r\n if (linkGroup && !showValueMap[tarKey]) {\r\n each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\r\n var srcValItem = showValueMap[srcKey];\r\n if (srcAxisInfo !== tarAxisInfo && srcValItem) {\r\n var val = srcValItem.value;\r\n linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\r\n linkTriggers[tarAxisInfo.key] = val;\r\n }\r\n });\r\n }\r\n });\r\n each(linkTriggers, function (val, tarKey) {\r\n processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload);\r\n });\r\n updateModelActually(showValueMap, axesInfo, outputPayload);\r\n dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\r\n dispatchHighDownActually(axesInfo, dispatchAction, api);\r\n return outputPayload;\r\n}\r\nfunction processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) {\r\n var axis = axisInfo.axis;\r\n if (axis.scale.isBlank() || !axis.containData(newValue)) {\r\n return;\r\n }\r\n if (!axisInfo.involveSeries) {\r\n updaters.showPointer(axisInfo, newValue);\r\n return;\r\n }\r\n var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\r\n var payloadBatch = payloadInfo.payloadBatch;\r\n var snapToValue = payloadInfo.snapToValue;\r\n if (payloadBatch[0] && outputFinder.seriesIndex == null) {\r\n extend(outputFinder, payloadBatch[0]);\r\n }\r\n if (!noSnap && axisInfo.snap) {\r\n if (axis.containData(snapToValue) && snapToValue != null) {\r\n newValue = snapToValue;\r\n }\r\n }\r\n updaters.showPointer(axisInfo, newValue, payloadBatch);\r\n updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\r\n}\r\nfunction buildPayloadsBySeries(value, axisInfo) {\r\n var axis = axisInfo.axis;\r\n var dim = axis.dim;\r\n var snapToValue = value;\r\n var payloadBatch = [];\r\n var minDist = Number.MAX_VALUE;\r\n var minDiff = -1;\r\n each(axisInfo.seriesModels, function (series, idx) {\r\n var dataDim = series.getData().mapDimensionsAll(dim);\r\n var seriesNestestValue;\r\n var dataIndices;\r\n if (series.getAxisTooltipData) {\r\n var result = series.getAxisTooltipData(dataDim, value, axis);\r\n dataIndices = result.dataIndices;\r\n seriesNestestValue = result.nestestValue;\r\n }\r\n else {\r\n dataIndices = series.getData().indicesOfNearest(dataDim[0], value, axis.type === 'category' ? 0.5 : null);\r\n if (!dataIndices.length) {\r\n return;\r\n }\r\n seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\r\n }\r\n if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\r\n return;\r\n }\r\n var diff = value - seriesNestestValue;\r\n var dist = Math.abs(diff);\r\n if (dist <= minDist) {\r\n if (dist < minDist || (diff >= 0 && minDiff < 0)) {\r\n minDist = dist;\r\n minDiff = diff;\r\n snapToValue = seriesNestestValue;\r\n payloadBatch.length = 0;\r\n }\r\n each(dataIndices, function (dataIndex) {\r\n payloadBatch.push({\r\n seriesIndex: series.seriesIndex,\r\n dataIndexInside: dataIndex,\r\n dataIndex: series.getData().getRawIndex(dataIndex)\r\n });\r\n });\r\n }\r\n });\r\n return {\r\n payloadBatch: payloadBatch,\r\n snapToValue: snapToValue\r\n };\r\n}\r\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\r\n showValueMap[axisInfo.key] = {\r\n value: value,\r\n payloadBatch: payloadBatch\r\n };\r\n}\r\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\r\n var payloadBatch = payloadInfo.payloadBatch;\r\n var axis = axisInfo.axis;\r\n var axisModel = axis.model;\r\n var axisPointerModel = axisInfo.axisPointerModel;\r\n if (!axisInfo.triggerTooltip || !payloadBatch.length) {\r\n return;\r\n }\r\n var coordSysModel = axisInfo.coordSys.model;\r\n var coordSysKey = makeKey(coordSysModel);\r\n var coordSysItem = dataByCoordSys.map[coordSysKey];\r\n if (!coordSysItem) {\r\n coordSysItem = dataByCoordSys.map[coordSysKey] = {\r\n coordSysId: coordSysModel.id,\r\n coordSysIndex: coordSysModel.componentIndex,\r\n coordSysType: coordSysModel.type,\r\n coordSysMainType: coordSysModel.mainType,\r\n dataByAxis: []\r\n };\r\n dataByCoordSys.list.push(coordSysItem);\r\n }\r\n coordSysItem.dataByAxis.push({\r\n axisDim: axis.dim,\r\n axisIndex: axisModel.componentIndex,\r\n axisType: axisModel.type,\r\n axisId: axisModel.id,\r\n value: value,\r\n valueLabelOpt: {\r\n precision: axisPointerModel.get(['label', 'precision']),\r\n formatter: axisPointerModel.get(['label', 'formatter'])\r\n },\r\n seriesDataIndices: payloadBatch.slice()\r\n });\r\n}\r\nfunction updateModelActually(showValueMap, axesInfo, outputPayload) {\r\n var outputAxesInfo = outputPayload.axesInfo = [];\r\n each(axesInfo, function (axisInfo, key) {\r\n var option = axisInfo.axisPointerModel.option;\r\n var valItem = showValueMap[key];\r\n if (valItem) {\r\n !axisInfo.useHandle && (option.status = 'show');\r\n option.value = valItem.value;\r\n option.seriesDataIndices = (valItem.payloadBatch || []).slice();\r\n }\r\n else {\r\n !axisInfo.useHandle && (option.status = 'hide');\r\n }\r\n option.status === 'show' && outputAxesInfo.push({\r\n axisDim: axisInfo.axis.dim,\r\n axisIndex: axisInfo.axis.model.componentIndex,\r\n value: option.value\r\n });\r\n });\r\n}\r\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\r\n if (illegalPoint(point) || !dataByCoordSys.list.length) {\r\n dispatchAction({ type: 'hideTip' });\r\n return;\r\n }\r\n var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\r\n dispatchAction({\r\n type: 'showTip',\r\n escapeConnect: true,\r\n x: point[0],\r\n y: point[1],\r\n tooltipOption: payload.tooltipOption,\r\n position: payload.position,\r\n dataIndexInside: sampleItem.dataIndexInside,\r\n dataIndex: sampleItem.dataIndex,\r\n seriesIndex: sampleItem.seriesIndex,\r\n dataByCoordSys: dataByCoordSys.list\r\n });\r\n}\r\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\r\n var zr = api.getZr();\r\n var highDownKey = 'axisPointerLastHighlights';\r\n var lastHighlights = inner$b(zr)[highDownKey] || {};\r\n var newHighlights = inner$b(zr)[highDownKey] = {};\r\n each(axesInfo, function (axisInfo, key) {\r\n var option = axisInfo.axisPointerModel.option;\r\n option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\r\n var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\r\n newHighlights[key] = batchItem;\r\n });\r\n });\r\n var toHighlight = [];\r\n var toDownplay = [];\r\n each(lastHighlights, function (batchItem, key) {\r\n !newHighlights[key] && toDownplay.push(batchItem);\r\n });\r\n each(newHighlights, function (batchItem, key) {\r\n !lastHighlights[key] && toHighlight.push(batchItem);\r\n });\r\n toDownplay.length && api.dispatchAction({\r\n type: 'downplay',\r\n escapeConnect: true,\r\n notBlur: true,\r\n batch: toDownplay\r\n });\r\n toHighlight.length && api.dispatchAction({\r\n type: 'highlight',\r\n escapeConnect: true,\r\n notBlur: true,\r\n batch: toHighlight\r\n });\r\n}\r\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\r\n for (var i = 0; i < (inputAxesInfo || []).length; i++) {\r\n var inputAxisInfo = inputAxesInfo[i];\r\n if (axisInfo.axis.dim === inputAxisInfo.axisDim\r\n && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\r\n return inputAxisInfo;\r\n }\r\n }\r\n}\r\nfunction makeMapperParam(axisInfo) {\r\n var axisModel = axisInfo.axis.model;\r\n var item = {};\r\n var dim = item.axisDim = axisInfo.axis.dim;\r\n item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\r\n item.axisName = item[dim + 'AxisName'] = axisModel.name;\r\n item.axisId = item[dim + 'AxisId'] = axisModel.id;\r\n return item;\r\n}\r\nfunction illegalPoint(point) {\r\n return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\r\n}\n\nvar inner$c = makeInner();\r\nvar each$8 = each;\r\nfunction register(key, api, handler) {\r\n if (env.node) {\r\n return;\r\n }\r\n var zr = api.getZr();\r\n inner$c(zr).records || (inner$c(zr).records = {});\r\n initGlobalListeners(zr, api);\r\n var record = inner$c(zr).records[key] || (inner$c(zr).records[key] = {});\r\n record.handler = handler;\r\n}\r\nfunction initGlobalListeners(zr, api) {\r\n if (inner$c(zr).initialized) {\r\n return;\r\n }\r\n inner$c(zr).initialized = true;\r\n useHandler('click', curry(doEnter, 'click'));\r\n useHandler('mousemove', curry(doEnter, 'mousemove'));\r\n useHandler('globalout', onLeave);\r\n function useHandler(eventType, cb) {\r\n zr.on(eventType, function (e) {\r\n var dis = makeDispatchAction(api);\r\n each$8(inner$c(zr).records, function (record) {\r\n record && cb(record, e, dis.dispatchAction);\r\n });\r\n dispatchTooltipFinally(dis.pendings, api);\r\n });\r\n }\r\n}\r\nfunction dispatchTooltipFinally(pendings, api) {\r\n var showLen = pendings.showTip.length;\r\n var hideLen = pendings.hideTip.length;\r\n var actuallyPayload;\r\n if (showLen) {\r\n actuallyPayload = pendings.showTip[showLen - 1];\r\n }\r\n else if (hideLen) {\r\n actuallyPayload = pendings.hideTip[hideLen - 1];\r\n }\r\n if (actuallyPayload) {\r\n actuallyPayload.dispatchAction = null;\r\n api.dispatchAction(actuallyPayload);\r\n }\r\n}\r\nfunction onLeave(record, e, dispatchAction) {\r\n record.handler('leave', null, dispatchAction);\r\n}\r\nfunction doEnter(currTrigger, record, e, dispatchAction) {\r\n record.handler(currTrigger, e, dispatchAction);\r\n}\r\nfunction makeDispatchAction(api) {\r\n var pendings = {\r\n showTip: [],\r\n hideTip: []\r\n };\r\n var dispatchAction = function (payload) {\r\n var pendingList = pendings[payload.type];\r\n if (pendingList) {\r\n pendingList.push(payload);\r\n }\r\n else {\r\n payload.dispatchAction = dispatchAction;\r\n api.dispatchAction(payload);\r\n }\r\n };\r\n return {\r\n dispatchAction: dispatchAction,\r\n pendings: pendings\r\n };\r\n}\r\nfunction unregister(key, api) {\r\n if (env.node) {\r\n return;\r\n }\r\n var zr = api.getZr();\r\n var record = (inner$c(zr).records || {})[key];\r\n if (record) {\r\n inner$c(zr).records[key] = null;\r\n }\r\n}\n\nvar AxisPointerView = (function (_super) {\r\n __extends(AxisPointerView, _super);\r\n function AxisPointerView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = AxisPointerView.type;\r\n return _this;\r\n }\r\n AxisPointerView.prototype.render = function (globalAxisPointerModel, ecModel, api) {\r\n var globalTooltipModel = ecModel.getComponent('tooltip');\r\n var triggerOn = globalAxisPointerModel.get('triggerOn')\r\n || (globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click');\r\n register('axisPointer', api, function (currTrigger, e, dispatchAction) {\r\n if (triggerOn !== 'none'\r\n && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\r\n dispatchAction({\r\n type: 'updateAxisPointer',\r\n currTrigger: currTrigger,\r\n x: e && e.offsetX,\r\n y: e && e.offsetY\r\n });\r\n }\r\n });\r\n };\r\n AxisPointerView.prototype.remove = function (ecModel, api) {\r\n unregister('axisPointer', api);\r\n };\r\n AxisPointerView.prototype.dispose = function (ecModel, api) {\r\n unregister('axisPointer', api);\r\n };\r\n AxisPointerView.type = 'axisPointer';\r\n return AxisPointerView;\r\n}(ComponentView));\r\nComponentView.registerClass(AxisPointerView);\n\nvar inner$d = makeInner();\r\nvar clone$3 = clone;\r\nvar bind$1 = bind;\r\nvar BaseAxisPointer = (function () {\r\n function BaseAxisPointer() {\r\n this._dragging = false;\r\n this.animationThreshold = 15;\r\n }\r\n BaseAxisPointer.prototype.render = function (axisModel, axisPointerModel, api, forceRender) {\r\n var value = axisPointerModel.get('value');\r\n var status = axisPointerModel.get('status');\r\n this._axisModel = axisModel;\r\n this._axisPointerModel = axisPointerModel;\r\n this._api = api;\r\n if (!forceRender\r\n && this._lastValue === value\r\n && this._lastStatus === status) {\r\n return;\r\n }\r\n this._lastValue = value;\r\n this._lastStatus = status;\r\n var group = this._group;\r\n var handle = this._handle;\r\n if (!status || status === 'hide') {\r\n group && group.hide();\r\n handle && handle.hide();\r\n return;\r\n }\r\n group && group.show();\r\n handle && handle.show();\r\n var elOption = {};\r\n this.makeElOption(elOption, value, axisModel, axisPointerModel, api);\r\n var graphicKey = elOption.graphicKey;\r\n if (graphicKey !== this._lastGraphicKey) {\r\n this.clear(api);\r\n }\r\n this._lastGraphicKey = graphicKey;\r\n var moveAnimation = this._moveAnimation =\r\n this.determineAnimation(axisModel, axisPointerModel);\r\n if (!group) {\r\n group = this._group = new Group();\r\n this.createPointerEl(group, elOption, axisModel, axisPointerModel);\r\n this.createLabelEl(group, elOption, axisModel, axisPointerModel);\r\n api.getZr().add(group);\r\n }\r\n else {\r\n var doUpdateProps = curry(updateProps$1, axisPointerModel, moveAnimation);\r\n this.updatePointerEl(group, elOption, doUpdateProps);\r\n this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\r\n }\r\n updateMandatoryProps(group, axisPointerModel, true);\r\n this._renderHandle(value);\r\n };\r\n BaseAxisPointer.prototype.remove = function (api) {\r\n this.clear(api);\r\n };\r\n BaseAxisPointer.prototype.dispose = function (api) {\r\n this.clear(api);\r\n };\r\n BaseAxisPointer.prototype.determineAnimation = function (axisModel, axisPointerModel) {\r\n var animation = axisPointerModel.get('animation');\r\n var axis = axisModel.axis;\r\n var isCategoryAxis = axis.type === 'category';\r\n var useSnap = axisPointerModel.get('snap');\r\n if (!useSnap && !isCategoryAxis) {\r\n return false;\r\n }\r\n if (animation === 'auto' || animation == null) {\r\n var animationThreshold = this.animationThreshold;\r\n if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\r\n return true;\r\n }\r\n if (useSnap) {\r\n var seriesDataCount = getAxisInfo(axisModel).seriesDataCount;\r\n var axisExtent = axis.getExtent();\r\n return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\r\n }\r\n return false;\r\n }\r\n return animation === true;\r\n };\r\n BaseAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n };\r\n BaseAxisPointer.prototype.createPointerEl = function (group, elOption, axisModel, axisPointerModel) {\r\n var pointerOption = elOption.pointer;\r\n if (pointerOption) {\r\n var pointerEl = inner$d(group).pointerEl = new graphic[pointerOption.type](clone$3(elOption.pointer));\r\n group.add(pointerEl);\r\n }\r\n };\r\n BaseAxisPointer.prototype.createLabelEl = function (group, elOption, axisModel, axisPointerModel) {\r\n if (elOption.label) {\r\n var labelEl = inner$d(group).labelEl = new ZRText(clone$3(elOption.label));\r\n group.add(labelEl);\r\n updateLabelShowHide(labelEl, axisPointerModel);\r\n }\r\n };\r\n BaseAxisPointer.prototype.updatePointerEl = function (group, elOption, updateProps) {\r\n var pointerEl = inner$d(group).pointerEl;\r\n if (pointerEl && elOption.pointer) {\r\n pointerEl.setStyle(elOption.pointer.style);\r\n updateProps(pointerEl, { shape: elOption.pointer.shape });\r\n }\r\n };\r\n BaseAxisPointer.prototype.updateLabelEl = function (group, elOption, updateProps, axisPointerModel) {\r\n var labelEl = inner$d(group).labelEl;\r\n if (labelEl) {\r\n labelEl.setStyle(elOption.label.style);\r\n updateProps(labelEl, {\r\n x: elOption.label.x,\r\n y: elOption.label.y\r\n });\r\n updateLabelShowHide(labelEl, axisPointerModel);\r\n }\r\n };\r\n BaseAxisPointer.prototype._renderHandle = function (value) {\r\n if (this._dragging || !this.updateHandleTransform) {\r\n return;\r\n }\r\n var axisPointerModel = this._axisPointerModel;\r\n var zr = this._api.getZr();\r\n var handle = this._handle;\r\n var handleModel = axisPointerModel.getModel('handle');\r\n var status = axisPointerModel.get('status');\r\n if (!handleModel.get('show') || !status || status === 'hide') {\r\n handle && zr.remove(handle);\r\n this._handle = null;\r\n return;\r\n }\r\n var isInit;\r\n if (!this._handle) {\r\n isInit = true;\r\n handle = this._handle = createIcon(handleModel.get('icon'), {\r\n cursor: 'move',\r\n draggable: true,\r\n onmousemove: function (e) {\r\n stop(e.event);\r\n },\r\n onmousedown: bind$1(this._onHandleDragMove, this, 0, 0),\r\n drift: bind$1(this._onHandleDragMove, this),\r\n ondragend: bind$1(this._onHandleDragEnd, this)\r\n });\r\n zr.add(handle);\r\n }\r\n updateMandatoryProps(handle, axisPointerModel, false);\r\n handle.setStyle(handleModel.getItemStyle(null, [\r\n 'color', 'borderColor', 'borderWidth', 'opacity',\r\n 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'\r\n ]));\r\n var handleSize = handleModel.get('size');\r\n if (!isArray(handleSize)) {\r\n handleSize = [handleSize, handleSize];\r\n }\r\n handle.scaleX = handleSize[0] / 2;\r\n handle.scaleY = handleSize[1] / 2;\r\n createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\r\n this._moveHandleToValue(value, isInit);\r\n };\r\n BaseAxisPointer.prototype._moveHandleToValue = function (value, isInit) {\r\n updateProps$1(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\r\n };\r\n BaseAxisPointer.prototype._onHandleDragMove = function (dx, dy) {\r\n var handle = this._handle;\r\n if (!handle) {\r\n return;\r\n }\r\n this._dragging = true;\r\n var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\r\n this._payloadInfo = trans;\r\n handle.stopAnimation();\r\n handle.attr(getHandleTransProps(trans));\r\n inner$d(handle).lastProp = null;\r\n this._doDispatchAxisPointer();\r\n };\r\n BaseAxisPointer.prototype._doDispatchAxisPointer = function () {\r\n var handle = this._handle;\r\n if (!handle) {\r\n return;\r\n }\r\n var payloadInfo = this._payloadInfo;\r\n var axisModel = this._axisModel;\r\n this._api.dispatchAction({\r\n type: 'updateAxisPointer',\r\n x: payloadInfo.cursorPoint[0],\r\n y: payloadInfo.cursorPoint[1],\r\n tooltipOption: payloadInfo.tooltipOption,\r\n axesInfo: [{\r\n axisDim: axisModel.axis.dim,\r\n axisIndex: axisModel.componentIndex\r\n }]\r\n });\r\n };\r\n BaseAxisPointer.prototype._onHandleDragEnd = function () {\r\n this._dragging = false;\r\n var handle = this._handle;\r\n if (!handle) {\r\n return;\r\n }\r\n var value = this._axisPointerModel.get('value');\r\n this._moveHandleToValue(value);\r\n this._api.dispatchAction({\r\n type: 'hideTip'\r\n });\r\n };\r\n BaseAxisPointer.prototype.clear = function (api) {\r\n this._lastValue = null;\r\n this._lastStatus = null;\r\n var zr = api.getZr();\r\n var group = this._group;\r\n var handle = this._handle;\r\n if (zr && group) {\r\n this._lastGraphicKey = null;\r\n group && zr.remove(group);\r\n handle && zr.remove(handle);\r\n this._group = null;\r\n this._handle = null;\r\n this._payloadInfo = null;\r\n }\r\n };\r\n BaseAxisPointer.prototype.doClear = function () {\r\n };\r\n BaseAxisPointer.prototype.buildLabel = function (xy, wh, xDimIndex) {\r\n xDimIndex = xDimIndex || 0;\r\n return {\r\n x: xy[xDimIndex],\r\n y: xy[1 - xDimIndex],\r\n width: wh[xDimIndex],\r\n height: wh[1 - xDimIndex]\r\n };\r\n };\r\n return BaseAxisPointer;\r\n}());\r\nfunction updateProps$1(animationModel, moveAnimation, el, props) {\r\n if (!propsEqual(inner$d(el).lastProp, props)) {\r\n inner$d(el).lastProp = props;\r\n moveAnimation\r\n ? updateProps(el, props, animationModel)\r\n : (el.stopAnimation(), el.attr(props));\r\n }\r\n}\r\nfunction propsEqual(lastProps, newProps) {\r\n if (isObject(lastProps) && isObject(newProps)) {\r\n var equals_1 = true;\r\n each(newProps, function (item, key) {\r\n equals_1 = equals_1 && propsEqual(lastProps[key], item);\r\n });\r\n return !!equals_1;\r\n }\r\n else {\r\n return lastProps === newProps;\r\n }\r\n}\r\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\r\n labelEl[axisPointerModel.get(['label', 'show']) ? 'show' : 'hide']();\r\n}\r\nfunction getHandleTransProps(trans) {\r\n return {\r\n x: trans.x || 0,\r\n y: trans.y || 0,\r\n rotation: trans.rotation || 0\r\n };\r\n}\r\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\r\n var z = axisPointerModel.get('z');\r\n var zlevel = axisPointerModel.get('zlevel');\r\n group && group.traverse(function (el) {\r\n if (el.type !== 'group') {\r\n z != null && (el.z = z);\r\n zlevel != null && (el.zlevel = zlevel);\r\n el.silent = silent;\r\n }\r\n });\r\n}\n\nfunction buildElStyle(axisPointerModel) {\r\n var axisPointerType = axisPointerModel.get('type');\r\n var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\r\n var style;\r\n if (axisPointerType === 'line') {\r\n style = styleModel.getLineStyle();\r\n style.fill = null;\r\n }\r\n else if (axisPointerType === 'shadow') {\r\n style = styleModel.getAreaStyle();\r\n style.stroke = null;\r\n }\r\n return style;\r\n}\r\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\r\n var value = axisPointerModel.get('value');\r\n var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\r\n precision: axisPointerModel.get(['label', 'precision']),\r\n formatter: axisPointerModel.get(['label', 'formatter'])\r\n });\r\n var labelModel = axisPointerModel.getModel('label');\r\n var paddings = normalizeCssArray$1(labelModel.get('padding') || 0);\r\n var font = labelModel.getFont();\r\n var textRect = getBoundingRect(text, font);\r\n var position = labelPos.position;\r\n var width = textRect.width + paddings[1] + paddings[3];\r\n var height = textRect.height + paddings[0] + paddings[2];\r\n var align = labelPos.align;\r\n align === 'right' && (position[0] -= width);\r\n align === 'center' && (position[0] -= width / 2);\r\n var verticalAlign = labelPos.verticalAlign;\r\n verticalAlign === 'bottom' && (position[1] -= height);\r\n verticalAlign === 'middle' && (position[1] -= height / 2);\r\n confineInContainer(position, width, height, api);\r\n var bgColor = labelModel.get('backgroundColor');\r\n if (!bgColor || bgColor === 'auto') {\r\n bgColor = axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n }\r\n elOption.label = {\r\n x: position[0],\r\n y: position[1],\r\n style: createTextStyle(labelModel, {\r\n text: text,\r\n font: font,\r\n fill: labelModel.getTextColor(),\r\n padding: paddings,\r\n backgroundColor: bgColor\r\n }),\r\n z2: 10\r\n };\r\n}\r\nfunction confineInContainer(position, width, height, api) {\r\n var viewWidth = api.getWidth();\r\n var viewHeight = api.getHeight();\r\n position[0] = Math.min(position[0] + width, viewWidth) - width;\r\n position[1] = Math.min(position[1] + height, viewHeight) - height;\r\n position[0] = Math.max(position[0], 0);\r\n position[1] = Math.max(position[1], 0);\r\n}\r\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\r\n value = axis.scale.parse(value);\r\n var text = axis.scale.getLabel({\r\n value: value\r\n }, {\r\n precision: opt.precision\r\n });\r\n var formatter = opt.formatter;\r\n if (formatter) {\r\n var params_1 = {\r\n value: getAxisRawValue(axis, { value: value }),\r\n axisDimension: axis.dim,\r\n axisIndex: axis.index,\r\n seriesData: []\r\n };\r\n each(seriesDataIndices, function (idxItem) {\r\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\r\n var dataIndex = idxItem.dataIndexInside;\r\n var dataParams = series && series.getDataParams(dataIndex);\r\n dataParams && params_1.seriesData.push(dataParams);\r\n });\r\n if (isString(formatter)) {\r\n text = formatter.replace('{value}', text);\r\n }\r\n else if (isFunction(formatter)) {\r\n text = formatter(params_1);\r\n }\r\n }\r\n return text;\r\n}\r\nfunction getTransformedPosition(axis, value, layoutInfo) {\r\n var transform = create$1();\r\n rotate(transform, transform, layoutInfo.rotation);\r\n translate(transform, transform, layoutInfo.position);\r\n return applyTransform$1([\r\n axis.dataToCoord(value),\r\n (layoutInfo.labelOffset || 0)\r\n + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)\r\n ], transform);\r\n}\r\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\r\n var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\r\n layoutInfo.labelMargin = axisPointerModel.get(['label', 'margin']);\r\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\r\n position: getTransformedPosition(axisModel.axis, value, layoutInfo),\r\n align: textLayout.textAlign,\r\n verticalAlign: textLayout.textVerticalAlign\r\n });\r\n}\r\nfunction makeLineShape(p1, p2, xDimIndex) {\r\n xDimIndex = xDimIndex || 0;\r\n return {\r\n x1: p1[xDimIndex],\r\n y1: p1[1 - xDimIndex],\r\n x2: p2[xDimIndex],\r\n y2: p2[1 - xDimIndex]\r\n };\r\n}\r\nfunction makeRectShape(xy, wh, xDimIndex) {\r\n xDimIndex = xDimIndex || 0;\r\n return {\r\n x: xy[xDimIndex],\r\n y: xy[1 - xDimIndex],\r\n width: wh[xDimIndex],\r\n height: wh[1 - xDimIndex]\r\n };\r\n}\r\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\r\n return {\r\n cx: cx,\r\n cy: cy,\r\n r0: r0,\r\n r: r,\r\n startAngle: startAngle,\r\n endAngle: endAngle,\r\n clockwise: true\r\n };\r\n}\n\nvar CartesianAxisPointer = (function (_super) {\r\n __extends(CartesianAxisPointer, _super);\r\n function CartesianAxisPointer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CartesianAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n var axis = axisModel.axis;\r\n var grid = axis.grid;\r\n var axisPointerType = axisPointerModel.get('type');\r\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\r\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\r\n if (axisPointerType && axisPointerType !== 'none') {\r\n var elStyle = buildElStyle(axisPointerModel);\r\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\r\n pointerOption.style = elStyle;\r\n elOption.graphicKey = pointerOption.type;\r\n elOption.pointer = pointerOption;\r\n }\r\n var layoutInfo = layout$1(grid.model, axisModel);\r\n buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\r\n };\r\n CartesianAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) {\r\n var layoutInfo = layout$1(axisModel.axis.grid.model, axisModel, {\r\n labelInside: false\r\n });\r\n layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']);\r\n var pos = getTransformedPosition(axisModel.axis, value, layoutInfo);\r\n return {\r\n x: pos[0],\r\n y: pos[1],\r\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\r\n };\r\n };\r\n CartesianAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) {\r\n var axis = axisModel.axis;\r\n var grid = axis.grid;\r\n var axisExtent = axis.getGlobalExtent(true);\r\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\r\n var dimIndex = axis.dim === 'x' ? 0 : 1;\r\n var currPosition = [transform.x, transform.y];\r\n currPosition[dimIndex] += delta[dimIndex];\r\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\r\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\r\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\r\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\r\n cursorPoint[dimIndex] = currPosition[dimIndex];\r\n var tooltipOptions = [\r\n { verticalAlign: 'middle' },\r\n { align: 'center' }\r\n ];\r\n return {\r\n x: currPosition[0],\r\n y: currPosition[1],\r\n rotation: transform.rotation,\r\n cursorPoint: cursorPoint,\r\n tooltipOption: tooltipOptions[dimIndex]\r\n };\r\n };\r\n return CartesianAxisPointer;\r\n}(BaseAxisPointer));\r\nfunction getCartesian(grid, axis) {\r\n var opt = {};\r\n opt[axis.dim + 'AxisIndex'] = axis.index;\r\n return grid.getCartesian(opt);\r\n}\r\nvar pointerShapeBuilder = {\r\n line: function (axis, pixelValue, otherExtent) {\r\n var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\r\n return {\r\n type: 'Line',\r\n subPixelOptimize: true,\r\n shape: targetShape\r\n };\r\n },\r\n shadow: function (axis, pixelValue, otherExtent) {\r\n var bandWidth = Math.max(1, axis.getBandWidth());\r\n var span = otherExtent[1] - otherExtent[0];\r\n return {\r\n type: 'Rect',\r\n shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\r\n };\r\n }\r\n};\r\nfunction getAxisDimIndex(axis) {\r\n return axis.dim === 'x' ? 0 : 1;\r\n}\r\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\n\nvar AxisPointerModel = (function (_super) {\r\n __extends(AxisPointerModel, _super);\r\n function AxisPointerModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = AxisPointerModel.type;\r\n return _this;\r\n }\r\n AxisPointerModel.type = 'axisPointer';\r\n AxisPointerModel.defaultOption = {\r\n show: 'auto',\r\n zlevel: 0,\r\n z: 50,\r\n type: 'line',\r\n snap: false,\r\n triggerTooltip: true,\r\n value: null,\r\n status: null,\r\n link: [],\r\n animation: null,\r\n animationDurationUpdate: 200,\r\n lineStyle: {\r\n color: '#B9BEC9',\r\n width: 1,\r\n type: 'dashed'\r\n },\r\n shadowStyle: {\r\n color: 'rgba(210,219,238,0.2)'\r\n },\r\n label: {\r\n show: true,\r\n formatter: null,\r\n precision: 'auto',\r\n margin: 3,\r\n color: '#fff',\r\n padding: [5, 7, 5, 7],\r\n backgroundColor: 'auto',\r\n borderColor: null,\r\n borderWidth: 0,\r\n borderRadius: 3\r\n },\r\n handle: {\r\n show: false,\r\n icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\r\n size: 45,\r\n margin: 50,\r\n color: '#333',\r\n shadowBlur: 3,\r\n shadowColor: '#aaa',\r\n shadowOffsetX: 0,\r\n shadowOffsetY: 2,\r\n throttle: 40\r\n }\r\n };\r\n return AxisPointerModel;\r\n}(ComponentModel));\n\nComponentModel.registerClass(AxisPointerModel);\r\nregisterPreprocessor(function (option) {\r\n if (option) {\r\n (!option.axisPointer || option.axisPointer.length === 0)\r\n && (option.axisPointer = {});\r\n var link = option.axisPointer.link;\r\n if (link && !isArray(link)) {\r\n option.axisPointer.link = [link];\r\n }\r\n }\r\n});\r\nregisterProcessor(PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\r\n ecModel.getComponent('axisPointer').coordSysAxesInfo =\r\n collect(ecModel, api);\r\n});\r\nregisterAction({\r\n type: 'updateAxisPointer',\r\n event: 'updateAxisPointer',\r\n update: ':updateAxisPointer'\r\n}, axisTrigger);\n\nvar XY = ['x', 'y'];\r\nvar WH = ['width', 'height'];\r\nvar SingleAxisPointer = (function (_super) {\r\n __extends(SingleAxisPointer, _super);\r\n function SingleAxisPointer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SingleAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n var axis = axisModel.axis;\r\n var coordSys = axis.coordinateSystem;\r\n var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\r\n var pixelValue = coordSys.dataToPoint(value)[0];\r\n var axisPointerType = axisPointerModel.get('type');\r\n if (axisPointerType && axisPointerType !== 'none') {\r\n var elStyle = buildElStyle(axisPointerModel);\r\n var pointerOption = pointerShapeBuilder$1[axisPointerType](axis, pixelValue, otherExtent);\r\n pointerOption.style = elStyle;\r\n elOption.graphicKey = pointerOption.type;\r\n elOption.pointer = pointerOption;\r\n }\r\n var layoutInfo = layout$2(axisModel);\r\n buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\r\n };\r\n SingleAxisPointer.prototype.getHandleTransform = function (value, axisModel, axisPointerModel) {\r\n var layoutInfo = layout$2(axisModel, { labelInside: false });\r\n layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin']);\r\n var position = getTransformedPosition(axisModel.axis, value, layoutInfo);\r\n return {\r\n x: position[0],\r\n y: position[1],\r\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\r\n };\r\n };\r\n SingleAxisPointer.prototype.updateHandleTransform = function (transform, delta, axisModel, axisPointerModel) {\r\n var axis = axisModel.axis;\r\n var coordSys = axis.coordinateSystem;\r\n var dimIndex = getPointDimIndex(axis);\r\n var axisExtent = getGlobalExtent(coordSys, dimIndex);\r\n var currPosition = [transform.x, transform.y];\r\n currPosition[dimIndex] += delta[dimIndex];\r\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\r\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\r\n var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\r\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\r\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\r\n cursorPoint[dimIndex] = currPosition[dimIndex];\r\n return {\r\n x: currPosition[0],\r\n y: currPosition[1],\r\n rotation: transform.rotation,\r\n cursorPoint: cursorPoint,\r\n tooltipOption: {\r\n verticalAlign: 'middle'\r\n }\r\n };\r\n };\r\n return SingleAxisPointer;\r\n}(BaseAxisPointer));\r\nvar pointerShapeBuilder$1 = {\r\n line: function (axis, pixelValue, otherExtent) {\r\n var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\r\n return {\r\n type: 'Line',\r\n subPixelOptimize: true,\r\n shape: targetShape\r\n };\r\n },\r\n shadow: function (axis, pixelValue, otherExtent) {\r\n var bandWidth = axis.getBandWidth();\r\n var span = otherExtent[1] - otherExtent[0];\r\n return {\r\n type: 'Rect',\r\n shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))\r\n };\r\n }\r\n};\r\nfunction getPointDimIndex(axis) {\r\n return axis.isHorizontal() ? 0 : 1;\r\n}\r\nfunction getGlobalExtent(coordSys, dimIndex) {\r\n var rect = coordSys.getRect();\r\n return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\r\n}\r\nAxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\n\nextendComponentView({\r\n type: 'single'\r\n});\n\nvar DATA_NAME_INDEX = 2;\r\nvar ThemeRiverSeriesModel = (function (_super) {\r\n __extends(ThemeRiverSeriesModel, _super);\r\n function ThemeRiverSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ThemeRiverSeriesModel.type;\r\n _this.useColorPaletteOnData = true;\r\n return _this;\r\n }\r\n ThemeRiverSeriesModel.prototype.init = function (option) {\r\n _super.prototype.init.apply(this, arguments);\r\n this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n };\r\n ThemeRiverSeriesModel.prototype.fixData = function (data) {\r\n var rawDataLength = data.length;\r\n var timeValueKeys = {};\r\n var groupResult = groupData(data, function (item) {\r\n if (!timeValueKeys.hasOwnProperty(item[0] + '')) {\r\n timeValueKeys[item[0] + ''] = -1;\r\n }\r\n return item[2];\r\n });\r\n var layerData = [];\r\n groupResult.buckets.each(function (items, key) {\r\n layerData.push({\r\n name: key, dataList: items\r\n });\r\n });\r\n var layerNum = layerData.length;\r\n for (var k = 0; k < layerNum; ++k) {\r\n var name_1 = layerData[k].name;\r\n for (var j = 0; j < layerData[k].dataList.length; ++j) {\r\n var timeValue = layerData[k].dataList[j][0] + '';\r\n timeValueKeys[timeValue] = k;\r\n }\r\n for (var timeValue in timeValueKeys) {\r\n if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {\r\n timeValueKeys[timeValue] = k;\r\n data[rawDataLength] = [timeValue, 0, name_1];\r\n rawDataLength++;\r\n }\r\n }\r\n }\r\n return data;\r\n };\r\n ThemeRiverSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n var singleAxisModel = this.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n var axisType = singleAxisModel.get('type');\r\n var filterData = filter(option.data, function (dataItem) {\r\n return dataItem[2] !== undefined;\r\n });\r\n var data = this.fixData(filterData || []);\r\n var nameList = [];\r\n var nameMap = this.nameMap = createHashMap();\r\n var count = 0;\r\n for (var i = 0; i < data.length; ++i) {\r\n nameList.push(data[i][DATA_NAME_INDEX]);\r\n if (!nameMap.get(data[i][DATA_NAME_INDEX])) {\r\n nameMap.set(data[i][DATA_NAME_INDEX], count);\r\n count++;\r\n }\r\n }\r\n var dimensionsInfo = createDimensions(data, {\r\n coordDimensions: ['single'],\r\n dimensionsDefine: [\r\n {\r\n name: 'time',\r\n type: getDimensionTypeByAxis(axisType)\r\n },\r\n {\r\n name: 'value',\r\n type: 'float'\r\n },\r\n {\r\n name: 'name',\r\n type: 'ordinal'\r\n }\r\n ],\r\n encodeDefine: {\r\n single: 0,\r\n value: 1,\r\n itemName: 2\r\n }\r\n });\r\n var list = new List(dimensionsInfo, this);\r\n list.initData(data);\r\n return list;\r\n };\r\n ThemeRiverSeriesModel.prototype.getLayerSeries = function () {\r\n var data = this.getData();\r\n var lenCount = data.count();\r\n var indexArr = [];\r\n for (var i = 0; i < lenCount; ++i) {\r\n indexArr[i] = i;\r\n }\r\n var timeDim = data.mapDimension('single');\r\n var groupResult = groupData(indexArr, function (index) {\r\n return data.get('name', index);\r\n });\r\n var layerSeries = [];\r\n groupResult.buckets.each(function (items, key) {\r\n items.sort(function (index1, index2) {\r\n return data.get(timeDim, index1) - data.get(timeDim, index2);\r\n });\r\n layerSeries.push({\r\n name: key,\r\n indices: items\r\n });\r\n });\r\n return layerSeries;\r\n };\r\n ThemeRiverSeriesModel.prototype.getAxisTooltipData = function (dim, value, baseAxis) {\r\n if (!isArray(dim)) {\r\n dim = dim ? [dim] : [];\r\n }\r\n var data = this.getData();\r\n var layerSeries = this.getLayerSeries();\r\n var indices = [];\r\n var layerNum = layerSeries.length;\r\n var nestestValue;\r\n for (var i = 0; i < layerNum; ++i) {\r\n var minDist = Number.MAX_VALUE;\r\n var nearestIdx = -1;\r\n var pointNum = layerSeries[i].indices.length;\r\n for (var j = 0; j < pointNum; ++j) {\r\n var theValue = data.get(dim[0], layerSeries[i].indices[j]);\r\n var dist = Math.abs(theValue - value);\r\n if (dist <= minDist) {\r\n nestestValue = theValue;\r\n minDist = dist;\r\n nearestIdx = layerSeries[i].indices[j];\r\n }\r\n }\r\n indices.push(nearestIdx);\r\n }\r\n return { dataIndices: indices, nestestValue: nestestValue };\r\n };\r\n ThemeRiverSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n var data = this.getData();\r\n var name = data.getName(dataIndex);\r\n var value = data.get(data.mapDimension('value'), dataIndex);\r\n return createTooltipMarkup('nameValue', { name: name, value: value });\r\n };\r\n ThemeRiverSeriesModel.type = 'series.themeRiver';\r\n ThemeRiverSeriesModel.dependencies = ['singleAxis'];\r\n ThemeRiverSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n coordinateSystem: 'singleAxis',\r\n boundaryGap: ['10%', '10%'],\r\n singleAxisIndex: 0,\r\n animationEasing: 'linear',\r\n label: {\r\n margin: 4,\r\n show: true,\r\n position: 'left',\r\n fontSize: 11\r\n },\r\n emphasis: {\r\n label: {\r\n show: true\r\n }\r\n }\r\n };\r\n return ThemeRiverSeriesModel;\r\n}(SeriesModel));\r\nSeriesModel.registerClass(ThemeRiverSeriesModel);\n\nvar ThemeRiverView = (function (_super) {\r\n __extends(ThemeRiverView, _super);\r\n function ThemeRiverView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ThemeRiverView.type;\r\n _this._layers = [];\r\n return _this;\r\n }\r\n ThemeRiverView.prototype.render = function (seriesModel, ecModel, api) {\r\n var data = seriesModel.getData();\r\n var self = this;\r\n var group = this.group;\r\n var layersSeries = seriesModel.getLayerSeries();\r\n var layoutInfo = data.getLayout('layoutInfo');\r\n var rect = layoutInfo.rect;\r\n var boundaryGap = layoutInfo.boundaryGap;\r\n group.x = 0;\r\n group.y = rect.y + boundaryGap[0];\r\n function keyGetter(item) {\r\n return item.name;\r\n }\r\n var dataDiffer = new DataDiffer(this._layersSeries || [], layersSeries, keyGetter, keyGetter);\r\n var newLayersGroups = [];\r\n dataDiffer\r\n .add(bind(process, this, 'add'))\r\n .update(bind(process, this, 'update'))\r\n .remove(bind(process, this, 'remove'))\r\n .execute();\r\n function process(status, idx, oldIdx) {\r\n var oldLayersGroups = self._layers;\r\n if (status === 'remove') {\r\n group.remove(oldLayersGroups[idx]);\r\n return;\r\n }\r\n var points0 = [];\r\n var points1 = [];\r\n var style;\r\n var indices = layersSeries[idx].indices;\r\n var j = 0;\r\n for (; j < indices.length; j++) {\r\n var layout = data.getItemLayout(indices[j]);\r\n var x = layout.x;\r\n var y0 = layout.y0;\r\n var y = layout.y;\r\n points0.push(x, y0);\r\n points1.push(x, y0 + y);\r\n style = data.getItemVisual(indices[j], 'style');\r\n }\r\n var polygon;\r\n var textLayout = data.getItemLayout(indices[0]);\r\n var labelModel = seriesModel.getModel('label');\r\n var margin = labelModel.get('margin');\r\n var emphasisModel = seriesModel.getModel('emphasis');\r\n if (status === 'add') {\r\n var layerGroup = newLayersGroups[idx] = new Group();\r\n polygon = new ECPolygon({\r\n shape: {\r\n points: points0,\r\n stackedOnPoints: points1,\r\n smooth: 0.4,\r\n stackedOnSmooth: 0.4,\r\n smoothConstraint: false\r\n },\r\n z2: 0\r\n });\r\n layerGroup.add(polygon);\r\n group.add(layerGroup);\r\n if (seriesModel.isAnimationEnabled()) {\r\n polygon.setClipPath(createGridClipShape$2(polygon.getBoundingRect(), seriesModel, function () {\r\n polygon.removeClipPath();\r\n }));\r\n }\r\n }\r\n else {\r\n var layerGroup = oldLayersGroups[oldIdx];\r\n polygon = layerGroup.childAt(0);\r\n group.add(layerGroup);\r\n newLayersGroups[idx] = layerGroup;\r\n updateProps(polygon, {\r\n shape: {\r\n points: points0,\r\n stackedOnPoints: points1\r\n }\r\n }, seriesModel);\r\n }\r\n setLabelStyle(polygon, getLabelStatesModels(seriesModel), {\r\n labelDataIndex: indices[j - 1],\r\n defaultText: data.getName(indices[j - 1]),\r\n inheritColor: style.fill\r\n }, {\r\n normal: {\r\n verticalAlign: 'middle'\r\n }\r\n });\r\n polygon.setTextConfig({\r\n position: null,\r\n local: true\r\n });\r\n var labelEl = polygon.getTextContent();\r\n if (labelEl) {\r\n labelEl.x = textLayout.x - margin;\r\n labelEl.y = textLayout.y0 + textLayout.y / 2;\r\n }\r\n polygon.useStyle(style);\r\n data.setItemGraphicEl(idx, polygon);\r\n setStatesStylesFromModel(polygon, seriesModel);\r\n enableHoverEmphasis(polygon, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n }\r\n this._layersSeries = layersSeries;\r\n this._layers = newLayersGroups;\r\n };\r\n ThemeRiverView.type = 'themeRiver';\r\n return ThemeRiverView;\r\n}(ChartView));\r\nfunction createGridClipShape$2(rect, seriesModel, cb) {\r\n var rectEl = new Rect({\r\n shape: {\r\n x: rect.x - 10,\r\n y: rect.y - 10,\r\n width: 0,\r\n height: rect.height + 20\r\n }\r\n });\r\n initProps(rectEl, {\r\n shape: {\r\n x: rect.x - 50,\r\n width: rect.width + 100,\r\n height: rect.height + 20\r\n }\r\n }, seriesModel, cb);\r\n return rectEl;\r\n}\r\nChartView.registerClass(ThemeRiverView);\n\nfunction themeRiverLayout(ecModel, api) {\r\n ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var single = seriesModel.coordinateSystem;\r\n var layoutInfo = {};\r\n var rect = single.getRect();\r\n layoutInfo.rect = rect;\r\n var boundaryGap = seriesModel.get('boundaryGap');\r\n var axis = single.getAxis();\r\n layoutInfo.boundaryGap = boundaryGap;\r\n if (axis.orient === 'horizontal') {\r\n boundaryGap[0] = parsePercent$2(boundaryGap[0], rect.height);\r\n boundaryGap[1] = parsePercent$2(boundaryGap[1], rect.height);\r\n var height = rect.height - boundaryGap[0] - boundaryGap[1];\r\n doThemeRiverLayout(data, seriesModel, height);\r\n }\r\n else {\r\n boundaryGap[0] = parsePercent$2(boundaryGap[0], rect.width);\r\n boundaryGap[1] = parsePercent$2(boundaryGap[1], rect.width);\r\n var width = rect.width - boundaryGap[0] - boundaryGap[1];\r\n doThemeRiverLayout(data, seriesModel, width);\r\n }\r\n data.setLayout('layoutInfo', layoutInfo);\r\n });\r\n}\r\nfunction doThemeRiverLayout(data, seriesModel, height) {\r\n if (!data.count()) {\r\n return;\r\n }\r\n var coordSys = seriesModel.coordinateSystem;\r\n var layerSeries = seriesModel.getLayerSeries();\r\n var timeDim = data.mapDimension('single');\r\n var valueDim = data.mapDimension('value');\r\n var layerPoints = map(layerSeries, function (singleLayer) {\r\n return map(singleLayer.indices, function (idx) {\r\n var pt = coordSys.dataToPoint(data.get(timeDim, idx));\r\n pt[1] = data.get(valueDim, idx);\r\n return pt;\r\n });\r\n });\r\n var base = computeBaseline(layerPoints);\r\n var baseLine = base.y0;\r\n var ky = height / base.max;\r\n var n = layerSeries.length;\r\n var m = layerSeries[0].indices.length;\r\n var baseY0;\r\n for (var j = 0; j < m; ++j) {\r\n baseY0 = baseLine[j] * ky;\r\n data.setItemLayout(layerSeries[0].indices[j], {\r\n layerIndex: 0,\r\n x: layerPoints[0][j][0],\r\n y0: baseY0,\r\n y: layerPoints[0][j][1] * ky\r\n });\r\n for (var i = 1; i < n; ++i) {\r\n baseY0 += layerPoints[i - 1][j][1] * ky;\r\n data.setItemLayout(layerSeries[i].indices[j], {\r\n layerIndex: i,\r\n x: layerPoints[i][j][0],\r\n y0: baseY0,\r\n y: layerPoints[i][j][1] * ky\r\n });\r\n }\r\n }\r\n}\r\nfunction computeBaseline(data) {\r\n var layerNum = data.length;\r\n var pointNum = data[0].length;\r\n var sums = [];\r\n var y0 = [];\r\n var max = 0;\r\n for (var i = 0; i < pointNum; ++i) {\r\n var temp = 0;\r\n for (var j = 0; j < layerNum; ++j) {\r\n temp += data[j][i][1];\r\n }\r\n if (temp > max) {\r\n max = temp;\r\n }\r\n sums.push(temp);\r\n }\r\n for (var k = 0; k < pointNum; ++k) {\r\n y0[k] = (max - sums[k]) / 2;\r\n }\r\n max = 0;\r\n for (var l = 0; l < pointNum; ++l) {\r\n var sum = sums[l] + y0[l];\r\n if (sum > max) {\r\n max = sum;\r\n }\r\n }\r\n return {\r\n y0: y0,\r\n max: max\r\n };\r\n}\n\nregisterLayout(themeRiverLayout);\r\nregisterProcessor(dataFilter('themeRiver'));\n\nvar SunburstSeriesModel = (function (_super) {\r\n __extends(SunburstSeriesModel, _super);\r\n function SunburstSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SunburstSeriesModel.type;\r\n _this.ignoreStyleOnData = true;\r\n return _this;\r\n }\r\n SunburstSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n var root = { name: option.name, children: option.data };\r\n completeTreeValue$1(root);\r\n var levelModels = map(option.levels || [], function (levelDefine) {\r\n return new Model(levelDefine, this, ecModel);\r\n }, this);\r\n var tree = Tree.createTree(root, this, beforeLink);\r\n function beforeLink(nodeData) {\r\n nodeData.wrapMethod('getItemModel', function (model, idx) {\r\n var node = tree.getNodeByDataIndex(idx);\r\n var levelModel = levelModels[node.depth];\r\n levelModel && (model.parentModel = levelModel);\r\n return model;\r\n });\r\n }\r\n return tree.data;\r\n };\r\n SunburstSeriesModel.prototype.optionUpdated = function () {\r\n this.resetViewRoot();\r\n };\r\n SunburstSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n var params = _super.prototype.getDataParams.apply(this, arguments);\r\n var node = this.getData().tree.getNodeByDataIndex(dataIndex);\r\n params.treePathInfo = wrapTreePathInfo(node, this);\r\n return params;\r\n };\r\n SunburstSeriesModel.prototype.getViewRoot = function () {\r\n return this._viewRoot;\r\n };\r\n SunburstSeriesModel.prototype.resetViewRoot = function (viewRoot) {\r\n viewRoot\r\n ? (this._viewRoot = viewRoot)\r\n : (viewRoot = this._viewRoot);\r\n var root = this.getRawData().tree.root;\r\n if (!viewRoot\r\n || (viewRoot !== root && !root.contains(viewRoot))) {\r\n this._viewRoot = root;\r\n }\r\n };\r\n SunburstSeriesModel.prototype.enableAriaDecal = function () {\r\n enableAriaDecalForTree(this);\r\n };\r\n SunburstSeriesModel.type = 'series.sunburst';\r\n SunburstSeriesModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n center: ['50%', '50%'],\r\n radius: [0, '75%'],\r\n clockwise: true,\r\n startAngle: 90,\r\n minAngle: 0,\r\n stillShowZeroSum: true,\r\n nodeClick: 'rootToNode',\r\n renderLabelForZeroData: false,\r\n label: {\r\n rotate: 'radial',\r\n show: true,\r\n opacity: 1,\r\n align: 'center',\r\n position: 'inside',\r\n distance: 5,\r\n silent: true\r\n },\r\n itemStyle: {\r\n borderWidth: 1,\r\n borderColor: 'white',\r\n borderType: 'solid',\r\n shadowBlur: 0,\r\n shadowColor: 'rgba(0, 0, 0, 0.2)',\r\n shadowOffsetX: 0,\r\n shadowOffsetY: 0,\r\n opacity: 1\r\n },\r\n emphasis: {\r\n focus: 'descendant'\r\n },\r\n blur: {\r\n itemStyle: {\r\n opacity: 0.2\r\n },\r\n label: {\r\n opacity: 0.1\r\n }\r\n },\r\n animationType: 'expansion',\r\n animationDuration: 1000,\r\n animationDurationUpdate: 500,\r\n data: [],\r\n levels: [],\r\n sort: 'desc'\r\n };\r\n return SunburstSeriesModel;\r\n}(SeriesModel));\r\nfunction completeTreeValue$1(dataNode) {\r\n var sum = 0;\r\n each(dataNode.children, function (child) {\r\n completeTreeValue$1(child);\r\n var childValue = child.value;\r\n isArray(childValue) && (childValue = childValue[0]);\r\n sum += childValue;\r\n });\r\n var thisValue = dataNode.value;\r\n if (isArray(thisValue)) {\r\n thisValue = thisValue[0];\r\n }\r\n if (thisValue == null || isNaN(thisValue)) {\r\n thisValue = sum;\r\n }\r\n if (thisValue < 0) {\r\n thisValue = 0;\r\n }\r\n isArray(dataNode.value)\r\n ? (dataNode.value[0] = thisValue)\r\n : (dataNode.value = thisValue);\r\n}\r\nSeriesModel.registerClass(SunburstSeriesModel);\n\nvar DEFAULT_SECTOR_Z = 2;\r\nvar DEFAULT_TEXT_Z = 4;\r\nvar SunburstPiece = (function (_super) {\r\n __extends(SunburstPiece, _super);\r\n function SunburstPiece(node, seriesModel, ecModel, api) {\r\n var _this = _super.call(this) || this;\r\n _this.z2 = DEFAULT_SECTOR_Z;\r\n _this.textConfig = {\r\n inside: true\r\n };\r\n getECData(_this).seriesIndex = seriesModel.seriesIndex;\r\n var text = new ZRText({\r\n z2: DEFAULT_TEXT_Z,\r\n silent: node.getModel().get(['label', 'silent'])\r\n });\r\n _this.setTextContent(text);\r\n _this.updateData(true, node, seriesModel, ecModel, api);\r\n return _this;\r\n }\r\n SunburstPiece.prototype.updateData = function (firstCreate, node, seriesModel, ecModel, api) {\r\n this.node = node;\r\n node.piece = this;\r\n seriesModel = seriesModel || this._seriesModel;\r\n ecModel = ecModel || this._ecModel;\r\n var sector = this;\r\n getECData(sector).dataIndex = node.dataIndex;\r\n var itemModel = node.getModel();\r\n var emphasisModel = itemModel.getModel('emphasis');\r\n var layout = node.getLayout();\r\n var sectorShape = extend({}, layout);\r\n sectorShape.label = null;\r\n var normalStyle = node.getVisual('style');\r\n normalStyle.lineJoin = 'bevel';\r\n var decal = node.getVisual('decal');\r\n if (decal) {\r\n normalStyle.decal = createOrUpdatePatternFromDecal(decal, api);\r\n }\r\n var cornerRadius = getSectorCornerRadius(itemModel.getModel('itemStyle'), sectorShape);\r\n extend(sectorShape, cornerRadius);\r\n each(SPECIAL_STATES, function (stateName) {\r\n var state = sector.ensureState(stateName);\r\n var itemStyleModel = itemModel.getModel([stateName, 'itemStyle']);\r\n state.style = itemStyleModel.getItemStyle();\r\n var cornerRadius = getSectorCornerRadius(itemStyleModel, sectorShape);\r\n if (cornerRadius) {\r\n state.shape = cornerRadius;\r\n }\r\n });\r\n if (firstCreate) {\r\n sector.setShape(sectorShape);\r\n sector.shape.r = layout.r0;\r\n updateProps(sector, {\r\n shape: {\r\n r: layout.r\r\n }\r\n }, seriesModel, node.dataIndex);\r\n }\r\n else {\r\n updateProps(sector, {\r\n shape: sectorShape\r\n }, seriesModel);\r\n }\r\n sector.useStyle(normalStyle);\r\n this._updateLabel(seriesModel);\r\n var cursorStyle = itemModel.getShallow('cursor');\r\n cursorStyle && sector.attr('cursor', cursorStyle);\r\n this._seriesModel = seriesModel || this._seriesModel;\r\n this._ecModel = ecModel || this._ecModel;\r\n var focus = emphasisModel.get('focus');\r\n var focusDataIndices = focus === 'ancestor'\r\n ? node.getAncestorsIndices()\r\n : focus === 'descendant' ? node.getDescendantIndices() : null;\r\n enableHoverEmphasis(this, focusDataIndices || focus, emphasisModel.get('blurScope'));\r\n };\r\n SunburstPiece.prototype._updateLabel = function (seriesModel) {\r\n var _this = this;\r\n var itemModel = this.node.getModel();\r\n var normalLabelModel = itemModel.getModel('label');\r\n var layout = this.node.getLayout();\r\n var angle = layout.endAngle - layout.startAngle;\r\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\r\n var dx = Math.cos(midAngle);\r\n var dy = Math.sin(midAngle);\r\n var sector = this;\r\n var label = sector.getTextContent();\r\n var dataIndex = this.node.dataIndex;\r\n var labelMinAngle = normalLabelModel.get('minAngle') / 180 * Math.PI;\r\n var isNormalShown = normalLabelModel.get('show')\r\n && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle);\r\n label.ignore = !isNormalShown;\r\n each(DISPLAY_STATES, function (stateName) {\r\n var labelStateModel = stateName === 'normal' ? itemModel.getModel('label')\r\n : itemModel.getModel([stateName, 'label']);\r\n var isNormal = stateName === 'normal';\r\n var state = isNormal ? label : label.ensureState(stateName);\r\n var text = seriesModel.getFormattedLabel(dataIndex, stateName);\r\n if (isNormal) {\r\n text = text || _this.node.name;\r\n }\r\n state.style = createTextStyle(labelStateModel, {}, null, stateName !== 'normal', true);\r\n if (text) {\r\n state.style.text = text;\r\n }\r\n var isShown = labelStateModel.get('show');\r\n if (isShown != null && !isNormal) {\r\n state.ignore = !isShown;\r\n }\r\n var labelPosition = getLabelAttr(labelStateModel, 'position');\r\n var sectorState = isNormal ? sector : sector.states[stateName];\r\n var labelColor = sectorState.style.fill;\r\n sectorState.textConfig = {\r\n outsideFill: labelStateModel.get('color') === 'inherit' ? labelColor : null,\r\n inside: labelPosition !== 'outside'\r\n };\r\n var r;\r\n var labelPadding = getLabelAttr(labelStateModel, 'distance') || 0;\r\n var textAlign = getLabelAttr(labelStateModel, 'align');\r\n if (labelPosition === 'outside') {\r\n r = layout.r + labelPadding;\r\n textAlign = midAngle > Math.PI / 2 ? 'right' : 'left';\r\n }\r\n else {\r\n if (!textAlign || textAlign === 'center') {\r\n r = (layout.r + layout.r0) / 2;\r\n textAlign = 'center';\r\n }\r\n else if (textAlign === 'left') {\r\n r = layout.r0 + labelPadding;\r\n if (midAngle > Math.PI / 2) {\r\n textAlign = 'right';\r\n }\r\n }\r\n else if (textAlign === 'right') {\r\n r = layout.r - labelPadding;\r\n if (midAngle > Math.PI / 2) {\r\n textAlign = 'left';\r\n }\r\n }\r\n }\r\n state.style.align = textAlign;\r\n state.style.verticalAlign = getLabelAttr(labelStateModel, 'verticalAlign') || 'middle';\r\n state.x = r * dx + layout.cx;\r\n state.y = r * dy + layout.cy;\r\n var rotateType = getLabelAttr(labelStateModel, 'rotate');\r\n var rotate = 0;\r\n if (rotateType === 'radial') {\r\n rotate = -midAngle;\r\n if (rotate < -Math.PI / 2) {\r\n rotate += Math.PI;\r\n }\r\n }\r\n else if (rotateType === 'tangential') {\r\n rotate = Math.PI / 2 - midAngle;\r\n if (rotate > Math.PI / 2) {\r\n rotate -= Math.PI;\r\n }\r\n else if (rotate < -Math.PI / 2) {\r\n rotate += Math.PI;\r\n }\r\n }\r\n else if (typeof rotateType === 'number') {\r\n rotate = rotateType * Math.PI / 180;\r\n }\r\n state.rotation = rotate;\r\n });\r\n function getLabelAttr(model, name) {\r\n var stateAttr = model.get(name);\r\n if (stateAttr == null) {\r\n return normalLabelModel.get(name);\r\n }\r\n return stateAttr;\r\n }\r\n label.dirtyStyle();\r\n };\r\n return SunburstPiece;\r\n}(Sector));\n\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\r\nregisterAction({ type: ROOT_TO_NODE_ACTION, update: 'updateView' }, function (payload, ecModel) {\r\n ecModel.eachComponent({ mainType: 'series', subType: 'sunburst', query: payload }, handleRootToNode);\r\n function handleRootToNode(model, index) {\r\n var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);\r\n if (targetInfo) {\r\n var originViewRoot = model.getViewRoot();\r\n if (originViewRoot) {\r\n payload.direction = aboveViewRoot(originViewRoot, targetInfo.node)\r\n ? 'rollUp' : 'drillDown';\r\n }\r\n model.resetViewRoot(targetInfo.node);\r\n }\r\n }\r\n});\r\nvar HIGHLIGHT_ACTION = 'sunburstHighlight';\r\nregisterAction({ type: HIGHLIGHT_ACTION, update: 'none' }, function (payload, ecModel, api) {\r\n payload = extend({}, payload);\r\n ecModel.eachComponent({ mainType: 'series', subType: 'sunburst', query: payload }, handleHighlight);\r\n function handleHighlight(model) {\r\n var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);\r\n if (targetInfo) {\r\n payload.dataIndex = targetInfo.node.dataIndex;\r\n }\r\n }\r\n if (__DEV__) {\r\n deprecateReplaceLog('highlight', 'sunburstHighlight');\r\n }\r\n api.dispatchAction(extend(payload, {\r\n type: 'highlight'\r\n }));\r\n});\r\nvar UNHIGHLIGHT_ACTION = 'sunburstUnhighlight';\r\nregisterAction({ type: UNHIGHLIGHT_ACTION, update: 'updateView' }, function (payload, ecModel, api) {\r\n payload = extend({}, payload);\r\n if (__DEV__) {\r\n deprecateReplaceLog('downplay', 'sunburstUnhighlight');\r\n }\r\n api.dispatchAction(extend(payload, {\r\n type: 'downplay'\r\n }));\r\n});\n\nvar SunburstView = (function (_super) {\r\n __extends(SunburstView, _super);\r\n function SunburstView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SunburstView.type;\r\n return _this;\r\n }\r\n SunburstView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n var self = this;\r\n this.seriesModel = seriesModel;\r\n this.api = api;\r\n this.ecModel = ecModel;\r\n var data = seriesModel.getData();\r\n var virtualRoot = data.tree.root;\r\n var newRoot = seriesModel.getViewRoot();\r\n var group = this.group;\r\n var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData');\r\n var newChildren = [];\r\n newRoot.eachNode(function (node) {\r\n newChildren.push(node);\r\n });\r\n var oldChildren = this._oldChildren || [];\r\n dualTravel(newChildren, oldChildren);\r\n renderRollUp(virtualRoot, newRoot);\r\n this._initEvents();\r\n this._oldChildren = newChildren;\r\n function dualTravel(newChildren, oldChildren) {\r\n if (newChildren.length === 0 && oldChildren.length === 0) {\r\n return;\r\n }\r\n new DataDiffer(oldChildren, newChildren, getKey, getKey)\r\n .add(processNode)\r\n .update(processNode)\r\n .remove(curry(processNode, null))\r\n .execute();\r\n function getKey(node) {\r\n return node.getId();\r\n }\r\n function processNode(newIdx, oldIdx) {\r\n var newNode = newIdx == null ? null : newChildren[newIdx];\r\n var oldNode = oldIdx == null ? null : oldChildren[oldIdx];\r\n doRenderNode(newNode, oldNode);\r\n }\r\n }\r\n function doRenderNode(newNode, oldNode) {\r\n if (!renderLabelForZeroData && newNode && !newNode.getValue()) {\r\n newNode = null;\r\n }\r\n if (newNode !== virtualRoot && oldNode !== virtualRoot) {\r\n if (oldNode && oldNode.piece) {\r\n if (newNode) {\r\n oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api);\r\n data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);\r\n }\r\n else {\r\n removeNode(oldNode);\r\n }\r\n }\r\n else if (newNode) {\r\n var piece = new SunburstPiece(newNode, seriesModel, ecModel, api);\r\n group.add(piece);\r\n data.setItemGraphicEl(newNode.dataIndex, piece);\r\n }\r\n }\r\n }\r\n function removeNode(node) {\r\n if (!node) {\r\n return;\r\n }\r\n if (node.piece) {\r\n group.remove(node.piece);\r\n node.piece = null;\r\n }\r\n }\r\n function renderRollUp(virtualRoot, viewRoot) {\r\n if (viewRoot.depth > 0) {\r\n if (self.virtualPiece) {\r\n self.virtualPiece.updateData(false, virtualRoot, seriesModel, ecModel, api);\r\n }\r\n else {\r\n self.virtualPiece = new SunburstPiece(virtualRoot, seriesModel, ecModel, api);\r\n group.add(self.virtualPiece);\r\n }\r\n viewRoot.piece.off('click');\r\n self.virtualPiece.on('click', function (e) {\r\n self._rootToNode(viewRoot.parentNode);\r\n });\r\n }\r\n else if (self.virtualPiece) {\r\n group.remove(self.virtualPiece);\r\n self.virtualPiece = null;\r\n }\r\n }\r\n };\r\n SunburstView.prototype._initEvents = function () {\r\n var _this = this;\r\n this.group.off('click');\r\n this.group.on('click', function (e) {\r\n var targetFound = false;\r\n var viewRoot = _this.seriesModel.getViewRoot();\r\n viewRoot.eachNode(function (node) {\r\n if (!targetFound\r\n && node.piece && node.piece === e.target) {\r\n var nodeClick = node.getModel().get('nodeClick');\r\n if (nodeClick === 'rootToNode') {\r\n _this._rootToNode(node);\r\n }\r\n else if (nodeClick === 'link') {\r\n var itemModel = node.getModel();\r\n var link = itemModel.get('link');\r\n if (link) {\r\n var linkTarget = itemModel.get('target', true)\r\n || '_blank';\r\n windowOpen(link, linkTarget);\r\n }\r\n }\r\n targetFound = true;\r\n }\r\n });\r\n });\r\n };\r\n SunburstView.prototype._rootToNode = function (node) {\r\n if (node !== this.seriesModel.getViewRoot()) {\r\n this.api.dispatchAction({\r\n type: ROOT_TO_NODE_ACTION,\r\n from: this.uid,\r\n seriesId: this.seriesModel.id,\r\n targetNode: node\r\n });\r\n }\r\n };\r\n SunburstView.prototype.containPoint = function (point, seriesModel) {\r\n var treeRoot = seriesModel.getData();\r\n var itemLayout = treeRoot.getItemLayout(0);\r\n if (itemLayout) {\r\n var dx = point[0] - itemLayout.cx;\r\n var dy = point[1] - itemLayout.cy;\r\n var radius = Math.sqrt(dx * dx + dy * dy);\r\n return radius <= itemLayout.r && radius >= itemLayout.r0;\r\n }\r\n };\r\n SunburstView.type = 'sunburst';\r\n return SunburstView;\r\n}(ChartView));\r\nChartView.registerClass(SunburstView);\n\nvar RADIAN$2 = Math.PI / 180;\r\nfunction sunburstLayout(seriesType, ecModel, api) {\r\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n var center = seriesModel.get('center');\r\n var radius = seriesModel.get('radius');\r\n if (!isArray(radius)) {\r\n radius = [0, radius];\r\n }\r\n if (!isArray(center)) {\r\n center = [center, center];\r\n }\r\n var width = api.getWidth();\r\n var height = api.getHeight();\r\n var size = Math.min(width, height);\r\n var cx = parsePercent$2(center[0], width);\r\n var cy = parsePercent$2(center[1], height);\r\n var r0 = parsePercent$2(radius[0], size / 2);\r\n var r = parsePercent$2(radius[1], size / 2);\r\n var startAngle = -seriesModel.get('startAngle') * RADIAN$2;\r\n var minAngle = seriesModel.get('minAngle') * RADIAN$2;\r\n var virtualRoot = seriesModel.getData().tree.root;\r\n var treeRoot = seriesModel.getViewRoot();\r\n var rootDepth = treeRoot.depth;\r\n var sort = seriesModel.get('sort');\r\n if (sort != null) {\r\n initChildren$1(treeRoot, sort);\r\n }\r\n var validDataCount = 0;\r\n each(treeRoot.children, function (child) {\r\n !isNaN(child.getValue()) && validDataCount++;\r\n });\r\n var sum = treeRoot.getValue();\r\n var unitRadian = Math.PI / (sum || validDataCount) * 2;\r\n var renderRollupNode = treeRoot.depth > 0;\r\n var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\r\n var rPerLevel = (r - r0) / (levels || 1);\r\n var clockwise = seriesModel.get('clockwise');\r\n var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\r\n var dir = clockwise ? 1 : -1;\r\n var renderNode = function (node, startAngle) {\r\n if (!node) {\r\n return;\r\n }\r\n var endAngle = startAngle;\r\n if (node !== virtualRoot) {\r\n var value = node.getValue();\r\n var angle = (sum === 0 && stillShowZeroSum)\r\n ? unitRadian : (value * unitRadian);\r\n if (angle < minAngle) {\r\n angle = minAngle;\r\n }\r\n endAngle = startAngle + dir * angle;\r\n var depth = node.depth - rootDepth\r\n - (renderRollupNode ? -1 : 1);\r\n var rStart = r0 + rPerLevel * depth;\r\n var rEnd = r0 + rPerLevel * (depth + 1);\r\n var itemModel = node.getModel();\r\n if (itemModel.get('r0') != null) {\r\n rStart = parsePercent$2(itemModel.get('r0'), size / 2);\r\n }\r\n if (itemModel.get('r') != null) {\r\n rEnd = parsePercent$2(itemModel.get('r'), size / 2);\r\n }\r\n node.setLayout({\r\n angle: angle,\r\n startAngle: startAngle,\r\n endAngle: endAngle,\r\n clockwise: clockwise,\r\n cx: cx,\r\n cy: cy,\r\n r0: rStart,\r\n r: rEnd\r\n });\r\n }\r\n if (node.children && node.children.length) {\r\n var siblingAngle_1 = 0;\r\n each(node.children, function (node) {\r\n siblingAngle_1 += renderNode(node, startAngle + siblingAngle_1);\r\n });\r\n }\r\n return endAngle - startAngle;\r\n };\r\n if (renderRollupNode) {\r\n var rStart = r0;\r\n var rEnd = r0 + rPerLevel;\r\n var angle = Math.PI * 2;\r\n virtualRoot.setLayout({\r\n angle: angle,\r\n startAngle: startAngle,\r\n endAngle: startAngle + angle,\r\n clockwise: clockwise,\r\n cx: cx,\r\n cy: cy,\r\n r0: rStart,\r\n r: rEnd\r\n });\r\n }\r\n renderNode(treeRoot, startAngle);\r\n });\r\n}\r\nfunction initChildren$1(node, sortOrder) {\r\n var children = node.children || [];\r\n node.children = sort$2(children, sortOrder);\r\n if (children.length) {\r\n each(node.children, function (child) {\r\n initChildren$1(child, sortOrder);\r\n });\r\n }\r\n}\r\nfunction sort$2(children, sortOrder) {\r\n if (typeof sortOrder === 'function') {\r\n var sortTargets = map(children, function (child, idx) {\r\n var value = child.getValue();\r\n return {\r\n params: {\r\n depth: child.depth,\r\n height: child.height,\r\n dataIndex: child.dataIndex,\r\n getValue: function () { return value; }\r\n },\r\n index: idx\r\n };\r\n });\r\n sortTargets.sort(function (a, b) {\r\n return sortOrder(a.params, b.params);\r\n });\r\n return map(sortTargets, function (target) {\r\n return children[target.index];\r\n });\r\n }\r\n else {\r\n var isAsc_1 = sortOrder === 'asc';\r\n return children.sort(function (a, b) {\r\n var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1);\r\n return diff === 0\r\n ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1)\r\n : diff;\r\n });\r\n }\r\n}\n\nfunction sunburstVisual(ecModel) {\r\n var paletteScope = {};\r\n function pickColor(node, seriesModel, treeHeight) {\r\n var current = node;\r\n while (current && current.depth > 1) {\r\n current = current.parentNode;\r\n }\r\n var color = seriesModel.getColorFromPalette((current.name || current.dataIndex + ''), paletteScope);\r\n if (node.depth > 1 && typeof color === 'string') {\r\n color = lift(color, (node.depth - 1) / (treeHeight - 1) * 0.5);\r\n }\r\n return color;\r\n }\r\n ecModel.eachSeriesByType('sunburst', function (seriesModel) {\r\n var data = seriesModel.getData();\r\n var tree = data.tree;\r\n tree.eachNode(function (node) {\r\n var model = node.getModel();\r\n var style = model.getModel('itemStyle').getItemStyle();\r\n if (!style.fill) {\r\n style.fill = pickColor(node, seriesModel, tree.root.height);\r\n }\r\n var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, 'style');\r\n extend(existsStyle, style);\r\n });\r\n });\r\n}\n\nregisterLayout(curry(sunburstLayout, 'sunburst'));\r\nregisterProcessor(curry(dataFilter, 'sunburst'));\r\nregisterVisual(sunburstVisual);\n\nfunction dataToCoordSize(dataSize, dataItem) {\r\n dataItem = dataItem || [0, 0];\r\n return map(['x', 'y'], function (dim, dimIdx) {\r\n var axis = this.getAxis(dim);\r\n var val = dataItem[dimIdx];\r\n var halfSize = dataSize[dimIdx] / 2;\r\n return axis.type === 'category'\r\n ? axis.getBandWidth()\r\n : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\r\n }, this);\r\n}\r\nfunction cartesianPrepareCustom(coordSys) {\r\n var rect = coordSys.master.getRect();\r\n return {\r\n coordSys: {\r\n type: 'cartesian2d',\r\n x: rect.x,\r\n y: rect.y,\r\n width: rect.width,\r\n height: rect.height\r\n },\r\n api: {\r\n coord: function (data) {\r\n return coordSys.dataToPoint(data);\r\n },\r\n size: bind(dataToCoordSize, coordSys)\r\n }\r\n };\r\n}\n\nfunction dataToCoordSize$1(dataSize, dataItem) {\r\n dataItem = dataItem || [0, 0];\r\n return map([0, 1], function (dimIdx) {\r\n var val = dataItem[dimIdx];\r\n var halfSize = dataSize[dimIdx] / 2;\r\n var p1 = [];\r\n var p2 = [];\r\n p1[dimIdx] = val - halfSize;\r\n p2[dimIdx] = val + halfSize;\r\n p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];\r\n return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);\r\n }, this);\r\n}\r\nfunction geoPrepareCustom(coordSys) {\r\n var rect = coordSys.getBoundingRect();\r\n return {\r\n coordSys: {\r\n type: 'geo',\r\n x: rect.x,\r\n y: rect.y,\r\n width: rect.width,\r\n height: rect.height,\r\n zoom: coordSys.getZoom()\r\n },\r\n api: {\r\n coord: function (data) {\r\n return coordSys.dataToPoint(data);\r\n },\r\n size: bind(dataToCoordSize$1, coordSys)\r\n }\r\n };\r\n}\n\nfunction dataToCoordSize$2(dataSize, dataItem) {\r\n var axis = this.getAxis();\r\n var val = dataItem instanceof Array ? dataItem[0] : dataItem;\r\n var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;\r\n return axis.type === 'category'\r\n ? axis.getBandWidth()\r\n : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\r\n}\r\nfunction singlePrepareCustom(coordSys) {\r\n var rect = coordSys.getRect();\r\n return {\r\n coordSys: {\r\n type: 'singleAxis',\r\n x: rect.x,\r\n y: rect.y,\r\n width: rect.width,\r\n height: rect.height\r\n },\r\n api: {\r\n coord: function (val) {\r\n return coordSys.dataToPoint(val);\r\n },\r\n size: bind(dataToCoordSize$2, coordSys)\r\n }\r\n };\r\n}\n\nfunction dataToCoordSize$3(dataSize, dataItem) {\r\n dataItem = dataItem || [0, 0];\r\n return map(['Radius', 'Angle'], function (dim, dimIdx) {\r\n var getterName = 'get' + dim + 'Axis';\r\n var axis = this[getterName]();\r\n var val = dataItem[dimIdx];\r\n var halfSize = dataSize[dimIdx] / 2;\r\n var result = axis.type === 'category'\r\n ? axis.getBandWidth()\r\n : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\r\n if (dim === 'Angle') {\r\n result = result * Math.PI / 180;\r\n }\r\n return result;\r\n }, this);\r\n}\r\nfunction polarPrepareCustom(coordSys) {\r\n var radiusAxis = coordSys.getRadiusAxis();\r\n var angleAxis = coordSys.getAngleAxis();\r\n var radius = radiusAxis.getExtent();\r\n radius[0] > radius[1] && radius.reverse();\r\n return {\r\n coordSys: {\r\n type: 'polar',\r\n cx: coordSys.cx,\r\n cy: coordSys.cy,\r\n r: radius[1],\r\n r0: radius[0]\r\n },\r\n api: {\r\n coord: function (data) {\r\n var radius = radiusAxis.dataToRadius(data[0]);\r\n var angle = angleAxis.dataToAngle(data[1]);\r\n var coord = coordSys.coordToPoint([radius, angle]);\r\n coord.push(radius, angle * Math.PI / 180);\r\n return coord;\r\n },\r\n size: bind(dataToCoordSize$3, coordSys)\r\n }\r\n };\r\n}\n\nfunction calendarPrepareCustom(coordSys) {\r\n var rect = coordSys.getRect();\r\n var rangeInfo = coordSys.getRangeInfo();\r\n return {\r\n coordSys: {\r\n type: 'calendar',\r\n x: rect.x,\r\n y: rect.y,\r\n width: rect.width,\r\n height: rect.height,\r\n cellWidth: coordSys.getCellWidth(),\r\n cellHeight: coordSys.getCellHeight(),\r\n rangeInfo: {\r\n start: rangeInfo.start,\r\n end: rangeInfo.end,\r\n weeks: rangeInfo.weeks,\r\n dayCount: rangeInfo.allDay\r\n }\r\n },\r\n api: {\r\n coord: function (data, clamp) {\r\n return coordSys.dataToPoint(data, clamp);\r\n }\r\n }\r\n };\r\n}\n\nvar deprecatedLogs = {};\r\nfunction isEC4CompatibleStyle(style, elType, hasOwnTextContentOption, hasOwnTextConfig) {\r\n return style && (style.legacy\r\n || (style.legacy !== false\r\n && !hasOwnTextContentOption\r\n && !hasOwnTextConfig\r\n && elType !== 'tspan'\r\n && (elType === 'text' || hasOwn(style, 'text'))));\r\n}\r\nfunction convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) {\r\n var srcStyle = hostStyle;\r\n var textConfig;\r\n var textContent;\r\n var textContentStyle;\r\n if (elType === 'text') {\r\n textContentStyle = srcStyle;\r\n }\r\n else {\r\n textContentStyle = {};\r\n hasOwn(srcStyle, 'text') && (textContentStyle.text = srcStyle.text);\r\n hasOwn(srcStyle, 'rich') && (textContentStyle.rich = srcStyle.rich);\r\n hasOwn(srcStyle, 'textFill') && (textContentStyle.fill = srcStyle.textFill);\r\n hasOwn(srcStyle, 'textStroke') && (textContentStyle.stroke = srcStyle.textStroke);\r\n textContent = {\r\n type: 'text',\r\n style: textContentStyle,\r\n silent: true\r\n };\r\n textConfig = {};\r\n var hasOwnPos = hasOwn(srcStyle, 'textPosition');\r\n if (isNormal) {\r\n textConfig.position = hasOwnPos ? srcStyle.textPosition : 'inside';\r\n }\r\n else {\r\n hasOwnPos && (textConfig.position = srcStyle.textPosition);\r\n }\r\n hasOwn(srcStyle, 'textPosition') && (textConfig.position = srcStyle.textPosition);\r\n hasOwn(srcStyle, 'textOffset') && (textConfig.offset = srcStyle.textOffset);\r\n hasOwn(srcStyle, 'textRotation') && (textConfig.rotation = srcStyle.textRotation);\r\n hasOwn(srcStyle, 'textDistance') && (textConfig.distance = srcStyle.textDistance);\r\n }\r\n convertEC4CompatibleRichItem(textContentStyle, hostStyle);\r\n each(textContentStyle.rich, function (richItem) {\r\n convertEC4CompatibleRichItem(richItem, richItem);\r\n });\r\n return {\r\n textConfig: textConfig,\r\n textContent: textContent\r\n };\r\n}\r\nfunction convertEC4CompatibleRichItem(out, richItem) {\r\n if (!richItem) {\r\n return;\r\n }\r\n richItem.font = richItem.textFont || richItem.font;\r\n hasOwn(richItem, 'textStrokeWidth') && (out.lineWidth = richItem.textStrokeWidth);\r\n hasOwn(richItem, 'textAlign') && (out.align = richItem.textAlign);\r\n hasOwn(richItem, 'textVerticalAlign') && (out.verticalAlign = richItem.textVerticalAlign);\r\n hasOwn(richItem, 'textLineHeight') && (out.lineHeight = richItem.textLineHeight);\r\n hasOwn(richItem, 'textWidth') && (out.width = richItem.textWidth);\r\n hasOwn(richItem, 'textHeight') && (out.height = richItem.textHeight);\r\n hasOwn(richItem, 'textBackgroundColor') && (out.backgroundColor = richItem.textBackgroundColor);\r\n hasOwn(richItem, 'textPadding') && (out.padding = richItem.textPadding);\r\n hasOwn(richItem, 'textBorderColor') && (out.borderColor = richItem.textBorderColor);\r\n hasOwn(richItem, 'textBorderWidth') && (out.borderWidth = richItem.textBorderWidth);\r\n hasOwn(richItem, 'textBorderRadius') && (out.borderRadius = richItem.textBorderRadius);\r\n hasOwn(richItem, 'textBoxShadowColor') && (out.shadowColor = richItem.textBoxShadowColor);\r\n hasOwn(richItem, 'textBoxShadowBlur') && (out.shadowBlur = richItem.textBoxShadowBlur);\r\n hasOwn(richItem, 'textBoxShadowOffsetX') && (out.shadowOffsetX = richItem.textBoxShadowOffsetX);\r\n hasOwn(richItem, 'textBoxShadowOffsetY') && (out.shadowOffsetY = richItem.textBoxShadowOffsetY);\r\n}\r\nfunction convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) {\r\n var out = itemStl;\r\n out.textPosition = out.textPosition || txCfg.position || 'inside';\r\n txCfg.offset != null && (out.textOffset = txCfg.offset);\r\n txCfg.rotation != null && (out.textRotation = txCfg.rotation);\r\n txCfg.distance != null && (out.textDistance = txCfg.distance);\r\n var isInside = out.textPosition.indexOf('inside') >= 0;\r\n var hostFill = itemStl.fill || '#000';\r\n convertToEC4RichItem(out, txStl);\r\n var textFillNotSet = out.textFill == null;\r\n if (isInside) {\r\n if (textFillNotSet) {\r\n out.textFill = txCfg.insideFill || '#fff';\r\n !out.textStroke && txCfg.insideStroke && (out.textStroke = txCfg.insideStroke);\r\n !out.textStroke && (out.textStroke = hostFill);\r\n out.textStrokeWidth == null && (out.textStrokeWidth = 2);\r\n }\r\n }\r\n else {\r\n if (textFillNotSet) {\r\n out.textFill = txCfg.outsideFill || hostFill;\r\n }\r\n !out.textStroke && txCfg.outsideStroke && (out.textStroke = txCfg.outsideStroke);\r\n }\r\n out.text = txStl.text;\r\n out.rich = txStl.rich;\r\n each(txStl.rich, function (richItem) {\r\n convertToEC4RichItem(richItem, richItem);\r\n });\r\n return out;\r\n}\r\nfunction convertToEC4RichItem(out, richItem) {\r\n if (!richItem) {\r\n return;\r\n }\r\n hasOwn(richItem, 'fill') && (out.textFill = richItem.fill);\r\n hasOwn(richItem, 'stroke') && (out.textStroke = richItem.fill);\r\n hasOwn(richItem, 'lineWidth') && (out.textStrokeWidth = richItem.lineWidth);\r\n hasOwn(richItem, 'font') && (out.font = richItem.font);\r\n hasOwn(richItem, 'fontStyle') && (out.fontStyle = richItem.fontStyle);\r\n hasOwn(richItem, 'fontWeight') && (out.fontWeight = richItem.fontWeight);\r\n hasOwn(richItem, 'fontSize') && (out.fontSize = richItem.fontSize);\r\n hasOwn(richItem, 'fontFamily') && (out.fontFamily = richItem.fontFamily);\r\n hasOwn(richItem, 'align') && (out.textAlign = richItem.align);\r\n hasOwn(richItem, 'verticalAlign') && (out.textVerticalAlign = richItem.verticalAlign);\r\n hasOwn(richItem, 'lineHeight') && (out.textLineHeight = richItem.lineHeight);\r\n hasOwn(richItem, 'width') && (out.textWidth = richItem.width);\r\n hasOwn(richItem, 'height') && (out.textHeight = richItem.height);\r\n hasOwn(richItem, 'backgroundColor') && (out.textBackgroundColor = richItem.backgroundColor);\r\n hasOwn(richItem, 'padding') && (out.textPadding = richItem.padding);\r\n hasOwn(richItem, 'borderColor') && (out.textBorderColor = richItem.borderColor);\r\n hasOwn(richItem, 'borderWidth') && (out.textBorderWidth = richItem.borderWidth);\r\n hasOwn(richItem, 'borderRadius') && (out.textBorderRadius = richItem.borderRadius);\r\n hasOwn(richItem, 'shadowColor') && (out.textBoxShadowColor = richItem.shadowColor);\r\n hasOwn(richItem, 'shadowBlur') && (out.textBoxShadowBlur = richItem.shadowBlur);\r\n hasOwn(richItem, 'shadowOffsetX') && (out.textBoxShadowOffsetX = richItem.shadowOffsetX);\r\n hasOwn(richItem, 'shadowOffsetY') && (out.textBoxShadowOffsetY = richItem.shadowOffsetY);\r\n hasOwn(richItem, 'textShadowColor') && (out.textShadowColor = richItem.textShadowColor);\r\n hasOwn(richItem, 'textShadowBlur') && (out.textShadowBlur = richItem.textShadowBlur);\r\n hasOwn(richItem, 'textShadowOffsetX') && (out.textShadowOffsetX = richItem.textShadowOffsetX);\r\n hasOwn(richItem, 'textShadowOffsetY') && (out.textShadowOffsetY = richItem.textShadowOffsetY);\r\n}\r\nfunction warnDeprecated(deprecated, insteadApproach) {\r\n if (__DEV__) {\r\n var key = deprecated + '^_^' + insteadApproach;\r\n if (!deprecatedLogs[key]) {\r\n console.warn(\"[ECharts] DEPRECATED: \\\"\" + deprecated + \"\\\" has been deprecated. \" + insteadApproach);\r\n deprecatedLogs[key] = true;\r\n }\r\n }\r\n}\n\nvar inner$e = makeInner();\r\nvar TRANSFORM_PROPS = {\r\n x: 1,\r\n y: 1,\r\n scaleX: 1,\r\n scaleY: 1,\r\n originX: 1,\r\n originY: 1,\r\n rotation: 1\r\n};\r\nvar transformPropNamesStr = keys(TRANSFORM_PROPS).join(', ');\r\nvar STYLE_VISUAL_TYPE = {\r\n color: 'fill',\r\n borderColor: 'stroke'\r\n};\r\nvar NON_STYLE_VISUAL_PROPS = {\r\n symbol: 1,\r\n symbolSize: 1,\r\n symbolKeepAspect: 1,\r\n legendSymbol: 1,\r\n visualMeta: 1,\r\n liftZ: 1,\r\n decal: 1\r\n};\r\nvar EMPHASIS = 'emphasis';\r\nvar NORMAL = 'normal';\r\nvar BLUR = 'blur';\r\nvar SELECT = 'select';\r\nvar STATES = [NORMAL, EMPHASIS, BLUR, SELECT];\r\nvar PATH_ITEM_STYLE = {\r\n normal: ['itemStyle'],\r\n emphasis: [EMPHASIS, 'itemStyle'],\r\n blur: [BLUR, 'itemStyle'],\r\n select: [SELECT, 'itemStyle']\r\n};\r\nvar PATH_LABEL = {\r\n normal: ['label'],\r\n emphasis: [EMPHASIS, 'label'],\r\n blur: [BLUR, 'label'],\r\n select: [SELECT, 'label']\r\n};\r\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\r\nvar attachedTxInfoTmp = {\r\n normal: {},\r\n emphasis: {},\r\n blur: {},\r\n select: {}\r\n};\r\nvar LEGACY_TRANSFORM_PROPS = {\r\n position: ['x', 'y'],\r\n scale: ['scaleX', 'scaleY'],\r\n origin: ['originX', 'originY']\r\n};\r\nvar tmpTransformable = new Transformable();\r\nvar prepareCustoms = {\r\n cartesian2d: cartesianPrepareCustom,\r\n geo: geoPrepareCustom,\r\n singleAxis: singlePrepareCustom,\r\n polar: polarPrepareCustom,\r\n calendar: calendarPrepareCustom\r\n};\r\nvar CustomSeriesModel = (function (_super) {\r\n __extends(CustomSeriesModel, _super);\r\n function CustomSeriesModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CustomSeriesModel.type;\r\n return _this;\r\n }\r\n CustomSeriesModel.prototype.optionUpdated = function () {\r\n this.currentZLevel = this.get('zlevel', true);\r\n this.currentZ = this.get('z', true);\r\n };\r\n CustomSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n return createListFromArray(this.getSource(), this);\r\n };\r\n CustomSeriesModel.prototype.getDataParams = function (dataIndex, dataType, el) {\r\n var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);\r\n el && (params.info = inner$e(el).info);\r\n return params;\r\n };\r\n CustomSeriesModel.type = 'series.custom';\r\n CustomSeriesModel.dependencies = ['grid', 'polar', 'geo', 'singleAxis', 'calendar'];\r\n CustomSeriesModel.defaultOption = {\r\n coordinateSystem: 'cartesian2d',\r\n zlevel: 0,\r\n z: 2,\r\n legendHoverLink: true,\r\n clip: false\r\n };\r\n return CustomSeriesModel;\r\n}(SeriesModel));\r\nComponentModel.registerClass(CustomSeriesModel);\r\nvar CustomSeriesView = (function (_super) {\r\n __extends(CustomSeriesView, _super);\r\n function CustomSeriesView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CustomSeriesView.type;\r\n return _this;\r\n }\r\n CustomSeriesView.prototype.render = function (customSeries, ecModel, api, payload) {\r\n var oldData = this._data;\r\n var data = customSeries.getData();\r\n var group = this.group;\r\n var renderItem = makeRenderItem(customSeries, data, ecModel, api);\r\n var transOpt = customSeries.__transientTransitionOpt;\r\n if (transOpt && (transOpt.from == null || transOpt.to == null)) {\r\n oldData && oldData.each(function (oldIdx) {\r\n doRemoveEl(oldData.getItemGraphicEl(oldIdx), customSeries, group);\r\n });\r\n data.each(function (newIdx) {\r\n createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data, null);\r\n });\r\n }\r\n else {\r\n var morphPreparation_1 = new MorphPreparation(customSeries, transOpt);\r\n var diffMode = transOpt ? 'multiple' : 'oneToOne';\r\n (new DataDiffer(oldData ? oldData.getIndices() : [], data.getIndices(), createGetKey(oldData, diffMode, transOpt && transOpt.from), createGetKey(data, diffMode, transOpt && transOpt.to), null, diffMode))\r\n .add(function (newIdx) {\r\n createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data, null);\r\n })\r\n .remove(function (oldIdx) {\r\n doRemoveEl(oldData.getItemGraphicEl(oldIdx), customSeries, group);\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n morphPreparation_1.reset('oneToOne');\r\n var oldEl = oldData.getItemGraphicEl(oldIdx);\r\n morphPreparation_1.findAndAddFrom(oldEl);\r\n if (morphPreparation_1.hasFrom()) {\r\n removeElementDirectly(oldEl, group);\r\n oldEl = null;\r\n }\r\n createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data, morphPreparation_1);\r\n morphPreparation_1.applyMorphing();\r\n })\r\n .updateManyToOne(function (newIdx, oldIndices) {\r\n morphPreparation_1.reset('manyToOne');\r\n for (var i = 0; i < oldIndices.length; i++) {\r\n var oldEl = oldData.getItemGraphicEl(oldIndices[i]);\r\n morphPreparation_1.findAndAddFrom(oldEl);\r\n removeElementDirectly(oldEl, group);\r\n }\r\n createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data, morphPreparation_1);\r\n morphPreparation_1.applyMorphing();\r\n })\r\n .updateOneToMany(function (newIndices, oldIdx) {\r\n morphPreparation_1.reset('oneToMany');\r\n var newLen = newIndices.length;\r\n var oldEl = oldData.getItemGraphicEl(oldIdx);\r\n morphPreparation_1.findAndAddFrom(oldEl);\r\n removeElementDirectly(oldEl, group);\r\n for (var i = 0; i < newLen; i++) {\r\n createOrUpdateItem(api, null, newIndices[i], renderItem(newIndices[i], payload), customSeries, group, data, morphPreparation_1);\r\n }\r\n morphPreparation_1.applyMorphing();\r\n })\r\n .execute();\r\n }\r\n var clipPath = customSeries.get('clip', true)\r\n ? createClipPath(customSeries.coordinateSystem, false, customSeries)\r\n : null;\r\n if (clipPath) {\r\n group.setClipPath(clipPath);\r\n }\r\n else {\r\n group.removeClipPath();\r\n }\r\n this._data = data;\r\n };\r\n CustomSeriesView.prototype.incrementalPrepareRender = function (customSeries, ecModel, api) {\r\n this.group.removeAll();\r\n this._data = null;\r\n };\r\n CustomSeriesView.prototype.incrementalRender = function (params, customSeries, ecModel, api, payload) {\r\n var data = customSeries.getData();\r\n var renderItem = makeRenderItem(customSeries, data, ecModel, api);\r\n function setIncrementalAndHoverLayer(el) {\r\n if (!el.isGroup) {\r\n el.incremental = true;\r\n el.ensureState('emphasis').hoverLayer = true;\r\n }\r\n }\r\n for (var idx = params.start; idx < params.end; idx++) {\r\n var el = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data, null);\r\n el.traverse(setIncrementalAndHoverLayer);\r\n }\r\n };\r\n CustomSeriesView.prototype.filterForExposedEvent = function (eventType, query, targetEl, packedEvent) {\r\n var elementName = query.element;\r\n if (elementName == null || targetEl.name === elementName) {\r\n return true;\r\n }\r\n while ((targetEl = (targetEl.__hostTarget || targetEl.parent)) && targetEl !== this.group) {\r\n if (targetEl.name === elementName) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n CustomSeriesView.type = 'custom';\r\n return CustomSeriesView;\r\n}(ChartView));\r\nChartView.registerClass(CustomSeriesView);\r\nfunction createGetKey(data, diffMode, dimension) {\r\n if (!data) {\r\n return;\r\n }\r\n if (diffMode === 'oneToOne') {\r\n return function (rawIdx, dataIndex) {\r\n return data.getId(dataIndex);\r\n };\r\n }\r\n var diffByDimName = data.getDimension(dimension);\r\n var dimInfo = data.getDimensionInfo(diffByDimName);\r\n if (!dimInfo) {\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = dimension + \" is not a valid dimension.\";\r\n }\r\n throwError(errMsg);\r\n }\r\n var ordinalMeta = dimInfo.ordinalMeta;\r\n return function (rawIdx, dataIndex) {\r\n var key = data.get(diffByDimName, dataIndex);\r\n if (ordinalMeta) {\r\n key = ordinalMeta.categories[key];\r\n }\r\n return (key == null || eqNaN(key))\r\n ? rawIdx + ''\r\n : '_ec_' + key;\r\n };\r\n}\r\nfunction createEl(elOption) {\r\n var graphicType = elOption.type;\r\n var el;\r\n if (graphicType === 'path') {\r\n var shape = elOption.shape;\r\n var pathRect = (shape.width != null && shape.height != null)\r\n ? {\r\n x: shape.x || 0,\r\n y: shape.y || 0,\r\n width: shape.width,\r\n height: shape.height\r\n }\r\n : null;\r\n var pathData = getPathData(shape);\r\n el = makePath(pathData, null, pathRect, shape.layout || 'center');\r\n inner$e(el).customPathData = pathData;\r\n }\r\n else if (graphicType === 'image') {\r\n el = new ZRImage({});\r\n inner$e(el).customImagePath = elOption.style.image;\r\n }\r\n else if (graphicType === 'text') {\r\n el = new ZRText({});\r\n }\r\n else if (graphicType === 'group') {\r\n el = new Group();\r\n }\r\n else if (graphicType === 'compoundPath') {\r\n throw new Error('\"compoundPath\" is not supported yet.');\r\n }\r\n else {\r\n var Clz = getShapeClass(graphicType);\r\n if (!Clz) {\r\n var errMsg = '';\r\n if (__DEV__) {\r\n errMsg = 'graphic type \"' + graphicType + '\" can not be found.';\r\n }\r\n throwError(errMsg);\r\n }\r\n el = new Clz();\r\n }\r\n inner$e(el).customGraphicType = graphicType;\r\n el.name = elOption.name;\r\n el.z2EmphasisLift = 1;\r\n el.z2SelectLift = 1;\r\n return el;\r\n}\r\nfunction updateElNormal(api, el, isMorphTo, dataIndex, elOption, styleOpt, attachedTxInfo, seriesModel, isInit, isTextContent) {\r\n var transFromProps = {};\r\n var allPropsFinal = {};\r\n var elDisplayable = el.isGroup ? null : el;\r\n !isMorphTo && prepareShapeOrExtraTransitionFrom('shape', el, null, elOption, transFromProps, isInit);\r\n prepareShapeOrExtraAllPropsFinal('shape', elOption, allPropsFinal);\r\n !isMorphTo && prepareShapeOrExtraTransitionFrom('extra', el, null, elOption, transFromProps, isInit);\r\n prepareShapeOrExtraAllPropsFinal('extra', elOption, allPropsFinal);\r\n !isMorphTo && prepareTransformTransitionFrom(el, null, elOption, transFromProps, isInit);\r\n prepareTransformAllPropsFinal(elOption, allPropsFinal);\r\n var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg;\r\n if (txCfgOpt) {\r\n el.setTextConfig(txCfgOpt);\r\n }\r\n if (el.type === 'text' && styleOpt) {\r\n var textOptionStyle = styleOpt;\r\n hasOwn(textOptionStyle, 'textFill') && (textOptionStyle.fill = textOptionStyle.textFill);\r\n hasOwn(textOptionStyle, 'textStroke') && (textOptionStyle.stroke = textOptionStyle.textStroke);\r\n }\r\n if (styleOpt) {\r\n var decalPattern = void 0;\r\n var decalObj = isPath$1(el) ? styleOpt.decal : null;\r\n if (api && decalObj) {\r\n decalObj.dirty = true;\r\n decalPattern = createOrUpdatePatternFromDecal(decalObj, api);\r\n }\r\n styleOpt.__decalPattern = decalPattern;\r\n }\r\n !isMorphTo && prepareStyleTransitionFrom(el, null, elOption, styleOpt, transFromProps, isInit);\r\n if (elDisplayable) {\r\n hasOwn(elOption, 'invisible') && (elDisplayable.invisible = elOption.invisible);\r\n }\r\n if (!isMorphTo) {\r\n applyPropsFinal(el, allPropsFinal, styleOpt);\r\n applyTransitionFrom(el, dataIndex, elOption, seriesModel, transFromProps, isInit);\r\n }\r\n hasOwn(elOption, 'silent') && (el.silent = elOption.silent);\r\n hasOwn(elOption, 'ignore') && (el.ignore = elOption.ignore);\r\n if (!isTextContent) {\r\n hasOwn(elOption, 'info') && (inner$e(el).info = elOption.info);\r\n }\r\n styleOpt ? el.dirty() : el.markRedraw();\r\n return isMorphTo ? allPropsFinal : null;\r\n}\r\nfunction applyPropsFinal(el, allPropsFinal, styleOpt) {\r\n var elDisplayable = el.isGroup ? null : el;\r\n if (elDisplayable && styleOpt) {\r\n var decalPattern = styleOpt.__decalPattern;\r\n var originalDecalObj = void 0;\r\n if (decalPattern) {\r\n originalDecalObj = styleOpt.decal;\r\n styleOpt.decal = decalPattern;\r\n }\r\n elDisplayable.useStyle(styleOpt);\r\n if (decalPattern) {\r\n styleOpt.decal = originalDecalObj;\r\n }\r\n var animators = elDisplayable.animators;\r\n for (var i = 0; i < animators.length; i++) {\r\n var animator = animators[i];\r\n if (animator.targetName === 'style') {\r\n animator.changeTarget(elDisplayable.style);\r\n }\r\n }\r\n }\r\n allPropsFinal && el.attr(allPropsFinal);\r\n}\r\nfunction applyTransitionFrom(el, dataIndex, elOption, seriesModel, transFromProps, isInit) {\r\n if (transFromProps) {\r\n var userDuring = elOption.during;\r\n inner$e(el).userDuring = userDuring;\r\n var cfgDuringCall = userDuring ? bind(duringCall, { el: el, userDuring: userDuring }) : null;\r\n var cfg = {\r\n dataIndex: dataIndex,\r\n isFrom: true,\r\n during: cfgDuringCall\r\n };\r\n isInit\r\n ? initProps(el, transFromProps, seriesModel, cfg)\r\n : updateProps(el, transFromProps, seriesModel, cfg);\r\n }\r\n}\r\nfunction prepareShapeOrExtraTransitionFrom(mainAttr, el, morphFromEl, elOption, transFromProps, isInit) {\r\n var attrOpt = elOption[mainAttr];\r\n if (!attrOpt) {\r\n return;\r\n }\r\n var elPropsInAttr = el[mainAttr];\r\n var transFromPropsInAttr;\r\n var enterFrom = attrOpt.enterFrom;\r\n if (isInit && enterFrom) {\r\n !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});\r\n var enterFromKeys = keys(enterFrom);\r\n for (var i = 0; i < enterFromKeys.length; i++) {\r\n var key = enterFromKeys[i];\r\n transFromPropsInAttr[key] = enterFrom[key];\r\n }\r\n }\r\n if (!isInit\r\n && elPropsInAttr\r\n && !(morphFromEl != null && mainAttr === 'shape')) {\r\n if (attrOpt.transition) {\r\n !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});\r\n var transitionKeys = normalizeToArray(attrOpt.transition);\r\n for (var i = 0; i < transitionKeys.length; i++) {\r\n var key = transitionKeys[i];\r\n var elVal = elPropsInAttr[key];\r\n if (__DEV__) {\r\n checkNonStyleTansitionRefer(key, attrOpt[key], elVal);\r\n }\r\n transFromPropsInAttr[key] = elVal;\r\n }\r\n }\r\n else if (indexOf(elOption.transition, mainAttr) >= 0) {\r\n !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});\r\n var elPropsInAttrKeys = keys(elPropsInAttr);\r\n for (var i = 0; i < elPropsInAttrKeys.length; i++) {\r\n var key = elPropsInAttrKeys[i];\r\n var elVal = elPropsInAttr[key];\r\n if (isNonStyleTransitionEnabled(attrOpt[key], elVal)) {\r\n transFromPropsInAttr[key] = elVal;\r\n }\r\n }\r\n }\r\n }\r\n var leaveTo = attrOpt.leaveTo;\r\n if (leaveTo) {\r\n var leaveToProps = getOrCreateLeaveToPropsFromEl(el);\r\n var leaveToPropsInAttr = leaveToProps[mainAttr] || (leaveToProps[mainAttr] = {});\r\n var leaveToKeys = keys(leaveTo);\r\n for (var i = 0; i < leaveToKeys.length; i++) {\r\n var key = leaveToKeys[i];\r\n leaveToPropsInAttr[key] = leaveTo[key];\r\n }\r\n }\r\n}\r\nfunction prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) {\r\n var attrOpt = elOption[mainAttr];\r\n if (!attrOpt) {\r\n return;\r\n }\r\n var allPropsInAttr = allProps[mainAttr] = {};\r\n var keysInAttr = keys(attrOpt);\r\n for (var i = 0; i < keysInAttr.length; i++) {\r\n var key = keysInAttr[i];\r\n allPropsInAttr[key] = cloneValue(attrOpt[key]);\r\n }\r\n}\r\nfunction prepareTransformTransitionFrom(el, morphFromEl, elOption, transFromProps, isInit) {\r\n var enterFrom = elOption.enterFrom;\r\n if (isInit && enterFrom) {\r\n var enterFromKeys = keys(enterFrom);\r\n for (var i = 0; i < enterFromKeys.length; i++) {\r\n var key = enterFromKeys[i];\r\n if (__DEV__) {\r\n checkTransformPropRefer(key, 'el.enterFrom');\r\n }\r\n transFromProps[key] = enterFrom[key];\r\n }\r\n }\r\n if (!isInit) {\r\n if (morphFromEl) {\r\n var fromTransformable = calcOldElLocalTransformBasedOnNewElParent(morphFromEl, el);\r\n setTransformPropToTransitionFrom(transFromProps, 'x', fromTransformable);\r\n setTransformPropToTransitionFrom(transFromProps, 'y', fromTransformable);\r\n setTransformPropToTransitionFrom(transFromProps, 'scaleX', fromTransformable);\r\n setTransformPropToTransitionFrom(transFromProps, 'scaleY', fromTransformable);\r\n setTransformPropToTransitionFrom(transFromProps, 'originX', fromTransformable);\r\n setTransformPropToTransitionFrom(transFromProps, 'originY', fromTransformable);\r\n setTransformPropToTransitionFrom(transFromProps, 'rotation', fromTransformable);\r\n }\r\n else if (elOption.transition) {\r\n var transitionKeys = normalizeToArray(elOption.transition);\r\n for (var i = 0; i < transitionKeys.length; i++) {\r\n var key = transitionKeys[i];\r\n if (key === 'style' || key === 'shape' || key === 'extra') {\r\n continue;\r\n }\r\n var elVal = el[key];\r\n if (__DEV__) {\r\n checkTransformPropRefer(key, 'el.transition');\r\n checkNonStyleTansitionRefer(key, elOption[key], elVal);\r\n }\r\n transFromProps[key] = elVal;\r\n }\r\n }\r\n else {\r\n setTransformPropToTransitionFrom(transFromProps, 'x', el);\r\n setTransformPropToTransitionFrom(transFromProps, 'y', el);\r\n }\r\n }\r\n var leaveTo = elOption.leaveTo;\r\n if (leaveTo) {\r\n var leaveToProps = getOrCreateLeaveToPropsFromEl(el);\r\n var leaveToKeys = keys(leaveTo);\r\n for (var i = 0; i < leaveToKeys.length; i++) {\r\n var key = leaveToKeys[i];\r\n if (__DEV__) {\r\n checkTransformPropRefer(key, 'el.leaveTo');\r\n }\r\n leaveToProps[key] = leaveTo[key];\r\n }\r\n }\r\n}\r\nfunction prepareTransformAllPropsFinal(elOption, allProps) {\r\n setLagecyTransformProp(elOption, allProps, 'position');\r\n setLagecyTransformProp(elOption, allProps, 'scale');\r\n setLagecyTransformProp(elOption, allProps, 'origin');\r\n setTransformProp(elOption, allProps, 'x');\r\n setTransformProp(elOption, allProps, 'y');\r\n setTransformProp(elOption, allProps, 'scaleX');\r\n setTransformProp(elOption, allProps, 'scaleY');\r\n setTransformProp(elOption, allProps, 'originX');\r\n setTransformProp(elOption, allProps, 'originY');\r\n setTransformProp(elOption, allProps, 'rotation');\r\n}\r\nfunction prepareStyleTransitionFrom(el, morphFromEl, elOption, styleOpt, transFromProps, isInit) {\r\n if (!styleOpt) {\r\n return;\r\n }\r\n var fromEl = morphFromEl || el;\r\n var fromElStyle = fromEl.style;\r\n var transFromStyleProps;\r\n var enterFrom = styleOpt.enterFrom;\r\n if (isInit && enterFrom) {\r\n var enterFromKeys = keys(enterFrom);\r\n !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});\r\n for (var i = 0; i < enterFromKeys.length; i++) {\r\n var key = enterFromKeys[i];\r\n transFromStyleProps[key] = enterFrom[key];\r\n }\r\n }\r\n if (!isInit && fromElStyle) {\r\n if (styleOpt.transition) {\r\n var transitionKeys = normalizeToArray(styleOpt.transition);\r\n !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});\r\n for (var i = 0; i < transitionKeys.length; i++) {\r\n var key = transitionKeys[i];\r\n var elVal = fromElStyle[key];\r\n transFromStyleProps[key] = elVal;\r\n }\r\n }\r\n else if (el.getAnimationStyleProps\r\n && indexOf(elOption.transition, 'style') >= 0) {\r\n var animationProps = el.getAnimationStyleProps();\r\n var animationStyleProps = animationProps ? animationProps.style : null;\r\n if (animationStyleProps) {\r\n !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});\r\n var styleKeys = keys(styleOpt);\r\n for (var i = 0; i < styleKeys.length; i++) {\r\n var key = styleKeys[i];\r\n if (animationStyleProps[key]) {\r\n var elVal = fromElStyle[key];\r\n transFromStyleProps[key] = elVal;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n var leaveTo = styleOpt.leaveTo;\r\n if (leaveTo) {\r\n var leaveToKeys = keys(leaveTo);\r\n var leaveToProps = getOrCreateLeaveToPropsFromEl(el);\r\n var leaveToStyleProps = leaveToProps.style || (leaveToProps.style = {});\r\n for (var i = 0; i < leaveToKeys.length; i++) {\r\n var key = leaveToKeys[i];\r\n leaveToStyleProps[key] = leaveTo[key];\r\n }\r\n }\r\n}\r\nfunction calcOldElLocalTransformBasedOnNewElParent(oldEl, newEl) {\r\n if (!oldEl || oldEl === newEl || oldEl.parent === newEl.parent) {\r\n return oldEl;\r\n }\r\n var tmpM = tmpTransformable.transform\r\n || (tmpTransformable.transform = identity([]));\r\n var oldGlobalTransform = oldEl.getComputedTransform();\r\n oldGlobalTransform\r\n ? copy$1(tmpM, oldGlobalTransform)\r\n : identity(tmpM);\r\n var newParent = newEl.parent;\r\n if (newParent) {\r\n newParent.getComputedTransform();\r\n }\r\n tmpTransformable.originX = oldEl.originX;\r\n tmpTransformable.originY = oldEl.originY;\r\n tmpTransformable.parent = newParent;\r\n tmpTransformable.decomposeTransform();\r\n return tmpTransformable;\r\n}\r\nvar checkNonStyleTansitionRefer;\r\nif (__DEV__) {\r\n checkNonStyleTansitionRefer = function (propName, optVal, elVal) {\r\n if (!isArrayLike(optVal)) {\r\n assert(optVal != null && isFinite(optVal), 'Prop `' + propName + '` must refer to a finite number or ArrayLike for transition.');\r\n }\r\n else {\r\n assert(optVal !== elVal, 'Prop `' + propName + '` must use different Array object each time for transition.');\r\n }\r\n };\r\n}\r\nfunction isNonStyleTransitionEnabled(optVal, elVal) {\r\n return !isArrayLike(optVal)\r\n ? (optVal != null && isFinite(optVal))\r\n : optVal !== elVal;\r\n}\r\nvar checkTransformPropRefer;\r\nif (__DEV__) {\r\n checkTransformPropRefer = function (key, usedIn) {\r\n assert(hasOwn(TRANSFORM_PROPS, key), 'Prop `' + key + '` is not a permitted in `' + usedIn + '`. '\r\n + 'Only `' + keys(TRANSFORM_PROPS).join('`, `') + '` are permitted.');\r\n };\r\n}\r\nfunction getOrCreateLeaveToPropsFromEl(el) {\r\n var innerEl = inner$e(el);\r\n return innerEl.leaveToProps || (innerEl.leaveToProps = {});\r\n}\r\nvar tmpDuringScope = {};\r\nvar customDuringAPI = {\r\n setTransform: function (key, val) {\r\n if (__DEV__) {\r\n assert(hasOwn(TRANSFORM_PROPS, key), 'Only ' + transformPropNamesStr + ' available in `setTransform`.');\r\n }\r\n tmpDuringScope.el[key] = val;\r\n return this;\r\n },\r\n getTransform: function (key) {\r\n if (__DEV__) {\r\n assert(hasOwn(TRANSFORM_PROPS, key), 'Only ' + transformPropNamesStr + ' available in `getTransform`.');\r\n }\r\n return tmpDuringScope.el[key];\r\n },\r\n setShape: function (key, val) {\r\n if (__DEV__) {\r\n assertNotReserved(key);\r\n }\r\n var shape = tmpDuringScope.el.shape\r\n || (tmpDuringScope.el.shape = {});\r\n shape[key] = val;\r\n tmpDuringScope.isShapeDirty = true;\r\n return this;\r\n },\r\n getShape: function (key) {\r\n if (__DEV__) {\r\n assertNotReserved(key);\r\n }\r\n var shape = tmpDuringScope.el.shape;\r\n if (shape) {\r\n return shape[key];\r\n }\r\n },\r\n setStyle: function (key, val) {\r\n if (__DEV__) {\r\n assertNotReserved(key);\r\n }\r\n var style = tmpDuringScope.el.style;\r\n if (style) {\r\n if (__DEV__) {\r\n if (eqNaN(val)) {\r\n warn('style.' + key + ' must not be assigned with NaN.');\r\n }\r\n }\r\n style[key] = val;\r\n tmpDuringScope.isStyleDirty = true;\r\n }\r\n return this;\r\n },\r\n getStyle: function (key) {\r\n if (__DEV__) {\r\n assertNotReserved(key);\r\n }\r\n var style = tmpDuringScope.el.style;\r\n if (style) {\r\n return style[key];\r\n }\r\n },\r\n setExtra: function (key, val) {\r\n if (__DEV__) {\r\n assertNotReserved(key);\r\n }\r\n var extra = tmpDuringScope.el.extra\r\n || (tmpDuringScope.el.extra = {});\r\n extra[key] = val;\r\n return this;\r\n },\r\n getExtra: function (key) {\r\n if (__DEV__) {\r\n assertNotReserved(key);\r\n }\r\n var extra = tmpDuringScope.el.extra;\r\n if (extra) {\r\n return extra[key];\r\n }\r\n }\r\n};\r\nfunction assertNotReserved(key) {\r\n if (__DEV__) {\r\n if (key === 'transition' || key === 'enterFrom' || key === 'leaveTo') {\r\n throw new Error('key must not be \"' + key + '\"');\r\n }\r\n }\r\n}\r\nfunction duringCall() {\r\n var scope = this;\r\n var el = scope.el;\r\n if (!el) {\r\n return;\r\n }\r\n var newstUserDuring = inner$e(el).userDuring;\r\n var scopeUserDuring = scope.userDuring;\r\n if (newstUserDuring !== scopeUserDuring) {\r\n scope.el = scope.userDuring = null;\r\n return;\r\n }\r\n tmpDuringScope.el = el;\r\n tmpDuringScope.isShapeDirty = false;\r\n tmpDuringScope.isStyleDirty = false;\r\n scopeUserDuring(customDuringAPI);\r\n if (tmpDuringScope.isShapeDirty && el.dirtyShape) {\r\n el.dirtyShape();\r\n }\r\n if (tmpDuringScope.isStyleDirty && el.dirtyStyle) {\r\n el.dirtyStyle();\r\n }\r\n}\r\nfunction updateElOnState(state, el, elStateOpt, styleOpt, attachedTxInfo, isRoot, isTextContent) {\r\n var elDisplayable = el.isGroup ? null : el;\r\n var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg;\r\n if (elDisplayable) {\r\n var stateObj = elDisplayable.ensureState(state);\r\n if (styleOpt === false) {\r\n var existingEmphasisState = elDisplayable.getState(state);\r\n if (existingEmphasisState) {\r\n existingEmphasisState.style = null;\r\n }\r\n }\r\n else {\r\n stateObj.style = styleOpt || null;\r\n }\r\n if (txCfgOpt) {\r\n stateObj.textConfig = txCfgOpt;\r\n }\r\n setDefaultStateProxy(elDisplayable);\r\n }\r\n}\r\nfunction updateZ$1(el, elOption, seriesModel, attachedTxInfo) {\r\n if (el.isGroup) {\r\n return;\r\n }\r\n var elDisplayable = el;\r\n var currentZ = seriesModel.currentZ;\r\n var currentZLevel = seriesModel.currentZLevel;\r\n elDisplayable.z = currentZ;\r\n elDisplayable.zlevel = currentZLevel;\r\n var optZ2 = elOption.z2;\r\n optZ2 != null && (elDisplayable.z2 = optZ2 || 0);\r\n for (var i = 0; i < STATES.length; i++) {\r\n updateZForEachState(elDisplayable, elOption, STATES[i]);\r\n }\r\n}\r\nfunction updateZForEachState(elDisplayable, elOption, state) {\r\n var isNormal = state === NORMAL;\r\n var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state);\r\n var optZ2 = elStateOpt ? elStateOpt.z2 : null;\r\n var stateObj;\r\n if (optZ2 != null) {\r\n stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state);\r\n stateObj.z2 = optZ2 || 0;\r\n }\r\n}\r\nfunction setLagecyTransformProp(elOption, targetProps, legacyName, fromTransformable) {\r\n var legacyArr = elOption[legacyName];\r\n var xyName = LEGACY_TRANSFORM_PROPS[legacyName];\r\n if (legacyArr) {\r\n if (fromTransformable) {\r\n targetProps[xyName[0]] = fromTransformable[xyName[0]];\r\n targetProps[xyName[1]] = fromTransformable[xyName[1]];\r\n }\r\n else {\r\n targetProps[xyName[0]] = legacyArr[0];\r\n targetProps[xyName[1]] = legacyArr[1];\r\n }\r\n }\r\n}\r\nfunction setTransformProp(elOption, allProps, name, fromTransformable) {\r\n if (elOption[name] != null) {\r\n allProps[name] = fromTransformable ? fromTransformable[name] : elOption[name];\r\n }\r\n}\r\nfunction setTransformPropToTransitionFrom(transitionFrom, name, fromTransformable) {\r\n if (fromTransformable) {\r\n transitionFrom[name] = fromTransformable[name];\r\n }\r\n}\r\nfunction makeRenderItem(customSeries, data, ecModel, api) {\r\n var renderItem = customSeries.get('renderItem');\r\n var coordSys = customSeries.coordinateSystem;\r\n var prepareResult = {};\r\n if (coordSys) {\r\n if (__DEV__) {\r\n assert(renderItem, 'series.render is required.');\r\n assert(coordSys.prepareCustoms || prepareCustoms[coordSys.type], 'This coordSys does not support custom series.');\r\n }\r\n prepareResult = coordSys.prepareCustoms\r\n ? coordSys.prepareCustoms(coordSys)\r\n : prepareCustoms[coordSys.type](coordSys);\r\n }\r\n var userAPI = defaults({\r\n getWidth: api.getWidth,\r\n getHeight: api.getHeight,\r\n getZr: api.getZr,\r\n getDevicePixelRatio: api.getDevicePixelRatio,\r\n value: value,\r\n style: style,\r\n ordinalRawValue: ordinalRawValue,\r\n styleEmphasis: styleEmphasis,\r\n visual: visual,\r\n barLayout: barLayout,\r\n currentSeriesIndices: currentSeriesIndices,\r\n font: font\r\n }, prepareResult.api || {});\r\n var userParams = {\r\n context: {},\r\n seriesId: customSeries.id,\r\n seriesName: customSeries.name,\r\n seriesIndex: customSeries.seriesIndex,\r\n coordSys: prepareResult.coordSys,\r\n dataInsideLength: data.count(),\r\n encode: wrapEncodeDef(customSeries.getData())\r\n };\r\n var currDataIndexInside;\r\n var currItemModel;\r\n var currItemStyleModels = {};\r\n var currLabelModels = {};\r\n var seriesItemStyleModels = {};\r\n var seriesLabelModels = {};\r\n for (var i = 0; i < STATES.length; i++) {\r\n var stateName = STATES[i];\r\n seriesItemStyleModels[stateName] = customSeries\r\n .getModel(PATH_ITEM_STYLE[stateName]);\r\n seriesLabelModels[stateName] = customSeries\r\n .getModel(PATH_LABEL[stateName]);\r\n }\r\n function getItemModel(dataIndexInside) {\r\n return dataIndexInside === currDataIndexInside\r\n ? (currItemModel || (currItemModel = data.getItemModel(dataIndexInside)))\r\n : data.getItemModel(dataIndexInside);\r\n }\r\n function getItemStyleModel(dataIndexInside, state) {\r\n return !data.hasItemOption\r\n ? seriesItemStyleModels[state]\r\n : dataIndexInside === currDataIndexInside\r\n ? (currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel(dataIndexInside).getModel(PATH_ITEM_STYLE[state])))\r\n : getItemModel(dataIndexInside).getModel(PATH_ITEM_STYLE[state]);\r\n }\r\n function getLabelModel(dataIndexInside, state) {\r\n return !data.hasItemOption\r\n ? seriesLabelModels[state]\r\n : dataIndexInside === currDataIndexInside\r\n ? (currLabelModels[state] || (currLabelModels[state] = getItemModel(dataIndexInside).getModel(PATH_LABEL[state])))\r\n : getItemModel(dataIndexInside).getModel(PATH_LABEL[state]);\r\n }\r\n return function (dataIndexInside, payload) {\r\n currDataIndexInside = dataIndexInside;\r\n currItemModel = null;\r\n currItemStyleModels = {};\r\n currLabelModels = {};\r\n return renderItem && renderItem(defaults({\r\n dataIndexInside: dataIndexInside,\r\n dataIndex: data.getRawIndex(dataIndexInside),\r\n actionType: payload ? payload.type : null\r\n }, userParams), userAPI);\r\n };\r\n function value(dim, dataIndexInside) {\r\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n return data.get(data.getDimension(dim || 0), dataIndexInside);\r\n }\r\n function ordinalRawValue(dim, dataIndexInside) {\r\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n var dimInfo = data.getDimensionInfo(dim || 0);\r\n if (!dimInfo) {\r\n return;\r\n }\r\n var val = data.get(dimInfo.name, dataIndexInside);\r\n var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\r\n return ordinalMeta\r\n ? ordinalMeta.categories[val]\r\n : val;\r\n }\r\n function style(userProps, dataIndexInside) {\r\n if (__DEV__) {\r\n warnDeprecated('api.style', 'Please write literal style directly instead.');\r\n }\r\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n var style = data.getItemVisual(dataIndexInside, 'style');\r\n var visualColor = style && style.fill;\r\n var opacity = style && style.opacity;\r\n var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle();\r\n visualColor != null && (itemStyle.fill = visualColor);\r\n opacity != null && (itemStyle.opacity = opacity);\r\n var opt = { inheritColor: isString(visualColor) ? visualColor : '#000' };\r\n var labelModel = getLabelModel(dataIndexInside, NORMAL);\r\n var textStyle = createTextStyle(labelModel, null, opt, false, true);\r\n textStyle.text = labelModel.getShallow('show')\r\n ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside))\r\n : null;\r\n var textConfig = createTextConfig(labelModel, opt, false);\r\n preFetchFromExtra(userProps, itemStyle);\r\n itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);\r\n userProps && applyUserPropsAfter(itemStyle, userProps);\r\n itemStyle.legacy = true;\r\n return itemStyle;\r\n }\r\n function styleEmphasis(userProps, dataIndexInside) {\r\n if (__DEV__) {\r\n warnDeprecated('api.styleEmphasis', 'Please write literal style directly instead.');\r\n }\r\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle();\r\n var labelModel = getLabelModel(dataIndexInside, EMPHASIS);\r\n var textStyle = createTextStyle(labelModel, null, null, true, true);\r\n textStyle.text = labelModel.getShallow('show')\r\n ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside))\r\n : null;\r\n var textConfig = createTextConfig(labelModel, null, true);\r\n preFetchFromExtra(userProps, itemStyle);\r\n itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);\r\n userProps && applyUserPropsAfter(itemStyle, userProps);\r\n itemStyle.legacy = true;\r\n return itemStyle;\r\n }\r\n function applyUserPropsAfter(itemStyle, extra) {\r\n for (var key in extra) {\r\n if (hasOwn(extra, key)) {\r\n itemStyle[key] = extra[key];\r\n }\r\n }\r\n }\r\n function preFetchFromExtra(extra, itemStyle) {\r\n if (extra) {\r\n extra.textFill && (itemStyle.textFill = extra.textFill);\r\n extra.textPosition && (itemStyle.textPosition = extra.textPosition);\r\n }\r\n }\r\n function visual(visualType, dataIndexInside) {\r\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\r\n if (hasOwn(STYLE_VISUAL_TYPE, visualType)) {\r\n var style_1 = data.getItemVisual(dataIndexInside, 'style');\r\n return style_1\r\n ? style_1[STYLE_VISUAL_TYPE[visualType]]\r\n : null;\r\n }\r\n if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) {\r\n return data.getItemVisual(dataIndexInside, visualType);\r\n }\r\n }\r\n function barLayout(opt) {\r\n if (coordSys.type === 'cartesian2d') {\r\n var baseAxis = coordSys.getBaseAxis();\r\n return getLayoutOnAxis(defaults({ axis: baseAxis }, opt));\r\n }\r\n }\r\n function currentSeriesIndices() {\r\n return ecModel.getCurrentSeriesIndices();\r\n }\r\n function font(opt) {\r\n return getFont(opt, ecModel);\r\n }\r\n}\r\nfunction wrapEncodeDef(data) {\r\n var encodeDef = {};\r\n each(data.dimensions, function (dimName, dataDimIndex) {\r\n var dimInfo = data.getDimensionInfo(dimName);\r\n if (!dimInfo.isExtraCoord) {\r\n var coordDim = dimInfo.coordDim;\r\n var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\r\n dataDims[dimInfo.coordDimIndex] = dataDimIndex;\r\n }\r\n });\r\n return encodeDef;\r\n}\r\nfunction createOrUpdateItem(api, el, dataIndex, elOption, seriesModel, group, data, morphPreparation) {\r\n if (!elOption) {\r\n removeElementDirectly(el, group);\r\n return;\r\n }\r\n el = doCreateOrUpdateEl(api, el, dataIndex, elOption, seriesModel, group, true, morphPreparation);\r\n el && data.setItemGraphicEl(dataIndex, el);\r\n enableHoverEmphasis(el, elOption.focus, elOption.blurScope);\r\n return el;\r\n}\r\nfunction doCreateOrUpdateEl(api, el, dataIndex, elOption, seriesModel, group, isRoot, morphPreparation) {\r\n if (__DEV__) {\r\n assert(elOption, 'should not have an null/undefined element setting');\r\n }\r\n var toBeReplacedIdx = -1;\r\n if (el && (doesElNeedRecreate(el, elOption))) {\r\n toBeReplacedIdx = group.childrenRef().indexOf(el);\r\n el = null;\r\n }\r\n var elIsNewCreated = !el;\r\n if (!el) {\r\n el = createEl(elOption);\r\n }\r\n else {\r\n el.clearStates();\r\n }\r\n var canMorph = inner$e(el).canMorph = elOption.morph && isPath$1(el);\r\n var thisElIsMorphTo = canMorph && morphPreparation && morphPreparation.hasFrom();\r\n var isInit = elIsNewCreated && !thisElIsMorphTo;\r\n attachedTxInfoTmp.normal.cfg = attachedTxInfoTmp.normal.conOpt =\r\n attachedTxInfoTmp.emphasis.cfg = attachedTxInfoTmp.emphasis.conOpt =\r\n attachedTxInfoTmp.blur.cfg = attachedTxInfoTmp.blur.conOpt =\r\n attachedTxInfoTmp.select.cfg = attachedTxInfoTmp.select.conOpt = null;\r\n attachedTxInfoTmp.isLegacy = false;\r\n doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp);\r\n doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit);\r\n var pendingAllPropsFinal = updateElNormal(api, el, thisElIsMorphTo, dataIndex, elOption, elOption.style, attachedTxInfoTmp, seriesModel, isInit, false);\r\n if (thisElIsMorphTo) {\r\n morphPreparation.addTo(el, elOption, dataIndex, pendingAllPropsFinal);\r\n }\r\n for (var i = 0; i < STATES.length; i++) {\r\n var stateName = STATES[i];\r\n if (stateName !== NORMAL) {\r\n var otherStateOpt = retrieveStateOption(elOption, stateName);\r\n var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName);\r\n updateElOnState(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp);\r\n }\r\n }\r\n updateZ$1(el, elOption, seriesModel);\r\n if (elOption.type === 'group') {\r\n mergeChildren(api, el, dataIndex, elOption, seriesModel, morphPreparation);\r\n }\r\n if (toBeReplacedIdx >= 0) {\r\n group.replaceAt(el, toBeReplacedIdx);\r\n }\r\n else {\r\n group.add(el);\r\n }\r\n return el;\r\n}\r\nfunction doesElNeedRecreate(el, elOption) {\r\n var elInner = inner$e(el);\r\n var elOptionType = elOption.type;\r\n var elOptionShape = elOption.shape;\r\n var elOptionStyle = elOption.style;\r\n return ((elOptionType != null\r\n && elOptionType !== elInner.customGraphicType)\r\n || (elOptionType === 'path'\r\n && hasOwnPathData(elOptionShape)\r\n && getPathData(elOptionShape) !== elInner.customPathData)\r\n || (elOptionType === 'image'\r\n && hasOwn(elOptionStyle, 'image')\r\n && elOptionStyle.image !== elInner.customImagePath));\r\n}\r\nfunction doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit) {\r\n var clipPathOpt = elOption.clipPath;\r\n if (clipPathOpt === false) {\r\n if (el && el.getClipPath()) {\r\n el.removeClipPath();\r\n }\r\n }\r\n else if (clipPathOpt) {\r\n var clipPath = el.getClipPath();\r\n if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt)) {\r\n clipPath = null;\r\n }\r\n if (!clipPath) {\r\n clipPath = createEl(clipPathOpt);\r\n if (__DEV__) {\r\n assert(clipPath instanceof Path, 'Only any type of `path` can be used in `clipPath`, rather than ' + clipPath.type + '.');\r\n }\r\n el.setClipPath(clipPath);\r\n }\r\n updateElNormal(null, clipPath, null, dataIndex, clipPathOpt, null, null, seriesModel, isInit, false);\r\n }\r\n}\r\nfunction doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) {\r\n if (el.isGroup) {\r\n return;\r\n }\r\n processTxInfo(elOption, null, attachedTxInfo);\r\n processTxInfo(elOption, EMPHASIS, attachedTxInfo);\r\n var txConOptNormal = attachedTxInfo.normal.conOpt;\r\n var txConOptEmphasis = attachedTxInfo.emphasis.conOpt;\r\n var txConOptBlur = attachedTxInfo.blur.conOpt;\r\n var txConOptSelect = attachedTxInfo.select.conOpt;\r\n if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) {\r\n var textContent = el.getTextContent();\r\n if (txConOptNormal === false) {\r\n textContent && el.removeTextContent();\r\n }\r\n else {\r\n txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || { type: 'text' };\r\n if (!textContent) {\r\n textContent = createEl(txConOptNormal);\r\n el.setTextContent(textContent);\r\n }\r\n else {\r\n textContent.clearStates();\r\n }\r\n var txConStlOptNormal = txConOptNormal && txConOptNormal.style;\r\n updateElNormal(null, textContent, null, dataIndex, txConOptNormal, txConStlOptNormal, null, seriesModel, isInit, true);\r\n for (var i = 0; i < STATES.length; i++) {\r\n var stateName = STATES[i];\r\n if (stateName !== NORMAL) {\r\n var txConOptOtherState = attachedTxInfo[stateName].conOpt;\r\n updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null);\r\n }\r\n }\r\n txConStlOptNormal ? textContent.dirty() : textContent.markRedraw();\r\n }\r\n }\r\n}\r\nfunction processTxInfo(elOption, state, attachedTxInfo) {\r\n var stateOpt = !state ? elOption : retrieveStateOption(elOption, state);\r\n var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS);\r\n var elType = elOption.type;\r\n var txCfg = stateOpt ? stateOpt.textConfig : null;\r\n var txConOptNormal = elOption.textContent;\r\n var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state);\r\n if (styleOpt && (attachedTxInfo.isLegacy\r\n || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) {\r\n attachedTxInfo.isLegacy = true;\r\n var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state);\r\n if (!txCfg && convertResult.textConfig) {\r\n txCfg = convertResult.textConfig;\r\n }\r\n if (!txConOpt && convertResult.textContent) {\r\n txConOpt = convertResult.textContent;\r\n }\r\n }\r\n if (!state && txConOpt) {\r\n var txConOptNormal_1 = txConOpt;\r\n !txConOptNormal_1.type && (txConOptNormal_1.type = 'text');\r\n if (__DEV__) {\r\n txConOptNormal_1.type !== 'text' && assert(txConOptNormal_1.type === 'text', 'textContent.type must be \"text\"');\r\n }\r\n }\r\n var info = !state ? attachedTxInfo.normal : attachedTxInfo[state];\r\n info.cfg = txCfg;\r\n info.conOpt = txConOpt;\r\n}\r\nfunction retrieveStateOption(elOption, state) {\r\n return !state ? elOption : elOption ? elOption[state] : null;\r\n}\r\nfunction retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) {\r\n var style = stateOption && stateOption.style;\r\n if (style == null && state === EMPHASIS && stateOptionNormal) {\r\n style = stateOptionNormal.styleEmphasis;\r\n }\r\n return style;\r\n}\r\nfunction mergeChildren(api, el, dataIndex, elOption, seriesModel, morphPreparation) {\r\n var newChildren = elOption.children;\r\n var newLen = newChildren ? newChildren.length : 0;\r\n var mergeChildren = elOption.$mergeChildren;\r\n var byName = mergeChildren === 'byName' || elOption.diffChildrenByName;\r\n var notMerge = mergeChildren === false;\r\n if (!newLen && !byName && !notMerge) {\r\n return;\r\n }\r\n if (byName) {\r\n diffGroupChildren({\r\n api: api,\r\n oldChildren: el.children() || [],\r\n newChildren: newChildren || [],\r\n dataIndex: dataIndex,\r\n seriesModel: seriesModel,\r\n group: el,\r\n morphPreparation: morphPreparation\r\n });\r\n return;\r\n }\r\n notMerge && el.removeAll();\r\n var index = 0;\r\n for (; index < newLen; index++) {\r\n newChildren[index] && doCreateOrUpdateEl(api, el.childAt(index), dataIndex, newChildren[index], seriesModel, el, false, morphPreparation);\r\n }\r\n for (var i = el.childCount() - 1; i >= index; i--) {\r\n doRemoveEl(el.childAt(i), seriesModel, el);\r\n }\r\n}\r\nfunction diffGroupChildren(context) {\r\n (new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context))\r\n .add(processAddUpdate)\r\n .update(processAddUpdate)\r\n .remove(processRemove)\r\n .execute();\r\n}\r\nfunction getKey(item, idx) {\r\n var name = item && item.name;\r\n return name != null ? name : GROUP_DIFF_PREFIX + idx;\r\n}\r\nfunction processAddUpdate(newIndex, oldIndex) {\r\n var context = this.context;\r\n var childOption = newIndex != null ? context.newChildren[newIndex] : null;\r\n var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\r\n doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group, false, context.morphPreparation);\r\n}\r\nfunction processRemove(oldIndex) {\r\n var context = this.context;\r\n var child = context.oldChildren[oldIndex];\r\n doRemoveEl(child, context.seriesModel, context.group);\r\n}\r\nfunction doRemoveEl(el, seriesModel, group) {\r\n if (el) {\r\n var leaveToProps = inner$e(el).leaveToProps;\r\n leaveToProps\r\n ? updateProps(el, leaveToProps, seriesModel, {\r\n cb: function () {\r\n group.remove(el);\r\n }\r\n })\r\n : group.remove(el);\r\n }\r\n}\r\nfunction getPathData(shape) {\r\n return shape && (shape.pathData || shape.d);\r\n}\r\nfunction hasOwnPathData(shape) {\r\n return shape && (hasOwn(shape, 'pathData') || hasOwn(shape, 'd'));\r\n}\r\nfunction isPath$1(el) {\r\n return el && el instanceof Path;\r\n}\r\nfunction removeElementDirectly(el, group) {\r\n el && group.remove(el);\r\n}\r\nvar MorphPreparation = (function () {\r\n function MorphPreparation(seriesModel, transOpt) {\r\n this._fromList = [];\r\n this._toList = [];\r\n this._toElOptionList = [];\r\n this._allPropsFinalList = [];\r\n this._toDataIndices = [];\r\n this._morphConfigList = [];\r\n this._seriesModel = seriesModel;\r\n this._transOpt = transOpt;\r\n }\r\n MorphPreparation.prototype.hasFrom = function () {\r\n return !!this._fromList.length;\r\n };\r\n MorphPreparation.prototype.findAndAddFrom = function (el) {\r\n if (!el) {\r\n return;\r\n }\r\n if (inner$e(el).canMorph) {\r\n this._fromList.push(el);\r\n }\r\n if (el.isGroup) {\r\n var children = el.childrenRef();\r\n for (var i = 0; i < children.length; i++) {\r\n this.findAndAddFrom(children[i]);\r\n }\r\n }\r\n };\r\n MorphPreparation.prototype.addTo = function (path, elOption, dataIndex, allPropsFinal) {\r\n if (path) {\r\n this._toList.push(path);\r\n this._toElOptionList.push(elOption);\r\n this._toDataIndices.push(dataIndex);\r\n this._allPropsFinalList.push(allPropsFinal);\r\n }\r\n };\r\n MorphPreparation.prototype.applyMorphing = function () {\r\n var type = this._type;\r\n var fromList = this._fromList;\r\n var toList = this._toList;\r\n var toListLen = toList.length;\r\n var fromListLen = fromList.length;\r\n if (!fromListLen || !toListLen) {\r\n return;\r\n }\r\n if (type === 'oneToOne') {\r\n for (var toIdx = 0; toIdx < toListLen; toIdx++) {\r\n this._oneToOneForSingleTo(toIdx, toIdx);\r\n }\r\n }\r\n else if (type === 'manyToOne') {\r\n var fromSingleSegLen = Math.max(1, Math.floor(fromListLen / toListLen));\r\n for (var toIdx = 0, fromIdxStart = 0; toIdx < toListLen; toIdx++, fromIdxStart += fromSingleSegLen) {\r\n var fromCount = toIdx + 1 >= toListLen\r\n ? fromListLen - fromIdxStart\r\n : fromSingleSegLen;\r\n this._manyToOneForSingleTo(toIdx, fromIdxStart >= fromListLen ? null : fromIdxStart, fromCount);\r\n }\r\n }\r\n else if (type === 'oneToMany') {\r\n var toSingleSegLen = Math.max(1, Math.floor(toListLen / fromListLen));\r\n for (var toIdxStart = 0, fromIdx = 0; toIdxStart < toListLen; toIdxStart += toSingleSegLen, fromIdx++) {\r\n var toCount = toIdxStart + toSingleSegLen >= toListLen\r\n ? toListLen - toIdxStart\r\n : toSingleSegLen;\r\n this._oneToManyForSingleFrom(toIdxStart, toCount, fromIdx >= fromListLen ? null : fromIdx);\r\n }\r\n }\r\n };\r\n MorphPreparation.prototype._oneToOneForSingleTo = function (toIdx, fromIdx) {\r\n var to = this._toList[toIdx];\r\n var toElOption = this._toElOptionList[toIdx];\r\n var toDataIndex = this._toDataIndices[toIdx];\r\n var allPropsFinal = this._allPropsFinalList[toIdx];\r\n var from = this._fromList[fromIdx];\r\n var elAnimationConfig = this._getOrCreateMorphConfig(toDataIndex);\r\n var morphDuration = elAnimationConfig.duration;\r\n if (from && isCombiningPath(from)) {\r\n applyPropsFinal(to, allPropsFinal, toElOption.style);\r\n if (morphDuration) {\r\n var combineResult = combine([from], to, elAnimationConfig, copyPropsWhenDivided);\r\n this._processResultIndividuals(combineResult, toIdx, null);\r\n }\r\n }\r\n else {\r\n var morphFrom = (morphDuration\r\n && from\r\n && (from !== to || isInAnyMorphing(from))) ? from : null;\r\n var transFromProps = {};\r\n prepareShapeOrExtraTransitionFrom('shape', to, morphFrom, toElOption, transFromProps, false);\r\n prepareShapeOrExtraTransitionFrom('extra', to, morphFrom, toElOption, transFromProps, false);\r\n prepareTransformTransitionFrom(to, morphFrom, toElOption, transFromProps, false);\r\n prepareStyleTransitionFrom(to, morphFrom, toElOption, toElOption.style, transFromProps, false);\r\n applyPropsFinal(to, allPropsFinal, toElOption.style);\r\n if (morphFrom) {\r\n morphPath(morphFrom, to, elAnimationConfig);\r\n }\r\n applyTransitionFrom(to, toDataIndex, toElOption, this._seriesModel, transFromProps, false);\r\n }\r\n };\r\n MorphPreparation.prototype._manyToOneForSingleTo = function (toIdx, fromIdxStart, fromCount) {\r\n var to = this._toList[toIdx];\r\n var toElOption = this._toElOptionList[toIdx];\r\n var allPropsFinal = this._allPropsFinalList[toIdx];\r\n applyPropsFinal(to, allPropsFinal, toElOption.style);\r\n var elAnimationConfig = this._getOrCreateMorphConfig(this._toDataIndices[toIdx]);\r\n if (elAnimationConfig.duration && fromIdxStart != null) {\r\n var combineFromList = [];\r\n for (var fromIdx = fromIdxStart; fromIdx < fromCount; fromIdx++) {\r\n combineFromList.push(this._fromList[fromIdx]);\r\n }\r\n var combineResult = combine(combineFromList, to, elAnimationConfig, copyPropsWhenDivided);\r\n this._processResultIndividuals(combineResult, toIdx, null);\r\n }\r\n };\r\n MorphPreparation.prototype._oneToManyForSingleFrom = function (toIdxStart, toCount, fromIdx) {\r\n var from = fromIdx == null ? null : this._fromList[fromIdx];\r\n var toList = this._toList;\r\n var separateToList = [];\r\n for (var toIdx = toIdxStart; toIdx < toCount; toIdx++) {\r\n var to = toList[toIdx];\r\n applyPropsFinal(to, this._allPropsFinalList[toIdx], this._toElOptionList[toIdx].style);\r\n separateToList.push(to);\r\n }\r\n var elAnimationConfig = this._getOrCreateMorphConfig(this._toDataIndices[toIdxStart]);\r\n if (elAnimationConfig.duration && from) {\r\n var separateResult = separate(from, separateToList, elAnimationConfig, copyPropsWhenDivided);\r\n this._processResultIndividuals(separateResult, toIdxStart, toCount);\r\n }\r\n };\r\n MorphPreparation.prototype._processResultIndividuals = function (combineSeparateResult, toIdxStart, toCount) {\r\n var isSeparate = toCount != null;\r\n for (var i = 0; i < combineSeparateResult.count; i++) {\r\n var fromIndividual = combineSeparateResult.fromIndividuals[i];\r\n var toIndividual = combineSeparateResult.toIndividuals[i];\r\n var toIdx = toIdxStart + (isSeparate ? i : 0);\r\n var toElOption = this._toElOptionList[toIdx];\r\n var dataIndex = this._toDataIndices[toIdx];\r\n var transFromProps = {};\r\n prepareTransformTransitionFrom(toIndividual, fromIndividual, toElOption, transFromProps, false);\r\n prepareStyleTransitionFrom(toIndividual, fromIndividual, toElOption, toElOption.style, transFromProps, false);\r\n applyTransitionFrom(toIndividual, dataIndex, toElOption, this._seriesModel, transFromProps, false);\r\n }\r\n };\r\n MorphPreparation.prototype._getOrCreateMorphConfig = function (dataIndex) {\r\n var morphConfigList = this._morphConfigList;\r\n var config = morphConfigList[dataIndex];\r\n if (config) {\r\n return config;\r\n }\r\n var duration;\r\n var easing;\r\n var delay;\r\n var seriesModel = this._seriesModel;\r\n var transOpt = this._transOpt;\r\n if (seriesModel.isAnimationEnabled()) {\r\n var animationPayload = void 0;\r\n if (seriesModel && seriesModel.ecModel) {\r\n var updatePayload = seriesModel.ecModel.getUpdatePayload();\r\n animationPayload = (updatePayload && updatePayload.animation);\r\n }\r\n if (animationPayload) {\r\n duration = animationPayload.duration || 0;\r\n easing = animationPayload.easing || 'cubicOut';\r\n delay = animationPayload.delay || 0;\r\n }\r\n else {\r\n easing = seriesModel.get('animationEasingUpdate');\r\n var delayOption = seriesModel.get('animationDelayUpdate');\r\n delay = isFunction(delayOption) ? delayOption(dataIndex) : delayOption;\r\n var durationOption = seriesModel.get('animationDurationUpdate');\r\n duration = isFunction(durationOption) ? durationOption(dataIndex) : durationOption;\r\n }\r\n }\r\n config = {\r\n duration: duration || 0,\r\n delay: delay,\r\n easing: easing,\r\n dividingMethod: transOpt ? transOpt.dividingMethod : null\r\n };\r\n morphConfigList[dataIndex] = config;\r\n return config;\r\n };\r\n MorphPreparation.prototype.reset = function (type) {\r\n this._type = type;\r\n this._fromList.length =\r\n this._toList.length =\r\n this._toElOptionList.length =\r\n this._allPropsFinalList.length =\r\n this._toDataIndices.length = 0;\r\n };\r\n return MorphPreparation;\r\n}());\r\nfunction copyPropsWhenDivided(srcPath, tarPath, willClone) {\r\n tarPath.style = willClone\r\n ? clone(srcPath.style)\r\n : srcPath.style;\r\n tarPath.zlevel = srcPath.zlevel;\r\n tarPath.z = srcPath.z;\r\n tarPath.z2 = srcPath.z2;\r\n}\n\nfunction getSeriesStackId$1(seriesModel) {\r\n return seriesModel.get('stack')\r\n || '__ec_stack_' + seriesModel.seriesIndex;\r\n}\r\nfunction getAxisKey$1(polar, axis) {\r\n return axis.dim + polar.model.componentIndex;\r\n}\r\nfunction barLayoutPolar(seriesType, ecModel, api) {\r\n var lastStackCoords = {};\r\n var barWidthAndOffset = calRadialBar(filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\r\n return !ecModel.isSeriesFiltered(seriesModel)\r\n && seriesModel.coordinateSystem\r\n && seriesModel.coordinateSystem.type === 'polar';\r\n }));\r\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n if (seriesModel.coordinateSystem.type !== 'polar') {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n var polar = seriesModel.coordinateSystem;\r\n var baseAxis = polar.getBaseAxis();\r\n var axisKey = getAxisKey$1(polar, baseAxis);\r\n var stackId = getSeriesStackId$1(seriesModel);\r\n var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\r\n var columnOffset = columnLayoutInfo.offset;\r\n var columnWidth = columnLayoutInfo.width;\r\n var valueAxis = polar.getOtherAxis(baseAxis);\r\n var cx = seriesModel.coordinateSystem.cx;\r\n var cy = seriesModel.coordinateSystem.cy;\r\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\r\n var barMinAngle = seriesModel.get('barMinAngle') || 0;\r\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\r\n var valueDim = data.mapDimension(valueAxis.dim);\r\n var baseDim = data.mapDimension(baseAxis.dim);\r\n var stacked = isDimensionStacked(data, valueDim);\r\n var clampLayout = baseAxis.dim !== 'radius'\r\n || !seriesModel.get('roundCap', true);\r\n var valueAxisStart = valueAxis.dataToCoord(0);\r\n for (var idx = 0, len = data.count(); idx < len; idx++) {\r\n var value = data.get(valueDim, idx);\r\n var baseValue = data.get(baseDim, idx);\r\n var sign = value >= 0 ? 'p' : 'n';\r\n var baseCoord = valueAxisStart;\r\n if (stacked) {\r\n if (!lastStackCoords[stackId][baseValue]) {\r\n lastStackCoords[stackId][baseValue] = {\r\n p: valueAxisStart,\r\n n: valueAxisStart\r\n };\r\n }\r\n baseCoord = lastStackCoords[stackId][baseValue][sign];\r\n }\r\n var r0 = void 0;\r\n var r = void 0;\r\n var startAngle = void 0;\r\n var endAngle = void 0;\r\n if (valueAxis.dim === 'radius') {\r\n var radiusSpan = valueAxis.dataToCoord(value) - valueAxisStart;\r\n var angle = baseAxis.dataToCoord(baseValue);\r\n if (Math.abs(radiusSpan) < barMinHeight) {\r\n radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\r\n }\r\n r0 = baseCoord;\r\n r = baseCoord + radiusSpan;\r\n startAngle = angle - columnOffset;\r\n endAngle = startAngle - columnWidth;\r\n stacked && (lastStackCoords[stackId][baseValue][sign] = r);\r\n }\r\n else {\r\n var angleSpan = valueAxis.dataToCoord(value, clampLayout) - valueAxisStart;\r\n var radius = baseAxis.dataToCoord(baseValue);\r\n if (Math.abs(angleSpan) < barMinAngle) {\r\n angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\r\n }\r\n r0 = radius + columnOffset;\r\n r = r0 + columnWidth;\r\n startAngle = baseCoord;\r\n endAngle = baseCoord + angleSpan;\r\n stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\r\n }\r\n data.setItemLayout(idx, {\r\n cx: cx,\r\n cy: cy,\r\n r0: r0,\r\n r: r,\r\n startAngle: -startAngle * Math.PI / 180,\r\n endAngle: -endAngle * Math.PI / 180\r\n });\r\n }\r\n });\r\n}\r\nfunction calRadialBar(barSeries) {\r\n var columnsMap = {};\r\n each(barSeries, function (seriesModel, idx) {\r\n var data = seriesModel.getData();\r\n var polar = seriesModel.coordinateSystem;\r\n var baseAxis = polar.getBaseAxis();\r\n var axisKey = getAxisKey$1(polar, baseAxis);\r\n var axisExtent = baseAxis.getExtent();\r\n var bandWidth = baseAxis.type === 'category'\r\n ? baseAxis.getBandWidth()\r\n : (Math.abs(axisExtent[1] - axisExtent[0]) / data.count());\r\n var columnsOnAxis = columnsMap[axisKey] || {\r\n bandWidth: bandWidth,\r\n remainedWidth: bandWidth,\r\n autoWidthCount: 0,\r\n categoryGap: '20%',\r\n gap: '30%',\r\n stacks: {}\r\n };\r\n var stacks = columnsOnAxis.stacks;\r\n columnsMap[axisKey] = columnsOnAxis;\r\n var stackId = getSeriesStackId$1(seriesModel);\r\n if (!stacks[stackId]) {\r\n columnsOnAxis.autoWidthCount++;\r\n }\r\n stacks[stackId] = stacks[stackId] || {\r\n width: 0,\r\n maxWidth: 0\r\n };\r\n var barWidth = parsePercent$2(seriesModel.get('barWidth'), bandWidth);\r\n var barMaxWidth = parsePercent$2(seriesModel.get('barMaxWidth'), bandWidth);\r\n var barGap = seriesModel.get('barGap');\r\n var barCategoryGap = seriesModel.get('barCategoryGap');\r\n if (barWidth && !stacks[stackId].width) {\r\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\r\n stacks[stackId].width = barWidth;\r\n columnsOnAxis.remainedWidth -= barWidth;\r\n }\r\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\r\n (barGap != null) && (columnsOnAxis.gap = barGap);\r\n (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap);\r\n });\r\n var result = {};\r\n each(columnsMap, function (columnsOnAxis, coordSysName) {\r\n result[coordSysName] = {};\r\n var stacks = columnsOnAxis.stacks;\r\n var bandWidth = columnsOnAxis.bandWidth;\r\n var categoryGap = parsePercent$2(columnsOnAxis.categoryGap, bandWidth);\r\n var barGapPercent = parsePercent$2(columnsOnAxis.gap, 1);\r\n var remainedWidth = columnsOnAxis.remainedWidth;\r\n var autoWidthCount = columnsOnAxis.autoWidthCount;\r\n var autoWidth = (remainedWidth - categoryGap)\r\n / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n autoWidth = Math.max(autoWidth, 0);\r\n each(stacks, function (column, stack) {\r\n var maxWidth = column.maxWidth;\r\n if (maxWidth && maxWidth < autoWidth) {\r\n maxWidth = Math.min(maxWidth, remainedWidth);\r\n if (column.width) {\r\n maxWidth = Math.min(maxWidth, column.width);\r\n }\r\n remainedWidth -= maxWidth;\r\n column.width = maxWidth;\r\n autoWidthCount--;\r\n }\r\n });\r\n autoWidth = (remainedWidth - categoryGap)\r\n / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n autoWidth = Math.max(autoWidth, 0);\r\n var widthSum = 0;\r\n var lastColumn;\r\n each(stacks, function (column, idx) {\r\n if (!column.width) {\r\n column.width = autoWidth;\r\n }\r\n lastColumn = column;\r\n widthSum += column.width * (1 + barGapPercent);\r\n });\r\n if (lastColumn) {\r\n widthSum -= lastColumn.width * barGapPercent;\r\n }\r\n var offset = -widthSum / 2;\r\n each(stacks, function (column, stackId) {\r\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\r\n offset: offset,\r\n width: column.width\r\n };\r\n offset += column.width * (1 + barGapPercent);\r\n });\r\n });\r\n return result;\r\n}\n\nvar PolarModel = (function (_super) {\r\n __extends(PolarModel, _super);\r\n function PolarModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = PolarModel.type;\r\n return _this;\r\n }\r\n PolarModel.prototype.findAxisModel = function (axisType) {\r\n var foundAxisModel;\r\n var ecModel = this.ecModel;\r\n ecModel.eachComponent(axisType, function (axisModel) {\r\n if (axisModel.getCoordSysModel() === this) {\r\n foundAxisModel = axisModel;\r\n }\r\n }, this);\r\n return foundAxisModel;\r\n };\r\n PolarModel.type = 'polar';\r\n PolarModel.dependencies = ['radiusAxis', 'angleAxis'];\r\n PolarModel.defaultOption = {\r\n zlevel: 0,\r\n z: 0,\r\n center: ['50%', '50%'],\r\n radius: '80%'\r\n };\r\n return PolarModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(PolarModel);\n\nvar PolarAxisModel = (function (_super) {\r\n __extends(PolarAxisModel, _super);\r\n function PolarAxisModel() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PolarAxisModel.prototype.getCoordSysModel = function () {\r\n return this.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n };\r\n PolarAxisModel.type = 'polarAxis';\r\n return PolarAxisModel;\r\n}(ComponentModel));\r\nmixin(PolarAxisModel, AxisModelCommonMixin);\r\nvar AngleAxisModel = (function (_super) {\r\n __extends(AngleAxisModel, _super);\r\n function AngleAxisModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = AngleAxisModel.type;\r\n return _this;\r\n }\r\n AngleAxisModel.type = 'angleAxis';\r\n return AngleAxisModel;\r\n}(PolarAxisModel));\r\nvar RadiusAxisModel = (function (_super) {\r\n __extends(RadiusAxisModel, _super);\r\n function RadiusAxisModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = RadiusAxisModel.type;\r\n return _this;\r\n }\r\n RadiusAxisModel.type = 'radiusAxis';\r\n return RadiusAxisModel;\r\n}(PolarAxisModel));\r\nvar angleAxisExtraOption = {\r\n startAngle: 90,\r\n clockwise: true,\r\n splitNumber: 12,\r\n axisLabel: {\r\n rotate: 0\r\n }\r\n};\r\nvar radiusAxisExtraOption = {\r\n splitNumber: 5\r\n};\r\naxisModelCreator('angle', AngleAxisModel, angleAxisExtraOption);\r\naxisModelCreator('radius', RadiusAxisModel, radiusAxisExtraOption);\n\nvar RadiusAxis = (function (_super) {\r\n __extends(RadiusAxis, _super);\r\n function RadiusAxis(scale, radiusExtent) {\r\n return _super.call(this, 'radius', scale, radiusExtent) || this;\r\n }\r\n RadiusAxis.prototype.pointToData = function (point, clamp) {\r\n return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\r\n };\r\n return RadiusAxis;\r\n}(Axis));\r\nRadiusAxis.prototype.dataToRadius = Axis.prototype.dataToCoord;\r\nRadiusAxis.prototype.radiusToData = Axis.prototype.coordToData;\n\nvar inner$f = makeInner();\r\nvar AngleAxis = (function (_super) {\r\n __extends(AngleAxis, _super);\r\n function AngleAxis(scale, angleExtent) {\r\n return _super.call(this, 'angle', scale, angleExtent || [0, 360]) || this;\r\n }\r\n AngleAxis.prototype.pointToData = function (point, clamp) {\r\n return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\r\n };\r\n AngleAxis.prototype.calculateCategoryInterval = function () {\r\n var axis = this;\r\n var labelModel = axis.getLabelModel();\r\n var ordinalScale = axis.scale;\r\n var ordinalExtent = ordinalScale.getExtent();\r\n var tickCount = ordinalScale.count();\r\n if (ordinalExtent[1] - ordinalExtent[0] < 1) {\r\n return 0;\r\n }\r\n var tickValue = ordinalExtent[0];\r\n var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\r\n var unitH = Math.abs(unitSpan);\r\n var rect = getBoundingRect(tickValue == null ? '' : tickValue + '', labelModel.getFont(), 'center', 'top');\r\n var maxH = Math.max(rect.height, 7);\r\n var dh = maxH / unitH;\r\n isNaN(dh) && (dh = Infinity);\r\n var interval = Math.max(0, Math.floor(dh));\r\n var cache = inner$f(axis.model);\r\n var lastAutoInterval = cache.lastAutoInterval;\r\n var lastTickCount = cache.lastTickCount;\r\n if (lastAutoInterval != null\r\n && lastTickCount != null\r\n && Math.abs(lastAutoInterval - interval) <= 1\r\n && Math.abs(lastTickCount - tickCount) <= 1\r\n && lastAutoInterval > interval) {\r\n interval = lastAutoInterval;\r\n }\r\n else {\r\n cache.lastTickCount = tickCount;\r\n cache.lastAutoInterval = interval;\r\n }\r\n return interval;\r\n };\r\n return AngleAxis;\r\n}(Axis));\r\nAngleAxis.prototype.dataToAngle = Axis.prototype.dataToCoord;\r\nAngleAxis.prototype.angleToData = Axis.prototype.coordToData;\n\nvar Polar = (function () {\r\n function Polar(name) {\r\n this.dimensions = ['radius', 'angle'];\r\n this.type = 'polar';\r\n this.cx = 0;\r\n this.cy = 0;\r\n this._radiusAxis = new RadiusAxis();\r\n this._angleAxis = new AngleAxis();\r\n this.axisPointerEnabled = true;\r\n this.name = name || '';\r\n this._radiusAxis.polar = this._angleAxis.polar = this;\r\n }\r\n Polar.prototype.containPoint = function (point) {\r\n var coord = this.pointToCoord(point);\r\n return this._radiusAxis.contain(coord[0])\r\n && this._angleAxis.contain(coord[1]);\r\n };\r\n Polar.prototype.containData = function (data) {\r\n return this._radiusAxis.containData(data[0])\r\n && this._angleAxis.containData(data[1]);\r\n };\r\n Polar.prototype.getAxis = function (dim) {\r\n var key = ('_' + dim + 'Axis');\r\n return this[key];\r\n };\r\n Polar.prototype.getAxes = function () {\r\n return [this._radiusAxis, this._angleAxis];\r\n };\r\n Polar.prototype.getAxesByScale = function (scaleType) {\r\n var axes = [];\r\n var angleAxis = this._angleAxis;\r\n var radiusAxis = this._radiusAxis;\r\n angleAxis.scale.type === scaleType && axes.push(angleAxis);\r\n radiusAxis.scale.type === scaleType && axes.push(radiusAxis);\r\n return axes;\r\n };\r\n Polar.prototype.getAngleAxis = function () {\r\n return this._angleAxis;\r\n };\r\n Polar.prototype.getRadiusAxis = function () {\r\n return this._radiusAxis;\r\n };\r\n Polar.prototype.getOtherAxis = function (axis) {\r\n var angleAxis = this._angleAxis;\r\n return axis === angleAxis ? this._radiusAxis : angleAxis;\r\n };\r\n Polar.prototype.getBaseAxis = function () {\r\n return this.getAxesByScale('ordinal')[0]\r\n || this.getAxesByScale('time')[0]\r\n || this.getAngleAxis();\r\n };\r\n Polar.prototype.getTooltipAxes = function (dim) {\r\n var baseAxis = (dim != null && dim !== 'auto')\r\n ? this.getAxis(dim) : this.getBaseAxis();\r\n return {\r\n baseAxes: [baseAxis],\r\n otherAxes: [this.getOtherAxis(baseAxis)]\r\n };\r\n };\r\n Polar.prototype.dataToPoint = function (data, clamp) {\r\n return this.coordToPoint([\r\n this._radiusAxis.dataToRadius(data[0], clamp),\r\n this._angleAxis.dataToAngle(data[1], clamp)\r\n ]);\r\n };\r\n Polar.prototype.pointToData = function (point, clamp) {\r\n var coord = this.pointToCoord(point);\r\n return [\r\n this._radiusAxis.radiusToData(coord[0], clamp),\r\n this._angleAxis.angleToData(coord[1], clamp)\r\n ];\r\n };\r\n Polar.prototype.pointToCoord = function (point) {\r\n var dx = point[0] - this.cx;\r\n var dy = point[1] - this.cy;\r\n var angleAxis = this.getAngleAxis();\r\n var extent = angleAxis.getExtent();\r\n var minAngle = Math.min(extent[0], extent[1]);\r\n var maxAngle = Math.max(extent[0], extent[1]);\r\n angleAxis.inverse\r\n ? (minAngle = maxAngle - 360)\r\n : (maxAngle = minAngle + 360);\r\n var radius = Math.sqrt(dx * dx + dy * dy);\r\n dx /= radius;\r\n dy /= radius;\r\n var radian = Math.atan2(-dy, dx) / Math.PI * 180;\r\n var dir = radian < minAngle ? 1 : -1;\r\n while (radian < minAngle || radian > maxAngle) {\r\n radian += dir * 360;\r\n }\r\n return [radius, radian];\r\n };\r\n Polar.prototype.coordToPoint = function (coord) {\r\n var radius = coord[0];\r\n var radian = coord[1] / 180 * Math.PI;\r\n var x = Math.cos(radian) * radius + this.cx;\r\n var y = -Math.sin(radian) * radius + this.cy;\r\n return [x, y];\r\n };\r\n Polar.prototype.getArea = function () {\r\n var angleAxis = this.getAngleAxis();\r\n var radiusAxis = this.getRadiusAxis();\r\n var radiusExtent = radiusAxis.getExtent().slice();\r\n radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();\r\n var angleExtent = angleAxis.getExtent();\r\n var RADIAN = Math.PI / 180;\r\n return {\r\n cx: this.cx,\r\n cy: this.cy,\r\n r0: radiusExtent[0],\r\n r: radiusExtent[1],\r\n startAngle: -angleExtent[0] * RADIAN,\r\n endAngle: -angleExtent[1] * RADIAN,\r\n clockwise: angleAxis.inverse,\r\n contain: function (x, y) {\r\n var dx = x - this.cx;\r\n var dy = y - this.cy;\r\n var d2 = dx * dx + dy * dy;\r\n var r = this.r;\r\n var r0 = this.r0;\r\n return d2 <= r * r && d2 >= r0 * r0;\r\n }\r\n };\r\n };\r\n Polar.prototype.convertToPixel = function (ecModel, finder, value) {\r\n var coordSys = getCoordSys$3(finder);\r\n return coordSys === this ? this.dataToPoint(value) : null;\r\n };\r\n Polar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n var coordSys = getCoordSys$3(finder);\r\n return coordSys === this ? this.pointToData(pixel) : null;\r\n };\r\n return Polar;\r\n}());\r\nfunction getCoordSys$3(finder) {\r\n var seriesModel = finder.seriesModel;\r\n var polarModel = finder.polarModel;\r\n return polarModel && polarModel.coordinateSystem\r\n || seriesModel && seriesModel.coordinateSystem;\r\n}\n\nfunction resizePolar(polar, polarModel, api) {\r\n var center = polarModel.get('center');\r\n var width = api.getWidth();\r\n var height = api.getHeight();\r\n polar.cx = parsePercent$2(center[0], width);\r\n polar.cy = parsePercent$2(center[1], height);\r\n var radiusAxis = polar.getRadiusAxis();\r\n var size = Math.min(width, height) / 2;\r\n var radius = polarModel.get('radius');\r\n if (radius == null) {\r\n radius = [0, '100%'];\r\n }\r\n else if (!isArray(radius)) {\r\n radius = [0, radius];\r\n }\r\n var parsedRadius = [\r\n parsePercent$2(radius[0], size),\r\n parsePercent$2(radius[1], size)\r\n ];\r\n radiusAxis.inverse\r\n ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0])\r\n : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]);\r\n}\r\nfunction updatePolarScale(ecModel, api) {\r\n var polar = this;\r\n var angleAxis = polar.getAngleAxis();\r\n var radiusAxis = polar.getRadiusAxis();\r\n angleAxis.scale.setExtent(Infinity, -Infinity);\r\n radiusAxis.scale.setExtent(Infinity, -Infinity);\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (seriesModel.coordinateSystem === polar) {\r\n var data_1 = seriesModel.getData();\r\n each(getDataDimensionsOnAxis(data_1, 'radius'), function (dim) {\r\n radiusAxis.scale.unionExtentFromData(data_1, dim);\r\n });\r\n each(getDataDimensionsOnAxis(data_1, 'angle'), function (dim) {\r\n angleAxis.scale.unionExtentFromData(data_1, dim);\r\n });\r\n }\r\n });\r\n niceScaleExtent(angleAxis.scale, angleAxis.model);\r\n niceScaleExtent(radiusAxis.scale, radiusAxis.model);\r\n if (angleAxis.type === 'category' && !angleAxis.onBand) {\r\n var extent = angleAxis.getExtent();\r\n var diff = 360 / angleAxis.scale.count();\r\n angleAxis.inverse ? (extent[1] += diff) : (extent[1] -= diff);\r\n angleAxis.setExtent(extent[0], extent[1]);\r\n }\r\n}\r\nfunction isAngleAxisModel(axisModel) {\r\n return axisModel.mainType === 'angleAxis';\r\n}\r\nfunction setAxis(axis, axisModel) {\r\n axis.type = axisModel.get('type');\r\n axis.scale = createScaleByModel(axisModel);\r\n axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\r\n axis.inverse = axisModel.get('inverse');\r\n if (isAngleAxisModel(axisModel)) {\r\n axis.inverse = axis.inverse !== axisModel.get('clockwise');\r\n var startAngle = axisModel.get('startAngle');\r\n axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\r\n }\r\n axisModel.axis = axis;\r\n axis.model = axisModel;\r\n}\r\nvar polarCreator = {\r\n dimensions: Polar.prototype.dimensions,\r\n create: function (ecModel, api) {\r\n var polarList = [];\r\n ecModel.eachComponent('polar', function (polarModel, idx) {\r\n var polar = new Polar(idx + '');\r\n polar.update = updatePolarScale;\r\n var radiusAxis = polar.getRadiusAxis();\r\n var angleAxis = polar.getAngleAxis();\r\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\r\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\r\n setAxis(radiusAxis, radiusAxisModel);\r\n setAxis(angleAxis, angleAxisModel);\r\n resizePolar(polar, polarModel, api);\r\n polarList.push(polar);\r\n polarModel.coordinateSystem = polar;\r\n polar.model = polarModel;\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (seriesModel.get('coordinateSystem') === 'polar') {\r\n var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n if (__DEV__) {\r\n if (!polarModel) {\r\n throw new Error('Polar \"' + retrieve(seriesModel.get('polarIndex'), seriesModel.get('polarId'), 0) + '\" not found');\r\n }\r\n }\r\n seriesModel.coordinateSystem = polarModel.coordinateSystem;\r\n }\r\n });\r\n return polarList;\r\n }\r\n};\r\nCoordinateSystemManager.register('polar', polarCreator);\n\nvar elementList$1 = [\r\n 'axisLine',\r\n 'axisLabel',\r\n 'axisTick',\r\n 'minorTick',\r\n 'splitLine',\r\n 'minorSplitLine',\r\n 'splitArea'\r\n];\r\nfunction getAxisLineShape(polar, rExtent, angle) {\r\n rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());\r\n var start = polar.coordToPoint([rExtent[0], angle]);\r\n var end = polar.coordToPoint([rExtent[1], angle]);\r\n return {\r\n x1: start[0],\r\n y1: start[1],\r\n x2: end[0],\r\n y2: end[1]\r\n };\r\n}\r\nfunction getRadiusIdx(polar) {\r\n var radiusAxis = polar.getRadiusAxis();\r\n return radiusAxis.inverse ? 0 : 1;\r\n}\r\nfunction fixAngleOverlap(list) {\r\n var firstItem = list[0];\r\n var lastItem = list[list.length - 1];\r\n if (firstItem\r\n && lastItem\r\n && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {\r\n list.pop();\r\n }\r\n}\r\nvar AngleAxisView = (function (_super) {\r\n __extends(AngleAxisView, _super);\r\n function AngleAxisView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = AngleAxisView.type;\r\n _this.axisPointerClass = 'PolarAxisPointer';\r\n return _this;\r\n }\r\n AngleAxisView.prototype.render = function (angleAxisModel, ecModel) {\r\n this.group.removeAll();\r\n if (!angleAxisModel.get('show')) {\r\n return;\r\n }\r\n var angleAxis = angleAxisModel.axis;\r\n var polar = angleAxis.polar;\r\n var radiusExtent = polar.getRadiusAxis().getExtent();\r\n var ticksAngles = angleAxis.getTicksCoords();\r\n var minorTickAngles = angleAxis.getMinorTicksCoords();\r\n var labels = map(angleAxis.getViewLabels(), function (labelItem) {\r\n labelItem = clone(labelItem);\r\n labelItem.coord = angleAxis.dataToCoord(labelItem.tickValue);\r\n return labelItem;\r\n });\r\n fixAngleOverlap(labels);\r\n fixAngleOverlap(ticksAngles);\r\n each(elementList$1, function (name) {\r\n if (angleAxisModel.get([name, 'show'])\r\n && (!angleAxis.scale.isBlank() || name === 'axisLine')) {\r\n angelAxisElementsBuilders[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);\r\n }\r\n }, this);\r\n };\r\n AngleAxisView.type = 'angleAxis';\r\n return AngleAxisView;\r\n}(AxisView));\r\nvar angelAxisElementsBuilders = {\r\n axisLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n var lineStyleModel = angleAxisModel.getModel(['axisLine', 'lineStyle']);\r\n var rId = getRadiusIdx(polar);\r\n var r0Id = rId ? 0 : 1;\r\n var shape;\r\n if (radiusExtent[r0Id] === 0) {\r\n shape = new Circle({\r\n shape: {\r\n cx: polar.cx,\r\n cy: polar.cy,\r\n r: radiusExtent[rId]\r\n },\r\n style: lineStyleModel.getLineStyle(),\r\n z2: 1,\r\n silent: true\r\n });\r\n }\r\n else {\r\n shape = new Ring({\r\n shape: {\r\n cx: polar.cx,\r\n cy: polar.cy,\r\n r: radiusExtent[rId],\r\n r0: radiusExtent[r0Id]\r\n },\r\n style: lineStyleModel.getLineStyle(),\r\n z2: 1,\r\n silent: true\r\n });\r\n }\r\n shape.style.fill = null;\r\n group.add(shape);\r\n },\r\n axisTick: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n var tickModel = angleAxisModel.getModel('axisTick');\r\n var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length');\r\n var radius = radiusExtent[getRadiusIdx(polar)];\r\n var lines = map(ticksAngles, function (tickAngleItem) {\r\n return new Line({\r\n shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord)\r\n });\r\n });\r\n group.add(mergePath$1(lines, {\r\n style: defaults(tickModel.getModel('lineStyle').getLineStyle(), {\r\n stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color'])\r\n })\r\n }));\r\n },\r\n minorTick: function (group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {\r\n if (!minorTickAngles.length) {\r\n return;\r\n }\r\n var tickModel = angleAxisModel.getModel('axisTick');\r\n var minorTickModel = angleAxisModel.getModel('minorTick');\r\n var tickLen = (tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length');\r\n var radius = radiusExtent[getRadiusIdx(polar)];\r\n var lines = [];\r\n for (var i = 0; i < minorTickAngles.length; i++) {\r\n for (var k = 0; k < minorTickAngles[i].length; k++) {\r\n lines.push(new Line({\r\n shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord)\r\n }));\r\n }\r\n }\r\n group.add(mergePath$1(lines, {\r\n style: defaults(minorTickModel.getModel('lineStyle').getLineStyle(), defaults(tickModel.getLineStyle(), {\r\n stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color'])\r\n }))\r\n }));\r\n },\r\n axisLabel: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {\r\n var rawCategoryData = angleAxisModel.getCategories(true);\r\n var commonLabelModel = angleAxisModel.getModel('axisLabel');\r\n var labelMargin = commonLabelModel.get('margin');\r\n var triggerEvent = angleAxisModel.get('triggerEvent');\r\n each(labels, function (labelItem, idx) {\r\n var labelModel = commonLabelModel;\r\n var tickValue = labelItem.tickValue;\r\n var r = radiusExtent[getRadiusIdx(polar)];\r\n var p = polar.coordToPoint([r + labelMargin, labelItem.coord]);\r\n var cx = polar.cx;\r\n var cy = polar.cy;\r\n var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3\r\n ? 'center' : (p[0] > cx ? 'left' : 'right');\r\n var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3\r\n ? 'middle' : (p[1] > cy ? 'top' : 'bottom');\r\n if (rawCategoryData && rawCategoryData[tickValue]) {\r\n var rawCategoryItem = rawCategoryData[tickValue];\r\n if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\r\n labelModel = new Model(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel);\r\n }\r\n }\r\n var textEl = new ZRText({\r\n silent: AxisBuilder.isLabelSilent(angleAxisModel),\r\n style: createTextStyle(labelModel, {\r\n x: p[0],\r\n y: p[1],\r\n fill: labelModel.getTextColor()\r\n || angleAxisModel.get(['axisLine', 'lineStyle', 'color']),\r\n text: labelItem.formattedLabel,\r\n align: labelTextAlign,\r\n verticalAlign: labelTextVerticalAlign\r\n })\r\n });\r\n group.add(textEl);\r\n if (triggerEvent) {\r\n var eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel);\r\n eventData.targetType = 'axisLabel';\r\n eventData.value = labelItem.rawLabel;\r\n getECData(textEl).eventData = eventData;\r\n }\r\n }, this);\r\n },\r\n splitLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n var splitLineModel = angleAxisModel.getModel('splitLine');\r\n var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n var lineColors = lineStyleModel.get('color');\r\n var lineCount = 0;\r\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\r\n var splitLines = [];\r\n for (var i = 0; i < ticksAngles.length; i++) {\r\n var colorIndex = (lineCount++) % lineColors.length;\r\n splitLines[colorIndex] = splitLines[colorIndex] || [];\r\n splitLines[colorIndex].push(new Line({\r\n shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)\r\n }));\r\n }\r\n for (var i = 0; i < splitLines.length; i++) {\r\n group.add(mergePath$1(splitLines[i], {\r\n style: defaults({\r\n stroke: lineColors[i % lineColors.length]\r\n }, lineStyleModel.getLineStyle()),\r\n silent: true,\r\n z: angleAxisModel.get('z')\r\n }));\r\n }\r\n },\r\n minorSplitLine: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n if (!minorTickAngles.length) {\r\n return;\r\n }\r\n var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine');\r\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n var lines = [];\r\n for (var i = 0; i < minorTickAngles.length; i++) {\r\n for (var k = 0; k < minorTickAngles[i].length; k++) {\r\n lines.push(new Line({\r\n shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord)\r\n }));\r\n }\r\n }\r\n group.add(mergePath$1(lines, {\r\n style: lineStyleModel.getLineStyle(),\r\n silent: true,\r\n z: angleAxisModel.get('z')\r\n }));\r\n },\r\n splitArea: function (group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\r\n if (!ticksAngles.length) {\r\n return;\r\n }\r\n var splitAreaModel = angleAxisModel.getModel('splitArea');\r\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n var areaColors = areaStyleModel.get('color');\r\n var lineCount = 0;\r\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\r\n var splitAreas = [];\r\n var RADIAN = Math.PI / 180;\r\n var prevAngle = -ticksAngles[0].coord * RADIAN;\r\n var r0 = Math.min(radiusExtent[0], radiusExtent[1]);\r\n var r1 = Math.max(radiusExtent[0], radiusExtent[1]);\r\n var clockwise = angleAxisModel.get('clockwise');\r\n for (var i = 1, len = ticksAngles.length; i <= len; i++) {\r\n var coord = i === len ? ticksAngles[0].coord : ticksAngles[i].coord;\r\n var colorIndex = (lineCount++) % areaColors.length;\r\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\r\n splitAreas[colorIndex].push(new Sector({\r\n shape: {\r\n cx: polar.cx,\r\n cy: polar.cy,\r\n r0: r0,\r\n r: r1,\r\n startAngle: prevAngle,\r\n endAngle: -coord * RADIAN,\r\n clockwise: clockwise\r\n },\r\n silent: true\r\n }));\r\n prevAngle = -coord * RADIAN;\r\n }\r\n for (var i = 0; i < splitAreas.length; i++) {\r\n group.add(mergePath$1(splitAreas[i], {\r\n style: defaults({\r\n fill: areaColors[i % areaColors.length]\r\n }, areaStyleModel.getAreaStyle()),\r\n silent: true\r\n }));\r\n }\r\n }\r\n};\r\nComponentView.registerClass(AngleAxisView);\n\nvar axisBuilderAttrs$3 = [\r\n 'axisLine', 'axisTickLabel', 'axisName'\r\n];\r\nvar selfBuilderAttrs$2 = [\r\n 'splitLine', 'splitArea', 'minorSplitLine'\r\n];\r\nvar RadiusAxisView = (function (_super) {\r\n __extends(RadiusAxisView, _super);\r\n function RadiusAxisView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = RadiusAxisView.type;\r\n _this.axisPointerClass = 'PolarAxisPointer';\r\n return _this;\r\n }\r\n RadiusAxisView.prototype.render = function (radiusAxisModel, ecModel) {\r\n this.group.removeAll();\r\n if (!radiusAxisModel.get('show')) {\r\n return;\r\n }\r\n var oldAxisGroup = this._axisGroup;\r\n var newAxisGroup = this._axisGroup = new Group();\r\n this.group.add(newAxisGroup);\r\n var radiusAxis = radiusAxisModel.axis;\r\n var polar = radiusAxis.polar;\r\n var angleAxis = polar.getAngleAxis();\r\n var ticksCoords = radiusAxis.getTicksCoords();\r\n var minorTicksCoords = radiusAxis.getMinorTicksCoords();\r\n var axisAngle = angleAxis.getExtent()[0];\r\n var radiusExtent = radiusAxis.getExtent();\r\n var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\r\n var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\r\n each(axisBuilderAttrs$3, axisBuilder.add, axisBuilder);\r\n newAxisGroup.add(axisBuilder.getGroup());\r\n groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel);\r\n each(selfBuilderAttrs$2, function (name) {\r\n if (radiusAxisModel.get([name, 'show']) && !radiusAxis.scale.isBlank()) {\r\n axisElementBuilders$2[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);\r\n }\r\n }, this);\r\n };\r\n RadiusAxisView.type = 'radiusAxis';\r\n return RadiusAxisView;\r\n}(AxisView));\r\nvar axisElementBuilders$2 = {\r\n splitLine: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\r\n var splitLineModel = radiusAxisModel.getModel('splitLine');\r\n var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n var lineColors = lineStyleModel.get('color');\r\n var lineCount = 0;\r\n lineColors = lineColors instanceof Array ? lineColors : [lineColors];\r\n var splitLines = [];\r\n for (var i = 0; i < ticksCoords.length; i++) {\r\n var colorIndex = (lineCount++) % lineColors.length;\r\n splitLines[colorIndex] = splitLines[colorIndex] || [];\r\n splitLines[colorIndex].push(new Circle({\r\n shape: {\r\n cx: polar.cx,\r\n cy: polar.cy,\r\n r: ticksCoords[i].coord\r\n }\r\n }));\r\n }\r\n for (var i = 0; i < splitLines.length; i++) {\r\n group.add(mergePath$1(splitLines[i], {\r\n style: defaults({\r\n stroke: lineColors[i % lineColors.length],\r\n fill: null\r\n }, lineStyleModel.getLineStyle()),\r\n silent: true\r\n }));\r\n }\r\n },\r\n minorSplitLine: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {\r\n if (!minorTicksCoords.length) {\r\n return;\r\n }\r\n var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine');\r\n var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n var lines = [];\r\n for (var i = 0; i < minorTicksCoords.length; i++) {\r\n for (var k = 0; k < minorTicksCoords[i].length; k++) {\r\n lines.push(new Circle({\r\n shape: {\r\n cx: polar.cx,\r\n cy: polar.cy,\r\n r: minorTicksCoords[i][k].coord\r\n }\r\n }));\r\n }\r\n }\r\n group.add(mergePath$1(lines, {\r\n style: defaults({\r\n fill: null\r\n }, lineStyleModel.getLineStyle()),\r\n silent: true\r\n }));\r\n },\r\n splitArea: function (group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\r\n if (!ticksCoords.length) {\r\n return;\r\n }\r\n var splitAreaModel = radiusAxisModel.getModel('splitArea');\r\n var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n var areaColors = areaStyleModel.get('color');\r\n var lineCount = 0;\r\n areaColors = areaColors instanceof Array ? areaColors : [areaColors];\r\n var splitAreas = [];\r\n var prevRadius = ticksCoords[0].coord;\r\n for (var i = 1; i < ticksCoords.length; i++) {\r\n var colorIndex = (lineCount++) % areaColors.length;\r\n splitAreas[colorIndex] = splitAreas[colorIndex] || [];\r\n splitAreas[colorIndex].push(new Sector({\r\n shape: {\r\n cx: polar.cx,\r\n cy: polar.cy,\r\n r0: prevRadius,\r\n r: ticksCoords[i].coord,\r\n startAngle: 0,\r\n endAngle: Math.PI * 2\r\n },\r\n silent: true\r\n }));\r\n prevRadius = ticksCoords[i].coord;\r\n }\r\n for (var i = 0; i < splitAreas.length; i++) {\r\n group.add(mergePath$1(splitAreas[i], {\r\n style: defaults({\r\n fill: areaColors[i % areaColors.length]\r\n }, areaStyleModel.getAreaStyle()),\r\n silent: true\r\n }));\r\n }\r\n }\r\n};\r\nfunction layoutAxis(polar, radiusAxisModel, axisAngle) {\r\n return {\r\n position: [polar.cx, polar.cy],\r\n rotation: axisAngle / 180 * Math.PI,\r\n labelDirection: -1,\r\n tickDirection: -1,\r\n nameDirection: 1,\r\n labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\r\n z2: 1\r\n };\r\n}\r\nAxisView.registerClass(RadiusAxisView);\n\nvar PolarAxisPointer = (function (_super) {\r\n __extends(PolarAxisPointer, _super);\r\n function PolarAxisPointer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n PolarAxisPointer.prototype.makeElOption = function (elOption, value, axisModel, axisPointerModel, api) {\r\n var axis = axisModel.axis;\r\n if (axis.dim === 'angle') {\r\n this.animationThreshold = Math.PI / 18;\r\n }\r\n var polar = axis.polar;\r\n var otherAxis = polar.getOtherAxis(axis);\r\n var otherExtent = otherAxis.getExtent();\r\n var coordValue = axis.dataToCoord(value);\r\n var axisPointerType = axisPointerModel.get('type');\r\n if (axisPointerType && axisPointerType !== 'none') {\r\n var elStyle = buildElStyle(axisPointerModel);\r\n var pointerOption = pointerShapeBuilder$2[axisPointerType](axis, polar, coordValue, otherExtent);\r\n pointerOption.style = elStyle;\r\n elOption.graphicKey = pointerOption.type;\r\n elOption.pointer = pointerOption;\r\n }\r\n var labelMargin = axisPointerModel.get(['label', 'margin']);\r\n var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);\r\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);\r\n };\r\n return PolarAxisPointer;\r\n}(BaseAxisPointer));\r\nfunction getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {\r\n var axis = axisModel.axis;\r\n var coord = axis.dataToCoord(value);\r\n var axisAngle = polar.getAngleAxis().getExtent()[0];\r\n axisAngle = axisAngle / 180 * Math.PI;\r\n var radiusExtent = polar.getRadiusAxis().getExtent();\r\n var position;\r\n var align;\r\n var verticalAlign;\r\n if (axis.dim === 'radius') {\r\n var transform = create$1();\r\n rotate(transform, transform, axisAngle);\r\n translate(transform, transform, [polar.cx, polar.cy]);\r\n position = applyTransform$1([coord, -labelMargin], transform);\r\n var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;\r\n var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);\r\n align = labelLayout.textAlign;\r\n verticalAlign = labelLayout.textVerticalAlign;\r\n }\r\n else {\r\n var r = radiusExtent[1];\r\n position = polar.coordToPoint([r + labelMargin, coord]);\r\n var cx = polar.cx;\r\n var cy = polar.cy;\r\n align = Math.abs(position[0] - cx) / r < 0.3\r\n ? 'center' : (position[0] > cx ? 'left' : 'right');\r\n verticalAlign = Math.abs(position[1] - cy) / r < 0.3\r\n ? 'middle' : (position[1] > cy ? 'top' : 'bottom');\r\n }\r\n return {\r\n position: position,\r\n align: align,\r\n verticalAlign: verticalAlign\r\n };\r\n}\r\nvar pointerShapeBuilder$2 = {\r\n line: function (axis, polar, coordValue, otherExtent) {\r\n return axis.dim === 'angle'\r\n ? {\r\n type: 'Line',\r\n shape: makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))\r\n }\r\n : {\r\n type: 'Circle',\r\n shape: {\r\n cx: polar.cx,\r\n cy: polar.cy,\r\n r: coordValue\r\n }\r\n };\r\n },\r\n shadow: function (axis, polar, coordValue, otherExtent) {\r\n var bandWidth = Math.max(1, axis.getBandWidth());\r\n var radian = Math.PI / 180;\r\n return axis.dim === 'angle'\r\n ? {\r\n type: 'Sector',\r\n shape: makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian)\r\n }\r\n : {\r\n type: 'Sector',\r\n shape: makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)\r\n };\r\n }\r\n};\r\nAxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\n\nregisterLayout(curry(barLayoutPolar, 'bar'));\r\nextendComponentView({\r\n type: 'polar'\r\n});\n\nvar GeoView = (function (_super) {\r\n __extends(GeoView, _super);\r\n function GeoView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = GeoView.type;\r\n return _this;\r\n }\r\n GeoView.prototype.init = function (ecModel, api) {\r\n var mapDraw = new MapDraw(api);\r\n this._mapDraw = mapDraw;\r\n this.group.add(mapDraw.group);\r\n this._api = api;\r\n };\r\n GeoView.prototype.render = function (geoModel, ecModel, api, payload) {\r\n var mapDraw = this._mapDraw;\r\n if (geoModel.get('show')) {\r\n mapDraw.draw(geoModel, ecModel, api, this, payload);\r\n }\r\n else {\r\n this._mapDraw.group.removeAll();\r\n }\r\n mapDraw.group.on('click', this._handleRegionClick, this);\r\n mapDraw.group.silent = geoModel.get('silent');\r\n this._model = geoModel;\r\n this.updateSelectStatus(geoModel, ecModel, api);\r\n };\r\n GeoView.prototype._handleRegionClick = function (e) {\r\n var current = e.target;\r\n var eventData;\r\n while (current && (eventData = getECData(current).eventData) == null) {\r\n current = current.__hostTarget || current.parent;\r\n }\r\n if (eventData) {\r\n this._api.dispatchAction({\r\n type: 'geoToggleSelect',\r\n geoId: this._model.id,\r\n name: eventData.name\r\n });\r\n }\r\n };\r\n GeoView.prototype.updateSelectStatus = function (model, ecModel, api) {\r\n var _this = this;\r\n this._mapDraw.group.traverse(function (node) {\r\n var eventData = getECData(node).eventData;\r\n if (eventData) {\r\n _this._model.isSelected(eventData.name)\r\n ? api.enterSelect(node) : api.leaveSelect(node);\r\n return true;\r\n }\r\n });\r\n };\r\n GeoView.prototype.dispose = function () {\r\n this._mapDraw && this._mapDraw.remove();\r\n };\r\n GeoView.type = 'geo';\r\n return GeoView;\r\n}(ComponentView));\r\nComponentView.registerClass(GeoView);\n\nvar GeoModel = (function (_super) {\r\n __extends(GeoModel, _super);\r\n function GeoModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = GeoModel.type;\r\n return _this;\r\n }\r\n GeoModel.prototype.init = function (option, parentModel, ecModel) {\r\n _super.prototype.init.call(this, option, parentModel, ecModel);\r\n defaultEmphasis(option, 'label', ['show']);\r\n };\r\n GeoModel.prototype.optionUpdated = function () {\r\n var option = this.option;\r\n var self = this;\r\n option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap);\r\n var selectedMap = {};\r\n this._optionModelMap = reduce(option.regions || [], function (optionModelMap, regionOpt) {\r\n var regionName = regionOpt.name;\r\n if (regionName) {\r\n optionModelMap.set(regionName, new Model(regionOpt, self));\r\n if (regionOpt.selected) {\r\n selectedMap[regionName] = true;\r\n }\r\n }\r\n return optionModelMap;\r\n }, createHashMap());\r\n if (!option.selectedMap) {\r\n option.selectedMap = selectedMap;\r\n }\r\n };\r\n GeoModel.prototype.getRegionModel = function (name) {\r\n return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);\r\n };\r\n GeoModel.prototype.getFormattedLabel = function (name, status) {\r\n var regionModel = this.getRegionModel(name);\r\n var formatter = status === 'normal'\r\n ? regionModel.get(['label', 'formatter'])\r\n : regionModel.get(['emphasis', 'label', 'formatter']);\r\n var params = {\r\n name: name\r\n };\r\n if (typeof formatter === 'function') {\r\n params.status = status;\r\n return formatter(params);\r\n }\r\n else if (typeof formatter === 'string') {\r\n return formatter.replace('{a}', name != null ? name : '');\r\n }\r\n };\r\n GeoModel.prototype.setZoom = function (zoom) {\r\n this.option.zoom = zoom;\r\n };\r\n GeoModel.prototype.setCenter = function (center) {\r\n this.option.center = center;\r\n };\r\n GeoModel.prototype.select = function (name) {\r\n var option = this.option;\r\n var selectedMode = option.selectedMode;\r\n if (!selectedMode) {\r\n return;\r\n }\r\n if (selectedMode !== 'multiple') {\r\n option.selectedMap = null;\r\n }\r\n var selectedMap = option.selectedMap || (option.selectedMap = {});\r\n selectedMap[name] = true;\r\n };\r\n GeoModel.prototype.unSelect = function (name) {\r\n var selectedMap = this.option.selectedMap;\r\n if (selectedMap) {\r\n selectedMap[name] = false;\r\n }\r\n };\r\n GeoModel.prototype.toggleSelected = function (name) {\r\n this[this.isSelected(name) ? 'unSelect' : 'select'](name);\r\n };\r\n GeoModel.prototype.isSelected = function (name) {\r\n var selectedMap = this.option.selectedMap;\r\n return !!(selectedMap && selectedMap[name]);\r\n };\r\n GeoModel.prototype._initSelectedMapFromData = function () {\r\n };\r\n GeoModel.type = 'geo';\r\n GeoModel.layoutMode = 'box';\r\n GeoModel.defaultOption = {\r\n zlevel: 0,\r\n z: 0,\r\n show: true,\r\n left: 'center',\r\n top: 'center',\r\n aspectScale: null,\r\n silent: false,\r\n map: '',\r\n boundingCoords: null,\r\n center: null,\r\n zoom: 1,\r\n scaleLimit: null,\r\n label: {\r\n show: false,\r\n color: '#000'\r\n },\r\n itemStyle: {\r\n borderWidth: 0.5,\r\n borderColor: '#444',\r\n color: '#eee'\r\n },\r\n emphasis: {\r\n label: {\r\n show: true,\r\n color: 'rgb(100,0,0)'\r\n },\r\n itemStyle: {\r\n color: 'rgba(255,215,0,0.8)'\r\n }\r\n },\r\n select: {\r\n label: {\r\n show: true,\r\n color: 'rgb(100,0,0)'\r\n },\r\n itemStyle: {\r\n color: 'rgba(255,215,0,0.8)'\r\n }\r\n },\r\n regions: []\r\n };\r\n return GeoModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(GeoModel);\n\nfunction makeAction(method, actionInfo) {\r\n actionInfo.update = 'geo:updateSelectStatus';\r\n registerAction(actionInfo, function (payload, ecModel) {\r\n var selected = {};\r\n ecModel.eachComponent({ mainType: 'geo', query: payload }, function (geoModel) {\r\n geoModel[method](payload.name);\r\n var geo = geoModel.coordinateSystem;\r\n each(geo.regions, function (region) {\r\n selected[region.name] = geoModel.isSelected(region.name) || false;\r\n });\r\n });\r\n return {\r\n selected: selected,\r\n name: payload.name\r\n };\r\n });\r\n}\r\nmakeAction('toggleSelected', {\r\n type: 'geoToggleSelect',\r\n event: 'geoselectchanged'\r\n});\r\nmakeAction('select', {\r\n type: 'geoSelect',\r\n event: 'geoselected'\r\n});\r\nmakeAction('unSelect', {\r\n type: 'geoUnSelect',\r\n event: 'geounselected'\r\n});\n\nvar PROXIMATE_ONE_DAY = 86400000;\r\nvar Calendar = (function () {\r\n function Calendar(calendarModel, ecModel, api) {\r\n this.type = 'calendar';\r\n this.dimensions = Calendar.dimensions;\r\n this.getDimensionsInfo = Calendar.getDimensionsInfo;\r\n this._model = calendarModel;\r\n }\r\n Calendar.getDimensionsInfo = function () {\r\n return [{\r\n name: 'time', type: 'time'\r\n }, 'value'];\r\n };\r\n Calendar.prototype.getRangeInfo = function () {\r\n return this._rangeInfo;\r\n };\r\n Calendar.prototype.getModel = function () {\r\n return this._model;\r\n };\r\n Calendar.prototype.getRect = function () {\r\n return this._rect;\r\n };\r\n Calendar.prototype.getCellWidth = function () {\r\n return this._sw;\r\n };\r\n Calendar.prototype.getCellHeight = function () {\r\n return this._sh;\r\n };\r\n Calendar.prototype.getOrient = function () {\r\n return this._orient;\r\n };\r\n Calendar.prototype.getFirstDayOfWeek = function () {\r\n return this._firstDayOfWeek;\r\n };\r\n Calendar.prototype.getDateInfo = function (date) {\r\n date = parseDate(date);\r\n var y = date.getFullYear();\r\n var m = date.getMonth() + 1;\r\n var mStr = m < 10 ? '0' + m : '' + m;\r\n var d = date.getDate();\r\n var dStr = d < 10 ? '0' + d : '' + d;\r\n var day = date.getDay();\r\n day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);\r\n return {\r\n y: y + '',\r\n m: mStr,\r\n d: dStr,\r\n day: day,\r\n time: date.getTime(),\r\n formatedDate: y + '-' + mStr + '-' + dStr,\r\n date: date\r\n };\r\n };\r\n Calendar.prototype.getNextNDay = function (date, n) {\r\n n = n || 0;\r\n if (n === 0) {\r\n return this.getDateInfo(date);\r\n }\r\n date = new Date(this.getDateInfo(date).time);\r\n date.setDate(date.getDate() + n);\r\n return this.getDateInfo(date);\r\n };\r\n Calendar.prototype.update = function (ecModel, api) {\r\n this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay');\r\n this._orient = this._model.get('orient');\r\n this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0;\r\n this._rangeInfo = this._getRangeInfo(this._initRangeOption());\r\n var weeks = this._rangeInfo.weeks || 1;\r\n var whNames = ['width', 'height'];\r\n var cellSize = this._model.getCellSize().slice();\r\n var layoutParams = this._model.getBoxLayoutParams();\r\n var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];\r\n each([0, 1], function (idx) {\r\n if (cellSizeSpecified(cellSize, idx)) {\r\n layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];\r\n }\r\n });\r\n var whGlobal = {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n };\r\n var calendarRect = this._rect = getLayoutRect(layoutParams, whGlobal);\r\n each([0, 1], function (idx) {\r\n if (!cellSizeSpecified(cellSize, idx)) {\r\n cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];\r\n }\r\n });\r\n function cellSizeSpecified(cellSize, idx) {\r\n return cellSize[idx] != null && cellSize[idx] !== 'auto';\r\n }\r\n this._sw = cellSize[0];\r\n this._sh = cellSize[1];\r\n };\r\n Calendar.prototype.dataToPoint = function (data, clamp) {\r\n isArray(data) && (data = data[0]);\r\n clamp == null && (clamp = true);\r\n var dayInfo = this.getDateInfo(data);\r\n var range = this._rangeInfo;\r\n var date = dayInfo.formatedDate;\r\n if (clamp && !(dayInfo.time >= range.start.time\r\n && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) {\r\n return [NaN, NaN];\r\n }\r\n var week = dayInfo.day;\r\n var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;\r\n if (this._orient === 'vertical') {\r\n return [\r\n this._rect.x + week * this._sw + this._sw / 2,\r\n this._rect.y + nthWeek * this._sh + this._sh / 2\r\n ];\r\n }\r\n return [\r\n this._rect.x + nthWeek * this._sw + this._sw / 2,\r\n this._rect.y + week * this._sh + this._sh / 2\r\n ];\r\n };\r\n Calendar.prototype.pointToData = function (point) {\r\n var date = this.pointToDate(point);\r\n return date && date.time;\r\n };\r\n Calendar.prototype.dataToRect = function (data, clamp) {\r\n var point = this.dataToPoint(data, clamp);\r\n return {\r\n contentShape: {\r\n x: point[0] - (this._sw - this._lineWidth) / 2,\r\n y: point[1] - (this._sh - this._lineWidth) / 2,\r\n width: this._sw - this._lineWidth,\r\n height: this._sh - this._lineWidth\r\n },\r\n center: point,\r\n tl: [\r\n point[0] - this._sw / 2,\r\n point[1] - this._sh / 2\r\n ],\r\n tr: [\r\n point[0] + this._sw / 2,\r\n point[1] - this._sh / 2\r\n ],\r\n br: [\r\n point[0] + this._sw / 2,\r\n point[1] + this._sh / 2\r\n ],\r\n bl: [\r\n point[0] - this._sw / 2,\r\n point[1] + this._sh / 2\r\n ]\r\n };\r\n };\r\n Calendar.prototype.pointToDate = function (point) {\r\n var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;\r\n var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;\r\n var range = this._rangeInfo.range;\r\n if (this._orient === 'vertical') {\r\n return this._getDateByWeeksAndDay(nthY, nthX - 1, range);\r\n }\r\n return this._getDateByWeeksAndDay(nthX, nthY - 1, range);\r\n };\r\n Calendar.prototype.convertToPixel = function (ecModel, finder, value) {\r\n var coordSys = getCoordSys$4(finder);\r\n return coordSys === this ? coordSys.dataToPoint(value) : null;\r\n };\r\n Calendar.prototype.convertFromPixel = function (ecModel, finder, pixel) {\r\n var coordSys = getCoordSys$4(finder);\r\n return coordSys === this ? coordSys.pointToData(pixel) : null;\r\n };\r\n Calendar.prototype.containPoint = function (point) {\r\n console.warn('Not implemented.');\r\n return false;\r\n };\r\n Calendar.prototype._initRangeOption = function () {\r\n var range = this._model.get('range');\r\n var normalizedRange;\r\n if (isArray(range) && range.length === 1) {\r\n range = range[0];\r\n }\r\n if (!isArray(range)) {\r\n var rangeStr = range.toString();\r\n if (/^\\d{4}$/.test(rangeStr)) {\r\n normalizedRange = [rangeStr + '-01-01', rangeStr + '-12-31'];\r\n }\r\n if (/^\\d{4}[\\/|-]\\d{1,2}$/.test(rangeStr)) {\r\n var start = this.getDateInfo(rangeStr);\r\n var firstDay = start.date;\r\n firstDay.setMonth(firstDay.getMonth() + 1);\r\n var end = this.getNextNDay(firstDay, -1);\r\n normalizedRange = [start.formatedDate, end.formatedDate];\r\n }\r\n if (/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(rangeStr)) {\r\n normalizedRange = [rangeStr, rangeStr];\r\n }\r\n }\r\n else {\r\n normalizedRange = range;\r\n }\r\n if (!normalizedRange) {\r\n if (__DEV__) {\r\n logError('Invalid date range.');\r\n }\r\n return range;\r\n }\r\n var tmp = this._getRangeInfo(normalizedRange);\r\n if (tmp.start.time > tmp.end.time) {\r\n normalizedRange.reverse();\r\n }\r\n return normalizedRange;\r\n };\r\n Calendar.prototype._getRangeInfo = function (range) {\r\n var parsedRange = [\r\n this.getDateInfo(range[0]),\r\n this.getDateInfo(range[1])\r\n ];\r\n var reversed;\r\n if (parsedRange[0].time > parsedRange[1].time) {\r\n reversed = true;\r\n parsedRange.reverse();\r\n }\r\n var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY)\r\n - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) + 1;\r\n var date = new Date(parsedRange[0].time);\r\n var startDateNum = date.getDate();\r\n var endDateNum = parsedRange[1].date.getDate();\r\n date.setDate(startDateNum + allDay - 1);\r\n var dateNum = date.getDate();\r\n if (dateNum !== endDateNum) {\r\n var sign = date.getTime() - parsedRange[1].time > 0 ? 1 : -1;\r\n while ((dateNum = date.getDate()) !== endDateNum\r\n && (date.getTime() - parsedRange[1].time) * sign > 0) {\r\n allDay -= sign;\r\n date.setDate(dateNum - sign);\r\n }\r\n }\r\n var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7);\r\n var nthWeek = reversed ? -weeks + 1 : weeks - 1;\r\n reversed && parsedRange.reverse();\r\n return {\r\n range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate],\r\n start: parsedRange[0],\r\n end: parsedRange[1],\r\n allDay: allDay,\r\n weeks: weeks,\r\n nthWeek: nthWeek,\r\n fweek: parsedRange[0].day,\r\n lweek: parsedRange[1].day\r\n };\r\n };\r\n Calendar.prototype._getDateByWeeksAndDay = function (nthWeek, day, range) {\r\n var rangeInfo = this._getRangeInfo(range);\r\n if (nthWeek > rangeInfo.weeks\r\n || (nthWeek === 0 && day < rangeInfo.fweek)\r\n || (nthWeek === rangeInfo.weeks && day > rangeInfo.lweek)) {\r\n return null;\r\n }\r\n var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;\r\n var date = new Date(rangeInfo.start.time);\r\n date.setDate(+rangeInfo.start.d + nthDay);\r\n return this.getDateInfo(date);\r\n };\r\n Calendar.create = function (ecModel, api) {\r\n var calendarList = [];\r\n ecModel.eachComponent('calendar', function (calendarModel) {\r\n var calendar = new Calendar(calendarModel, ecModel, api);\r\n calendarList.push(calendar);\r\n calendarModel.coordinateSystem = calendar;\r\n });\r\n ecModel.eachSeries(function (calendarSeries) {\r\n if (calendarSeries.get('coordinateSystem') === 'calendar') {\r\n calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];\r\n }\r\n });\r\n return calendarList;\r\n };\r\n Calendar.dimensions = ['time', 'value'];\r\n return Calendar;\r\n}());\r\nfunction getCoordSys$4(finder) {\r\n var calendarModel = finder.calendarModel;\r\n var seriesModel = finder.seriesModel;\r\n var coordSys = calendarModel\r\n ? calendarModel.coordinateSystem\r\n : seriesModel\r\n ? seriesModel.coordinateSystem\r\n : null;\r\n return coordSys;\r\n}\r\nCoordinateSystemManager.register('calendar', Calendar);\n\nvar CalendarModel = (function (_super) {\r\n __extends(CalendarModel, _super);\r\n function CalendarModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CalendarModel.type;\r\n return _this;\r\n }\r\n CalendarModel.prototype.init = function (option, parentModel, ecModel) {\r\n var inputPositionParams = getLayoutParams(option);\r\n _super.prototype.init.apply(this, arguments);\r\n mergeAndNormalizeLayoutParams(option, inputPositionParams);\r\n };\r\n CalendarModel.prototype.mergeOption = function (option) {\r\n _super.prototype.mergeOption.apply(this, arguments);\r\n mergeAndNormalizeLayoutParams(this.option, option);\r\n };\r\n CalendarModel.prototype.getCellSize = function () {\r\n return this.option.cellSize;\r\n };\r\n CalendarModel.type = 'calendar';\r\n CalendarModel.defaultOption = {\r\n zlevel: 0,\r\n z: 2,\r\n left: 80,\r\n top: 60,\r\n cellSize: 20,\r\n orient: 'horizontal',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#000',\r\n width: 1,\r\n type: 'solid'\r\n }\r\n },\r\n itemStyle: {\r\n color: '#fff',\r\n borderWidth: 1,\r\n borderColor: '#ccc'\r\n },\r\n dayLabel: {\r\n show: true,\r\n firstDay: 0,\r\n position: 'start',\r\n margin: '50%',\r\n nameMap: 'en',\r\n color: '#000'\r\n },\r\n monthLabel: {\r\n show: true,\r\n position: 'start',\r\n margin: 5,\r\n align: 'center',\r\n nameMap: 'en',\r\n formatter: null,\r\n color: '#000'\r\n },\r\n yearLabel: {\r\n show: true,\r\n position: null,\r\n margin: 30,\r\n formatter: null,\r\n color: '#ccc',\r\n fontFamily: 'sans-serif',\r\n fontWeight: 'bolder',\r\n fontSize: 20\r\n }\r\n };\r\n return CalendarModel;\r\n}(ComponentModel));\r\nfunction mergeAndNormalizeLayoutParams(target, raw) {\r\n var cellSize = target.cellSize;\r\n var cellSizeArr;\r\n if (!isArray(cellSize)) {\r\n cellSizeArr = target.cellSize = [cellSize, cellSize];\r\n }\r\n else {\r\n cellSizeArr = cellSize;\r\n }\r\n if (cellSizeArr.length === 1) {\r\n cellSizeArr[1] = cellSizeArr[0];\r\n }\r\n var ignoreSize = map([0, 1], function (hvIdx) {\r\n if (sizeCalculable(raw, hvIdx)) {\r\n cellSizeArr[hvIdx] = 'auto';\r\n }\r\n return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== 'auto';\r\n });\r\n mergeLayoutParam(target, raw, {\r\n type: 'box', ignoreSize: ignoreSize\r\n });\r\n}\r\nComponentModel.registerClass(CalendarModel);\n\nvar MONTH_TEXT = {\r\n EN: [\r\n 'Jan', 'Feb', 'Mar',\r\n 'Apr', 'May', 'Jun',\r\n 'Jul', 'Aug', 'Sep',\r\n 'Oct', 'Nov', 'Dec'\r\n ],\r\n CN: [\r\n '一月', '二月', '三月',\r\n '四月', '五月', '六月',\r\n '七月', '八月', '九月',\r\n '十月', '十一月', '十二月'\r\n ]\r\n};\r\nvar WEEK_TEXT = {\r\n EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\r\n CN: ['日', '一', '二', '三', '四', '五', '六']\r\n};\r\nvar CalendarView = (function (_super) {\r\n __extends(CalendarView, _super);\r\n function CalendarView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = CalendarView.type;\r\n return _this;\r\n }\r\n CalendarView.prototype.render = function (calendarModel, ecModel, api) {\r\n var group = this.group;\r\n group.removeAll();\r\n var coordSys = calendarModel.coordinateSystem;\r\n var rangeData = coordSys.getRangeInfo();\r\n var orient = coordSys.getOrient();\r\n this._renderDayRect(calendarModel, rangeData, group);\r\n this._renderLines(calendarModel, rangeData, orient, group);\r\n this._renderYearText(calendarModel, rangeData, orient, group);\r\n this._renderMonthText(calendarModel, orient, group);\r\n this._renderWeekText(calendarModel, rangeData, orient, group);\r\n };\r\n CalendarView.prototype._renderDayRect = function (calendarModel, rangeData, group) {\r\n var coordSys = calendarModel.coordinateSystem;\r\n var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\r\n var sw = coordSys.getCellWidth();\r\n var sh = coordSys.getCellHeight();\r\n for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\r\n var point = coordSys.dataToRect([i], false).tl;\r\n var rect = new Rect({\r\n shape: {\r\n x: point[0],\r\n y: point[1],\r\n width: sw,\r\n height: sh\r\n },\r\n cursor: 'default',\r\n style: itemRectStyleModel\r\n });\r\n group.add(rect);\r\n }\r\n };\r\n CalendarView.prototype._renderLines = function (calendarModel, rangeData, orient, group) {\r\n var self = this;\r\n var coordSys = calendarModel.coordinateSystem;\r\n var lineStyleModel = calendarModel.getModel(['splitLine', 'lineStyle']).getLineStyle();\r\n var show = calendarModel.get(['splitLine', 'show']);\r\n var lineWidth = lineStyleModel.lineWidth;\r\n this._tlpoints = [];\r\n this._blpoints = [];\r\n this._firstDayOfMonth = [];\r\n this._firstDayPoints = [];\r\n var firstDay = rangeData.start;\r\n for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\r\n addPoints(firstDay.formatedDate);\r\n if (i === 0) {\r\n firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\r\n }\r\n var date = firstDay.date;\r\n date.setMonth(date.getMonth() + 1);\r\n firstDay = coordSys.getDateInfo(date);\r\n }\r\n addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\r\n function addPoints(date) {\r\n self._firstDayOfMonth.push(coordSys.getDateInfo(date));\r\n self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\r\n var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\r\n self._tlpoints.push(points[0]);\r\n self._blpoints.push(points[points.length - 1]);\r\n show && self._drawSplitline(points, lineStyleModel, group);\r\n }\r\n show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group);\r\n show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\r\n };\r\n CalendarView.prototype._getEdgesPoints = function (points, lineWidth, orient) {\r\n var rs = [points[0].slice(), points[points.length - 1].slice()];\r\n var idx = orient === 'horizontal' ? 0 : 1;\r\n rs[0][idx] = rs[0][idx] - lineWidth / 2;\r\n rs[1][idx] = rs[1][idx] + lineWidth / 2;\r\n return rs;\r\n };\r\n CalendarView.prototype._drawSplitline = function (points, lineStyle, group) {\r\n var poyline = new Polyline({\r\n z2: 20,\r\n shape: {\r\n points: points\r\n },\r\n style: lineStyle\r\n });\r\n group.add(poyline);\r\n };\r\n CalendarView.prototype._getLinePointsOfOneWeek = function (calendarModel, date, orient) {\r\n var coordSys = calendarModel.coordinateSystem;\r\n var parsedDate = coordSys.getDateInfo(date);\r\n var points = [];\r\n for (var i = 0; i < 7; i++) {\r\n var tmpD = coordSys.getNextNDay(parsedDate.time, i);\r\n var point = coordSys.dataToRect([tmpD.time], false);\r\n points[2 * tmpD.day] = point.tl;\r\n points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\r\n }\r\n return points;\r\n };\r\n CalendarView.prototype._formatterLabel = function (formatter, params) {\r\n if (typeof formatter === 'string' && formatter) {\r\n return formatTplSimple(formatter, params);\r\n }\r\n if (typeof formatter === 'function') {\r\n return formatter(params);\r\n }\r\n return params.nameMap;\r\n };\r\n CalendarView.prototype._yearTextPositionControl = function (textEl, point, orient, position, margin) {\r\n var x = point[0];\r\n var y = point[1];\r\n var aligns = ['center', 'bottom'];\r\n if (position === 'bottom') {\r\n y += margin;\r\n aligns = ['center', 'top'];\r\n }\r\n else if (position === 'left') {\r\n x -= margin;\r\n }\r\n else if (position === 'right') {\r\n x += margin;\r\n aligns = ['center', 'top'];\r\n }\r\n else {\r\n y -= margin;\r\n }\r\n var rotate = 0;\r\n if (position === 'left' || position === 'right') {\r\n rotate = Math.PI / 2;\r\n }\r\n return {\r\n rotation: rotate,\r\n x: x,\r\n y: y,\r\n style: {\r\n align: aligns[0],\r\n verticalAlign: aligns[1]\r\n }\r\n };\r\n };\r\n CalendarView.prototype._renderYearText = function (calendarModel, rangeData, orient, group) {\r\n var yearLabel = calendarModel.getModel('yearLabel');\r\n if (!yearLabel.get('show')) {\r\n return;\r\n }\r\n var margin = yearLabel.get('margin');\r\n var pos = yearLabel.get('position');\r\n if (!pos) {\r\n pos = orient !== 'horizontal' ? 'top' : 'left';\r\n }\r\n var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\r\n var xc = (points[0][0] + points[1][0]) / 2;\r\n var yc = (points[0][1] + points[1][1]) / 2;\r\n var idx = orient === 'horizontal' ? 0 : 1;\r\n var posPoints = {\r\n top: [xc, points[idx][1]],\r\n bottom: [xc, points[1 - idx][1]],\r\n left: [points[1 - idx][0], yc],\r\n right: [points[idx][0], yc]\r\n };\r\n var name = rangeData.start.y;\r\n if (+rangeData.end.y > +rangeData.start.y) {\r\n name = name + '-' + rangeData.end.y;\r\n }\r\n var formatter = yearLabel.get('formatter');\r\n var params = {\r\n start: rangeData.start.y,\r\n end: rangeData.end.y,\r\n nameMap: name\r\n };\r\n var content = this._formatterLabel(formatter, params);\r\n var yearText = new ZRText({\r\n z2: 30,\r\n style: createTextStyle(yearLabel, {\r\n text: content\r\n })\r\n });\r\n yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\r\n group.add(yearText);\r\n };\r\n CalendarView.prototype._monthTextPositionControl = function (point, isCenter, orient, position, margin) {\r\n var align = 'left';\r\n var vAlign = 'top';\r\n var x = point[0];\r\n var y = point[1];\r\n if (orient === 'horizontal') {\r\n y = y + margin;\r\n if (isCenter) {\r\n align = 'center';\r\n }\r\n if (position === 'start') {\r\n vAlign = 'bottom';\r\n }\r\n }\r\n else {\r\n x = x + margin;\r\n if (isCenter) {\r\n vAlign = 'middle';\r\n }\r\n if (position === 'start') {\r\n align = 'right';\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n align: align,\r\n verticalAlign: vAlign\r\n };\r\n };\r\n CalendarView.prototype._renderMonthText = function (calendarModel, orient, group) {\r\n var monthLabel = calendarModel.getModel('monthLabel');\r\n if (!monthLabel.get('show')) {\r\n return;\r\n }\r\n var nameMap = monthLabel.get('nameMap');\r\n var margin = monthLabel.get('margin');\r\n var pos = monthLabel.get('position');\r\n var align = monthLabel.get('align');\r\n var termPoints = [this._tlpoints, this._blpoints];\r\n if (isString(nameMap)) {\r\n nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];\r\n }\r\n var idx = pos === 'start' ? 0 : 1;\r\n var axis = orient === 'horizontal' ? 0 : 1;\r\n margin = pos === 'start' ? -margin : margin;\r\n var isCenter = (align === 'center');\r\n for (var i = 0; i < termPoints[idx].length - 1; i++) {\r\n var tmp = termPoints[idx][i].slice();\r\n var firstDay = this._firstDayOfMonth[i];\r\n if (isCenter) {\r\n var firstDayPoints = this._firstDayPoints[i];\r\n tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\r\n }\r\n var formatter = monthLabel.get('formatter');\r\n var name_1 = nameMap[+firstDay.m - 1];\r\n var params = {\r\n yyyy: firstDay.y,\r\n yy: (firstDay.y + '').slice(2),\r\n MM: firstDay.m,\r\n M: +firstDay.m,\r\n nameMap: name_1\r\n };\r\n var content = this._formatterLabel(formatter, params);\r\n var monthText = new ZRText({\r\n z2: 30,\r\n style: extend(createTextStyle(monthLabel, { text: content }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin))\r\n });\r\n group.add(monthText);\r\n }\r\n };\r\n CalendarView.prototype._weekTextPositionControl = function (point, orient, position, margin, cellSize) {\r\n var align = 'center';\r\n var vAlign = 'middle';\r\n var x = point[0];\r\n var y = point[1];\r\n var isStart = position === 'start';\r\n if (orient === 'horizontal') {\r\n x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\r\n align = isStart ? 'right' : 'left';\r\n }\r\n else {\r\n y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\r\n vAlign = isStart ? 'bottom' : 'top';\r\n }\r\n return {\r\n x: x,\r\n y: y,\r\n align: align,\r\n verticalAlign: vAlign\r\n };\r\n };\r\n CalendarView.prototype._renderWeekText = function (calendarModel, rangeData, orient, group) {\r\n var dayLabel = calendarModel.getModel('dayLabel');\r\n if (!dayLabel.get('show')) {\r\n return;\r\n }\r\n var coordSys = calendarModel.coordinateSystem;\r\n var pos = dayLabel.get('position');\r\n var nameMap = dayLabel.get('nameMap');\r\n var margin = dayLabel.get('margin');\r\n var firstDayOfWeek = coordSys.getFirstDayOfWeek();\r\n if (isString(nameMap)) {\r\n nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];\r\n }\r\n var start = coordSys.getNextNDay(rangeData.end.time, (7 - rangeData.lweek)).time;\r\n var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\r\n margin = parsePercent$2(margin, cellSize[orient === 'horizontal' ? 0 : 1]);\r\n if (pos === 'start') {\r\n start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\r\n margin = -margin;\r\n }\r\n for (var i = 0; i < 7; i++) {\r\n var tmpD = coordSys.getNextNDay(start, i);\r\n var point = coordSys.dataToRect([tmpD.time], false).center;\r\n var day = i;\r\n day = Math.abs((i + firstDayOfWeek) % 7);\r\n var weekText = new ZRText({\r\n z2: 30,\r\n style: extend(createTextStyle(dayLabel, { text: nameMap[day] }), this._weekTextPositionControl(point, orient, pos, margin, cellSize))\r\n });\r\n group.add(weekText);\r\n }\r\n };\r\n CalendarView.type = 'calendar';\r\n return CalendarView;\r\n}(ComponentView));\r\nComponentView.registerClass(CalendarView);\n\nvar inner$g = makeInner();\r\nvar _nonShapeGraphicElements = {\r\n path: null,\r\n compoundPath: null,\r\n group: Group,\r\n image: ZRImage,\r\n text: ZRText\r\n};\r\nregisterPreprocessor(function (option) {\r\n var graphicOption = option.graphic;\r\n if (isArray(graphicOption)) {\r\n if (!graphicOption[0] || !graphicOption[0].elements) {\r\n option.graphic = [{ elements: graphicOption }];\r\n }\r\n else {\r\n option.graphic = [option.graphic[0]];\r\n }\r\n }\r\n else if (graphicOption && !graphicOption.elements) {\r\n option.graphic = [{ elements: [graphicOption] }];\r\n }\r\n});\r\nvar GraphicComponentModel = (function (_super) {\r\n __extends(GraphicComponentModel, _super);\r\n function GraphicComponentModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = GraphicComponentModel.type;\r\n return _this;\r\n }\r\n GraphicComponentModel.prototype.mergeOption = function (option, ecModel) {\r\n var elements = this.option.elements;\r\n this.option.elements = null;\r\n _super.prototype.mergeOption.call(this, option, ecModel);\r\n this.option.elements = elements;\r\n };\r\n GraphicComponentModel.prototype.optionUpdated = function (newOption, isInit) {\r\n var thisOption = this.option;\r\n var newList = (isInit ? thisOption : newOption).elements;\r\n var existList = thisOption.elements = isInit ? [] : thisOption.elements;\r\n var flattenedList = [];\r\n this._flatten(newList, flattenedList, null);\r\n var mappingResult = mappingToExists(existList, flattenedList, 'normalMerge');\r\n var elOptionsToUpdate = this._elOptionsToUpdate = [];\r\n each(mappingResult, function (resultItem, index) {\r\n var newElOption = resultItem.newOption;\r\n if (__DEV__) {\r\n assert(isObject(newElOption) || resultItem.existing, 'Empty graphic option definition');\r\n }\r\n if (!newElOption) {\r\n return;\r\n }\r\n elOptionsToUpdate.push(newElOption);\r\n setKeyInfoToNewElOption(resultItem, newElOption);\r\n mergeNewElOptionToExist(existList, index, newElOption);\r\n setLayoutInfoToExist(existList[index], newElOption);\r\n }, this);\r\n for (var i = existList.length - 1; i >= 0; i--) {\r\n if (existList[i] == null) {\r\n existList.splice(i, 1);\r\n }\r\n else {\r\n delete existList[i].$action;\r\n }\r\n }\r\n };\r\n GraphicComponentModel.prototype._flatten = function (optionList, result, parentOption) {\r\n each(optionList, function (option) {\r\n if (!option) {\r\n return;\r\n }\r\n if (parentOption) {\r\n option.parentOption = parentOption;\r\n }\r\n result.push(option);\r\n var children = option.children;\r\n if (option.type === 'group' && children) {\r\n this._flatten(children, result, option);\r\n }\r\n delete option.children;\r\n }, this);\r\n };\r\n GraphicComponentModel.prototype.useElOptionsToUpdate = function () {\r\n var els = this._elOptionsToUpdate;\r\n this._elOptionsToUpdate = null;\r\n return els;\r\n };\r\n GraphicComponentModel.type = 'graphic';\r\n GraphicComponentModel.defaultOption = {\r\n elements: []\r\n };\r\n return GraphicComponentModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(GraphicComponentModel);\r\nvar GraphicComponentView = (function (_super) {\r\n __extends(GraphicComponentView, _super);\r\n function GraphicComponentView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = GraphicComponentView.type;\r\n return _this;\r\n }\r\n GraphicComponentView.prototype.init = function () {\r\n this._elMap = createHashMap();\r\n };\r\n GraphicComponentView.prototype.render = function (graphicModel, ecModel, api) {\r\n if (graphicModel !== this._lastGraphicModel) {\r\n this._clear();\r\n }\r\n this._lastGraphicModel = graphicModel;\r\n this._updateElements(graphicModel);\r\n this._relocate(graphicModel, api);\r\n };\r\n GraphicComponentView.prototype._updateElements = function (graphicModel) {\r\n var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\r\n if (!elOptionsToUpdate) {\r\n return;\r\n }\r\n var elMap = this._elMap;\r\n var rootGroup = this.group;\r\n each(elOptionsToUpdate, function (elOption) {\r\n var id = convertOptionIdName(elOption.id, null);\r\n var elExisting = id != null ? elMap.get(id) : null;\r\n var parentId = convertOptionIdName(elOption.parentId, null);\r\n var targetElParent = (parentId != null ? elMap.get(parentId) : rootGroup);\r\n var elType = elOption.type;\r\n var elOptionStyle = elOption.style;\r\n if (elType === 'text' && elOptionStyle) {\r\n if (elOption.hv && elOption.hv[1]) {\r\n elOptionStyle.textVerticalAlign =\r\n elOptionStyle.textBaseline =\r\n elOptionStyle.verticalAlign =\r\n elOptionStyle.align = null;\r\n }\r\n }\r\n var textContentOption = elOption.textContent;\r\n var textConfig = elOption.textConfig;\r\n if (elOptionStyle\r\n && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) {\r\n var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true);\r\n if (!textConfig && convertResult.textConfig) {\r\n textConfig = elOption.textConfig = convertResult.textConfig;\r\n }\r\n if (!textContentOption && convertResult.textContent) {\r\n textContentOption = convertResult.textContent;\r\n }\r\n }\r\n var elOptionCleaned = getCleanedElOption(elOption);\r\n if (__DEV__) {\r\n elExisting && assert(targetElParent === elExisting.parent, 'Changing parent is not supported.');\r\n }\r\n var $action = elOption.$action || 'merge';\r\n if ($action === 'merge') {\r\n elExisting\r\n ? elExisting.attr(elOptionCleaned)\r\n : createEl$1(id, targetElParent, elOptionCleaned, elMap);\r\n }\r\n else if ($action === 'replace') {\r\n removeEl(elExisting, elMap);\r\n createEl$1(id, targetElParent, elOptionCleaned, elMap);\r\n }\r\n else if ($action === 'remove') {\r\n removeEl(elExisting, elMap);\r\n }\r\n var el = elMap.get(id);\r\n if (el && textContentOption) {\r\n if ($action === 'merge') {\r\n var textContentExisting = el.getTextContent();\r\n textContentExisting\r\n ? textContentExisting.attr(textContentOption)\r\n : el.setTextContent(new ZRText(textContentOption));\r\n }\r\n else if ($action === 'replace') {\r\n el.setTextContent(new ZRText(textContentOption));\r\n }\r\n }\r\n if (el) {\r\n var elInner = inner$g(el);\r\n elInner.__ecGraphicWidthOption = elOption.width;\r\n elInner.__ecGraphicHeightOption = elOption.height;\r\n setEventData(el, graphicModel, elOption);\r\n }\r\n });\r\n };\r\n GraphicComponentView.prototype._relocate = function (graphicModel, api) {\r\n var elOptions = graphicModel.option.elements;\r\n var rootGroup = this.group;\r\n var elMap = this._elMap;\r\n var apiWidth = api.getWidth();\r\n var apiHeight = api.getHeight();\r\n for (var i = 0; i < elOptions.length; i++) {\r\n var elOption = elOptions[i];\r\n var id = convertOptionIdName(elOption.id, null);\r\n var el = id != null ? elMap.get(id) : null;\r\n if (!el || !el.isGroup) {\r\n continue;\r\n }\r\n var parentEl = el.parent;\r\n var isParentRoot = parentEl === rootGroup;\r\n var elInner = inner$g(el);\r\n var parentElInner = inner$g(parentEl);\r\n elInner.__ecGraphicWidth = parsePercent$2(elInner.__ecGraphicWidthOption, isParentRoot ? apiWidth : parentElInner.__ecGraphicWidth) || 0;\r\n elInner.__ecGraphicHeight = parsePercent$2(elInner.__ecGraphicHeightOption, isParentRoot ? apiHeight : parentElInner.__ecGraphicHeight) || 0;\r\n }\r\n for (var i = elOptions.length - 1; i >= 0; i--) {\r\n var elOption = elOptions[i];\r\n var id = convertOptionIdName(elOption.id, null);\r\n var el = id != null ? elMap.get(id) : null;\r\n if (!el) {\r\n continue;\r\n }\r\n var parentEl = el.parent;\r\n var parentElInner = inner$g(parentEl);\r\n var containerInfo = parentEl === rootGroup\r\n ? {\r\n width: apiWidth,\r\n height: apiHeight\r\n }\r\n : {\r\n width: parentElInner.__ecGraphicWidth,\r\n height: parentElInner.__ecGraphicHeight\r\n };\r\n positionElement(el, elOption, containerInfo, null, { hv: elOption.hv, boundingMode: elOption.bounding });\r\n }\r\n };\r\n GraphicComponentView.prototype._clear = function () {\r\n var elMap = this._elMap;\r\n elMap.each(function (el) {\r\n removeEl(el, elMap);\r\n });\r\n this._elMap = createHashMap();\r\n };\r\n GraphicComponentView.prototype.dispose = function () {\r\n this._clear();\r\n };\r\n GraphicComponentView.type = 'graphic';\r\n return GraphicComponentView;\r\n}(ComponentView));\r\nComponentView.registerClass(GraphicComponentView);\r\nfunction createEl$1(id, targetElParent, elOption, elMap) {\r\n var graphicType = elOption.type;\r\n if (__DEV__) {\r\n assert(graphicType, 'graphic type MUST be set');\r\n }\r\n var Clz = (hasOwn(_nonShapeGraphicElements, graphicType)\r\n ? _nonShapeGraphicElements[graphicType]\r\n : getShapeClass(graphicType));\r\n if (__DEV__) {\r\n assert(Clz, 'graphic type can not be found');\r\n }\r\n var el = new Clz(elOption);\r\n targetElParent.add(el);\r\n elMap.set(id, el);\r\n inner$g(el).__ecGraphicId = id;\r\n}\r\nfunction removeEl(elExisting, elMap) {\r\n var existElParent = elExisting && elExisting.parent;\r\n if (existElParent) {\r\n elExisting.type === 'group' && elExisting.traverse(function (el) {\r\n removeEl(el, elMap);\r\n });\r\n elMap.removeKey(inner$g(elExisting).__ecGraphicId);\r\n existElParent.remove(elExisting);\r\n }\r\n}\r\nfunction getCleanedElOption(elOption) {\r\n elOption = extend({}, elOption);\r\n each(['id', 'parentId', '$action', 'hv', 'bounding', 'textContent'].concat(LOCATION_PARAMS), function (name) {\r\n delete elOption[name];\r\n });\r\n return elOption;\r\n}\r\nfunction isSetLoc(obj, props) {\r\n var isSet;\r\n each(props, function (prop) {\r\n obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\r\n });\r\n return isSet;\r\n}\r\nfunction setKeyInfoToNewElOption(resultItem, newElOption) {\r\n var existElOption = resultItem.existing;\r\n newElOption.id = resultItem.keyInfo.id;\r\n !newElOption.type && existElOption && (newElOption.type = existElOption.type);\r\n if (newElOption.parentId == null) {\r\n var newElParentOption = newElOption.parentOption;\r\n if (newElParentOption) {\r\n newElOption.parentId = newElParentOption.id;\r\n }\r\n else if (existElOption) {\r\n newElOption.parentId = existElOption.parentId;\r\n }\r\n }\r\n newElOption.parentOption = null;\r\n}\r\nfunction mergeNewElOptionToExist(existList, index, newElOption) {\r\n var newElOptCopy = extend({}, newElOption);\r\n var existElOption = existList[index];\r\n var $action = newElOption.$action || 'merge';\r\n if ($action === 'merge') {\r\n if (existElOption) {\r\n if (__DEV__) {\r\n var newType = newElOption.type;\r\n assert(!newType || existElOption.type === newType, 'Please set $action: \"replace\" to change `type`');\r\n }\r\n merge(existElOption, newElOptCopy, true);\r\n mergeLayoutParam(existElOption, newElOptCopy, { ignoreSize: true });\r\n copyLayoutParams(newElOption, existElOption);\r\n }\r\n else {\r\n existList[index] = newElOptCopy;\r\n }\r\n }\r\n else if ($action === 'replace') {\r\n existList[index] = newElOptCopy;\r\n }\r\n else if ($action === 'remove') {\r\n existElOption && (existList[index] = null);\r\n }\r\n}\r\nfunction setLayoutInfoToExist(existItem, newElOption) {\r\n if (!existItem) {\r\n return;\r\n }\r\n existItem.hv = newElOption.hv = [\r\n isSetLoc(newElOption, ['left', 'right']),\r\n isSetLoc(newElOption, ['top', 'bottom'])\r\n ];\r\n if (existItem.type === 'group') {\r\n var existingGroupOpt = existItem;\r\n var newGroupOpt = newElOption;\r\n existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0);\r\n existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0);\r\n }\r\n}\r\nfunction setEventData(el, graphicModel, elOption) {\r\n var eventData = getECData(el).eventData;\r\n if (!el.silent && !el.ignore && !eventData) {\r\n eventData = getECData(el).eventData = {\r\n componentType: 'graphic',\r\n componentIndex: graphicModel.componentIndex,\r\n name: el.name\r\n };\r\n }\r\n if (eventData) {\r\n eventData.info = elOption.info;\r\n }\r\n}\n\nvar ToolboxFeature = (function () {\r\n function ToolboxFeature() {\r\n }\r\n return ToolboxFeature;\r\n}());\r\nvar features = {};\r\nfunction registerFeature(name, ctor) {\r\n features[name] = ctor;\r\n}\r\nfunction getFeature(name) {\r\n return features[name];\r\n}\n\nvar ToolboxModel = (function (_super) {\r\n __extends(ToolboxModel, _super);\r\n function ToolboxModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ToolboxModel.type;\r\n return _this;\r\n }\r\n ToolboxModel.prototype.optionUpdated = function () {\r\n _super.prototype.optionUpdated.apply(this, arguments);\r\n var ecModel = this.ecModel;\r\n each(this.option.feature, function (featureOpt, featureName) {\r\n var Feature = getFeature(featureName);\r\n if (Feature) {\r\n if (Feature.getDefaultOption) {\r\n Feature.defaultOption = Feature.getDefaultOption(ecModel);\r\n }\r\n merge(featureOpt, Feature.defaultOption);\r\n }\r\n });\r\n };\r\n ToolboxModel.type = 'toolbox';\r\n ToolboxModel.layoutMode = {\r\n type: 'box',\r\n ignoreSize: true\r\n };\r\n ToolboxModel.defaultOption = {\r\n show: true,\r\n z: 6,\r\n zlevel: 0,\r\n orient: 'horizontal',\r\n left: 'right',\r\n top: 'top',\r\n backgroundColor: 'transparent',\r\n borderColor: '#ccc',\r\n borderRadius: 0,\r\n borderWidth: 0,\r\n padding: 5,\r\n itemSize: 15,\r\n itemGap: 8,\r\n showTitle: true,\r\n iconStyle: {\r\n borderColor: '#666',\r\n color: 'none'\r\n },\r\n emphasis: {\r\n iconStyle: {\r\n borderColor: '#3E98C5'\r\n }\r\n },\r\n tooltip: {\r\n show: false\r\n }\r\n };\r\n return ToolboxModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(ToolboxModel);\n\nfunction layout$3(group, componentModel, api) {\r\n var boxLayoutParams = componentModel.getBoxLayoutParams();\r\n var padding = componentModel.get('padding');\r\n var viewportSize = { width: api.getWidth(), height: api.getHeight() };\r\n var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\r\n box(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\r\n positionElement(group, boxLayoutParams, viewportSize, padding);\r\n}\r\nfunction makeBackground(rect, componentModel) {\r\n var padding = normalizeCssArray$1(componentModel.get('padding'));\r\n var style = componentModel.getItemStyle(['color', 'opacity']);\r\n style.fill = componentModel.get('backgroundColor');\r\n rect = new Rect({\r\n shape: {\r\n x: rect.x - padding[3],\r\n y: rect.y - padding[0],\r\n width: rect.width + padding[1] + padding[3],\r\n height: rect.height + padding[0] + padding[2],\r\n r: componentModel.get('borderRadius')\r\n },\r\n style: style,\r\n silent: true,\r\n z2: -1\r\n });\r\n return rect;\r\n}\n\nvar ToolboxView = (function (_super) {\r\n __extends(ToolboxView, _super);\r\n function ToolboxView() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ToolboxView.prototype.render = function (toolboxModel, ecModel, api, payload) {\r\n var group = this.group;\r\n group.removeAll();\r\n if (!toolboxModel.get('show')) {\r\n return;\r\n }\r\n var itemSize = +toolboxModel.get('itemSize');\r\n var featureOpts = toolboxModel.get('feature') || {};\r\n var features = this._features || (this._features = {});\r\n var featureNames = [];\r\n each(featureOpts, function (opt, name) {\r\n featureNames.push(name);\r\n });\r\n (new DataDiffer(this._featureNames || [], featureNames))\r\n .add(processFeature)\r\n .update(processFeature)\r\n .remove(curry(processFeature, null))\r\n .execute();\r\n this._featureNames = featureNames;\r\n function processFeature(newIndex, oldIndex) {\r\n var featureName = featureNames[newIndex];\r\n var oldName = featureNames[oldIndex];\r\n var featureOpt = featureOpts[featureName];\r\n var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\r\n var feature;\r\n if (payload && payload.newTitle != null && payload.featureName === featureName) {\r\n featureOpt.title = payload.newTitle;\r\n }\r\n if (featureName && !oldName) {\r\n if (isUserFeatureName(featureName)) {\r\n feature = {\r\n onclick: featureModel.option.onclick,\r\n featureName: featureName\r\n };\r\n }\r\n else {\r\n var Feature = getFeature(featureName);\r\n if (!Feature) {\r\n return;\r\n }\r\n feature = new Feature();\r\n }\r\n features[featureName] = feature;\r\n }\r\n else {\r\n feature = features[oldName];\r\n if (!feature) {\r\n return;\r\n }\r\n }\r\n feature.uid = getUID('toolbox-feature');\r\n feature.model = featureModel;\r\n feature.ecModel = ecModel;\r\n feature.api = api;\r\n if (feature instanceof ToolboxFeature) {\r\n if (!featureName && oldName) {\r\n feature.dispose && feature.dispose(ecModel, api);\r\n return;\r\n }\r\n if (!featureModel.get('show') || feature.unusable) {\r\n feature.remove && feature.remove(ecModel, api);\r\n return;\r\n }\r\n }\r\n createIconPaths(featureModel, feature, featureName);\r\n featureModel.setIconStatus = function (iconName, status) {\r\n var option = this.option;\r\n var iconPaths = this.iconPaths;\r\n option.iconStatus = option.iconStatus || {};\r\n option.iconStatus[iconName] = status;\r\n if (iconPaths[iconName]) {\r\n (status === 'emphasis' ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]);\r\n }\r\n };\r\n if (feature instanceof ToolboxFeature) {\r\n if (feature.render) {\r\n feature.render(featureModel, ecModel, api, payload);\r\n }\r\n }\r\n }\r\n function createIconPaths(featureModel, feature, featureName) {\r\n var iconStyleModel = featureModel.getModel('iconStyle');\r\n var iconStyleEmphasisModel = featureModel.getModel(['emphasis', 'iconStyle']);\r\n var icons = (feature instanceof ToolboxFeature && feature.getIcons)\r\n ? feature.getIcons() : featureModel.get('icon');\r\n var titles = featureModel.get('title') || {};\r\n var iconsMap;\r\n var titlesMap;\r\n if (typeof icons === 'string') {\r\n iconsMap = {};\r\n iconsMap[featureName] = icons;\r\n }\r\n else {\r\n iconsMap = icons;\r\n }\r\n if (typeof titles === 'string') {\r\n titlesMap = {};\r\n titlesMap[featureName] = titles;\r\n }\r\n else {\r\n titlesMap = titles;\r\n }\r\n var iconPaths = featureModel.iconPaths = {};\r\n each(iconsMap, function (iconStr, iconName) {\r\n var path = createIcon(iconStr, {}, {\r\n x: -itemSize / 2,\r\n y: -itemSize / 2,\r\n width: itemSize,\r\n height: itemSize\r\n });\r\n path.setStyle(iconStyleModel.getItemStyle());\r\n var pathEmphasisState = path.ensureState('emphasis');\r\n pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle();\r\n var textContent = new ZRText({\r\n style: {\r\n text: titlesMap[iconName],\r\n align: iconStyleEmphasisModel.get('textAlign'),\r\n borderRadius: iconStyleEmphasisModel.get('textBorderRadius'),\r\n padding: iconStyleEmphasisModel.get('textPadding'),\r\n fill: null\r\n },\r\n ignore: true\r\n });\r\n path.setTextContent(textContent);\r\n var tooltipModel = toolboxModel.getModel('tooltip');\r\n if (tooltipModel && tooltipModel.get('show')) {\r\n path.tooltip = extend({\r\n content: titlesMap[iconName],\r\n formatter: tooltipModel.get('formatter', true)\r\n || function () {\r\n return titlesMap[iconName];\r\n },\r\n formatterParams: {\r\n componentType: 'toolbox',\r\n name: iconName,\r\n title: titlesMap[iconName],\r\n $vars: ['name', 'title']\r\n },\r\n position: tooltipModel.get('position', true) || 'bottom'\r\n }, tooltipModel.option);\r\n }\r\n path.__title = titlesMap[iconName];\r\n path.on('mouseover', function () {\r\n var hoverStyle = iconStyleEmphasisModel.getItemStyle();\r\n var defaultTextPosition = toolboxModel.get('orient') === 'vertical'\r\n ? (toolboxModel.get('right') == null ? 'right' : 'left')\r\n : (toolboxModel.get('bottom') == null ? 'bottom' : 'top');\r\n textContent.setStyle({\r\n fill: (iconStyleEmphasisModel.get('textFill')\r\n || hoverStyle.fill || hoverStyle.stroke || '#000'),\r\n backgroundColor: iconStyleEmphasisModel.get('textBackgroundColor')\r\n });\r\n path.setTextConfig({\r\n position: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition\r\n });\r\n textContent.ignore = !toolboxModel.get('showTitle');\r\n enterEmphasis(this);\r\n })\r\n .on('mouseout', function () {\r\n if (featureModel.get(['iconStatus', iconName]) !== 'emphasis') {\r\n leaveEmphasis(this);\r\n }\r\n textContent.hide();\r\n });\r\n (featureModel.get(['iconStatus', iconName]) === 'emphasis' ? enterEmphasis : leaveEmphasis)(path);\r\n group.add(path);\r\n path.on('click', bind(feature.onclick, feature, ecModel, api, iconName));\r\n iconPaths[iconName] = path;\r\n });\r\n }\r\n layout$3(group, toolboxModel, api);\r\n group.add(makeBackground(group.getBoundingRect(), toolboxModel));\r\n group.eachChild(function (icon) {\r\n var titleText = icon.__title;\r\n var emphasisState = icon.ensureState('emphasis');\r\n var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {});\r\n var textContent = icon.getTextContent();\r\n var emphasisTextState = textContent && textContent.states.emphasis;\r\n if (emphasisTextState && !isFunction(emphasisTextState) && titleText) {\r\n var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {});\r\n var rect = getBoundingRect(titleText, ZRText.makeFont(emphasisTextStyle));\r\n var offsetX = icon.x + group.x;\r\n var offsetY = icon.y + group.y + itemSize;\r\n var needPutOnTop = false;\r\n if (offsetY + rect.height > api.getHeight()) {\r\n emphasisTextConfig.position = 'top';\r\n needPutOnTop = true;\r\n }\r\n var topOffset = needPutOnTop ? (-5 - rect.height) : (itemSize + 8);\r\n if (offsetX + rect.width / 2 > api.getWidth()) {\r\n emphasisTextConfig.position = ['100%', topOffset];\r\n emphasisTextStyle.align = 'right';\r\n }\r\n else if (offsetX - rect.width / 2 < 0) {\r\n emphasisTextConfig.position = [0, topOffset];\r\n emphasisTextStyle.align = 'left';\r\n }\r\n }\r\n });\r\n };\r\n ToolboxView.prototype.updateView = function (toolboxModel, ecModel, api, payload) {\r\n each(this._features, function (feature) {\r\n feature instanceof ToolboxFeature\r\n && feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\r\n });\r\n };\r\n ToolboxView.prototype.remove = function (ecModel, api) {\r\n each(this._features, function (feature) {\r\n feature instanceof ToolboxFeature\r\n && feature.remove && feature.remove(ecModel, api);\r\n });\r\n this.group.removeAll();\r\n };\r\n ToolboxView.prototype.dispose = function (ecModel, api) {\r\n each(this._features, function (feature) {\r\n feature instanceof ToolboxFeature\r\n && feature.dispose && feature.dispose(ecModel, api);\r\n });\r\n };\r\n ToolboxView.type = 'toolbox';\r\n return ToolboxView;\r\n}(ComponentView));\r\nComponentView.registerClass(ToolboxView);\r\nfunction isUserFeatureName(featureName) {\r\n return featureName.indexOf('my') === 0;\r\n}\n\nvar SaveAsImage = (function (_super) {\r\n __extends(SaveAsImage, _super);\r\n function SaveAsImage() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n SaveAsImage.prototype.onclick = function (ecModel, api) {\r\n var model = this.model;\r\n var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';\r\n var isSvg = api.getZr().painter.getType() === 'svg';\r\n var type = isSvg ? 'svg' : model.get('type', true) || 'png';\r\n var url = api.getConnectedDataURL({\r\n type: type,\r\n backgroundColor: model.get('backgroundColor', true)\r\n || ecModel.get('backgroundColor') || '#fff',\r\n connectedBackgroundColor: model.get('connectedBackgroundColor'),\r\n excludeComponents: model.get('excludeComponents'),\r\n pixelRatio: model.get('pixelRatio')\r\n });\r\n if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) {\r\n var $a = document.createElement('a');\r\n $a.download = title + '.' + type;\r\n $a.target = '_blank';\r\n $a.href = url;\r\n var evt = new MouseEvent('click', {\r\n view: document.defaultView,\r\n bubbles: true,\r\n cancelable: false\r\n });\r\n $a.dispatchEvent(evt);\r\n }\r\n else {\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n var bstr = atob(url.split(',')[1]);\r\n var n = bstr.length;\r\n var u8arr = new Uint8Array(n);\r\n while (n--) {\r\n u8arr[n] = bstr.charCodeAt(n);\r\n }\r\n var blob = new Blob([u8arr]);\r\n window.navigator.msSaveOrOpenBlob(blob, title + '.' + type);\r\n }\r\n else {\r\n var lang = model.get('lang');\r\n var html = ''\r\n + '<body style=\"margin:0;\">'\r\n + '<img src=\"' + url + '\" style=\"max-width:100%;\" title=\"' + ((lang && lang[0]) || '') + '\" />'\r\n + '</body>';\r\n var tab = window.open();\r\n tab.document.write(html);\r\n }\r\n }\r\n };\r\n SaveAsImage.getDefaultOption = function (ecModel) {\r\n var defaultOption = {\r\n show: true,\r\n icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',\r\n title: ecModel.getLocale(['toolbox', 'saveAsImage', 'title']),\r\n type: 'png',\r\n connectedBackgroundColor: '#fff',\r\n name: '',\r\n excludeComponents: ['toolbox'],\r\n pixelRatio: 1,\r\n lang: ecModel.getLocale(['toolbox', 'saveAsImage', 'lang'])\r\n };\r\n return defaultOption;\r\n };\r\n return SaveAsImage;\r\n}(ToolboxFeature));\r\nSaveAsImage.prototype.unusable = !env.canvasSupported;\r\nregisterFeature('saveAsImage', SaveAsImage);\n\nvar INNER_STACK_KEYWORD = '__ec_magicType_stack__';\r\nvar radioTypes = [\r\n ['line', 'bar'],\r\n ['stack']\r\n];\r\nvar MagicType = (function (_super) {\r\n __extends(MagicType, _super);\r\n function MagicType() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n MagicType.prototype.getIcons = function () {\r\n var model = this.model;\r\n var availableIcons = model.get('icon');\r\n var icons = {};\r\n each(model.get('type'), function (type) {\r\n if (availableIcons[type]) {\r\n icons[type] = availableIcons[type];\r\n }\r\n });\r\n return icons;\r\n };\r\n MagicType.getDefaultOption = function (ecModel) {\r\n var defaultOption = {\r\n show: true,\r\n type: [],\r\n icon: {\r\n line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\r\n bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\r\n stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z'\r\n },\r\n title: ecModel.getLocale(['toolbox', 'magicType', 'title']),\r\n option: {},\r\n seriesIndex: {}\r\n };\r\n return defaultOption;\r\n };\r\n MagicType.prototype.onclick = function (ecModel, api, type) {\r\n var model = this.model;\r\n var seriesIndex = model.get(['seriesIndex', type]);\r\n if (!seriesOptGenreator[type]) {\r\n return;\r\n }\r\n var newOption = {\r\n series: []\r\n };\r\n var generateNewSeriesTypes = function (seriesModel) {\r\n var seriesType = seriesModel.subType;\r\n var seriesId = seriesModel.id;\r\n var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\r\n if (newSeriesOpt) {\r\n defaults(newSeriesOpt, seriesModel.option);\r\n newOption.series.push(newSeriesOpt);\r\n }\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\r\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\r\n if (categoryAxis) {\r\n var axisDim = categoryAxis.dim;\r\n var axisType = axisDim + 'Axis';\r\n var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\r\n var axisIndex = axisModel.componentIndex;\r\n newOption[axisType] = newOption[axisType] || [];\r\n for (var i = 0; i <= axisIndex; i++) {\r\n newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\r\n }\r\n newOption[axisType][axisIndex].boundaryGap = type === 'bar';\r\n }\r\n }\r\n };\r\n each(radioTypes, function (radio) {\r\n if (indexOf(radio, type) >= 0) {\r\n each(radio, function (item) {\r\n model.setIconStatus(item, 'normal');\r\n });\r\n }\r\n });\r\n model.setIconStatus(type, 'emphasis');\r\n ecModel.eachComponent({\r\n mainType: 'series',\r\n query: seriesIndex == null ? null : {\r\n seriesIndex: seriesIndex\r\n }\r\n }, generateNewSeriesTypes);\r\n var newTitle;\r\n if (type === 'stack') {\r\n newTitle = merge({\r\n stack: model.option.title.tiled,\r\n tiled: model.option.title.stack\r\n }, model.option.title);\r\n }\r\n api.dispatchAction({\r\n type: 'changeMagicType',\r\n currentType: type,\r\n newOption: newOption,\r\n newTitle: newTitle,\r\n featureName: 'magicType'\r\n });\r\n };\r\n return MagicType;\r\n}(ToolboxFeature));\r\nvar seriesOptGenreator = {\r\n 'line': function (seriesType, seriesId, seriesModel, model) {\r\n if (seriesType === 'bar') {\r\n return merge({\r\n id: seriesId,\r\n type: 'line',\r\n data: seriesModel.get('data'),\r\n stack: seriesModel.get('stack'),\r\n markPoint: seriesModel.get('markPoint'),\r\n markLine: seriesModel.get('markLine')\r\n }, model.get(['option', 'line']) || {}, true);\r\n }\r\n },\r\n 'bar': function (seriesType, seriesId, seriesModel, model) {\r\n if (seriesType === 'line') {\r\n return merge({\r\n id: seriesId,\r\n type: 'bar',\r\n data: seriesModel.get('data'),\r\n stack: seriesModel.get('stack'),\r\n markPoint: seriesModel.get('markPoint'),\r\n markLine: seriesModel.get('markLine')\r\n }, model.get(['option', 'bar']) || {}, true);\r\n }\r\n },\r\n 'stack': function (seriesType, seriesId, seriesModel, model) {\r\n var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;\r\n if (seriesType === 'line' || seriesType === 'bar') {\r\n model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');\r\n return merge({\r\n id: seriesId,\r\n stack: isStack ? '' : INNER_STACK_KEYWORD\r\n }, model.get(['option', 'stack']) || {}, true);\r\n }\r\n }\r\n};\r\nregisterAction({\r\n type: 'changeMagicType',\r\n event: 'magicTypeChanged',\r\n update: 'prepareAndUpdate'\r\n}, function (payload, ecModel) {\r\n ecModel.mergeOption(payload.newOption);\r\n});\r\nregisterFeature('magicType', MagicType);\n\nvar BLOCK_SPLITER = new Array(60).join('-');\r\nvar ITEM_SPLITER = '\\t';\r\nfunction groupSeries(ecModel) {\r\n var seriesGroupByCategoryAxis = {};\r\n var otherSeries = [];\r\n var meta = [];\r\n ecModel.eachRawSeries(function (seriesModel) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\r\n var baseAxis = coordSys.getBaseAxis();\r\n if (baseAxis.type === 'category') {\r\n var key = baseAxis.dim + '_' + baseAxis.index;\r\n if (!seriesGroupByCategoryAxis[key]) {\r\n seriesGroupByCategoryAxis[key] = {\r\n categoryAxis: baseAxis,\r\n valueAxis: coordSys.getOtherAxis(baseAxis),\r\n series: []\r\n };\r\n meta.push({\r\n axisDim: baseAxis.dim,\r\n axisIndex: baseAxis.index\r\n });\r\n }\r\n seriesGroupByCategoryAxis[key].series.push(seriesModel);\r\n }\r\n else {\r\n otherSeries.push(seriesModel);\r\n }\r\n }\r\n else {\r\n otherSeries.push(seriesModel);\r\n }\r\n });\r\n return {\r\n seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\r\n other: otherSeries,\r\n meta: meta\r\n };\r\n}\r\nfunction assembleSeriesWithCategoryAxis(groups) {\r\n var tables = [];\r\n each(groups, function (group, key) {\r\n var categoryAxis = group.categoryAxis;\r\n var valueAxis = group.valueAxis;\r\n var valueAxisDim = valueAxis.dim;\r\n var headers = [' '].concat(map(group.series, function (series) {\r\n return series.name;\r\n }));\r\n var columns = [categoryAxis.model.getCategories()];\r\n each(group.series, function (series) {\r\n var rawData = series.getRawData();\r\n columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) {\r\n return val;\r\n }));\r\n });\r\n var lines = [headers.join(ITEM_SPLITER)];\r\n for (var i = 0; i < columns[0].length; i++) {\r\n var items = [];\r\n for (var j = 0; j < columns.length; j++) {\r\n items.push(columns[j][i]);\r\n }\r\n lines.push(items.join(ITEM_SPLITER));\r\n }\r\n tables.push(lines.join('\\n'));\r\n });\r\n return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\r\n}\r\nfunction assembleOtherSeries(series) {\r\n return map(series, function (series) {\r\n var data = series.getRawData();\r\n var lines = [series.name];\r\n var vals = [];\r\n data.each(data.dimensions, function () {\r\n var argLen = arguments.length;\r\n var dataIndex = arguments[argLen - 1];\r\n var name = data.getName(dataIndex);\r\n for (var i = 0; i < argLen - 1; i++) {\r\n vals[i] = arguments[i];\r\n }\r\n lines.push((name ? (name + ITEM_SPLITER) : '') + vals.join(ITEM_SPLITER));\r\n });\r\n return lines.join('\\n');\r\n }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\r\n}\r\nfunction getContentFromModel(ecModel) {\r\n var result = groupSeries(ecModel);\r\n return {\r\n value: filter([\r\n assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis),\r\n assembleOtherSeries(result.other)\r\n ], function (str) {\r\n return !!str.replace(/[\\n\\t\\s]/g, '');\r\n }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\r\n meta: result.meta\r\n };\r\n}\r\nfunction trim$1(str) {\r\n return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\r\n}\r\nfunction isTSVFormat(block) {\r\n var firstLine = block.slice(0, block.indexOf('\\n'));\r\n if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\r\n return true;\r\n }\r\n}\r\nvar itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\r\nfunction parseTSVContents(tsv) {\r\n var tsvLines = tsv.split(/\\n+/g);\r\n var headers = trim$1(tsvLines.shift()).split(itemSplitRegex);\r\n var categories = [];\r\n var series = map(headers, function (header) {\r\n return {\r\n name: header,\r\n data: []\r\n };\r\n });\r\n for (var i = 0; i < tsvLines.length; i++) {\r\n var items = trim$1(tsvLines[i]).split(itemSplitRegex);\r\n categories.push(items.shift());\r\n for (var j = 0; j < items.length; j++) {\r\n series[j] && (series[j].data[i] = items[j]);\r\n }\r\n }\r\n return {\r\n series: series,\r\n categories: categories\r\n };\r\n}\r\nfunction parseListContents(str) {\r\n var lines = str.split(/\\n+/g);\r\n var seriesName = trim$1(lines.shift());\r\n var data = [];\r\n for (var i = 0; i < lines.length; i++) {\r\n var line = trim$1(lines[i]);\r\n if (!line) {\r\n continue;\r\n }\r\n var items = line.split(itemSplitRegex);\r\n var name_1 = '';\r\n var value = void 0;\r\n var hasName = false;\r\n if (isNaN(items[0])) {\r\n hasName = true;\r\n name_1 = items[0];\r\n items = items.slice(1);\r\n data[i] = {\r\n name: name_1,\r\n value: []\r\n };\r\n value = data[i].value;\r\n }\r\n else {\r\n value = data[i] = [];\r\n }\r\n for (var j = 0; j < items.length; j++) {\r\n value.push(+items[j]);\r\n }\r\n if (value.length === 1) {\r\n hasName ? (data[i].value = value[0]) : (data[i] = value[0]);\r\n }\r\n }\r\n return {\r\n name: seriesName,\r\n data: data\r\n };\r\n}\r\nfunction parseContents(str, blockMetaList) {\r\n var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\r\n var newOption = {\r\n series: []\r\n };\r\n each(blocks, function (block, idx) {\r\n if (isTSVFormat(block)) {\r\n var result = parseTSVContents(block);\r\n var blockMeta = blockMetaList[idx];\r\n var axisKey = blockMeta.axisDim + 'Axis';\r\n if (blockMeta) {\r\n newOption[axisKey] = newOption[axisKey] || [];\r\n newOption[axisKey][blockMeta.axisIndex] = {\r\n data: result.categories\r\n };\r\n newOption.series = newOption.series.concat(result.series);\r\n }\r\n }\r\n else {\r\n var result = parseListContents(block);\r\n newOption.series.push(result);\r\n }\r\n });\r\n return newOption;\r\n}\r\nvar DataView = (function (_super) {\r\n __extends(DataView, _super);\r\n function DataView() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DataView.prototype.onclick = function (ecModel, api) {\r\n var container = api.getDom();\r\n var model = this.model;\r\n if (this._dom) {\r\n container.removeChild(this._dom);\r\n }\r\n var root = document.createElement('div');\r\n root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;';\r\n root.style.backgroundColor = model.get('backgroundColor') || '#fff';\r\n var header = document.createElement('h4');\r\n var lang = model.get('lang') || [];\r\n header.innerHTML = lang[0] || model.get('title');\r\n header.style.cssText = 'margin: 10px 20px;';\r\n header.style.color = model.get('textColor');\r\n var viewMain = document.createElement('div');\r\n var textarea = document.createElement('textarea');\r\n viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';\r\n var optionToContent = model.get('optionToContent');\r\n var contentToOption = model.get('contentToOption');\r\n var result = getContentFromModel(ecModel);\r\n if (typeof optionToContent === 'function') {\r\n var htmlOrDom = optionToContent(api.getOption());\r\n if (typeof htmlOrDom === 'string') {\r\n viewMain.innerHTML = htmlOrDom;\r\n }\r\n else if (isDom(htmlOrDom)) {\r\n viewMain.appendChild(htmlOrDom);\r\n }\r\n }\r\n else {\r\n viewMain.appendChild(textarea);\r\n textarea.readOnly = model.get('readOnly');\r\n textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;';\r\n textarea.style.color = model.get('textColor');\r\n textarea.style.borderColor = model.get('textareaBorderColor');\r\n textarea.style.backgroundColor = model.get('textareaColor');\r\n textarea.value = result.value;\r\n }\r\n var blockMetaList = result.meta;\r\n var buttonContainer = document.createElement('div');\r\n buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;';\r\n var buttonStyle = 'float:right;margin-right:20px;border:none;'\r\n + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\r\n var closeButton = document.createElement('div');\r\n var refreshButton = document.createElement('div');\r\n buttonStyle += ';background-color:' + model.get('buttonColor');\r\n buttonStyle += ';color:' + model.get('buttonTextColor');\r\n var self = this;\r\n function close() {\r\n container.removeChild(root);\r\n self._dom = null;\r\n }\r\n addEventListener(closeButton, 'click', close);\r\n addEventListener(refreshButton, 'click', function () {\r\n if ((contentToOption == null && optionToContent != null)\r\n || (contentToOption != null && optionToContent == null)) {\r\n if (__DEV__) {\r\n console.warn('It seems you have just provided one of `contentToOption` and `optionToContent` functions but missed the other one. Data change is ignored.');\r\n }\r\n close();\r\n return;\r\n }\r\n var newOption;\r\n try {\r\n if (typeof contentToOption === 'function') {\r\n newOption = contentToOption(viewMain, api.getOption());\r\n }\r\n else {\r\n newOption = parseContents(textarea.value, blockMetaList);\r\n }\r\n }\r\n catch (e) {\r\n close();\r\n throw new Error('Data view format error ' + e);\r\n }\r\n if (newOption) {\r\n api.dispatchAction({\r\n type: 'changeDataView',\r\n newOption: newOption\r\n });\r\n }\r\n close();\r\n });\r\n closeButton.innerHTML = lang[1];\r\n refreshButton.innerHTML = lang[2];\r\n refreshButton.style.cssText = buttonStyle;\r\n closeButton.style.cssText = buttonStyle;\r\n !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\r\n buttonContainer.appendChild(closeButton);\r\n root.appendChild(header);\r\n root.appendChild(viewMain);\r\n root.appendChild(buttonContainer);\r\n viewMain.style.height = (container.clientHeight - 80) + 'px';\r\n container.appendChild(root);\r\n this._dom = root;\r\n };\r\n DataView.prototype.remove = function (ecModel, api) {\r\n this._dom && api.getDom().removeChild(this._dom);\r\n };\r\n DataView.prototype.dispose = function (ecModel, api) {\r\n this.remove(ecModel, api);\r\n };\r\n DataView.getDefaultOption = function (ecModel) {\r\n var defaultOption = {\r\n show: true,\r\n readOnly: false,\r\n optionToContent: null,\r\n contentToOption: null,\r\n icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\r\n title: ecModel.getLocale(['toolbox', 'dataView', 'title']),\r\n lang: ecModel.getLocale(['toolbox', 'dataView', 'lang']),\r\n backgroundColor: '#fff',\r\n textColor: '#000',\r\n textareaColor: '#fff',\r\n textareaBorderColor: '#333',\r\n buttonColor: '#c23531',\r\n buttonTextColor: '#fff'\r\n };\r\n return defaultOption;\r\n };\r\n return DataView;\r\n}(ToolboxFeature));\r\nfunction tryMergeDataOption(newData, originalData) {\r\n return map(newData, function (newVal, idx) {\r\n var original = originalData && originalData[idx];\r\n if (isObject(original) && !isArray(original)) {\r\n var newValIsObject = isObject(newVal) && !isArray(newVal);\r\n if (!newValIsObject) {\r\n newVal = {\r\n value: newVal\r\n };\r\n }\r\n var shouldDeleteName = original.name != null && newVal.name == null;\r\n newVal = defaults(newVal, original);\r\n shouldDeleteName && (delete newVal.name);\r\n return newVal;\r\n }\r\n else {\r\n return newVal;\r\n }\r\n });\r\n}\r\nregisterFeature('dataView', DataView);\r\nregisterAction({\r\n type: 'changeDataView',\r\n event: 'dataViewChanged',\r\n update: 'prepareAndUpdate'\r\n}, function (payload, ecModel) {\r\n var newSeriesOptList = [];\r\n each(payload.newOption.series, function (seriesOpt) {\r\n var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\r\n if (!seriesModel) {\r\n newSeriesOptList.push(extend({\r\n type: 'scatter'\r\n }, seriesOpt));\r\n }\r\n else {\r\n var originalData = seriesModel.get('data');\r\n newSeriesOptList.push({\r\n name: seriesOpt.name,\r\n data: tryMergeDataOption(seriesOpt.data, originalData)\r\n });\r\n }\r\n });\r\n ecModel.mergeOption(defaults({\r\n series: newSeriesOptList\r\n }, payload.newOption));\r\n});\n\nvar COORD_CONVERTS = ['dataToPoint', 'pointToData'];\r\nvar INCLUDE_FINDER_MAIN_TYPES = [\r\n 'grid', 'xAxis', 'yAxis', 'geo', 'graph',\r\n 'polar', 'radiusAxis', 'angleAxis', 'bmap'\r\n];\r\nvar BrushTargetManager = (function () {\r\n function BrushTargetManager(finder, ecModel, opt) {\r\n var _this = this;\r\n this._targetInfoList = [];\r\n var foundCpts = parseFinder$1(ecModel, finder);\r\n each(targetInfoBuilders, function (builder, type) {\r\n if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\r\n builder(foundCpts, _this._targetInfoList);\r\n }\r\n });\r\n }\r\n BrushTargetManager.prototype.setOutputRanges = function (areas, ecModel) {\r\n this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\r\n (area.coordRanges || (area.coordRanges = [])).push(coordRange);\r\n if (!area.coordRange) {\r\n area.coordRange = coordRange;\r\n var result = coordConvert[area.brushType](0, coordSys, coordRange);\r\n area.__rangeOffset = {\r\n offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\r\n xyMinMax: result.xyMinMax\r\n };\r\n }\r\n });\r\n return areas;\r\n };\r\n BrushTargetManager.prototype.matchOutputRanges = function (areas, ecModel, cb) {\r\n each(areas, function (area) {\r\n var targetInfo = this.findTargetInfo(area, ecModel);\r\n if (targetInfo && targetInfo !== true) {\r\n each(targetInfo.coordSyses, function (coordSys) {\r\n var result = coordConvert[area.brushType](1, coordSys, area.range);\r\n cb(area, result.values, coordSys, ecModel);\r\n });\r\n }\r\n }, this);\r\n };\r\n BrushTargetManager.prototype.setInputRanges = function (areas, ecModel) {\r\n each(areas, function (area) {\r\n var targetInfo = this.findTargetInfo(area, ecModel);\r\n if (__DEV__) {\r\n assert(!targetInfo || targetInfo === true || area.coordRange, 'coordRange must be specified when coord index specified.');\r\n assert(!targetInfo || targetInfo !== true || area.range, 'range must be specified in global brush.');\r\n }\r\n area.range = area.range || [];\r\n if (targetInfo && targetInfo !== true) {\r\n area.panelId = targetInfo.panelId;\r\n var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\r\n var rangeOffset = area.__rangeOffset;\r\n area.range = rangeOffset\r\n ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax))\r\n : result.values;\r\n }\r\n }, this);\r\n };\r\n BrushTargetManager.prototype.makePanelOpts = function (api, getDefaultBrushType) {\r\n return map(this._targetInfoList, function (targetInfo) {\r\n var rect = targetInfo.getPanelRect();\r\n return {\r\n panelId: targetInfo.panelId,\r\n defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null,\r\n clipPath: makeRectPanelClipPath(rect),\r\n isTargetByCursor: makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\r\n getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect)\r\n };\r\n });\r\n };\r\n BrushTargetManager.prototype.controlSeries = function (area, seriesModel, ecModel) {\r\n var targetInfo = this.findTargetInfo(area, ecModel);\r\n return targetInfo === true || (targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0);\r\n };\r\n BrushTargetManager.prototype.findTargetInfo = function (area, ecModel) {\r\n var targetInfoList = this._targetInfoList;\r\n var foundCpts = parseFinder$1(ecModel, area);\r\n for (var i = 0; i < targetInfoList.length; i++) {\r\n var targetInfo = targetInfoList[i];\r\n var areaPanelId = area.panelId;\r\n if (areaPanelId) {\r\n if (targetInfo.panelId === areaPanelId) {\r\n return targetInfo;\r\n }\r\n }\r\n else {\r\n for (var j = 0; j < targetInfoMatchers.length; j++) {\r\n if (targetInfoMatchers[j](foundCpts, targetInfo)) {\r\n return targetInfo;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n return BrushTargetManager;\r\n}());\r\nfunction formatMinMax(minMax) {\r\n minMax[0] > minMax[1] && minMax.reverse();\r\n return minMax;\r\n}\r\nfunction parseFinder$1(ecModel, finder) {\r\n return parseFinder(ecModel, finder, { includeMainTypes: INCLUDE_FINDER_MAIN_TYPES });\r\n}\r\nvar targetInfoBuilders = {\r\n grid: function (foundCpts, targetInfoList) {\r\n var xAxisModels = foundCpts.xAxisModels;\r\n var yAxisModels = foundCpts.yAxisModels;\r\n var gridModels = foundCpts.gridModels;\r\n var gridModelMap = createHashMap();\r\n var xAxesHas = {};\r\n var yAxesHas = {};\r\n if (!xAxisModels && !yAxisModels && !gridModels) {\r\n return;\r\n }\r\n each(xAxisModels, function (axisModel) {\r\n var gridModel = axisModel.axis.grid.model;\r\n gridModelMap.set(gridModel.id, gridModel);\r\n xAxesHas[gridModel.id] = true;\r\n });\r\n each(yAxisModels, function (axisModel) {\r\n var gridModel = axisModel.axis.grid.model;\r\n gridModelMap.set(gridModel.id, gridModel);\r\n yAxesHas[gridModel.id] = true;\r\n });\r\n each(gridModels, function (gridModel) {\r\n gridModelMap.set(gridModel.id, gridModel);\r\n xAxesHas[gridModel.id] = true;\r\n yAxesHas[gridModel.id] = true;\r\n });\r\n gridModelMap.each(function (gridModel) {\r\n var grid = gridModel.coordinateSystem;\r\n var cartesians = [];\r\n each(grid.getCartesians(), function (cartesian, index) {\r\n if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0\r\n || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\r\n cartesians.push(cartesian);\r\n }\r\n });\r\n targetInfoList.push({\r\n panelId: 'grid--' + gridModel.id,\r\n gridModel: gridModel,\r\n coordSysModel: gridModel,\r\n coordSys: cartesians[0],\r\n coordSyses: cartesians,\r\n getPanelRect: panelRectBuilders.grid,\r\n xAxisDeclared: xAxesHas[gridModel.id],\r\n yAxisDeclared: yAxesHas[gridModel.id]\r\n });\r\n });\r\n },\r\n geo: function (foundCpts, targetInfoList) {\r\n each(foundCpts.geoModels, function (geoModel) {\r\n var coordSys = geoModel.coordinateSystem;\r\n targetInfoList.push({\r\n panelId: 'geo--' + geoModel.id,\r\n geoModel: geoModel,\r\n coordSysModel: geoModel,\r\n coordSys: coordSys,\r\n coordSyses: [coordSys],\r\n getPanelRect: panelRectBuilders.geo\r\n });\r\n });\r\n }\r\n};\r\nvar targetInfoMatchers = [\r\n function (foundCpts, targetInfo) {\r\n var xAxisModel = foundCpts.xAxisModel;\r\n var yAxisModel = foundCpts.yAxisModel;\r\n var gridModel = foundCpts.gridModel;\r\n !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\r\n !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\r\n return gridModel && gridModel === targetInfo.gridModel;\r\n },\r\n function (foundCpts, targetInfo) {\r\n var geoModel = foundCpts.geoModel;\r\n return geoModel && geoModel === targetInfo.geoModel;\r\n }\r\n];\r\nvar panelRectBuilders = {\r\n grid: function () {\r\n return this.coordSys.master.getRect().clone();\r\n },\r\n geo: function () {\r\n var coordSys = this.coordSys;\r\n var rect = coordSys.getBoundingRect().clone();\r\n rect.applyTransform(getTransform(coordSys));\r\n return rect;\r\n }\r\n};\r\nvar coordConvert = {\r\n lineX: curry(axisConvert, 0),\r\n lineY: curry(axisConvert, 1),\r\n rect: function (to, coordSys, rangeOrCoordRange) {\r\n var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);\r\n var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);\r\n var values = [\r\n formatMinMax([xminymin[0], xmaxymax[0]]),\r\n formatMinMax([xminymin[1], xmaxymax[1]])\r\n ];\r\n return { values: values, xyMinMax: values };\r\n },\r\n polygon: function (to, coordSys, rangeOrCoordRange) {\r\n var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\r\n var values = map(rangeOrCoordRange, function (item) {\r\n var p = coordSys[COORD_CONVERTS[to]](item);\r\n xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\r\n xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\r\n xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\r\n xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\r\n return p;\r\n });\r\n return { values: values, xyMinMax: xyMinMax };\r\n }\r\n};\r\nfunction axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\r\n if (__DEV__) {\r\n assert(coordSys.type === 'cartesian2d', 'lineX/lineY brush is available only in cartesian2d.');\r\n }\r\n var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\r\n var values = formatMinMax(map([0, 1], function (i) {\r\n return to\r\n ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]))\r\n : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\r\n }));\r\n var xyMinMax = [];\r\n xyMinMax[axisNameIndex] = values;\r\n xyMinMax[1 - axisNameIndex] = [NaN, NaN];\r\n return { values: values, xyMinMax: xyMinMax };\r\n}\r\nvar diffProcessor = {\r\n lineX: curry(axisDiffProcessor, 0),\r\n lineY: curry(axisDiffProcessor, 1),\r\n rect: function (values, refer, scales) {\r\n return [\r\n [values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]],\r\n [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]\r\n ];\r\n },\r\n polygon: function (values, refer, scales) {\r\n return map(values, function (item, idx) {\r\n return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\r\n });\r\n }\r\n};\r\nfunction axisDiffProcessor(axisNameIndex, values, refer, scales) {\r\n return [\r\n values[0] - scales[axisNameIndex] * refer[0],\r\n values[1] - scales[axisNameIndex] * refer[1]\r\n ];\r\n}\r\nfunction getScales(xyMinMaxCurr, xyMinMaxOrigin) {\r\n var sizeCurr = getSize(xyMinMaxCurr);\r\n var sizeOrigin = getSize(xyMinMaxOrigin);\r\n var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\r\n isNaN(scales[0]) && (scales[0] = 1);\r\n isNaN(scales[1]) && (scales[1] = 1);\r\n return scales;\r\n}\r\nfunction getSize(xyMinMax) {\r\n return xyMinMax\r\n ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]]\r\n : [NaN, NaN];\r\n}\n\nvar each$9 = each;\r\nvar inner$h = makeInner();\r\nfunction push(ecModel, newSnapshot) {\r\n var storedSnapshots = getStoreSnapshots(ecModel);\r\n each$9(newSnapshot, function (batchItem, dataZoomId) {\r\n var i = storedSnapshots.length - 1;\r\n for (; i >= 0; i--) {\r\n var snapshot = storedSnapshots[i];\r\n if (snapshot[dataZoomId]) {\r\n break;\r\n }\r\n }\r\n if (i < 0) {\r\n var dataZoomModel = ecModel.queryComponents({ mainType: 'dataZoom', subType: 'select', id: dataZoomId })[0];\r\n if (dataZoomModel) {\r\n var percentRange = dataZoomModel.getPercentRange();\r\n storedSnapshots[0][dataZoomId] = {\r\n dataZoomId: dataZoomId,\r\n start: percentRange[0],\r\n end: percentRange[1]\r\n };\r\n }\r\n }\r\n });\r\n storedSnapshots.push(newSnapshot);\r\n}\r\nfunction pop(ecModel) {\r\n var storedSnapshots = getStoreSnapshots(ecModel);\r\n var head = storedSnapshots[storedSnapshots.length - 1];\r\n storedSnapshots.length > 1 && storedSnapshots.pop();\r\n var snapshot = {};\r\n each$9(head, function (batchItem, dataZoomId) {\r\n for (var i = storedSnapshots.length - 1; i >= 0; i--) {\r\n batchItem = storedSnapshots[i][dataZoomId];\r\n if (batchItem) {\r\n snapshot[dataZoomId] = batchItem;\r\n break;\r\n }\r\n }\r\n });\r\n return snapshot;\r\n}\r\nfunction clear$1(ecModel) {\r\n inner$h(ecModel).snapshots = null;\r\n}\r\nfunction count(ecModel) {\r\n return getStoreSnapshots(ecModel).length;\r\n}\r\nfunction getStoreSnapshots(ecModel) {\r\n var store = inner$h(ecModel);\r\n if (!store.snapshots) {\r\n store.snapshots = [{}];\r\n }\r\n return store.snapshots;\r\n}\n\nComponentModel.registerSubTypeDefaulter('dataZoom', function () {\r\n return 'slider';\r\n});\n\nvar DATA_ZOOM_AXIS_DIMENSIONS = [\r\n 'x', 'y', 'radius', 'angle', 'single'\r\n];\r\nvar SERIES_COORDS = ['cartesian2d', 'polar', 'singleAxis'];\r\nfunction isCoordSupported(seriesModel) {\r\n var coordType = seriesModel.get('coordinateSystem');\r\n return indexOf(SERIES_COORDS, coordType) >= 0;\r\n}\r\nfunction getAxisMainType(axisDim) {\r\n if (__DEV__) {\r\n assert(axisDim);\r\n }\r\n return axisDim + 'Axis';\r\n}\r\nfunction findEffectedDataZooms(ecModel, payload) {\r\n var axisRecords = createHashMap();\r\n var effectedModels = [];\r\n var effectedModelMap = createHashMap();\r\n ecModel.eachComponent({ mainType: 'dataZoom', query: payload }, function (dataZoomModel) {\r\n if (!effectedModelMap.get(dataZoomModel.uid)) {\r\n addToEffected(dataZoomModel);\r\n }\r\n });\r\n var foundNewLink;\r\n do {\r\n foundNewLink = false;\r\n ecModel.eachComponent('dataZoom', processSingle);\r\n } while (foundNewLink);\r\n function processSingle(dataZoomModel) {\r\n if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) {\r\n addToEffected(dataZoomModel);\r\n foundNewLink = true;\r\n }\r\n }\r\n function addToEffected(dataZoom) {\r\n effectedModelMap.set(dataZoom.uid, true);\r\n effectedModels.push(dataZoom);\r\n markAxisControlled(dataZoom);\r\n }\r\n function isLinked(dataZoomModel) {\r\n var isLink = false;\r\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n var axisIdxArr = axisRecords.get(axisDim);\r\n if (axisIdxArr && axisIdxArr[axisIndex]) {\r\n isLink = true;\r\n }\r\n });\r\n return isLink;\r\n }\r\n function markAxisControlled(dataZoomModel) {\r\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true;\r\n });\r\n }\r\n return effectedModels;\r\n}\r\nfunction collectReferCoordSysModelInfo(dataZoomModel) {\r\n var ecModel = dataZoomModel.ecModel;\r\n var coordSysInfoWrap = {\r\n infoList: [],\r\n infoMap: createHashMap()\r\n };\r\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n if (!axisModel) {\r\n return;\r\n }\r\n var coordSysModel = axisModel.getCoordSysModel();\r\n if (!coordSysModel) {\r\n return;\r\n }\r\n var coordSysUid = coordSysModel.uid;\r\n var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid);\r\n if (!coordSysInfo) {\r\n coordSysInfo = { model: coordSysModel, axisModels: [] };\r\n coordSysInfoWrap.infoList.push(coordSysInfo);\r\n coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo);\r\n }\r\n coordSysInfo.axisModels.push(axisModel);\r\n });\r\n return coordSysInfoWrap;\r\n}\n\nvar DataZoomAxisInfo = (function () {\r\n function DataZoomAxisInfo() {\r\n this.indexList = [];\r\n this.indexMap = [];\r\n }\r\n DataZoomAxisInfo.prototype.add = function (axisCmptIdx) {\r\n if (!this.indexMap[axisCmptIdx]) {\r\n this.indexList.push(axisCmptIdx);\r\n this.indexMap[axisCmptIdx] = true;\r\n }\r\n };\r\n return DataZoomAxisInfo;\r\n}());\r\nvar DataZoomModel = (function (_super) {\r\n __extends(DataZoomModel, _super);\r\n function DataZoomModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = DataZoomModel.type;\r\n _this._autoThrottle = true;\r\n _this._noTarget = true;\r\n _this._rangePropMode = ['percent', 'percent'];\r\n return _this;\r\n }\r\n DataZoomModel.prototype.init = function (option, parentModel, ecModel) {\r\n var inputRawOption = retrieveRawOption(option);\r\n this.settledOption = inputRawOption;\r\n this.mergeDefaultAndTheme(option, ecModel);\r\n this._doInit(inputRawOption);\r\n };\r\n DataZoomModel.prototype.mergeOption = function (newOption) {\r\n var inputRawOption = retrieveRawOption(newOption);\r\n merge(this.option, newOption, true);\r\n merge(this.settledOption, inputRawOption, true);\r\n this._doInit(inputRawOption);\r\n };\r\n DataZoomModel.prototype._doInit = function (inputRawOption) {\r\n var thisOption = this.option;\r\n this._setDefaultThrottle(inputRawOption);\r\n this._updateRangeUse(inputRawOption);\r\n var settledOption = this.settledOption;\r\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\r\n if (this._rangePropMode[index] === 'value') {\r\n thisOption[names[0]] = settledOption[names[0]] = null;\r\n }\r\n }, this);\r\n this._resetTarget();\r\n };\r\n DataZoomModel.prototype._resetTarget = function () {\r\n var optionOrient = this.get('orient', true);\r\n var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap();\r\n var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap);\r\n if (hasAxisSpecified) {\r\n this._orient = optionOrient || this._makeAutoOrientByTargetAxis();\r\n }\r\n else {\r\n this._orient = optionOrient || 'horizontal';\r\n this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient);\r\n }\r\n this._noTarget = true;\r\n targetAxisIndexMap.each(function (axisInfo) {\r\n if (axisInfo.indexList.length) {\r\n this._noTarget = false;\r\n }\r\n }, this);\r\n };\r\n DataZoomModel.prototype._fillSpecifiedTargetAxis = function (targetAxisIndexMap) {\r\n var hasAxisSpecified = false;\r\n each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) {\r\n var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING);\r\n if (!refering.specified) {\r\n return;\r\n }\r\n hasAxisSpecified = true;\r\n var axisInfo = new DataZoomAxisInfo();\r\n each(refering.models, function (axisModel) {\r\n axisInfo.add(axisModel.componentIndex);\r\n });\r\n targetAxisIndexMap.set(axisDim, axisInfo);\r\n }, this);\r\n return hasAxisSpecified;\r\n };\r\n DataZoomModel.prototype._fillAutoTargetAxisByOrient = function (targetAxisIndexMap, orient) {\r\n var ecModel = this.ecModel;\r\n var needAuto = true;\r\n if (needAuto) {\r\n var axisDim = orient === 'vertical' ? 'y' : 'x';\r\n var axisModels = ecModel.findComponents({ mainType: axisDim + 'Axis' });\r\n setParallelAxis(axisModels, axisDim);\r\n }\r\n if (needAuto) {\r\n var axisModels = ecModel.findComponents({\r\n mainType: 'singleAxis',\r\n filter: function (axisModel) { return axisModel.get('orient', true) === orient; }\r\n });\r\n setParallelAxis(axisModels, 'single');\r\n }\r\n function setParallelAxis(axisModels, axisDim) {\r\n var axisModel = axisModels[0];\r\n if (!axisModel) {\r\n return;\r\n }\r\n var axisInfo = new DataZoomAxisInfo();\r\n axisInfo.add(axisModel.componentIndex);\r\n targetAxisIndexMap.set(axisDim, axisInfo);\r\n needAuto = false;\r\n if (axisDim === 'x' || axisDim === 'y') {\r\n var gridModel_1 = axisModel.getReferringComponents('grid', SINGLE_REFERRING).models[0];\r\n gridModel_1 && each(axisModels, function (axModel) {\r\n if (axisModel.componentIndex !== axModel.componentIndex\r\n && gridModel_1 === axModel.getReferringComponents('grid', SINGLE_REFERRING).models[0]) {\r\n axisInfo.add(axModel.componentIndex);\r\n }\r\n });\r\n }\r\n }\r\n if (needAuto) {\r\n each(DATA_ZOOM_AXIS_DIMENSIONS, function (axisDim) {\r\n if (!needAuto) {\r\n return;\r\n }\r\n var axisModels = ecModel.findComponents({\r\n mainType: getAxisMainType(axisDim),\r\n filter: function (axisModel) { return axisModel.get('type', true) === 'category'; }\r\n });\r\n if (axisModels[0]) {\r\n var axisInfo = new DataZoomAxisInfo();\r\n axisInfo.add(axisModels[0].componentIndex);\r\n targetAxisIndexMap.set(axisDim, axisInfo);\r\n needAuto = false;\r\n }\r\n }, this);\r\n }\r\n };\r\n DataZoomModel.prototype._makeAutoOrientByTargetAxis = function () {\r\n var dim;\r\n this.eachTargetAxis(function (axisDim) {\r\n !dim && (dim = axisDim);\r\n }, this);\r\n return dim === 'y' ? 'vertical' : 'horizontal';\r\n };\r\n DataZoomModel.prototype._setDefaultThrottle = function (inputRawOption) {\r\n if (inputRawOption.hasOwnProperty('throttle')) {\r\n this._autoThrottle = false;\r\n }\r\n if (this._autoThrottle) {\r\n var globalOption = this.ecModel.option;\r\n this.option.throttle = (globalOption.animation && globalOption.animationDurationUpdate > 0) ? 100 : 20;\r\n }\r\n };\r\n DataZoomModel.prototype._updateRangeUse = function (inputRawOption) {\r\n var rangePropMode = this._rangePropMode;\r\n var rangeModeInOption = this.get('rangeMode');\r\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\r\n var percentSpecified = inputRawOption[names[0]] != null;\r\n var valueSpecified = inputRawOption[names[1]] != null;\r\n if (percentSpecified && !valueSpecified) {\r\n rangePropMode[index] = 'percent';\r\n }\r\n else if (!percentSpecified && valueSpecified) {\r\n rangePropMode[index] = 'value';\r\n }\r\n else if (rangeModeInOption) {\r\n rangePropMode[index] = rangeModeInOption[index];\r\n }\r\n else if (percentSpecified) {\r\n rangePropMode[index] = 'percent';\r\n }\r\n });\r\n };\r\n DataZoomModel.prototype.noTarget = function () {\r\n return this._noTarget;\r\n };\r\n DataZoomModel.prototype.getFirstTargetAxisModel = function () {\r\n var firstAxisModel;\r\n this.eachTargetAxis(function (axisDim, axisIndex) {\r\n if (firstAxisModel == null) {\r\n firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n }\r\n }, this);\r\n return firstAxisModel;\r\n };\r\n DataZoomModel.prototype.eachTargetAxis = function (callback, context) {\r\n this._targetAxisInfoMap.each(function (axisInfo, axisDim) {\r\n each(axisInfo.indexList, function (axisIndex) {\r\n callback.call(context, axisDim, axisIndex);\r\n });\r\n });\r\n };\r\n DataZoomModel.prototype.getAxisProxy = function (axisDim, axisIndex) {\r\n var axisModel = this.getAxisModel(axisDim, axisIndex);\r\n if (axisModel) {\r\n return axisModel.__dzAxisProxy;\r\n }\r\n };\r\n DataZoomModel.prototype.getAxisModel = function (axisDim, axisIndex) {\r\n if (__DEV__) {\r\n assert(axisDim && axisIndex != null);\r\n }\r\n var axisInfo = this._targetAxisInfoMap.get(axisDim);\r\n if (axisInfo && axisInfo.indexMap[axisIndex]) {\r\n return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n }\r\n };\r\n DataZoomModel.prototype.setRawRange = function (opt) {\r\n var thisOption = this.option;\r\n var settledOption = this.settledOption;\r\n each([['start', 'startValue'], ['end', 'endValue']], function (names) {\r\n if (opt[names[0]] != null || opt[names[1]] != null) {\r\n thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\r\n thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\r\n }\r\n }, this);\r\n this._updateRangeUse(opt);\r\n };\r\n DataZoomModel.prototype.setCalculatedRange = function (opt) {\r\n var option = this.option;\r\n each(['start', 'startValue', 'end', 'endValue'], function (name) {\r\n option[name] = opt[name];\r\n });\r\n };\r\n DataZoomModel.prototype.getPercentRange = function () {\r\n var axisProxy = this.findRepresentativeAxisProxy();\r\n if (axisProxy) {\r\n return axisProxy.getDataPercentWindow();\r\n }\r\n };\r\n DataZoomModel.prototype.getValueRange = function (axisDim, axisIndex) {\r\n if (axisDim == null && axisIndex == null) {\r\n var axisProxy = this.findRepresentativeAxisProxy();\r\n if (axisProxy) {\r\n return axisProxy.getDataValueWindow();\r\n }\r\n }\r\n else {\r\n return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow();\r\n }\r\n };\r\n DataZoomModel.prototype.findRepresentativeAxisProxy = function (axisModel) {\r\n if (axisModel) {\r\n return axisModel.__dzAxisProxy;\r\n }\r\n var firstProxy;\r\n var axisDimList = this._targetAxisInfoMap.keys();\r\n for (var i = 0; i < axisDimList.length; i++) {\r\n var axisDim = axisDimList[i];\r\n var axisInfo = this._targetAxisInfoMap.get(axisDim);\r\n for (var j = 0; j < axisInfo.indexList.length; j++) {\r\n var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]);\r\n if (proxy.hostedBy(this)) {\r\n return proxy;\r\n }\r\n if (!firstProxy) {\r\n firstProxy = proxy;\r\n }\r\n }\r\n }\r\n return firstProxy;\r\n };\r\n DataZoomModel.prototype.getRangePropMode = function () {\r\n return this._rangePropMode.slice();\r\n };\r\n DataZoomModel.prototype.getOrient = function () {\r\n if (__DEV__) {\r\n assert(this._orient);\r\n }\r\n return this._orient;\r\n };\r\n DataZoomModel.type = 'dataZoom';\r\n DataZoomModel.dependencies = [\r\n 'xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series', 'toolbox'\r\n ];\r\n DataZoomModel.defaultOption = {\r\n zlevel: 0,\r\n z: 4,\r\n filterMode: 'filter',\r\n start: 0,\r\n end: 100\r\n };\r\n return DataZoomModel;\r\n}(ComponentModel));\r\nfunction retrieveRawOption(option) {\r\n var ret = {};\r\n each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\r\n option.hasOwnProperty(name) && (ret[name] = option[name]);\r\n });\r\n return ret;\r\n}\n\nvar DataZoomView = (function (_super) {\r\n __extends(DataZoomView, _super);\r\n function DataZoomView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = DataZoomView.type;\r\n return _this;\r\n }\r\n DataZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\r\n this.dataZoomModel = dataZoomModel;\r\n this.ecModel = ecModel;\r\n this.api = api;\r\n };\r\n DataZoomView.type = 'dataZoom';\r\n return DataZoomView;\r\n}(ComponentView));\r\nComponentView.registerClass(DataZoomView);\n\nvar SelectDataZoomModel = (function (_super) {\r\n __extends(SelectDataZoomModel, _super);\r\n function SelectDataZoomModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SelectDataZoomModel.type;\r\n return _this;\r\n }\r\n SelectDataZoomModel.type = 'dataZoom.select';\r\n return SelectDataZoomModel;\r\n}(DataZoomModel));\r\nComponentModel.registerClass(SelectDataZoomModel);\n\nvar SelectDataZoomView = (function (_super) {\r\n __extends(SelectDataZoomView, _super);\r\n function SelectDataZoomView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SelectDataZoomView.type;\r\n return _this;\r\n }\r\n SelectDataZoomView.type = 'dataZoom.select';\r\n return SelectDataZoomView;\r\n}(DataZoomView));\r\nComponentView.registerClass(SelectDataZoomView);\n\nvar each$a = each;\r\nvar asc$1 = asc;\r\nvar AxisProxy = (function () {\r\n function AxisProxy(dimName, axisIndex, dataZoomModel, ecModel) {\r\n this._dimName = dimName;\r\n this._axisIndex = axisIndex;\r\n this.ecModel = ecModel;\r\n this._dataZoomModel = dataZoomModel;\r\n }\r\n AxisProxy.prototype.hostedBy = function (dataZoomModel) {\r\n return this._dataZoomModel === dataZoomModel;\r\n };\r\n AxisProxy.prototype.getDataValueWindow = function () {\r\n return this._valueWindow.slice();\r\n };\r\n AxisProxy.prototype.getDataPercentWindow = function () {\r\n return this._percentWindow.slice();\r\n };\r\n AxisProxy.prototype.getTargetSeriesModels = function () {\r\n var seriesModels = [];\r\n this.ecModel.eachSeries(function (seriesModel) {\r\n if (isCoordSupported(seriesModel)) {\r\n var axisMainType = getAxisMainType(this._dimName);\r\n var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0];\r\n if (axisModel && this._axisIndex === axisModel.componentIndex) {\r\n seriesModels.push(seriesModel);\r\n }\r\n }\r\n }, this);\r\n return seriesModels;\r\n };\r\n AxisProxy.prototype.getAxisModel = function () {\r\n return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\r\n };\r\n AxisProxy.prototype.getMinMaxSpan = function () {\r\n return clone(this._minMaxSpan);\r\n };\r\n AxisProxy.prototype.calculateDataWindow = function (opt) {\r\n var dataExtent = this._dataExtent;\r\n var axisModel = this.getAxisModel();\r\n var scale = axisModel.axis.scale;\r\n var rangePropMode = this._dataZoomModel.getRangePropMode();\r\n var percentExtent = [0, 100];\r\n var percentWindow = [];\r\n var valueWindow = [];\r\n var hasPropModeValue;\r\n each$a(['start', 'end'], function (prop, idx) {\r\n var boundPercent = opt[prop];\r\n var boundValue = opt[prop + 'Value'];\r\n if (rangePropMode[idx] === 'percent') {\r\n boundPercent == null && (boundPercent = percentExtent[idx]);\r\n boundValue = scale.parse(linearMap(boundPercent, percentExtent, dataExtent));\r\n }\r\n else {\r\n hasPropModeValue = true;\r\n boundValue = boundValue == null ? dataExtent[idx] : scale.parse(boundValue);\r\n boundPercent = linearMap(boundValue, dataExtent, percentExtent);\r\n }\r\n valueWindow[idx] = boundValue;\r\n percentWindow[idx] = boundPercent;\r\n });\r\n asc$1(valueWindow);\r\n asc$1(percentWindow);\r\n var spans = this._minMaxSpan;\r\n hasPropModeValue\r\n ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false)\r\n : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);\r\n function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {\r\n var suffix = toValue ? 'Span' : 'ValueSpan';\r\n sliderMove(0, fromWindow, fromExtent, 'all', spans['min' + suffix], spans['max' + suffix]);\r\n for (var i = 0; i < 2; i++) {\r\n toWindow[i] = linearMap(fromWindow[i], fromExtent, toExtent, true);\r\n toValue && (toWindow[i] = scale.parse(toWindow[i]));\r\n }\r\n }\r\n return {\r\n valueWindow: valueWindow,\r\n percentWindow: percentWindow\r\n };\r\n };\r\n AxisProxy.prototype.reset = function (dataZoomModel) {\r\n if (dataZoomModel !== this._dataZoomModel) {\r\n return;\r\n }\r\n var targetSeries = this.getTargetSeriesModels();\r\n this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries);\r\n this._updateMinMaxSpan();\r\n var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);\r\n this._valueWindow = dataWindow.valueWindow;\r\n this._percentWindow = dataWindow.percentWindow;\r\n this._setAxisModel();\r\n };\r\n AxisProxy.prototype.filterData = function (dataZoomModel, api) {\r\n if (dataZoomModel !== this._dataZoomModel) {\r\n return;\r\n }\r\n var axisDim = this._dimName;\r\n var seriesModels = this.getTargetSeriesModels();\r\n var filterMode = dataZoomModel.get('filterMode');\r\n var valueWindow = this._valueWindow;\r\n if (filterMode === 'none') {\r\n return;\r\n }\r\n each$a(seriesModels, function (seriesModel) {\r\n var seriesData = seriesModel.getData();\r\n var dataDims = seriesData.mapDimensionsAll(axisDim);\r\n if (!dataDims.length) {\r\n return;\r\n }\r\n if (filterMode === 'weakFilter') {\r\n seriesData.filterSelf(function (dataIndex) {\r\n var leftOut;\r\n var rightOut;\r\n var hasValue;\r\n for (var i = 0; i < dataDims.length; i++) {\r\n var value = seriesData.get(dataDims[i], dataIndex);\r\n var thisHasValue = !isNaN(value);\r\n var thisLeftOut = value < valueWindow[0];\r\n var thisRightOut = value > valueWindow[1];\r\n if (thisHasValue && !thisLeftOut && !thisRightOut) {\r\n return true;\r\n }\r\n thisHasValue && (hasValue = true);\r\n thisLeftOut && (leftOut = true);\r\n thisRightOut && (rightOut = true);\r\n }\r\n return hasValue && leftOut && rightOut;\r\n });\r\n }\r\n else {\r\n each$a(dataDims, function (dim) {\r\n if (filterMode === 'empty') {\r\n seriesModel.setData(seriesData = seriesData.map(dim, function (value) {\r\n return !isInWindow(value) ? NaN : value;\r\n }));\r\n }\r\n else {\r\n var range = {};\r\n range[dim] = valueWindow;\r\n seriesData.selectRange(range);\r\n }\r\n });\r\n }\r\n each$a(dataDims, function (dim) {\r\n seriesData.setApproximateExtent(valueWindow, dim);\r\n });\r\n });\r\n function isInWindow(value) {\r\n return value >= valueWindow[0] && value <= valueWindow[1];\r\n }\r\n };\r\n AxisProxy.prototype._updateMinMaxSpan = function () {\r\n var minMaxSpan = this._minMaxSpan = {};\r\n var dataZoomModel = this._dataZoomModel;\r\n var dataExtent = this._dataExtent;\r\n each$a(['min', 'max'], function (minMax) {\r\n var percentSpan = dataZoomModel.get(minMax + 'Span');\r\n var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\r\n valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan));\r\n if (valueSpan != null) {\r\n percentSpan = linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\r\n }\r\n else if (percentSpan != null) {\r\n valueSpan = linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];\r\n }\r\n minMaxSpan[minMax + 'Span'] = percentSpan;\r\n minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\r\n }, this);\r\n };\r\n AxisProxy.prototype._setAxisModel = function () {\r\n var axisModel = this.getAxisModel();\r\n var percentWindow = this._percentWindow;\r\n var valueWindow = this._valueWindow;\r\n if (!percentWindow) {\r\n return;\r\n }\r\n var precision = getPixelPrecision(valueWindow, [0, 500]);\r\n precision = Math.min(precision, 20);\r\n var rawExtentInfo = axisModel.axis.scale.rawExtentInfo;\r\n if (percentWindow[0] !== 0) {\r\n rawExtentInfo.setDeterminedMinMax('min', +valueWindow[0].toFixed(precision));\r\n }\r\n if (percentWindow[1] !== 100) {\r\n rawExtentInfo.setDeterminedMinMax('max', +valueWindow[1].toFixed(precision));\r\n }\r\n rawExtentInfo.freeze();\r\n };\r\n return AxisProxy;\r\n}());\r\nfunction calculateDataExtent(axisProxy, axisDim, seriesModels) {\r\n var dataExtent = [Infinity, -Infinity];\r\n each$a(seriesModels, function (seriesModel) {\r\n unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim);\r\n });\r\n var axisModel = axisProxy.getAxisModel();\r\n var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate();\r\n return [rawExtentResult.min, rawExtentResult.max];\r\n}\n\nregisterProcessor(PRIORITY.PROCESSOR.FILTER, {\r\n getTargetSeries: function (ecModel) {\r\n function eachAxisModel(cb) {\r\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);\r\n cb(axisDim, axisIndex, axisModel, dataZoomModel);\r\n });\r\n });\r\n }\r\n eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {\r\n axisModel.__dzAxisProxy = null;\r\n });\r\n var proxyList = [];\r\n eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {\r\n if (!axisModel.__dzAxisProxy) {\r\n axisModel.__dzAxisProxy = new AxisProxy(axisDim, axisIndex, dataZoomModel, ecModel);\r\n proxyList.push(axisModel.__dzAxisProxy);\r\n }\r\n });\r\n var seriesModelMap = createHashMap();\r\n each(proxyList, function (axisProxy) {\r\n each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\r\n seriesModelMap.set(seriesModel.uid, seriesModel);\r\n });\r\n });\r\n return seriesModelMap;\r\n },\r\n overallReset: function (ecModel, api) {\r\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel);\r\n });\r\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api);\r\n });\r\n });\r\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\r\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\r\n if (axisProxy) {\r\n var percentRange = axisProxy.getDataPercentWindow();\r\n var valueRange = axisProxy.getDataValueWindow();\r\n dataZoomModel.setCalculatedRange({\r\n start: percentRange[0],\r\n end: percentRange[1],\r\n startValue: valueRange[0],\r\n endValue: valueRange[1]\r\n });\r\n }\r\n });\r\n }\r\n});\n\nregisterAction('dataZoom', function (payload, ecModel) {\r\n var effectedModels = findEffectedDataZooms(ecModel, payload);\r\n each(effectedModels, function (dataZoomModel) {\r\n dataZoomModel.setRawRange({\r\n start: payload.start,\r\n end: payload.end,\r\n startValue: payload.startValue,\r\n endValue: payload.endValue\r\n });\r\n });\r\n});\n\nvar each$b = each;\r\nvar DATA_ZOOM_ID_BASE = makeInternalComponentId('toolbox-dataZoom_');\r\nvar DataZoomFeature = (function (_super) {\r\n __extends(DataZoomFeature, _super);\r\n function DataZoomFeature() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DataZoomFeature.prototype.render = function (featureModel, ecModel, api, payload) {\r\n if (!this.brushController) {\r\n this.brushController = new BrushController(api.getZr());\r\n this.brushController.on('brush', bind(this._onBrush, this))\r\n .mount();\r\n }\r\n updateZoomBtnStatus(featureModel, ecModel, this, payload, api);\r\n updateBackBtnStatus(featureModel, ecModel);\r\n };\r\n DataZoomFeature.prototype.onclick = function (ecModel, api, type) {\r\n handlers$1[type].call(this);\r\n };\r\n DataZoomFeature.prototype.remove = function (ecModel, api) {\r\n this.brushController.unmount();\r\n };\r\n DataZoomFeature.prototype.dispose = function (ecModel, api) {\r\n this.brushController.dispose();\r\n };\r\n DataZoomFeature.prototype._onBrush = function (eventParam) {\r\n var areas = eventParam.areas;\r\n if (!eventParam.isEnd || !areas.length) {\r\n return;\r\n }\r\n var snapshot = {};\r\n var ecModel = this.ecModel;\r\n this.brushController.updateCovers([]);\r\n var brushTargetManager = new BrushTargetManager(makeAxisFinder(this.model), ecModel, { include: ['grid'] });\r\n brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\r\n if (coordSys.type !== 'cartesian2d') {\r\n return;\r\n }\r\n var brushType = area.brushType;\r\n if (brushType === 'rect') {\r\n setBatch('x', coordSys, coordRange[0]);\r\n setBatch('y', coordSys, coordRange[1]);\r\n }\r\n else {\r\n setBatch({ lineX: 'x', lineY: 'y' }[brushType], coordSys, coordRange);\r\n }\r\n });\r\n push(ecModel, snapshot);\r\n this._dispatchZoomAction(snapshot);\r\n function setBatch(dimName, coordSys, minMax) {\r\n var axis = coordSys.getAxis(dimName);\r\n var axisModel = axis.model;\r\n var dataZoomModel = findDataZoom(dimName, axisModel, ecModel);\r\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();\r\n if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {\r\n minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);\r\n }\r\n dataZoomModel && (snapshot[dataZoomModel.id] = {\r\n dataZoomId: dataZoomModel.id,\r\n startValue: minMax[0],\r\n endValue: minMax[1]\r\n });\r\n }\r\n function findDataZoom(dimName, axisModel, ecModel) {\r\n var found;\r\n ecModel.eachComponent({ mainType: 'dataZoom', subType: 'select' }, function (dzModel) {\r\n var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);\r\n has && (found = dzModel);\r\n });\r\n return found;\r\n }\r\n };\r\n DataZoomFeature.prototype._dispatchZoomAction = function (snapshot) {\r\n var batch = [];\r\n each$b(snapshot, function (batchItem, dataZoomId) {\r\n batch.push(clone(batchItem));\r\n });\r\n batch.length && this.api.dispatchAction({\r\n type: 'dataZoom',\r\n from: this.uid,\r\n batch: batch\r\n });\r\n };\r\n DataZoomFeature.getDefaultOption = function (ecModel) {\r\n var defaultOption = {\r\n show: true,\r\n filterMode: 'filter',\r\n icon: {\r\n zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',\r\n back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26'\r\n },\r\n title: ecModel.getLocale(['toolbox', 'dataZoom', 'title']),\r\n brushStyle: {\r\n borderWidth: 0,\r\n color: 'rgba(210,219,238,0.2)'\r\n }\r\n };\r\n return defaultOption;\r\n };\r\n return DataZoomFeature;\r\n}(ToolboxFeature));\r\nvar handlers$1 = {\r\n zoom: function () {\r\n var nextActive = !this.isZoomActive;\r\n this.api.dispatchAction({\r\n type: 'takeGlobalCursor',\r\n key: 'dataZoomSelect',\r\n dataZoomSelectActive: nextActive\r\n });\r\n },\r\n back: function () {\r\n this._dispatchZoomAction(pop(this.ecModel));\r\n }\r\n};\r\nfunction makeAxisFinder(dzFeatureModel) {\r\n var setting = {\r\n xAxisIndex: dzFeatureModel.get('xAxisIndex', true),\r\n yAxisIndex: dzFeatureModel.get('yAxisIndex', true),\r\n xAxisId: dzFeatureModel.get('xAxisId', true),\r\n yAxisId: dzFeatureModel.get('yAxisId', true)\r\n };\r\n if (setting.xAxisIndex == null && setting.xAxisId == null) {\r\n setting.xAxisIndex = 'all';\r\n }\r\n if (setting.yAxisIndex == null && setting.yAxisId == null) {\r\n setting.yAxisIndex = 'all';\r\n }\r\n return setting;\r\n}\r\nfunction updateBackBtnStatus(featureModel, ecModel) {\r\n featureModel.setIconStatus('back', count(ecModel) > 1 ? 'emphasis' : 'normal');\r\n}\r\nfunction updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {\r\n var zoomActive = view.isZoomActive;\r\n if (payload && payload.type === 'takeGlobalCursor') {\r\n zoomActive = payload.key === 'dataZoomSelect'\r\n ? payload.dataZoomSelectActive : false;\r\n }\r\n view.isZoomActive = zoomActive;\r\n featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');\r\n var brushTargetManager = new BrushTargetManager(makeAxisFinder(featureModel), ecModel, { include: ['grid'] });\r\n var panels = brushTargetManager.makePanelOpts(api, function (targetInfo) {\r\n return (targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared)\r\n ? 'lineX'\r\n : (!targetInfo.xAxisDeclared && targetInfo.yAxisDeclared)\r\n ? 'lineY'\r\n : 'rect';\r\n });\r\n view.brushController\r\n .setPanels(panels)\r\n .enableBrush((zoomActive && panels.length)\r\n ? {\r\n brushType: 'auto',\r\n brushStyle: featureModel.getModel('brushStyle').getItemStyle()\r\n }\r\n : false);\r\n}\r\nregisterFeature('dataZoom', DataZoomFeature);\r\nregisterInternalOptionCreator('dataZoom', function (ecModel) {\r\n var toolboxModel = ecModel.getComponent('toolbox', 0);\r\n if (!toolboxModel) {\r\n return;\r\n }\r\n var dzFeatureModel = toolboxModel.getModel(['feature', 'dataZoom']);\r\n var dzOptions = [];\r\n var finder = makeAxisFinder(dzFeatureModel);\r\n var finderResult = parseFinder(ecModel, finder);\r\n each$b(finderResult.xAxisModels, function (axisModel) { return buildInternalOptions(axisModel, 'xAxis', 'xAxisIndex'); });\r\n each$b(finderResult.yAxisModels, function (axisModel) { return buildInternalOptions(axisModel, 'yAxis', 'yAxisIndex'); });\r\n function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) {\r\n var axisIndex = axisModel.componentIndex;\r\n var newOpt = {\r\n type: 'select',\r\n $fromToolbox: true,\r\n filterMode: dzFeatureModel.get('filterMode', true) || 'filter',\r\n id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex\r\n };\r\n newOpt[axisIndexPropName] = axisIndex;\r\n dzOptions.push(newOpt);\r\n }\r\n return dzOptions;\r\n});\n\nvar RestoreOption = (function (_super) {\r\n __extends(RestoreOption, _super);\r\n function RestoreOption() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RestoreOption.prototype.onclick = function (ecModel, api) {\r\n clear$1(ecModel);\r\n api.dispatchAction({\r\n type: 'restore',\r\n from: this.uid\r\n });\r\n };\r\n RestoreOption.getDefaultOption = function (ecModel) {\r\n var defaultOption = {\r\n show: true,\r\n icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\r\n title: ecModel.getLocale(['toolbox', 'restore', 'title'])\r\n };\r\n return defaultOption;\r\n };\r\n return RestoreOption;\r\n}(ToolboxFeature));\r\nregisterFeature('restore', RestoreOption);\r\nregisterAction({ type: 'restore', event: 'restore', update: 'prepareAndUpdate' }, function (payload, ecModel) {\r\n ecModel.resetOption('recreate');\r\n});\n\nvar TooltipModel = (function (_super) {\r\n __extends(TooltipModel, _super);\r\n function TooltipModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TooltipModel.type;\r\n return _this;\r\n }\r\n TooltipModel.type = 'tooltip';\r\n TooltipModel.dependencies = ['axisPointer'];\r\n TooltipModel.defaultOption = {\r\n zlevel: 0,\r\n z: 60,\r\n show: true,\r\n showContent: true,\r\n trigger: 'item',\r\n triggerOn: 'mousemove|click',\r\n alwaysShowContent: false,\r\n displayMode: 'single',\r\n renderMode: 'auto',\r\n confine: null,\r\n showDelay: 0,\r\n hideDelay: 100,\r\n transitionDuration: 0.4,\r\n enterable: false,\r\n backgroundColor: '#fff',\r\n shadowBlur: 10,\r\n shadowColor: 'rgba(0, 0, 0, .2)',\r\n shadowOffsetX: 1,\r\n shadowOffsetY: 2,\r\n borderColor: '#333',\r\n borderRadius: 4,\r\n borderWidth: 1,\r\n padding: null,\r\n extraCssText: '',\r\n axisPointer: {\r\n type: 'line',\r\n axis: 'auto',\r\n animation: 'auto',\r\n animationDurationUpdate: 200,\r\n animationEasingUpdate: 'exponentialOut',\r\n crossStyle: {\r\n color: '#999',\r\n width: 1,\r\n type: 'dashed',\r\n textStyle: {}\r\n }\r\n },\r\n textStyle: {\r\n color: '#666',\r\n fontSize: 14\r\n }\r\n };\r\n return TooltipModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(TooltipModel);\n\nfunction shouldTooltipConfine(tooltipModel) {\r\n var confineOption = tooltipModel.get('confine');\r\n return confineOption != null\r\n ? !!confineOption\r\n : tooltipModel.get('renderMode') === 'richText';\r\n}\n\nvar vendors = ['-ms-', '-moz-', '-o-', '-webkit-', ''];\r\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\r\nfunction mirrorPos(pos) {\r\n pos = pos === 'left'\r\n ? 'right'\r\n : pos === 'right'\r\n ? 'left'\r\n : pos === 'top'\r\n ? 'bottom'\r\n : 'top';\r\n return pos;\r\n}\r\nfunction assembleArrow(backgroundColor, borderColor, arrowPosition) {\r\n if (!isString(arrowPosition) || arrowPosition === 'inside') {\r\n return '';\r\n }\r\n borderColor = convertToColorString(borderColor);\r\n var arrowPos = mirrorPos(arrowPosition);\r\n var positionStyle = '';\r\n var transformStyle = '';\r\n if (indexOf(['left', 'right'], arrowPos) > -1) {\r\n positionStyle = arrowPos + \":-6px;top:50%;\";\r\n transformStyle = \"translateY(-50%) rotate(\" + (arrowPos === 'left' ? -225 : -45) + \"deg)\";\r\n }\r\n else {\r\n positionStyle = arrowPos + \":-6px;left:50%;\";\r\n transformStyle = \"translateX(-50%) rotate(\" + (arrowPos === 'top' ? 225 : 45) + \"deg)\";\r\n }\r\n transformStyle = map(vendors, function (vendorPrefix) {\r\n return vendorPrefix + 'transform:' + transformStyle;\r\n }).join(';');\r\n var styleCss = [\r\n 'position:absolute;width:10px;height:10px;',\r\n \"\" + positionStyle + transformStyle + \";\",\r\n \"border-bottom: \" + borderColor + \" solid 1px;\",\r\n \"border-right: \" + borderColor + \" solid 1px;\",\r\n \"background-color: \" + backgroundColor + \";\",\r\n 'box-shadow: 8px 8px 16px -3px #000;'\r\n ];\r\n return \"<div style=\\\"\" + styleCss.join('') + \"\\\"></div>\";\r\n}\r\nfunction assembleTransition(duration, onlyFade) {\r\n var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\r\n var transitionText = 'opacity ' + (duration / 2) + 's ' + transitionCurve + ','\r\n + 'visibility ' + (duration / 2) + 's ' + transitionCurve;\r\n if (!onlyFade) {\r\n transitionText += ',left ' + duration + 's ' + transitionCurve\r\n + ',top ' + duration + 's ' + transitionCurve;\r\n }\r\n return map(vendors, function (vendorPrefix) {\r\n return vendorPrefix + 'transition:' + transitionText;\r\n }).join(';');\r\n}\r\nfunction assembleFont(textStyleModel) {\r\n var cssText = [];\r\n var fontSize = textStyleModel.get('fontSize');\r\n var color = textStyleModel.getTextColor();\r\n color && cssText.push('color:' + color);\r\n cssText.push('font:' + textStyleModel.getFont());\r\n fontSize\r\n && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\r\n var shadowColor = textStyleModel.get('textShadowColor');\r\n var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\r\n var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\r\n var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\r\n shadowColor && shadowBlur\r\n && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px '\r\n + shadowBlur + 'px ' + shadowColor);\r\n each(['decoration', 'align'], function (name) {\r\n var val = textStyleModel.get(name);\r\n val && cssText.push('text-' + name + ':' + val);\r\n });\r\n return cssText.join(';');\r\n}\r\nfunction assembleCssText(tooltipModel, enableTransition, onlyFade) {\r\n var cssText = [];\r\n var transitionDuration = tooltipModel.get('transitionDuration');\r\n var backgroundColor = tooltipModel.get('backgroundColor');\r\n var shadowBlur = tooltipModel.get('shadowBlur');\r\n var shadowColor = tooltipModel.get('shadowColor');\r\n var shadowOffsetX = tooltipModel.get('shadowOffsetX');\r\n var shadowOffsetY = tooltipModel.get('shadowOffsetY');\r\n var textStyleModel = tooltipModel.getModel('textStyle');\r\n var padding = getPaddingFromTooltipModel(tooltipModel, 'html');\r\n var boxShadow = shadowOffsetX + \"px \" + shadowOffsetY + \"px \" + shadowBlur + \"px \" + shadowColor;\r\n cssText.push('box-shadow:' + boxShadow);\r\n enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade));\r\n if (backgroundColor) {\r\n if (env.canvasSupported) {\r\n cssText.push('background-Color:' + backgroundColor);\r\n }\r\n else {\r\n cssText.push('background-Color:#' + toHex(backgroundColor));\r\n cssText.push('filter:alpha(opacity=70)');\r\n }\r\n }\r\n each(['width', 'color', 'radius'], function (name) {\r\n var borderName = 'border-' + name;\r\n var camelCase = toCamelCase(borderName);\r\n var val = tooltipModel.get(camelCase);\r\n val != null\r\n && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\r\n });\r\n cssText.push(assembleFont(textStyleModel));\r\n if (padding != null) {\r\n cssText.push('padding:' + normalizeCssArray$1(padding).join('px ') + 'px');\r\n }\r\n return cssText.join(';') + ';';\r\n}\r\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\r\n var zrPainter = zr && zr.painter;\r\n if (appendToBody) {\r\n var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\r\n if (zrViewportRoot) {\r\n transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\r\n }\r\n }\r\n else {\r\n out[0] = zrX;\r\n out[1] = zrY;\r\n var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\r\n if (viewportRootOffset) {\r\n out[0] += viewportRootOffset.offsetLeft;\r\n out[1] += viewportRootOffset.offsetTop;\r\n }\r\n }\r\n out[2] = out[0] / zr.getWidth();\r\n out[3] = out[1] / zr.getHeight();\r\n}\r\nvar TooltipHTMLContent = (function () {\r\n function TooltipHTMLContent(container, api, opt) {\r\n this._show = false;\r\n this._styleCoord = [0, 0, 0, 0];\r\n this._enterable = true;\r\n this._firstShow = true;\r\n this._longHide = true;\r\n if (env.wxa) {\r\n return null;\r\n }\r\n var el = document.createElement('div');\r\n el.domBelongToZr = true;\r\n this.el = el;\r\n var zr = this._zr = api.getZr();\r\n var appendToBody = this._appendToBody = opt && opt.appendToBody;\r\n makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\r\n if (appendToBody) {\r\n document.body.appendChild(el);\r\n }\r\n else {\r\n container.appendChild(el);\r\n }\r\n this._container = container;\r\n var self = this;\r\n el.onmouseenter = function () {\r\n if (self._enterable) {\r\n clearTimeout(self._hideTimeout);\r\n self._show = true;\r\n }\r\n self._inContent = true;\r\n };\r\n el.onmousemove = function (e) {\r\n e = e || window.event;\r\n if (!self._enterable) {\r\n var handler = zr.handler;\r\n var zrViewportRoot = zr.painter.getViewportRoot();\r\n normalizeEvent(zrViewportRoot, e, true);\r\n handler.dispatch('mousemove', e);\r\n }\r\n };\r\n el.onmouseleave = function () {\r\n self._inContent = false;\r\n if (self._enterable) {\r\n if (self._show) {\r\n self.hideLater(self._hideDelay);\r\n }\r\n }\r\n };\r\n }\r\n TooltipHTMLContent.prototype.update = function (tooltipModel) {\r\n var container = this._container;\r\n var stl = container.currentStyle\r\n || document.defaultView.getComputedStyle(container);\r\n var domStyle = container.style;\r\n if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\r\n domStyle.position = 'relative';\r\n }\r\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n alwaysShowContent && this._moveIfResized();\r\n this.el.className = tooltipModel.get('className') || '';\r\n };\r\n TooltipHTMLContent.prototype.show = function (tooltipModel, nearPointColor) {\r\n clearTimeout(this._hideTimeout);\r\n clearTimeout(this._longHideTimeout);\r\n var el = this.el;\r\n var styleCoord = this._styleCoord;\r\n var offset = el.offsetHeight / 2;\r\n nearPointColor = convertToColorString(nearPointColor);\r\n el.style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide)\r\n + ';left:' + styleCoord[0] + 'px;top:' + (styleCoord[1] - offset) + 'px;'\r\n + (\"border-color: \" + nearPointColor + \";\")\r\n + (tooltipModel.get('extraCssText') || '');\r\n el.style.display = el.innerHTML ? 'block' : 'none';\r\n el.style.pointerEvents = this._enterable ? 'auto' : 'none';\r\n this._show = true;\r\n this._firstShow = false;\r\n this._longHide = false;\r\n };\r\n TooltipHTMLContent.prototype.setContent = function (content, markers, tooltipModel, borderColor, arrowPosition) {\r\n if (content == null) {\r\n return;\r\n }\r\n var el = this.el;\r\n if (isString(arrowPosition) && tooltipModel.get('trigger') === 'item'\r\n && !shouldTooltipConfine(tooltipModel)) {\r\n content += assembleArrow(tooltipModel.get('backgroundColor'), borderColor, arrowPosition);\r\n }\r\n if (isString(content)) {\r\n el.innerHTML = content;\r\n }\r\n else if (content) {\r\n el.innerHTML = '';\r\n if (!isArray(content)) {\r\n content = [content];\r\n }\r\n for (var i = 0; i < content.length; i++) {\r\n if (isDom(content[i]) && content[i].parentNode !== el) {\r\n el.appendChild(content[i]);\r\n }\r\n }\r\n }\r\n };\r\n TooltipHTMLContent.prototype.setEnterable = function (enterable) {\r\n this._enterable = enterable;\r\n };\r\n TooltipHTMLContent.prototype.getSize = function () {\r\n var el = this.el;\r\n return [el.clientWidth, el.clientHeight];\r\n };\r\n TooltipHTMLContent.prototype.moveTo = function (zrX, zrY) {\r\n var styleCoord = this._styleCoord;\r\n makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\r\n if (styleCoord[0] != null && styleCoord[1] != null) {\r\n var style = this.el.style;\r\n style.left = styleCoord[0].toFixed(0) + 'px';\r\n style.top = styleCoord[1].toFixed(0) + 'px';\r\n }\r\n };\r\n TooltipHTMLContent.prototype._moveIfResized = function () {\r\n var ratioX = this._styleCoord[2];\r\n var ratioY = this._styleCoord[3];\r\n this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\r\n };\r\n TooltipHTMLContent.prototype.hide = function () {\r\n var _this = this;\r\n this.el.style.visibility = 'hidden';\r\n this.el.style.opacity = '0';\r\n this._show = false;\r\n this._longHideTimeout = setTimeout(function () { return _this._longHide = true; }, 500);\r\n };\r\n TooltipHTMLContent.prototype.hideLater = function (time) {\r\n if (this._show && !(this._inContent && this._enterable)) {\r\n if (time) {\r\n this._hideDelay = time;\r\n this._show = false;\r\n this._hideTimeout = setTimeout(bind(this.hide, this), time);\r\n }\r\n else {\r\n this.hide();\r\n }\r\n }\r\n };\r\n TooltipHTMLContent.prototype.isShow = function () {\r\n return this._show;\r\n };\r\n TooltipHTMLContent.prototype.dispose = function () {\r\n this.el.parentNode.removeChild(this.el);\r\n };\r\n TooltipHTMLContent.prototype.getOuterSize = function () {\r\n var width = this.el.clientWidth;\r\n var height = this.el.clientHeight;\r\n if (document.defaultView && document.defaultView.getComputedStyle) {\r\n var stl = document.defaultView.getComputedStyle(this.el);\r\n if (stl) {\r\n width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\r\n height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\r\n }\r\n }\r\n return { width: width, height: height };\r\n };\r\n return TooltipHTMLContent;\r\n}());\n\nvar TooltipRichContent = (function () {\r\n function TooltipRichContent(api) {\r\n this._show = false;\r\n this._styleCoord = [0, 0, 0, 0];\r\n this._enterable = true;\r\n this._zr = api.getZr();\r\n makeStyleCoord$1(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2);\r\n }\r\n TooltipRichContent.prototype.update = function (tooltipModel) {\r\n var alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n alwaysShowContent && this._moveIfResized();\r\n };\r\n TooltipRichContent.prototype.show = function () {\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n this.el.show();\r\n this._show = true;\r\n };\r\n TooltipRichContent.prototype.setContent = function (content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) {\r\n if (isObject(content)) {\r\n throwError(__DEV__ ? 'Passing DOM nodes as content is not supported in richText tooltip!' : '');\r\n }\r\n if (this.el) {\r\n this._zr.remove(this.el);\r\n }\r\n var textStyleModel = tooltipModel.getModel('textStyle');\r\n this.el = new ZRText({\r\n style: {\r\n rich: markupStyleCreator.richTextStyles,\r\n text: content,\r\n lineHeight: 22,\r\n backgroundColor: tooltipModel.get('backgroundColor'),\r\n borderRadius: tooltipModel.get('borderRadius'),\r\n borderWidth: 1,\r\n borderColor: borderColor,\r\n shadowColor: tooltipModel.get('shadowColor'),\r\n shadowBlur: tooltipModel.get('shadowBlur'),\r\n shadowOffsetX: tooltipModel.get('shadowOffsetX'),\r\n shadowOffsetY: tooltipModel.get('shadowOffsetY'),\r\n textShadowColor: textStyleModel.get('textShadowColor'),\r\n textShadowBlur: textStyleModel.get('textShadowBlur') || 0,\r\n textShadowOffsetX: textStyleModel.get('textShadowOffsetX') || 0,\r\n textShadowOffsetY: textStyleModel.get('textShadowOffsetY') || 0,\r\n fill: tooltipModel.get(['textStyle', 'color']),\r\n padding: getPaddingFromTooltipModel(tooltipModel, 'richText'),\r\n verticalAlign: 'top',\r\n align: 'left'\r\n },\r\n z: tooltipModel.get('z')\r\n });\r\n this._zr.add(this.el);\r\n var self = this;\r\n this.el.on('mouseover', function () {\r\n if (self._enterable) {\r\n clearTimeout(self._hideTimeout);\r\n self._show = true;\r\n }\r\n self._inContent = true;\r\n });\r\n this.el.on('mouseout', function () {\r\n if (self._enterable) {\r\n if (self._show) {\r\n self.hideLater(self._hideDelay);\r\n }\r\n }\r\n self._inContent = false;\r\n });\r\n };\r\n TooltipRichContent.prototype.setEnterable = function (enterable) {\r\n this._enterable = enterable;\r\n };\r\n TooltipRichContent.prototype.getSize = function () {\r\n var el = this.el;\r\n var bounding = this.el.getBoundingRect();\r\n var shadowOuterSize = calcShadowOuterSize(el.style);\r\n return [\r\n bounding.width + shadowOuterSize.left + shadowOuterSize.right,\r\n bounding.height + shadowOuterSize.top + shadowOuterSize.bottom\r\n ];\r\n };\r\n TooltipRichContent.prototype.moveTo = function (x, y) {\r\n var el = this.el;\r\n if (el) {\r\n var styleCoord = this._styleCoord;\r\n makeStyleCoord$1(styleCoord, this._zr, x, y);\r\n x = styleCoord[0];\r\n y = styleCoord[1];\r\n var style = el.style;\r\n var borderWidth = mathMaxWith0(style.borderWidth || 0);\r\n var shadowOuterSize = calcShadowOuterSize(style);\r\n el.x = x + borderWidth + shadowOuterSize.left;\r\n el.y = y + borderWidth + shadowOuterSize.top;\r\n el.markRedraw();\r\n }\r\n };\r\n TooltipRichContent.prototype._moveIfResized = function () {\r\n var ratioX = this._styleCoord[2];\r\n var ratioY = this._styleCoord[3];\r\n this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());\r\n };\r\n TooltipRichContent.prototype.hide = function () {\r\n if (this.el) {\r\n this.el.hide();\r\n }\r\n this._show = false;\r\n };\r\n TooltipRichContent.prototype.hideLater = function (time) {\r\n if (this._show && !(this._inContent && this._enterable)) {\r\n if (time) {\r\n this._hideDelay = time;\r\n this._show = false;\r\n this._hideTimeout = setTimeout(bind(this.hide, this), time);\r\n }\r\n else {\r\n this.hide();\r\n }\r\n }\r\n };\r\n TooltipRichContent.prototype.isShow = function () {\r\n return this._show;\r\n };\r\n TooltipRichContent.prototype.getOuterSize = function () {\r\n var size = this.getSize();\r\n return {\r\n width: size[0],\r\n height: size[1]\r\n };\r\n };\r\n TooltipRichContent.prototype.dispose = function () {\r\n this._zr.remove(this.el);\r\n };\r\n return TooltipRichContent;\r\n}());\r\nfunction mathMaxWith0(val) {\r\n return Math.max(0, val);\r\n}\r\nfunction calcShadowOuterSize(style) {\r\n var shadowBlur = mathMaxWith0(style.shadowBlur || 0);\r\n var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0);\r\n var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0);\r\n return {\r\n left: mathMaxWith0(shadowBlur - shadowOffsetX),\r\n right: mathMaxWith0(shadowBlur + shadowOffsetX),\r\n top: mathMaxWith0(shadowBlur - shadowOffsetY),\r\n bottom: mathMaxWith0(shadowBlur + shadowOffsetY)\r\n };\r\n}\r\nfunction makeStyleCoord$1(out, zr, zrX, zrY) {\r\n out[0] = zrX;\r\n out[1] = zrY;\r\n out[2] = out[0] / zr.getWidth();\r\n out[3] = out[1] / zr.getHeight();\r\n}\n\nvar bind$2 = bind;\r\nvar each$c = each;\r\nvar parsePercent$3 = parsePercent$2;\r\nvar proxyRect = new Rect({\r\n shape: { x: -1, y: -1, width: 2, height: 2 }\r\n});\r\nvar TooltipView = (function (_super) {\r\n __extends(TooltipView, _super);\r\n function TooltipView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TooltipView.type;\r\n return _this;\r\n }\r\n TooltipView.prototype.init = function (ecModel, api) {\r\n if (env.node) {\r\n return;\r\n }\r\n var tooltipModel = ecModel.getComponent('tooltip');\r\n var renderMode = tooltipModel.get('renderMode');\r\n this._renderMode = getTooltipRenderMode(renderMode);\r\n this._tooltipContent = this._renderMode === 'richText'\r\n ? new TooltipRichContent(api)\r\n : new TooltipHTMLContent(api.getDom(), api, {\r\n appendToBody: tooltipModel.get('appendToBody', true)\r\n });\r\n };\r\n TooltipView.prototype.render = function (tooltipModel, ecModel, api) {\r\n if (env.node) {\r\n return;\r\n }\r\n this.group.removeAll();\r\n this._tooltipModel = tooltipModel;\r\n this._ecModel = ecModel;\r\n this._api = api;\r\n this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\r\n var tooltipContent = this._tooltipContent;\r\n tooltipContent.update(tooltipModel);\r\n tooltipContent.setEnterable(tooltipModel.get('enterable'));\r\n this._initGlobalListener();\r\n this._keepShow();\r\n };\r\n TooltipView.prototype._initGlobalListener = function () {\r\n var tooltipModel = this._tooltipModel;\r\n var triggerOn = tooltipModel.get('triggerOn');\r\n register('itemTooltip', this._api, bind$2(function (currTrigger, e, dispatchAction) {\r\n if (triggerOn !== 'none') {\r\n if (triggerOn.indexOf(currTrigger) >= 0) {\r\n this._tryShow(e, dispatchAction);\r\n }\r\n else if (currTrigger === 'leave') {\r\n this._hide(dispatchAction);\r\n }\r\n }\r\n }, this));\r\n };\r\n TooltipView.prototype._keepShow = function () {\r\n var tooltipModel = this._tooltipModel;\r\n var ecModel = this._ecModel;\r\n var api = this._api;\r\n if (this._lastX != null\r\n && this._lastY != null\r\n && tooltipModel.get('triggerOn') !== 'none') {\r\n var self_1 = this;\r\n clearTimeout(this._refreshUpdateTimeout);\r\n this._refreshUpdateTimeout = setTimeout(function () {\r\n !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {\r\n x: self_1._lastX,\r\n y: self_1._lastY,\r\n dataByCoordSys: self_1._lastDataByCoordSys\r\n });\r\n });\r\n }\r\n };\r\n TooltipView.prototype.manuallyShowTip = function (tooltipModel, ecModel, api, payload) {\r\n if (payload.from === this.uid || env.node) {\r\n return;\r\n }\r\n var dispatchAction = makeDispatchAction$1(payload, api);\r\n this._ticket = '';\r\n var dataByCoordSys = payload.dataByCoordSys;\r\n if (payload.tooltip && payload.x != null && payload.y != null) {\r\n var el = proxyRect;\r\n el.x = payload.x;\r\n el.y = payload.y;\r\n el.update();\r\n el.tooltip = payload.tooltip;\r\n this._tryShow({\r\n offsetX: payload.x,\r\n offsetY: payload.y,\r\n target: el\r\n }, dispatchAction);\r\n }\r\n else if (dataByCoordSys) {\r\n this._tryShow({\r\n offsetX: payload.x,\r\n offsetY: payload.y,\r\n position: payload.position,\r\n dataByCoordSys: dataByCoordSys,\r\n tooltipOption: payload.tooltipOption\r\n }, dispatchAction);\r\n }\r\n else if (payload.seriesIndex != null) {\r\n if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\r\n return;\r\n }\r\n var pointInfo = findPointFromSeries(payload, ecModel);\r\n var cx = pointInfo.point[0];\r\n var cy = pointInfo.point[1];\r\n if (cx != null && cy != null) {\r\n this._tryShow({\r\n offsetX: cx,\r\n offsetY: cy,\r\n position: payload.position,\r\n target: pointInfo.el\r\n }, dispatchAction);\r\n }\r\n }\r\n else if (payload.x != null && payload.y != null) {\r\n api.dispatchAction({\r\n type: 'updateAxisPointer',\r\n x: payload.x,\r\n y: payload.y\r\n });\r\n this._tryShow({\r\n offsetX: payload.x,\r\n offsetY: payload.y,\r\n position: payload.position,\r\n target: api.getZr().findHover(payload.x, payload.y).target\r\n }, dispatchAction);\r\n }\r\n };\r\n TooltipView.prototype.manuallyHideTip = function (tooltipModel, ecModel, api, payload) {\r\n var tooltipContent = this._tooltipContent;\r\n if (!this._alwaysShowContent && this._tooltipModel) {\r\n tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\r\n }\r\n this._lastX = this._lastY = this._lastDataByCoordSys = null;\r\n if (payload.from !== this.uid) {\r\n this._hide(makeDispatchAction$1(payload, api));\r\n }\r\n };\r\n TooltipView.prototype._manuallyAxisShowTip = function (tooltipModel, ecModel, api, payload) {\r\n var seriesIndex = payload.seriesIndex;\r\n var dataIndex = payload.dataIndex;\r\n var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\r\n if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\r\n return;\r\n }\r\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n if (!seriesModel) {\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n var tooltipCascadedModel = buildTooltipModel([\r\n data.getItemModel(dataIndex),\r\n seriesModel,\r\n (seriesModel.coordinateSystem || {}).model,\r\n tooltipModel\r\n ]);\r\n if (tooltipCascadedModel.get('trigger') !== 'axis') {\r\n return;\r\n }\r\n api.dispatchAction({\r\n type: 'updateAxisPointer',\r\n seriesIndex: seriesIndex,\r\n dataIndex: dataIndex,\r\n position: payload.position\r\n });\r\n return true;\r\n };\r\n TooltipView.prototype._tryShow = function (e, dispatchAction) {\r\n var el = e.target;\r\n var tooltipModel = this._tooltipModel;\r\n if (!tooltipModel) {\r\n return;\r\n }\r\n this._lastX = e.offsetX;\r\n this._lastY = e.offsetY;\r\n var dataByCoordSys = e.dataByCoordSys;\r\n if (dataByCoordSys && dataByCoordSys.length) {\r\n this._showAxisTooltip(dataByCoordSys, e);\r\n }\r\n else if (el && findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; })) {\r\n this._lastDataByCoordSys = null;\r\n this._showSeriesItemTooltip(e, el, dispatchAction);\r\n }\r\n else if (el && el.tooltip) {\r\n this._lastDataByCoordSys = null;\r\n this._showComponentItemTooltip(e, el, dispatchAction);\r\n }\r\n else {\r\n this._lastDataByCoordSys = null;\r\n this._hide(dispatchAction);\r\n }\r\n };\r\n TooltipView.prototype._showOrMove = function (tooltipModel, cb) {\r\n var delay = tooltipModel.get('showDelay');\r\n cb = bind(cb, this);\r\n clearTimeout(this._showTimout);\r\n delay > 0\r\n ? (this._showTimout = setTimeout(cb, delay))\r\n : cb();\r\n };\r\n TooltipView.prototype._showAxisTooltip = function (dataByCoordSys, e) {\r\n var ecModel = this._ecModel;\r\n var globalTooltipModel = this._tooltipModel;\r\n var point = [e.offsetX, e.offsetY];\r\n var singleTooltipModel = buildTooltipModel([\r\n e.tooltipOption,\r\n globalTooltipModel\r\n ]);\r\n var renderMode = this._renderMode;\r\n var cbParamsList = [];\r\n var articleMarkup = createTooltipMarkup('section', {\r\n blocks: [],\r\n noHeader: true\r\n });\r\n var markupTextArrLegacy = [];\r\n var markupStyleCreator = new TooltipMarkupStyleCreator();\r\n each$c(dataByCoordSys, function (itemCoordSys) {\r\n each$c(itemCoordSys.dataByAxis, function (axisItem) {\r\n var axisModel = ecModel.getComponent(axisItem.axisDim + 'Axis', axisItem.axisIndex);\r\n var axisValue = axisItem.value;\r\n if (!axisModel || axisValue == null) {\r\n return;\r\n }\r\n var axisValueLabel = getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt);\r\n var axisSectionMarkup = createTooltipMarkup('section', {\r\n header: axisValueLabel,\r\n noHeader: !trim(axisValueLabel),\r\n sortBlocks: true,\r\n blocks: []\r\n });\r\n articleMarkup.blocks.push(axisSectionMarkup);\r\n each(axisItem.seriesDataIndices, function (idxItem) {\r\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\r\n var dataIndex = idxItem.dataIndexInside;\r\n var cbParams = series.getDataParams(dataIndex);\r\n cbParams.axisDim = axisItem.axisDim;\r\n cbParams.axisIndex = axisItem.axisIndex;\r\n cbParams.axisType = axisItem.axisType;\r\n cbParams.axisId = axisItem.axisId;\r\n cbParams.axisValue = getAxisRawValue(axisModel.axis, { value: axisValue });\r\n cbParams.axisValueLabel = axisValueLabel;\r\n cbParams.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(cbParams.color), renderMode);\r\n var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null));\r\n if (seriesTooltipResult.markupFragment) {\r\n axisSectionMarkup.blocks.push(seriesTooltipResult.markupFragment);\r\n }\r\n if (seriesTooltipResult.markupText) {\r\n markupTextArrLegacy.push(seriesTooltipResult.markupText);\r\n }\r\n cbParamsList.push(cbParams);\r\n });\r\n });\r\n });\r\n articleMarkup.blocks.reverse();\r\n markupTextArrLegacy.reverse();\r\n var positionExpr = e.position;\r\n var orderMode = singleTooltipModel.get('order');\r\n var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'));\r\n builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText);\r\n var blockBreak = renderMode === 'richText' ? '\\n\\n' : '<br/>';\r\n var allMarkupText = markupTextArrLegacy.join(blockBreak);\r\n this._showOrMove(singleTooltipModel, function () {\r\n if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\r\n this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList);\r\n }\r\n else {\r\n this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + '', point[0], point[1], positionExpr, null, markupStyleCreator);\r\n }\r\n });\r\n };\r\n TooltipView.prototype._showSeriesItemTooltip = function (e, el, dispatchAction) {\r\n var dispatcher = findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; });\r\n var ecModel = this._ecModel;\r\n var ecData = getECData(dispatcher);\r\n var seriesIndex = ecData.seriesIndex;\r\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n var dataModel = ecData.dataModel || seriesModel;\r\n var dataIndex = ecData.dataIndex;\r\n var dataType = ecData.dataType;\r\n var data = dataModel.getData(dataType);\r\n var renderMode = this._renderMode;\r\n var tooltipModel = buildTooltipModel([\r\n data.getItemModel(dataIndex),\r\n dataModel,\r\n seriesModel && (seriesModel.coordinateSystem || {}).model,\r\n this._tooltipModel\r\n ]);\r\n var tooltipTrigger = tooltipModel.get('trigger');\r\n if (tooltipTrigger != null && tooltipTrigger !== 'item') {\r\n return;\r\n }\r\n var params = dataModel.getDataParams(dataIndex, dataType);\r\n var markupStyleCreator = new TooltipMarkupStyleCreator();\r\n params.marker = markupStyleCreator.makeTooltipMarker('item', convertToColorString(params.color), renderMode);\r\n var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType));\r\n var orderMode = tooltipModel.get('order');\r\n var markupText = seriesTooltipResult.markupFragment\r\n ? buildTooltipMarkup(seriesTooltipResult.markupFragment, markupStyleCreator, renderMode, orderMode, ecModel.get('useUTC'))\r\n : seriesTooltipResult.markupText;\r\n var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\r\n this._showOrMove(tooltipModel, function () {\r\n this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markupStyleCreator);\r\n });\r\n dispatchAction({\r\n type: 'showTip',\r\n dataIndexInside: dataIndex,\r\n dataIndex: data.getRawIndex(dataIndex),\r\n seriesIndex: seriesIndex,\r\n from: this.uid\r\n });\r\n };\r\n TooltipView.prototype._showComponentItemTooltip = function (e, el, dispatchAction) {\r\n var tooltipOpt = el.tooltip;\r\n if (isString(tooltipOpt)) {\r\n var content = tooltipOpt;\r\n tooltipOpt = {\r\n content: content,\r\n formatter: content\r\n };\r\n }\r\n var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\r\n var defaultHtml = subTooltipModel.get('content');\r\n var asyncTicket = Math.random() + '';\r\n var markupStyleCreator = new TooltipMarkupStyleCreator();\r\n this._showOrMove(subTooltipModel, function () {\r\n this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el, markupStyleCreator);\r\n });\r\n dispatchAction({\r\n type: 'showTip',\r\n from: this.uid\r\n });\r\n };\r\n TooltipView.prototype._showTooltipContent = function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) {\r\n this._ticket = '';\r\n if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\r\n return;\r\n }\r\n var tooltipContent = this._tooltipContent;\r\n var formatter = tooltipModel.get('formatter');\r\n positionExpr = positionExpr || tooltipModel.get('position');\r\n var html = defaultHtml;\r\n var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get('trigger'));\r\n if (formatter && isString(formatter)) {\r\n var useUTC = tooltipModel.ecModel.get('useUTC');\r\n var params0 = isArray(params) ? params[0] : params;\r\n var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf('time') >= 0;\r\n html = formatter;\r\n if (isTimeAxis) {\r\n html = format(params0.axisValue, html, useUTC);\r\n }\r\n html = formatTpl(html, params, true);\r\n }\r\n else if (isFunction(formatter)) {\r\n var callback = bind$2(function (cbTicket, html) {\r\n if (cbTicket === this._ticket) {\r\n tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPoint.color, positionExpr);\r\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\r\n }\r\n }, this);\r\n this._ticket = asyncTicket;\r\n html = formatter(params, asyncTicket, callback);\r\n }\r\n tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPoint.color, positionExpr);\r\n tooltipContent.show(tooltipModel, nearPoint.color);\r\n this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\r\n };\r\n TooltipView.prototype._getNearestPoint = function (point, tooltipDataParams, trigger) {\r\n if (trigger === 'axis' || isArray(tooltipDataParams)) {\r\n return {\r\n color: this._renderMode === 'html' ? '#fff' : 'none'\r\n };\r\n }\r\n if (!isArray(tooltipDataParams)) {\r\n return {\r\n color: tooltipDataParams.color || tooltipDataParams.borderColor\r\n };\r\n }\r\n };\r\n TooltipView.prototype._updatePosition = function (tooltipModel, positionExpr, x, y, content, params, el) {\r\n var viewWidth = this._api.getWidth();\r\n var viewHeight = this._api.getHeight();\r\n positionExpr = positionExpr || tooltipModel.get('position');\r\n var contentSize = content.getSize();\r\n var align = tooltipModel.get('align');\r\n var vAlign = tooltipModel.get('verticalAlign');\r\n var rect = el && el.getBoundingRect().clone();\r\n el && rect.applyTransform(el.transform);\r\n if (isFunction(positionExpr)) {\r\n positionExpr = positionExpr([x, y], params, content.el, rect, {\r\n viewSize: [viewWidth, viewHeight],\r\n contentSize: contentSize.slice()\r\n });\r\n }\r\n if (isArray(positionExpr)) {\r\n x = parsePercent$3(positionExpr[0], viewWidth);\r\n y = parsePercent$3(positionExpr[1], viewHeight);\r\n }\r\n else if (isObject(positionExpr)) {\r\n var boxLayoutPosition = positionExpr;\r\n boxLayoutPosition.width = contentSize[0];\r\n boxLayoutPosition.height = contentSize[1];\r\n var layoutRect = getLayoutRect(boxLayoutPosition, { width: viewWidth, height: viewHeight });\r\n x = layoutRect.x;\r\n y = layoutRect.y;\r\n align = null;\r\n vAlign = null;\r\n }\r\n else if (isString(positionExpr) && el) {\r\n var pos = calcTooltipPosition(positionExpr, rect, contentSize);\r\n x = pos[0];\r\n y = pos[1];\r\n }\r\n else {\r\n var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\r\n x = pos[0];\r\n y = pos[1];\r\n }\r\n align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\r\n vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\r\n if (shouldTooltipConfine(tooltipModel)) {\r\n var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\r\n x = pos[0];\r\n y = pos[1];\r\n }\r\n content.moveTo(x, y);\r\n };\r\n TooltipView.prototype._updateContentNotChangedOnAxis = function (dataByCoordSys) {\r\n var lastCoordSys = this._lastDataByCoordSys;\r\n var contentNotChanged = !!lastCoordSys\r\n && lastCoordSys.length === dataByCoordSys.length;\r\n contentNotChanged && each$c(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\r\n var lastDataByAxis = lastItemCoordSys.dataByAxis || [];\r\n var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\r\n var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\r\n contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length;\r\n contentNotChanged && each$c(lastDataByAxis, function (lastItem, indexAxis) {\r\n var thisItem = thisDataByAxis[indexAxis] || {};\r\n var lastIndices = lastItem.seriesDataIndices || [];\r\n var newIndices = thisItem.seriesDataIndices || [];\r\n contentNotChanged = contentNotChanged\r\n && lastItem.value === thisItem.value\r\n && lastItem.axisType === thisItem.axisType\r\n && lastItem.axisId === thisItem.axisId\r\n && lastIndices.length === newIndices.length;\r\n contentNotChanged && each$c(lastIndices, function (lastIdxItem, j) {\r\n var newIdxItem = newIndices[j];\r\n contentNotChanged = contentNotChanged\r\n && lastIdxItem.seriesIndex === newIdxItem.seriesIndex\r\n && lastIdxItem.dataIndex === newIdxItem.dataIndex;\r\n });\r\n });\r\n });\r\n this._lastDataByCoordSys = dataByCoordSys;\r\n return !!contentNotChanged;\r\n };\r\n TooltipView.prototype._hide = function (dispatchAction) {\r\n this._lastDataByCoordSys = null;\r\n dispatchAction({\r\n type: 'hideTip',\r\n from: this.uid\r\n });\r\n };\r\n TooltipView.prototype.dispose = function (ecModel, api) {\r\n if (env.node) {\r\n return;\r\n }\r\n this._tooltipContent.dispose();\r\n unregister('itemTooltip', api);\r\n };\r\n TooltipView.type = 'tooltip';\r\n return TooltipView;\r\n}(ComponentView));\r\nfunction buildTooltipModel(modelCascade) {\r\n var resultModel = modelCascade.pop();\r\n while (modelCascade.length) {\r\n var tooltipOpt = modelCascade.pop();\r\n if (tooltipOpt) {\r\n if (tooltipOpt instanceof Model) {\r\n tooltipOpt = tooltipOpt.get('tooltip', true);\r\n }\r\n if (isString(tooltipOpt)) {\r\n tooltipOpt = {\r\n formatter: tooltipOpt\r\n };\r\n }\r\n resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\r\n }\r\n }\r\n return resultModel;\r\n}\r\nfunction makeDispatchAction$1(payload, api) {\r\n return payload.dispatchAction || bind(api.dispatchAction, api);\r\n}\r\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\r\n var size = content.getOuterSize();\r\n var width = size.width;\r\n var height = size.height;\r\n if (gapH != null) {\r\n if (x + width + gapH + 2 > viewWidth) {\r\n x -= width + gapH;\r\n }\r\n else {\r\n x += gapH;\r\n }\r\n }\r\n if (gapV != null) {\r\n if (y + height + gapV > viewHeight) {\r\n y -= height + gapV;\r\n }\r\n else {\r\n y += gapV;\r\n }\r\n }\r\n return [x, y];\r\n}\r\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\r\n var size = content.getOuterSize();\r\n var width = size.width;\r\n var height = size.height;\r\n x = Math.min(x + width, viewWidth) - width;\r\n y = Math.min(y + height, viewHeight) - height;\r\n x = Math.max(x, 0);\r\n y = Math.max(y, 0);\r\n return [x, y];\r\n}\r\nfunction calcTooltipPosition(position, rect, contentSize) {\r\n var domWidth = contentSize[0];\r\n var domHeight = contentSize[1];\r\n var gap = 10;\r\n var offset = 5;\r\n var x = 0;\r\n var y = 0;\r\n var rectWidth = rect.width;\r\n var rectHeight = rect.height;\r\n switch (position) {\r\n case 'inside':\r\n x = rect.x + rectWidth / 2 - domWidth / 2;\r\n y = rect.y + rectHeight / 2 - domHeight / 2;\r\n break;\r\n case 'top':\r\n x = rect.x + rectWidth / 2 - domWidth / 2;\r\n y = rect.y - domHeight - gap;\r\n break;\r\n case 'bottom':\r\n x = rect.x + rectWidth / 2 - domWidth / 2;\r\n y = rect.y + rectHeight + gap;\r\n break;\r\n case 'left':\r\n x = rect.x - domWidth - gap - offset;\r\n y = rect.y + rectHeight / 2 - domHeight / 2;\r\n break;\r\n case 'right':\r\n x = rect.x + rectWidth + gap + offset;\r\n y = rect.y + rectHeight / 2 - domHeight / 2;\r\n }\r\n return [x, y];\r\n}\r\nfunction isCenterAlign(align) {\r\n return align === 'center' || align === 'middle';\r\n}\r\nComponentView.registerClass(TooltipView);\n\nregisterAction({\r\n type: 'showTip',\r\n event: 'showTip',\r\n update: 'tooltip:manuallyShowTip'\r\n}, function () { });\r\nregisterAction({\r\n type: 'hideTip',\r\n event: 'hideTip',\r\n update: 'tooltip:manuallyHideTip'\r\n}, function () { });\n\nvar DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\r\nfunction brushPreprocessor(option, isNew) {\r\n var brushComponents = normalizeToArray(option ? option.brush : []);\r\n if (!brushComponents.length) {\r\n return;\r\n }\r\n var brushComponentSpecifiedBtns = [];\r\n each(brushComponents, function (brushOpt) {\r\n var tbs = brushOpt.hasOwnProperty('toolbox')\r\n ? brushOpt.toolbox : [];\r\n if (tbs instanceof Array) {\r\n brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);\r\n }\r\n });\r\n var toolbox = option && option.toolbox;\r\n if (isArray(toolbox)) {\r\n toolbox = toolbox[0];\r\n }\r\n if (!toolbox) {\r\n toolbox = { feature: {} };\r\n option.toolbox = [toolbox];\r\n }\r\n var toolboxFeature = (toolbox.feature || (toolbox.feature = {}));\r\n var toolboxBrush = (toolboxFeature.brush || (toolboxFeature.brush = {}));\r\n var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);\r\n brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);\r\n removeDuplicate(brushTypes);\r\n if (isNew && !brushTypes.length) {\r\n brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);\r\n }\r\n}\r\nfunction removeDuplicate(arr) {\r\n var map = {};\r\n each(arr, function (val) {\r\n map[val] = 1;\r\n });\r\n arr.length = 0;\r\n each(map, function (flag, val) {\r\n arr.push(val);\r\n });\r\n}\n\nvar each$d = each;\r\nfunction hasKeys(obj) {\r\n if (obj) {\r\n for (var name_1 in obj) {\r\n if (obj.hasOwnProperty(name_1)) {\r\n return true;\r\n }\r\n }\r\n }\r\n}\r\nfunction createVisualMappings(option, stateList, supplementVisualOption) {\r\n var visualMappings = {};\r\n each$d(stateList, function (state) {\r\n var mappings = visualMappings[state] = createMappings();\r\n each$d(option[state], function (visualData, visualType) {\r\n if (!VisualMapping.isValidType(visualType)) {\r\n return;\r\n }\r\n var mappingOption = {\r\n type: visualType,\r\n visual: visualData\r\n };\r\n supplementVisualOption && supplementVisualOption(mappingOption, state);\r\n mappings[visualType] = new VisualMapping(mappingOption);\r\n if (visualType === 'opacity') {\r\n mappingOption = clone(mappingOption);\r\n mappingOption.type = 'colorAlpha';\r\n mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\r\n }\r\n });\r\n });\r\n return visualMappings;\r\n function createMappings() {\r\n var Creater = function () { };\r\n Creater.prototype.__hidden = Creater.prototype;\r\n var obj = new Creater();\r\n return obj;\r\n }\r\n}\r\nfunction replaceVisualOption(thisOption, newOption, keys) {\r\n var has;\r\n each(keys, function (key) {\r\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\r\n has = true;\r\n }\r\n });\r\n has && each(keys, function (key) {\r\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\r\n thisOption[key] = clone(newOption[key]);\r\n }\r\n else {\r\n delete thisOption[key];\r\n }\r\n });\r\n}\r\nfunction applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\r\n var visualTypesMap = {};\r\n each(stateList, function (state) {\r\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\r\n visualTypesMap[state] = visualTypes;\r\n });\r\n var dataIndex;\r\n function getVisual(key) {\r\n return getItemVisualFromData(data, dataIndex, key);\r\n }\r\n function setVisual(key, value) {\r\n setItemVisualFromData(data, dataIndex, key, value);\r\n }\r\n if (dimension == null) {\r\n data.each(eachItem);\r\n }\r\n else {\r\n data.each([dimension], eachItem);\r\n }\r\n function eachItem(valueOrIndex, index) {\r\n dataIndex = dimension == null\r\n ? valueOrIndex\r\n : index;\r\n var rawDataItem = data.getRawDataItem(dataIndex);\r\n if (rawDataItem && rawDataItem.visualMap === false) {\r\n return;\r\n }\r\n var valueState = getValueState.call(scope, valueOrIndex);\r\n var mappings = visualMappings[valueState];\r\n var visualTypes = visualTypesMap[valueState];\r\n for (var i = 0, len = visualTypes.length; i < len; i++) {\r\n var type = visualTypes[i];\r\n mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\r\n }\r\n }\r\n}\r\nfunction incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\r\n var visualTypesMap = {};\r\n each(stateList, function (state) {\r\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\r\n visualTypesMap[state] = visualTypes;\r\n });\r\n return {\r\n progress: function progress(params, data) {\r\n var dimName;\r\n if (dim != null) {\r\n dimName = data.getDimension(dim);\r\n }\r\n function getVisual(key) {\r\n return getItemVisualFromData(data, dataIndex, key);\r\n }\r\n function setVisual(key, value) {\r\n setItemVisualFromData(data, dataIndex, key, value);\r\n }\r\n var dataIndex;\r\n while ((dataIndex = params.next()) != null) {\r\n var rawDataItem = data.getRawDataItem(dataIndex);\r\n if (rawDataItem && rawDataItem.visualMap === false) {\r\n continue;\r\n }\r\n var value = dim != null\r\n ? data.get(dimName, dataIndex)\r\n : dataIndex;\r\n var valueState = getValueState(value);\r\n var mappings = visualMappings[valueState];\r\n var visualTypes = visualTypesMap[valueState];\r\n for (var i = 0, len = visualTypes.length; i < len; i++) {\r\n var type = visualTypes[i];\r\n mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\r\n }\r\n }\r\n }\r\n };\r\n}\n\nfunction makeBrushCommonSelectorForSeries(area) {\r\n var brushType = area.brushType;\r\n var selectors = {\r\n point: function (itemLayout) {\r\n return selector[brushType].point(itemLayout, selectors, area);\r\n },\r\n rect: function (itemLayout) {\r\n return selector[brushType].rect(itemLayout, selectors, area);\r\n }\r\n };\r\n return selectors;\r\n}\r\nvar selector = {\r\n lineX: getLineSelectors(0),\r\n lineY: getLineSelectors(1),\r\n rect: {\r\n point: function (itemLayout, selectors, area) {\r\n return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);\r\n },\r\n rect: function (itemLayout, selectors, area) {\r\n return itemLayout && area.boundingRect.intersect(itemLayout);\r\n }\r\n },\r\n polygon: {\r\n point: function (itemLayout, selectors, area) {\r\n return itemLayout\r\n && area.boundingRect.contain(itemLayout[0], itemLayout[1])\r\n && contain$2(area.range, itemLayout[0], itemLayout[1]);\r\n },\r\n rect: function (itemLayout, selectors, area) {\r\n var points = area.range;\r\n if (!itemLayout || points.length <= 1) {\r\n return false;\r\n }\r\n var x = itemLayout.x;\r\n var y = itemLayout.y;\r\n var width = itemLayout.width;\r\n var height = itemLayout.height;\r\n var p = points[0];\r\n if (contain$2(points, x, y)\r\n || contain$2(points, x + width, y)\r\n || contain$2(points, x, y + height)\r\n || contain$2(points, x + width, y + height)\r\n || BoundingRect.create(itemLayout).contain(p[0], p[1])\r\n || linePolygonIntersect(x, y, x + width, y, points)\r\n || linePolygonIntersect(x, y, x, y + height, points)\r\n || linePolygonIntersect(x + width, y, x + width, y + height, points)\r\n || linePolygonIntersect(x, y + height, x + width, y + height, points)) {\r\n return true;\r\n }\r\n }\r\n }\r\n};\r\nfunction getLineSelectors(xyIndex) {\r\n var xy = ['x', 'y'];\r\n var wh = ['width', 'height'];\r\n return {\r\n point: function (itemLayout, selectors, area) {\r\n if (itemLayout) {\r\n var range = area.range;\r\n var p = itemLayout[xyIndex];\r\n return inLineRange(p, range);\r\n }\r\n },\r\n rect: function (itemLayout, selectors, area) {\r\n if (itemLayout) {\r\n var range = area.range;\r\n var layoutRange = [\r\n itemLayout[xy[xyIndex]],\r\n itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]\r\n ];\r\n layoutRange[1] < layoutRange[0] && layoutRange.reverse();\r\n return inLineRange(layoutRange[0], range)\r\n || inLineRange(layoutRange[1], range)\r\n || inLineRange(range[0], layoutRange)\r\n || inLineRange(range[1], layoutRange);\r\n }\r\n }\r\n };\r\n}\r\nfunction inLineRange(p, range) {\r\n return range[0] <= p && p <= range[1];\r\n}\n\nvar STATE_LIST = ['inBrush', 'outOfBrush'];\r\nvar DISPATCH_METHOD = '__ecBrushSelect';\r\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\r\nvar PRIORITY_BRUSH = PRIORITY.VISUAL.BRUSH;\r\nfunction layoutCovers(ecModel) {\r\n ecModel.eachComponent({ mainType: 'brush' }, function (brushModel) {\r\n var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\r\n brushTargetManager.setInputRanges(brushModel.areas, ecModel);\r\n });\r\n}\r\nregisterVisual(PRIORITY_BRUSH, function (ecModel, api, payload) {\r\n var brushSelected = [];\r\n var throttleType;\r\n var throttleDelay;\r\n ecModel.eachComponent({ mainType: 'brush' }, function (brushModel) {\r\n payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : { brushType: false });\r\n });\r\n layoutCovers(ecModel);\r\n ecModel.eachComponent({ mainType: 'brush' }, function (brushModel, brushIndex) {\r\n var thisBrushSelected = {\r\n brushId: brushModel.id,\r\n brushIndex: brushIndex,\r\n brushName: brushModel.name,\r\n areas: clone(brushModel.areas),\r\n selected: []\r\n };\r\n brushSelected.push(thisBrushSelected);\r\n var brushOption = brushModel.option;\r\n var brushLink = brushOption.brushLink;\r\n var linkedSeriesMap = [];\r\n var selectedDataIndexForLink = [];\r\n var rangeInfoBySeries = [];\r\n var hasBrushExists = false;\r\n if (!brushIndex) {\r\n throttleType = brushOption.throttleType;\r\n throttleDelay = brushOption.throttleDelay;\r\n }\r\n var areas = map(brushModel.areas, function (area) {\r\n var builder = boundingRectBuilders[area.brushType];\r\n var selectableArea = defaults({ boundingRect: builder ? builder(area) : void 0 }, area);\r\n selectableArea.selectors = makeBrushCommonSelectorForSeries(selectableArea);\r\n return selectableArea;\r\n });\r\n var visualMappings = createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\r\n mappingOption.mappingMethod = 'fixed';\r\n });\r\n isArray(brushLink) && each(brushLink, function (seriesIndex) {\r\n linkedSeriesMap[seriesIndex] = 1;\r\n });\r\n function linkOthers(seriesIndex) {\r\n return brushLink === 'all' || !!linkedSeriesMap[seriesIndex];\r\n }\r\n function brushed(rangeInfoList) {\r\n return !!rangeInfoList.length;\r\n }\r\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\r\n var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\r\n seriesModel.subType === 'parallel'\r\n ? stepAParallel(seriesModel, seriesIndex)\r\n : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\r\n });\r\n function stepAParallel(seriesModel, seriesIndex) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed();\r\n linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\r\n activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\r\n });\r\n }\r\n function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\r\n if (!seriesModel.brushSelector || brushModelNotControll(brushModel, seriesIndex)) {\r\n return;\r\n }\r\n each(areas, function (area) {\r\n if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) {\r\n rangeInfoList.push(area);\r\n }\r\n hasBrushExists = hasBrushExists || brushed(rangeInfoList);\r\n });\r\n if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\r\n var data_1 = seriesModel.getData();\r\n data_1.each(function (dataIndex) {\r\n if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) {\r\n selectedDataIndexForLink[dataIndex] = 1;\r\n }\r\n });\r\n }\r\n }\r\n ecModel.eachSeries(function (seriesModel, seriesIndex) {\r\n var seriesBrushSelected = {\r\n seriesId: seriesModel.id,\r\n seriesIndex: seriesIndex,\r\n seriesName: seriesModel.name,\r\n dataIndex: []\r\n };\r\n thisBrushSelected.selected.push(seriesBrushSelected);\r\n var rangeInfoList = rangeInfoBySeries[seriesIndex];\r\n var data = seriesModel.getData();\r\n var getValueState = linkOthers(seriesIndex)\r\n ? function (dataIndex) {\r\n return selectedDataIndexForLink[dataIndex]\r\n ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush')\r\n : 'outOfBrush';\r\n }\r\n : function (dataIndex) {\r\n return checkInRange(seriesModel, rangeInfoList, data, dataIndex)\r\n ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush')\r\n : 'outOfBrush';\r\n };\r\n (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList))\r\n && applyVisual(STATE_LIST, visualMappings, data, getValueState);\r\n });\r\n });\r\n dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\r\n});\r\nfunction dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\r\n if (!payload) {\r\n return;\r\n }\r\n var zr = api.getZr();\r\n if (zr[DISPATCH_FLAG]) {\r\n return;\r\n }\r\n if (!zr[DISPATCH_METHOD]) {\r\n zr[DISPATCH_METHOD] = doDispatch;\r\n }\r\n var fn = createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\r\n fn(api, brushSelected);\r\n}\r\nfunction doDispatch(api, brushSelected) {\r\n if (!api.isDisposed()) {\r\n var zr = api.getZr();\r\n zr[DISPATCH_FLAG] = true;\r\n api.dispatchAction({\r\n type: 'brushSelect',\r\n batch: brushSelected\r\n });\r\n zr[DISPATCH_FLAG] = false;\r\n }\r\n}\r\nfunction checkInRange(seriesModel, rangeInfoList, data, dataIndex) {\r\n for (var i = 0, len = rangeInfoList.length; i < len; i++) {\r\n var area = rangeInfoList[i];\r\n if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) {\r\n return true;\r\n }\r\n }\r\n}\r\nfunction brushModelNotControll(brushModel, seriesIndex) {\r\n var seriesIndices = brushModel.option.seriesIndex;\r\n return seriesIndices != null\r\n && seriesIndices !== 'all'\r\n && (isArray(seriesIndices)\r\n ? indexOf(seriesIndices, seriesIndex) < 0\r\n : seriesIndex !== seriesIndices);\r\n}\r\nvar boundingRectBuilders = {\r\n rect: function (area) {\r\n return getBoundingRectFromMinMax(area.range);\r\n },\r\n polygon: function (area) {\r\n var minMax;\r\n var range = area.range;\r\n for (var i = 0, len = range.length; i < len; i++) {\r\n minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\r\n var rg = range[i];\r\n rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\r\n rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\r\n rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\r\n rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\r\n }\r\n return minMax && getBoundingRectFromMinMax(minMax);\r\n }\r\n};\r\nfunction getBoundingRectFromMinMax(minMax) {\r\n return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\r\n}\n\nvar DEFAULT_OUT_OF_BRUSH_COLOR = '#ddd';\r\nvar BrushModel = (function (_super) {\r\n __extends(BrushModel, _super);\r\n function BrushModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = BrushModel.type;\r\n _this.areas = [];\r\n _this.brushOption = {};\r\n return _this;\r\n }\r\n BrushModel.prototype.optionUpdated = function (newOption, isInit) {\r\n var thisOption = this.option;\r\n !isInit && replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\r\n var inBrush = thisOption.inBrush = thisOption.inBrush || {};\r\n thisOption.outOfBrush = thisOption.outOfBrush || { color: DEFAULT_OUT_OF_BRUSH_COLOR };\r\n if (!inBrush.hasOwnProperty('liftZ')) {\r\n inBrush.liftZ = 5;\r\n }\r\n };\r\n BrushModel.prototype.setAreas = function (areas) {\r\n if (__DEV__) {\r\n assert(isArray(areas));\r\n each(areas, function (area) {\r\n assert(area.brushType, 'Illegal areas');\r\n });\r\n }\r\n if (!areas) {\r\n return;\r\n }\r\n this.areas = map(areas, function (area) {\r\n return generateBrushOption(this.option, area);\r\n }, this);\r\n };\r\n BrushModel.prototype.setBrushOption = function (brushOption) {\r\n this.brushOption = generateBrushOption(this.option, brushOption);\r\n this.brushType = this.brushOption.brushType;\r\n };\r\n BrushModel.type = 'brush';\r\n BrushModel.dependencies = ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'];\r\n BrushModel.defaultOption = {\r\n seriesIndex: 'all',\r\n brushType: 'rect',\r\n brushMode: 'single',\r\n transformable: true,\r\n brushStyle: {\r\n borderWidth: 1,\r\n color: 'rgba(210,219,238,0.3)',\r\n borderColor: '#D2DBEE'\r\n },\r\n throttleType: 'fixRate',\r\n throttleDelay: 0,\r\n removeOnClick: true,\r\n z: 10000\r\n };\r\n return BrushModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(BrushModel);\r\nfunction generateBrushOption(option, brushOption) {\r\n return merge({\r\n brushType: option.brushType,\r\n brushMode: option.brushMode,\r\n transformable: option.transformable,\r\n brushStyle: new Model(option.brushStyle).getItemStyle(),\r\n removeOnClick: option.removeOnClick,\r\n z: option.z\r\n }, brushOption, true);\r\n}\n\nvar BrushView = (function (_super) {\r\n __extends(BrushView, _super);\r\n function BrushView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = BrushView.type;\r\n return _this;\r\n }\r\n BrushView.prototype.init = function (ecModel, api) {\r\n this.ecModel = ecModel;\r\n this.api = api;\r\n this.model;\r\n (this._brushController = new BrushController(api.getZr()))\r\n .on('brush', bind(this._onBrush, this))\r\n .mount();\r\n };\r\n BrushView.prototype.render = function (brushModel, ecModel, api, payload) {\r\n this.model = brushModel;\r\n this._updateController(brushModel, ecModel, api, payload);\r\n };\r\n BrushView.prototype.updateTransform = function (brushModel, ecModel, api, payload) {\r\n layoutCovers(ecModel);\r\n this._updateController(brushModel, ecModel, api, payload);\r\n };\r\n BrushView.prototype.updateVisual = function (brushModel, ecModel, api, payload) {\r\n this.updateTransform(brushModel, ecModel, api, payload);\r\n };\r\n BrushView.prototype.updateView = function (brushModel, ecModel, api, payload) {\r\n this._updateController(brushModel, ecModel, api, payload);\r\n };\r\n BrushView.prototype._updateController = function (brushModel, ecModel, api, payload) {\r\n (!payload || payload.$from !== brushModel.id) && this._brushController\r\n .setPanels(brushModel.brushTargetManager.makePanelOpts(api))\r\n .enableBrush(brushModel.brushOption)\r\n .updateCovers(brushModel.areas.slice());\r\n };\r\n BrushView.prototype.dispose = function () {\r\n this._brushController.dispose();\r\n };\r\n BrushView.prototype._onBrush = function (eventParam) {\r\n var modelId = this.model.id;\r\n var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel);\r\n (!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({\r\n type: 'brush',\r\n brushId: modelId,\r\n areas: clone(areas),\r\n $from: modelId\r\n });\r\n eventParam.isEnd && this.api.dispatchAction({\r\n type: 'brushEnd',\r\n brushId: modelId,\r\n areas: clone(areas),\r\n $from: modelId\r\n });\r\n };\r\n BrushView.type = 'brush';\r\n return BrushView;\r\n}(ComponentView));\r\nComponentView.registerClass(BrushView);\n\nregisterAction({ type: 'brush', event: 'brush', update: 'updateVisual' }, function (payload, ecModel) {\r\n ecModel.eachComponent({ mainType: 'brush', query: payload }, function (brushModel) {\r\n brushModel.setAreas(payload.areas);\r\n });\r\n});\r\nregisterAction({ type: 'brushSelect', event: 'brushSelected', update: 'none' }, function () { });\r\nregisterAction({ type: 'brushEnd', event: 'brushEnd', update: 'none' }, function () { });\n\nvar ICON_TYPES = ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'];\r\nvar BrushFeature = (function (_super) {\r\n __extends(BrushFeature, _super);\r\n function BrushFeature() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n BrushFeature.prototype.render = function (featureModel, ecModel, api) {\r\n var brushType;\r\n var brushMode;\r\n var isBrushed;\r\n ecModel.eachComponent({ mainType: 'brush' }, function (brushModel) {\r\n brushType = brushModel.brushType;\r\n brushMode = brushModel.brushOption.brushMode || 'single';\r\n isBrushed = isBrushed || !!brushModel.areas.length;\r\n });\r\n this._brushType = brushType;\r\n this._brushMode = brushMode;\r\n each(featureModel.get('type', true), function (type) {\r\n featureModel.setIconStatus(type, (type === 'keep'\r\n ? brushMode === 'multiple'\r\n : type === 'clear'\r\n ? isBrushed\r\n : type === brushType) ? 'emphasis' : 'normal');\r\n });\r\n };\r\n BrushFeature.prototype.updateView = function (featureModel, ecModel, api) {\r\n this.render(featureModel, ecModel, api);\r\n };\r\n BrushFeature.prototype.getIcons = function () {\r\n var model = this.model;\r\n var availableIcons = model.get('icon', true);\r\n var icons = {};\r\n each(model.get('type', true), function (type) {\r\n if (availableIcons[type]) {\r\n icons[type] = availableIcons[type];\r\n }\r\n });\r\n return icons;\r\n };\r\n BrushFeature.prototype.onclick = function (ecModel, api, type) {\r\n var brushType = this._brushType;\r\n var brushMode = this._brushMode;\r\n if (type === 'clear') {\r\n api.dispatchAction({\r\n type: 'axisAreaSelect',\r\n intervals: []\r\n });\r\n api.dispatchAction({\r\n type: 'brush',\r\n command: 'clear',\r\n areas: []\r\n });\r\n }\r\n else {\r\n api.dispatchAction({\r\n type: 'takeGlobalCursor',\r\n key: 'brush',\r\n brushOption: {\r\n brushType: type === 'keep'\r\n ? brushType\r\n : (brushType === type ? false : type),\r\n brushMode: type === 'keep'\r\n ? (brushMode === 'multiple' ? 'single' : 'multiple')\r\n : brushMode\r\n }\r\n });\r\n }\r\n };\r\n BrushFeature.getDefaultOption = function (ecModel) {\r\n var defaultOption = {\r\n show: true,\r\n type: ICON_TYPES.slice(),\r\n icon: {\r\n rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',\r\n polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',\r\n lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',\r\n lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',\r\n keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',\r\n clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2'\r\n },\r\n title: ecModel.getLocale(['toolbox', 'brush', 'title'])\r\n };\r\n return defaultOption;\r\n };\r\n return BrushFeature;\r\n}(ToolboxFeature));\r\nregisterFeature('brush', BrushFeature);\n\nregisterPreprocessor(brushPreprocessor);\n\nvar TitleModel = (function (_super) {\r\n __extends(TitleModel, _super);\r\n function TitleModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TitleModel.type;\r\n _this.layoutMode = { type: 'box', ignoreSize: true };\r\n return _this;\r\n }\r\n TitleModel.type = 'title';\r\n TitleModel.defaultOption = {\r\n zlevel: 0,\r\n z: 6,\r\n show: true,\r\n text: '',\r\n target: 'blank',\r\n subtext: '',\r\n subtarget: 'blank',\r\n left: 0,\r\n top: 0,\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n borderColor: '#ccc',\r\n borderWidth: 0,\r\n padding: 5,\r\n itemGap: 10,\r\n textStyle: {\r\n fontSize: 18,\r\n fontWeight: 'bold',\r\n color: '#464646'\r\n },\r\n subtextStyle: {\r\n fontSize: 12,\r\n color: '#6E7079'\r\n }\r\n };\r\n return TitleModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(TitleModel);\r\nvar TitleView = (function (_super) {\r\n __extends(TitleView, _super);\r\n function TitleView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TitleView.type;\r\n return _this;\r\n }\r\n TitleView.prototype.render = function (titleModel, ecModel, api) {\r\n this.group.removeAll();\r\n if (!titleModel.get('show')) {\r\n return;\r\n }\r\n var group = this.group;\r\n var textStyleModel = titleModel.getModel('textStyle');\r\n var subtextStyleModel = titleModel.getModel('subtextStyle');\r\n var textAlign = titleModel.get('textAlign');\r\n var textVerticalAlign = retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign'));\r\n var textEl = new ZRText({\r\n style: createTextStyle(textStyleModel, {\r\n text: titleModel.get('text'),\r\n fill: textStyleModel.getTextColor()\r\n }, { disableBox: true }),\r\n z2: 10\r\n });\r\n var textRect = textEl.getBoundingRect();\r\n var subText = titleModel.get('subtext');\r\n var subTextEl = new ZRText({\r\n style: createTextStyle(subtextStyleModel, {\r\n text: subText,\r\n fill: subtextStyleModel.getTextColor(),\r\n y: textRect.height + titleModel.get('itemGap'),\r\n verticalAlign: 'top'\r\n }, { disableBox: true }),\r\n z2: 10\r\n });\r\n var link = titleModel.get('link');\r\n var sublink = titleModel.get('sublink');\r\n var triggerEvent = titleModel.get('triggerEvent', true);\r\n textEl.silent = !link && !triggerEvent;\r\n subTextEl.silent = !sublink && !triggerEvent;\r\n if (link) {\r\n textEl.on('click', function () {\r\n windowOpen(link, '_' + titleModel.get('target'));\r\n });\r\n }\r\n if (sublink) {\r\n subTextEl.on('click', function () {\r\n windowOpen(sublink, '_' + titleModel.get('subtarget'));\r\n });\r\n }\r\n getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent\r\n ? {\r\n componentType: 'title',\r\n componentIndex: titleModel.componentIndex\r\n }\r\n : null;\r\n group.add(textEl);\r\n subText && group.add(subTextEl);\r\n var groupRect = group.getBoundingRect();\r\n var layoutOption = titleModel.getBoxLayoutParams();\r\n layoutOption.width = groupRect.width;\r\n layoutOption.height = groupRect.height;\r\n var layoutRect = getLayoutRect(layoutOption, {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n }, titleModel.get('padding'));\r\n if (!textAlign) {\r\n textAlign = (titleModel.get('left') || titleModel.get('right'));\r\n if (textAlign === 'middle') {\r\n textAlign = 'center';\r\n }\r\n if (textAlign === 'right') {\r\n layoutRect.x += layoutRect.width;\r\n }\r\n else if (textAlign === 'center') {\r\n layoutRect.x += layoutRect.width / 2;\r\n }\r\n }\r\n if (!textVerticalAlign) {\r\n textVerticalAlign = (titleModel.get('top') || titleModel.get('bottom'));\r\n if (textVerticalAlign === 'center') {\r\n textVerticalAlign = 'middle';\r\n }\r\n if (textVerticalAlign === 'bottom') {\r\n layoutRect.y += layoutRect.height;\r\n }\r\n else if (textVerticalAlign === 'middle') {\r\n layoutRect.y += layoutRect.height / 2;\r\n }\r\n textVerticalAlign = textVerticalAlign || 'top';\r\n }\r\n group.x = layoutRect.x;\r\n group.y = layoutRect.y;\r\n group.markRedraw();\r\n var alignStyle = {\r\n align: textAlign,\r\n verticalAlign: textVerticalAlign\r\n };\r\n textEl.setStyle(alignStyle);\r\n subTextEl.setStyle(alignStyle);\r\n groupRect = group.getBoundingRect();\r\n var padding = layoutRect.margin;\r\n var style = titleModel.getItemStyle(['color', 'opacity']);\r\n style.fill = titleModel.get('backgroundColor');\r\n var rect = new Rect({\r\n shape: {\r\n x: groupRect.x - padding[3],\r\n y: groupRect.y - padding[0],\r\n width: groupRect.width + padding[1] + padding[3],\r\n height: groupRect.height + padding[0] + padding[2],\r\n r: titleModel.get('borderRadius')\r\n },\r\n style: style,\r\n subPixelOptimize: true,\r\n silent: true\r\n });\r\n group.add(rect);\r\n };\r\n TitleView.type = 'title';\r\n return TitleView;\r\n}(ComponentView));\r\nComponentView.registerClass(TitleView);\n\nfunction timelinePreprocessor(option) {\r\n var timelineOpt = option && option.timeline;\r\n if (!isArray(timelineOpt)) {\r\n timelineOpt = timelineOpt ? [timelineOpt] : [];\r\n }\r\n each(timelineOpt, function (opt) {\r\n if (!opt) {\r\n return;\r\n }\r\n compatibleEC2(opt);\r\n });\r\n}\r\nfunction compatibleEC2(opt) {\r\n var type = opt.type;\r\n var ec2Types = { 'number': 'value', 'time': 'time' };\r\n if (ec2Types[type]) {\r\n opt.axisType = ec2Types[type];\r\n delete opt.type;\r\n }\r\n transferItem(opt);\r\n if (has(opt, 'controlPosition')) {\r\n var controlStyle = opt.controlStyle || (opt.controlStyle = {});\r\n if (!has(controlStyle, 'position')) {\r\n controlStyle.position = opt.controlPosition;\r\n }\r\n if (controlStyle.position === 'none' && !has(controlStyle, 'show')) {\r\n controlStyle.show = false;\r\n delete controlStyle.position;\r\n }\r\n delete opt.controlPosition;\r\n }\r\n each(opt.data || [], function (dataItem) {\r\n if (isObject(dataItem) && !isArray(dataItem)) {\r\n if (!has(dataItem, 'value') && has(dataItem, 'name')) {\r\n dataItem.value = dataItem.name;\r\n }\r\n transferItem(dataItem);\r\n }\r\n });\r\n}\r\nfunction transferItem(opt) {\r\n var itemStyle = opt.itemStyle || (opt.itemStyle = {});\r\n var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {});\r\n var label = opt.label || (opt.label || {});\r\n var labelNormal = label.normal || (label.normal = {});\r\n var excludeLabelAttr = { normal: 1, emphasis: 1 };\r\n each(label, function (value, name) {\r\n if (!excludeLabelAttr[name] && !has(labelNormal, name)) {\r\n labelNormal[name] = value;\r\n }\r\n });\r\n if (itemStyleEmphasis.label && !has(label, 'emphasis')) {\r\n label.emphasis = itemStyleEmphasis.label;\r\n delete itemStyleEmphasis.label;\r\n }\r\n}\r\nfunction has(obj, attr) {\r\n return obj.hasOwnProperty(attr);\r\n}\n\nComponentModel.registerSubTypeDefaulter('timeline', function () {\r\n return 'slider';\r\n});\n\nregisterAction({ type: 'timelineChange', event: 'timelineChanged', update: 'prepareAndUpdate' }, function (payload, ecModel) {\r\n var timelineModel = ecModel.getComponent('timeline');\r\n if (timelineModel && payload.currentIndex != null) {\r\n timelineModel.setCurrentIndex(payload.currentIndex);\r\n if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) {\r\n timelineModel.setPlayState(false);\r\n }\r\n }\r\n ecModel.resetOption('timeline', { replaceMerge: timelineModel.get('replaceMerge', true) });\r\n return defaults({\r\n currentIndex: timelineModel.option.currentIndex\r\n }, payload);\r\n});\r\nregisterAction({ type: 'timelinePlayChange', event: 'timelinePlayChanged', update: 'update' }, function (payload, ecModel) {\r\n var timelineModel = ecModel.getComponent('timeline');\r\n if (timelineModel && payload.playState != null) {\r\n timelineModel.setPlayState(payload.playState);\r\n }\r\n});\n\nvar TimelineModel = (function (_super) {\r\n __extends(TimelineModel, _super);\r\n function TimelineModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TimelineModel.type;\r\n _this.layoutMode = 'box';\r\n return _this;\r\n }\r\n TimelineModel.prototype.init = function (option, parentModel, ecModel) {\r\n this.mergeDefaultAndTheme(option, ecModel);\r\n this._initData();\r\n };\r\n TimelineModel.prototype.mergeOption = function (option) {\r\n _super.prototype.mergeOption.apply(this, arguments);\r\n this._initData();\r\n };\r\n TimelineModel.prototype.setCurrentIndex = function (currentIndex) {\r\n if (currentIndex == null) {\r\n currentIndex = this.option.currentIndex;\r\n }\r\n var count = this._data.count();\r\n if (this.option.loop) {\r\n currentIndex = (currentIndex % count + count) % count;\r\n }\r\n else {\r\n currentIndex >= count && (currentIndex = count - 1);\r\n currentIndex < 0 && (currentIndex = 0);\r\n }\r\n this.option.currentIndex = currentIndex;\r\n };\r\n TimelineModel.prototype.getCurrentIndex = function () {\r\n return this.option.currentIndex;\r\n };\r\n TimelineModel.prototype.isIndexMax = function () {\r\n return this.getCurrentIndex() >= this._data.count() - 1;\r\n };\r\n TimelineModel.prototype.setPlayState = function (state) {\r\n this.option.autoPlay = !!state;\r\n };\r\n TimelineModel.prototype.getPlayState = function () {\r\n return !!this.option.autoPlay;\r\n };\r\n TimelineModel.prototype._initData = function () {\r\n var thisOption = this.option;\r\n var dataArr = thisOption.data || [];\r\n var axisType = thisOption.axisType;\r\n var names = this._names = [];\r\n var processedDataArr;\r\n if (axisType === 'category') {\r\n processedDataArr = [];\r\n each(dataArr, function (item, index) {\r\n var value = convertOptionIdName(getDataItemValue(item), '');\r\n var newItem;\r\n if (isObject(item)) {\r\n newItem = clone(item);\r\n newItem.value = index;\r\n }\r\n else {\r\n newItem = index;\r\n }\r\n processedDataArr.push(newItem);\r\n names.push(value);\r\n });\r\n }\r\n else {\r\n processedDataArr = dataArr;\r\n }\r\n var dimType = ({\r\n category: 'ordinal',\r\n time: 'time',\r\n value: 'number'\r\n })[axisType] || 'number';\r\n var data = this._data = new List([{\r\n name: 'value', type: dimType\r\n }], this);\r\n data.initData(processedDataArr, names);\r\n };\r\n TimelineModel.prototype.getData = function () {\r\n return this._data;\r\n };\r\n TimelineModel.prototype.getCategories = function () {\r\n if (this.get('axisType') === 'category') {\r\n return this._names.slice();\r\n }\r\n };\r\n TimelineModel.type = 'timeline';\r\n TimelineModel.defaultOption = {\r\n zlevel: 0,\r\n z: 4,\r\n show: true,\r\n axisType: 'time',\r\n realtime: true,\r\n left: '20%',\r\n top: null,\r\n right: '20%',\r\n bottom: 0,\r\n width: null,\r\n height: 40,\r\n padding: 5,\r\n controlPosition: 'left',\r\n autoPlay: false,\r\n rewind: false,\r\n loop: true,\r\n playInterval: 2000,\r\n currentIndex: 0,\r\n itemStyle: {},\r\n label: {\r\n color: '#000'\r\n },\r\n data: []\r\n };\r\n return TimelineModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(TimelineModel);\n\nvar SliderTimelineModel = (function (_super) {\r\n __extends(SliderTimelineModel, _super);\r\n function SliderTimelineModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SliderTimelineModel.type;\r\n return _this;\r\n }\r\n SliderTimelineModel.type = 'timeline.slider';\r\n SliderTimelineModel.defaultOption = inheritDefaultOption(TimelineModel.defaultOption, {\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n borderColor: '#ccc',\r\n borderWidth: 0,\r\n orient: 'horizontal',\r\n inverse: false,\r\n tooltip: {\r\n trigger: 'item'\r\n },\r\n symbol: 'circle',\r\n symbolSize: 12,\r\n lineStyle: {\r\n show: true,\r\n width: 2,\r\n color: '#DAE1F5'\r\n },\r\n label: {\r\n position: 'auto',\r\n show: true,\r\n interval: 'auto',\r\n rotate: 0,\r\n color: '#A4B1D7'\r\n },\r\n itemStyle: {\r\n color: '#A4B1D7',\r\n borderWidth: 1\r\n },\r\n checkpointStyle: {\r\n symbol: 'circle',\r\n symbolSize: 15,\r\n color: '#316bf3',\r\n borderColor: '#fff',\r\n borderWidth: 2,\r\n shadowBlur: 2,\r\n shadowOffsetX: 1,\r\n shadowOffsetY: 1,\r\n shadowColor: 'rgba(0, 0, 0, 0.3)',\r\n animation: true,\r\n animationDuration: 300,\r\n animationEasing: 'quinticInOut'\r\n },\r\n controlStyle: {\r\n show: true,\r\n showPlayBtn: true,\r\n showPrevBtn: true,\r\n showNextBtn: true,\r\n itemSize: 24,\r\n itemGap: 12,\r\n position: 'left',\r\n playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',\r\n stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',\r\n nextIcon: 'M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z',\r\n prevIcon: 'M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z',\r\n prevBtnSize: 18,\r\n nextBtnSize: 18,\r\n color: '#A4B1D7',\r\n borderColor: '#A4B1D7',\r\n borderWidth: 1\r\n },\r\n emphasis: {\r\n label: {\r\n show: true,\r\n color: '#6f778d'\r\n },\r\n itemStyle: {\r\n color: '#316BF3'\r\n },\r\n controlStyle: {\r\n color: '#316BF3',\r\n borderColor: '#316BF3',\r\n borderWidth: 2\r\n }\r\n },\r\n progress: {\r\n lineStyle: {\r\n color: '#316BF3'\r\n },\r\n itemStyle: {\r\n color: '#316BF3'\r\n },\r\n label: {\r\n color: '#6f778d'\r\n }\r\n },\r\n data: []\r\n });\r\n return SliderTimelineModel;\r\n}(TimelineModel));\r\nmixin(SliderTimelineModel, DataFormatMixin.prototype);\r\nComponentModel.registerClass(SliderTimelineModel);\n\nvar TimelineView = (function (_super) {\r\n __extends(TimelineView, _super);\r\n function TimelineView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = TimelineView.type;\r\n return _this;\r\n }\r\n TimelineView.type = 'timeline';\r\n return TimelineView;\r\n}(ComponentView));\n\nvar TimelineAxis = (function (_super) {\r\n __extends(TimelineAxis, _super);\r\n function TimelineAxis(dim, scale, coordExtent, axisType) {\r\n var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n _this.type = axisType || 'value';\r\n return _this;\r\n }\r\n TimelineAxis.prototype.getLabelModel = function () {\r\n return this.model.getModel('label');\r\n };\r\n TimelineAxis.prototype.isHorizontal = function () {\r\n return this.model.get('orient') === 'horizontal';\r\n };\r\n return TimelineAxis;\r\n}(Axis));\n\nvar PI$9 = Math.PI;\r\nvar labelDataIndexStore = makeInner();\r\nvar SliderTimelineView = (function (_super) {\r\n __extends(SliderTimelineView, _super);\r\n function SliderTimelineView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SliderTimelineView.type;\r\n return _this;\r\n }\r\n SliderTimelineView.prototype.init = function (ecModel, api) {\r\n this.api = api;\r\n };\r\n SliderTimelineView.prototype.render = function (timelineModel, ecModel, api) {\r\n this.model = timelineModel;\r\n this.api = api;\r\n this.ecModel = ecModel;\r\n this.group.removeAll();\r\n if (timelineModel.get('show', true)) {\r\n var layoutInfo_1 = this._layout(timelineModel, api);\r\n var mainGroup_1 = this._createGroup('_mainGroup');\r\n var labelGroup = this._createGroup('_labelGroup');\r\n var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel);\r\n timelineModel.formatTooltip = function (dataIndex) {\r\n var name = axis_1.scale.getLabel({ value: dataIndex });\r\n return createTooltipMarkup('nameValue', { noName: true, value: name });\r\n };\r\n each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) {\r\n this['_render' + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel);\r\n }, this);\r\n this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel);\r\n this._position(layoutInfo_1, timelineModel);\r\n }\r\n this._doPlayStop();\r\n this._updateTicksStatus();\r\n };\r\n SliderTimelineView.prototype.remove = function () {\r\n this._clearTimer();\r\n this.group.removeAll();\r\n };\r\n SliderTimelineView.prototype.dispose = function () {\r\n this._clearTimer();\r\n };\r\n SliderTimelineView.prototype._layout = function (timelineModel, api) {\r\n var labelPosOpt = timelineModel.get(['label', 'position']);\r\n var orient = timelineModel.get('orient');\r\n var viewRect = getViewRect$5(timelineModel, api);\r\n var parsedLabelPos;\r\n if (labelPosOpt == null || labelPosOpt === 'auto') {\r\n parsedLabelPos = orient === 'horizontal'\r\n ? ((viewRect.y + viewRect.height / 2) < api.getHeight() / 2 ? '-' : '+')\r\n : ((viewRect.x + viewRect.width / 2) < api.getWidth() / 2 ? '+' : '-');\r\n }\r\n else if (isString(labelPosOpt)) {\r\n parsedLabelPos = {\r\n horizontal: { top: '-', bottom: '+' },\r\n vertical: { left: '-', right: '+' }\r\n }[orient][labelPosOpt];\r\n }\r\n else {\r\n parsedLabelPos = labelPosOpt;\r\n }\r\n var labelAlignMap = {\r\n horizontal: 'center',\r\n vertical: (parsedLabelPos >= 0 || parsedLabelPos === '+') ? 'left' : 'right'\r\n };\r\n var labelBaselineMap = {\r\n horizontal: (parsedLabelPos >= 0 || parsedLabelPos === '+') ? 'top' : 'bottom',\r\n vertical: 'middle'\r\n };\r\n var rotationMap = {\r\n horizontal: 0,\r\n vertical: PI$9 / 2\r\n };\r\n var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width;\r\n var controlModel = timelineModel.getModel('controlStyle');\r\n var showControl = controlModel.get('show', true);\r\n var controlSize = showControl ? controlModel.get('itemSize') : 0;\r\n var controlGap = showControl ? controlModel.get('itemGap') : 0;\r\n var sizePlusGap = controlSize + controlGap;\r\n var labelRotation = timelineModel.get(['label', 'rotate']) || 0;\r\n labelRotation = labelRotation * PI$9 / 180;\r\n var playPosition;\r\n var prevBtnPosition;\r\n var nextBtnPosition;\r\n var controlPosition = controlModel.get('position', true);\r\n var showPlayBtn = showControl && controlModel.get('showPlayBtn', true);\r\n var showPrevBtn = showControl && controlModel.get('showPrevBtn', true);\r\n var showNextBtn = showControl && controlModel.get('showNextBtn', true);\r\n var xLeft = 0;\r\n var xRight = mainLength;\r\n if (controlPosition === 'left' || controlPosition === 'bottom') {\r\n showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);\r\n showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);\r\n showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\r\n }\r\n else {\r\n showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\r\n showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);\r\n showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\r\n }\r\n var axisExtent = [xLeft, xRight];\r\n if (timelineModel.get('inverse')) {\r\n axisExtent.reverse();\r\n }\r\n return {\r\n viewRect: viewRect,\r\n mainLength: mainLength,\r\n orient: orient,\r\n rotation: rotationMap[orient],\r\n labelRotation: labelRotation,\r\n labelPosOpt: parsedLabelPos,\r\n labelAlign: timelineModel.get(['label', 'align']) || labelAlignMap[orient],\r\n labelBaseline: timelineModel.get(['label', 'verticalAlign'])\r\n || timelineModel.get(['label', 'baseline'])\r\n || labelBaselineMap[orient],\r\n playPosition: playPosition,\r\n prevBtnPosition: prevBtnPosition,\r\n nextBtnPosition: nextBtnPosition,\r\n axisExtent: axisExtent,\r\n controlSize: controlSize,\r\n controlGap: controlGap\r\n };\r\n };\r\n SliderTimelineView.prototype._position = function (layoutInfo, timelineModel) {\r\n var mainGroup = this._mainGroup;\r\n var labelGroup = this._labelGroup;\r\n var viewRect = layoutInfo.viewRect;\r\n if (layoutInfo.orient === 'vertical') {\r\n var m = create$1();\r\n var rotateOriginX = viewRect.x;\r\n var rotateOriginY = viewRect.y + viewRect.height;\r\n translate(m, m, [-rotateOriginX, -rotateOriginY]);\r\n rotate(m, m, -PI$9 / 2);\r\n translate(m, m, [rotateOriginX, rotateOriginY]);\r\n viewRect = viewRect.clone();\r\n viewRect.applyTransform(m);\r\n }\r\n var viewBound = getBound(viewRect);\r\n var mainBound = getBound(mainGroup.getBoundingRect());\r\n var labelBound = getBound(labelGroup.getBoundingRect());\r\n var mainPosition = [mainGroup.x, mainGroup.y];\r\n var labelsPosition = [labelGroup.x, labelGroup.y];\r\n labelsPosition[0] = mainPosition[0] = viewBound[0][0];\r\n var labelPosOpt = layoutInfo.labelPosOpt;\r\n if (labelPosOpt == null || isString(labelPosOpt)) {\r\n var mainBoundIdx = labelPosOpt === '+' ? 0 : 1;\r\n toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\r\n toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);\r\n }\r\n else {\r\n var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;\r\n toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\r\n labelsPosition[1] = mainPosition[1] + labelPosOpt;\r\n }\r\n mainGroup.setPosition(mainPosition);\r\n labelGroup.setPosition(labelsPosition);\r\n mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;\r\n setOrigin(mainGroup);\r\n setOrigin(labelGroup);\r\n function setOrigin(targetGroup) {\r\n targetGroup.originX = viewBound[0][0] - targetGroup.x;\r\n targetGroup.originY = viewBound[1][0] - targetGroup.y;\r\n }\r\n function getBound(rect) {\r\n return [\r\n [rect.x, rect.x + rect.width],\r\n [rect.y, rect.y + rect.height]\r\n ];\r\n }\r\n function toBound(fromPos, from, to, dimIdx, boundIdx) {\r\n fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];\r\n }\r\n };\r\n SliderTimelineView.prototype._createAxis = function (layoutInfo, timelineModel) {\r\n var data = timelineModel.getData();\r\n var axisType = timelineModel.get('axisType');\r\n var scale = createScaleByModel$1(timelineModel, axisType);\r\n scale.getTicks = function () {\r\n return data.mapArray(['value'], function (value) {\r\n return { value: value };\r\n });\r\n };\r\n var dataExtent = data.getDataExtent('value');\r\n scale.setExtent(dataExtent[0], dataExtent[1]);\r\n scale.niceTicks();\r\n var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType);\r\n axis.model = timelineModel;\r\n return axis;\r\n };\r\n SliderTimelineView.prototype._createGroup = function (key) {\r\n var newGroup = this[key] = new Group();\r\n this.group.add(newGroup);\r\n return newGroup;\r\n };\r\n SliderTimelineView.prototype._renderAxisLine = function (layoutInfo, group, axis, timelineModel) {\r\n var axisExtent = axis.getExtent();\r\n if (!timelineModel.get(['lineStyle', 'show'])) {\r\n return;\r\n }\r\n var line = new Line({\r\n shape: {\r\n x1: axisExtent[0], y1: 0,\r\n x2: axisExtent[1], y2: 0\r\n },\r\n style: extend({ lineCap: 'round' }, timelineModel.getModel('lineStyle').getLineStyle()),\r\n silent: true,\r\n z2: 1\r\n });\r\n group.add(line);\r\n var progressLine = this._progressLine = new Line({\r\n shape: {\r\n x1: axisExtent[0],\r\n x2: this._currentPointer\r\n ? this._currentPointer.x : axisExtent[0],\r\n y1: 0, y2: 0\r\n },\r\n style: defaults({ lineCap: 'round', lineWidth: line.style.lineWidth }, timelineModel.getModel(['progress', 'lineStyle']).getLineStyle()),\r\n silent: true,\r\n z2: 1\r\n });\r\n group.add(progressLine);\r\n };\r\n SliderTimelineView.prototype._renderAxisTick = function (layoutInfo, group, axis, timelineModel) {\r\n var _this = this;\r\n var data = timelineModel.getData();\r\n var ticks = axis.scale.getTicks();\r\n this._tickSymbols = [];\r\n each(ticks, function (tick) {\r\n var tickCoord = axis.dataToCoord(tick.value);\r\n var itemModel = data.getItemModel(tick.value);\r\n var itemStyleModel = itemModel.getModel('itemStyle');\r\n var hoverStyleModel = itemModel.getModel(['emphasis', 'itemStyle']);\r\n var progressStyleModel = itemModel.getModel(['progress', 'itemStyle']);\r\n var symbolOpt = {\r\n x: tickCoord,\r\n y: 0,\r\n onclick: bind(_this._changeTimeline, _this, tick.value)\r\n };\r\n var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);\r\n el.ensureState('emphasis').style = hoverStyleModel.getItemStyle();\r\n el.ensureState('progress').style = progressStyleModel.getItemStyle();\r\n enableHoverEmphasis(el);\r\n var ecData = getECData(el);\r\n if (itemModel.get('tooltip')) {\r\n ecData.dataIndex = tick.value;\r\n ecData.dataModel = timelineModel;\r\n }\r\n else {\r\n ecData.dataIndex = ecData.dataModel = null;\r\n }\r\n _this._tickSymbols.push(el);\r\n });\r\n };\r\n SliderTimelineView.prototype._renderAxisLabel = function (layoutInfo, group, axis, timelineModel) {\r\n var _this = this;\r\n var labelModel = axis.getLabelModel();\r\n if (!labelModel.get('show')) {\r\n return;\r\n }\r\n var data = timelineModel.getData();\r\n var labels = axis.getViewLabels();\r\n this._tickLabels = [];\r\n each(labels, function (labelItem) {\r\n var dataIndex = labelItem.tickValue;\r\n var itemModel = data.getItemModel(dataIndex);\r\n var normalLabelModel = itemModel.getModel('label');\r\n var hoverLabelModel = itemModel.getModel(['emphasis', 'label']);\r\n var progressLabelModel = itemModel.getModel(['progress', 'label']);\r\n var tickCoord = axis.dataToCoord(labelItem.tickValue);\r\n var textEl = new ZRText({\r\n x: tickCoord,\r\n y: 0,\r\n rotation: layoutInfo.labelRotation - layoutInfo.rotation,\r\n onclick: bind(_this._changeTimeline, _this, dataIndex),\r\n silent: false,\r\n style: createTextStyle(normalLabelModel, {\r\n text: labelItem.formattedLabel,\r\n align: layoutInfo.labelAlign,\r\n verticalAlign: layoutInfo.labelBaseline\r\n })\r\n });\r\n textEl.ensureState('emphasis').style = createTextStyle(hoverLabelModel);\r\n textEl.ensureState('progress').style = createTextStyle(progressLabelModel);\r\n group.add(textEl);\r\n enableHoverEmphasis(textEl);\r\n labelDataIndexStore(textEl).dataIndex = dataIndex;\r\n _this._tickLabels.push(textEl);\r\n });\r\n };\r\n SliderTimelineView.prototype._renderControl = function (layoutInfo, group, axis, timelineModel) {\r\n var controlSize = layoutInfo.controlSize;\r\n var rotation = layoutInfo.rotation;\r\n var itemStyle = timelineModel.getModel('controlStyle').getItemStyle();\r\n var hoverStyle = timelineModel.getModel(['emphasis', 'controlStyle']).getItemStyle();\r\n var playState = timelineModel.getPlayState();\r\n var inverse = timelineModel.get('inverse', true);\r\n makeBtn(layoutInfo.nextBtnPosition, 'next', bind(this._changeTimeline, this, inverse ? '-' : '+'));\r\n makeBtn(layoutInfo.prevBtnPosition, 'prev', bind(this._changeTimeline, this, inverse ? '+' : '-'));\r\n makeBtn(layoutInfo.playPosition, (playState ? 'stop' : 'play'), bind(this._handlePlayClick, this, !playState), true);\r\n function makeBtn(position, iconName, onclick, willRotate) {\r\n if (!position) {\r\n return;\r\n }\r\n var iconSize = parsePercent(retrieve2(timelineModel.get(['controlStyle', iconName + 'BtnSize']), controlSize), controlSize);\r\n var rect = [0, -iconSize / 2, iconSize, iconSize];\r\n var opt = {\r\n position: position,\r\n origin: [controlSize / 2, 0],\r\n rotation: willRotate ? -rotation : 0,\r\n rectHover: true,\r\n style: itemStyle,\r\n onclick: onclick\r\n };\r\n var btn = makeControlIcon(timelineModel, iconName + 'Icon', rect, opt);\r\n btn.ensureState('emphasis').style = hoverStyle;\r\n group.add(btn);\r\n enableHoverEmphasis(btn);\r\n }\r\n };\r\n SliderTimelineView.prototype._renderCurrentPointer = function (layoutInfo, group, axis, timelineModel) {\r\n var data = timelineModel.getData();\r\n var currentIndex = timelineModel.getCurrentIndex();\r\n var pointerModel = data.getItemModel(currentIndex)\r\n .getModel('checkpointStyle');\r\n var me = this;\r\n var callback = {\r\n onCreate: function (pointer) {\r\n pointer.draggable = true;\r\n pointer.drift = bind(me._handlePointerDrag, me);\r\n pointer.ondragend = bind(me._handlePointerDragend, me);\r\n pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel, true);\r\n },\r\n onUpdate: function (pointer) {\r\n pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel);\r\n }\r\n };\r\n this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);\r\n };\r\n SliderTimelineView.prototype._handlePlayClick = function (nextState) {\r\n this._clearTimer();\r\n this.api.dispatchAction({\r\n type: 'timelinePlayChange',\r\n playState: nextState,\r\n from: this.uid\r\n });\r\n };\r\n SliderTimelineView.prototype._handlePointerDrag = function (dx, dy, e) {\r\n this._clearTimer();\r\n this._pointerChangeTimeline([e.offsetX, e.offsetY]);\r\n };\r\n SliderTimelineView.prototype._handlePointerDragend = function (e) {\r\n this._pointerChangeTimeline([e.offsetX, e.offsetY], true);\r\n };\r\n SliderTimelineView.prototype._pointerChangeTimeline = function (mousePos, trigger) {\r\n var toCoord = this._toAxisCoord(mousePos)[0];\r\n var axis = this._axis;\r\n var axisExtent = asc(axis.getExtent().slice());\r\n toCoord > axisExtent[1] && (toCoord = axisExtent[1]);\r\n toCoord < axisExtent[0] && (toCoord = axisExtent[0]);\r\n this._currentPointer.x = toCoord;\r\n this._currentPointer.markRedraw();\r\n this._progressLine.shape.x2 = toCoord;\r\n this._progressLine.dirty();\r\n var targetDataIndex = this._findNearestTick(toCoord);\r\n var timelineModel = this.model;\r\n if (trigger || (targetDataIndex !== timelineModel.getCurrentIndex()\r\n && timelineModel.get('realtime'))) {\r\n this._changeTimeline(targetDataIndex);\r\n }\r\n };\r\n SliderTimelineView.prototype._doPlayStop = function () {\r\n var _this = this;\r\n this._clearTimer();\r\n if (this.model.getPlayState()) {\r\n this._timer = setTimeout(function () {\r\n var timelineModel = _this.model;\r\n _this._changeTimeline(timelineModel.getCurrentIndex()\r\n + (timelineModel.get('rewind', true) ? -1 : 1));\r\n }, this.model.get('playInterval'));\r\n }\r\n };\r\n SliderTimelineView.prototype._toAxisCoord = function (vertex) {\r\n var trans = this._mainGroup.getLocalTransform();\r\n return applyTransform$1(vertex, trans, true);\r\n };\r\n SliderTimelineView.prototype._findNearestTick = function (axisCoord) {\r\n var data = this.model.getData();\r\n var dist = Infinity;\r\n var targetDataIndex;\r\n var axis = this._axis;\r\n data.each(['value'], function (value, dataIndex) {\r\n var coord = axis.dataToCoord(value);\r\n var d = Math.abs(coord - axisCoord);\r\n if (d < dist) {\r\n dist = d;\r\n targetDataIndex = dataIndex;\r\n }\r\n });\r\n return targetDataIndex;\r\n };\r\n SliderTimelineView.prototype._clearTimer = function () {\r\n if (this._timer) {\r\n clearTimeout(this._timer);\r\n this._timer = null;\r\n }\r\n };\r\n SliderTimelineView.prototype._changeTimeline = function (nextIndex) {\r\n var currentIndex = this.model.getCurrentIndex();\r\n if (nextIndex === '+') {\r\n nextIndex = currentIndex + 1;\r\n }\r\n else if (nextIndex === '-') {\r\n nextIndex = currentIndex - 1;\r\n }\r\n this.api.dispatchAction({\r\n type: 'timelineChange',\r\n currentIndex: nextIndex,\r\n from: this.uid\r\n });\r\n };\r\n SliderTimelineView.prototype._updateTicksStatus = function () {\r\n var currentIndex = this.model.getCurrentIndex();\r\n var tickSymbols = this._tickSymbols;\r\n var tickLabels = this._tickLabels;\r\n if (tickSymbols) {\r\n for (var i = 0; i < tickSymbols.length; i++) {\r\n tickSymbols && tickSymbols[i]\r\n && tickSymbols[i].toggleState('progress', i < currentIndex);\r\n }\r\n }\r\n if (tickLabels) {\r\n for (var i = 0; i < tickLabels.length; i++) {\r\n tickLabels && tickLabels[i]\r\n && tickLabels[i].toggleState('progress', labelDataIndexStore(tickLabels[i]).dataIndex <= currentIndex);\r\n }\r\n }\r\n };\r\n SliderTimelineView.type = 'timeline.slider';\r\n return SliderTimelineView;\r\n}(TimelineView));\r\nfunction createScaleByModel$1(model, axisType) {\r\n axisType = axisType || model.get('type');\r\n if (axisType) {\r\n switch (axisType) {\r\n case 'category':\r\n return new OrdinalScale({\r\n ordinalMeta: model.getCategories(),\r\n extent: [Infinity, -Infinity]\r\n });\r\n case 'time':\r\n return new TimeScale({\r\n locale: model.ecModel.getLocaleModel(),\r\n useUTC: model.ecModel.get('useUTC')\r\n });\r\n default:\r\n return new IntervalScale();\r\n }\r\n }\r\n}\r\nfunction getViewRect$5(model, api) {\r\n return getLayoutRect(model.getBoxLayoutParams(), {\r\n width: api.getWidth(),\r\n height: api.getHeight()\r\n }, model.get('padding'));\r\n}\r\nfunction makeControlIcon(timelineModel, objPath, rect, opts) {\r\n var style = opts.style;\r\n var icon = createIcon(timelineModel.get(['controlStyle', objPath]), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3]));\r\n if (style) {\r\n icon.setStyle(style);\r\n }\r\n return icon;\r\n}\r\nfunction giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {\r\n var color = itemStyleModel.get('color');\r\n if (!symbol) {\r\n var symbolType = hostModel.get('symbol');\r\n symbol = createSymbol(symbolType, -1, -1, 2, 2, color);\r\n symbol.setStyle('strokeNoScale', true);\r\n group.add(symbol);\r\n callback && callback.onCreate(symbol);\r\n }\r\n else {\r\n symbol.setColor(color);\r\n group.add(symbol);\r\n callback && callback.onUpdate(symbol);\r\n }\r\n var itemStyle = itemStyleModel.getItemStyle(['color']);\r\n symbol.setStyle(itemStyle);\r\n opt = merge({\r\n rectHover: true,\r\n z2: 100\r\n }, opt, true);\r\n var symbolSize = hostModel.get('symbolSize');\r\n symbolSize = symbolSize instanceof Array\r\n ? symbolSize.slice()\r\n : [+symbolSize, +symbolSize];\r\n opt.scaleX = symbolSize[0] / 2;\r\n opt.scaleY = symbolSize[1] / 2;\r\n var symbolOffset = hostModel.get('symbolOffset');\r\n if (symbolOffset) {\r\n opt.x = opt.x || 0;\r\n opt.y = opt.y || 0;\r\n opt.x += parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n opt.y += parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n }\r\n var symbolRotate = hostModel.get('symbolRotate');\r\n opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\r\n symbol.attr(opt);\r\n symbol.updateTransform();\r\n return symbol;\r\n}\r\nfunction pointerMoveTo(pointer, progressLine, dataIndex, axis, timelineModel, noAnimation) {\r\n if (pointer.dragging) {\r\n return;\r\n }\r\n var pointerModel = timelineModel.getModel('checkpointStyle');\r\n var toCoord = axis.dataToCoord(timelineModel.getData().get('value', dataIndex));\r\n if (noAnimation || !pointerModel.get('animation', true)) {\r\n pointer.attr({\r\n x: toCoord,\r\n y: 0\r\n });\r\n progressLine && progressLine.attr({\r\n shape: { x2: toCoord }\r\n });\r\n }\r\n else {\r\n var animationCfg = {\r\n duration: pointerModel.get('animationDuration', true),\r\n easing: pointerModel.get('animationEasing', true)\r\n };\r\n pointer.stopAnimation(null, true);\r\n pointer.animateTo({\r\n x: toCoord,\r\n y: 0\r\n }, animationCfg);\r\n progressLine && progressLine.animateTo({\r\n shape: { x2: toCoord }\r\n }, animationCfg);\r\n }\r\n}\r\nComponentView.registerClass(SliderTimelineView);\n\nregisterPreprocessor(timelinePreprocessor);\n\nfunction fillLabel(opt) {\r\n defaultEmphasis(opt, 'label', ['show']);\r\n}\r\nvar inner$i = makeInner();\r\nvar MarkerModel = (function (_super) {\r\n __extends(MarkerModel, _super);\r\n function MarkerModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MarkerModel.type;\r\n _this.createdBySelf = false;\r\n return _this;\r\n }\r\n MarkerModel.prototype.init = function (option, parentModel, ecModel) {\r\n if (__DEV__) {\r\n if (this.type === 'marker') {\r\n throw new Error('Marker component is abstract component. Use markLine, markPoint, markArea instead.');\r\n }\r\n }\r\n this.mergeDefaultAndTheme(option, ecModel);\r\n this._mergeOption(option, ecModel, false, true);\r\n };\r\n MarkerModel.prototype.isAnimationEnabled = function () {\r\n if (env.node) {\r\n return false;\r\n }\r\n var hostSeries = this.__hostSeries;\r\n return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\r\n };\r\n MarkerModel.prototype.mergeOption = function (newOpt, ecModel) {\r\n this._mergeOption(newOpt, ecModel, false, false);\r\n };\r\n MarkerModel.prototype._mergeOption = function (newOpt, ecModel, createdBySelf, isInit) {\r\n var componentType = this.mainType;\r\n if (!createdBySelf) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n var markerOpt = seriesModel.get(this.mainType, true);\r\n var markerModel = inner$i(seriesModel)[componentType];\r\n if (!markerOpt || !markerOpt.data) {\r\n inner$i(seriesModel)[componentType] = null;\r\n return;\r\n }\r\n if (!markerModel) {\r\n if (isInit) {\r\n fillLabel(markerOpt);\r\n }\r\n each(markerOpt.data, function (item) {\r\n if (item instanceof Array) {\r\n fillLabel(item[0]);\r\n fillLabel(item[1]);\r\n }\r\n else {\r\n fillLabel(item);\r\n }\r\n });\r\n markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel);\r\n extend(markerModel, {\r\n mainType: this.mainType,\r\n seriesIndex: seriesModel.seriesIndex,\r\n name: seriesModel.name,\r\n createdBySelf: true\r\n });\r\n markerModel.__hostSeries = seriesModel;\r\n }\r\n else {\r\n markerModel._mergeOption(markerOpt, ecModel, true);\r\n }\r\n inner$i(seriesModel)[componentType] = markerModel;\r\n }, this);\r\n }\r\n };\r\n MarkerModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n var data = this.getData();\r\n var value = this.getRawValue(dataIndex);\r\n var itemName = data.getName(dataIndex);\r\n return createTooltipMarkup('section', {\r\n header: this.name,\r\n blocks: [createTooltipMarkup('nameValue', {\r\n name: itemName,\r\n value: value,\r\n noName: !itemName,\r\n noValue: value == null\r\n })]\r\n });\r\n };\r\n MarkerModel.prototype.getData = function () {\r\n return this._data;\r\n };\r\n MarkerModel.prototype.setData = function (data) {\r\n this._data = data;\r\n };\r\n MarkerModel.getMarkerModelFromSeries = function (seriesModel, componentType) {\r\n return inner$i(seriesModel)[componentType];\r\n };\r\n MarkerModel.type = 'marker';\r\n MarkerModel.dependencies = ['series', 'grid', 'polar', 'geo'];\r\n return MarkerModel;\r\n}(ComponentModel));\r\nmixin(MarkerModel, DataFormatMixin.prototype);\n\nvar MarkPointModel = (function (_super) {\r\n __extends(MarkPointModel, _super);\r\n function MarkPointModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MarkPointModel.type;\r\n return _this;\r\n }\r\n MarkPointModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n return new MarkPointModel(markerOpt, masterMarkerModel, ecModel);\r\n };\r\n MarkPointModel.type = 'markPoint';\r\n MarkPointModel.defaultOption = {\r\n zlevel: 0,\r\n z: 5,\r\n symbol: 'pin',\r\n symbolSize: 50,\r\n tooltip: {\r\n trigger: 'item'\r\n },\r\n label: {\r\n show: true,\r\n position: 'inside'\r\n },\r\n itemStyle: {\r\n borderWidth: 2\r\n },\r\n emphasis: {\r\n label: {\r\n show: true\r\n }\r\n }\r\n };\r\n return MarkPointModel;\r\n}(MarkerModel));\r\nComponentModel.registerClass(MarkPointModel);\n\nfunction hasXOrY(item) {\r\n return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\r\n}\r\nfunction hasXAndY(item) {\r\n return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\r\n}\r\nfunction markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\r\n var coordArr = [];\r\n var stacked = isDimensionStacked(data, targetDataDim);\r\n var calcDataDim = stacked\r\n ? data.getCalculationInfo('stackResultDimension')\r\n : targetDataDim;\r\n var value = numCalculate(data, calcDataDim, markerType);\r\n var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];\r\n coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);\r\n coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);\r\n var coordArrValue = data.get(targetDataDim, dataIndex);\r\n var precision = getPrecision(data.get(targetDataDim, dataIndex));\r\n precision = Math.min(precision, 20);\r\n if (precision >= 0) {\r\n coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\r\n }\r\n return [coordArr, coordArrValue];\r\n}\r\nvar markerTypeCalculator = {\r\n min: curry(markerTypeCalculatorWithExtent, 'min'),\r\n max: curry(markerTypeCalculatorWithExtent, 'max'),\r\n average: curry(markerTypeCalculatorWithExtent, 'average'),\r\n median: curry(markerTypeCalculatorWithExtent, 'median')\r\n};\r\nfunction dataTransform(seriesModel, item) {\r\n var data = seriesModel.getData();\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (item && !hasXAndY(item) && !isArray(item.coord) && coordSys) {\r\n var dims = coordSys.dimensions;\r\n var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel);\r\n item = clone(item);\r\n if (item.type\r\n && markerTypeCalculator[item.type]\r\n && axisInfo.baseAxis && axisInfo.valueAxis) {\r\n var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\r\n var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\r\n var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);\r\n item.coord = coordInfo[0];\r\n item.value = coordInfo[1];\r\n }\r\n else {\r\n var coord = [\r\n item.xAxis != null ? item.xAxis : item.radiusAxis,\r\n item.yAxis != null ? item.yAxis : item.angleAxis\r\n ];\r\n for (var i = 0; i < 2; i++) {\r\n if (markerTypeCalculator[coord[i]]) {\r\n coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\r\n }\r\n }\r\n item.coord = coord;\r\n }\r\n }\r\n return item;\r\n}\r\nfunction getAxisInfo$1(item, data, coordSys, seriesModel) {\r\n var ret = {};\r\n if (item.valueIndex != null || item.valueDim != null) {\r\n ret.valueDataDim = item.valueIndex != null\r\n ? data.getDimension(item.valueIndex) : item.valueDim;\r\n ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\r\n ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\r\n ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\r\n }\r\n else {\r\n ret.baseAxis = seriesModel.getBaseAxis();\r\n ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\r\n ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\r\n ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\r\n }\r\n return ret;\r\n}\r\nfunction dataDimToCoordDim(seriesModel, dataDim) {\r\n var data = seriesModel.getData();\r\n var dimensions = data.dimensions;\r\n dataDim = data.getDimension(dataDim);\r\n for (var i = 0; i < dimensions.length; i++) {\r\n var dimItem = data.getDimensionInfo(dimensions[i]);\r\n if (dimItem.name === dataDim) {\r\n return dimItem.coordDim;\r\n }\r\n }\r\n}\r\nfunction dataFilter$1(coordSys, item) {\r\n return (coordSys && coordSys.containData && item.coord && !hasXOrY(item))\r\n ? coordSys.containData(item.coord) : true;\r\n}\r\nfunction dimValueGetter(item, dimName, dataIndex, dimIndex) {\r\n if (dimIndex < 2) {\r\n return item.coord && item.coord[dimIndex];\r\n }\r\n return item.value;\r\n}\r\nfunction numCalculate(data, valueDataDim, type) {\r\n if (type === 'average') {\r\n var sum_1 = 0;\r\n var count_1 = 0;\r\n data.each(valueDataDim, function (val, idx) {\r\n if (!isNaN(val)) {\r\n sum_1 += val;\r\n count_1++;\r\n }\r\n });\r\n return sum_1 / count_1;\r\n }\r\n else if (type === 'median') {\r\n return data.getMedian(valueDataDim);\r\n }\r\n else {\r\n return data.getDataExtent(valueDataDim)[type === 'max' ? 1 : 0];\r\n }\r\n}\n\nvar inner$j = makeInner();\r\nvar MarkerView = (function (_super) {\r\n __extends(MarkerView, _super);\r\n function MarkerView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MarkerView.type;\r\n return _this;\r\n }\r\n MarkerView.prototype.init = function () {\r\n this.markerGroupMap = createHashMap();\r\n };\r\n MarkerView.prototype.render = function (markerModel, ecModel, api) {\r\n var _this = this;\r\n var markerGroupMap = this.markerGroupMap;\r\n markerGroupMap.each(function (item) {\r\n inner$j(item).keep = false;\r\n });\r\n ecModel.eachSeries(function (seriesModel) {\r\n var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);\r\n markerModel && _this.renderSeries(seriesModel, markerModel, ecModel, api);\r\n });\r\n markerGroupMap.each(function (item) {\r\n !inner$j(item).keep && _this.group.remove(item.group);\r\n });\r\n };\r\n MarkerView.prototype.markKeep = function (drawGroup) {\r\n inner$j(drawGroup).keep = true;\r\n };\r\n MarkerView.prototype.blurSeries = function (seriesModelList) {\r\n var _this = this;\r\n each(seriesModelList, function (seriesModel) {\r\n var markerModel = MarkerModel.getMarkerModelFromSeries(seriesModel, _this.type);\r\n if (markerModel) {\r\n var data = markerModel.getData();\r\n data.eachItemGraphicEl(function (el) {\r\n if (el) {\r\n enterBlur(el);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n MarkerView.type = 'marker';\r\n return MarkerView;\r\n}(ComponentView));\n\nfunction updateMarkerLayout(mpData, seriesModel, api) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n mpData.each(function (idx) {\r\n var itemModel = mpData.getItemModel(idx);\r\n var point;\r\n var xPx = parsePercent$2(itemModel.get('x'), api.getWidth());\r\n var yPx = parsePercent$2(itemModel.get('y'), api.getHeight());\r\n if (!isNaN(xPx) && !isNaN(yPx)) {\r\n point = [xPx, yPx];\r\n }\r\n else if (seriesModel.getMarkerPosition) {\r\n point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));\r\n }\r\n else if (coordSys) {\r\n var x = mpData.get(coordSys.dimensions[0], idx);\r\n var y = mpData.get(coordSys.dimensions[1], idx);\r\n point = coordSys.dataToPoint([x, y]);\r\n }\r\n if (!isNaN(xPx)) {\r\n point[0] = xPx;\r\n }\r\n if (!isNaN(yPx)) {\r\n point[1] = yPx;\r\n }\r\n mpData.setItemLayout(idx, point);\r\n });\r\n}\r\nvar MarkPointView = (function (_super) {\r\n __extends(MarkPointView, _super);\r\n function MarkPointView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MarkPointView.type;\r\n return _this;\r\n }\r\n MarkPointView.prototype.updateTransform = function (markPointModel, ecModel, api) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n var mpModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markPoint');\r\n if (mpModel) {\r\n updateMarkerLayout(mpModel.getData(), seriesModel, api);\r\n this.markerGroupMap.get(seriesModel.id).updateLayout();\r\n }\r\n }, this);\r\n };\r\n MarkPointView.prototype.renderSeries = function (seriesModel, mpModel, ecModel, api) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var seriesId = seriesModel.id;\r\n var seriesData = seriesModel.getData();\r\n var symbolDrawMap = this.markerGroupMap;\r\n var symbolDraw = symbolDrawMap.get(seriesId)\r\n || symbolDrawMap.set(seriesId, new SymbolDraw());\r\n var mpData = createList$1(coordSys, seriesModel, mpModel);\r\n mpModel.setData(mpData);\r\n updateMarkerLayout(mpModel.getData(), seriesModel, api);\r\n mpData.each(function (idx) {\r\n var itemModel = mpData.getItemModel(idx);\r\n var symbol = itemModel.getShallow('symbol');\r\n var symbolSize = itemModel.getShallow('symbolSize');\r\n var symbolRotate = itemModel.getShallow('symbolRotate');\r\n if (isFunction(symbol) || isFunction(symbolSize) || isFunction(symbolRotate)) {\r\n var rawIdx = mpModel.getRawValue(idx);\r\n var dataParams = mpModel.getDataParams(idx);\r\n if (isFunction(symbol)) {\r\n symbol = symbol(rawIdx, dataParams);\r\n }\r\n if (isFunction(symbolSize)) {\r\n symbolSize = symbolSize(rawIdx, dataParams);\r\n }\r\n if (isFunction(symbolRotate)) {\r\n symbolRotate = symbolRotate(rawIdx, dataParams);\r\n }\r\n }\r\n var style = itemModel.getModel('itemStyle').getItemStyle();\r\n var color = getVisualFromData(seriesData, 'color');\r\n if (!style.fill) {\r\n style.fill = color;\r\n }\r\n mpData.setItemVisual(idx, {\r\n symbol: symbol,\r\n symbolSize: symbolSize,\r\n symbolRotate: symbolRotate,\r\n style: style\r\n });\r\n });\r\n symbolDraw.updateData(mpData);\r\n this.group.add(symbolDraw.group);\r\n mpData.eachItemGraphicEl(function (el) {\r\n el.traverse(function (child) {\r\n getECData(child).dataModel = mpModel;\r\n });\r\n });\r\n this.markKeep(symbolDraw);\r\n symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent');\r\n };\r\n MarkPointView.type = 'markPoint';\r\n return MarkPointView;\r\n}(MarkerView));\r\nfunction createList$1(coordSys, seriesModel, mpModel) {\r\n var coordDimsInfos;\r\n if (coordSys) {\r\n coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};\r\n return defaults({ name: coordDim }, info);\r\n });\r\n }\r\n else {\r\n coordDimsInfos = [{\r\n name: 'value',\r\n type: 'float'\r\n }];\r\n }\r\n var mpData = new List(coordDimsInfos, mpModel);\r\n var dataOpt = map(mpModel.get('data'), curry(dataTransform, seriesModel));\r\n if (coordSys) {\r\n dataOpt = filter(dataOpt, curry(dataFilter$1, coordSys));\r\n }\r\n mpData.initData(dataOpt, null, coordSys ? dimValueGetter : function (item) {\r\n return item.value;\r\n });\r\n return mpData;\r\n}\r\nComponentView.registerClass(MarkPointView);\n\nregisterPreprocessor(function (opt) {\r\n opt.markPoint = opt.markPoint || {};\r\n});\n\nvar MarkLineModel = (function (_super) {\r\n __extends(MarkLineModel, _super);\r\n function MarkLineModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MarkLineModel.type;\r\n return _this;\r\n }\r\n MarkLineModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n return new MarkLineModel(markerOpt, masterMarkerModel, ecModel);\r\n };\r\n MarkLineModel.type = 'markLine';\r\n MarkLineModel.defaultOption = {\r\n zlevel: 0,\r\n z: 5,\r\n symbol: ['circle', 'arrow'],\r\n symbolSize: [8, 16],\r\n precision: 2,\r\n tooltip: {\r\n trigger: 'item'\r\n },\r\n label: {\r\n show: true,\r\n position: 'end',\r\n distance: 5\r\n },\r\n lineStyle: {\r\n type: 'dashed'\r\n },\r\n emphasis: {\r\n label: {\r\n show: true\r\n },\r\n lineStyle: {\r\n width: 3\r\n }\r\n },\r\n animationEasing: 'linear'\r\n };\r\n return MarkLineModel;\r\n}(MarkerModel));\r\nComponentModel.registerClass(MarkLineModel);\n\nvar inner$k = makeInner();\r\nvar markLineTransform = function (seriesModel, coordSys, mlModel, item) {\r\n var data = seriesModel.getData();\r\n var itemArray;\r\n if (!isArray(item)) {\r\n var mlType = item.type;\r\n if (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median'\r\n || (item.xAxis != null || item.yAxis != null)) {\r\n var valueAxis = void 0;\r\n var value = void 0;\r\n if (item.yAxis != null || item.xAxis != null) {\r\n valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\r\n value = retrieve(item.yAxis, item.xAxis);\r\n }\r\n else {\r\n var axisInfo = getAxisInfo$1(item, data, coordSys, seriesModel);\r\n valueAxis = axisInfo.valueAxis;\r\n var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\r\n value = numCalculate(data, valueDataDim, mlType);\r\n }\r\n var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\r\n var baseIndex = 1 - valueIndex;\r\n var mlFrom = clone(item);\r\n var mlTo = {\r\n coord: []\r\n };\r\n mlFrom.type = null;\r\n mlFrom.coord = [];\r\n mlFrom.coord[baseIndex] = -Infinity;\r\n mlTo.coord[baseIndex] = Infinity;\r\n var precision = mlModel.get('precision');\r\n if (precision >= 0 && typeof value === 'number') {\r\n value = +value.toFixed(Math.min(precision, 20));\r\n }\r\n mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\r\n itemArray = [mlFrom, mlTo, {\r\n type: mlType,\r\n valueIndex: item.valueIndex,\r\n value: value\r\n }];\r\n }\r\n else {\r\n if (__DEV__) {\r\n logError('Invalid markLine data.');\r\n }\r\n itemArray = [];\r\n }\r\n }\r\n else {\r\n itemArray = item;\r\n }\r\n var normalizedItem = [\r\n dataTransform(seriesModel, itemArray[0]),\r\n dataTransform(seriesModel, itemArray[1]),\r\n extend({}, itemArray[2])\r\n ];\r\n normalizedItem[2].type = normalizedItem[2].type || null;\r\n merge(normalizedItem[2], normalizedItem[0]);\r\n merge(normalizedItem[2], normalizedItem[1]);\r\n return normalizedItem;\r\n};\r\nfunction isInifinity(val) {\r\n return !isNaN(val) && !isFinite(val);\r\n}\r\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\r\n var otherDimIndex = 1 - dimIndex;\r\n var dimName = coordSys.dimensions[dimIndex];\r\n return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex])\r\n && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\r\n}\r\nfunction markLineFilter(coordSys, item) {\r\n if (coordSys.type === 'cartesian2d') {\r\n var fromCoord = item[0].coord;\r\n var toCoord = item[1].coord;\r\n if (fromCoord && toCoord\r\n && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys)\r\n || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\r\n return true;\r\n }\r\n }\r\n return dataFilter$1(coordSys, item[0])\r\n && dataFilter$1(coordSys, item[1]);\r\n}\r\nfunction updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var itemModel = data.getItemModel(idx);\r\n var point;\r\n var xPx = parsePercent$2(itemModel.get('x'), api.getWidth());\r\n var yPx = parsePercent$2(itemModel.get('y'), api.getHeight());\r\n if (!isNaN(xPx) && !isNaN(yPx)) {\r\n point = [xPx, yPx];\r\n }\r\n else {\r\n if (seriesModel.getMarkerPosition) {\r\n point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\r\n }\r\n else {\r\n var dims = coordSys.dimensions;\r\n var x = data.get(dims[0], idx);\r\n var y = data.get(dims[1], idx);\r\n point = coordSys.dataToPoint([x, y]);\r\n }\r\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n var xAxis = coordSys.getAxis('x');\r\n var yAxis = coordSys.getAxis('y');\r\n var dims = coordSys.dimensions;\r\n if (isInifinity(data.get(dims[0], idx))) {\r\n point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\r\n }\r\n else if (isInifinity(data.get(dims[1], idx))) {\r\n point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\r\n }\r\n }\r\n if (!isNaN(xPx)) {\r\n point[0] = xPx;\r\n }\r\n if (!isNaN(yPx)) {\r\n point[1] = yPx;\r\n }\r\n }\r\n data.setItemLayout(idx, point);\r\n}\r\nvar MarkLineView = (function (_super) {\r\n __extends(MarkLineView, _super);\r\n function MarkLineView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MarkLineView.type;\r\n return _this;\r\n }\r\n MarkLineView.prototype.updateTransform = function (markLineModel, ecModel, api) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n var mlModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markLine');\r\n if (mlModel) {\r\n var mlData_1 = mlModel.getData();\r\n var fromData_1 = inner$k(mlModel).from;\r\n var toData_1 = inner$k(mlModel).to;\r\n fromData_1.each(function (idx) {\r\n updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api);\r\n updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api);\r\n });\r\n mlData_1.each(function (idx) {\r\n mlData_1.setItemLayout(idx, [\r\n fromData_1.getItemLayout(idx),\r\n toData_1.getItemLayout(idx)\r\n ]);\r\n });\r\n this.markerGroupMap.get(seriesModel.id).updateLayout();\r\n }\r\n }, this);\r\n };\r\n MarkLineView.prototype.renderSeries = function (seriesModel, mlModel, ecModel, api) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var seriesId = seriesModel.id;\r\n var seriesData = seriesModel.getData();\r\n var lineDrawMap = this.markerGroupMap;\r\n var lineDraw = lineDrawMap.get(seriesId)\r\n || lineDrawMap.set(seriesId, new LineDraw());\r\n this.group.add(lineDraw.group);\r\n var mlData = createList$2(coordSys, seriesModel, mlModel);\r\n var fromData = mlData.from;\r\n var toData = mlData.to;\r\n var lineData = mlData.line;\r\n inner$k(mlModel).from = fromData;\r\n inner$k(mlModel).to = toData;\r\n mlModel.setData(lineData);\r\n var symbolType = mlModel.get('symbol');\r\n var symbolSize = mlModel.get('symbolSize');\r\n if (!isArray(symbolType)) {\r\n symbolType = [symbolType, symbolType];\r\n }\r\n if (!isArray(symbolSize)) {\r\n symbolSize = [symbolSize, symbolSize];\r\n }\r\n mlData.from.each(function (idx) {\r\n updateDataVisualAndLayout(fromData, idx, true);\r\n updateDataVisualAndLayout(toData, idx, false);\r\n });\r\n lineData.each(function (idx) {\r\n var lineStyle = lineData.getItemModel(idx)\r\n .getModel('lineStyle').getLineStyle();\r\n lineData.setItemLayout(idx, [\r\n fromData.getItemLayout(idx),\r\n toData.getItemLayout(idx)\r\n ]);\r\n if (lineStyle.stroke == null) {\r\n lineStyle.stroke = fromData.getItemVisual(idx, 'style').fill;\r\n }\r\n lineData.setItemVisual(idx, {\r\n fromSymbolRotate: fromData.getItemVisual(idx, 'symbolRotate'),\r\n fromSymbolSize: fromData.getItemVisual(idx, 'symbolSize'),\r\n fromSymbol: fromData.getItemVisual(idx, 'symbol'),\r\n toSymbolRotate: toData.getItemVisual(idx, 'symbolRotate'),\r\n toSymbolSize: toData.getItemVisual(idx, 'symbolSize'),\r\n toSymbol: toData.getItemVisual(idx, 'symbol'),\r\n style: lineStyle\r\n });\r\n });\r\n lineDraw.updateData(lineData);\r\n mlData.line.eachItemGraphicEl(function (el, idx) {\r\n el.traverse(function (child) {\r\n getECData(child).dataModel = mlModel;\r\n });\r\n });\r\n function updateDataVisualAndLayout(data, idx, isFrom) {\r\n var itemModel = data.getItemModel(idx);\r\n updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\r\n var style = itemModel.getModel('itemStyle').getItemStyle();\r\n if (style.fill == null) {\r\n style.fill = getVisualFromData(seriesData, 'color');\r\n }\r\n data.setItemVisual(idx, {\r\n symbolRotate: itemModel.get('symbolRotate'),\r\n symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\r\n symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\r\n style: style\r\n });\r\n }\r\n this.markKeep(lineDraw);\r\n lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\r\n };\r\n MarkLineView.type = 'markLine';\r\n return MarkLineView;\r\n}(MarkerView));\r\nfunction createList$2(coordSys, seriesModel, mlModel) {\r\n var coordDimsInfos;\r\n if (coordSys) {\r\n coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};\r\n return defaults({ name: coordDim }, info);\r\n });\r\n }\r\n else {\r\n coordDimsInfos = [{\r\n name: 'value',\r\n type: 'float'\r\n }];\r\n }\r\n var fromData = new List(coordDimsInfos, mlModel);\r\n var toData = new List(coordDimsInfos, mlModel);\r\n var lineData = new List([], mlModel);\r\n var optData = map(mlModel.get('data'), curry(markLineTransform, seriesModel, coordSys, mlModel));\r\n if (coordSys) {\r\n optData = filter(optData, curry(markLineFilter, coordSys));\r\n }\r\n var dimValueGetter$1 = coordSys ? dimValueGetter : function (item) {\r\n return item.value;\r\n };\r\n fromData.initData(map(optData, function (item) {\r\n return item[0];\r\n }), null, dimValueGetter$1);\r\n toData.initData(map(optData, function (item) {\r\n return item[1];\r\n }), null, dimValueGetter$1);\r\n lineData.initData(map(optData, function (item) {\r\n return item[2];\r\n }));\r\n lineData.hasItemOption = true;\r\n return {\r\n from: fromData,\r\n to: toData,\r\n line: lineData\r\n };\r\n}\r\nComponentView.registerClass(MarkLineView);\n\nregisterPreprocessor(function (opt) {\r\n opt.markLine = opt.markLine || {};\r\n});\n\nvar MarkAreaModel = (function (_super) {\r\n __extends(MarkAreaModel, _super);\r\n function MarkAreaModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MarkAreaModel.type;\r\n return _this;\r\n }\r\n MarkAreaModel.prototype.createMarkerModelFromSeries = function (markerOpt, masterMarkerModel, ecModel) {\r\n return new MarkAreaModel(markerOpt, masterMarkerModel, ecModel);\r\n };\r\n MarkAreaModel.type = 'markArea';\r\n MarkAreaModel.defaultOption = {\r\n zlevel: 0,\r\n z: 1,\r\n tooltip: {\r\n trigger: 'item'\r\n },\r\n animation: false,\r\n label: {\r\n show: true,\r\n position: 'top'\r\n },\r\n itemStyle: {\r\n borderWidth: 0\r\n },\r\n emphasis: {\r\n label: {\r\n show: true,\r\n position: 'top'\r\n }\r\n }\r\n };\r\n return MarkAreaModel;\r\n}(MarkerModel));\r\nComponentModel.registerClass(MarkAreaModel);\n\nvar inner$l = makeInner();\r\nvar markAreaTransform = function (seriesModel, coordSys, maModel, item) {\r\n var lt = dataTransform(seriesModel, item[0]);\r\n var rb = dataTransform(seriesModel, item[1]);\r\n var ltCoord = lt.coord;\r\n var rbCoord = rb.coord;\r\n ltCoord[0] = retrieve(ltCoord[0], -Infinity);\r\n ltCoord[1] = retrieve(ltCoord[1], -Infinity);\r\n rbCoord[0] = retrieve(rbCoord[0], Infinity);\r\n rbCoord[1] = retrieve(rbCoord[1], Infinity);\r\n var result = mergeAll([{}, lt, rb]);\r\n result.coord = [\r\n lt.coord, rb.coord\r\n ];\r\n result.x0 = lt.x;\r\n result.y0 = lt.y;\r\n result.x1 = rb.x;\r\n result.y1 = rb.y;\r\n return result;\r\n};\r\nfunction isInifinity$1(val) {\r\n return !isNaN(val) && !isFinite(val);\r\n}\r\nfunction ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\r\n var otherDimIndex = 1 - dimIndex;\r\n return isInifinity$1(fromCoord[otherDimIndex]) && isInifinity$1(toCoord[otherDimIndex]);\r\n}\r\nfunction markAreaFilter(coordSys, item) {\r\n var fromCoord = item.coord[0];\r\n var toCoord = item.coord[1];\r\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n if (fromCoord && toCoord\r\n && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord)\r\n || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord))) {\r\n return true;\r\n }\r\n }\r\n return dataFilter$1(coordSys, {\r\n coord: fromCoord,\r\n x: item.x0,\r\n y: item.y0\r\n })\r\n || dataFilter$1(coordSys, {\r\n coord: toCoord,\r\n x: item.x1,\r\n y: item.y1\r\n });\r\n}\r\nfunction getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var itemModel = data.getItemModel(idx);\r\n var point;\r\n var xPx = parsePercent$2(itemModel.get(dims[0]), api.getWidth());\r\n var yPx = parsePercent$2(itemModel.get(dims[1]), api.getHeight());\r\n if (!isNaN(xPx) && !isNaN(yPx)) {\r\n point = [xPx, yPx];\r\n }\r\n else {\r\n if (seriesModel.getMarkerPosition) {\r\n point = seriesModel.getMarkerPosition(data.getValues(dims, idx));\r\n }\r\n else {\r\n var x = data.get(dims[0], idx);\r\n var y = data.get(dims[1], idx);\r\n var pt = [x, y];\r\n coordSys.clampData && coordSys.clampData(pt, pt);\r\n point = coordSys.dataToPoint(pt, true);\r\n }\r\n if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n var xAxis = coordSys.getAxis('x');\r\n var yAxis = coordSys.getAxis('y');\r\n var x = data.get(dims[0], idx);\r\n var y = data.get(dims[1], idx);\r\n if (isInifinity$1(x)) {\r\n point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]);\r\n }\r\n else if (isInifinity$1(y)) {\r\n point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]);\r\n }\r\n }\r\n if (!isNaN(xPx)) {\r\n point[0] = xPx;\r\n }\r\n if (!isNaN(yPx)) {\r\n point[1] = yPx;\r\n }\r\n }\r\n return point;\r\n}\r\nvar dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\r\nvar MarkAreaView = (function (_super) {\r\n __extends(MarkAreaView, _super);\r\n function MarkAreaView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = MarkAreaView.type;\r\n return _this;\r\n }\r\n MarkAreaView.prototype.updateTransform = function (markAreaModel, ecModel, api) {\r\n ecModel.eachSeries(function (seriesModel) {\r\n var maModel = MarkerModel.getMarkerModelFromSeries(seriesModel, 'markArea');\r\n if (maModel) {\r\n var areaData_1 = maModel.getData();\r\n areaData_1.each(function (idx) {\r\n var points = map(dimPermutations, function (dim) {\r\n return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api);\r\n });\r\n areaData_1.setItemLayout(idx, points);\r\n var el = areaData_1.getItemGraphicEl(idx);\r\n el.setShape('points', points);\r\n });\r\n }\r\n }, this);\r\n };\r\n MarkAreaView.prototype.renderSeries = function (seriesModel, maModel, ecModel, api) {\r\n var coordSys = seriesModel.coordinateSystem;\r\n var seriesId = seriesModel.id;\r\n var seriesData = seriesModel.getData();\r\n var areaGroupMap = this.markerGroupMap;\r\n var polygonGroup = areaGroupMap.get(seriesId)\r\n || areaGroupMap.set(seriesId, { group: new Group() });\r\n this.group.add(polygonGroup.group);\r\n this.markKeep(polygonGroup);\r\n var areaData = createList$3(coordSys, seriesModel, maModel);\r\n maModel.setData(areaData);\r\n areaData.each(function (idx) {\r\n var points = map(dimPermutations, function (dim) {\r\n return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\r\n });\r\n var allClipped = true;\r\n each(dimPermutations, function (dim) {\r\n if (!allClipped) {\r\n return;\r\n }\r\n var xValue = areaData.get(dim[0], idx);\r\n var yValue = areaData.get(dim[1], idx);\r\n if ((isInifinity$1(xValue) || coordSys.getAxis('x').containData(xValue))\r\n && (isInifinity$1(yValue) || coordSys.getAxis('y').containData(yValue))) {\r\n allClipped = false;\r\n }\r\n });\r\n areaData.setItemLayout(idx, {\r\n points: points,\r\n allClipped: allClipped\r\n });\r\n var style = areaData.getItemModel(idx).getModel('itemStyle').getItemStyle();\r\n var color$1 = getVisualFromData(seriesData, 'color');\r\n if (!style.fill) {\r\n style.fill = color$1;\r\n if (typeof style.fill === 'string') {\r\n style.fill = modifyAlpha(style.fill, 0.4);\r\n }\r\n }\r\n if (!style.stroke) {\r\n style.stroke = color$1;\r\n }\r\n areaData.setItemVisual(idx, 'style', style);\r\n });\r\n areaData.diff(inner$l(polygonGroup).data)\r\n .add(function (idx) {\r\n var layout = areaData.getItemLayout(idx);\r\n if (!layout.allClipped) {\r\n var polygon = new Polygon({\r\n shape: {\r\n points: layout.points\r\n }\r\n });\r\n areaData.setItemGraphicEl(idx, polygon);\r\n polygonGroup.group.add(polygon);\r\n }\r\n })\r\n .update(function (newIdx, oldIdx) {\r\n var polygon = inner$l(polygonGroup).data.getItemGraphicEl(oldIdx);\r\n var layout = areaData.getItemLayout(newIdx);\r\n if (!layout.allClipped) {\r\n if (polygon) {\r\n updateProps(polygon, {\r\n shape: {\r\n points: layout.points\r\n }\r\n }, maModel, newIdx);\r\n }\r\n else {\r\n polygon = new Polygon({\r\n shape: {\r\n points: layout.points\r\n }\r\n });\r\n }\r\n areaData.setItemGraphicEl(newIdx, polygon);\r\n polygonGroup.group.add(polygon);\r\n }\r\n else if (polygon) {\r\n polygonGroup.group.remove(polygon);\r\n }\r\n })\r\n .remove(function (idx) {\r\n var polygon = inner$l(polygonGroup).data.getItemGraphicEl(idx);\r\n polygonGroup.group.remove(polygon);\r\n })\r\n .execute();\r\n areaData.eachItemGraphicEl(function (polygon, idx) {\r\n var itemModel = areaData.getItemModel(idx);\r\n var style = areaData.getItemVisual(idx, 'style');\r\n polygon.useStyle(areaData.getItemVisual(idx, 'style'));\r\n setLabelStyle(polygon, getLabelStatesModels(itemModel), {\r\n labelFetcher: maModel,\r\n labelDataIndex: idx,\r\n defaultText: areaData.getName(idx) || '',\r\n inheritColor: typeof style.fill === 'string'\r\n ? modifyAlpha(style.fill, 1) : '#000'\r\n });\r\n setStatesStylesFromModel(polygon, itemModel);\r\n enableHoverEmphasis(polygon);\r\n getECData(polygon).dataModel = maModel;\r\n });\r\n inner$l(polygonGroup).data = areaData;\r\n polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent');\r\n };\r\n MarkAreaView.type = 'markArea';\r\n return MarkAreaView;\r\n}(MarkerView));\r\nfunction createList$3(coordSys, seriesModel, maModel) {\r\n var coordDimsInfos;\r\n var areaData;\r\n var dims = ['x0', 'y0', 'x1', 'y1'];\r\n if (coordSys) {\r\n coordDimsInfos = map(coordSys && coordSys.dimensions, function (coordDim) {\r\n var data = seriesModel.getData();\r\n var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {};\r\n return defaults({\r\n name: coordDim\r\n }, info);\r\n });\r\n areaData = new List(map(dims, function (dim, idx) {\r\n return {\r\n name: dim,\r\n type: coordDimsInfos[idx % 2].type\r\n };\r\n }), maModel);\r\n }\r\n else {\r\n coordDimsInfos = [{\r\n name: 'value',\r\n type: 'float'\r\n }];\r\n areaData = new List(coordDimsInfos, maModel);\r\n }\r\n var optData = map(maModel.get('data'), curry(markAreaTransform, seriesModel, coordSys, maModel));\r\n if (coordSys) {\r\n optData = filter(optData, curry(markAreaFilter, coordSys));\r\n }\r\n var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) {\r\n return item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];\r\n } : function (item) {\r\n return item.value;\r\n };\r\n areaData.initData(optData, null, dimValueGetter);\r\n areaData.hasItemOption = true;\r\n return areaData;\r\n}\r\nComponentView.registerClass(MarkAreaView);\n\nregisterPreprocessor(function (opt) {\r\n opt.markArea = opt.markArea || {};\r\n});\n\nvar getDefaultSelectorOptions = function (ecModel, type) {\r\n if (type === 'all') {\r\n return {\r\n type: 'all',\r\n title: ecModel.getLocale(['legend', 'selector', 'all'])\r\n };\r\n }\r\n else if (type === 'inverse') {\r\n return {\r\n type: 'inverse',\r\n title: ecModel.getLocale(['legend', 'selector', 'inverse'])\r\n };\r\n }\r\n};\r\nvar LegendModel = (function (_super) {\r\n __extends(LegendModel, _super);\r\n function LegendModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = LegendModel.type;\r\n _this.layoutMode = {\r\n type: 'box',\r\n ignoreSize: true\r\n };\r\n return _this;\r\n }\r\n LegendModel.prototype.init = function (option, parentModel, ecModel) {\r\n this.mergeDefaultAndTheme(option, ecModel);\r\n option.selected = option.selected || {};\r\n this._updateSelector(option);\r\n };\r\n LegendModel.prototype.mergeOption = function (option, ecModel) {\r\n _super.prototype.mergeOption.call(this, option, ecModel);\r\n this._updateSelector(option);\r\n };\r\n LegendModel.prototype._updateSelector = function (option) {\r\n var selector = option.selector;\r\n var ecModel = this.ecModel;\r\n if (selector === true) {\r\n selector = option.selector = ['all', 'inverse'];\r\n }\r\n if (isArray(selector)) {\r\n each(selector, function (item, index) {\r\n isString(item) && (item = { type: item });\r\n selector[index] = merge(item, getDefaultSelectorOptions(ecModel, item.type));\r\n });\r\n }\r\n };\r\n LegendModel.prototype.optionUpdated = function () {\r\n this._updateData(this.ecModel);\r\n var legendData = this._data;\r\n if (legendData[0] && this.get('selectedMode') === 'single') {\r\n var hasSelected = false;\r\n for (var i = 0; i < legendData.length; i++) {\r\n var name_1 = legendData[i].get('name');\r\n if (this.isSelected(name_1)) {\r\n this.select(name_1);\r\n hasSelected = true;\r\n break;\r\n }\r\n }\r\n !hasSelected && this.select(legendData[0].get('name'));\r\n }\r\n };\r\n LegendModel.prototype._updateData = function (ecModel) {\r\n var potentialData = [];\r\n var availableNames = [];\r\n ecModel.eachRawSeries(function (seriesModel) {\r\n var seriesName = seriesModel.name;\r\n availableNames.push(seriesName);\r\n var isPotential;\r\n if (seriesModel.legendVisualProvider) {\r\n var provider = seriesModel.legendVisualProvider;\r\n var names = provider.getAllNames();\r\n if (!ecModel.isSeriesFiltered(seriesModel)) {\r\n availableNames = availableNames.concat(names);\r\n }\r\n if (names.length) {\r\n potentialData = potentialData.concat(names);\r\n }\r\n else {\r\n isPotential = true;\r\n }\r\n }\r\n else {\r\n isPotential = true;\r\n }\r\n if (isPotential && isNameSpecified(seriesModel)) {\r\n potentialData.push(seriesModel.name);\r\n }\r\n });\r\n this._availableNames = availableNames;\r\n var rawData = this.get('data') || potentialData;\r\n var legendData = map(rawData, function (dataItem) {\r\n if (typeof dataItem === 'string' || typeof dataItem === 'number') {\r\n dataItem = {\r\n name: dataItem\r\n };\r\n }\r\n return new Model(dataItem, this, this.ecModel);\r\n }, this);\r\n this._data = legendData;\r\n };\r\n LegendModel.prototype.getData = function () {\r\n return this._data;\r\n };\r\n LegendModel.prototype.select = function (name) {\r\n var selected = this.option.selected;\r\n var selectedMode = this.get('selectedMode');\r\n if (selectedMode === 'single') {\r\n var data = this._data;\r\n each(data, function (dataItem) {\r\n selected[dataItem.get('name')] = false;\r\n });\r\n }\r\n selected[name] = true;\r\n };\r\n LegendModel.prototype.unSelect = function (name) {\r\n if (this.get('selectedMode') !== 'single') {\r\n this.option.selected[name] = false;\r\n }\r\n };\r\n LegendModel.prototype.toggleSelected = function (name) {\r\n var selected = this.option.selected;\r\n if (!selected.hasOwnProperty(name)) {\r\n selected[name] = true;\r\n }\r\n this[selected[name] ? 'unSelect' : 'select'](name);\r\n };\r\n LegendModel.prototype.allSelect = function () {\r\n var data = this._data;\r\n var selected = this.option.selected;\r\n each(data, function (dataItem) {\r\n selected[dataItem.get('name', true)] = true;\r\n });\r\n };\r\n LegendModel.prototype.inverseSelect = function () {\r\n var data = this._data;\r\n var selected = this.option.selected;\r\n each(data, function (dataItem) {\r\n var name = dataItem.get('name', true);\r\n if (!selected.hasOwnProperty(name)) {\r\n selected[name] = true;\r\n }\r\n selected[name] = !selected[name];\r\n });\r\n };\r\n LegendModel.prototype.isSelected = function (name) {\r\n var selected = this.option.selected;\r\n return !(selected.hasOwnProperty(name) && !selected[name])\r\n && indexOf(this._availableNames, name) >= 0;\r\n };\r\n LegendModel.prototype.getOrient = function () {\r\n return this.get('orient') === 'vertical'\r\n ? { index: 1, name: 'vertical' }\r\n : { index: 0, name: 'horizontal' };\r\n };\r\n LegendModel.type = 'legend.plain';\r\n LegendModel.dependencies = ['series'];\r\n LegendModel.defaultOption = {\r\n zlevel: 0,\r\n z: 4,\r\n show: true,\r\n orient: 'horizontal',\r\n left: 'center',\r\n top: 0,\r\n align: 'auto',\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n borderColor: '#ccc',\r\n borderRadius: 0,\r\n borderWidth: 0,\r\n padding: 5,\r\n itemGap: 10,\r\n itemWidth: 25,\r\n itemHeight: 14,\r\n inactiveColor: '#ccc',\r\n inactiveBorderColor: '#ccc',\r\n itemStyle: {\r\n borderWidth: 0\r\n },\r\n textStyle: {\r\n color: '#333'\r\n },\r\n selectedMode: true,\r\n selector: false,\r\n selectorLabel: {\r\n show: true,\r\n borderRadius: 10,\r\n padding: [3, 5, 3, 5],\r\n fontSize: 12,\r\n fontFamily: ' sans-serif',\r\n color: '#666',\r\n borderWidth: 1,\r\n borderColor: '#666'\r\n },\r\n emphasis: {\r\n selectorLabel: {\r\n show: true,\r\n color: '#eee',\r\n backgroundColor: '#666'\r\n }\r\n },\r\n selectorPosition: 'auto',\r\n selectorItemGap: 7,\r\n selectorButtonGap: 10,\r\n tooltip: {\r\n show: false\r\n }\r\n };\r\n return LegendModel;\r\n}(ComponentModel));\r\nComponentModel.registerClass(LegendModel);\n\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\r\n var selectedMap = {};\r\n var isToggleSelect = methodName === 'toggleSelected';\r\n var isSelected;\r\n ecModel.eachComponent('legend', function (legendModel) {\r\n if (isToggleSelect && isSelected != null) {\r\n legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\r\n }\r\n else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\r\n legendModel[methodName]();\r\n }\r\n else {\r\n legendModel[methodName](payload.name);\r\n isSelected = legendModel.isSelected(payload.name);\r\n }\r\n var legendData = legendModel.getData();\r\n each(legendData, function (model) {\r\n var name = model.get('name');\r\n if (name === '\\n' || name === '') {\r\n return;\r\n }\r\n var isItemSelected = legendModel.isSelected(name);\r\n if (selectedMap.hasOwnProperty(name)) {\r\n selectedMap[name] = selectedMap[name] && isItemSelected;\r\n }\r\n else {\r\n selectedMap[name] = isItemSelected;\r\n }\r\n });\r\n });\r\n return (methodName === 'allSelect' || methodName === 'inverseSelect')\r\n ? {\r\n selected: selectedMap\r\n }\r\n : {\r\n name: payload.name,\r\n selected: selectedMap\r\n };\r\n}\r\nregisterAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected'));\r\nregisterAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect'));\r\nregisterAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect'));\r\nregisterAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select'));\r\nregisterAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect'));\n\nvar curry$1 = curry;\r\nvar each$e = each;\r\nvar Group$2 = Group;\r\nvar LegendView = (function (_super) {\r\n __extends(LegendView, _super);\r\n function LegendView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = LegendView.type;\r\n _this.newlineDisabled = false;\r\n return _this;\r\n }\r\n LegendView.prototype.init = function () {\r\n this.group.add(this._contentGroup = new Group$2());\r\n this.group.add(this._selectorGroup = new Group$2());\r\n this._isFirstRender = true;\r\n };\r\n LegendView.prototype.getContentGroup = function () {\r\n return this._contentGroup;\r\n };\r\n LegendView.prototype.getSelectorGroup = function () {\r\n return this._selectorGroup;\r\n };\r\n LegendView.prototype.render = function (legendModel, ecModel, api) {\r\n var isFirstRender = this._isFirstRender;\r\n this._isFirstRender = false;\r\n this.resetInner();\r\n if (!legendModel.get('show', true)) {\r\n return;\r\n }\r\n var itemAlign = legendModel.get('align');\r\n var orient = legendModel.get('orient');\r\n if (!itemAlign || itemAlign === 'auto') {\r\n itemAlign = (legendModel.get('left') === 'right'\r\n && orient === 'vertical') ? 'right' : 'left';\r\n }\r\n var selector = legendModel.get('selector', true);\r\n var selectorPosition = legendModel.get('selectorPosition', true);\r\n if (selector && (!selectorPosition || selectorPosition === 'auto')) {\r\n selectorPosition = orient === 'horizontal' ? 'end' : 'start';\r\n }\r\n this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\r\n var positionInfo = legendModel.getBoxLayoutParams();\r\n var viewportSize = { width: api.getWidth(), height: api.getHeight() };\r\n var padding = legendModel.get('padding');\r\n var maxSize = getLayoutRect(positionInfo, viewportSize, padding);\r\n var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition);\r\n var layoutRect = getLayoutRect(defaults({\r\n width: mainRect.width,\r\n height: mainRect.height\r\n }, positionInfo), viewportSize, padding);\r\n this.group.x = layoutRect.x - mainRect.x;\r\n this.group.y = layoutRect.y - mainRect.y;\r\n this.group.markRedraw();\r\n this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\r\n };\r\n LegendView.prototype.resetInner = function () {\r\n this.getContentGroup().removeAll();\r\n this._backgroundEl && this.group.remove(this._backgroundEl);\r\n this.getSelectorGroup().removeAll();\r\n };\r\n LegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\r\n var contentGroup = this.getContentGroup();\r\n var legendDrawnMap = createHashMap();\r\n var selectMode = legendModel.get('selectedMode');\r\n var excludeSeriesId = [];\r\n ecModel.eachRawSeries(function (seriesModel) {\r\n !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\r\n });\r\n each$e(legendModel.getData(), function (itemModel, dataIndex) {\r\n var name = itemModel.get('name');\r\n if (!this.newlineDisabled && (name === '' || name === '\\n')) {\r\n var g = new Group$2();\r\n g.newline = true;\r\n contentGroup.add(g);\r\n return;\r\n }\r\n var seriesModel = ecModel.getSeriesByName(name)[0];\r\n if (legendDrawnMap.get(name)) {\r\n return;\r\n }\r\n if (seriesModel) {\r\n var data = seriesModel.getData();\r\n var style = data.getVisual('style');\r\n var color = style[data.getVisual('drawType')] || style.fill;\r\n var borderColor = style.stroke;\r\n var decal = style.decal;\r\n var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\r\n var symbolType = data.getVisual('symbol');\r\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, decal, selectMode);\r\n itemGroup.on('click', curry$1(dispatchSelectAction, name, null, api, excludeSeriesId))\r\n .on('mouseover', curry$1(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId))\r\n .on('mouseout', curry$1(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\r\n legendDrawnMap.set(name, true);\r\n }\r\n else {\r\n ecModel.eachRawSeries(function (seriesModel) {\r\n if (legendDrawnMap.get(name)) {\r\n return;\r\n }\r\n if (seriesModel.legendVisualProvider) {\r\n var provider = seriesModel.legendVisualProvider;\r\n if (!provider.containName(name)) {\r\n return;\r\n }\r\n var idx = provider.indexOfName(name);\r\n var style = provider.getItemVisual(idx, 'style');\r\n var borderColor = style.stroke;\r\n var decal = style.decal;\r\n var color = style.fill;\r\n var colorArr = parse(style.fill);\r\n if (colorArr && colorArr[3] === 0) {\r\n colorArr[3] = 0.2;\r\n color = stringify(colorArr, 'rgba');\r\n }\r\n var legendSymbolType = 'roundRect';\r\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, borderColor, decal, selectMode);\r\n itemGroup.on('click', curry$1(dispatchSelectAction, null, name, api, excludeSeriesId))\r\n .on('mouseover', curry$1(dispatchHighlightAction, null, name, api, excludeSeriesId))\r\n .on('mouseout', curry$1(dispatchDownplayAction, null, name, api, excludeSeriesId));\r\n legendDrawnMap.set(name, true);\r\n }\r\n }, this);\r\n }\r\n if (__DEV__) {\r\n if (!legendDrawnMap.get(name)) {\r\n console.warn(name + ' series not exists. Legend data should be same with series name or data name.');\r\n }\r\n }\r\n }, this);\r\n if (selector) {\r\n this._createSelector(selector, legendModel, api, orient, selectorPosition);\r\n }\r\n };\r\n LegendView.prototype._createSelector = function (selector, legendModel, api, orient, selectorPosition) {\r\n var selectorGroup = this.getSelectorGroup();\r\n each$e(selector, function createSelectorButton(selectorItem) {\r\n var type = selectorItem.type;\r\n var labelText = new ZRText({\r\n style: {\r\n x: 0,\r\n y: 0,\r\n align: 'center',\r\n verticalAlign: 'middle'\r\n },\r\n onclick: function () {\r\n api.dispatchAction({\r\n type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\r\n });\r\n }\r\n });\r\n selectorGroup.add(labelText);\r\n var labelModel = legendModel.getModel('selectorLabel');\r\n var emphasisLabelModel = legendModel.getModel(['emphasis', 'selectorLabel']);\r\n setLabelStyle(labelText, { normal: labelModel, emphasis: emphasisLabelModel }, {\r\n defaultText: selectorItem.title\r\n });\r\n enableHoverEmphasis(labelText);\r\n });\r\n };\r\n LegendView.prototype._createItem = function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, decal, selectMode) {\r\n var itemWidth = legendModel.get('itemWidth');\r\n var itemHeight = legendModel.get('itemHeight');\r\n var inactiveColor = legendModel.get('inactiveColor');\r\n var inactiveBorderColor = legendModel.get('inactiveBorderColor');\r\n var symbolKeepAspect = legendModel.get('symbolKeepAspect');\r\n var legendModelItemStyle = legendModel.getModel('itemStyle');\r\n var isSelected = legendModel.isSelected(name);\r\n var itemGroup = new Group$2();\r\n var textStyleModel = itemModel.getModel('textStyle');\r\n var itemIcon = itemModel.get('icon');\r\n var tooltipModel = itemModel.getModel('tooltip');\r\n var legendGlobalTooltipModel = tooltipModel.parentModel;\r\n legendSymbolType = itemIcon || legendSymbolType;\r\n var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, symbolKeepAspect == null ? true : symbolKeepAspect);\r\n itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected));\r\n if (!itemIcon && symbolType\r\n && ((symbolType !== legendSymbolType) || symbolType === 'none')) {\r\n var size = itemHeight * 0.8;\r\n if (symbolType === 'none') {\r\n symbolType = 'circle';\r\n }\r\n var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, symbolKeepAspect == null ? true : symbolKeepAspect);\r\n itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected));\r\n }\r\n var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\r\n var textAlign = itemAlign;\r\n var formatter = legendModel.get('formatter');\r\n var content = name;\r\n if (typeof formatter === 'string' && formatter) {\r\n content = formatter.replace('{name}', name != null ? name : '');\r\n }\r\n else if (typeof formatter === 'function') {\r\n content = formatter(name);\r\n }\r\n itemGroup.add(new ZRText({\r\n style: createTextStyle(textStyleModel, {\r\n text: content,\r\n x: textX,\r\n y: itemHeight / 2,\r\n fill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\r\n align: textAlign,\r\n verticalAlign: 'middle'\r\n })\r\n }));\r\n var hitRect = new Rect({\r\n shape: itemGroup.getBoundingRect(),\r\n invisible: true\r\n });\r\n if (tooltipModel.get('show')) {\r\n var formatterParams = {\r\n componentType: 'legend',\r\n legendIndex: legendModel.componentIndex,\r\n name: name,\r\n $vars: ['name']\r\n };\r\n hitRect.tooltip = extend({\r\n content: name,\r\n formatter: legendGlobalTooltipModel.get('formatter', true)\r\n || function (params) {\r\n return params.name;\r\n },\r\n formatterParams: formatterParams\r\n }, tooltipModel.option);\r\n }\r\n itemGroup.add(hitRect);\r\n itemGroup.eachChild(function (child) {\r\n child.silent = true;\r\n });\r\n hitRect.silent = !selectMode;\r\n this.getContentGroup().add(itemGroup);\r\n enableHoverEmphasis(itemGroup);\r\n itemGroup.__legendDataIndex = dataIndex;\r\n return itemGroup;\r\n };\r\n LegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\r\n var contentGroup = this.getContentGroup();\r\n var selectorGroup = this.getSelectorGroup();\r\n box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\r\n var contentRect = contentGroup.getBoundingRect();\r\n var contentPos = [-contentRect.x, -contentRect.y];\r\n selectorGroup.markRedraw();\r\n contentGroup.markRedraw();\r\n if (selector) {\r\n box('horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\r\n var selectorRect = selectorGroup.getBoundingRect();\r\n var selectorPos = [-selectorRect.x, -selectorRect.y];\r\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\r\n var orientIdx = legendModel.getOrient().index;\r\n var wh = orientIdx === 0 ? 'width' : 'height';\r\n var hw = orientIdx === 0 ? 'height' : 'width';\r\n var yx = orientIdx === 0 ? 'y' : 'x';\r\n if (selectorPosition === 'end') {\r\n selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\r\n }\r\n else {\r\n contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\r\n }\r\n selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\r\n selectorGroup.x = selectorPos[0];\r\n selectorGroup.y = selectorPos[1];\r\n contentGroup.x = contentPos[0];\r\n contentGroup.y = contentPos[1];\r\n var mainRect = { x: 0, y: 0 };\r\n mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\r\n mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\r\n mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\r\n return mainRect;\r\n }\r\n else {\r\n contentGroup.x = contentPos[0];\r\n contentGroup.y = contentPos[1];\r\n return this.group.getBoundingRect();\r\n }\r\n };\r\n LegendView.prototype.remove = function () {\r\n this.getContentGroup().removeAll();\r\n this._isFirstRender = true;\r\n };\r\n LegendView.type = 'legend.plain';\r\n return LegendView;\r\n}(ComponentView));\r\nfunction setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, decal, isSelected) {\r\n var itemStyle;\r\n if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\r\n itemStyle = legendModelItemStyle.getItemStyle();\r\n symbol.style.stroke = borderColor;\r\n symbol.style.decal = decal;\r\n if (!isSelected) {\r\n itemStyle.stroke = inactiveBorderColor;\r\n }\r\n }\r\n else {\r\n itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\r\n }\r\n symbol.setStyle(itemStyle);\r\n return symbol;\r\n}\r\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\r\n dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\r\n api.dispatchAction({\r\n type: 'legendToggleSelect',\r\n name: seriesName != null ? seriesName : dataName\r\n });\r\n dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\r\n}\r\nfunction isUseHoverLayer(api) {\r\n var list = api.getZr().storage.getDisplayList();\r\n var emphasisState;\r\n var i = 0;\r\n var len = list.length;\r\n while (i < len && !(emphasisState = list[i].states.emphasis)) {\r\n i++;\r\n }\r\n return emphasisState && emphasisState.hoverLayer;\r\n}\r\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\r\n if (!isUseHoverLayer(api)) {\r\n api.dispatchAction({\r\n type: 'highlight',\r\n seriesName: seriesName,\r\n name: dataName,\r\n excludeSeriesId: excludeSeriesId\r\n });\r\n }\r\n}\r\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\r\n if (!isUseHoverLayer(api)) {\r\n api.dispatchAction({\r\n type: 'downplay',\r\n seriesName: seriesName,\r\n name: dataName,\r\n excludeSeriesId: excludeSeriesId\r\n });\r\n }\r\n}\r\nComponentView.registerClass(LegendView);\n\nfunction legendFilter(ecModel) {\r\n var legendModels = ecModel.findComponents({\r\n mainType: 'legend'\r\n });\r\n if (legendModels && legendModels.length) {\r\n ecModel.filterSeries(function (series) {\r\n for (var i = 0; i < legendModels.length; i++) {\r\n if (!legendModels[i].isSelected(series.name)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n}\n\nregisterProcessor(PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\r\nComponentModel.registerSubTypeDefaulter('legend', function () {\r\n return 'plain';\r\n});\n\nvar ScrollableLegendModel = (function (_super) {\r\n __extends(ScrollableLegendModel, _super);\r\n function ScrollableLegendModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ScrollableLegendModel.type;\r\n return _this;\r\n }\r\n ScrollableLegendModel.prototype.setScrollDataIndex = function (scrollDataIndex) {\r\n this.option.scrollDataIndex = scrollDataIndex;\r\n };\r\n ScrollableLegendModel.prototype.init = function (option, parentModel, ecModel) {\r\n var inputPositionParams = getLayoutParams(option);\r\n _super.prototype.init.call(this, option, parentModel, ecModel);\r\n mergeAndNormalizeLayoutParams$1(this, option, inputPositionParams);\r\n };\r\n ScrollableLegendModel.prototype.mergeOption = function (option, ecModel) {\r\n _super.prototype.mergeOption.call(this, option, ecModel);\r\n mergeAndNormalizeLayoutParams$1(this, this.option, option);\r\n };\r\n ScrollableLegendModel.type = 'legend.scroll';\r\n ScrollableLegendModel.defaultOption = inheritDefaultOption(LegendModel.defaultOption, {\r\n scrollDataIndex: 0,\r\n pageButtonItemGap: 5,\r\n pageButtonGap: null,\r\n pageButtonPosition: 'end',\r\n pageFormatter: '{current}/{total}',\r\n pageIcons: {\r\n horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\r\n vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\r\n },\r\n pageIconColor: '#2f4554',\r\n pageIconInactiveColor: '#aaa',\r\n pageIconSize: 15,\r\n pageTextStyle: {\r\n color: '#333'\r\n },\r\n animationDurationUpdate: 800\r\n });\r\n return ScrollableLegendModel;\r\n}(LegendModel));\r\nfunction mergeAndNormalizeLayoutParams$1(legendModel, target, raw) {\r\n var orient = legendModel.getOrient();\r\n var ignoreSize = [1, 1];\r\n ignoreSize[orient.index] = 0;\r\n mergeLayoutParam(target, raw, {\r\n type: 'box', ignoreSize: !!ignoreSize\r\n });\r\n}\r\nComponentModel.registerClass(ScrollableLegendModel);\n\nvar Group$3 = Group;\r\nvar WH$1 = ['width', 'height'];\r\nvar XY$1 = ['x', 'y'];\r\nvar ScrollableLegendView = (function (_super) {\r\n __extends(ScrollableLegendView, _super);\r\n function ScrollableLegendView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ScrollableLegendView.type;\r\n _this.newlineDisabled = true;\r\n _this._currentIndex = 0;\r\n return _this;\r\n }\r\n ScrollableLegendView.prototype.init = function () {\r\n _super.prototype.init.call(this);\r\n this.group.add(this._containerGroup = new Group$3());\r\n this._containerGroup.add(this.getContentGroup());\r\n this.group.add(this._controllerGroup = new Group$3());\r\n };\r\n ScrollableLegendView.prototype.resetInner = function () {\r\n _super.prototype.resetInner.call(this);\r\n this._controllerGroup.removeAll();\r\n this._containerGroup.removeClipPath();\r\n this._containerGroup.__rectSize = null;\r\n };\r\n ScrollableLegendView.prototype.renderInner = function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\r\n var self = this;\r\n _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\r\n var controllerGroup = this._controllerGroup;\r\n var pageIconSize = legendModel.get('pageIconSize', true);\r\n var pageIconSizeArr = isArray(pageIconSize)\r\n ? pageIconSize : [pageIconSize, pageIconSize];\r\n createPageButton('pagePrev', 0);\r\n var pageTextStyleModel = legendModel.getModel('pageTextStyle');\r\n controllerGroup.add(new ZRText({\r\n name: 'pageText',\r\n style: {\r\n text: 'xx/xx',\r\n fill: pageTextStyleModel.getTextColor(),\r\n font: pageTextStyleModel.getFont(),\r\n verticalAlign: 'middle',\r\n align: 'center'\r\n },\r\n silent: true\r\n }));\r\n createPageButton('pageNext', 1);\r\n function createPageButton(name, iconIdx) {\r\n var pageDataIndexName = (name + 'DataIndex');\r\n var icon = createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\r\n onclick: bind(self._pageGo, self, pageDataIndexName, legendModel, api)\r\n }, {\r\n x: -pageIconSizeArr[0] / 2,\r\n y: -pageIconSizeArr[1] / 2,\r\n width: pageIconSizeArr[0],\r\n height: pageIconSizeArr[1]\r\n });\r\n icon.name = name;\r\n controllerGroup.add(icon);\r\n }\r\n };\r\n ScrollableLegendView.prototype.layoutInner = function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\r\n var selectorGroup = this.getSelectorGroup();\r\n var orientIdx = legendModel.getOrient().index;\r\n var wh = WH$1[orientIdx];\r\n var xy = XY$1[orientIdx];\r\n var hw = WH$1[1 - orientIdx];\r\n var yx = XY$1[1 - orientIdx];\r\n selector && box('horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\r\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\r\n var selectorRect = selectorGroup.getBoundingRect();\r\n var selectorPos = [-selectorRect.x, -selectorRect.y];\r\n var processMaxSize = clone(maxSize);\r\n selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\r\n var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy);\r\n if (selector) {\r\n if (selectorPosition === 'end') {\r\n selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\r\n }\r\n else {\r\n var offset = selectorRect[wh] + selectorButtonGap;\r\n selectorPos[orientIdx] -= offset;\r\n mainRect[xy] -= offset;\r\n }\r\n mainRect[wh] += selectorRect[wh] + selectorButtonGap;\r\n selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\r\n mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\r\n mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\r\n selectorGroup.x = selectorPos[0];\r\n selectorGroup.y = selectorPos[1];\r\n selectorGroup.markRedraw();\r\n }\r\n return mainRect;\r\n };\r\n ScrollableLegendView.prototype._layoutContentAndController = function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) {\r\n var contentGroup = this.getContentGroup();\r\n var containerGroup = this._containerGroup;\r\n var controllerGroup = this._controllerGroup;\r\n box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\r\n box('horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\r\n var contentRect = contentGroup.getBoundingRect();\r\n var controllerRect = controllerGroup.getBoundingRect();\r\n var showController = this._showController = contentRect[wh] > maxSize[wh];\r\n var contentPos = [-contentRect.x, -contentRect.y];\r\n if (!isFirstRender) {\r\n contentPos[orientIdx] = contentGroup[xy];\r\n }\r\n var containerPos = [0, 0];\r\n var controllerPos = [-controllerRect.x, -controllerRect.y];\r\n var pageButtonGap = retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true));\r\n if (showController) {\r\n var pageButtonPosition = legendModel.get('pageButtonPosition', true);\r\n if (pageButtonPosition === 'end') {\r\n controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\r\n }\r\n else {\r\n containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\r\n }\r\n }\r\n controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\r\n contentGroup.setPosition(contentPos);\r\n containerGroup.setPosition(containerPos);\r\n controllerGroup.setPosition(controllerPos);\r\n var mainRect = { x: 0, y: 0 };\r\n mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\r\n mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]);\r\n mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\r\n containerGroup.__rectSize = maxSize[wh];\r\n if (showController) {\r\n var clipShape = { x: 0, y: 0 };\r\n clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\r\n clipShape[hw] = mainRect[hw];\r\n containerGroup.setClipPath(new Rect({ shape: clipShape }));\r\n containerGroup.__rectSize = clipShape[wh];\r\n }\r\n else {\r\n controllerGroup.eachChild(function (child) {\r\n child.attr({\r\n invisible: true,\r\n silent: true\r\n });\r\n });\r\n }\r\n var pageInfo = this._getPageInfo(legendModel);\r\n pageInfo.pageIndex != null && updateProps(contentGroup, { x: pageInfo.contentPosition[0], y: pageInfo.contentPosition[1] }, showController ? legendModel : null);\r\n this._updatePageInfoView(legendModel, pageInfo);\r\n return mainRect;\r\n };\r\n ScrollableLegendView.prototype._pageGo = function (to, legendModel, api) {\r\n var scrollDataIndex = this._getPageInfo(legendModel)[to];\r\n scrollDataIndex != null && api.dispatchAction({\r\n type: 'legendScroll',\r\n scrollDataIndex: scrollDataIndex,\r\n legendId: legendModel.id\r\n });\r\n };\r\n ScrollableLegendView.prototype._updatePageInfoView = function (legendModel, pageInfo) {\r\n var controllerGroup = this._controllerGroup;\r\n each(['pagePrev', 'pageNext'], function (name) {\r\n var key = (name + 'DataIndex');\r\n var canJump = pageInfo[key] != null;\r\n var icon = controllerGroup.childOfName(name);\r\n if (icon) {\r\n icon.setStyle('fill', canJump\r\n ? legendModel.get('pageIconColor', true)\r\n : legendModel.get('pageIconInactiveColor', true));\r\n icon.cursor = canJump ? 'pointer' : 'default';\r\n }\r\n });\r\n var pageText = controllerGroup.childOfName('pageText');\r\n var pageFormatter = legendModel.get('pageFormatter');\r\n var pageIndex = pageInfo.pageIndex;\r\n var current = pageIndex != null ? pageIndex + 1 : 0;\r\n var total = pageInfo.pageCount;\r\n pageText && pageFormatter && pageText.setStyle('text', isString(pageFormatter)\r\n ? pageFormatter.replace('{current}', current == null ? '' : current + '')\r\n .replace('{total}', total == null ? '' : total + '')\r\n : pageFormatter({ current: current, total: total }));\r\n };\r\n ScrollableLegendView.prototype._getPageInfo = function (legendModel) {\r\n var scrollDataIndex = legendModel.get('scrollDataIndex', true);\r\n var contentGroup = this.getContentGroup();\r\n var containerRectSize = this._containerGroup.__rectSize;\r\n var orientIdx = legendModel.getOrient().index;\r\n var wh = WH$1[orientIdx];\r\n var xy = XY$1[orientIdx];\r\n var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\r\n var children = contentGroup.children();\r\n var targetItem = children[targetItemIndex];\r\n var itemCount = children.length;\r\n var pCount = !itemCount ? 0 : 1;\r\n var result = {\r\n contentPosition: [contentGroup.x, contentGroup.y],\r\n pageCount: pCount,\r\n pageIndex: pCount - 1,\r\n pagePrevDataIndex: null,\r\n pageNextDataIndex: null\r\n };\r\n if (!targetItem) {\r\n return result;\r\n }\r\n var targetItemInfo = getItemInfo(targetItem);\r\n result.contentPosition[orientIdx] = -targetItemInfo.s;\r\n for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\r\n currItemInfo = getItemInfo(children[i]);\r\n if ((!currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize)\r\n || (currItemInfo && !intersect(currItemInfo, winStartItemInfo.s))) {\r\n if (winEndItemInfo.i > winStartItemInfo.i) {\r\n winStartItemInfo = winEndItemInfo;\r\n }\r\n else {\r\n winStartItemInfo = currItemInfo;\r\n }\r\n if (winStartItemInfo) {\r\n if (result.pageNextDataIndex == null) {\r\n result.pageNextDataIndex = winStartItemInfo.i;\r\n }\r\n ++result.pageCount;\r\n }\r\n }\r\n winEndItemInfo = currItemInfo;\r\n }\r\n for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\r\n currItemInfo = getItemInfo(children[i]);\r\n if ((!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s))\r\n && winStartItemInfo.i < winEndItemInfo.i) {\r\n winEndItemInfo = winStartItemInfo;\r\n if (result.pagePrevDataIndex == null) {\r\n result.pagePrevDataIndex = winStartItemInfo.i;\r\n }\r\n ++result.pageCount;\r\n ++result.pageIndex;\r\n }\r\n winStartItemInfo = currItemInfo;\r\n }\r\n return result;\r\n function getItemInfo(el) {\r\n if (el) {\r\n var itemRect = el.getBoundingRect();\r\n var start = itemRect[xy] + el[xy];\r\n return {\r\n s: start,\r\n e: start + itemRect[wh],\r\n i: el.__legendDataIndex\r\n };\r\n }\r\n }\r\n function intersect(itemInfo, winStart) {\r\n return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\r\n }\r\n };\r\n ScrollableLegendView.prototype._findTargetItemIndex = function (targetDataIndex) {\r\n if (!this._showController) {\r\n return 0;\r\n }\r\n var index;\r\n var contentGroup = this.getContentGroup();\r\n var defaultIndex;\r\n contentGroup.eachChild(function (child, idx) {\r\n var legendDataIdx = child.__legendDataIndex;\r\n if (defaultIndex == null && legendDataIdx != null) {\r\n defaultIndex = idx;\r\n }\r\n if (legendDataIdx === targetDataIndex) {\r\n index = idx;\r\n }\r\n });\r\n return index != null ? index : defaultIndex;\r\n };\r\n ScrollableLegendView.type = 'legend.scroll';\r\n return ScrollableLegendView;\r\n}(LegendView));\r\nComponentView.registerClass(ScrollableLegendView);\n\nregisterAction('legendScroll', 'legendscroll', function (payload, ecModel) {\r\n var scrollDataIndex = payload.scrollDataIndex;\r\n scrollDataIndex != null && ecModel.eachComponent({ mainType: 'legend', subType: 'scroll', query: payload }, function (legendModel) {\r\n legendModel.setScrollDataIndex(scrollDataIndex);\r\n });\r\n});\n\nvar SliderZoomModel = (function (_super) {\r\n __extends(SliderZoomModel, _super);\r\n function SliderZoomModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SliderZoomModel.type;\r\n return _this;\r\n }\r\n SliderZoomModel.type = 'dataZoom.slider';\r\n SliderZoomModel.layoutMode = 'box';\r\n SliderZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {\r\n show: true,\r\n right: 'ph',\r\n top: 'ph',\r\n width: 'ph',\r\n height: 'ph',\r\n left: null,\r\n bottom: null,\r\n borderColor: '#d2dbee',\r\n borderRadius: 3,\r\n backgroundColor: 'rgba(47,69,84,0)',\r\n dataBackground: {\r\n lineStyle: {\r\n color: '#d2dbee',\r\n width: 0.5\r\n },\r\n areaStyle: {\r\n color: '#d2dbee',\r\n opacity: 0.2\r\n }\r\n },\r\n selectedDataBackground: {\r\n lineStyle: {\r\n color: '#8fb0f7',\r\n width: 0.5\r\n },\r\n areaStyle: {\r\n color: '#8fb0f7',\r\n opacity: 0.2\r\n }\r\n },\r\n fillerColor: 'rgba(135,175,274,0.2)',\r\n handleIcon: 'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z',\r\n handleSize: '100%',\r\n handleStyle: {\r\n color: '#fff',\r\n borderColor: '#ACB8D1'\r\n },\r\n moveHandleSize: 7,\r\n moveHandleIcon: 'path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z',\r\n moveHandleStyle: {\r\n color: '#D2DBEE',\r\n opacity: 0.7\r\n },\r\n showDetail: true,\r\n showDataShadow: 'auto',\r\n realtime: true,\r\n zoomLock: false,\r\n textStyle: {\r\n color: '#6E7079'\r\n },\r\n brushSelect: true,\r\n brushStyle: {\r\n color: 'rgba(135,175,274,0.15)'\r\n },\r\n emphasis: {\r\n handleStyle: {\r\n borderColor: '#8FB0F7'\r\n },\r\n moveHandleStyle: {\r\n color: '#8FB0F7'\r\n }\r\n }\r\n });\r\n return SliderZoomModel;\r\n}(DataZoomModel));\r\nComponentModel.registerClass(SliderZoomModel);\n\nvar Rect$2 = Rect;\r\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\r\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\r\nvar DEFAULT_FILLER_SIZE = 30;\r\nvar DEFAULT_MOVE_HANDLE_SIZE = 7;\r\nvar HORIZONTAL = 'horizontal';\r\nvar VERTICAL = 'vertical';\r\nvar LABEL_GAP = 5;\r\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\r\nvar REALTIME_ANIMATION_CONFIG = {\r\n easing: 'cubicOut',\r\n duration: 100\r\n};\r\nvar SliderZoomView = (function (_super) {\r\n __extends(SliderZoomView, _super);\r\n function SliderZoomView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = SliderZoomView.type;\r\n _this._displayables = {};\r\n return _this;\r\n }\r\n SliderZoomView.prototype.init = function (ecModel, api) {\r\n this.api = api;\r\n this._onBrush = bind(this._onBrush, this);\r\n this._onBrushEnd = bind(this._onBrushEnd, this);\r\n };\r\n SliderZoomView.prototype.render = function (dataZoomModel, ecModel, api, payload) {\r\n _super.prototype.render.apply(this, arguments);\r\n createOrUpdate(this, '_dispatchZoomAction', dataZoomModel.get('throttle'), 'fixRate');\r\n this._orient = dataZoomModel.getOrient();\r\n if (dataZoomModel.get('show') === false) {\r\n this.group.removeAll();\r\n return;\r\n }\r\n if (dataZoomModel.noTarget()) {\r\n this._clear();\r\n this.group.removeAll();\r\n return;\r\n }\r\n if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\r\n this._buildView();\r\n }\r\n this._updateView();\r\n };\r\n SliderZoomView.prototype.dispose = function () {\r\n this._clear();\r\n _super.prototype.dispose.apply(this, arguments);\r\n };\r\n SliderZoomView.prototype._clear = function () {\r\n clear(this, '_dispatchZoomAction');\r\n var zr = this.api.getZr();\r\n zr.off('mousemove', this._onBrush);\r\n zr.off('mouseup', this._onBrushEnd);\r\n };\r\n SliderZoomView.prototype._buildView = function () {\r\n var thisGroup = this.group;\r\n thisGroup.removeAll();\r\n this._brushing = false;\r\n this._displayables.brushRect = null;\r\n this._resetLocation();\r\n this._resetInterval();\r\n var barGroup = this._displayables.sliderGroup = new Group();\r\n this._renderBackground();\r\n this._renderHandle();\r\n this._renderDataShadow();\r\n thisGroup.add(barGroup);\r\n this._positionGroup();\r\n };\r\n SliderZoomView.prototype._resetLocation = function () {\r\n var dataZoomModel = this.dataZoomModel;\r\n var api = this.api;\r\n var showMoveHandle = dataZoomModel.get('brushSelect');\r\n var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0;\r\n var coordRect = this._findCoordRect();\r\n var ecSize = { width: api.getWidth(), height: api.getHeight() };\r\n var positionInfo = this._orient === HORIZONTAL\r\n ? {\r\n right: ecSize.width - coordRect.x - coordRect.width,\r\n top: (ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize),\r\n width: coordRect.width,\r\n height: DEFAULT_FILLER_SIZE\r\n }\r\n : {\r\n right: DEFAULT_LOCATION_EDGE_GAP,\r\n top: coordRect.y,\r\n width: DEFAULT_FILLER_SIZE,\r\n height: coordRect.height\r\n };\r\n var layoutParams = getLayoutParams(dataZoomModel.option);\r\n each(['right', 'top', 'width', 'height'], function (name) {\r\n if (layoutParams[name] === 'ph') {\r\n layoutParams[name] = positionInfo[name];\r\n }\r\n });\r\n var layoutRect = getLayoutRect(layoutParams, ecSize);\r\n this._location = { x: layoutRect.x, y: layoutRect.y };\r\n this._size = [layoutRect.width, layoutRect.height];\r\n this._orient === VERTICAL && this._size.reverse();\r\n };\r\n SliderZoomView.prototype._positionGroup = function () {\r\n var thisGroup = this.group;\r\n var location = this._location;\r\n var orient = this._orient;\r\n var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\r\n var inverse = targetAxisModel && targetAxisModel.get('inverse');\r\n var sliderGroup = this._displayables.sliderGroup;\r\n var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse;\r\n sliderGroup.attr((orient === HORIZONTAL && !inverse)\r\n ? { scaleY: otherAxisInverse ? 1 : -1, scaleX: 1 }\r\n : (orient === HORIZONTAL && inverse)\r\n ? { scaleY: otherAxisInverse ? 1 : -1, scaleX: -1 }\r\n : (orient === VERTICAL && !inverse)\r\n ? { scaleY: otherAxisInverse ? -1 : 1, scaleX: 1, rotation: Math.PI / 2 }\r\n : { scaleY: otherAxisInverse ? -1 : 1, scaleX: -1, rotation: Math.PI / 2 });\r\n var rect = thisGroup.getBoundingRect([sliderGroup]);\r\n thisGroup.x = location.x - rect.x;\r\n thisGroup.y = location.y - rect.y;\r\n thisGroup.markRedraw();\r\n };\r\n SliderZoomView.prototype._getViewExtent = function () {\r\n return [0, this._size[0]];\r\n };\r\n SliderZoomView.prototype._renderBackground = function () {\r\n var dataZoomModel = this.dataZoomModel;\r\n var size = this._size;\r\n var barGroup = this._displayables.sliderGroup;\r\n var brushSelect = dataZoomModel.get('brushSelect');\r\n barGroup.add(new Rect$2({\r\n silent: true,\r\n shape: {\r\n x: 0, y: 0, width: size[0], height: size[1]\r\n },\r\n style: {\r\n fill: dataZoomModel.get('backgroundColor')\r\n },\r\n z2: -40\r\n }));\r\n var clickPanel = new Rect$2({\r\n shape: {\r\n x: 0, y: 0, width: size[0], height: size[1]\r\n },\r\n style: {\r\n fill: 'transparent'\r\n },\r\n z2: 0,\r\n onclick: bind(this._onClickPanel, this)\r\n });\r\n var zr = this.api.getZr();\r\n if (brushSelect) {\r\n clickPanel.on('mousedown', this._onBrushStart, this);\r\n clickPanel.cursor = 'crosshair';\r\n zr.on('mousemove', this._onBrush);\r\n zr.on('mouseup', this._onBrushEnd);\r\n }\r\n else {\r\n zr.off('mousemove', this._onBrush);\r\n zr.off('mouseup', this._onBrushEnd);\r\n }\r\n barGroup.add(clickPanel);\r\n };\r\n SliderZoomView.prototype._renderDataShadow = function () {\r\n var info = this._dataShadowInfo = this._prepareDataShadowInfo();\r\n this._displayables.dataShadowSegs = [];\r\n if (!info) {\r\n return;\r\n }\r\n var size = this._size;\r\n var seriesModel = info.series;\r\n var data = seriesModel.getRawData();\r\n var otherDim = seriesModel.getShadowDim\r\n ? seriesModel.getShadowDim()\r\n : info.otherDim;\r\n if (otherDim == null) {\r\n return;\r\n }\r\n var otherDataExtent = data.getDataExtent(otherDim);\r\n var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3;\r\n otherDataExtent = [\r\n otherDataExtent[0] - otherOffset,\r\n otherDataExtent[1] + otherOffset\r\n ];\r\n var otherShadowExtent = [0, size[1]];\r\n var thisShadowExtent = [0, size[0]];\r\n var areaPoints = [[size[0], 0], [0, 0]];\r\n var linePoints = [];\r\n var step = thisShadowExtent[1] / (data.count() - 1);\r\n var thisCoord = 0;\r\n var stride = Math.round(data.count() / size[0]);\r\n var lastIsEmpty;\r\n data.each([otherDim], function (value, index) {\r\n if (stride > 0 && (index % stride)) {\r\n thisCoord += step;\r\n return;\r\n }\r\n var isEmpty = value == null || isNaN(value) || value === '';\r\n var otherCoord = isEmpty\r\n ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true);\r\n if (isEmpty && !lastIsEmpty && index) {\r\n areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]);\r\n linePoints.push([linePoints[linePoints.length - 1][0], 0]);\r\n }\r\n else if (!isEmpty && lastIsEmpty) {\r\n areaPoints.push([thisCoord, 0]);\r\n linePoints.push([thisCoord, 0]);\r\n }\r\n areaPoints.push([thisCoord, otherCoord]);\r\n linePoints.push([thisCoord, otherCoord]);\r\n thisCoord += step;\r\n lastIsEmpty = isEmpty;\r\n });\r\n var dataZoomModel = this.dataZoomModel;\r\n function createDataShadowGroup(isSelectedArea) {\r\n var model = dataZoomModel.getModel(isSelectedArea ? 'selectedDataBackground' : 'dataBackground');\r\n var group = new Group();\r\n var polygon = new Polygon({\r\n shape: { points: areaPoints },\r\n segmentIgnoreThreshold: 1,\r\n style: model.getModel('areaStyle').getAreaStyle(),\r\n silent: true,\r\n z2: -20\r\n });\r\n var polyline = new Polyline({\r\n shape: { points: linePoints },\r\n segmentIgnoreThreshold: 1,\r\n style: model.getModel('lineStyle').getLineStyle(),\r\n silent: true,\r\n z2: -19\r\n });\r\n group.add(polygon);\r\n group.add(polyline);\r\n return group;\r\n }\r\n for (var i = 0; i < 3; i++) {\r\n var group = createDataShadowGroup(i === 1);\r\n this._displayables.sliderGroup.add(group);\r\n this._displayables.dataShadowSegs.push(group);\r\n }\r\n };\r\n SliderZoomView.prototype._prepareDataShadowInfo = function () {\r\n var dataZoomModel = this.dataZoomModel;\r\n var showDataShadow = dataZoomModel.get('showDataShadow');\r\n if (showDataShadow === false) {\r\n return;\r\n }\r\n var result;\r\n var ecModel = this.ecModel;\r\n dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {\r\n var seriesModels = dataZoomModel\r\n .getAxisProxy(axisDim, axisIndex)\r\n .getTargetSeriesModels();\r\n each(seriesModels, function (seriesModel) {\r\n if (result) {\r\n return;\r\n }\r\n if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\r\n return;\r\n }\r\n var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;\r\n var otherDim = getOtherDim(axisDim);\r\n var otherAxisInverse;\r\n var coordSys = seriesModel.coordinateSystem;\r\n if (otherDim != null && coordSys.getOtherAxis) {\r\n otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\r\n }\r\n otherDim = seriesModel.getData().mapDimension(otherDim);\r\n result = {\r\n thisAxis: thisAxis,\r\n series: seriesModel,\r\n thisDim: axisDim,\r\n otherDim: otherDim,\r\n otherAxisInverse: otherAxisInverse\r\n };\r\n }, this);\r\n }, this);\r\n return result;\r\n };\r\n SliderZoomView.prototype._renderHandle = function () {\r\n var thisGroup = this.group;\r\n var displayables = this._displayables;\r\n var handles = displayables.handles = [null, null];\r\n var handleLabels = displayables.handleLabels = [null, null];\r\n var sliderGroup = this._displayables.sliderGroup;\r\n var size = this._size;\r\n var dataZoomModel = this.dataZoomModel;\r\n var api = this.api;\r\n var borderRadius = dataZoomModel.get('borderRadius') || 0;\r\n var brushSelect = dataZoomModel.get('brushSelect');\r\n var filler = displayables.filler = new Rect$2({\r\n silent: brushSelect,\r\n style: {\r\n fill: dataZoomModel.get('fillerColor')\r\n },\r\n textConfig: {\r\n position: 'inside'\r\n }\r\n });\r\n sliderGroup.add(filler);\r\n sliderGroup.add(new Rect$2({\r\n silent: true,\r\n subPixelOptimize: true,\r\n shape: {\r\n x: 0,\r\n y: 0,\r\n width: size[0],\r\n height: size[1],\r\n r: borderRadius\r\n },\r\n style: {\r\n stroke: dataZoomModel.get('dataBackgroundColor')\r\n || dataZoomModel.get('borderColor'),\r\n lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\r\n fill: 'rgba(0,0,0,0)'\r\n }\r\n }));\r\n each([0, 1], function (handleIndex) {\r\n var iconStr = dataZoomModel.get('handleIcon');\r\n if (!symbolBuildProxies[iconStr] && iconStr.indexOf('path://') < 0) {\r\n iconStr = 'path://' + iconStr;\r\n if (__DEV__) {\r\n deprecateLog('handleIcon now needs \\'path://\\' prefix when using a path string');\r\n }\r\n }\r\n var path = createSymbol(iconStr, -1, 0, 2, 2, null, true);\r\n path.attr({\r\n cursor: getCursor(this._orient),\r\n draggable: true,\r\n drift: bind(this._onDragMove, this, handleIndex),\r\n ondragend: bind(this._onDragEnd, this),\r\n onmouseover: bind(this._showDataInfo, this, true),\r\n onmouseout: bind(this._showDataInfo, this, false),\r\n z2: 5\r\n });\r\n var bRect = path.getBoundingRect();\r\n var handleSize = dataZoomModel.get('handleSize');\r\n this._handleHeight = parsePercent$2(handleSize, this._size[1]);\r\n this._handleWidth = bRect.width / bRect.height * this._handleHeight;\r\n path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\r\n path.style.strokeNoScale = true;\r\n path.rectHover = true;\r\n path.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\r\n enableHoverEmphasis(path);\r\n var handleColor = dataZoomModel.get('handleColor');\r\n if (handleColor != null) {\r\n path.style.fill = handleColor;\r\n }\r\n sliderGroup.add(handles[handleIndex] = path);\r\n var textStyleModel = dataZoomModel.getModel('textStyle');\r\n thisGroup.add(handleLabels[handleIndex] = new ZRText({\r\n silent: true,\r\n invisible: true,\r\n style: {\r\n x: 0, y: 0, text: '',\r\n verticalAlign: 'middle',\r\n align: 'center',\r\n fill: textStyleModel.getTextColor(),\r\n font: textStyleModel.getFont()\r\n },\r\n z2: 10\r\n }));\r\n }, this);\r\n var actualMoveZone = filler;\r\n if (brushSelect) {\r\n var moveHandleHeight = parsePercent$2(dataZoomModel.get('moveHandleSize'), size[1]);\r\n var moveHandle_1 = displayables.moveHandle = new Rect({\r\n style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(),\r\n silent: true,\r\n shape: {\r\n r: [0, 0, 2, 2],\r\n y: size[1] - 0.5,\r\n height: moveHandleHeight\r\n }\r\n });\r\n var iconSize = moveHandleHeight * 0.8;\r\n var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get('moveHandleIcon'), -iconSize / 2, -iconSize / 2, iconSize, iconSize, '#fff', true);\r\n moveHandleIcon.silent = true;\r\n moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;\r\n moveHandle_1.ensureState('emphasis').style = dataZoomModel.getModel(['emphasis', 'moveHandleStyle']).getItemStyle();\r\n var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));\r\n actualMoveZone = displayables.moveZone = new Rect({\r\n invisible: true,\r\n shape: {\r\n y: size[1] - moveZoneExpandSize,\r\n height: moveHandleHeight + moveZoneExpandSize\r\n }\r\n });\r\n actualMoveZone.on('mouseover', function () {\r\n api.enterEmphasis(moveHandle_1);\r\n })\r\n .on('mouseout', function () {\r\n api.leaveEmphasis(moveHandle_1);\r\n });\r\n sliderGroup.add(moveHandle_1);\r\n sliderGroup.add(moveHandleIcon);\r\n sliderGroup.add(actualMoveZone);\r\n }\r\n actualMoveZone.attr({\r\n draggable: true,\r\n cursor: getCursor(this._orient),\r\n drift: bind(this._onDragMove, this, 'all'),\r\n ondragstart: bind(this._showDataInfo, this, true),\r\n ondragend: bind(this._onDragEnd, this),\r\n onmouseover: bind(this._showDataInfo, this, true),\r\n onmouseout: bind(this._showDataInfo, this, false)\r\n });\r\n };\r\n SliderZoomView.prototype._resetInterval = function () {\r\n var range = this._range = this.dataZoomModel.getPercentRange();\r\n var viewExtent = this._getViewExtent();\r\n this._handleEnds = [\r\n linearMap(range[0], [0, 100], viewExtent, true),\r\n linearMap(range[1], [0, 100], viewExtent, true)\r\n ];\r\n };\r\n SliderZoomView.prototype._updateInterval = function (handleIndex, delta) {\r\n var dataZoomModel = this.dataZoomModel;\r\n var handleEnds = this._handleEnds;\r\n var viewExtend = this._getViewExtent();\r\n var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\r\n var percentExtent = [0, 100];\r\n sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null\r\n ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null\r\n ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\r\n var lastRange = this._range;\r\n var range = this._range = asc([\r\n linearMap(handleEnds[0], viewExtend, percentExtent, true),\r\n linearMap(handleEnds[1], viewExtend, percentExtent, true)\r\n ]);\r\n return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\r\n };\r\n SliderZoomView.prototype._updateView = function (nonRealtime) {\r\n var displaybles = this._displayables;\r\n var handleEnds = this._handleEnds;\r\n var handleInterval = asc(handleEnds.slice());\r\n var size = this._size;\r\n each([0, 1], function (handleIndex) {\r\n var handle = displaybles.handles[handleIndex];\r\n var handleHeight = this._handleHeight;\r\n handle.attr({\r\n scaleX: handleHeight / 2,\r\n scaleY: handleHeight / 2,\r\n x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),\r\n y: size[1] / 2 - handleHeight / 2\r\n });\r\n }, this);\r\n displaybles.filler.setShape({\r\n x: handleInterval[0],\r\n y: 0,\r\n width: handleInterval[1] - handleInterval[0],\r\n height: size[1]\r\n });\r\n var viewExtent = {\r\n x: handleInterval[0],\r\n width: handleInterval[1] - handleInterval[0]\r\n };\r\n if (displaybles.moveHandle) {\r\n displaybles.moveHandle.setShape(viewExtent);\r\n displaybles.moveZone.setShape(viewExtent);\r\n displaybles.moveZone.getBoundingRect();\r\n displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr('x', viewExtent.x + viewExtent.width / 2);\r\n }\r\n var dataShadowSegs = displaybles.dataShadowSegs;\r\n var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];\r\n for (var i = 0; i < dataShadowSegs.length; i++) {\r\n var segGroup = dataShadowSegs[i];\r\n var clipPath = segGroup.getClipPath();\r\n if (!clipPath) {\r\n clipPath = new Rect();\r\n segGroup.setClipPath(clipPath);\r\n }\r\n clipPath.setShape({\r\n x: segIntervals[i],\r\n y: 0,\r\n width: segIntervals[i + 1] - segIntervals[i],\r\n height: size[1]\r\n });\r\n }\r\n this._updateDataInfo(nonRealtime);\r\n };\r\n SliderZoomView.prototype._updateDataInfo = function (nonRealtime) {\r\n var dataZoomModel = this.dataZoomModel;\r\n var displaybles = this._displayables;\r\n var handleLabels = displaybles.handleLabels;\r\n var orient = this._orient;\r\n var labelTexts = ['', ''];\r\n if (dataZoomModel.get('showDetail')) {\r\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\r\n if (axisProxy) {\r\n var axis = axisProxy.getAxisModel().axis;\r\n var range = this._range;\r\n var dataInterval = nonRealtime\r\n ? axisProxy.calculateDataWindow({\r\n start: range[0], end: range[1]\r\n }).valueWindow\r\n : axisProxy.getDataValueWindow();\r\n labelTexts = [\r\n this._formatLabel(dataInterval[0], axis),\r\n this._formatLabel(dataInterval[1], axis)\r\n ];\r\n }\r\n }\r\n var orderedHandleEnds = asc(this._handleEnds.slice());\r\n setLabel.call(this, 0);\r\n setLabel.call(this, 1);\r\n function setLabel(handleIndex) {\r\n var barTransform = getTransform(displaybles.handles[handleIndex].parent, this.group);\r\n var direction = transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\r\n var offset = this._handleWidth / 2 + LABEL_GAP;\r\n var textPoint = applyTransform$1([\r\n orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset),\r\n this._size[1] / 2\r\n ], barTransform);\r\n handleLabels[handleIndex].setStyle({\r\n x: textPoint[0],\r\n y: textPoint[1],\r\n verticalAlign: orient === HORIZONTAL ? 'middle' : direction,\r\n align: orient === HORIZONTAL ? direction : 'center',\r\n text: labelTexts[handleIndex]\r\n });\r\n }\r\n };\r\n SliderZoomView.prototype._formatLabel = function (value, axis) {\r\n var dataZoomModel = this.dataZoomModel;\r\n var labelFormatter = dataZoomModel.get('labelFormatter');\r\n var labelPrecision = dataZoomModel.get('labelPrecision');\r\n if (labelPrecision == null || labelPrecision === 'auto') {\r\n labelPrecision = axis.getPixelPrecision();\r\n }\r\n var valueStr = (value == null || isNaN(value))\r\n ? ''\r\n : (axis.type === 'category' || axis.type === 'time')\r\n ? axis.scale.getLabel({\r\n value: Math.round(value)\r\n })\r\n : value.toFixed(Math.min(labelPrecision, 20));\r\n return isFunction(labelFormatter)\r\n ? labelFormatter(value, valueStr)\r\n : isString(labelFormatter)\r\n ? labelFormatter.replace('{value}', valueStr)\r\n : valueStr;\r\n };\r\n SliderZoomView.prototype._showDataInfo = function (showOrHide) {\r\n showOrHide = this._dragging || showOrHide;\r\n var displayables = this._displayables;\r\n var handleLabels = displayables.handleLabels;\r\n handleLabels[0].attr('invisible', !showOrHide);\r\n handleLabels[1].attr('invisible', !showOrHide);\r\n displayables.moveHandle\r\n && this.api[showOrHide ? 'enterEmphasis' : 'leaveEmphasis'](displayables.moveHandle, 1);\r\n };\r\n SliderZoomView.prototype._onDragMove = function (handleIndex, dx, dy, event) {\r\n this._dragging = true;\r\n stop(event.event);\r\n var barTransform = this._displayables.sliderGroup.getLocalTransform();\r\n var vertex = applyTransform$1([dx, dy], barTransform, true);\r\n var changed = this._updateInterval(handleIndex, vertex[0]);\r\n var realtime = this.dataZoomModel.get('realtime');\r\n this._updateView(!realtime);\r\n changed && realtime && this._dispatchZoomAction(true);\r\n };\r\n SliderZoomView.prototype._onDragEnd = function () {\r\n this._dragging = false;\r\n this._showDataInfo(false);\r\n var realtime = this.dataZoomModel.get('realtime');\r\n !realtime && this._dispatchZoomAction(false);\r\n };\r\n SliderZoomView.prototype._onClickPanel = function (e) {\r\n var size = this._size;\r\n var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e.offsetX, e.offsetY);\r\n if (localPoint[0] < 0 || localPoint[0] > size[0]\r\n || localPoint[1] < 0 || localPoint[1] > size[1]) {\r\n return;\r\n }\r\n var handleEnds = this._handleEnds;\r\n var center = (handleEnds[0] + handleEnds[1]) / 2;\r\n var changed = this._updateInterval('all', localPoint[0] - center);\r\n this._updateView();\r\n changed && this._dispatchZoomAction(false);\r\n };\r\n SliderZoomView.prototype._onBrushStart = function (e) {\r\n var x = e.offsetX;\r\n var y = e.offsetY;\r\n this._brushStart = new Point(x, y);\r\n this._brushing = true;\r\n this._brushStartTime = +new Date();\r\n };\r\n SliderZoomView.prototype._onBrushEnd = function (e) {\r\n if (!this._brushing) {\r\n return;\r\n }\r\n var brushRect = this._displayables.brushRect;\r\n this._brushing = false;\r\n if (!brushRect) {\r\n return;\r\n }\r\n brushRect.attr('ignore', true);\r\n var brushShape = brushRect.shape;\r\n var brushEndTime = +new Date();\r\n if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {\r\n return;\r\n }\r\n var viewExtend = this._getViewExtent();\r\n var percentExtent = [0, 100];\r\n this._range = asc([\r\n linearMap(brushShape.x, viewExtend, percentExtent, true),\r\n linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)\r\n ]);\r\n this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];\r\n this._updateView();\r\n this._dispatchZoomAction(false);\r\n };\r\n SliderZoomView.prototype._onBrush = function (e) {\r\n if (this._brushing) {\r\n stop(e.event);\r\n this._updateBrushRect(e.offsetX, e.offsetY);\r\n }\r\n };\r\n SliderZoomView.prototype._updateBrushRect = function (mouseX, mouseY) {\r\n var displayables = this._displayables;\r\n var dataZoomModel = this.dataZoomModel;\r\n var brushRect = displayables.brushRect;\r\n if (!brushRect) {\r\n brushRect = displayables.brushRect = new Rect$2({\r\n silent: true,\r\n style: dataZoomModel.getModel('brushStyle').getItemStyle()\r\n });\r\n displayables.sliderGroup.add(brushRect);\r\n }\r\n brushRect.attr('ignore', false);\r\n var brushStart = this._brushStart;\r\n var sliderGroup = this._displayables.sliderGroup;\r\n var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);\r\n var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);\r\n var size = this._size;\r\n endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);\r\n brushRect.setShape({\r\n x: startPoint[0], y: 0,\r\n width: endPoint[0] - startPoint[0], height: size[1]\r\n });\r\n };\r\n SliderZoomView.prototype._dispatchZoomAction = function (realtime) {\r\n var range = this._range;\r\n this.api.dispatchAction({\r\n type: 'dataZoom',\r\n from: this.uid,\r\n dataZoomId: this.dataZoomModel.id,\r\n animation: realtime ? REALTIME_ANIMATION_CONFIG : null,\r\n start: range[0],\r\n end: range[1]\r\n });\r\n };\r\n SliderZoomView.prototype._findCoordRect = function () {\r\n var rect;\r\n var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;\r\n if (!rect && coordSysInfoList.length) {\r\n var coordSys = coordSysInfoList[0].model.coordinateSystem;\r\n rect = coordSys.getRect && coordSys.getRect();\r\n }\r\n if (!rect) {\r\n var width = this.api.getWidth();\r\n var height = this.api.getHeight();\r\n rect = {\r\n x: width * 0.2,\r\n y: height * 0.2,\r\n width: width * 0.6,\r\n height: height * 0.6\r\n };\r\n }\r\n return rect;\r\n };\r\n SliderZoomView.type = 'dataZoom.slider';\r\n return SliderZoomView;\r\n}(DataZoomView));\r\nfunction getOtherDim(thisDim) {\r\n var map = { x: 'y', y: 'x', radius: 'angle', angle: 'radius' };\r\n return map[thisDim];\r\n}\r\nfunction getCursor(orient) {\r\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\r\n}\r\nComponentView.registerClass(SliderZoomView);\n\nvar InsideZoomModel = (function (_super) {\r\n __extends(InsideZoomModel, _super);\r\n function InsideZoomModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = InsideZoomModel.type;\r\n return _this;\r\n }\r\n InsideZoomModel.type = 'dataZoom.inside';\r\n InsideZoomModel.defaultOption = inheritDefaultOption(DataZoomModel.defaultOption, {\r\n disabled: false,\r\n zoomLock: false,\r\n zoomOnMouseWheel: true,\r\n moveOnMouseMove: true,\r\n moveOnMouseWheel: false,\r\n preventDefaultMouseMove: true\r\n });\r\n return InsideZoomModel;\r\n}(DataZoomModel));\r\nComponentModel.registerClass(InsideZoomModel);\n\nvar inner$m = makeInner();\r\nregisterProcessor(PRIORITY.PROCESSOR.FILTER, function (ecModel, api) {\r\n var apiInner = inner$m(api);\r\n var coordSysRecordMap = apiInner.coordSysRecordMap\r\n || (apiInner.coordSysRecordMap = createHashMap());\r\n coordSysRecordMap.each(function (coordSysRecord) {\r\n coordSysRecord.dataZoomInfoMap = null;\r\n });\r\n ecModel.eachComponent({ mainType: 'dataZoom', subType: 'inside' }, function (dataZoomModel) {\r\n var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel);\r\n each(dzReferCoordSysWrap.infoList, function (dzCoordSysInfo) {\r\n var coordSysUid = dzCoordSysInfo.model.uid;\r\n var coordSysRecord = coordSysRecordMap.get(coordSysUid)\r\n || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model));\r\n var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap\r\n || (coordSysRecord.dataZoomInfoMap = createHashMap());\r\n dataZoomInfoMap.set(dataZoomModel.uid, {\r\n dzReferCoordSysInfo: dzCoordSysInfo,\r\n model: dataZoomModel,\r\n getRange: null\r\n });\r\n });\r\n });\r\n coordSysRecordMap.each(function (coordSysRecord) {\r\n var controller = coordSysRecord.controller;\r\n var firstDzInfo;\r\n var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;\r\n if (dataZoomInfoMap) {\r\n var firstDzKey = dataZoomInfoMap.keys()[0];\r\n if (firstDzKey != null) {\r\n firstDzInfo = dataZoomInfoMap.get(firstDzKey);\r\n }\r\n }\r\n if (!firstDzInfo) {\r\n disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);\r\n return;\r\n }\r\n var controllerParams = mergeControllerParams(dataZoomInfoMap);\r\n controller.enable(controllerParams.controlType, controllerParams.opt);\r\n controller.setPointerChecker(coordSysRecord.containsPoint);\r\n createOrUpdate(coordSysRecord, 'dispatchAction', firstDzInfo.model.get('throttle', true), 'fixRate');\r\n });\r\n});\r\nfunction setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) {\r\n inner$m(api).coordSysRecordMap.each(function (coordSysRecord) {\r\n var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid);\r\n if (dzInfo) {\r\n dzInfo.getRange = getRange;\r\n }\r\n });\r\n}\r\nfunction disposeCoordSysRecordIfNeeded(api, dataZoomModel) {\r\n var coordSysRecordMap = inner$m(api).coordSysRecordMap;\r\n var coordSysKeyArr = coordSysRecordMap.keys();\r\n for (var i = 0; i < coordSysKeyArr.length; i++) {\r\n var coordSysKey = coordSysKeyArr[i];\r\n var coordSysRecord = coordSysRecordMap.get(coordSysKey);\r\n var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;\r\n if (dataZoomInfoMap) {\r\n var dzUid = dataZoomModel.uid;\r\n var dzInfo = dataZoomInfoMap.get(dzUid);\r\n if (dzInfo) {\r\n dataZoomInfoMap.removeKey(dzUid);\r\n if (!dataZoomInfoMap.keys().length) {\r\n disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) {\r\n if (coordSysRecord) {\r\n coordSysRecordMap.removeKey(coordSysRecord.model.uid);\r\n var controller = coordSysRecord.controller;\r\n controller && controller.dispose();\r\n }\r\n}\r\nfunction createCoordSysRecord(api, coordSysModel) {\r\n var coordSysRecord = {\r\n model: coordSysModel,\r\n containsPoint: curry(containsPoint, coordSysModel),\r\n dispatchAction: curry(dispatchAction$1, api),\r\n dataZoomInfoMap: null,\r\n controller: null\r\n };\r\n var controller = coordSysRecord.controller = new RoamController(api.getZr());\r\n each(['pan', 'zoom', 'scrollMove'], function (eventName) {\r\n controller.on(eventName, function (event) {\r\n var batch = [];\r\n coordSysRecord.dataZoomInfoMap.each(function (dzInfo) {\r\n if (!event.isAvailableBehavior(dzInfo.model.option)) {\r\n return;\r\n }\r\n var method = (dzInfo.getRange || {})[eventName];\r\n var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event);\r\n !dzInfo.model.get('disabled', true) && range && batch.push({\r\n dataZoomId: dzInfo.model.id,\r\n start: range[0],\r\n end: range[1]\r\n });\r\n });\r\n batch.length && coordSysRecord.dispatchAction(batch);\r\n });\r\n });\r\n return coordSysRecord;\r\n}\r\nfunction dispatchAction$1(api, batch) {\r\n api.dispatchAction({\r\n type: 'dataZoom',\r\n animation: {\r\n easing: 'cubicOut',\r\n duration: 100\r\n },\r\n batch: batch\r\n });\r\n}\r\nfunction containsPoint(coordSysModel, e, x, y) {\r\n return coordSysModel.coordinateSystem.containPoint([x, y]);\r\n}\r\nfunction mergeControllerParams(dataZoomInfoMap) {\r\n var controlType;\r\n var prefix = 'type_';\r\n var typePriority = {\r\n 'type_true': 2,\r\n 'type_move': 1,\r\n 'type_false': 0,\r\n 'type_undefined': -1\r\n };\r\n var preventDefaultMouseMove = true;\r\n dataZoomInfoMap.each(function (dataZoomInfo) {\r\n var dataZoomModel = dataZoomInfo.model;\r\n var oneType = dataZoomModel.get('disabled', true)\r\n ? false\r\n : dataZoomModel.get('zoomLock', true)\r\n ? 'move'\r\n : true;\r\n if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\r\n controlType = oneType;\r\n }\r\n preventDefaultMouseMove = preventDefaultMouseMove\r\n && dataZoomModel.get('preventDefaultMouseMove', true);\r\n });\r\n return {\r\n controlType: controlType,\r\n opt: {\r\n zoomOnMouseWheel: true,\r\n moveOnMouseMove: true,\r\n moveOnMouseWheel: true,\r\n preventDefaultMouseMove: !!preventDefaultMouseMove\r\n }\r\n };\r\n}\n\nvar InsideZoomView = (function (_super) {\r\n __extends(InsideZoomView, _super);\r\n function InsideZoomView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = 'dataZoom.inside';\r\n return _this;\r\n }\r\n InsideZoomView.prototype.render = function (dataZoomModel, ecModel, api) {\r\n _super.prototype.render.apply(this, arguments);\r\n if (dataZoomModel.noTarget()) {\r\n this._clear();\r\n return;\r\n }\r\n this.range = dataZoomModel.getPercentRange();\r\n setViewInfoToCoordSysRecord(api, dataZoomModel, {\r\n pan: bind(getRangeHandlers.pan, this),\r\n zoom: bind(getRangeHandlers.zoom, this),\r\n scrollMove: bind(getRangeHandlers.scrollMove, this)\r\n });\r\n };\r\n InsideZoomView.prototype.dispose = function () {\r\n this._clear();\r\n _super.prototype.dispose.apply(this, arguments);\r\n };\r\n InsideZoomView.prototype._clear = function () {\r\n disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel);\r\n this.range = null;\r\n };\r\n InsideZoomView.type = 'dataZoom.inside';\r\n return InsideZoomView;\r\n}(DataZoomView));\r\nvar getRangeHandlers = {\r\n zoom: function (coordSysInfo, coordSysMainType, controller, e) {\r\n var lastRange = this.range;\r\n var range = lastRange.slice();\r\n var axisModel = coordSysInfo.axisModels[0];\r\n if (!axisModel) {\r\n return;\r\n }\r\n var directionInfo = getDirectionInfo[coordSysMainType](null, [e.originX, e.originY], axisModel, controller, coordSysInfo);\r\n var percentPoint = (directionInfo.signal > 0\r\n ? (directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel)\r\n : (directionInfo.pixel - directionInfo.pixelStart)) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\r\n var scale = Math.max(1 / e.scale, 0);\r\n range[0] = (range[0] - percentPoint) * scale + percentPoint;\r\n range[1] = (range[1] - percentPoint) * scale + percentPoint;\r\n var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\r\n sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\r\n this.range = range;\r\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\r\n return range;\r\n }\r\n },\r\n pan: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) {\r\n var directionInfo = getDirectionInfo[coordSysMainType]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordSysInfo);\r\n return directionInfo.signal\r\n * (range[1] - range[0])\r\n * directionInfo.pixel / directionInfo.pixelLength;\r\n }),\r\n scrollMove: makeMover(function (range, axisModel, coordSysInfo, coordSysMainType, controller, e) {\r\n var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordSysInfo);\r\n return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\r\n })\r\n};\r\nfunction makeMover(getPercentDelta) {\r\n return function (coordSysInfo, coordSysMainType, controller, e) {\r\n var lastRange = this.range;\r\n var range = lastRange.slice();\r\n var axisModel = coordSysInfo.axisModels[0];\r\n if (!axisModel) {\r\n return;\r\n }\r\n var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e);\r\n sliderMove(percentDelta, range, [0, 100], 'all');\r\n this.range = range;\r\n if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\r\n return range;\r\n }\r\n };\r\n}\r\nvar getDirectionInfo = {\r\n grid: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n var axis = axisModel.axis;\r\n var ret = {};\r\n var rect = coordSysInfo.model.coordinateSystem.getRect();\r\n oldPoint = oldPoint || [0, 0];\r\n if (axis.dim === 'x') {\r\n ret.pixel = newPoint[0] - oldPoint[0];\r\n ret.pixelLength = rect.width;\r\n ret.pixelStart = rect.x;\r\n ret.signal = axis.inverse ? 1 : -1;\r\n }\r\n else {\r\n ret.pixel = newPoint[1] - oldPoint[1];\r\n ret.pixelLength = rect.height;\r\n ret.pixelStart = rect.y;\r\n ret.signal = axis.inverse ? -1 : 1;\r\n }\r\n return ret;\r\n },\r\n polar: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n var axis = axisModel.axis;\r\n var ret = {};\r\n var polar = coordSysInfo.model.coordinateSystem;\r\n var radiusExtent = polar.getRadiusAxis().getExtent();\r\n var angleExtent = polar.getAngleAxis().getExtent();\r\n oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\r\n newPoint = polar.pointToCoord(newPoint);\r\n if (axisModel.mainType === 'radiusAxis') {\r\n ret.pixel = newPoint[0] - oldPoint[0];\r\n ret.pixelLength = radiusExtent[1] - radiusExtent[0];\r\n ret.pixelStart = radiusExtent[0];\r\n ret.signal = axis.inverse ? 1 : -1;\r\n }\r\n else {\r\n ret.pixel = newPoint[1] - oldPoint[1];\r\n ret.pixelLength = angleExtent[1] - angleExtent[0];\r\n ret.pixelStart = angleExtent[0];\r\n ret.signal = axis.inverse ? -1 : 1;\r\n }\r\n return ret;\r\n },\r\n singleAxis: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {\r\n var axis = axisModel.axis;\r\n var rect = coordSysInfo.model.coordinateSystem.getRect();\r\n var ret = {};\r\n oldPoint = oldPoint || [0, 0];\r\n if (axis.orient === 'horizontal') {\r\n ret.pixel = newPoint[0] - oldPoint[0];\r\n ret.pixelLength = rect.width;\r\n ret.pixelStart = rect.x;\r\n ret.signal = axis.inverse ? 1 : -1;\r\n }\r\n else {\r\n ret.pixel = newPoint[1] - oldPoint[1];\r\n ret.pixelLength = rect.height;\r\n ret.pixelStart = rect.y;\r\n ret.signal = axis.inverse ? -1 : 1;\r\n }\r\n return ret;\r\n }\r\n};\r\nComponentView.registerClass(InsideZoomView);\n\nvar each$f = each;\r\nfunction visualMapPreprocessor(option) {\r\n var visualMap = option && option.visualMap;\r\n if (!isArray(visualMap)) {\r\n visualMap = visualMap ? [visualMap] : [];\r\n }\r\n each$f(visualMap, function (opt) {\r\n if (!opt) {\r\n return;\r\n }\r\n if (has$1(opt, 'splitList') && !has$1(opt, 'pieces')) {\r\n opt.pieces = opt.splitList;\r\n delete opt.splitList;\r\n }\r\n var pieces = opt.pieces;\r\n if (pieces && isArray(pieces)) {\r\n each$f(pieces, function (piece) {\r\n if (isObject(piece)) {\r\n if (has$1(piece, 'start') && !has$1(piece, 'min')) {\r\n piece.min = piece.start;\r\n }\r\n if (has$1(piece, 'end') && !has$1(piece, 'max')) {\r\n piece.max = piece.end;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n}\r\nfunction has$1(obj, name) {\r\n return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\r\n}\n\nComponentModel.registerSubTypeDefaulter('visualMap', function (option) {\r\n return (!option.categories\r\n && (!(option.pieces\r\n ? option.pieces.length > 0\r\n : option.splitNumber > 0)\r\n || option.calculable))\r\n ? 'continuous' : 'piecewise';\r\n});\n\nvar VISUAL_PRIORITY = PRIORITY.VISUAL.COMPONENT;\r\nregisterVisual(VISUAL_PRIORITY, {\r\n createOnAllSeries: true,\r\n reset: function (seriesModel, ecModel) {\r\n var resetDefines = [];\r\n ecModel.eachComponent('visualMap', function (visualMapModel) {\r\n var pipelineContext = seriesModel.pipelineContext;\r\n if (!visualMapModel.isTargetSeries(seriesModel)\r\n || (pipelineContext && pipelineContext.large)) {\r\n return;\r\n }\r\n resetDefines.push(incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimension(seriesModel.getData())));\r\n });\r\n return resetDefines;\r\n }\r\n});\r\nregisterVisual(VISUAL_PRIORITY, {\r\n createOnAllSeries: true,\r\n reset: function (seriesModel, ecModel) {\r\n var data = seriesModel.getData();\r\n var visualMetaList = [];\r\n ecModel.eachComponent('visualMap', function (visualMapModel) {\r\n if (visualMapModel.isTargetSeries(seriesModel)) {\r\n var visualMeta = visualMapModel.getVisualMeta(bind(getColorVisual, null, seriesModel, visualMapModel)) || {\r\n stops: [],\r\n outerColors: []\r\n };\r\n var concreteDim = visualMapModel.getDataDimension(data);\r\n var dimInfo = data.getDimensionInfo(concreteDim);\r\n if (dimInfo != null) {\r\n visualMeta.dimension = dimInfo.index;\r\n visualMetaList.push(visualMeta);\r\n }\r\n }\r\n });\r\n seriesModel.getData().setVisual('visualMeta', visualMetaList);\r\n }\r\n});\r\nfunction getColorVisual(seriesModel, visualMapModel, value, valueState) {\r\n var mappings = visualMapModel.targetVisuals[valueState];\r\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\r\n var resultVisual = {\r\n color: getVisualFromData(seriesModel.getData(), 'color')\r\n };\r\n for (var i = 0, len = visualTypes.length; i < len; i++) {\r\n var type = visualTypes[i];\r\n var mapping = mappings[(type === 'opacity' ? '__alphaForOpacity' : type)];\r\n mapping && mapping.applyVisual(value, getVisual, setVisual);\r\n }\r\n return resultVisual.color;\r\n function getVisual(key) {\r\n return resultVisual[key];\r\n }\r\n function setVisual(key, value) {\r\n resultVisual[key] = value;\r\n }\r\n}\n\nvar visualDefault = {\r\n get: function (visualType, key, isCategory) {\r\n var value = clone((defaultOption$2[visualType] || {})[key]);\r\n return isCategory\r\n ? (isArray(value) ? value[value.length - 1] : value)\r\n : value;\r\n }\r\n};\r\nvar defaultOption$2 = {\r\n color: {\r\n active: ['#006edd', '#e0ffff'],\r\n inactive: ['rgba(0,0,0,0)']\r\n },\r\n colorHue: {\r\n active: [0, 360],\r\n inactive: [0, 0]\r\n },\r\n colorSaturation: {\r\n active: [0.3, 1],\r\n inactive: [0, 0]\r\n },\r\n colorLightness: {\r\n active: [0.9, 0.5],\r\n inactive: [0, 0]\r\n },\r\n colorAlpha: {\r\n active: [0.3, 1],\r\n inactive: [0, 0]\r\n },\r\n opacity: {\r\n active: [0.3, 1],\r\n inactive: [0, 0]\r\n },\r\n symbol: {\r\n active: ['circle', 'roundRect', 'diamond'],\r\n inactive: ['none']\r\n },\r\n symbolSize: {\r\n active: [10, 50],\r\n inactive: [0, 0]\r\n }\r\n};\n\nvar mapVisual$1 = VisualMapping.mapVisual;\r\nvar eachVisual = VisualMapping.eachVisual;\r\nvar isArray$1 = isArray;\r\nvar each$g = each;\r\nvar asc$2 = asc;\r\nvar linearMap$1 = linearMap;\r\nvar VisualMapModel = (function (_super) {\r\n __extends(VisualMapModel, _super);\r\n function VisualMapModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = VisualMapModel.type;\r\n _this.stateList = ['inRange', 'outOfRange'];\r\n _this.replacableOptionKeys = [\r\n 'inRange', 'outOfRange', 'target', 'controller', 'color'\r\n ];\r\n _this.layoutMode = {\r\n type: 'box', ignoreSize: true\r\n };\r\n _this.dataBound = [-Infinity, Infinity];\r\n _this.targetVisuals = {};\r\n _this.controllerVisuals = {};\r\n return _this;\r\n }\r\n VisualMapModel.prototype.init = function (option, parentModel, ecModel) {\r\n this.mergeDefaultAndTheme(option, ecModel);\r\n };\r\n VisualMapModel.prototype.optionUpdated = function (newOption, isInit) {\r\n var thisOption = this.option;\r\n if (!env.canvasSupported) {\r\n thisOption.realtime = false;\r\n }\r\n !isInit && replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\r\n this.textStyleModel = this.getModel('textStyle');\r\n this.resetItemSize();\r\n this.completeVisualOption();\r\n };\r\n VisualMapModel.prototype.resetVisual = function (supplementVisualOption) {\r\n var stateList = this.stateList;\r\n supplementVisualOption = bind(supplementVisualOption, this);\r\n this.controllerVisuals = createVisualMappings(this.option.controller, stateList, supplementVisualOption);\r\n this.targetVisuals = createVisualMappings(this.option.target, stateList, supplementVisualOption);\r\n };\r\n VisualMapModel.prototype.getTargetSeriesIndices = function () {\r\n var optionSeriesIndex = this.option.seriesIndex;\r\n var seriesIndices = [];\r\n if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\r\n this.ecModel.eachSeries(function (seriesModel, index) {\r\n seriesIndices.push(index);\r\n });\r\n }\r\n else {\r\n seriesIndices = normalizeToArray(optionSeriesIndex);\r\n }\r\n return seriesIndices;\r\n };\r\n VisualMapModel.prototype.eachTargetSeries = function (callback, context) {\r\n each(this.getTargetSeriesIndices(), function (seriesIndex) {\r\n var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex);\r\n if (seriesModel) {\r\n callback.call(context, seriesModel);\r\n }\r\n }, this);\r\n };\r\n VisualMapModel.prototype.isTargetSeries = function (seriesModel) {\r\n var is = false;\r\n this.eachTargetSeries(function (model) {\r\n model === seriesModel && (is = true);\r\n });\r\n return is;\r\n };\r\n VisualMapModel.prototype.formatValueText = function (value, isCategory, edgeSymbols) {\r\n var option = this.option;\r\n var precision = option.precision;\r\n var dataBound = this.dataBound;\r\n var formatter = option.formatter;\r\n var isMinMax;\r\n edgeSymbols = edgeSymbols || ['<', '>'];\r\n if (isArray(value)) {\r\n value = value.slice();\r\n isMinMax = true;\r\n }\r\n var textValue = isCategory\r\n ? value\r\n : (isMinMax\r\n ? [toFixed(value[0]), toFixed(value[1])]\r\n : toFixed(value));\r\n if (isString(formatter)) {\r\n return formatter\r\n .replace('{value}', isMinMax ? textValue[0] : textValue)\r\n .replace('{value2}', isMinMax ? textValue[1] : textValue);\r\n }\r\n else if (isFunction(formatter)) {\r\n return isMinMax\r\n ? formatter(value[0], value[1])\r\n : formatter(value);\r\n }\r\n if (isMinMax) {\r\n if (value[0] === dataBound[0]) {\r\n return edgeSymbols[0] + ' ' + textValue[1];\r\n }\r\n else if (value[1] === dataBound[1]) {\r\n return edgeSymbols[1] + ' ' + textValue[0];\r\n }\r\n else {\r\n return textValue[0] + ' - ' + textValue[1];\r\n }\r\n }\r\n else {\r\n return textValue;\r\n }\r\n function toFixed(val) {\r\n return val === dataBound[0]\r\n ? 'min'\r\n : val === dataBound[1]\r\n ? 'max'\r\n : (+val).toFixed(Math.min(precision, 20));\r\n }\r\n };\r\n VisualMapModel.prototype.resetExtent = function () {\r\n var thisOption = this.option;\r\n var extent = asc$2([thisOption.min, thisOption.max]);\r\n this._dataExtent = extent;\r\n };\r\n VisualMapModel.prototype.getDataDimension = function (list) {\r\n var optDim = this.option.dimension;\r\n var listDimensions = list.dimensions;\r\n if (optDim == null && !listDimensions.length) {\r\n return;\r\n }\r\n if (optDim != null) {\r\n return list.getDimension(optDim);\r\n }\r\n var dimNames = list.dimensions;\r\n for (var i = dimNames.length - 1; i >= 0; i--) {\r\n var dimName = dimNames[i];\r\n var dimInfo = list.getDimensionInfo(dimName);\r\n if (!dimInfo.isCalculationCoord) {\r\n return dimName;\r\n }\r\n }\r\n };\r\n VisualMapModel.prototype.getExtent = function () {\r\n return this._dataExtent.slice();\r\n };\r\n VisualMapModel.prototype.completeVisualOption = function () {\r\n var ecModel = this.ecModel;\r\n var thisOption = this.option;\r\n var base = {\r\n inRange: thisOption.inRange,\r\n outOfRange: thisOption.outOfRange\r\n };\r\n var target = thisOption.target || (thisOption.target = {});\r\n var controller = thisOption.controller || (thisOption.controller = {});\r\n merge(target, base);\r\n merge(controller, base);\r\n var isCategory = this.isCategory();\r\n completeSingle.call(this, target);\r\n completeSingle.call(this, controller);\r\n completeInactive.call(this, target, 'inRange', 'outOfRange');\r\n completeController.call(this, controller);\r\n function completeSingle(base) {\r\n if (isArray$1(thisOption.color)\r\n && !base.inRange) {\r\n base.inRange = { color: thisOption.color.slice().reverse() };\r\n }\r\n base.inRange = base.inRange || { color: ecModel.get('gradientColor') };\r\n }\r\n function completeInactive(base, stateExist, stateAbsent) {\r\n var optExist = base[stateExist];\r\n var optAbsent = base[stateAbsent];\r\n if (optExist && !optAbsent) {\r\n optAbsent = base[stateAbsent] = {};\r\n each$g(optExist, function (visualData, visualType) {\r\n if (!VisualMapping.isValidType(visualType)) {\r\n return;\r\n }\r\n var defa = visualDefault.get(visualType, 'inactive', isCategory);\r\n if (defa != null) {\r\n optAbsent[visualType] = defa;\r\n if (visualType === 'color'\r\n && !optAbsent.hasOwnProperty('opacity')\r\n && !optAbsent.hasOwnProperty('colorAlpha')) {\r\n optAbsent.opacity = [0, 0];\r\n }\r\n }\r\n });\r\n }\r\n }\r\n function completeController(controller) {\r\n var symbolExists = (controller.inRange || {}).symbol\r\n || (controller.outOfRange || {}).symbol;\r\n var symbolSizeExists = (controller.inRange || {}).symbolSize\r\n || (controller.outOfRange || {}).symbolSize;\r\n var inactiveColor = this.get('inactiveColor');\r\n each$g(this.stateList, function (state) {\r\n var itemSize = this.itemSize;\r\n var visuals = controller[state];\r\n if (!visuals) {\r\n visuals = controller[state] = {\r\n color: isCategory ? inactiveColor : [inactiveColor]\r\n };\r\n }\r\n if (visuals.symbol == null) {\r\n visuals.symbol = symbolExists\r\n && clone(symbolExists)\r\n || (isCategory ? 'roundRect' : ['roundRect']);\r\n }\r\n if (visuals.symbolSize == null) {\r\n visuals.symbolSize = symbolSizeExists\r\n && clone(symbolSizeExists)\r\n || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\r\n }\r\n visuals.symbol = mapVisual$1(visuals.symbol, function (symbol) {\r\n return (symbol === 'none' || symbol === 'square') ? 'roundRect' : symbol;\r\n });\r\n var symbolSize = visuals.symbolSize;\r\n if (symbolSize != null) {\r\n var max_1 = -Infinity;\r\n eachVisual(symbolSize, function (value) {\r\n value > max_1 && (max_1 = value);\r\n });\r\n visuals.symbolSize = mapVisual$1(symbolSize, function (value) {\r\n return linearMap$1(value, [0, max_1], [0, itemSize[0]], true);\r\n });\r\n }\r\n }, this);\r\n }\r\n };\r\n VisualMapModel.prototype.resetItemSize = function () {\r\n this.itemSize = [\r\n parseFloat(this.get('itemWidth')),\r\n parseFloat(this.get('itemHeight'))\r\n ];\r\n };\r\n VisualMapModel.prototype.isCategory = function () {\r\n return !!this.option.categories;\r\n };\r\n VisualMapModel.prototype.setSelected = function (selected) { };\r\n VisualMapModel.prototype.getSelected = function () {\r\n return null;\r\n };\r\n VisualMapModel.prototype.getValueState = function (value) {\r\n return null;\r\n };\r\n VisualMapModel.prototype.getVisualMeta = function (getColorVisual) {\r\n return null;\r\n };\r\n VisualMapModel.type = 'visualMap';\r\n VisualMapModel.dependencies = ['series'];\r\n VisualMapModel.defaultOption = {\r\n show: true,\r\n zlevel: 0,\r\n z: 4,\r\n seriesIndex: 'all',\r\n min: 0,\r\n max: 200,\r\n left: 0,\r\n right: null,\r\n top: null,\r\n bottom: 0,\r\n itemWidth: null,\r\n itemHeight: null,\r\n inverse: false,\r\n orient: 'vertical',\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n borderColor: '#ccc',\r\n contentColor: '#5793f3',\r\n inactiveColor: '#aaa',\r\n borderWidth: 0,\r\n padding: 5,\r\n textGap: 10,\r\n precision: 0,\r\n textStyle: {\r\n color: '#333'\r\n }\r\n };\r\n return VisualMapModel;\r\n}(ComponentModel));\n\nvar DEFAULT_BAR_BOUND = [20, 140];\r\nvar ContinuousModel = (function (_super) {\r\n __extends(ContinuousModel, _super);\r\n function ContinuousModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ContinuousModel.type;\r\n return _this;\r\n }\r\n ContinuousModel.prototype.optionUpdated = function (newOption, isInit) {\r\n _super.prototype.optionUpdated.apply(this, arguments);\r\n this.resetExtent();\r\n this.resetVisual(function (mappingOption) {\r\n mappingOption.mappingMethod = 'linear';\r\n mappingOption.dataExtent = this.getExtent();\r\n });\r\n this._resetRange();\r\n };\r\n ContinuousModel.prototype.resetItemSize = function () {\r\n _super.prototype.resetItemSize.apply(this, arguments);\r\n var itemSize = this.itemSize;\r\n (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\r\n (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\r\n };\r\n ContinuousModel.prototype._resetRange = function () {\r\n var dataExtent = this.getExtent();\r\n var range = this.option.range;\r\n if (!range || range.auto) {\r\n dataExtent.auto = 1;\r\n this.option.range = dataExtent;\r\n }\r\n else if (isArray(range)) {\r\n if (range[0] > range[1]) {\r\n range.reverse();\r\n }\r\n range[0] = Math.max(range[0], dataExtent[0]);\r\n range[1] = Math.min(range[1], dataExtent[1]);\r\n }\r\n };\r\n ContinuousModel.prototype.completeVisualOption = function () {\r\n _super.prototype.completeVisualOption.apply(this, arguments);\r\n each(this.stateList, function (state) {\r\n var symbolSize = this.option.controller[state].symbolSize;\r\n if (symbolSize && symbolSize[0] !== symbolSize[1]) {\r\n symbolSize[0] = symbolSize[1] / 3;\r\n }\r\n }, this);\r\n };\r\n ContinuousModel.prototype.setSelected = function (selected) {\r\n this.option.range = selected.slice();\r\n this._resetRange();\r\n };\r\n ContinuousModel.prototype.getSelected = function () {\r\n var dataExtent = this.getExtent();\r\n var dataInterval = asc((this.get('range') || []).slice());\r\n dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\r\n dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\r\n dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\r\n dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\r\n return dataInterval;\r\n };\r\n ContinuousModel.prototype.getValueState = function (value) {\r\n var range = this.option.range;\r\n var dataExtent = this.getExtent();\r\n return ((range[0] <= dataExtent[0] || range[0] <= value)\r\n && (range[1] >= dataExtent[1] || value <= range[1])) ? 'inRange' : 'outOfRange';\r\n };\r\n ContinuousModel.prototype.findTargetDataIndices = function (range) {\r\n var result = [];\r\n this.eachTargetSeries(function (seriesModel) {\r\n var dataIndices = [];\r\n var data = seriesModel.getData();\r\n data.each(this.getDataDimension(data), function (value, dataIndex) {\r\n range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\r\n }, this);\r\n result.push({\r\n seriesId: seriesModel.id,\r\n dataIndex: dataIndices\r\n });\r\n }, this);\r\n return result;\r\n };\r\n ContinuousModel.prototype.getVisualMeta = function (getColorVisual) {\r\n var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\r\n var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\r\n var stops = [];\r\n function setStop(value, valueState) {\r\n stops.push({\r\n value: value,\r\n color: getColorVisual(value, valueState)\r\n });\r\n }\r\n var iIdx = 0;\r\n var oIdx = 0;\r\n var iLen = iVals.length;\r\n var oLen = oVals.length;\r\n for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\r\n if (oVals[oIdx] < iVals[iIdx]) {\r\n setStop(oVals[oIdx], 'outOfRange');\r\n }\r\n }\r\n for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\r\n first && stops.length && setStop(iVals[iIdx], 'outOfRange');\r\n setStop(iVals[iIdx], 'inRange');\r\n }\r\n for (var first = 1; oIdx < oLen; oIdx++) {\r\n if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\r\n if (first) {\r\n stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\r\n first = 0;\r\n }\r\n setStop(oVals[oIdx], 'outOfRange');\r\n }\r\n }\r\n var stopsLen = stops.length;\r\n return {\r\n stops: stops,\r\n outerColors: [\r\n stopsLen ? stops[0].color : 'transparent',\r\n stopsLen ? stops[stopsLen - 1].color : 'transparent'\r\n ]\r\n };\r\n };\r\n ContinuousModel.type = 'visualMap.continuous';\r\n ContinuousModel.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, {\r\n align: 'auto',\r\n calculable: false,\r\n hoverLink: true,\r\n realtime: true,\r\n handleIcon: 'path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z',\r\n handleSize: '120%',\r\n handleStyle: {\r\n borderColor: '#fff',\r\n borderWidth: 1\r\n },\r\n indicatorIcon: 'circle',\r\n indicatorSize: '50%',\r\n indicatorStyle: {\r\n borderColor: '#fff',\r\n borderWidth: 2,\r\n shadowBlur: 2,\r\n shadowOffsetX: 1,\r\n shadowOffsetY: 1,\r\n shadowColor: 'rgba(0,0,0,0.2)'\r\n }\r\n });\r\n return ContinuousModel;\r\n}(VisualMapModel));\r\nfunction getColorStopValues(visualMapModel, valueState, dataExtent) {\r\n if (dataExtent[0] === dataExtent[1]) {\r\n return dataExtent.slice();\r\n }\r\n var count = 200;\r\n var step = (dataExtent[1] - dataExtent[0]) / count;\r\n var value = dataExtent[0];\r\n var stopValues = [];\r\n for (var i = 0; i <= count && value < dataExtent[1]; i++) {\r\n stopValues.push(value);\r\n value += step;\r\n }\r\n stopValues.push(dataExtent[1]);\r\n return stopValues;\r\n}\r\nComponentModel.registerClass(ContinuousModel);\n\nvar VisualMapView = (function (_super) {\r\n __extends(VisualMapView, _super);\r\n function VisualMapView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = VisualMapView.type;\r\n _this.autoPositionValues = { left: 1, right: 1, top: 1, bottom: 1 };\r\n return _this;\r\n }\r\n VisualMapView.prototype.init = function (ecModel, api) {\r\n this.ecModel = ecModel;\r\n this.api = api;\r\n };\r\n VisualMapView.prototype.render = function (visualMapModel, ecModel, api, payload) {\r\n this.visualMapModel = visualMapModel;\r\n if (visualMapModel.get('show') === false) {\r\n this.group.removeAll();\r\n return;\r\n }\r\n this.doRender(visualMapModel, ecModel, api, payload);\r\n };\r\n VisualMapView.prototype.renderBackground = function (group) {\r\n var visualMapModel = this.visualMapModel;\r\n var padding = normalizeCssArray$1(visualMapModel.get('padding') || 0);\r\n var rect = group.getBoundingRect();\r\n group.add(new Rect({\r\n z2: -1,\r\n silent: true,\r\n shape: {\r\n x: rect.x - padding[3],\r\n y: rect.y - padding[0],\r\n width: rect.width + padding[3] + padding[1],\r\n height: rect.height + padding[0] + padding[2]\r\n },\r\n style: {\r\n fill: visualMapModel.get('backgroundColor'),\r\n stroke: visualMapModel.get('borderColor'),\r\n lineWidth: visualMapModel.get('borderWidth')\r\n }\r\n }));\r\n };\r\n VisualMapView.prototype.getControllerVisual = function (targetValue, visualCluster, opts) {\r\n opts = opts || {};\r\n var forceState = opts.forceState;\r\n var visualMapModel = this.visualMapModel;\r\n var visualObj = {};\r\n if (visualCluster === 'symbol') {\r\n visualObj.symbol = visualMapModel.get('itemSymbol');\r\n }\r\n if (visualCluster === 'color') {\r\n var defaultColor = visualMapModel.get('contentColor');\r\n visualObj.color = defaultColor;\r\n }\r\n function getter(key) {\r\n return visualObj[key];\r\n }\r\n function setter(key, value) {\r\n visualObj[key] = value;\r\n }\r\n var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\r\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\r\n each(visualTypes, function (type) {\r\n var visualMapping = mappings[type];\r\n if (opts.convertOpacityToAlpha && type === 'opacity') {\r\n type = 'colorAlpha';\r\n visualMapping = mappings.__alphaForOpacity;\r\n }\r\n if (VisualMapping.dependsOn(type, visualCluster)) {\r\n visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\r\n }\r\n });\r\n return visualObj[visualCluster];\r\n };\r\n VisualMapView.prototype.positionGroup = function (group) {\r\n var model = this.visualMapModel;\r\n var api = this.api;\r\n positionElement(group, model.getBoxLayoutParams(), { width: api.getWidth(), height: api.getHeight() });\r\n };\r\n VisualMapView.prototype.doRender = function (visualMapModel, ecModel, api, payload) { };\r\n VisualMapView.type = 'visualMap';\r\n return VisualMapView;\r\n}(ComponentView));\r\nComponentView.registerClass(VisualMapView);\n\nvar paramsSet = [\r\n ['left', 'right', 'width'],\r\n ['top', 'bottom', 'height']\r\n];\r\nfunction getItemAlign(visualMapModel, api, itemSize) {\r\n var modelOption = visualMapModel.option;\r\n var itemAlign = modelOption.align;\r\n if (itemAlign != null && itemAlign !== 'auto') {\r\n return itemAlign;\r\n }\r\n var ecSize = { width: api.getWidth(), height: api.getHeight() };\r\n var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\r\n var reals = paramsSet[realIndex];\r\n var fakeValue = [0, null, 10];\r\n var layoutInput = {};\r\n for (var i = 0; i < 3; i++) {\r\n layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\r\n layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\r\n }\r\n var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\r\n var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\r\n return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5\r\n < ecSize[rParam[1]] * 0.5 ? 0 : 1];\r\n}\r\nfunction makeHighDownBatch(batch, visualMapModel) {\r\n each(batch || [], function (batchItem) {\r\n if (batchItem.dataIndex != null) {\r\n batchItem.dataIndexInside = batchItem.dataIndex;\r\n batchItem.dataIndex = null;\r\n }\r\n batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '');\r\n });\r\n return batch;\r\n}\n\nvar linearMap$2 = linearMap;\r\nvar each$h = each;\r\nvar mathMin$a = Math.min;\r\nvar mathMax$a = Math.max;\r\nvar HOVER_LINK_SIZE = 12;\r\nvar HOVER_LINK_OUT = 6;\r\nvar ContinuousView = (function (_super) {\r\n __extends(ContinuousView, _super);\r\n function ContinuousView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = ContinuousView.type;\r\n _this._shapes = {};\r\n _this._dataInterval = [];\r\n _this._handleEnds = [];\r\n _this._hoverLinkDataIndices = [];\r\n return _this;\r\n }\r\n ContinuousView.prototype.doRender = function (visualMapModel, ecModel, api, payload) {\r\n this._api = api;\r\n if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\r\n this._buildView();\r\n }\r\n };\r\n ContinuousView.prototype._buildView = function () {\r\n this.group.removeAll();\r\n var visualMapModel = this.visualMapModel;\r\n var thisGroup = this.group;\r\n this._orient = visualMapModel.get('orient');\r\n this._useHandle = visualMapModel.get('calculable');\r\n this._resetInterval();\r\n this._renderBar(thisGroup);\r\n var dataRangeText = visualMapModel.get('text');\r\n this._renderEndsText(thisGroup, dataRangeText, 0);\r\n this._renderEndsText(thisGroup, dataRangeText, 1);\r\n this._updateView(true);\r\n this.renderBackground(thisGroup);\r\n this._updateView();\r\n this._enableHoverLinkToSeries();\r\n this._enableHoverLinkFromSeries();\r\n this.positionGroup(thisGroup);\r\n };\r\n ContinuousView.prototype._renderEndsText = function (group, dataRangeText, endsIndex) {\r\n if (!dataRangeText) {\r\n return;\r\n }\r\n var text = dataRangeText[1 - endsIndex];\r\n text = text != null ? text + '' : '';\r\n var visualMapModel = this.visualMapModel;\r\n var textGap = visualMapModel.get('textGap');\r\n var itemSize = visualMapModel.itemSize;\r\n var barGroup = this._shapes.mainGroup;\r\n var position = this._applyTransform([\r\n itemSize[0] / 2,\r\n endsIndex === 0 ? -textGap : itemSize[1] + textGap\r\n ], barGroup);\r\n var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\r\n var orient = this._orient;\r\n var textStyleModel = this.visualMapModel.textStyleModel;\r\n this.group.add(new ZRText({\r\n style: {\r\n x: position[0],\r\n y: position[1],\r\n verticalAlign: orient === 'horizontal' ? 'middle' : align,\r\n align: orient === 'horizontal' ? align : 'center',\r\n text: text,\r\n font: textStyleModel.getFont(),\r\n fill: textStyleModel.getTextColor()\r\n }\r\n }));\r\n };\r\n ContinuousView.prototype._renderBar = function (targetGroup) {\r\n var visualMapModel = this.visualMapModel;\r\n var shapes = this._shapes;\r\n var itemSize = visualMapModel.itemSize;\r\n var orient = this._orient;\r\n var useHandle = this._useHandle;\r\n var itemAlign = getItemAlign(visualMapModel, this.api, itemSize);\r\n var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign);\r\n var gradientBarGroup = new Group();\r\n mainGroup.add(gradientBarGroup);\r\n gradientBarGroup.add(shapes.outOfRange = createPolygon());\r\n gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor$1(this._orient) : null, bind(this._dragHandle, this, 'all', false), bind(this._dragHandle, this, 'all', true)));\r\n gradientBarGroup.setClipPath(new Rect({\r\n shape: {\r\n x: 0,\r\n y: 0,\r\n width: itemSize[0],\r\n height: itemSize[1],\r\n r: 3\r\n }\r\n }));\r\n var textRect = visualMapModel.textStyleModel.getTextRect('国');\r\n var textSize = mathMax$a(textRect.width, textRect.height);\r\n if (useHandle) {\r\n shapes.handleThumbs = [];\r\n shapes.handleLabels = [];\r\n shapes.handleLabelPoints = [];\r\n this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient);\r\n this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient);\r\n }\r\n this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient);\r\n targetGroup.add(mainGroup);\r\n };\r\n ContinuousView.prototype._createHandle = function (visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) {\r\n var onDrift = bind(this._dragHandle, this, handleIndex, false);\r\n var onDragEnd = bind(this._dragHandle, this, handleIndex, true);\r\n var handleSize = parsePercent(visualMapModel.get('handleSize'), itemSize[0]);\r\n var handleThumb = createSymbol(visualMapModel.get('handleIcon'), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true);\r\n var cursor = getCursor$1(this._orient);\r\n handleThumb.attr({\r\n cursor: cursor,\r\n draggable: true,\r\n drift: onDrift,\r\n ondragend: onDragEnd,\r\n onmousemove: function (e) {\r\n stop(e.event);\r\n }\r\n });\r\n handleThumb.x = itemSize[0] / 2;\r\n handleThumb.useStyle(visualMapModel.getModel('handleStyle').getItemStyle());\r\n handleThumb.setStyle({\r\n strokeNoScale: true,\r\n strokeFirst: true\r\n });\r\n handleThumb.style.lineWidth *= 2;\r\n handleThumb.ensureState('emphasis').style = visualMapModel.getModel(['emphasis', 'handleStyle']).getItemStyle();\r\n setAsHighDownDispatcher(handleThumb, true);\r\n mainGroup.add(handleThumb);\r\n var textStyleModel = this.visualMapModel.textStyleModel;\r\n var handleLabel = new ZRText({\r\n cursor: cursor,\r\n draggable: true,\r\n drift: onDrift,\r\n onmousemove: function (e) {\r\n stop(e.event);\r\n },\r\n ondragend: onDragEnd,\r\n style: {\r\n x: 0, y: 0, text: '',\r\n font: textStyleModel.getFont(),\r\n fill: textStyleModel.getTextColor()\r\n }\r\n });\r\n handleLabel.ensureState('blur').style = {\r\n opacity: 0.1\r\n };\r\n handleLabel.stateTransition = { duration: 200 };\r\n this.group.add(handleLabel);\r\n var handleLabelPoint = [handleSize, 0];\r\n var shapes = this._shapes;\r\n shapes.handleThumbs[handleIndex] = handleThumb;\r\n shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\r\n shapes.handleLabels[handleIndex] = handleLabel;\r\n };\r\n ContinuousView.prototype._createIndicator = function (visualMapModel, mainGroup, itemSize, textSize, orient) {\r\n var scale = parsePercent(visualMapModel.get('indicatorSize'), itemSize[0]);\r\n var indicator = createSymbol(visualMapModel.get('indicatorIcon'), -scale / 2, -scale / 2, scale, scale, null, true);\r\n indicator.attr({\r\n cursor: 'move',\r\n invisible: true,\r\n silent: true,\r\n x: itemSize[0] / 2\r\n });\r\n var indicatorStyle = visualMapModel.getModel('indicatorStyle').getItemStyle();\r\n if (indicator instanceof ZRImage) {\r\n var pathStyle = indicator.style;\r\n indicator.useStyle(extend({\r\n image: pathStyle.image,\r\n x: pathStyle.x, y: pathStyle.y,\r\n width: pathStyle.width, height: pathStyle.height\r\n }, indicatorStyle));\r\n }\r\n else {\r\n indicator.useStyle(indicatorStyle);\r\n }\r\n mainGroup.add(indicator);\r\n var textStyleModel = this.visualMapModel.textStyleModel;\r\n var indicatorLabel = new ZRText({\r\n silent: true,\r\n invisible: true,\r\n style: {\r\n x: 0, y: 0, text: '',\r\n font: textStyleModel.getFont(),\r\n fill: textStyleModel.getTextColor()\r\n }\r\n });\r\n this.group.add(indicatorLabel);\r\n var indicatorLabelPoint = [\r\n (orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2,\r\n 0\r\n ];\r\n var shapes = this._shapes;\r\n shapes.indicator = indicator;\r\n shapes.indicatorLabel = indicatorLabel;\r\n shapes.indicatorLabelPoint = indicatorLabelPoint;\r\n this._firstShowIndicator = true;\r\n };\r\n ContinuousView.prototype._dragHandle = function (handleIndex, isEnd, dx, dy) {\r\n if (!this._useHandle) {\r\n return;\r\n }\r\n this._dragging = !isEnd;\r\n if (!isEnd) {\r\n var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true);\r\n this._updateInterval(handleIndex, vertex[1]);\r\n this._hideIndicator();\r\n this._updateView();\r\n }\r\n if (isEnd === !this.visualMapModel.get('realtime')) {\r\n this.api.dispatchAction({\r\n type: 'selectDataRange',\r\n from: this.uid,\r\n visualMapId: this.visualMapModel.id,\r\n selected: this._dataInterval.slice()\r\n });\r\n }\r\n if (isEnd) {\r\n !this._hovering && this._clearHoverLinkToSeries();\r\n }\r\n else if (useHoverLinkOnHandle(this.visualMapModel)) {\r\n this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\r\n }\r\n };\r\n ContinuousView.prototype._resetInterval = function () {\r\n var visualMapModel = this.visualMapModel;\r\n var dataInterval = this._dataInterval = visualMapModel.getSelected();\r\n var dataExtent = visualMapModel.getExtent();\r\n var sizeExtent = [0, visualMapModel.itemSize[1]];\r\n this._handleEnds = [\r\n linearMap$2(dataInterval[0], dataExtent, sizeExtent, true),\r\n linearMap$2(dataInterval[1], dataExtent, sizeExtent, true)\r\n ];\r\n };\r\n ContinuousView.prototype._updateInterval = function (handleIndex, delta) {\r\n delta = delta || 0;\r\n var visualMapModel = this.visualMapModel;\r\n var handleEnds = this._handleEnds;\r\n var sizeExtent = [0, visualMapModel.itemSize[1]];\r\n sliderMove(delta, handleEnds, sizeExtent, handleIndex, 0);\r\n var dataExtent = visualMapModel.getExtent();\r\n this._dataInterval = [\r\n linearMap$2(handleEnds[0], sizeExtent, dataExtent, true),\r\n linearMap$2(handleEnds[1], sizeExtent, dataExtent, true)\r\n ];\r\n };\r\n ContinuousView.prototype._updateView = function (forSketch) {\r\n var visualMapModel = this.visualMapModel;\r\n var dataExtent = visualMapModel.getExtent();\r\n var shapes = this._shapes;\r\n var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\r\n var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\r\n var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\r\n var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\r\n shapes.inRange\r\n .setStyle({\r\n fill: visualInRange.barColor\r\n })\r\n .setShape('points', visualInRange.barPoints);\r\n shapes.outOfRange\r\n .setStyle({\r\n fill: visualOutOfRange.barColor\r\n })\r\n .setShape('points', visualOutOfRange.barPoints);\r\n this._updateHandle(inRangeHandleEnds, visualInRange);\r\n };\r\n ContinuousView.prototype._createBarVisual = function (dataInterval, dataExtent, handleEnds, forceState) {\r\n var opts = {\r\n forceState: forceState,\r\n convertOpacityToAlpha: true\r\n };\r\n var colorStops = this._makeColorGradient(dataInterval, opts);\r\n var symbolSizes = [\r\n this.getControllerVisual(dataInterval[0], 'symbolSize', opts),\r\n this.getControllerVisual(dataInterval[1], 'symbolSize', opts)\r\n ];\r\n var barPoints = this._createBarPoints(handleEnds, symbolSizes);\r\n return {\r\n barColor: new LinearGradient(0, 0, 0, 1, colorStops),\r\n barPoints: barPoints,\r\n handlesColor: [\r\n colorStops[0].color,\r\n colorStops[colorStops.length - 1].color\r\n ]\r\n };\r\n };\r\n ContinuousView.prototype._makeColorGradient = function (dataInterval, opts) {\r\n var sampleNumber = 100;\r\n var colorStops = [];\r\n var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\r\n colorStops.push({\r\n color: this.getControllerVisual(dataInterval[0], 'color', opts),\r\n offset: 0\r\n });\r\n for (var i = 1; i < sampleNumber; i++) {\r\n var currValue = dataInterval[0] + step * i;\r\n if (currValue > dataInterval[1]) {\r\n break;\r\n }\r\n colorStops.push({\r\n color: this.getControllerVisual(currValue, 'color', opts),\r\n offset: i / sampleNumber\r\n });\r\n }\r\n colorStops.push({\r\n color: this.getControllerVisual(dataInterval[1], 'color', opts),\r\n offset: 1\r\n });\r\n return colorStops;\r\n };\r\n ContinuousView.prototype._createBarPoints = function (handleEnds, symbolSizes) {\r\n var itemSize = this.visualMapModel.itemSize;\r\n return [\r\n [itemSize[0] - symbolSizes[0], handleEnds[0]],\r\n [itemSize[0], handleEnds[0]],\r\n [itemSize[0], handleEnds[1]],\r\n [itemSize[0] - symbolSizes[1], handleEnds[1]]\r\n ];\r\n };\r\n ContinuousView.prototype._createBarGroup = function (itemAlign) {\r\n var orient = this._orient;\r\n var inverse = this.visualMapModel.get('inverse');\r\n return new Group((orient === 'horizontal' && !inverse)\r\n ? { scaleX: itemAlign === 'bottom' ? 1 : -1, rotation: Math.PI / 2 }\r\n : (orient === 'horizontal' && inverse)\r\n ? { scaleX: itemAlign === 'bottom' ? -1 : 1, rotation: -Math.PI / 2 }\r\n : (orient === 'vertical' && !inverse)\r\n ? { scaleX: itemAlign === 'left' ? 1 : -1, scaleY: -1 }\r\n : { scaleX: itemAlign === 'left' ? 1 : -1 });\r\n };\r\n ContinuousView.prototype._updateHandle = function (handleEnds, visualInRange) {\r\n if (!this._useHandle) {\r\n return;\r\n }\r\n var shapes = this._shapes;\r\n var visualMapModel = this.visualMapModel;\r\n var handleThumbs = shapes.handleThumbs;\r\n var handleLabels = shapes.handleLabels;\r\n var itemSize = visualMapModel.itemSize;\r\n var dataExtent = visualMapModel.getExtent();\r\n each$h([0, 1], function (handleIndex) {\r\n var handleThumb = handleThumbs[handleIndex];\r\n handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\r\n handleThumb.y = handleEnds[handleIndex];\r\n var val = linearMap$2(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true);\r\n var symbolSize = this.getControllerVisual(val, 'symbolSize');\r\n handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0];\r\n handleThumb.x = itemSize[0] - symbolSize / 2;\r\n var textPoint = applyTransform$1(shapes.handleLabelPoints[handleIndex], getTransform(handleThumb, this.group));\r\n handleLabels[handleIndex].setStyle({\r\n x: textPoint[0],\r\n y: textPoint[1],\r\n text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\r\n verticalAlign: 'middle',\r\n align: this._orient === 'vertical' ? this._applyTransform('left', shapes.mainGroup) : 'center'\r\n });\r\n }, this);\r\n };\r\n ContinuousView.prototype._showIndicator = function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\r\n var visualMapModel = this.visualMapModel;\r\n var dataExtent = visualMapModel.getExtent();\r\n var itemSize = visualMapModel.itemSize;\r\n var sizeExtent = [0, itemSize[1]];\r\n var shapes = this._shapes;\r\n var indicator = shapes.indicator;\r\n if (!indicator) {\r\n return;\r\n }\r\n indicator.attr('invisible', false);\r\n var opts = { convertOpacityToAlpha: true };\r\n var color = this.getControllerVisual(cursorValue, 'color', opts);\r\n var symbolSize = this.getControllerVisual(cursorValue, 'symbolSize');\r\n var y = linearMap$2(cursorValue, dataExtent, sizeExtent, true);\r\n var x = itemSize[0] - symbolSize / 2;\r\n var oldIndicatorPos = { x: indicator.x, y: indicator.y };\r\n indicator.y = y;\r\n indicator.x = x;\r\n var textPoint = applyTransform$1(shapes.indicatorLabelPoint, getTransform(indicator, this.group));\r\n var indicatorLabel = shapes.indicatorLabel;\r\n indicatorLabel.attr('invisible', false);\r\n var align = this._applyTransform('left', shapes.mainGroup);\r\n var orient = this._orient;\r\n var isHorizontal = orient === 'horizontal';\r\n indicatorLabel.setStyle({\r\n text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\r\n verticalAlign: isHorizontal ? align : 'middle',\r\n align: isHorizontal ? 'center' : align\r\n });\r\n var indicatorNewProps = {\r\n x: x,\r\n y: y,\r\n style: {\r\n fill: color\r\n }\r\n };\r\n var labelNewProps = {\r\n style: {\r\n x: textPoint[0],\r\n y: textPoint[1]\r\n }\r\n };\r\n if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {\r\n var animationCfg = {\r\n duration: 100,\r\n easing: 'cubicInOut',\r\n additive: true\r\n };\r\n indicator.x = oldIndicatorPos.x;\r\n indicator.y = oldIndicatorPos.y;\r\n indicator.animateTo(indicatorNewProps, animationCfg);\r\n indicatorLabel.animateTo(labelNewProps, animationCfg);\r\n }\r\n else {\r\n indicator.attr(indicatorNewProps);\r\n indicatorLabel.attr(labelNewProps);\r\n }\r\n this._firstShowIndicator = false;\r\n var handleLabels = this._shapes.handleLabels;\r\n if (handleLabels) {\r\n for (var i = 0; i < handleLabels.length; i++) {\r\n this._api.enterBlur(handleLabels[i]);\r\n }\r\n }\r\n };\r\n ContinuousView.prototype._enableHoverLinkToSeries = function () {\r\n var self = this;\r\n this._shapes.mainGroup\r\n .on('mousemove', function (e) {\r\n self._hovering = true;\r\n if (!self._dragging) {\r\n var itemSize = self.visualMapModel.itemSize;\r\n var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.mainGroup, true, true);\r\n pos[1] = mathMin$a(mathMax$a(0, pos[1]), itemSize[1]);\r\n self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\r\n }\r\n })\r\n .on('mouseout', function () {\r\n self._hovering = false;\r\n !self._dragging && self._clearHoverLinkToSeries();\r\n });\r\n };\r\n ContinuousView.prototype._enableHoverLinkFromSeries = function () {\r\n var zr = this.api.getZr();\r\n if (this.visualMapModel.option.hoverLink) {\r\n zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\r\n zr.on('mouseout', this._hideIndicator, this);\r\n }\r\n else {\r\n this._clearHoverLinkFromSeries();\r\n }\r\n };\r\n ContinuousView.prototype._doHoverLinkToSeries = function (cursorPos, hoverOnBar) {\r\n var visualMapModel = this.visualMapModel;\r\n var itemSize = visualMapModel.itemSize;\r\n if (!visualMapModel.option.hoverLink) {\r\n return;\r\n }\r\n var sizeExtent = [0, itemSize[1]];\r\n var dataExtent = visualMapModel.getExtent();\r\n cursorPos = mathMin$a(mathMax$a(sizeExtent[0], cursorPos), sizeExtent[1]);\r\n var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\r\n var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\r\n var cursorValue = linearMap$2(cursorPos, sizeExtent, dataExtent, true);\r\n var valueRange = [\r\n linearMap$2(hoverRange[0], sizeExtent, dataExtent, true),\r\n linearMap$2(hoverRange[1], sizeExtent, dataExtent, true)\r\n ];\r\n hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\r\n hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity);\r\n if (hoverOnBar) {\r\n if (valueRange[0] === -Infinity) {\r\n this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\r\n }\r\n else if (valueRange[1] === Infinity) {\r\n this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\r\n }\r\n else {\r\n this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\r\n }\r\n }\r\n var oldBatch = this._hoverLinkDataIndices;\r\n var newBatch = [];\r\n if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\r\n newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\r\n }\r\n var resultBatches = compressBatches(oldBatch, newBatch);\r\n this._dispatchHighDown('downplay', makeHighDownBatch(resultBatches[0], visualMapModel));\r\n this._dispatchHighDown('highlight', makeHighDownBatch(resultBatches[1], visualMapModel));\r\n };\r\n ContinuousView.prototype._hoverLinkFromSeriesMouseOver = function (e) {\r\n var el = e.target;\r\n var visualMapModel = this.visualMapModel;\r\n if (!el || getECData(el).dataIndex == null) {\r\n return;\r\n }\r\n var ecData = getECData(el);\r\n var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex);\r\n if (!visualMapModel.isTargetSeries(dataModel)) {\r\n return;\r\n }\r\n var data = dataModel.getData(ecData.dataType);\r\n var value = data.get(visualMapModel.getDataDimension(data), ecData.dataIndex);\r\n if (!isNaN(value)) {\r\n this._showIndicator(value, value);\r\n }\r\n };\r\n ContinuousView.prototype._hideIndicator = function () {\r\n var shapes = this._shapes;\r\n shapes.indicator && shapes.indicator.attr('invisible', true);\r\n shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\r\n var handleLabels = this._shapes.handleLabels;\r\n if (handleLabels) {\r\n for (var i = 0; i < handleLabels.length; i++) {\r\n this._api.leaveBlur(handleLabels[i]);\r\n }\r\n }\r\n };\r\n ContinuousView.prototype._clearHoverLinkToSeries = function () {\r\n this._hideIndicator();\r\n var indices = this._hoverLinkDataIndices;\r\n this._dispatchHighDown('downplay', makeHighDownBatch(indices, this.visualMapModel));\r\n indices.length = 0;\r\n };\r\n ContinuousView.prototype._clearHoverLinkFromSeries = function () {\r\n this._hideIndicator();\r\n var zr = this.api.getZr();\r\n zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\r\n zr.off('mouseout', this._hideIndicator);\r\n };\r\n ContinuousView.prototype._applyTransform = function (vertex, element, inverse, global) {\r\n var transform = getTransform(element, global ? null : this.group);\r\n return isArray(vertex)\r\n ? applyTransform$1(vertex, transform, inverse)\r\n : transformDirection(vertex, transform, inverse);\r\n };\r\n ContinuousView.prototype._dispatchHighDown = function (type, batch) {\r\n batch && batch.length && this.api.dispatchAction({\r\n type: type,\r\n batch: batch\r\n });\r\n };\r\n ContinuousView.prototype.dispose = function () {\r\n this._clearHoverLinkFromSeries();\r\n this._clearHoverLinkToSeries();\r\n };\r\n ContinuousView.prototype.remove = function () {\r\n this._clearHoverLinkFromSeries();\r\n this._clearHoverLinkToSeries();\r\n };\r\n ContinuousView.type = 'visualMap.continuous';\r\n return ContinuousView;\r\n}(VisualMapView));\r\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\r\n return new Polygon({\r\n shape: { points: points },\r\n draggable: !!onDrift,\r\n cursor: cursor,\r\n drift: onDrift,\r\n onmousemove: function (e) {\r\n stop(e.event);\r\n },\r\n ondragend: onDragEnd\r\n });\r\n}\r\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\r\n var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\r\n var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\r\n if (hoverLinkDataSize) {\r\n halfHoverLinkSize = linearMap$2(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\r\n }\r\n return halfHoverLinkSize;\r\n}\r\nfunction useHoverLinkOnHandle(visualMapModel) {\r\n var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\r\n return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\r\n}\r\nfunction getCursor$1(orient) {\r\n return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\r\n}\r\nComponentView.registerClass(ContinuousView);\n\nvar actionInfo$2 = {\r\n type: 'selectDataRange',\r\n event: 'dataRangeSelected',\r\n update: 'update'\r\n};\r\nregisterAction(actionInfo$2, function (payload, ecModel) {\r\n ecModel.eachComponent({ mainType: 'visualMap', query: payload }, function (model) {\r\n model.setSelected(payload.selected);\r\n });\r\n});\n\nregisterPreprocessor(visualMapPreprocessor);\n\nvar PiecewiseModel = (function (_super) {\r\n __extends(PiecewiseModel, _super);\r\n function PiecewiseModel() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = PiecewiseModel.type;\r\n _this._pieceList = [];\r\n return _this;\r\n }\r\n PiecewiseModel.prototype.optionUpdated = function (newOption, isInit) {\r\n _super.prototype.optionUpdated.apply(this, arguments);\r\n this.resetExtent();\r\n var mode = this._mode = this._determineMode();\r\n this._pieceList = [];\r\n resetMethods[this._mode].call(this, this._pieceList);\r\n this._resetSelected(newOption, isInit);\r\n var categories = this.option.categories;\r\n this.resetVisual(function (mappingOption, state) {\r\n if (mode === 'categories') {\r\n mappingOption.mappingMethod = 'category';\r\n mappingOption.categories = clone(categories);\r\n }\r\n else {\r\n mappingOption.dataExtent = this.getExtent();\r\n mappingOption.mappingMethod = 'piecewise';\r\n mappingOption.pieceList = map(this._pieceList, function (piece) {\r\n piece = clone(piece);\r\n if (state !== 'inRange') {\r\n piece.visual = null;\r\n }\r\n return piece;\r\n });\r\n }\r\n });\r\n };\r\n PiecewiseModel.prototype.completeVisualOption = function () {\r\n var option = this.option;\r\n var visualTypesInPieces = {};\r\n var visualTypes = VisualMapping.listVisualTypes();\r\n var isCategory = this.isCategory();\r\n each(option.pieces, function (piece) {\r\n each(visualTypes, function (visualType) {\r\n if (piece.hasOwnProperty(visualType)) {\r\n visualTypesInPieces[visualType] = 1;\r\n }\r\n });\r\n });\r\n each(visualTypesInPieces, function (v, visualType) {\r\n var exists = false;\r\n each(this.stateList, function (state) {\r\n exists = exists || has(option, state, visualType)\r\n || has(option.target, state, visualType);\r\n }, this);\r\n !exists && each(this.stateList, function (state) {\r\n (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\r\n });\r\n }, this);\r\n function has(obj, state, visualType) {\r\n return obj && obj[state] && obj[state].hasOwnProperty(visualType);\r\n }\r\n _super.prototype.completeVisualOption.apply(this, arguments);\r\n };\r\n PiecewiseModel.prototype._resetSelected = function (newOption, isInit) {\r\n var thisOption = this.option;\r\n var pieceList = this._pieceList;\r\n var selected = (isInit ? thisOption : newOption).selected || {};\r\n thisOption.selected = selected;\r\n each(pieceList, function (piece, index) {\r\n var key = this.getSelectedMapKey(piece);\r\n if (!selected.hasOwnProperty(key)) {\r\n selected[key] = true;\r\n }\r\n }, this);\r\n if (thisOption.selectedMode === 'single') {\r\n var hasSel_1 = false;\r\n each(pieceList, function (piece, index) {\r\n var key = this.getSelectedMapKey(piece);\r\n if (selected[key]) {\r\n hasSel_1\r\n ? (selected[key] = false)\r\n : (hasSel_1 = true);\r\n }\r\n }, this);\r\n }\r\n };\r\n PiecewiseModel.prototype.getSelectedMapKey = function (piece) {\r\n return this._mode === 'categories'\r\n ? piece.value + '' : piece.index + '';\r\n };\r\n PiecewiseModel.prototype.getPieceList = function () {\r\n return this._pieceList;\r\n };\r\n PiecewiseModel.prototype._determineMode = function () {\r\n var option = this.option;\r\n return option.pieces && option.pieces.length > 0\r\n ? 'pieces'\r\n : this.option.categories\r\n ? 'categories'\r\n : 'splitNumber';\r\n };\r\n PiecewiseModel.prototype.setSelected = function (selected) {\r\n this.option.selected = clone(selected);\r\n };\r\n PiecewiseModel.prototype.getValueState = function (value) {\r\n var index = VisualMapping.findPieceIndex(value, this._pieceList);\r\n return index != null\r\n ? (this.option.selected[this.getSelectedMapKey(this._pieceList[index])]\r\n ? 'inRange' : 'outOfRange')\r\n : 'outOfRange';\r\n };\r\n PiecewiseModel.prototype.findTargetDataIndices = function (pieceIndex) {\r\n var result = [];\r\n var pieceList = this._pieceList;\r\n this.eachTargetSeries(function (seriesModel) {\r\n var dataIndices = [];\r\n var data = seriesModel.getData();\r\n data.each(this.getDataDimension(data), function (value, dataIndex) {\r\n var pIdx = VisualMapping.findPieceIndex(value, pieceList);\r\n pIdx === pieceIndex && dataIndices.push(dataIndex);\r\n }, this);\r\n result.push({ seriesId: seriesModel.id, dataIndex: dataIndices });\r\n }, this);\r\n return result;\r\n };\r\n PiecewiseModel.prototype.getRepresentValue = function (piece) {\r\n var representValue;\r\n if (this.isCategory()) {\r\n representValue = piece.value;\r\n }\r\n else {\r\n if (piece.value != null) {\r\n representValue = piece.value;\r\n }\r\n else {\r\n var pieceInterval = piece.interval || [];\r\n representValue = (pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity)\r\n ? 0\r\n : (pieceInterval[0] + pieceInterval[1]) / 2;\r\n }\r\n }\r\n return representValue;\r\n };\r\n PiecewiseModel.prototype.getVisualMeta = function (getColorVisual) {\r\n if (this.isCategory()) {\r\n return;\r\n }\r\n var stops = [];\r\n var outerColors = ['', ''];\r\n var visualMapModel = this;\r\n function setStop(interval, valueState) {\r\n var representValue = visualMapModel.getRepresentValue({\r\n interval: interval\r\n });\r\n if (!valueState) {\r\n valueState = visualMapModel.getValueState(representValue);\r\n }\r\n var color = getColorVisual(representValue, valueState);\r\n if (interval[0] === -Infinity) {\r\n outerColors[0] = color;\r\n }\r\n else if (interval[1] === Infinity) {\r\n outerColors[1] = color;\r\n }\r\n else {\r\n stops.push({ value: interval[0], color: color }, { value: interval[1], color: color });\r\n }\r\n }\r\n var pieceList = this._pieceList.slice();\r\n if (!pieceList.length) {\r\n pieceList.push({ interval: [-Infinity, Infinity] });\r\n }\r\n else {\r\n var edge = pieceList[0].interval[0];\r\n edge !== -Infinity && pieceList.unshift({ interval: [-Infinity, edge] });\r\n edge = pieceList[pieceList.length - 1].interval[1];\r\n edge !== Infinity && pieceList.push({ interval: [edge, Infinity] });\r\n }\r\n var curr = -Infinity;\r\n each(pieceList, function (piece) {\r\n var interval = piece.interval;\r\n if (interval) {\r\n interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\r\n setStop(interval.slice());\r\n curr = interval[1];\r\n }\r\n }, this);\r\n return { stops: stops, outerColors: outerColors };\r\n };\r\n PiecewiseModel.type = 'visualMap.piecewise';\r\n PiecewiseModel.defaultOption = inheritDefaultOption(VisualMapModel.defaultOption, {\r\n selected: null,\r\n minOpen: false,\r\n maxOpen: false,\r\n align: 'auto',\r\n itemWidth: 20,\r\n itemHeight: 14,\r\n itemSymbol: 'roundRect',\r\n pieces: null,\r\n categories: null,\r\n splitNumber: 5,\r\n selectedMode: 'multiple',\r\n itemGap: 10,\r\n hoverLink: true\r\n });\r\n return PiecewiseModel;\r\n}(VisualMapModel));\r\nvar resetMethods = {\r\n splitNumber: function (outPieceList) {\r\n var thisOption = this.option;\r\n var precision = Math.min(thisOption.precision, 20);\r\n var dataExtent = this.getExtent();\r\n var splitNumber = thisOption.splitNumber;\r\n splitNumber = Math.max(parseInt(splitNumber, 10), 1);\r\n thisOption.splitNumber = splitNumber;\r\n var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber;\r\n while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\r\n precision++;\r\n }\r\n thisOption.precision = precision;\r\n splitStep = +splitStep.toFixed(precision);\r\n if (thisOption.minOpen) {\r\n outPieceList.push({\r\n interval: [-Infinity, dataExtent[0]],\r\n close: [0, 0]\r\n });\r\n }\r\n for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {\r\n var max = index === splitNumber - 1 ? dataExtent[1] : (curr + splitStep);\r\n outPieceList.push({\r\n interval: [curr, max],\r\n close: [1, 1]\r\n });\r\n }\r\n if (thisOption.maxOpen) {\r\n outPieceList.push({\r\n interval: [dataExtent[1], Infinity],\r\n close: [0, 0]\r\n });\r\n }\r\n reformIntervals(outPieceList);\r\n each(outPieceList, function (piece, index) {\r\n piece.index = index;\r\n piece.text = this.formatValueText(piece.interval);\r\n }, this);\r\n },\r\n categories: function (outPieceList) {\r\n var thisOption = this.option;\r\n each(thisOption.categories, function (cate) {\r\n outPieceList.push({\r\n text: this.formatValueText(cate, true),\r\n value: cate\r\n });\r\n }, this);\r\n normalizeReverse(thisOption, outPieceList);\r\n },\r\n pieces: function (outPieceList) {\r\n var thisOption = this.option;\r\n each(thisOption.pieces, function (pieceListItem, index) {\r\n if (!isObject(pieceListItem)) {\r\n pieceListItem = { value: pieceListItem };\r\n }\r\n var item = { text: '', index: index };\r\n if (pieceListItem.label != null) {\r\n item.text = pieceListItem.label;\r\n }\r\n if (pieceListItem.hasOwnProperty('value')) {\r\n var value = item.value = pieceListItem.value;\r\n item.interval = [value, value];\r\n item.close = [1, 1];\r\n }\r\n else {\r\n var interval = item.interval = [];\r\n var close_1 = item.close = [0, 0];\r\n var closeList = [1, 0, 1];\r\n var infinityList = [-Infinity, Infinity];\r\n var useMinMax = [];\r\n for (var lg = 0; lg < 2; lg++) {\r\n var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\r\n for (var i = 0; i < 3 && interval[lg] == null; i++) {\r\n interval[lg] = pieceListItem[names[i]];\r\n close_1[lg] = closeList[i];\r\n useMinMax[lg] = i === 2;\r\n }\r\n interval[lg] == null && (interval[lg] = infinityList[lg]);\r\n }\r\n useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0);\r\n useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0);\r\n if (__DEV__) {\r\n if (interval[0] > interval[1]) {\r\n console.warn('Piece ' + index + 'is illegal: ' + interval\r\n + ' lower bound should not greater then uppper bound.');\r\n }\r\n }\r\n if (interval[0] === interval[1] && close_1[0] && close_1[1]) {\r\n item.value = interval[0];\r\n }\r\n }\r\n item.visual = VisualMapping.retrieveVisuals(pieceListItem);\r\n outPieceList.push(item);\r\n }, this);\r\n normalizeReverse(thisOption, outPieceList);\r\n reformIntervals(outPieceList);\r\n each(outPieceList, function (piece) {\r\n var close = piece.close;\r\n var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\r\n piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\r\n }, this);\r\n }\r\n};\r\nfunction normalizeReverse(thisOption, pieceList) {\r\n var inverse = thisOption.inverse;\r\n if (thisOption.orient === 'vertical' ? !inverse : inverse) {\r\n pieceList.reverse();\r\n }\r\n}\r\nComponentModel.registerClass(PiecewiseModel);\n\nvar PiecewiseVisualMapView = (function (_super) {\r\n __extends(PiecewiseVisualMapView, _super);\r\n function PiecewiseVisualMapView() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.type = PiecewiseVisualMapView.type;\r\n return _this;\r\n }\r\n PiecewiseVisualMapView.prototype.doRender = function () {\r\n var thisGroup = this.group;\r\n thisGroup.removeAll();\r\n var visualMapModel = this.visualMapModel;\r\n var textGap = visualMapModel.get('textGap');\r\n var textStyleModel = visualMapModel.textStyleModel;\r\n var textFont = textStyleModel.getFont();\r\n var textFill = textStyleModel.getTextColor();\r\n var itemAlign = this._getItemAlign();\r\n var itemSize = visualMapModel.itemSize;\r\n var viewData = this._getViewData();\r\n var endsText = viewData.endsText;\r\n var showLabel = retrieve(visualMapModel.get('showLabel', true), !endsText);\r\n endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\r\n each(viewData.viewPieceList, function (item) {\r\n var piece = item.piece;\r\n var itemGroup = new Group();\r\n itemGroup.onclick = bind(this._onItemClick, this, piece);\r\n this._enableHoverLink(itemGroup, item.indexInModelPieceList);\r\n var representValue = visualMapModel.getRepresentValue(piece);\r\n this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\r\n if (showLabel) {\r\n var visualState = this.visualMapModel.getValueState(representValue);\r\n itemGroup.add(new ZRText({\r\n style: {\r\n x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\r\n y: itemSize[1] / 2,\r\n text: piece.text,\r\n verticalAlign: 'middle',\r\n align: itemAlign,\r\n font: textFont,\r\n fill: textFill,\r\n opacity: visualState === 'outOfRange' ? 0.5 : 1\r\n }\r\n }));\r\n }\r\n thisGroup.add(itemGroup);\r\n }, this);\r\n endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\r\n box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\r\n this.renderBackground(thisGroup);\r\n this.positionGroup(thisGroup);\r\n };\r\n PiecewiseVisualMapView.prototype._enableHoverLink = function (itemGroup, pieceIndex) {\r\n var _this = this;\r\n itemGroup\r\n .on('mouseover', function () { return onHoverLink('highlight'); })\r\n .on('mouseout', function () { return onHoverLink('downplay'); });\r\n var onHoverLink = function (method) {\r\n var visualMapModel = _this.visualMapModel;\r\n visualMapModel.option.hoverLink && _this.api.dispatchAction({\r\n type: method,\r\n batch: makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)\r\n });\r\n };\r\n };\r\n PiecewiseVisualMapView.prototype._getItemAlign = function () {\r\n var visualMapModel = this.visualMapModel;\r\n var modelOption = visualMapModel.option;\r\n if (modelOption.orient === 'vertical') {\r\n return getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\r\n }\r\n else {\r\n var align = modelOption.align;\r\n if (!align || align === 'auto') {\r\n align = 'left';\r\n }\r\n return align;\r\n }\r\n };\r\n PiecewiseVisualMapView.prototype._renderEndsText = function (group, text, itemSize, showLabel, itemAlign) {\r\n if (!text) {\r\n return;\r\n }\r\n var itemGroup = new Group();\r\n var textStyleModel = this.visualMapModel.textStyleModel;\r\n itemGroup.add(new ZRText({\r\n style: {\r\n x: showLabel ? (itemAlign === 'right' ? itemSize[0] : 0) : itemSize[0] / 2,\r\n y: itemSize[1] / 2,\r\n verticalAlign: 'middle',\r\n align: showLabel ? itemAlign : 'center',\r\n text: text,\r\n font: textStyleModel.getFont(),\r\n fill: textStyleModel.getTextColor()\r\n }\r\n }));\r\n group.add(itemGroup);\r\n };\r\n PiecewiseVisualMapView.prototype._getViewData = function () {\r\n var visualMapModel = this.visualMapModel;\r\n var viewPieceList = map(visualMapModel.getPieceList(), function (piece, index) {\r\n return { piece: piece, indexInModelPieceList: index };\r\n });\r\n var endsText = visualMapModel.get('text');\r\n var orient = visualMapModel.get('orient');\r\n var inverse = visualMapModel.get('inverse');\r\n if (orient === 'horizontal' ? inverse : !inverse) {\r\n viewPieceList.reverse();\r\n }\r\n else if (endsText) {\r\n endsText = endsText.slice().reverse();\r\n }\r\n return { viewPieceList: viewPieceList, endsText: endsText };\r\n };\r\n PiecewiseVisualMapView.prototype._createItemSymbol = function (group, representValue, shapeParam) {\r\n group.add(createSymbol(this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, 'color')));\r\n };\r\n PiecewiseVisualMapView.prototype._onItemClick = function (piece) {\r\n var visualMapModel = this.visualMapModel;\r\n var option = visualMapModel.option;\r\n var selected = clone(option.selected);\r\n var newKey = visualMapModel.getSelectedMapKey(piece);\r\n if (option.selectedMode === 'single') {\r\n selected[newKey] = true;\r\n each(selected, function (o, key) {\r\n selected[key] = key === newKey;\r\n });\r\n }\r\n else {\r\n selected[newKey] = !selected[newKey];\r\n }\r\n this.api.dispatchAction({\r\n type: 'selectDataRange',\r\n from: this.uid,\r\n visualMapId: this.visualMapModel.id,\r\n selected: selected\r\n });\r\n };\r\n PiecewiseVisualMapView.type = 'visualMap.piecewise';\r\n return PiecewiseVisualMapView;\r\n}(VisualMapView));\r\nComponentView.registerClass(PiecewiseVisualMapView);\n\nregisterPreprocessor(visualMapPreprocessor);\n\nvar DEFAULT_OPTION = {\r\n label: {\r\n enabled: true\r\n },\r\n decal: {\r\n show: false\r\n }\r\n};\r\nvar inner$n = makeInner();\r\nvar decalPaletteScope = {};\r\nfunction ariaVisual(ecModel, api) {\r\n var ariaModel = ecModel.getModel('aria');\r\n if (!ariaModel.get('enabled')) {\r\n return;\r\n }\r\n var defaultOption = clone(DEFAULT_OPTION);\r\n merge(defaultOption.label, ecModel.getLocaleModel().get('aria'), false);\r\n merge(ariaModel.option, defaultOption, false);\r\n setDecal();\r\n setLabel();\r\n function setDecal() {\r\n var decalModel = ariaModel.getModel('decal');\r\n var useDecal = decalModel.get('show');\r\n if (useDecal) {\r\n var paletteScopeGroupByType_1 = createHashMap();\r\n ecModel.eachSeries(function (seriesModel) {\r\n if (!seriesModel.useColorPaletteOnData) {\r\n return;\r\n }\r\n var decalScope = paletteScopeGroupByType_1.get(seriesModel.type);\r\n if (!decalScope) {\r\n decalScope = {};\r\n paletteScopeGroupByType_1.set(seriesModel.type, decalScope);\r\n }\r\n inner$n(seriesModel).scope = decalScope;\r\n });\r\n ecModel.eachRawSeries(function (seriesModel) {\r\n if (ecModel.isSeriesFiltered(seriesModel)) {\r\n return;\r\n }\r\n if (typeof seriesModel.enableAriaDecal === 'function') {\r\n seriesModel.enableAriaDecal();\r\n return;\r\n }\r\n var data = seriesModel.getData();\r\n if (seriesModel.useColorPaletteOnData) {\r\n var dataAll_1 = seriesModel.getRawData();\r\n var idxMap_1 = {};\r\n var decalScope_1 = inner$n(seriesModel).scope;\r\n data.each(function (idx) {\r\n var rawIdx = data.getRawIndex(idx);\r\n idxMap_1[rawIdx] = idx;\r\n });\r\n var dataCount_1 = dataAll_1.count();\r\n dataAll_1.each(function (rawIdx) {\r\n var idx = idxMap_1[rawIdx];\r\n var name = dataAll_1.getName(rawIdx) || (rawIdx + '');\r\n var paletteDecal = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1);\r\n var specifiedDecal = data.getItemVisual(idx, 'decal');\r\n data.setItemVisual(idx, 'decal', mergeDecal(specifiedDecal, paletteDecal));\r\n });\r\n }\r\n else {\r\n var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount());\r\n var specifiedDecal = data.getVisual('decal');\r\n data.setVisual('decal', mergeDecal(specifiedDecal, paletteDecal));\r\n }\r\n function mergeDecal(specifiedDecal, paletteDecal) {\r\n var resultDecal = specifiedDecal\r\n ? extend(extend({}, paletteDecal), specifiedDecal)\r\n : paletteDecal;\r\n resultDecal.dirty = true;\r\n return resultDecal;\r\n }\r\n });\r\n }\r\n }\r\n function setLabel() {\r\n var labelLocale = ecModel.getLocaleModel().get('aria');\r\n var labelModel = ariaModel.getModel('label');\r\n labelModel.option = defaults(labelModel.option, labelLocale);\r\n if (!labelModel.get('enabled')) {\r\n return;\r\n }\r\n var dom = api.getZr().dom;\r\n if (labelModel.get('description')) {\r\n dom.setAttribute('aria-label', labelModel.get('description'));\r\n return;\r\n }\r\n var seriesCnt = ecModel.getSeriesCount();\r\n var maxDataCnt = labelModel.get(['data', 'maxCount']) || 10;\r\n var maxSeriesCnt = labelModel.get(['series', 'maxCount']) || 10;\r\n var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\r\n var ariaLabel;\r\n if (seriesCnt < 1) {\r\n return;\r\n }\r\n else {\r\n var title = getTitle();\r\n if (title) {\r\n var withTitle = labelModel.get(['general', 'withTitle']);\r\n ariaLabel = replace(withTitle, {\r\n title: title\r\n });\r\n }\r\n else {\r\n ariaLabel = labelModel.get(['general', 'withoutTitle']);\r\n }\r\n var seriesLabels_1 = [];\r\n var prefix = seriesCnt > 1\r\n ? labelModel.get(['series', 'multiple', 'prefix'])\r\n : labelModel.get(['series', 'single', 'prefix']);\r\n ariaLabel += replace(prefix, { seriesCount: seriesCnt });\r\n ecModel.eachSeries(function (seriesModel, idx) {\r\n if (idx < displaySeriesCnt) {\r\n var seriesLabel = void 0;\r\n var seriesName = seriesModel.get('name');\r\n var withName = seriesName ? 'withName' : 'withoutName';\r\n seriesLabel = seriesCnt > 1\r\n ? labelModel.get(['series', 'multiple', withName])\r\n : labelModel.get(['series', 'single', withName]);\r\n seriesLabel = replace(seriesLabel, {\r\n seriesId: seriesModel.seriesIndex,\r\n seriesName: seriesModel.get('name'),\r\n seriesType: getSeriesTypeName(seriesModel.subType)\r\n });\r\n var data = seriesModel.getData();\r\n if (data.count() > maxDataCnt) {\r\n var partialLabel = labelModel.get(['data', 'partialData']);\r\n seriesLabel += replace(partialLabel, {\r\n displayCnt: maxDataCnt\r\n });\r\n }\r\n else {\r\n seriesLabel += labelModel.get(['data', 'allData']);\r\n }\r\n var dataLabels = [];\r\n for (var i = 0; i < data.count(); i++) {\r\n if (i < maxDataCnt) {\r\n var name_1 = data.getName(i);\r\n var value = retrieveRawValue(data, i);\r\n var dataLabel = labelModel.get(['data', name_1 ? 'withName' : 'withoutName']);\r\n dataLabels.push(replace(dataLabel, {\r\n name: name_1,\r\n value: value\r\n }));\r\n }\r\n }\r\n var middleSeparator_1 = labelModel.get(['data', 'separator', 'middle']);\r\n var endSeparator_1 = labelModel.get(['data', 'separator', 'end']);\r\n seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1;\r\n seriesLabels_1.push(seriesLabel);\r\n }\r\n });\r\n var separatorModel = labelModel.getModel(['series', 'multiple', 'separator']);\r\n var middleSeparator = separatorModel.get('middle');\r\n var endSeparator = separatorModel.get('end');\r\n ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator;\r\n dom.setAttribute('aria-label', ariaLabel);\r\n }\r\n }\r\n function replace(str, keyValues) {\r\n if (typeof str !== 'string') {\r\n return str;\r\n }\r\n var result = str;\r\n each(keyValues, function (value, key) {\r\n result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\r\n });\r\n return result;\r\n }\r\n function getTitle() {\r\n var title = ecModel.get('title');\r\n if (title && title.length) {\r\n title = title[0];\r\n }\r\n return title && title.text;\r\n }\r\n function getSeriesTypeName(type) {\r\n return ecModel.getLocaleModel().get(['series', 'typeNames'])[type] || '自定义图';\r\n }\r\n}\n\nfunction ariaPreprocessor(option) {\r\n if (!option || !option.aria) {\r\n return;\r\n }\r\n var aria = option.aria;\r\n if (aria.show != null) {\r\n aria.enabled = aria.show;\r\n }\r\n aria.label = aria.label || {};\r\n each(['description', 'general', 'series', 'data'], function (name) {\r\n if (aria[name] != null) {\r\n aria.label[name] = aria[name];\r\n }\r\n });\r\n}\n\nvar PRIORITY_VISUAL_ARIA$1 = PRIORITY.VISUAL.ARIA;\r\nregisterPreprocessor(ariaPreprocessor);\r\nregisterVisual(PRIORITY_VISUAL_ARIA$1, ariaVisual);\n\nfunction createElement(name) {\r\n return document.createElementNS('http://www.w3.org/2000/svg', name);\r\n}\n\nvar NONE = 'none';\r\nvar mathRound = Math.round;\r\nvar mathSin$4 = Math.sin;\r\nvar mathCos$4 = Math.cos;\r\nvar PI$a = Math.PI;\r\nvar PI2$a = Math.PI * 2;\r\nvar degree = 180 / PI$a;\r\nvar EPSILON$4 = 1e-4;\r\nfunction round3(val) {\r\n return mathRound(val * 1e3) / 1e3;\r\n}\r\nfunction round4(val) {\r\n return mathRound(val * 1e4) / 1e4;\r\n}\r\nfunction isAroundZero$1(val) {\r\n return val < EPSILON$4 && val > -EPSILON$4;\r\n}\r\nfunction pathHasFill(style) {\r\n var fill = style.fill;\r\n return fill != null && fill !== NONE;\r\n}\r\nfunction pathHasStroke(style) {\r\n var stroke = style.stroke;\r\n return stroke != null && stroke !== NONE;\r\n}\r\nfunction setTransform(svgEl, m) {\r\n if (m) {\r\n attr(svgEl, 'transform', 'matrix('\r\n + round3(m[0]) + ','\r\n + round3(m[1]) + ','\r\n + round3(m[2]) + ','\r\n + round3(m[3]) + ','\r\n + round4(m[4]) + ','\r\n + round4(m[5])\r\n + ')');\r\n }\r\n}\r\nfunction attr(el, key, val) {\r\n if (!val || val.type !== 'linear' && val.type !== 'radial') {\r\n el.setAttribute(key, val);\r\n }\r\n}\r\nfunction attrXLink(el, key, val) {\r\n el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\r\n}\r\nfunction attrXML(el, key, val) {\r\n el.setAttributeNS('http://www.w3.org/XML/1998/namespace', key, val);\r\n}\r\nfunction bindStyle(svgEl, style, el) {\r\n var opacity = style.opacity == null ? 1 : style.opacity;\r\n if (pathHasFill(style)) {\r\n var fill = style.fill;\r\n fill = fill === 'transparent' ? NONE : fill;\r\n attr(svgEl, 'fill', fill);\r\n attr(svgEl, 'fill-opacity', (style.fillOpacity != null ? style.fillOpacity * opacity : opacity) + '');\r\n }\r\n else {\r\n attr(svgEl, 'fill', NONE);\r\n }\r\n if (pathHasStroke(style)) {\r\n var stroke = style.stroke;\r\n stroke = stroke === 'transparent' ? NONE : stroke;\r\n attr(svgEl, 'stroke', stroke);\r\n var strokeWidth = style.lineWidth;\r\n var strokeScale_1 = style.strokeNoScale\r\n ? el.getLineScale()\r\n : 1;\r\n attr(svgEl, 'stroke-width', (strokeScale_1 ? strokeWidth / strokeScale_1 : 0) + '');\r\n attr(svgEl, 'paint-order', style.strokeFirst ? 'stroke' : 'fill');\r\n attr(svgEl, 'stroke-opacity', (style.strokeOpacity != null ? style.strokeOpacity * opacity : opacity) + '');\r\n var lineDash = style.lineDash && strokeWidth > 0 && normalizeLineDash(style.lineDash, strokeWidth);\r\n if (lineDash) {\r\n var lineDashOffset = style.lineDashOffset;\r\n if (strokeScale_1 && strokeScale_1 !== 1) {\r\n lineDash = map(lineDash, function (rawVal) {\r\n return rawVal / strokeScale_1;\r\n });\r\n if (lineDashOffset) {\r\n lineDashOffset /= strokeScale_1;\r\n lineDashOffset = mathRound(lineDashOffset);\r\n }\r\n }\r\n attr(svgEl, 'stroke-dasharray', lineDash.join(','));\r\n attr(svgEl, 'stroke-dashoffset', (lineDashOffset || 0) + '');\r\n }\r\n else {\r\n attr(svgEl, 'stroke-dasharray', '');\r\n }\r\n style.lineCap && attr(svgEl, 'stroke-linecap', style.lineCap);\r\n style.lineJoin && attr(svgEl, 'stroke-linejoin', style.lineJoin);\r\n style.miterLimit && attr(svgEl, 'stroke-miterlimit', style.miterLimit + '');\r\n }\r\n else {\r\n attr(svgEl, 'stroke', NONE);\r\n }\r\n}\r\nvar SVGPathRebuilder = (function () {\r\n function SVGPathRebuilder() {\r\n }\r\n SVGPathRebuilder.prototype.reset = function () {\r\n this._d = [];\r\n this._str = '';\r\n };\r\n SVGPathRebuilder.prototype.moveTo = function (x, y) {\r\n this._add('M', x, y);\r\n };\r\n SVGPathRebuilder.prototype.lineTo = function (x, y) {\r\n this._add('L', x, y);\r\n };\r\n SVGPathRebuilder.prototype.bezierCurveTo = function (x, y, x2, y2, x3, y3) {\r\n this._add('C', x, y, x2, y2, x3, y3);\r\n };\r\n SVGPathRebuilder.prototype.quadraticCurveTo = function (x, y, x2, y2) {\r\n this._add('Q', x, y, x2, y2);\r\n };\r\n SVGPathRebuilder.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\r\n this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise);\r\n };\r\n SVGPathRebuilder.prototype.ellipse = function (cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) {\r\n var firstCmd = this._d.length === 0;\r\n var dTheta = endAngle - startAngle;\r\n var clockwise = !anticlockwise;\r\n var dThetaPositive = Math.abs(dTheta);\r\n var isCircle = isAroundZero$1(dThetaPositive - PI2$a)\r\n || (clockwise ? dTheta >= PI2$a : -dTheta >= PI2$a);\r\n var unifiedTheta = dTheta > 0 ? dTheta % PI2$a : (dTheta % PI2$a + PI2$a);\r\n var large = false;\r\n if (isCircle) {\r\n large = true;\r\n }\r\n else if (isAroundZero$1(dThetaPositive)) {\r\n large = false;\r\n }\r\n else {\r\n large = (unifiedTheta >= PI$a) === !!clockwise;\r\n }\r\n var x0 = round4(cx + rx * mathCos$4(startAngle));\r\n var y0 = round4(cy + ry * mathSin$4(startAngle));\r\n if (isCircle) {\r\n if (clockwise) {\r\n dTheta = PI2$a - 1e-4;\r\n }\r\n else {\r\n dTheta = -PI2$a + 1e-4;\r\n }\r\n large = true;\r\n if (firstCmd) {\r\n this._d.push('M', x0, y0);\r\n }\r\n }\r\n var x = round4(cx + rx * mathCos$4(startAngle + dTheta));\r\n var y = round4(cy + ry * mathSin$4(startAngle + dTheta));\r\n if (isNaN(x0) || isNaN(y0) || isNaN(rx) || isNaN(ry) || isNaN(psi) || isNaN(degree) || isNaN(x) || isNaN(y)) {\r\n return '';\r\n }\r\n this._d.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);\r\n };\r\n SVGPathRebuilder.prototype.rect = function (x, y, w, h) {\r\n this._add('M', x, y);\r\n this._add('L', x + w, y);\r\n this._add('L', x + w, y + h);\r\n this._add('L', x, y + h);\r\n this._add('L', x, y);\r\n };\r\n SVGPathRebuilder.prototype.closePath = function () {\r\n if (this._d.length > 0) {\r\n this._add('Z');\r\n }\r\n };\r\n SVGPathRebuilder.prototype._add = function (cmd, a, b, c, d, e, f, g, h) {\r\n this._d.push(cmd);\r\n for (var i = 1; i < arguments.length; i++) {\r\n var val = arguments[i];\r\n if (isNaN(val)) {\r\n this._invalid = true;\r\n return;\r\n }\r\n this._d.push(round4(val));\r\n }\r\n };\r\n SVGPathRebuilder.prototype.generateStr = function () {\r\n this._str = this._invalid ? '' : this._d.join(' ');\r\n this._d = [];\r\n };\r\n SVGPathRebuilder.prototype.getStr = function () {\r\n return this._str;\r\n };\r\n return SVGPathRebuilder;\r\n}());\r\nvar svgPath = {\r\n brush: function (el) {\r\n var style = el.style;\r\n var svgEl = el.__svgEl;\r\n if (!svgEl) {\r\n svgEl = createElement('path');\r\n el.__svgEl = svgEl;\r\n }\r\n if (!el.path) {\r\n el.createPathProxy();\r\n }\r\n var path = el.path;\r\n if (el.shapeChanged()) {\r\n path.beginPath();\r\n el.buildPath(path, el.shape);\r\n el.pathUpdated();\r\n }\r\n var pathVersion = path.getVersion();\r\n var elExt = el;\r\n var svgPathBuilder = elExt.__svgPathBuilder;\r\n if (elExt.__svgPathVersion !== pathVersion || !svgPathBuilder || el.style.strokePercent < 1) {\r\n if (!svgPathBuilder) {\r\n svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder();\r\n }\r\n svgPathBuilder.reset();\r\n path.rebuildPath(svgPathBuilder, el.style.strokePercent);\r\n svgPathBuilder.generateStr();\r\n elExt.__svgPathVersion = pathVersion;\r\n }\r\n attr(svgEl, 'd', svgPathBuilder.getStr());\r\n bindStyle(svgEl, style, el);\r\n setTransform(svgEl, el.transform);\r\n }\r\n};\r\nvar svgImage = {\r\n brush: function (el) {\r\n var style = el.style;\r\n var image = style.image;\r\n if (image instanceof HTMLImageElement) {\r\n var src = image.src;\r\n image = src;\r\n }\r\n if (!image) {\r\n return;\r\n }\r\n var x = style.x || 0;\r\n var y = style.y || 0;\r\n var dw = style.width;\r\n var dh = style.height;\r\n var svgEl = el.__svgEl;\r\n if (!svgEl) {\r\n svgEl = createElement('image');\r\n el.__svgEl = svgEl;\r\n }\r\n if (image !== el.__imageSrc) {\r\n attrXLink(svgEl, 'href', image);\r\n el.__imageSrc = image;\r\n }\r\n attr(svgEl, 'width', dw + '');\r\n attr(svgEl, 'height', dh + '');\r\n attr(svgEl, 'x', x + '');\r\n attr(svgEl, 'y', y + '');\r\n setTransform(svgEl, el.transform);\r\n }\r\n};\r\nvar TEXT_ALIGN_TO_ANCHOR = {\r\n left: 'start',\r\n right: 'end',\r\n center: 'middle',\r\n middle: 'middle'\r\n};\r\nfunction adjustTextY$1(y, lineHeight, textBaseline) {\r\n if (textBaseline === 'top') {\r\n y += lineHeight / 2;\r\n }\r\n else if (textBaseline === 'bottom') {\r\n y -= lineHeight / 2;\r\n }\r\n return y;\r\n}\r\nvar svgText = {\r\n brush: function (el) {\r\n var style = el.style;\r\n var text = style.text;\r\n text != null && (text += '');\r\n if (!text || isNaN(style.x) || isNaN(style.y)) {\r\n return;\r\n }\r\n var textSvgEl = el.__svgEl;\r\n if (!textSvgEl) {\r\n textSvgEl = createElement('text');\r\n attrXML(textSvgEl, 'xml:space', 'preserve');\r\n el.__svgEl = textSvgEl;\r\n }\r\n var font = style.font || DEFAULT_FONT;\r\n var textSvgElStyle = textSvgEl.style;\r\n textSvgElStyle.font = font;\r\n textSvgEl.textContent = text;\r\n bindStyle(textSvgEl, style, el);\r\n setTransform(textSvgEl, el.transform);\r\n var x = style.x || 0;\r\n var y = adjustTextY$1(style.y || 0, getLineHeight(font), style.textBaseline);\r\n var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign]\r\n || style.textAlign;\r\n attr(textSvgEl, 'dominant-baseline', 'central');\r\n attr(textSvgEl, 'text-anchor', textAlign);\r\n attr(textSvgEl, 'x', x + '');\r\n attr(textSvgEl, 'y', y + '');\r\n }\r\n};\n\nfunction diff(oldArr, newArr, equals) {\r\n if (!equals) {\r\n equals = function (a, b) {\r\n return a === b;\r\n };\r\n }\r\n oldArr = oldArr.slice();\r\n newArr = newArr.slice();\r\n var newLen = newArr.length;\r\n var oldLen = oldArr.length;\r\n var editLength = 1;\r\n var maxEditLength = newLen + oldLen;\r\n var bestPath = [{ newPos: -1, components: [] }];\r\n var oldPos = extractCommon(bestPath[0], newArr, oldArr, 0, equals);\r\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\r\n var indices = [];\r\n for (var i = 0; i < newArr.length; i++) {\r\n indices.push(i);\r\n }\r\n return [{\r\n indices: indices,\r\n count: newArr.length,\r\n added: false,\r\n removed: false\r\n }];\r\n }\r\n function execEditLength() {\r\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\r\n var basePath;\r\n var addPath = bestPath[diagonalPath - 1];\r\n var removePath = bestPath[diagonalPath + 1];\r\n var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\r\n if (addPath) {\r\n bestPath[diagonalPath - 1] = undefined;\r\n }\r\n var canAdd = addPath && addPath.newPos + 1 < newLen;\r\n var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;\r\n if (!canAdd && !canRemove) {\r\n bestPath[diagonalPath] = undefined;\r\n continue;\r\n }\r\n if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {\r\n basePath = clonePath(removePath);\r\n pushComponent(basePath.components, false, true);\r\n }\r\n else {\r\n basePath = addPath;\r\n basePath.newPos++;\r\n pushComponent(basePath.components, true, false);\r\n }\r\n oldPos = extractCommon(basePath, newArr, oldArr, diagonalPath, equals);\r\n if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\r\n return buildValues(basePath.components);\r\n }\r\n else {\r\n bestPath[diagonalPath] = basePath;\r\n }\r\n }\r\n editLength++;\r\n }\r\n while (editLength <= maxEditLength) {\r\n var ret = execEditLength();\r\n if (ret) {\r\n return ret;\r\n }\r\n }\r\n}\r\nfunction extractCommon(basePath, newArr, oldArr, diagonalPath, equals) {\r\n var newLen = newArr.length;\r\n var oldLen = oldArr.length;\r\n var newPos = basePath.newPos;\r\n var oldPos = newPos - diagonalPath;\r\n var commonCount = 0;\r\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && equals(newArr[newPos + 1], oldArr[oldPos + 1])) {\r\n newPos++;\r\n oldPos++;\r\n commonCount++;\r\n }\r\n if (commonCount) {\r\n basePath.components.push({\r\n count: commonCount,\r\n added: false,\r\n removed: false,\r\n indices: []\r\n });\r\n }\r\n basePath.newPos = newPos;\r\n return oldPos;\r\n}\r\nfunction pushComponent(components, added, removed) {\r\n var last = components[components.length - 1];\r\n if (last && last.added === added && last.removed === removed) {\r\n components[components.length - 1] = {\r\n count: last.count + 1,\r\n added: added,\r\n removed: removed,\r\n indices: []\r\n };\r\n }\r\n else {\r\n components.push({\r\n count: 1,\r\n added: added,\r\n removed: removed,\r\n indices: []\r\n });\r\n }\r\n}\r\nfunction buildValues(components) {\r\n var componentPos = 0;\r\n var componentLen = components.length;\r\n var newPos = 0;\r\n var oldPos = 0;\r\n for (; componentPos < componentLen; componentPos++) {\r\n var component = components[componentPos];\r\n if (!component.removed) {\r\n var indices = [];\r\n for (var i = newPos; i < newPos + component.count; i++) {\r\n indices.push(i);\r\n }\r\n component.indices = indices;\r\n newPos += component.count;\r\n if (!component.added) {\r\n oldPos += component.count;\r\n }\r\n }\r\n else {\r\n for (var i = oldPos; i < oldPos + component.count; i++) {\r\n component.indices.push(i);\r\n }\r\n oldPos += component.count;\r\n }\r\n }\r\n return components;\r\n}\r\nfunction clonePath(path) {\r\n return { newPos: path.newPos, components: path.components.slice(0) };\r\n}\r\nfunction arrayDiff(oldArr, newArr, equal) {\r\n return diff(oldArr, newArr, equal);\r\n}\n\nvar MARK_UNUSED = '0';\r\nvar MARK_USED = '1';\r\nvar Definable = (function () {\r\n function Definable(zrId, svgRoot, tagNames, markLabel, domName) {\r\n this.nextId = 0;\r\n this._domName = '_dom';\r\n this.createElement = createElement;\r\n this._zrId = zrId;\r\n this._svgRoot = svgRoot;\r\n this._tagNames = typeof tagNames === 'string' ? [tagNames] : tagNames;\r\n this._markLabel = markLabel;\r\n if (domName) {\r\n this._domName = domName;\r\n }\r\n }\r\n Definable.prototype.getDefs = function (isForceCreating) {\r\n var svgRoot = this._svgRoot;\r\n var defs = this._svgRoot.getElementsByTagName('defs');\r\n if (defs.length === 0) {\r\n if (isForceCreating) {\r\n var defs_1 = svgRoot.insertBefore(this.createElement('defs'), svgRoot.firstChild);\r\n if (!defs_1.contains) {\r\n defs_1.contains = function (el) {\r\n var children = defs_1.children;\r\n if (!children) {\r\n return false;\r\n }\r\n for (var i = children.length - 1; i >= 0; --i) {\r\n if (children[i] === el) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n }\r\n return defs_1;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return defs[0];\r\n }\r\n };\r\n Definable.prototype.doUpdate = function (target, onUpdate) {\r\n if (!target) {\r\n return;\r\n }\r\n var defs = this.getDefs(false);\r\n if (target[this._domName] && defs.contains(target[this._domName])) {\r\n if (typeof onUpdate === 'function') {\r\n onUpdate(target);\r\n }\r\n }\r\n else {\r\n var dom = this.add(target);\r\n if (dom) {\r\n target[this._domName] = dom;\r\n }\r\n }\r\n };\r\n Definable.prototype.add = function (target) {\r\n return null;\r\n };\r\n Definable.prototype.addDom = function (dom) {\r\n var defs = this.getDefs(true);\r\n if (dom.parentNode !== defs) {\r\n defs.appendChild(dom);\r\n }\r\n };\r\n Definable.prototype.removeDom = function (target) {\r\n var defs = this.getDefs(false);\r\n if (defs && target[this._domName]) {\r\n defs.removeChild(target[this._domName]);\r\n target[this._domName] = null;\r\n }\r\n };\r\n Definable.prototype.getDoms = function () {\r\n var defs = this.getDefs(false);\r\n if (!defs) {\r\n return [];\r\n }\r\n var doms = [];\r\n each(this._tagNames, function (tagName) {\r\n var tags = defs.getElementsByTagName(tagName);\r\n for (var i = 0; i < tags.length; i++) {\r\n doms.push(tags[i]);\r\n }\r\n });\r\n return doms;\r\n };\r\n Definable.prototype.markAllUnused = function () {\r\n var doms = this.getDoms();\r\n var that = this;\r\n each(doms, function (dom) {\r\n dom[that._markLabel] = MARK_UNUSED;\r\n });\r\n };\r\n Definable.prototype.markDomUsed = function (dom) {\r\n dom && (dom[this._markLabel] = MARK_USED);\r\n };\r\n Definable.prototype.markDomUnused = function (dom) {\r\n dom && (dom[this._markLabel] = MARK_UNUSED);\r\n };\r\n Definable.prototype.isDomUnused = function (dom) {\r\n return dom && dom[this._markLabel] !== MARK_USED;\r\n };\r\n Definable.prototype.removeUnused = function () {\r\n var _this = this;\r\n var defs = this.getDefs(false);\r\n if (!defs) {\r\n return;\r\n }\r\n var doms = this.getDoms();\r\n each(doms, function (dom) {\r\n if (_this.isDomUnused(dom)) {\r\n defs.removeChild(dom);\r\n }\r\n });\r\n };\r\n Definable.prototype.getSvgProxy = function (displayable) {\r\n if (displayable instanceof Path) {\r\n return svgPath;\r\n }\r\n else if (displayable instanceof ZRImage) {\r\n return svgImage;\r\n }\r\n else if (displayable instanceof TSpan) {\r\n return svgText;\r\n }\r\n else {\r\n return svgPath;\r\n }\r\n };\r\n Definable.prototype.getSvgElement = function (displayable) {\r\n return displayable.__svgEl;\r\n };\r\n return Definable;\r\n}());\n\nfunction isLinearGradient(value) {\r\n return value.type === 'linear';\r\n}\r\nfunction isRadialGradient(value) {\r\n return value.type === 'radial';\r\n}\r\nfunction isGradient(value) {\r\n return value && (value.type === 'linear'\r\n || value.type === 'radial');\r\n}\r\nvar GradientManager = (function (_super) {\r\n __extends(GradientManager, _super);\r\n function GradientManager(zrId, svgRoot) {\r\n return _super.call(this, zrId, svgRoot, ['linearGradient', 'radialGradient'], '__gradient_in_use__') || this;\r\n }\r\n GradientManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\r\n if (displayable && displayable.style) {\r\n var that_1 = this;\r\n each(['fill', 'stroke'], function (fillOrStroke) {\r\n var value = displayable.style[fillOrStroke];\r\n if (isGradient(value)) {\r\n var gradient = value;\r\n var defs = that_1.getDefs(true);\r\n var dom = void 0;\r\n if (gradient.__dom) {\r\n dom = gradient.__dom;\r\n if (!defs.contains(gradient.__dom)) {\r\n that_1.addDom(dom);\r\n }\r\n }\r\n else {\r\n dom = that_1.add(gradient);\r\n }\r\n that_1.markUsed(displayable);\r\n var id = dom.getAttribute('id');\r\n svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\r\n }\r\n });\r\n }\r\n };\r\n GradientManager.prototype.add = function (gradient) {\r\n var dom;\r\n if (isLinearGradient(gradient)) {\r\n dom = this.createElement('linearGradient');\r\n }\r\n else if (isRadialGradient(gradient)) {\r\n dom = this.createElement('radialGradient');\r\n }\r\n else {\r\n logError('Illegal gradient type.');\r\n return null;\r\n }\r\n gradient.id = gradient.id || this.nextId++;\r\n dom.setAttribute('id', 'zr' + this._zrId\r\n + '-gradient-' + gradient.id);\r\n this.updateDom(gradient, dom);\r\n this.addDom(dom);\r\n return dom;\r\n };\r\n GradientManager.prototype.update = function (gradient) {\r\n if (!isGradient(gradient)) {\r\n return;\r\n }\r\n var that = this;\r\n this.doUpdate(gradient, function () {\r\n var dom = gradient.__dom;\r\n if (!dom) {\r\n return;\r\n }\r\n var tagName = dom.tagName;\r\n var type = gradient.type;\r\n if (type === 'linear' && tagName === 'linearGradient'\r\n || type === 'radial' && tagName === 'radialGradient') {\r\n that.updateDom(gradient, gradient.__dom);\r\n }\r\n else {\r\n that.removeDom(gradient);\r\n that.add(gradient);\r\n }\r\n });\r\n };\r\n GradientManager.prototype.updateDom = function (gradient, dom) {\r\n if (isLinearGradient(gradient)) {\r\n dom.setAttribute('x1', gradient.x + '');\r\n dom.setAttribute('y1', gradient.y + '');\r\n dom.setAttribute('x2', gradient.x2 + '');\r\n dom.setAttribute('y2', gradient.y2 + '');\r\n }\r\n else if (isRadialGradient(gradient)) {\r\n dom.setAttribute('cx', gradient.x + '');\r\n dom.setAttribute('cy', gradient.y + '');\r\n dom.setAttribute('r', gradient.r + '');\r\n }\r\n else {\r\n logError('Illegal gradient type.');\r\n return;\r\n }\r\n if (gradient.global) {\r\n dom.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n }\r\n else {\r\n dom.setAttribute('gradientUnits', 'objectBoundingBox');\r\n }\r\n dom.innerHTML = '';\r\n var colors = gradient.colorStops;\r\n for (var i = 0, len = colors.length; i < len; ++i) {\r\n var stop_1 = this.createElement('stop');\r\n stop_1.setAttribute('offset', colors[i].offset * 100 + '%');\r\n var color$1 = colors[i].color;\r\n if (color$1.indexOf('rgba') > -1) {\r\n var opacity = parse(color$1)[3];\r\n var hex = toHex(color$1);\r\n stop_1.setAttribute('stop-color', '#' + hex);\r\n stop_1.setAttribute('stop-opacity', opacity + '');\r\n }\r\n else {\r\n stop_1.setAttribute('stop-color', colors[i].color);\r\n }\r\n dom.appendChild(stop_1);\r\n }\r\n gradient.__dom = dom;\r\n };\r\n GradientManager.prototype.markUsed = function (displayable) {\r\n if (displayable.style) {\r\n var gradient = displayable.style.fill;\r\n if (gradient && gradient.__dom) {\r\n _super.prototype.markDomUsed.call(this, gradient.__dom);\r\n }\r\n gradient = displayable.style.stroke;\r\n if (gradient && gradient.__dom) {\r\n _super.prototype.markDomUsed.call(this, gradient.__dom);\r\n }\r\n }\r\n };\r\n return GradientManager;\r\n}(Definable));\n\nfunction isPattern(value) {\r\n return value && (!!value.image || !!value.svgElement);\r\n}\r\nvar patternDomMap = new WeakMap();\r\nvar PatternManager = (function (_super) {\r\n __extends(PatternManager, _super);\r\n function PatternManager(zrId, svgRoot) {\r\n return _super.call(this, zrId, svgRoot, ['pattern'], '__pattern_in_use__') || this;\r\n }\r\n PatternManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\r\n if (displayable && displayable.style) {\r\n var that_1 = this;\r\n each(['fill', 'stroke'], function (fillOrStroke) {\r\n var pattern = displayable.style[fillOrStroke];\r\n if (isPattern(pattern)) {\r\n var defs = that_1.getDefs(true);\r\n var dom = patternDomMap.get(pattern);\r\n if (dom) {\r\n if (!defs.contains(dom)) {\r\n that_1.addDom(dom);\r\n }\r\n }\r\n else {\r\n dom = that_1.add(pattern);\r\n }\r\n that_1.markUsed(displayable);\r\n var id = dom.getAttribute('id');\r\n svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\r\n }\r\n });\r\n }\r\n };\r\n PatternManager.prototype.add = function (pattern) {\r\n if (!isPattern(pattern)) {\r\n return;\r\n }\r\n var dom = this.createElement('pattern');\r\n pattern.id = pattern.id == null ? this.nextId++ : pattern.id;\r\n dom.setAttribute('id', 'zr' + this._zrId\r\n + '-pattern-' + pattern.id);\r\n dom.setAttribute('x', '0');\r\n dom.setAttribute('y', '0');\r\n dom.setAttribute('patternUnits', 'userSpaceOnUse');\r\n this.updateDom(pattern, dom);\r\n this.addDom(dom);\r\n return dom;\r\n };\r\n PatternManager.prototype.update = function (pattern) {\r\n if (!isPattern(pattern)) {\r\n return;\r\n }\r\n var that = this;\r\n this.doUpdate(pattern, function () {\r\n var dom = patternDomMap.get(pattern);\r\n that.updateDom(pattern, dom);\r\n });\r\n };\r\n PatternManager.prototype.updateDom = function (pattern, patternDom) {\r\n var svgElement = pattern.svgElement;\r\n if (svgElement instanceof SVGElement) {\r\n if (svgElement.parentNode !== patternDom) {\r\n patternDom.innerHTML = '';\r\n patternDom.appendChild(svgElement);\r\n patternDom.setAttribute('width', pattern.svgWidth + '');\r\n patternDom.setAttribute('height', pattern.svgHeight + '');\r\n }\r\n }\r\n else {\r\n var img = void 0;\r\n var prevImage = patternDom.getElementsByTagName('image');\r\n if (prevImage.length) {\r\n if (pattern.image) {\r\n img = prevImage[0];\r\n }\r\n else {\r\n patternDom.removeChild(prevImage[0]);\r\n return;\r\n }\r\n }\r\n else if (pattern.image) {\r\n img = this.createElement('image');\r\n }\r\n if (img) {\r\n var imageSrc = void 0;\r\n if (typeof pattern.image === 'string') {\r\n imageSrc = pattern.image;\r\n }\r\n else if (pattern.image instanceof HTMLImageElement) {\r\n imageSrc = pattern.image.src;\r\n }\r\n else if (pattern.image instanceof HTMLCanvasElement) {\r\n imageSrc = pattern.image.toDataURL();\r\n }\r\n if (imageSrc) {\r\n img.setAttribute('href', imageSrc);\r\n img.setAttribute('x', '0');\r\n img.setAttribute('y', '0');\r\n var hostEl = {\r\n dirty: function () { }\r\n };\r\n var createdImage = createOrUpdateImage(imageSrc, img, hostEl, function (img) {\r\n patternDom.setAttribute('width', img.width + '');\r\n patternDom.setAttribute('height', img.height + '');\r\n });\r\n if (createdImage && createdImage.width && createdImage.height) {\r\n patternDom.setAttribute('width', createdImage.width + '');\r\n patternDom.setAttribute('height', createdImage.height + '');\r\n }\r\n patternDom.appendChild(img);\r\n }\r\n }\r\n }\r\n var x = pattern.x || 0;\r\n var y = pattern.y || 0;\r\n var rotation = (pattern.rotation || 0) / Math.PI * 180;\r\n var scaleX = pattern.scaleX || 1;\r\n var scaleY = pattern.scaleY || 1;\r\n var transform = \"translate(\" + x + \", \" + y + \") rotate(\" + rotation + \") scale(\" + scaleX + \", \" + scaleY + \")\";\r\n patternDom.setAttribute('patternTransform', transform);\r\n patternDomMap.set(pattern, patternDom);\r\n };\r\n PatternManager.prototype.markUsed = function (displayable) {\r\n if (displayable.style) {\r\n if (isPattern(displayable.style.fill)) {\r\n _super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.fill));\r\n }\r\n if (isPattern(displayable.style.stroke)) {\r\n _super.prototype.markDomUsed.call(this, patternDomMap.get(displayable.style.stroke));\r\n }\r\n }\r\n };\r\n return PatternManager;\r\n}(Definable));\n\nfunction generateClipPathsKey(clipPaths) {\r\n var key = [];\r\n if (clipPaths) {\r\n for (var i = 0; i < clipPaths.length; i++) {\r\n var clipPath = clipPaths[i];\r\n key.push(clipPath.id);\r\n }\r\n }\r\n return key.join(',');\r\n}\r\nfunction hasClipPath(displayable) {\r\n var clipPaths = displayable.__clipPaths;\r\n return clipPaths && clipPaths.length > 0;\r\n}\r\nvar ClippathManager = (function (_super) {\r\n __extends(ClippathManager, _super);\r\n function ClippathManager(zrId, svgRoot) {\r\n var _this = _super.call(this, zrId, svgRoot, 'clipPath', '__clippath_in_use__') || this;\r\n _this._refGroups = {};\r\n _this._keyDuplicateCount = {};\r\n return _this;\r\n }\r\n ClippathManager.prototype.markAllUnused = function () {\r\n _super.prototype.markAllUnused.call(this);\r\n for (var key in this._refGroups) {\r\n this.markDomUnused(this._refGroups[key]);\r\n }\r\n this._keyDuplicateCount = {};\r\n };\r\n ClippathManager.prototype._getClipPathGroup = function (displayable, prevDisplayable) {\r\n if (!hasClipPath(displayable)) {\r\n return;\r\n }\r\n var clipPaths = displayable.__clipPaths;\r\n var keyDuplicateCount = this._keyDuplicateCount;\r\n var clipPathKey = generateClipPathsKey(clipPaths);\r\n if (isClipPathChanged(clipPaths, prevDisplayable && prevDisplayable.__clipPaths)) {\r\n keyDuplicateCount[clipPathKey] = keyDuplicateCount[clipPathKey] || 0;\r\n keyDuplicateCount[clipPathKey] && (clipPathKey += '-' + keyDuplicateCount[clipPathKey]);\r\n keyDuplicateCount[clipPathKey]++;\r\n }\r\n return this._refGroups[clipPathKey]\r\n || (this._refGroups[clipPathKey] = this.createElement('g'));\r\n };\r\n ClippathManager.prototype.update = function (displayable, prevDisplayable) {\r\n var clipGroup = this._getClipPathGroup(displayable, prevDisplayable);\r\n if (clipGroup) {\r\n this.markDomUsed(clipGroup);\r\n this.updateDom(clipGroup, displayable.__clipPaths);\r\n }\r\n return clipGroup;\r\n };\r\n ClippathManager.prototype.updateDom = function (parentEl, clipPaths) {\r\n if (clipPaths && clipPaths.length > 0) {\r\n var defs = this.getDefs(true);\r\n var clipPath = clipPaths[0];\r\n var clipPathEl = void 0;\r\n var id = void 0;\r\n if (clipPath._dom) {\r\n id = clipPath._dom.getAttribute('id');\r\n clipPathEl = clipPath._dom;\r\n if (!defs.contains(clipPathEl)) {\r\n defs.appendChild(clipPathEl);\r\n }\r\n }\r\n else {\r\n id = 'zr' + this._zrId + '-clip-' + this.nextId;\r\n ++this.nextId;\r\n clipPathEl = this.createElement('clipPath');\r\n clipPathEl.setAttribute('id', id);\r\n defs.appendChild(clipPathEl);\r\n clipPath._dom = clipPathEl;\r\n }\r\n var svgProxy = this.getSvgProxy(clipPath);\r\n svgProxy.brush(clipPath);\r\n var pathEl = this.getSvgElement(clipPath);\r\n clipPathEl.innerHTML = '';\r\n clipPathEl.appendChild(pathEl);\r\n parentEl.setAttribute('clip-path', 'url(#' + id + ')');\r\n if (clipPaths.length > 1) {\r\n this.updateDom(clipPathEl, clipPaths.slice(1));\r\n }\r\n }\r\n else {\r\n if (parentEl) {\r\n parentEl.setAttribute('clip-path', 'none');\r\n }\r\n }\r\n };\r\n ClippathManager.prototype.markUsed = function (displayable) {\r\n var _this = this;\r\n if (displayable.__clipPaths) {\r\n each(displayable.__clipPaths, function (clipPath) {\r\n if (clipPath._dom) {\r\n _super.prototype.markDomUsed.call(_this, clipPath._dom);\r\n }\r\n });\r\n }\r\n };\r\n ClippathManager.prototype.removeUnused = function () {\r\n _super.prototype.removeUnused.call(this);\r\n var newRefGroupsMap = {};\r\n for (var key in this._refGroups) {\r\n var group = this._refGroups[key];\r\n if (!this.isDomUnused(group)) {\r\n newRefGroupsMap[key] = group;\r\n }\r\n else if (group.parentNode) {\r\n group.parentNode.removeChild(group);\r\n }\r\n }\r\n this._refGroups = newRefGroupsMap;\r\n };\r\n return ClippathManager;\r\n}(Definable));\n\nvar ShadowManager = (function (_super) {\r\n __extends(ShadowManager, _super);\r\n function ShadowManager(zrId, svgRoot) {\r\n var _this = _super.call(this, zrId, svgRoot, ['filter'], '__filter_in_use__', '_shadowDom') || this;\r\n _this._shadowDomMap = {};\r\n _this._shadowDomPool = [];\r\n return _this;\r\n }\r\n ShadowManager.prototype._getFromPool = function () {\r\n var shadowDom = this._shadowDomPool.pop();\r\n if (!shadowDom) {\r\n shadowDom = this.createElement('filter');\r\n shadowDom.setAttribute('id', 'zr' + this._zrId + '-shadow-' + this.nextId++);\r\n var domChild = this.createElement('feDropShadow');\r\n shadowDom.appendChild(domChild);\r\n this.addDom(shadowDom);\r\n }\r\n return shadowDom;\r\n };\r\n ShadowManager.prototype.update = function (svgElement, displayable) {\r\n var style = displayable.style;\r\n if (hasShadow(style)) {\r\n var shadowKey = getShadowKey(displayable);\r\n var shadowDom = displayable._shadowDom = this._shadowDomMap[shadowKey];\r\n if (!shadowDom) {\r\n shadowDom = this._getFromPool();\r\n this._shadowDomMap[shadowKey] = shadowDom;\r\n }\r\n this.updateDom(svgElement, displayable, shadowDom);\r\n }\r\n else {\r\n this.remove(svgElement, displayable);\r\n }\r\n };\r\n ShadowManager.prototype.remove = function (svgElement, displayable) {\r\n if (displayable._shadowDom != null) {\r\n displayable._shadowDom = null;\r\n svgElement.style.filter = '';\r\n }\r\n };\r\n ShadowManager.prototype.updateDom = function (svgElement, displayable, shadowDom) {\r\n var domChild = shadowDom.children[0];\r\n var style = displayable.style;\r\n var globalScale = displayable.getGlobalScale();\r\n var scaleX = globalScale[0];\r\n var scaleY = globalScale[1];\r\n if (!scaleX || !scaleY) {\r\n return;\r\n }\r\n var offsetX = style.shadowOffsetX || 0;\r\n var offsetY = style.shadowOffsetY || 0;\r\n var blur = style.shadowBlur;\r\n var color = style.shadowColor;\r\n domChild.setAttribute('dx', offsetX / scaleX + '');\r\n domChild.setAttribute('dy', offsetY / scaleY + '');\r\n domChild.setAttribute('flood-color', color);\r\n var stdDx = blur / 2 / scaleX;\r\n var stdDy = blur / 2 / scaleY;\r\n var stdDeviation = stdDx + ' ' + stdDy;\r\n domChild.setAttribute('stdDeviation', stdDeviation);\r\n shadowDom.setAttribute('x', '-100%');\r\n shadowDom.setAttribute('y', '-100%');\r\n shadowDom.setAttribute('width', '300%');\r\n shadowDom.setAttribute('height', '300%');\r\n displayable._shadowDom = shadowDom;\r\n var id = shadowDom.getAttribute('id');\r\n svgElement.style.filter = 'url(#' + id + ')';\r\n };\r\n ShadowManager.prototype.removeUnused = function () {\r\n var defs = this.getDefs(false);\r\n if (!defs) {\r\n return;\r\n }\r\n var shadowDomsPool = this._shadowDomPool;\r\n for (var key in this._shadowDomMap) {\r\n var dom = this._shadowDomMap[key];\r\n shadowDomsPool.push(dom);\r\n }\r\n this._shadowDomMap = {};\r\n };\r\n return ShadowManager;\r\n}(Definable));\r\nfunction hasShadow(style) {\r\n return style\r\n && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);\r\n}\r\nfunction getShadowKey(displayable) {\r\n var style = displayable.style;\r\n var globalScale = displayable.getGlobalScale();\r\n return [\r\n style.shadowColor,\r\n (style.shadowBlur || 0).toFixed(2),\r\n (style.shadowOffsetX || 0).toFixed(2),\r\n (style.shadowOffsetY || 0).toFixed(2),\r\n globalScale[0],\r\n globalScale[1]\r\n ].join(',');\r\n}\n\nfunction parseInt10$1(val) {\r\n return parseInt(val, 10);\r\n}\r\nfunction getSvgProxy(el) {\r\n if (el instanceof Path) {\r\n return svgPath;\r\n }\r\n else if (el instanceof ZRImage) {\r\n return svgImage;\r\n }\r\n else if (el instanceof TSpan) {\r\n return svgText;\r\n }\r\n else {\r\n return svgPath;\r\n }\r\n}\r\nfunction checkParentAvailable(parent, child) {\r\n return child && parent && child.parentNode !== parent;\r\n}\r\nfunction insertAfter(parent, child, prevSibling) {\r\n if (checkParentAvailable(parent, child) && prevSibling) {\r\n var nextSibling = prevSibling.nextSibling;\r\n nextSibling ? parent.insertBefore(child, nextSibling)\r\n : parent.appendChild(child);\r\n }\r\n}\r\nfunction prepend(parent, child) {\r\n if (checkParentAvailable(parent, child)) {\r\n var firstChild = parent.firstChild;\r\n firstChild ? parent.insertBefore(child, firstChild)\r\n : parent.appendChild(child);\r\n }\r\n}\r\nfunction remove(parent, child) {\r\n if (child && parent && child.parentNode === parent) {\r\n parent.removeChild(child);\r\n }\r\n}\r\nfunction removeFromMyParent(child) {\r\n if (child && child.parentNode) {\r\n child.parentNode.removeChild(child);\r\n }\r\n}\r\nfunction getSvgElement(displayable) {\r\n return displayable.__svgEl;\r\n}\r\nvar SVGPainter = (function () {\r\n function SVGPainter(root, storage, opts, zrId) {\r\n this.type = 'svg';\r\n this.refreshHover = createMethodNotSupport('refreshHover');\r\n this.pathToImage = createMethodNotSupport('pathToImage');\r\n this.configLayer = createMethodNotSupport('configLayer');\r\n this.root = root;\r\n this.storage = storage;\r\n this._opts = opts = extend({}, opts || {});\r\n var svgDom = createElement('svg');\r\n svgDom.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n svgDom.setAttribute('version', '1.1');\r\n svgDom.setAttribute('baseProfile', 'full');\r\n svgDom.style.cssText = 'user-select:none;position:absolute;left:0;top:0;';\r\n var bgRoot = createElement('g');\r\n svgDom.appendChild(bgRoot);\r\n var svgRoot = createElement('g');\r\n svgDom.appendChild(svgRoot);\r\n this._gradientManager = new GradientManager(zrId, svgRoot);\r\n this._patternManager = new PatternManager(zrId, svgRoot);\r\n this._clipPathManager = new ClippathManager(zrId, svgRoot);\r\n this._shadowManager = new ShadowManager(zrId, svgRoot);\r\n var viewport = document.createElement('div');\r\n viewport.style.cssText = 'overflow:hidden;position:relative';\r\n this._svgDom = svgDom;\r\n this._svgRoot = svgRoot;\r\n this._backgroundRoot = bgRoot;\r\n this._viewport = viewport;\r\n root.appendChild(viewport);\r\n viewport.appendChild(svgDom);\r\n this.resize(opts.width, opts.height);\r\n this._visibleList = [];\r\n }\r\n SVGPainter.prototype.getType = function () {\r\n return 'svg';\r\n };\r\n SVGPainter.prototype.getViewportRoot = function () {\r\n return this._viewport;\r\n };\r\n SVGPainter.prototype.getSvgDom = function () {\r\n return this._svgDom;\r\n };\r\n SVGPainter.prototype.getSvgRoot = function () {\r\n return this._svgRoot;\r\n };\r\n SVGPainter.prototype.getViewportRootOffset = function () {\r\n var viewportRoot = this.getViewportRoot();\r\n if (viewportRoot) {\r\n return {\r\n offsetLeft: viewportRoot.offsetLeft || 0,\r\n offsetTop: viewportRoot.offsetTop || 0\r\n };\r\n }\r\n };\r\n SVGPainter.prototype.refresh = function () {\r\n var list = this.storage.getDisplayList(true);\r\n this._paintList(list);\r\n };\r\n SVGPainter.prototype.setBackgroundColor = function (backgroundColor) {\r\n if (this._backgroundRoot && this._backgroundNode) {\r\n this._backgroundRoot.removeChild(this._backgroundNode);\r\n }\r\n var bgNode = createElement('rect');\r\n bgNode.setAttribute('width', this.getWidth());\r\n bgNode.setAttribute('height', this.getHeight());\r\n bgNode.setAttribute('x', 0);\r\n bgNode.setAttribute('y', 0);\r\n bgNode.setAttribute('id', 0);\r\n bgNode.style.fill = backgroundColor;\r\n this._backgroundRoot.appendChild(bgNode);\r\n this._backgroundNode = bgNode;\r\n };\r\n SVGPainter.prototype.createSVGElement = function (tag) {\r\n return createElement(tag);\r\n };\r\n SVGPainter.prototype.paintOne = function (el) {\r\n var svgProxy = getSvgProxy(el);\r\n svgProxy && svgProxy.brush(el);\r\n return getSvgElement(el);\r\n };\r\n SVGPainter.prototype._paintList = function (list) {\r\n var gradientManager = this._gradientManager;\r\n var patternManager = this._patternManager;\r\n var clipPathManager = this._clipPathManager;\r\n var shadowManager = this._shadowManager;\r\n gradientManager.markAllUnused();\r\n patternManager.markAllUnused();\r\n clipPathManager.markAllUnused();\r\n shadowManager.markAllUnused();\r\n var svgRoot = this._svgRoot;\r\n var visibleList = this._visibleList;\r\n var listLen = list.length;\r\n var newVisibleList = [];\r\n for (var i = 0; i < listLen; i++) {\r\n var displayable = list[i];\r\n var svgProxy = getSvgProxy(displayable);\r\n var svgElement = getSvgElement(displayable);\r\n if (!displayable.invisible) {\r\n if (displayable.__dirty || !svgElement) {\r\n svgProxy && svgProxy.brush(displayable);\r\n svgElement = getSvgElement(displayable);\r\n if (svgElement && displayable.style) {\r\n gradientManager.update(displayable.style.fill);\r\n gradientManager.update(displayable.style.stroke);\r\n patternManager.update(displayable.style.fill);\r\n patternManager.update(displayable.style.stroke);\r\n shadowManager.update(svgElement, displayable);\r\n }\r\n displayable.__dirty = 0;\r\n }\r\n if (svgElement) {\r\n newVisibleList.push(displayable);\r\n }\r\n }\r\n }\r\n var diff = arrayDiff(visibleList, newVisibleList);\r\n var prevSvgElement;\r\n var topPrevSvgElement;\r\n for (var i = 0; i < diff.length; i++) {\r\n var item = diff[i];\r\n if (item.removed) {\r\n for (var k = 0; k < item.count; k++) {\r\n var displayable = visibleList[item.indices[k]];\r\n var svgElement = getSvgElement(displayable);\r\n hasClipPath(displayable) ? removeFromMyParent(svgElement)\r\n : remove(svgRoot, svgElement);\r\n }\r\n }\r\n }\r\n var prevDisplayable;\r\n var currentClipGroup;\r\n for (var i = 0; i < diff.length; i++) {\r\n var item = diff[i];\r\n var isAdd = item.added;\r\n if (item.removed) {\r\n continue;\r\n }\r\n for (var k = 0; k < item.count; k++) {\r\n var displayable = newVisibleList[item.indices[k]];\r\n var clipGroup = clipPathManager.update(displayable, prevDisplayable);\r\n if (clipGroup !== currentClipGroup) {\r\n prevSvgElement = topPrevSvgElement;\r\n if (clipGroup) {\r\n prevSvgElement ? insertAfter(svgRoot, clipGroup, prevSvgElement)\r\n : prepend(svgRoot, clipGroup);\r\n topPrevSvgElement = clipGroup;\r\n prevSvgElement = null;\r\n }\r\n currentClipGroup = clipGroup;\r\n }\r\n var svgElement = getSvgElement(displayable);\r\n prevSvgElement\r\n ? insertAfter(currentClipGroup || svgRoot, svgElement, prevSvgElement)\r\n : prepend(currentClipGroup || svgRoot, svgElement);\r\n prevSvgElement = svgElement || prevSvgElement;\r\n if (!currentClipGroup) {\r\n topPrevSvgElement = prevSvgElement;\r\n }\r\n gradientManager.markUsed(displayable);\r\n gradientManager.addWithoutUpdate(svgElement, displayable);\r\n patternManager.markUsed(displayable);\r\n patternManager.addWithoutUpdate(svgElement, displayable);\r\n clipPathManager.markUsed(displayable);\r\n prevDisplayable = displayable;\r\n }\r\n }\r\n gradientManager.removeUnused();\r\n patternManager.removeUnused();\r\n clipPathManager.removeUnused();\r\n shadowManager.removeUnused();\r\n this._visibleList = newVisibleList;\r\n };\r\n SVGPainter.prototype._getDefs = function (isForceCreating) {\r\n var svgRoot = this._svgDom;\r\n var defs = svgRoot.getElementsByTagName('defs');\r\n if (defs.length === 0) {\r\n if (isForceCreating) {\r\n var defs_1 = svgRoot.insertBefore(createElement('defs'), svgRoot.firstChild);\r\n if (!defs_1.contains) {\r\n defs_1.contains = function (el) {\r\n var children = defs_1.children;\r\n if (!children) {\r\n return false;\r\n }\r\n for (var i = children.length - 1; i >= 0; --i) {\r\n if (children[i] === el) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n }\r\n return defs_1;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return defs[0];\r\n }\r\n };\r\n SVGPainter.prototype.resize = function (width, height) {\r\n var viewport = this._viewport;\r\n viewport.style.display = 'none';\r\n var opts = this._opts;\r\n width != null && (opts.width = width);\r\n height != null && (opts.height = height);\r\n width = this._getSize(0);\r\n height = this._getSize(1);\r\n viewport.style.display = '';\r\n if (this._width !== width || this._height !== height) {\r\n this._width = width;\r\n this._height = height;\r\n var viewportStyle = viewport.style;\r\n viewportStyle.width = width + 'px';\r\n viewportStyle.height = height + 'px';\r\n var svgRoot = this._svgDom;\r\n svgRoot.setAttribute('width', width + '');\r\n svgRoot.setAttribute('height', height + '');\r\n }\r\n if (this._backgroundNode) {\r\n this._backgroundNode.setAttribute('width', width);\r\n this._backgroundNode.setAttribute('height', height);\r\n }\r\n };\r\n SVGPainter.prototype.getWidth = function () {\r\n return this._width;\r\n };\r\n SVGPainter.prototype.getHeight = function () {\r\n return this._height;\r\n };\r\n SVGPainter.prototype._getSize = function (whIdx) {\r\n var opts = this._opts;\r\n var wh = ['width', 'height'][whIdx];\r\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\r\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\r\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\r\n if (opts[wh] != null && opts[wh] !== 'auto') {\r\n return parseFloat(opts[wh]);\r\n }\r\n var root = this.root;\r\n var stl = document.defaultView.getComputedStyle(root);\r\n return ((root[cwh] || parseInt10$1(stl[wh]) || parseInt10$1(root.style[wh]))\r\n - (parseInt10$1(stl[plt]) || 0)\r\n - (parseInt10$1(stl[prb]) || 0)) | 0;\r\n };\r\n SVGPainter.prototype.dispose = function () {\r\n this.root.innerHTML = '';\r\n this._svgRoot\r\n = this._backgroundRoot\r\n = this._svgDom\r\n = this._backgroundNode\r\n = this._viewport\r\n = this.storage\r\n = null;\r\n };\r\n SVGPainter.prototype.clear = function () {\r\n var viewportNode = this._viewport;\r\n if (viewportNode && viewportNode.parentNode) {\r\n viewportNode.parentNode.removeChild(viewportNode);\r\n }\r\n };\r\n SVGPainter.prototype.toDataURL = function () {\r\n this.refresh();\r\n var html = encodeURIComponent(this._svgDom.outerHTML.replace(/></g, '>\\n\\r<'));\r\n return 'data:image/svg+xml;charset=UTF-8,' + html;\r\n };\r\n return SVGPainter;\r\n}());\r\nfunction createMethodNotSupport(method) {\r\n return function () {\r\n logError('In SVG mode painter not support method \"' + method + '\"');\r\n };\r\n}\n\nregisterPainter('svg', SVGPainter);\n\nexport { Axis, List, Model, PRIORITY, color, connect, dataTool, dependencies, disConnect, disconnect, dispose$1 as dispose, env, extendChartView, extendComponentModel, extendComponentView, extendSeriesModel, format$1 as format, getCoordinateSystemDimensions, getInstanceByDom, getInstanceById, getMap, graphic$1 as graphic, helper, init$1 as init, brushSingle as innerDrawElementOnCanvas, matrix, number, parseGeoJSON, parseGeoJson, registerAction, registerCoordinateSystem, registerLayout, registerLoading, registerLocale, registerMap, registerPostInit, registerPostUpdate, registerPreprocessor, registerProcessor, registerTheme, registerTransform, registerVisual, setCanvasCreator, throttle, time, ecUtil as util, vector, version$1 as version, zrender };\n\n"]}