{"version":3,"file":"js/chunk-vendors-5add3539-legacy.e106515d.js","mappings":"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","sources":["webpack://i4proportal/./node_modules/zrender/lib/Element.js","webpack://i4proportal/./node_modules/zrender/lib/Handler.js","webpack://i4proportal/./node_modules/zrender/lib/Layer.js","webpack://i4proportal/./node_modules/zrender/lib/Painter.js","webpack://i4proportal/./node_modules/zrender/lib/Storage.js"],"sourcesContent":["var guid = require(\"./core/guid\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar Transformable = require(\"./mixin/Transformable\");\n\nvar Animatable = require(\"./mixin/Animatable\");\n\nvar zrUtil = require(\"./core/util\");\n\n/**\n * @alias module:zrender/Element\n * @constructor\n * @extends {module:zrender/mixin/Animatable}\n * @extends {module:zrender/mixin/Transformable}\n * @extends {module:zrender/mixin/Eventful}\n */\nvar Element = function (opts) {\n // jshint ignore:line\n Transformable.call(this, opts);\n Eventful.call(this, opts);\n Animatable.call(this, opts);\n /**\n * 画布元素ID\n * @type {string}\n */\n\n this.id = opts.id || guid();\n};\n\nElement.prototype = {\n /**\n * 元素类型\n * Element type\n * @type {string}\n */\n type: 'element',\n\n /**\n * 元素名字\n * Element name\n * @type {string}\n */\n name: '',\n\n /**\n * ZRender 实例对象,会在 element 添加到 zrender 实例中后自动赋值\n * ZRender instance will be assigned when element is associated with zrender\n * @name module:/zrender/Element#__zr\n * @type {module:zrender/ZRender}\n */\n __zr: null,\n\n /**\n * 图形是否忽略,为true时忽略图形的绘制以及事件触发\n * If ignore drawing and events of the element object\n * @name module:/zrender/Element#ignore\n * @type {boolean}\n * @default false\n */\n ignore: false,\n\n /**\n * 用于裁剪的路径(shape),所有 Group 内的路径在绘制时都会被这个路径裁剪\n * 该路径会继承被裁减对象的变换\n * @type {module:zrender/graphic/Path}\n * @see http://www.w3.org/TR/2dcontext/#clipping-region\n * @readOnly\n */\n clipPath: null,\n\n /**\n * 是否是 Group\n * @type {boolean}\n */\n isGroup: false,\n\n /**\n * Drift element\n * @param {number} dx dx on the global space\n * @param {number} dy dy on the global space\n */\n drift: function (dx, dy) {\n switch (this.draggable) {\n case 'horizontal':\n dy = 0;\n break;\n\n case 'vertical':\n dx = 0;\n break;\n }\n\n var m = this.transform;\n\n if (!m) {\n m = this.transform = [1, 0, 0, 1, 0, 0];\n }\n\n m[4] += dx;\n m[5] += dy;\n this.decomposeTransform();\n this.dirty(false);\n },\n\n /**\n * Hook before update\n */\n beforeUpdate: function () {},\n\n /**\n * Hook after update\n */\n afterUpdate: function () {},\n\n /**\n * Update each frame\n */\n update: function () {\n this.updateTransform();\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {},\n\n /**\n * @protected\n */\n attrKV: function (key, value) {\n if (key === 'position' || key === 'scale' || key === 'origin') {\n // Copy the array\n if (value) {\n var target = this[key];\n\n if (!target) {\n target = this[key] = [];\n }\n\n target[0] = value[0];\n target[1] = value[1];\n }\n } else {\n this[key] = value;\n }\n },\n\n /**\n * Hide the element\n */\n hide: function () {\n this.ignore = true;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * Show the element\n */\n show: function () {\n this.ignore = false;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * @param {string|Object} key\n * @param {*} value\n */\n attr: function (key, value) {\n if (typeof key === 'string') {\n this.attrKV(key, value);\n } else if (zrUtil.isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.attrKV(name, key[name]);\n }\n }\n }\n\n this.dirty(false);\n return this;\n },\n\n /**\n * @param {module:zrender/graphic/Path} clipPath\n */\n setClipPath: function (clipPath) {\n var zr = this.__zr;\n\n if (zr) {\n clipPath.addSelfToZr(zr);\n } // Remove previous clip path\n\n\n if (this.clipPath && this.clipPath !== clipPath) {\n this.removeClipPath();\n }\n\n this.clipPath = clipPath;\n clipPath.__zr = zr;\n clipPath.__clipTarget = this;\n this.dirty(false);\n },\n\n /**\n */\n removeClipPath: function () {\n var clipPath = this.clipPath;\n\n if (clipPath) {\n if (clipPath.__zr) {\n clipPath.removeSelfFromZr(clipPath.__zr);\n }\n\n clipPath.__zr = null;\n clipPath.__clipTarget = null;\n this.clipPath = null;\n this.dirty(false);\n }\n },\n\n /**\n * Add self from zrender instance.\n * Not recursively because it will be invoked when element added to storage.\n * @param {module:zrender/ZRender} zr\n */\n addSelfToZr: function (zr) {\n this.__zr = zr; // 添加动画\n\n var animators = this.animators;\n\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.addAnimator(animators[i]);\n }\n }\n\n if (this.clipPath) {\n this.clipPath.addSelfToZr(zr);\n }\n },\n\n /**\n * Remove self from zrender instance.\n * Not recursively because it will be invoked when element added to storage.\n * @param {module:zrender/ZRender} zr\n */\n removeSelfFromZr: function (zr) {\n this.__zr = null; // 移除动画\n\n var animators = this.animators;\n\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.removeAnimator(animators[i]);\n }\n }\n\n if (this.clipPath) {\n this.clipPath.removeSelfFromZr(zr);\n }\n }\n};\nzrUtil.mixin(Element, Animatable);\nzrUtil.mixin(Element, Transformable);\nzrUtil.mixin(Element, Eventful);\nvar _default = Element;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar vec2 = require(\"./core/vector\");\n\nvar Draggable = require(\"./mixin/Draggable\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar eventTool = require(\"./core/event\");\n\nvar GestureMgr = require(\"./core/GestureMgr\");\n\n/**\n * [The interface between `Handler` and `HandlerProxy`]:\n *\n * The default `HandlerProxy` only support the common standard web environment\n * (e.g., standalone browser, headless browser, embed browser in mobild APP, ...).\n * But `HandlerProxy` can be replaced to support more non-standard environment\n * (e.g., mini app), or to support more feature that the default `HandlerProxy`\n * not provided (like echarts-gl did).\n * So the interface between `Handler` and `HandlerProxy` should be stable. Do not\n * make break changes util inevitable. The interface include the public methods\n * of `Handler` and the events listed in `handlerNames` below, by which `HandlerProxy`\n * drives `Handler`.\n */\n\n/**\n * [Drag outside]:\n *\n * That is, triggering `mousemove` and `mouseup` event when the pointer is out of the\n * zrender area when dragging. That is important for the improvement of the user experience\n * when dragging something near the boundary without being terminated unexpectedly.\n *\n * We originally consider to introduce new events like `pagemovemove` and `pagemouseup`\n * to resolve this issue. But some drawbacks of it is described in\n * https://github.com/ecomfe/zrender/pull/536#issuecomment-560286899\n *\n * Instead, we referenced the specifications:\n * https://www.w3.org/TR/touch-events/#the-touchmove-event\n * https://www.w3.org/TR/2014/WD-DOM-Level-3-Events-20140925/#event-type-mousemove\n * where the the mousemove/touchmove can be continue to fire if the user began a drag\n * operation and the pointer has left the boundary. (for the mouse event, browsers\n * only do it on `document` and when the pointer has left the boundary of the browser.)\n *\n * So the default `HandlerProxy` supports this feature similarly: if it is in the dragging\n * state (see `pointerCapture` in `HandlerProxy`), the `mousemove` and `mouseup` continue\n * to fire until release the pointer. That is implemented by listen to those event on\n * `document`.\n * If we implement some other `HandlerProxy` only for touch device, that would be easier.\n * The touch event support this feature by default.\n *\n * Note:\n * There might be some cases that the mouse event can not be\n * received on `document`. For example,\n * (A) `useCapture` is not supported and some user defined event listeners on the ancestor\n * of zr dom throw Error .\n * (B) `useCapture` is not supported Some user defined event listeners on the ancestor of\n * zr dom call `stopPropagation`.\n * In these cases, the `mousemove` event might be keep triggered event\n * if the mouse is released. We try to reduce the side-effect in those cases.\n * That is, do nothing (especially, `findHover`) in those cases. See `isOutsideBoundary`.\n *\n * Note:\n * If `HandlerProxy` listens to `document` with `useCapture`, `HandlerProxy` needs to\n * make sure `stopPropagation` and `preventDefault` doing nothing if and only if the event\n * target is not zrender dom. Becuase it is dangerous to enable users to call them in\n * `document` capture phase to prevent the propagation to any listener of the webpage.\n * But they are needed to work when the pointer inside the zrender dom.\n */\nvar SILENT = 'silent';\n\nfunction makeEventPacket(eveType, targetInfo, event) {\n return {\n type: eveType,\n event: event,\n // target can only be an element that is not silent.\n target: targetInfo.target,\n // topTarget can be a silent element.\n topTarget: targetInfo.topTarget,\n cancelBubble: false,\n offsetX: event.zrX,\n offsetY: event.zrY,\n gestureEvent: event.gestureEvent,\n pinchX: event.pinchX,\n pinchY: event.pinchY,\n pinchScale: event.pinchScale,\n wheelDelta: event.zrDelta,\n zrByTouch: event.zrByTouch,\n which: event.which,\n stop: stopEvent\n };\n}\n\nfunction stopEvent() {\n eventTool.stop(this.event);\n}\n\nfunction EmptyProxy() {}\n\nEmptyProxy.prototype.dispose = function () {};\n\nvar handlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n/**\n * @alias module:zrender/Handler\n * @constructor\n * @extends module:zrender/mixin/Eventful\n * @param {module:zrender/Storage} storage Storage instance.\n * @param {module:zrender/Painter} painter Painter instance.\n * @param {module:zrender/dom/HandlerProxy} proxy HandlerProxy instance.\n * @param {HTMLElement} painterRoot painter.root (not painter.getViewportRoot()).\n */\n\nvar Handler = function (storage, painter, proxy, painterRoot) {\n Eventful.call(this);\n this.storage = storage;\n this.painter = painter;\n this.painterRoot = painterRoot;\n proxy = proxy || new EmptyProxy();\n /**\n * Proxy of event. can be Dom, WebGLSurface, etc.\n */\n\n this.proxy = null;\n /**\n * {target, topTarget, x, y}\n * @private\n * @type {Object}\n */\n\n this._hovered = {};\n /**\n * @private\n * @type {Date}\n */\n\n this._lastTouchMoment;\n /**\n * @private\n * @type {number}\n */\n\n this._lastX;\n /**\n * @private\n * @type {number}\n */\n\n this._lastY;\n /**\n * @private\n * @type {module:zrender/core/GestureMgr}\n */\n\n this._gestureMgr;\n Draggable.call(this);\n this.setHandlerProxy(proxy);\n};\n\nHandler.prototype = {\n constructor: Handler,\n setHandlerProxy: function (proxy) {\n if (this.proxy) {\n this.proxy.dispose();\n }\n\n if (proxy) {\n util.each(handlerNames, function (name) {\n proxy.on && proxy.on(name, this[name], this);\n }, this); // Attach handler\n\n proxy.handler = this;\n }\n\n this.proxy = proxy;\n },\n mousemove: function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var lastHovered = this._hovered;\n var lastHoveredTarget = lastHovered.target; // If lastHoveredTarget is removed from zr (detected by '__zr') by some API call\n // (like 'setOption' or 'dispatchAction') in event handlers, we should find\n // lastHovered again here. Otherwise 'mouseout' can not be triggered normally.\n // See #6198.\n\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n lastHoveredTarget = lastHovered.target;\n }\n\n var hovered = this._hovered = isOutside ? {\n x: x,\n y: y\n } : this.findHover(x, y);\n var hoveredTarget = hovered.target;\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); // Mouse out on previous hovered element\n\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(lastHovered, 'mouseout', event);\n } // Mouse moving on one element\n\n\n this.dispatchToElement(hovered, 'mousemove', event); // Mouse over on a new element\n\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(hovered, 'mouseover', event);\n }\n },\n mouseout: function (event) {\n var eventControl = event.zrEventControl;\n var zrIsToLocalDOM = event.zrIsToLocalDOM;\n\n if (eventControl !== 'only_globalout') {\n this.dispatchToElement(this._hovered, 'mouseout', event);\n }\n\n if (eventControl !== 'no_globalout') {\n // FIXME: if the pointer moving from the extra doms to realy \"outside\",\n // the `globalout` should have been triggered. But currently not.\n !zrIsToLocalDOM && this.trigger('globalout', {\n type: 'globalout',\n event: event\n });\n }\n },\n\n /**\n * Resize\n */\n resize: function (event) {\n this._hovered = {};\n },\n\n /**\n * Dispatch event\n * @param {string} eventName\n * @param {event=} eventArgs\n */\n dispatch: function (eventName, eventArgs) {\n var handler = this[eventName];\n handler && handler.call(this, eventArgs);\n },\n\n /**\n * Dispose\n */\n dispose: function () {\n this.proxy.dispose();\n this.storage = this.proxy = this.painter = null;\n },\n\n /**\n * 设置默认的cursor style\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(cursorStyle);\n },\n\n /**\n * 事件分发代理\n *\n * @private\n * @param {Object} targetInfo {target, topTarget} 目标图形元素\n * @param {string} eventName 事件名称\n * @param {Object} event 事件对象\n */\n dispatchToElement: function (targetInfo, eventName, event) {\n targetInfo = targetInfo || {};\n var el = targetInfo.target;\n\n if (el && el.silent) {\n return;\n }\n\n var eventHandler = 'on' + eventName;\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\n\n while (el) {\n el[eventHandler] && (eventPacket.cancelBubble = el[eventHandler].call(el, eventPacket));\n el.trigger(eventName, eventPacket);\n el = el.parent;\n\n if (eventPacket.cancelBubble) {\n break;\n }\n }\n\n if (!eventPacket.cancelBubble) {\n // 冒泡到顶级 zrender 对象\n this.trigger(eventName, eventPacket); // 分发事件到用户自定义层\n // 用户有可能在全局 click 事件中 dispose,所以需要判断下 painter 是否存在\n\n this.painter && this.painter.eachOtherLayer(function (layer) {\n if (typeof layer[eventHandler] === 'function') {\n layer[eventHandler].call(layer, eventPacket);\n }\n\n if (layer.trigger) {\n layer.trigger(eventName, eventPacket);\n }\n });\n }\n },\n\n /**\n * @private\n * @param {number} x\n * @param {number} y\n * @param {module:zrender/graphic/Displayable} exclude\n * @return {model:zrender/Element}\n * @method\n */\n findHover: function (x, y, exclude) {\n var list = this.storage.getDisplayList();\n var out = {\n x: x,\n y: y\n };\n\n for (var i = list.length - 1; i >= 0; i--) {\n var hoverCheckResult;\n\n if (list[i] !== exclude // getDisplayList may include ignored item in VML mode\n && !list[i].ignore && (hoverCheckResult = isHover(list[i], x, y))) {\n !out.topTarget && (out.topTarget = list[i]);\n\n if (hoverCheckResult !== SILENT) {\n out.target = list[i];\n break;\n }\n }\n }\n\n return out;\n },\n processGesture: function (event, stage) {\n if (!this._gestureMgr) {\n this._gestureMgr = new GestureMgr();\n }\n\n var gestureMgr = this._gestureMgr;\n stage === 'start' && gestureMgr.clear();\n var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n stage === 'end' && gestureMgr.clear(); // Do not do any preventDefault here. Upper application do that if necessary.\n\n if (gestureInfo) {\n var type = gestureInfo.type;\n event.gestureEvent = type;\n this.dispatchToElement({\n target: gestureInfo.target\n }, type, gestureInfo.event);\n }\n }\n}; // Common handlers\n\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n Handler.prototype[name] = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var hovered;\n var hoveredTarget;\n\n if (name !== 'mouseup' || !isOutside) {\n // Find hover again to avoid click event is dispatched manually. Or click is triggered without mouseover\n hovered = this.findHover(x, y);\n hoveredTarget = hovered.target;\n }\n\n if (name === 'mousedown') {\n this._downEl = hoveredTarget;\n this._downPoint = [event.zrX, event.zrY]; // In case click triggered before mouseup\n\n this._upEl = hoveredTarget;\n } else if (name === 'mouseup') {\n this._upEl = hoveredTarget;\n } else if (name === 'click') {\n if (this._downEl !== this._upEl // Original click event is triggered on the whole canvas element,\n // including the case that `mousedown` - `mousemove` - `mouseup`,\n // which should be filtered, otherwise it will bring trouble to\n // pan and zoom.\n || !this._downPoint // Arbitrary value\n || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n return;\n }\n\n this._downPoint = null;\n }\n\n this.dispatchToElement(hovered, name, event);\n };\n});\n\nfunction isHover(displayable, x, y) {\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n var el = displayable;\n var isSilent;\n\n while (el) {\n // If clipped by ancestor.\n // FIXME: If clipPath has neither stroke nor fill,\n // el.clipPath.contain(x, y) will always return false.\n if (el.clipPath && !el.clipPath.contain(x, y)) {\n return false;\n }\n\n if (el.silent) {\n isSilent = true;\n }\n\n el = el.parent;\n }\n\n return isSilent ? SILENT : true;\n }\n\n return false;\n}\n/**\n * See [Drag outside].\n */\n\n\nfunction isOutsideBoundary(handlerInstance, x, y) {\n var painter = handlerInstance.painter;\n return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\n\nutil.mixin(Handler, Eventful);\nutil.mixin(Handler, Draggable);\nvar _default = Handler;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar Style = require(\"./graphic/Style\");\n\nvar Pattern = require(\"./graphic/Pattern\");\n\n/**\n * @module zrender/Layer\n * @author pissang(https://www.github.com/pissang)\n */\nfunction returnFalse() {\n return false;\n}\n/**\n * 创建dom\n *\n * @inner\n * @param {string} id dom id 待用\n * @param {Painter} painter painter instance\n * @param {number} number\n */\n\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\n if (newDomStyle) {\n // In node or some other non-browser environment\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\n newDom.width = width * dpr;\n newDom.height = height * dpr;\n return newDom;\n}\n/**\n * @alias module:zrender/Layer\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @param {string} id\n * @param {module:zrender/Painter} painter\n * @param {number} [dpr]\n */\n\n\nvar Layer = function (id, painter, dpr) {\n var dom;\n dpr = dpr || devicePixelRatio;\n\n if (typeof id === 'string') {\n dom = createDom(id, painter, dpr);\n } // Not using isDom because in node it will return false\n else if (util.isObject(id)) {\n dom = id;\n id = dom.id;\n }\n\n this.id = id;\n this.dom = dom;\n var domStyle = dom.style;\n\n if (domStyle) {\n // Not in node\n dom.onselectstart = returnFalse; // 避免页面选中的尴尬\n\n domStyle['-webkit-user-select'] = 'none';\n domStyle['user-select'] = 'none';\n domStyle['-webkit-touch-callout'] = 'none';\n domStyle['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)';\n domStyle['padding'] = 0; // eslint-disable-line dot-notation\n\n domStyle['margin'] = 0; // eslint-disable-line dot-notation\n\n domStyle['border-width'] = 0;\n }\n\n this.domBack = null;\n this.ctxBack = null;\n this.painter = painter;\n this.config = null; // Configs\n\n /**\n * 每次清空画布的颜色\n * @type {string}\n * @default 0\n */\n\n this.clearColor = 0;\n /**\n * 是否开启动态模糊\n * @type {boolean}\n * @default false\n */\n\n this.motionBlur = false;\n /**\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n * @type {number}\n * @default 0.7\n */\n\n this.lastFrameAlpha = 0.7;\n /**\n * Layer dpr\n * @type {number}\n */\n\n this.dpr = dpr;\n};\n\nLayer.prototype = {\n constructor: Layer,\n __dirty: true,\n __used: false,\n __drawIndex: 0,\n __startIndex: 0,\n __endIndex: 0,\n incremental: false,\n getElementCount: function () {\n return this.__endIndex - this.__startIndex;\n },\n initContext: function () {\n this.ctx = this.dom.getContext('2d');\n this.ctx.dpr = this.dpr;\n },\n 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\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n },\n\n /**\n * @param {number} width\n * @param {number} height\n */\n 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\n if (domStyle) {\n domStyle.width = width + 'px';\n domStyle.height = height + 'px';\n }\n\n dom.width = width * dpr;\n dom.height = height * dpr;\n\n if (domBack) {\n domBack.width = width * dpr;\n domBack.height = height * dpr;\n\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n }\n },\n\n /**\n * 清空该层画布\n * @param {boolean} [clearAll]=false Clear all with out motion blur\n * @param {Color} [clearColor]\n */\n clear: function (clearAll, clearColor) {\n var dom = this.dom;\n var ctx = this.ctx;\n var width = dom.width;\n var height = dom.height;\n var clearColor = clearColor || this.clearColor;\n var haveMotionBLur = this.motionBlur && !clearAll;\n var lastFrameAlpha = this.lastFrameAlpha;\n var dpr = this.dpr;\n\n if (haveMotionBLur) {\n if (!this.domBack) {\n this.createBackBuffer();\n }\n\n this.ctxBack.globalCompositeOperation = 'copy';\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n }\n\n ctx.clearRect(0, 0, width, height);\n\n if (clearColor && clearColor !== 'transparent') {\n var clearColorGradientOrPattern; // Gradient\n\n if (clearColor.colorStops) {\n // Cache canvas gradient\n clearColorGradientOrPattern = clearColor.__canvasGradient || Style.getGradient(ctx, clearColor, {\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n clearColor.__canvasGradient = clearColorGradientOrPattern;\n } // Pattern\n else if (clearColor.image) {\n clearColorGradientOrPattern = Pattern.prototype.getCanvasPattern.call(clearColor, ctx);\n }\n\n ctx.save();\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n }\n\n if (haveMotionBLur) {\n var domBack = this.domBack;\n ctx.save();\n ctx.globalAlpha = lastFrameAlpha;\n ctx.drawImage(domBack, 0, 0, width, height);\n ctx.restore();\n }\n }\n};\nvar _default = Layer;\nmodule.exports = _default;","var _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar util = require(\"./core/util\");\n\nvar logError = require(\"./core/log\");\n\nvar BoundingRect = require(\"./core/BoundingRect\");\n\nvar timsort = require(\"./core/timsort\");\n\nvar Layer = require(\"./Layer\");\n\nvar requestAnimationFrame = require(\"./animation/requestAnimationFrame\");\n\nvar Image = require(\"./graphic/Image\");\n\nvar env = require(\"./core/env\");\n\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\n\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\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\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\n\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\n\nfunction isClipPathChanged(clipPaths, prevClipPaths) {\n // displayable.__clipPaths can only be `null`/`undefined` or an non-empty array.\n if (clipPaths === prevClipPaths) {\n return false;\n }\n\n if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {\n return true;\n }\n\n for (var i = 0; i < clipPaths.length; i++) {\n if (clipPaths[i] !== prevClipPaths[i]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction doClip(clipPaths, ctx) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n clipPath.setTransform(ctx);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip(); // Transform back\n\n clipPath.restoreTransform(ctx);\n }\n}\n\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div'); // domRoot.onselectstart = returnFalse; // Avoid page selected\n\n domRoot.style.cssText = ['position:relative', // IOS13 safari probably has a compositing bug (z order of the canvas and the consequent\n // dom does not act as expected) when some of the parent dom has\n // `-webkit-overflow-scrolling: touch;` and the webpage is longer than one screen and\n // the canvas is not at the top part of the page.\n // Check `https://bugs.webkit.org/show_bug.cgi?id=203681` for more details. We remove\n // this `overflow:hidden` to avoid the bug.\n // 'overflow:hidden',\n 'width:' + width + 'px', 'height:' + height + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') + ';';\n return domRoot;\n}\n/**\n * @alias module:zrender/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar Painter = function (root, storage, opts) {\n this.type = 'canvas'; // In node environment using node-canvas\n\n var singleCanvas = !root.nodeName // In node ?\n || root.nodeName.toUpperCase() === 'CANVAS';\n this._opts = opts = util.extend({}, opts || {});\n /**\n * @type {number}\n */\n\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\n /**\n * @type {boolean}\n * @private\n */\n\n this._singleCanvas = singleCanvas;\n /**\n * 绘图容器\n * @type {HTMLElement}\n */\n\n this.root = root;\n var rootStyle = root.style;\n\n if (rootStyle) {\n rootStyle['-webkit-tap-highlight-color'] = 'transparent';\n rootStyle['-webkit-user-select'] = rootStyle['user-select'] = rootStyle['-webkit-touch-callout'] = 'none';\n root.innerHTML = '';\n }\n /**\n * @type {module:zrender/Storage}\n */\n\n\n this.storage = storage;\n /**\n * @type {Array.}\n * @private\n */\n\n var zlevelList = this._zlevelList = [];\n /**\n * @type {Object.}\n * @private\n */\n\n var layers = this._layers = {};\n /**\n * @type {Object.}\n * @private\n */\n\n this._layerConfig = {};\n /**\n * zrender will do compositing when root is a canvas and have multiple zlevels.\n */\n\n this._needsManuallyCompositing = false;\n\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 } else {\n var width = root.width;\n var height = root.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; // Use canvas width and height directly\n\n root.width = width * this.dpr;\n root.height = height * this.dpr;\n this._width = width;\n this._height = height; // Create layer if only one given canvas\n // Device can be specified to create a high dpi image.\n\n var mainLayer = new Layer(root, this, this.dpr);\n mainLayer.__builtin__ = true;\n mainLayer.initContext(); // FIXME Use canvas width and height\n // mainLayer.resize(width, height);\n\n layers[CANVAS_ZLEVEL] = mainLayer;\n mainLayer.zlevel = CANVAS_ZLEVEL; // Not use common zlevel.\n\n zlevelList.push(CANVAS_ZLEVEL);\n this._domRoot = root;\n }\n /**\n * @type {module:zrender/Layer}\n * @private\n */\n\n\n this._hoverlayer = null;\n this._hoverElements = [];\n};\n\nPainter.prototype = {\n constructor: Painter,\n getType: function () {\n return 'canvas';\n },\n\n /**\n * If painter use a single canvas\n * @return {boolean}\n */\n isSingleCanvas: function () {\n return this._singleCanvas;\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._domRoot;\n },\n 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 /**\n * 刷新\n * @param {boolean} [paintAll=false] 强制绘制所有displayable\n */\n refresh: function (paintAll) {\n var list = this.storage.getDisplayList(true);\n var zlevelList = this._zlevelList;\n this._redrawId = Math.random();\n\n this._paintList(list, paintAll, this._redrawId); // Paint custum layers\n\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 this.refreshHover();\n return this;\n },\n addHover: function (el, hoverStyle) {\n if (el.__hoverMir) {\n return;\n }\n\n var elMirror = new el.constructor({\n style: el.style,\n shape: el.shape,\n z: el.z,\n z2: el.z2,\n silent: el.silent\n });\n elMirror.__from = el;\n el.__hoverMir = elMirror;\n hoverStyle && elMirror.setStyle(hoverStyle);\n\n this._hoverElements.push(elMirror);\n\n return elMirror;\n },\n removeHover: function (el) {\n var elMirror = el.__hoverMir;\n var hoverElements = this._hoverElements;\n var idx = util.indexOf(hoverElements, elMirror);\n\n if (idx >= 0) {\n hoverElements.splice(idx, 1);\n }\n\n el.__hoverMir = null;\n },\n clearHover: function (el) {\n var hoverElements = this._hoverElements;\n\n for (var i = 0; i < hoverElements.length; i++) {\n var from = hoverElements[i].__from;\n\n if (from) {\n from.__hoverMir = null;\n }\n }\n\n hoverElements.length = 0;\n },\n refreshHover: function () {\n var hoverElements = this._hoverElements;\n var len = hoverElements.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n\n if (!len) {\n return;\n }\n\n timsort(hoverElements, this.storage.displayableSortFunc); // Use a extream large zlevel\n // FIXME?\n\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n\n var scope = {};\n hoverLayer.ctx.save();\n\n for (var i = 0; i < len;) {\n var el = hoverElements[i];\n var originalEl = el.__from; // Original el is removed\n // PENDING\n\n if (!(originalEl && originalEl.__zr)) {\n hoverElements.splice(i, 1);\n originalEl.__hoverMir = null;\n len--;\n continue;\n }\n\n i++; // Use transform\n // FIXME style and shape ?\n\n if (!originalEl.invisible) {\n el.transform = originalEl.transform;\n el.invTransform = originalEl.invTransform;\n el.__clipPaths = originalEl.__clipPaths; // el.\n\n this._doPaintEl(el, hoverLayer, true, scope);\n }\n }\n\n hoverLayer.ctx.restore();\n },\n getHoverLayer: function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n },\n _paintList: function (list, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n\n paintAll = paintAll || false;\n\n this._updateLayerStatus(list);\n\n var finished = this._doPaintList(list, paintAll);\n\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n\n if (!finished) {\n var self = this;\n requestAnimationFrame(function () {\n self._paintList(list, paintAll, redrawId);\n });\n }\n },\n _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); // PENDING, If only builtin layer?\n\n this.eachBuiltinLayer(function (layer) {\n if (layer.virtual) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n }\n });\n },\n _doPaintList: function (list, paintAll) {\n var layerList = [];\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\n for (var k = 0; k < layerList.length; k++) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var scope = {};\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._zlevelList[0] ? this._backgroundColor : null; // All elements in this layer are cleared.\n\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor);\n } else if (start === layer.__startIndex) {\n var firstEl = list[start];\n\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor);\n }\n }\n\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n\n for (var i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n\n this._doPaintEl(el, layer, paintAll, scope);\n\n el.__dirty = el.__dirtyText = false;\n\n if (useTimer) {\n // Date.now can be executed in 13,025,305 ops/second.\n var dTime = Date.now() - startTime; // Give 15 millisecond to draw.\n // The rest elements will be drawn in the next frame.\n\n if (dTime > 15) {\n break;\n }\n }\n }\n\n layer.__drawIndex = i;\n\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n\n if (scope.prevElClipPaths) {\n // Needs restore the state. If last drawn element is in the clipping area.\n ctx.restore();\n }\n\n ctx.restore();\n }\n\n if (env.wxa) {\n // Flush for weixin application\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 finished;\n },\n _doPaintEl: function (el, currentLayer, forcePaint, scope) {\n var ctx = currentLayer.ctx;\n var m = el.transform;\n\n if ((currentLayer.__dirty || forcePaint) && // Ignore invisible element\n !el.invisible // Ignore transparent element\n && el.style.opacity !== 0 // Ignore scale 0 element, in some environment like node-canvas\n // Draw a scale 0 element can cause all following draw wrong\n // And setTransform with scale 0 will cause set back transform failed.\n && !(m && !m[0] && !m[3]) // Ignore culled element\n && !(el.culling && isDisplayableCulled(el, this._width, this._height))) {\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths; // Optimize when clipping on group with several elements\n\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n // If has previous clipping state, restore from it\n if (prevElClipPaths) {\n ctx.restore();\n scope.prevElClipPaths = null; // Reset prevEl since context has been restored\n\n scope.prevEl = null;\n } // New clipping state\n\n\n if (clipPaths) {\n ctx.save();\n doClip(clipPaths, ctx);\n scope.prevElClipPaths = clipPaths;\n }\n }\n\n el.beforeBrush && el.beforeBrush(ctx);\n el.brush(ctx, scope.prevEl || null);\n scope.prevEl = el;\n el.afterBrush && el.afterBrush(ctx);\n }\n },\n\n /**\n * 获取 zlevel 所在层,如果不存在则会创建一个新的层\n * @param {number} zlevel\n * @param {boolean} virtual Virtual layer will not be inserted into dom.\n * @return {module:zrender/Layer}\n */\n 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 // Create a new 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 } // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\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); // Context is created after dom inserted to document\n // Or excanvas will get 0px clientWidth and clientHeight\n\n layer.initContext();\n }\n\n return layer;\n },\n insertLayer: function (zlevel, layer) {\n var layersMap = this._layers;\n var zlevelList = this._zlevelList;\n var len = zlevelList.length;\n var prevLayer = null;\n var i = -1;\n var domRoot = this._domRoot;\n\n if (layersMap[zlevel]) {\n logError('ZLevel ' + zlevel + ' has been used already');\n return;\n } // Check if is a valid layer\n\n\n if (!isLayerValid(layer)) {\n logError('Layer of zlevel ' + zlevel + ' is not valid');\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; // Vitual layer will not directly show on the screen.\n // (It can be a WebGL layer and assigned to a ZImage element)\n // But it still under management of zrender.\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 // Iterate each layer\n eachLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n cb.call(context, this._layers[z], z);\n }\n },\n // Iterate each buildin layer\n eachBuiltinLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n // Iterate each other layer except buildin layer\n eachOtherLayer: function (cb, context) {\n var zlevelList = this._zlevelList;\n var layer;\n var z;\n var i;\n\n for (i = 0; i < zlevelList.length; i++) {\n z = zlevelList[i];\n layer = this._layers[z];\n\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n },\n\n /**\n * 获取所有已创建的层\n * @param {Array.} [prevLayer]\n */\n getLayers: function () {\n return this._layers;\n },\n _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; i < list.length; i++) {\n var el = list[i];\n\n if (el.zlevel !== list[i - 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\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer;\n\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n } // TODO Not use magic number on zlevel.\n // Each layer with increment element can be separated to 3 layers.\n // (Other Element drawn after incremental element)\n // -----------------zlevel + EL_AFTER_INCREMENTAL_INC--------------------\n // (Incremental element)\n // ----------------------zlevel + INCREMENTAL_INC------------------------\n // (Element drawn before incremental element)\n // --------------------------------zlevel--------------------------------\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 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 // Mark layer draw index needs to update.\n layer.__drawIndex = -1;\n }\n\n updatePrevLayer(i);\n prevLayer = layer;\n }\n\n if (el.__dirty) {\n layer.__dirty = true;\n\n if (layer.incremental && layer.__drawIndex < 0) {\n // Start draw from the first dirty element.\n layer.__drawIndex = i;\n }\n }\n }\n\n updatePrevLayer(i);\n this.eachBuiltinLayer(function (layer, z) {\n // Used in last frame but not in this frame. Needs clear\n if (!layer.__used && layer.getElementCount() > 0) {\n layer.__dirty = true;\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n } // For incremental layer. In case start index changed and no elements are dirty.\n\n\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n },\n\n /**\n * 清除hover层外所有内容\n */\n clear: function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n },\n _clearLayer: function (layer) {\n layer.clear();\n },\n setBackgroundColor: function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n },\n\n /**\n * 修改指定zlevel的绘制参数\n *\n * @param {string} zlevel\n * @param {Object} config 配置对象\n * @param {string} [config.clearColor=0] 每次清空画布的颜色\n * @param {string} [config.motionBlur=false] 是否开启动态模糊\n * @param {number} [config.lastFrameAlpha=0.7]\n * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显\n */\n 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]; // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\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 /**\n * 删除指定层\n * @param {number} zlevel 层所在的zlevel\n */\n 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 /**\n * 区域大小变化后重绘\n */\n resize: function (width, height) {\n if (!this._domRoot.style) {\n // Maybe in node or worker\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; // FIXME Why ?\n\n domRoot.style.display = 'none'; // Save input w/h\n\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 = ''; // 优化没有实际改变的resize\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 util.each(this._progressiveLayers, function (layer) {\n layer.resize(width, height);\n });\n this.refresh(true);\n }\n\n this._width = width;\n this._height = height;\n }\n\n return this;\n },\n\n /**\n * 清除单独的一个层\n * @param {number} zlevel\n */\n clearLayer: function (zlevel) {\n var layer = this._layers[zlevel];\n\n if (layer) {\n layer.clear();\n }\n },\n\n /**\n * 释放\n */\n dispose: function () {\n this.root.innerHTML = '';\n this.root = this.storage = this._domRoot = this._layers = null;\n },\n\n /**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @param {number} [opts.pixelRatio]\n */\n 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\n if (opts.pixelRatio <= this.dpr) {\n this.refresh();\n var width = imageLayer.dom.width;\n var height = imageLayer.dom.height;\n var ctx = imageLayer.ctx;\n this.eachLayer(function (layer) {\n if (layer.__builtin__) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n } else if (layer.renderToCanvas) {\n imageLayer.ctx.save();\n layer.renderToCanvas(imageLayer.ctx);\n imageLayer.ctx.restore();\n }\n });\n } else {\n // PENDING, echarts-gl and incremental rendering.\n var scope = {};\n var displayList = this.storage.getDisplayList(true);\n\n for (var i = 0; i < displayList.length; i++) {\n var el = displayList[i];\n\n this._doPaintEl(el, imageLayer, true, scope);\n }\n }\n\n return imageLayer.dom;\n },\n\n /**\n * 获取绘图区域宽度\n */\n getWidth: function () {\n return this._width;\n },\n\n /**\n * 获取绘图区域高度\n */\n getHeight: function () {\n return this._height;\n },\n _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\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n\n var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n var stl = document.defaultView.getComputedStyle(root);\n return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n },\n 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 = style.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 position: path.position,\n rotation: path.rotation,\n scale: path.scale\n };\n path.position = [leftMargin - rect.x, topMargin - rect.y];\n path.rotation = 0;\n path.scale = [1, 1];\n path.updateTransform();\n\n if (path) {\n path.brush(ctx);\n }\n\n var ImageShape = Image;\n var imgShape = new ImageShape({\n style: {\n x: 0,\n y: 0,\n image: canvas\n }\n });\n\n if (pathTransform.position != null) {\n imgShape.position = path.position = pathTransform.position;\n }\n\n if (pathTransform.rotation != null) {\n imgShape.rotation = path.rotation = pathTransform.rotation;\n }\n\n if (pathTransform.scale != null) {\n imgShape.scale = path.scale = pathTransform.scale;\n }\n\n return imgShape;\n }\n};\nvar _default = Painter;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar env = require(\"./core/env\");\n\nvar Group = require(\"./container/Group\");\n\nvar timsort = require(\"./core/timsort\");\n\n// Use timsort because in most case elements are partially sorted\n// https://jsfiddle.net/pissang/jr4x7mdm/8/\nfunction shapeCompareFunc(a, b) {\n if (a.zlevel === b.zlevel) {\n if (a.z === b.z) {\n // if (a.z2 === b.z2) {\n // // FIXME Slow has renderidx compare\n // // http://stackoverflow.com/questions/20883421/sorting-in-javascript-should-every-compare-function-have-a-return-0-statement\n // // https://github.com/v8/v8/blob/47cce544a31ed5577ffe2963f67acb4144ee0232/src/js/array.js#L1012\n // return a.__renderidx - b.__renderidx;\n // }\n return a.z2 - b.z2;\n }\n\n return a.z - b.z;\n }\n\n return a.zlevel - b.zlevel;\n}\n/**\n * 内容仓库 (M)\n * @alias module:zrender/Storage\n * @constructor\n */\n\n\nvar Storage = function () {\n // jshint ignore:line\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n};\n\nStorage.prototype = {\n constructor: Storage,\n\n /**\n * @param {Function} cb\n *\n */\n traverse: function (cb, context) {\n for (var i = 0; i < this._roots.length; i++) {\n this._roots[i].traverse(cb, context);\n }\n },\n\n /**\n * 返回所有图形的绘制队列\n * @param {boolean} [update=false] 是否在返回前更新该数组\n * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组, 在 update 为 true 的时候有效\n *\n * 详见{@link module:zrender/graphic/Displayable.prototype.updateDisplayList}\n * @return {Array.}\n */\n getDisplayList: function (update, includeIgnore) {\n includeIgnore = includeIgnore || false;\n\n if (update) {\n this.updateDisplayList(includeIgnore);\n }\n\n return this._displayList;\n },\n\n /**\n * 更新图形的绘制队列。\n * 每次绘制前都会调用,该方法会先深度优先遍历整个树,更新所有Group和Shape的变换并且把所有可见的Shape保存到数组中,\n * 最后根据绘制的优先级(zlevel > z > 插入顺序)排序得到绘制队列\n * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组\n */\n updateDisplayList: function (includeIgnore) {\n this._displayListLen = 0;\n var roots = this._roots;\n var displayList = this._displayList;\n\n for (var i = 0, len = roots.length; i < len; i++) {\n this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n }\n\n displayList.length = this._displayListLen;\n env.canvasSupported && timsort(displayList, shapeCompareFunc);\n },\n _updateAndAddDisplayable: function (el, clipPaths, includeIgnore) {\n if (el.ignore && !includeIgnore) {\n return;\n }\n\n el.beforeUpdate();\n\n if (el.__dirty) {\n el.update();\n }\n\n el.afterUpdate();\n var userSetClipPath = el.clipPath;\n\n if (userSetClipPath) {\n // FIXME 效率影响\n if (clipPaths) {\n clipPaths = clipPaths.slice();\n } else {\n clipPaths = [];\n }\n\n var currentClipPath = userSetClipPath;\n var parentClipPath = el; // Recursively add clip path\n\n while (currentClipPath) {\n // clipPath 的变换是基于使用这个 clipPath 的元素\n currentClipPath.parent = parentClipPath;\n currentClipPath.updateTransform();\n clipPaths.push(currentClipPath);\n parentClipPath = currentClipPath;\n currentClipPath = currentClipPath.clipPath;\n }\n }\n\n if (el.isGroup) {\n var children = el._children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i]; // Force to mark as dirty if group is dirty\n // FIXME __dirtyPath ?\n\n if (el.__dirty) {\n child.__dirty = true;\n }\n\n this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n } // Mark group clean here\n\n\n el.__dirty = false;\n } else {\n el.__clipPaths = clipPaths;\n this._displayList[this._displayListLen++] = el;\n }\n },\n\n /**\n * 添加图形(Shape)或者组(Group)到根节点\n * @param {module:zrender/Element} el\n */\n addRoot: function (el) {\n if (el.__storage === this) {\n return;\n }\n\n if (el instanceof Group) {\n el.addChildrenToStorage(this);\n }\n\n this.addToStorage(el);\n\n this._roots.push(el);\n },\n\n /**\n * 删除指定的图形(Shape)或者组(Group)\n * @param {string|Array.} [el] 如果为空清空整个Storage\n */\n delRoot: function (el) {\n if (el == null) {\n // 不指定el清空\n for (var i = 0; i < this._roots.length; i++) {\n var root = this._roots[i];\n\n if (root instanceof Group) {\n root.delChildrenFromStorage(this);\n }\n }\n\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n return;\n }\n\n if (el instanceof Array) {\n for (var i = 0, l = el.length; i < l; i++) {\n this.delRoot(el[i]);\n }\n\n return;\n }\n\n var idx = util.indexOf(this._roots, el);\n\n if (idx >= 0) {\n this.delFromStorage(el);\n\n this._roots.splice(idx, 1);\n\n if (el instanceof Group) {\n el.delChildrenFromStorage(this);\n }\n }\n },\n addToStorage: function (el) {\n if (el) {\n el.__storage = this;\n el.dirty(false);\n }\n\n return this;\n },\n delFromStorage: function (el) {\n if (el) {\n el.__storage = null;\n }\n\n return this;\n },\n\n /**\n * 清空并且释放Storage\n */\n dispose: function () {\n this._renderList = this._roots = null;\n },\n displayableSortFunc: shapeCompareFunc\n};\nvar _default = Storage;\nmodule.exports = _default;"],"names":["guid","Eventful","Transformable","Animatable","zrUtil","Element","opts","call","this","id","prototype","type","name","__zr","ignore","clipPath","isGroup","drift","dx","dy","draggable","m","transform","decomposeTransform","dirty","beforeUpdate","afterUpdate","update","updateTransform","traverse","cb","context","attrKV","key","value","target","hide","refresh","show","attr","isObject","hasOwnProperty","setClipPath","zr","addSelfToZr","removeClipPath","__clipTarget","removeSelfFromZr","animators","i","length","animation","addAnimator","removeAnimator","mixin","_default","module","exports","util","vec2","Draggable","eventTool","GestureMgr","SILENT","makeEventPacket","eveType","targetInfo","event","topTarget","cancelBubble","offsetX","zrX","offsetY","zrY","gestureEvent","pinchX","pinchY","pinchScale","wheelDelta","zrDelta","zrByTouch","which","stop","stopEvent","EmptyProxy","dispose","handlerNames","Handler","storage","painter","proxy","painterRoot","_hovered","_lastTouchMoment","_lastX","_lastY","_gestureMgr","setHandlerProxy","isHover","displayable","x","y","rectHover","isSilent","el","contain","silent","parent","isOutsideBoundary","handlerInstance","getWidth","getHeight","constructor","each","on","handler","mousemove","isOutside","lastHovered","lastHoveredTarget","findHover","hovered","hoveredTarget","setCursor","cursor","dispatchToElement","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","trigger","resize","dispatch","eventName","eventArgs","setCursorStyle","cursorStyle","eventHandler","eventPacket","eachOtherLayer","layer","exclude","list","getDisplayList","out","hoverCheckResult","processGesture","stage","gestureMgr","clear","gestureInfo","recognize","dom","_downEl","_downPoint","_upEl","dist","_config","devicePixelRatio","Style","Pattern","returnFalse","createDom","dpr","newDom","createCanvas","width","height","newDomStyle","style","position","left","top","setAttribute","Layer","domStyle","onselectstart","domBack","ctxBack","config","clearColor","motionBlur","lastFrameAlpha","__dirty","__used","__drawIndex","__startIndex","__endIndex","incremental","getElementCount","initContext","ctx","getContext","createBackBuffer","scale","clearAll","clearColorGradientOrPattern","haveMotionBLur","globalCompositeOperation","drawImage","clearRect","colorStops","__canvasGradient","getGradient","image","getCanvasPattern","save","fillStyle","fillRect","restore","globalAlpha","logError","BoundingRect","timsort","requestAnimationFrame","Image","env","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","val","parseInt","isLayerValid","__builtin__","tmpRect","viewRect","isDisplayableCulled","copy","getBoundingRect","applyTransform","intersect","isClipPathChanged","clipPaths","prevClipPaths","doClip","setTransform","beginPath","buildPath","shape","clip","restoreTransform","createRoot","domRoot","document","createElement","cssText","join","Painter","root","singleCanvas","nodeName","toUpperCase","_opts","extend","_singleCanvas","rootStyle","innerHTML","zlevelList","_zlevelList","layers","_layers","_layerConfig","_needsManuallyCompositing","_width","_height","mainLayer","zlevel","push","_domRoot","_getSize","appendChild","_hoverlayer","_hoverElements","getType","isSingleCanvas","getViewportRoot","getViewportRootOffset","viewportRoot","offsetLeft","offsetTop","paintAll","_redrawId","Math","random","_paintList","z","_backgroundColor","refreshHover","addHover","hoverStyle","__hoverMir","elMirror","z2","__from","setStyle","removeHover","hoverElements","idx","indexOf","splice","clearHover","from","len","hoverLayer","displayableSortFunc","getLayer","scope","originalEl","invisible","invTransform","__clipPaths","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","finished","_doPaintList","_compositeManually","self","eachBuiltinLayer","virtual","layerList","zi","k","start","useTimer","Date","now","startTime","firstEl","notClear","console","error","__dirtyText","dTime","prevElClipPaths","wxa","draw","currentLayer","forcePaint","opacity","culling","prevEl","beforeBrush","brush","afterBrush","merge","insertLayer","layersMap","prevLayer","prevDom","nextSibling","insertBefore","firstChild","eachLayer","getLayers","updatePrevLayer","prevZlevel","incrementalLayerCount","_clearLayer","setBackgroundColor","backgroundColor","configLayer","layerConfig","_zlevel","delLayer","parentNode","removeChild","display","_progressiveLayers","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","renderToCanvas","displayList","whIdx","wh","cwh","plt","prb","parseFloat","stl","defaultView","getComputedStyle","pathToImage","path","canvas","rect","shadowBlurSize","shadowBlur","shadowOffsetX","shadowOffsetY","lineWidth","hasStroke","leftMargin","max","rightMargin","topMargin","bottomMargin","pathTransform","rotation","ImageShape","imgShape","Group","shapeCompareFunc","a","b","Storage","_roots","_displayList","_displayListLen","includeIgnore","updateDisplayList","roots","_updateAndAddDisplayable","canvasSupported","userSetClipPath","slice","currentClipPath","parentClipPath","children","_children","child","addRoot","__storage","addChildrenToStorage","addToStorage","delRoot","delChildrenFromStorage","Array","l","delFromStorage","_renderList"],"sourceRoot":""}