{"version":3,"file":"js/chunk-vendors-199b0f51.c857f192.js","mappings":"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","sources":["webpack://app/./node_modules/zrender/lib/core/vector.js","webpack://app/./node_modules/zrender/lib/dom/HandlerProxy.js","webpack://app/./node_modules/zrender/lib/graphic/CompoundPath.js","webpack://app/./node_modules/zrender/lib/graphic/Displayable.js","webpack://app/./node_modules/zrender/lib/graphic/Gradient.js","webpack://app/./node_modules/zrender/lib/graphic/Image.js","webpack://app/./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack://app/./node_modules/zrender/lib/graphic/LinearGradient.js","webpack://app/./node_modules/zrender/lib/graphic/Path.js","webpack://app/./node_modules/zrender/lib/graphic/Pattern.js","webpack://app/./node_modules/zrender/lib/graphic/RadialGradient.js","webpack://app/./node_modules/zrender/lib/graphic/Style.js","webpack://app/./node_modules/zrender/lib/graphic/Text.js","webpack://app/./node_modules/zrender/lib/graphic/constant.js"],"sourcesContent":["/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * 创建一个向量\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @return {Vector2}\n */\n\nfunction create(x, y) {\n var out = new ArrayCtor(2);\n\n if (x == null) {\n x = 0;\n }\n\n if (y == null) {\n y = 0;\n }\n\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * 复制向量数据\n * @param {Vector2} out\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 克隆一个向量\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction clone(v) {\n var out = new ArrayCtor(2);\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 设置向量的两个项\n * @param {Vector2} out\n * @param {number} a\n * @param {number} b\n * @return {Vector2} 结果\n */\n\n\nfunction set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\n/**\n * 向量相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\n/**\n * 向量缩放后相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} a\n */\n\n\nfunction scaleAndAdd(out, v1, v2, a) {\n out[0] = v1[0] + v2[0] * a;\n out[1] = v1[1] + v2[1] * a;\n return out;\n}\n/**\n * 向量相减\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\n/**\n * 向量长度\n * @param {Vector2} v\n * @return {number}\n */\n\n\nfunction len(v) {\n return Math.sqrt(lenSquare(v));\n}\n\nvar length = len; // jshint ignore:line\n\n/**\n * 向量长度平方\n * @param {Vector2} v\n * @return {number}\n */\n\nfunction lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\n\nvar lengthSquare = lenSquare;\n/**\n * 向量乘法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\nfunction mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\n/**\n * 向量除法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\n/**\n * 向量点乘\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\n/**\n * 向量缩放\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {number} s\n */\n\n\nfunction scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\n/**\n * 向量归一化\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\n\nfunction normalize(out, v) {\n var d = len(v);\n\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n } else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n\n return out;\n}\n/**\n * 计算向量间距离\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\n\nvar dist = distance;\n/**\n * 向量距离平方\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\nfunction distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\n\nvar distSquare = distanceSquare;\n/**\n * 求负向量\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\nfunction negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\n/**\n * 插值两个点\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} t\n */\n\n\nfunction lerp(out, v1, v2, t) {\n out[0] = v1[0] + t * (v2[0] - v1[0]);\n out[1] = v1[1] + t * (v2[1] - v1[1]);\n return out;\n}\n/**\n * 矩阵左乘向量\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {Vector2} m\n */\n\n\nfunction applyTransform(out, v, m) {\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * 求两个向量最小值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction min(out, v1, v2) {\n out[0] = Math.min(v1[0], v2[0]);\n out[1] = Math.min(v1[1], v2[1]);\n return out;\n}\n/**\n * 求两个向量最大值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction max(out, v1, v2) {\n out[0] = Math.max(v1[0], v2[0]);\n out[1] = Math.max(v1[1], v2[1]);\n return out;\n}\n\nexports.create = create;\nexports.copy = copy;\nexports.clone = clone;\nexports.set = set;\nexports.add = add;\nexports.scaleAndAdd = scaleAndAdd;\nexports.sub = sub;\nexports.len = len;\nexports.length = length;\nexports.lenSquare = lenSquare;\nexports.lengthSquare = lengthSquare;\nexports.mul = mul;\nexports.div = div;\nexports.dot = dot;\nexports.scale = scale;\nexports.normalize = normalize;\nexports.distance = distance;\nexports.dist = dist;\nexports.distanceSquare = distanceSquare;\nexports.distSquare = distSquare;\nexports.negate = negate;\nexports.lerp = lerp;\nexports.applyTransform = applyTransform;\nexports.min = min;\nexports.max = max;","var _event = require(\"../core/event\");\n\nvar addEventListener = _event.addEventListener;\nvar removeEventListener = _event.removeEventListener;\nvar normalizeEvent = _event.normalizeEvent;\nvar getNativeEvent = _event.getNativeEvent;\n\nvar zrUtil = require(\"../core/util\");\n\nvar Eventful = require(\"../mixin/Eventful\");\n\nvar env = require(\"../core/env\");\n\n/* global document */\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\n\nvar localNativeListenerNames = function () {\n var mouseHandlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n var touchHandlerNames = ['touchstart', 'touchend', 'touchmove'];\n var pointerEventNameMap = {\n pointerdown: 1,\n pointerup: 1,\n pointermove: 1,\n pointerout: 1\n };\n var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n var nm = name.replace('mouse', 'pointer');\n return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n });\n return {\n mouse: mouseHandlerNames,\n touch: touchHandlerNames,\n pointer: pointerHandlerNames\n };\n}();\n\nvar globalNativeListenerNames = {\n mouse: ['mousemove', 'mouseup'],\n pointer: ['pointermove', 'pointerup']\n};\n\nfunction eventNameFix(name) {\n return name === 'mousewheel' && env.browser.firefox ? 'DOMMouseScroll' : name;\n}\n\nfunction isPointerFromTouch(event) {\n var pointerType = event.pointerType;\n return pointerType === 'pen' || pointerType === 'touch';\n} // function useMSGuesture(handlerProxy, event) {\n// return isPointerFromTouch(event) && !!handlerProxy._msGesture;\n// }\n// function onMSGestureChange(proxy, event) {\n// if (event.translationX || event.translationY) {\n// // mousemove is carried by MSGesture to reduce the sensitivity.\n// proxy.handler.dispatchToElement(event.target, 'mousemove', event);\n// }\n// if (event.scale !== 1) {\n// event.pinchX = event.offsetX;\n// event.pinchY = event.offsetY;\n// event.pinchScale = event.scale;\n// proxy.handler.dispatchToElement(event.target, 'pinch', event);\n// }\n// }\n\n/**\n * Prevent mouse event from being dispatched after Touch Events action\n * @see \n * 1. Mobile browsers dispatch mouse events 300ms after touchend.\n * 2. Chrome for Android dispatch mousedown for long-touch about 650ms\n * Result: Blocking Mouse Events for 700ms.\n *\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction setTouchTimer(scope) {\n scope.touching = true;\n\n if (scope.touchTimer != null) {\n clearTimeout(scope.touchTimer);\n scope.touchTimer = null;\n }\n\n scope.touchTimer = setTimeout(function () {\n scope.touching = false;\n scope.touchTimer = null;\n }, 700);\n} // Mark touch, which is useful in distinguish touch and\n// mouse event in upper applicatoin.\n\n\nfunction markTouch(event) {\n event && (event.zrByTouch = true);\n} // function markTriggeredFromLocal(event) {\n// event && (event.__zrIsFromLocal = true);\n// }\n// function isTriggeredFromLocal(instance, event) {\n// return !!(event && event.__zrIsFromLocal);\n// }\n\n\nfunction normalizeGlobalEvent(instance, event) {\n // offsetX, offsetY still need to be calculated. They are necessary in the event\n // handlers of the upper applications. Set `true` to force calculate them.\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\n/**\n * Detect whether the given el is in `painterRoot`.\n */\n\n\nfunction isLocalEl(instance, el) {\n var elTmp = el;\n var isLocal = false;\n\n while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) {\n elTmp = elTmp.parentNode;\n }\n\n return isLocal;\n}\n/**\n * Make a fake event but not change the original event,\n * becuase the global event probably be used by other\n * listeners not belonging to zrender.\n * @class\n */\n\n\nfunction FakeGlobalEvent(instance, event) {\n this.type = event.type;\n this.target = this.currentTarget = instance.dom;\n this.pointerType = event.pointerType; // Necessray for the force calculation of zrX, zrY\n\n this.clientX = event.clientX;\n this.clientY = event.clientY; // Because we do not mount global listeners to touch events,\n // we do not copy `targetTouches` and `changedTouches` here.\n}\n\nvar fakeGlobalEventProto = FakeGlobalEvent.prototype; // we make the default methods on the event do nothing,\n// otherwise it is dangerous. See more details in\n// [Drag outside] in `Handler.js`.\n\nfakeGlobalEventProto.stopPropagation = fakeGlobalEventProto.stopImmediatePropagation = fakeGlobalEventProto.preventDefault = zrUtil.noop;\n/**\n * Local DOM Handlers\n * @this {HandlerProxy}\n */\n\nvar localDOMHandlers = {\n mousedown: function (event) {\n event = normalizeEvent(this.dom, event);\n this._mayPointerCapture = [event.zrX, event.zrY];\n this.trigger('mousedown', event);\n },\n mousemove: function (event) {\n event = normalizeEvent(this.dom, event);\n var downPoint = this._mayPointerCapture;\n\n if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n togglePointerCapture(this, true);\n }\n\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n event = normalizeEvent(this.dom, event);\n togglePointerCapture(this, false);\n this.trigger('mouseup', event);\n },\n mouseout: function (event) {\n event = normalizeEvent(this.dom, event); // Similarly to the browser did on `document` and touch event,\n // `globalout` will be delayed to final pointer cature release.\n\n if (this._pointerCapturing) {\n event.zrEventControl = 'no_globalout';\n } // There might be some doms created by upper layer application\n // at the same level of painter.getViewportRoot() (e.g., tooltip\n // dom created by echarts), where 'globalout' event should not\n // be triggered when mouse enters these doms. (But 'mouseout'\n // should be triggered at the original hovered element as usual).\n\n\n var element = event.toElement || event.relatedTarget;\n event.zrIsToLocalDOM = isLocalEl(this, element);\n this.trigger('mouseout', event);\n },\n touchstart: function (event) {\n // Default mouse behaviour should not be disabled here.\n // For example, page may needs to be slided.\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this._lastTouchMoment = new Date();\n this.handler.processGesture(event, 'start'); // For consistent event listener for both touch device and mouse device,\n // we simulate \"mouseover-->mousedown\" in touch device. So we trigger\n // `mousemove` here (to trigger `mouseover` inside), and then trigger\n // `mousedown`.\n\n localDOMHandlers.mousemove.call(this, event);\n localDOMHandlers.mousedown.call(this, event);\n },\n touchmove: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'change'); // Mouse move should always be triggered no matter whether\n // there is gestrue event, because mouse move and pinch may\n // be used at the same time.\n\n localDOMHandlers.mousemove.call(this, event);\n },\n touchend: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'end');\n localDOMHandlers.mouseup.call(this, event); // Do not trigger `mouseout` here, in spite of `mousemove`(`mouseover`) is\n // triggered in `touchstart`. This seems to be illogical, but by this mechanism,\n // we can conveniently implement \"hover style\" in both PC and touch device just\n // by listening to `mouseover` to add \"hover style\" and listening to `mouseout`\n // to remove \"hover style\" on an element, without any additional code for\n // compatibility. (`mouseout` will not be triggered in `touchend`, so \"hover\n // style\" will remain for user view)\n // click event should always be triggered no matter whether\n // there is gestrue event. System click can not be prevented.\n\n if (+new Date() - this._lastTouchMoment < TOUCH_CLICK_DELAY) {\n localDOMHandlers.click.call(this, event);\n }\n },\n pointerdown: function (event) {\n localDOMHandlers.mousedown.call(this, event); // if (useMSGuesture(this, event)) {\n // this._msGesture.addPointer(event.pointerId);\n // }\n },\n pointermove: function (event) {\n // FIXME\n // pointermove is so sensitive that it always triggered when\n // tap(click) on touch screen, which affect some judgement in\n // upper application. So, we dont support mousemove on MS touch\n // device yet.\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n localDOMHandlers.mouseup.call(this, event);\n },\n pointerout: function (event) {\n // pointerout will be triggered when tap on touch screen\n // (IE11+/Edge on MS Surface) after click event triggered,\n // which is inconsistent with the mousout behavior we defined\n // in touchend. So we unify them.\n // (check localDOMHandlers.touchend for detailed explanation)\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mouseout.call(this, event);\n }\n }\n};\n/**\n * Othere DOM UI Event handlers for zr dom.\n * @this {HandlerProxy}\n */\n\nzrUtil.each(['click', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n localDOMHandlers[name] = function (event) {\n event = normalizeEvent(this.dom, event);\n this.trigger(name, event);\n };\n});\n/**\n * DOM UI Event handlers for global page.\n *\n * [Caution]:\n * those handlers should both support in capture phase and bubble phase!\n *\n * @this {HandlerProxy}\n */\n\nvar globalDOMHandlers = {\n pointermove: function (event) {\n // FIXME\n // pointermove is so sensitive that it always triggered when\n // tap(click) on touch screen, which affect some judgement in\n // upper application. So, we dont support mousemove on MS touch\n // device yet.\n if (!isPointerFromTouch(event)) {\n globalDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n globalDOMHandlers.mouseup.call(this, event);\n },\n mousemove: function (event) {\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n var pointerCaptureReleasing = this._pointerCapturing;\n togglePointerCapture(this, false);\n this.trigger('mouseup', event);\n\n if (pointerCaptureReleasing) {\n event.zrEventControl = 'only_globalout';\n this.trigger('mouseout', event);\n }\n }\n};\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\nfunction mountLocalDOMEventListeners(instance, scope) {\n var domHandlers = scope.domHandlers;\n\n if (env.pointerEventsSupported) {\n // Only IE11+/Edge\n // 1. On devices that both enable touch and mouse (e.g., MS Surface and lenovo X240),\n // IE11+/Edge do not trigger touch event, but trigger pointer event and mouse event\n // at the same time.\n // 2. On MS Surface, it probablely only trigger mousedown but no mouseup when tap on\n // screen, which do not occurs in pointer event.\n // So we use pointer event to both detect touch gesture and mouse behavior.\n zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n });\n }); // FIXME\n // Note: MS Gesture require CSS touch-action set. But touch-action is not reliable,\n // which does not prevent defuault behavior occasionally (which may cause view port\n // zoomed in but use can not zoom it back). And event.preventDefault() does not work.\n // So we have to not to use MSGesture and not to support touchmove and pinch on MS\n // touch screen. And we only support click behavior on MS touch screen now.\n // MS Gesture Event is only supported on IE11+/Edge and on Windows 8+.\n // We dont support touch on IE on win7.\n // See \n // if (typeof MSGesture === 'function') {\n // (this._msGesture = new MSGesture()).target = dom; // jshint ignore:line\n // dom.addEventListener('MSGestureChange', onMSGestureChange);\n // }\n } else {\n if (env.touchEventsSupported) {\n zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n setTouchTimer(scope);\n });\n }); // Handler of 'mouseout' event is needed in touch mode, which will be mounted below.\n // addEventListener(root, 'mouseout', this._mouseoutHandler);\n } // 1. Considering some devices that both enable touch and mouse event (like on MS Surface\n // and lenovo X240, @see #2350), we make mouse event be always listened, otherwise\n // mouse event can not be handle in those devices.\n // 2. On MS Surface, Chrome will trigger both touch event and mouse event. How to prevent\n // mouseevent after touch event triggered, see `setTouchTimer`.\n\n\n zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n event = getNativeEvent(event);\n\n if (!scope.touching) {\n // markTriggeredFromLocal(event);\n domHandlers[nativeEventName].call(instance, event);\n }\n });\n });\n }\n}\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction mountGlobalDOMEventListeners(instance, scope) {\n // Only IE11+/Edge. See the comment in `mountLocalDOMEventListeners`.\n if (env.pointerEventsSupported) {\n zrUtil.each(globalNativeListenerNames.pointer, mount);\n } // Touch event has implemented \"drag outside\" so we do not mount global listener for touch event.\n // (see https://www.w3.org/TR/touch-events/#the-touchmove-event)\n // We do not consider \"both-support-touch-and-mouse device\" for this feature (see the comment of\n // `mountLocalDOMEventListeners`) to avoid bugs util some requirements come.\n else if (!env.touchEventsSupported) {\n zrUtil.each(globalNativeListenerNames.mouse, mount);\n }\n\n function mount(nativeEventName) {\n function nativeEventListener(event) {\n event = getNativeEvent(event); // See the reason in [Drag outside] in `Handler.js`\n // This checking supports both `useCapture` or not.\n // PENDING: if there is performance issue in some devices,\n // we probably can not use `useCapture` and change a easier\n // to judes whether local (mark).\n\n if (!isLocalEl(instance, event.target)) {\n event = normalizeGlobalEvent(instance, event);\n scope.domHandlers[nativeEventName].call(instance, event);\n }\n }\n\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, {\n capture: true\n } // See [Drag Outside] in `Handler.js`\n );\n }\n}\n\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n scope.mounted[nativeEventName] = listener;\n scope.listenerOpts[nativeEventName] = opt;\n addEventListener(scope.domTarget, eventNameFix(nativeEventName), listener, opt);\n}\n\nfunction unmountDOMEventListeners(scope) {\n var mounted = scope.mounted;\n\n for (var nativeEventName in mounted) {\n if (mounted.hasOwnProperty(nativeEventName)) {\n removeEventListener(scope.domTarget, eventNameFix(nativeEventName), mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n }\n }\n\n scope.mounted = {};\n}\n/**\n * See [Drag Outside] in `Handler.js`.\n * @implement\n * @param {boolean} isPointerCapturing Should never be `null`/`undefined`.\n * `true`: start to capture pointer if it is not capturing.\n * `false`: end the capture if it is capturing.\n */\n\n\nfunction togglePointerCapture(instance, isPointerCapturing) {\n instance._mayPointerCapture = null;\n\n if (globalEventSupported && instance._pointerCapturing ^ isPointerCapturing) {\n instance._pointerCapturing = isPointerCapturing;\n var globalHandlerScope = instance._globalHandlerScope;\n isPointerCapturing ? mountGlobalDOMEventListeners(instance, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope);\n }\n}\n/**\n * @inner\n * @class\n */\n\n\nfunction DOMHandlerScope(domTarget, domHandlers) {\n this.domTarget = domTarget;\n this.domHandlers = domHandlers; // Key: eventName, value: mounted handler funcitons.\n // Used for unmount.\n\n this.mounted = {};\n this.listenerOpts = {};\n this.touchTimer = null;\n this.touching = false;\n}\n/**\n * @public\n * @class\n */\n\n\nfunction HandlerDomProxy(dom, painterRoot) {\n Eventful.call(this);\n this.dom = dom;\n this.painterRoot = painterRoot;\n this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n\n if (globalEventSupported) {\n this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n }\n /**\n * @type {boolean}\n */\n\n\n this._pointerCapturing = false;\n /**\n * @type {Array.} [x, y] or null.\n */\n\n this._mayPointerCapture = null;\n mountLocalDOMEventListeners(this, this._localHandlerScope);\n}\n\nvar handlerDomProxyProto = HandlerDomProxy.prototype;\n\nhandlerDomProxyProto.dispose = function () {\n unmountDOMEventListeners(this._localHandlerScope);\n\n if (globalEventSupported) {\n unmountDOMEventListeners(this._globalHandlerScope);\n }\n};\n\nhandlerDomProxyProto.setCursor = function (cursorStyle) {\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n};\n\nzrUtil.mixin(HandlerDomProxy, Eventful);\nvar _default = HandlerDomProxy;\nmodule.exports = _default;","var Path = require(\"./Path\");\n\n// CompoundPath to improve performance\nvar _default = Path.extend({\n type: 'compound',\n shape: {\n paths: null\n },\n _updatePathDirty: function () {\n var dirtyPath = this.__dirtyPath;\n var paths = this.shape.paths;\n\n for (var i = 0; i < paths.length; i++) {\n // Mark as dirty if any subpath is dirty\n dirtyPath = dirtyPath || paths[i].__dirtyPath;\n }\n\n this.__dirtyPath = dirtyPath;\n this.__dirty = this.__dirty || dirtyPath;\n },\n beforeBrush: function () {\n this._updatePathDirty();\n\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale(); // Update path scale\n\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n },\n buildPath: function (ctx, shape) {\n var paths = shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n },\n afterBrush: function () {\n var paths = this.shape.paths || [];\n\n for (var i = 0; i < paths.length; i++) {\n paths[i].__dirtyPath = false;\n }\n },\n getBoundingRect: function () {\n this._updatePathDirty();\n\n return Path.prototype.getBoundingRect.call(this);\n }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Style = require(\"./Style\");\n\nvar Element = require(\"../Element\");\n\nvar RectText = require(\"./mixin/RectText\");\n\n/**\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n opts = opts || {};\n Element.call(this, opts); // Extend properties\n\n for (var name in opts) {\n if (opts.hasOwnProperty(name) && name !== 'style') {\n this[name] = opts[name];\n }\n }\n /**\n * @type {module:zrender/graphic/Style}\n */\n\n\n this.style = new Style(opts.style, this);\n this._rect = null; // Shapes for cascade clipping.\n // Can only be `null`/`undefined` or an non-empty array, MUST NOT be an empty array.\n // because it is easy to only using null to check whether clipPaths changed.\n\n this.__clipPaths = null; // FIXME Stateful must be mixined after style is setted\n // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n constructor: Displayable,\n type: 'displayable',\n\n /**\n * Dirty flag. From which painter will determine if this displayable object needs brush.\n * @name module:zrender/graphic/Displayable#__dirty\n * @type {boolean}\n */\n __dirty: true,\n\n /**\n * Whether the displayable object is visible. when it is true, the displayable object\n * is not drawn, but the mouse event can still trigger the object.\n * @name module:/zrender/graphic/Displayable#invisible\n * @type {boolean}\n * @default false\n */\n invisible: false,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z: 0,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z2: 0,\n\n /**\n * The z level determines the displayable object can be drawn in which layer canvas.\n * @name module:/zrender/graphic/Displayable#zlevel\n * @type {number}\n * @default 0\n */\n zlevel: 0,\n\n /**\n * Whether it can be dragged.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n draggable: false,\n\n /**\n * Whether is it dragging.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n dragging: false,\n\n /**\n * Whether to respond to mouse events.\n * @name module:/zrender/graphic/Displayable#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * If enable culling\n * @type {boolean}\n * @default false\n */\n culling: false,\n\n /**\n * Mouse cursor when hovered\n * @name module:/zrender/graphic/Displayable#cursor\n * @type {string}\n */\n cursor: 'pointer',\n\n /**\n * If hover area is bounding rect\n * @name module:/zrender/graphic/Displayable#rectHover\n * @type {string}\n */\n rectHover: false,\n\n /**\n * Render the element progressively when the value >= 0,\n * usefull for large data.\n * @type {boolean}\n */\n progressive: false,\n\n /**\n * @type {boolean}\n */\n incremental: false,\n\n /**\n * Scale ratio for global scale.\n * @type {boolean}\n */\n globalScaleRatio: 1,\n beforeBrush: function (ctx) {},\n afterBrush: function (ctx) {},\n\n /**\n * Graphic drawing method.\n * @param {CanvasRenderingContext2D} ctx\n */\n // Interface\n brush: function (ctx, prevEl) {},\n\n /**\n * Get the minimum bounding box.\n * @return {module:zrender/core/BoundingRect}\n */\n // Interface\n getBoundingRect: function () {},\n\n /**\n * If displayable element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n contain: function (x, y) {\n return this.rectContain(x, y);\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n cb.call(context, this);\n },\n\n /**\n * If bounding rect of element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n rectContain: function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n },\n\n /**\n * Mark displayable element dirty and refresh next frame\n */\n dirty: function () {\n this.__dirty = this.__dirtyText = true;\n this._rect = null;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * If displayable object binded any event\n * @return {boolean}\n */\n // TODO, events bound by bind\n // isSilent: function () {\n // return !(\n // this.hoverable || this.draggable\n // || this.onmousemove || this.onmouseover || this.onmouseout\n // || this.onmousedown || this.onmouseup || this.onclick\n // || this.ondragenter || this.ondragover || this.ondragleave\n // || this.ondrop\n // );\n // },\n\n /**\n * Alias for animate('style')\n * @param {boolean} loop\n */\n animateStyle: function (loop) {\n return this.animate('style', loop);\n },\n attrKV: function (key, value) {\n if (key !== 'style') {\n Element.prototype.attrKV.call(this, key, value);\n } else {\n this.style.set(value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setStyle: function (key, value) {\n this.style.set(key, value);\n this.dirty(false);\n return this;\n },\n\n /**\n * Use given style object\n * @param {Object} obj\n */\n useStyle: function (obj) {\n this.style = new Style(obj, this);\n this.dirty(false);\n return this;\n },\n\n /**\n * The string value of `textPosition` needs to be calculated to a real postion.\n * For example, `'inside'` is calculated to `[rect.width/2, rect.height/2]`\n * by default. See `contain/text.js#calculateTextPosition` for more details.\n * But some coutom shapes like \"pin\", \"flag\" have center that is not exactly\n * `[width/2, height/2]`. So we provide this hook to customize the calculation\n * for those shapes. It will be called if the `style.textPosition` is a string.\n * @param {Obejct} [out] Prepared out object. If not provided, this method should\n * be responsible for creating one.\n * @param {module:zrender/graphic/Style} style\n * @param {Object} rect {x, y, width, height}\n * @return {Obejct} out The same as the input out.\n * {\n * x: number. mandatory.\n * y: number. mandatory.\n * textAlign: string. optional. use style.textAlign by default.\n * textVerticalAlign: string. optional. use style.textVerticalAlign by default.\n * }\n */\n calculateTextPosition: null\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\nmodule.exports = _default;","/**\n * @param {Array.} colorStops\n */\nvar Gradient = function (colorStops) {\n this.colorStops = colorStops || [];\n};\n\nGradient.prototype = {\n constructor: Gradient,\n addColorStop: function (offset, color) {\n this.colorStops.push({\n offset: offset,\n color: color\n });\n }\n};\nvar _default = Gradient;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar imageHelper = require(\"./helper/image\");\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n constructor: ZImage,\n type: 'image',\n brush: function (ctx, prevEl) {\n var style = this.style;\n var src = style.image; // Must bind each time\n\n style.bind(ctx, this, prevEl);\n var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n if (!image || !imageHelper.isImageReady(image)) {\n return;\n } // 图片已经加载完成\n // if (image.nodeName.toUpperCase() == 'IMG') {\n // if (!image.complete) {\n // return;\n // }\n // }\n // Else is canvas\n\n\n var x = style.x || 0;\n var y = style.y || 0;\n var width = style.width;\n var height = style.height;\n var aspect = image.width / image.height;\n\n if (width == null && height != null) {\n // Keep image/height ratio\n width = height * aspect;\n } else if (height == null && width != null) {\n height = width / aspect;\n } else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n } // 设置transform\n\n\n this.setTransform(ctx);\n\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n } else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n } else {\n ctx.drawImage(image, x, y, width, height);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n getBoundingRect: function () {\n var style = this.style;\n\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\nmodule.exports = _default;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n Displayble.call(this, opts);\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.dirty();\n this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n } else {\n this._displayables.push(displayable);\n }\n\n this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n this.updateTransform();\n\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n // Render persistant displayables.\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._cursor = i; // Render temporary displayables.\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._temporaryDisplayables = [];\n this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n\n rect.union(childRect);\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, x2, y2 are all percent from 0 to 1\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @param {number} [x2=1]\n * @param {number} [y2=0]\n * @param {Array.} colorStops\n * @param {boolean} [globalCoord=false]\n */\nvar LinearGradient = function (x, y, x2, y2, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'linear', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0 : x;\n this.y = y == null ? 0 : y;\n this.x2 = x2 == null ? 1 : x2;\n this.y2 = y2 == null ? 0 : y2; // Can be cloned\n\n this.type = 'linear'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nLinearGradient.prototype = {\n constructor: LinearGradient\n};\nzrUtil.inherits(LinearGradient, Gradient);\nvar _default = LinearGradient;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar pathContain = require(\"../contain/path\");\n\nvar Pattern = require(\"./Pattern\");\n\nvar getCanvasPattern = Pattern.prototype.getCanvasPattern;\nvar abs = Math.abs;\nvar pathProxyForDraw = new PathProxy(true);\n/**\n * @alias module:zrender/graphic/Path\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\n\nfunction Path(opts) {\n Displayable.call(this, opts);\n /**\n * @type {module:zrender/core/PathProxy}\n * @readOnly\n */\n\n this.path = null;\n}\n\nPath.prototype = {\n constructor: Path,\n type: 'path',\n __dirtyPath: true,\n strokeContainThreshold: 5,\n // This item default to be false. But in map series in echarts,\n // in order to improve performance, it should be set to true,\n // so the shorty segment won't draw.\n segmentIgnoreThreshold: 0,\n\n /**\n * See `module:zrender/src/graphic/helper/subPixelOptimize`.\n * @type {boolean}\n */\n subPixelOptimize: false,\n brush: function (ctx, prevEl) {\n var style = this.style;\n var path = this.path || pathProxyForDraw;\n var hasStroke = style.hasStroke();\n var hasFill = style.hasFill();\n var fill = style.fill;\n var stroke = style.stroke;\n var hasFillGradient = hasFill && !!fill.colorStops;\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n var hasFillPattern = hasFill && !!fill.image;\n var hasStrokePattern = hasStroke && !!stroke.image;\n style.bind(ctx, this, prevEl);\n this.setTransform(ctx);\n\n if (this.__dirty) {\n var rect; // Update gradient because bounding rect may changed\n\n if (hasFillGradient) {\n rect = rect || this.getBoundingRect();\n this._fillGradient = style.getGradient(ctx, fill, rect);\n }\n\n if (hasStrokeGradient) {\n rect = rect || this.getBoundingRect();\n this._strokeGradient = style.getGradient(ctx, stroke, rect);\n }\n } // Use the gradient or pattern\n\n\n if (hasFillGradient) {\n // PENDING If may have affect the state\n ctx.fillStyle = this._fillGradient;\n } else if (hasFillPattern) {\n ctx.fillStyle = getCanvasPattern.call(fill, ctx);\n }\n\n if (hasStrokeGradient) {\n ctx.strokeStyle = this._strokeGradient;\n } else if (hasStrokePattern) {\n ctx.strokeStyle = getCanvasPattern.call(stroke, ctx);\n }\n\n var lineDash = style.lineDash;\n var lineDashOffset = style.lineDashOffset;\n var ctxLineDash = !!ctx.setLineDash; // Update path sx, sy\n\n var scale = this.getGlobalScale();\n path.setScale(scale[0], scale[1], this.segmentIgnoreThreshold); // Proxy context\n // Rebuild path in following 2 cases\n // 1. Path is dirty\n // 2. Path needs javascript implemented lineDash stroking.\n // In this case, lineDash information will not be saved in PathProxy\n\n if (this.__dirtyPath || lineDash && !ctxLineDash && hasStroke) {\n path.beginPath(ctx); // Setting line dash before build path\n\n if (lineDash && !ctxLineDash) {\n path.setLineDash(lineDash);\n path.setLineDashOffset(lineDashOffset);\n }\n\n this.buildPath(path, this.shape, false); // Clear path dirty flag\n\n if (this.path) {\n this.__dirtyPath = false;\n }\n } else {\n // Replay path building\n ctx.beginPath();\n this.path.rebuildPath(ctx);\n }\n\n if (hasFill) {\n if (style.fillOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n path.fill(ctx);\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n path.fill(ctx);\n }\n }\n\n if (lineDash && ctxLineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n\n if (hasStroke) {\n if (style.strokeOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n path.stroke(ctx);\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n path.stroke(ctx);\n }\n }\n\n if (lineDash && ctxLineDash) {\n // PENDING\n // Remove lineDash\n ctx.setLineDash([]);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n // When bundling path, some shape may decide if use moveTo to begin a new subpath or closePath\n // Like in circle\n buildPath: function (ctx, shapeCfg, inBundle) {},\n createPathProxy: function () {\n this.path = new PathProxy();\n },\n getBoundingRect: function () {\n var rect = this._rect;\n var style = this.style;\n var needsUpdateRect = !rect;\n\n if (needsUpdateRect) {\n var path = this.path;\n\n if (!path) {\n // Create path on demand.\n path = this.path = new PathProxy();\n }\n\n if (this.__dirtyPath) {\n path.beginPath();\n this.buildPath(path, this.shape, false);\n }\n\n rect = path.getBoundingRect();\n }\n\n this._rect = rect;\n\n if (style.hasStroke()) {\n // Needs update rect with stroke lineWidth when\n // 1. Element changes scale or lineWidth\n // 2. Shape is changed\n var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\n\n if (this.__dirty || needsUpdateRect) {\n rectWithStroke.copy(rect); // FIXME Must after updateTransform\n\n var w = style.lineWidth; // PENDING, Min line width is needed when line is horizontal or vertical\n\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Only add extra hover lineWidth when there are no fill\n\n if (!style.hasFill()) {\n w = Math.max(w, this.strokeContainThreshold || 4);\n } // Consider line width\n // Line scale can't be 0;\n\n\n if (lineScale > 1e-10) {\n rectWithStroke.width += w / lineScale;\n rectWithStroke.height += w / lineScale;\n rectWithStroke.x -= w / lineScale / 2;\n rectWithStroke.y -= w / lineScale / 2;\n }\n } // Return rect with stroke\n\n\n return rectWithStroke;\n }\n\n return rect;\n },\n contain: function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n var style = this.style;\n x = localPos[0];\n y = localPos[1];\n\n if (rect.contain(x, y)) {\n var pathData = this.path.data;\n\n if (style.hasStroke()) {\n var lineWidth = style.lineWidth;\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Line scale can't be 0;\n\n if (lineScale > 1e-10) {\n // Only add extra hover lineWidth when there are no fill\n if (!style.hasFill()) {\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n }\n\n if (pathContain.containStroke(pathData, lineWidth / lineScale, x, y)) {\n return true;\n }\n }\n }\n\n if (style.hasFill()) {\n return pathContain.contain(pathData, x, y);\n }\n }\n\n return false;\n },\n\n /**\n * @param {boolean} dirtyPath\n */\n dirty: function (dirtyPath) {\n if (dirtyPath == null) {\n dirtyPath = true;\n } // Only mark dirty, not mark clean\n\n\n if (dirtyPath) {\n this.__dirtyPath = dirtyPath;\n this._rect = null;\n }\n\n this.__dirty = this.__dirtyText = true;\n this.__zr && this.__zr.refresh(); // Used as a clipping path\n\n if (this.__clipTarget) {\n this.__clipTarget.dirty();\n }\n },\n\n /**\n * Alias for animate('shape')\n * @param {boolean} loop\n */\n animateShape: function (loop) {\n return this.animate('shape', loop);\n },\n // Overwrite attrKV\n attrKV: function (key, value) {\n // FIXME\n if (key === 'shape') {\n this.setShape(value);\n this.__dirtyPath = true;\n this._rect = null;\n } else {\n Displayable.prototype.attrKV.call(this, key, value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setShape: function (key, value) {\n var shape = this.shape; // Path from string may not have shape\n\n if (shape) {\n if (zrUtil.isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n shape[name] = key[name];\n }\n }\n } else {\n shape[key] = value;\n }\n\n this.dirty(true);\n }\n\n return this;\n },\n getLineScale: function () {\n var m = this.transform; // Get the line scale.\n // Determinant of `m` means how much the area is enlarged by the\n // transformation. So its square root can be used as a scale factor\n // for width.\n\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10 ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1])) : 1;\n }\n};\n/**\n * 扩展一个 Path element, 比如星形,圆等。\n * Extend a path element\n * @param {Object} props\n * @param {string} props.type Path type\n * @param {Function} props.init Initialize\n * @param {Function} props.buildPath Overwrite buildPath method\n * @param {Object} [props.style] Extended default style config\n * @param {Object} [props.shape] Extended default shape config\n */\n\nPath.extend = function (defaults) {\n var Sub = function (opts) {\n Path.call(this, opts);\n\n if (defaults.style) {\n // Extend default style\n this.style.extendFrom(defaults.style, false);\n } // Extend default shape\n\n\n var defaultShape = defaults.shape;\n\n if (defaultShape) {\n this.shape = this.shape || {};\n var thisShape = this.shape;\n\n for (var name in defaultShape) {\n if (!thisShape.hasOwnProperty(name) && defaultShape.hasOwnProperty(name)) {\n thisShape[name] = defaultShape[name];\n }\n }\n }\n\n defaults.init && defaults.init.call(this, opts);\n };\n\n zrUtil.inherits(Sub, Path); // FIXME 不能 extend position, rotation 等引用对象\n\n for (var name in defaults) {\n // Extending prototype values and methods\n if (name !== 'style' && name !== 'shape') {\n Sub.prototype[name] = defaults[name];\n }\n }\n\n return Sub;\n};\n\nzrUtil.inherits(Path, Displayable);\nvar _default = Path;\nmodule.exports = _default;","var Pattern = function (image, repeat) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {image: ...}`, where this constructor will not be called.\n this.image = image;\n this.repeat = repeat; // Can be cloned\n\n this.type = 'pattern';\n};\n\nPattern.prototype.getCanvasPattern = function (ctx) {\n return ctx.createPattern(this.image, this.repeat || 'repeat');\n};\n\nvar _default = Pattern;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, r are all percent from 0 to 1\n * @param {number} [x=0.5]\n * @param {number} [y=0.5]\n * @param {number} [r=0.5]\n * @param {Array.} [colorStops]\n * @param {boolean} [globalCoord=false]\n */\nvar RadialGradient = function (x, y, r, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'radial', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0.5 : x;\n this.y = y == null ? 0.5 : y;\n this.r = r == null ? 0.5 : r; // Can be cloned\n\n this.type = 'radial'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nRadialGradient.prototype = {\n constructor: RadialGradient\n};\nzrUtil.inherits(RadialGradient, Gradient);\nvar _default = RadialGradient;\nmodule.exports = _default;","var fixShadow = require(\"./helper/fixShadow\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts) {\n this.extendFrom(opts, false);\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n } // Fix NaN when rect is Infinity\n\n\n x = isNaN(x) ? 0 : x;\n x2 = isNaN(x2) ? 1 : x2;\n y = isNaN(y) ? 0 : y;\n y2 = isNaN(y2) ? 0 : y2;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\n\nStyle.prototype = {\n constructor: Style,\n\n /**\n * @type {string}\n */\n fill: '#000',\n\n /**\n * @type {string}\n */\n stroke: null,\n\n /**\n * @type {number}\n */\n opacity: 1,\n\n /**\n * @type {number}\n */\n fillOpacity: null,\n\n /**\n * @type {number}\n */\n strokeOpacity: null,\n\n /**\n * `true` is not supported.\n * `false`/`null`/`undefined` are the same.\n * `false` is used to remove lineDash in some\n * case that `null`/`undefined` can not be set.\n * (e.g., emphasis.lineStyle in echarts)\n * @type {Array.|boolean}\n */\n lineDash: null,\n\n /**\n * @type {number}\n */\n lineDashOffset: 0,\n\n /**\n * @type {number}\n */\n shadowBlur: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetY: 0,\n\n /**\n * @type {number}\n */\n lineWidth: 1,\n\n /**\n * If stroke ignore scale\n * @type {Boolean}\n */\n strokeNoScale: false,\n // Bounding rect text configuration\n // Not affected by element transform\n\n /**\n * @type {string}\n */\n text: null,\n\n /**\n * If `fontSize` or `fontFamily` exists, `font` will be reset by\n * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n * So do not visit it directly in upper application (like echarts),\n * but use `contain/text#makeFont` instead.\n * @type {string}\n */\n font: null,\n\n /**\n * The same as font. Use font please.\n * @deprecated\n * @type {string}\n */\n textFont: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontStyle: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontWeight: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * Should be 12 but not '12px'.\n * @type {number}\n */\n fontSize: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontFamily: null,\n\n /**\n * Reserved for special functinality, like 'hr'.\n * @type {string}\n */\n textTag: null,\n\n /**\n * @type {string}\n */\n textFill: '#000',\n\n /**\n * @type {string}\n */\n textStroke: null,\n\n /**\n * @type {number}\n */\n textWidth: null,\n\n /**\n * Only for textBackground.\n * @type {number}\n */\n textHeight: null,\n\n /**\n * textStroke may be set as some color as a default\n * value in upper applicaion, where the default value\n * of textStrokeWidth should be 0 to make sure that\n * user can choose to do not use text stroke.\n * @type {number}\n */\n textStrokeWidth: 0,\n\n /**\n * @type {number}\n */\n textLineHeight: null,\n\n /**\n * 'inside', 'left', 'right', 'top', 'bottom'\n * [x, y]\n * Based on x, y of rect.\n * @type {string|Array.}\n * @default 'inside'\n */\n textPosition: 'inside',\n\n /**\n * If not specified, use the boundingRect of a `displayable`.\n * @type {Object}\n */\n textRect: null,\n\n /**\n * [x, y]\n * @type {Array.}\n */\n textOffset: null,\n\n /**\n * @type {string}\n */\n textAlign: null,\n\n /**\n * @type {string}\n */\n textVerticalAlign: null,\n\n /**\n * @type {number}\n */\n textDistance: 5,\n\n /**\n * @type {string}\n */\n textShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetY: 0,\n\n /**\n * @type {string}\n */\n textBoxShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textBoxShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetY: 0,\n\n /**\n * Whether transform text.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n * @type {boolean}\n */\n transformText: false,\n\n /**\n * Text rotate around position of Path or Image.\n * The origin of the rotation can be specified by `textOrigin`.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n */\n textRotation: 0,\n\n /**\n * Text origin of text rotation.\n * Useful in the case like label rotation of circular symbol.\n * Only available in Path and Image element, where the text is called\n * as `RectText` and the element is called as \"host element\".\n * The value can be:\n * + If specified as a coordinate like `[10, 40]`, it is the `[x, y]`\n * base on the left-top corner of the rect of its host element.\n * + If specified as a string `center`, it is the center of the rect of\n * its host element.\n * + By default, this origin is the `textPosition`.\n * @type {string|Array.}\n */\n textOrigin: null,\n\n /**\n * @type {string}\n */\n textBackgroundColor: null,\n\n /**\n * @type {string}\n */\n textBorderColor: null,\n\n /**\n * @type {number}\n */\n textBorderWidth: 0,\n\n /**\n * @type {number}\n */\n textBorderRadius: 0,\n\n /**\n * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n * @type {number|Array.}\n */\n textPadding: null,\n\n /**\n * Text styles for rich text.\n * @type {Object}\n */\n rich: null,\n\n /**\n * {outerWidth, outerHeight, ellipsis, placeholder}\n * @type {Object}\n */\n truncate: null,\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n * @type {string}\n */\n blend: null,\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n */\n bind: function (ctx, el, prevEl) {\n var style = this;\n var prevStyle = prevEl && prevEl.style; // If no prevStyle, it means first draw.\n // Only apply cache if the last time cachced by this function.\n\n var notCheckCache = !prevStyle || ctx.__attrCachedBy !== ContextCachedBy.STYLE_BIND;\n ctx.__attrCachedBy = ContextCachedBy.STYLE_BIND;\n\n for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n var styleName = prop[0];\n\n if (notCheckCache || style[styleName] !== prevStyle[styleName]) {\n // FIXME Invalid property value will cause style leak from previous element.\n ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n }\n }\n\n if (notCheckCache || style.fill !== prevStyle.fill) {\n ctx.fillStyle = style.fill;\n }\n\n if (notCheckCache || style.stroke !== prevStyle.stroke) {\n ctx.strokeStyle = style.stroke;\n }\n\n if (notCheckCache || style.opacity !== prevStyle.opacity) {\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n\n if (notCheckCache || style.blend !== prevStyle.blend) {\n ctx.globalCompositeOperation = style.blend || 'source-over';\n }\n\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n }\n },\n hasFill: function () {\n var fill = this.fill;\n return fill != null && fill !== 'none';\n },\n hasStroke: function () {\n var stroke = this.stroke;\n return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n },\n\n /**\n * Extend from other style\n * @param {zrender/graphic/Style} otherStyle\n * @param {boolean} overwrite true: overwrirte any way.\n * false: overwrite only when !target.hasOwnProperty\n * others: overwrite when property is not null/undefined.\n */\n extendFrom: function (otherStyle, overwrite) {\n if (otherStyle) {\n for (var name in otherStyle) {\n if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n this[name] = otherStyle[name];\n }\n }\n }\n },\n\n /**\n * Batch setting style with a given object\n * @param {Object|string} obj\n * @param {*} [obj]\n */\n set: function (obj, value) {\n if (typeof obj === 'string') {\n this[obj] = value;\n } else {\n this.extendFrom(obj, true);\n }\n },\n\n /**\n * Clone\n * @return {zrender/graphic/Style} [description]\n */\n clone: function () {\n var newStyle = new this.constructor();\n newStyle.extendFrom(this, true);\n return newStyle;\n },\n getGradient: function (ctx, obj, rect) {\n var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n var canvasGradient = method(ctx, obj, rect);\n var colorStops = obj.colorStops;\n\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n\n return canvasGradient;\n }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n\n if (!(prop[0] in styleProto)) {\n styleProto[prop[0]] = prop[1];\n }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"./helper/text\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\n\n/**\n * @alias zrender/graphic/Text\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nvar Text = function (opts) {\n // jshint ignore:line\n Displayable.call(this, opts);\n};\n\nText.prototype = {\n constructor: Text,\n type: 'text',\n brush: function (ctx, prevEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.\n\n style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;\n var text = style.text; // Convert to string\n\n text != null && (text += ''); // Do not apply style.bind in Text node. Because the real bind job\n // is in textHelper.renderText, and performance of text render should\n // be considered.\n // style.bind(ctx, this, prevEl);\n\n if (!textHelper.needDrawText(text, style)) {\n // The current el.style is not applied\n // and should not be used as cache.\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n return;\n }\n\n this.setTransform(ctx);\n textHelper.renderText(this, ctx, text, style, null, prevEl);\n this.restoreTransform(ctx);\n },\n getBoundingRect: function () {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n\n if (!this._rect) {\n var text = style.text;\n text != null ? text += '' : text = '';\n var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.textLineHeight, style.rich);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n\n if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {\n var w = style.textStrokeWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(Text, Displayable);\nvar _default = Text;\nmodule.exports = _default;","var ContextCachedBy = {\n NONE: 0,\n STYLE_BIND: 1,\n PLAIN_TEXT: 2\n}; // Avoid confused with 0/false.\n\nvar WILL_BE_RESTORED = 9;\nexports.ContextCachedBy = ContextCachedBy;\nexports.WILL_BE_RESTORED = WILL_BE_RESTORED;"],"names":["ArrayCtor","Float32Array","Array","create","x","y","out","copy","v","clone","set","a","b","add","v1","v2","scaleAndAdd","sub","len","Math","sqrt","lenSquare","length","lengthSquare","mul","div","dot","scale","s","normalize","d","distance","dist","distanceSquare","distSquare","negate","lerp","t","applyTransform","m","min","max","exports","_event","addEventListener","removeEventListener","normalizeEvent","getNativeEvent","zrUtil","Eventful","env","TOUCH_CLICK_DELAY","globalEventSupported","domSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","map","name","nm","replace","hasOwnProperty","mouse","touch","pointer","globalNativeListenerNames","eventNameFix","browser","firefox","isPointerFromTouch","event","pointerType","setTouchTimer","scope","touching","touchTimer","clearTimeout","setTimeout","markTouch","zrByTouch","normalizeGlobalEvent","instance","dom","FakeGlobalEvent","isLocalEl","el","elTmp","isLocal","nodeType","domBelongToZr","painterRoot","parentNode","this","type","target","currentTarget","clientX","clientY","fakeGlobalEventProto","prototype","stopPropagation","stopImmediatePropagation","preventDefault","noop","localDOMHandlers","mousedown","_mayPointerCapture","zrX","zrY","trigger","mousemove","downPoint","togglePointerCapture","mouseup","mouseout","_pointerCapturing","zrEventControl","element","toElement","relatedTarget","zrIsToLocalDOM","touchstart","_lastTouchMoment","Date","handler","processGesture","call","touchmove","touchend","click","each","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","pointerEventsSupported","nativeEventName","mountSingleDOMEventListener","touchEventsSupported","mountGlobalDOMEventListeners","mount","nativeEventListener","capture","listener","opt","mounted","listenerOpts","domTarget","unmountDOMEventListeners","isPointerCapturing","globalHandlerScope","_globalHandlerScope","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","document","handlerDomProxyProto","dispose","setCursor","cursorStyle","style","cursor","mixin","_default","module","Path","extend","shape","paths","_updatePathDirty","dirtyPath","__dirtyPath","i","__dirty","beforeBrush","getGlobalScale","path","createPathProxy","setScale","segmentIgnoreThreshold","buildPath","ctx","afterBrush","getBoundingRect","Style","Element","RectText","Displayable","opts","_rect","__clipPaths","constructor","invisible","z","z2","zlevel","draggable","dragging","silent","culling","rectHover","progressive","incremental","globalScaleRatio","brush","prevEl","contain","rectContain","traverse","cb","context","coord","transformCoordToLocal","rect","dirty","__dirtyText","__zr","refresh","animateStyle","loop","animate","attrKV","key","value","setStyle","useStyle","obj","calculateTextPosition","inherits","Gradient","colorStops","addColorStop","offset","color","push","BoundingRect","imageHelper","ZImage","src","image","bind","_image","createOrUpdateImage","onload","isImageReady","width","height","aspect","setTransform","sWidth","sHeight","sx","sy","drawImage","text","restoreTransform","drawRectText","_util","Displayble","IncrementalDisplayble","_displayables","_temporaryDisplayables","_cursor","notClear","clearDisplaybles","addDisplayable","displayable","notPersistent","addDisplayables","displayables","eachPendingDisplayable","update","updateTransform","parent","Infinity","childRect","needLocalTransform","getLocalTransform","union","localPos","LinearGradient","x2","y2","globalCoord","global","PathProxy","pathContain","Pattern","getCanvasPattern","abs","pathProxyForDraw","strokeContainThreshold","subPixelOptimize","hasStroke","hasFill","fill","stroke","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","_fillGradient","getGradient","_strokeGradient","fillStyle","strokeStyle","lineDash","lineDashOffset","ctxLineDash","setLineDash","beginPath","setLineDashOffset","rebuildPath","fillOpacity","originalGlobalAlpha","globalAlpha","opacity","strokeOpacity","shapeCfg","inBundle","needsUpdateRect","rectWithStroke","_rectWithStroke","w","lineWidth","lineScale","strokeNoScale","getLineScale","pathData","data","containStroke","__clipTarget","animateShape","setShape","isObject","transform","defaults","Sub","extendFrom","defaultShape","thisShape","init","repeat","createPattern","RadialGradient","r","fixShadow","_constant","ContextCachedBy","STYLE_COMMON_PROPS","createLinearGradient","isNaN","canvasGradient","createRadialGradient","shadowBlur","shadowOffsetX","shadowOffsetY","font","textFont","fontStyle","fontWeight","fontSize","fontFamily","textTag","textFill","textStroke","textWidth","textHeight","textStrokeWidth","textLineHeight","textPosition","textRect","textOffset","textAlign","textVerticalAlign","textDistance","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","transformText","textRotation","textOrigin","textBackgroundColor","textBorderColor","textBorderWidth","textBorderRadius","textPadding","rich","truncate","blend","prevStyle","notCheckCache","__attrCachedBy","STYLE_BIND","prop","styleName","globalCompositeOperation","otherStyle","overwrite","newStyle","method","styleProto","textContain","textHelper","Text","normalizeTextStyle","shadowColor","needDrawText","renderText","NONE","getStroke","PLAIN_TEXT","WILL_BE_RESTORED"],"sourceRoot":""}