{"version":3,"sources":["webpack:///./node_modules/zrender/lib/canvas/graphic.js","webpack:///./node_modules/zrender/lib/animation/easing.js","webpack:///./node_modules/zrender/lib/animation/Clip.js","webpack:///./node_modules/zrender/lib/animation/Animator.js","webpack:///./node_modules/zrender/lib/canvas/helper.js","webpack:///./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack:///./node_modules/zrender/lib/animation/Animation.js","webpack:///./node_modules/zrender/lib/canvas/Layer.js","webpack:///./node_modules/zrender/lib/canvas/Painter.js"],"names":["pathProxyForDraw","PathProxy","styleHasStroke","style","stroke","lineWidth","styleHasFill","fill","doFillPath","ctx","fillOpacity","originalGlobalAlpha","globalAlpha","opacity","doStrokePath","strokeOpacity","createCanvasPattern","pattern","el","image","createOrUpdateImage","__image","isImageReady","canvasPattern","createPattern","repeat","DOMMatrix","setTransform","matrix","rotateSelf","rotation","Math","PI","scaleSelf","scaleX","scaleY","translateSelf","x","y","SHADOW_NUMBER_PROPS","STROKE_PROPS","bindCommonProps","prevStyle","forceSetAll","scope","styleChanged","flushPathDrawn","max","min","isNaN","DEFAULT_COMMON_STYLE","blend","globalCompositeOperation","i","length","propName","dpr","shadowColor","bindPathAndTextCommonStyle","prevEl","getStyle","inHover","fillStyle","strokeStyle","hasStroke","newLineWidth","strokeNoScale","getLineScale","prop","setContextTransform","m","transform","DRAW_TYPE_PATH","DRAW_TYPE_IMAGE","DRAW_TYPE_TEXT","DRAW_TYPE_INCREMENTAL","batchFill","batchStroke","__hoverStyle","brushSingle","brush","viewWidth","viewHeight","isLast","shouldBePainted","__dirty","Element","REDARAW_BIT","__isRendered","clipPaths","__clipPaths","prevElClipPaths","forceSetTransform","forceSetStyle","isClipPathChanged","restore","allClipped","save","clipPath","isZeroArea","beginPath","buildPath","shape","clip","updateClipStatus","beforeBrush","innerBeforeBrush","m0","m1","canBatchPath","Path","autoBatch","hasFill","lineDash","strokePercent","canPathBatch","lastDrawType","inBatch","strokePart","firstDraw","path","silent","createPathProxy","hasFillGradient","colorStops","hasStrokeGradient","hasFillPattern","hasStrokePattern","fillGradient","strokeGradient","fillPattern","strokePattern","rect","getBoundingRect","getCanvasGradient","__canvasFillGradient","__canvasStrokeGradient","__canvasFillPattern","__canvasStrokePattern","normalizeLineDash","lineDashOffset","ctxLineDash","setLineDash","scale","getGlobalScale","setScale","segmentIgnoreThreshold","lineScale_1","map","rawVal","needsRebuild","SHAPE_CHANGED_BIT","setDPR","setContext","reset","setLineDashOffset","toStatic","pathUpdated","rebuildPath","strokeFirst","brushPath","TSpan","text","font","DEFAULT_FONT","textAlign","textBaseline","hasLineDash","lineScale_2","strokeText","fillText","brushText","ZRImage","bindImageStyle","onload","width","getWidth","height","getHeight","aspect","sWidth","sHeight","sx","sy","drawImage","brushImage","IncrementalDisplayable","displayables","getDisplayables","temporalDisplayables","getTemporalDisplayables","len","innerScope","getCursor","displayable","innerAfterBrush","afterBrush","i_1","len_1","clearTemporalDisplayables","notClear","brushIncremental","easing","linear","k","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","cos","sinusoidalOut","sin","sinusoidalInOut","exponentialIn","pow","exponentialOut","exponentialInOut","circularIn","sqrt","circularOut","circularInOut","elasticIn","s","a","p","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","Clip","opts","this","_initialized","_startTime","_pausedTime","_paused","_life","life","_delay","delay","loop","gap","onframe","ondestroy","onrestart","prototype","step","globalTime","deltaTime","percent","easingFunc","easingFuncs","schedule","_restart","remainder","pause","resume","arraySlice","Array","slice","interpolateNumber","p0","p1","interpolate1DArray","out","add1DArray","sign","add2DArray","len2","j","fillArray","val0","val1","arrDim","arr0","arr1","push","arr0Len","arr1Len","call","is1DArraySame","catmullRomInterpolate","p2","p3","t","t2","t3","v0","v1","catmullRomInterpolate1DArray","cloneValue","value","isArrayLike","ret","rgba2String","rgba","floor","join","tmpRgba","Track","keyframes","maxTime","interpolable","_needsSort","_isAllValueEqual","_lastFrame","_lastFramePercent","isFinished","_finished","setFinished","_additiveTrack","needsAnimate","getAdditiveTrack","addKeyframe","time","arrayDim","guessArrayDim","lastFrame","colorArray","color","isValueColor","kf","prepare","additiveTrack","kfs","sort","b","kfsLen","lastKf","startValue","additiveValue","target","frameIdx","isAdditive","valueKey","kfsNum","nextFrame","frame","range","w","targetArr","_additiveValue","useSpline","catmullRomInterpolate2DArray","interpolate2DArray","_addToTarget","Animator","additiveTo","_tracks","_trackKeys","_maxTime","_started","_clip","_target","_loop","logError","_additiveAnimators","getTarget","changeTarget","when","props","whenWithKeys","keys","propNames","tracks","track","initialValue","_getAdditiveTrack","lastFinalKf","isPaused","_doneCallback","_setTracksFinished","doneList","_doneList","_abortedCallback","animation","abortedList","_abortedList","removeClip","tracksKeys","trackName","additiveAnimators","getTrack","start","forceAnimate","self","stillHasAdditiveAnimator","onframeList","_onframeList","addClip","stop","forwardToLast","during","cb","done","aborted","getClip","stopTracks","allAborted","saveFinalToTarget","trackKeys","val","__changeFinalValue","finalProps","pop","obj","canvasGradient","type","r","global","createRadialGradient","x2","y2","createLinearGradient","addColorStop","offset","prevClipPaths","requestAnimationFrame","window","bind","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","func","setTimeout","Animation","_super","_this","_running","_time","_pauseStart","stage","__extends","_clipsHead","_clipsTail","next","prev","addAnimator","animator","removeAnimator","update","notTriggerFrameAndStageUpdate","Date","getTime","delta","nextClip","trigger","_startLoop","clear","animate","options","Eventful","returnFalse","createDom","id","painter","newDom","util","newDomStyle","position","left","top","setAttribute","Layer","dom","motionBlur","lastFrameAlpha","virtual","config","incremental","zlevel","maxRepaintRectCount","__firstTimePaint","__used","__drawIndex","__startIndex","__endIndex","__prevStartIndex","__prevEndIndex","devicePixelRatio","domStyle","onselectstart","webkitUserSelect","userSelect","webkitTapHighlightColor","padding","margin","borderWidth","domBack","ctxBack","getElementCount","initContext","getContext","setUnpainted","createBackBuffer","createRepaintRects","displayList","prevList","hasIntersections","mergedRepaintRects","full","pendingRect","BoundingRect","addRectToMergePool","isFinite","isZero","boundingRect","copy","isMerged","minDeltaArea","Infinity","bestRectToMergeIdx","mergedRect","intersect","pendingRect_1","union","aArea","bArea","deltaArea","shouldPaint","prevRect","getPrevPaintRect","curRect","getPaintRect","__zr","splice","_paintRects","debugGetPaintRects","resize","clearAll","clearColor","repaintRects","haveMotionBLur","doClear","clearRect","clearColorGradientOrPattern","__canvasGradient","dirty","__painter","refresh","fillRect","CANVAS_ZLEVEL","parseInt10","parseInt","CanvasPainter","root","storage","_zlevelList","_prevDisplayList","_layers","_layerConfig","_needsManuallyCompositing","singleCanvas","nodeName","toUpperCase","_opts","_singleCanvas","rootStyle","innerHTML","zlevelList","layers","rootCanvas","_width","_height","mainLayer","__builtin__","_domRoot","_getSize","domRoot","document","createElement","cssText","createRoot","appendChild","getType","isSingleCanvas","getViewportRoot","getViewportRootOffset","viewportRoot","offsetLeft","offsetTop","paintAll","list","getDisplayList","_redrawId","random","_paintList","z","layer","_backgroundColor","useDirtyRect","refreshHover","_paintHoverList","hoverLayer","_hoverlayer","__inHover","getLayer","getHoverLayer","paintOne","redrawId","_updateLayerStatus","_a","_doPaintList","finished","needsRefreshHover","_compositeManually","eachLayer","self_1","eachBuiltinLayer","layerList","zi","_loop_1","this_1","useTimer","now","startTime","firstEl","console","error","repaint","repaintRect","_doPaintEl","env","wxa","draw","currentLayer","paintRect","setPrevPaintRect","insertLayer","layersMap","prevLayer","isLayerValid","prevDom","nextSibling","insertBefore","firstChild","context","eachOtherLayer","getLayers","updatePrevLayer","idx","prevZlevel","incrementalLayerCount","_clearLayer","setBackgroundColor","backgroundColor","configLayer","layerConfig","_zlevel","delLayer","parentNode","removeChild","display","hasOwnProperty","clearLayer","dispose","getRenderedCanvas","imageLayer","pixelRatio","width_1","height_1","renderToCanvas","whIdx","wh","cwh","plt","prb","parseFloat","stl","defaultView","getComputedStyle","pathToImage","canvas","shadowBlurSize","shadowBlur","shadowOffsetX","shadowOffsetY","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","originX","originY","updateTransform","imgShape"],"mappings":"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","file":"vendors~app~a44c17a7.js","sourcesContent":["import { DEFAULT_COMMON_STYLE } from '../graphic/Displayable';\nimport PathProxy from '../core/PathProxy';\nimport { createOrUpdateImage, isImageReady } from '../graphic/helper/image';\nimport { getCanvasGradient, isClipPathChanged } from './helper';\nimport Path from '../graphic/Path';\nimport ZRImage from '../graphic/Image';\nimport TSpan from '../graphic/TSpan';\nimport { DEFAULT_FONT } from '../contain/text';\nimport { map } from '../core/util';\nimport { normalizeLineDash } from '../graphic/helper/dashStyle';\nimport Element from '../Element';\nimport IncrementalDisplayable from '../graphic/IncrementalDisplayable';\nvar pathProxyForDraw = new PathProxy(true);\nfunction styleHasStroke(style) {\n var stroke = style.stroke;\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n}\nfunction styleHasFill(style) {\n var fill = style.fill;\n return fill != null && fill !== 'none';\n}\nfunction doFillPath(ctx, style) {\n if (style.fillOpacity != null && style.fillOpacity !== 1) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n ctx.fill();\n ctx.globalAlpha = originalGlobalAlpha;\n }\n else {\n ctx.fill();\n }\n}\nfunction doStrokePath(ctx, style) {\n if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n ctx.stroke();\n ctx.globalAlpha = originalGlobalAlpha;\n }\n else {\n ctx.stroke();\n }\n}\nexport function createCanvasPattern(ctx, pattern, el) {\n var image = createOrUpdateImage(pattern.image, pattern.__image, el);\n if (isImageReady(image)) {\n var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\n if (typeof DOMMatrix === 'function'\n && canvasPattern.setTransform) {\n var matrix = new DOMMatrix();\n matrix.rotateSelf(0, 0, (pattern.rotation || 0) / Math.PI * 180);\n matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\n matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\n canvasPattern.setTransform(matrix);\n }\n return canvasPattern;\n }\n}\nfunction brushPath(ctx, el, style, inBatch) {\n var hasStroke = styleHasStroke(style);\n var hasFill = styleHasFill(style);\n var strokePercent = style.strokePercent;\n var strokePart = strokePercent < 1;\n var firstDraw = !el.path;\n if ((!el.silent || strokePart) && firstDraw) {\n el.createPathProxy();\n }\n var path = el.path || pathProxyForDraw;\n if (!inBatch) {\n var fill = style.fill;\n var stroke = style.stroke;\n var hasFillGradient = hasFill && !!fill.colorStops;\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n var hasFillPattern = hasFill && !!fill.image;\n var hasStrokePattern = hasStroke && !!stroke.image;\n var fillGradient = void 0;\n var strokeGradient = void 0;\n var fillPattern = void 0;\n var strokePattern = void 0;\n var rect = void 0;\n if (hasFillGradient || hasStrokeGradient) {\n rect = el.getBoundingRect();\n }\n if (hasFillGradient) {\n fillGradient = el.__dirty\n ? getCanvasGradient(ctx, fill, rect)\n : el.__canvasFillGradient;\n el.__canvasFillGradient = fillGradient;\n }\n if (hasStrokeGradient) {\n strokeGradient = el.__dirty\n ? getCanvasGradient(ctx, stroke, rect)\n : el.__canvasStrokeGradient;\n el.__canvasStrokeGradient = strokeGradient;\n }\n if (hasFillPattern) {\n fillPattern = (el.__dirty || !el.__canvasFillPattern)\n ? createCanvasPattern(ctx, fill, el)\n : el.__canvasFillPattern;\n el.__canvasFillPattern = fillPattern;\n }\n if (hasStrokePattern) {\n strokePattern = (el.__dirty || !el.__canvasStrokePattern)\n ? createCanvasPattern(ctx, stroke, el)\n : el.__canvasStrokePattern;\n el.__canvasStrokePattern = fillPattern;\n }\n if (hasFillGradient) {\n ctx.fillStyle = fillGradient;\n }\n else if (hasFillPattern) {\n if (fillPattern) {\n ctx.fillStyle = fillPattern;\n }\n else {\n hasFill = false;\n }\n }\n if (hasStrokeGradient) {\n ctx.strokeStyle = strokeGradient;\n }\n else if (hasStrokePattern) {\n if (strokePattern) {\n ctx.strokeStyle = strokePattern;\n }\n else {\n hasStroke = false;\n }\n }\n }\n var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\n var lineDashOffset = style.lineDashOffset;\n var ctxLineDash = !!ctx.setLineDash;\n var scale = el.getGlobalScale();\n path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\n if (lineDash) {\n var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\n if (lineScale_1 && lineScale_1 !== 1) {\n lineDash = map(lineDash, function (rawVal) {\n return rawVal / lineScale_1;\n });\n lineDashOffset /= lineScale_1;\n }\n }\n var needsRebuild = true;\n if (firstDraw || (el.__dirty & Path.SHAPE_CHANGED_BIT)\n || (lineDash && !ctxLineDash && hasStroke)) {\n path.setDPR(ctx.dpr);\n if (strokePart) {\n path.setContext(null);\n }\n else {\n path.setContext(ctx);\n needsRebuild = false;\n }\n path.reset();\n if (lineDash && !ctxLineDash) {\n path.setLineDash(lineDash);\n path.setLineDashOffset(lineDashOffset);\n }\n el.buildPath(path, el.shape, inBatch);\n path.toStatic();\n el.pathUpdated();\n }\n if (needsRebuild) {\n path.rebuildPath(ctx, strokePart ? strokePercent : 1);\n }\n if (lineDash && ctxLineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n if (!inBatch) {\n if (style.strokeFirst) {\n if (hasStroke) {\n doStrokePath(ctx, style);\n }\n if (hasFill) {\n doFillPath(ctx, style);\n }\n }\n else {\n if (hasFill) {\n doFillPath(ctx, style);\n }\n if (hasStroke) {\n doStrokePath(ctx, style);\n }\n }\n }\n if (lineDash && ctxLineDash) {\n ctx.setLineDash([]);\n }\n}\nfunction brushImage(ctx, el, style) {\n var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\n if (!image || !isImageReady(image)) {\n return;\n }\n var x = style.x || 0;\n var y = style.y || 0;\n var width = el.getWidth();\n var height = el.getHeight();\n var aspect = image.width / image.height;\n if (width == null && height != null) {\n width = height * aspect;\n }\n else if (height == null && width != null) {\n height = width / aspect;\n }\n else if (width == null && height == null) {\n width = image.width;\n height = image.height;\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 }\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 }\n else {\n ctx.drawImage(image, x, y, width, height);\n }\n}\nfunction brushText(ctx, el, style) {\n var text = style.text;\n text != null && (text += '');\n if (text) {\n ctx.font = style.font || DEFAULT_FONT;\n ctx.textAlign = style.textAlign;\n ctx.textBaseline = style.textBaseline;\n var hasLineDash = void 0;\n if (ctx.setLineDash) {\n var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\n var lineDashOffset = style.lineDashOffset;\n if (lineDash) {\n var lineScale_2 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\n if (lineScale_2 && lineScale_2 !== 1) {\n lineDash = map(lineDash, function (rawVal) {\n return rawVal / lineScale_2;\n });\n lineDashOffset /= lineScale_2;\n }\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n hasLineDash = true;\n }\n }\n if (style.strokeFirst) {\n if (styleHasStroke(style)) {\n ctx.strokeText(text, style.x, style.y);\n }\n if (styleHasFill(style)) {\n ctx.fillText(text, style.x, style.y);\n }\n }\n else {\n if (styleHasFill(style)) {\n ctx.fillText(text, style.x, style.y);\n }\n if (styleHasStroke(style)) {\n ctx.strokeText(text, style.x, style.y);\n }\n }\n if (hasLineDash) {\n ctx.setLineDash([]);\n }\n }\n}\nvar SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\nvar STROKE_PROPS = [\n ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\n];\nfunction bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\n var styleChanged = false;\n if (!forceSetAll) {\n prevStyle = prevStyle || {};\n if (style === prevStyle) {\n return false;\n }\n }\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n var opacity = Math.max(Math.min(style.opacity, 1), 0);\n ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity;\n }\n if (forceSetAll || style.blend !== prevStyle.blend) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\n }\n for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\n var propName = SHADOW_NUMBER_PROPS[i];\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx[propName] = ctx.dpr * (style[propName] || 0);\n }\n }\n if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\n }\n return styleChanged;\n}\nfunction bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\n var style = getStyle(el, scope.inHover);\n var prevStyle = forceSetAll\n ? null\n : (prevEl && getStyle(prevEl, scope.inHover) || {});\n if (style === prevStyle) {\n return false;\n }\n var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\n if (forceSetAll || style.fill !== prevStyle.fill) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.fillStyle = style.fill;\n }\n if (forceSetAll || style.stroke !== prevStyle.stroke) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.strokeStyle = style.stroke;\n }\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n if (el.hasStroke()) {\n var lineWidth = style.lineWidth;\n var newLineWidth = lineWidth / ((style.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1);\n if (ctx.lineWidth !== newLineWidth) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.lineWidth = newLineWidth;\n }\n }\n for (var i = 0; i < STROKE_PROPS.length; i++) {\n var prop = STROKE_PROPS[i];\n var propName = prop[0];\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx[propName] = style[propName] || prop[1];\n }\n }\n return styleChanged;\n}\nfunction bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\n return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\n}\nfunction setContextTransform(ctx, el) {\n var m = el.transform;\n var dpr = ctx.dpr || 1;\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 }\n else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n}\nfunction updateClipStatus(clipPaths, ctx, scope) {\n var allClipped = false;\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n allClipped = allClipped || clipPath.isZeroArea();\n setContextTransform(ctx, clipPath);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip();\n }\n scope.allClipped = allClipped;\n}\nfunction isTransformChanged(m0, m1) {\n if (m0 && m1) {\n return m0[0] !== m1[0]\n || m0[1] !== m1[1]\n || m0[2] !== m1[2]\n || m0[3] !== m1[3]\n || m0[4] !== m1[4]\n || m0[5] !== m1[5];\n }\n else if (!m0 && !m1) {\n return false;\n }\n return true;\n}\nvar DRAW_TYPE_PATH = 1;\nvar DRAW_TYPE_IMAGE = 2;\nvar DRAW_TYPE_TEXT = 3;\nvar DRAW_TYPE_INCREMENTAL = 4;\nfunction canPathBatch(style) {\n var hasFill = styleHasFill(style);\n var hasStroke = styleHasStroke(style);\n return !(style.lineDash\n || !(+hasFill ^ +hasStroke)\n || (hasFill && typeof style.fill !== 'string')\n || (hasStroke && typeof style.stroke !== 'string')\n || style.strokePercent < 1\n || style.strokeOpacity < 1\n || style.fillOpacity < 1);\n}\nfunction flushPathDrawn(ctx, scope) {\n scope.batchFill && ctx.fill();\n scope.batchStroke && ctx.stroke();\n scope.batchFill = '';\n scope.batchStroke = '';\n}\nfunction getStyle(el, inHover) {\n return inHover ? (el.__hoverStyle || el.style) : el.style;\n}\nexport function brushSingle(ctx, el) {\n brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\n}\nexport function brush(ctx, el, scope, isLast) {\n var m = el.transform;\n if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\n el.__dirty &= ~Element.REDARAW_BIT;\n el.__isRendered = false;\n return;\n }\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths;\n var forceSetTransform = false;\n var forceSetStyle = false;\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n if (prevElClipPaths && prevElClipPaths.length) {\n flushPathDrawn(ctx, scope);\n ctx.restore();\n forceSetStyle = forceSetTransform = true;\n scope.prevElClipPaths = null;\n scope.allClipped = false;\n scope.prevEl = null;\n }\n if (clipPaths && clipPaths.length) {\n flushPathDrawn(ctx, scope);\n ctx.save();\n updateClipStatus(clipPaths, ctx, scope);\n forceSetTransform = true;\n }\n scope.prevElClipPaths = clipPaths;\n }\n if (scope.allClipped) {\n el.__isRendered = false;\n return;\n }\n el.beforeBrush && el.beforeBrush();\n el.innerBeforeBrush();\n var prevEl = scope.prevEl;\n if (!prevEl) {\n forceSetStyle = forceSetTransform = true;\n }\n var canBatchPath = el instanceof Path\n && el.autoBatch\n && canPathBatch(el.style);\n if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\n flushPathDrawn(ctx, scope);\n setContextTransform(ctx, el);\n }\n else if (!canBatchPath) {\n flushPathDrawn(ctx, scope);\n }\n var style = getStyle(el, scope.inHover);\n if (el instanceof Path) {\n if (scope.lastDrawType !== DRAW_TYPE_PATH) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_PATH;\n }\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\n ctx.beginPath();\n }\n brushPath(ctx, el, style, canBatchPath);\n if (canBatchPath) {\n scope.batchFill = style.fill || '';\n scope.batchStroke = style.stroke || '';\n }\n }\n else {\n if (el instanceof TSpan) {\n if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_TEXT;\n }\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n brushText(ctx, el, style);\n }\n else if (el instanceof ZRImage) {\n if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_IMAGE;\n }\n bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\n brushImage(ctx, el, style);\n }\n else if (el instanceof IncrementalDisplayable) {\n if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\n }\n brushIncremental(ctx, el, scope);\n }\n }\n if (canBatchPath && isLast) {\n flushPathDrawn(ctx, scope);\n }\n el.innerAfterBrush();\n el.afterBrush && el.afterBrush();\n scope.prevEl = el;\n el.__dirty = 0;\n el.__isRendered = true;\n}\nfunction brushIncremental(ctx, el, scope) {\n var displayables = el.getDisplayables();\n var temporalDisplayables = el.getTemporalDisplayables();\n ctx.save();\n var innerScope = {\n prevElClipPaths: null,\n prevEl: null,\n allClipped: false,\n viewWidth: scope.viewWidth,\n viewHeight: scope.viewHeight,\n inHover: scope.inHover\n };\n var i;\n var len;\n for (i = el.getCursor(), len = displayables.length; i < len; i++) {\n var displayable = displayables[i];\n displayable.beforeBrush && displayable.beforeBrush();\n displayable.innerBeforeBrush();\n brush(ctx, displayable, innerScope, i === len - 1);\n displayable.innerAfterBrush();\n displayable.afterBrush && displayable.afterBrush();\n innerScope.prevEl = displayable;\n }\n for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\n var displayable = temporalDisplayables[i_1];\n displayable.beforeBrush && displayable.beforeBrush();\n displayable.innerBeforeBrush();\n brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\n displayable.innerAfterBrush();\n displayable.afterBrush && displayable.afterBrush();\n innerScope.prevEl = displayable;\n }\n el.clearTemporalDisplayables();\n el.notClear = true;\n ctx.restore();\n}\n","var easing = {\n linear: function (k) {\n return k;\n },\n quadraticIn: function (k) {\n return k * k;\n },\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n return -0.5 * (--k * (k - 2) - 1);\n },\n cubicIn: function (k) {\n return k * k * k;\n },\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n quarticIn: function (k) {\n return k * k * k * k;\n },\n quarticOut: function (k) {\n return 1 - (--k * k * k * k);\n },\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n circularOut: function (k) {\n return Math.sqrt(1 - (--k * k));\n },\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n return -(a * Math.pow(2, 10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n return (a * Math.pow(2, -10 * k)\n * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\n },\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n return a * Math.pow(2, -10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n bounceIn: function (k) {\n return 1 - easing.bounceOut(1 - k);\n },\n bounceOut: function (k) {\n if (k < (1 / 2.75)) {\n return 7.5625 * k * k;\n }\n else if (k < (2 / 2.75)) {\n return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\n }\n else if (k < (2.5 / 2.75)) {\n return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\n }\n else {\n return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\n }\n },\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easing.bounceIn(k * 2) * 0.5;\n }\n return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nexport default easing;\n","import easingFuncs from './easing';\nvar Clip = (function () {\n function Clip(opts) {\n this._initialized = false;\n this._startTime = 0;\n this._pausedTime = 0;\n this._paused = false;\n this._life = opts.life || 1000;\n this._delay = opts.delay || 0;\n this.loop = opts.loop == null ? false : opts.loop;\n this.gap = opts.gap || 0;\n this.easing = opts.easing || 'linear';\n this.onframe = opts.onframe;\n this.ondestroy = opts.ondestroy;\n this.onrestart = opts.onrestart;\n }\n Clip.prototype.step = function (globalTime, deltaTime) {\n if (!this._initialized) {\n this._startTime = globalTime + this._delay;\n this._initialized = true;\n }\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n var percent = (globalTime - this._startTime - this._pausedTime) / this._life;\n if (percent < 0) {\n percent = 0;\n }\n percent = Math.min(percent, 1);\n var easing = this.easing;\n var easingFunc = typeof easing === 'string'\n ? easingFuncs[easing] : easing;\n var schedule = typeof easingFunc === 'function'\n ? easingFunc(percent)\n : percent;\n this.onframe && this.onframe(schedule);\n if (percent === 1) {\n if (this.loop) {\n this._restart(globalTime);\n this.onrestart && this.onrestart();\n }\n else {\n return true;\n }\n }\n return false;\n };\n Clip.prototype._restart = function (globalTime) {\n var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\n this._startTime = globalTime - remainder + this.gap;\n this._pausedTime = 0;\n };\n Clip.prototype.pause = function () {\n this._paused = true;\n };\n Clip.prototype.resume = function () {\n this._paused = false;\n };\n return Clip;\n}());\nexport default Clip;\n","import Clip from './Clip';\nimport * as color from '../tool/color';\nimport { isArrayLike, keys, logError } from '../core/util';\nvar arraySlice = Array.prototype.slice;\nexport function interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\nexport function step(p0, p1, percent) {\n return percent > 0.5 ? p1 : p0;\n}\nexport function interpolate1DArray(out, p0, p1, percent) {\n var len = p0.length;\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n}\nexport function interpolate2DArray(out, p0, p1, percent) {\n var len = p0.length;\n var len2 = len && p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[i] = [];\n }\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n}\nfunction add1DArray(out, p0, p1, sign) {\n var len = p0.length;\n for (var i = 0; i < len; i++) {\n out[i] = p0[i] + p1[i] * sign;\n }\n return out;\n}\nfunction add2DArray(out, p0, p1, sign) {\n var len = p0.length;\n var len2 = len && p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[i] = [];\n }\n for (var j = 0; j < len2; j++) {\n out[i][j] = p0[i][j] + p1[i][j] * sign;\n }\n }\n return out;\n}\nfunction fillArray(val0, val1, arrDim) {\n var arr0 = val0;\n var arr1 = val1;\n if (!arr0.push || !arr1.push) {\n return;\n }\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n if (arr0Len !== arr1Len) {\n var isPreviousLarger = arr0Len > arr1Len;\n if (isPreviousLarger) {\n arr0.length = arr1Len;\n }\n else {\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n }\n var len2 = arr0[0] && arr0[0].length;\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 }\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}\nfunction is1DArraySame(arr0, arr1) {\n var len = arr0.length;\n if (len !== arr1.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n return true;\n}\nfunction is2DArraySame(arr0, arr1) {\n var len = arr0.length;\n if (len !== arr1.length) {\n return false;\n }\n var len2 = arr0[0].length;\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 return true;\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\n + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\n + v0 * t + p1;\n}\nfunction catmullRomInterpolate1DArray(out, p0, p1, p2, p3, t, t2, t3) {\n var len = p0.length;\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}\nfunction catmullRomInterpolate2DArray(out, p0, p1, p2, p3, t, t2, t3) {\n var len = p0.length;\n var len2 = p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[1] = [];\n }\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}\nexport function cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n if (isArrayLike(value[0])) {\n var ret = [];\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n return ret;\n }\n return arraySlice.call(value);\n }\n return value;\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}\nfunction guessArrayDim(value) {\n return isArrayLike(value && value[0]) ? 2 : 1;\n}\nvar tmpRgba = [0, 0, 0, 0];\nvar Track = (function () {\n function Track(propName) {\n this.keyframes = [];\n this.maxTime = 0;\n this.arrDim = 0;\n this.interpolable = true;\n this._needsSort = false;\n this._isAllValueEqual = true;\n this._lastFrame = 0;\n this._lastFramePercent = 0;\n this.propName = propName;\n }\n Track.prototype.isFinished = function () {\n return this._finished;\n };\n Track.prototype.setFinished = function () {\n this._finished = true;\n if (this._additiveTrack) {\n this._additiveTrack.setFinished();\n }\n };\n Track.prototype.needsAnimate = function () {\n return !this._isAllValueEqual && this.keyframes.length >= 2 && this.interpolable;\n };\n Track.prototype.getAdditiveTrack = function () {\n return this._additiveTrack;\n };\n Track.prototype.addKeyframe = function (time, value) {\n if (time >= this.maxTime) {\n this.maxTime = time;\n }\n else {\n this._needsSort = true;\n }\n var keyframes = this.keyframes;\n var len = keyframes.length;\n if (this.interpolable) {\n if (isArrayLike(value)) {\n var arrayDim = guessArrayDim(value);\n if (len > 0 && this.arrDim !== arrayDim) {\n this.interpolable = false;\n return;\n }\n if (arrayDim === 1 && typeof value[0] !== 'number'\n || arrayDim === 2 && typeof value[0][0] !== 'number') {\n this.interpolable = false;\n return;\n }\n if (len > 0) {\n var lastFrame = keyframes[len - 1];\n if (this._isAllValueEqual) {\n if (arrayDim === 1) {\n if (!is1DArraySame(value, lastFrame.value)) {\n this._isAllValueEqual = false;\n }\n }\n else {\n this._isAllValueEqual = false;\n }\n }\n }\n this.arrDim = arrayDim;\n }\n else {\n if (this.arrDim > 0) {\n this.interpolable = false;\n return;\n }\n if (typeof value === 'string') {\n var colorArray = color.parse(value);\n if (colorArray) {\n value = colorArray;\n this.isValueColor = true;\n }\n else {\n this.interpolable = false;\n }\n }\n else if (typeof value !== 'number' || isNaN(value)) {\n this.interpolable = false;\n return;\n }\n if (this._isAllValueEqual && len > 0) {\n var lastFrame = keyframes[len - 1];\n if (this.isValueColor && !is1DArraySame(lastFrame.value, value)) {\n this._isAllValueEqual = false;\n }\n else if (lastFrame.value !== value) {\n this._isAllValueEqual = false;\n }\n }\n }\n }\n var kf = {\n time: time,\n value: value,\n percent: 0\n };\n this.keyframes.push(kf);\n return kf;\n };\n Track.prototype.prepare = function (additiveTrack) {\n var kfs = this.keyframes;\n if (this._needsSort) {\n kfs.sort(function (a, b) {\n return a.time - b.time;\n });\n }\n var arrDim = this.arrDim;\n var kfsLen = kfs.length;\n var lastKf = kfs[kfsLen - 1];\n for (var i = 0; i < kfsLen; i++) {\n kfs[i].percent = kfs[i].time / this.maxTime;\n if (arrDim > 0 && i !== kfsLen - 1) {\n fillArray(kfs[i].value, lastKf.value, arrDim);\n }\n }\n if (additiveTrack\n && this.needsAnimate()\n && additiveTrack.needsAnimate()\n && arrDim === additiveTrack.arrDim\n && this.isValueColor === additiveTrack.isValueColor\n && !additiveTrack._finished) {\n this._additiveTrack = additiveTrack;\n var startValue = kfs[0].value;\n for (var i = 0; i < kfsLen; i++) {\n if (arrDim === 0) {\n if (this.isValueColor) {\n kfs[i].additiveValue\n = add1DArray([], kfs[i].value, startValue, -1);\n }\n else {\n kfs[i].additiveValue = kfs[i].value - startValue;\n }\n }\n else if (arrDim === 1) {\n kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1);\n }\n else if (arrDim === 2) {\n kfs[i].additiveValue = add2DArray([], kfs[i].value, startValue, -1);\n }\n }\n }\n };\n Track.prototype.step = function (target, percent) {\n if (this._finished) {\n return;\n }\n if (this._additiveTrack && this._additiveTrack._finished) {\n this._additiveTrack = null;\n }\n var isAdditive = this._additiveTrack != null;\n var valueKey = isAdditive ? 'additiveValue' : 'value';\n var keyframes = this.keyframes;\n var kfsNum = this.keyframes.length;\n var propName = this.propName;\n var arrDim = this.arrDim;\n var isValueColor = this.isValueColor;\n var frameIdx;\n if (percent < 0) {\n frameIdx = 0;\n }\n else if (percent < this._lastFramePercent) {\n var start = Math.min(this._lastFrame + 1, kfsNum - 1);\n for (frameIdx = start; frameIdx >= 0; frameIdx--) {\n if (keyframes[frameIdx].percent <= percent) {\n break;\n }\n }\n frameIdx = Math.min(frameIdx, kfsNum - 2);\n }\n else {\n for (frameIdx = this._lastFrame; frameIdx < kfsNum; frameIdx++) {\n if (keyframes[frameIdx].percent > percent) {\n break;\n }\n }\n frameIdx = Math.min(frameIdx - 1, kfsNum - 2);\n }\n var nextFrame = keyframes[frameIdx + 1];\n var frame = keyframes[frameIdx];\n if (!(frame && nextFrame)) {\n return;\n }\n this._lastFrame = frameIdx;\n this._lastFramePercent = percent;\n var range = (nextFrame.percent - frame.percent);\n if (range === 0) {\n return;\n }\n var w = (percent - frame.percent) / range;\n var targetArr = isAdditive ? this._additiveValue\n : (isValueColor ? tmpRgba : target[propName]);\n if ((arrDim > 0 || isValueColor) && !targetArr) {\n targetArr = this._additiveValue = [];\n }\n if (this.useSpline) {\n var p1 = keyframes[frameIdx][valueKey];\n var p0 = keyframes[frameIdx === 0 ? frameIdx : frameIdx - 1][valueKey];\n var p2 = keyframes[frameIdx > kfsNum - 2 ? kfsNum - 1 : frameIdx + 1][valueKey];\n var p3 = keyframes[frameIdx > kfsNum - 3 ? kfsNum - 1 : frameIdx + 2][valueKey];\n if (arrDim > 0) {\n arrDim === 1\n ? catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w)\n : catmullRomInterpolate2DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\n }\n else if (isValueColor) {\n catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\n if (!isAdditive) {\n target[propName] = rgba2String(targetArr);\n }\n }\n else {\n var value = void 0;\n if (!this.interpolable) {\n value = p2;\n }\n else {\n value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n }\n if (isAdditive) {\n this._additiveValue = value;\n }\n else {\n target[propName] = value;\n }\n }\n }\n else {\n if (arrDim > 0) {\n arrDim === 1\n ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\n : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n }\n else if (isValueColor) {\n interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n if (!isAdditive) {\n target[propName] = rgba2String(targetArr);\n }\n }\n else {\n var value = void 0;\n if (!this.interpolable) {\n value = step(frame[valueKey], nextFrame[valueKey], w);\n }\n else {\n value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\n }\n if (isAdditive) {\n this._additiveValue = value;\n }\n else {\n target[propName] = value;\n }\n }\n }\n if (isAdditive) {\n this._addToTarget(target);\n }\n };\n Track.prototype._addToTarget = function (target) {\n var arrDim = this.arrDim;\n var propName = this.propName;\n var additiveValue = this._additiveValue;\n if (arrDim === 0) {\n if (this.isValueColor) {\n color.parse(target[propName], tmpRgba);\n add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\n target[propName] = rgba2String(tmpRgba);\n }\n else {\n target[propName] = target[propName] + additiveValue;\n }\n }\n else if (arrDim === 1) {\n add1DArray(target[propName], target[propName], additiveValue, 1);\n }\n else if (arrDim === 2) {\n add2DArray(target[propName], target[propName], additiveValue, 1);\n }\n };\n return Track;\n}());\nvar Animator = (function () {\n function Animator(target, loop, additiveTo) {\n this._tracks = {};\n this._trackKeys = [];\n this._delay = 0;\n this._maxTime = 0;\n this._paused = false;\n this._started = 0;\n this._clip = null;\n this._target = target;\n this._loop = loop;\n if (loop && additiveTo) {\n logError('Can\\' use additive animation on looped animation.');\n return;\n }\n this._additiveAnimators = additiveTo;\n }\n Animator.prototype.getTarget = function () {\n return this._target;\n };\n Animator.prototype.changeTarget = function (target) {\n this._target = target;\n };\n Animator.prototype.when = function (time, props) {\n return this.whenWithKeys(time, props, keys(props));\n };\n Animator.prototype.whenWithKeys = function (time, props, propNames) {\n var tracks = this._tracks;\n for (var i = 0; i < propNames.length; i++) {\n var propName = propNames[i];\n var track = tracks[propName];\n if (!track) {\n track = tracks[propName] = new Track(propName);\n var initialValue = void 0;\n var additiveTrack = this._getAdditiveTrack(propName);\n if (additiveTrack) {\n var lastFinalKf = additiveTrack.keyframes[additiveTrack.keyframes.length - 1];\n initialValue = lastFinalKf && lastFinalKf.value;\n if (additiveTrack.isValueColor && initialValue) {\n initialValue = rgba2String(initialValue);\n }\n }\n else {\n initialValue = this._target[propName];\n }\n if (initialValue == null) {\n continue;\n }\n if (time !== 0) {\n track.addKeyframe(0, cloneValue(initialValue));\n }\n this._trackKeys.push(propName);\n }\n track.addKeyframe(time, cloneValue(props[propName]));\n }\n this._maxTime = Math.max(this._maxTime, time);\n return this;\n };\n Animator.prototype.pause = function () {\n this._clip.pause();\n this._paused = true;\n };\n Animator.prototype.resume = function () {\n this._clip.resume();\n this._paused = false;\n };\n Animator.prototype.isPaused = function () {\n return !!this._paused;\n };\n Animator.prototype._doneCallback = function () {\n this._setTracksFinished();\n this._clip = null;\n var doneList = this._doneList;\n if (doneList) {\n var len = doneList.length;\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n }\n };\n Animator.prototype._abortedCallback = function () {\n this._setTracksFinished();\n var animation = this.animation;\n var abortedList = this._abortedList;\n if (animation) {\n animation.removeClip(this._clip);\n }\n this._clip = null;\n if (abortedList) {\n for (var i = 0; i < abortedList.length; i++) {\n abortedList[i].call(this);\n }\n }\n };\n Animator.prototype._setTracksFinished = function () {\n var tracks = this._tracks;\n var tracksKeys = this._trackKeys;\n for (var i = 0; i < tracksKeys.length; i++) {\n tracks[tracksKeys[i]].setFinished();\n }\n };\n Animator.prototype._getAdditiveTrack = function (trackName) {\n var additiveTrack;\n var additiveAnimators = this._additiveAnimators;\n if (additiveAnimators) {\n for (var i = 0; i < additiveAnimators.length; i++) {\n var track = additiveAnimators[i].getTrack(trackName);\n if (track) {\n additiveTrack = track;\n }\n }\n }\n return additiveTrack;\n };\n Animator.prototype.start = function (easing, forceAnimate) {\n if (this._started > 0) {\n return;\n }\n this._started = 1;\n var self = this;\n var tracks = [];\n for (var i = 0; i < this._trackKeys.length; i++) {\n var propName = this._trackKeys[i];\n var track = this._tracks[propName];\n var additiveTrack = this._getAdditiveTrack(propName);\n var kfs = track.keyframes;\n track.prepare(additiveTrack);\n if (track.needsAnimate()) {\n tracks.push(track);\n }\n else if (!track.interpolable) {\n var lastKf = kfs[kfs.length - 1];\n if (lastKf) {\n self._target[track.propName] = lastKf.value;\n }\n }\n }\n if (tracks.length || forceAnimate) {\n var clip = new Clip({\n life: this._maxTime,\n loop: this._loop,\n delay: this._delay,\n onframe: function (percent) {\n self._started = 2;\n var additiveAnimators = self._additiveAnimators;\n if (additiveAnimators) {\n var stillHasAdditiveAnimator = false;\n for (var i = 0; i < additiveAnimators.length; i++) {\n if (additiveAnimators[i]._clip) {\n stillHasAdditiveAnimator = true;\n break;\n }\n }\n if (!stillHasAdditiveAnimator) {\n self._additiveAnimators = null;\n }\n }\n for (var i = 0; i < tracks.length; i++) {\n tracks[i].step(self._target, percent);\n }\n var onframeList = self._onframeList;\n if (onframeList) {\n for (var i = 0; i < onframeList.length; i++) {\n onframeList[i](self._target, percent);\n }\n }\n },\n ondestroy: function () {\n self._doneCallback();\n }\n });\n this._clip = clip;\n if (this.animation) {\n this.animation.addClip(clip);\n }\n if (easing && easing !== 'spline') {\n clip.easing = easing;\n }\n }\n else {\n this._doneCallback();\n }\n return this;\n };\n Animator.prototype.stop = function (forwardToLast) {\n if (!this._clip) {\n return;\n }\n var clip = this._clip;\n if (forwardToLast) {\n clip.onframe(1);\n }\n this._abortedCallback();\n };\n Animator.prototype.delay = function (time) {\n this._delay = time;\n return this;\n };\n Animator.prototype.during = function (cb) {\n if (cb) {\n if (!this._onframeList) {\n this._onframeList = [];\n }\n this._onframeList.push(cb);\n }\n return this;\n };\n Animator.prototype.done = function (cb) {\n if (cb) {\n if (!this._doneList) {\n this._doneList = [];\n }\n this._doneList.push(cb);\n }\n return this;\n };\n Animator.prototype.aborted = function (cb) {\n if (cb) {\n if (!this._abortedList) {\n this._abortedList = [];\n }\n this._abortedList.push(cb);\n }\n return this;\n };\n Animator.prototype.getClip = function () {\n return this._clip;\n };\n Animator.prototype.getTrack = function (propName) {\n return this._tracks[propName];\n };\n Animator.prototype.stopTracks = function (propNames, forwardToLast) {\n if (!propNames.length || !this._clip) {\n return true;\n }\n var tracks = this._tracks;\n var tracksKeys = this._trackKeys;\n for (var i = 0; i < propNames.length; i++) {\n var track = tracks[propNames[i]];\n if (track) {\n if (forwardToLast) {\n track.step(this._target, 1);\n }\n else if (this._started === 1) {\n track.step(this._target, 0);\n }\n track.setFinished();\n }\n }\n var allAborted = true;\n for (var i = 0; i < tracksKeys.length; i++) {\n if (!tracks[tracksKeys[i]].isFinished()) {\n allAborted = false;\n break;\n }\n }\n if (allAborted) {\n this._abortedCallback();\n }\n return allAborted;\n };\n Animator.prototype.saveFinalToTarget = function (target, trackKeys) {\n if (!target) {\n return;\n }\n trackKeys = trackKeys || this._trackKeys;\n for (var i = 0; i < trackKeys.length; i++) {\n var propName = trackKeys[i];\n var track = this._tracks[propName];\n if (!track || track.isFinished()) {\n continue;\n }\n var kfs = track.keyframes;\n var lastKf = kfs[kfs.length - 1];\n if (lastKf) {\n var val = cloneValue(lastKf.value);\n if (track.isValueColor) {\n val = rgba2String(val);\n }\n target[propName] = val;\n }\n }\n };\n Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\n trackKeys = trackKeys || keys(finalProps);\n for (var i = 0; i < trackKeys.length; i++) {\n var propName = trackKeys[i];\n var track = this._tracks[propName];\n if (!track) {\n continue;\n }\n var kfs = track.keyframes;\n if (kfs.length > 1) {\n var lastKf = kfs.pop();\n track.addKeyframe(lastKf.time, finalProps[propName]);\n track.prepare(track.getAdditiveTrack());\n }\n }\n };\n return Animator;\n}());\nexport default Animator;\n","export function 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 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 }\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}\nexport function 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 if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\nexport function getCanvasGradient(ctx, obj, rect) {\n var canvasGradient = obj.type === 'radial'\n ? createRadialGradient(ctx, obj, rect)\n : createLinearGradient(ctx, obj, rect);\n var colorStops = obj.colorStops;\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n return canvasGradient;\n}\nexport function isClipPathChanged(clipPaths, prevClipPaths) {\n if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\n return false;\n }\n if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\n return true;\n }\n for (var i = 0; i < clipPaths.length; i++) {\n if (clipPaths[i] !== prevClipPaths[i]) {\n return true;\n }\n }\n return false;\n}\n","var requestAnimationFrame;\nrequestAnimationFrame = (typeof window !== 'undefined'\n && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\n || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame)) || function (func) {\n return setTimeout(func, 16);\n};\nexport default requestAnimationFrame;\n","import { __extends } from \"tslib\";\nimport Eventful from '../core/Eventful';\nimport requestAnimationFrame from './requestAnimationFrame';\nimport Animator from './Animator';\nvar Animation = (function (_super) {\n __extends(Animation, _super);\n function Animation(opts) {\n var _this = _super.call(this) || this;\n _this._running = false;\n _this._time = 0;\n _this._pausedTime = 0;\n _this._pauseStart = 0;\n _this._paused = false;\n opts = opts || {};\n _this.stage = opts.stage || {};\n _this.onframe = opts.onframe || function () { };\n return _this;\n }\n Animation.prototype.addClip = function (clip) {\n if (clip.animation) {\n this.removeClip(clip);\n }\n if (!this._clipsHead) {\n this._clipsHead = this._clipsTail = clip;\n }\n else {\n this._clipsTail.next = clip;\n clip.prev = this._clipsTail;\n clip.next = null;\n this._clipsTail = clip;\n }\n clip.animation = this;\n };\n Animation.prototype.addAnimator = function (animator) {\n animator.animation = this;\n var clip = animator.getClip();\n if (clip) {\n this.addClip(clip);\n }\n };\n Animation.prototype.removeClip = function (clip) {\n if (!clip.animation) {\n return;\n }\n var prev = clip.prev;\n var next = clip.next;\n if (prev) {\n prev.next = next;\n }\n else {\n this._clipsHead = next;\n }\n if (next) {\n next.prev = prev;\n }\n else {\n this._clipsTail = prev;\n }\n clip.next = clip.prev = clip.animation = null;\n };\n Animation.prototype.removeAnimator = function (animator) {\n var clip = animator.getClip();\n if (clip) {\n this.removeClip(clip);\n }\n animator.animation = null;\n };\n Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\n var time = new Date().getTime() - this._pausedTime;\n var delta = time - this._time;\n var clip = this._clipsHead;\n while (clip) {\n var nextClip = clip.next;\n var finished = clip.step(time, delta);\n if (finished) {\n clip.ondestroy && clip.ondestroy();\n this.removeClip(clip);\n clip = nextClip;\n }\n else {\n clip = nextClip;\n }\n }\n this._time = time;\n if (!notTriggerFrameAndStageUpdate) {\n this.onframe(delta);\n this.trigger('frame', delta);\n this.stage.update && this.stage.update();\n }\n };\n Animation.prototype._startLoop = function () {\n var self = this;\n this._running = true;\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self.update();\n }\n }\n requestAnimationFrame(step);\n };\n Animation.prototype.start = function () {\n if (this._running) {\n return;\n }\n this._time = new Date().getTime();\n this._pausedTime = 0;\n this._startLoop();\n };\n Animation.prototype.stop = function () {\n this._running = false;\n };\n Animation.prototype.pause = function () {\n if (!this._paused) {\n this._pauseStart = new Date().getTime();\n this._paused = true;\n }\n };\n Animation.prototype.resume = function () {\n if (this._paused) {\n this._pausedTime += (new Date().getTime()) - this._pauseStart;\n this._paused = false;\n }\n };\n Animation.prototype.clear = function () {\n var clip = this._clipsHead;\n while (clip) {\n var nextClip = clip.next;\n clip.prev = clip.next = clip.animation = null;\n clip = nextClip;\n }\n this._clipsHead = this._clipsTail = null;\n };\n Animation.prototype.isFinished = function () {\n return this._clipsHead == null;\n };\n Animation.prototype.animate = function (target, options) {\n options = options || {};\n this.start();\n var animator = new Animator(target, options.loop);\n this.addAnimator(animator);\n return animator;\n };\n return Animation;\n}(Eventful));\nexport default Animation;\n","import { __extends } from \"tslib\";\nimport * as util from '../core/util';\nimport { devicePixelRatio } from '../config';\nimport Eventful from '../core/Eventful';\nimport Element from '../Element';\nimport { getCanvasGradient } from './helper';\nimport { createCanvasPattern } from './graphic';\nimport BoundingRect from '../core/BoundingRect';\nfunction returnFalse() {\n return false;\n}\nfunction createDom(id, painter, dpr) {\n var newDom = util.createCanvas();\n var width = painter.getWidth();\n var height = painter.getHeight();\n var newDomStyle = newDom.style;\n if (newDomStyle) {\n newDomStyle.position = 'absolute';\n newDomStyle.left = '0';\n newDomStyle.top = '0';\n newDomStyle.width = width + 'px';\n newDomStyle.height = height + 'px';\n newDom.setAttribute('data-zr-dom-id', id);\n }\n newDom.width = width * dpr;\n newDom.height = height * dpr;\n return newDom;\n}\n;\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, painter, dpr) {\n var _this = _super.call(this) || this;\n _this.motionBlur = false;\n _this.lastFrameAlpha = 0.7;\n _this.dpr = 1;\n _this.virtual = false;\n _this.config = {};\n _this.incremental = false;\n _this.zlevel = 0;\n _this.maxRepaintRectCount = 5;\n _this.__dirty = true;\n _this.__firstTimePaint = true;\n _this.__used = false;\n _this.__drawIndex = 0;\n _this.__startIndex = 0;\n _this.__endIndex = 0;\n _this.__prevStartIndex = null;\n _this.__prevEndIndex = null;\n var dom;\n dpr = dpr || devicePixelRatio;\n if (typeof id === 'string') {\n dom = createDom(id, painter, dpr);\n }\n else if (util.isObject(id)) {\n dom = id;\n id = dom.id;\n }\n _this.id = id;\n _this.dom = dom;\n var domStyle = dom.style;\n if (domStyle) {\n dom.onselectstart = returnFalse;\n domStyle.webkitUserSelect = 'none';\n domStyle.userSelect = 'none';\n domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\n domStyle['-webkit-touch-callout'] = 'none';\n domStyle.padding = '0';\n domStyle.margin = '0';\n domStyle.borderWidth = '0';\n }\n _this.domBack = null;\n _this.ctxBack = null;\n _this.painter = painter;\n _this.config = null;\n _this.dpr = dpr;\n return _this;\n }\n Layer.prototype.getElementCount = function () {\n return this.__endIndex - this.__startIndex;\n };\n Layer.prototype.afterBrush = function () {\n this.__prevStartIndex = this.__startIndex;\n this.__prevEndIndex = this.__endIndex;\n };\n Layer.prototype.initContext = function () {\n this.ctx = this.dom.getContext('2d');\n this.ctx.dpr = this.dpr;\n };\n Layer.prototype.setUnpainted = function () {\n this.__firstTimePaint = true;\n };\n Layer.prototype.createBackBuffer = function () {\n var dpr = this.dpr;\n this.domBack = createDom('back-' + this.id, this.painter, dpr);\n this.ctxBack = this.domBack.getContext('2d');\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n };\n Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) {\n if (this.__firstTimePaint) {\n this.__firstTimePaint = false;\n return null;\n }\n var mergedRepaintRects = [];\n var maxRepaintRectCount = this.maxRepaintRectCount;\n var full = false;\n var pendingRect = new BoundingRect(0, 0, 0, 0);\n function addRectToMergePool(rect) {\n if (!rect.isFinite() || rect.isZero()) {\n return;\n }\n if (mergedRepaintRects.length === 0) {\n var boundingRect = new BoundingRect(0, 0, 0, 0);\n boundingRect.copy(rect);\n mergedRepaintRects.push(boundingRect);\n }\n else {\n var isMerged = false;\n var minDeltaArea = Infinity;\n var bestRectToMergeIdx = 0;\n for (var i = 0; i < mergedRepaintRects.length; ++i) {\n var mergedRect = mergedRepaintRects[i];\n if (mergedRect.intersect(rect)) {\n var pendingRect_1 = new BoundingRect(0, 0, 0, 0);\n pendingRect_1.copy(mergedRect);\n pendingRect_1.union(rect);\n mergedRepaintRects[i] = pendingRect_1;\n isMerged = true;\n break;\n }\n else if (full) {\n pendingRect.copy(rect);\n pendingRect.union(mergedRect);\n var aArea = rect.width * rect.height;\n var bArea = mergedRect.width * mergedRect.height;\n var pendingArea = pendingRect.width * pendingRect.height;\n var deltaArea = pendingArea - aArea - bArea;\n if (deltaArea < minDeltaArea) {\n minDeltaArea = deltaArea;\n bestRectToMergeIdx = i;\n }\n }\n }\n if (full) {\n mergedRepaintRects[bestRectToMergeIdx].union(rect);\n isMerged = true;\n }\n if (!isMerged) {\n var boundingRect = new BoundingRect(0, 0, 0, 0);\n boundingRect.copy(rect);\n mergedRepaintRects.push(boundingRect);\n }\n if (!full) {\n full = mergedRepaintRects.length >= maxRepaintRectCount;\n }\n }\n }\n for (var i = this.__startIndex; i < this.__endIndex; ++i) {\n var el = displayList[i];\n if (el) {\n var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\n var prevRect = el.__isRendered && ((el.__dirty & Element.REDARAW_BIT) || !shouldPaint)\n ? el.getPrevPaintRect()\n : null;\n if (prevRect) {\n addRectToMergePool(prevRect);\n }\n var curRect = shouldPaint && ((el.__dirty & Element.REDARAW_BIT) || !el.__isRendered)\n ? el.getPaintRect()\n : null;\n if (curRect) {\n addRectToMergePool(curRect);\n }\n }\n }\n for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {\n var el = prevList[i];\n var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\n if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {\n var prevRect = el.getPrevPaintRect();\n if (prevRect) {\n addRectToMergePool(prevRect);\n }\n }\n }\n var hasIntersections;\n do {\n hasIntersections = false;\n for (var i = 0; i < mergedRepaintRects.length;) {\n if (mergedRepaintRects[i].isZero()) {\n mergedRepaintRects.splice(i, 1);\n continue;\n }\n for (var j = i + 1; j < mergedRepaintRects.length;) {\n if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {\n hasIntersections = true;\n mergedRepaintRects[i].union(mergedRepaintRects[j]);\n mergedRepaintRects.splice(j, 1);\n }\n else {\n j++;\n }\n }\n i++;\n }\n } while (hasIntersections);\n this._paintRects = mergedRepaintRects;\n return mergedRepaintRects;\n };\n Layer.prototype.debugGetPaintRects = function () {\n return (this._paintRects || []).slice();\n };\n Layer.prototype.resize = function (width, height) {\n var dpr = this.dpr;\n var dom = this.dom;\n var domStyle = dom.style;\n var domBack = this.domBack;\n if (domStyle) {\n domStyle.width = width + 'px';\n domStyle.height = height + 'px';\n }\n dom.width = width * dpr;\n dom.height = height * dpr;\n if (domBack) {\n domBack.width = width * dpr;\n domBack.height = height * dpr;\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n }\n };\n Layer.prototype.clear = function (clearAll, clearColor, repaintRects) {\n var dom = this.dom;\n var ctx = this.ctx;\n var width = dom.width;\n var height = dom.height;\n clearColor = clearColor || this.clearColor;\n var haveMotionBLur = this.motionBlur && !clearAll;\n var lastFrameAlpha = this.lastFrameAlpha;\n var dpr = this.dpr;\n var self = this;\n if (haveMotionBLur) {\n if (!this.domBack) {\n this.createBackBuffer();\n }\n this.ctxBack.globalCompositeOperation = 'copy';\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n }\n var domBack = this.domBack;\n function doClear(x, y, width, height) {\n ctx.clearRect(x, y, width, height);\n if (clearColor && clearColor !== 'transparent') {\n var clearColorGradientOrPattern = void 0;\n if (util.isGradientObject(clearColor)) {\n clearColorGradientOrPattern = clearColor.__canvasGradient\n || getCanvasGradient(ctx, clearColor, {\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n clearColor.__canvasGradient = clearColorGradientOrPattern;\n }\n else if (util.isPatternObject(clearColor)) {\n clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\n dirty: function () {\n self.setUnpainted();\n self.__painter.refresh();\n }\n });\n }\n ctx.save();\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n ctx.fillRect(x, y, width, height);\n ctx.restore();\n }\n if (haveMotionBLur) {\n ctx.save();\n ctx.globalAlpha = lastFrameAlpha;\n ctx.drawImage(domBack, x, y, width, height);\n ctx.restore();\n }\n }\n ;\n if (!repaintRects || haveMotionBLur) {\n doClear(0, 0, width, height);\n }\n else if (repaintRects.length) {\n util.each(repaintRects, function (rect) {\n doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\n });\n }\n };\n return Layer;\n}(Eventful));\nexport default Layer;\n","import { devicePixelRatio } from '../config';\nimport * as util from '../core/util';\nimport Layer from './Layer';\nimport requestAnimationFrame from '../animation/requestAnimationFrame';\nimport ZRImage from '../graphic/Image';\nimport env from '../core/env';\nimport { brush, brushSingle } from './graphic';\nimport Element from '../Element';\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\nfunction isLayerValid(layer) {\n if (!layer) {\n return false;\n }\n if (layer.__builtin__) {\n return true;\n }\n if (typeof (layer.resize) !== 'function'\n || typeof (layer.refresh) !== 'function') {\n return false;\n }\n return true;\n}\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div');\n domRoot.style.cssText = [\n 'position:relative',\n 'width:' + width + 'px',\n 'height:' + height + 'px',\n 'padding:0',\n 'margin:0',\n 'border-width:0'\n ].join(';') + ';';\n return domRoot;\n}\nvar CanvasPainter = (function () {\n function CanvasPainter(root, storage, opts, id) {\n this.type = 'canvas';\n this._zlevelList = [];\n this._prevDisplayList = [];\n this._layers = {};\n this._layerConfig = {};\n this._needsManuallyCompositing = false;\n this.type = 'canvas';\n var singleCanvas = !root.nodeName\n || root.nodeName.toUpperCase() === 'CANVAS';\n this._opts = opts = util.extend({}, opts || {});\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\n this._singleCanvas = singleCanvas;\n this.root = root;\n var rootStyle = root.style;\n if (rootStyle) {\n rootStyle.webkitTapHighlightColor = 'transparent';\n rootStyle.webkitUserSelect = 'none';\n rootStyle.userSelect = 'none';\n rootStyle['-webkit-touch-callout'] = 'none';\n root.innerHTML = '';\n }\n this.storage = storage;\n var zlevelList = this._zlevelList;\n this._prevDisplayList = [];\n var layers = this._layers;\n if (!singleCanvas) {\n this._width = this._getSize(0);\n this._height = this._getSize(1);\n var domRoot = this._domRoot = createRoot(this._width, this._height);\n root.appendChild(domRoot);\n }\n else {\n var rootCanvas = root;\n var width = rootCanvas.width;\n var height = rootCanvas.height;\n if (opts.width != null) {\n width = opts.width;\n }\n if (opts.height != null) {\n height = opts.height;\n }\n this.dpr = opts.devicePixelRatio || 1;\n rootCanvas.width = width * this.dpr;\n rootCanvas.height = height * this.dpr;\n this._width = width;\n this._height = height;\n var mainLayer = new Layer(rootCanvas, this, this.dpr);\n mainLayer.__builtin__ = true;\n mainLayer.initContext();\n layers[CANVAS_ZLEVEL] = mainLayer;\n mainLayer.zlevel = CANVAS_ZLEVEL;\n zlevelList.push(CANVAS_ZLEVEL);\n this._domRoot = root;\n }\n }\n CanvasPainter.prototype.getType = function () {\n return 'canvas';\n };\n CanvasPainter.prototype.isSingleCanvas = function () {\n return this._singleCanvas;\n };\n CanvasPainter.prototype.getViewportRoot = function () {\n return this._domRoot;\n };\n CanvasPainter.prototype.getViewportRootOffset = function () {\n var viewportRoot = this.getViewportRoot();\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n };\n CanvasPainter.prototype.refresh = function (paintAll) {\n var list = this.storage.getDisplayList(true);\n var prevList = this._prevDisplayList;\n var zlevelList = this._zlevelList;\n this._redrawId = Math.random();\n this._paintList(list, prevList, paintAll, this._redrawId);\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (!layer.__builtin__ && layer.refresh) {\n var clearColor = i === 0 ? this._backgroundColor : null;\n layer.refresh(clearColor);\n }\n }\n if (this._opts.useDirtyRect) {\n this._prevDisplayList = list.slice();\n }\n return this;\n };\n CanvasPainter.prototype.refreshHover = function () {\n this._paintHoverList(this.storage.getDisplayList(false));\n };\n CanvasPainter.prototype._paintHoverList = function (list) {\n var len = list.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n if (!len) {\n return;\n }\n var scope = {\n inHover: true,\n viewWidth: this._width,\n viewHeight: this._height\n };\n var ctx;\n for (var i = 0; i < len; i++) {\n var el = list[i];\n if (el.__inHover) {\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n if (!ctx) {\n ctx = hoverLayer.ctx;\n ctx.save();\n }\n brush(ctx, el, scope, i === len - 1);\n }\n }\n if (ctx) {\n ctx.restore();\n }\n };\n CanvasPainter.prototype.getHoverLayer = function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n };\n CanvasPainter.prototype.paintOne = function (ctx, el) {\n brushSingle(ctx, el);\n };\n CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n paintAll = paintAll || false;\n this._updateLayerStatus(list);\n var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n if (needsRefreshHover) {\n this._paintHoverList(list);\n }\n if (!finished) {\n var self_1 = this;\n requestAnimationFrame(function () {\n self_1._paintList(list, prevList, paintAll, redrawId);\n });\n }\n else {\n this.eachLayer(function (layer) {\n layer.afterBrush && layer.afterBrush();\n });\n }\n };\n CanvasPainter.prototype._compositeManually = function () {\n var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n var width = this._domRoot.width;\n var height = this._domRoot.height;\n ctx.clearRect(0, 0, width, height);\n this.eachBuiltinLayer(function (layer) {\n if (layer.virtual) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n }\n });\n };\n CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\n var _this = this;\n var layerList = [];\n var useDirtyRect = this._opts.useDirtyRect;\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\n var zlevel = this._zlevelList[zi];\n var layer = this._layers[zlevel];\n if (layer.__builtin__\n && layer !== this._hoverlayer\n && (layer.__dirty || paintAll)) {\n layerList.push(layer);\n }\n }\n var finished = true;\n var needsRefreshHover = false;\n var _loop_1 = function (k) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var repaintRects = useDirtyRect\n && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\n ctx.save();\n var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n var useTimer = !paintAll && layer.incremental && Date.now;\n var startTime = useTimer && Date.now();\n var clearColor = layer.zlevel === this_1._zlevelList[0]\n ? this_1._backgroundColor : null;\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor, repaintRects);\n }\n else if (start === layer.__startIndex) {\n var firstEl = list[start];\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor, repaintRects);\n }\n }\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n var i;\n var repaint = function (repaintRect) {\n var scope = {\n inHover: false,\n allClipped: false,\n prevEl: null,\n viewWidth: _this._width,\n viewHeight: _this._height\n };\n for (i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n if (el.__inHover) {\n needsRefreshHover = true;\n }\n _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\n if (useTimer) {\n var dTime = Date.now() - startTime;\n if (dTime > 15) {\n break;\n }\n }\n }\n if (scope.prevElClipPaths) {\n ctx.restore();\n }\n };\n if (repaintRects) {\n if (repaintRects.length === 0) {\n i = layer.__endIndex;\n }\n else {\n var dpr = this_1.dpr;\n for (var r = 0; r < repaintRects.length; ++r) {\n var rect = repaintRects[r];\n ctx.save();\n ctx.beginPath();\n ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\n ctx.clip();\n repaint(rect);\n ctx.restore();\n }\n }\n }\n else {\n ctx.save();\n repaint();\n ctx.restore();\n }\n layer.__drawIndex = i;\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n };\n var this_1 = this;\n for (var k = 0; k < layerList.length; k++) {\n _loop_1(k);\n }\n if (env.wxa) {\n util.each(this._layers, function (layer) {\n if (layer && layer.ctx && layer.ctx.draw) {\n layer.ctx.draw();\n }\n });\n }\n return {\n finished: finished,\n needsRefreshHover: needsRefreshHover\n };\n };\n CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\n var ctx = currentLayer.ctx;\n if (useDirtyRect) {\n var paintRect = el.getPaintRect();\n if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\n brush(ctx, el, scope, isLast);\n el.setPrevPaintRect(paintRect);\n }\n }\n else {\n brush(ctx, el, scope, isLast);\n }\n };\n CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\n if (this._singleCanvas && !this._needsManuallyCompositing) {\n zlevel = CANVAS_ZLEVEL;\n }\n var layer = this._layers[zlevel];\n if (!layer) {\n layer = new Layer('zr_' + zlevel, this, this.dpr);\n layer.zlevel = zlevel;\n layer.__builtin__ = true;\n if (this._layerConfig[zlevel]) {\n util.merge(layer, this._layerConfig[zlevel], true);\n }\n else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n }\n if (virtual) {\n layer.virtual = virtual;\n }\n this.insertLayer(zlevel, layer);\n layer.initContext();\n }\n return layer;\n };\n CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\n var layersMap = this._layers;\n var zlevelList = this._zlevelList;\n var len = zlevelList.length;\n var domRoot = this._domRoot;\n var prevLayer = null;\n var i = -1;\n if (layersMap[zlevel]) {\n util.logError('ZLevel ' + zlevel + ' has been used already');\n return;\n }\n if (!isLayerValid(layer)) {\n util.logError('Layer of zlevel ' + zlevel + ' is not valid');\n return;\n }\n if (len > 0 && zlevel > zlevelList[0]) {\n for (i = 0; i < len - 1; i++) {\n if (zlevelList[i] < zlevel\n && zlevelList[i + 1] > zlevel) {\n break;\n }\n }\n prevLayer = layersMap[zlevelList[i]];\n }\n zlevelList.splice(i + 1, 0, zlevel);\n layersMap[zlevel] = layer;\n if (!layer.virtual) {\n if (prevLayer) {\n var prevDom = prevLayer.dom;\n if (prevDom.nextSibling) {\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n }\n else {\n domRoot.appendChild(layer.dom);\n }\n }\n else {\n if (domRoot.firstChild) {\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\n }\n else {\n domRoot.appendChild(layer.dom);\n }\n }\n }\n layer.__painter = this;\n };\n CanvasPainter.prototype.eachLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n cb.call(context, this._layers[z], z);\n }\n };\n CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n };\n CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n };\n CanvasPainter.prototype.getLayers = function () {\n return this._layers;\n };\n CanvasPainter.prototype._updateLayerStatus = function (list) {\n this.eachBuiltinLayer(function (layer, z) {\n layer.__dirty = layer.__used = false;\n });\n function updatePrevLayer(idx) {\n if (prevLayer) {\n if (prevLayer.__endIndex !== idx) {\n prevLayer.__dirty = true;\n }\n prevLayer.__endIndex = idx;\n }\n }\n if (this._singleCanvas) {\n for (var i_1 = 1; i_1 < list.length; i_1++) {\n var el = list[i_1];\n if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\n this._needsManuallyCompositing = true;\n break;\n }\n }\n }\n var prevLayer = null;\n var incrementalLayerCount = 0;\n var prevZlevel;\n var i;\n for (i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer = void 0;\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n }\n if (el.incremental) {\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n layer.incremental = true;\n incrementalLayerCount = 1;\n }\n else {\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n }\n if (!layer.__builtin__) {\n util.logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n }\n if (layer !== prevLayer) {\n layer.__used = true;\n if (layer.__startIndex !== i) {\n layer.__dirty = true;\n }\n layer.__startIndex = i;\n if (!layer.incremental) {\n layer.__drawIndex = i;\n }\n else {\n layer.__drawIndex = -1;\n }\n updatePrevLayer(i);\n prevLayer = layer;\n }\n if ((el.__dirty & Element.REDARAW_BIT) && !el.__inHover) {\n layer.__dirty = true;\n if (layer.incremental && layer.__drawIndex < 0) {\n layer.__drawIndex = i;\n }\n }\n }\n updatePrevLayer(i);\n this.eachBuiltinLayer(function (layer, z) {\n if (!layer.__used && layer.getElementCount() > 0) {\n layer.__dirty = true;\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n }\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n };\n CanvasPainter.prototype.clear = function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n };\n CanvasPainter.prototype._clearLayer = function (layer) {\n layer.clear();\n };\n CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n util.each(this._layers, function (layer) {\n layer.setUnpainted();\n });\n };\n CanvasPainter.prototype.configLayer = function (zlevel, config) {\n if (config) {\n var layerConfig = this._layerConfig;\n if (!layerConfig[zlevel]) {\n layerConfig[zlevel] = config;\n }\n else {\n util.merge(layerConfig[zlevel], config, true);\n }\n for (var i = 0; i < this._zlevelList.length; i++) {\n var _zlevel = this._zlevelList[i];\n if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n var layer = this._layers[_zlevel];\n util.merge(layer, layerConfig[zlevel], true);\n }\n }\n }\n };\n CanvasPainter.prototype.delLayer = function (zlevel) {\n var layers = this._layers;\n var zlevelList = this._zlevelList;\n var layer = layers[zlevel];\n if (!layer) {\n return;\n }\n layer.dom.parentNode.removeChild(layer.dom);\n delete layers[zlevel];\n zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n };\n CanvasPainter.prototype.resize = function (width, height) {\n if (!this._domRoot.style) {\n if (width == null || height == null) {\n return;\n }\n this._width = width;\n this._height = height;\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n }\n else {\n var domRoot = this._domRoot;\n domRoot.style.display = 'none';\n var opts = this._opts;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = this._getSize(0);\n height = this._getSize(1);\n domRoot.style.display = '';\n if (this._width !== width || height !== this._height) {\n domRoot.style.width = width + 'px';\n domRoot.style.height = height + 'px';\n for (var id in this._layers) {\n if (this._layers.hasOwnProperty(id)) {\n this._layers[id].resize(width, height);\n }\n }\n this.refresh(true);\n }\n this._width = width;\n this._height = height;\n }\n return this;\n };\n CanvasPainter.prototype.clearLayer = function (zlevel) {\n var layer = this._layers[zlevel];\n if (layer) {\n layer.clear();\n }\n };\n CanvasPainter.prototype.dispose = function () {\n this.root.innerHTML = '';\n this.root =\n this.storage =\n this._domRoot =\n this._layers = null;\n };\n CanvasPainter.prototype.getRenderedCanvas = function (opts) {\n opts = opts || {};\n if (this._singleCanvas && !this._compositeManually) {\n return this._layers[CANVAS_ZLEVEL].dom;\n }\n var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n imageLayer.initContext();\n imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n var ctx = imageLayer.ctx;\n if (opts.pixelRatio <= this.dpr) {\n this.refresh();\n var width_1 = imageLayer.dom.width;\n var height_1 = imageLayer.dom.height;\n this.eachLayer(function (layer) {\n if (layer.__builtin__) {\n ctx.drawImage(layer.dom, 0, 0, width_1, height_1);\n }\n else if (layer.renderToCanvas) {\n ctx.save();\n layer.renderToCanvas(ctx);\n ctx.restore();\n }\n });\n }\n else {\n var scope = {\n inHover: false,\n viewWidth: this._width,\n viewHeight: this._height\n };\n var displayList = this.storage.getDisplayList(true);\n for (var i = 0, len = displayList.length; i < len; i++) {\n var el = displayList[i];\n brush(ctx, el, scope, i === len - 1);\n }\n }\n return imageLayer.dom;\n };\n CanvasPainter.prototype.getWidth = function () {\n return this._width;\n };\n CanvasPainter.prototype.getHeight = function () {\n return this._height;\n };\n CanvasPainter.prototype._getSize = function (whIdx) {\n var opts = this._opts;\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n var root = this.root;\n var stl = document.defaultView.getComputedStyle(root);\n return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\n - (parseInt10(stl[plt]) || 0)\n - (parseInt10(stl[prb]) || 0)) | 0;\n };\n CanvasPainter.prototype.pathToImage = function (path, dpr) {\n dpr = dpr || this.dpr;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var rect = path.getBoundingRect();\n var style = path.style;\n var shadowBlurSize = style.shadowBlur * dpr;\n var shadowOffsetX = style.shadowOffsetX * dpr;\n var shadowOffsetY = style.shadowOffsetY * dpr;\n var lineWidth = path.hasStroke() ? style.lineWidth : 0;\n var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\n var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\n var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\n var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\n var width = rect.width + leftMargin + rightMargin;\n var height = rect.height + topMargin + bottomMargin;\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n ctx.scale(dpr, dpr);\n ctx.clearRect(0, 0, width, height);\n ctx.dpr = dpr;\n var pathTransform = {\n x: path.x,\n y: path.y,\n scaleX: path.scaleX,\n scaleY: path.scaleY,\n rotation: path.rotation,\n originX: path.originX,\n originY: path.originY\n };\n path.x = leftMargin - rect.x;\n path.y = topMargin - rect.y;\n path.rotation = 0;\n path.scaleX = 1;\n path.scaleY = 1;\n path.updateTransform();\n if (path) {\n brush(ctx, path, {\n inHover: false,\n viewWidth: this._width,\n viewHeight: this._height\n }, true);\n }\n var imgShape = new ZRImage({\n style: {\n x: 0,\n y: 0,\n image: canvas\n }\n });\n util.extend(path, pathTransform);\n return imgShape;\n };\n return CanvasPainter;\n}());\nexport default CanvasPainter;\n;\n"],"sourceRoot":""}