{"version":3,"sources":["webpack:///./node_modules/zrender/lib/core/timsort.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/export.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/core-js/modules/_string-html.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:///./src/assets/images/noavatar.jpg","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/shape/Star.js","webpack:///./node_modules/zrender/lib/graphic/shape/Trochoid.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/graphic/shape/Droplet.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/core-js/modules/es6.string.fontcolor.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/index.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/core-js/modules/es6.string.fontsize.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/graphic/shape/Rose.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/Isogon.js","webpack:///./src/JS/Bus.ts","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:///./src/assets/images/posterBg.jpg","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:///./src/assets/images/crdcode.png","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","webpack:///./node_modules/zrender/lib/graphic/shape/Heart.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","Clip","color","_util","isArrayLike","arraySlice","Array","prototype","slice","defaultGetter","target","key","defaultSetter","interpolateNumber","p0","p1","percent","interpolateString","interpolateArray","out","arrDim","len","len2","j","fillArr","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","push","call","isNaN","isArraySame","catmullRomInterpolateArray","p2","p3","t2","t3","catmullRomInterpolate","v0","v1","cloneValue","ret","rgba2String","rgba","Math","floor","join","getArrayDim","keyframes","lastValue","createTrackClip","animator","easing","oneTrackDone","propName","forceAnimate","getter","_getter","setter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","a","b","time","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","parse","_target","w","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","points","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","EPSILON","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","x","y","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","contain","rectContain","traverse","context","coord","rect","dirty","__dirtyText","__zr","refresh","animateStyle","animate","attrKV","set","setStyle","useStyle","obj","calculateTextPosition","mixin","util","colorTool","pathTool","_parseSVG","parseSVG","_Group","Group","_Path","Path","_Image","Image","_CompoundPath","CompoundPath","_Text","Text","_IncrementalDisplayable","IncrementalDisplayable","_Arc","Arc","_BezierCurve","BezierCurve","_Circle","Circle","_Droplet","Droplet","_Ellipse","Ellipse","_Heart","Heart","_Isogon","Isogon","_Line","Line","_Polygon","Polygon","_Polyline","Polyline","_Rect","Rect","_Ring","Ring","_Rose","Rose","_Sector","Sector","_Star","Star","_Trochoid","Trochoid","_LinearGradient","LinearGradient","_RadialGradient","RadialGradient","_Pattern","Pattern","_BoundingRect","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","abs","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","_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","_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","p","pLen","ctlPtx","ctlPty","pathData","createPathOptions","pathProxy","buildPath","extendFromString","mergePath","pathEls","pathList","pathEl","createPathProxy","__dirtyPath","pathBundle","$export","fails","defined","quot","createHTML","string","tag","attribute","S","String","NAME","O","P","F","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","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","dStep","deg","xStart","yStart","ri","end","location","offsetX","offsetY","num","smoothSpline","smoothBezier","smooth","controlPoints","smoothConstraint","cp1","cp2","r1","r2","r3","r4","total","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","onerror","imageOnLoad","__cachedImgObj","_dom","isCanvasEl","transformCoordWithViewport","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut","calculate","calculateZrXY","layerX","layerY","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","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","windingLine","dir","x_","polyHelper","shadowTemp","orignalBrush","modified","clipPaths","clipPath","_zrender","_export","_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","size","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","vmlCore","comma","imageTransformPrefix","Z2","ZLEVEL_BASE","Z_BASE","initRootElStyle","coordsize","coordorigin","encodeHtmlAttribute","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","family","body","offsetWidth","fromTextEl","textLine","align","verticalAlign","textPathEl","skewEl","textVmlEl","_textVmlEl","textpathok","to","coords","textVmlElStyle","toFixed","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","radian","ShadowManager","hasShadow","_shadowDom","_shadowDomId","domChild","blur","stdDx","stdDy","stdDeviation","Animatable","animators","animateTo","animatable","reverse","stopAnimation","animateToShallow","objShallow","propertyCount","setAttrByPath","animatingShape","pathSplitted","animateFrom","bus","_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","isAroundEqual","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","idStart","childAt","childOfName","childCount","_doAdd","addBefore","removeAll","eachChild","includeChildren","tmpMat","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":"js/chunk-186aaf70.d9982307.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 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;","var zrUtil = require(\"./core/util\");\n\nexports.util = zrUtil;\n\nvar matrix = require(\"./core/matrix\");\n\nexports.matrix = matrix;\n\nvar vector = require(\"./core/vector\");\n\nexports.vector = vector;\n\nvar colorTool = require(\"./tool/color\");\n\nexports.color = colorTool;\n\nvar pathTool = require(\"./tool/path\");\n\nexports.path = pathTool;\n\nvar _parseSVG = require(\"./tool/parseSVG\");\n\nvar parseSVG = _parseSVG.parseSVG;\nexports.parseSVG = _parseSVG.parseSVG;\n\nvar _Group = require(\"./container/Group\");\n\nexports.Group = _Group;\n\nvar _Path = require(\"./graphic/Path\");\n\nexports.Path = _Path;\n\nvar _Image = require(\"./graphic/Image\");\n\nexports.Image = _Image;\n\nvar _CompoundPath = require(\"./graphic/CompoundPath\");\n\nexports.CompoundPath = _CompoundPath;\n\nvar _Text = require(\"./graphic/Text\");\n\nexports.Text = _Text;\n\nvar _IncrementalDisplayable = require(\"./graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = _IncrementalDisplayable;\n\nvar _Arc = require(\"./graphic/shape/Arc\");\n\nexports.Arc = _Arc;\n\nvar _BezierCurve = require(\"./graphic/shape/BezierCurve\");\n\nexports.BezierCurve = _BezierCurve;\n\nvar _Circle = require(\"./graphic/shape/Circle\");\n\nexports.Circle = _Circle;\n\nvar _Droplet = require(\"./graphic/shape/Droplet\");\n\nexports.Droplet = _Droplet;\n\nvar _Ellipse = require(\"./graphic/shape/Ellipse\");\n\nexports.Ellipse = _Ellipse;\n\nvar _Heart = require(\"./graphic/shape/Heart\");\n\nexports.Heart = _Heart;\n\nvar _Isogon = require(\"./graphic/shape/Isogon\");\n\nexports.Isogon = _Isogon;\n\nvar _Line = require(\"./graphic/shape/Line\");\n\nexports.Line = _Line;\n\nvar _Polygon = require(\"./graphic/shape/Polygon\");\n\nexports.Polygon = _Polygon;\n\nvar _Polyline = require(\"./graphic/shape/Polyline\");\n\nexports.Polyline = _Polyline;\n\nvar _Rect = require(\"./graphic/shape/Rect\");\n\nexports.Rect = _Rect;\n\nvar _Ring = require(\"./graphic/shape/Ring\");\n\nexports.Ring = _Ring;\n\nvar _Rose = require(\"./graphic/shape/Rose\");\n\nexports.Rose = _Rose;\n\nvar _Sector = require(\"./graphic/shape/Sector\");\n\nexports.Sector = _Sector;\n\nvar _Star = require(\"./graphic/shape/Star\");\n\nexports.Star = _Star;\n\nvar _Trochoid = require(\"./graphic/shape/Trochoid\");\n\nexports.Trochoid = _Trochoid;\n\nvar _LinearGradient = require(\"./graphic/LinearGradient\");\n\nexports.LinearGradient = _LinearGradient;\n\nvar _RadialGradient = require(\"./graphic/RadialGradient\");\n\nexports.RadialGradient = _RadialGradient;\n\nvar _Pattern = require(\"./graphic/Pattern\");\n\nexports.Pattern = _Pattern;\n\nvar _BoundingRect = require(\"./core/BoundingRect\");\n\nexports.BoundingRect = _BoundingRect;","/**\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 $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","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