{"version":3,"sources":["webpack:///./node_modules/zrender/lib/core/timsort.js","webpack:///./node_modules/zrender/lib/contain/polygon.js","webpack:///./node_modules/zrender/lib/animation/Animator.js","webpack:///./node_modules/zrender/lib/core/GestureMgr.js","webpack:///./node_modules/zrender/lib/core/arrayDiff2.js","webpack:///./node_modules/zrender/lib/mixin/Transformable.js","webpack:///./node_modules/zrender/lib/graphic/Image.js","webpack:///./node_modules/zrender/lib/core/matrix.js","webpack:///./node_modules/zrender/lib/graphic/Displayable.js","webpack:///./node_modules/zrender/lib/mixin/Eventful.js","webpack:///./node_modules/zrender/lib/core/PathProxy.js","webpack:///./node_modules/zrender/lib/core/env.js","webpack:///./node_modules/zrender/lib/graphic/Style.js","webpack:///./node_modules/zrender/lib/config.js","webpack:///./node_modules/zrender/lib/tool/parseSVG.js","webpack:///./node_modules/zrender/lib/animation/Animation.js","webpack:///./node_modules/zrender/lib/tool/path.js","webpack:///./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack:///./node_modules/zrender/lib/svg/graphic.js","webpack:///./node_modules/zrender/lib/core/vector.js","webpack:///./node_modules/zrender/lib/tool/color.js","webpack:///./node_modules/zrender/lib/graphic/Gradient.js","webpack:///./node_modules/zrender/lib/animation/Clip.js","webpack:///./node_modules/zrender/lib/graphic/shape/Ring.js","webpack:///./node_modules/zrender/lib/graphic/LinearGradient.js","webpack:///./node_modules/zrender/lib/core/log.js","webpack:///./node_modules/zrender/lib/core/curve.js","webpack:///./node_modules/zrender/lib/graphic/shape/Sector.js","webpack:///./node_modules/zrender/lib/svg/helper/Definable.js","webpack:///./node_modules/zrender/lib/graphic/helper/poly.js","webpack:///./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack:///./node_modules/zrender/lib/Layer.js","webpack:///./node_modules/zrender/lib/graphic/helper/image.js","webpack:///./node_modules/zrender/lib/core/event.js","webpack:///./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack:///./node_modules/zrender/lib/core/dom.js","webpack:///./node_modules/zrender/lib/contain/quadratic.js","webpack:///./node_modules/zrender/lib/zrender.js","webpack:///./node_modules/zrender/lib/core/util.js","webpack:///./node_modules/zrender/lib/animation/easing.js","webpack:///./node_modules/zrender/lib/graphic/Text.js","webpack:///./node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack:///./node_modules/zrender/lib/graphic/constant.js","webpack:///./node_modules/zrender/lib/core/fourPointsTransform.js","webpack:///./node_modules/zrender/lib/contain/util.js","webpack:///./node_modules/zrender/lib/svg/core.js","webpack:///./node_modules/zrender/lib/contain/windingLine.js","webpack:///./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack:///./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack:///./node_modules/zrender/lib/graphic/shape/Arc.js","webpack:///./node_modules/zrender/lib/svg/svg.js","webpack:///./node_modules/zrender/lib/contain/line.js","webpack:///./node_modules/zrender/lib/core/BoundingRect.js","webpack:///./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack:///./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack:///./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack:///./node_modules/zrender/lib/graphic/mixin/RectText.js","webpack:///./node_modules/zrender/lib/contain/arc.js","webpack:///./node_modules/zrender/lib/svg/helper/ClippathManager.js","webpack:///./node_modules/zrender/lib/graphic/helper/text.js","webpack:///./node_modules/zrender/lib/vml/graphic.js","webpack:///./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack:///./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack:///./node_modules/zrender/lib/Storage.js","webpack:///./node_modules/zrender/lib/svg/helper/GradientManager.js","webpack:///./node_modules/zrender/lib/svg/helper/ShadowManager.js","webpack:///./node_modules/zrender/lib/mixin/Animatable.js","webpack:///./node_modules/zrender/lib/graphic/shape/Rect.js","webpack:///./node_modules/zrender/lib/graphic/shape/Line.js","webpack:///./node_modules/zrender/lib/mixin/Draggable.js","webpack:///./node_modules/zrender/lib/graphic/Path.js","webpack:///./node_modules/zrender/lib/dom/HandlerProxy.js","webpack:///./node_modules/zrender/lib/Handler.js","webpack:///./node_modules/zrender/lib/vml/core.js","webpack:///./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack:///./node_modules/zrender/lib/graphic/CompoundPath.js","webpack:///./node_modules/zrender/lib/core/LRU.js","webpack:///./node_modules/zrender/lib/Element.js","webpack:///./node_modules/zrender/lib/contain/path.js","webpack:///./node_modules/zrender/lib/graphic/shape/Circle.js","webpack:///./node_modules/zrender/lib/svg/Painter.js","webpack:///./node_modules/zrender/lib/graphic/Pattern.js","webpack:///./node_modules/zrender/lib/graphic/RadialGradient.js","webpack:///./node_modules/zrender/lib/core/guid.js","webpack:///./node_modules/zrender/lib/container/Group.js","webpack:///./node_modules/zrender/lib/core/bbox.js","webpack:///./node_modules/zrender/lib/contain/cubic.js","webpack:///./node_modules/zrender/lib/contain/text.js","webpack:///./node_modules/zrender/lib/vml/Painter.js","webpack:///./node_modules/zrender/lib/Painter.js","webpack:///./node_modules/zrender/lib/tool/transformPath.js","webpack:///./node_modules/zrender/lib/vml/vml.js"],"names":["DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","n","r","makeAscendingRun","array","lo","hi","compare","runHi","reverseRun","t","binaryInsertionSort","start","mid","pivot","left","right","gallopLeft","value","length","hint","lastOffset","maxOffset","offset","tmp","m","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","i","start1","length1","start2","length2","k","mergeLow","mergeHigh","cursor1","cursor2","dest","count1","count2","exit","_minGallop","Error","customCursor","customDest","this","sort","remaining","ts","minRun","force","module","exports","windingLine","EPSILON","isAroundEqual","a","b","Math","abs","contain","points","x","y","w","p","p2","p0","Clip","color","_util","isArrayLike","arraySlice","Array","prototype","slice","defaultGetter","target","key","defaultSetter","interpolateNumber","p1","percent","interpolateString","interpolateArray","out","arrDim","len","len2","j","fillArr","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","push","call","isNaN","isArraySame","catmullRomInterpolateArray","p3","t2","t3","catmullRomInterpolate","v0","v1","cloneValue","ret","rgba2String","rgba","floor","join","getArrayDim","keyframes","lastValue","createTrackClip","animator","easing","oneTrackDone","propName","forceAnimate","getter","_getter","setter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","time","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","parse","_target","lastFrame","lastFramePercent","onframe","frame","min","range","clip","life","loop","_loop","delay","_delay","ondestroy","Animator","_tracks","_clipCount","_doneList","_onframeList","_clipList","when","props","tracks","hasOwnProperty","during","callback","pause","_paused","resume","isPaused","_doneCallback","doneList","lastClip","self","clipCount","animation","addClip","oldOnFrame","stop","forwardToLast","clipList","removeClip","done","cb","getClips","_default","eventUtil","GestureMgr","_track","dist","pointPair","dx","dy","sqrt","center","constructor","recognize","event","root","_doTrack","_recognize","clear","touches","trackItem","touch","pos","clientToLocal","zrX","zrY","eventName","recognizers","gestureInfo","pinch","track","pinchEnd","pinchPre","pinchScale","isFinite","pinchCenter","pinchX","pinchY","type","Diff","buildValues","diff","components","newArr","oldArr","componentPos","componentLen","newPos","oldPos","component","removed","indices","count","added","clonePath","path","equals","newLen","oldLen","editLength","maxEditLength","bestPath","extractCommon","execEditLength","diagonalPath","basePath","addPath","removePath","undefined","canAdd","canRemove","pushComponent","last","commonCount","tokenize","arrayDiff","matrix","vector","mIdentity","identity","isNotAroundZero","val","Transformable","opts","position","rotation","scale","origin","transformableProto","transform","needLocalTransform","scaleTmp","updateTransform","parent","parentHasTransform","create","getLocalTransform","mul","copy","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","invert","setTransform","ctx","dpr","restoreTransform","tmpTransform","originTransform","setLocalTransform","atan2","decomposeTransform","transformCoordToLocal","v2","applyTransform","transformCoordToGlobal","rotate","Displayable","BoundingRect","zrUtil","imageHelper","ZImage","brush","prevEl","style","src","image","bind","_image","createOrUpdateImage","onload","isImageReady","width","height","aspect","sWidth","sHeight","drawImage","text","drawRectText","getBoundingRect","_rect","inherits","ArrayCtor","Float32Array","m1","m2","out0","out1","out2","out3","out4","out5","translate","v","rad","aa","ac","atx","ab","ad","aty","st","sin","ct","cos","vx","vy","det","clone","Style","Element","RectText","name","__clipPaths","__dirty","invisible","z","z2","zlevel","draggable","dragging","silent","culling","cursor","rectHover","progressive","incremental","beforeBrush","afterBrush","rectContain","traverse","context","coord","rect","dirty","__dirtyText","__zr","refresh","animateStyle","animate","attrKV","set","setStyle","useStyle","obj","calculateTextPosition","mixin","arrySlice","Eventful","eventProcessor","_$handlers","_$eventProcessor","normalizeQuery","host","query","on","eventful","handler","isOnce","_h","h","wrap","one","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","splice","isSilent","off","newList","l","trigger","args","arguments","argLen","hItem","filter","apply","afterTrigger","triggerWithContext","curve","vec2","bbox","_config","devicePixelRatio","CMD","M","L","C","Q","A","Z","R","max","min2","max2","mathMin","mathMax","mathCos","mathSin","mathSqrt","mathAbs","hasTypedArray","PathProxy","notSaveData","_saveData","data","_ctx","_xi","_yi","_x0","_y0","_ux","_uy","_len","_lineDash","_dashOffset","_dashIdx","_dashSum","setScale","segmentIgnoreThreshold","getContext","beginPath","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","x1","y1","x2","y2","x3","y3","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","startAngle","endAngle","anticlockwise","arcTo","radius","closePath","x0","y0","fill","toStatic","stroke","setLineDash","lineDash","lineDashSum","setLineDashOffset","setData","appendPath","appendSize","appendPathData","cmd","_expandData","_prevCmd","newData","dash","idx","dashSum","nDash","cubicAt","bezierLen","tmpLen","Number","MAX_VALUE","xi","yi","fromLine","fromCubic","fromQuadratic","rx","ry","fromArc","rebuildPath","d","ux","uy","theta","dTheta","psi","fs","scaleX","scaleY","isEllipse","env","wx","getSystemInfoSync","browser","os","node","wxa","canvasSupported","svgSupported","touchEventsSupported","domSupported","document","worker","navigator","detect","userAgent","ua","firefox","match","ie","edge","weChat","test","version","createElement","SVGRect","window","pointerEventsSupported","fixShadow","_constant","ContextCachedBy","STYLE_COMMON_PROPS","extendFrom","createLinearGradient","global","canvasGradient","createRadialGradient","opacity","fillOpacity","strokeOpacity","lineDashOffset","shadowBlur","shadowOffsetX","shadowOffsetY","lineWidth","strokeNoScale","font","textFont","fontStyle","fontWeight","fontSize","fontFamily","textTag","textFill","textStroke","textWidth","textHeight","textStrokeWidth","textLineHeight","textPosition","textRect","textOffset","textAlign","textVerticalAlign","textDistance","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","transformText","textRotation","textOrigin","textBackgroundColor","textBorderColor","textBorderWidth","textBorderRadius","textPadding","rich","truncate","blend","el","prevStyle","notCheckCache","__attrCachedBy","STYLE_BIND","prop","styleName","fillStyle","strokeStyle","globalAlpha","globalCompositeOperation","hasStroke","getLineScale","hasFill","otherStyle","overwrite","newStyle","getGradient","method","colorStops","addColorStop","styleProto","debugMode","Group","Text","Circle","Rect","Ellipse","Line","Path","Polygon","Polyline","LinearGradient","_path","createFromString","isString","extend","defaults","trim","each","DILIMITER_REG","parseXML","svg","parser","DOMParser","parseFromString","nodeType","firstChild","nodeName","toLowerCase","nextSibling","SVGParser","_defs","_root","_isDefine","_isText","xml","opt","viewBox","getAttribute","parseFloat","parseAttributes","viewBoxRect","viewBoxTransform","child","_parseNode","viewBoxArr","split","makeViewBoxTransform","ignoreViewBox","elRoot","add","ignoreRootClip","setClipPath","shape","xmlNode","parentGroup","defineParsers","def","id","nodeParsers","_parseText","_textX","_textY","textContent","inheritStyle","g","setShape","circle","line","ellipse","parsePoints","polygon","polyline","img","parseInt","gradient","_parseGradientColorStops","indexOf","stopColor","__inheritedStyle","pointsString","list","attributesMap","defs","onlyInlineStyle","zrStyle","isTextEl","parseTransformAttribute","parseStyleAttribute","svgAttrName","attrValue","elFillProp","elStrokeProp","elStyle","getPaint","elPropName","textBaseline","urlRegex","str","urlMatch","url","transformRegex","replace","transformOps","console","warn","styleRegex","result","styleRegResult","styleList","exec","viewBoxScale","viewBoxPosition","parseSVG","util","_event","Dispatcher","requestAnimationFrame","Animation","options","stage","_clips","_running","_time","_pausedTime","_pauseStart","addAnimator","clips","removeAnimator","_update","Date","getTime","delta","deferredEvents","deferredClips","e","step","_needsRemove","pop","fire","update","_startLoop","isFinished","transformPath","PI","vMag","vRatio","u","vAngle","acos","processArc","fa","psiDeg","xp","yp","lambda","f","cxp","cyp","commandReg","numberReg","createPathProxyFromString","prevCmd","cpx","cpy","subpathX","subpathY","cmdList","cmdText","cmdStr","charAt","pLen","ctlPtx","ctlPty","pathData","createPathOptions","pathProxy","buildPath","extendFromString","mergePath","pathEls","pathList","pathEl","createPathProxy","__dirtyPath","pathBundle","Displayble","IncrementalDisplayble","_displayables","_temporaryDisplayables","_cursor","notClear","clearDisplaybles","addDisplayable","displayable","notPersistent","addDisplayables","displayables","eachPendingDisplayable","Infinity","childRect","union","localPos","_core","textContain","textHelper","arrayJoin","NONE","mathRound","round","PI2","degree","round4","isAroundZero","pathHasFill","isText","pathHasStroke","svgEl","attr","setAttribute","attrXLink","setAttributeNS","bindStyle","strokeWidth","strokeScale","lineCap","lineJoin","miterLimit","pathDataToString","dataLength","nData","clockwise","dThetaPositive","isCircle","unifiedTheta","large","svgPath","__svgEl","subPixelOptimize","pathStr","svgTextDrawRectText","removeOldTextNode","svgImage","HTMLImageElement","dw","dh","__imageSrc","svgText","_tmpTextHostRect","_tmpTextBoxPos","_tmpTextTransform","TEXT_ALIGN_TO_ANCHRO","middle","hostRect","elTransform","needTransformTextByHostEl","normalizeTextStyle","needDrawText","textSvgEl","__textSvgEl","textSvgElStyle","DEFAULT_FONT","computedFont","__computedFont","__styleFont","contentBlock","__textCotentBlock","parsePlainText","outerHeight","lineHeight","getBoxPosition","baseX","baseY","setTextTransform","boxY","adjustTextY","textX","textY","getTextXForPadding","canCacheByTextString","tspanList","__tspanList","tspanOriginLen","__canCacheByTextString","__text","updateTextLocation","textLines","lines","nTextLines","tspan","singleLineText","__zrText","innerHTML","appendChild","createTextNode","removeChild","parentNode","scaleAndAdd","sub","lenSquare","lengthSquare","div","dot","s","normalize","distance","distanceSquare","distSquare","negate","lerp","LRU","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","put","cached","get","op","ep","fname","substr","params","alpha","hsla2rgba","iv","hsla","rgba2hsla","H","S","G","B","vMin","vMax","deltaR","deltaG","deltaB","lift","level","colorArr","stringify","toHex","toString","fastLerp","normalizedValue","colors","leftIndex","rightIndex","ceil","leftColor","rightColor","dv","fastMapToColor","fullOutput","mapToColor","modifyHSL","modifyAlpha","arrColor","Gradient","easingFuncs","_life","_initialized","gap","onrestart","globalTime","deltaTime","_startTime","easingFunc","schedule","restart","remainder","eventType","arg","r0","globalCoord","logError","error","_vector","v2Create","v2DistSquare","mathPow","pow","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","onet","cubicDerivativeAt","cubicRootAt","roots","c","t1","disc","K","discSqrt","Y1","Y2","T","ASqrt","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","prev","next","d1","d2","interval","_t","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","fixClipWithShadow","unitX","unitY","ZText","_graphic","MARK_UNUSED","MARK_USED","Definable","zrId","svgRoot","tagNames","markLabel","domName","_zrId","_svgRoot","_tagNames","_markLabel","_domName","nextId","getDefs","isForceCreating","getElementsByTagName","insertBefore","contains","children","element","onUpdate","dom","addDom","removeDom","getDoms","doms","tagName","tags","concat","markAllUnused","that","markUsed","removeUnused","getSvgProxy","getTextSvgElement","getSvgElement","smoothSpline","smoothBezier","smooth","controlPoints","smoothConstraint","cp1","cp2","r1","r2","r3","r4","total","Pattern","returnFalse","createDom","painter","newDom","createCanvas","getWidth","getHeight","newDomStyle","top","Layer","isObject","domStyle","onselectstart","domBack","ctxBack","config","clearColor","motionBlur","lastFrameAlpha","__used","__drawIndex","__startIndex","__endIndex","getElementCount","initContext","createBackBuffer","resize","clearAll","clearColorGradientOrPattern","haveMotionBLur","clearRect","__canvasGradient","getCanvasPattern","save","fillRect","restore","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","hostEl","cbPayload","__zrImageSrc","pendingWrap","pending","Image","onerror","imageOnLoad","__cachedImgObj","_dom","isCanvasEl","transformCoordWithViewport","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut","calculate","calculateZrXY","layerX","offsetX","layerY","offsetY","getBoundingClientRect","ex","clientX","ey","clientY","box","getNativeEvent","normalizeEvent","isTouch","targetTouches","changedTouches","zrDelta","wheelDelta","detail","button","which","attachEvent","removeEventListener","detachEvent","preventDefault","stopPropagation","cancelBubble","returnValue","isMiddleOrRightButtonOnMouseUpDown","notLeftMouse","v2Distance","interpolate","isLoop","segs","w2","w3","_fourPointsTransform","buildTransformer","EVENT_SAVED_PROP","transformLocalCoord","elFrom","elTarget","inX","inY","inverse","saved","markers","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","marker","stl","idxLR","idxTB","cssText","transformerName","oldSrcCoords","srcCoords","oldCoordTheSame","destCoords","ii","offsetLeft","offsetTop","toUpperCase","_curve","containStroke","_l","guid","Handler","Storage","Painter","HandlerProxy","useVML","painterCtors","canvas","instances","init","zr","ZRender","dispose","getInstance","registerPainter","Ctor","delInstance","storage","rendererType","renderer","vml","handerProxy","getViewportRoot","flush","_needsRefresh","oldDelFromStorage","delFromStorage","oldAddToStorage","addToStorage","removeSelfFromZr","addSelfToZr","getId","addRoot","remove","delRoot","configLayer","zLevel","setBackgroundColor","backgroundColor","refreshImmediately","_needsRefreshHover","triggerRendered","refreshHoverImmediately","addHover","elMirror","refreshHover","removeHover","clearHover","clearAnimation","pathToImage","setCursorStyle","cursorStyle","findHover","eventHandler","BUILTIN_OBJECT","TYPED_ARRAY","objToString","Object","arrayProto","nativeForEach","forEach","nativeFilter","nativeSlice","nativeMap","map","nativeReduce","reduce","methods","$override","fn","source","typeStr","isPrimitive","from","isDom","merge","targetProp","sourceProp","isArray","isBuiltInObject","mergeAll","targetAndSources","overlay","clazz","baseClazz","clazzPrototype","F","superClass","memo","find","func","curry","isFunction","isTypedArray","ownerDocument","eqNaN","retrieve","values","retrieve2","value0","value1","retrieve3","value2","Function","normalizeCssArray","assert","condition","message","primitiveKey","setAsPrimitive","HashMap","isArr","thisMap","visit","createHashMap","concatArray","newArray","noop","removeKey","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","shadowColor","renderText","getStroke","SHADOW_PROPS","PLAIN_TEXT","WILL_BE_RESTORED","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","subRowMask","subRowStart","sum","colLocalIdx","colTag","mA","vh","srcPointX","srcPointY","pk","normalizeRadian","angle","svgURI","createElementNS","dir","x_","polyHelper","shadowTemp","orignalBrush","modified","clipPaths","clipPath","_zrender","_a","_b","_s","v2ApplyTransform","other","lt","rb","lb","rt","maxX","maxY","calculateTransform","intersect","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","plain","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","setTimeout","v2Min","v2Max","v2Scale","v2Add","v2Clone","v2Sub","constraint","prevPoint","nextPoint","cps","point","d0","cp0","shift","subPixelOptimizeLine","outputShape","inputShape","subPixelOptimizeRect","originX","originY","originWidth","originHeight","positiveOrNegative","doubledPosition","tmpRect","ClippathManager","updateDom","textEl","parentEl","clipPathEl","svgProxy","cloneNode","_textDom","roundRectHelper","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","bottom","SHADOW_STYLE_COMMON_PROPS","_tmpTextPositionResult","_tmpBoxPositionResult","normalizeStyle","makeFont","renderRichText","renderPlainText","needDrawBg","needDrawBackground","checkCache","cachedByMe","styleFont","boxPos","applyTextRotation","outerWidth","boxX","adjustTextX","drawBackground","propItem","styleProp","ctxProp","textStrokeWidthPrev","strokeWidthChanged","strokeChanged","getFill","strokeText","fillText","parseRichText","drawRichText","contentWidth","xLeft","lineTop","xRight","token","tokens","tokenCount","usedWidth","lineXLeft","lineXRight","placeToken","tokenStyle","isLineHolder","setCtx","isPlainBg","originalGlobalAlpha","onBgImageLoaded","parsePercent","res","maxValue","lastIndexOf","colorTool","vmlCore","comma","imageTransformPrefix","Z2","ZLEVEL_BASE","Z_BASE","initRootElStyle","coordsize","coordorigin","encodeHtmlAttribute","String","rgb2Str","append","getZIndex","setColorAndOpacity","getColorAndAlpha","updateFillNode","zrEl","gradientType","focus","expansion","rectWidth","rectHeight","dimension","stops","cs1","cs2","colorAndAlphaList","colorAndAlpha","color1","color2","opacity1","opacity2","focusposition","updateStrokeNode","dashstyle","updateFillAndStroke","vmlEl","isFill","createNode","nPoint","brushVML","vmlRoot","_vmlEl","needTransform","strokeEl","weight","zIndex","removeRectText","onRemove","onAdd","appendRectText","isImage","ow","oh","_imageSrc","_imageWidth","_imageHeight","imageRuntimeStyle","runtimeStyle","oldRuntimeWidth","oldRuntimeHeight","sw","sh","hasCrop","doc","vmlElStyle","hasRotation","transformFilter","padding","imageEl","_imageEl","cropEl","_cropEl","imageELStyle","tmpImage","overflow","cropElStyle","filterStr","textMeasureEl","DEFAULT_STYLE_NORMAL","fontStyleCache","fontStyleCacheCount","MAX_FONT_CACHE_SIZE","fontEl","getFontStyle","fontString","variant","fontVariant","size","family","body","offsetWidth","fromTextEl","textLine","align","verticalAlign","textPathEl","skewEl","textVmlEl","_textVmlEl","textpathok","to","coords","textVmlElStyle","toFixed","string","proto","someVectorAt","isTangent","cpx2","cpy2","cpx1","cpy1","pointAt","tangentAt","ox","oy","timsort","shapeCompareFunc","_roots","_displayList","_displayListLen","getDisplayList","includeIgnore","updateDisplayList","displayList","_updateAndAddDisplayable","ignore","beforeUpdate","afterUpdate","userSetClipPath","currentClipPath","parentClipPath","isGroup","_children","__storage","addChildrenToStorage","delChildrenFromStorage","_renderList","displayableSortFunc","GradientManager","addWithoutUpdate","svgElement","fillOrStroke","hex","ShadowManager","hasShadow","_shadowDom","_shadowDomId","domChild","blur","stdDx","stdDy","stdDeviation","Animatable","animators","animateTo","animatable","reverse","stopAnimation","animateToShallow","objShallow","propertyCount","setAttrByPath","animatingShape","pathSplitted","animateFrom","_subPixelOptimize","subPixelOptimizeOutputShape","Draggable","_dragStart","_drag","_dragEnd","param","topTarget","draggingTarget","_draggingTarget","_x","_y","dispatchToElement","drift","dropTarget","lastDropTarget","_dropTarget","pathContain","pathProxyForDraw","strokeContainThreshold","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","_fillGradient","_strokeGradient","ctxLineDash","shapeCfg","inBundle","needsUpdateRect","rectWithStroke","_rectWithStroke","lineScale","dirtyPath","__clipTarget","animateShape","Sub","defaultShape","thisShape","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","pointer","globalNativeListenerNames","eventNameFix","isPointerFromTouch","pointerType","setTouchTimer","scope","touching","touchTimer","clearTimeout","markTouch","zrByTouch","normalizeGlobalEvent","instance","FakeGlobalEvent","isLocalEl","elTmp","isLocal","domBelongToZr","painterRoot","currentTarget","fakeGlobalEventProto","stopImmediatePropagation","localDOMHandlers","mousedown","_mayPointerCapture","mousemove","downPoint","togglePointerCapture","mouseup","mouseout","_pointerCapturing","zrEventControl","toElement","relatedTarget","zrIsToLocalDOM","touchstart","_lastTouchMoment","processGesture","touchmove","touchend","click","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","capture","listener","mounted","listenerOpts","domTarget","unmountDOMEventListeners","isPointerCapturing","globalHandlerScope","_globalHandlerScope","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","handlerDomProxyProto","setCursor","eventTool","SILENT","makeEventPacket","eveType","targetInfo","gestureEvent","stopEvent","EmptyProxy","handlerNames","proxy","_hovered","_lastX","_lastY","_gestureMgr","setHandlerProxy","isHover","isOutsideBoundary","handlerInstance","isOutside","lastHovered","lastHoveredTarget","hovered","hoveredTarget","eventControl","dispatch","eventArgs","eventPacket","eachOtherLayer","layer","exclude","hoverCheckResult","gestureMgr","_downEl","_downPoint","_upEl","doCreateNode","urn","win","vmlInited","namespaces","zrvml","initVML","styleSheets","createStyleSheet","addRule","paths","_updatePathDirty","LinkedList","head","tail","linkedListProto","insert","entry","Entry","insertEntry","maxSize","_list","_map","_maxSize","_lastRemovedEntry","LRUProto","leastUsedEntry","hide","show","removeClipPath","cubic","quadratic","swapExtrema","windingCubic","nRoots","y0_","y1_","nExtrema","unit","windingQuadratic","y_","windingArc","containPath","isStroke","parseInt10","checkParentAvailable","insertAfter","prevSibling","prepend","SVGPainter","_opts","svgDom","bgRoot","gradientManager","clipPathManager","shadowManager","viewport","_svgDom","_backgroundRoot","_viewport","_visibleList","createMethodNotSupport","getType","getSvgDom","getSvgRoot","getViewportRootOffset","viewportRoot","_paintList","_backgroundNode","bgNode","visibleList","listLen","newVisibleList","prevSvgElement","item","textSvgElement","_getDefs","display","_getSize","_width","_height","viewportStyle","whIdx","wh","cwh","plt","prb","defaultView","getComputedStyle","toDataURL","html","encodeURIComponent","outerHTML","repeat","createPattern","RadialGradient","idStart","childAt","childOfName","childCount","_doAdd","addBefore","removeAll","eachChild","includeChildren","tmpMat","end","extremity","fromPoints","xDim","yDim","tx","ty","vec2Min","vec2Max","textWidthCache","textWidthCacheCounter","TEXT_CACHE_MAX","STYLE_REG","measureText","getRichTextRect","getPlainTextRect","halfHeight","adjustTextPositionOnRect","dummyStyle","truncateText","containerWidth","ellipsis","prepareTruncateOptions","truncateSingleLine","maxIterations","minChar","cnCharWidth","ascCharWidth","placeholder","ellipsisWidth","subLength","estimateLength","charCode","charCodeAt","getLineHeight","truncOuterHeight","truncOuterWidth","matchedIndex","index","pushTokens","substring","contentHeight","pendingList","stlPadding","truncateWidth","truncateHeight","tokenHeight","tokenWidth","tokenWidthNotSpecified","percentWidth","bgImg","paddingW","remianTruncWidth","block","isEmptyStr","strs","tokensLen","VMLPainter","vmlViewport","_vmlRoot","_vmlViewport","_firstPaint","__alreadyNotVisible","_getWidth","_getHeight","vmlViewportStyle","currentStyle","clientWidth","paddingLeft","paddingRight","clientHeight","paddingTop","paddingBottom","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","isLayerValid","__builtin__","viewRect","isDisplayableCulled","isClipPathChanged","prevClipPaths","doClip","createRoot","domRoot","singleCanvas","_singleCanvas","rootStyle","zlevelList","_zlevelList","layers","_layers","_layerConfig","_needsManuallyCompositing","mainLayer","_domRoot","_hoverlayer","_hoverElements","isSingleCanvas","paintAll","_redrawId","random","_backgroundColor","hoverStyle","__hoverMir","__from","hoverElements","hoverLayer","getLayer","originalEl","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","finished","_doPaintList","_compositeManually","eachBuiltinLayer","virtual","layerList","zi","useTimer","now","startTime","firstEl","dTime","prevElClipPaths","draw","currentLayer","forcePaint","insertLayer","layersMap","prevLayer","prevDom","eachLayer","getLayers","updatePrevLayer","prevZlevel","incrementalLayerCount","_clearLayer","layerConfig","_zlevel","delLayer","_progressiveLayers","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","renderToCanvas","shadowBlurSize","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","ImageShape","imgShape","mathAtan2"],"mappings":"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","file":"static/js/npm.zrender.6cb93dc6.js","sourcesContent":["// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n var r = 0;\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n\n return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n\n if (runHi === hi) {\n return 1;\n }\n\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n\n return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n hi--;\n\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n\n while (left < right) {\n mid = left + right >>> 1;\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n\n var n = start - left;\n\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n\n case 2:\n array[left + 2] = array[left + 1];\n\n case 1:\n array[left + 1] = array[left];\n break;\n\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n\n }\n\n array[left] = pivot;\n }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n\n return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n\n return offset;\n}\n\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n } else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n\n mergeAt(n);\n }\n }\n\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n\n mergeAt(n);\n }\n }\n\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n\n if (length1 === 0) {\n return;\n }\n\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n if (length2 === 0) {\n return;\n }\n\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n } else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n return;\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n return;\n }\n\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = tmp[cursor1++];\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n\n return;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n return;\n }\n\n var _minGallop = minGallop;\n\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = tmp[cursor2--];\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n\n if (minGallop < 1) {\n minGallop = 1;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n } else {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n\n this.mergeRuns = mergeRuns;\n this.forceMergeRuns = forceMergeRuns;\n this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n\n if (!hi) {\n hi = array.length;\n }\n\n var remaining = hi - lo;\n\n if (remaining < 2) {\n return;\n }\n\n var runLength = 0;\n\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n\n if (runLength < minRun) {\n var force = remaining;\n\n if (force > minRun) {\n force = minRun;\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n\n ts.forceMergeRuns();\n}\n\nmodule.exports = sort;","var windingLine = require(\"./windingLine\");\n\nvar EPSILON = 1e-8;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\n\nfunction contain(points, x, y) {\n var w = 0;\n var p = points[0];\n\n if (!p) {\n return false;\n }\n\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n } // Close polygon\n\n\n var p0 = points[0];\n\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n\n return w !== 0;\n}\n\nexports.contain = contain;","var Clip = require(\"./Clip\");\n\nvar color = require(\"../tool/color\");\n\nvar _util = require(\"../core/util\");\n\nvar isArrayLike = _util.isArrayLike;\n\n/**\n * @module echarts/animation/Animator\n */\nvar arraySlice = Array.prototype.slice;\n\nfunction defaultGetter(target, key) {\n return target[key];\n}\n\nfunction defaultSetter(target, key, value) {\n target[key] = value;\n}\n/**\n * @param {number} p0\n * @param {number} p1\n * @param {number} percent\n * @return {number}\n */\n\n\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\n/**\n * @param {string} p0\n * @param {string} p1\n * @param {number} percent\n * @return {string}\n */\n\n\nfunction interpolateString(p0, p1, percent) {\n return percent > 0.5 ? p1 : p0;\n}\n/**\n * @param {Array} p0\n * @param {Array} p1\n * @param {number} percent\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction interpolateArray(p0, p1, percent, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n } else {\n var len2 = len && p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n }\n} // arr0 is source array, arr1 is target array.\n// Do some preprocess to avoid error happened when interpolating from arr0 to arr1\n\n\nfunction fillArr(arr0, arr1, arrDim) {\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n\n if (arr0Len !== arr1Len) {\n // FIXME Not work for TypedArray\n var isPreviousLarger = arr0Len > arr1Len;\n\n if (isPreviousLarger) {\n // Cut the previous\n arr0.length = arr1Len;\n } else {\n // Fill the previous\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n } // Handling NaN value\n\n\n var len2 = arr0[0] && arr0[0].length;\n\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n } else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\n/**\n * @param {Array} arr0\n * @param {Array} arr1\n * @param {number} arrDim\n * @return {boolean}\n */\n\n\nfunction isArraySame(arr0, arr1, arrDim) {\n if (arr0 === arr1) {\n return true;\n }\n\n var len = arr0.length;\n\n if (len !== arr1.length) {\n return false;\n }\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n } else {\n var len2 = arr0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n if (arr0[i][j] !== arr1[i][j]) {\n return false;\n }\n }\n }\n }\n\n return true;\n}\n/**\n * Catmull Rom interpolate array\n * @param {Array} p0\n * @param {Array} p1\n * @param {Array} p2\n * @param {Array} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @param {Array} out\n * @param {number} arrDim\n */\n\n\nfunction catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {\n var len = p0.length;\n\n if (arrDim === 1) {\n for (var i = 0; i < len; i++) {\n out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\n }\n } else {\n var len2 = p0[0].length;\n\n for (var i = 0; i < len; i++) {\n for (var j = 0; j < len2; j++) {\n out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\n }\n }\n }\n}\n/**\n * Catmull Rom interpolate number\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {number} t2\n * @param {number} t3\n * @return {number}\n */\n\n\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n\n if (isArrayLike(value[0])) {\n var ret = [];\n\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n\n return ret;\n }\n\n return arraySlice.call(value);\n }\n\n return value;\n}\n\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]);\n rgba[1] = Math.floor(rgba[1]);\n rgba[2] = Math.floor(rgba[2]);\n return 'rgba(' + rgba.join(',') + ')';\n}\n\nfunction getArrayDim(keyframes) {\n var lastValue = keyframes[keyframes.length - 1].value;\n return isArrayLike(lastValue && lastValue[0]) ? 2 : 1;\n}\n\nfunction createTrackClip(animator, easing, oneTrackDone, keyframes, propName, forceAnimate) {\n var getter = animator._getter;\n var setter = animator._setter;\n var useSpline = easing === 'spline';\n var trackLen = keyframes.length;\n\n if (!trackLen) {\n return;\n } // Guess data type\n\n\n var firstVal = keyframes[0].value;\n var isValueArray = isArrayLike(firstVal);\n var isValueColor = false;\n var isValueString = false; // For vertices morphing\n\n var arrDim = isValueArray ? getArrayDim(keyframes) : 0;\n var trackMaxTime; // Sort keyframe as ascending\n\n keyframes.sort(function (a, b) {\n return a.time - b.time;\n });\n trackMaxTime = keyframes[trackLen - 1].time; // Percents of each keyframe\n\n var kfPercents = []; // Value of each keyframe\n\n var kfValues = [];\n var prevValue = keyframes[0].value;\n var isAllValueEqual = true;\n\n for (var i = 0; i < trackLen; i++) {\n kfPercents.push(keyframes[i].time / trackMaxTime); // Assume value is a color when it is a string\n\n var value = keyframes[i].value; // Check if value is equal, deep check if value is array\n\n if (!(isValueArray && isArraySame(value, prevValue, arrDim) || !isValueArray && value === prevValue)) {\n isAllValueEqual = false;\n }\n\n prevValue = value; // Try converting a string to a color array\n\n if (typeof value === 'string') {\n var colorArray = color.parse(value);\n\n if (colorArray) {\n value = colorArray;\n isValueColor = true;\n } else {\n isValueString = true;\n }\n }\n\n kfValues.push(value);\n }\n\n if (!forceAnimate && isAllValueEqual) {\n return;\n }\n\n var lastValue = kfValues[trackLen - 1]; // Polyfill array and NaN value\n\n for (var i = 0; i < trackLen - 1; i++) {\n if (isValueArray) {\n fillArr(kfValues[i], lastValue, arrDim);\n } else {\n if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) {\n kfValues[i] = lastValue;\n }\n }\n }\n\n isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); // Cache the key of last frame to speed up when\n // animation playback is sequency\n\n var lastFrame = 0;\n var lastFramePercent = 0;\n var start;\n var w;\n var p0;\n var p1;\n var p2;\n var p3;\n\n if (isValueColor) {\n var rgba = [0, 0, 0, 0];\n }\n\n var onframe = function (target, percent) {\n // Find the range keyframes\n // kf1-----kf2---------current--------kf3\n // find kf2 and kf3 and do interpolation\n var frame; // In the easing function like elasticOut, percent may less than 0\n\n if (percent < 0) {\n frame = 0;\n } else if (percent < lastFramePercent) {\n // Start from next key\n // PENDING start from lastFrame ?\n start = Math.min(lastFrame + 1, trackLen - 1);\n\n for (frame = start; frame >= 0; frame--) {\n if (kfPercents[frame] <= percent) {\n break;\n }\n } // PENDING really need to do this ?\n\n\n frame = Math.min(frame, trackLen - 2);\n } else {\n for (frame = lastFrame; frame < trackLen; frame++) {\n if (kfPercents[frame] > percent) {\n break;\n }\n }\n\n frame = Math.min(frame - 1, trackLen - 2);\n }\n\n lastFrame = frame;\n lastFramePercent = percent;\n var range = kfPercents[frame + 1] - kfPercents[frame];\n\n if (range === 0) {\n return;\n } else {\n w = (percent - kfPercents[frame]) / range;\n }\n\n if (useSpline) {\n p1 = kfValues[frame];\n p0 = kfValues[frame === 0 ? frame : frame - 1];\n p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1];\n p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2];\n\n if (isValueArray) {\n catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n value = catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(p1, p2, w);\n } else {\n value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n }\n\n setter(target, propName, value);\n }\n } else {\n if (isValueArray) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, getter(target, propName), arrDim);\n } else {\n var value;\n\n if (isValueColor) {\n interpolateArray(kfValues[frame], kfValues[frame + 1], w, rgba, 1);\n value = rgba2String(rgba);\n } else if (isValueString) {\n // String is step(0.5)\n return interpolateString(kfValues[frame], kfValues[frame + 1], w);\n } else {\n value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w);\n }\n\n setter(target, propName, value);\n }\n }\n };\n\n var clip = new Clip({\n target: animator._target,\n life: trackMaxTime,\n loop: animator._loop,\n delay: animator._delay,\n onframe: onframe,\n ondestroy: oneTrackDone\n });\n\n if (easing && easing !== 'spline') {\n clip.easing = easing;\n }\n\n return clip;\n}\n/**\n * @alias module:zrender/animation/Animator\n * @constructor\n * @param {Object} target\n * @param {boolean} loop\n * @param {Function} getter\n * @param {Function} setter\n */\n\n\nvar Animator = function (target, loop, getter, setter) {\n this._tracks = {};\n this._target = target;\n this._loop = loop || false;\n this._getter = getter || defaultGetter;\n this._setter = setter || defaultSetter;\n this._clipCount = 0;\n this._delay = 0;\n this._doneList = [];\n this._onframeList = [];\n this._clipList = [];\n};\n\nAnimator.prototype = {\n /**\n * Set Animation keyframe\n * @param {number} time 关键帧时间,单位是ms\n * @param {Object} props 关键帧的属性值,key-value表示\n * @return {module:zrender/animation/Animator}\n */\n when: function (time\n /* ms */\n , props) {\n var tracks = this._tracks;\n\n for (var propName in props) {\n if (!props.hasOwnProperty(propName)) {\n continue;\n }\n\n if (!tracks[propName]) {\n tracks[propName] = []; // Invalid value\n\n var value = this._getter(this._target, propName);\n\n if (value == null) {\n // zrLog('Invalid property ' + propName);\n continue;\n } // If time is 0\n // Then props is given initialize value\n // Else\n // Initialize value from current prop value\n\n\n if (time !== 0) {\n tracks[propName].push({\n time: 0,\n value: cloneValue(value)\n });\n }\n }\n\n tracks[propName].push({\n time: time,\n value: props[propName]\n });\n }\n\n return this;\n },\n\n /**\n * 添加动画每一帧的回调函数\n * @param {Function} callback\n * @return {module:zrender/animation/Animator}\n */\n during: function (callback) {\n this._onframeList.push(callback);\n\n return this;\n },\n pause: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].pause();\n }\n\n this._paused = true;\n },\n resume: function () {\n for (var i = 0; i < this._clipList.length; i++) {\n this._clipList[i].resume();\n }\n\n this._paused = false;\n },\n isPaused: function () {\n return !!this._paused;\n },\n _doneCallback: function () {\n // Clear all tracks\n this._tracks = {}; // Clear all clips\n\n this._clipList.length = 0;\n var doneList = this._doneList;\n var len = doneList.length;\n\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n },\n\n /**\n * Start the animation\n * @param {string|Function} [easing]\n * 动画缓动函数,详见{@link module:zrender/animation/easing}\n * @param {boolean} forceAnimate\n * @return {module:zrender/animation/Animator}\n */\n start: function (easing, forceAnimate) {\n var self = this;\n var clipCount = 0;\n\n var oneTrackDone = function () {\n clipCount--;\n\n if (!clipCount) {\n self._doneCallback();\n }\n };\n\n var lastClip;\n\n for (var propName in this._tracks) {\n if (!this._tracks.hasOwnProperty(propName)) {\n continue;\n }\n\n var clip = createTrackClip(this, easing, oneTrackDone, this._tracks[propName], propName, forceAnimate);\n\n if (clip) {\n this._clipList.push(clip);\n\n clipCount++; // If start after added to animation\n\n if (this.animation) {\n this.animation.addClip(clip);\n }\n\n lastClip = clip;\n }\n } // Add during callback on the last clip\n\n\n if (lastClip) {\n var oldOnFrame = lastClip.onframe;\n\n lastClip.onframe = function (target, percent) {\n oldOnFrame(target, percent);\n\n for (var i = 0; i < self._onframeList.length; i++) {\n self._onframeList[i](target, percent);\n }\n };\n } // This optimization will help the case that in the upper application\n // the view may be refreshed frequently, where animation will be\n // called repeatly but nothing changed.\n\n\n if (!clipCount) {\n this._doneCallback();\n }\n\n return this;\n },\n\n /**\n * Stop animation\n * @param {boolean} forwardToLast If move to last frame before stop\n */\n stop: function (forwardToLast) {\n var clipList = this._clipList;\n var animation = this.animation;\n\n for (var i = 0; i < clipList.length; i++) {\n var clip = clipList[i];\n\n if (forwardToLast) {\n // Move to last frame before stop\n clip.onframe(this._target, 1);\n }\n\n animation && animation.removeClip(clip);\n }\n\n clipList.length = 0;\n },\n\n /**\n * Set when animation delay starts\n * @param {number} time 单位ms\n * @return {module:zrender/animation/Animator}\n */\n delay: function (time) {\n this._delay = time;\n return this;\n },\n\n /**\n * Add callback for animation end\n * @param {Function} cb\n * @return {module:zrender/animation/Animator}\n */\n done: function (cb) {\n if (cb) {\n this._doneList.push(cb);\n }\n\n return this;\n },\n\n /**\n * @return {Array.}\n */\n getClips: function () {\n return this._clipList;\n }\n};\nvar _default = Animator;\nmodule.exports = _default;","var eventUtil = require(\"./event\");\n\n/**\n * Only implements needed gestures for mobile.\n */\nvar GestureMgr = function () {\n /**\n * @private\n * @type {Array.}\n */\n this._track = [];\n};\n\nGestureMgr.prototype = {\n constructor: GestureMgr,\n recognize: function (event, target, root) {\n this._doTrack(event, target, root);\n\n return this._recognize(event);\n },\n clear: function () {\n this._track.length = 0;\n return this;\n },\n _doTrack: function (event, target, root) {\n var touches = event.touches;\n\n if (!touches) {\n return;\n }\n\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n\n this._track.push(trackItem);\n },\n _recognize: function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n }\n};\n\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction center(pointPair) {\n return [(pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2];\n}\n\nvar recognizers = {\n pinch: function (track, event) {\n var trackLen = track.length;\n\n if (!trackLen) {\n return;\n }\n\n var pinchEnd = (track[trackLen - 1] || {}).points;\n var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd;\n\n if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: track[0].target,\n event: event\n };\n }\n } // Only pinch currently.\n\n};\nvar _default = GestureMgr;\nmodule.exports = _default;","// Myers' Diff Algorithm\n// Modified from https://github.com/kpdecker/jsdiff/blob/master/src/diff/base.js\nfunction Diff() {}\n\nDiff.prototype = {\n diff: function (oldArr, newArr, equals) {\n if (!equals) {\n equals = function (a, b) {\n return a === b;\n };\n }\n\n this.equals = equals;\n var self = this;\n oldArr = oldArr.slice();\n newArr = newArr.slice(); // Allow subclasses to massage the input prior to running\n\n var newLen = newArr.length;\n var oldLen = oldArr.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n var bestPath = [{\n newPos: -1,\n components: []\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var oldPos = this.extractCommon(bestPath[0], newArr, oldArr, 0);\n\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n var indices = [];\n\n for (var i = 0; i < newArr.length; i++) {\n indices.push(i);\n } // Identity per the equality and tokenizer\n\n\n return [{\n indices: indices,\n count: newArr.length\n }];\n } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n function execEditLength() {\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n var basePath;\n var addPath = bestPath[diagonalPath - 1];\n var removePath = bestPath[diagonalPath + 1];\n var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n if (addPath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = addPath && addPath.newPos + 1 < newLen;\n var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the new string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n\n\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n basePath = clonePath(removePath);\n self.pushComponent(basePath.components, undefined, true);\n } else {\n basePath = addPath; // No need to clone, we've pulled it from the list\n\n basePath.newPos++;\n self.pushComponent(basePath.components, true, undefined);\n }\n\n oldPos = self.extractCommon(basePath, newArr, oldArr, diagonalPath); // If we have hit the end of both strings, then we are done\n\n if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n return buildValues(self, basePath.components, newArr, oldArr);\n } else {\n // Otherwise track this path as a potential candidate and continue.\n bestPath[diagonalPath] = basePath;\n }\n }\n\n editLength++;\n }\n\n while (editLength <= maxEditLength) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n },\n pushComponent: function (components, added, removed) {\n var last = components[components.length - 1];\n\n if (last && last.added === added && last.removed === removed) {\n // We need to clone here as the component clone operation is just\n // as shallow array clone\n components[components.length - 1] = {\n count: last.count + 1,\n added: added,\n removed: removed\n };\n } else {\n components.push({\n count: 1,\n added: added,\n removed: removed\n });\n }\n },\n extractCommon: function (basePath, newArr, oldArr, diagonalPath) {\n var newLen = newArr.length;\n var oldLen = oldArr.length;\n var newPos = basePath.newPos;\n var oldPos = newPos - diagonalPath;\n var commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newArr[newPos + 1], oldArr[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.components.push({\n count: commonCount\n });\n }\n\n basePath.newPos = newPos;\n return oldPos;\n },\n tokenize: function (value) {\n return value.slice();\n },\n join: function (value) {\n return value.slice();\n }\n};\n\nfunction buildValues(diff, components, newArr, oldArr) {\n var componentPos = 0;\n var componentLen = components.length;\n var newPos = 0;\n var oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n var indices = [];\n\n for (var i = newPos; i < newPos + component.count; i++) {\n indices.push(i);\n }\n\n component.indices = indices;\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n var indices = [];\n\n for (var i = oldPos; i < oldPos + component.count; i++) {\n indices.push(i);\n }\n\n component.indices = indices;\n oldPos += component.count;\n }\n }\n\n return components;\n}\n\nfunction clonePath(path) {\n return {\n newPos: path.newPos,\n components: path.components.slice(0)\n };\n}\n\nvar arrayDiff = new Diff();\n\nfunction _default(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n\nmodule.exports = _default;","var matrix = require(\"../core/matrix\");\n\nvar vector = require(\"../core/vector\");\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n opts = opts || {}; // If there are no given position, rotation, scale\n\n if (!opts.position) {\n /**\n * 平移\n * @type {Array.}\n * @default [0, 0]\n */\n this.position = [0, 0];\n }\n\n if (opts.rotation == null) {\n /**\n * 旋转\n * @type {Array.}\n * @default 0\n */\n this.rotation = 0;\n }\n\n if (!opts.scale) {\n /**\n * 缩放\n * @type {Array.}\n * @default [1, 1]\n */\n this.scale = [1, 1];\n }\n /**\n * 旋转和缩放的原点\n * @type {Array.}\n * @default null\n */\n\n\n this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\nvar scaleTmp = [];\n\ntransformableProto.updateTransform = function () {\n var parent = this.parent;\n var parentHasTransform = parent && parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n\n if (!(needLocalTransform || parentHasTransform)) {\n m && mIdentity(m);\n return;\n }\n\n m = m || matrix.create();\n\n if (needLocalTransform) {\n this.getLocalTransform(m);\n } else {\n mIdentity(m);\n } // 应用父节点变换\n\n\n if (parentHasTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parent.transform, m);\n } else {\n matrix.copy(m, parent.transform);\n }\n } // 保存这个变换矩阵\n\n\n this.transform = m;\n var globalScaleRatio = this.globalScaleRatio;\n\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n var m = this.transform;\n var dpr = ctx.dpr || 1;\n\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n var dpr = ctx.dpr || 1;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\nvar originTransform = matrix.create();\n\ntransformableProto.setLocalTransform = function (m) {\n if (!m) {\n // TODO return or set identity?\n return;\n }\n\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var position = this.position;\n var scale = this.scale;\n\n if (isNotAroundZero(sx - 1)) {\n sx = Math.sqrt(sx);\n }\n\n if (isNotAroundZero(sy - 1)) {\n sy = Math.sqrt(sy);\n }\n\n if (m[0] < 0) {\n sx = -sx;\n }\n\n if (m[3] < 0) {\n sy = -sy;\n }\n\n position[0] = m[4];\n position[1] = m[5];\n scale[0] = sx;\n scale[1] = sy;\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\n\ntransformableProto.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n\n var parent = this.parent;\n var m = this.transform;\n\n if (parent && parent.transform) {\n // Get local transform and decompose them to position, scale, rotation\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n\n var origin = this.origin;\n\n if (origin && (origin[0] || origin[1])) {\n originTransform[4] = origin[0];\n originTransform[5] = origin[1];\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= origin[0];\n tmpTransform[5] -= origin[1];\n m = tmpTransform;\n }\n\n this.setLocalTransform(m);\n};\n/**\n * Get global scale\n * @return {Array.}\n */\n\n\ntransformableProto.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n\n return out;\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n\n return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n\n return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.} target.origin\n * @param {number} target.rotation\n * @param {Array.} target.position\n * @param {Array.} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n m = m || [];\n mIdentity(m);\n var origin = target.origin;\n var scale = target.scale || [1, 1];\n var rotation = target.rotation || 0;\n var position = target.position || [0, 0];\n\n if (origin) {\n // Translate to origin\n m[4] -= origin[0];\n m[5] -= origin[1];\n }\n\n matrix.scale(m, m, scale);\n\n if (rotation) {\n matrix.rotate(m, m, rotation);\n }\n\n if (origin) {\n // Translate back from origin\n m[4] += origin[0];\n m[5] += origin[1];\n }\n\n m[4] += position[0];\n m[5] += position[1];\n return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar imageHelper = require(\"./helper/image\");\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n constructor: ZImage,\n type: 'image',\n brush: function (ctx, prevEl) {\n var style = this.style;\n var src = style.image; // Must bind each time\n\n style.bind(ctx, this, prevEl);\n var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n if (!image || !imageHelper.isImageReady(image)) {\n return;\n } // 图片已经加载完成\n // if (image.nodeName.toUpperCase() == 'IMG') {\n // if (!image.complete) {\n // return;\n // }\n // }\n // Else is canvas\n\n\n var x = style.x || 0;\n var y = style.y || 0;\n var width = style.width;\n var height = style.height;\n var aspect = image.width / image.height;\n\n if (width == null && height != null) {\n // Keep image/height ratio\n width = height * aspect;\n } else if (height == null && width != null) {\n height = width / aspect;\n } else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n } // 设置transform\n\n\n this.setTransform(ctx);\n\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n } else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n } else {\n ctx.drawImage(image, x, y, width, height);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n getBoundingRect: function () {\n var style = this.style;\n\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\nmodule.exports = _default;","/**\n * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.}\n */\n\nfunction create() {\n var out = new ArrayCtor(6);\n identity(out);\n return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.} out\n */\n\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m\n */\n\n\nfunction copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m1\n * @param {Float32Array|Array.} m2\n */\n\n\nfunction mul(out, m1, m2) {\n // Consider matrix.mul(m, m2, m);\n // where out is the same as m2.\n // So use temp variable to escape error.\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\n/**\n * 平移变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\n/**\n * 旋转变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {number} rad\n */\n\n\nfunction rotate(out, a, rad) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * atx + st * aty;\n out[5] = ct * aty - st * atx;\n return out;\n}\n/**\n * 缩放变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n */\n\n\nfunction invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.} a\n */\n\n\nfunction clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;","var zrUtil = require(\"../core/util\");\n\nvar Style = require(\"./Style\");\n\nvar Element = require(\"../Element\");\n\nvar RectText = require(\"./mixin/RectText\");\n\n/**\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n opts = opts || {};\n Element.call(this, opts); // Extend properties\n\n for (var name in opts) {\n if (opts.hasOwnProperty(name) && name !== 'style') {\n this[name] = opts[name];\n }\n }\n /**\n * @type {module:zrender/graphic/Style}\n */\n\n\n this.style = new Style(opts.style, this);\n this._rect = null; // Shapes for cascade clipping.\n // Can only be `null`/`undefined` or an non-empty array, MUST NOT be an empty array.\n // because it is easy to only using null to check whether clipPaths changed.\n\n this.__clipPaths = null; // FIXME Stateful must be mixined after style is setted\n // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n constructor: Displayable,\n type: 'displayable',\n\n /**\n * Dirty flag. From which painter will determine if this displayable object needs brush.\n * @name module:zrender/graphic/Displayable#__dirty\n * @type {boolean}\n */\n __dirty: true,\n\n /**\n * Whether the displayable object is visible. when it is true, the displayable object\n * is not drawn, but the mouse event can still trigger the object.\n * @name module:/zrender/graphic/Displayable#invisible\n * @type {boolean}\n * @default false\n */\n invisible: false,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z: 0,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z2: 0,\n\n /**\n * The z level determines the displayable object can be drawn in which layer canvas.\n * @name module:/zrender/graphic/Displayable#zlevel\n * @type {number}\n * @default 0\n */\n zlevel: 0,\n\n /**\n * Whether it can be dragged.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n draggable: false,\n\n /**\n * Whether is it dragging.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n dragging: false,\n\n /**\n * Whether to respond to mouse events.\n * @name module:/zrender/graphic/Displayable#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * If enable culling\n * @type {boolean}\n * @default false\n */\n culling: false,\n\n /**\n * Mouse cursor when hovered\n * @name module:/zrender/graphic/Displayable#cursor\n * @type {string}\n */\n cursor: 'pointer',\n\n /**\n * If hover area is bounding rect\n * @name module:/zrender/graphic/Displayable#rectHover\n * @type {string}\n */\n rectHover: false,\n\n /**\n * Render the element progressively when the value >= 0,\n * usefull for large data.\n * @type {boolean}\n */\n progressive: false,\n\n /**\n * @type {boolean}\n */\n incremental: false,\n\n /**\n * Scale ratio for global scale.\n * @type {boolean}\n */\n globalScaleRatio: 1,\n beforeBrush: function (ctx) {},\n afterBrush: function (ctx) {},\n\n /**\n * Graphic drawing method.\n * @param {CanvasRenderingContext2D} ctx\n */\n // Interface\n brush: function (ctx, prevEl) {},\n\n /**\n * Get the minimum bounding box.\n * @return {module:zrender/core/BoundingRect}\n */\n // Interface\n getBoundingRect: function () {},\n\n /**\n * If displayable element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n contain: function (x, y) {\n return this.rectContain(x, y);\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n cb.call(context, this);\n },\n\n /**\n * If bounding rect of element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n rectContain: function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n },\n\n /**\n * Mark displayable element dirty and refresh next frame\n */\n dirty: function () {\n this.__dirty = this.__dirtyText = true;\n this._rect = null;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * If displayable object binded any event\n * @return {boolean}\n */\n // TODO, events bound by bind\n // isSilent: function () {\n // return !(\n // this.hoverable || this.draggable\n // || this.onmousemove || this.onmouseover || this.onmouseout\n // || this.onmousedown || this.onmouseup || this.onclick\n // || this.ondragenter || this.ondragover || this.ondragleave\n // || this.ondrop\n // );\n // },\n\n /**\n * Alias for animate('style')\n * @param {boolean} loop\n */\n animateStyle: function (loop) {\n return this.animate('style', loop);\n },\n attrKV: function (key, value) {\n if (key !== 'style') {\n Element.prototype.attrKV.call(this, key, value);\n } else {\n this.style.set(value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setStyle: function (key, value) {\n this.style.set(key, value);\n this.dirty(false);\n return this;\n },\n\n /**\n * Use given style object\n * @param {Object} obj\n */\n useStyle: function (obj) {\n this.style = new Style(obj, this);\n this.dirty(false);\n return this;\n },\n\n /**\n * The string value of `textPosition` needs to be calculated to a real postion.\n * For example, `'inside'` is calculated to `[rect.width/2, rect.height/2]`\n * by default. See `contain/text.js#calculateTextPosition` for more details.\n * But some coutom shapes like \"pin\", \"flag\" have center that is not exactly\n * `[width/2, height/2]`. So we provide this hook to customize the calculation\n * for those shapes. It will be called if the `style.textPosition` is a string.\n * @param {Obejct} [out] Prepared out object. If not provided, this method should\n * be responsible for creating one.\n * @param {module:zrender/graphic/Style} style\n * @param {Object} rect {x, y, width, height}\n * @return {Obejct} out The same as the input out.\n * {\n * x: number. mandatory.\n * y: number. mandatory.\n * textAlign: string. optional. use style.textAlign by default.\n * textVerticalAlign: string. optional. use style.textVerticalAlign by default.\n * }\n */\n calculateTextPosition: null\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\nmodule.exports = _default;","/**\n * Event Mixin\n * @module zrender/mixin/Eventful\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * pissang (https://www.github.com/pissang)\n */\nvar arrySlice = Array.prototype.slice;\n/**\n * Event dispatcher.\n *\n * @alias module:zrender/mixin/Eventful\n * @constructor\n * @param {Object} [eventProcessor] The object eventProcessor is the scope when\n * `eventProcessor.xxx` called.\n * @param {Function} [eventProcessor.normalizeQuery]\n * param: {string|Object} Raw query.\n * return: {string|Object} Normalized query.\n * @param {Function} [eventProcessor.filter] Event will be dispatched only\n * if it returns `true`.\n * param: {string} eventType\n * param: {string|Object} query\n * return: {boolean}\n * @param {Function} [eventProcessor.afterTrigger] Called after all handlers called.\n * param: {string} eventType\n */\n\nvar Eventful = function (eventProcessor) {\n this._$handlers = {};\n this._$eventProcessor = eventProcessor;\n};\n\nEventful.prototype = {\n constructor: Eventful,\n\n /**\n * The handler can only be triggered once, then removed.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} context\n */\n one: function (event, query, handler, context) {\n return on(this, event, query, handler, context, true);\n },\n\n /**\n * Bind a handler.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} [context]\n */\n on: function (event, query, handler, context) {\n return on(this, event, query, handler, context, false);\n },\n\n /**\n * Whether any handler has bound.\n *\n * @param {string} event\n * @return {boolean}\n */\n isSilent: function (event) {\n var _h = this._$handlers;\n return !_h[event] || !_h[event].length;\n },\n\n /**\n * Unbind a event.\n *\n * @param {string} [event] The event name.\n * If no `event` input, \"off\" all listeners.\n * @param {Function} [handler] The event handler.\n * If no `handler` input, \"off\" all listeners of the `event`.\n */\n off: function (event, handler) {\n var _h = this._$handlers;\n\n if (!event) {\n this._$handlers = {};\n return this;\n }\n\n if (handler) {\n if (_h[event]) {\n var newList = [];\n\n for (var i = 0, l = _h[event].length; i < l; i++) {\n if (_h[event][i].h !== handler) {\n newList.push(_h[event][i]);\n }\n }\n\n _h[event] = newList;\n }\n\n if (_h[event] && _h[event].length === 0) {\n delete _h[event];\n }\n } else {\n delete _h[event];\n }\n\n return this;\n },\n\n /**\n * Dispatch a event.\n *\n * @param {string} type The event name.\n */\n trigger: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 3) {\n args = arrySlice.call(args, 1);\n }\n\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(hItem.ctx);\n break;\n\n case 2:\n hItem.h.call(hItem.ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(hItem.ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n },\n\n /**\n * Dispatch a event with context, which is specified at the last parameter.\n *\n * @param {string} type The event name.\n */\n triggerWithContext: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 4) {\n args = arrySlice.call(args, 1, args.length - 1);\n }\n\n var ctx = args[args.length - 1];\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(ctx);\n break;\n\n case 2:\n hItem.h.call(ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n }\n};\n\nfunction normalizeQuery(host, query) {\n var eventProcessor = host._$eventProcessor;\n\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n\n return query;\n}\n\nfunction on(eventful, event, query, handler, context, isOnce) {\n var _h = eventful._$handlers;\n\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n\n if (!handler || !event) {\n return eventful;\n }\n\n query = normalizeQuery(eventful, query);\n\n if (!_h[event]) {\n _h[event] = [];\n }\n\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return eventful;\n }\n }\n\n var wrap = {\n h: handler,\n one: isOnce,\n query: query,\n ctx: context || eventful,\n // FIXME\n // Do not publish this feature util it is proved that it makes sense.\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);\n return eventful;\n} // ----------------------\n// The events in zrender\n// ----------------------\n\n/**\n * @event module:zrender/mixin/Eventful#onclick\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseout\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousemove\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousewheel\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousedown\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseup\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrag\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragstart\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragend\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragenter\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragleave\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrop\n * @type {Function}\n * @default null\n */\n\n\nvar _default = Eventful;\nmodule.exports = _default;","var curve = require(\"./curve\");\n\nvar vec2 = require(\"./vector\");\n\nvar bbox = require(\"./bbox\");\n\nvar BoundingRect = require(\"./BoundingRect\");\n\nvar _config = require(\"../config\");\n\nvar dpr = _config.devicePixelRatio;\n\n/**\n * Path 代理,可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中\n * 可以用于 isInsidePath 判断以及获取boundingRect\n *\n * @module zrender/core/PathProxy\n * @author Yi Shen (http://www.github.com/pissang)\n */\n// TODO getTotalLength, getPointAtLength\n\n/* global Float32Array */\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n // Rect\n R: 7\n}; // var CMD_MEM_SIZE = {\n// M: 3,\n// L: 3,\n// C: 7,\n// Q: 5,\n// A: 9,\n// R: 5,\n// Z: 1\n// };\n\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\n/**\n * @alias module:zrender/core/PathProxy\n * @constructor\n */\n\nvar PathProxy = function (notSaveData) {\n this._saveData = !(notSaveData || false);\n\n if (this._saveData) {\n /**\n * Path data. Stored as flat array\n * @type {Array.}\n */\n this.data = [];\n }\n\n this._ctx = null;\n};\n/**\n * 快速计算Path包围盒(并不是最小包围盒)\n * @return {Object}\n */\n\n\nPathProxy.prototype = {\n constructor: PathProxy,\n _xi: 0,\n _yi: 0,\n _x0: 0,\n _y0: 0,\n // Unit x, Unit y. Provide for avoiding drawing that too short line segment\n _ux: 0,\n _uy: 0,\n _len: 0,\n _lineDash: null,\n _dashOffset: 0,\n _dashIdx: 0,\n _dashSum: 0,\n\n /**\n * @readOnly\n */\n setScale: function (sx, sy, segmentIgnoreThreshold) {\n // Compat. Previously there is no segmentIgnoreThreshold.\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n },\n getContext: function () {\n return this._ctx;\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n beginPath: function (ctx) {\n this._ctx = ctx;\n ctx && ctx.beginPath();\n ctx && (this.dpr = ctx.dpr); // Reset\n\n if (this._saveData) {\n this._len = 0;\n }\n\n if (this._lineDash) {\n this._lineDash = null;\n this._dashOffset = 0;\n }\n\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n moveTo: function (x, y) {\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y); // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用\n // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。\n // 有可能在 beginPath 之后直接调用 lineTo,这时候 x0, y0 需要\n // 在 lineTo 方法中记录,这里先不考虑这种情况,dashed line 也只在 IE10- 中不支持\n\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n lineTo: function (x, y) {\n var exceedUnit = mathAbs(x - this._xi) > this._ux || mathAbs(y - this._yi) > this._uy // Force draw the first segment\n || this._len < 5;\n this.addData(CMD.L, x, y);\n\n if (this._ctx && exceedUnit) {\n this._needsDash() ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y);\n }\n\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n }\n\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @return {module:zrender/core/PathProxy}\n */\n bezierCurveTo: function (x1, y1, x2, y2, x3, y3) {\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n\n this._xi = x3;\n this._yi = y3;\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {module:zrender/core/PathProxy}\n */\n quadraticCurveTo: function (x1, y1, x2, y2) {\n this.addData(CMD.Q, x1, y1, x2, y2);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n\n this._xi = x2;\n this._yi = y2;\n return this;\n },\n\n /**\n * @param {number} cx\n * @param {number} cy\n * @param {number} r\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {boolean} anticlockwise\n * @return {module:zrender/core/PathProxy}\n */\n arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this.addData(CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n },\n // TODO\n arcTo: function (x1, y1, x2, y2, radius) {\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n\n return this;\n },\n // TODO\n rect: function (x, y, w, h) {\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n },\n\n /**\n * @return {module:zrender/core/PathProxy}\n */\n closePath: function () {\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n\n if (ctx) {\n this._needsDash() && this._dashedLineTo(x0, y0);\n ctx.closePath();\n }\n\n this._xi = x0;\n this._yi = y0;\n return this;\n },\n\n /**\n * Context 从外部传入,因为有可能是 rebuildPath 完之后再 fill。\n * stroke 同样\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n fill: function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n stroke: function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDash: function (lineDash) {\n if (lineDash instanceof Array) {\n this._lineDash = lineDash;\n this._dashIdx = 0;\n var lineDashSum = 0;\n\n for (var i = 0; i < lineDash.length; i++) {\n lineDashSum += lineDash[i];\n }\n\n this._dashSum = lineDashSum;\n }\n\n return this;\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDashOffset: function (offset) {\n this._dashOffset = offset;\n return this;\n },\n\n /**\n *\n * @return {boolean}\n */\n len: function () {\n return this._len;\n },\n\n /**\n * 直接设置 Path 数据\n */\n setData: function (data) {\n var len = data.length;\n\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n\n this._len = len;\n },\n\n /**\n * 添加子路径\n * @param {module:zrender/core/PathProxy|Array.} path\n */\n appendPath: function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n\n if (hasTypedArray && this.data instanceof Float32Array) {\n this.data = new Float32Array(offset + appendSize);\n }\n\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n\n this._len = offset;\n },\n\n /**\n * 填充 Path 数据。\n * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。\n */\n addData: function (cmd) {\n if (!this._saveData) {\n return;\n }\n\n var data = this.data;\n\n if (this._len + arguments.length > data.length) {\n // 因为之前的数组已经转换成静态的 Float32Array\n // 所以不够用时需要扩展一个新的动态数组\n this._expandData();\n\n data = this.data;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n\n this._prevCmd = cmd;\n },\n _expandData: function () {\n // Only if data is Float32Array\n if (!(this.data instanceof Array)) {\n var newData = [];\n\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n\n this.data = newData;\n }\n },\n\n /**\n * If needs js implemented dashed line\n * @return {boolean}\n * @private\n */\n _needsDash: function () {\n return this._lineDash;\n },\n _dashedLineTo: function (x1, y1) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var dx = x1 - x0;\n var dy = y1 - y0;\n var dist = mathSqrt(dx * dx + dy * dy);\n var x = x0;\n var y = y0;\n var dash;\n var nDash = lineDash.length;\n var idx;\n dx /= dist;\n dy /= dist;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum;\n x -= offset * dx;\n y -= offset * dy;\n\n while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx === 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) {\n idx = this._dashIdx;\n dash = lineDash[idx];\n x += dx * dash;\n y += dy * dash;\n this._dashIdx = (idx + 1) % nDash; // Skip positive offset\n\n if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) {\n continue;\n }\n\n ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n } // Offset for next lineTo\n\n\n dx = x - x1;\n dy = y - y1;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n // Not accurate dashed line to\n _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var t;\n var dx;\n var dy;\n var cubicAt = curve.cubicAt;\n var bezierLen = 0;\n var idx = this._dashIdx;\n var nDash = lineDash.length;\n var x;\n var y;\n var tmpLen = 0;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum; // Bezier approx length\n\n for (t = 0; t < 1; t += 0.1) {\n dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t);\n dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t);\n bezierLen += mathSqrt(dx * dx + dy * dy);\n } // Find idx after add offset\n\n\n for (; idx < nDash; idx++) {\n tmpLen += lineDash[idx];\n\n if (tmpLen > offset) {\n break;\n }\n }\n\n t = (tmpLen - offset) / bezierLen;\n\n while (t <= 1) {\n x = cubicAt(x0, x1, x2, x3, t);\n y = cubicAt(y0, y1, y2, y3, t); // Use line to approximate dashed bezier\n // Bad result if dash is long\n\n idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n t += lineDash[idx] / bezierLen;\n idx = (idx + 1) % nDash;\n } // Finish the last segment and calculate the new offset\n\n\n idx % 2 !== 0 && ctx.lineTo(x3, y3);\n dx = x3 - x;\n dy = y3 - y;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n _dashedQuadraticTo: function (x1, y1, x2, y2) {\n // Convert quadratic to cubic using degree elevation\n var x3 = x2;\n var y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (this._xi + 2 * x1) / 3;\n y1 = (this._yi + 2 * y1) / 3;\n\n this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n },\n\n /**\n * 转成静态的 Float32Array 减少堆内存占用\n * Convert dynamic array to static Float32Array\n */\n toStatic: function () {\n var data = this.data;\n\n if (data instanceof Array) {\n data.length = this._len;\n\n if (hasTypedArray) {\n this.data = new Float32Array(data);\n }\n }\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n\n case CMD.L:\n bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n bbox.fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n bbox.fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n bbox.fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++]; // Use fromLine\n\n bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n } // Union\n\n\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * Rebuild path from current data\n * Rebuild path will not consider javascript implemented line dash.\n * @param {CanvasRenderingContext2D} ctx\n */\n rebuildPath: function (ctx) {\n var d = this.data;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n\n for (var i = 0; i < len;) {\n var cmd = d[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n\n case CMD.L:\n x = d[i++];\n y = d[i++]; // Not draw too small seg between\n\n if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n }\n\n break;\n\n case CMD.C:\n ctx.bezierCurveTo(d[i++], d[i++], d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.Q:\n ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var theta = d[i++];\n var dTheta = d[i++];\n var psi = d[i++];\n var fs = d[i++];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var isEllipse = Math.abs(rx - ry) > 1e-3;\n var endAngle = theta + dTheta;\n\n if (isEllipse) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, endAngle, 1 - fs);\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n } else {\n ctx.arc(cx, cy, r, theta, endAngle, 1 - fs);\n }\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(theta) * rx + cx;\n y0 = mathSin(theta) * ry + cy;\n }\n\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n ctx.rect(d[i++], d[i++], d[i++], d[i++]);\n break;\n\n case CMD.Z:\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n }\n};\nPathProxy.CMD = CMD;\nvar _default = PathProxy;\nmodule.exports = _default;","/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\n\n/* global wx */\nvar env = {};\n\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n // In Weixin Application\n env = {\n browser: {},\n os: {},\n node: false,\n wxa: true,\n // Weixin Application\n canvasSupported: true,\n svgSupported: false,\n touchEventsSupported: true,\n domSupported: false\n };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n // In worker\n env = {\n browser: {},\n os: {},\n node: false,\n worker: true,\n canvasSupported: true,\n domSupported: false\n };\n} else if (typeof navigator === 'undefined') {\n // In node\n env = {\n browser: {},\n os: {},\n node: true,\n worker: false,\n // Assume canvas is supported\n canvasSupported: true,\n svgSupported: true,\n domSupported: false\n };\n} else {\n env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n var os = {};\n var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n // var touchpad = webos && ua.match(/TouchPad/);\n // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n // var silk = ua.match(/Silk\\/([\\d._]+)/);\n // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n // var playbook = ua.match(/PlayBook/);\n // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n // - discern (more) between multiple browsers on android\n // - decide if kindle fire in silk mode is android or not\n // - Firefox on Android doesn't specify the Android version\n // - possibly devide in os, device and browser hashes\n // if (browser.webkit = !!webkit) browser.version = webkit[1];\n // if (android) os.android = true, os.version = android[2];\n // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n // if (webos) os.webos = true, os.version = webos[2];\n // if (touchpad) os.touchpad = true;\n // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n // if (bb10) os.bb10 = true, os.version = bb10[2];\n // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n // if (playbook) browser.playbook = true;\n // if (kindle) os.kindle = true, os.version = kindle[1];\n // if (silk) browser.silk = true, browser.version = silk[1];\n // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n // if (webview) browser.webview = true;\n\n\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n // not be set on win phone. So we do not consider Win Phone.\n\n\n if (weChat) {\n browser.weChat = true;\n } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n // (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n // os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n // (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n // (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n return {\n browser: browser,\n os: os,\n node: false,\n // 原生canvas支持,改极端点了\n // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n canvasSupported: !!document.createElement('canvas').getContext,\n svgSupported: typeof SVGRect !== 'undefined',\n // works on most browsers\n // IE10/11 does not support touch event, and MS Edge supports them but not by\n // default, so we dont check navigator.maxTouchPoints for them here.\n touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n // .\n pointerEventsSupported: // (1) Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n // events currently. So we dont use that on other browsers unless tested sufficiently.\n // For example, in iOS 13 Mobile Chromium 78, if the touching behavior starts page\n // scroll, the `pointermove` event can not be fired any more. That will break some\n // features like \"pan horizontally to move something and pan vertically to page scroll\".\n // The horizontal pan probably be interrupted by the casually triggered page scroll.\n // (2) Although IE 10 supports pointer event, it use old style and is different from the\n // standard. So we exclude that. (IE 10 is hardly used on touch device)\n 'onpointerdown' in window && (browser.edge || browser.ie && browser.version >= 11),\n // passiveSupported: detectPassiveSupport()\n domSupported: typeof document !== 'undefined'\n };\n} // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n// function detectPassiveSupport() {\n// // Test via a getter in the options object to see if the passive property is accessed\n// var supportsPassive = false;\n// try {\n// var opts = Object.defineProperty({}, 'passive', {\n// get: function() {\n// supportsPassive = true;\n// }\n// });\n// window.addEventListener('testPassive', function() {}, opts);\n// } catch (e) {\n// }\n// return supportsPassive;\n// }\n\n\nmodule.exports = _default;","var fixShadow = require(\"./helper/fixShadow\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts) {\n this.extendFrom(opts, false);\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n } // Fix NaN when rect is Infinity\n\n\n x = isNaN(x) ? 0 : x;\n x2 = isNaN(x2) ? 1 : x2;\n y = isNaN(y) ? 0 : y;\n y2 = isNaN(y2) ? 0 : y2;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\n\nStyle.prototype = {\n constructor: Style,\n\n /**\n * @type {string}\n */\n fill: '#000',\n\n /**\n * @type {string}\n */\n stroke: null,\n\n /**\n * @type {number}\n */\n opacity: 1,\n\n /**\n * @type {number}\n */\n fillOpacity: null,\n\n /**\n * @type {number}\n */\n strokeOpacity: null,\n\n /**\n * `true` is not supported.\n * `false`/`null`/`undefined` are the same.\n * `false` is used to remove lineDash in some\n * case that `null`/`undefined` can not be set.\n * (e.g., emphasis.lineStyle in echarts)\n * @type {Array.|boolean}\n */\n lineDash: null,\n\n /**\n * @type {number}\n */\n lineDashOffset: 0,\n\n /**\n * @type {number}\n */\n shadowBlur: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetY: 0,\n\n /**\n * @type {number}\n */\n lineWidth: 1,\n\n /**\n * If stroke ignore scale\n * @type {Boolean}\n */\n strokeNoScale: false,\n // Bounding rect text configuration\n // Not affected by element transform\n\n /**\n * @type {string}\n */\n text: null,\n\n /**\n * If `fontSize` or `fontFamily` exists, `font` will be reset by\n * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n * So do not visit it directly in upper application (like echarts),\n * but use `contain/text#makeFont` instead.\n * @type {string}\n */\n font: null,\n\n /**\n * The same as font. Use font please.\n * @deprecated\n * @type {string}\n */\n textFont: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontStyle: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontWeight: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * Should be 12 but not '12px'.\n * @type {number}\n */\n fontSize: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontFamily: null,\n\n /**\n * Reserved for special functinality, like 'hr'.\n * @type {string}\n */\n textTag: null,\n\n /**\n * @type {string}\n */\n textFill: '#000',\n\n /**\n * @type {string}\n */\n textStroke: null,\n\n /**\n * @type {number}\n */\n textWidth: null,\n\n /**\n * Only for textBackground.\n * @type {number}\n */\n textHeight: null,\n\n /**\n * textStroke may be set as some color as a default\n * value in upper applicaion, where the default value\n * of textStrokeWidth should be 0 to make sure that\n * user can choose to do not use text stroke.\n * @type {number}\n */\n textStrokeWidth: 0,\n\n /**\n * @type {number}\n */\n textLineHeight: null,\n\n /**\n * 'inside', 'left', 'right', 'top', 'bottom'\n * [x, y]\n * Based on x, y of rect.\n * @type {string|Array.}\n * @default 'inside'\n */\n textPosition: 'inside',\n\n /**\n * If not specified, use the boundingRect of a `displayable`.\n * @type {Object}\n */\n textRect: null,\n\n /**\n * [x, y]\n * @type {Array.}\n */\n textOffset: null,\n\n /**\n * @type {string}\n */\n textAlign: null,\n\n /**\n * @type {string}\n */\n textVerticalAlign: null,\n\n /**\n * @type {number}\n */\n textDistance: 5,\n\n /**\n * @type {string}\n */\n textShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetY: 0,\n\n /**\n * @type {string}\n */\n textBoxShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textBoxShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetY: 0,\n\n /**\n * Whether transform text.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n * @type {boolean}\n */\n transformText: false,\n\n /**\n * Text rotate around position of Path or Image.\n * The origin of the rotation can be specified by `textOrigin`.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n */\n textRotation: 0,\n\n /**\n * Text origin of text rotation.\n * Useful in the case like label rotation of circular symbol.\n * Only available in Path and Image element, where the text is called\n * as `RectText` and the element is called as \"host element\".\n * The value can be:\n * + If specified as a coordinate like `[10, 40]`, it is the `[x, y]`\n * base on the left-top corner of the rect of its host element.\n * + If specified as a string `center`, it is the center of the rect of\n * its host element.\n * + By default, this origin is the `textPosition`.\n * @type {string|Array.}\n */\n textOrigin: null,\n\n /**\n * @type {string}\n */\n textBackgroundColor: null,\n\n /**\n * @type {string}\n */\n textBorderColor: null,\n\n /**\n * @type {number}\n */\n textBorderWidth: 0,\n\n /**\n * @type {number}\n */\n textBorderRadius: 0,\n\n /**\n * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n * @type {number|Array.}\n */\n textPadding: null,\n\n /**\n * Text styles for rich text.\n * @type {Object}\n */\n rich: null,\n\n /**\n * {outerWidth, outerHeight, ellipsis, placeholder}\n * @type {Object}\n */\n truncate: null,\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n * @type {string}\n */\n blend: null,\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n */\n bind: function (ctx, el, prevEl) {\n var style = this;\n var prevStyle = prevEl && prevEl.style; // If no prevStyle, it means first draw.\n // Only apply cache if the last time cachced by this function.\n\n var notCheckCache = !prevStyle || ctx.__attrCachedBy !== ContextCachedBy.STYLE_BIND;\n ctx.__attrCachedBy = ContextCachedBy.STYLE_BIND;\n\n for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n var styleName = prop[0];\n\n if (notCheckCache || style[styleName] !== prevStyle[styleName]) {\n // FIXME Invalid property value will cause style leak from previous element.\n ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n }\n }\n\n if (notCheckCache || style.fill !== prevStyle.fill) {\n ctx.fillStyle = style.fill;\n }\n\n if (notCheckCache || style.stroke !== prevStyle.stroke) {\n ctx.strokeStyle = style.stroke;\n }\n\n if (notCheckCache || style.opacity !== prevStyle.opacity) {\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n\n if (notCheckCache || style.blend !== prevStyle.blend) {\n ctx.globalCompositeOperation = style.blend || 'source-over';\n }\n\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n }\n },\n hasFill: function () {\n var fill = this.fill;\n return fill != null && fill !== 'none';\n },\n hasStroke: function () {\n var stroke = this.stroke;\n return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n },\n\n /**\n * Extend from other style\n * @param {zrender/graphic/Style} otherStyle\n * @param {boolean} overwrite true: overwrirte any way.\n * false: overwrite only when !target.hasOwnProperty\n * others: overwrite when property is not null/undefined.\n */\n extendFrom: function (otherStyle, overwrite) {\n if (otherStyle) {\n for (var name in otherStyle) {\n if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n this[name] = otherStyle[name];\n }\n }\n }\n },\n\n /**\n * Batch setting style with a given object\n * @param {Object|string} obj\n * @param {*} [obj]\n */\n set: function (obj, value) {\n if (typeof obj === 'string') {\n this[obj] = value;\n } else {\n this.extendFrom(obj, true);\n }\n },\n\n /**\n * Clone\n * @return {zrender/graphic/Style} [description]\n */\n clone: function () {\n var newStyle = new this.constructor();\n newStyle.extendFrom(this, true);\n return newStyle;\n },\n getGradient: function (ctx, obj, rect) {\n var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n var canvasGradient = method(ctx, obj, rect);\n var colorStops = obj.colorStops;\n\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n\n return canvasGradient;\n }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n\n if (!(prop[0] in styleProto)) {\n styleProto[prop[0]] = prop[1];\n }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\nmodule.exports = _default;","var dpr = 1; // If in browser environment\n\nif (typeof window !== 'undefined') {\n dpr = Math.max(window.devicePixelRatio || 1, 1);\n}\n/**\n * config默认配置项\n * @exports zrender/config\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\n\n/**\n * Debug log mode:\n * 0: Do nothing, for release.\n * 1: console.error, for debug.\n */\n\n\nvar debugMode = 0; // retina 屏幕优化\n\nvar devicePixelRatio = dpr;\nexports.debugMode = debugMode;\nexports.devicePixelRatio = devicePixelRatio;","var Group = require(\"../container/Group\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Circle = require(\"../graphic/shape/Circle\");\n\nvar Rect = require(\"../graphic/shape/Rect\");\n\nvar Ellipse = require(\"../graphic/shape/Ellipse\");\n\nvar Line = require(\"../graphic/shape/Line\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar Polygon = require(\"../graphic/shape/Polygon\");\n\nvar Polyline = require(\"../graphic/shape/Polyline\");\n\nvar LinearGradient = require(\"../graphic/LinearGradient\");\n\nvar Style = require(\"../graphic/Style\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar _path = require(\"./path\");\n\nvar createFromString = _path.createFromString;\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar extend = _util.extend;\nvar defaults = _util.defaults;\nvar trim = _util.trim;\nvar each = _util.each;\n// import RadialGradient from '../graphic/RadialGradient';\n// import Pattern from '../graphic/Pattern';\n// import * as vector from '../core/vector';\n// Most of the values can be separated by comma and/or white space.\nvar DILIMITER_REG = /[\\s,]+/;\n/**\n * For big svg string, this method might be time consuming.\n *\n * @param {string} svg xml string\n * @return {Object} xml root.\n */\n\nfunction parseXML(svg) {\n if (isString(svg)) {\n var parser = new DOMParser();\n svg = parser.parseFromString(svg, 'text/xml');\n } // Document node. If using $.get, doc node may be input.\n\n\n if (svg.nodeType === 9) {\n svg = svg.firstChild;\n } // nodeName of is also 'svg'.\n\n\n while (svg.nodeName.toLowerCase() !== 'svg' || svg.nodeType !== 1) {\n svg = svg.nextSibling;\n }\n\n return svg;\n}\n\nfunction SVGParser() {\n this._defs = {};\n this._root = null;\n this._isDefine = false;\n this._isText = false;\n}\n\nSVGParser.prototype.parse = function (xml, opt) {\n opt = opt || {};\n var svg = parseXML(xml);\n\n if (!svg) {\n throw new Error('Illegal svg');\n }\n\n var root = new Group();\n this._root = root; // parse view port\n\n var viewBox = svg.getAttribute('viewBox') || ''; // If width/height not specified, means \"100%\" of `opt.width/height`.\n // TODO: Other percent value not supported yet.\n\n var width = parseFloat(svg.getAttribute('width') || opt.width);\n var height = parseFloat(svg.getAttribute('height') || opt.height); // If width/height not specified, set as null for output.\n\n isNaN(width) && (width = null);\n isNaN(height) && (height = null); // Apply inline style on svg element.\n\n parseAttributes(svg, root, null, true);\n var child = svg.firstChild;\n\n while (child) {\n this._parseNode(child, root);\n\n child = child.nextSibling;\n }\n\n var viewBoxRect;\n var viewBoxTransform;\n\n if (viewBox) {\n var viewBoxArr = trim(viewBox).split(DILIMITER_REG); // Some invalid case like viewBox: 'none'.\n\n if (viewBoxArr.length >= 4) {\n viewBoxRect = {\n x: parseFloat(viewBoxArr[0] || 0),\n y: parseFloat(viewBoxArr[1] || 0),\n width: parseFloat(viewBoxArr[2]),\n height: parseFloat(viewBoxArr[3])\n };\n }\n }\n\n if (viewBoxRect && width != null && height != null) {\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\n\n if (!opt.ignoreViewBox) {\n // If set transform on the output group, it probably bring trouble when\n // some users only intend to show the clipped content inside the viewBox,\n // but not intend to transform the output group. So we keep the output\n // group no transform. If the user intend to use the viewBox as a\n // camera, just set `opt.ignoreViewBox` as `true` and set transfrom\n // manually according to the viewBox info in the output of this method.\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scale = viewBoxTransform.scale.slice();\n elRoot.position = viewBoxTransform.position.slice();\n }\n } // Some shapes might be overflow the viewport, which should be\n // clipped despite whether the viewBox is used, as the SVG does.\n\n\n if (!opt.ignoreRootClip && width != null && height != null) {\n root.setClipPath(new Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n }));\n } // Set width/height on group just for output the viewport size.\n\n\n return {\n root: root,\n width: width,\n height: height,\n viewBoxRect: viewBoxRect,\n viewBoxTransform: viewBoxTransform\n };\n};\n\nSVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\n var nodeName = xmlNode.nodeName.toLowerCase(); // TODO\n // support in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;","var util = require(\"../core/util\");\n\nvar _event = require(\"../core/event\");\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = require(\"./requestAnimationFrame\");\n\nvar Animator = require(\"./Animator\");\n\n/**\n * Animation main class, dispatch and manage all animation controllers\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n * var animation = new Animation();\n * var obj = {\n * x: 100,\n * y: 100\n * };\n * animation.animate(node.position)\n * .when(1000, {\n * x: 500,\n * y: 500\n * })\n * .when(2000, {\n * x: 100,\n * y: 100\n * })\n * .start('spline');\n */\nvar Animation = function (options) {\n options = options || {};\n this.stage = options.stage || {};\n\n this.onframe = options.onframe || function () {}; // private properties\n\n\n this._clips = [];\n this._running = false;\n this._time;\n this._pausedTime;\n this._pauseStart;\n this._paused = false;\n Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n constructor: Animation,\n\n /**\n * Add clip\n * @param {module:zrender/animation/Clip} clip\n */\n addClip: function (clip) {\n this._clips.push(clip);\n },\n\n /**\n * Add animator\n * @param {module:zrender/animation/Animator} animator\n */\n addAnimator: function (animator) {\n animator.animation = this;\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.addClip(clips[i]);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Clip} clip\n */\n removeClip: function (clip) {\n var idx = util.indexOf(this._clips, clip);\n\n if (idx >= 0) {\n this._clips.splice(idx, 1);\n }\n },\n\n /**\n * Delete animation clip\n * @param {module:zrender/animation/Animator} animator\n */\n removeAnimator: function (animator) {\n var clips = animator.getClips();\n\n for (var i = 0; i < clips.length; i++) {\n this.removeClip(clips[i]);\n }\n\n animator.animation = null;\n },\n _update: function () {\n var time = new Date().getTime() - this._pausedTime;\n\n var delta = time - this._time;\n var clips = this._clips;\n var len = clips.length;\n var deferredEvents = [];\n var deferredClips = [];\n\n for (var i = 0; i < len; i++) {\n var clip = clips[i];\n var e = clip.step(time, delta); // Throw out the events need to be called after\n // stage.update, like destroy\n\n if (e) {\n deferredEvents.push(e);\n deferredClips.push(clip);\n }\n } // Remove the finished clip\n\n\n for (var i = 0; i < len;) {\n if (clips[i]._needsRemove) {\n clips[i] = clips[len - 1];\n clips.pop();\n len--;\n } else {\n i++;\n }\n }\n\n len = deferredEvents.length;\n\n for (var i = 0; i < len; i++) {\n deferredClips[i].fire(deferredEvents[i]);\n }\n\n this._time = time;\n this.onframe(delta); // 'frame' should be triggered before stage, because upper application\n // depends on the sequence (e.g., echarts-stream and finish\n // event judge)\n\n this.trigger('frame', delta);\n\n if (this.stage.update) {\n this.stage.update();\n }\n },\n _startLoop: function () {\n var self = this;\n this._running = true;\n\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self._update();\n }\n }\n\n requestAnimationFrame(step);\n },\n\n /**\n * Start animation.\n */\n start: function () {\n this._time = new Date().getTime();\n this._pausedTime = 0;\n\n this._startLoop();\n },\n\n /**\n * Stop animation.\n */\n stop: function () {\n this._running = false;\n },\n\n /**\n * Pause animation.\n */\n pause: function () {\n if (!this._paused) {\n this._pauseStart = new Date().getTime();\n this._paused = true;\n }\n },\n\n /**\n * Resume animation.\n */\n resume: function () {\n if (this._paused) {\n this._pausedTime += new Date().getTime() - this._pauseStart;\n this._paused = false;\n }\n },\n\n /**\n * Clear animation.\n */\n clear: function () {\n this._clips = [];\n },\n\n /**\n * Whether animation finished.\n */\n isFinished: function () {\n return !this._clips.length;\n },\n\n /**\n * Creat animator for a target, whose props can be animated.\n *\n * @param {Object} target\n * @param {Object} options\n * @param {boolean} [options.loop=false] Whether loop animation.\n * @param {Function} [options.getter=null] Get value from target.\n * @param {Function} [options.setter=null] Set value to target.\n * @return {module:zrender/animation/Animation~Animator}\n */\n // TODO Gap\n animate: function (target, options) {\n options = options || {};\n var animator = new Animator(target, options.loop, options.getter, options.setter);\n this.addAnimator(animator);\n return animator;\n }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\nmodule.exports = _default;","var Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar transformPath = require(\"./transformPath\");\n\n// command chars\n// var cc = [\n// 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n// 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n\n var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * PI;\n }\n\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * PI;\n }\n\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n if (!data) {\n return new PathProxy();\n } // var data = data.replace(/-/g, ' -')\n // .replace(/ /g, ' ')\n // .replace(/ /g, ',')\n // .replace(/,,/g, ',');\n // var n;\n // create pipes so that we can split the data\n // for (n = 0; n < cc.length; n++) {\n // cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n // }\n // data = data.replace(/-/g, ',-');\n // create array\n // var arr = cs.split('|');\n // init context point\n\n\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var path = new PathProxy();\n var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n // var cmdResult;\n // while ((cmdResult = commandReg.exec(data)) != null) {\n // var cmdStr = cmdResult[1];\n // var cmdContent = cmdResult[2];\n\n var cmdList = data.match(commandReg);\n\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n // var p = cmdContent.split(valueSplitReg);\n // var pLen = 0;\n // for (var i = 0; i < p.length; i++) {\n // // '' and other invalid str => NaN\n // var val = parseFloat(p[i]);\n // !isNaN(val) && (p[pLen++] = val);\n // }\n\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n\n var off = 0;\n\n while (off < pLen) {\n var ctlPtx;\n var ctlPty;\n var rx;\n var ry;\n var psi;\n var fa;\n var fs;\n var x1 = cpx;\n var y1 = cpy; // convert l, H, h, V, and v to L\n\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n var len = path.len();\n var pathData = path.data;\n\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd); // z may be in the middle of the path.\n\n cpx = subpathX;\n cpy = subpathY;\n }\n\n prevCmd = cmd;\n }\n\n path.toStatic();\n return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n opts = opts || {};\n\n opts.buildPath = function (path) {\n if (path.setData) {\n path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n } else {\n var ctx = path;\n pathProxy.rebuildPath(ctx);\n }\n };\n\n opts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirty(true);\n };\n\n return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param {string} str\n * @param {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n\n if (!pathEl.path) {\n pathEl.createPathProxy();\n }\n\n if (pathEl.__dirtyPath) {\n pathEl.buildPath(pathEl.path, pathEl.shape, true);\n }\n\n pathList.push(pathEl.path);\n }\n\n var pathBundle = new Path(opts); // Need path proxy.\n\n pathBundle.createPathProxy();\n\n pathBundle.buildPath = function (path) {\n path.appendPath(pathList); // Svg and vml renderer don't have context\n\n var ctx = path.getContext();\n\n if (ctx) {\n path.rebuildPath(ctx);\n }\n };\n\n return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n Displayble.call(this, opts);\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.dirty();\n this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n } else {\n this._displayables.push(displayable);\n }\n\n this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n this.updateTransform();\n\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n // Render persistant displayables.\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._cursor = i; // Render temporary displayables.\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._temporaryDisplayables = [];\n this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n\n rect.union(childRect);\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\nmodule.exports = _default;","var _core = require(\"./core\");\n\nvar createElement = _core.createElement;\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"../graphic/helper/text\");\n\nvar Text = require(\"../graphic/Text\");\n\n// TODO\n// 1. shadow\n// 2. Image: sx, sy, sw, sh\nvar CMD = PathProxy.CMD;\nvar arrayJoin = Array.prototype.join;\nvar NONE = 'none';\nvar mathRound = Math.round;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nvar PI2 = Math.PI * 2;\nvar degree = 180 / PI;\nvar EPSILON = 1e-4;\n\nfunction round4(val) {\n return mathRound(val * 1e4) / 1e4;\n}\n\nfunction isAroundZero(val) {\n return val < EPSILON && val > -EPSILON;\n}\n\nfunction pathHasFill(style, isText) {\n var fill = isText ? style.textFill : style.fill;\n return fill != null && fill !== NONE;\n}\n\nfunction pathHasStroke(style, isText) {\n var stroke = isText ? style.textStroke : style.stroke;\n return stroke != null && stroke !== NONE;\n}\n\nfunction setTransform(svgEl, m) {\n if (m) {\n attr(svgEl, 'transform', 'matrix(' + arrayJoin.call(m, ',') + ')');\n }\n}\n\nfunction attr(el, key, val) {\n if (!val || val.type !== 'linear' && val.type !== 'radial') {\n // Don't set attribute for gradient, since it need new dom nodes\n el.setAttribute(key, val);\n }\n}\n\nfunction attrXLink(el, key, val) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\n}\n\nfunction bindStyle(svgEl, style, isText, el) {\n if (pathHasFill(style, isText)) {\n var fill = isText ? style.textFill : style.fill;\n fill = fill === 'transparent' ? NONE : fill;\n attr(svgEl, 'fill', fill);\n attr(svgEl, 'fill-opacity', style.fillOpacity != null ? style.fillOpacity * style.opacity : style.opacity);\n } else {\n attr(svgEl, 'fill', NONE);\n }\n\n if (pathHasStroke(style, isText)) {\n var stroke = isText ? style.textStroke : style.stroke;\n stroke = stroke === 'transparent' ? NONE : stroke;\n attr(svgEl, 'stroke', stroke);\n var strokeWidth = isText ? style.textStrokeWidth : style.lineWidth;\n var strokeScale = !isText && style.strokeNoScale ? el.getLineScale() : 1;\n attr(svgEl, 'stroke-width', strokeWidth / strokeScale); // stroke then fill for text; fill then stroke for others\n\n attr(svgEl, 'paint-order', isText ? 'stroke' : 'fill');\n attr(svgEl, 'stroke-opacity', style.strokeOpacity != null ? style.strokeOpacity : style.opacity);\n var lineDash = style.lineDash;\n\n if (lineDash) {\n attr(svgEl, 'stroke-dasharray', style.lineDash.join(','));\n attr(svgEl, 'stroke-dashoffset', mathRound(style.lineDashOffset || 0));\n } else {\n attr(svgEl, 'stroke-dasharray', '');\n } // PENDING\n\n\n style.lineCap && attr(svgEl, 'stroke-linecap', style.lineCap);\n style.lineJoin && attr(svgEl, 'stroke-linejoin', style.lineJoin);\n style.miterLimit && attr(svgEl, 'stroke-miterlimit', style.miterLimit);\n } else {\n attr(svgEl, 'stroke', NONE);\n }\n}\n/***************************************************\n * PATH\n **************************************************/\n\n\nfunction pathDataToString(path) {\n var str = [];\n var data = path.data;\n var dataLength = path.len();\n\n for (var i = 0; i < dataLength;) {\n var cmd = data[i++];\n var cmdStr = '';\n var nData = 0;\n\n switch (cmd) {\n case CMD.M:\n cmdStr = 'M';\n nData = 2;\n break;\n\n case CMD.L:\n cmdStr = 'L';\n nData = 2;\n break;\n\n case CMD.Q:\n cmdStr = 'Q';\n nData = 4;\n break;\n\n case CMD.C:\n cmdStr = 'C';\n nData = 6;\n break;\n\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n var psi = data[i++];\n var clockwise = data[i++];\n var dThetaPositive = Math.abs(dTheta);\n var isCircle = isAroundZero(dThetaPositive - PI2) || (clockwise ? dTheta >= PI2 : -dTheta >= PI2); // Mapping to 0~2PI\n\n var unifiedTheta = dTheta > 0 ? dTheta % PI2 : dTheta % PI2 + PI2;\n var large = false;\n\n if (isCircle) {\n large = true;\n } else if (isAroundZero(dThetaPositive)) {\n large = false;\n } else {\n large = unifiedTheta >= PI === !!clockwise;\n }\n\n var x0 = round4(cx + rx * mathCos(theta));\n var y0 = round4(cy + ry * mathSin(theta)); // It will not draw if start point and end point are exactly the same\n // We need to shift the end point with a small value\n // FIXME A better way to draw circle ?\n\n if (isCircle) {\n if (clockwise) {\n dTheta = PI2 - 1e-4;\n } else {\n dTheta = -PI2 + 1e-4;\n }\n\n large = true;\n\n if (i === 9) {\n // Move to (x0, y0) only when CMD.A comes at the\n // first position of a shape.\n // For instance, when drawing a ring, CMD.A comes\n // after CMD.M, so it's unnecessary to move to\n // (x0, y0).\n str.push('M', x0, y0);\n }\n }\n\n var x = round4(cx + rx * mathCos(theta + dTheta));\n var y = round4(cy + ry * mathSin(theta + dTheta)); // FIXME Ellipse\n\n str.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);\n break;\n\n case CMD.Z:\n cmdStr = 'Z';\n break;\n\n case CMD.R:\n var x = round4(data[i++]);\n var y = round4(data[i++]);\n var w = round4(data[i++]);\n var h = round4(data[i++]);\n str.push('M', x, y, 'L', x + w, y, 'L', x + w, y + h, 'L', x, y + h, 'L', x, y);\n break;\n }\n\n cmdStr && str.push(cmdStr);\n\n for (var j = 0; j < nData; j++) {\n // PENDING With scale\n str.push(round4(data[i++]));\n }\n }\n\n return str.join(' ');\n}\n\nvar svgPath = {};\n\nsvgPath.brush = function (el) {\n var style = el.style;\n var svgEl = el.__svgEl;\n\n if (!svgEl) {\n svgEl = createElement('path');\n el.__svgEl = svgEl;\n }\n\n if (!el.path) {\n el.createPathProxy();\n }\n\n var path = el.path;\n\n if (el.__dirtyPath) {\n path.beginPath();\n path.subPixelOptimize = false;\n el.buildPath(path, el.shape);\n el.__dirtyPath = false;\n var pathStr = pathDataToString(path);\n\n if (pathStr.indexOf('NaN') < 0) {\n // Ignore illegal path, which may happen such in out-of-range\n // data in Calendar series.\n attr(svgEl, 'd', pathStr);\n }\n }\n\n bindStyle(svgEl, style, false, el);\n setTransform(svgEl, el.transform);\n\n if (style.text != null) {\n svgTextDrawRectText(el, el.getBoundingRect());\n } else {\n removeOldTextNode(el);\n }\n};\n/***************************************************\n * IMAGE\n **************************************************/\n\n\nvar svgImage = {};\n\nsvgImage.brush = function (el) {\n var style = el.style;\n var image = style.image;\n\n if (image instanceof HTMLImageElement) {\n var src = image.src;\n image = src;\n }\n\n if (!image) {\n return;\n }\n\n var x = style.x || 0;\n var y = style.y || 0;\n var dw = style.width;\n var dh = style.height;\n var svgEl = el.__svgEl;\n\n if (!svgEl) {\n svgEl = createElement('image');\n el.__svgEl = svgEl;\n }\n\n if (image !== el.__imageSrc) {\n attrXLink(svgEl, 'href', image); // Caching image src\n\n el.__imageSrc = image;\n }\n\n attr(svgEl, 'width', dw);\n attr(svgEl, 'height', dh);\n attr(svgEl, 'x', x);\n attr(svgEl, 'y', y);\n setTransform(svgEl, el.transform);\n\n if (style.text != null) {\n svgTextDrawRectText(el, el.getBoundingRect());\n } else {\n removeOldTextNode(el);\n }\n};\n/***************************************************\n * TEXT\n **************************************************/\n\n\nvar svgText = {};\n\nvar _tmpTextHostRect = new BoundingRect();\n\nvar _tmpTextBoxPos = {};\nvar _tmpTextTransform = [];\nvar TEXT_ALIGN_TO_ANCHRO = {\n left: 'start',\n right: 'end',\n center: 'middle',\n middle: 'middle'\n};\n/**\n * @param {module:zrender/Element} el\n * @param {Object|boolean} [hostRect] {x, y, width, height}\n * If set false, rect text is not used.\n */\n\nvar svgTextDrawRectText = function (el, hostRect) {\n var style = el.style;\n var elTransform = el.transform;\n var needTransformTextByHostEl = el instanceof Text || style.transformText;\n el.__dirty && textHelper.normalizeTextStyle(style, true);\n var text = style.text; // Convert to string\n\n text != null && (text += '');\n\n if (!textHelper.needDrawText(text, style)) {\n return;\n } // render empty text for svg if no text but need draw text.\n\n\n text == null && (text = ''); // Follow the setting in the canvas renderer, if not transform the\n // text, transform the hostRect, by which the text is located.\n\n if (!needTransformTextByHostEl && elTransform) {\n _tmpTextHostRect.copy(hostRect);\n\n _tmpTextHostRect.applyTransform(elTransform);\n\n hostRect = _tmpTextHostRect;\n }\n\n var textSvgEl = el.__textSvgEl;\n\n if (!textSvgEl) {\n textSvgEl = createElement('text');\n el.__textSvgEl = textSvgEl;\n } // style.font has been normalized by `normalizeTextStyle`.\n\n\n var textSvgElStyle = textSvgEl.style;\n var font = style.font || textContain.DEFAULT_FONT;\n var computedFont = textSvgEl.__computedFont;\n\n if (font !== textSvgEl.__styleFont) {\n textSvgElStyle.font = textSvgEl.__styleFont = font; // The computedFont might not be the orginal font if it is illegal font.\n\n computedFont = textSvgEl.__computedFont = textSvgElStyle.font;\n }\n\n var textPadding = style.textPadding;\n var textLineHeight = style.textLineHeight;\n var contentBlock = el.__textCotentBlock;\n\n if (!contentBlock || el.__dirtyText) {\n contentBlock = el.__textCotentBlock = textContain.parsePlainText(text, computedFont, textPadding, textLineHeight, style.truncate);\n }\n\n var outerHeight = contentBlock.outerHeight;\n var lineHeight = contentBlock.lineHeight;\n textHelper.getBoxPosition(_tmpTextBoxPos, el, style, hostRect);\n var baseX = _tmpTextBoxPos.baseX;\n var baseY = _tmpTextBoxPos.baseY;\n var textAlign = _tmpTextBoxPos.textAlign || 'left';\n var textVerticalAlign = _tmpTextBoxPos.textVerticalAlign;\n setTextTransform(textSvgEl, needTransformTextByHostEl, elTransform, style, hostRect, baseX, baseY);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var textX = baseX;\n var textY = boxY; // TODO needDrawBg\n\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n textY += textPadding[0];\n } // `textBaseline` is set as 'middle'.\n\n\n textY += lineHeight / 2;\n bindStyle(textSvgEl, style, true, el); // FIXME\n // Add a