{"ast":null,"code":"import \"core-js/modules/es.array.join.js\";\nimport \"core-js/modules/es.array.slice.js\";\nimport \"core-js/modules/es.array.splice.js\";\nimport { devicePixelRatio } from '../config.js';\nimport * as util from '../core/util.js';\nimport Layer from './Layer.js';\nimport requestAnimationFrame from '../animation/requestAnimationFrame.js';\nimport env from '../core/env.js';\nimport { brush, brushSingle } from './graphic.js';\nimport { REDRAW_BIT } from '../graphic/constants.js';\nimport { getSize } from './helper.js';\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\n\nfunction isLayerValid(layer) {\n if (!layer) {\n return false;\n }\n\n if (layer.__builtin__) {\n return true;\n }\n\n if (typeof layer.resize !== 'function' || typeof layer.refresh !== 'function') {\n return false;\n }\n\n return true;\n}\n\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div');\n domRoot.style.cssText = ['position:relative', 'width:' + width + 'px', 'height:' + height + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') + ';';\n return domRoot;\n}\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 || 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\n if (rootStyle) {\n util.disableUserSelect(root);\n root.innerHTML = '';\n }\n\n this.storage = storage;\n var zlevelList = this._zlevelList;\n this._prevDisplayList = [];\n var layers = this._layers;\n\n if (!singleCanvas) {\n this._width = getSize(root, 0, opts);\n this._height = getSize(root, 1, opts);\n var domRoot = this._domRoot = createRoot(this._width, this._height);\n root.appendChild(domRoot);\n } else {\n var rootCanvas = root;\n var width = rootCanvas.width;\n var height = rootCanvas.height;\n\n if (opts.width != null) {\n width = opts.width;\n }\n\n if (opts.height != null) {\n height = opts.height;\n }\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\n CanvasPainter.prototype.getType = function () {\n return 'canvas';\n };\n\n CanvasPainter.prototype.isSingleCanvas = function () {\n return this._singleCanvas;\n };\n\n CanvasPainter.prototype.getViewportRoot = function () {\n return this._domRoot;\n };\n\n CanvasPainter.prototype.getViewportRootOffset = function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\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\n this._paintList(list, prevList, paintAll, this._redrawId);\n\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n\n if (!layer.__builtin__ && layer.refresh) {\n var clearColor = i === 0 ? this._backgroundColor : null;\n layer.refresh(clearColor);\n }\n }\n\n if (this._opts.useDirtyRect) {\n this._prevDisplayList = list.slice();\n }\n\n return this;\n };\n\n CanvasPainter.prototype.refreshHover = function () {\n this._paintHoverList(this.storage.getDisplayList(false));\n };\n\n CanvasPainter.prototype._paintHoverList = function (list) {\n var len = list.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n\n if (!len) {\n return;\n }\n\n var scope = {\n inHover: true,\n viewWidth: this._width,\n viewHeight: this._height\n };\n var ctx;\n\n for (var i = 0; i < len; i++) {\n var el = list[i];\n\n if (el.__inHover) {\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n\n if (!ctx) {\n ctx = hoverLayer.ctx;\n ctx.save();\n }\n\n brush(ctx, el, scope, i === len - 1);\n }\n }\n\n if (ctx) {\n ctx.restore();\n }\n };\n\n CanvasPainter.prototype.getHoverLayer = function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n };\n\n CanvasPainter.prototype.paintOne = function (ctx, el) {\n brushSingle(ctx, el);\n };\n\n CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n\n paintAll = paintAll || false;\n\n this._updateLayerStatus(list);\n\n var _a = this._doPaintList(list, prevList, paintAll),\n finished = _a.finished,\n needsRefreshHover = _a.needsRefreshHover;\n\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n\n if (needsRefreshHover) {\n this._paintHoverList(list);\n }\n\n if (!finished) {\n var self_1 = this;\n requestAnimationFrame(function () {\n self_1._paintList(list, prevList, paintAll, redrawId);\n });\n } else {\n this.eachLayer(function (layer) {\n layer.afterBrush && layer.afterBrush();\n });\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\n CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\n var _this = this;\n\n var layerList = [];\n var useDirtyRect = this._opts.useDirtyRect;\n\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\n var zlevel = this._zlevelList[zi];\n var layer = this._layers[zlevel];\n\n if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {\n layerList.push(layer);\n }\n }\n\n var finished = true;\n var needsRefreshHover = false;\n\n var _loop_1 = function _loop_1(k) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var repaintRects = useDirtyRect && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\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] ? this_1._backgroundColor : null;\n\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor, repaintRects);\n } else if (start === layer.__startIndex) {\n var firstEl = list[start];\n\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor, repaintRects);\n }\n }\n\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n\n var i;\n\n var repaint = function repaint(repaintRect) {\n var scope = {\n inHover: false,\n allClipped: false,\n prevEl: null,\n viewWidth: _this._width,\n viewHeight: _this._height\n };\n\n for (i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n\n if (el.__inHover) {\n needsRefreshHover = true;\n }\n\n _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\n\n if (useTimer) {\n var dTime = Date.now() - startTime;\n\n if (dTime > 15) {\n break;\n }\n }\n }\n\n if (scope.prevElClipPaths) {\n ctx.restore();\n }\n };\n\n if (repaintRects) {\n if (repaintRects.length === 0) {\n i = layer.__endIndex;\n } else {\n var dpr = this_1.dpr;\n\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 } else {\n ctx.save();\n repaint();\n ctx.restore();\n }\n\n layer.__drawIndex = i;\n\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n };\n\n var this_1 = this;\n\n for (var k = 0; k < layerList.length; k++) {\n _loop_1(k);\n }\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\n return {\n finished: finished,\n needsRefreshHover: needsRefreshHover\n };\n };\n\n CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\n var ctx = currentLayer.ctx;\n\n if (useDirtyRect) {\n var paintRect = el.getPaintRect();\n\n if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\n brush(ctx, el, scope, isLast);\n el.setPrevPaintRect(paintRect);\n }\n } else {\n brush(ctx, el, scope, isLast);\n }\n };\n\n CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\n if (this._singleCanvas && !this._needsManuallyCompositing) {\n zlevel = CANVAS_ZLEVEL;\n }\n\n var layer = this._layers[zlevel];\n\n if (!layer) {\n layer = new Layer('zr_' + zlevel, this, this.dpr);\n layer.zlevel = zlevel;\n layer.__builtin__ = true;\n\n if (this._layerConfig[zlevel]) {\n util.merge(layer, this._layerConfig[zlevel], true);\n } else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n }\n\n if (virtual) {\n layer.virtual = virtual;\n }\n\n this.insertLayer(zlevel, layer);\n layer.initContext();\n }\n\n return layer;\n };\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\n if (layersMap[zlevel]) {\n if (process.env.NODE_ENV !== 'production') {\n util.logError('ZLevel ' + zlevel + ' has been used already');\n }\n\n return;\n }\n\n if (!isLayerValid(layer)) {\n if (process.env.NODE_ENV !== 'production') {\n util.logError('Layer of zlevel ' + zlevel + ' is not valid');\n }\n\n return;\n }\n\n if (len > 0 && zlevel > zlevelList[0]) {\n for (i = 0; i < len - 1; i++) {\n if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {\n break;\n }\n }\n\n prevLayer = layersMap[zlevelList[i]];\n }\n\n zlevelList.splice(i + 1, 0, zlevel);\n layersMap[zlevel] = layer;\n\n if (!layer.virtual) {\n if (prevLayer) {\n var prevDom = prevLayer.dom;\n\n if (prevDom.nextSibling) {\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n } else {\n domRoot.appendChild(layer.dom);\n }\n } else {\n if (domRoot.firstChild) {\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\n } else {\n domRoot.appendChild(layer.dom);\n }\n }\n }\n\n layer.__painter = this;\n };\n\n CanvasPainter.prototype.eachLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n\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\n CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n };\n\n CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n };\n\n CanvasPainter.prototype.getLayers = function () {\n return this._layers;\n };\n\n CanvasPainter.prototype._updateLayerStatus = function (list) {\n this.eachBuiltinLayer(function (layer, z) {\n layer.__dirty = layer.__used = false;\n });\n\n function updatePrevLayer(idx) {\n if (prevLayer) {\n if (prevLayer.__endIndex !== idx) {\n prevLayer.__dirty = true;\n }\n\n prevLayer.__endIndex = idx;\n }\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\n if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\n this._needsManuallyCompositing = true;\n break;\n }\n }\n }\n\n var prevLayer = null;\n var incrementalLayerCount = 0;\n var prevZlevel;\n var i;\n\n for (i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer = void 0;\n\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n }\n\n if (el.incremental) {\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n layer.incremental = true;\n incrementalLayerCount = 1;\n } else {\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n }\n\n if (!layer.__builtin__) {\n util.logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n }\n\n if (layer !== prevLayer) {\n layer.__used = true;\n\n if (layer.__startIndex !== i) {\n layer.__dirty = true;\n }\n\n layer.__startIndex = i;\n\n if (!layer.incremental) {\n layer.__drawIndex = i;\n } else {\n layer.__drawIndex = -1;\n }\n\n updatePrevLayer(i);\n prevLayer = layer;\n }\n\n if (el.__dirty & REDRAW_BIT && !el.__inHover) {\n layer.__dirty = true;\n\n if (layer.incremental && layer.__drawIndex < 0) {\n layer.__drawIndex = i;\n }\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\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n };\n\n CanvasPainter.prototype.clear = function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n };\n\n CanvasPainter.prototype._clearLayer = function (layer) {\n layer.clear();\n };\n\n CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n util.each(this._layers, function (layer) {\n layer.setUnpainted();\n });\n };\n\n CanvasPainter.prototype.configLayer = function (zlevel, config) {\n if (config) {\n var layerConfig = this._layerConfig;\n\n if (!layerConfig[zlevel]) {\n layerConfig[zlevel] = config;\n } else {\n util.merge(layerConfig[zlevel], config, true);\n }\n\n for (var i = 0; i < this._zlevelList.length; i++) {\n var _zlevel = this._zlevelList[i];\n\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\n CanvasPainter.prototype.delLayer = function (zlevel) {\n var layers = this._layers;\n var zlevelList = this._zlevelList;\n var layer = layers[zlevel];\n\n if (!layer) {\n return;\n }\n\n layer.dom.parentNode.removeChild(layer.dom);\n delete layers[zlevel];\n zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n };\n\n CanvasPainter.prototype.resize = function (width, height) {\n if (!this._domRoot.style) {\n if (width == null || height == null) {\n return;\n }\n\n this._width = width;\n this._height = height;\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n } else {\n var domRoot = this._domRoot;\n domRoot.style.display = 'none';\n var opts = this._opts;\n var root = this.root;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = getSize(root, 0, opts);\n height = getSize(root, 1, opts);\n domRoot.style.display = '';\n\n if (this._width !== width || height !== this._height) {\n domRoot.style.width = width + 'px';\n domRoot.style.height = height + 'px';\n\n for (var id in this._layers) {\n if (this._layers.hasOwnProperty(id)) {\n this._layers[id].resize(width, height);\n }\n }\n\n this.refresh(true);\n }\n\n this._width = width;\n this._height = height;\n }\n\n return this;\n };\n\n CanvasPainter.prototype.clearLayer = function (zlevel) {\n var layer = this._layers[zlevel];\n\n if (layer) {\n layer.clear();\n }\n };\n\n CanvasPainter.prototype.dispose = function () {\n this.root.innerHTML = '';\n this.root = this.storage = this._domRoot = this._layers = null;\n };\n\n CanvasPainter.prototype.getRenderedCanvas = function (opts) {\n opts = opts || {};\n\n if (this._singleCanvas && !this._compositeManually) {\n return this._layers[CANVAS_ZLEVEL].dom;\n }\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\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 } else if (layer.renderToCanvas) {\n ctx.save();\n layer.renderToCanvas(ctx);\n ctx.restore();\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\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\n return imageLayer.dom;\n };\n\n CanvasPainter.prototype.getWidth = function () {\n return this._width;\n };\n\n CanvasPainter.prototype.getHeight = function () {\n return this._height;\n };\n\n return CanvasPainter;\n}();\n\nexport default CanvasPainter;\n;","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src啊/ElectronicMallVue/node_modules/zrender/lib/canvas/Painter.js"],"names":["devicePixelRatio","util","Layer","requestAnimationFrame","env","brush","brushSingle","REDRAW_BIT","getSize","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","isLayerValid","layer","__builtin__","resize","refresh","createRoot","width","height","domRoot","document","createElement","style","cssText","join","CanvasPainter","root","storage","opts","id","type","_zlevelList","_prevDisplayList","_layers","_layerConfig","_needsManuallyCompositing","singleCanvas","nodeName","toUpperCase","_opts","extend","dpr","_singleCanvas","rootStyle","disableUserSelect","innerHTML","zlevelList","layers","_width","_height","_domRoot","appendChild","rootCanvas","mainLayer","initContext","zlevel","push","prototype","getType","isSingleCanvas","getViewportRoot","getViewportRootOffset","viewportRoot","offsetLeft","offsetTop","paintAll","list","getDisplayList","prevList","_redrawId","Math","random","_paintList","i","length","z","clearColor","_backgroundColor","useDirtyRect","slice","refreshHover","_paintHoverList","len","hoverLayer","_hoverlayer","clear","scope","inHover","viewWidth","viewHeight","ctx","el","__inHover","getLayer","save","restore","getHoverLayer","paintOne","redrawId","_updateLayerStatus","_a","_doPaintList","finished","needsRefreshHover","_compositeManually","self_1","eachLayer","afterBrush","clearRect","eachBuiltinLayer","virtual","drawImage","dom","_this","layerList","zi","__dirty","_loop_1","k","repaintRects","createRepaintRects","this_1","start","__startIndex","__drawIndex","useTimer","incremental","Date","now","startTime","__endIndex","firstEl","notClear","console","error","repaint","repaintRect","allClipped","prevEl","_doPaintEl","dTime","prevElClipPaths","r","rect","beginPath","x","y","clip","wxa","each","draw","currentLayer","isLast","paintRect","getPaintRect","intersect","setPrevPaintRect","merge","insertLayer","layersMap","prevLayer","process","NODE_ENV","logError","splice","prevDom","nextSibling","insertBefore","firstChild","__painter","cb","context","call","eachOtherLayer","getLayers","__used","updatePrevLayer","idx","i_1","incrementalLayerCount","prevZlevel","getElementCount","_clearLayer","setBackgroundColor","backgroundColor","setUnpainted","configLayer","config","layerConfig","_zlevel","delLayer","parentNode","removeChild","indexOf","display","hasOwnProperty","clearLayer","dispose","getRenderedCanvas","imageLayer","pixelRatio","width_1","height_1","renderToCanvas","displayList","getWidth","getHeight"],"mappings":"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","sourcesContent":["import { devicePixelRatio } from '../config.js';\nimport * as util from '../core/util.js';\nimport Layer from './Layer.js';\nimport requestAnimationFrame from '../animation/requestAnimationFrame.js';\nimport env from '../core/env.js';\nimport { brush, brushSingle } from './graphic.js';\nimport { REDRAW_BIT } from '../graphic/constants.js';\nimport { getSize } from './helper.js';\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\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 util.disableUserSelect(root);\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 = getSize(root, 0, opts);\n this._height = getSize(root, 1, opts);\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 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 if (process.env.NODE_ENV !== 'production') {\n util.logError('ZLevel ' + zlevel + ' has been used already');\n }\n return;\n }\n if (!isLayerValid(layer)) {\n if (process.env.NODE_ENV !== 'production') {\n util.logError('Layer of zlevel ' + zlevel + ' is not valid');\n }\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 & REDRAW_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 var root = this.root;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = getSize(root, 0, opts);\n height = getSize(root, 1, opts);\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 return CanvasPainter;\n}());\nexport default CanvasPainter;\n;\n"]},"metadata":{},"sourceType":"module"}