{"version":3,"file":"c_zrender_5f5cd723.1695271849080.js","sources":["../../node_modules/zrender/lib/core/env.js","../../node_modules/zrender/lib/core/platform.js","../../node_modules/zrender/lib/core/util.js","../../node_modules/zrender/lib/core/vector.js","../../node_modules/zrender/lib/mixin/Draggable.js","../../node_modules/zrender/lib/core/Eventful.js","../../node_modules/zrender/lib/core/fourPointsTransform.js","../../node_modules/zrender/lib/core/dom.js","../../node_modules/zrender/lib/core/event.js","../../node_modules/zrender/lib/core/GestureMgr.js","../../node_modules/zrender/lib/core/matrix.js","../../node_modules/zrender/lib/core/Point.js","../../node_modules/zrender/lib/core/BoundingRect.js","../../node_modules/zrender/lib/Handler.js","../../node_modules/zrender/lib/core/timsort.js","../../node_modules/zrender/lib/graphic/constants.js","../../node_modules/zrender/lib/Storage.js","../../node_modules/zrender/lib/animation/requestAnimationFrame.js","../../node_modules/zrender/lib/animation/easing.js","../../node_modules/zrender/lib/core/curve.js","../../node_modules/zrender/lib/animation/cubicEasing.js","../../node_modules/zrender/lib/animation/Clip.js","../../node_modules/zrender/lib/core/LRU.js","../../node_modules/zrender/lib/tool/color.js","../../node_modules/zrender/lib/svg/helper.js","../../node_modules/zrender/lib/animation/Animator.js","../../node_modules/zrender/lib/animation/Animation.js","../../node_modules/zrender/lib/dom/HandlerProxy.js","../../node_modules/zrender/lib/config.js","../../node_modules/zrender/lib/core/Transformable.js","../../node_modules/zrender/lib/contain/text.js","../../node_modules/zrender/lib/Element.js","../../node_modules/zrender/lib/graphic/Group.js","../../node_modules/zrender/lib/zrender.js","../../node_modules/zrender/lib/graphic/helper/image.js","../../node_modules/zrender/lib/graphic/helper/parseText.js","../../node_modules/zrender/lib/graphic/Displayable.js","../../node_modules/zrender/lib/core/bbox.js","../../node_modules/zrender/lib/core/PathProxy.js","../../node_modules/zrender/lib/contain/line.js","../../node_modules/zrender/lib/contain/cubic.js","../../node_modules/zrender/lib/contain/quadratic.js","../../node_modules/zrender/lib/contain/util.js","../../node_modules/zrender/lib/contain/arc.js","../../node_modules/zrender/lib/contain/windingLine.js","../../node_modules/zrender/lib/contain/path.js","../../node_modules/zrender/lib/graphic/Path.js","../../node_modules/zrender/lib/graphic/TSpan.js","../../node_modules/zrender/lib/graphic/Image.js","../../node_modules/zrender/lib/graphic/helper/roundRect.js","../../node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","../../node_modules/zrender/lib/graphic/shape/Rect.js","../../node_modules/zrender/lib/graphic/Text.js","../../node_modules/zrender/lib/tool/transformPath.js","../../node_modules/zrender/lib/tool/path.js","../../node_modules/zrender/lib/graphic/shape/Circle.js","../../node_modules/zrender/lib/graphic/shape/Ellipse.js","../../node_modules/zrender/lib/graphic/helper/roundSector.js","../../node_modules/zrender/lib/graphic/shape/Sector.js","../../node_modules/zrender/lib/graphic/shape/Ring.js","../../node_modules/zrender/lib/graphic/helper/smoothBezier.js","../../node_modules/zrender/lib/graphic/helper/poly.js","../../node_modules/zrender/lib/graphic/shape/Polygon.js","../../node_modules/zrender/lib/graphic/shape/Polyline.js","../../node_modules/zrender/lib/graphic/shape/Line.js","../../node_modules/zrender/lib/graphic/shape/BezierCurve.js","../../node_modules/zrender/lib/graphic/shape/Arc.js","../../node_modules/zrender/lib/graphic/CompoundPath.js","../../node_modules/zrender/lib/graphic/Gradient.js","../../node_modules/zrender/lib/graphic/LinearGradient.js","../../node_modules/zrender/lib/graphic/RadialGradient.js","../../node_modules/zrender/lib/core/OrientedBoundingRect.js","../../node_modules/zrender/lib/graphic/IncrementalDisplayable.js","../../node_modules/zrender/lib/core/WeakMap.js","../../node_modules/zrender/lib/canvas/helper.js","../../node_modules/zrender/lib/canvas/dashStyle.js","../../node_modules/zrender/lib/canvas/graphic.js","../../node_modules/zrender/lib/contain/polygon.js","../../node_modules/zrender/lib/svg/SVGPathRebuilder.js","../../node_modules/zrender/lib/svg/mapStyleToAttrs.js","../../node_modules/zrender/lib/svg/core.js","../../node_modules/zrender/lib/svg/cssAnimation.js","../../node_modules/zrender/lib/svg/graphic.js","../../node_modules/zrender/lib/svg/domapi.js","../../node_modules/zrender/lib/svg/patch.js","../../node_modules/zrender/lib/svg/Painter.js","../../node_modules/zrender/lib/canvas/Layer.js","../../node_modules/zrender/lib/canvas/Painter.js","../../node_modules/zrender/lib/tool/parseXML.js","../../node_modules/zrender/lib/tool/parseSVG.js","../../node_modules/zrender/lib/tool/convertPath.js","../../node_modules/zrender/lib/tool/dividePath.js","../../node_modules/zrender/lib/tool/morphPath.js"],"sourcesContent":["var Browser = (function () {\n function Browser() {\n this.firefox = false;\n this.ie = false;\n this.edge = false;\n this.newEdge = false;\n this.weChat = false;\n }\n return Browser;\n}());\nvar Env = (function () {\n function Env() {\n this.browser = new Browser();\n this.node = false;\n this.wxa = false;\n this.worker = false;\n this.svgSupported = false;\n this.touchEventsSupported = false;\n this.pointerEventsSupported = false;\n this.domSupported = false;\n this.transformSupported = false;\n this.transform3dSupported = false;\n this.hasGlobalWindow = typeof window !== 'undefined';\n }\n return Env;\n}());\nvar env = new Env();\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n env.wxa = true;\n env.touchEventsSupported = true;\n}\nelse if (typeof document === 'undefined' && typeof self !== 'undefined') {\n env.worker = true;\n}\nelse if (typeof navigator === 'undefined') {\n env.node = true;\n env.svgSupported = true;\n}\nelse {\n detect(navigator.userAgent, env);\n}\nfunction detect(ua, env) {\n var browser = env.browser;\n var firefox = ua.match(/Firefox\\/([\\d.]+)/);\n var ie = ua.match(/MSIE\\s([\\d.]+)/)\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge?\\/([\\d.]+)/);\n var weChat = (/micromessenger/i).test(ua);\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n }\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n browser.newEdge = +edge[1].split('.')[0] > 18;\n }\n if (weChat) {\n browser.weChat = true;\n }\n env.svgSupported = typeof SVGRect !== 'undefined';\n env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\n env.pointerEventsSupported = 'onpointerdown' in window\n && (browser.edge || (browser.ie && +browser.version >= 11));\n env.domSupported = typeof document !== 'undefined';\n var style = document.documentElement.style;\n env.transform3dSupported = ((browser.ie && 'transition' in style)\n || browser.edge\n || (('WebKitCSSMatrix' in window) && ('m11' in new WebKitCSSMatrix()))\n || 'MozPerspective' in style)\n && !('OTransition' in style);\n env.transformSupported = env.transform3dSupported\n || (browser.ie && +browser.version >= 9);\n}\nexport default env;\n","export var DEFAULT_FONT_SIZE = 12;\nexport var DEFAULT_FONT_FAMILY = 'sans-serif';\nexport var DEFAULT_FONT = DEFAULT_FONT_SIZE + \"px \" + DEFAULT_FONT_FAMILY;\nvar OFFSET = 20;\nvar SCALE = 100;\nvar defaultWidthMapStr = \"007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\\\\\WQb\\\\0FWLg\\\\bWb\\\\WQ\\\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\\\FFF5.5N\";\nfunction getTextWidthMap(mapStr) {\n var map = {};\n if (typeof JSON === 'undefined') {\n return map;\n }\n for (var i = 0; i < mapStr.length; i++) {\n var char = String.fromCharCode(i + 32);\n var size = (mapStr.charCodeAt(i) - OFFSET) / SCALE;\n map[char] = size;\n }\n return map;\n}\nexport var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr);\nexport var platformApi = {\n createCanvas: function () {\n return typeof document !== 'undefined'\n && document.createElement('canvas');\n },\n measureText: (function () {\n var _ctx;\n var _cachedFont;\n return function (text, font) {\n if (!_ctx) {\n var canvas = platformApi.createCanvas();\n _ctx = canvas && canvas.getContext('2d');\n }\n if (_ctx) {\n if (_cachedFont !== font) {\n _cachedFont = _ctx.font = font || DEFAULT_FONT;\n }\n return _ctx.measureText(text);\n }\n else {\n text = text || '';\n font = font || DEFAULT_FONT;\n var res = /(\\d+)px/.exec(font);\n var fontSize = res && +res[1] || DEFAULT_FONT_SIZE;\n var width = 0;\n if (font.indexOf('mono') >= 0) {\n width = fontSize * text.length;\n }\n else {\n for (var i = 0; i < text.length; i++) {\n var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text[i]];\n width += preCalcWidth == null ? fontSize : (preCalcWidth * fontSize);\n }\n }\n return { width: width };\n }\n };\n })(),\n loadImage: function (src, onload, onerror) {\n var image = new Image();\n image.onload = onload;\n image.onerror = onerror;\n image.src = src;\n return image;\n }\n};\nexport function setPlatformAPI(newPlatformApis) {\n for (var key in platformApi) {\n if (newPlatformApis[key]) {\n platformApi[key] = newPlatformApis[key];\n }\n }\n}\n","import { platformApi } from './platform.js';\nvar BUILTIN_OBJECT = reduce([\n 'Function',\n 'RegExp',\n 'Date',\n 'Error',\n 'CanvasGradient',\n 'CanvasPattern',\n 'Image',\n 'Canvas'\n], function (obj, val) {\n obj['[object ' + val + ']'] = true;\n return obj;\n}, {});\nvar TYPED_ARRAY = reduce([\n 'Int8',\n 'Uint8',\n 'Uint8Clamped',\n 'Int16',\n 'Uint16',\n 'Int32',\n 'Uint32',\n 'Float32',\n 'Float64'\n], function (obj, val) {\n obj['[object ' + val + 'Array]'] = true;\n return obj;\n}, {});\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar ctorFunction = function () { }.constructor;\nvar protoFunction = ctorFunction ? ctorFunction.prototype : null;\nvar protoKey = '__proto__';\nvar idStart = 0x0907;\nexport function guid() {\n return idStart++;\n}\nexport function logError() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (typeof console !== 'undefined') {\n console.error.apply(console, args);\n }\n}\nexport function clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n var result = source;\n var typeStr = objToString.call(source);\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n if (Ctor.from) {\n result = Ctor.from(source);\n }\n else {\n result = new Ctor(source.length);\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = source[i];\n }\n }\n }\n }\n else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n result[key] = clone(source[key]);\n }\n }\n }\n return result;\n}\nexport function merge(target, source, overwrite) {\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n var targetProp = target[key];\n var sourceProp = source[key];\n if (isObject(sourceProp)\n && isObject(targetProp)\n && !isArray(sourceProp)\n && !isArray(targetProp)\n && !isDom(sourceProp)\n && !isDom(targetProp)\n && !isBuiltInObject(sourceProp)\n && !isBuiltInObject(targetProp)\n && !isPrimitive(sourceProp)\n && !isPrimitive(targetProp)) {\n merge(targetProp, sourceProp, overwrite);\n }\n else if (overwrite || !(key in target)) {\n target[key] = clone(source[key]);\n }\n }\n }\n return target;\n}\nexport function mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n return result;\n}\nexport function extend(target, source) {\n if (Object.assign) {\n Object.assign(target, source);\n }\n else {\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\nexport function defaults(target, source, overlay) {\n var keysArr = keys(source);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n if ((overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n return target;\n}\nexport var createCanvas = platformApi.createCanvas;\nexport function indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n return -1;\n}\nexport function inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n function F() { }\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\nexport function mixin(target, source, override) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n if (Object.getOwnPropertyNames) {\n var keyList = Object.getOwnPropertyNames(source);\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i];\n if (key !== 'constructor') {\n if ((override ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n }\n }\n else {\n defaults(target, source, override);\n }\n}\nexport function isArrayLike(data) {\n if (!data) {\n return false;\n }\n if (typeof data === 'string') {\n return false;\n }\n return typeof data.length === 'number';\n}\nexport function each(arr, cb, context) {\n if (!(arr && cb)) {\n return;\n }\n if (arr.forEach && arr.forEach === nativeForEach) {\n arr.forEach(cb, context);\n }\n else if (arr.length === +arr.length) {\n for (var i = 0, len = arr.length; i < len; i++) {\n cb.call(context, arr[i], i, arr);\n }\n }\n else {\n for (var key in arr) {\n if (arr.hasOwnProperty(key)) {\n cb.call(context, arr[key], key, arr);\n }\n }\n }\n}\nexport function map(arr, cb, context) {\n if (!arr) {\n return [];\n }\n if (!cb) {\n return slice(arr);\n }\n if (arr.map && arr.map === nativeMap) {\n return arr.map(cb, context);\n }\n else {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n result.push(cb.call(context, arr[i], i, arr));\n }\n return result;\n }\n}\nexport function reduce(arr, cb, memo, context) {\n if (!(arr && cb)) {\n return;\n }\n for (var i = 0, len = arr.length; i < len; i++) {\n memo = cb.call(context, memo, arr[i], i, arr);\n }\n return memo;\n}\nexport function filter(arr, cb, context) {\n if (!arr) {\n return [];\n }\n if (!cb) {\n return slice(arr);\n }\n if (arr.filter && arr.filter === nativeFilter) {\n return arr.filter(cb, context);\n }\n else {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (cb.call(context, arr[i], i, arr)) {\n result.push(arr[i]);\n }\n }\n return result;\n }\n}\nexport function find(arr, cb, context) {\n if (!(arr && cb)) {\n return;\n }\n for (var i = 0, len = arr.length; i < len; i++) {\n if (cb.call(context, arr[i], i, arr)) {\n return arr[i];\n }\n }\n}\nexport function keys(obj) {\n if (!obj) {\n return [];\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keyList = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keyList.push(key);\n }\n }\n return keyList;\n}\nfunction bindPolyfill(func, context) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\nexport var bind = (protoFunction && isFunction(protoFunction.bind))\n ? protoFunction.call.bind(protoFunction.bind)\n : bindPolyfill;\nfunction curry(func) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\nexport { curry };\nexport function isArray(value) {\n if (Array.isArray) {\n return Array.isArray(value);\n }\n return objToString.call(value) === '[object Array]';\n}\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isStringSafe(value) {\n return objToString.call(value) === '[object String]';\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\nexport function isObject(value) {\n var type = typeof value;\n return type === 'function' || (!!value && type === 'object');\n}\nexport function isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\nexport function isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\nexport function isDom(value) {\n return typeof value === 'object'\n && typeof value.nodeType === 'number'\n && typeof value.ownerDocument === 'object';\n}\nexport function isGradientObject(value) {\n return value.colorStops != null;\n}\nexport function isImagePatternObject(value) {\n return value.image != null;\n}\nexport function isRegExp(value) {\n return objToString.call(value) === '[object RegExp]';\n}\nexport function eqNaN(value) {\n return value !== value;\n}\nexport function retrieve() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n for (var i = 0, len = args.length; i < len; i++) {\n if (args[i] != null) {\n return args[i];\n }\n }\n}\nexport function retrieve2(value0, value1) {\n return value0 != null\n ? value0\n : value1;\n}\nexport function retrieve3(value0, value1, value2) {\n return value0 != null\n ? value0\n : value1 != null\n ? value1\n : value2;\n}\nexport function slice(arr) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return nativeSlice.apply(arr, args);\n}\nexport function normalizeCssArray(val) {\n if (typeof (val) === 'number') {\n return [val, val, val, val];\n }\n var len = val.length;\n if (len === 2) {\n return [val[0], val[1], val[0], val[1]];\n }\n else if (len === 3) {\n return [val[0], val[1], val[2], val[1]];\n }\n return val;\n}\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\nexport function trim(str) {\n if (str == null) {\n return null;\n }\n else if (typeof str.trim === 'function') {\n return str.trim();\n }\n else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\nvar primitiveKey = '__ec_primitive__';\nexport function setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\nexport function isPrimitive(obj) {\n return obj[primitiveKey];\n}\nvar MapPolyfill = (function () {\n function MapPolyfill() {\n this.data = {};\n }\n MapPolyfill.prototype[\"delete\"] = function (key) {\n var existed = this.has(key);\n if (existed) {\n delete this.data[key];\n }\n return existed;\n };\n MapPolyfill.prototype.has = function (key) {\n return this.data.hasOwnProperty(key);\n };\n MapPolyfill.prototype.get = function (key) {\n return this.data[key];\n };\n MapPolyfill.prototype.set = function (key, value) {\n this.data[key] = value;\n return this;\n };\n MapPolyfill.prototype.keys = function () {\n return keys(this.data);\n };\n MapPolyfill.prototype.forEach = function (callback) {\n var data = this.data;\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n callback(data[key], key);\n }\n }\n };\n return MapPolyfill;\n}());\nvar isNativeMapSupported = typeof Map === 'function';\nfunction maybeNativeMap() {\n return (isNativeMapSupported ? new Map() : new MapPolyfill());\n}\nvar HashMap = (function () {\n function HashMap(obj) {\n var isArr = isArray(obj);\n this.data = maybeNativeMap();\n var thisMap = this;\n (obj instanceof HashMap)\n ? obj.each(visit)\n : (obj && each(obj, visit));\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n }\n HashMap.prototype.hasKey = function (key) {\n return this.data.has(key);\n };\n HashMap.prototype.get = function (key) {\n return this.data.get(key);\n };\n HashMap.prototype.set = function (key, value) {\n this.data.set(key, value);\n return value;\n };\n HashMap.prototype.each = function (cb, context) {\n this.data.forEach(function (value, key) {\n cb.call(context, value, key);\n });\n };\n HashMap.prototype.keys = function () {\n var keys = this.data.keys();\n return isNativeMapSupported\n ? Array.from(keys)\n : keys;\n };\n HashMap.prototype.removeKey = function (key) {\n this.data[\"delete\"](key);\n };\n return HashMap;\n}());\nexport { HashMap };\nexport function createHashMap(obj) {\n return new HashMap(obj);\n}\nexport function concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n var offset = a.length;\n for (var i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n return newArray;\n}\nexport function createObject(proto, properties) {\n var obj;\n if (Object.create) {\n obj = Object.create(proto);\n }\n else {\n var StyleCtor = function () { };\n StyleCtor.prototype = proto;\n obj = new StyleCtor();\n }\n if (properties) {\n extend(obj, properties);\n }\n return obj;\n}\nexport function disableUserSelect(dom) {\n var domStyle = dom.style;\n domStyle.webkitUserSelect = 'none';\n domStyle.userSelect = 'none';\n domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\n domStyle['-webkit-touch-callout'] = 'none';\n}\nexport function hasOwn(own, prop) {\n return own.hasOwnProperty(prop);\n}\nexport function noop() { }\nexport var RADIAN_TO_DEGREE = 180 / Math.PI;\n","export function create(x, y) {\n if (x == null) {\n x = 0;\n }\n if (y == null) {\n y = 0;\n }\n return [x, y];\n}\nexport function copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\nexport function clone(v) {\n return [v[0], v[1]];\n}\nexport function set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\nexport function add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\nexport function 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}\nexport function sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\nexport function len(v) {\n return Math.sqrt(lenSquare(v));\n}\nexport var length = len;\nexport function lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\nexport var lengthSquare = lenSquare;\nexport function mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\nexport function div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\nexport function dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\nexport function scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\nexport function normalize(out, v) {\n var d = len(v);\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n }\n else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n return out;\n}\nexport function distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\n + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\nexport var dist = distance;\nexport function distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0])\n + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\nexport var distSquare = distanceSquare;\nexport function negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\nexport function 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}\nexport function 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}\nexport function 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}\nexport function 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","var Param = (function () {\n function Param(target, e) {\n this.target = target;\n this.topTarget = e && e.topTarget;\n }\n return Param;\n}());\nvar Draggable = (function () {\n function Draggable(handler) {\n this.handler = handler;\n handler.on('mousedown', this._dragStart, this);\n handler.on('mousemove', this._drag, this);\n handler.on('mouseup', this._dragEnd, this);\n }\n Draggable.prototype._dragStart = function (e) {\n var draggingTarget = e.target;\n while (draggingTarget && !draggingTarget.draggable) {\n draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget;\n }\n if (draggingTarget) {\n this._draggingTarget = draggingTarget;\n draggingTarget.dragging = true;\n this._x = e.offsetX;\n this._y = e.offsetY;\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\n }\n };\n Draggable.prototype._drag = function (e) {\n var draggingTarget = this._draggingTarget;\n if (draggingTarget) {\n var x = e.offsetX;\n var y = e.offsetY;\n var dx = x - this._x;\n var dy = y - this._y;\n this._x = x;\n this._y = y;\n draggingTarget.drift(dx, dy, e);\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\n var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\n var lastDropTarget = this._dropTarget;\n this._dropTarget = dropTarget;\n if (draggingTarget !== dropTarget) {\n if (lastDropTarget && dropTarget !== lastDropTarget) {\n this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\n }\n if (dropTarget && dropTarget !== lastDropTarget) {\n this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\n }\n }\n }\n };\n Draggable.prototype._dragEnd = function (e) {\n var draggingTarget = this._draggingTarget;\n if (draggingTarget) {\n draggingTarget.dragging = false;\n }\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\n if (this._dropTarget) {\n this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\n }\n this._draggingTarget = null;\n this._dropTarget = null;\n };\n return Draggable;\n}());\nexport default Draggable;\n","var Eventful = (function () {\n function Eventful(eventProcessors) {\n if (eventProcessors) {\n this._$eventProcessor = eventProcessors;\n }\n }\n Eventful.prototype.on = function (event, query, handler, context) {\n if (!this._$handlers) {\n this._$handlers = {};\n }\n var _h = this._$handlers;\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n if (!handler || !event) {\n return this;\n }\n var eventProcessor = this._$eventProcessor;\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n if (!_h[event]) {\n _h[event] = [];\n }\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return this;\n }\n }\n var wrap = {\n h: handler,\n query: query,\n ctx: (context || this),\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n (lastWrap && lastWrap.callAtLast)\n ? _h[event].splice(lastIndex, 0, wrap)\n : _h[event].push(wrap);\n return this;\n };\n Eventful.prototype.isSilent = function (eventName) {\n var _h = this._$handlers;\n return !_h || !_h[eventName] || !_h[eventName].length;\n };\n Eventful.prototype.off = function (eventType, handler) {\n var _h = this._$handlers;\n if (!_h) {\n return this;\n }\n if (!eventType) {\n this._$handlers = {};\n return this;\n }\n if (handler) {\n if (_h[eventType]) {\n var newList = [];\n for (var i = 0, l = _h[eventType].length; i < l; i++) {\n if (_h[eventType][i].h !== handler) {\n newList.push(_h[eventType][i]);\n }\n }\n _h[eventType] = newList;\n }\n if (_h[eventType] && _h[eventType].length === 0) {\n delete _h[eventType];\n }\n }\n else {\n delete _h[eventType];\n }\n return this;\n };\n Eventful.prototype.trigger = function (eventType) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this._$handlers) {\n return this;\n }\n var _h = this._$handlers[eventType];\n var eventProcessor = this._$eventProcessor;\n if (_h) {\n var argLen = args.length;\n var len = _h.length;\n for (var i = 0; i < len; i++) {\n var hItem = _h[i];\n if (eventProcessor\n && eventProcessor.filter\n && hItem.query != null\n && !eventProcessor.filter(eventType, hItem.query)) {\n continue;\n }\n switch (argLen) {\n case 0:\n hItem.h.call(hItem.ctx);\n break;\n case 1:\n hItem.h.call(hItem.ctx, args[0]);\n break;\n case 2:\n hItem.h.call(hItem.ctx, args[0], args[1]);\n break;\n default:\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n }\n }\n eventProcessor && eventProcessor.afterTrigger\n && eventProcessor.afterTrigger(eventType);\n return this;\n };\n Eventful.prototype.triggerWithContext = function (type) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this._$handlers) {\n return this;\n }\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n if (_h) {\n var argLen = args.length;\n var ctx = args[argLen - 1];\n var len = _h.length;\n for (var i = 0; i < len; i++) {\n var hItem = _h[i];\n if (eventProcessor\n && eventProcessor.filter\n && hItem.query != null\n && !eventProcessor.filter(type, hItem.query)) {\n continue;\n }\n switch (argLen) {\n case 0:\n hItem.h.call(ctx);\n break;\n case 1:\n hItem.h.call(ctx, args[0]);\n break;\n case 2:\n hItem.h.call(ctx, args[0], args[1]);\n break;\n default:\n hItem.h.apply(ctx, args.slice(1, argLen - 1));\n break;\n }\n }\n }\n eventProcessor && eventProcessor.afterTrigger\n && eventProcessor.afterTrigger(type);\n return this;\n };\n return Eventful;\n}());\nexport default Eventful;\n","var LN2 = Math.log(2);\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n var cacheKey = rowMask + '-' + colMask;\n var fullRank = rows.length;\n if (detCache.hasOwnProperty(cacheKey)) {\n return detCache[cacheKey];\n }\n if (rank === 1) {\n var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\n return rows[rowStart][colStart];\n }\n var subRowMask = rowMask | (1 << rowStart);\n var subRowStart = rowStart + 1;\n while (rowMask & (1 << subRowStart)) {\n subRowStart++;\n }\n var sum = 0;\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n var colTag = 1 << j;\n if (!(colTag & colMask)) {\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n colLocalIdx++;\n }\n }\n detCache[cacheKey] = sum;\n return sum;\n}\nexport function buildTransformer(src, dest) {\n var mA = [\n [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\n [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\n [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\n [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\n [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\n [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\n [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\n [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\n ];\n var detCache = {};\n var det = determinant(mA, 8, 0, 0, 0, detCache);\n if (det === 0) {\n return;\n }\n var vh = [];\n for (var i = 0; i < 8; i++) {\n for (var j = 0; j < 8; j++) {\n vh[j] == null && (vh[j] = 0);\n vh[j] += ((i + j) % 2 ? -1 : 1)\n * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\n / det * dest[i];\n }\n }\n return function (out, srcPointX, srcPointY) {\n var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n };\n}\n","import env from './env.js';\nimport { buildTransformer } from './fourPointsTransform.js';\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\nexport function transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true)\n && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\nexport function transformCoordWithViewport(out, el, inX, inY, inverse) {\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var markers = prepareCoordMarkers(el, saved);\n var transformer = preparePointerTransformer(markers, saved, inverse);\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n return false;\n}\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n if (markers) {\n return markers;\n }\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = [\n 'position: absolute',\n 'visibility: hidden',\n 'padding: 0',\n 'margin: 0',\n 'border-width: 0',\n 'user-select: none',\n 'width:0',\n 'height:0',\n propLR[idxLR] + ':0',\n propTB[idxTB] + ':0',\n propLR[1 - idxLR] + ':auto',\n propTB[1 - idxTB] + ':auto',\n ''\n ].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n return markers;\n}\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var srcCoords = [];\n var destCoords = [];\n var oldCoordTheSame = true;\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n }\n return (oldCoordTheSame && transformer)\n ? transformer\n : (saved.srcCoords = srcCoords,\n saved[transformerName] = inverse\n ? buildTransformer(destCoords, srcCoords)\n : buildTransformer(srcCoords, destCoords));\n}\nexport function isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\nexport function encodeHTML(source) {\n return source == null\n ? ''\n : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n","import Eventful from './Eventful.js';\nimport env from './env.js';\nimport { isCanvasEl, transformCoordWithViewport } from './dom.js';\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\nvar firefoxNotSupportOffsetXY = env.browser.firefox\n && +env.browser.version.split('.')[0] < 39;\nexport function clientToLocal(el, e, out, calculate) {\n out = out || {};\n if (calculate) {\n calculateZrXY(el, e, out);\n }\n else if (firefoxNotSupportOffsetXY\n && e.layerX != null\n && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n }\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n }\n else {\n calculateZrXY(el, e, out);\n }\n return out;\n}\nfunction calculateZrXY(el, e, out) {\n if (env.domSupported && el.getBoundingClientRect) {\n var ex = e.clientX;\n var ey = e.clientY;\n if (isCanvasEl(el)) {\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\n }\n else {\n if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n out.zrX = _calcOut[0];\n out.zrY = _calcOut[1];\n return;\n }\n }\n }\n out.zrX = out.zrY = 0;\n}\nexport function getNativeEvent(e) {\n return e\n || window.event;\n}\nexport function normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n if (e.zrX != null) {\n return e;\n }\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n var wheelDelta = getWheelDeltaMayPolyfill(e);\n e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\n }\n else {\n var touch = eventType !== 'touchend'\n ? e.targetTouches[0]\n : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n }\n var button = e.button;\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\n }\n return e;\n}\nfunction getWheelDeltaMayPolyfill(e) {\n var rawWheelDelta = e.wheelDelta;\n if (rawWheelDelta) {\n return rawWheelDelta;\n }\n var deltaX = e.deltaX;\n var deltaY = e.deltaY;\n if (deltaX == null || deltaY == null) {\n return rawWheelDelta;\n }\n var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\n var sign = deltaY > 0 ? -1\n : deltaY < 0 ? 1\n : deltaX > 0 ? -1\n : 1;\n return 3 * delta * sign;\n}\nexport function addEventListener(el, name, handler, opt) {\n el.addEventListener(name, handler, opt);\n}\nexport function removeEventListener(el, name, handler, opt) {\n el.removeEventListener(name, handler, opt);\n}\nexport var stop = function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n};\nexport function isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\nexport { Eventful as Dispatcher };\n","import * as eventUtil from './event.js';\nvar GestureMgr = (function () {\n function GestureMgr() {\n this._track = [];\n }\n GestureMgr.prototype.recognize = function (event, target, root) {\n this._doTrack(event, target, root);\n return this._recognize(event);\n };\n GestureMgr.prototype.clear = function () {\n this._track.length = 0;\n return this;\n };\n GestureMgr.prototype._doTrack = function (event, target, root) {\n var touches = event.touches;\n if (!touches) {\n return;\n }\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n this._track.push(trackItem);\n };\n GestureMgr.prototype._recognize = function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n };\n return GestureMgr;\n}());\nexport { GestureMgr };\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction center(pointPair) {\n return [\n (pointPair[0][0] + pointPair[1][0]) / 2,\n (pointPair[0][1] + pointPair[1][1]) / 2\n ];\n}\nvar recognizers = {\n pinch: function (tracks, event) {\n var trackLen = tracks.length;\n if (!trackLen) {\n return;\n }\n var pinchEnd = (tracks[trackLen - 1] || {}).points;\n var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\n if (pinchPre\n && pinchPre.length > 1\n && pinchEnd\n && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: tracks[0].target,\n event: event\n };\n }\n }\n};\n","export function create() {\n return [1, 0, 0, 1, 0, 0];\n}\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\nexport function copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\nexport function mul(out, m1, m2) {\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\nexport function translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\nexport function rotate(out, a, rad) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * atx + st * aty;\n out[5] = ct * aty - st * atx;\n return out;\n}\nexport function scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\nexport function invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\nexport function clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n","var Point = (function () {\n function Point(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n Point.prototype.copy = function (other) {\n this.x = other.x;\n this.y = other.y;\n return this;\n };\n Point.prototype.clone = function () {\n return new Point(this.x, this.y);\n };\n Point.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n Point.prototype.equal = function (other) {\n return other.x === this.x && other.y === this.y;\n };\n Point.prototype.add = function (other) {\n this.x += other.x;\n this.y += other.y;\n return this;\n };\n Point.prototype.scale = function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n };\n Point.prototype.scaleAndAdd = function (other, scalar) {\n this.x += other.x * scalar;\n this.y += other.y * scalar;\n };\n Point.prototype.sub = function (other) {\n this.x -= other.x;\n this.y -= other.y;\n return this;\n };\n Point.prototype.dot = function (other) {\n return this.x * other.x + this.y * other.y;\n };\n Point.prototype.len = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n };\n Point.prototype.lenSquare = function () {\n return this.x * this.x + this.y * this.y;\n };\n Point.prototype.normalize = function () {\n var len = this.len();\n this.x /= len;\n this.y /= len;\n return this;\n };\n Point.prototype.distance = function (other) {\n var dx = this.x - other.x;\n var dy = this.y - other.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n Point.prototype.distanceSquare = function (other) {\n var dx = this.x - other.x;\n var dy = this.y - other.y;\n return dx * dx + dy * dy;\n };\n Point.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n };\n Point.prototype.transform = function (m) {\n if (!m) {\n return;\n }\n var x = this.x;\n var y = this.y;\n this.x = m[0] * x + m[2] * y + m[4];\n this.y = m[1] * x + m[3] * y + m[5];\n return this;\n };\n Point.prototype.toArray = function (out) {\n out[0] = this.x;\n out[1] = this.y;\n return out;\n };\n Point.prototype.fromArray = function (input) {\n this.x = input[0];\n this.y = input[1];\n };\n Point.set = function (p, x, y) {\n p.x = x;\n p.y = y;\n };\n Point.copy = function (p, p2) {\n p.x = p2.x;\n p.y = p2.y;\n };\n Point.len = function (p) {\n return Math.sqrt(p.x * p.x + p.y * p.y);\n };\n Point.lenSquare = function (p) {\n return p.x * p.x + p.y * p.y;\n };\n Point.dot = function (p0, p1) {\n return p0.x * p1.x + p0.y * p1.y;\n };\n Point.add = function (out, p0, p1) {\n out.x = p0.x + p1.x;\n out.y = p0.y + p1.y;\n };\n Point.sub = function (out, p0, p1) {\n out.x = p0.x - p1.x;\n out.y = p0.y - p1.y;\n };\n Point.scale = function (out, p0, scalar) {\n out.x = p0.x * scalar;\n out.y = p0.y * scalar;\n };\n Point.scaleAndAdd = function (out, p0, p1, scalar) {\n out.x = p0.x + p1.x * scalar;\n out.y = p0.y + p1.y * scalar;\n };\n Point.lerp = function (out, p0, p1, t) {\n var onet = 1 - t;\n out.x = onet * p0.x + t * p1.x;\n out.y = onet * p0.y + t * p1.y;\n };\n return Point;\n}());\nexport default Point;\n","import * as matrix from './matrix.js';\nimport Point from './Point.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar lt = new Point();\nvar rb = new Point();\nvar lb = new Point();\nvar rt = new Point();\nvar minTv = new Point();\nvar maxTv = new Point();\nvar BoundingRect = (function () {\n function BoundingRect(x, y, width, height) {\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BoundingRect.prototype.union = function (other) {\n var x = mathMin(other.x, this.x);\n var y = mathMin(other.y, this.y);\n if (isFinite(this.x) && isFinite(this.width)) {\n this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n }\n else {\n this.width = other.width;\n }\n if (isFinite(this.y) && isFinite(this.height)) {\n this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n }\n else {\n this.height = other.height;\n }\n this.x = x;\n this.y = y;\n };\n BoundingRect.prototype.applyTransform = function (m) {\n BoundingRect.applyTransform(this, this, m);\n };\n BoundingRect.prototype.calculateTransform = function (b) {\n var a = this;\n var sx = b.width / a.width;\n var sy = b.height / a.height;\n var m = matrix.create();\n matrix.translate(m, m, [-a.x, -a.y]);\n matrix.scale(m, m, [sx, sy]);\n matrix.translate(m, m, [b.x, b.y]);\n return m;\n };\n BoundingRect.prototype.intersect = function (b, mtv) {\n if (!b) {\n return false;\n }\n if (!(b instanceof BoundingRect)) {\n b = BoundingRect.create(b);\n }\n var a = this;\n var ax0 = a.x;\n var ax1 = a.x + a.width;\n var ay0 = a.y;\n var ay1 = a.y + a.height;\n var bx0 = b.x;\n var bx1 = b.x + b.width;\n var by0 = b.y;\n var by1 = b.y + b.height;\n var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n if (mtv) {\n var dMin = Infinity;\n var dMax = 0;\n var d0 = Math.abs(ax1 - bx0);\n var d1 = Math.abs(bx1 - ax0);\n var d2 = Math.abs(ay1 - by0);\n var d3 = Math.abs(by1 - ay0);\n var dx = Math.min(d0, d1);\n var dy = Math.min(d2, d3);\n if (ax1 < bx0 || bx1 < ax0) {\n if (dx > dMax) {\n dMax = dx;\n if (d0 < d1) {\n Point.set(maxTv, -d0, 0);\n }\n else {\n Point.set(maxTv, d1, 0);\n }\n }\n }\n else {\n if (dx < dMin) {\n dMin = dx;\n if (d0 < d1) {\n Point.set(minTv, d0, 0);\n }\n else {\n Point.set(minTv, -d1, 0);\n }\n }\n }\n if (ay1 < by0 || by1 < ay0) {\n if (dy > dMax) {\n dMax = dy;\n if (d2 < d3) {\n Point.set(maxTv, 0, -d2);\n }\n else {\n Point.set(maxTv, 0, d3);\n }\n }\n }\n else {\n if (dx < dMin) {\n dMin = dx;\n if (d2 < d3) {\n Point.set(minTv, 0, d2);\n }\n else {\n Point.set(minTv, 0, -d3);\n }\n }\n }\n }\n if (mtv) {\n Point.copy(mtv, overlap ? minTv : maxTv);\n }\n return overlap;\n };\n BoundingRect.prototype.contain = function (x, y) {\n var rect = this;\n return x >= rect.x\n && x <= (rect.x + rect.width)\n && y >= rect.y\n && y <= (rect.y + rect.height);\n };\n BoundingRect.prototype.clone = function () {\n return new BoundingRect(this.x, this.y, this.width, this.height);\n };\n BoundingRect.prototype.copy = function (other) {\n BoundingRect.copy(this, other);\n };\n BoundingRect.prototype.plain = function () {\n return {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n };\n };\n BoundingRect.prototype.isFinite = function () {\n return isFinite(this.x)\n && isFinite(this.y)\n && isFinite(this.width)\n && isFinite(this.height);\n };\n BoundingRect.prototype.isZero = function () {\n return this.width === 0 || this.height === 0;\n };\n BoundingRect.create = function (rect) {\n return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n };\n BoundingRect.copy = function (target, source) {\n target.x = source.x;\n target.y = source.y;\n target.width = source.width;\n target.height = source.height;\n };\n BoundingRect.applyTransform = function (target, source, m) {\n if (!m) {\n if (target !== source) {\n BoundingRect.copy(target, source);\n }\n return;\n }\n if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\n var sx = m[0];\n var sy = m[3];\n var tx = m[4];\n var ty = m[5];\n target.x = source.x * sx + tx;\n target.y = source.y * sy + ty;\n target.width = source.width * sx;\n target.height = source.height * sy;\n if (target.width < 0) {\n target.x += target.width;\n target.width = -target.width;\n }\n if (target.height < 0) {\n target.y += target.height;\n target.height = -target.height;\n }\n return;\n }\n lt.x = lb.x = source.x;\n lt.y = rt.y = source.y;\n rb.x = rt.x = source.x + source.width;\n rb.y = lb.y = source.y + source.height;\n lt.transform(m);\n rt.transform(m);\n rb.transform(m);\n lb.transform(m);\n target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\n target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\n var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\n var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\n target.width = maxX - target.x;\n target.height = maxY - target.y;\n };\n return BoundingRect;\n}());\nexport default BoundingRect;\n","import { __extends } from \"tslib\";\nimport * as util from './core/util.js';\nimport * as vec2 from './core/vector.js';\nimport Draggable from './mixin/Draggable.js';\nimport Eventful from './core/Eventful.js';\nimport * as eventTool from './core/event.js';\nimport { GestureMgr } from './core/GestureMgr.js';\nimport BoundingRect from './core/BoundingRect.js';\nvar SILENT = 'silent';\nfunction makeEventPacket(eveType, targetInfo, event) {\n return {\n type: eveType,\n event: event,\n target: targetInfo.target,\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}\nfunction stopEvent() {\n eventTool.stop(this.event);\n}\nvar EmptyProxy = (function (_super) {\n __extends(EmptyProxy, _super);\n function EmptyProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handler = null;\n return _this;\n }\n EmptyProxy.prototype.dispose = function () { };\n EmptyProxy.prototype.setCursor = function () { };\n return EmptyProxy;\n}(Eventful));\nvar HoveredResult = (function () {\n function HoveredResult(x, y) {\n this.x = x;\n this.y = y;\n }\n return HoveredResult;\n}());\nvar handlerNames = [\n 'click', 'dblclick', 'mousewheel', 'mouseout',\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n];\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar Handler = (function (_super) {\n __extends(Handler, _super);\n function Handler(storage, painter, proxy, painterRoot, pointerSize) {\n var _this = _super.call(this) || this;\n _this._hovered = new HoveredResult(0, 0);\n _this.storage = storage;\n _this.painter = painter;\n _this.painterRoot = painterRoot;\n _this._pointerSize = pointerSize;\n proxy = proxy || new EmptyProxy();\n _this.proxy = null;\n _this.setHandlerProxy(proxy);\n _this._draggingMgr = new Draggable(_this);\n return _this;\n }\n Handler.prototype.setHandlerProxy = function (proxy) {\n if (this.proxy) {\n this.proxy.dispose();\n }\n if (proxy) {\n util.each(handlerNames, function (name) {\n proxy.on && proxy.on(name, this[name], this);\n }, this);\n proxy.handler = this;\n }\n this.proxy = proxy;\n };\n Handler.prototype.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;\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n lastHoveredTarget = lastHovered.target;\n }\n var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\n var hoveredTarget = hovered.target;\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(lastHovered, 'mouseout', event);\n }\n this.dispatchToElement(hovered, 'mousemove', event);\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(hovered, 'mouseover', event);\n }\n };\n Handler.prototype.mouseout = function (event) {\n var eventControl = event.zrEventControl;\n if (eventControl !== 'only_globalout') {\n this.dispatchToElement(this._hovered, 'mouseout', event);\n }\n if (eventControl !== 'no_globalout') {\n this.trigger('globalout', { type: 'globalout', event: event });\n }\n };\n Handler.prototype.resize = function () {\n this._hovered = new HoveredResult(0, 0);\n };\n Handler.prototype.dispatch = function (eventName, eventArgs) {\n var handler = this[eventName];\n handler && handler.call(this, eventArgs);\n };\n Handler.prototype.dispose = function () {\n this.proxy.dispose();\n this.storage = null;\n this.proxy = null;\n this.painter = null;\n };\n Handler.prototype.setCursorStyle = function (cursorStyle) {\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(cursorStyle);\n };\n Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\n targetInfo = targetInfo || {};\n var el = targetInfo.target;\n if (el && el.silent) {\n return;\n }\n var eventKey = ('on' + eventName);\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\n while (el) {\n el[eventKey]\n && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\n el.trigger(eventName, eventPacket);\n el = el.__hostTarget ? el.__hostTarget : el.parent;\n if (eventPacket.cancelBubble) {\n break;\n }\n }\n if (!eventPacket.cancelBubble) {\n this.trigger(eventName, eventPacket);\n if (this.painter && this.painter.eachOtherLayer) {\n this.painter.eachOtherLayer(function (layer) {\n if (typeof (layer[eventKey]) === 'function') {\n layer[eventKey].call(layer, eventPacket);\n }\n if (layer.trigger) {\n layer.trigger(eventName, eventPacket);\n }\n });\n }\n }\n };\n Handler.prototype.findHover = function (x, y, exclude) {\n var list = this.storage.getDisplayList();\n var out = new HoveredResult(x, y);\n setHoverTarget(list, out, x, y, exclude);\n if (this._pointerSize && !out.target) {\n var candidates = [];\n var pointerSize = this._pointerSize;\n var targetSizeHalf = pointerSize / 2;\n var pointerRect = new BoundingRect(x - targetSizeHalf, y - targetSizeHalf, pointerSize, pointerSize);\n for (var i = list.length - 1; i >= 0; i--) {\n var el = list[i];\n if (el !== exclude\n && !el.ignore\n && !el.ignoreCoarsePointer\n && (!el.parent || !el.parent.ignoreCoarsePointer)) {\n tmpRect.copy(el.getBoundingRect());\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n if (tmpRect.intersect(pointerRect)) {\n candidates.push(el);\n }\n }\n }\n if (candidates.length) {\n var rStep = 4;\n var thetaStep = Math.PI / 12;\n var PI2 = Math.PI * 2;\n for (var r = 0; r < targetSizeHalf; r += rStep) {\n for (var theta = 0; theta < PI2; theta += thetaStep) {\n var x1 = x + r * Math.cos(theta);\n var y1 = y + r * Math.sin(theta);\n setHoverTarget(candidates, out, x1, y1, exclude);\n if (out.target) {\n return out;\n }\n }\n }\n }\n }\n return out;\n };\n Handler.prototype.processGesture = function (event, stage) {\n if (!this._gestureMgr) {\n this._gestureMgr = new GestureMgr();\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();\n if (gestureInfo) {\n var type = gestureInfo.type;\n event.gestureEvent = type;\n var res = new HoveredResult();\n res.target = gestureInfo.target;\n this.dispatchToElement(res, type, gestureInfo.event);\n }\n };\n return Handler;\n}(Eventful));\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 if (name !== 'mouseup' || !isOutside) {\n hovered = this.findHover(x, y);\n hoveredTarget = hovered.target;\n }\n if (name === 'mousedown') {\n this._downEl = hoveredTarget;\n this._downPoint = [event.zrX, event.zrY];\n this._upEl = hoveredTarget;\n }\n else if (name === 'mouseup') {\n this._upEl = hoveredTarget;\n }\n else if (name === 'click') {\n if (this._downEl !== this._upEl\n || !this._downPoint\n || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n return;\n }\n this._downPoint = null;\n }\n this.dispatchToElement(hovered, name, event);\n };\n});\nfunction isHover(displayable, x, y) {\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n var el = displayable;\n var isSilent = void 0;\n var ignoreClip = false;\n while (el) {\n if (el.ignoreClip) {\n ignoreClip = true;\n }\n if (!ignoreClip) {\n var clipPath = el.getClipPath();\n if (clipPath && !clipPath.contain(x, y)) {\n return false;\n }\n if (el.silent) {\n isSilent = true;\n }\n }\n var hostEl = el.__hostTarget;\n el = hostEl ? hostEl : el.parent;\n }\n return isSilent ? SILENT : true;\n }\n return false;\n}\nfunction setHoverTarget(list, out, x, y, exclude) {\n for (var i = list.length - 1; i >= 0; i--) {\n var el = list[i];\n var hoverCheckResult = void 0;\n if (el !== exclude\n && !el.ignore\n && (hoverCheckResult = isHover(el, x, y))) {\n !out.topTarget && (out.topTarget = el);\n if (hoverCheckResult !== SILENT) {\n out.target = el;\n break;\n }\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}\nexport default Handler;\n","var DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\nfunction minRunLength(n) {\n var r = 0;\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n return n + r;\n}\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n if (runHi === hi) {\n return 1;\n }\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n reverseRun(array, lo, runHi);\n }\n else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n return runHi - lo;\n}\nfunction reverseRun(array, lo, hi) {\n hi--;\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n while (left < right) {\n mid = left + right >>> 1;\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n }\n else {\n left = mid + 1;\n }\n }\n var n = start - left;\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n case 2:\n array[left + 2] = array[left + 1];\n case 1:\n array[left + 1] = array[left];\n break;\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n }\n array[left] = pivot;\n }\n}\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n else {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n }\n else {\n offset = m;\n }\n }\n return offset;\n}\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n else {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n }\n else {\n lastOffset = m + 1;\n }\n }\n return offset;\n}\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\n || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n }\n else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n mergeAt(n);\n }\n }\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n mergeAt(n);\n }\n }\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n if (length1 === 0) {\n return;\n }\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n if (length2 === 0) {\n return;\n }\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n }\n else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n return;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n return;\n }\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n if (--length2 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n exit = true;\n break;\n }\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n array[dest++] = tmp[cursor1++];\n if (--length1 === 1) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n }\n else if (length1 === 0) {\n throw new Error();\n }\n else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n return;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n return;\n }\n var _minGallop = minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n if (--length1 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n array[dest--] = tmp[cursor2--];\n if (--length2 === 1) {\n exit = true;\n break;\n }\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n if (minGallop < 1) {\n minGallop = 1;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n }\n else if (length2 === 0) {\n throw new Error();\n }\n else {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n return {\n mergeRuns: mergeRuns,\n forceMergeRuns: forceMergeRuns,\n pushRun: pushRun\n };\n}\nexport default function sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n if (!hi) {\n hi = array.length;\n }\n var remaining = hi - lo;\n if (remaining < 2) {\n return;\n }\n var runLength = 0;\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n var ts = TimSort(array, compare);\n var minRun = minRunLength(remaining);\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n if (runLength < minRun) {\n var force = remaining;\n if (force > minRun) {\n force = minRun;\n }\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n ts.forceMergeRuns();\n}\n","export var REDRAW_BIT = 1;\nexport var STYLE_CHANGED_BIT = 2;\nexport var SHAPE_CHANGED_BIT = 4;\n","import * as util from './core/util.js';\nimport timsort from './core/timsort.js';\nimport { REDRAW_BIT } from './graphic/constants.js';\nvar invalidZErrorLogged = false;\nfunction logInvalidZError() {\n if (invalidZErrorLogged) {\n return;\n }\n invalidZErrorLogged = true;\n console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\n}\nfunction shapeCompareFunc(a, b) {\n if (a.zlevel === b.zlevel) {\n if (a.z === b.z) {\n return a.z2 - b.z2;\n }\n return a.z - b.z;\n }\n return a.zlevel - b.zlevel;\n}\nvar Storage = (function () {\n function Storage() {\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n this.displayableSortFunc = shapeCompareFunc;\n }\n Storage.prototype.traverse = function (cb, context) {\n for (var i = 0; i < this._roots.length; i++) {\n this._roots[i].traverse(cb, context);\n }\n };\n Storage.prototype.getDisplayList = function (update, includeIgnore) {\n includeIgnore = includeIgnore || false;\n var displayList = this._displayList;\n if (update || !displayList.length) {\n this.updateDisplayList(includeIgnore);\n }\n return displayList;\n };\n Storage.prototype.updateDisplayList = function (includeIgnore) {\n this._displayListLen = 0;\n var roots = this._roots;\n var displayList = this._displayList;\n for (var i = 0, len = roots.length; i < len; i++) {\n this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n }\n displayList.length = this._displayListLen;\n timsort(displayList, shapeCompareFunc);\n };\n Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) {\n if (el.ignore && !includeIgnore) {\n return;\n }\n el.beforeUpdate();\n el.update();\n el.afterUpdate();\n var userSetClipPath = el.getClipPath();\n if (el.ignoreClip) {\n clipPaths = null;\n }\n else if (userSetClipPath) {\n if (clipPaths) {\n clipPaths = clipPaths.slice();\n }\n else {\n clipPaths = [];\n }\n var currentClipPath = userSetClipPath;\n var parentClipPath = el;\n while (currentClipPath) {\n currentClipPath.parent = parentClipPath;\n currentClipPath.updateTransform();\n clipPaths.push(currentClipPath);\n parentClipPath = currentClipPath;\n currentClipPath = currentClipPath.getClipPath();\n }\n }\n if (el.childrenRef) {\n var children = el.childrenRef();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (el.__dirty) {\n child.__dirty |= REDRAW_BIT;\n }\n this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n }\n el.__dirty = 0;\n }\n else {\n var disp = el;\n if (clipPaths && clipPaths.length) {\n disp.__clipPaths = clipPaths;\n }\n else if (disp.__clipPaths && disp.__clipPaths.length > 0) {\n disp.__clipPaths = [];\n }\n if (isNaN(disp.z)) {\n logInvalidZError();\n disp.z = 0;\n }\n if (isNaN(disp.z2)) {\n logInvalidZError();\n disp.z2 = 0;\n }\n if (isNaN(disp.zlevel)) {\n logInvalidZError();\n disp.zlevel = 0;\n }\n this._displayList[this._displayListLen++] = disp;\n }\n var decalEl = el.getDecalElement && el.getDecalElement();\n if (decalEl) {\n this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);\n }\n var textGuide = el.getTextGuideLine();\n if (textGuide) {\n this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);\n }\n var textEl = el.getTextContent();\n if (textEl) {\n this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);\n }\n };\n Storage.prototype.addRoot = function (el) {\n if (el.__zr && el.__zr.storage === this) {\n return;\n }\n this._roots.push(el);\n };\n Storage.prototype.delRoot = function (el) {\n if (el instanceof Array) {\n for (var i = 0, l = el.length; i < l; i++) {\n this.delRoot(el[i]);\n }\n return;\n }\n var idx = util.indexOf(this._roots, el);\n if (idx >= 0) {\n this._roots.splice(idx, 1);\n }\n };\n Storage.prototype.delAllRoots = function () {\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n return;\n };\n Storage.prototype.getRoots = function () {\n return this._roots;\n };\n Storage.prototype.dispose = function () {\n this._displayList = null;\n this._roots = null;\n };\n return Storage;\n}());\nexport default Storage;\n","import env from '../core/env.js';\nvar requestAnimationFrame;\nrequestAnimationFrame = (env.hasGlobalWindow\n && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\n || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame)) || function (func) {\n return setTimeout(func, 16);\n};\nexport default requestAnimationFrame;\n","var easingFuncs = {\n linear: function (k) {\n return k;\n },\n quadraticIn: function (k) {\n return k * k;\n },\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n return -0.5 * (--k * (k - 2) - 1);\n },\n cubicIn: function (k) {\n return k * k * k;\n },\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n quarticIn: function (k) {\n return k * k * k * k;\n },\n quarticOut: function (k) {\n return 1 - (--k * k * k * k);\n },\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n circularOut: function (k) {\n return Math.sqrt(1 - (--k * k));\n },\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n return -(a * Math.pow(2, 10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n return (a * Math.pow(2, -10 * k)\n * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\n },\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n return a * Math.pow(2, -10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n bounceIn: function (k) {\n return 1 - easingFuncs.bounceOut(1 - k);\n },\n bounceOut: function (k) {\n if (k < (1 / 2.75)) {\n return 7.5625 * k * k;\n }\n else if (k < (2 / 2.75)) {\n return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\n }\n else if (k < (2.5 / 2.75)) {\n return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\n }\n else {\n return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\n }\n },\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easingFuncs.bounceIn(k * 2) * 0.5;\n }\n return easingFuncs.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nexport default easingFuncs;\n","import { create as v2Create, distSquare as v2DistSquare } from './vector.js';\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3;\nvar _v0 = v2Create();\nvar _v1 = v2Create();\nvar _v2 = v2Create();\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nexport function cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1)\n + t * t * (t * p3 + 3 * onet * p2);\n}\nexport function cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\n + (p3 - p2) * t * t);\n}\nexport function cubicRootAt(p0, p1, p2, p3, val, roots) {\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n }\n else {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = B * B - 4 * A * C;\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K;\n var t2 = -K / 2;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n }\n else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n }\n else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n return n;\n}\nexport function cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123;\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\nexport function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n prev = t - interval;\n next = t + interval;\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n }\n return mathSqrt(d);\n}\nexport function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = cubicAt(x0, x1, x2, x3, t);\n var y = cubicAt(y0, y1, y2, y3, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\nexport function quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\nexport function quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\nexport function quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n if (divider === 0) {\n return 0.5;\n }\n else {\n return (p0 - p1) / divider;\n }\n}\nexport function quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\nexport function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n }\n return mathSqrt(d);\n}\nexport function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = quadraticAt(x0, x1, x2, t);\n var y = quadraticAt(y0, y1, y2, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\n","import { cubicAt, cubicRootAt } from '../core/curve.js';\nimport { trim } from '../core/util.js';\nvar regexp = /cubic-bezier\\(([0-9,\\.e ]+)\\)/;\nexport function createCubicEasingFunc(cubicEasingStr) {\n var cubic = cubicEasingStr && regexp.exec(cubicEasingStr);\n if (cubic) {\n var points = cubic[1].split(',');\n var a_1 = +trim(points[0]);\n var b_1 = +trim(points[1]);\n var c_1 = +trim(points[2]);\n var d_1 = +trim(points[3]);\n if (isNaN(a_1 + b_1 + c_1 + d_1)) {\n return;\n }\n var roots_1 = [];\n return function (p) {\n return p <= 0\n ? 0 : p >= 1\n ? 1\n : cubicRootAt(0, a_1, c_1, 1, p, roots_1) && cubicAt(0, b_1, d_1, 1, roots_1[0]);\n };\n }\n}\n","import easingFuncs from './easing.js';\nimport { isFunction, noop } from '../core/util.js';\nimport { createCubicEasingFunc } from './cubicEasing.js';\nvar Clip = (function () {\n function Clip(opts) {\n this._inited = false;\n this._startTime = 0;\n this._pausedTime = 0;\n this._paused = false;\n this._life = opts.life || 1000;\n this._delay = opts.delay || 0;\n this.loop = opts.loop || false;\n this.onframe = opts.onframe || noop;\n this.ondestroy = opts.ondestroy || noop;\n this.onrestart = opts.onrestart || noop;\n opts.easing && this.setEasing(opts.easing);\n }\n Clip.prototype.step = function (globalTime, deltaTime) {\n if (!this._inited) {\n this._startTime = globalTime + this._delay;\n this._inited = true;\n }\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n var life = this._life;\n var elapsedTime = globalTime - this._startTime - this._pausedTime;\n var percent = elapsedTime / life;\n if (percent < 0) {\n percent = 0;\n }\n percent = Math.min(percent, 1);\n var easingFunc = this.easingFunc;\n var schedule = easingFunc ? easingFunc(percent) : percent;\n this.onframe(schedule);\n if (percent === 1) {\n if (this.loop) {\n var remainder = elapsedTime % life;\n this._startTime = globalTime - remainder;\n this._pausedTime = 0;\n this.onrestart();\n }\n else {\n return true;\n }\n }\n return false;\n };\n Clip.prototype.pause = function () {\n this._paused = true;\n };\n Clip.prototype.resume = function () {\n this._paused = false;\n };\n Clip.prototype.setEasing = function (easing) {\n this.easing = easing;\n this.easingFunc = isFunction(easing)\n ? easing\n : easingFuncs[easing] || createCubicEasingFunc(easing);\n };\n return Clip;\n}());\nexport default Clip;\n","var Entry = (function () {\n function Entry(val) {\n this.value = val;\n }\n return Entry;\n}());\nexport { Entry };\nvar LinkedList = (function () {\n function LinkedList() {\n this._len = 0;\n }\n LinkedList.prototype.insert = function (val) {\n var entry = new Entry(val);\n this.insertEntry(entry);\n return entry;\n };\n LinkedList.prototype.insertEntry = function (entry) {\n if (!this.head) {\n this.head = this.tail = entry;\n }\n else {\n this.tail.next = entry;\n entry.prev = this.tail;\n entry.next = null;\n this.tail = entry;\n }\n this._len++;\n };\n LinkedList.prototype.remove = function (entry) {\n var prev = entry.prev;\n var next = entry.next;\n if (prev) {\n prev.next = next;\n }\n else {\n this.head = next;\n }\n if (next) {\n next.prev = prev;\n }\n else {\n this.tail = prev;\n }\n entry.next = entry.prev = null;\n this._len--;\n };\n LinkedList.prototype.len = function () {\n return this._len;\n };\n LinkedList.prototype.clear = function () {\n this.head = this.tail = null;\n this._len = 0;\n };\n return LinkedList;\n}());\nexport { LinkedList };\nvar LRU = (function () {\n function LRU(maxSize) {\n this._list = new LinkedList();\n this._maxSize = 10;\n this._map = {};\n this._maxSize = maxSize;\n }\n LRU.prototype.put = function (key, value) {\n var list = this._list;\n var map = this._map;\n var removed = null;\n if (map[key] == null) {\n var len = list.len();\n var entry = this._lastRemovedEntry;\n if (len >= this._maxSize && len > 0) {\n var leastUsedEntry = list.head;\n list.remove(leastUsedEntry);\n delete map[leastUsedEntry.key];\n removed = leastUsedEntry.value;\n this._lastRemovedEntry = leastUsedEntry;\n }\n if (entry) {\n entry.value = value;\n }\n else {\n entry = new Entry(value);\n }\n entry.key = key;\n list.insertEntry(entry);\n map[key] = entry;\n }\n return removed;\n };\n LRU.prototype.get = function (key) {\n var entry = this._map[key];\n var list = this._list;\n if (entry != null) {\n if (entry !== list.tail) {\n list.remove(entry);\n list.insertEntry(entry);\n }\n return entry.value;\n }\n };\n LRU.prototype.clear = function () {\n this._list.clear();\n this._map = {};\n };\n LRU.prototype.len = function () {\n return this._list.len();\n };\n return LRU;\n}());\nexport default LRU;\n","import LRU from '../core/LRU.js';\nvar kCSSColorTable = {\n 'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\n 'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\n 'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\n 'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\n 'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\n 'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\n 'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\n 'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\n 'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\n 'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\n 'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\n 'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\n 'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\n 'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\n 'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\n 'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\n 'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\n 'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\n 'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\n 'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\n 'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\n 'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\n 'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\n 'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\n 'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\n 'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\n 'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\n 'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\n 'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\n 'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\n 'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\n 'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\n 'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\n 'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\n 'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\n 'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\n 'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\n 'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\n 'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\n 'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\n 'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\n 'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\n 'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\n 'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\n 'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\n 'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\n 'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\n 'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\n 'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\n 'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\n 'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\n 'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\n 'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\n 'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\n 'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\n 'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\n 'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\n 'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\n 'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\n 'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\n 'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\n 'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\n 'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\n 'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\n 'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\n 'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\n 'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\n 'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\n 'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\n 'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\n 'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\n 'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\n 'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\n 'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\n};\nfunction clampCssByte(i) {\n i = Math.round(i);\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clampCssAngle(i) {\n i = Math.round(i);\n return i < 0 ? 0 : i > 360 ? 360 : i;\n}\nfunction clampCssFloat(f) {\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\nfunction parseCssInt(val) {\n var str = val;\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssByte(parseFloat(str) / 100 * 255);\n }\n return clampCssByte(parseInt(str, 10));\n}\nfunction parseCssFloat(val) {\n var str = val;\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssFloat(parseFloat(str) / 100);\n }\n return clampCssFloat(parseFloat(str));\n}\nfunction cssHueToRgb(m1, m2, h) {\n if (h < 0) {\n h += 1;\n }\n else if (h > 1) {\n h -= 1;\n }\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n if (h * 2 < 1) {\n return m2;\n }\n if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n return m1;\n}\nfunction lerpNumber(a, b, p) {\n return a + (b - a) * p;\n}\nfunction setRgba(out, r, g, b, a) {\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n}\nfunction copyRgba(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\nfunction putToCache(colorStr, rgbaArr) {\n if (lastRemovedArr) {\n copyRgba(lastRemovedArr, rgbaArr);\n }\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\n}\nexport function parse(colorStr, rgbaArr) {\n if (!colorStr) {\n return;\n }\n rgbaArr = rgbaArr || [];\n var cached = colorCache.get(colorStr);\n if (cached) {\n return copyRgba(rgbaArr, cached);\n }\n colorStr = colorStr + '';\n var str = colorStr.replace(/ /g, '').toLowerCase();\n if (str in kCSSColorTable) {\n copyRgba(rgbaArr, kCSSColorTable[str]);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n var strLen = str.length;\n if (str.charAt(0) === '#') {\n if (strLen === 4 || strLen === 5) {\n var iv = parseInt(str.slice(1, 4), 16);\n if (!(iv >= 0 && iv <= 0xfff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n else if (strLen === 7 || strLen === 9) {\n var iv = parseInt(str.slice(1, 7), 16);\n if (!(iv >= 0 && iv <= 0xffffff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n return;\n }\n var op = str.indexOf('(');\n var ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === strLen) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1;\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) {\n return params.length === 3\n ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1)\n : setRgba(rgbaArr, 0, 0, 0, 1);\n }\n alpha = parseCssFloat(params.pop());\n case 'rgb':\n if (params.length >= 3) {\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), params.length === 3 ? alpha : parseCssFloat(params[3]));\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n else {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n case 'hsla':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n params[3] = parseCssFloat(params[3]);\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n case 'hsl':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n default:\n return;\n }\n }\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n}\nfunction hsla2rgba(hsla, rgba) {\n var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\n var s = parseCssFloat(hsla[1]);\n var l = parseCssFloat(hsla[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n rgba = rgba || [];\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n if (hsla.length === 4) {\n rgba[3] = hsla[3];\n }\n return rgba;\n}\nfunction rgba2hsla(rgba) {\n if (!rgba) {\n return;\n }\n var R = rgba[0] / 255;\n var G = rgba[1] / 255;\n var B = rgba[2] / 255;\n var vMin = Math.min(R, G, B);\n var vMax = Math.max(R, G, B);\n var delta = vMax - vMin;\n var L = (vMax + vMin) / 2;\n var H;\n var S;\n if (delta === 0) {\n H = 0;\n S = 0;\n }\n else {\n if (L < 0.5) {\n S = delta / (vMax + vMin);\n }\n else {\n S = delta / (2 - vMax - vMin);\n }\n var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta;\n var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta;\n var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta;\n if (R === vMax) {\n H = deltaB - deltaG;\n }\n else if (G === vMax) {\n H = (1 / 3) + deltaR - deltaB;\n }\n else if (B === vMax) {\n H = (2 / 3) + deltaG - deltaR;\n }\n if (H < 0) {\n H += 1;\n }\n if (H > 1) {\n H -= 1;\n }\n }\n var hsla = [H * 360, S, L];\n if (rgba[3] != null) {\n hsla.push(rgba[3]);\n }\n return hsla;\n}\nexport function lift(color, level) {\n var colorArr = parse(color);\n if (colorArr) {\n for (var i = 0; i < 3; i++) {\n if (level < 0) {\n colorArr[i] = colorArr[i] * (1 - level) | 0;\n }\n else {\n colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\n }\n if (colorArr[i] > 255) {\n colorArr[i] = 255;\n }\n else if (colorArr[i] < 0) {\n colorArr[i] = 0;\n }\n }\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n }\n}\nexport function toHex(color) {\n var colorArr = parse(color);\n if (colorArr) {\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1);\n }\n}\nexport function fastLerp(normalizedValue, colors, out) {\n if (!(colors && colors.length)\n || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n out = out || [];\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = colors[leftIndex];\n var rightColor = colors[rightIndex];\n var dv = value - leftIndex;\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n return out;\n}\nexport var fastMapToColor = fastLerp;\nexport function lerp(normalizedValue, colors, fullOutput) {\n if (!(colors && colors.length)\n || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = parse(colors[leftIndex]);\n var rightColor = parse(colors[rightIndex]);\n var dv = value - leftIndex;\n var color = stringify([\n clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),\n clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),\n clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),\n clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))\n ], 'rgba');\n return fullOutput\n ? {\n color: color,\n leftIndex: leftIndex,\n rightIndex: rightIndex,\n value: value\n }\n : color;\n}\nexport var mapToColor = lerp;\nexport function modifyHSL(color, h, s, l) {\n var colorArr = parse(color);\n if (color) {\n colorArr = rgba2hsla(colorArr);\n h != null && (colorArr[0] = clampCssAngle(h));\n s != null && (colorArr[1] = parseCssFloat(s));\n l != null && (colorArr[2] = parseCssFloat(l));\n return stringify(hsla2rgba(colorArr), 'rgba');\n }\n}\nexport function modifyAlpha(color, alpha) {\n var colorArr = parse(color);\n if (colorArr && alpha != null) {\n colorArr[3] = clampCssFloat(alpha);\n return stringify(colorArr, 'rgba');\n }\n}\nexport function stringify(arrColor, type) {\n if (!arrColor || !arrColor.length) {\n return;\n }\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n colorStr += ',' + arrColor[3];\n }\n return type + '(' + colorStr + ')';\n}\nexport function lum(color, backgroundLum) {\n var arr = parse(color);\n return arr\n ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\n + (1 - arr[3]) * backgroundLum\n : 0;\n}\nexport function random() {\n return stringify([\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255)\n ], 'rgb');\n}\n","import { RADIAN_TO_DEGREE, retrieve2, logError, isFunction } from '../core/util.js';\nimport { parse } from '../tool/color.js';\nimport env from '../core/env.js';\nvar mathRound = Math.round;\nexport function normalizeColor(color) {\n var opacity;\n if (!color || color === 'transparent') {\n color = 'none';\n }\n else if (typeof color === 'string' && color.indexOf('rgba') > -1) {\n var arr = parse(color);\n if (arr) {\n color = 'rgb(' + arr[0] + ',' + arr[1] + ',' + arr[2] + ')';\n opacity = arr[3];\n }\n }\n return {\n color: color,\n opacity: opacity == null ? 1 : opacity\n };\n}\nvar EPSILON = 1e-4;\nexport function isAroundZero(transform) {\n return transform < EPSILON && transform > -EPSILON;\n}\nexport function round3(transform) {\n return mathRound(transform * 1e3) / 1e3;\n}\nexport function round4(transform) {\n return mathRound(transform * 1e4) / 1e4;\n}\nexport function round1(transform) {\n return mathRound(transform * 10) / 10;\n}\nexport function getMatrixStr(m) {\n return 'matrix('\n + round3(m[0]) + ','\n + round3(m[1]) + ','\n + round3(m[2]) + ','\n + round3(m[3]) + ','\n + round4(m[4]) + ','\n + round4(m[5])\n + ')';\n}\nexport var TEXT_ALIGN_TO_ANCHOR = {\n left: 'start',\n right: 'end',\n center: 'middle',\n middle: 'middle'\n};\nexport function adjustTextY(y, lineHeight, textBaseline) {\n if (textBaseline === 'top') {\n y += lineHeight / 2;\n }\n else if (textBaseline === 'bottom') {\n y -= lineHeight / 2;\n }\n return y;\n}\nexport function hasShadow(style) {\n return style\n && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);\n}\nexport function getShadowKey(displayable) {\n var style = displayable.style;\n var globalScale = displayable.getGlobalScale();\n return [\n style.shadowColor,\n (style.shadowBlur || 0).toFixed(2),\n (style.shadowOffsetX || 0).toFixed(2),\n (style.shadowOffsetY || 0).toFixed(2),\n globalScale[0],\n globalScale[1]\n ].join(',');\n}\nexport function getClipPathsKey(clipPaths) {\n var key = [];\n if (clipPaths) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n key.push(clipPath.id);\n }\n }\n return key.join(',');\n}\nexport function isImagePattern(val) {\n return val && (!!val.image);\n}\nexport function isSVGPattern(val) {\n return val && (!!val.svgElement);\n}\nexport function isPattern(val) {\n return isImagePattern(val) || isSVGPattern(val);\n}\nexport function isLinearGradient(val) {\n return val.type === 'linear';\n}\nexport function isRadialGradient(val) {\n return val.type === 'radial';\n}\nexport function isGradient(val) {\n return val && (val.type === 'linear'\n || val.type === 'radial');\n}\nexport function getIdURL(id) {\n return \"url(#\" + id + \")\";\n}\nexport function getPathPrecision(el) {\n var scale = el.getGlobalScale();\n var size = Math.max(scale[0], scale[1]);\n return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1);\n}\nexport function getSRTTransformString(transform) {\n var x = transform.x || 0;\n var y = transform.y || 0;\n var rotation = (transform.rotation || 0) * RADIAN_TO_DEGREE;\n var scaleX = retrieve2(transform.scaleX, 1);\n var scaleY = retrieve2(transform.scaleY, 1);\n var skewX = transform.skewX || 0;\n var skewY = transform.skewY || 0;\n var res = [];\n if (x || y) {\n res.push(\"translate(\" + x + \"px,\" + y + \"px)\");\n }\n if (rotation) {\n res.push(\"rotate(\" + rotation + \")\");\n }\n if (scaleX !== 1 || scaleY !== 1) {\n res.push(\"scale(\" + scaleX + \",\" + scaleY + \")\");\n }\n if (skewX || skewY) {\n res.push(\"skew(\" + mathRound(skewX * RADIAN_TO_DEGREE) + \"deg, \" + mathRound(skewY * RADIAN_TO_DEGREE) + \"deg)\");\n }\n return res.join(' ');\n}\nexport var encodeBase64 = (function () {\n if (env.hasGlobalWindow && isFunction(window.btoa)) {\n return function (str) {\n return window.btoa(unescape(encodeURIComponent(str)));\n };\n }\n if (typeof Buffer !== 'undefined') {\n return function (str) {\n return Buffer.from(str).toString('base64');\n };\n }\n return function (str) {\n if (process.env.NODE_ENV !== 'production') {\n logError('Base64 isn\\'t natively supported in the current environment.');\n }\n return null;\n };\n})();\n","import Clip from './Clip.js';\nimport * as color from '../tool/color.js';\nimport { eqNaN, extend, isArrayLike, isFunction, isGradientObject, isNumber, isString, keys, logError, map } from '../core/util.js';\nimport easingFuncs from './easing.js';\nimport { createCubicEasingFunc } from './cubicEasing.js';\nimport { isLinearGradient, isRadialGradient } from '../svg/helper.js';\n;\nvar arraySlice = Array.prototype.slice;\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\nfunction interpolate1DArray(out, p0, p1, percent) {\n var len = p0.length;\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n return out;\n}\nfunction interpolate2DArray(out, p0, p1, percent) {\n var len = p0.length;\n var len2 = len && p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[i] = [];\n }\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n return out;\n}\nfunction add1DArray(out, p0, p1, sign) {\n var len = p0.length;\n for (var i = 0; i < len; i++) {\n out[i] = p0[i] + p1[i] * sign;\n }\n return out;\n}\nfunction add2DArray(out, p0, p1, sign) {\n var len = p0.length;\n var len2 = len && p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[i] = [];\n }\n for (var j = 0; j < len2; j++) {\n out[i][j] = p0[i][j] + p1[i][j] * sign;\n }\n }\n return out;\n}\nfunction fillColorStops(val0, val1) {\n var len0 = val0.length;\n var len1 = val1.length;\n var shorterArr = len0 > len1 ? val1 : val0;\n var shorterLen = Math.min(len0, len1);\n var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 };\n for (var i = shorterLen; i < Math.max(len0, len1); i++) {\n shorterArr.push({\n offset: last.offset,\n color: last.color.slice()\n });\n }\n}\nfunction fillArray(val0, val1, arrDim) {\n var arr0 = val0;\n var arr1 = val1;\n if (!arr0.push || !arr1.push) {\n return;\n }\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n if (arr0Len !== arr1Len) {\n var isPreviousLarger = arr0Len > arr1Len;\n if (isPreviousLarger) {\n arr0.length = arr1Len;\n }\n else {\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n }\n var len2 = arr0[0] && arr0[0].length;\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n }\n else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\nexport function cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n if (isArrayLike(value[0])) {\n var ret = [];\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n return ret;\n }\n return arraySlice.call(value);\n }\n return value;\n}\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]) || 0;\n rgba[1] = Math.floor(rgba[1]) || 0;\n rgba[2] = Math.floor(rgba[2]) || 0;\n rgba[3] = rgba[3] == null ? 1 : rgba[3];\n return 'rgba(' + rgba.join(',') + ')';\n}\nfunction guessArrayDim(value) {\n return isArrayLike(value && value[0]) ? 2 : 1;\n}\nvar VALUE_TYPE_NUMBER = 0;\nvar VALUE_TYPE_1D_ARRAY = 1;\nvar VALUE_TYPE_2D_ARRAY = 2;\nvar VALUE_TYPE_COLOR = 3;\nvar VALUE_TYPE_LINEAR_GRADIENT = 4;\nvar VALUE_TYPE_RADIAL_GRADIENT = 5;\nvar VALUE_TYPE_UNKOWN = 6;\nfunction isGradientValueType(valType) {\n return valType === VALUE_TYPE_LINEAR_GRADIENT || valType === VALUE_TYPE_RADIAL_GRADIENT;\n}\nfunction isArrayValueType(valType) {\n return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY;\n}\nvar tmpRgba = [0, 0, 0, 0];\nvar Track = (function () {\n function Track(propName) {\n this.keyframes = [];\n this.discrete = false;\n this._invalid = false;\n this._needsSort = false;\n this._lastFr = 0;\n this._lastFrP = 0;\n this.propName = propName;\n }\n Track.prototype.isFinished = function () {\n return this._finished;\n };\n Track.prototype.setFinished = function () {\n this._finished = true;\n if (this._additiveTrack) {\n this._additiveTrack.setFinished();\n }\n };\n Track.prototype.needsAnimate = function () {\n return this.keyframes.length >= 1;\n };\n Track.prototype.getAdditiveTrack = function () {\n return this._additiveTrack;\n };\n Track.prototype.addKeyframe = function (time, rawValue, easing) {\n this._needsSort = true;\n var keyframes = this.keyframes;\n var len = keyframes.length;\n var discrete = false;\n var valType = VALUE_TYPE_UNKOWN;\n var value = rawValue;\n if (isArrayLike(rawValue)) {\n var arrayDim = guessArrayDim(rawValue);\n valType = arrayDim;\n if (arrayDim === 1 && !isNumber(rawValue[0])\n || arrayDim === 2 && !isNumber(rawValue[0][0])) {\n discrete = true;\n }\n }\n else {\n if (isNumber(rawValue) && !eqNaN(rawValue)) {\n valType = VALUE_TYPE_NUMBER;\n }\n else if (isString(rawValue)) {\n if (!isNaN(+rawValue)) {\n valType = VALUE_TYPE_NUMBER;\n }\n else {\n var colorArray = color.parse(rawValue);\n if (colorArray) {\n value = colorArray;\n valType = VALUE_TYPE_COLOR;\n }\n }\n }\n else if (isGradientObject(rawValue)) {\n var parsedGradient = extend({}, value);\n parsedGradient.colorStops = map(rawValue.colorStops, function (colorStop) { return ({\n offset: colorStop.offset,\n color: color.parse(colorStop.color)\n }); });\n if (isLinearGradient(rawValue)) {\n valType = VALUE_TYPE_LINEAR_GRADIENT;\n }\n else if (isRadialGradient(rawValue)) {\n valType = VALUE_TYPE_RADIAL_GRADIENT;\n }\n value = parsedGradient;\n }\n }\n if (len === 0) {\n this.valType = valType;\n }\n else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) {\n discrete = true;\n }\n this.discrete = this.discrete || discrete;\n var kf = {\n time: time,\n value: value,\n rawValue: rawValue,\n percent: 0\n };\n if (easing) {\n kf.easing = easing;\n kf.easingFunc = isFunction(easing)\n ? easing\n : easingFuncs[easing] || createCubicEasingFunc(easing);\n }\n keyframes.push(kf);\n return kf;\n };\n Track.prototype.prepare = function (maxTime, additiveTrack) {\n var kfs = this.keyframes;\n if (this._needsSort) {\n kfs.sort(function (a, b) {\n return a.time - b.time;\n });\n }\n var valType = this.valType;\n var kfsLen = kfs.length;\n var lastKf = kfs[kfsLen - 1];\n var isDiscrete = this.discrete;\n var isArr = isArrayValueType(valType);\n var isGradient = isGradientValueType(valType);\n for (var i = 0; i < kfsLen; i++) {\n var kf = kfs[i];\n var value = kf.value;\n var lastValue = lastKf.value;\n kf.percent = kf.time / maxTime;\n if (!isDiscrete) {\n if (isArr && i !== kfsLen - 1) {\n fillArray(value, lastValue, valType);\n }\n else if (isGradient) {\n fillColorStops(value.colorStops, lastValue.colorStops);\n }\n }\n }\n if (!isDiscrete\n && valType !== VALUE_TYPE_RADIAL_GRADIENT\n && additiveTrack\n && this.needsAnimate()\n && additiveTrack.needsAnimate()\n && valType === additiveTrack.valType\n && !additiveTrack._finished) {\n this._additiveTrack = additiveTrack;\n var startValue = kfs[0].value;\n for (var i = 0; i < kfsLen; i++) {\n if (valType === VALUE_TYPE_NUMBER) {\n kfs[i].additiveValue = kfs[i].value - startValue;\n }\n else if (valType === VALUE_TYPE_COLOR) {\n kfs[i].additiveValue =\n add1DArray([], kfs[i].value, startValue, -1);\n }\n else if (isArrayValueType(valType)) {\n kfs[i].additiveValue = valType === VALUE_TYPE_1D_ARRAY\n ? add1DArray([], kfs[i].value, startValue, -1)\n : add2DArray([], kfs[i].value, startValue, -1);\n }\n }\n }\n };\n Track.prototype.step = function (target, percent) {\n if (this._finished) {\n return;\n }\n if (this._additiveTrack && this._additiveTrack._finished) {\n this._additiveTrack = null;\n }\n var isAdditive = this._additiveTrack != null;\n var valueKey = isAdditive ? 'additiveValue' : 'value';\n var valType = this.valType;\n var keyframes = this.keyframes;\n var kfsNum = keyframes.length;\n var propName = this.propName;\n var isValueColor = valType === VALUE_TYPE_COLOR;\n var frameIdx;\n var lastFrame = this._lastFr;\n var mathMin = Math.min;\n var frame;\n var nextFrame;\n if (kfsNum === 1) {\n frame = nextFrame = keyframes[0];\n }\n else {\n if (percent < 0) {\n frameIdx = 0;\n }\n else if (percent < this._lastFrP) {\n var start = mathMin(lastFrame + 1, kfsNum - 1);\n for (frameIdx = start; frameIdx >= 0; frameIdx--) {\n if (keyframes[frameIdx].percent <= percent) {\n break;\n }\n }\n frameIdx = mathMin(frameIdx, kfsNum - 2);\n }\n else {\n for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) {\n if (keyframes[frameIdx].percent > percent) {\n break;\n }\n }\n frameIdx = mathMin(frameIdx - 1, kfsNum - 2);\n }\n nextFrame = keyframes[frameIdx + 1];\n frame = keyframes[frameIdx];\n }\n if (!(frame && nextFrame)) {\n return;\n }\n this._lastFr = frameIdx;\n this._lastFrP = percent;\n var interval = (nextFrame.percent - frame.percent);\n var w = interval === 0 ? 1 : mathMin((percent - frame.percent) / interval, 1);\n if (nextFrame.easingFunc) {\n w = nextFrame.easingFunc(w);\n }\n var targetArr = isAdditive ? this._additiveValue\n : (isValueColor ? tmpRgba : target[propName]);\n if ((isArrayValueType(valType) || isValueColor) && !targetArr) {\n targetArr = this._additiveValue = [];\n }\n if (this.discrete) {\n target[propName] = w < 1 ? frame.rawValue : nextFrame.rawValue;\n }\n else if (isArrayValueType(valType)) {\n valType === VALUE_TYPE_1D_ARRAY\n ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\n : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n }\n else if (isGradientValueType(valType)) {\n var val = frame[valueKey];\n var nextVal_1 = nextFrame[valueKey];\n var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT;\n target[propName] = {\n type: isLinearGradient_1 ? 'linear' : 'radial',\n x: interpolateNumber(val.x, nextVal_1.x, w),\n y: interpolateNumber(val.y, nextVal_1.y, w),\n colorStops: map(val.colorStops, function (colorStop, idx) {\n var nextColorStop = nextVal_1.colorStops[idx];\n return {\n offset: interpolateNumber(colorStop.offset, nextColorStop.offset, w),\n color: rgba2String(interpolate1DArray([], colorStop.color, nextColorStop.color, w))\n };\n }),\n global: nextVal_1.global\n };\n if (isLinearGradient_1) {\n target[propName].x2 = interpolateNumber(val.x2, nextVal_1.x2, w);\n target[propName].y2 = interpolateNumber(val.y2, nextVal_1.y2, w);\n }\n else {\n target[propName].r = interpolateNumber(val.r, nextVal_1.r, w);\n }\n }\n else if (isValueColor) {\n interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n if (!isAdditive) {\n target[propName] = rgba2String(targetArr);\n }\n }\n else {\n var value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\n if (isAdditive) {\n this._additiveValue = value;\n }\n else {\n target[propName] = value;\n }\n }\n if (isAdditive) {\n this._addToTarget(target);\n }\n };\n Track.prototype._addToTarget = function (target) {\n var valType = this.valType;\n var propName = this.propName;\n var additiveValue = this._additiveValue;\n if (valType === VALUE_TYPE_NUMBER) {\n target[propName] = target[propName] + additiveValue;\n }\n else if (valType === VALUE_TYPE_COLOR) {\n color.parse(target[propName], tmpRgba);\n add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\n target[propName] = rgba2String(tmpRgba);\n }\n else if (valType === VALUE_TYPE_1D_ARRAY) {\n add1DArray(target[propName], target[propName], additiveValue, 1);\n }\n else if (valType === VALUE_TYPE_2D_ARRAY) {\n add2DArray(target[propName], target[propName], additiveValue, 1);\n }\n };\n return Track;\n}());\nvar Animator = (function () {\n function Animator(target, loop, allowDiscreteAnimation, additiveTo) {\n this._tracks = {};\n this._trackKeys = [];\n this._maxTime = 0;\n this._started = 0;\n this._clip = null;\n this._target = target;\n this._loop = loop;\n if (loop && additiveTo) {\n logError('Can\\' use additive animation on looped animation.');\n return;\n }\n this._additiveAnimators = additiveTo;\n this._allowDiscrete = allowDiscreteAnimation;\n }\n Animator.prototype.getMaxTime = function () {\n return this._maxTime;\n };\n Animator.prototype.getDelay = function () {\n return this._delay;\n };\n Animator.prototype.getLoop = function () {\n return this._loop;\n };\n Animator.prototype.getTarget = function () {\n return this._target;\n };\n Animator.prototype.changeTarget = function (target) {\n this._target = target;\n };\n Animator.prototype.when = function (time, props, easing) {\n return this.whenWithKeys(time, props, keys(props), easing);\n };\n Animator.prototype.whenWithKeys = function (time, props, propNames, easing) {\n var tracks = this._tracks;\n for (var i = 0; i < propNames.length; i++) {\n var propName = propNames[i];\n var track = tracks[propName];\n if (!track) {\n track = tracks[propName] = new Track(propName);\n var initialValue = void 0;\n var additiveTrack = this._getAdditiveTrack(propName);\n if (additiveTrack) {\n var addtiveTrackKfs = additiveTrack.keyframes;\n var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1];\n initialValue = lastFinalKf && lastFinalKf.value;\n if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) {\n initialValue = rgba2String(initialValue);\n }\n }\n else {\n initialValue = this._target[propName];\n }\n if (initialValue == null) {\n continue;\n }\n if (time > 0) {\n track.addKeyframe(0, cloneValue(initialValue), easing);\n }\n this._trackKeys.push(propName);\n }\n track.addKeyframe(time, cloneValue(props[propName]), easing);\n }\n this._maxTime = Math.max(this._maxTime, time);\n return this;\n };\n Animator.prototype.pause = function () {\n this._clip.pause();\n this._paused = true;\n };\n Animator.prototype.resume = function () {\n this._clip.resume();\n this._paused = false;\n };\n Animator.prototype.isPaused = function () {\n return !!this._paused;\n };\n Animator.prototype.duration = function (duration) {\n this._maxTime = duration;\n this._force = true;\n return this;\n };\n Animator.prototype._doneCallback = function () {\n this._setTracksFinished();\n this._clip = null;\n var doneList = this._doneCbs;\n if (doneList) {\n var len = doneList.length;\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n }\n };\n Animator.prototype._abortedCallback = function () {\n this._setTracksFinished();\n var animation = this.animation;\n var abortedList = this._abortedCbs;\n if (animation) {\n animation.removeClip(this._clip);\n }\n this._clip = null;\n if (abortedList) {\n for (var i = 0; i < abortedList.length; i++) {\n abortedList[i].call(this);\n }\n }\n };\n Animator.prototype._setTracksFinished = function () {\n var tracks = this._tracks;\n var tracksKeys = this._trackKeys;\n for (var i = 0; i < tracksKeys.length; i++) {\n tracks[tracksKeys[i]].setFinished();\n }\n };\n Animator.prototype._getAdditiveTrack = function (trackName) {\n var additiveTrack;\n var additiveAnimators = this._additiveAnimators;\n if (additiveAnimators) {\n for (var i = 0; i < additiveAnimators.length; i++) {\n var track = additiveAnimators[i].getTrack(trackName);\n if (track) {\n additiveTrack = track;\n }\n }\n }\n return additiveTrack;\n };\n Animator.prototype.start = function (easing) {\n if (this._started > 0) {\n return;\n }\n this._started = 1;\n var self = this;\n var tracks = [];\n var maxTime = this._maxTime || 0;\n for (var i = 0; i < this._trackKeys.length; i++) {\n var propName = this._trackKeys[i];\n var track = this._tracks[propName];\n var additiveTrack = this._getAdditiveTrack(propName);\n var kfs = track.keyframes;\n var kfsNum = kfs.length;\n track.prepare(maxTime, additiveTrack);\n if (track.needsAnimate()) {\n if (!this._allowDiscrete && track.discrete) {\n var lastKf = kfs[kfsNum - 1];\n if (lastKf) {\n self._target[track.propName] = lastKf.rawValue;\n }\n track.setFinished();\n }\n else {\n tracks.push(track);\n }\n }\n }\n if (tracks.length || this._force) {\n var clip = new Clip({\n life: maxTime,\n loop: this._loop,\n delay: this._delay || 0,\n onframe: function (percent) {\n self._started = 2;\n var additiveAnimators = self._additiveAnimators;\n if (additiveAnimators) {\n var stillHasAdditiveAnimator = false;\n for (var i = 0; i < additiveAnimators.length; i++) {\n if (additiveAnimators[i]._clip) {\n stillHasAdditiveAnimator = true;\n break;\n }\n }\n if (!stillHasAdditiveAnimator) {\n self._additiveAnimators = null;\n }\n }\n for (var i = 0; i < tracks.length; i++) {\n tracks[i].step(self._target, percent);\n }\n var onframeList = self._onframeCbs;\n if (onframeList) {\n for (var i = 0; i < onframeList.length; i++) {\n onframeList[i](self._target, percent);\n }\n }\n },\n ondestroy: function () {\n self._doneCallback();\n }\n });\n this._clip = clip;\n if (this.animation) {\n this.animation.addClip(clip);\n }\n if (easing) {\n clip.setEasing(easing);\n }\n }\n else {\n this._doneCallback();\n }\n return this;\n };\n Animator.prototype.stop = function (forwardToLast) {\n if (!this._clip) {\n return;\n }\n var clip = this._clip;\n if (forwardToLast) {\n clip.onframe(1);\n }\n this._abortedCallback();\n };\n Animator.prototype.delay = function (time) {\n this._delay = time;\n return this;\n };\n Animator.prototype.during = function (cb) {\n if (cb) {\n if (!this._onframeCbs) {\n this._onframeCbs = [];\n }\n this._onframeCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.done = function (cb) {\n if (cb) {\n if (!this._doneCbs) {\n this._doneCbs = [];\n }\n this._doneCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.aborted = function (cb) {\n if (cb) {\n if (!this._abortedCbs) {\n this._abortedCbs = [];\n }\n this._abortedCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.getClip = function () {\n return this._clip;\n };\n Animator.prototype.getTrack = function (propName) {\n return this._tracks[propName];\n };\n Animator.prototype.getTracks = function () {\n var _this = this;\n return map(this._trackKeys, function (key) { return _this._tracks[key]; });\n };\n Animator.prototype.stopTracks = function (propNames, forwardToLast) {\n if (!propNames.length || !this._clip) {\n return true;\n }\n var tracks = this._tracks;\n var tracksKeys = this._trackKeys;\n for (var i = 0; i < propNames.length; i++) {\n var track = tracks[propNames[i]];\n if (track && !track.isFinished()) {\n if (forwardToLast) {\n track.step(this._target, 1);\n }\n else if (this._started === 1) {\n track.step(this._target, 0);\n }\n track.setFinished();\n }\n }\n var allAborted = true;\n for (var i = 0; i < tracksKeys.length; i++) {\n if (!tracks[tracksKeys[i]].isFinished()) {\n allAborted = false;\n break;\n }\n }\n if (allAborted) {\n this._abortedCallback();\n }\n return allAborted;\n };\n Animator.prototype.saveTo = function (target, trackKeys, firstOrLast) {\n if (!target) {\n return;\n }\n trackKeys = trackKeys || this._trackKeys;\n for (var i = 0; i < trackKeys.length; i++) {\n var propName = trackKeys[i];\n var track = this._tracks[propName];\n if (!track || track.isFinished()) {\n continue;\n }\n var kfs = track.keyframes;\n var kf = kfs[firstOrLast ? 0 : kfs.length - 1];\n if (kf) {\n target[propName] = cloneValue(kf.rawValue);\n }\n }\n };\n Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\n trackKeys = trackKeys || keys(finalProps);\n for (var i = 0; i < trackKeys.length; i++) {\n var propName = trackKeys[i];\n var track = this._tracks[propName];\n if (!track) {\n continue;\n }\n var kfs = track.keyframes;\n if (kfs.length > 1) {\n var lastKf = kfs.pop();\n track.addKeyframe(lastKf.time, finalProps[propName]);\n track.prepare(this._maxTime, track.getAdditiveTrack());\n }\n }\n };\n return Animator;\n}());\nexport default Animator;\n","import { __extends } from \"tslib\";\nimport Eventful from '../core/Eventful.js';\nimport requestAnimationFrame from './requestAnimationFrame.js';\nimport Animator from './Animator.js';\nexport function getTime() {\n return new Date().getTime();\n}\nvar Animation = (function (_super) {\n __extends(Animation, _super);\n function Animation(opts) {\n var _this = _super.call(this) || this;\n _this._running = false;\n _this._time = 0;\n _this._pausedTime = 0;\n _this._pauseStart = 0;\n _this._paused = false;\n opts = opts || {};\n _this.stage = opts.stage || {};\n return _this;\n }\n Animation.prototype.addClip = function (clip) {\n if (clip.animation) {\n this.removeClip(clip);\n }\n if (!this._head) {\n this._head = this._tail = clip;\n }\n else {\n this._tail.next = clip;\n clip.prev = this._tail;\n clip.next = null;\n this._tail = clip;\n }\n clip.animation = this;\n };\n Animation.prototype.addAnimator = function (animator) {\n animator.animation = this;\n var clip = animator.getClip();\n if (clip) {\n this.addClip(clip);\n }\n };\n Animation.prototype.removeClip = function (clip) {\n if (!clip.animation) {\n return;\n }\n var prev = clip.prev;\n var next = clip.next;\n if (prev) {\n prev.next = next;\n }\n else {\n this._head = next;\n }\n if (next) {\n next.prev = prev;\n }\n else {\n this._tail = prev;\n }\n clip.next = clip.prev = clip.animation = null;\n };\n Animation.prototype.removeAnimator = function (animator) {\n var clip = animator.getClip();\n if (clip) {\n this.removeClip(clip);\n }\n animator.animation = null;\n };\n Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\n var time = getTime() - this._pausedTime;\n var delta = time - this._time;\n var clip = this._head;\n while (clip) {\n var nextClip = clip.next;\n var finished = clip.step(time, delta);\n if (finished) {\n clip.ondestroy();\n this.removeClip(clip);\n clip = nextClip;\n }\n else {\n clip = nextClip;\n }\n }\n this._time = time;\n if (!notTriggerFrameAndStageUpdate) {\n this.trigger('frame', delta);\n this.stage.update && this.stage.update();\n }\n };\n Animation.prototype._startLoop = function () {\n var self = this;\n this._running = true;\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self.update();\n }\n }\n requestAnimationFrame(step);\n };\n Animation.prototype.start = function () {\n if (this._running) {\n return;\n }\n this._time = getTime();\n this._pausedTime = 0;\n this._startLoop();\n };\n Animation.prototype.stop = function () {\n this._running = false;\n };\n Animation.prototype.pause = function () {\n if (!this._paused) {\n this._pauseStart = getTime();\n this._paused = true;\n }\n };\n Animation.prototype.resume = function () {\n if (this._paused) {\n this._pausedTime += getTime() - this._pauseStart;\n this._paused = false;\n }\n };\n Animation.prototype.clear = function () {\n var clip = this._head;\n while (clip) {\n var nextClip = clip.next;\n clip.prev = clip.next = clip.animation = null;\n clip = nextClip;\n }\n this._head = this._tail = null;\n };\n Animation.prototype.isFinished = function () {\n return this._head == null;\n };\n Animation.prototype.animate = function (target, options) {\n options = options || {};\n this.start();\n var animator = new Animator(target, options.loop);\n this.addAnimator(animator);\n return animator;\n };\n return Animation;\n}(Eventful));\nexport default Animation;\n","import { __extends } from \"tslib\";\nimport { addEventListener, removeEventListener, normalizeEvent, getNativeEvent } from '../core/event.js';\nimport * as zrUtil from '../core/util.js';\nimport Eventful from '../core/Eventful.js';\nimport env from '../core/env.js';\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\nvar localNativeListenerNames = (function () {\n var mouseHandlerNames = [\n 'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n ];\n var touchHandlerNames = [\n 'touchstart', 'touchend', 'touchmove'\n ];\n var pointerEventNameMap = {\n pointerdown: 1, pointerup: 1, pointermove: 1, 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})();\nvar globalNativeListenerNames = {\n mouse: ['mousemove', 'mouseup'],\n pointer: ['pointermove', 'pointerup']\n};\nvar wheelEventSupported = false;\nfunction isPointerFromTouch(event) {\n var pointerType = event.pointerType;\n return pointerType === 'pen' || pointerType === 'touch';\n}\nfunction setTouchTimer(scope) {\n scope.touching = true;\n if (scope.touchTimer != null) {\n clearTimeout(scope.touchTimer);\n scope.touchTimer = null;\n }\n scope.touchTimer = setTimeout(function () {\n scope.touching = false;\n scope.touchTimer = null;\n }, 700);\n}\nfunction markTouch(event) {\n event && (event.zrByTouch = true);\n}\nfunction normalizeGlobalEvent(instance, event) {\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\nfunction isLocalEl(instance, el) {\n var elTmp = el;\n var isLocal = false;\n while (elTmp && elTmp.nodeType !== 9\n && !(isLocal = elTmp.domBelongToZr\n || (elTmp !== el && elTmp === instance.painterRoot))) {\n elTmp = elTmp.parentNode;\n }\n return isLocal;\n}\nvar FakeGlobalEvent = (function () {\n function FakeGlobalEvent(instance, event) {\n this.stopPropagation = zrUtil.noop;\n this.stopImmediatePropagation = zrUtil.noop;\n this.preventDefault = zrUtil.noop;\n this.type = event.type;\n this.target = this.currentTarget = instance.dom;\n this.pointerType = event.pointerType;\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n }\n return FakeGlobalEvent;\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 if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n this.__togglePointerCapture(true);\n }\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n event = normalizeEvent(this.dom, event);\n this.__togglePointerCapture(false);\n this.trigger('mouseup', event);\n },\n mouseout: function (event) {\n event = normalizeEvent(this.dom, event);\n var element = event.toElement || event.relatedTarget;\n if (!isLocalEl(this, element)) {\n if (this.__pointerCapturing) {\n event.zrEventControl = 'no_globalout';\n }\n this.trigger('mouseout', event);\n }\n },\n wheel: function (event) {\n wheelEventSupported = true;\n event = normalizeEvent(this.dom, event);\n this.trigger('mousewheel', event);\n },\n mousewheel: function (event) {\n if (wheelEventSupported) {\n return;\n }\n event = normalizeEvent(this.dom, event);\n this.trigger('mousewheel', event);\n },\n touchstart: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.__lastTouchMoment = new Date();\n this.handler.processGesture(event, 'start');\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');\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);\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);\n },\n pointermove: function (event) {\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 if (!isPointerFromTouch(event)) {\n localDOMHandlers.mouseout.call(this, event);\n }\n }\n};\nzrUtil.each(['click', 'dblclick', 'contextmenu'], function (name) {\n localDOMHandlers[name] = function (event) {\n event = normalizeEvent(this.dom, event);\n this.trigger(name, event);\n };\n});\nvar globalDOMHandlers = {\n pointermove: function (event) {\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 this.__togglePointerCapture(false);\n this.trigger('mouseup', event);\n if (pointerCaptureReleasing) {\n event.zrEventControl = 'only_globalout';\n this.trigger('mouseout', event);\n }\n }\n};\nfunction mountLocalDOMEventListeners(instance, scope) {\n var domHandlers = scope.domHandlers;\n if (env.pointerEventsSupported) {\n zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n domHandlers[nativeEventName].call(instance, event);\n });\n });\n }\n else {\n if (env.touchEventsSupported) {\n zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n domHandlers[nativeEventName].call(instance, event);\n setTouchTimer(scope);\n });\n });\n }\n zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n event = getNativeEvent(event);\n if (!scope.touching) {\n domHandlers[nativeEventName].call(instance, event);\n }\n });\n });\n }\n}\nfunction mountGlobalDOMEventListeners(instance, scope) {\n if (env.pointerEventsSupported) {\n zrUtil.each(globalNativeListenerNames.pointer, mount);\n }\n else if (!env.touchEventsSupported) {\n zrUtil.each(globalNativeListenerNames.mouse, mount);\n }\n function mount(nativeEventName) {\n function nativeEventListener(event) {\n event = getNativeEvent(event);\n if (!isLocalEl(instance, event.target)) {\n event = normalizeGlobalEvent(instance, event);\n scope.domHandlers[nativeEventName].call(instance, event);\n }\n }\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\n }\n}\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n scope.mounted[nativeEventName] = listener;\n scope.listenerOpts[nativeEventName] = opt;\n addEventListener(scope.domTarget, nativeEventName, listener, opt);\n}\nfunction unmountDOMEventListeners(scope) {\n var mounted = scope.mounted;\n for (var nativeEventName in mounted) {\n if (mounted.hasOwnProperty(nativeEventName)) {\n removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n }\n }\n scope.mounted = {};\n}\nvar DOMHandlerScope = (function () {\n function DOMHandlerScope(domTarget, domHandlers) {\n this.mounted = {};\n this.listenerOpts = {};\n this.touching = false;\n this.domTarget = domTarget;\n this.domHandlers = domHandlers;\n }\n return DOMHandlerScope;\n}());\nvar HandlerDomProxy = (function (_super) {\n __extends(HandlerDomProxy, _super);\n function HandlerDomProxy(dom, painterRoot) {\n var _this = _super.call(this) || this;\n _this.__pointerCapturing = false;\n _this.dom = dom;\n _this.painterRoot = painterRoot;\n _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n if (globalEventSupported) {\n _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n }\n mountLocalDOMEventListeners(_this, _this._localHandlerScope);\n return _this;\n }\n HandlerDomProxy.prototype.dispose = function () {\n unmountDOMEventListeners(this._localHandlerScope);\n if (globalEventSupported) {\n unmountDOMEventListeners(this._globalHandlerScope);\n }\n };\n HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n };\n HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\n this.__mayPointerCapture = null;\n if (globalEventSupported\n && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\n this.__pointerCapturing = isPointerCapturing;\n var globalHandlerScope = this._globalHandlerScope;\n isPointerCapturing\n ? mountGlobalDOMEventListeners(this, globalHandlerScope)\n : unmountDOMEventListeners(globalHandlerScope);\n }\n };\n return HandlerDomProxy;\n}(Eventful));\nexport default HandlerDomProxy;\n","import env from './core/env.js';\nvar dpr = 1;\nif (env.hasGlobalWindow) {\n dpr = Math.max(window.devicePixelRatio\n || (window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI)\n || 1, 1);\n}\nexport var debugMode = 0;\nexport var devicePixelRatio = dpr;\nexport var DARK_MODE_THRESHOLD = 0.4;\nexport var DARK_LABEL_COLOR = '#333';\nexport var LIGHT_LABEL_COLOR = '#ccc';\nexport var LIGHTER_LABEL_COLOR = '#eee';\n","import * as matrix from './matrix.js';\nimport * as vector from './vector.js';\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nvar scaleTmp = [];\nvar tmpTransform = [];\nvar originTransform = matrix.create();\nvar abs = Math.abs;\nvar Transformable = (function () {\n function Transformable() {\n }\n Transformable.prototype.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n };\n Transformable.prototype.setPosition = function (arr) {\n this.x = arr[0];\n this.y = arr[1];\n };\n Transformable.prototype.setScale = function (arr) {\n this.scaleX = arr[0];\n this.scaleY = arr[1];\n };\n Transformable.prototype.setSkew = function (arr) {\n this.skewX = arr[0];\n this.skewY = arr[1];\n };\n Transformable.prototype.setOrigin = function (arr) {\n this.originX = arr[0];\n this.originY = arr[1];\n };\n Transformable.prototype.needLocalTransform = function () {\n return isNotAroundZero(this.rotation)\n || isNotAroundZero(this.x)\n || isNotAroundZero(this.y)\n || isNotAroundZero(this.scaleX - 1)\n || isNotAroundZero(this.scaleY - 1)\n || isNotAroundZero(this.skewX)\n || isNotAroundZero(this.skewY);\n };\n Transformable.prototype.updateTransform = function () {\n var parentTransform = this.parent && this.parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n if (!(needLocalTransform || parentTransform)) {\n if (m) {\n mIdentity(m);\n this.invTransform = null;\n }\n return;\n }\n m = m || matrix.create();\n if (needLocalTransform) {\n this.getLocalTransform(m);\n }\n else {\n mIdentity(m);\n }\n if (parentTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parentTransform, m);\n }\n else {\n matrix.copy(m, parentTransform);\n }\n }\n this.transform = m;\n this._resolveGlobalScaleRatio(m);\n };\n Transformable.prototype._resolveGlobalScaleRatio = function (m) {\n var globalScaleRatio = this.globalScaleRatio;\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n };\n Transformable.prototype.getComputedTransform = function () {\n var transformNode = this;\n var ancestors = [];\n while (transformNode) {\n ancestors.push(transformNode);\n transformNode = transformNode.parent;\n }\n while (transformNode = ancestors.pop()) {\n transformNode.updateTransform();\n }\n return this.transform;\n };\n Transformable.prototype.setLocalTransform = function (m) {\n if (!m) {\n return;\n }\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var rotation = Math.atan2(m[1], m[0]);\n var shearX = Math.PI / 2 + rotation - Math.atan2(m[3], m[2]);\n sy = Math.sqrt(sy) * Math.cos(shearX);\n sx = Math.sqrt(sx);\n this.skewX = shearX;\n this.skewY = 0;\n this.rotation = -rotation;\n this.x = +m[4];\n this.y = +m[5];\n this.scaleX = sx;\n this.scaleY = sy;\n this.originX = 0;\n this.originY = 0;\n };\n Transformable.prototype.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n var parent = this.parent;\n var m = this.transform;\n if (parent && parent.transform) {\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n var ox = this.originX;\n var oy = this.originY;\n if (ox || oy) {\n originTransform[4] = ox;\n originTransform[5] = oy;\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= ox;\n tmpTransform[5] -= oy;\n m = tmpTransform;\n }\n this.setLocalTransform(m);\n };\n Transformable.prototype.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n return out;\n };\n Transformable.prototype.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n return v2;\n };\n Transformable.prototype.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n return v2;\n };\n Transformable.prototype.getLineScale = function () {\n var m = this.transform;\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\n ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\n : 1;\n };\n Transformable.prototype.copyTransform = function (source) {\n copyTransform(this, source);\n };\n Transformable.getLocalTransform = function (target, m) {\n m = m || [];\n var ox = target.originX || 0;\n var oy = target.originY || 0;\n var sx = target.scaleX;\n var sy = target.scaleY;\n var ax = target.anchorX;\n var ay = target.anchorY;\n var rotation = target.rotation || 0;\n var x = target.x;\n var y = target.y;\n var skewX = target.skewX ? Math.tan(target.skewX) : 0;\n var skewY = target.skewY ? Math.tan(-target.skewY) : 0;\n if (ox || oy || ax || ay) {\n var dx = ox + ax;\n var dy = oy + ay;\n m[4] = -dx * sx - skewX * dy * sy;\n m[5] = -dy * sy - skewY * dx * sx;\n }\n else {\n m[4] = m[5] = 0;\n }\n m[0] = sx;\n m[3] = sy;\n m[1] = skewY * sx;\n m[2] = skewX * sy;\n rotation && matrix.rotate(m, m, rotation);\n m[4] += ox + x;\n m[5] += oy + y;\n return m;\n };\n Transformable.initDefaultProps = (function () {\n var proto = Transformable.prototype;\n proto.scaleX =\n proto.scaleY =\n proto.globalScaleRatio = 1;\n proto.x =\n proto.y =\n proto.originX =\n proto.originY =\n proto.skewX =\n proto.skewY =\n proto.rotation =\n proto.anchorX =\n proto.anchorY = 0;\n })();\n return Transformable;\n}());\n;\nexport var TRANSFORMABLE_PROPS = [\n 'x', 'y', 'originX', 'originY', 'anchorX', 'anchorY', 'rotation', 'scaleX', 'scaleY', 'skewX', 'skewY'\n];\nexport function copyTransform(target, source) {\n for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {\n var propName = TRANSFORMABLE_PROPS[i];\n target[propName] = source[propName];\n }\n}\nexport default Transformable;\n","import BoundingRect from '../core/BoundingRect.js';\nimport LRU from '../core/LRU.js';\nimport { DEFAULT_FONT, platformApi } from '../core/platform.js';\nvar textWidthCache = {};\nexport function getWidth(text, font) {\n font = font || DEFAULT_FONT;\n var cacheOfFont = textWidthCache[font];\n if (!cacheOfFont) {\n cacheOfFont = textWidthCache[font] = new LRU(500);\n }\n var width = cacheOfFont.get(text);\n if (width == null) {\n width = platformApi.measureText(text, font).width;\n cacheOfFont.put(text, width);\n }\n return width;\n}\nexport function innerGetBoundingRect(text, font, textAlign, textBaseline) {\n var width = getWidth(text, font);\n var height = getLineHeight(font);\n var x = adjustTextX(0, width, textAlign);\n var y = adjustTextY(0, height, textBaseline);\n var rect = new BoundingRect(x, y, width, height);\n return rect;\n}\nexport function getBoundingRect(text, font, textAlign, textBaseline) {\n var textLines = ((text || '') + '').split('\\n');\n var len = textLines.length;\n if (len === 1) {\n return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\n }\n else {\n var uniondRect = new BoundingRect(0, 0, 0, 0);\n for (var i = 0; i < textLines.length; i++) {\n var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\n i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\n }\n return uniondRect;\n }\n}\nexport function adjustTextX(x, width, textAlign) {\n if (textAlign === 'right') {\n x -= width;\n }\n else if (textAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nexport function adjustTextY(y, height, verticalAlign) {\n if (verticalAlign === 'middle') {\n y -= height / 2;\n }\n else if (verticalAlign === 'bottom') {\n y -= height;\n }\n return y;\n}\nexport function getLineHeight(font) {\n return getWidth('国', font);\n}\nexport function measureText(text, font) {\n return platformApi.measureText(text, font);\n}\nexport function parsePercent(value, maxValue) {\n if (typeof value === 'string') {\n if (value.lastIndexOf('%') >= 0) {\n return parseFloat(value) / 100 * maxValue;\n }\n return parseFloat(value);\n }\n return value;\n}\nexport function calculateTextPosition(out, opts, rect) {\n var textPosition = opts.position || 'inside';\n var distance = opts.distance != null ? opts.distance : 5;\n var height = rect.height;\n var width = rect.width;\n var halfHeight = height / 2;\n var x = rect.x;\n var y = rect.y;\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n if (textPosition instanceof Array) {\n x += parsePercent(textPosition[0], rect.width);\n y += parsePercent(textPosition[1], rect.height);\n textAlign = null;\n textVerticalAlign = null;\n }\n else {\n switch (textPosition) {\n case 'left':\n x -= distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n case 'right':\n x += distance + width;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n case 'top':\n x += width / 2;\n y -= distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n case 'bottom':\n x += width / 2;\n y += height + distance;\n textAlign = 'center';\n break;\n case 'inside':\n x += width / 2;\n y += halfHeight;\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n case 'insideLeft':\n x += distance;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n case 'insideRight':\n x += width - distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n case 'insideTop':\n x += width / 2;\n y += distance;\n textAlign = 'center';\n break;\n case 'insideBottom':\n x += width / 2;\n y += height - distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n case 'insideTopLeft':\n x += distance;\n y += distance;\n break;\n case 'insideTopRight':\n x += width - distance;\n y += distance;\n textAlign = 'right';\n break;\n case 'insideBottomLeft':\n x += distance;\n y += height - distance;\n textVerticalAlign = 'bottom';\n break;\n case 'insideBottomRight':\n x += width - distance;\n y += height - distance;\n textAlign = 'right';\n textVerticalAlign = 'bottom';\n break;\n }\n }\n out = out || {};\n out.x = x;\n out.y = y;\n out.align = textAlign;\n out.verticalAlign = textVerticalAlign;\n return out;\n}\n","import Transformable, { TRANSFORMABLE_PROPS } from './core/Transformable.js';\nimport Animator, { cloneValue } from './animation/Animator.js';\nimport BoundingRect from './core/BoundingRect.js';\nimport Eventful from './core/Eventful.js';\nimport { calculateTextPosition, parsePercent } from './contain/text.js';\nimport { guid, isObject, keys, extend, indexOf, logError, mixin, isArrayLike, isTypedArray, isGradientObject, filter, reduce } from './core/util.js';\nimport { LIGHT_LABEL_COLOR, DARK_LABEL_COLOR } from './config.js';\nimport { parse, stringify } from './tool/color.js';\nimport { REDRAW_BIT } from './graphic/constants.js';\nexport var PRESERVED_NORMAL_STATE = '__zr_normal__';\nvar PRIMARY_STATES_KEYS = TRANSFORMABLE_PROPS.concat(['ignore']);\nvar DEFAULT_ANIMATABLE_MAP = reduce(TRANSFORMABLE_PROPS, function (obj, key) {\n obj[key] = true;\n return obj;\n}, { ignore: false });\nvar tmpTextPosCalcRes = {};\nvar tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\nvar Element = (function () {\n function Element(props) {\n this.id = guid();\n this.animators = [];\n this.currentStates = [];\n this.states = {};\n this._init(props);\n }\n Element.prototype._init = function (props) {\n this.attr(props);\n };\n Element.prototype.drift = function (dx, dy, e) {\n switch (this.draggable) {\n case 'horizontal':\n dy = 0;\n break;\n case 'vertical':\n dx = 0;\n break;\n }\n var m = this.transform;\n if (!m) {\n m = this.transform = [1, 0, 0, 1, 0, 0];\n }\n m[4] += dx;\n m[5] += dy;\n this.decomposeTransform();\n this.markRedraw();\n };\n Element.prototype.beforeUpdate = function () { };\n Element.prototype.afterUpdate = function () { };\n Element.prototype.update = function () {\n this.updateTransform();\n if (this.__dirty) {\n this.updateInnerText();\n }\n };\n Element.prototype.updateInnerText = function (forceUpdate) {\n var textEl = this._textContent;\n if (textEl && (!textEl.ignore || forceUpdate)) {\n if (!this.textConfig) {\n this.textConfig = {};\n }\n var textConfig = this.textConfig;\n var isLocal = textConfig.local;\n var innerTransformable = textEl.innerTransformable;\n var textAlign = void 0;\n var textVerticalAlign = void 0;\n var textStyleChanged = false;\n innerTransformable.parent = isLocal ? this : null;\n var innerOrigin = false;\n innerTransformable.copyTransform(textEl);\n if (textConfig.position != null) {\n var layoutRect = tmpBoundingRect;\n if (textConfig.layoutRect) {\n layoutRect.copy(textConfig.layoutRect);\n }\n else {\n layoutRect.copy(this.getBoundingRect());\n }\n if (!isLocal) {\n layoutRect.applyTransform(this.transform);\n }\n if (this.calculateTextPosition) {\n this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\n }\n else {\n calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\n }\n innerTransformable.x = tmpTextPosCalcRes.x;\n innerTransformable.y = tmpTextPosCalcRes.y;\n textAlign = tmpTextPosCalcRes.align;\n textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\n var textOrigin = textConfig.origin;\n if (textOrigin && textConfig.rotation != null) {\n var relOriginX = void 0;\n var relOriginY = void 0;\n if (textOrigin === 'center') {\n relOriginX = layoutRect.width * 0.5;\n relOriginY = layoutRect.height * 0.5;\n }\n else {\n relOriginX = parsePercent(textOrigin[0], layoutRect.width);\n relOriginY = parsePercent(textOrigin[1], layoutRect.height);\n }\n innerOrigin = true;\n innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x);\n innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y);\n }\n }\n if (textConfig.rotation != null) {\n innerTransformable.rotation = textConfig.rotation;\n }\n var textOffset = textConfig.offset;\n if (textOffset) {\n innerTransformable.x += textOffset[0];\n innerTransformable.y += textOffset[1];\n if (!innerOrigin) {\n innerTransformable.originX = -textOffset[0];\n innerTransformable.originY = -textOffset[1];\n }\n }\n var isInside = textConfig.inside == null\n ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\n : textConfig.inside;\n var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\n var textFill = void 0;\n var textStroke = void 0;\n var autoStroke = void 0;\n if (isInside && this.canBeInsideText()) {\n textFill = textConfig.insideFill;\n textStroke = textConfig.insideStroke;\n if (textFill == null || textFill === 'auto') {\n textFill = this.getInsideTextFill();\n }\n if (textStroke == null || textStroke === 'auto') {\n textStroke = this.getInsideTextStroke(textFill);\n autoStroke = true;\n }\n }\n else {\n textFill = textConfig.outsideFill;\n textStroke = textConfig.outsideStroke;\n if (textFill == null || textFill === 'auto') {\n textFill = this.getOutsideFill();\n }\n if (textStroke == null || textStroke === 'auto') {\n textStroke = this.getOutsideStroke(textFill);\n autoStroke = true;\n }\n }\n textFill = textFill || '#000';\n if (textFill !== innerTextDefaultStyle.fill\n || textStroke !== innerTextDefaultStyle.stroke\n || autoStroke !== innerTextDefaultStyle.autoStroke\n || textAlign !== innerTextDefaultStyle.align\n || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\n textStyleChanged = true;\n innerTextDefaultStyle.fill = textFill;\n innerTextDefaultStyle.stroke = textStroke;\n innerTextDefaultStyle.autoStroke = autoStroke;\n innerTextDefaultStyle.align = textAlign;\n innerTextDefaultStyle.verticalAlign = textVerticalAlign;\n textEl.setDefaultTextStyle(innerTextDefaultStyle);\n }\n textEl.__dirty |= REDRAW_BIT;\n if (textStyleChanged) {\n textEl.dirtyStyle(true);\n }\n }\n };\n Element.prototype.canBeInsideText = function () {\n return true;\n };\n Element.prototype.getInsideTextFill = function () {\n return '#fff';\n };\n Element.prototype.getInsideTextStroke = function (textFill) {\n return '#000';\n };\n Element.prototype.getOutsideFill = function () {\n return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\n };\n Element.prototype.getOutsideStroke = function (textFill) {\n var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\n var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\n if (!colorArr) {\n colorArr = [255, 255, 255, 1];\n }\n var alpha = colorArr[3];\n var isDark = this.__zr.isDarkMode();\n for (var i = 0; i < 3; i++) {\n colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);\n }\n colorArr[3] = 1;\n return stringify(colorArr, 'rgba');\n };\n Element.prototype.traverse = function (cb, context) { };\n Element.prototype.attrKV = function (key, value) {\n if (key === 'textConfig') {\n this.setTextConfig(value);\n }\n else if (key === 'textContent') {\n this.setTextContent(value);\n }\n else if (key === 'clipPath') {\n this.setClipPath(value);\n }\n else if (key === 'extra') {\n this.extra = this.extra || {};\n extend(this.extra, value);\n }\n else {\n this[key] = value;\n }\n };\n Element.prototype.hide = function () {\n this.ignore = true;\n this.markRedraw();\n };\n Element.prototype.show = function () {\n this.ignore = false;\n this.markRedraw();\n };\n Element.prototype.attr = function (keyOrObj, value) {\n if (typeof keyOrObj === 'string') {\n this.attrKV(keyOrObj, value);\n }\n else if (isObject(keyOrObj)) {\n var obj = keyOrObj;\n var keysArr = keys(obj);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n this.attrKV(key, keyOrObj[key]);\n }\n }\n this.markRedraw();\n return this;\n };\n Element.prototype.saveCurrentToNormalState = function (toState) {\n this._innerSaveToNormal(toState);\n var normalState = this._normalState;\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n var fromStateTransition = animator.__fromStateTransition;\n if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\n continue;\n }\n var targetName = animator.targetName;\n var target = targetName\n ? normalState[targetName] : normalState;\n animator.saveTo(target);\n }\n };\n Element.prototype._innerSaveToNormal = function (toState) {\n var normalState = this._normalState;\n if (!normalState) {\n normalState = this._normalState = {};\n }\n if (toState.textConfig && !normalState.textConfig) {\n normalState.textConfig = this.textConfig;\n }\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n };\n Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\n for (var i = 0; i < primaryKeys.length; i++) {\n var key = primaryKeys[i];\n if (toState[key] != null && !(key in normalState)) {\n normalState[key] = this[key];\n }\n }\n };\n Element.prototype.hasState = function () {\n return this.currentStates.length > 0;\n };\n Element.prototype.getState = function (name) {\n return this.states[name];\n };\n Element.prototype.ensureState = function (name) {\n var states = this.states;\n if (!states[name]) {\n states[name] = {};\n }\n return states[name];\n };\n Element.prototype.clearStates = function (noAnimation) {\n this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);\n };\n Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) {\n var toNormalState = stateName === PRESERVED_NORMAL_STATE;\n var hasStates = this.hasState();\n if (!hasStates && toNormalState) {\n return;\n }\n var currentStates = this.currentStates;\n var animationCfg = this.stateTransition;\n if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\n return;\n }\n var state;\n if (this.stateProxy && !toNormalState) {\n state = this.stateProxy(stateName);\n }\n if (!state) {\n state = (this.states && this.states[stateName]);\n }\n if (!state && !toNormalState) {\n logError(\"State \" + stateName + \" not exists.\");\n return;\n }\n if (!toNormalState) {\n this.saveCurrentToNormalState(state);\n }\n var useHoverLayer = !!((state && state.hoverLayer) || forceUseHoverLayer);\n if (useHoverLayer) {\n this._toggleHoverLayerFlag(true);\n }\n this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);\n }\n if (textGuide) {\n textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);\n }\n if (toNormalState) {\n this.currentStates = [];\n this._normalState = {};\n }\n else {\n if (!keepCurrentStates) {\n this.currentStates = [stateName];\n }\n else {\n this.currentStates.push(stateName);\n }\n }\n this._updateAnimationTargets();\n this.markRedraw();\n if (!useHoverLayer && this.__inHover) {\n this._toggleHoverLayerFlag(false);\n this.__dirty &= ~REDRAW_BIT;\n }\n return state;\n };\n Element.prototype.useStates = function (states, noAnimation, forceUseHoverLayer) {\n if (!states.length) {\n this.clearStates();\n }\n else {\n var stateObjects = [];\n var currentStates = this.currentStates;\n var len = states.length;\n var notChange = len === currentStates.length;\n if (notChange) {\n for (var i = 0; i < len; i++) {\n if (states[i] !== currentStates[i]) {\n notChange = false;\n break;\n }\n }\n }\n if (notChange) {\n return;\n }\n for (var i = 0; i < len; i++) {\n var stateName = states[i];\n var stateObj = void 0;\n if (this.stateProxy) {\n stateObj = this.stateProxy(stateName, states);\n }\n if (!stateObj) {\n stateObj = this.states[stateName];\n }\n if (stateObj) {\n stateObjects.push(stateObj);\n }\n }\n var lastStateObj = stateObjects[len - 1];\n var useHoverLayer = !!((lastStateObj && lastStateObj.hoverLayer) || forceUseHoverLayer);\n if (useHoverLayer) {\n this._toggleHoverLayerFlag(true);\n }\n var mergedState = this._mergeStates(stateObjects);\n var animationCfg = this.stateTransition;\n this.saveCurrentToNormalState(mergedState);\n this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.useStates(states, noAnimation, useHoverLayer);\n }\n if (textGuide) {\n textGuide.useStates(states, noAnimation, useHoverLayer);\n }\n this._updateAnimationTargets();\n this.currentStates = states.slice();\n this.markRedraw();\n if (!useHoverLayer && this.__inHover) {\n this._toggleHoverLayerFlag(false);\n this.__dirty &= ~REDRAW_BIT;\n }\n }\n };\n Element.prototype._updateAnimationTargets = function () {\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n if (animator.targetName) {\n animator.changeTarget(this[animator.targetName]);\n }\n }\n };\n Element.prototype.removeState = function (state) {\n var idx = indexOf(this.currentStates, state);\n if (idx >= 0) {\n var currentStates = this.currentStates.slice();\n currentStates.splice(idx, 1);\n this.useStates(currentStates);\n }\n };\n Element.prototype.replaceState = function (oldState, newState, forceAdd) {\n var currentStates = this.currentStates.slice();\n var idx = indexOf(currentStates, oldState);\n var newStateExists = indexOf(currentStates, newState) >= 0;\n if (idx >= 0) {\n if (!newStateExists) {\n currentStates[idx] = newState;\n }\n else {\n currentStates.splice(idx, 1);\n }\n }\n else if (forceAdd && !newStateExists) {\n currentStates.push(newState);\n }\n this.useStates(currentStates);\n };\n Element.prototype.toggleState = function (state, enable) {\n if (enable) {\n this.useState(state, true);\n }\n else {\n this.removeState(state);\n }\n };\n Element.prototype._mergeStates = function (states) {\n var mergedState = {};\n var mergedTextConfig;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n extend(mergedState, state);\n if (state.textConfig) {\n mergedTextConfig = mergedTextConfig || {};\n extend(mergedTextConfig, state.textConfig);\n }\n }\n if (mergedTextConfig) {\n mergedState.textConfig = mergedTextConfig;\n }\n return mergedState;\n };\n Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n var needsRestoreToNormal = !(state && keepCurrentStates);\n if (state && state.textConfig) {\n this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\n extend(this.textConfig, state.textConfig);\n }\n else if (needsRestoreToNormal) {\n if (normalState.textConfig) {\n this.textConfig = normalState.textConfig;\n }\n }\n var transitionTarget = {};\n var hasTransition = false;\n for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\n var key = PRIMARY_STATES_KEYS[i];\n var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\n if (state && state[key] != null) {\n if (propNeedsTransition) {\n hasTransition = true;\n transitionTarget[key] = state[key];\n }\n else {\n this[key] = state[key];\n }\n }\n else if (needsRestoreToNormal) {\n if (normalState[key] != null) {\n if (propNeedsTransition) {\n hasTransition = true;\n transitionTarget[key] = normalState[key];\n }\n else {\n this[key] = normalState[key];\n }\n }\n }\n }\n if (!transition) {\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n var targetName = animator.targetName;\n if (!animator.getLoop()) {\n animator.__changeFinalValue(targetName\n ? (state || normalState)[targetName]\n : (state || normalState));\n }\n }\n }\n if (hasTransition) {\n this._transitionState(stateName, transitionTarget, animationCfg);\n }\n };\n Element.prototype._attachComponent = function (componentEl) {\n if (componentEl.__zr && !componentEl.__hostTarget) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Text element has been added to zrender.');\n }\n return;\n }\n if (componentEl === this) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Recursive component attachment.');\n }\n return;\n }\n var zr = this.__zr;\n if (zr) {\n componentEl.addSelfToZr(zr);\n }\n componentEl.__zr = zr;\n componentEl.__hostTarget = this;\n };\n Element.prototype._detachComponent = function (componentEl) {\n if (componentEl.__zr) {\n componentEl.removeSelfFromZr(componentEl.__zr);\n }\n componentEl.__zr = null;\n componentEl.__hostTarget = null;\n };\n Element.prototype.getClipPath = function () {\n return this._clipPath;\n };\n Element.prototype.setClipPath = function (clipPath) {\n if (this._clipPath && this._clipPath !== clipPath) {\n this.removeClipPath();\n }\n this._attachComponent(clipPath);\n this._clipPath = clipPath;\n this.markRedraw();\n };\n Element.prototype.removeClipPath = function () {\n var clipPath = this._clipPath;\n if (clipPath) {\n this._detachComponent(clipPath);\n this._clipPath = null;\n this.markRedraw();\n }\n };\n Element.prototype.getTextContent = function () {\n return this._textContent;\n };\n Element.prototype.setTextContent = function (textEl) {\n var previousTextContent = this._textContent;\n if (previousTextContent === textEl) {\n return;\n }\n if (previousTextContent && previousTextContent !== textEl) {\n this.removeTextContent();\n }\n if (process.env.NODE_ENV !== 'production') {\n if (textEl.__zr && !textEl.__hostTarget) {\n throw new Error('Text element has been added to zrender.');\n }\n }\n textEl.innerTransformable = new Transformable();\n this._attachComponent(textEl);\n this._textContent = textEl;\n this.markRedraw();\n };\n Element.prototype.setTextConfig = function (cfg) {\n if (!this.textConfig) {\n this.textConfig = {};\n }\n extend(this.textConfig, cfg);\n this.markRedraw();\n };\n Element.prototype.removeTextConfig = function () {\n this.textConfig = null;\n this.markRedraw();\n };\n Element.prototype.removeTextContent = function () {\n var textEl = this._textContent;\n if (textEl) {\n textEl.innerTransformable = null;\n this._detachComponent(textEl);\n this._textContent = null;\n this._innerTextDefaultStyle = null;\n this.markRedraw();\n }\n };\n Element.prototype.getTextGuideLine = function () {\n return this._textGuide;\n };\n Element.prototype.setTextGuideLine = function (guideLine) {\n if (this._textGuide && this._textGuide !== guideLine) {\n this.removeTextGuideLine();\n }\n this._attachComponent(guideLine);\n this._textGuide = guideLine;\n this.markRedraw();\n };\n Element.prototype.removeTextGuideLine = function () {\n var textGuide = this._textGuide;\n if (textGuide) {\n this._detachComponent(textGuide);\n this._textGuide = null;\n this.markRedraw();\n }\n };\n Element.prototype.markRedraw = function () {\n this.__dirty |= REDRAW_BIT;\n var zr = this.__zr;\n if (zr) {\n if (this.__inHover) {\n zr.refreshHover();\n }\n else {\n zr.refresh();\n }\n }\n if (this.__hostTarget) {\n this.__hostTarget.markRedraw();\n }\n };\n Element.prototype.dirty = function () {\n this.markRedraw();\n };\n Element.prototype._toggleHoverLayerFlag = function (inHover) {\n this.__inHover = inHover;\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.__inHover = inHover;\n }\n if (textGuide) {\n textGuide.__inHover = inHover;\n }\n };\n Element.prototype.addSelfToZr = function (zr) {\n if (this.__zr === zr) {\n return;\n }\n this.__zr = zr;\n var animators = this.animators;\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.addAnimator(animators[i]);\n }\n }\n if (this._clipPath) {\n this._clipPath.addSelfToZr(zr);\n }\n if (this._textContent) {\n this._textContent.addSelfToZr(zr);\n }\n if (this._textGuide) {\n this._textGuide.addSelfToZr(zr);\n }\n };\n Element.prototype.removeSelfFromZr = function (zr) {\n if (!this.__zr) {\n return;\n }\n this.__zr = null;\n var animators = this.animators;\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.removeAnimator(animators[i]);\n }\n }\n if (this._clipPath) {\n this._clipPath.removeSelfFromZr(zr);\n }\n if (this._textContent) {\n this._textContent.removeSelfFromZr(zr);\n }\n if (this._textGuide) {\n this._textGuide.removeSelfFromZr(zr);\n }\n };\n Element.prototype.animate = function (key, loop, allowDiscreteAnimation) {\n var target = key ? this[key] : this;\n if (process.env.NODE_ENV !== 'production') {\n if (!target) {\n logError('Property \"'\n + key\n + '\" is not existed in element '\n + this.id);\n return;\n }\n }\n var animator = new Animator(target, loop, allowDiscreteAnimation);\n key && (animator.targetName = key);\n this.addAnimator(animator, key);\n return animator;\n };\n Element.prototype.addAnimator = function (animator, key) {\n var zr = this.__zr;\n var el = this;\n animator.during(function () {\n el.updateDuringAnimation(key);\n }).done(function () {\n var animators = el.animators;\n var idx = indexOf(animators, animator);\n if (idx >= 0) {\n animators.splice(idx, 1);\n }\n });\n this.animators.push(animator);\n if (zr) {\n zr.animation.addAnimator(animator);\n }\n zr && zr.wakeUp();\n };\n Element.prototype.updateDuringAnimation = function (key) {\n this.markRedraw();\n };\n Element.prototype.stopAnimation = function (scope, forwardToLast) {\n var animators = this.animators;\n var len = animators.length;\n var leftAnimators = [];\n for (var i = 0; i < len; i++) {\n var animator = animators[i];\n if (!scope || scope === animator.scope) {\n animator.stop(forwardToLast);\n }\n else {\n leftAnimators.push(animator);\n }\n }\n this.animators = leftAnimators;\n return this;\n };\n Element.prototype.animateTo = function (target, cfg, animationProps) {\n animateTo(this, target, cfg, animationProps);\n };\n Element.prototype.animateFrom = function (target, cfg, animationProps) {\n animateTo(this, target, cfg, animationProps, true);\n };\n Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\n var animators = animateTo(this, target, cfg, animationProps);\n for (var i = 0; i < animators.length; i++) {\n animators[i].__fromStateTransition = stateName;\n }\n };\n Element.prototype.getBoundingRect = function () {\n return null;\n };\n Element.prototype.getPaintRect = function () {\n return null;\n };\n Element.initDefaultProps = (function () {\n var elProto = Element.prototype;\n elProto.type = 'element';\n elProto.name = '';\n elProto.ignore =\n elProto.silent =\n elProto.isGroup =\n elProto.draggable =\n elProto.dragging =\n elProto.ignoreClip =\n elProto.__inHover = false;\n elProto.__dirty = REDRAW_BIT;\n var logs = {};\n function logDeprecatedError(key, xKey, yKey) {\n if (!logs[key + xKey + yKey]) {\n console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\n logs[key + xKey + yKey] = true;\n }\n }\n function createLegacyProperty(key, privateKey, xKey, yKey) {\n Object.defineProperty(elProto, key, {\n get: function () {\n if (process.env.NODE_ENV !== 'production') {\n logDeprecatedError(key, xKey, yKey);\n }\n if (!this[privateKey]) {\n var pos = this[privateKey] = [];\n enhanceArray(this, pos);\n }\n return this[privateKey];\n },\n set: function (pos) {\n if (process.env.NODE_ENV !== 'production') {\n logDeprecatedError(key, xKey, yKey);\n }\n this[xKey] = pos[0];\n this[yKey] = pos[1];\n this[privateKey] = pos;\n enhanceArray(this, pos);\n }\n });\n function enhanceArray(self, pos) {\n Object.defineProperty(pos, 0, {\n get: function () {\n return self[xKey];\n },\n set: function (val) {\n self[xKey] = val;\n }\n });\n Object.defineProperty(pos, 1, {\n get: function () {\n return self[yKey];\n },\n set: function (val) {\n self[yKey] = val;\n }\n });\n }\n }\n if (Object.defineProperty) {\n createLegacyProperty('position', '_legacyPos', 'x', 'y');\n createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\n createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\n }\n })();\n return Element;\n}());\nmixin(Element, Eventful);\nmixin(Element, Transformable);\nfunction animateTo(animatable, target, cfg, animationProps, reverse) {\n cfg = cfg || {};\n var animators = [];\n animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\n var finishCount = animators.length;\n var doneHappened = false;\n var cfgDone = cfg.done;\n var cfgAborted = cfg.aborted;\n var doneCb = function () {\n doneHappened = true;\n finishCount--;\n if (finishCount <= 0) {\n doneHappened\n ? (cfgDone && cfgDone())\n : (cfgAborted && cfgAborted());\n }\n };\n var abortedCb = function () {\n finishCount--;\n if (finishCount <= 0) {\n doneHappened\n ? (cfgDone && cfgDone())\n : (cfgAborted && cfgAborted());\n }\n };\n if (!finishCount) {\n cfgDone && cfgDone();\n }\n if (animators.length > 0 && cfg.during) {\n animators[0].during(function (target, percent) {\n cfg.during(percent);\n });\n }\n for (var i = 0; i < animators.length; i++) {\n var animator = animators[i];\n if (doneCb) {\n animator.done(doneCb);\n }\n if (abortedCb) {\n animator.aborted(abortedCb);\n }\n if (cfg.force) {\n animator.duration(cfg.duration);\n }\n animator.start(cfg.easing);\n }\n return animators;\n}\nfunction copyArrShallow(source, target, len) {\n for (var i = 0; i < len; i++) {\n source[i] = target[i];\n }\n}\nfunction is2DArray(value) {\n return isArrayLike(value[0]);\n}\nfunction copyValue(target, source, key) {\n if (isArrayLike(source[key])) {\n if (!isArrayLike(target[key])) {\n target[key] = [];\n }\n if (isTypedArray(source[key])) {\n var len = source[key].length;\n if (target[key].length !== len) {\n target[key] = new (source[key].constructor)(len);\n copyArrShallow(target[key], source[key], len);\n }\n }\n else {\n var sourceArr = source[key];\n var targetArr = target[key];\n var len0 = sourceArr.length;\n if (is2DArray(sourceArr)) {\n var len1 = sourceArr[0].length;\n for (var i = 0; i < len0; i++) {\n if (!targetArr[i]) {\n targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\n }\n else {\n copyArrShallow(targetArr[i], sourceArr[i], len1);\n }\n }\n }\n else {\n copyArrShallow(targetArr, sourceArr, len0);\n }\n targetArr.length = sourceArr.length;\n }\n }\n else {\n target[key] = source[key];\n }\n}\nfunction isValueSame(val1, val2) {\n return val1 === val2\n || isArrayLike(val1) && isArrayLike(val2) && is1DArraySame(val1, val2);\n}\nfunction is1DArraySame(arr0, arr1) {\n var len = arr0.length;\n if (len !== arr1.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n return true;\n}\nfunction animateToShallow(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse) {\n var targetKeys = keys(target);\n var duration = cfg.duration;\n var delay = cfg.delay;\n var additive = cfg.additive;\n var setToFinal = cfg.setToFinal;\n var animateAll = !isObject(animationProps);\n var existsAnimators = animatable.animators;\n var animationKeys = [];\n for (var k = 0; k < targetKeys.length; k++) {\n var innerKey = targetKeys[k];\n var targetVal = target[innerKey];\n if (targetVal != null && animateObj[innerKey] != null\n && (animateAll || animationProps[innerKey])) {\n if (isObject(targetVal)\n && !isArrayLike(targetVal)\n && !isGradientObject(targetVal)) {\n if (topKey) {\n if (!reverse) {\n animateObj[innerKey] = targetVal;\n animatable.updateDuringAnimation(topKey);\n }\n continue;\n }\n animateToShallow(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse);\n }\n else {\n animationKeys.push(innerKey);\n }\n }\n else if (!reverse) {\n animateObj[innerKey] = targetVal;\n animatable.updateDuringAnimation(topKey);\n animationKeys.push(innerKey);\n }\n }\n var keyLen = animationKeys.length;\n if (!additive && keyLen) {\n for (var i = 0; i < existsAnimators.length; i++) {\n var animator = existsAnimators[i];\n if (animator.targetName === topKey) {\n var allAborted = animator.stopTracks(animationKeys);\n if (allAborted) {\n var idx = indexOf(existsAnimators, animator);\n existsAnimators.splice(idx, 1);\n }\n }\n }\n }\n if (!cfg.force) {\n animationKeys = filter(animationKeys, function (key) { return !isValueSame(target[key], animateObj[key]); });\n keyLen = animationKeys.length;\n }\n if (keyLen > 0\n || (cfg.force && !animators.length)) {\n var revertedSource = void 0;\n var reversedTarget = void 0;\n var sourceClone = void 0;\n if (reverse) {\n reversedTarget = {};\n if (setToFinal) {\n revertedSource = {};\n }\n for (var i = 0; i < keyLen; i++) {\n var innerKey = animationKeys[i];\n reversedTarget[innerKey] = animateObj[innerKey];\n if (setToFinal) {\n revertedSource[innerKey] = target[innerKey];\n }\n else {\n animateObj[innerKey] = target[innerKey];\n }\n }\n }\n else if (setToFinal) {\n sourceClone = {};\n for (var i = 0; i < keyLen; i++) {\n var innerKey = animationKeys[i];\n sourceClone[innerKey] = cloneValue(animateObj[innerKey]);\n copyValue(animateObj, target, innerKey);\n }\n }\n var animator = new Animator(animateObj, false, false, additive ? filter(existsAnimators, function (animator) { return animator.targetName === topKey; }) : null);\n animator.targetName = topKey;\n if (cfg.scope) {\n animator.scope = cfg.scope;\n }\n if (setToFinal && revertedSource) {\n animator.whenWithKeys(0, revertedSource, animationKeys);\n }\n if (sourceClone) {\n animator.whenWithKeys(0, sourceClone, animationKeys);\n }\n animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animationKeys).delay(delay || 0);\n animatable.addAnimator(animator, topKey);\n animators.push(animator);\n }\n}\nexport default Element;\n","import { __extends } from \"tslib\";\nimport * as zrUtil from '../core/util.js';\nimport Element from '../Element.js';\nimport BoundingRect from '../core/BoundingRect.js';\nvar Group = (function (_super) {\n __extends(Group, _super);\n function Group(opts) {\n var _this = _super.call(this) || this;\n _this.isGroup = true;\n _this._children = [];\n _this.attr(opts);\n return _this;\n }\n Group.prototype.childrenRef = function () {\n return this._children;\n };\n Group.prototype.children = function () {\n return this._children.slice();\n };\n Group.prototype.childAt = function (idx) {\n return this._children[idx];\n };\n Group.prototype.childOfName = function (name) {\n var children = this._children;\n for (var i = 0; i < children.length; i++) {\n if (children[i].name === name) {\n return children[i];\n }\n }\n };\n Group.prototype.childCount = function () {\n return this._children.length;\n };\n Group.prototype.add = function (child) {\n if (child) {\n if (child !== this && child.parent !== this) {\n this._children.push(child);\n this._doAdd(child);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (child.__hostTarget) {\n throw 'This elemenet has been used as an attachment';\n }\n }\n }\n return this;\n };\n Group.prototype.addBefore = function (child, nextSibling) {\n if (child && child !== this && child.parent !== this\n && nextSibling && nextSibling.parent === this) {\n var children = this._children;\n var idx = children.indexOf(nextSibling);\n if (idx >= 0) {\n children.splice(idx, 0, child);\n this._doAdd(child);\n }\n }\n return this;\n };\n Group.prototype.replace = function (oldChild, newChild) {\n var idx = zrUtil.indexOf(this._children, oldChild);\n if (idx >= 0) {\n this.replaceAt(newChild, idx);\n }\n return this;\n };\n Group.prototype.replaceAt = function (child, index) {\n var children = this._children;\n var old = children[index];\n if (child && child !== this && child.parent !== this && child !== old) {\n children[index] = child;\n old.parent = null;\n var zr = this.__zr;\n if (zr) {\n old.removeSelfFromZr(zr);\n }\n this._doAdd(child);\n }\n return this;\n };\n Group.prototype._doAdd = function (child) {\n if (child.parent) {\n child.parent.remove(child);\n }\n child.parent = this;\n var zr = this.__zr;\n if (zr && zr !== child.__zr) {\n child.addSelfToZr(zr);\n }\n zr && zr.refresh();\n };\n Group.prototype.remove = function (child) {\n var zr = this.__zr;\n var children = this._children;\n var idx = zrUtil.indexOf(children, child);\n if (idx < 0) {\n return this;\n }\n children.splice(idx, 1);\n child.parent = null;\n if (zr) {\n child.removeSelfFromZr(zr);\n }\n zr && zr.refresh();\n return this;\n };\n Group.prototype.removeAll = function () {\n var children = this._children;\n var zr = this.__zr;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (zr) {\n child.removeSelfFromZr(zr);\n }\n child.parent = null;\n }\n children.length = 0;\n return this;\n };\n Group.prototype.eachChild = function (cb, context) {\n var children = this._children;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n cb.call(context, child, i);\n }\n return this;\n };\n Group.prototype.traverse = function (cb, context) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n var stopped = cb.call(context, child);\n if (child.isGroup && !stopped) {\n child.traverse(cb, context);\n }\n }\n return this;\n };\n Group.prototype.addSelfToZr = function (zr) {\n _super.prototype.addSelfToZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.addSelfToZr(zr);\n }\n };\n Group.prototype.removeSelfFromZr = function (zr) {\n _super.prototype.removeSelfFromZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.removeSelfFromZr(zr);\n }\n };\n Group.prototype.getBoundingRect = function (includeChildren) {\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = includeChildren || this._children;\n var tmpMat = [];\n var rect = null;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.ignore || child.invisible) {\n continue;\n }\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat);\n if (transform) {\n BoundingRect.applyTransform(tmpRect, childRect, transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n }\n else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n return rect || tmpRect;\n };\n return Group;\n}(Element));\nGroup.prototype.type = 'group';\nexport default Group;\n","/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nimport env from './core/env.js';\nimport * as zrUtil from './core/util.js';\nimport Handler from './Handler.js';\nimport Storage from './Storage.js';\nimport Animation, { getTime } from './animation/Animation.js';\nimport HandlerProxy from './dom/HandlerProxy.js';\nimport { lum } from './tool/color.js';\nimport { DARK_MODE_THRESHOLD } from './config.js';\nimport Group from './graphic/Group.js';\nvar painterCtors = {};\nvar instances = {};\nfunction delInstance(id) {\n delete instances[id];\n}\nfunction isDarkMode(backgroundColor) {\n if (!backgroundColor) {\n return false;\n }\n if (typeof backgroundColor === 'string') {\n return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\n }\n else if (backgroundColor.colorStops) {\n var colorStops = backgroundColor.colorStops;\n var totalLum = 0;\n var len = colorStops.length;\n for (var i = 0; i < len; i++) {\n totalLum += lum(colorStops[i].color, 1);\n }\n totalLum /= len;\n return totalLum < DARK_MODE_THRESHOLD;\n }\n return false;\n}\nvar ZRender = (function () {\n function ZRender(id, dom, opts) {\n var _this = this;\n this._sleepAfterStill = 10;\n this._stillFrameAccum = 0;\n this._needsRefresh = true;\n this._needsRefreshHover = true;\n this._darkMode = false;\n opts = opts || {};\n this.dom = dom;\n this.id = id;\n var storage = new Storage();\n var rendererType = opts.renderer || 'canvas';\n if (!painterCtors[rendererType]) {\n rendererType = zrUtil.keys(painterCtors)[0];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!painterCtors[rendererType]) {\n throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\n }\n }\n opts.useDirtyRect = opts.useDirtyRect == null\n ? false\n : opts.useDirtyRect;\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n var ssrMode = opts.ssr || painter.ssrOnly;\n this.storage = storage;\n this.painter = painter;\n var handerProxy = (!env.node && !env.worker && !ssrMode)\n ? new HandlerProxy(painter.getViewportRoot(), painter.root)\n : null;\n var useCoarsePointer = opts.useCoarsePointer;\n var usePointerSize = (useCoarsePointer == null || useCoarsePointer === 'auto')\n ? env.touchEventsSupported\n : !!useCoarsePointer;\n var defaultPointerSize = 44;\n var pointerSize;\n if (usePointerSize) {\n pointerSize = zrUtil.retrieve2(opts.pointerSize, defaultPointerSize);\n }\n this.handler = new Handler(storage, painter, handerProxy, painter.root, pointerSize);\n this.animation = new Animation({\n stage: {\n update: ssrMode ? null : function () { return _this._flush(true); }\n }\n });\n if (!ssrMode) {\n this.animation.start();\n }\n }\n ZRender.prototype.add = function (el) {\n if (!el) {\n return;\n }\n this.storage.addRoot(el);\n el.addSelfToZr(this);\n this.refresh();\n };\n ZRender.prototype.remove = function (el) {\n if (!el) {\n return;\n }\n this.storage.delRoot(el);\n el.removeSelfFromZr(this);\n this.refresh();\n };\n ZRender.prototype.configLayer = function (zLevel, config) {\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n this.refresh();\n };\n ZRender.prototype.setBackgroundColor = function (backgroundColor) {\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n this.refresh();\n this._backgroundColor = backgroundColor;\n this._darkMode = isDarkMode(backgroundColor);\n };\n ZRender.prototype.getBackgroundColor = function () {\n return this._backgroundColor;\n };\n ZRender.prototype.setDarkMode = function (darkMode) {\n this._darkMode = darkMode;\n };\n ZRender.prototype.isDarkMode = function () {\n return this._darkMode;\n };\n ZRender.prototype.refreshImmediately = function (fromInside) {\n if (!fromInside) {\n this.animation.update(true);\n }\n this._needsRefresh = false;\n this.painter.refresh();\n this._needsRefresh = false;\n };\n ZRender.prototype.refresh = function () {\n this._needsRefresh = true;\n this.animation.start();\n };\n ZRender.prototype.flush = function () {\n this._flush(false);\n };\n ZRender.prototype._flush = function (fromInside) {\n var triggerRendered;\n var start = getTime();\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately(fromInside);\n }\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n var end = getTime();\n if (triggerRendered) {\n this._stillFrameAccum = 0;\n this.trigger('rendered', {\n elapsedTime: end - start\n });\n }\n else if (this._sleepAfterStill > 0) {\n this._stillFrameAccum++;\n if (this._stillFrameAccum > this._sleepAfterStill) {\n this.animation.stop();\n }\n }\n };\n ZRender.prototype.setSleepAfterStill = function (stillFramesCount) {\n this._sleepAfterStill = stillFramesCount;\n };\n ZRender.prototype.wakeUp = function () {\n this.animation.start();\n this._stillFrameAccum = 0;\n };\n ZRender.prototype.refreshHover = function () {\n this._needsRefreshHover = true;\n };\n ZRender.prototype.refreshHoverImmediately = function () {\n this._needsRefreshHover = false;\n if (this.painter.refreshHover && this.painter.getType() === 'canvas') {\n this.painter.refreshHover();\n }\n };\n ZRender.prototype.resize = function (opts) {\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n };\n ZRender.prototype.clearAnimation = function () {\n this.animation.clear();\n };\n ZRender.prototype.getWidth = function () {\n return this.painter.getWidth();\n };\n ZRender.prototype.getHeight = function () {\n return this.painter.getHeight();\n };\n ZRender.prototype.setCursorStyle = function (cursorStyle) {\n this.handler.setCursorStyle(cursorStyle);\n };\n ZRender.prototype.findHover = function (x, y) {\n return this.handler.findHover(x, y);\n };\n ZRender.prototype.on = function (eventName, eventHandler, context) {\n this.handler.on(eventName, eventHandler, context);\n return this;\n };\n ZRender.prototype.off = function (eventName, eventHandler) {\n this.handler.off(eventName, eventHandler);\n };\n ZRender.prototype.trigger = function (eventName, event) {\n this.handler.trigger(eventName, event);\n };\n ZRender.prototype.clear = function () {\n var roots = this.storage.getRoots();\n for (var i = 0; i < roots.length; i++) {\n if (roots[i] instanceof Group) {\n roots[i].removeSelfFromZr(this);\n }\n }\n this.storage.delAllRoots();\n this.painter.clear();\n };\n ZRender.prototype.dispose = function () {\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation =\n this.storage =\n this.painter =\n this.handler = null;\n delInstance(this.id);\n };\n return ZRender;\n}());\nexport function init(dom, opts) {\n var zr = new ZRender(zrUtil.guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\nexport function dispose(zr) {\n zr.dispose();\n}\nexport function disposeAll() {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n instances = {};\n}\nexport function getInstance(id) {\n return instances[id];\n}\nexport function registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\nexport var version = '5.4.4';\n;\n","import LRU from '../../core/LRU.js';\nimport { platformApi } from '../../core/platform.js';\nvar globalImageCache = new LRU(50);\nexport function findExistImage(newImageOrSrc) {\n if (typeof newImageOrSrc === 'string') {\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n return cachedImgObj && cachedImgObj.image;\n }\n else {\n return newImageOrSrc;\n }\n}\nexport function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\n if (!newImageOrSrc) {\n return image;\n }\n else if (typeof newImageOrSrc === 'string') {\n if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\n return image;\n }\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\n if (cachedImgObj) {\n image = cachedImgObj.image;\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n }\n else {\n image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad);\n image.__zrImageSrc = newImageOrSrc;\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n image: image,\n pending: [pendingWrap]\n });\n }\n return image;\n }\n else {\n return newImageOrSrc;\n }\n}\nfunction imageOnLoad() {\n var cachedImgObj = this.__cachedImgObj;\n this.onload = this.onerror = this.__cachedImgObj = null;\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\n var pendingWrap = cachedImgObj.pending[i];\n var cb = pendingWrap.cb;\n cb && cb(this, pendingWrap.cbPayload);\n pendingWrap.hostEl.dirty();\n }\n cachedImgObj.pending.length = 0;\n}\nexport function isImageReady(image) {\n return image && image.width && image.height;\n}\n","import * as imageHelper from '../helper/image.js';\nimport { extend, retrieve2, retrieve3, reduce } from '../../core/util.js';\nimport { getLineHeight, getWidth, parsePercent } from '../../contain/text.js';\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nexport function truncateText(text, containerWidth, font, ellipsis, options) {\n if (!containerWidth) {\n return '';\n }\n var textLines = (text + '').split('\\n');\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\n for (var i = 0, len = textLines.length; i < len; i++) {\n textLines[i] = truncateSingleLine(textLines[i], options);\n }\n return textLines.join('\\n');\n}\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n options = options || {};\n var preparedOpts = extend({}, options);\n preparedOpts.font = font;\n ellipsis = retrieve2(ellipsis, '...');\n preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\n var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\n preparedOpts.cnCharWidth = getWidth('国', font);\n var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\n preparedOpts.placeholder = retrieve2(options.placeholder, '');\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n contentWidth -= ascCharWidth;\n }\n var ellipsisWidth = getWidth(ellipsis, font);\n if (ellipsisWidth > contentWidth) {\n ellipsis = '';\n ellipsisWidth = 0;\n }\n contentWidth = containerWidth - ellipsisWidth;\n preparedOpts.ellipsis = ellipsis;\n preparedOpts.ellipsisWidth = ellipsisWidth;\n preparedOpts.contentWidth = contentWidth;\n preparedOpts.containerWidth = containerWidth;\n return preparedOpts;\n}\nfunction truncateSingleLine(textLine, options) {\n var containerWidth = options.containerWidth;\n var font = options.font;\n var contentWidth = options.contentWidth;\n if (!containerWidth) {\n return '';\n }\n var lineWidth = getWidth(textLine, font);\n if (lineWidth <= containerWidth) {\n return textLine;\n }\n for (var j = 0;; j++) {\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\n textLine += options.ellipsis;\n break;\n }\n var subLength = j === 0\n ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\n : lineWidth > 0\n ? Math.floor(textLine.length * contentWidth / lineWidth)\n : 0;\n textLine = textLine.substr(0, subLength);\n lineWidth = getWidth(textLine, font);\n }\n if (textLine === '') {\n textLine = options.placeholder;\n }\n return textLine;\n}\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n var width = 0;\n var i = 0;\n for (var len = text.length; i < len && width < contentWidth; i++) {\n var charCode = text.charCodeAt(i);\n width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\n }\n return i;\n}\nexport function parsePlainText(text, style) {\n text != null && (text += '');\n var overflow = style.overflow;\n var padding = style.padding;\n var font = style.font;\n var truncate = overflow === 'truncate';\n var calculatedLineHeight = getLineHeight(font);\n var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\n var bgColorDrawn = !!(style.backgroundColor);\n var truncateLineOverflow = style.lineOverflow === 'truncate';\n var width = style.width;\n var lines;\n if (width != null && (overflow === 'break' || overflow === 'breakAll')) {\n lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\n }\n else {\n lines = text ? text.split('\\n') : [];\n }\n var contentHeight = lines.length * lineHeight;\n var height = retrieve2(style.height, contentHeight);\n if (contentHeight > height && truncateLineOverflow) {\n var lineCount = Math.floor(height / lineHeight);\n lines = lines.slice(0, lineCount);\n }\n if (text && truncate && width != null) {\n var options = prepareTruncateOptions(width, font, style.ellipsis, {\n minChar: style.truncateMinChar,\n placeholder: style.placeholder\n });\n for (var i = 0; i < lines.length; i++) {\n lines[i] = truncateSingleLine(lines[i], options);\n }\n }\n var outerHeight = height;\n var contentWidth = 0;\n for (var i = 0; i < lines.length; i++) {\n contentWidth = Math.max(getWidth(lines[i], font), contentWidth);\n }\n if (width == null) {\n width = contentWidth;\n }\n var outerWidth = contentWidth;\n if (padding) {\n outerHeight += padding[0] + padding[2];\n outerWidth += padding[1] + padding[3];\n width += padding[1] + padding[3];\n }\n if (bgColorDrawn) {\n outerWidth = width;\n }\n return {\n lines: lines,\n height: height,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n lineHeight: lineHeight,\n calculatedLineHeight: calculatedLineHeight,\n contentWidth: contentWidth,\n contentHeight: contentHeight,\n width: width\n };\n}\nvar RichTextToken = (function () {\n function RichTextToken() {\n }\n return RichTextToken;\n}());\nvar RichTextLine = (function () {\n function RichTextLine(tokens) {\n this.tokens = [];\n if (tokens) {\n this.tokens = tokens;\n }\n }\n return RichTextLine;\n}());\nvar RichTextContentBlock = (function () {\n function RichTextContentBlock() {\n this.width = 0;\n this.height = 0;\n this.contentWidth = 0;\n this.contentHeight = 0;\n this.outerWidth = 0;\n this.outerHeight = 0;\n this.lines = [];\n }\n return RichTextContentBlock;\n}());\nexport { RichTextContentBlock };\nexport function parseRichText(text, style) {\n var contentBlock = new RichTextContentBlock();\n text != null && (text += '');\n if (!text) {\n return contentBlock;\n }\n var topWidth = style.width;\n var topHeight = style.height;\n var overflow = style.overflow;\n var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\n ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\n : null;\n var lastIndex = STYLE_REG.lastIndex = 0;\n var result;\n while ((result = STYLE_REG.exec(text)) != null) {\n var matchedIndex = result.index;\n if (matchedIndex > lastIndex) {\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\n }\n pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\n lastIndex = STYLE_REG.lastIndex;\n }\n if (lastIndex < text.length) {\n pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\n }\n var pendingList = [];\n var calculatedHeight = 0;\n var calculatedWidth = 0;\n var stlPadding = style.padding;\n var truncate = overflow === 'truncate';\n var truncateLine = style.lineOverflow === 'truncate';\n function finishLine(line, lineWidth, lineHeight) {\n line.width = lineWidth;\n line.lineHeight = lineHeight;\n calculatedHeight += lineHeight;\n calculatedWidth = Math.max(calculatedWidth, lineWidth);\n }\n outer: for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var lineHeight = 0;\n var lineWidth = 0;\n for (var j = 0; j < line.tokens.length; j++) {\n var token = line.tokens[j];\n var tokenStyle = token.styleName && style.rich[token.styleName] || {};\n var textPadding = token.textPadding = tokenStyle.padding;\n var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\n var font = token.font = tokenStyle.font || style.font;\n token.contentHeight = getLineHeight(font);\n var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\n token.innerHeight = tokenHeight;\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n token.height = tokenHeight;\n token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\n token.align = tokenStyle && tokenStyle.align || style.align;\n token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\n if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\n if (j > 0) {\n line.tokens = line.tokens.slice(0, j);\n finishLine(line, lineWidth, lineHeight);\n contentBlock.lines = contentBlock.lines.slice(0, i + 1);\n }\n else {\n contentBlock.lines = contentBlock.lines.slice(0, i);\n }\n break outer;\n }\n var styleTokenWidth = tokenStyle.width;\n var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\n if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\n token.percentWidth = styleTokenWidth;\n pendingList.push(token);\n token.contentWidth = getWidth(token.text, font);\n }\n else {\n if (tokenWidthNotSpecified) {\n var textBackgroundColor = tokenStyle.backgroundColor;\n var bgImg = textBackgroundColor && textBackgroundColor.image;\n if (bgImg) {\n bgImg = imageHelper.findExistImage(bgImg);\n if (imageHelper.isImageReady(bgImg)) {\n token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\n }\n }\n }\n var remainTruncWidth = truncate && topWidth != null\n ? topWidth - lineWidth : null;\n if (remainTruncWidth != null && remainTruncWidth < token.width) {\n if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\n token.text = '';\n token.width = token.contentWidth = 0;\n }\n else {\n token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\n token.width = token.contentWidth = getWidth(token.text, font);\n }\n }\n else {\n token.contentWidth = getWidth(token.text, font);\n }\n }\n token.width += paddingH;\n lineWidth += token.width;\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n }\n finishLine(line, lineWidth, lineHeight);\n }\n contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\n contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\n contentBlock.contentHeight = calculatedHeight;\n contentBlock.contentWidth = calculatedWidth;\n if (stlPadding) {\n contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n }\n for (var i = 0; i < pendingList.length; i++) {\n var token = pendingList[i];\n var percentWidth = token.percentWidth;\n token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\n }\n return contentBlock;\n}\nfunction pushTokens(block, str, style, wrapInfo, styleName) {\n var isEmptyStr = str === '';\n var tokenStyle = styleName && style.rich[styleName] || {};\n var lines = block.lines;\n var font = tokenStyle.font || style.font;\n var newLine = false;\n var strLines;\n var linesWidths;\n if (wrapInfo) {\n var tokenPadding = tokenStyle.padding;\n var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\n if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\n var outerWidth_1 = parsePercent(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\n if (lines.length > 0) {\n if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\n strLines = str.split('\\n');\n newLine = true;\n }\n }\n wrapInfo.accumWidth = outerWidth_1;\n }\n else {\n var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\n wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\n linesWidths = res.linesWidths;\n strLines = res.lines;\n }\n }\n else {\n strLines = str.split('\\n');\n }\n for (var i = 0; i < strLines.length; i++) {\n var text = strLines[i];\n var token = new RichTextToken();\n token.styleName = styleName;\n token.text = text;\n token.isLineHolder = !text && !isEmptyStr;\n if (typeof tokenStyle.width === 'number') {\n token.width = tokenStyle.width;\n }\n else {\n token.width = linesWidths\n ? linesWidths[i]\n : getWidth(text, font);\n }\n if (!i && !newLine) {\n var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\n var tokensLen = tokens.length;\n (tokensLen === 1 && tokens[0].isLineHolder)\n ? (tokens[0] = token)\n : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\n }\n else {\n lines.push(new RichTextLine([token]));\n }\n }\n}\nfunction isAlphabeticLetter(ch) {\n var code = ch.charCodeAt(0);\n return code >= 0x20 && code <= 0x24F\n || code >= 0x370 && code <= 0x10FF\n || code >= 0x1200 && code <= 0x13FF\n || code >= 0x1E00 && code <= 0x206F;\n}\nvar breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\n obj[ch] = true;\n return obj;\n}, {});\nfunction isWordBreakChar(ch) {\n if (isAlphabeticLetter(ch)) {\n if (breakCharMap[ch]) {\n return true;\n }\n return false;\n }\n return true;\n}\nfunction wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\n var lines = [];\n var linesWidths = [];\n var line = '';\n var currentWord = '';\n var currentWordWidth = 0;\n var accumWidth = 0;\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch === '\\n') {\n if (currentWord) {\n line += currentWord;\n accumWidth += currentWordWidth;\n }\n lines.push(line);\n linesWidths.push(accumWidth);\n line = '';\n currentWord = '';\n currentWordWidth = 0;\n accumWidth = 0;\n continue;\n }\n var chWidth = getWidth(ch, font);\n var inWord = isBreakAll ? false : !isWordBreakChar(ch);\n if (!lines.length\n ? lastAccumWidth + accumWidth + chWidth > lineWidth\n : accumWidth + chWidth > lineWidth) {\n if (!accumWidth) {\n if (inWord) {\n lines.push(currentWord);\n linesWidths.push(currentWordWidth);\n currentWord = ch;\n currentWordWidth = chWidth;\n }\n else {\n lines.push(ch);\n linesWidths.push(chWidth);\n }\n }\n else if (line || currentWord) {\n if (inWord) {\n if (!line) {\n line = currentWord;\n currentWord = '';\n currentWordWidth = 0;\n accumWidth = currentWordWidth;\n }\n lines.push(line);\n linesWidths.push(accumWidth - currentWordWidth);\n currentWord += ch;\n currentWordWidth += chWidth;\n line = '';\n accumWidth = currentWordWidth;\n }\n else {\n if (currentWord) {\n line += currentWord;\n currentWord = '';\n currentWordWidth = 0;\n }\n lines.push(line);\n linesWidths.push(accumWidth);\n line = ch;\n accumWidth = chWidth;\n }\n }\n continue;\n }\n accumWidth += chWidth;\n if (inWord) {\n currentWord += ch;\n currentWordWidth += chWidth;\n }\n else {\n if (currentWord) {\n line += currentWord;\n currentWord = '';\n currentWordWidth = 0;\n }\n line += ch;\n }\n }\n if (!lines.length && !line) {\n line = text;\n currentWord = '';\n currentWordWidth = 0;\n }\n if (currentWord) {\n line += currentWord;\n }\n if (line) {\n lines.push(line);\n linesWidths.push(accumWidth);\n }\n if (lines.length === 1) {\n accumWidth += lastAccumWidth;\n }\n return {\n accumWidth: accumWidth,\n lines: lines,\n linesWidths: linesWidths\n };\n}\n","import { __extends } from \"tslib\";\nimport Element from '../Element.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { keys, extend, createObject } from '../core/util.js';\nimport { REDRAW_BIT, STYLE_CHANGED_BIT } from './constants.js';\nvar STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\nexport var DEFAULT_COMMON_STYLE = {\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowColor: '#000',\n opacity: 1,\n blend: 'source-over'\n};\nexport var DEFAULT_COMMON_ANIMATION_PROPS = {\n style: {\n shadowBlur: true,\n shadowOffsetX: true,\n shadowOffsetY: true,\n shadowColor: true,\n opacity: true\n }\n};\nDEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\nvar PRIMARY_STATES_KEYS = ['z', 'z2', 'invisible'];\nvar PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ['invisible'];\nvar Displayable = (function (_super) {\n __extends(Displayable, _super);\n function Displayable(props) {\n return _super.call(this, props) || this;\n }\n Displayable.prototype._init = function (props) {\n var keysArr = keys(props);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n if (key === 'style') {\n this.useStyle(props[key]);\n }\n else {\n _super.prototype.attrKV.call(this, key, props[key]);\n }\n }\n if (!this.style) {\n this.useStyle({});\n }\n };\n Displayable.prototype.beforeBrush = function () { };\n Displayable.prototype.afterBrush = function () { };\n Displayable.prototype.innerBeforeBrush = function () { };\n Displayable.prototype.innerAfterBrush = function () { };\n Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\n var m = this.transform;\n if (this.ignore\n || this.invisible\n || this.style.opacity === 0\n || (this.culling\n && isDisplayableCulled(this, viewWidth, viewHeight))\n || (m && !m[0] && !m[3])) {\n return false;\n }\n if (considerClipPath && this.__clipPaths) {\n for (var i = 0; i < this.__clipPaths.length; ++i) {\n if (this.__clipPaths[i].isZeroArea()) {\n return false;\n }\n }\n }\n if (considerAncestors && this.parent) {\n var parent_1 = this.parent;\n while (parent_1) {\n if (parent_1.ignore) {\n return false;\n }\n parent_1 = parent_1.parent;\n }\n }\n return true;\n };\n Displayable.prototype.contain = function (x, y) {\n return this.rectContain(x, y);\n };\n Displayable.prototype.traverse = function (cb, context) {\n cb.call(context, this);\n };\n Displayable.prototype.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 Displayable.prototype.getPaintRect = function () {\n var rect = this._paintRect;\n if (!this._paintRect || this.__dirty) {\n var transform = this.transform;\n var elRect = this.getBoundingRect();\n var style = this.style;\n var shadowSize = style.shadowBlur || 0;\n var shadowOffsetX = style.shadowOffsetX || 0;\n var shadowOffsetY = style.shadowOffsetY || 0;\n rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\n if (transform) {\n BoundingRect.applyTransform(rect, elRect, transform);\n }\n else {\n rect.copy(elRect);\n }\n if (shadowSize || shadowOffsetX || shadowOffsetY) {\n rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\n rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\n rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\n rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\n }\n var tolerance = this.dirtyRectTolerance;\n if (!rect.isZero()) {\n rect.x = Math.floor(rect.x - tolerance);\n rect.y = Math.floor(rect.y - tolerance);\n rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\n rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\n }\n }\n return rect;\n };\n Displayable.prototype.setPrevPaintRect = function (paintRect) {\n if (paintRect) {\n this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\n this._prevPaintRect.copy(paintRect);\n }\n else {\n this._prevPaintRect = null;\n }\n };\n Displayable.prototype.getPrevPaintRect = function () {\n return this._prevPaintRect;\n };\n Displayable.prototype.animateStyle = function (loop) {\n return this.animate('style', loop);\n };\n Displayable.prototype.updateDuringAnimation = function (targetKey) {\n if (targetKey === 'style') {\n this.dirtyStyle();\n }\n else {\n this.markRedraw();\n }\n };\n Displayable.prototype.attrKV = function (key, value) {\n if (key !== 'style') {\n _super.prototype.attrKV.call(this, key, value);\n }\n else {\n if (!this.style) {\n this.useStyle(value);\n }\n else {\n this.setStyle(value);\n }\n }\n };\n Displayable.prototype.setStyle = function (keyOrObj, value) {\n if (typeof keyOrObj === 'string') {\n this.style[keyOrObj] = value;\n }\n else {\n extend(this.style, keyOrObj);\n }\n this.dirtyStyle();\n return this;\n };\n Displayable.prototype.dirtyStyle = function (notRedraw) {\n if (!notRedraw) {\n this.markRedraw();\n }\n this.__dirty |= STYLE_CHANGED_BIT;\n if (this._rect) {\n this._rect = null;\n }\n };\n Displayable.prototype.dirty = function () {\n this.dirtyStyle();\n };\n Displayable.prototype.styleChanged = function () {\n return !!(this.__dirty & STYLE_CHANGED_BIT);\n };\n Displayable.prototype.styleUpdated = function () {\n this.__dirty &= ~STYLE_CHANGED_BIT;\n };\n Displayable.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_COMMON_STYLE, obj);\n };\n Displayable.prototype.useStyle = function (obj) {\n if (!obj[STYLE_MAGIC_KEY]) {\n obj = this.createStyle(obj);\n }\n if (this.__inHover) {\n this.__hoverStyle = obj;\n }\n else {\n this.style = obj;\n }\n this.dirtyStyle();\n };\n Displayable.prototype.isStyleObject = function (obj) {\n return obj[STYLE_MAGIC_KEY];\n };\n Displayable.prototype._innerSaveToNormal = function (toState) {\n _super.prototype._innerSaveToNormal.call(this, toState);\n var normalState = this._normalState;\n if (toState.style && !normalState.style) {\n normalState.style = this._mergeStyle(this.createStyle(), this.style);\n }\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n };\n Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n var needsRestoreToNormal = !(state && keepCurrentStates);\n var targetStyle;\n if (state && state.style) {\n if (transition) {\n if (keepCurrentStates) {\n targetStyle = state.style;\n }\n else {\n targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\n this._mergeStyle(targetStyle, state.style);\n }\n }\n else {\n targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\n this._mergeStyle(targetStyle, state.style);\n }\n }\n else if (needsRestoreToNormal) {\n targetStyle = normalState.style;\n }\n if (targetStyle) {\n if (transition) {\n var sourceStyle = this.style;\n this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\n if (needsRestoreToNormal) {\n var changedKeys = keys(sourceStyle);\n for (var i = 0; i < changedKeys.length; i++) {\n var key = changedKeys[i];\n if (key in targetStyle) {\n targetStyle[key] = targetStyle[key];\n this.style[key] = sourceStyle[key];\n }\n }\n }\n var targetKeys = keys(targetStyle);\n for (var i = 0; i < targetKeys.length; i++) {\n var key = targetKeys[i];\n this.style[key] = this.style[key];\n }\n this._transitionState(stateName, {\n style: targetStyle\n }, animationCfg, this.getAnimationStyleProps());\n }\n else {\n this.useStyle(targetStyle);\n }\n }\n var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS;\n for (var i = 0; i < statesKeys.length; i++) {\n var key = statesKeys[i];\n if (state && state[key] != null) {\n this[key] = state[key];\n }\n else if (needsRestoreToNormal) {\n if (normalState[key] != null) {\n this[key] = normalState[key];\n }\n }\n }\n };\n Displayable.prototype._mergeStates = function (states) {\n var mergedState = _super.prototype._mergeStates.call(this, states);\n var mergedStyle;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n if (state.style) {\n mergedStyle = mergedStyle || {};\n this._mergeStyle(mergedStyle, state.style);\n }\n }\n if (mergedStyle) {\n mergedState.style = mergedStyle;\n }\n return mergedState;\n };\n Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n extend(targetStyle, sourceStyle);\n return targetStyle;\n };\n Displayable.prototype.getAnimationStyleProps = function () {\n return DEFAULT_COMMON_ANIMATION_PROPS;\n };\n Displayable.initDefaultProps = (function () {\n var dispProto = Displayable.prototype;\n dispProto.type = 'displayable';\n dispProto.invisible = false;\n dispProto.z = 0;\n dispProto.z2 = 0;\n dispProto.zlevel = 0;\n dispProto.culling = false;\n dispProto.cursor = 'pointer';\n dispProto.rectHover = false;\n dispProto.incremental = false;\n dispProto._rect = null;\n dispProto.dirtyRectTolerance = 0;\n dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT;\n })();\n return Displayable;\n}(Element));\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\nexport default Displayable;\n","import * as vec2 from './vector.js';\nimport * as curve from './curve.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\nexport function fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n for (var i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\nexport function fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\nvar xDim = [];\nvar yDim = [];\nexport function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n for (var i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n for (var i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\nexport function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt;\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\nexport function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end);\n startAngle = startAngle % (PI2);\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n endAngle = endAngle % (PI2);\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n }\n else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n }\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n","import * as vec2 from './vector.js';\nimport BoundingRect from './BoundingRect.js';\nimport { devicePixelRatio as dpr } from '../config.js';\nimport { fromLine, fromCubic, fromQuadratic, fromArc } from './bbox.js';\nimport { cubicLength, cubicSubdivide, quadraticLength, quadraticSubdivide } from './curve.js';\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n R: 7\n};\nvar tmpOutX = [];\nvar tmpOutY = [];\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathAbs = Math.abs;\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\nvar tmpAngles = [];\nfunction modPI2(radian) {\n var n = Math.round(radian / PI * 1e8) / 1e8;\n return (n % 2) * PI;\n}\nexport function normalizeArcAngles(angles, anticlockwise) {\n var newStartAngle = modPI2(angles[0]);\n if (newStartAngle < 0) {\n newStartAngle += PI2;\n }\n var delta = newStartAngle - angles[0];\n var newEndAngle = angles[1];\n newEndAngle += delta;\n if (!anticlockwise && newEndAngle - newStartAngle >= PI2) {\n newEndAngle = newStartAngle + PI2;\n }\n else if (anticlockwise && newStartAngle - newEndAngle >= PI2) {\n newEndAngle = newStartAngle - PI2;\n }\n else if (!anticlockwise && newStartAngle > newEndAngle) {\n newEndAngle = newStartAngle + (PI2 - modPI2(newStartAngle - newEndAngle));\n }\n else if (anticlockwise && newStartAngle < newEndAngle) {\n newEndAngle = newStartAngle - (PI2 - modPI2(newEndAngle - newStartAngle));\n }\n angles[0] = newStartAngle;\n angles[1] = newEndAngle;\n}\nvar PathProxy = (function () {\n function PathProxy(notSaveData) {\n this.dpr = 1;\n this._xi = 0;\n this._yi = 0;\n this._x0 = 0;\n this._y0 = 0;\n this._len = 0;\n if (notSaveData) {\n this._saveData = false;\n }\n if (this._saveData) {\n this.data = [];\n }\n }\n PathProxy.prototype.increaseVersion = function () {\n this._version++;\n };\n PathProxy.prototype.getVersion = function () {\n return this._version;\n };\n PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n if (segmentIgnoreThreshold > 0) {\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n }\n };\n PathProxy.prototype.setDPR = function (dpr) {\n this.dpr = dpr;\n };\n PathProxy.prototype.setContext = function (ctx) {\n this._ctx = ctx;\n };\n PathProxy.prototype.getContext = function () {\n return this._ctx;\n };\n PathProxy.prototype.beginPath = function () {\n this._ctx && this._ctx.beginPath();\n this.reset();\n return this;\n };\n PathProxy.prototype.reset = function () {\n if (this._saveData) {\n this._len = 0;\n }\n if (this._pathSegLen) {\n this._pathSegLen = null;\n this._pathLen = 0;\n }\n this._version++;\n };\n PathProxy.prototype.moveTo = function (x, y) {\n this._drawPendingPt();\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y);\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n };\n PathProxy.prototype.lineTo = function (x, y) {\n var dx = mathAbs(x - this._xi);\n var dy = mathAbs(y - this._yi);\n var exceedUnit = dx > this._ux || dy > this._uy;\n this.addData(CMD.L, x, y);\n if (this._ctx && exceedUnit) {\n this._ctx.lineTo(x, y);\n }\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n this._pendingPtDist = 0;\n }\n else {\n var d2 = dx * dx + dy * dy;\n if (d2 > this._pendingPtDist) {\n this._pendingPtX = x;\n this._pendingPtY = y;\n this._pendingPtDist = d2;\n }\n }\n return this;\n };\n PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\n this._drawPendingPt();\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n if (this._ctx) {\n this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n this._xi = x3;\n this._yi = y3;\n return this;\n };\n PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\n this._drawPendingPt();\n this.addData(CMD.Q, x1, y1, x2, y2);\n if (this._ctx) {\n this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n this._xi = x2;\n this._yi = y2;\n return this;\n };\n PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this._drawPendingPt();\n tmpAngles[0] = startAngle;\n tmpAngles[1] = endAngle;\n normalizeArcAngles(tmpAngles, anticlockwise);\n startAngle = tmpAngles[0];\n endAngle = tmpAngles[1];\n var delta = endAngle - startAngle;\n this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n };\n PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\n this._drawPendingPt();\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n return this;\n };\n PathProxy.prototype.rect = function (x, y, w, h) {\n this._drawPendingPt();\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n };\n PathProxy.prototype.closePath = function () {\n this._drawPendingPt();\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n if (ctx) {\n ctx.closePath();\n }\n this._xi = x0;\n this._yi = y0;\n return this;\n };\n PathProxy.prototype.fill = function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n };\n PathProxy.prototype.stroke = function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n };\n PathProxy.prototype.len = function () {\n return this._len;\n };\n PathProxy.prototype.setData = function (data) {\n var len = data.length;\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n this._len = len;\n };\n PathProxy.prototype.appendPath = function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n if (hasTypedArray && (this.data instanceof Float32Array)) {\n this.data = new Float32Array(offset + appendSize);\n }\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n this._len = offset;\n };\n PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\n if (!this._saveData) {\n return;\n }\n var data = this.data;\n if (this._len + arguments.length > data.length) {\n this._expandData();\n data = this.data;\n }\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n };\n PathProxy.prototype._drawPendingPt = function () {\n if (this._pendingPtDist > 0) {\n this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY);\n this._pendingPtDist = 0;\n }\n };\n PathProxy.prototype._expandData = function () {\n if (!(this.data instanceof Array)) {\n var newData = [];\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n this.data = newData;\n }\n };\n PathProxy.prototype.toStatic = function () {\n if (!this._saveData) {\n return;\n }\n this._drawPendingPt();\n var data = this.data;\n if (data instanceof Array) {\n data.length = this._len;\n if (hasTypedArray && this._len > 11) {\n this.data = new Float32Array(data);\n }\n }\n };\n PathProxy.prototype.getBoundingRect = function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var i;\n for (i = 0; i < this._len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n case CMD.L:\n fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n }\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n }\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n };\n PathProxy.prototype._calculateLength = function () {\n var data = this.data;\n var len = this._len;\n var ux = this._ux;\n var uy = this._uy;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n if (!this._pathSegLen) {\n this._pathSegLen = [];\n }\n var pathSegLen = this._pathSegLen;\n var pathTotalLen = 0;\n var segCount = 0;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n var l = -1;\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n break;\n case CMD.L: {\n var x2 = data[i++];\n var y2 = data[i++];\n var dx = x2 - xi;\n var dy = y2 - yi;\n if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x2;\n yi = y2;\n }\n break;\n }\n case CMD.C: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3 = data[i++];\n var y3 = data[i++];\n l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var delta = data[i++];\n var endAngle = delta + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n l = mathMax(rx, ry) * mathMin(PI2, Math.abs(delta));\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R: {\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n l = width * 2 + height * 2;\n break;\n }\n case CMD.Z: {\n var dx = x0 - xi;\n var dy = y0 - yi;\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (l >= 0) {\n pathSegLen[segCount++] = l;\n pathTotalLen += l;\n }\n }\n this._pathLen = pathTotalLen;\n return pathTotalLen;\n };\n PathProxy.prototype.rebuildPath = function (ctx, percent) {\n var d = this.data;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var drawPart = percent < 1;\n var pathSegLen;\n var pathTotalLen;\n var accumLength = 0;\n var segCount = 0;\n var displayedLength;\n var pendingPtDist = 0;\n var pendingPtX;\n var pendingPtY;\n if (drawPart) {\n if (!this._pathSegLen) {\n this._calculateLength();\n }\n pathSegLen = this._pathSegLen;\n pathTotalLen = this._pathLen;\n displayedLength = percent * pathTotalLen;\n if (!displayedLength) {\n return;\n }\n }\n lo: for (var i = 0; i < len;) {\n var cmd = d[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n if (cmd !== CMD.L && pendingPtDist > 0) {\n ctx.lineTo(pendingPtX, pendingPtY);\n pendingPtDist = 0;\n }\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n case CMD.L: {\n x = d[i++];\n y = d[i++];\n var dx = mathAbs(x - xi);\n var dy = mathAbs(y - yi);\n if (dx > ux || dy > uy) {\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n pendingPtDist = 0;\n }\n else {\n var d2 = dx * dx + dy * dy;\n if (d2 > pendingPtDist) {\n pendingPtX = x;\n pendingPtY = y;\n pendingPtDist = d2;\n }\n }\n break;\n }\n case CMD.C: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n var x3 = d[i++];\n var y3 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\n cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\n ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\n break lo;\n }\n accumLength += l;\n }\n ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n quadraticSubdivide(xi, x1, x2, t, tmpOutX);\n quadraticSubdivide(yi, y1, y2, t, tmpOutY);\n ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\n break lo;\n }\n accumLength += l;\n }\n ctx.quadraticCurveTo(x1, y1, x2, y2);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var startAngle = d[i++];\n var delta = d[i++];\n var psi = d[i++];\n var anticlockwise = !d[i++];\n var r = (rx > ry) ? rx : ry;\n var isEllipse = mathAbs(rx - ry) > 1e-3;\n var endAngle = startAngle + delta;\n var breakBuild = false;\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n endAngle = startAngle + delta * (displayedLength - accumLength) / l;\n breakBuild = true;\n }\n accumLength += l;\n }\n if (isEllipse && ctx.ellipse) {\n ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\n }\n else {\n ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n }\n if (breakBuild) {\n break lo;\n }\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n x = d[i++];\n y = d[i++];\n var width = d[i++];\n var height = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var d_1 = displayedLength - accumLength;\n ctx.moveTo(x, y);\n ctx.lineTo(x + mathMin(d_1, width), y);\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x + width, y + mathMin(d_1, height));\n }\n d_1 -= height;\n if (d_1 > 0) {\n ctx.lineTo(x + mathMax(width - d_1, 0), y + height);\n }\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x, y + mathMax(height - d_1, 0));\n }\n break lo;\n }\n accumLength += l;\n }\n ctx.rect(x, y, width, height);\n break;\n case CMD.Z:\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n };\n PathProxy.prototype.clone = function () {\n var newProxy = new PathProxy();\n var data = this.data;\n newProxy.data = data.slice ? data.slice()\n : Array.prototype.slice.call(data);\n newProxy._len = this._len;\n return newProxy;\n };\n PathProxy.CMD = CMD;\n PathProxy.initDefaultProps = (function () {\n var proto = PathProxy.prototype;\n proto._saveData = true;\n proto._ux = 0;\n proto._uy = 0;\n proto._pendingPtDist = 0;\n proto._version = 0;\n })();\n return PathProxy;\n}());\nexport default PathProxy;\n","export function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n var _a = 0;\n var _b = x0;\n if ((y > y0 + _l && y > y1 + _l)\n || (y < y0 - _l && y < y1 - _l)\n || (x > x0 + _l && x > x1 + _l)\n || (x < x0 - _l && x < x1 - _l)) {\n return false;\n }\n if (x0 !== x1) {\n _a = (y0 - y1) / (x0 - x1);\n _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n }\n else {\n return Math.abs(x - x0) <= _l / 2;\n }\n var tmp = _a * x - y + _b;\n var _s = tmp * tmp / (_a * _a + 1);\n return _s <= _l / 2 * _l / 2;\n}\n","import * as curve from '../core/curve.js';\nexport function containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\n return false;\n }\n var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n return d <= _l / 2;\n}\n","import { quadraticProjectPoint } from '../core/curve.js';\nexport function containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\n return false;\n }\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n return d <= _l / 2;\n}\n","var PI2 = Math.PI * 2;\nexport function normalizeRadian(angle) {\n angle %= PI2;\n if (angle < 0) {\n angle += PI2;\n }\n return angle;\n}\n","import { normalizeRadian } from './util.js';\nvar PI2 = Math.PI * 2;\nexport function containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n if ((d - _l > r) || (d + _l < r)) {\n return false;\n }\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n return true;\n }\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n }\n else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n var angle = Math.atan2(y, x);\n if (angle < 0) {\n angle += PI2;\n }\n return (angle >= startAngle && angle <= endAngle)\n || (angle + PI2 >= startAngle && angle + PI2 <= endAngle);\n}\n","export default function windingLine(x0, y0, x1, y1, x, y) {\n if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\n return 0;\n }\n if (y1 === y0) {\n return 0;\n }\n var t = (y - y0) / (y1 - y0);\n var dir = y1 < y0 ? 1 : -1;\n if (t === 1 || t === 0) {\n dir = y1 < y0 ? 0.5 : -0.5;\n }\n var x_ = t * (x1 - x0) + x0;\n return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n","import PathProxy from '../core/PathProxy.js';\nimport * as line from './line.js';\nimport * as cubic from './cubic.js';\nimport * as quadratic from './quadratic.js';\nimport * as arc from './arc.js';\nimport * as curve from '../core/curve.js';\nimport windingLine from './windingLine.js';\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\nfunction swapExtrema() {\n var tmp = extrema[0];\n extrema[0] = extrema[1];\n extrema[1] = tmp;\n}\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n if ((y > y0 && y > y1 && y > y2 && y > y3)\n || (y < y0 && y < y1 && y < y2 && y < y3)) {\n return 0;\n }\n var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n if (nRoots === 0) {\n return 0;\n }\n else {\n var w = 0;\n var nExtrema = -1;\n var y0_ = void 0;\n var y1_ = void 0;\n for (var i = 0; i < nRoots; i++) {\n var t = roots[i];\n var unit = (t === 0 || t === 1) ? 0.5 : 1;\n var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n if (x_ < x) {\n continue;\n }\n if (nExtrema < 0) {\n nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n if (extrema[1] < extrema[0] && nExtrema > 1) {\n swapExtrema();\n }\n y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n if (nExtrema > 1) {\n y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n }\n }\n if (nExtrema === 2) {\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n }\n else if (t < extrema[1]) {\n w += y1_ < y0_ ? unit : -unit;\n }\n else {\n w += y3 < y1_ ? unit : -unit;\n }\n }\n else {\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n }\n else {\n w += y3 < y0_ ? unit : -unit;\n }\n }\n }\n return w;\n }\n}\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n if ((y > y0 && y > y1 && y > y2)\n || (y < y0 && y < y1 && y < y2)) {\n return 0;\n }\n var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n if (nRoots === 0) {\n return 0;\n }\n else {\n var t = curve.quadraticExtremum(y0, y1, y2);\n if (t >= 0 && t <= 1) {\n var w = 0;\n var y_ = curve.quadraticAt(y0, y1, y2, t);\n for (var i = 0; i < nRoots; i++) {\n var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n if (x_ < x) {\n continue;\n }\n if (roots[i] < t) {\n w += y_ < y0 ? unit : -unit;\n }\n else {\n w += y2 < y_ ? unit : -unit;\n }\n }\n return w;\n }\n else {\n var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n if (x_ < x) {\n return 0;\n }\n return y2 < y0 ? unit : -unit;\n }\n }\n}\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n y -= cy;\n if (y > r || y < -r) {\n return 0;\n }\n var tmp = Math.sqrt(r * r - y * y);\n roots[0] = -tmp;\n roots[1] = tmp;\n var dTheta = Math.abs(startAngle - endAngle);\n if (dTheta < 1e-4) {\n return 0;\n }\n if (dTheta >= PI2 - 1e-4) {\n startAngle = 0;\n endAngle = PI2;\n var dir = anticlockwise ? 1 : -1;\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\n return dir;\n }\n else {\n return 0;\n }\n }\n if (startAngle > endAngle) {\n var tmp_1 = startAngle;\n startAngle = endAngle;\n endAngle = tmp_1;\n }\n if (startAngle < 0) {\n startAngle += PI2;\n endAngle += PI2;\n }\n var w = 0;\n for (var i = 0; i < 2; i++) {\n var x_ = roots[i];\n if (x_ + cx > x) {\n var angle = Math.atan2(y, x_);\n var dir = anticlockwise ? 1 : -1;\n if (angle < 0) {\n angle = PI2 + angle;\n }\n if ((angle >= startAngle && angle <= endAngle)\n || (angle + PI2 >= startAngle && angle + PI2 <= endAngle)) {\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n dir = -dir;\n }\n w += dir;\n }\n }\n }\n return w;\n}\nfunction containPath(path, lineWidth, isStroke, x, y) {\n var data = path.data;\n var len = path.len();\n var w = 0;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var x1;\n var y1;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (cmd === CMD.M && i > 1) {\n if (!isStroke) {\n w += windingLine(xi, yi, x0, y0, x, y);\n }\n }\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n case CMD.L:\n if (isStroke) {\n if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n if (isStroke) {\n if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n if (isStroke) {\n if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n i += 1;\n var anticlockwise = !!(1 - data[i++]);\n x1 = Math.cos(theta) * rx + cx;\n y1 = Math.sin(theta) * ry + cy;\n if (!isFirst) {\n w += windingLine(xi, yi, x1, y1, x, y);\n }\n else {\n x0 = x1;\n y0 = y1;\n }\n var _x = (x - cx) * ry / rx + cx;\n if (isStroke) {\n if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n return true;\n }\n }\n else {\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n }\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n x1 = x0 + width;\n y1 = y0 + height;\n if (isStroke) {\n if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y)\n || line.containStroke(x1, y0, x1, y1, lineWidth, x, y)\n || line.containStroke(x1, y1, x0, y1, lineWidth, x, y)\n || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(x1, y0, x1, y1, x, y);\n w += windingLine(x0, y1, x0, y0, x, y);\n }\n break;\n case CMD.Z:\n if (isStroke) {\n if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(xi, yi, x0, y0, x, y);\n }\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (!isStroke && !isAroundEqual(yi, y0)) {\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\n }\n return w !== 0;\n}\nexport function contain(pathProxy, x, y) {\n return containPath(pathProxy, 0, false, x, y);\n}\nexport function containStroke(pathProxy, lineWidth, x, y) {\n return containPath(pathProxy, lineWidth, true, x, y);\n}\n","import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport PathProxy from '../core/PathProxy.js';\nimport * as pathContain from '../contain/path.js';\nimport { defaults, keys, extend, clone, isString, createObject } from '../core/util.js';\nimport { lum } from '../tool/color.js';\nimport { DARK_LABEL_COLOR, LIGHT_LABEL_COLOR, DARK_MODE_THRESHOLD, LIGHTER_LABEL_COLOR } from '../config.js';\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT, STYLE_CHANGED_BIT } from './constants.js';\nimport { TRANSFORMABLE_PROPS } from '../core/Transformable.js';\nexport var DEFAULT_PATH_STYLE = defaults({\n fill: '#000',\n stroke: null,\n strokePercent: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n lineDashOffset: 0,\n lineWidth: 1,\n lineCap: 'butt',\n miterLimit: 10,\n strokeNoScale: false,\n strokeFirst: false\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_PATH_ANIMATION_PROPS = {\n style: defaults({\n fill: true,\n stroke: true,\n strokePercent: true,\n fillOpacity: true,\n strokeOpacity: true,\n lineDashOffset: true,\n lineWidth: true,\n miterLimit: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar pathCopyParams = TRANSFORMABLE_PROPS.concat(['invisible',\n 'culling', 'z', 'z2', 'zlevel', 'parent'\n]);\nvar Path = (function (_super) {\n __extends(Path, _super);\n function Path(opts) {\n return _super.call(this, opts) || this;\n }\n Path.prototype.update = function () {\n var _this = this;\n _super.prototype.update.call(this);\n var style = this.style;\n if (style.decal) {\n var decalEl = this._decalEl = this._decalEl || new Path();\n if (decalEl.buildPath === Path.prototype.buildPath) {\n decalEl.buildPath = function (ctx) {\n _this.buildPath(ctx, _this.shape);\n };\n }\n decalEl.silent = true;\n var decalElStyle = decalEl.style;\n for (var key in style) {\n if (decalElStyle[key] !== style[key]) {\n decalElStyle[key] = style[key];\n }\n }\n decalElStyle.fill = style.fill ? style.decal : null;\n decalElStyle.decal = null;\n decalElStyle.shadowColor = null;\n style.strokeFirst && (decalElStyle.stroke = null);\n for (var i = 0; i < pathCopyParams.length; ++i) {\n decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\n }\n decalEl.__dirty |= REDRAW_BIT;\n }\n else if (this._decalEl) {\n this._decalEl = null;\n }\n };\n Path.prototype.getDecalElement = function () {\n return this._decalEl;\n };\n Path.prototype._init = function (props) {\n var keysArr = keys(props);\n this.shape = this.getDefaultShape();\n var defaultStyle = this.getDefaultStyle();\n if (defaultStyle) {\n this.useStyle(defaultStyle);\n }\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n var value = props[key];\n if (key === 'style') {\n if (!this.style) {\n this.useStyle(value);\n }\n else {\n extend(this.style, value);\n }\n }\n else if (key === 'shape') {\n extend(this.shape, value);\n }\n else {\n _super.prototype.attrKV.call(this, key, value);\n }\n }\n if (!this.style) {\n this.useStyle({});\n }\n };\n Path.prototype.getDefaultStyle = function () {\n return null;\n };\n Path.prototype.getDefaultShape = function () {\n return {};\n };\n Path.prototype.canBeInsideText = function () {\n return this.hasFill();\n };\n Path.prototype.getInsideTextFill = function () {\n var pathFill = this.style.fill;\n if (pathFill !== 'none') {\n if (isString(pathFill)) {\n var fillLum = lum(pathFill, 0);\n if (fillLum > 0.5) {\n return DARK_LABEL_COLOR;\n }\n else if (fillLum > 0.2) {\n return LIGHTER_LABEL_COLOR;\n }\n return LIGHT_LABEL_COLOR;\n }\n else if (pathFill) {\n return LIGHT_LABEL_COLOR;\n }\n }\n return DARK_LABEL_COLOR;\n };\n Path.prototype.getInsideTextStroke = function (textFill) {\n var pathFill = this.style.fill;\n if (isString(pathFill)) {\n var zr = this.__zr;\n var isDarkMode = !!(zr && zr.isDarkMode());\n var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\n if (isDarkMode === isDarkLabel) {\n return pathFill;\n }\n }\n };\n Path.prototype.buildPath = function (ctx, shapeCfg, inBatch) { };\n Path.prototype.pathUpdated = function () {\n this.__dirty &= ~SHAPE_CHANGED_BIT;\n };\n Path.prototype.getUpdatedPathProxy = function (inBatch) {\n !this.path && this.createPathProxy();\n this.path.beginPath();\n this.buildPath(this.path, this.shape, inBatch);\n return this.path;\n };\n Path.prototype.createPathProxy = function () {\n this.path = new PathProxy(false);\n };\n Path.prototype.hasStroke = function () {\n var style = this.style;\n var stroke = style.stroke;\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n };\n Path.prototype.hasFill = function () {\n var style = this.style;\n var fill = style.fill;\n return fill != null && fill !== 'none';\n };\n Path.prototype.getBoundingRect = function () {\n var rect = this._rect;\n var style = this.style;\n var needsUpdateRect = !rect;\n if (needsUpdateRect) {\n var firstInvoke = false;\n if (!this.path) {\n firstInvoke = true;\n this.createPathProxy();\n }\n var path = this.path;\n if (firstInvoke || (this.__dirty & SHAPE_CHANGED_BIT)) {\n path.beginPath();\n this.buildPath(path, this.shape, false);\n this.pathUpdated();\n }\n rect = path.getBoundingRect();\n }\n this._rect = rect;\n if (this.hasStroke() && this.path && this.path.len() > 0) {\n var rectStroke = this._rectStroke || (this._rectStroke = rect.clone());\n if (this.__dirty || needsUpdateRect) {\n rectStroke.copy(rect);\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n var w = style.lineWidth;\n if (!this.hasFill()) {\n var strokeContainThreshold = this.strokeContainThreshold;\n w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\n }\n if (lineScale > 1e-10) {\n rectStroke.width += w / lineScale;\n rectStroke.height += w / lineScale;\n rectStroke.x -= w / lineScale / 2;\n rectStroke.y -= w / lineScale / 2;\n }\n }\n return rectStroke;\n }\n return rect;\n };\n Path.prototype.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 if (rect.contain(x, y)) {\n var pathProxy = this.path;\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n if (lineScale > 1e-10) {\n if (!this.hasFill()) {\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n }\n if (pathContain.containStroke(pathProxy, lineWidth / lineScale, x, y)) {\n return true;\n }\n }\n }\n if (this.hasFill()) {\n return pathContain.contain(pathProxy, x, y);\n }\n }\n return false;\n };\n Path.prototype.dirtyShape = function () {\n this.__dirty |= SHAPE_CHANGED_BIT;\n if (this._rect) {\n this._rect = null;\n }\n if (this._decalEl) {\n this._decalEl.dirtyShape();\n }\n this.markRedraw();\n };\n Path.prototype.dirty = function () {\n this.dirtyStyle();\n this.dirtyShape();\n };\n Path.prototype.animateShape = function (loop) {\n return this.animate('shape', loop);\n };\n Path.prototype.updateDuringAnimation = function (targetKey) {\n if (targetKey === 'style') {\n this.dirtyStyle();\n }\n else if (targetKey === 'shape') {\n this.dirtyShape();\n }\n else {\n this.markRedraw();\n }\n };\n Path.prototype.attrKV = function (key, value) {\n if (key === 'shape') {\n this.setShape(value);\n }\n else {\n _super.prototype.attrKV.call(this, key, value);\n }\n };\n Path.prototype.setShape = function (keyOrObj, value) {\n var shape = this.shape;\n if (!shape) {\n shape = this.shape = {};\n }\n if (typeof keyOrObj === 'string') {\n shape[keyOrObj] = value;\n }\n else {\n extend(shape, keyOrObj);\n }\n this.dirtyShape();\n return this;\n };\n Path.prototype.shapeChanged = function () {\n return !!(this.__dirty & SHAPE_CHANGED_BIT);\n };\n Path.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_PATH_STYLE, obj);\n };\n Path.prototype._innerSaveToNormal = function (toState) {\n _super.prototype._innerSaveToNormal.call(this, toState);\n var normalState = this._normalState;\n if (toState.shape && !normalState.shape) {\n normalState.shape = extend({}, this.shape);\n }\n };\n Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n var needsRestoreToNormal = !(state && keepCurrentStates);\n var targetShape;\n if (state && state.shape) {\n if (transition) {\n if (keepCurrentStates) {\n targetShape = state.shape;\n }\n else {\n targetShape = extend({}, normalState.shape);\n extend(targetShape, state.shape);\n }\n }\n else {\n targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\n extend(targetShape, state.shape);\n }\n }\n else if (needsRestoreToNormal) {\n targetShape = normalState.shape;\n }\n if (targetShape) {\n if (transition) {\n this.shape = extend({}, this.shape);\n var targetShapePrimaryProps = {};\n var shapeKeys = keys(targetShape);\n for (var i = 0; i < shapeKeys.length; i++) {\n var key = shapeKeys[i];\n if (typeof targetShape[key] === 'object') {\n this.shape[key] = targetShape[key];\n }\n else {\n targetShapePrimaryProps[key] = targetShape[key];\n }\n }\n this._transitionState(stateName, {\n shape: targetShapePrimaryProps\n }, animationCfg);\n }\n else {\n this.shape = targetShape;\n this.dirtyShape();\n }\n }\n };\n Path.prototype._mergeStates = function (states) {\n var mergedState = _super.prototype._mergeStates.call(this, states);\n var mergedShape;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n if (state.shape) {\n mergedShape = mergedShape || {};\n this._mergeStyle(mergedShape, state.shape);\n }\n }\n if (mergedShape) {\n mergedState.shape = mergedShape;\n }\n return mergedState;\n };\n Path.prototype.getAnimationStyleProps = function () {\n return DEFAULT_PATH_ANIMATION_PROPS;\n };\n Path.prototype.isZeroArea = function () {\n return false;\n };\n Path.extend = function (defaultProps) {\n var Sub = (function (_super) {\n __extends(Sub, _super);\n function Sub(opts) {\n var _this = _super.call(this, opts) || this;\n defaultProps.init && defaultProps.init.call(_this, opts);\n return _this;\n }\n Sub.prototype.getDefaultStyle = function () {\n return clone(defaultProps.style);\n };\n Sub.prototype.getDefaultShape = function () {\n return clone(defaultProps.shape);\n };\n return Sub;\n }(Path));\n for (var key in defaultProps) {\n if (typeof defaultProps[key] === 'function') {\n Sub.prototype[key] = defaultProps[key];\n }\n }\n return Sub;\n };\n Path.initDefaultProps = (function () {\n var pathProto = Path.prototype;\n pathProto.type = 'path';\n pathProto.strokeContainThreshold = 5;\n pathProto.segmentIgnoreThreshold = 0;\n pathProto.subPixelOptimize = false;\n pathProto.autoBatch = false;\n pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT;\n })();\n return Path;\n}(Displayable));\nexport default Path;\n","import { __extends } from \"tslib\";\nimport Displayable from './Displayable.js';\nimport { getBoundingRect } from '../contain/text.js';\nimport { DEFAULT_PATH_STYLE } from './Path.js';\nimport { createObject, defaults } from '../core/util.js';\nimport { DEFAULT_FONT } from '../core/platform.js';\nexport var DEFAULT_TSPAN_STYLE = defaults({\n strokeFirst: true,\n font: DEFAULT_FONT,\n x: 0,\n y: 0,\n textAlign: 'left',\n textBaseline: 'top',\n miterLimit: 2\n}, DEFAULT_PATH_STYLE);\nvar TSpan = (function (_super) {\n __extends(TSpan, _super);\n function TSpan() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TSpan.prototype.hasStroke = function () {\n var style = this.style;\n var stroke = style.stroke;\n return stroke != null && stroke !== 'none' && style.lineWidth > 0;\n };\n TSpan.prototype.hasFill = function () {\n var style = this.style;\n var fill = style.fill;\n return fill != null && fill !== 'none';\n };\n TSpan.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_TSPAN_STYLE, obj);\n };\n TSpan.prototype.setBoundingRect = function (rect) {\n this._rect = rect;\n };\n TSpan.prototype.getBoundingRect = function () {\n var style = this.style;\n if (!this._rect) {\n var text = style.text;\n text != null ? (text += '') : (text = '');\n var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n if (this.hasStroke()) {\n var w = style.lineWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n this._rect = rect;\n }\n return this._rect;\n };\n TSpan.initDefaultProps = (function () {\n var tspanProto = TSpan.prototype;\n tspanProto.dirtyRectTolerance = 10;\n })();\n return TSpan;\n}(Displayable));\nTSpan.prototype.type = 'tspan';\nexport default TSpan;\n","import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { defaults, createObject } from '../core/util.js';\nexport var DEFAULT_IMAGE_STYLE = defaults({\n x: 0,\n y: 0\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_IMAGE_ANIMATION_PROPS = {\n style: defaults({\n x: true,\n y: true,\n width: true,\n height: true,\n sx: true,\n sy: true,\n sWidth: true,\n sHeight: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nfunction isImageLike(source) {\n return !!(source\n && typeof source !== 'string'\n && source.width && source.height);\n}\nvar ZRImage = (function (_super) {\n __extends(ZRImage, _super);\n function ZRImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ZRImage.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_IMAGE_STYLE, obj);\n };\n ZRImage.prototype._getSize = function (dim) {\n var style = this.style;\n var size = style[dim];\n if (size != null) {\n return size;\n }\n var imageSource = isImageLike(style.image)\n ? style.image : this.__image;\n if (!imageSource) {\n return 0;\n }\n var otherDim = dim === 'width' ? 'height' : 'width';\n var otherDimSize = style[otherDim];\n if (otherDimSize == null) {\n return imageSource[dim];\n }\n else {\n return imageSource[dim] / imageSource[otherDim] * otherDimSize;\n }\n };\n ZRImage.prototype.getWidth = function () {\n return this._getSize('width');\n };\n ZRImage.prototype.getHeight = function () {\n return this._getSize('height');\n };\n ZRImage.prototype.getAnimationStyleProps = function () {\n return DEFAULT_IMAGE_ANIMATION_PROPS;\n };\n ZRImage.prototype.getBoundingRect = function () {\n var style = this.style;\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\n }\n return this._rect;\n };\n return ZRImage;\n}(Displayable));\nZRImage.prototype.type = 'image';\nexport default ZRImage;\n","export function buildPath(ctx, shape) {\n var x = shape.x;\n var y = shape.y;\n var width = shape.width;\n var height = shape.height;\n var r = shape.r;\n var r1;\n var r2;\n var r3;\n var r4;\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n if (typeof r === 'number') {\n r1 = r2 = r3 = r4 = r;\n }\n else if (r instanceof Array) {\n if (r.length === 1) {\n r1 = r2 = r3 = r4 = r[0];\n }\n else if (r.length === 2) {\n r1 = r3 = r[0];\n r2 = r4 = r[1];\n }\n else if (r.length === 3) {\n r1 = r[0];\n r2 = r4 = r[1];\n r3 = r[2];\n }\n else {\n r1 = r[0];\n r2 = r[1];\n r3 = r[2];\n r4 = r[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = 0;\n }\n var total;\n if (r1 + r2 > width) {\n total = r1 + r2;\n r1 *= width / total;\n r2 *= width / total;\n }\n if (r3 + r4 > width) {\n total = r3 + r4;\n r3 *= width / total;\n r4 *= width / total;\n }\n if (r2 + r3 > height) {\n total = r2 + r3;\n r2 *= height / total;\n r3 *= height / total;\n }\n if (r1 + r4 > height) {\n total = r1 + r4;\n r1 *= height / total;\n r4 *= height / total;\n }\n ctx.moveTo(x + r1, y);\n ctx.lineTo(x + width - r2, y);\n r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n ctx.lineTo(x + width, y + height - r3);\n r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n ctx.lineTo(x + r4, y + height);\n r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n ctx.lineTo(x, y + r1);\n r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n","var round = Math.round;\nexport function subPixelOptimizeLine(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n var x1 = inputShape.x1;\n var x2 = inputShape.x2;\n var y1 = inputShape.y1;\n var y2 = inputShape.y2;\n outputShape.x1 = x1;\n outputShape.x2 = x2;\n outputShape.y1 = y1;\n outputShape.y2 = y2;\n var lineWidth = style && style.lineWidth;\n if (!lineWidth) {\n return outputShape;\n }\n if (round(x1 * 2) === round(x2 * 2)) {\n outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n }\n if (round(y1 * 2) === round(y2 * 2)) {\n outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n }\n return outputShape;\n}\nexport function subPixelOptimizeRect(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n var originX = inputShape.x;\n var originY = inputShape.y;\n var originWidth = inputShape.width;\n var originHeight = inputShape.height;\n outputShape.x = originX;\n outputShape.y = originY;\n outputShape.width = originWidth;\n outputShape.height = originHeight;\n var lineWidth = style && style.lineWidth;\n if (!lineWidth) {\n return outputShape;\n }\n outputShape.x = subPixelOptimize(originX, lineWidth, true);\n outputShape.y = subPixelOptimize(originY, lineWidth, true);\n outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n return outputShape;\n}\nexport function subPixelOptimize(position, lineWidth, positiveOrNegative) {\n if (!lineWidth) {\n return position;\n }\n var doubledPosition = round(position * 2);\n return (doubledPosition + round(lineWidth)) % 2 === 0\n ? doubledPosition / 2\n : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as roundRectHelper from '../helper/roundRect.js';\nimport { subPixelOptimizeRect } from '../helper/subPixelOptimize.js';\nvar RectShape = (function () {\n function RectShape() {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n }\n return RectShape;\n}());\nexport { RectShape };\nvar subPixelOptimizeOutputShape = {};\nvar Rect = (function (_super) {\n __extends(Rect, _super);\n function Rect(opts) {\n return _super.call(this, opts) || this;\n }\n Rect.prototype.getDefaultShape = function () {\n return new RectShape();\n };\n Rect.prototype.buildPath = function (ctx, shape) {\n var x;\n var y;\n var width;\n var height;\n if (this.subPixelOptimize) {\n var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n x = optimizedShape.x;\n y = optimizedShape.y;\n width = optimizedShape.width;\n height = optimizedShape.height;\n optimizedShape.r = shape.r;\n shape = optimizedShape;\n }\n else {\n x = shape.x;\n y = shape.y;\n width = shape.width;\n height = shape.height;\n }\n if (!shape.r) {\n ctx.rect(x, y, width, height);\n }\n else {\n roundRectHelper.buildPath(ctx, shape);\n }\n };\n Rect.prototype.isZeroArea = function () {\n return !this.shape.width || !this.shape.height;\n };\n return Rect;\n}(Path));\nRect.prototype.type = 'rect';\nexport default Rect;\n","import { __extends } from \"tslib\";\nimport { parseRichText, parsePlainText } from './helper/parseText.js';\nimport TSpan from './TSpan.js';\nimport { retrieve2, each, normalizeCssArray, trim, retrieve3, extend, keys, defaults } from '../core/util.js';\nimport { adjustTextX, adjustTextY } from '../contain/text.js';\nimport ZRImage from './Image.js';\nimport Rect from './shape/Rect.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport Displayable, { DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport { DEFAULT_FONT, DEFAULT_FONT_SIZE } from '../core/platform.js';\nvar DEFAULT_RICH_TEXT_COLOR = {\n fill: '#000'\n};\nvar DEFAULT_STROKE_LINE_WIDTH = 2;\nexport var DEFAULT_TEXT_ANIMATION_PROPS = {\n style: defaults({\n fill: true,\n stroke: true,\n fillOpacity: true,\n strokeOpacity: true,\n lineWidth: true,\n fontSize: true,\n lineHeight: true,\n width: true,\n height: true,\n textShadowColor: true,\n textShadowBlur: true,\n textShadowOffsetX: true,\n textShadowOffsetY: true,\n backgroundColor: true,\n padding: true,\n borderColor: true,\n borderWidth: true,\n borderRadius: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar ZRText = (function (_super) {\n __extends(ZRText, _super);\n function ZRText(opts) {\n var _this = _super.call(this) || this;\n _this.type = 'text';\n _this._children = [];\n _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\n _this.attr(opts);\n return _this;\n }\n ZRText.prototype.childrenRef = function () {\n return this._children;\n };\n ZRText.prototype.update = function () {\n _super.prototype.update.call(this);\n if (this.styleChanged()) {\n this._updateSubTexts();\n }\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.zlevel = this.zlevel;\n child.z = this.z;\n child.z2 = this.z2;\n child.culling = this.culling;\n child.cursor = this.cursor;\n child.invisible = this.invisible;\n }\n };\n ZRText.prototype.updateTransform = function () {\n var innerTransformable = this.innerTransformable;\n if (innerTransformable) {\n innerTransformable.updateTransform();\n if (innerTransformable.transform) {\n this.transform = innerTransformable.transform;\n }\n }\n else {\n _super.prototype.updateTransform.call(this);\n }\n };\n ZRText.prototype.getLocalTransform = function (m) {\n var innerTransformable = this.innerTransformable;\n return innerTransformable\n ? innerTransformable.getLocalTransform(m)\n : _super.prototype.getLocalTransform.call(this, m);\n };\n ZRText.prototype.getComputedTransform = function () {\n if (this.__hostTarget) {\n this.__hostTarget.getComputedTransform();\n this.__hostTarget.updateInnerText(true);\n }\n return _super.prototype.getComputedTransform.call(this);\n };\n ZRText.prototype._updateSubTexts = function () {\n this._childCursor = 0;\n normalizeTextStyle(this.style);\n this.style.rich\n ? this._updateRichTexts()\n : this._updatePlainTexts();\n this._children.length = this._childCursor;\n this.styleUpdated();\n };\n ZRText.prototype.addSelfToZr = function (zr) {\n _super.prototype.addSelfToZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n this._children[i].__zr = zr;\n }\n };\n ZRText.prototype.removeSelfFromZr = function (zr) {\n _super.prototype.removeSelfFromZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n this._children[i].__zr = null;\n }\n };\n ZRText.prototype.getBoundingRect = function () {\n if (this.styleChanged()) {\n this._updateSubTexts();\n }\n if (!this._rect) {\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = this._children;\n var tmpMat = [];\n var rect = null;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat);\n if (transform) {\n tmpRect.copy(childRect);\n tmpRect.applyTransform(transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n }\n else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n this._rect = rect || tmpRect;\n }\n return this._rect;\n };\n ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\n this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\n };\n ZRText.prototype.setTextContent = function (textContent) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Can\\'t attach text on another text');\n }\n };\n ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n if (!sourceStyle) {\n return targetStyle;\n }\n var sourceRich = sourceStyle.rich;\n var targetRich = targetStyle.rich || (sourceRich && {});\n extend(targetStyle, sourceStyle);\n if (sourceRich && targetRich) {\n this._mergeRich(targetRich, sourceRich);\n targetStyle.rich = targetRich;\n }\n else if (targetRich) {\n targetStyle.rich = targetRich;\n }\n return targetStyle;\n };\n ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\n var richNames = keys(sourceRich);\n for (var i = 0; i < richNames.length; i++) {\n var richName = richNames[i];\n targetRich[richName] = targetRich[richName] || {};\n extend(targetRich[richName], sourceRich[richName]);\n }\n };\n ZRText.prototype.getAnimationStyleProps = function () {\n return DEFAULT_TEXT_ANIMATION_PROPS;\n };\n ZRText.prototype._getOrCreateChild = function (Ctor) {\n var child = this._children[this._childCursor];\n if (!child || !(child instanceof Ctor)) {\n child = new Ctor();\n }\n this._children[this._childCursor++] = child;\n child.__zr = this.__zr;\n child.parent = this;\n return child;\n };\n ZRText.prototype._updatePlainTexts = function () {\n var style = this.style;\n var textFont = style.font || DEFAULT_FONT;\n var textPadding = style.padding;\n var text = getStyleText(style);\n var contentBlock = parsePlainText(text, style);\n var needDrawBg = needDrawBackground(style);\n var bgColorDrawn = !!(style.backgroundColor);\n var outerHeight = contentBlock.outerHeight;\n var outerWidth = contentBlock.outerWidth;\n var contentWidth = contentBlock.contentWidth;\n var textLines = contentBlock.lines;\n var lineHeight = contentBlock.lineHeight;\n var defaultStyle = this._defaultStyle;\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var textAlign = style.align || defaultStyle.align || 'left';\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\n var textX = baseX;\n var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\n if (needDrawBg || textPadding) {\n var boxX = adjustTextX(baseX, outerWidth, textAlign);\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n }\n textY += lineHeight / 2;\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n if (verticalAlign === 'top') {\n textY += textPadding[0];\n }\n else if (verticalAlign === 'bottom') {\n textY -= textPadding[2];\n }\n }\n var defaultLineWidth = 0;\n var useDefaultFill = false;\n var textFill = getFill('fill' in style\n ? style.fill\n : (useDefaultFill = true, defaultStyle.fill));\n var textStroke = getStroke('stroke' in style\n ? style.stroke\n : (!bgColorDrawn\n && (!defaultStyle.autoStroke || useDefaultFill))\n ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\n : null);\n var hasShadow = style.textShadowBlur > 0;\n var fixedBoundingRect = style.width != null\n && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\n var calculatedLineHeight = contentBlock.calculatedLineHeight;\n for (var i = 0; i < textLines.length; i++) {\n var el = this._getOrCreateChild(TSpan);\n var subElStyle = el.createStyle();\n el.useStyle(subElStyle);\n subElStyle.text = textLines[i];\n subElStyle.x = textX;\n subElStyle.y = textY;\n if (textAlign) {\n subElStyle.textAlign = textAlign;\n }\n subElStyle.textBaseline = 'middle';\n subElStyle.opacity = style.opacity;\n subElStyle.strokeFirst = true;\n if (hasShadow) {\n subElStyle.shadowBlur = style.textShadowBlur || 0;\n subElStyle.shadowColor = style.textShadowColor || 'transparent';\n subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\n subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\n }\n subElStyle.stroke = textStroke;\n subElStyle.fill = textFill;\n if (textStroke) {\n subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\n subElStyle.lineDash = style.lineDash;\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\n }\n subElStyle.font = textFont;\n setSeparateFont(subElStyle, style);\n textY += lineHeight;\n if (fixedBoundingRect) {\n el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), contentWidth, calculatedLineHeight));\n }\n }\n };\n ZRText.prototype._updateRichTexts = function () {\n var style = this.style;\n var text = getStyleText(style);\n var contentBlock = parseRichText(text, style);\n var contentWidth = contentBlock.width;\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var textPadding = style.padding;\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var defaultStyle = this._defaultStyle;\n var textAlign = style.align || defaultStyle.align;\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\n var boxX = adjustTextX(baseX, outerWidth, textAlign);\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n var xLeft = boxX;\n var lineTop = boxY;\n if (textPadding) {\n xLeft += textPadding[3];\n lineTop += textPadding[0];\n }\n var xRight = xLeft + contentWidth;\n if (needDrawBackground(style)) {\n this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n }\n var bgColorDrawn = !!(style.backgroundColor);\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var tokens = line.tokens;\n var tokenCount = tokens.length;\n var lineHeight = line.lineHeight;\n var remainedWidth = line.width;\n var leftIndex = 0;\n var lineXLeft = xLeft;\n var lineXRight = xRight;\n var rightIndex = tokenCount - 1;\n var token = void 0;\n while (leftIndex < tokenCount\n && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\n remainedWidth -= token.width;\n lineXLeft += token.width;\n leftIndex++;\n }\n while (rightIndex >= 0\n && (token = tokens[rightIndex], token.align === 'right')) {\n this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\n remainedWidth -= token.width;\n lineXRight -= token.width;\n rightIndex--;\n }\n lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\n while (leftIndex <= rightIndex) {\n token = tokens[leftIndex];\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\n lineXLeft += token.width;\n leftIndex++;\n }\n lineTop += lineHeight;\n }\n };\n ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\n var tokenStyle = style.rich[token.styleName] || {};\n tokenStyle.text = token.text;\n var verticalAlign = token.verticalAlign;\n var y = lineTop + lineHeight / 2;\n if (verticalAlign === 'top') {\n y = lineTop + token.height / 2;\n }\n else if (verticalAlign === 'bottom') {\n y = lineTop + lineHeight - token.height / 2;\n }\n var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\n needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\n ? x - token.width\n : textAlign === 'center'\n ? x - token.width / 2\n : x, y - token.height / 2, token.width, token.height);\n var bgColorDrawn = !!tokenStyle.backgroundColor;\n var textPadding = token.textPadding;\n if (textPadding) {\n x = getTextXForPadding(x, textAlign, textPadding);\n y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\n }\n var el = this._getOrCreateChild(TSpan);\n var subElStyle = el.createStyle();\n el.useStyle(subElStyle);\n var defaultStyle = this._defaultStyle;\n var useDefaultFill = false;\n var defaultLineWidth = 0;\n var textFill = getFill('fill' in tokenStyle ? tokenStyle.fill\n : 'fill' in style ? style.fill\n : (useDefaultFill = true, defaultStyle.fill));\n var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\n : 'stroke' in style ? style.stroke\n : (!bgColorDrawn\n && !parentBgColorDrawn\n && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\n : null);\n var hasShadow = tokenStyle.textShadowBlur > 0\n || style.textShadowBlur > 0;\n subElStyle.text = token.text;\n subElStyle.x = x;\n subElStyle.y = y;\n if (hasShadow) {\n subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\n subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\n subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\n subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\n }\n subElStyle.textAlign = textAlign;\n subElStyle.textBaseline = 'middle';\n subElStyle.font = token.font || DEFAULT_FONT;\n subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\n setSeparateFont(subElStyle, tokenStyle);\n if (textStroke) {\n subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\n subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\n subElStyle.stroke = textStroke;\n }\n if (textFill) {\n subElStyle.fill = textFill;\n }\n var textWidth = token.contentWidth;\n var textHeight = token.contentHeight;\n el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\n };\n ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\n var textBackgroundColor = style.backgroundColor;\n var textBorderWidth = style.borderWidth;\n var textBorderColor = style.borderColor;\n var isImageBg = textBackgroundColor && textBackgroundColor.image;\n var isPlainOrGradientBg = textBackgroundColor && !isImageBg;\n var textBorderRadius = style.borderRadius;\n var self = this;\n var rectEl;\n var imgEl;\n if (isPlainOrGradientBg || style.lineHeight || (textBorderWidth && textBorderColor)) {\n rectEl = this._getOrCreateChild(Rect);\n rectEl.useStyle(rectEl.createStyle());\n rectEl.style.fill = null;\n var rectShape = rectEl.shape;\n rectShape.x = x;\n rectShape.y = y;\n rectShape.width = width;\n rectShape.height = height;\n rectShape.r = textBorderRadius;\n rectEl.dirtyShape();\n }\n if (isPlainOrGradientBg) {\n var rectStyle = rectEl.style;\n rectStyle.fill = textBackgroundColor || null;\n rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\n }\n else if (isImageBg) {\n imgEl = this._getOrCreateChild(ZRImage);\n imgEl.onload = function () {\n self.dirtyStyle();\n };\n var imgStyle = imgEl.style;\n imgStyle.image = textBackgroundColor.image;\n imgStyle.x = x;\n imgStyle.y = y;\n imgStyle.width = width;\n imgStyle.height = height;\n }\n if (textBorderWidth && textBorderColor) {\n var rectStyle = rectEl.style;\n rectStyle.lineWidth = textBorderWidth;\n rectStyle.stroke = textBorderColor;\n rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\n rectStyle.lineDash = style.borderDash;\n rectStyle.lineDashOffset = style.borderDashOffset || 0;\n rectEl.strokeContainThreshold = 0;\n if (rectEl.hasFill() && rectEl.hasStroke()) {\n rectStyle.strokeFirst = true;\n rectStyle.lineWidth *= 2;\n }\n }\n var commonStyle = (rectEl || imgEl).style;\n commonStyle.shadowBlur = style.shadowBlur || 0;\n commonStyle.shadowColor = style.shadowColor || 'transparent';\n commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\n commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\n commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\n };\n ZRText.makeFont = function (style) {\n var font = '';\n if (hasSeparateFont(style)) {\n font = [\n style.fontStyle,\n style.fontWeight,\n parseFontSize(style.fontSize),\n style.fontFamily || 'sans-serif'\n ].join(' ');\n }\n return font && trim(font) || style.textFont || style.font;\n };\n return ZRText;\n}(Displayable));\nvar VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\nvar VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\nvar FONT_PARTS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily'];\nexport function parseFontSize(fontSize) {\n if (typeof fontSize === 'string'\n && (fontSize.indexOf('px') !== -1\n || fontSize.indexOf('rem') !== -1\n || fontSize.indexOf('em') !== -1)) {\n return fontSize;\n }\n else if (!isNaN(+fontSize)) {\n return fontSize + 'px';\n }\n else {\n return DEFAULT_FONT_SIZE + 'px';\n }\n}\nfunction setSeparateFont(targetStyle, sourceStyle) {\n for (var i = 0; i < FONT_PARTS.length; i++) {\n var fontProp = FONT_PARTS[i];\n var val = sourceStyle[fontProp];\n if (val != null) {\n targetStyle[fontProp] = val;\n }\n }\n}\nexport function hasSeparateFont(style) {\n return style.fontSize != null || style.fontFamily || style.fontWeight;\n}\nexport function normalizeTextStyle(style) {\n normalizeStyle(style);\n each(style.rich, normalizeStyle);\n return style;\n}\nfunction normalizeStyle(style) {\n if (style) {\n style.font = ZRText.makeFont(style);\n var textAlign = style.align;\n textAlign === 'middle' && (textAlign = 'center');\n style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\n var verticalAlign = style.verticalAlign;\n verticalAlign === 'center' && (verticalAlign = 'middle');\n style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\n var textPadding = style.padding;\n if (textPadding) {\n style.padding = normalizeCssArray(style.padding);\n }\n }\n}\nfunction getStroke(stroke, lineWidth) {\n return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\n ? null\n : (stroke.image || stroke.colorStops)\n ? '#000'\n : stroke;\n}\nfunction getFill(fill) {\n return (fill == null || fill === 'none')\n ? null\n : (fill.image || fill.colorStops)\n ? '#000'\n : fill;\n}\nfunction getTextXForPadding(x, textAlign, textPadding) {\n return textAlign === 'right'\n ? (x - textPadding[1])\n : textAlign === 'center'\n ? (x + textPadding[3] / 2 - textPadding[1] / 2)\n : (x + textPadding[3]);\n}\nfunction getStyleText(style) {\n var text = style.text;\n text != null && (text += '');\n return text;\n}\nfunction needDrawBackground(style) {\n return !!(style.backgroundColor\n || style.lineHeight\n || (style.borderWidth && style.borderColor));\n}\nexport default ZRText;\n","import PathProxy from '../core/PathProxy.js';\nimport { applyTransform as v2ApplyTransform } from '../core/vector.js';\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\nexport default function transformPath(path, m) {\n if (!m) {\n return;\n }\n var data = path.data;\n var len = path.len();\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n for (i = 0, j = 0; i < len;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n case L:\n nPoint = 1;\n break;\n case C:\n nPoint = 3;\n break;\n case Q:\n nPoint = 2;\n break;\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx);\n data[i] *= sx;\n data[i++] += x;\n data[i] *= sy;\n data[i++] += y;\n data[i++] *= sx;\n data[i++] *= sy;\n data[i++] += angle;\n data[i++] += angle;\n i += 2;\n j = i;\n break;\n case R:\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n for (k = 0; k < nPoint; k++) {\n var p_1 = points[k];\n p_1[0] = data[i++];\n p_1[1] = data[i++];\n v2ApplyTransform(p_1, p_1, m);\n data[j++] = p_1[0];\n data[j++] = p_1[1];\n }\n }\n path.increaseVersion();\n}\n","import { __extends } from \"tslib\";\nimport Path from '../graphic/Path.js';\nimport PathProxy from '../core/PathProxy.js';\nimport transformPath from './transformPath.js';\nimport { extend } from '../core/util.js';\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n;\nfunction vRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n}\n;\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1)\n * Math.acos(vRatio(u, v));\n}\n;\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0\n + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0\n + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n var f = (fa === fs ? -1 : 1)\n * mathSqrt((((rx * rx) * (ry * ry))\n - ((rx * rx) * (yp * yp))\n - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp)\n + (ry * ry) * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0\n + mathCos(psi) * cxp\n - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0\n + mathSin(psi) * cxp\n + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (dTheta < 0) {\n var n = Math.round(dTheta / PI * 1e6) / 1e6;\n dTheta = PI * 2 + (n % 2) * PI;\n }\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\nfunction createPathProxyFromString(data) {\n var path = new PathProxy();\n if (!data) {\n return path;\n }\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var CMD = PathProxy.CMD;\n var cmdList = data.match(commandReg);\n if (!cmdList) {\n return path;\n }\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd = void 0;\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n var off = 0;\n while (off < pLen) {\n var ctlPtx = void 0;\n var ctlPty = void 0;\n var rx = void 0;\n var ry = void 0;\n var psi = void 0;\n var fa = void 0;\n var fs = void 0;\n var x1 = cpx;\n var y1 = cpy;\n var len = void 0;\n var pathData = void 0;\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n len = path.len();\n pathData = path.data;\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n len = path.len();\n pathData = path.data;\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n len = path.len();\n pathData = path.data;\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n len = path.len();\n pathData = path.data;\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd);\n cpx = subpathX;\n cpy = subpathY;\n }\n prevCmd = cmd;\n }\n path.toStatic();\n return path;\n}\nvar SVGPath = (function (_super) {\n __extends(SVGPath, _super);\n function SVGPath() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SVGPath.prototype.applyTransform = function (m) { };\n return SVGPath;\n}(Path));\nfunction isPathProxy(path) {\n return path.setData != null;\n}\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n var innerOpts = extend({}, opts);\n innerOpts.buildPath = function (path) {\n if (isPathProxy(path)) {\n path.setData(pathProxy.data);\n var ctx = path.getContext();\n if (ctx) {\n path.rebuildPath(ctx, 1);\n }\n }\n else {\n var ctx = path;\n pathProxy.rebuildPath(ctx, 1);\n }\n };\n innerOpts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirtyShape();\n };\n return innerOpts;\n}\nexport function createFromString(str, opts) {\n return new SVGPath(createPathOptions(str, opts));\n}\nexport function extendFromString(str, defaultOpts) {\n var innerOpts = createPathOptions(str, defaultOpts);\n var Sub = (function (_super) {\n __extends(Sub, _super);\n function Sub(opts) {\n var _this = _super.call(this, opts) || this;\n _this.applyTransform = innerOpts.applyTransform;\n _this.buildPath = innerOpts.buildPath;\n return _this;\n }\n return Sub;\n }(SVGPath));\n return Sub;\n}\nexport function mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n pathList.push(pathEl.getUpdatedPathProxy(true));\n }\n var pathBundle = new Path(opts);\n pathBundle.createPathProxy();\n pathBundle.buildPath = function (path) {\n if (isPathProxy(path)) {\n path.appendPath(pathList);\n var ctx = path.getContext();\n if (ctx) {\n path.rebuildPath(ctx, 1);\n }\n }\n };\n return pathBundle;\n}\nexport function clonePath(sourcePath, opts) {\n opts = opts || {};\n var path = new Path();\n if (sourcePath.shape) {\n path.setShape(sourcePath.shape);\n }\n path.setStyle(sourcePath.style);\n if (opts.bakeTransform) {\n transformPath(path.path, sourcePath.getComputedTransform());\n }\n else {\n if (opts.toLocal) {\n path.setLocalTransform(sourcePath.getComputedTransform());\n }\n else {\n path.copyTransform(sourcePath);\n }\n }\n path.buildPath = sourcePath.buildPath;\n path.applyTransform = path.applyTransform;\n path.z = sourcePath.z;\n path.z2 = sourcePath.z2;\n path.zlevel = sourcePath.zlevel;\n return path;\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar CircleShape = (function () {\n function CircleShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n }\n return CircleShape;\n}());\nexport { CircleShape };\nvar Circle = (function (_super) {\n __extends(Circle, _super);\n function Circle(opts) {\n return _super.call(this, opts) || this;\n }\n Circle.prototype.getDefaultShape = function () {\n return new CircleShape();\n };\n Circle.prototype.buildPath = function (ctx, shape) {\n ctx.moveTo(shape.cx + shape.r, shape.cy);\n ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\n };\n return Circle;\n}(Path));\n;\nCircle.prototype.type = 'circle';\nexport default Circle;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar EllipseShape = (function () {\n function EllipseShape() {\n this.cx = 0;\n this.cy = 0;\n this.rx = 0;\n this.ry = 0;\n }\n return EllipseShape;\n}());\nexport { EllipseShape };\nvar Ellipse = (function (_super) {\n __extends(Ellipse, _super);\n function Ellipse(opts) {\n return _super.call(this, opts) || this;\n }\n Ellipse.prototype.getDefaultShape = function () {\n return new EllipseShape();\n };\n Ellipse.prototype.buildPath = function (ctx, shape) {\n var k = 0.5522848;\n var x = shape.cx;\n var y = shape.cy;\n var a = shape.rx;\n var b = shape.ry;\n var ox = a * k;\n var oy = b * k;\n ctx.moveTo(x - a, y);\n ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n ctx.closePath();\n };\n return Ellipse;\n}(Path));\nEllipse.prototype.type = 'ellipse';\nexport default Ellipse;\n","import { isArray } from '../../core/util.js';\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar mathACos = Math.acos;\nvar mathATan2 = Math.atan2;\nvar mathAbs = Math.abs;\nvar mathSqrt = Math.sqrt;\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar e = 1e-4;\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var dx10 = x1 - x0;\n var dy10 = y1 - y0;\n var dx32 = x3 - x2;\n var dy32 = y3 - y2;\n var t = dy32 * dx10 - dx32 * dy10;\n if (t * t < e) {\n return;\n }\n t = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t;\n return [x0 + t * dx10, y0 + t * dy10];\n}\nfunction computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {\n var x01 = x0 - x1;\n var y01 = y0 - y1;\n var lo = (clockwise ? cr : -cr) / mathSqrt(x01 * x01 + y01 * y01);\n var ox = lo * y01;\n var oy = -lo * x01;\n var x11 = x0 + ox;\n var y11 = y0 + oy;\n var x10 = x1 + ox;\n var y10 = y1 + oy;\n var x00 = (x11 + x10) / 2;\n var y00 = (y11 + y10) / 2;\n var dx = x10 - x11;\n var dy = y10 - y11;\n var d2 = dx * dx + dy * dy;\n var r = radius - cr;\n var s = x11 * y10 - x10 * y11;\n var d = (dy < 0 ? -1 : 1) * mathSqrt(mathMax(0, r * r * d2 - s * s));\n var cx0 = (s * dy - dx * d) / d2;\n var cy0 = (-s * dx - dy * d) / d2;\n var cx1 = (s * dy + dx * d) / d2;\n var cy1 = (-s * dx + dy * d) / d2;\n var dx0 = cx0 - x00;\n var dy0 = cy0 - y00;\n var dx1 = cx1 - x00;\n var dy1 = cy1 - y00;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\n cx0 = cx1;\n cy0 = cy1;\n }\n return {\n cx: cx0,\n cy: cy0,\n x0: -ox,\n y0: -oy,\n x1: cx0 * (radius / r - 1),\n y1: cy0 * (radius / r - 1)\n };\n}\nfunction normalizeCornerRadius(cr) {\n var arr;\n if (isArray(cr)) {\n var len = cr.length;\n if (!len) {\n return cr;\n }\n if (len === 1) {\n arr = [cr[0], cr[0], 0, 0];\n }\n else if (len === 2) {\n arr = [cr[0], cr[0], cr[1], cr[1]];\n }\n else if (len === 3) {\n arr = cr.concat(cr[2]);\n }\n else {\n arr = cr;\n }\n }\n else {\n arr = [cr, cr, cr, cr];\n }\n return arr;\n}\nexport function buildPath(ctx, shape) {\n var _a;\n var radius = mathMax(shape.r, 0);\n var innerRadius = mathMax(shape.r0 || 0, 0);\n var hasRadius = radius > 0;\n var hasInnerRadius = innerRadius > 0;\n if (!hasRadius && !hasInnerRadius) {\n return;\n }\n if (!hasRadius) {\n radius = innerRadius;\n innerRadius = 0;\n }\n if (innerRadius > radius) {\n var tmp = radius;\n radius = innerRadius;\n innerRadius = tmp;\n }\n var startAngle = shape.startAngle, endAngle = shape.endAngle;\n if (isNaN(startAngle) || isNaN(endAngle)) {\n return;\n }\n var cx = shape.cx, cy = shape.cy;\n var clockwise = !!shape.clockwise;\n var arc = mathAbs(endAngle - startAngle);\n var mod = arc > PI2 && arc % PI2;\n mod > e && (arc = mod);\n if (!(radius > e)) {\n ctx.moveTo(cx, cy);\n }\n else if (arc > PI2 - e) {\n ctx.moveTo(cx + radius * mathCos(startAngle), cy + radius * mathSin(startAngle));\n ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise);\n if (innerRadius > e) {\n ctx.moveTo(cx + innerRadius * mathCos(endAngle), cy + innerRadius * mathSin(endAngle));\n ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);\n }\n }\n else {\n var icrStart = void 0;\n var icrEnd = void 0;\n var ocrStart = void 0;\n var ocrEnd = void 0;\n var ocrs = void 0;\n var ocre = void 0;\n var icrs = void 0;\n var icre = void 0;\n var ocrMax = void 0;\n var icrMax = void 0;\n var limitedOcrMax = void 0;\n var limitedIcrMax = void 0;\n var xre = void 0;\n var yre = void 0;\n var xirs = void 0;\n var yirs = void 0;\n var xrs = radius * mathCos(startAngle);\n var yrs = radius * mathSin(startAngle);\n var xire = innerRadius * mathCos(endAngle);\n var yire = innerRadius * mathSin(endAngle);\n var hasArc = arc > e;\n if (hasArc) {\n var cornerRadius = shape.cornerRadius;\n if (cornerRadius) {\n _a = normalizeCornerRadius(cornerRadius), icrStart = _a[0], icrEnd = _a[1], ocrStart = _a[2], ocrEnd = _a[3];\n }\n var halfRd = mathAbs(radius - innerRadius) / 2;\n ocrs = mathMin(halfRd, ocrStart);\n ocre = mathMin(halfRd, ocrEnd);\n icrs = mathMin(halfRd, icrStart);\n icre = mathMin(halfRd, icrEnd);\n limitedOcrMax = ocrMax = mathMax(ocrs, ocre);\n limitedIcrMax = icrMax = mathMax(icrs, icre);\n if (ocrMax > e || icrMax > e) {\n xre = radius * mathCos(endAngle);\n yre = radius * mathSin(endAngle);\n xirs = innerRadius * mathCos(startAngle);\n yirs = innerRadius * mathSin(startAngle);\n if (arc < PI) {\n var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);\n if (it_1) {\n var x0 = xrs - it_1[0];\n var y0 = yrs - it_1[1];\n var x1 = xre - it_1[0];\n var y1 = yre - it_1[1];\n var a = 1 / mathSin(mathACos((x0 * x1 + y0 * y1) / (mathSqrt(x0 * x0 + y0 * y0) * mathSqrt(x1 * x1 + y1 * y1))) / 2);\n var b = mathSqrt(it_1[0] * it_1[0] + it_1[1] * it_1[1]);\n limitedOcrMax = mathMin(ocrMax, (radius - b) / (a + 1));\n limitedIcrMax = mathMin(icrMax, (innerRadius - b) / (a - 1));\n }\n }\n }\n }\n if (!hasArc) {\n ctx.moveTo(cx + xrs, cy + yrs);\n }\n else if (limitedOcrMax > e) {\n var crStart = mathMin(ocrStart, limitedOcrMax);\n var crEnd = mathMin(ocrEnd, limitedOcrMax);\n var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, crStart, clockwise);\n var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, crEnd, clockwise);\n ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);\n if (limitedOcrMax < ocrMax && crStart === crEnd) {\n ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedOcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);\n }\n else {\n crStart > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crStart, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);\n ctx.arc(cx, cy, radius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), !clockwise);\n crEnd > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crEnd, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);\n }\n }\n else {\n ctx.moveTo(cx + xrs, cy + yrs);\n ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise);\n }\n if (!(innerRadius > e) || !hasArc) {\n ctx.lineTo(cx + xire, cy + yire);\n }\n else if (limitedIcrMax > e) {\n var crStart = mathMin(icrStart, limitedIcrMax);\n var crEnd = mathMin(icrEnd, limitedIcrMax);\n var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -crEnd, clockwise);\n var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -crStart, clockwise);\n ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);\n if (limitedIcrMax < icrMax && crStart === crEnd) {\n ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedIcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);\n }\n else {\n crEnd > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crEnd, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);\n ctx.arc(cx, cy, innerRadius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), clockwise);\n crStart > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crStart, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);\n }\n }\n else {\n ctx.lineTo(cx + xire, cy + yire);\n ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);\n }\n }\n ctx.closePath();\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as roundSectorHelper from '../helper/roundSector.js';\nvar SectorShape = (function () {\n function SectorShape() {\n this.cx = 0;\n this.cy = 0;\n this.r0 = 0;\n this.r = 0;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.clockwise = true;\n this.cornerRadius = 0;\n }\n return SectorShape;\n}());\nexport { SectorShape };\nvar Sector = (function (_super) {\n __extends(Sector, _super);\n function Sector(opts) {\n return _super.call(this, opts) || this;\n }\n Sector.prototype.getDefaultShape = function () {\n return new SectorShape();\n };\n Sector.prototype.buildPath = function (ctx, shape) {\n roundSectorHelper.buildPath(ctx, shape);\n };\n Sector.prototype.isZeroArea = function () {\n return this.shape.startAngle === this.shape.endAngle\n || this.shape.r === this.shape.r0;\n };\n return Sector;\n}(Path));\nSector.prototype.type = 'sector';\nexport default Sector;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar RingShape = (function () {\n function RingShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n this.r0 = 0;\n }\n return RingShape;\n}());\nexport { RingShape };\nvar Ring = (function (_super) {\n __extends(Ring, _super);\n function Ring(opts) {\n return _super.call(this, opts) || this;\n }\n Ring.prototype.getDefaultShape = function () {\n return new RingShape();\n };\n Ring.prototype.buildPath = function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var PI2 = Math.PI * 2;\n ctx.moveTo(x + shape.r, y);\n ctx.arc(x, y, shape.r, 0, PI2, false);\n ctx.moveTo(x + shape.r0, y);\n ctx.arc(x, y, shape.r0, 0, PI2, true);\n };\n return Ring;\n}(Path));\nRing.prototype.type = 'ring';\nexport default Ring;\n","import { min as v2Min, max as v2Max, scale as v2Scale, distance as v2Distance, add as v2Add, clone as v2Clone, sub as v2Sub } from '../../core/vector.js';\nexport default function smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var v = [];\n var v1 = [];\n var v2 = [];\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n if (constraint) {\n min = [Infinity, Infinity];\n max = [-Infinity, -Infinity];\n for (var i = 0, len = points.length; i < len; i++) {\n v2Min(min, min, points[i]);\n v2Max(max, max, points[i]);\n }\n v2Min(min, min, constraint[0]);\n v2Max(max, max, constraint[1]);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (isLoop) {\n prevPoint = points[i ? i - 1 : len - 1];\n nextPoint = points[(i + 1) % len];\n }\n else {\n if (i === 0 || i === len - 1) {\n cps.push(v2Clone(points[i]));\n continue;\n }\n else {\n prevPoint = points[i - 1];\n nextPoint = points[i + 1];\n }\n }\n v2Sub(v, nextPoint, prevPoint);\n v2Scale(v, v, smooth);\n var d0 = v2Distance(point, prevPoint);\n var d1 = v2Distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n v2Scale(v1, v, -d0);\n v2Scale(v2, v, d1);\n var cp0 = v2Add([], point, v1);\n var cp1 = v2Add([], point, v2);\n if (constraint) {\n v2Max(cp0, cp0, min);\n v2Min(cp0, cp0, max);\n v2Max(cp1, cp1, min);\n v2Min(cp1, cp1, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n}\n","import smoothBezier from './smoothBezier.js';\nexport function buildPath(ctx, shape, closePath) {\n var smooth = shape.smooth;\n var points = shape.points;\n if (points && points.length >= 2) {\n if (smooth) {\n var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n ctx.moveTo(points[0][0], points[0][1]);\n var len = points.length;\n for (var i = 0; i < (closePath ? len : len - 1); i++) {\n var cp1 = controlPoints[i * 2];\n var cp2 = controlPoints[i * 2 + 1];\n var p = points[(i + 1) % len];\n ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n }\n }\n else {\n ctx.moveTo(points[0][0], points[0][1]);\n for (var i = 1, l = points.length; i < l; i++) {\n ctx.lineTo(points[i][0], points[i][1]);\n }\n }\n closePath && ctx.closePath();\n }\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as polyHelper from '../helper/poly.js';\nvar PolygonShape = (function () {\n function PolygonShape() {\n this.points = null;\n this.smooth = 0;\n this.smoothConstraint = null;\n }\n return PolygonShape;\n}());\nexport { PolygonShape };\nvar Polygon = (function (_super) {\n __extends(Polygon, _super);\n function Polygon(opts) {\n return _super.call(this, opts) || this;\n }\n Polygon.prototype.getDefaultShape = function () {\n return new PolygonShape();\n };\n Polygon.prototype.buildPath = function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, true);\n };\n return Polygon;\n}(Path));\n;\nPolygon.prototype.type = 'polygon';\nexport default Polygon;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as polyHelper from '../helper/poly.js';\nvar PolylineShape = (function () {\n function PolylineShape() {\n this.points = null;\n this.percent = 1;\n this.smooth = 0;\n this.smoothConstraint = null;\n }\n return PolylineShape;\n}());\nexport { PolylineShape };\nvar Polyline = (function (_super) {\n __extends(Polyline, _super);\n function Polyline(opts) {\n return _super.call(this, opts) || this;\n }\n Polyline.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Polyline.prototype.getDefaultShape = function () {\n return new PolylineShape();\n };\n Polyline.prototype.buildPath = function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, false);\n };\n return Polyline;\n}(Path));\nPolyline.prototype.type = 'polyline';\nexport default Polyline;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport { subPixelOptimizeLine } from '../helper/subPixelOptimize.js';\nvar subPixelOptimizeOutputShape = {};\nvar LineShape = (function () {\n function LineShape() {\n this.x1 = 0;\n this.y1 = 0;\n this.x2 = 0;\n this.y2 = 0;\n this.percent = 1;\n }\n return LineShape;\n}());\nexport { LineShape };\nvar Line = (function (_super) {\n __extends(Line, _super);\n function Line(opts) {\n return _super.call(this, opts) || this;\n }\n Line.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Line.prototype.getDefaultShape = function () {\n return new LineShape();\n };\n Line.prototype.buildPath = function (ctx, shape) {\n var x1;\n var y1;\n var x2;\n var y2;\n if (this.subPixelOptimize) {\n var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);\n x1 = optimizedShape.x1;\n y1 = optimizedShape.y1;\n x2 = optimizedShape.x2;\n y2 = optimizedShape.y2;\n }\n else {\n x1 = shape.x1;\n y1 = shape.y1;\n x2 = shape.x2;\n y2 = shape.y2;\n }\n var percent = shape.percent;\n if (percent === 0) {\n return;\n }\n ctx.moveTo(x1, y1);\n if (percent < 1) {\n x2 = x1 * (1 - percent) + x2 * percent;\n y2 = y1 * (1 - percent) + y2 * percent;\n }\n ctx.lineTo(x2, y2);\n };\n Line.prototype.pointAt = function (p) {\n var shape = this.shape;\n return [\n shape.x1 * (1 - p) + shape.x2 * p,\n shape.y1 * (1 - p) + shape.y2 * p\n ];\n };\n return Line;\n}(Path));\nLine.prototype.type = 'line';\nexport default Line;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as vec2 from '../../core/vector.js';\nimport { quadraticSubdivide, cubicSubdivide, quadraticAt, cubicAt, quadraticDerivativeAt, cubicDerivativeAt } from '../../core/curve.js';\nvar out = [];\nvar BezierCurveShape = (function () {\n function BezierCurveShape() {\n this.x1 = 0;\n this.y1 = 0;\n this.x2 = 0;\n this.y2 = 0;\n this.cpx1 = 0;\n this.cpy1 = 0;\n this.percent = 1;\n }\n return BezierCurveShape;\n}());\nexport { BezierCurveShape };\nfunction someVectorAt(shape, t, isTangent) {\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n if (cpx2 != null || cpy2 != null) {\n return [\n (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\n (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\n ];\n }\n else {\n return [\n (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\n (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\n ];\n }\n}\nvar BezierCurve = (function (_super) {\n __extends(BezierCurve, _super);\n function BezierCurve(opts) {\n return _super.call(this, opts) || this;\n }\n BezierCurve.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n BezierCurve.prototype.getDefaultShape = function () {\n return new BezierCurveShape();\n };\n BezierCurve.prototype.buildPath = function (ctx, shape) {\n var x1 = shape.x1;\n var y1 = shape.y1;\n var x2 = shape.x2;\n var y2 = shape.y2;\n var cpx1 = shape.cpx1;\n var cpy1 = shape.cpy1;\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n var percent = shape.percent;\n if (percent === 0) {\n return;\n }\n ctx.moveTo(x1, y1);\n if (cpx2 == null || cpy2 == null) {\n if (percent < 1) {\n quadraticSubdivide(x1, cpx1, x2, percent, out);\n cpx1 = out[1];\n x2 = out[2];\n quadraticSubdivide(y1, cpy1, y2, percent, out);\n cpy1 = out[1];\n y2 = out[2];\n }\n ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n }\n else {\n if (percent < 1) {\n cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n cpx1 = out[1];\n cpx2 = out[2];\n x2 = out[3];\n cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n cpy1 = out[1];\n cpy2 = out[2];\n y2 = out[3];\n }\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n }\n };\n BezierCurve.prototype.pointAt = function (t) {\n return someVectorAt(this.shape, t, false);\n };\n BezierCurve.prototype.tangentAt = function (t) {\n var p = someVectorAt(this.shape, t, true);\n return vec2.normalize(p, p);\n };\n return BezierCurve;\n}(Path));\n;\nBezierCurve.prototype.type = 'bezier-curve';\nexport default BezierCurve;\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar ArcShape = (function () {\n function ArcShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.clockwise = true;\n }\n return ArcShape;\n}());\nexport { ArcShape };\nvar Arc = (function (_super) {\n __extends(Arc, _super);\n function Arc(opts) {\n return _super.call(this, opts) || this;\n }\n Arc.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Arc.prototype.getDefaultShape = function () {\n return new ArcShape();\n };\n Arc.prototype.buildPath = function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n };\n return Arc;\n}(Path));\nArc.prototype.type = 'arc';\nexport default Arc;\n","import { __extends } from \"tslib\";\nimport Path from './Path.js';\nvar CompoundPath = (function (_super) {\n __extends(CompoundPath, _super);\n function CompoundPath() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'compound';\n return _this;\n }\n CompoundPath.prototype._updatePathDirty = function () {\n var paths = this.shape.paths;\n var dirtyPath = this.shapeChanged();\n for (var i = 0; i < paths.length; i++) {\n dirtyPath = dirtyPath || paths[i].shapeChanged();\n }\n if (dirtyPath) {\n this.dirtyShape();\n }\n };\n CompoundPath.prototype.beforeBrush = function () {\n this._updatePathDirty();\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale();\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n };\n CompoundPath.prototype.buildPath = function (ctx, shape) {\n var paths = shape.paths || [];\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n };\n CompoundPath.prototype.afterBrush = function () {\n var paths = this.shape.paths || [];\n for (var i = 0; i < paths.length; i++) {\n paths[i].pathUpdated();\n }\n };\n CompoundPath.prototype.getBoundingRect = function () {\n this._updatePathDirty.call(this);\n return Path.prototype.getBoundingRect.call(this);\n };\n return CompoundPath;\n}(Path));\nexport default CompoundPath;\n","var Gradient = (function () {\n function Gradient(colorStops) {\n this.colorStops = colorStops || [];\n }\n Gradient.prototype.addColorStop = function (offset, color) {\n this.colorStops.push({\n offset: offset,\n color: color\n });\n };\n return Gradient;\n}());\nexport default Gradient;\n","import { __extends } from \"tslib\";\nimport Gradient from './Gradient.js';\nvar LinearGradient = (function (_super) {\n __extends(LinearGradient, _super);\n function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\n var _this = _super.call(this, colorStops) || this;\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;\n _this.type = 'linear';\n _this.global = globalCoord || false;\n return _this;\n }\n return LinearGradient;\n}(Gradient));\nexport default LinearGradient;\n;\n","import { __extends } from \"tslib\";\nimport Gradient from './Gradient.js';\nvar RadialGradient = (function (_super) {\n __extends(RadialGradient, _super);\n function RadialGradient(x, y, r, colorStops, globalCoord) {\n var _this = _super.call(this, colorStops) || this;\n _this.x = x == null ? 0.5 : x;\n _this.y = y == null ? 0.5 : y;\n _this.r = r == null ? 0.5 : r;\n _this.type = 'radial';\n _this.global = globalCoord || false;\n return _this;\n }\n return RadialGradient;\n}(Gradient));\nexport default RadialGradient;\n","import Point from './Point.js';\nvar extent = [0, 0];\nvar extent2 = [0, 0];\nvar minTv = new Point();\nvar maxTv = new Point();\nvar OrientedBoundingRect = (function () {\n function OrientedBoundingRect(rect, transform) {\n this._corners = [];\n this._axes = [];\n this._origin = [0, 0];\n for (var i = 0; i < 4; i++) {\n this._corners[i] = new Point();\n }\n for (var i = 0; i < 2; i++) {\n this._axes[i] = new Point();\n }\n if (rect) {\n this.fromBoundingRect(rect, transform);\n }\n }\n OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\n var corners = this._corners;\n var axes = this._axes;\n var x = rect.x;\n var y = rect.y;\n var x2 = x + rect.width;\n var y2 = y + rect.height;\n corners[0].set(x, y);\n corners[1].set(x2, y);\n corners[2].set(x2, y2);\n corners[3].set(x, y2);\n if (transform) {\n for (var i = 0; i < 4; i++) {\n corners[i].transform(transform);\n }\n }\n Point.sub(axes[0], corners[1], corners[0]);\n Point.sub(axes[1], corners[3], corners[0]);\n axes[0].normalize();\n axes[1].normalize();\n for (var i = 0; i < 2; i++) {\n this._origin[i] = axes[i].dot(corners[0]);\n }\n };\n OrientedBoundingRect.prototype.intersect = function (other, mtv) {\n var overlapped = true;\n var noMtv = !mtv;\n minTv.set(Infinity, Infinity);\n maxTv.set(0, 0);\n if (!this._intersectCheckOneSide(this, other, minTv, maxTv, noMtv, 1)) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n }\n if (!this._intersectCheckOneSide(other, this, minTv, maxTv, noMtv, -1)) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n }\n if (!noMtv) {\n Point.copy(mtv, overlapped ? minTv : maxTv);\n }\n return overlapped;\n };\n OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\n var overlapped = true;\n for (var i = 0; i < 2; i++) {\n var axis = this._axes[i];\n this._getProjMinMaxOnAxis(i, self._corners, extent);\n this._getProjMinMaxOnAxis(i, other._corners, extent2);\n if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n var dist0 = Math.abs(extent2[0] - extent[1]);\n var dist1 = Math.abs(extent[0] - extent2[1]);\n if (Math.min(dist0, dist1) > maxTv.len()) {\n if (dist0 < dist1) {\n Point.scale(maxTv, axis, -dist0 * inverse);\n }\n else {\n Point.scale(maxTv, axis, dist1 * inverse);\n }\n }\n }\n else if (minTv) {\n var dist0 = Math.abs(extent2[0] - extent[1]);\n var dist1 = Math.abs(extent[0] - extent2[1]);\n if (Math.min(dist0, dist1) < minTv.len()) {\n if (dist0 < dist1) {\n Point.scale(minTv, axis, dist0 * inverse);\n }\n else {\n Point.scale(minTv, axis, -dist1 * inverse);\n }\n }\n }\n }\n return overlapped;\n };\n OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\n var axis = this._axes[dim];\n var origin = this._origin;\n var proj = corners[0].dot(axis) + origin[dim];\n var min = proj;\n var max = proj;\n for (var i = 1; i < corners.length; i++) {\n var proj_1 = corners[i].dot(axis) + origin[dim];\n min = Math.min(proj_1, min);\n max = Math.max(proj_1, max);\n }\n out[0] = min;\n out[1] = max;\n };\n return OrientedBoundingRect;\n}());\nexport default OrientedBoundingRect;\n","import { __extends } from \"tslib\";\nimport Displayble from './Displayable.js';\nimport BoundingRect from '../core/BoundingRect.js';\nvar m = [];\nvar IncrementalDisplayable = (function (_super) {\n __extends(IncrementalDisplayable, _super);\n function IncrementalDisplayable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.notClear = true;\n _this.incremental = true;\n _this._displayables = [];\n _this._temporaryDisplayables = [];\n _this._cursor = 0;\n return _this;\n }\n IncrementalDisplayable.prototype.traverse = function (cb, context) {\n cb.call(context, this);\n };\n IncrementalDisplayable.prototype.useStyle = function () {\n this.style = {};\n };\n IncrementalDisplayable.prototype.getCursor = function () {\n return this._cursor;\n };\n IncrementalDisplayable.prototype.innerAfterBrush = function () {\n this._cursor = this._displayables.length;\n };\n IncrementalDisplayable.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.markRedraw();\n this.notClear = false;\n };\n IncrementalDisplayable.prototype.clearTemporalDisplayables = function () {\n this._temporaryDisplayables = [];\n };\n IncrementalDisplayable.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n }\n else {\n this._displayables.push(displayable);\n }\n this.markRedraw();\n };\n IncrementalDisplayable.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n };\n IncrementalDisplayable.prototype.getDisplayables = function () {\n return this._displayables;\n };\n IncrementalDisplayable.prototype.getTemporalDisplayables = function () {\n return this._temporaryDisplayables;\n };\n IncrementalDisplayable.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n };\n IncrementalDisplayable.prototype.update = function () {\n this.updateTransform();\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n };\n IncrementalDisplayable.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n rect.union(childRect);\n }\n this._rect = rect;\n }\n return this._rect;\n };\n IncrementalDisplayable.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\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 if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n return false;\n };\n return IncrementalDisplayable;\n}(Displayble));\nexport default IncrementalDisplayable;\n","var wmUniqueIndex = Math.round(Math.random() * 9);\nvar supportDefineProperty = typeof Object.defineProperty === 'function';\nvar WeakMap = (function () {\n function WeakMap() {\n this._id = '__ec_inner_' + wmUniqueIndex++;\n }\n WeakMap.prototype.get = function (key) {\n return this._guard(key)[this._id];\n };\n WeakMap.prototype.set = function (key, value) {\n var target = this._guard(key);\n if (supportDefineProperty) {\n Object.defineProperty(target, this._id, {\n value: value,\n enumerable: false,\n configurable: true\n });\n }\n else {\n target[this._id] = value;\n }\n return this;\n };\n WeakMap.prototype[\"delete\"] = function (key) {\n if (this.has(key)) {\n delete this._guard(key)[this._id];\n return true;\n }\n return false;\n };\n WeakMap.prototype.has = function (key) {\n return !!this._guard(key)[this._id];\n };\n WeakMap.prototype._guard = function (key) {\n if (key !== Object(key)) {\n throw TypeError('Value of WeakMap is not a non-null object.');\n }\n return key;\n };\n return WeakMap;\n}());\nexport default WeakMap;\n","function isSafeNum(num) {\n return isFinite(num);\n}\nexport function createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n }\n x = isSafeNum(x) ? x : 0;\n x2 = isSafeNum(x2) ? x2 : 1;\n y = isSafeNum(y) ? y : 0;\n y2 = isSafeNum(y2) ? y2 : 0;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\nexport function createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n x = isSafeNum(x) ? x : 0.5;\n y = isSafeNum(y) ? y : 0.5;\n r = r >= 0 && isSafeNum(r) ? r : 0.5;\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\nexport function getCanvasGradient(ctx, obj, rect) {\n var canvasGradient = obj.type === 'radial'\n ? createRadialGradient(ctx, obj, rect)\n : createLinearGradient(ctx, obj, rect);\n var colorStops = obj.colorStops;\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n return canvasGradient;\n}\nexport function isClipPathChanged(clipPaths, prevClipPaths) {\n if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\n return false;\n }\n if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\n return true;\n }\n for (var i = 0; i < clipPaths.length; i++) {\n if (clipPaths[i] !== prevClipPaths[i]) {\n return true;\n }\n }\n return false;\n}\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\nexport function getSize(root, whIdx, opts) {\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n var stl = document.defaultView.getComputedStyle(root);\n return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\n - (parseInt10(stl[plt]) || 0)\n - (parseInt10(stl[prb]) || 0)) | 0;\n}\n","import { isArray, isNumber, map } from '../core/util.js';\nexport function normalizeLineDash(lineType, lineWidth) {\n if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {\n return null;\n }\n return lineType === 'dashed'\n ? [4 * lineWidth, 2 * lineWidth]\n : lineType === 'dotted'\n ? [lineWidth]\n : isNumber(lineType)\n ? [lineType] : isArray(lineType) ? lineType : null;\n}\nexport function getLineDash(el) {\n var style = el.style;\n var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\n var lineDashOffset = style.lineDashOffset;\n if (lineDash) {\n var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\n if (lineScale_1 && lineScale_1 !== 1) {\n lineDash = map(lineDash, function (rawVal) {\n return rawVal / lineScale_1;\n });\n lineDashOffset /= lineScale_1;\n }\n }\n return [lineDash, lineDashOffset];\n}\n","import { DEFAULT_COMMON_STYLE } from '../graphic/Displayable.js';\nimport PathProxy from '../core/PathProxy.js';\nimport { createOrUpdateImage, isImageReady } from '../graphic/helper/image.js';\nimport { getCanvasGradient, isClipPathChanged } from './helper.js';\nimport Path from '../graphic/Path.js';\nimport ZRImage from '../graphic/Image.js';\nimport TSpan from '../graphic/TSpan.js';\nimport { RADIAN_TO_DEGREE } from '../core/util.js';\nimport { getLineDash } from './dashStyle.js';\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT } from '../graphic/constants.js';\nimport { DEFAULT_FONT } from '../core/platform.js';\nvar pathProxyForDraw = new PathProxy(true);\nfunction styleHasStroke(style) {\n var stroke = style.stroke;\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n}\nfunction isValidStrokeFillStyle(strokeOrFill) {\n return typeof strokeOrFill === 'string' && strokeOrFill !== 'none';\n}\nfunction styleHasFill(style) {\n var fill = style.fill;\n return fill != null && fill !== 'none';\n}\nfunction doFillPath(ctx, style) {\n if (style.fillOpacity != null && style.fillOpacity !== 1) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n ctx.fill();\n ctx.globalAlpha = originalGlobalAlpha;\n }\n else {\n ctx.fill();\n }\n}\nfunction doStrokePath(ctx, style) {\n if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n ctx.stroke();\n ctx.globalAlpha = originalGlobalAlpha;\n }\n else {\n ctx.stroke();\n }\n}\nexport function createCanvasPattern(ctx, pattern, el) {\n var image = createOrUpdateImage(pattern.image, pattern.__image, el);\n if (isImageReady(image)) {\n var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\n if (typeof DOMMatrix === 'function'\n && canvasPattern\n && canvasPattern.setTransform) {\n var matrix = new DOMMatrix();\n matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\n matrix.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE);\n matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\n canvasPattern.setTransform(matrix);\n }\n return canvasPattern;\n }\n}\nfunction brushPath(ctx, el, style, inBatch) {\n var _a;\n var hasStroke = styleHasStroke(style);\n var hasFill = styleHasFill(style);\n var strokePercent = style.strokePercent;\n var strokePart = strokePercent < 1;\n var firstDraw = !el.path;\n if ((!el.silent || strokePart) && firstDraw) {\n el.createPathProxy();\n }\n var path = el.path || pathProxyForDraw;\n var dirtyFlag = el.__dirty;\n if (!inBatch) {\n var fill = style.fill;\n var stroke = style.stroke;\n var hasFillGradient = hasFill && !!fill.colorStops;\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n var hasFillPattern = hasFill && !!fill.image;\n var hasStrokePattern = hasStroke && !!stroke.image;\n var fillGradient = void 0;\n var strokeGradient = void 0;\n var fillPattern = void 0;\n var strokePattern = void 0;\n var rect = void 0;\n if (hasFillGradient || hasStrokeGradient) {\n rect = el.getBoundingRect();\n }\n if (hasFillGradient) {\n fillGradient = dirtyFlag\n ? getCanvasGradient(ctx, fill, rect)\n : el.__canvasFillGradient;\n el.__canvasFillGradient = fillGradient;\n }\n if (hasStrokeGradient) {\n strokeGradient = dirtyFlag\n ? getCanvasGradient(ctx, stroke, rect)\n : el.__canvasStrokeGradient;\n el.__canvasStrokeGradient = strokeGradient;\n }\n if (hasFillPattern) {\n fillPattern = (dirtyFlag || !el.__canvasFillPattern)\n ? createCanvasPattern(ctx, fill, el)\n : el.__canvasFillPattern;\n el.__canvasFillPattern = fillPattern;\n }\n if (hasStrokePattern) {\n strokePattern = (dirtyFlag || !el.__canvasStrokePattern)\n ? createCanvasPattern(ctx, stroke, el)\n : el.__canvasStrokePattern;\n el.__canvasStrokePattern = fillPattern;\n }\n if (hasFillGradient) {\n ctx.fillStyle = fillGradient;\n }\n else if (hasFillPattern) {\n if (fillPattern) {\n ctx.fillStyle = fillPattern;\n }\n else {\n hasFill = false;\n }\n }\n if (hasStrokeGradient) {\n ctx.strokeStyle = strokeGradient;\n }\n else if (hasStrokePattern) {\n if (strokePattern) {\n ctx.strokeStyle = strokePattern;\n }\n else {\n hasStroke = false;\n }\n }\n }\n var scale = el.getGlobalScale();\n path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\n var lineDash;\n var lineDashOffset;\n if (ctx.setLineDash && style.lineDash) {\n _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n }\n var needsRebuild = true;\n if (firstDraw || (dirtyFlag & SHAPE_CHANGED_BIT)) {\n path.setDPR(ctx.dpr);\n if (strokePart) {\n path.setContext(null);\n }\n else {\n path.setContext(ctx);\n needsRebuild = false;\n }\n path.reset();\n el.buildPath(path, el.shape, inBatch);\n path.toStatic();\n el.pathUpdated();\n }\n if (needsRebuild) {\n path.rebuildPath(ctx, strokePart ? strokePercent : 1);\n }\n if (lineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n if (!inBatch) {\n if (style.strokeFirst) {\n if (hasStroke) {\n doStrokePath(ctx, style);\n }\n if (hasFill) {\n doFillPath(ctx, style);\n }\n }\n else {\n if (hasFill) {\n doFillPath(ctx, style);\n }\n if (hasStroke) {\n doStrokePath(ctx, style);\n }\n }\n }\n if (lineDash) {\n ctx.setLineDash([]);\n }\n}\nfunction brushImage(ctx, el, style) {\n var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\n if (!image || !isImageReady(image)) {\n return;\n }\n var x = style.x || 0;\n var y = style.y || 0;\n var width = el.getWidth();\n var height = el.getHeight();\n var aspect = image.width / image.height;\n if (width == null && height != null) {\n width = height * aspect;\n }\n else if (height == null && width != null) {\n height = width / aspect;\n }\n else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n }\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n }\n else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n }\n else {\n ctx.drawImage(image, x, y, width, height);\n }\n}\nfunction brushText(ctx, el, style) {\n var _a;\n var text = style.text;\n text != null && (text += '');\n if (text) {\n ctx.font = style.font || DEFAULT_FONT;\n ctx.textAlign = style.textAlign;\n ctx.textBaseline = style.textBaseline;\n var lineDash = void 0;\n var lineDashOffset = void 0;\n if (ctx.setLineDash && style.lineDash) {\n _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n }\n if (lineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n if (style.strokeFirst) {\n if (styleHasStroke(style)) {\n ctx.strokeText(text, style.x, style.y);\n }\n if (styleHasFill(style)) {\n ctx.fillText(text, style.x, style.y);\n }\n }\n else {\n if (styleHasFill(style)) {\n ctx.fillText(text, style.x, style.y);\n }\n if (styleHasStroke(style)) {\n ctx.strokeText(text, style.x, style.y);\n }\n }\n if (lineDash) {\n ctx.setLineDash([]);\n }\n }\n}\nvar SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\nvar STROKE_PROPS = [\n ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\n];\nfunction bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\n var styleChanged = false;\n if (!forceSetAll) {\n prevStyle = prevStyle || {};\n if (style === prevStyle) {\n return false;\n }\n }\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n var opacity = Math.max(Math.min(style.opacity, 1), 0);\n ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity;\n }\n if (forceSetAll || style.blend !== prevStyle.blend) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\n }\n for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\n var propName = SHADOW_NUMBER_PROPS[i];\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx[propName] = ctx.dpr * (style[propName] || 0);\n }\n }\n if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\n }\n return styleChanged;\n}\nfunction bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\n var style = getStyle(el, scope.inHover);\n var prevStyle = forceSetAll\n ? null\n : (prevEl && getStyle(prevEl, scope.inHover) || {});\n if (style === prevStyle) {\n return false;\n }\n var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\n if (forceSetAll || style.fill !== prevStyle.fill) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill);\n }\n if (forceSetAll || style.stroke !== prevStyle.stroke) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke);\n }\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n if (el.hasStroke()) {\n var lineWidth = style.lineWidth;\n var newLineWidth = lineWidth / ((style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1);\n if (ctx.lineWidth !== newLineWidth) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.lineWidth = newLineWidth;\n }\n }\n for (var i = 0; i < STROKE_PROPS.length; i++) {\n var prop = STROKE_PROPS[i];\n var propName = prop[0];\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx[propName] = style[propName] || prop[1];\n }\n }\n return styleChanged;\n}\nfunction bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\n return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\n}\nfunction setContextTransform(ctx, el) {\n var m = el.transform;\n var dpr = ctx.dpr || 1;\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n }\n else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n}\nfunction updateClipStatus(clipPaths, ctx, scope) {\n var allClipped = false;\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n allClipped = allClipped || clipPath.isZeroArea();\n setContextTransform(ctx, clipPath);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip();\n }\n scope.allClipped = allClipped;\n}\nfunction isTransformChanged(m0, m1) {\n if (m0 && m1) {\n return m0[0] !== m1[0]\n || m0[1] !== m1[1]\n || m0[2] !== m1[2]\n || m0[3] !== m1[3]\n || m0[4] !== m1[4]\n || m0[5] !== m1[5];\n }\n else if (!m0 && !m1) {\n return false;\n }\n return true;\n}\nvar DRAW_TYPE_PATH = 1;\nvar DRAW_TYPE_IMAGE = 2;\nvar DRAW_TYPE_TEXT = 3;\nvar DRAW_TYPE_INCREMENTAL = 4;\nfunction canPathBatch(style) {\n var hasFill = styleHasFill(style);\n var hasStroke = styleHasStroke(style);\n return !(style.lineDash\n || !(+hasFill ^ +hasStroke)\n || (hasFill && typeof style.fill !== 'string')\n || (hasStroke && typeof style.stroke !== 'string')\n || style.strokePercent < 1\n || style.strokeOpacity < 1\n || style.fillOpacity < 1);\n}\nfunction flushPathDrawn(ctx, scope) {\n scope.batchFill && ctx.fill();\n scope.batchStroke && ctx.stroke();\n scope.batchFill = '';\n scope.batchStroke = '';\n}\nfunction getStyle(el, inHover) {\n return inHover ? (el.__hoverStyle || el.style) : el.style;\n}\nexport function brushSingle(ctx, el) {\n brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\n}\nexport function brush(ctx, el, scope, isLast) {\n var m = el.transform;\n if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\n el.__dirty &= ~REDRAW_BIT;\n el.__isRendered = false;\n return;\n }\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths;\n var forceSetTransform = false;\n var forceSetStyle = false;\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n if (prevElClipPaths && prevElClipPaths.length) {\n flushPathDrawn(ctx, scope);\n ctx.restore();\n forceSetStyle = forceSetTransform = true;\n scope.prevElClipPaths = null;\n scope.allClipped = false;\n scope.prevEl = null;\n }\n if (clipPaths && clipPaths.length) {\n flushPathDrawn(ctx, scope);\n ctx.save();\n updateClipStatus(clipPaths, ctx, scope);\n forceSetTransform = true;\n }\n scope.prevElClipPaths = clipPaths;\n }\n if (scope.allClipped) {\n el.__isRendered = false;\n return;\n }\n el.beforeBrush && el.beforeBrush();\n el.innerBeforeBrush();\n var prevEl = scope.prevEl;\n if (!prevEl) {\n forceSetStyle = forceSetTransform = true;\n }\n var canBatchPath = el instanceof Path\n && el.autoBatch\n && canPathBatch(el.style);\n if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\n flushPathDrawn(ctx, scope);\n setContextTransform(ctx, el);\n }\n else if (!canBatchPath) {\n flushPathDrawn(ctx, scope);\n }\n var style = getStyle(el, scope.inHover);\n if (el instanceof Path) {\n if (scope.lastDrawType !== DRAW_TYPE_PATH) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_PATH;\n }\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\n ctx.beginPath();\n }\n brushPath(ctx, el, style, canBatchPath);\n if (canBatchPath) {\n scope.batchFill = style.fill || '';\n scope.batchStroke = style.stroke || '';\n }\n }\n else {\n if (el instanceof TSpan) {\n if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_TEXT;\n }\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n brushText(ctx, el, style);\n }\n else if (el instanceof ZRImage) {\n if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_IMAGE;\n }\n bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\n brushImage(ctx, el, style);\n }\n else if (el.getTemporalDisplayables) {\n if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\n }\n brushIncremental(ctx, el, scope);\n }\n }\n if (canBatchPath && isLast) {\n flushPathDrawn(ctx, scope);\n }\n el.innerAfterBrush();\n el.afterBrush && el.afterBrush();\n scope.prevEl = el;\n el.__dirty = 0;\n el.__isRendered = true;\n}\nfunction brushIncremental(ctx, el, scope) {\n var displayables = el.getDisplayables();\n var temporalDisplayables = el.getTemporalDisplayables();\n ctx.save();\n var innerScope = {\n prevElClipPaths: null,\n prevEl: null,\n allClipped: false,\n viewWidth: scope.viewWidth,\n viewHeight: scope.viewHeight,\n inHover: scope.inHover\n };\n var i;\n var len;\n for (i = el.getCursor(), len = displayables.length; i < len; i++) {\n var displayable = displayables[i];\n displayable.beforeBrush && displayable.beforeBrush();\n displayable.innerBeforeBrush();\n brush(ctx, displayable, innerScope, i === len - 1);\n displayable.innerAfterBrush();\n displayable.afterBrush && displayable.afterBrush();\n innerScope.prevEl = displayable;\n }\n for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\n var displayable = temporalDisplayables[i_1];\n displayable.beforeBrush && displayable.beforeBrush();\n displayable.innerBeforeBrush();\n brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\n displayable.innerAfterBrush();\n displayable.afterBrush && displayable.afterBrush();\n innerScope.prevEl = displayable;\n }\n el.clearTemporalDisplayables();\n el.notClear = true;\n ctx.restore();\n}\n","import windingLine from './windingLine.js';\nvar EPSILON = 1e-8;\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\nexport function contain(points, x, y) {\n var w = 0;\n var p = points[0];\n if (!p) {\n return false;\n }\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n }\n var p0 = points[0];\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n return w !== 0;\n}\n","import { isAroundZero } from './helper.js';\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nvar PI2 = Math.PI * 2;\nvar degree = 180 / PI;\nvar SVGPathRebuilder = (function () {\n function SVGPathRebuilder() {\n }\n SVGPathRebuilder.prototype.reset = function (precision) {\n this._start = true;\n this._d = [];\n this._str = '';\n this._p = Math.pow(10, precision || 4);\n };\n SVGPathRebuilder.prototype.moveTo = function (x, y) {\n this._add('M', x, y);\n };\n SVGPathRebuilder.prototype.lineTo = function (x, y) {\n this._add('L', x, y);\n };\n SVGPathRebuilder.prototype.bezierCurveTo = function (x, y, x2, y2, x3, y3) {\n this._add('C', x, y, x2, y2, x3, y3);\n };\n SVGPathRebuilder.prototype.quadraticCurveTo = function (x, y, x2, y2) {\n this._add('Q', x, y, x2, y2);\n };\n SVGPathRebuilder.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise);\n };\n SVGPathRebuilder.prototype.ellipse = function (cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) {\n var dTheta = endAngle - startAngle;\n var clockwise = !anticlockwise;\n var dThetaPositive = Math.abs(dTheta);\n var isCircle = isAroundZero(dThetaPositive - PI2)\n || (clockwise ? dTheta >= PI2 : -dTheta >= PI2);\n var unifiedTheta = dTheta > 0 ? dTheta % PI2 : (dTheta % PI2 + PI2);\n var large = false;\n if (isCircle) {\n large = true;\n }\n else if (isAroundZero(dThetaPositive)) {\n large = false;\n }\n else {\n large = (unifiedTheta >= PI) === !!clockwise;\n }\n var x0 = cx + rx * mathCos(startAngle);\n var y0 = cy + ry * mathSin(startAngle);\n if (this._start) {\n this._add('M', x0, y0);\n }\n var xRot = Math.round(psi * degree);\n if (isCircle) {\n var p = 1 / this._p;\n var dTheta_1 = (clockwise ? 1 : -1) * (PI2 - p);\n this._add('A', rx, ry, xRot, 1, +clockwise, cx + rx * mathCos(startAngle + dTheta_1), cy + ry * mathSin(startAngle + dTheta_1));\n if (p > 1e-2) {\n this._add('A', rx, ry, xRot, 0, +clockwise, x0, y0);\n }\n }\n else {\n var x = cx + rx * mathCos(endAngle);\n var y = cy + ry * mathSin(endAngle);\n this._add('A', rx, ry, xRot, +large, +clockwise, x, y);\n }\n };\n SVGPathRebuilder.prototype.rect = function (x, y, w, h) {\n this._add('M', x, y);\n this._add('l', w, 0);\n this._add('l', 0, h);\n this._add('l', -w, 0);\n this._add('Z');\n };\n SVGPathRebuilder.prototype.closePath = function () {\n if (this._d.length > 0) {\n this._add('Z');\n }\n };\n SVGPathRebuilder.prototype._add = function (cmd, a, b, c, d, e, f, g, h) {\n var vals = [];\n var p = this._p;\n for (var i = 1; i < arguments.length; i++) {\n var val = arguments[i];\n if (isNaN(val)) {\n this._invalid = true;\n return;\n }\n vals.push(Math.round(val * p) / p);\n }\n this._d.push(cmd + vals.join(' '));\n this._start = cmd === 'Z';\n };\n SVGPathRebuilder.prototype.generateStr = function () {\n this._str = this._invalid ? '' : this._d.join('');\n this._d = [];\n };\n SVGPathRebuilder.prototype.getStr = function () {\n return this._str;\n };\n return SVGPathRebuilder;\n}());\nexport default SVGPathRebuilder;\n","import { DEFAULT_PATH_STYLE } from '../graphic/Path.js';\nimport ZRImage from '../graphic/Image.js';\nimport { getLineDash } from '../canvas/dashStyle.js';\nimport { map } from '../core/util.js';\nimport { normalizeColor } from './helper.js';\nvar NONE = 'none';\nvar mathRound = Math.round;\nfunction pathHasFill(style) {\n var fill = style.fill;\n return fill != null && fill !== NONE;\n}\nfunction pathHasStroke(style) {\n var stroke = style.stroke;\n return stroke != null && stroke !== NONE;\n}\nvar strokeProps = ['lineCap', 'miterLimit', 'lineJoin'];\nvar svgStrokeProps = map(strokeProps, function (prop) { return \"stroke-\" + prop.toLowerCase(); });\nexport default function mapStyleToAttrs(updateAttr, style, el, forceUpdate) {\n var opacity = style.opacity == null ? 1 : style.opacity;\n if (el instanceof ZRImage) {\n updateAttr('opacity', opacity);\n return;\n }\n if (pathHasFill(style)) {\n var fill = normalizeColor(style.fill);\n updateAttr('fill', fill.color);\n var fillOpacity = style.fillOpacity != null\n ? style.fillOpacity * fill.opacity * opacity\n : fill.opacity * opacity;\n if (forceUpdate || fillOpacity < 1) {\n updateAttr('fill-opacity', fillOpacity);\n }\n }\n else {\n updateAttr('fill', NONE);\n }\n if (pathHasStroke(style)) {\n var stroke = normalizeColor(style.stroke);\n updateAttr('stroke', stroke.color);\n var strokeScale = style.strokeNoScale\n ? el.getLineScale()\n : 1;\n var strokeWidth = (strokeScale ? (style.lineWidth || 0) / strokeScale : 0);\n var strokeOpacity = style.strokeOpacity != null\n ? style.strokeOpacity * stroke.opacity * opacity\n : stroke.opacity * opacity;\n var strokeFirst = style.strokeFirst;\n if (forceUpdate || strokeWidth !== 1) {\n updateAttr('stroke-width', strokeWidth);\n }\n if (forceUpdate || strokeFirst) {\n updateAttr('paint-order', strokeFirst ? 'stroke' : 'fill');\n }\n if (forceUpdate || strokeOpacity < 1) {\n updateAttr('stroke-opacity', strokeOpacity);\n }\n if (style.lineDash) {\n var _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n if (lineDash) {\n lineDashOffset = mathRound(lineDashOffset || 0);\n updateAttr('stroke-dasharray', lineDash.join(','));\n if (lineDashOffset || forceUpdate) {\n updateAttr('stroke-dashoffset', lineDashOffset);\n }\n }\n }\n else if (forceUpdate) {\n updateAttr('stroke-dasharray', NONE);\n }\n for (var i = 0; i < strokeProps.length; i++) {\n var propName = strokeProps[i];\n if (forceUpdate || style[propName] !== DEFAULT_PATH_STYLE[propName]) {\n var val = style[propName] || DEFAULT_PATH_STYLE[propName];\n val && updateAttr(svgStrokeProps[i], val);\n }\n }\n }\n else if (forceUpdate) {\n updateAttr('stroke', NONE);\n }\n}\n","import { keys, map } from '../core/util.js';\nimport { encodeHTML } from '../core/dom.js';\nexport var SVGNS = 'http://www.w3.org/2000/svg';\nexport var XLINKNS = 'http://www.w3.org/1999/xlink';\nexport var XMLNS = 'http://www.w3.org/2000/xmlns/';\nexport var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\nexport function createElement(name) {\n return document.createElementNS(SVGNS, name);\n}\n;\nexport function createVNode(tag, key, attrs, children, text) {\n return {\n tag: tag,\n attrs: attrs || {},\n children: children,\n text: text,\n key: key\n };\n}\nfunction createElementOpen(name, attrs) {\n var attrsStr = [];\n if (attrs) {\n for (var key in attrs) {\n var val = attrs[key];\n var part = key;\n if (val === false) {\n continue;\n }\n else if (val !== true && val != null) {\n part += \"=\\\"\" + val + \"\\\"\";\n }\n attrsStr.push(part);\n }\n }\n return \"<\" + name + \" \" + attrsStr.join(' ') + \">\";\n}\nfunction createElementClose(name) {\n return \"\";\n}\nexport function vNodeToString(el, opts) {\n opts = opts || {};\n var S = opts.newline ? '\\n' : '';\n function convertElToString(el) {\n var children = el.children, tag = el.tag, attrs = el.attrs, text = el.text;\n return createElementOpen(tag, attrs)\n + (tag !== 'style' ? encodeHTML(text) : text || '')\n + (children ? \"\" + S + map(children, function (child) { return convertElToString(child); }).join(S) + S : '')\n + createElementClose(tag);\n }\n return convertElToString(el);\n}\nexport function getCssString(selectorNodes, animationNodes, opts) {\n opts = opts || {};\n var S = opts.newline ? '\\n' : '';\n var bracketBegin = \" {\" + S;\n var bracketEnd = S + \"}\";\n var selectors = map(keys(selectorNodes), function (className) {\n return className + bracketBegin + map(keys(selectorNodes[className]), function (attrName) {\n return attrName + \":\" + selectorNodes[className][attrName] + \";\";\n }).join(S) + bracketEnd;\n }).join(S);\n var animations = map(keys(animationNodes), function (animationName) {\n return \"@keyframes \" + animationName + bracketBegin + map(keys(animationNodes[animationName]), function (percent) {\n return percent + bracketBegin + map(keys(animationNodes[animationName][percent]), function (attrName) {\n var val = animationNodes[animationName][percent][attrName];\n if (attrName === 'd') {\n val = \"path(\\\"\" + val + \"\\\")\";\n }\n return attrName + \":\" + val + \";\";\n }).join(S) + bracketEnd;\n }).join(S) + bracketEnd;\n }).join(S);\n if (!selectors && !animations) {\n return '';\n }\n return [''].join(S);\n}\nexport function createBrushScope(zrId) {\n return {\n zrId: zrId,\n shadowCache: {},\n patternCache: {},\n gradientCache: {},\n clipPathCache: {},\n defs: {},\n cssNodes: {},\n cssAnims: {},\n cssClassIdx: 0,\n cssAnimIdx: 0,\n shadowIdx: 0,\n gradientIdx: 0,\n patternIdx: 0,\n clipPathIdx: 0\n };\n}\nexport function createSVGVNode(width, height, children, useViewBox) {\n return createVNode('svg', 'root', {\n 'width': width,\n 'height': height,\n 'xmlns': SVGNS,\n 'xmlns:xlink': XLINKNS,\n 'version': '1.1',\n 'baseProfile': 'full',\n 'viewBox': useViewBox ? \"0 0 \" + width + \" \" + height : false\n }, children);\n}\n","import { copyTransform } from '../core/Transformable.js';\nimport { createBrushScope } from './core.js';\nimport SVGPathRebuilder from './SVGPathRebuilder.js';\nimport PathProxy from '../core/PathProxy.js';\nimport { getPathPrecision, getSRTTransformString } from './helper.js';\nimport { each, extend, filter, isNumber, isString, keys } from '../core/util.js';\nimport CompoundPath from '../graphic/CompoundPath.js';\nimport { createCubicEasingFunc } from '../animation/cubicEasing.js';\nexport var EASING_MAP = {\n cubicIn: '0.32,0,0.67,0',\n cubicOut: '0.33,1,0.68,1',\n cubicInOut: '0.65,0,0.35,1',\n quadraticIn: '0.11,0,0.5,0',\n quadraticOut: '0.5,1,0.89,1',\n quadraticInOut: '0.45,0,0.55,1',\n quarticIn: '0.5,0,0.75,0',\n quarticOut: '0.25,1,0.5,1',\n quarticInOut: '0.76,0,0.24,1',\n quinticIn: '0.64,0,0.78,0',\n quinticOut: '0.22,1,0.36,1',\n quinticInOut: '0.83,0,0.17,1',\n sinusoidalIn: '0.12,0,0.39,0',\n sinusoidalOut: '0.61,1,0.88,1',\n sinusoidalInOut: '0.37,0,0.63,1',\n exponentialIn: '0.7,0,0.84,0',\n exponentialOut: '0.16,1,0.3,1',\n exponentialInOut: '0.87,0,0.13,1',\n circularIn: '0.55,0,1,0.45',\n circularOut: '0,0.55,0.45,1',\n circularInOut: '0.85,0,0.15,1'\n};\nvar transformOriginKey = 'transform-origin';\nfunction buildPathString(el, kfShape, path) {\n var shape = extend({}, el.shape);\n extend(shape, kfShape);\n el.buildPath(path, shape);\n var svgPathBuilder = new SVGPathRebuilder();\n svgPathBuilder.reset(getPathPrecision(el));\n path.rebuildPath(svgPathBuilder, 1);\n svgPathBuilder.generateStr();\n return svgPathBuilder.getStr();\n}\nfunction setTransformOrigin(target, transform) {\n var originX = transform.originX, originY = transform.originY;\n if (originX || originY) {\n target[transformOriginKey] = originX + \"px \" + originY + \"px\";\n }\n}\nexport var ANIMATE_STYLE_MAP = {\n fill: 'fill',\n opacity: 'opacity',\n lineWidth: 'stroke-width',\n lineDashOffset: 'stroke-dashoffset'\n};\nfunction addAnimation(cssAnim, scope) {\n var animationName = scope.zrId + '-ani-' + scope.cssAnimIdx++;\n scope.cssAnims[animationName] = cssAnim;\n return animationName;\n}\nfunction createCompoundPathCSSAnimation(el, attrs, scope) {\n var paths = el.shape.paths;\n var composedAnim = {};\n var cssAnimationCfg;\n var cssAnimationName;\n each(paths, function (path) {\n var subScope = createBrushScope(scope.zrId);\n subScope.animation = true;\n createCSSAnimation(path, {}, subScope, true);\n var cssAnims = subScope.cssAnims;\n var cssNodes = subScope.cssNodes;\n var animNames = keys(cssAnims);\n var len = animNames.length;\n if (!len) {\n return;\n }\n cssAnimationName = animNames[len - 1];\n var lastAnim = cssAnims[cssAnimationName];\n for (var percent in lastAnim) {\n var kf = lastAnim[percent];\n composedAnim[percent] = composedAnim[percent] || { d: '' };\n composedAnim[percent].d += kf.d || '';\n }\n for (var className in cssNodes) {\n var val = cssNodes[className].animation;\n if (val.indexOf(cssAnimationName) >= 0) {\n cssAnimationCfg = val;\n }\n }\n });\n if (!cssAnimationCfg) {\n return;\n }\n attrs.d = false;\n var animationName = addAnimation(composedAnim, scope);\n return cssAnimationCfg.replace(cssAnimationName, animationName);\n}\nfunction getEasingFunc(easing) {\n return isString(easing)\n ? EASING_MAP[easing]\n ? \"cubic-bezier(\" + EASING_MAP[easing] + \")\"\n : createCubicEasingFunc(easing) ? easing : ''\n : '';\n}\nexport function createCSSAnimation(el, attrs, scope, onlyShape) {\n var animators = el.animators;\n var len = animators.length;\n var cssAnimations = [];\n if (el instanceof CompoundPath) {\n var animationCfg = createCompoundPathCSSAnimation(el, attrs, scope);\n if (animationCfg) {\n cssAnimations.push(animationCfg);\n }\n else if (!len) {\n return;\n }\n }\n else if (!len) {\n return;\n }\n var groupAnimators = {};\n for (var i = 0; i < len; i++) {\n var animator = animators[i];\n var cfgArr = [animator.getMaxTime() / 1000 + 's'];\n var easing = getEasingFunc(animator.getClip().easing);\n var delay = animator.getDelay();\n if (easing) {\n cfgArr.push(easing);\n }\n else {\n cfgArr.push('linear');\n }\n if (delay) {\n cfgArr.push(delay / 1000 + 's');\n }\n if (animator.getLoop()) {\n cfgArr.push('infinite');\n }\n var cfg = cfgArr.join(' ');\n groupAnimators[cfg] = groupAnimators[cfg] || [cfg, []];\n groupAnimators[cfg][1].push(animator);\n }\n function createSingleCSSAnimation(groupAnimator) {\n var animators = groupAnimator[1];\n var len = animators.length;\n var transformKfs = {};\n var shapeKfs = {};\n var finalKfs = {};\n var animationTimingFunctionAttrName = 'animation-timing-function';\n function saveAnimatorTrackToCssKfs(animator, cssKfs, toCssAttrName) {\n var tracks = animator.getTracks();\n var maxTime = animator.getMaxTime();\n for (var k = 0; k < tracks.length; k++) {\n var track = tracks[k];\n if (track.needsAnimate()) {\n var kfs = track.keyframes;\n var attrName = track.propName;\n toCssAttrName && (attrName = toCssAttrName(attrName));\n if (attrName) {\n for (var i = 0; i < kfs.length; i++) {\n var kf = kfs[i];\n var percent = Math.round(kf.time / maxTime * 100) + '%';\n var kfEasing = getEasingFunc(kf.easing);\n var rawValue = kf.rawValue;\n if (isString(rawValue) || isNumber(rawValue)) {\n cssKfs[percent] = cssKfs[percent] || {};\n cssKfs[percent][attrName] = kf.rawValue;\n if (kfEasing) {\n cssKfs[percent][animationTimingFunctionAttrName] = kfEasing;\n }\n }\n }\n }\n }\n }\n }\n for (var i = 0; i < len; i++) {\n var animator = animators[i];\n var targetProp = animator.targetName;\n if (!targetProp) {\n !onlyShape && saveAnimatorTrackToCssKfs(animator, transformKfs);\n }\n else if (targetProp === 'shape') {\n saveAnimatorTrackToCssKfs(animator, shapeKfs);\n }\n }\n for (var percent in transformKfs) {\n var transform = {};\n copyTransform(transform, el);\n extend(transform, transformKfs[percent]);\n var str = getSRTTransformString(transform);\n var timingFunction = transformKfs[percent][animationTimingFunctionAttrName];\n finalKfs[percent] = str ? {\n transform: str\n } : {};\n setTransformOrigin(finalKfs[percent], transform);\n if (timingFunction) {\n finalKfs[percent][animationTimingFunctionAttrName] = timingFunction;\n }\n }\n ;\n var path;\n var canAnimateShape = true;\n for (var percent in shapeKfs) {\n finalKfs[percent] = finalKfs[percent] || {};\n var isFirst = !path;\n var timingFunction = shapeKfs[percent][animationTimingFunctionAttrName];\n if (isFirst) {\n path = new PathProxy();\n }\n var len_1 = path.len();\n path.reset();\n finalKfs[percent].d = buildPathString(el, shapeKfs[percent], path);\n var newLen = path.len();\n if (!isFirst && len_1 !== newLen) {\n canAnimateShape = false;\n break;\n }\n if (timingFunction) {\n finalKfs[percent][animationTimingFunctionAttrName] = timingFunction;\n }\n }\n ;\n if (!canAnimateShape) {\n for (var percent in finalKfs) {\n delete finalKfs[percent].d;\n }\n }\n if (!onlyShape) {\n for (var i = 0; i < len; i++) {\n var animator = animators[i];\n var targetProp = animator.targetName;\n if (targetProp === 'style') {\n saveAnimatorTrackToCssKfs(animator, finalKfs, function (propName) { return ANIMATE_STYLE_MAP[propName]; });\n }\n }\n }\n var percents = keys(finalKfs);\n var allTransformOriginSame = true;\n var transformOrigin;\n for (var i = 1; i < percents.length; i++) {\n var p0 = percents[i - 1];\n var p1 = percents[i];\n if (finalKfs[p0][transformOriginKey] !== finalKfs[p1][transformOriginKey]) {\n allTransformOriginSame = false;\n break;\n }\n transformOrigin = finalKfs[p0][transformOriginKey];\n }\n if (allTransformOriginSame && transformOrigin) {\n for (var percent in finalKfs) {\n if (finalKfs[percent][transformOriginKey]) {\n delete finalKfs[percent][transformOriginKey];\n }\n }\n attrs[transformOriginKey] = transformOrigin;\n }\n if (filter(percents, function (percent) { return keys(finalKfs[percent]).length > 0; }).length) {\n var animationName = addAnimation(finalKfs, scope);\n return animationName + \" \" + groupAnimator[0] + \" both\";\n }\n }\n for (var key in groupAnimators) {\n var animationCfg = createSingleCSSAnimation(groupAnimators[key]);\n if (animationCfg) {\n cssAnimations.push(animationCfg);\n }\n }\n if (cssAnimations.length) {\n var className = scope.zrId + '-cls-' + scope.cssClassIdx++;\n scope.cssNodes['.' + className] = {\n animation: cssAnimations.join(',')\n };\n attrs[\"class\"] = className;\n }\n}\n","import { adjustTextY, getIdURL, getMatrixStr, getPathPrecision, getShadowKey, getSRTTransformString, hasShadow, isAroundZero, isGradient, isImagePattern, isLinearGradient, isPattern, isRadialGradient, normalizeColor, round4, TEXT_ALIGN_TO_ANCHOR } from './helper.js';\nimport Path from '../graphic/Path.js';\nimport ZRImage from '../graphic/Image.js';\nimport { getLineHeight } from '../contain/text.js';\nimport TSpan from '../graphic/TSpan.js';\nimport SVGPathRebuilder from './SVGPathRebuilder.js';\nimport mapStyleToAttrs from './mapStyleToAttrs.js';\nimport { createVNode, vNodeToString } from './core.js';\nimport { assert, clone, isFunction, isString, logError, map, retrieve2 } from '../core/util.js';\nimport { createOrUpdateImage } from '../graphic/helper/image.js';\nimport { createCSSAnimation } from './cssAnimation.js';\nimport { hasSeparateFont, parseFontSize } from '../graphic/Text.js';\nimport { DEFAULT_FONT, DEFAULT_FONT_FAMILY } from '../core/platform.js';\nvar round = Math.round;\nfunction isImageLike(val) {\n return val && isString(val.src);\n}\nfunction isCanvasLike(val) {\n return val && isFunction(val.toDataURL);\n}\nfunction setStyleAttrs(attrs, style, el, scope) {\n mapStyleToAttrs(function (key, val) {\n var isFillStroke = key === 'fill' || key === 'stroke';\n if (isFillStroke && isGradient(val)) {\n setGradient(style, attrs, key, scope);\n }\n else if (isFillStroke && isPattern(val)) {\n setPattern(el, attrs, key, scope);\n }\n else {\n attrs[key] = val;\n }\n }, style, el, false);\n setShadow(el, attrs, scope);\n}\nfunction noRotateScale(m) {\n return isAroundZero(m[0] - 1)\n && isAroundZero(m[1])\n && isAroundZero(m[2])\n && isAroundZero(m[3] - 1);\n}\nfunction noTranslate(m) {\n return isAroundZero(m[4]) && isAroundZero(m[5]);\n}\nfunction setTransform(attrs, m, compress) {\n if (m && !(noTranslate(m) && noRotateScale(m))) {\n var mul = compress ? 10 : 1e4;\n attrs.transform = noRotateScale(m)\n ? \"translate(\" + round(m[4] * mul) / mul + \" \" + round(m[5] * mul) / mul + \")\" : getMatrixStr(m);\n }\n}\nfunction convertPolyShape(shape, attrs, mul) {\n var points = shape.points;\n var strArr = [];\n for (var i = 0; i < points.length; i++) {\n strArr.push(round(points[i][0] * mul) / mul);\n strArr.push(round(points[i][1] * mul) / mul);\n }\n attrs.points = strArr.join(' ');\n}\nfunction validatePolyShape(shape) {\n return !shape.smooth;\n}\nfunction createAttrsConvert(desc) {\n var normalizedDesc = map(desc, function (item) {\n return (typeof item === 'string' ? [item, item] : item);\n });\n return function (shape, attrs, mul) {\n for (var i = 0; i < normalizedDesc.length; i++) {\n var item = normalizedDesc[i];\n var val = shape[item[0]];\n if (val != null) {\n attrs[item[1]] = round(val * mul) / mul;\n }\n }\n };\n}\nvar builtinShapesDef = {\n circle: [createAttrsConvert(['cx', 'cy', 'r'])],\n polyline: [convertPolyShape, validatePolyShape],\n polygon: [convertPolyShape, validatePolyShape]\n};\nfunction hasShapeAnimation(el) {\n var animators = el.animators;\n for (var i = 0; i < animators.length; i++) {\n if (animators[i].targetName === 'shape') {\n return true;\n }\n }\n return false;\n}\nexport function brushSVGPath(el, scope) {\n var style = el.style;\n var shape = el.shape;\n var builtinShpDef = builtinShapesDef[el.type];\n var attrs = {};\n var needsAnimate = scope.animation;\n var svgElType = 'path';\n var strokePercent = el.style.strokePercent;\n var precision = (scope.compress && getPathPrecision(el)) || 4;\n if (builtinShpDef\n && !scope.willUpdate\n && !(builtinShpDef[1] && !builtinShpDef[1](shape))\n && !(needsAnimate && hasShapeAnimation(el))\n && !(strokePercent < 1)) {\n svgElType = el.type;\n var mul = Math.pow(10, precision);\n builtinShpDef[0](shape, attrs, mul);\n }\n else {\n var needBuildPath = !el.path || el.shapeChanged();\n if (!el.path) {\n el.createPathProxy();\n }\n var path = el.path;\n if (needBuildPath) {\n path.beginPath();\n el.buildPath(path, el.shape);\n el.pathUpdated();\n }\n var pathVersion = path.getVersion();\n var elExt = el;\n var svgPathBuilder = elExt.__svgPathBuilder;\n if (elExt.__svgPathVersion !== pathVersion\n || !svgPathBuilder\n || strokePercent !== elExt.__svgPathStrokePercent) {\n if (!svgPathBuilder) {\n svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder();\n }\n svgPathBuilder.reset(precision);\n path.rebuildPath(svgPathBuilder, strokePercent);\n svgPathBuilder.generateStr();\n elExt.__svgPathVersion = pathVersion;\n elExt.__svgPathStrokePercent = strokePercent;\n }\n attrs.d = svgPathBuilder.getStr();\n }\n setTransform(attrs, el.transform);\n setStyleAttrs(attrs, style, el, scope);\n scope.animation && createCSSAnimation(el, attrs, scope);\n return createVNode(svgElType, el.id + '', attrs);\n}\nexport function brushSVGImage(el, scope) {\n var style = el.style;\n var image = style.image;\n if (image && !isString(image)) {\n if (isImageLike(image)) {\n image = image.src;\n }\n else if (isCanvasLike(image)) {\n image = image.toDataURL();\n }\n }\n if (!image) {\n return;\n }\n var x = style.x || 0;\n var y = style.y || 0;\n var dw = style.width;\n var dh = style.height;\n var attrs = {\n href: image,\n width: dw,\n height: dh\n };\n if (x) {\n attrs.x = x;\n }\n if (y) {\n attrs.y = y;\n }\n setTransform(attrs, el.transform);\n setStyleAttrs(attrs, style, el, scope);\n scope.animation && createCSSAnimation(el, attrs, scope);\n return createVNode('image', el.id + '', attrs);\n}\n;\nexport function brushSVGTSpan(el, scope) {\n var style = el.style;\n var text = style.text;\n text != null && (text += '');\n if (!text || isNaN(style.x) || isNaN(style.y)) {\n return;\n }\n var font = style.font || DEFAULT_FONT;\n var x = style.x || 0;\n var y = adjustTextY(style.y || 0, getLineHeight(font), style.textBaseline);\n var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign]\n || style.textAlign;\n var attrs = {\n 'dominant-baseline': 'central',\n 'text-anchor': textAlign\n };\n if (hasSeparateFont(style)) {\n var separatedFontStr = '';\n var fontStyle = style.fontStyle;\n var fontSize = parseFontSize(style.fontSize);\n if (!parseFloat(fontSize)) {\n return;\n }\n var fontFamily = style.fontFamily || DEFAULT_FONT_FAMILY;\n var fontWeight = style.fontWeight;\n separatedFontStr += \"font-size:\" + fontSize + \";font-family:\" + fontFamily + \";\";\n if (fontStyle && fontStyle !== 'normal') {\n separatedFontStr += \"font-style:\" + fontStyle + \";\";\n }\n if (fontWeight && fontWeight !== 'normal') {\n separatedFontStr += \"font-weight:\" + fontWeight + \";\";\n }\n attrs.style = separatedFontStr;\n }\n else {\n attrs.style = \"font: \" + font;\n }\n if (text.match(/\\s/)) {\n attrs['xml:space'] = 'preserve';\n }\n if (x) {\n attrs.x = x;\n }\n if (y) {\n attrs.y = y;\n }\n setTransform(attrs, el.transform);\n setStyleAttrs(attrs, style, el, scope);\n scope.animation && createCSSAnimation(el, attrs, scope);\n return createVNode('text', el.id + '', attrs, undefined, text);\n}\nexport function brush(el, scope) {\n if (el instanceof Path) {\n return brushSVGPath(el, scope);\n }\n else if (el instanceof ZRImage) {\n return brushSVGImage(el, scope);\n }\n else if (el instanceof TSpan) {\n return brushSVGTSpan(el, scope);\n }\n}\nfunction setShadow(el, attrs, scope) {\n var style = el.style;\n if (hasShadow(style)) {\n var shadowKey = getShadowKey(el);\n var shadowCache = scope.shadowCache;\n var shadowId = shadowCache[shadowKey];\n if (!shadowId) {\n var globalScale = el.getGlobalScale();\n var scaleX = globalScale[0];\n var scaleY = globalScale[1];\n if (!scaleX || !scaleY) {\n return;\n }\n var offsetX = style.shadowOffsetX || 0;\n var offsetY = style.shadowOffsetY || 0;\n var blur_1 = style.shadowBlur;\n var _a = normalizeColor(style.shadowColor), opacity = _a.opacity, color = _a.color;\n var stdDx = blur_1 / 2 / scaleX;\n var stdDy = blur_1 / 2 / scaleY;\n var stdDeviation = stdDx + ' ' + stdDy;\n shadowId = scope.zrId + '-s' + scope.shadowIdx++;\n scope.defs[shadowId] = createVNode('filter', shadowId, {\n 'id': shadowId,\n 'x': '-100%',\n 'y': '-100%',\n 'width': '300%',\n 'height': '300%'\n }, [\n createVNode('feDropShadow', '', {\n 'dx': offsetX / scaleX,\n 'dy': offsetY / scaleY,\n 'stdDeviation': stdDeviation,\n 'flood-color': color,\n 'flood-opacity': opacity\n })\n ]);\n shadowCache[shadowKey] = shadowId;\n }\n attrs.filter = getIdURL(shadowId);\n }\n}\nexport function setGradient(style, attrs, target, scope) {\n var val = style[target];\n var gradientTag;\n var gradientAttrs = {\n 'gradientUnits': val.global\n ? 'userSpaceOnUse'\n : 'objectBoundingBox'\n };\n if (isLinearGradient(val)) {\n gradientTag = 'linearGradient';\n gradientAttrs.x1 = val.x;\n gradientAttrs.y1 = val.y;\n gradientAttrs.x2 = val.x2;\n gradientAttrs.y2 = val.y2;\n }\n else if (isRadialGradient(val)) {\n gradientTag = 'radialGradient';\n gradientAttrs.cx = retrieve2(val.x, 0.5);\n gradientAttrs.cy = retrieve2(val.y, 0.5);\n gradientAttrs.r = retrieve2(val.r, 0.5);\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logError('Illegal gradient type.');\n }\n return;\n }\n var colors = val.colorStops;\n var colorStops = [];\n for (var i = 0, len = colors.length; i < len; ++i) {\n var offset = round4(colors[i].offset) * 100 + '%';\n var stopColor = colors[i].color;\n var _a = normalizeColor(stopColor), color = _a.color, opacity = _a.opacity;\n var stopsAttrs = {\n 'offset': offset\n };\n stopsAttrs['stop-color'] = color;\n if (opacity < 1) {\n stopsAttrs['stop-opacity'] = opacity;\n }\n colorStops.push(createVNode('stop', i + '', stopsAttrs));\n }\n var gradientVNode = createVNode(gradientTag, '', gradientAttrs, colorStops);\n var gradientKey = vNodeToString(gradientVNode);\n var gradientCache = scope.gradientCache;\n var gradientId = gradientCache[gradientKey];\n if (!gradientId) {\n gradientId = scope.zrId + '-g' + scope.gradientIdx++;\n gradientCache[gradientKey] = gradientId;\n gradientAttrs.id = gradientId;\n scope.defs[gradientId] = createVNode(gradientTag, gradientId, gradientAttrs, colorStops);\n }\n attrs[target] = getIdURL(gradientId);\n}\nexport function setPattern(el, attrs, target, scope) {\n var val = el.style[target];\n var boundingRect = el.getBoundingRect();\n var patternAttrs = {};\n var repeat = val.repeat;\n var noRepeat = repeat === 'no-repeat';\n var repeatX = repeat === 'repeat-x';\n var repeatY = repeat === 'repeat-y';\n var child;\n if (isImagePattern(val)) {\n var imageWidth_1 = val.imageWidth;\n var imageHeight_1 = val.imageHeight;\n var imageSrc = void 0;\n var patternImage = val.image;\n if (isString(patternImage)) {\n imageSrc = patternImage;\n }\n else if (isImageLike(patternImage)) {\n imageSrc = patternImage.src;\n }\n else if (isCanvasLike(patternImage)) {\n imageSrc = patternImage.toDataURL();\n }\n if (typeof Image === 'undefined') {\n var errMsg = 'Image width/height must been given explictly in svg-ssr renderer.';\n assert(imageWidth_1, errMsg);\n assert(imageHeight_1, errMsg);\n }\n else if (imageWidth_1 == null || imageHeight_1 == null) {\n var setSizeToVNode_1 = function (vNode, img) {\n if (vNode) {\n var svgEl = vNode.elm;\n var width = imageWidth_1 || img.width;\n var height = imageHeight_1 || img.height;\n if (vNode.tag === 'pattern') {\n if (repeatX) {\n height = 1;\n width /= boundingRect.width;\n }\n else if (repeatY) {\n width = 1;\n height /= boundingRect.height;\n }\n }\n vNode.attrs.width = width;\n vNode.attrs.height = height;\n if (svgEl) {\n svgEl.setAttribute('width', width);\n svgEl.setAttribute('height', height);\n }\n }\n };\n var createdImage = createOrUpdateImage(imageSrc, null, el, function (img) {\n noRepeat || setSizeToVNode_1(patternVNode, img);\n setSizeToVNode_1(child, img);\n });\n if (createdImage && createdImage.width && createdImage.height) {\n imageWidth_1 = imageWidth_1 || createdImage.width;\n imageHeight_1 = imageHeight_1 || createdImage.height;\n }\n }\n child = createVNode('image', 'img', {\n href: imageSrc,\n width: imageWidth_1,\n height: imageHeight_1\n });\n patternAttrs.width = imageWidth_1;\n patternAttrs.height = imageHeight_1;\n }\n else if (val.svgElement) {\n child = clone(val.svgElement);\n patternAttrs.width = val.svgWidth;\n patternAttrs.height = val.svgHeight;\n }\n if (!child) {\n return;\n }\n var patternWidth;\n var patternHeight;\n if (noRepeat) {\n patternWidth = patternHeight = 1;\n }\n else if (repeatX) {\n patternHeight = 1;\n patternWidth = patternAttrs.width / boundingRect.width;\n }\n else if (repeatY) {\n patternWidth = 1;\n patternHeight = patternAttrs.height / boundingRect.height;\n }\n else {\n patternAttrs.patternUnits = 'userSpaceOnUse';\n }\n if (patternWidth != null && !isNaN(patternWidth)) {\n patternAttrs.width = patternWidth;\n }\n if (patternHeight != null && !isNaN(patternHeight)) {\n patternAttrs.height = patternHeight;\n }\n var patternTransform = getSRTTransformString(val);\n patternTransform && (patternAttrs.patternTransform = patternTransform);\n var patternVNode = createVNode('pattern', '', patternAttrs, [child]);\n var patternKey = vNodeToString(patternVNode);\n var patternCache = scope.patternCache;\n var patternId = patternCache[patternKey];\n if (!patternId) {\n patternId = scope.zrId + '-p' + scope.patternIdx++;\n patternCache[patternKey] = patternId;\n patternAttrs.id = patternId;\n patternVNode = scope.defs[patternId] = createVNode('pattern', patternId, patternAttrs, [child]);\n }\n attrs[target] = getIdURL(patternId);\n}\nexport function setClipPath(clipPath, attrs, scope) {\n var clipPathCache = scope.clipPathCache, defs = scope.defs;\n var clipPathId = clipPathCache[clipPath.id];\n if (!clipPathId) {\n clipPathId = scope.zrId + '-c' + scope.clipPathIdx++;\n var clipPathAttrs = {\n id: clipPathId\n };\n clipPathCache[clipPath.id] = clipPathId;\n defs[clipPathId] = createVNode('clipPath', clipPathId, clipPathAttrs, [brushSVGPath(clipPath, scope)]);\n }\n attrs['clip-path'] = getIdURL(clipPathId);\n}\n","export function createTextNode(text) {\n return document.createTextNode(text);\n}\nexport function createComment(text) {\n return document.createComment(text);\n}\nexport function insertBefore(parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\nexport function removeChild(node, child) {\n node.removeChild(child);\n}\nexport function appendChild(node, child) {\n node.appendChild(child);\n}\nexport function parentNode(node) {\n return node.parentNode;\n}\nexport function nextSibling(node) {\n return node.nextSibling;\n}\nexport function tagName(elm) {\n return elm.tagName;\n}\nexport function setTextContent(node, text) {\n node.textContent = text;\n}\nexport function getTextContent(node) {\n return node.textContent;\n}\nexport function isElement(node) {\n return node.nodeType === 1;\n}\nexport function isText(node) {\n return node.nodeType === 3;\n}\nexport function isComment(node) {\n return node.nodeType === 8;\n}\n","import { isArray, isObject } from '../core/util.js';\nimport { createElement, createVNode, XMLNS, XML_NAMESPACE, XLINKNS } from './core.js';\nimport * as api from './domapi.js';\nvar colonChar = 58;\nvar xChar = 120;\nvar emptyNode = createVNode('', '');\nfunction isUndef(s) {\n return s === undefined;\n}\nfunction isDef(s) {\n return s !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var map = {};\n for (var i = beginIdx; i <= endIdx; ++i) {\n var key = children[i].key;\n if (key !== undefined) {\n if (process.env.NODE_ENV !== 'production') {\n if (map[key] != null) {\n console.error(\"Duplicate key \" + key);\n }\n }\n map[key] = i;\n }\n }\n return map;\n}\nfunction sameVnode(vnode1, vnode2) {\n var isSameKey = vnode1.key === vnode2.key;\n var isSameTag = vnode1.tag === vnode2.tag;\n return isSameTag && isSameKey;\n}\nfunction createElm(vnode) {\n var i;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n var elm = (vnode.elm = createElement(tag));\n updateAttrs(emptyNode, vnode);\n if (isArray(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch));\n }\n }\n }\n else if (isDef(vnode.text) && !isObject(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n}\nfunction addVnodes(parentElm, before, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch), before);\n }\n }\n}\nfunction removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.tag)) {\n var parent_1 = api.parentNode(ch.elm);\n api.removeChild(parent_1, ch.elm);\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n}\nexport function updateAttrs(oldVnode, vnode) {\n var key;\n var elm = vnode.elm;\n var oldAttrs = oldVnode && oldVnode.attrs || {};\n var attrs = vnode.attrs || {};\n if (oldAttrs === attrs) {\n return;\n }\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, '');\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key === 'xmlns:xlink' || key === 'xmlns') {\n elm.setAttributeNS(XMLNS, key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n elm.setAttributeNS(XML_NAMESPACE, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n elm.setAttributeNS(XLINKNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nfunction updateChildren(parentElm, oldCh, newCh) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx];\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (isUndef(oldKeyToIdx)) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.tag !== newStartVnode.tag) {\n api.insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n}\nfunction patchVnode(oldVnode, vnode) {\n var elm = (vnode.elm = oldVnode.elm);\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode) {\n return;\n }\n updateAttrs(oldVnode, vnode);\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) {\n updateChildren(elm, oldCh, ch);\n }\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n addVnodes(elm, null, ch, 0, ch.length - 1);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n api.setTextContent(elm, vnode.text);\n }\n}\nexport default function patch(oldVnode, vnode) {\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode);\n }\n else {\n var elm = oldVnode.elm;\n var parent_2 = api.parentNode(elm);\n createElm(vnode);\n if (parent_2 !== null) {\n api.insertBefore(parent_2, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent_2, [oldVnode], 0, 0);\n }\n }\n return vnode;\n}\n","import { brush, setClipPath, setGradient, setPattern } from './graphic.js';\nimport { createElement, createVNode, vNodeToString, getCssString, createBrushScope, createSVGVNode } from './core.js';\nimport { normalizeColor, encodeBase64, isGradient, isPattern } from './helper.js';\nimport { extend, keys, logError, map, noop, retrieve2 } from '../core/util.js';\nimport patch, { updateAttrs } from './patch.js';\nimport { getSize } from '../canvas/helper.js';\nvar svgId = 0;\nvar SVGPainter = (function () {\n function SVGPainter(root, storage, opts) {\n this.type = 'svg';\n this.refreshHover = createMethodNotSupport('refreshHover');\n this.configLayer = createMethodNotSupport('configLayer');\n this.storage = storage;\n this._opts = opts = extend({}, opts);\n this.root = root;\n this._id = 'zr' + svgId++;\n this._oldVNode = createSVGVNode(opts.width, opts.height);\n if (root && !opts.ssr) {\n var viewport = this._viewport = document.createElement('div');\n viewport.style.cssText = 'position:relative;overflow:hidden';\n var svgDom = this._svgDom = this._oldVNode.elm = createElement('svg');\n updateAttrs(null, this._oldVNode);\n viewport.appendChild(svgDom);\n root.appendChild(viewport);\n }\n this.resize(opts.width, opts.height);\n }\n SVGPainter.prototype.getType = function () {\n return this.type;\n };\n SVGPainter.prototype.getViewportRoot = function () {\n return this._viewport;\n };\n SVGPainter.prototype.getViewportRootOffset = function () {\n var viewportRoot = this.getViewportRoot();\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n };\n SVGPainter.prototype.getSvgDom = function () {\n return this._svgDom;\n };\n SVGPainter.prototype.refresh = function () {\n if (this.root) {\n var vnode = this.renderToVNode({\n willUpdate: true\n });\n vnode.attrs.style = 'position:absolute;left:0;top:0;user-select:none';\n patch(this._oldVNode, vnode);\n this._oldVNode = vnode;\n }\n };\n SVGPainter.prototype.renderOneToVNode = function (el) {\n return brush(el, createBrushScope(this._id));\n };\n SVGPainter.prototype.renderToVNode = function (opts) {\n opts = opts || {};\n var list = this.storage.getDisplayList(true);\n var width = this._width;\n var height = this._height;\n var scope = createBrushScope(this._id);\n scope.animation = opts.animation;\n scope.willUpdate = opts.willUpdate;\n scope.compress = opts.compress;\n var children = [];\n var bgVNode = this._bgVNode = createBackgroundVNode(width, height, this._backgroundColor, scope);\n bgVNode && children.push(bgVNode);\n var mainVNode = !opts.compress\n ? (this._mainVNode = createVNode('g', 'main', {}, [])) : null;\n this._paintList(list, scope, mainVNode ? mainVNode.children : children);\n mainVNode && children.push(mainVNode);\n var defs = map(keys(scope.defs), function (id) { return scope.defs[id]; });\n if (defs.length) {\n children.push(createVNode('defs', 'defs', {}, defs));\n }\n if (opts.animation) {\n var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, { newline: true });\n if (animationCssStr) {\n var styleNode = createVNode('style', 'stl', {}, [], animationCssStr);\n children.push(styleNode);\n }\n }\n return createSVGVNode(width, height, children, opts.useViewBox);\n };\n SVGPainter.prototype.renderToString = function (opts) {\n opts = opts || {};\n return vNodeToString(this.renderToVNode({\n animation: retrieve2(opts.cssAnimation, true),\n willUpdate: false,\n compress: true,\n useViewBox: retrieve2(opts.useViewBox, true)\n }), { newline: true });\n };\n SVGPainter.prototype.setBackgroundColor = function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n };\n SVGPainter.prototype.getSvgRoot = function () {\n return this._mainVNode && this._mainVNode.elm;\n };\n SVGPainter.prototype._paintList = function (list, scope, out) {\n var listLen = list.length;\n var clipPathsGroupsStack = [];\n var clipPathsGroupsStackDepth = 0;\n var currentClipPathGroup;\n var prevClipPaths;\n var clipGroupNodeIdx = 0;\n for (var i = 0; i < listLen; i++) {\n var displayable = list[i];\n if (!displayable.invisible) {\n var clipPaths = displayable.__clipPaths;\n var len = clipPaths && clipPaths.length || 0;\n var prevLen = prevClipPaths && prevClipPaths.length || 0;\n var lca = void 0;\n for (lca = Math.max(len - 1, prevLen - 1); lca >= 0; lca--) {\n if (clipPaths && prevClipPaths\n && clipPaths[lca] === prevClipPaths[lca]) {\n break;\n }\n }\n for (var i_1 = prevLen - 1; i_1 > lca; i_1--) {\n clipPathsGroupsStackDepth--;\n currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1];\n }\n for (var i_2 = lca + 1; i_2 < len; i_2++) {\n var groupAttrs = {};\n setClipPath(clipPaths[i_2], groupAttrs, scope);\n var g = createVNode('g', 'clip-g-' + clipGroupNodeIdx++, groupAttrs, []);\n (currentClipPathGroup ? currentClipPathGroup.children : out).push(g);\n clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g;\n currentClipPathGroup = g;\n }\n prevClipPaths = clipPaths;\n var ret = brush(displayable, scope);\n if (ret) {\n (currentClipPathGroup ? currentClipPathGroup.children : out).push(ret);\n }\n }\n }\n };\n SVGPainter.prototype.resize = function (width, height) {\n var opts = this._opts;\n var root = this.root;\n var viewport = this._viewport;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n if (root && viewport) {\n viewport.style.display = 'none';\n width = getSize(root, 0, opts);\n height = getSize(root, 1, opts);\n viewport.style.display = '';\n }\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n if (viewport) {\n var viewportStyle = viewport.style;\n viewportStyle.width = width + 'px';\n viewportStyle.height = height + 'px';\n }\n if (!isPattern(this._backgroundColor)) {\n var svgDom = this._svgDom;\n if (svgDom) {\n svgDom.setAttribute('width', width);\n svgDom.setAttribute('height', height);\n }\n var bgEl = this._bgVNode && this._bgVNode.elm;\n if (bgEl) {\n bgEl.setAttribute('width', width);\n bgEl.setAttribute('height', height);\n }\n }\n else {\n this.refresh();\n }\n }\n };\n SVGPainter.prototype.getWidth = function () {\n return this._width;\n };\n SVGPainter.prototype.getHeight = function () {\n return this._height;\n };\n SVGPainter.prototype.dispose = function () {\n if (this.root) {\n this.root.innerHTML = '';\n }\n this._svgDom =\n this._viewport =\n this.storage =\n this._oldVNode =\n this._bgVNode =\n this._mainVNode = null;\n };\n SVGPainter.prototype.clear = function () {\n if (this._svgDom) {\n this._svgDom.innerHTML = null;\n }\n this._oldVNode = null;\n };\n SVGPainter.prototype.toDataURL = function (base64) {\n var str = this.renderToString();\n var prefix = 'data:image/svg+xml;';\n if (base64) {\n str = encodeBase64(str);\n return str && prefix + 'base64,' + str;\n }\n return prefix + 'charset=UTF-8,' + encodeURIComponent(str);\n };\n return SVGPainter;\n}());\nfunction createMethodNotSupport(method) {\n return function () {\n if (process.env.NODE_ENV !== 'production') {\n logError('In SVG mode painter not support method \"' + method + '\"');\n }\n };\n}\nfunction createBackgroundVNode(width, height, backgroundColor, scope) {\n var bgVNode;\n if (backgroundColor && backgroundColor !== 'none') {\n bgVNode = createVNode('rect', 'bg', {\n width: width,\n height: height,\n x: '0',\n y: '0',\n id: '0'\n });\n if (isGradient(backgroundColor)) {\n setGradient({ fill: backgroundColor }, bgVNode.attrs, 'fill', scope);\n }\n else if (isPattern(backgroundColor)) {\n setPattern({\n style: {\n fill: backgroundColor\n },\n dirty: noop,\n getBoundingRect: function () { return ({ width: width, height: height }); }\n }, bgVNode.attrs, 'fill', scope);\n }\n else {\n var _a = normalizeColor(backgroundColor), color = _a.color, opacity = _a.opacity;\n bgVNode.attrs.fill = color;\n opacity < 1 && (bgVNode.attrs['fill-opacity'] = opacity);\n }\n }\n return bgVNode;\n}\nexport default SVGPainter;\n","import { __extends } from \"tslib\";\nimport * as util from '../core/util.js';\nimport { devicePixelRatio } from '../config.js';\nimport Eventful from '../core/Eventful.js';\nimport { getCanvasGradient } from './helper.js';\nimport { createCanvasPattern } from './graphic.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { REDRAW_BIT } from '../graphic/constants.js';\nimport { platformApi } from '../core/platform.js';\nfunction createDom(id, painter, dpr) {\n var newDom = platformApi.createCanvas();\n var width = painter.getWidth();\n var height = painter.getHeight();\n var newDomStyle = newDom.style;\n if (newDomStyle) {\n newDomStyle.position = 'absolute';\n newDomStyle.left = '0';\n newDomStyle.top = '0';\n newDomStyle.width = width + 'px';\n newDomStyle.height = height + 'px';\n newDom.setAttribute('data-zr-dom-id', id);\n }\n newDom.width = width * dpr;\n newDom.height = height * dpr;\n return newDom;\n}\n;\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, painter, dpr) {\n var _this = _super.call(this) || this;\n _this.motionBlur = false;\n _this.lastFrameAlpha = 0.7;\n _this.dpr = 1;\n _this.virtual = false;\n _this.config = {};\n _this.incremental = false;\n _this.zlevel = 0;\n _this.maxRepaintRectCount = 5;\n _this.__dirty = true;\n _this.__firstTimePaint = true;\n _this.__used = false;\n _this.__drawIndex = 0;\n _this.__startIndex = 0;\n _this.__endIndex = 0;\n _this.__prevStartIndex = null;\n _this.__prevEndIndex = null;\n var dom;\n dpr = dpr || devicePixelRatio;\n if (typeof id === 'string') {\n dom = createDom(id, painter, dpr);\n }\n else if (util.isObject(id)) {\n dom = id;\n id = dom.id;\n }\n _this.id = id;\n _this.dom = dom;\n var domStyle = dom.style;\n if (domStyle) {\n util.disableUserSelect(dom);\n dom.onselectstart = function () { return false; };\n domStyle.padding = '0';\n domStyle.margin = '0';\n domStyle.borderWidth = '0';\n }\n _this.painter = painter;\n _this.dpr = dpr;\n return _this;\n }\n Layer.prototype.getElementCount = function () {\n return this.__endIndex - this.__startIndex;\n };\n Layer.prototype.afterBrush = function () {\n this.__prevStartIndex = this.__startIndex;\n this.__prevEndIndex = this.__endIndex;\n };\n Layer.prototype.initContext = function () {\n this.ctx = this.dom.getContext('2d');\n this.ctx.dpr = this.dpr;\n };\n Layer.prototype.setUnpainted = function () {\n this.__firstTimePaint = true;\n };\n Layer.prototype.createBackBuffer = function () {\n var dpr = this.dpr;\n this.domBack = createDom('back-' + this.id, this.painter, dpr);\n this.ctxBack = this.domBack.getContext('2d');\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n };\n Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) {\n if (this.__firstTimePaint) {\n this.__firstTimePaint = false;\n return null;\n }\n var mergedRepaintRects = [];\n var maxRepaintRectCount = this.maxRepaintRectCount;\n var full = false;\n var pendingRect = new BoundingRect(0, 0, 0, 0);\n function addRectToMergePool(rect) {\n if (!rect.isFinite() || rect.isZero()) {\n return;\n }\n if (mergedRepaintRects.length === 0) {\n var boundingRect = new BoundingRect(0, 0, 0, 0);\n boundingRect.copy(rect);\n mergedRepaintRects.push(boundingRect);\n }\n else {\n var isMerged = false;\n var minDeltaArea = Infinity;\n var bestRectToMergeIdx = 0;\n for (var i = 0; i < mergedRepaintRects.length; ++i) {\n var mergedRect = mergedRepaintRects[i];\n if (mergedRect.intersect(rect)) {\n var pendingRect_1 = new BoundingRect(0, 0, 0, 0);\n pendingRect_1.copy(mergedRect);\n pendingRect_1.union(rect);\n mergedRepaintRects[i] = pendingRect_1;\n isMerged = true;\n break;\n }\n else if (full) {\n pendingRect.copy(rect);\n pendingRect.union(mergedRect);\n var aArea = rect.width * rect.height;\n var bArea = mergedRect.width * mergedRect.height;\n var pendingArea = pendingRect.width * pendingRect.height;\n var deltaArea = pendingArea - aArea - bArea;\n if (deltaArea < minDeltaArea) {\n minDeltaArea = deltaArea;\n bestRectToMergeIdx = i;\n }\n }\n }\n if (full) {\n mergedRepaintRects[bestRectToMergeIdx].union(rect);\n isMerged = true;\n }\n if (!isMerged) {\n var boundingRect = new BoundingRect(0, 0, 0, 0);\n boundingRect.copy(rect);\n mergedRepaintRects.push(boundingRect);\n }\n if (!full) {\n full = mergedRepaintRects.length >= maxRepaintRectCount;\n }\n }\n }\n for (var i = this.__startIndex; i < this.__endIndex; ++i) {\n var el = displayList[i];\n if (el) {\n var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\n var prevRect = el.__isRendered && ((el.__dirty & REDRAW_BIT) || !shouldPaint)\n ? el.getPrevPaintRect()\n : null;\n if (prevRect) {\n addRectToMergePool(prevRect);\n }\n var curRect = shouldPaint && ((el.__dirty & REDRAW_BIT) || !el.__isRendered)\n ? el.getPaintRect()\n : null;\n if (curRect) {\n addRectToMergePool(curRect);\n }\n }\n }\n for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {\n var el = prevList[i];\n var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\n if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {\n var prevRect = el.getPrevPaintRect();\n if (prevRect) {\n addRectToMergePool(prevRect);\n }\n }\n }\n var hasIntersections;\n do {\n hasIntersections = false;\n for (var i = 0; i < mergedRepaintRects.length;) {\n if (mergedRepaintRects[i].isZero()) {\n mergedRepaintRects.splice(i, 1);\n continue;\n }\n for (var j = i + 1; j < mergedRepaintRects.length;) {\n if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {\n hasIntersections = true;\n mergedRepaintRects[i].union(mergedRepaintRects[j]);\n mergedRepaintRects.splice(j, 1);\n }\n else {\n j++;\n }\n }\n i++;\n }\n } while (hasIntersections);\n this._paintRects = mergedRepaintRects;\n return mergedRepaintRects;\n };\n Layer.prototype.debugGetPaintRects = function () {\n return (this._paintRects || []).slice();\n };\n Layer.prototype.resize = function (width, height) {\n var dpr = this.dpr;\n var dom = this.dom;\n var domStyle = dom.style;\n var domBack = this.domBack;\n if (domStyle) {\n domStyle.width = width + 'px';\n domStyle.height = height + 'px';\n }\n dom.width = width * dpr;\n dom.height = height * dpr;\n if (domBack) {\n domBack.width = width * dpr;\n domBack.height = height * dpr;\n if (dpr !== 1) {\n this.ctxBack.scale(dpr, dpr);\n }\n }\n };\n Layer.prototype.clear = function (clearAll, clearColor, repaintRects) {\n var dom = this.dom;\n var ctx = this.ctx;\n var width = dom.width;\n var height = dom.height;\n clearColor = clearColor || this.clearColor;\n var haveMotionBLur = this.motionBlur && !clearAll;\n var lastFrameAlpha = this.lastFrameAlpha;\n var dpr = this.dpr;\n var self = this;\n if (haveMotionBLur) {\n if (!this.domBack) {\n this.createBackBuffer();\n }\n this.ctxBack.globalCompositeOperation = 'copy';\n this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n }\n var domBack = this.domBack;\n function doClear(x, y, width, height) {\n ctx.clearRect(x, y, width, height);\n if (clearColor && clearColor !== 'transparent') {\n var clearColorGradientOrPattern = void 0;\n if (util.isGradientObject(clearColor)) {\n var shouldCache = clearColor.global || (clearColor.__width === width\n && clearColor.__height === height);\n clearColorGradientOrPattern = shouldCache\n && clearColor.__canvasGradient\n || getCanvasGradient(ctx, clearColor, {\n x: 0,\n y: 0,\n width: width,\n height: height\n });\n clearColor.__canvasGradient = clearColorGradientOrPattern;\n clearColor.__width = width;\n clearColor.__height = height;\n }\n else if (util.isImagePatternObject(clearColor)) {\n clearColor.scaleX = clearColor.scaleX || dpr;\n clearColor.scaleY = clearColor.scaleY || dpr;\n clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\n dirty: function () {\n self.setUnpainted();\n self.__painter.refresh();\n }\n });\n }\n ctx.save();\n ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n ctx.fillRect(x, y, width, height);\n ctx.restore();\n }\n if (haveMotionBLur) {\n ctx.save();\n ctx.globalAlpha = lastFrameAlpha;\n ctx.drawImage(domBack, x, y, width, height);\n ctx.restore();\n }\n }\n ;\n if (!repaintRects || haveMotionBLur) {\n doClear(0, 0, width, height);\n }\n else if (repaintRects.length) {\n util.each(repaintRects, function (rect) {\n doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\n });\n }\n };\n return Layer;\n}(Eventful));\nexport default Layer;\n","import { devicePixelRatio } from '../config.js';\nimport * as util from '../core/util.js';\nimport Layer from './Layer.js';\nimport requestAnimationFrame from '../animation/requestAnimationFrame.js';\nimport env from '../core/env.js';\nimport { brush, brushSingle } from './graphic.js';\nimport { REDRAW_BIT } from '../graphic/constants.js';\nimport { getSize } from './helper.js';\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\nfunction isLayerValid(layer) {\n if (!layer) {\n return false;\n }\n if (layer.__builtin__) {\n return true;\n }\n if (typeof (layer.resize) !== 'function'\n || typeof (layer.refresh) !== 'function') {\n return false;\n }\n return true;\n}\nfunction createRoot(width, height) {\n var domRoot = document.createElement('div');\n domRoot.style.cssText = [\n 'position:relative',\n 'width:' + width + 'px',\n 'height:' + height + 'px',\n 'padding:0',\n 'margin:0',\n 'border-width:0'\n ].join(';') + ';';\n return domRoot;\n}\nvar CanvasPainter = (function () {\n function CanvasPainter(root, storage, opts, id) {\n this.type = 'canvas';\n this._zlevelList = [];\n this._prevDisplayList = [];\n this._layers = {};\n this._layerConfig = {};\n this._needsManuallyCompositing = false;\n this.type = 'canvas';\n var singleCanvas = !root.nodeName\n || root.nodeName.toUpperCase() === 'CANVAS';\n this._opts = opts = util.extend({}, opts || {});\n this.dpr = opts.devicePixelRatio || devicePixelRatio;\n this._singleCanvas = singleCanvas;\n this.root = root;\n var rootStyle = root.style;\n if (rootStyle) {\n util.disableUserSelect(root);\n root.innerHTML = '';\n }\n this.storage = storage;\n var zlevelList = this._zlevelList;\n this._prevDisplayList = [];\n var layers = this._layers;\n if (!singleCanvas) {\n this._width = getSize(root, 0, opts);\n this._height = getSize(root, 1, opts);\n var domRoot = this._domRoot = createRoot(this._width, this._height);\n root.appendChild(domRoot);\n }\n else {\n var rootCanvas = root;\n var width = rootCanvas.width;\n var height = rootCanvas.height;\n if (opts.width != null) {\n width = opts.width;\n }\n if (opts.height != null) {\n height = opts.height;\n }\n this.dpr = opts.devicePixelRatio || 1;\n rootCanvas.width = width * this.dpr;\n rootCanvas.height = height * this.dpr;\n this._width = width;\n this._height = height;\n var mainLayer = new Layer(rootCanvas, this, this.dpr);\n mainLayer.__builtin__ = true;\n mainLayer.initContext();\n layers[CANVAS_ZLEVEL] = mainLayer;\n mainLayer.zlevel = CANVAS_ZLEVEL;\n zlevelList.push(CANVAS_ZLEVEL);\n this._domRoot = root;\n }\n }\n CanvasPainter.prototype.getType = function () {\n return 'canvas';\n };\n CanvasPainter.prototype.isSingleCanvas = function () {\n return this._singleCanvas;\n };\n CanvasPainter.prototype.getViewportRoot = function () {\n return this._domRoot;\n };\n CanvasPainter.prototype.getViewportRootOffset = function () {\n var viewportRoot = this.getViewportRoot();\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n };\n CanvasPainter.prototype.refresh = function (paintAll) {\n var list = this.storage.getDisplayList(true);\n var prevList = this._prevDisplayList;\n var zlevelList = this._zlevelList;\n this._redrawId = Math.random();\n this._paintList(list, prevList, paintAll, this._redrawId);\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (!layer.__builtin__ && layer.refresh) {\n var clearColor = i === 0 ? this._backgroundColor : null;\n layer.refresh(clearColor);\n }\n }\n if (this._opts.useDirtyRect) {\n this._prevDisplayList = list.slice();\n }\n return this;\n };\n CanvasPainter.prototype.refreshHover = function () {\n this._paintHoverList(this.storage.getDisplayList(false));\n };\n CanvasPainter.prototype._paintHoverList = function (list) {\n var len = list.length;\n var hoverLayer = this._hoverlayer;\n hoverLayer && hoverLayer.clear();\n if (!len) {\n return;\n }\n var scope = {\n inHover: true,\n viewWidth: this._width,\n viewHeight: this._height\n };\n var ctx;\n for (var i = 0; i < len; i++) {\n var el = list[i];\n if (el.__inHover) {\n if (!hoverLayer) {\n hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n }\n if (!ctx) {\n ctx = hoverLayer.ctx;\n ctx.save();\n }\n brush(ctx, el, scope, i === len - 1);\n }\n }\n if (ctx) {\n ctx.restore();\n }\n };\n CanvasPainter.prototype.getHoverLayer = function () {\n return this.getLayer(HOVER_LAYER_ZLEVEL);\n };\n CanvasPainter.prototype.paintOne = function (ctx, el) {\n brushSingle(ctx, el);\n };\n CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\n if (this._redrawId !== redrawId) {\n return;\n }\n paintAll = paintAll || false;\n this._updateLayerStatus(list);\n var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\n if (this._needsManuallyCompositing) {\n this._compositeManually();\n }\n if (needsRefreshHover) {\n this._paintHoverList(list);\n }\n if (!finished) {\n var self_1 = this;\n requestAnimationFrame(function () {\n self_1._paintList(list, prevList, paintAll, redrawId);\n });\n }\n else {\n this.eachLayer(function (layer) {\n layer.afterBrush && layer.afterBrush();\n });\n }\n };\n CanvasPainter.prototype._compositeManually = function () {\n var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n var width = this._domRoot.width;\n var height = this._domRoot.height;\n ctx.clearRect(0, 0, width, height);\n this.eachBuiltinLayer(function (layer) {\n if (layer.virtual) {\n ctx.drawImage(layer.dom, 0, 0, width, height);\n }\n });\n };\n CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\n var _this = this;\n var layerList = [];\n var useDirtyRect = this._opts.useDirtyRect;\n for (var zi = 0; zi < this._zlevelList.length; zi++) {\n var zlevel = this._zlevelList[zi];\n var layer = this._layers[zlevel];\n if (layer.__builtin__\n && layer !== this._hoverlayer\n && (layer.__dirty || paintAll)) {\n layerList.push(layer);\n }\n }\n var finished = true;\n var needsRefreshHover = false;\n var _loop_1 = function (k) {\n var layer = layerList[k];\n var ctx = layer.ctx;\n var repaintRects = useDirtyRect\n && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\n var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n var useTimer = !paintAll && layer.incremental && Date.now;\n var startTime = useTimer && Date.now();\n var clearColor = layer.zlevel === this_1._zlevelList[0]\n ? this_1._backgroundColor : null;\n if (layer.__startIndex === layer.__endIndex) {\n layer.clear(false, clearColor, repaintRects);\n }\n else if (start === layer.__startIndex) {\n var firstEl = list[start];\n if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n layer.clear(false, clearColor, repaintRects);\n }\n }\n if (start === -1) {\n console.error('For some unknown reason. drawIndex is -1');\n start = layer.__startIndex;\n }\n var i;\n var repaint = function (repaintRect) {\n var scope = {\n inHover: false,\n allClipped: false,\n prevEl: null,\n viewWidth: _this._width,\n viewHeight: _this._height\n };\n for (i = start; i < layer.__endIndex; i++) {\n var el = list[i];\n if (el.__inHover) {\n needsRefreshHover = true;\n }\n _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\n if (useTimer) {\n var dTime = Date.now() - startTime;\n if (dTime > 15) {\n break;\n }\n }\n }\n if (scope.prevElClipPaths) {\n ctx.restore();\n }\n };\n if (repaintRects) {\n if (repaintRects.length === 0) {\n i = layer.__endIndex;\n }\n else {\n var dpr = this_1.dpr;\n for (var r = 0; r < repaintRects.length; ++r) {\n var rect = repaintRects[r];\n ctx.save();\n ctx.beginPath();\n ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\n ctx.clip();\n repaint(rect);\n ctx.restore();\n }\n }\n }\n else {\n ctx.save();\n repaint();\n ctx.restore();\n }\n layer.__drawIndex = i;\n if (layer.__drawIndex < layer.__endIndex) {\n finished = false;\n }\n };\n var this_1 = this;\n for (var k = 0; k < layerList.length; k++) {\n _loop_1(k);\n }\n if (env.wxa) {\n util.each(this._layers, function (layer) {\n if (layer && layer.ctx && layer.ctx.draw) {\n layer.ctx.draw();\n }\n });\n }\n return {\n finished: finished,\n needsRefreshHover: needsRefreshHover\n };\n };\n CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\n var ctx = currentLayer.ctx;\n if (useDirtyRect) {\n var paintRect = el.getPaintRect();\n if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\n brush(ctx, el, scope, isLast);\n el.setPrevPaintRect(paintRect);\n }\n }\n else {\n brush(ctx, el, scope, isLast);\n }\n };\n CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\n if (this._singleCanvas && !this._needsManuallyCompositing) {\n zlevel = CANVAS_ZLEVEL;\n }\n var layer = this._layers[zlevel];\n if (!layer) {\n layer = new Layer('zr_' + zlevel, this, this.dpr);\n layer.zlevel = zlevel;\n layer.__builtin__ = true;\n if (this._layerConfig[zlevel]) {\n util.merge(layer, this._layerConfig[zlevel], true);\n }\n else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n }\n if (virtual) {\n layer.virtual = virtual;\n }\n this.insertLayer(zlevel, layer);\n layer.initContext();\n }\n return layer;\n };\n CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\n var layersMap = this._layers;\n var zlevelList = this._zlevelList;\n var len = zlevelList.length;\n var domRoot = this._domRoot;\n var prevLayer = null;\n var i = -1;\n if (layersMap[zlevel]) {\n if (process.env.NODE_ENV !== 'production') {\n util.logError('ZLevel ' + zlevel + ' has been used already');\n }\n return;\n }\n if (!isLayerValid(layer)) {\n if (process.env.NODE_ENV !== 'production') {\n util.logError('Layer of zlevel ' + zlevel + ' is not valid');\n }\n return;\n }\n if (len > 0 && zlevel > zlevelList[0]) {\n for (i = 0; i < len - 1; i++) {\n if (zlevelList[i] < zlevel\n && zlevelList[i + 1] > zlevel) {\n break;\n }\n }\n prevLayer = layersMap[zlevelList[i]];\n }\n zlevelList.splice(i + 1, 0, zlevel);\n layersMap[zlevel] = layer;\n if (!layer.virtual) {\n if (prevLayer) {\n var prevDom = prevLayer.dom;\n if (prevDom.nextSibling) {\n domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n }\n else {\n domRoot.appendChild(layer.dom);\n }\n }\n else {\n if (domRoot.firstChild) {\n domRoot.insertBefore(layer.dom, domRoot.firstChild);\n }\n else {\n domRoot.appendChild(layer.dom);\n }\n }\n }\n layer.__painter = this;\n };\n CanvasPainter.prototype.eachLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n cb.call(context, this._layers[z], z);\n }\n };\n CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n };\n CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\n var zlevelList = this._zlevelList;\n for (var i = 0; i < zlevelList.length; i++) {\n var z = zlevelList[i];\n var layer = this._layers[z];\n if (!layer.__builtin__) {\n cb.call(context, layer, z);\n }\n }\n };\n CanvasPainter.prototype.getLayers = function () {\n return this._layers;\n };\n CanvasPainter.prototype._updateLayerStatus = function (list) {\n this.eachBuiltinLayer(function (layer, z) {\n layer.__dirty = layer.__used = false;\n });\n function updatePrevLayer(idx) {\n if (prevLayer) {\n if (prevLayer.__endIndex !== idx) {\n prevLayer.__dirty = true;\n }\n prevLayer.__endIndex = idx;\n }\n }\n if (this._singleCanvas) {\n for (var i_1 = 1; i_1 < list.length; i_1++) {\n var el = list[i_1];\n if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\n this._needsManuallyCompositing = true;\n break;\n }\n }\n }\n var prevLayer = null;\n var incrementalLayerCount = 0;\n var prevZlevel;\n var i;\n for (i = 0; i < list.length; i++) {\n var el = list[i];\n var zlevel = el.zlevel;\n var layer = void 0;\n if (prevZlevel !== zlevel) {\n prevZlevel = zlevel;\n incrementalLayerCount = 0;\n }\n if (el.incremental) {\n layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n layer.incremental = true;\n incrementalLayerCount = 1;\n }\n else {\n layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n }\n if (!layer.__builtin__) {\n util.logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n }\n if (layer !== prevLayer) {\n layer.__used = true;\n if (layer.__startIndex !== i) {\n layer.__dirty = true;\n }\n layer.__startIndex = i;\n if (!layer.incremental) {\n layer.__drawIndex = i;\n }\n else {\n layer.__drawIndex = -1;\n }\n updatePrevLayer(i);\n prevLayer = layer;\n }\n if ((el.__dirty & REDRAW_BIT) && !el.__inHover) {\n layer.__dirty = true;\n if (layer.incremental && layer.__drawIndex < 0) {\n layer.__drawIndex = i;\n }\n }\n }\n updatePrevLayer(i);\n this.eachBuiltinLayer(function (layer, z) {\n if (!layer.__used && layer.getElementCount() > 0) {\n layer.__dirty = true;\n layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n }\n if (layer.__dirty && layer.__drawIndex < 0) {\n layer.__drawIndex = layer.__startIndex;\n }\n });\n };\n CanvasPainter.prototype.clear = function () {\n this.eachBuiltinLayer(this._clearLayer);\n return this;\n };\n CanvasPainter.prototype._clearLayer = function (layer) {\n layer.clear();\n };\n CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\n this._backgroundColor = backgroundColor;\n util.each(this._layers, function (layer) {\n layer.setUnpainted();\n });\n };\n CanvasPainter.prototype.configLayer = function (zlevel, config) {\n if (config) {\n var layerConfig = this._layerConfig;\n if (!layerConfig[zlevel]) {\n layerConfig[zlevel] = config;\n }\n else {\n util.merge(layerConfig[zlevel], config, true);\n }\n for (var i = 0; i < this._zlevelList.length; i++) {\n var _zlevel = this._zlevelList[i];\n if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n var layer = this._layers[_zlevel];\n util.merge(layer, layerConfig[zlevel], true);\n }\n }\n }\n };\n CanvasPainter.prototype.delLayer = function (zlevel) {\n var layers = this._layers;\n var zlevelList = this._zlevelList;\n var layer = layers[zlevel];\n if (!layer) {\n return;\n }\n layer.dom.parentNode.removeChild(layer.dom);\n delete layers[zlevel];\n zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n };\n CanvasPainter.prototype.resize = function (width, height) {\n if (!this._domRoot.style) {\n if (width == null || height == null) {\n return;\n }\n this._width = width;\n this._height = height;\n this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n }\n else {\n var domRoot = this._domRoot;\n domRoot.style.display = 'none';\n var opts = this._opts;\n var root = this.root;\n width != null && (opts.width = width);\n height != null && (opts.height = height);\n width = getSize(root, 0, opts);\n height = getSize(root, 1, opts);\n domRoot.style.display = '';\n if (this._width !== width || height !== this._height) {\n domRoot.style.width = width + 'px';\n domRoot.style.height = height + 'px';\n for (var id in this._layers) {\n if (this._layers.hasOwnProperty(id)) {\n this._layers[id].resize(width, height);\n }\n }\n this.refresh(true);\n }\n this._width = width;\n this._height = height;\n }\n return this;\n };\n CanvasPainter.prototype.clearLayer = function (zlevel) {\n var layer = this._layers[zlevel];\n if (layer) {\n layer.clear();\n }\n };\n CanvasPainter.prototype.dispose = function () {\n this.root.innerHTML = '';\n this.root =\n this.storage =\n this._domRoot =\n this._layers = null;\n };\n CanvasPainter.prototype.getRenderedCanvas = function (opts) {\n opts = opts || {};\n if (this._singleCanvas && !this._compositeManually) {\n return this._layers[CANVAS_ZLEVEL].dom;\n }\n var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n imageLayer.initContext();\n imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n var ctx = imageLayer.ctx;\n if (opts.pixelRatio <= this.dpr) {\n this.refresh();\n var width_1 = imageLayer.dom.width;\n var height_1 = imageLayer.dom.height;\n this.eachLayer(function (layer) {\n if (layer.__builtin__) {\n ctx.drawImage(layer.dom, 0, 0, width_1, height_1);\n }\n else if (layer.renderToCanvas) {\n ctx.save();\n layer.renderToCanvas(ctx);\n ctx.restore();\n }\n });\n }\n else {\n var scope = {\n inHover: false,\n viewWidth: this._width,\n viewHeight: this._height\n };\n var displayList = this.storage.getDisplayList(true);\n for (var i = 0, len = displayList.length; i < len; i++) {\n var el = displayList[i];\n brush(ctx, el, scope, i === len - 1);\n }\n }\n return imageLayer.dom;\n };\n CanvasPainter.prototype.getWidth = function () {\n return this._width;\n };\n CanvasPainter.prototype.getHeight = function () {\n return this._height;\n };\n return CanvasPainter;\n}());\nexport default CanvasPainter;\n;\n","import { isString } from '../core/util.js';\nexport function parseXML(svg) {\n if (isString(svg)) {\n var parser = new DOMParser();\n svg = parser.parseFromString(svg, 'text/xml');\n }\n var svgNode = svg;\n if (svgNode.nodeType === 9) {\n svgNode = svgNode.firstChild;\n }\n while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {\n svgNode = svgNode.nextSibling;\n }\n return svgNode;\n}\n","import Group from '../graphic/Group.js';\nimport ZRImage from '../graphic/Image.js';\nimport Circle from '../graphic/shape/Circle.js';\nimport Rect from '../graphic/shape/Rect.js';\nimport Ellipse from '../graphic/shape/Ellipse.js';\nimport Line from '../graphic/shape/Line.js';\nimport Polygon from '../graphic/shape/Polygon.js';\nimport Polyline from '../graphic/shape/Polyline.js';\nimport * as matrix from '../core/matrix.js';\nimport { createFromString } from './path.js';\nimport { defaults, trim, each, map, keys, hasOwn } from '../core/util.js';\nimport LinearGradient from '../graphic/LinearGradient.js';\nimport RadialGradient from '../graphic/RadialGradient.js';\nimport TSpan from '../graphic/TSpan.js';\nimport { parseXML } from './parseXML.js';\n;\nvar nodeParsers;\nvar INHERITABLE_STYLE_ATTRIBUTES_MAP = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-anchor': 'textAlign',\n 'visibility': 'visibility',\n 'display': 'display'\n};\nvar INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS = keys(INHERITABLE_STYLE_ATTRIBUTES_MAP);\nvar SELF_STYLE_ATTRIBUTES_MAP = {\n 'alignment-baseline': 'textBaseline',\n 'stop-color': 'stopColor'\n};\nvar SELF_STYLE_ATTRIBUTES_MAP_KEYS = keys(SELF_STYLE_ATTRIBUTES_MAP);\nvar SVGParser = (function () {\n function SVGParser() {\n this._defs = {};\n this._root = null;\n }\n SVGParser.prototype.parse = function (xml, opt) {\n opt = opt || {};\n var svg = parseXML(xml);\n if (process.env.NODE_ENV !== 'production') {\n if (!svg) {\n throw new Error('Illegal svg');\n }\n }\n this._defsUsePending = [];\n var root = new Group();\n this._root = root;\n var named = [];\n var viewBox = svg.getAttribute('viewBox') || '';\n var width = parseFloat((svg.getAttribute('width') || opt.width));\n var height = parseFloat((svg.getAttribute('height') || opt.height));\n isNaN(width) && (width = null);\n isNaN(height) && (height = null);\n parseAttributes(svg, root, null, true, false);\n var child = svg.firstChild;\n while (child) {\n this._parseNode(child, root, named, null, false, false);\n child = child.nextSibling;\n }\n applyDefs(this._defs, this._defsUsePending);\n this._defsUsePending = [];\n var viewBoxRect;\n var viewBoxTransform;\n if (viewBox) {\n var viewBoxArr = splitNumberSequence(viewBox);\n if (viewBoxArr.length >= 4) {\n viewBoxRect = {\n x: parseFloat((viewBoxArr[0] || 0)),\n y: parseFloat((viewBoxArr[1] || 0)),\n width: parseFloat(viewBoxArr[2]),\n height: parseFloat(viewBoxArr[3])\n };\n }\n }\n if (viewBoxRect && width != null && height != null) {\n viewBoxTransform = makeViewBoxTransform(viewBoxRect, { x: 0, y: 0, width: width, height: height });\n if (!opt.ignoreViewBox) {\n var elRoot = root;\n root = new Group();\n root.add(elRoot);\n elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale;\n elRoot.x = viewBoxTransform.x;\n elRoot.y = viewBoxTransform.y;\n }\n }\n if (!opt.ignoreRootClip && width != null && height != null) {\n root.setClipPath(new Rect({\n shape: { x: 0, y: 0, width: width, height: height }\n }));\n }\n return {\n root: root,\n width: width,\n height: height,\n viewBoxRect: viewBoxRect,\n viewBoxTransform: viewBoxTransform,\n named: named\n };\n };\n SVGParser.prototype._parseNode = function (xmlNode, parentGroup, named, namedFrom, isInDefs, isInText) {\n var nodeName = xmlNode.nodeName.toLowerCase();\n var el;\n var namedFromForSub = namedFrom;\n if (nodeName === 'defs') {\n isInDefs = true;\n }\n if (nodeName === 'text') {\n isInText = true;\n }\n if (nodeName === 'defs' || nodeName === 'switch') {\n el = parentGroup;\n }\n else {\n if (!isInDefs) {\n var parser_1 = nodeParsers[nodeName];\n if (parser_1 && hasOwn(nodeParsers, nodeName)) {\n el = parser_1.call(this, xmlNode, parentGroup);\n var nameAttr = xmlNode.getAttribute('name');\n if (nameAttr) {\n var newNamed = {\n name: nameAttr,\n namedFrom: null,\n svgNodeTagLower: nodeName,\n el: el\n };\n named.push(newNamed);\n if (nodeName === 'g') {\n namedFromForSub = newNamed;\n }\n }\n else if (namedFrom) {\n named.push({\n name: namedFrom.name,\n namedFrom: namedFrom,\n svgNodeTagLower: nodeName,\n el: el\n });\n }\n parentGroup.add(el);\n }\n }\n var parser = paintServerParsers[nodeName];\n if (parser && hasOwn(paintServerParsers, nodeName)) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n if (id) {\n this._defs[id] = def;\n }\n }\n }\n if (el && el.isGroup) {\n var child = xmlNode.firstChild;\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el, named, namedFromForSub, isInDefs, isInText);\n }\n else if (child.nodeType === 3 && isInText) {\n this._parseText(child, el);\n }\n child = child.nextSibling;\n }\n }\n };\n SVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n var text = new TSpan({\n style: {\n text: xmlNode.textContent\n },\n silent: true,\n x: this._textX || 0,\n y: this._textY || 0\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defsUsePending, false, false);\n applyTextAlignment(text, parentGroup);\n var textStyle = text.style;\n var fontSize = textStyle.fontSize;\n if (fontSize && fontSize < 9) {\n textStyle.fontSize = 9;\n text.scaleX *= fontSize / 9;\n text.scaleY *= fontSize / 9;\n }\n var font = (textStyle.fontSize || textStyle.fontFamily) && [\n textStyle.fontStyle,\n textStyle.fontWeight,\n (textStyle.fontSize || 12) + 'px',\n textStyle.fontFamily || 'sans-serif'\n ].join(' ');\n textStyle.font = font;\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n };\n SVGParser.internalField = (function () {\n nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defsUsePending, false, false);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defsUsePending, false, false);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || '0'),\n y: parseFloat(xmlNode.getAttribute('y') || '0'),\n width: parseFloat(xmlNode.getAttribute('width') || '0'),\n height: parseFloat(xmlNode.getAttribute('height') || '0')\n });\n rect.silent = true;\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defsUsePending, false, false);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || '0'),\n cy: parseFloat(xmlNode.getAttribute('cy') || '0'),\n r: parseFloat(xmlNode.getAttribute('r') || '0')\n });\n circle.silent = true;\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defsUsePending, false, false);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || '0'),\n y1: parseFloat(xmlNode.getAttribute('y1') || '0'),\n x2: parseFloat(xmlNode.getAttribute('x2') || '0'),\n y2: parseFloat(xmlNode.getAttribute('y2') || '0')\n });\n line.silent = true;\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defsUsePending, false, false);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || '0'),\n cy: parseFloat(xmlNode.getAttribute('cy') || '0'),\n rx: parseFloat(xmlNode.getAttribute('rx') || '0'),\n ry: parseFloat(xmlNode.getAttribute('ry') || '0')\n });\n ellipse.silent = true;\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var pointsStr = xmlNode.getAttribute('points');\n var pointsArr;\n if (pointsStr) {\n pointsArr = parsePoints(pointsStr);\n }\n var polygon = new Polygon({\n shape: {\n points: pointsArr || []\n },\n silent: true\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defsUsePending, false, false);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var pointsStr = xmlNode.getAttribute('points');\n var pointsArr;\n if (pointsStr) {\n pointsArr = parsePoints(pointsStr);\n }\n var polyline = new Polyline({\n shape: {\n points: pointsArr || []\n },\n silent: true\n });\n inheritStyle(parentGroup, polyline);\n parseAttributes(xmlNode, polyline, this._defsUsePending, false, false);\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZRImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defsUsePending, false, false);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href') || xmlNode.getAttribute('href'),\n x: +xmlNode.getAttribute('x'),\n y: +xmlNode.getAttribute('y'),\n width: +xmlNode.getAttribute('width'),\n height: +xmlNode.getAttribute('height')\n });\n img.silent = true;\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || '0';\n var y = xmlNode.getAttribute('y') || '0';\n var dx = xmlNode.getAttribute('dx') || '0';\n var dy = xmlNode.getAttribute('dy') || '0';\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defsUsePending, false, true);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n if (x != null) {\n this._textX = parseFloat(x);\n }\n if (y != null) {\n this._textY = parseFloat(y);\n }\n var dx = xmlNode.getAttribute('dx') || '0';\n var dy = xmlNode.getAttribute('dy') || '0';\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defsUsePending, false, true);\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n var d = xmlNode.getAttribute('d') || '';\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defsUsePending, false, false);\n path.silent = true;\n return path;\n }\n };\n })();\n return SVGParser;\n}());\nvar paintServerParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || '0', 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || '0', 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || '10', 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || '0', 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n parsePaintServerUnit(xmlNode, gradient);\n parseGradientColorStops(xmlNode, gradient);\n return gradient;\n },\n 'radialgradient': function (xmlNode) {\n var cx = parseInt(xmlNode.getAttribute('cx') || '0', 10);\n var cy = parseInt(xmlNode.getAttribute('cy') || '0', 10);\n var r = parseInt(xmlNode.getAttribute('r') || '0', 10);\n var gradient = new RadialGradient(cx, cy, r);\n parsePaintServerUnit(xmlNode, gradient);\n parseGradientColorStops(xmlNode, gradient);\n return gradient;\n }\n};\nfunction parsePaintServerUnit(xmlNode, gradient) {\n var gradientUnits = xmlNode.getAttribute('gradientUnits');\n if (gradientUnits === 'userSpaceOnUse') {\n gradient.global = true;\n }\n}\nfunction parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n while (stop) {\n if (stop.nodeType === 1\n && stop.nodeName.toLocaleLowerCase() === 'stop') {\n var offsetStr = stop.getAttribute('offset');\n var offset = void 0;\n if (offsetStr && offsetStr.indexOf('%') > 0) {\n offset = parseInt(offsetStr, 10) / 100;\n }\n else if (offsetStr) {\n offset = parseFloat(offsetStr);\n }\n else {\n offset = 0;\n }\n var styleVals = {};\n parseInlineStyle(stop, styleVals, styleVals);\n var stopColor = styleVals.stopColor\n || stop.getAttribute('stop-color')\n || '#000000';\n gradient.colorStops.push({\n offset: offset,\n color: stopColor\n });\n }\n stop = stop.nextSibling;\n }\n}\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\nfunction parsePoints(pointsString) {\n var list = splitNumberSequence(pointsString);\n var points = [];\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n return points;\n}\nfunction parseAttributes(xmlNode, el, defsUsePending, onlyInlineStyle, isTextGroup) {\n var disp = el;\n var inheritedStyle = disp.__inheritedStyle = disp.__inheritedStyle || {};\n var selfStyle = {};\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n parseInlineStyle(xmlNode, inheritedStyle, selfStyle);\n if (!onlyInlineStyle) {\n parseAttributeStyle(xmlNode, inheritedStyle, selfStyle);\n }\n }\n disp.style = disp.style || {};\n if (inheritedStyle.fill != null) {\n disp.style.fill = getFillStrokeStyle(disp, 'fill', inheritedStyle.fill, defsUsePending);\n }\n if (inheritedStyle.stroke != null) {\n disp.style.stroke = getFillStrokeStyle(disp, 'stroke', inheritedStyle.stroke, defsUsePending);\n }\n each([\n 'lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'\n ], function (propName) {\n if (inheritedStyle[propName] != null) {\n disp.style[propName] = parseFloat(inheritedStyle[propName]);\n }\n });\n each([\n 'lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign'\n ], function (propName) {\n if (inheritedStyle[propName] != null) {\n disp.style[propName] = inheritedStyle[propName];\n }\n });\n if (isTextGroup) {\n disp.__selfStyle = selfStyle;\n }\n if (inheritedStyle.lineDash) {\n disp.style.lineDash = map(splitNumberSequence(inheritedStyle.lineDash), function (str) {\n return parseFloat(str);\n });\n }\n if (inheritedStyle.visibility === 'hidden' || inheritedStyle.visibility === 'collapse') {\n disp.invisible = true;\n }\n if (inheritedStyle.display === 'none') {\n disp.ignore = true;\n }\n}\nfunction applyTextAlignment(text, parentGroup) {\n var parentSelfStyle = parentGroup.__selfStyle;\n if (parentSelfStyle) {\n var textBaseline = parentSelfStyle.textBaseline;\n var zrTextBaseline = textBaseline;\n if (!textBaseline || textBaseline === 'auto') {\n zrTextBaseline = 'alphabetic';\n }\n else if (textBaseline === 'baseline') {\n zrTextBaseline = 'alphabetic';\n }\n else if (textBaseline === 'before-edge' || textBaseline === 'text-before-edge') {\n zrTextBaseline = 'top';\n }\n else if (textBaseline === 'after-edge' || textBaseline === 'text-after-edge') {\n zrTextBaseline = 'bottom';\n }\n else if (textBaseline === 'central' || textBaseline === 'mathematical') {\n zrTextBaseline = 'middle';\n }\n text.style.textBaseline = zrTextBaseline;\n }\n var parentInheritedStyle = parentGroup.__inheritedStyle;\n if (parentInheritedStyle) {\n var textAlign = parentInheritedStyle.textAlign;\n var zrTextAlign = textAlign;\n if (textAlign) {\n if (textAlign === 'middle') {\n zrTextAlign = 'center';\n }\n text.style.textAlign = zrTextAlign;\n }\n }\n}\nvar urlRegex = /^url\\(\\s*#(.*?)\\)/;\nfunction getFillStrokeStyle(el, method, str, defsUsePending) {\n var urlMatch = str && str.match(urlRegex);\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n defsUsePending.push([el, method, url]);\n return;\n }\n if (str === 'none') {\n str = null;\n }\n return str;\n}\nfunction applyDefs(defs, defsUsePending) {\n for (var i = 0; i < defsUsePending.length; i++) {\n var item = defsUsePending[i];\n item[0].style[item[1]] = defs[item[2]];\n }\n}\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\nfunction splitNumberSequence(rawStr) {\n return rawStr.match(numberReg) || [];\n}\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.eE,]*)\\)/g;\nvar DEGREE_TO_ANGLE = Math.PI / 180;\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var transformOps_1 = [];\n var mt = null;\n transform.replace(transformRegex, function (str, type, value) {\n transformOps_1.push(type, value);\n return '';\n });\n for (var i = transformOps_1.length - 1; i > 0; i -= 2) {\n var value = transformOps_1[i];\n var type = transformOps_1[i - 1];\n var valueArr = splitNumberSequence(value);\n mt = mt || matrix.create();\n switch (type) {\n case 'translate':\n matrix.translate(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || '0')]);\n break;\n case 'scale':\n matrix.scale(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]);\n break;\n case 'rotate':\n matrix.rotate(mt, mt, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);\n break;\n case 'skewX':\n var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);\n matrix.mul(mt, [1, 0, sx, 1, 0, 0], mt);\n break;\n case 'skewY':\n var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);\n matrix.mul(mt, [1, sy, 0, 1, 0, 0], mt);\n break;\n case 'matrix':\n mt[0] = parseFloat(valueArr[0]);\n mt[1] = parseFloat(valueArr[1]);\n mt[2] = parseFloat(valueArr[2]);\n mt[3] = parseFloat(valueArr[3]);\n mt[4] = parseFloat(valueArr[4]);\n mt[5] = parseFloat(valueArr[5]);\n break;\n }\n }\n node.setLocalTransform(mt);\n }\n}\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\nfunction parseInlineStyle(xmlNode, inheritableStyleResult, selfStyleResult) {\n var style = xmlNode.getAttribute('style');\n if (!style) {\n return;\n }\n styleRegex.lastIndex = 0;\n var styleRegResult;\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n var svgStlAttr = styleRegResult[1];\n var zrInheritableStlAttr = hasOwn(INHERITABLE_STYLE_ATTRIBUTES_MAP, svgStlAttr)\n ? INHERITABLE_STYLE_ATTRIBUTES_MAP[svgStlAttr]\n : null;\n if (zrInheritableStlAttr) {\n inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2];\n }\n var zrSelfStlAttr = hasOwn(SELF_STYLE_ATTRIBUTES_MAP, svgStlAttr)\n ? SELF_STYLE_ATTRIBUTES_MAP[svgStlAttr]\n : null;\n if (zrSelfStlAttr) {\n selfStyleResult[zrSelfStlAttr] = styleRegResult[2];\n }\n }\n}\nfunction parseAttributeStyle(xmlNode, inheritableStyleResult, selfStyleResult) {\n for (var i = 0; i < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) {\n var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS[i];\n var attrValue = xmlNode.getAttribute(svgAttrName);\n if (attrValue != null) {\n inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue;\n }\n }\n for (var i = 0; i < SELF_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) {\n var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS[i];\n var attrValue = xmlNode.getAttribute(svgAttrName);\n if (attrValue != null) {\n selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue;\n }\n }\n}\nexport function makeViewBoxTransform(viewBoxRect, boundingRect) {\n var scaleX = boundingRect.width / viewBoxRect.width;\n var scaleY = boundingRect.height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY);\n return {\n scale: scale,\n x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale + (boundingRect.x + boundingRect.width / 2),\n y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale + (boundingRect.y + boundingRect.height / 2)\n };\n}\nexport function parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\nexport { parseXML };\n","import { cubicSubdivide } from '../core/curve.js';\nimport PathProxy from '../core/PathProxy.js';\nvar CMD = PathProxy.CMD;\nfunction aroundEqual(a, b) {\n return Math.abs(a - b) < 1e-5;\n}\nexport function pathToBezierCurves(path) {\n var data = path.data;\n var len = path.len();\n var bezierArrayGroups = [];\n var currentSubpath;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n function createNewSubpath(x, y) {\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n currentSubpath = [x, y];\n }\n function addLine(x0, y0, x1, y1) {\n if (!(aroundEqual(x0, x1) && aroundEqual(y0, y1))) {\n currentSubpath.push(x0, y0, x1, y1, x1, y1);\n }\n }\n function addArc(startAngle, endAngle, cx, cy, rx, ry) {\n var delta = Math.abs(endAngle - startAngle);\n var len = Math.tan(delta / 4) * 4 / 3;\n var dir = endAngle < startAngle ? -1 : 1;\n var c1 = Math.cos(startAngle);\n var s1 = Math.sin(startAngle);\n var c2 = Math.cos(endAngle);\n var s2 = Math.sin(endAngle);\n var x1 = c1 * rx + cx;\n var y1 = s1 * ry + cy;\n var x4 = c2 * rx + cx;\n var y4 = s2 * ry + cy;\n var hx = rx * len * dir;\n var hy = ry * len * dir;\n currentSubpath.push(x1 - hx * s1, y1 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);\n }\n var x1;\n var y1;\n var x2;\n var y2;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n if (cmd === CMD.L || cmd === CMD.C || cmd === CMD.Q) {\n currentSubpath = [x0, y0];\n }\n }\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n createNewSubpath(x0, y0);\n break;\n case CMD.L:\n x1 = data[i++];\n y1 = data[i++];\n addLine(xi, yi, x1, y1);\n xi = x1;\n yi = y1;\n break;\n case CMD.C:\n currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]);\n break;\n case CMD.Q:\n x1 = data[i++];\n y1 = data[i++];\n x2 = data[i++];\n y2 = data[i++];\n currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);\n xi = x2;\n yi = y2;\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n x1 = Math.cos(startAngle) * rx + cx;\n y1 = Math.sin(startAngle) * ry + cy;\n if (isFirst) {\n x0 = x1;\n y0 = y1;\n createNewSubpath(x0, y0);\n }\n else {\n addLine(xi, yi, x1, y1);\n }\n xi = Math.cos(endAngle) * rx + cx;\n yi = Math.sin(endAngle) * ry + cy;\n var step = (anticlockwise ? -1 : 1) * Math.PI / 2;\n for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {\n var nextAngle = anticlockwise ? Math.max(angle + step, endAngle)\n : Math.min(angle + step, endAngle);\n addArc(angle, nextAngle, cx, cy, rx, ry);\n }\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n x1 = x0 + data[i++];\n y1 = y0 + data[i++];\n createNewSubpath(x1, y0);\n addLine(x1, y0, x1, y1);\n addLine(x1, y1, x0, y1);\n addLine(x0, y1, x0, y0);\n addLine(x0, y0, x1, y0);\n break;\n case CMD.Z:\n currentSubpath && addLine(xi, yi, x0, y0);\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (currentSubpath && currentSubpath.length > 2) {\n bezierArrayGroups.push(currentSubpath);\n }\n return bezierArrayGroups;\n}\nfunction adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out, scale) {\n if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) {\n out.push(x3, y3);\n return;\n }\n var PIXEL_DISTANCE = 2 / scale;\n var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE;\n var dx = x3 - x0;\n var dy = y3 - y0;\n var d = Math.sqrt(dx * dx + dy * dy);\n dx /= d;\n dy /= d;\n var dx1 = x1 - x0;\n var dy1 = y1 - y0;\n var dx2 = x2 - x3;\n var dy2 = y2 - y3;\n var cp1LenSqr = dx1 * dx1 + dy1 * dy1;\n var cp2LenSqr = dx2 * dx2 + dy2 * dy2;\n if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) {\n out.push(x3, y3);\n return;\n }\n var projLen1 = dx * dx1 + dy * dy1;\n var projLen2 = -dx * dx2 - dy * dy2;\n var d1Sqr = cp1LenSqr - projLen1 * projLen1;\n var d2Sqr = cp2LenSqr - projLen2 * projLen2;\n if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0\n && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) {\n out.push(x3, y3);\n return;\n }\n var tmpSegX = [];\n var tmpSegY = [];\n cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX);\n cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY);\n adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out, scale);\n adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out, scale);\n}\nexport function pathToPolygons(path, scale) {\n var bezierArrayGroups = pathToBezierCurves(path);\n var polygons = [];\n scale = scale || 1;\n for (var i = 0; i < bezierArrayGroups.length; i++) {\n var beziers = bezierArrayGroups[i];\n var polygon = [];\n var x0 = beziers[0];\n var y0 = beziers[1];\n polygon.push(x0, y0);\n for (var k = 2; k < beziers.length;) {\n var x1 = beziers[k++];\n var y1 = beziers[k++];\n var x2 = beziers[k++];\n var y2 = beziers[k++];\n var x3 = beziers[k++];\n var y3 = beziers[k++];\n adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale);\n x0 = x3;\n y0 = y3;\n }\n polygons.push(polygon);\n }\n return polygons;\n}\n","import { fromPoints } from '../core/bbox.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport Point from '../core/Point.js';\nimport { map } from '../core/util.js';\nimport Polygon from '../graphic/shape/Polygon.js';\nimport Rect from '../graphic/shape/Rect.js';\nimport Sector from '../graphic/shape/Sector.js';\nimport { pathToPolygons } from './convertPath.js';\nimport { clonePath } from './path.js';\nfunction getDividingGrids(dimSize, rowDim, count) {\n var rowSize = dimSize[rowDim];\n var columnSize = dimSize[1 - rowDim];\n var ratio = Math.abs(rowSize / columnSize);\n var rowCount = Math.ceil(Math.sqrt(ratio * count));\n var columnCount = Math.floor(count / rowCount);\n if (columnCount === 0) {\n columnCount = 1;\n rowCount = count;\n }\n var grids = [];\n for (var i = 0; i < rowCount; i++) {\n grids.push(columnCount);\n }\n var currentCount = rowCount * columnCount;\n var remained = count - currentCount;\n if (remained > 0) {\n for (var i = 0; i < remained; i++) {\n grids[i % rowCount] += 1;\n }\n }\n return grids;\n}\nfunction divideSector(sectorShape, count, outShapes) {\n var r0 = sectorShape.r0;\n var r = sectorShape.r;\n var startAngle = sectorShape.startAngle;\n var endAngle = sectorShape.endAngle;\n var angle = Math.abs(endAngle - startAngle);\n var arcLen = angle * r;\n var deltaR = r - r0;\n var isAngleRow = arcLen > Math.abs(deltaR);\n var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count);\n var rowSize = (isAngleRow ? angle : deltaR) / grids.length;\n for (var row = 0; row < grids.length; row++) {\n var columnSize = (isAngleRow ? deltaR : angle) / grids[row];\n for (var column = 0; column < grids[row]; column++) {\n var newShape = {};\n if (isAngleRow) {\n newShape.startAngle = startAngle + rowSize * row;\n newShape.endAngle = startAngle + rowSize * (row + 1);\n newShape.r0 = r0 + columnSize * column;\n newShape.r = r0 + columnSize * (column + 1);\n }\n else {\n newShape.startAngle = startAngle + columnSize * column;\n newShape.endAngle = startAngle + columnSize * (column + 1);\n newShape.r0 = r0 + rowSize * row;\n newShape.r = r0 + rowSize * (row + 1);\n }\n newShape.clockwise = sectorShape.clockwise;\n newShape.cx = sectorShape.cx;\n newShape.cy = sectorShape.cy;\n outShapes.push(newShape);\n }\n }\n}\nfunction divideRect(rectShape, count, outShapes) {\n var width = rectShape.width;\n var height = rectShape.height;\n var isHorizontalRow = width > height;\n var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count);\n var rowSizeDim = isHorizontalRow ? 'width' : 'height';\n var columnSizeDim = isHorizontalRow ? 'height' : 'width';\n var rowDim = isHorizontalRow ? 'x' : 'y';\n var columnDim = isHorizontalRow ? 'y' : 'x';\n var rowSize = rectShape[rowSizeDim] / grids.length;\n for (var row = 0; row < grids.length; row++) {\n var columnSize = rectShape[columnSizeDim] / grids[row];\n for (var column = 0; column < grids[row]; column++) {\n var newShape = {};\n newShape[rowDim] = row * rowSize;\n newShape[columnDim] = column * columnSize;\n newShape[rowSizeDim] = rowSize;\n newShape[columnSizeDim] = columnSize;\n newShape.x += rectShape.x;\n newShape.y += rectShape.y;\n outShapes.push(newShape);\n }\n }\n}\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y;\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n if (Math.abs(nmCrossProduct) < 1e-6) {\n return null;\n }\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n if (p < 0 || p > 1) {\n return null;\n }\n return new Point(p * mx + a1x, p * my + a1y);\n}\nfunction projPtOnLine(pt, lineA, lineB) {\n var dir = new Point();\n Point.sub(dir, lineB, lineA);\n dir.normalize();\n var dir2 = new Point();\n Point.sub(dir2, pt, lineA);\n var len = dir2.dot(dir);\n return len;\n}\nfunction addToPoly(poly, pt) {\n var last = poly[poly.length - 1];\n if (last && last[0] === pt[0] && last[1] === pt[1]) {\n return;\n }\n poly.push(pt);\n}\nfunction splitPolygonByLine(points, lineA, lineB) {\n var len = points.length;\n var intersections = [];\n for (var i = 0; i < len; i++) {\n var p0 = points[i];\n var p1 = points[(i + 1) % len];\n var intersectionPt = lineLineIntersect(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y);\n if (intersectionPt) {\n intersections.push({\n projPt: projPtOnLine(intersectionPt, lineA, lineB),\n pt: intersectionPt,\n idx: i\n });\n }\n }\n if (intersections.length < 2) {\n return [{ points: points }, { points: points }];\n }\n intersections.sort(function (a, b) {\n return a.projPt - b.projPt;\n });\n var splitPt0 = intersections[0];\n var splitPt1 = intersections[intersections.length - 1];\n if (splitPt1.idx < splitPt0.idx) {\n var tmp = splitPt0;\n splitPt0 = splitPt1;\n splitPt1 = tmp;\n }\n var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y];\n var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y];\n var newPolyA = [splitPt0Arr];\n var newPolyB = [splitPt1Arr];\n for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) {\n addToPoly(newPolyA, points[i].slice());\n }\n addToPoly(newPolyA, splitPt1Arr);\n addToPoly(newPolyA, splitPt0Arr);\n for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len; i++) {\n addToPoly(newPolyB, points[i % len].slice());\n }\n addToPoly(newPolyB, splitPt0Arr);\n addToPoly(newPolyB, splitPt1Arr);\n return [{\n points: newPolyA\n }, {\n points: newPolyB\n }];\n}\nfunction binaryDividePolygon(polygonShape) {\n var points = polygonShape.points;\n var min = [];\n var max = [];\n fromPoints(points, min, max);\n var boundingRect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n var width = boundingRect.width;\n var height = boundingRect.height;\n var x = boundingRect.x;\n var y = boundingRect.y;\n var pt0 = new Point();\n var pt1 = new Point();\n if (width > height) {\n pt0.x = pt1.x = x + width / 2;\n pt0.y = y;\n pt1.y = y + height;\n }\n else {\n pt0.y = pt1.y = y + height / 2;\n pt0.x = x;\n pt1.x = x + width;\n }\n return splitPolygonByLine(points, pt0, pt1);\n}\nfunction binaryDivideRecursive(divider, shape, count, out) {\n if (count === 1) {\n out.push(shape);\n }\n else {\n var mid = Math.floor(count / 2);\n var sub = divider(shape);\n binaryDivideRecursive(divider, sub[0], mid, out);\n binaryDivideRecursive(divider, sub[1], count - mid, out);\n }\n return out;\n}\nexport function clone(path, count) {\n var paths = [];\n for (var i = 0; i < count; i++) {\n paths.push(clonePath(path));\n }\n return paths;\n}\nfunction copyPathProps(source, target) {\n target.setStyle(source.style);\n target.z = source.z;\n target.z2 = source.z2;\n target.zlevel = source.zlevel;\n}\nfunction polygonConvert(points) {\n var out = [];\n for (var i = 0; i < points.length;) {\n out.push([points[i++], points[i++]]);\n }\n return out;\n}\nexport function split(path, count) {\n var outShapes = [];\n var shape = path.shape;\n var OutShapeCtor;\n switch (path.type) {\n case 'rect':\n divideRect(shape, count, outShapes);\n OutShapeCtor = Rect;\n break;\n case 'sector':\n divideSector(shape, count, outShapes);\n OutShapeCtor = Sector;\n break;\n case 'circle':\n divideSector({\n r0: 0, r: shape.r, startAngle: 0, endAngle: Math.PI * 2,\n cx: shape.cx, cy: shape.cy\n }, count, outShapes);\n OutShapeCtor = Sector;\n break;\n default:\n var m = path.getComputedTransform();\n var scale = m ? Math.sqrt(Math.max(m[0] * m[0] + m[1] * m[1], m[2] * m[2] + m[3] * m[3])) : 1;\n var polygons = map(pathToPolygons(path.getUpdatedPathProxy(), scale), function (poly) { return polygonConvert(poly); });\n var polygonCount = polygons.length;\n if (polygonCount === 0) {\n binaryDivideRecursive(binaryDividePolygon, {\n points: polygons[0]\n }, count, outShapes);\n }\n else if (polygonCount === count) {\n for (var i = 0; i < polygonCount; i++) {\n outShapes.push({\n points: polygons[i]\n });\n }\n }\n else {\n var totalArea_1 = 0;\n var items = map(polygons, function (poly) {\n var min = [];\n var max = [];\n fromPoints(poly, min, max);\n var area = (max[1] - min[1]) * (max[0] - min[0]);\n totalArea_1 += area;\n return { poly: poly, area: area };\n });\n items.sort(function (a, b) { return b.area - a.area; });\n var left = count;\n for (var i = 0; i < polygonCount; i++) {\n var item = items[i];\n if (left <= 0) {\n break;\n }\n var selfCount = i === polygonCount - 1\n ? left\n : Math.ceil(item.area / totalArea_1 * count);\n if (selfCount < 0) {\n continue;\n }\n binaryDivideRecursive(binaryDividePolygon, {\n points: item.poly\n }, selfCount, outShapes);\n left -= selfCount;\n }\n ;\n }\n OutShapeCtor = Polygon;\n break;\n }\n if (!OutShapeCtor) {\n return clone(path, count);\n }\n var out = [];\n for (var i = 0; i < outShapes.length; i++) {\n var subPath = new OutShapeCtor();\n subPath.setShape(outShapes[i]);\n copyPathProps(path, subPath);\n out.push(subPath);\n }\n return out;\n}\n","import { cubicSubdivide } from '../core/curve.js';\nimport Path from '../graphic/Path.js';\nimport { defaults, map } from '../core/util.js';\nimport { lerp } from '../core/vector.js';\nimport { clonePath } from './path.js';\nimport Transformable from '../core/Transformable.js';\nimport { split } from './dividePath.js';\nimport { pathToBezierCurves } from './convertPath.js';\nfunction alignSubpath(subpath1, subpath2) {\n var len1 = subpath1.length;\n var len2 = subpath2.length;\n if (len1 === len2) {\n return [subpath1, subpath2];\n }\n var tmpSegX = [];\n var tmpSegY = [];\n var shorterPath = len1 < len2 ? subpath1 : subpath2;\n var shorterLen = Math.min(len1, len2);\n var diff = Math.abs(len2 - len1) / 6;\n var shorterBezierCount = (shorterLen - 2) / 6;\n var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;\n var newSubpath = [shorterPath[0], shorterPath[1]];\n var remained = diff;\n for (var i = 2; i < shorterLen;) {\n var x0 = shorterPath[i - 2];\n var y0 = shorterPath[i - 1];\n var x1 = shorterPath[i++];\n var y1 = shorterPath[i++];\n var x2 = shorterPath[i++];\n var y2 = shorterPath[i++];\n var x3 = shorterPath[i++];\n var y3 = shorterPath[i++];\n if (remained <= 0) {\n newSubpath.push(x1, y1, x2, y2, x3, y3);\n continue;\n }\n var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;\n for (var k = 1; k <= actualSubDivCount; k++) {\n var p = k / actualSubDivCount;\n cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);\n cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);\n x0 = tmpSegX[3];\n y0 = tmpSegY[3];\n newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);\n x1 = tmpSegX[5];\n y1 = tmpSegY[5];\n x2 = tmpSegX[6];\n y2 = tmpSegY[6];\n }\n remained -= actualSubDivCount - 1;\n }\n return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];\n}\nfunction createSubpath(lastSubpathSubpath, otherSubpath) {\n var len = lastSubpathSubpath.length;\n var lastX = lastSubpathSubpath[len - 2];\n var lastY = lastSubpathSubpath[len - 1];\n var newSubpath = [];\n for (var i = 0; i < otherSubpath.length;) {\n newSubpath[i++] = lastX;\n newSubpath[i++] = lastY;\n }\n return newSubpath;\n}\nexport function alignBezierCurves(array1, array2) {\n var _a;\n var lastSubpath1;\n var lastSubpath2;\n var newArray1 = [];\n var newArray2 = [];\n for (var i = 0; i < Math.max(array1.length, array2.length); i++) {\n var subpath1 = array1[i];\n var subpath2 = array2[i];\n var newSubpath1 = void 0;\n var newSubpath2 = void 0;\n if (!subpath1) {\n newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);\n newSubpath2 = subpath2;\n }\n else if (!subpath2) {\n newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);\n newSubpath1 = subpath1;\n }\n else {\n _a = alignSubpath(subpath1, subpath2), newSubpath1 = _a[0], newSubpath2 = _a[1];\n lastSubpath1 = newSubpath1;\n lastSubpath2 = newSubpath2;\n }\n newArray1.push(newSubpath1);\n newArray2.push(newSubpath2);\n }\n return [newArray1, newArray2];\n}\nexport function centroid(array) {\n var signedArea = 0;\n var cx = 0;\n var cy = 0;\n var len = array.length;\n for (var i = 0, j = len - 2; i < len; j = i, i += 2) {\n var x0 = array[j];\n var y0 = array[j + 1];\n var x1 = array[i];\n var y1 = array[i + 1];\n var a = x0 * y1 - x1 * y0;\n signedArea += a;\n cx += (x0 + x1) * a;\n cy += (y0 + y1) * a;\n }\n if (signedArea === 0) {\n return [array[0] || 0, array[1] || 0];\n }\n return [cx / signedArea / 3, cy / signedArea / 3, signedArea];\n}\nfunction findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {\n var bezierCount = (fromSubBeziers.length - 2) / 6;\n var bestScore = Infinity;\n var bestOffset = 0;\n var len = fromSubBeziers.length;\n var len2 = len - 2;\n for (var offset = 0; offset < bezierCount; offset++) {\n var cursorOffset = offset * 6;\n var score = 0;\n for (var k = 0; k < len; k += 2) {\n var idx = k === 0 ? cursorOffset : ((cursorOffset + k - 2) % len2 + 2);\n var x0 = fromSubBeziers[idx] - fromCp[0];\n var y0 = fromSubBeziers[idx + 1] - fromCp[1];\n var x1 = toSubBeziers[k] - toCp[0];\n var y1 = toSubBeziers[k + 1] - toCp[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n score += dx * dx + dy * dy;\n }\n if (score < bestScore) {\n bestScore = score;\n bestOffset = offset;\n }\n }\n return bestOffset;\n}\nfunction reverse(array) {\n var newArr = [];\n var len = array.length;\n for (var i = 0; i < len; i += 2) {\n newArr[i] = array[len - i - 2];\n newArr[i + 1] = array[len - i - 1];\n }\n return newArr;\n}\nfunction findBestMorphingRotation(fromArr, toArr, searchAngleIteration, searchAngleRange) {\n var result = [];\n var fromNeedsReverse;\n for (var i = 0; i < fromArr.length; i++) {\n var fromSubpathBezier = fromArr[i];\n var toSubpathBezier = toArr[i];\n var fromCp = centroid(fromSubpathBezier);\n var toCp = centroid(toSubpathBezier);\n if (fromNeedsReverse == null) {\n fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;\n }\n var newFromSubpathBezier = [];\n var newToSubpathBezier = [];\n var bestAngle = 0;\n var bestScore = Infinity;\n var tmpArr = [];\n var len = fromSubpathBezier.length;\n if (fromNeedsReverse) {\n fromSubpathBezier = reverse(fromSubpathBezier);\n }\n var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;\n var len2 = len - 2;\n for (var k = 0; k < len2; k += 2) {\n var idx = (offset + k) % len2 + 2;\n newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];\n newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];\n }\n newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];\n newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];\n if (searchAngleIteration > 0) {\n var step = searchAngleRange / searchAngleIteration;\n for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {\n var sa = Math.sin(angle);\n var ca = Math.cos(angle);\n var score = 0;\n for (var k = 0; k < fromSubpathBezier.length; k += 2) {\n var x0 = newFromSubpathBezier[k];\n var y0 = newFromSubpathBezier[k + 1];\n var x1 = toSubpathBezier[k] - toCp[0];\n var y1 = toSubpathBezier[k + 1] - toCp[1];\n var newX1 = x1 * ca - y1 * sa;\n var newY1 = x1 * sa + y1 * ca;\n tmpArr[k] = newX1;\n tmpArr[k + 1] = newY1;\n var dx = newX1 - x0;\n var dy = newY1 - y0;\n score += dx * dx + dy * dy;\n }\n if (score < bestScore) {\n bestScore = score;\n bestAngle = angle;\n for (var m = 0; m < tmpArr.length; m++) {\n newToSubpathBezier[m] = tmpArr[m];\n }\n }\n }\n }\n else {\n for (var i_1 = 0; i_1 < len; i_1 += 2) {\n newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0];\n newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1];\n }\n }\n result.push({\n from: newFromSubpathBezier,\n to: newToSubpathBezier,\n fromCp: fromCp,\n toCp: toCp,\n rotation: -bestAngle\n });\n }\n return result;\n}\nexport function isCombineMorphing(path) {\n return path.__isCombineMorphing;\n}\nexport function isMorphing(el) {\n return el.__morphT >= 0;\n}\nvar SAVED_METHOD_PREFIX = '__mOriginal_';\nfunction saveAndModifyMethod(obj, methodName, modifiers) {\n var savedMethodName = SAVED_METHOD_PREFIX + methodName;\n var originalMethod = obj[savedMethodName] || obj[methodName];\n if (!obj[savedMethodName]) {\n obj[savedMethodName] = obj[methodName];\n }\n var replace = modifiers.replace;\n var after = modifiers.after;\n var before = modifiers.before;\n obj[methodName] = function () {\n var args = arguments;\n var res;\n before && before.apply(this, args);\n if (replace) {\n res = replace.apply(this, args);\n }\n else {\n res = originalMethod.apply(this, args);\n }\n after && after.apply(this, args);\n return res;\n };\n}\nfunction restoreMethod(obj, methodName) {\n var savedMethodName = SAVED_METHOD_PREFIX + methodName;\n if (obj[savedMethodName]) {\n obj[methodName] = obj[savedMethodName];\n obj[savedMethodName] = null;\n }\n}\nfunction applyTransformOnBeziers(bezierCurves, mm) {\n for (var i = 0; i < bezierCurves.length; i++) {\n var subBeziers = bezierCurves[i];\n for (var k = 0; k < subBeziers.length;) {\n var x = subBeziers[k];\n var y = subBeziers[k + 1];\n subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4];\n subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5];\n }\n }\n}\nfunction prepareMorphPath(fromPath, toPath) {\n var fromPathProxy = fromPath.getUpdatedPathProxy();\n var toPathProxy = toPath.getUpdatedPathProxy();\n var _a = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a[0], toBezierCurves = _a[1];\n var fromPathTransform = fromPath.getComputedTransform();\n var toPathTransform = toPath.getComputedTransform();\n function updateIdentityTransform() {\n this.transform = null;\n }\n fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform);\n toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform);\n saveAndModifyMethod(toPath, 'updateTransform', { replace: updateIdentityTransform });\n toPath.transform = null;\n var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);\n var tmpArr = [];\n saveAndModifyMethod(toPath, 'buildPath', { replace: function (path) {\n var t = toPath.__morphT;\n var onet = 1 - t;\n var newCp = [];\n for (var i = 0; i < morphingData.length; i++) {\n var item = morphingData[i];\n var from = item.from;\n var to = item.to;\n var angle = item.rotation * t;\n var fromCp = item.fromCp;\n var toCp = item.toCp;\n var sa = Math.sin(angle);\n var ca = Math.cos(angle);\n lerp(newCp, fromCp, toCp, t);\n for (var m = 0; m < from.length; m += 2) {\n var x0_1 = from[m];\n var y0_1 = from[m + 1];\n var x1 = to[m];\n var y1 = to[m + 1];\n var x = x0_1 * onet + x1 * t;\n var y = y0_1 * onet + y1 * t;\n tmpArr[m] = (x * ca - y * sa) + newCp[0];\n tmpArr[m + 1] = (x * sa + y * ca) + newCp[1];\n }\n var x0 = tmpArr[0];\n var y0 = tmpArr[1];\n path.moveTo(x0, y0);\n for (var m = 2; m < from.length;) {\n var x1 = tmpArr[m++];\n var y1 = tmpArr[m++];\n var x2 = tmpArr[m++];\n var y2 = tmpArr[m++];\n var x3 = tmpArr[m++];\n var y3 = tmpArr[m++];\n if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) {\n path.lineTo(x3, y3);\n }\n else {\n path.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n x0 = x3;\n y0 = y3;\n }\n }\n } });\n}\nexport function morphPath(fromPath, toPath, animationOpts) {\n if (!fromPath || !toPath) {\n return toPath;\n }\n var oldDone = animationOpts.done;\n var oldDuring = animationOpts.during;\n prepareMorphPath(fromPath, toPath);\n toPath.__morphT = 0;\n function restoreToPath() {\n restoreMethod(toPath, 'buildPath');\n restoreMethod(toPath, 'updateTransform');\n toPath.__morphT = -1;\n toPath.createPathProxy();\n toPath.dirtyShape();\n }\n toPath.animateTo({\n __morphT: 1\n }, defaults({\n during: function (p) {\n toPath.dirtyShape();\n oldDuring && oldDuring(p);\n },\n done: function () {\n restoreToPath();\n oldDone && oldDone();\n }\n }, animationOpts));\n return toPath;\n}\nfunction hilbert(x, y, minX, minY, maxX, maxY) {\n var bits = 16;\n x = (maxX === minX) ? 0 : Math.round(32767 * (x - minX) / (maxX - minX));\n y = (maxY === minY) ? 0 : Math.round(32767 * (y - minY) / (maxY - minY));\n var d = 0;\n var tmp;\n for (var s = (1 << bits) / 2; s > 0; s /= 2) {\n var rx = 0;\n var ry = 0;\n if ((x & s) > 0) {\n rx = 1;\n }\n if ((y & s) > 0) {\n ry = 1;\n }\n d += s * s * ((3 * rx) ^ ry);\n if (ry === 0) {\n if (rx === 1) {\n x = s - 1 - x;\n y = s - 1 - y;\n }\n tmp = x;\n x = y;\n y = tmp;\n }\n }\n return d;\n}\nfunction sortPaths(pathList) {\n var xMin = Infinity;\n var yMin = Infinity;\n var xMax = -Infinity;\n var yMax = -Infinity;\n var cps = map(pathList, function (path) {\n var rect = path.getBoundingRect();\n var m = path.getComputedTransform();\n var x = rect.x + rect.width / 2 + (m ? m[4] : 0);\n var y = rect.y + rect.height / 2 + (m ? m[5] : 0);\n xMin = Math.min(x, xMin);\n yMin = Math.min(y, yMin);\n xMax = Math.max(x, xMax);\n yMax = Math.max(y, yMax);\n return [x, y];\n });\n var items = map(cps, function (cp, idx) {\n return {\n cp: cp,\n z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax),\n path: pathList[idx]\n };\n });\n return items.sort(function (a, b) { return a.z - b.z; }).map(function (item) { return item.path; });\n}\n;\nfunction defaultDividePath(param) {\n return split(param.path, param.count);\n}\nfunction createEmptyReturn() {\n return {\n fromIndividuals: [],\n toIndividuals: [],\n count: 0\n };\n}\nexport function combineMorph(fromList, toPath, animationOpts) {\n var fromPathList = [];\n function addFromPath(fromList) {\n for (var i = 0; i < fromList.length; i++) {\n var from = fromList[i];\n if (isCombineMorphing(from)) {\n addFromPath(from.childrenRef());\n }\n else if (from instanceof Path) {\n fromPathList.push(from);\n }\n }\n }\n addFromPath(fromList);\n var separateCount = fromPathList.length;\n if (!separateCount) {\n return createEmptyReturn();\n }\n var dividePath = animationOpts.dividePath || defaultDividePath;\n var toSubPathList = dividePath({\n path: toPath, count: separateCount\n });\n if (toSubPathList.length !== separateCount) {\n console.error('Invalid morphing: unmatched splitted path');\n return createEmptyReturn();\n }\n fromPathList = sortPaths(fromPathList);\n toSubPathList = sortPaths(toSubPathList);\n var oldDone = animationOpts.done;\n var oldDuring = animationOpts.during;\n var individualDelay = animationOpts.individualDelay;\n var identityTransform = new Transformable();\n for (var i = 0; i < separateCount; i++) {\n var from = fromPathList[i];\n var to = toSubPathList[i];\n to.parent = toPath;\n to.copyTransform(identityTransform);\n if (!individualDelay) {\n prepareMorphPath(from, to);\n }\n }\n toPath.__isCombineMorphing = true;\n toPath.childrenRef = function () {\n return toSubPathList;\n };\n function addToSubPathListToZr(zr) {\n for (var i = 0; i < toSubPathList.length; i++) {\n toSubPathList[i].addSelfToZr(zr);\n }\n }\n saveAndModifyMethod(toPath, 'addSelfToZr', {\n after: function (zr) {\n addToSubPathListToZr(zr);\n }\n });\n saveAndModifyMethod(toPath, 'removeSelfFromZr', {\n after: function (zr) {\n for (var i = 0; i < toSubPathList.length; i++) {\n toSubPathList[i].removeSelfFromZr(zr);\n }\n }\n });\n function restoreToPath() {\n toPath.__isCombineMorphing = false;\n toPath.__morphT = -1;\n toPath.childrenRef = null;\n restoreMethod(toPath, 'addSelfToZr');\n restoreMethod(toPath, 'removeSelfFromZr');\n }\n var toLen = toSubPathList.length;\n if (individualDelay) {\n var animating_1 = toLen;\n var eachDone = function () {\n animating_1--;\n if (animating_1 === 0) {\n restoreToPath();\n oldDone && oldDone();\n }\n };\n for (var i = 0; i < toLen; i++) {\n var indivdualAnimationOpts = individualDelay ? defaults({\n delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]),\n done: eachDone\n }, animationOpts) : animationOpts;\n morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts);\n }\n }\n else {\n toPath.__morphT = 0;\n toPath.animateTo({\n __morphT: 1\n }, defaults({\n during: function (p) {\n for (var i = 0; i < toLen; i++) {\n var child = toSubPathList[i];\n child.__morphT = toPath.__morphT;\n child.dirtyShape();\n }\n oldDuring && oldDuring(p);\n },\n done: function () {\n restoreToPath();\n for (var i = 0; i < fromList.length; i++) {\n restoreMethod(fromList[i], 'updateTransform');\n }\n oldDone && oldDone();\n }\n }, animationOpts));\n }\n if (toPath.__zr) {\n addToSubPathListToZr(toPath.__zr);\n }\n return {\n fromIndividuals: fromPathList,\n toIndividuals: toSubPathList,\n count: toLen\n };\n}\nexport function separateMorph(fromPath, toPathList, animationOpts) {\n var toLen = toPathList.length;\n var fromPathList = [];\n var dividePath = animationOpts.dividePath || defaultDividePath;\n function addFromPath(fromList) {\n for (var i = 0; i < fromList.length; i++) {\n var from = fromList[i];\n if (isCombineMorphing(from)) {\n addFromPath(from.childrenRef());\n }\n else if (from instanceof Path) {\n fromPathList.push(from);\n }\n }\n }\n if (isCombineMorphing(fromPath)) {\n addFromPath(fromPath.childrenRef());\n var fromLen = fromPathList.length;\n if (fromLen < toLen) {\n var k = 0;\n for (var i = fromLen; i < toLen; i++) {\n fromPathList.push(clonePath(fromPathList[k++ % fromLen]));\n }\n }\n fromPathList.length = toLen;\n }\n else {\n fromPathList = dividePath({ path: fromPath, count: toLen });\n var fromPathTransform = fromPath.getComputedTransform();\n for (var i = 0; i < fromPathList.length; i++) {\n fromPathList[i].setLocalTransform(fromPathTransform);\n }\n if (fromPathList.length !== toLen) {\n console.error('Invalid morphing: unmatched splitted path');\n return createEmptyReturn();\n }\n }\n fromPathList = sortPaths(fromPathList);\n toPathList = sortPaths(toPathList);\n var individualDelay = animationOpts.individualDelay;\n for (var i = 0; i < toLen; i++) {\n var indivdualAnimationOpts = individualDelay ? defaults({\n delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i])\n }, animationOpts) : animationOpts;\n morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts);\n }\n return {\n fromIndividuals: fromPathList,\n toIndividuals: toPathList,\n count: toPathList.length\n };\n}\nexport { split as defaultDividePath };\n"],"names":["Browser","Env","env","detect","ua","browser","firefox","ie","edge","weChat","style","env$1","DEFAULT_FONT_SIZE","DEFAULT_FONT_FAMILY","DEFAULT_FONT","OFFSET","SCALE","defaultWidthMapStr","getTextWidthMap","mapStr","map","i","char","size","DEFAULT_TEXT_WIDTH_MAP","platformApi","_ctx","_cachedFont","text","font","canvas","res","fontSize","width","preCalcWidth","src","onload","onerror","image","BUILTIN_OBJECT","reduce","obj","val","TYPED_ARRAY","objToString","arrayProto","nativeForEach","nativeFilter","nativeSlice","nativeMap","ctorFunction","protoFunction","protoKey","idStart","guid","logError","args","_i","clone","source","result","typeStr","isPrimitive","len","Ctor","isDom","key","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","mergeAll","targetAndSources","extend","defaults","overlay","keysArr","keys","indexOf","array","value","inherits","clazz","baseClazz","clazzPrototype","F","prop","mixin","override","keyList","isArrayLike","data","each","arr","cb","context","slice","memo","filter","find","bindPolyfill","func","bind","isFunction","curry","isString","isStringSafe","isNumber","type","isTypedArray","isGradientObject","isImagePatternObject","isRegExp","eqNaN","retrieve","retrieve2","value0","value1","retrieve3","value2","normalizeCssArray","assert","condition","message","trim","str","primitiveKey","setAsPrimitive","MapPolyfill","existed","callback","isNativeMapSupported","maybeNativeMap","HashMap","isArr","thisMap","visit","createHashMap","concatArray","a","b","newArray","offset","createObject","proto","properties","StyleCtor","disableUserSelect","dom","domStyle","hasOwn","own","noop","RADIAN_TO_DEGREE","create","x","y","copy","out","v","set","add","v1","v2","scaleAndAdd","sub","lenSquare","scale","s","normalize","d","distance","dist","distanceSquare","distSquare","lerp","t","applyTransform","m","min","max","Param","Draggable","handler","e","draggingTarget","dx","dy","dropTarget","lastDropTarget","Draggable$1","Eventful","eventProcessors","event","query","_h","eventProcessor","wrap","lastIndex","lastWrap","eventName","eventType","newList","l","argLen","hItem","ctx","Eventful$1","LN2","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","subRowMask","subRowStart","sum","j","colLocalIdx","colTag","buildTransformer","dest","mA","det","vh","srcPointX","srcPointY","pk","EVENT_SAVED_PROP","_calcOut","transformLocalCoord","elFrom","elTarget","inX","inY","transformCoordWithViewport","el","inverse","isCanvasEl","saved","markers","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","marker","stl","idxLR","idxTB","transformerName","oldSrcCoords","srcCoords","destCoords","oldCoordTheSame","rect","ii","replaceReg","replaceMap","encodeHTML","c","MOUSE_EVENT_REG","firefoxNotSupportOffsetXY","clientToLocal","calculate","calculateZrXY","ex","ey","box","getNativeEvent","normalizeEvent","isTouch","touch","wheelDelta","getWheelDeltaMayPolyfill","button","rawWheelDelta","deltaX","deltaY","delta","sign","addEventListener","name","opt","removeEventListener","stop","isMiddleOrRightButtonOnMouseUpDown","GestureMgr","root","touches","trackItem","pos","eventUtil.clientToLocal","recognizers","gestureInfo","pointPair","center","tracks","trackLen","pinchEnd","pinchPre","pinchScale","pinchCenter","identity","mul","m1","m2","out0","out1","out2","out3","out4","out5","translate","rotate","rad","aa","ac","atx","ab","ad","aty","st","ct","vx","vy","invert","Point","other","scalar","input","p","p2","p0","p1","onet","Point$1","mathMin","mathMax","lt","rb","lb","rt","minTv","maxTv","BoundingRect","height","sx","sy","matrix.create","matrix.translate","matrix.scale","mtv","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","overlap","dMin","dMax","d0","d1","d2","d3","tx","ty","maxX","maxY","BoundingRect$1","SILENT","makeEventPacket","eveType","targetInfo","stopEvent","eventTool.stop","EmptyProxy","_super","__extends","_this","HoveredResult","handlerNames","tmpRect","Handler","storage","painter","proxy","painterRoot","pointerSize","util.each","isOutside","isOutsideBoundary","lastHovered","lastHoveredTarget","hovered","hoveredTarget","eventControl","eventArgs","cursorStyle","eventKey","eventPacket","layer","exclude","list","setHoverTarget","candidates","targetSizeHalf","pointerRect","rStep","thetaStep","PI2","r","theta","x1","y1","stage","gestureMgr","vec2.dist","isHover","displayable","isSilent","ignoreClip","clipPath","hostEl","hoverCheckResult","handlerInstance","Handler$1","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","n","makeAscendingRun","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","start","pivot","left","right","mid","gallopLeft","length","hint","lastOffset","maxOffset","tmp","gallopRight","TimSort","minGallop","runStart","runLength","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","k","mergeLow","mergeHigh","cursor1","cursor2","_minGallop","count1","count2","exit","customCursor","customDest","sort","remaining","ts","minRun","force","REDRAW_BIT","STYLE_CHANGED_BIT","SHAPE_CHANGED_BIT","invalidZErrorLogged","logInvalidZError","shapeCompareFunc","Storage","update","includeIgnore","displayList","roots","timsort","clipPaths","userSetClipPath","currentClipPath","parentClipPath","children","child","disp","decalEl","textGuide","textEl","idx","util.indexOf","Storage$1","requestAnimationFrame","requestAnimationFrame$1","easingFuncs","easingFuncs$1","mathPow","mathSqrt","EPSILON","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","v2Create","_v1","_v2","isAroundZero","isNotAroundZero","cubicAt","p3","cubicDerivativeAt","cubicRootAt","A","B","C","t1","disc","K","t2","discSqrt","Y1","Y2","T","ASqrt","t3","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","x0","y0","x2","y2","x3","y3","interval","prev","next","_t","v2DistSquare","cubicLength","iteration","px","py","step","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","quadraticLength","regexp","createCubicEasingFunc","cubicEasingStr","cubic","points","a_1","b_1","c_1","d_1","roots_1","Clip","opts","globalTime","deltaTime","life","elapsedTime","percent","easingFunc","schedule","remainder","easing","Clip$1","Entry","LinkedList","entry","LRU","maxSize","removed","leastUsedEntry","LRU$1","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","f","parseCssInt","parseCssFloat","cssHueToRgb","h","lerpNumber","setRgba","g","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","parse","cached","strLen","iv","op","ep","fname","params","alpha","hsla2rgba","hsla","rgba","rgba2hsla","R","G","vMin","vMax","L","H","S","deltaR","deltaG","deltaB","lift","color","level","colorArr","stringify","fastLerp","normalizedValue","colors","leftIndex","rightIndex","leftColor","rightColor","dv","fullOutput","modifyHSL","modifyAlpha","arrColor","lum","backgroundLum","mathRound","normalizeColor","opacity","transform","round3","round4","getMatrixStr","TEXT_ALIGN_TO_ANCHOR","adjustTextY","lineHeight","textBaseline","hasShadow","getShadowKey","globalScale","isImagePattern","isSVGPattern","isPattern","isLinearGradient","isRadialGradient","isGradient","getIdURL","id","getPathPrecision","getSRTTransformString","rotation","scaleX","scaleY","skewX","skewY","encodeBase64","arraySlice","interpolateNumber","interpolate1DArray","interpolate2DArray","len2","add1DArray","add2DArray","fillColorStops","val0","val1","len0","len1","shorterArr","shorterLen","last","fillArray","arrDim","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","cloneValue","ret","rgba2String","guessArrayDim","VALUE_TYPE_NUMBER","VALUE_TYPE_1D_ARRAY","VALUE_TYPE_2D_ARRAY","VALUE_TYPE_COLOR","VALUE_TYPE_LINEAR_GRADIENT","VALUE_TYPE_RADIAL_GRADIENT","VALUE_TYPE_UNKOWN","isGradientValueType","valType","isArrayValueType","tmpRgba","Track","propName","time","rawValue","keyframes","discrete","arrayDim","colorArray","color.parse","parsedGradient","colorStop","kf","maxTime","additiveTrack","kfs","kfsLen","lastKf","isDiscrete","lastValue","startValue","isAdditive","valueKey","kfsNum","isValueColor","frameIdx","lastFrame","frame","nextFrame","w","targetArr","nextVal_1","isLinearGradient_1","nextColorStop","additiveValue","Animator","loop","allowDiscreteAnimation","additiveTo","props","propNames","track","initialValue","addtiveTrackKfs","lastFinalKf","duration","doneList","animation","abortedList","tracksKeys","trackName","additiveAnimators","self","clip","stillHasAdditiveAnimator","onframeList","forwardToLast","allAborted","trackKeys","firstOrLast","finalProps","getTime","Animation","animator","notTriggerFrameAndStageUpdate","nextClip","finished","options","Animation$1","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerHandlerNames","zrUtil.map","nm","globalNativeListenerNames","wheelEventSupported","isPointerFromTouch","pointerType","setTouchTimer","scope","markTouch","normalizeGlobalEvent","instance","FakeGlobalEvent","isLocalEl","elTmp","isLocal","zrUtil.noop","localDOMHandlers","downPoint","element","zrUtil.each","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","listener","unmountDOMEventListeners","mounted","DOMHandlerScope","domTarget","HandlerDomProxy","isPointerCapturing","globalHandlerScope","HandlerProxy","dpr","devicePixelRatio","DARK_MODE_THRESHOLD","DARK_LABEL_COLOR","LIGHT_LABEL_COLOR","LIGHTER_LABEL_COLOR","mIdentity","matrix.identity","scaleTmp","tmpTransform","originTransform","abs","Transformable","parentTransform","needLocalTransform","matrix.mul","matrix.copy","globalScaleRatio","relX","relY","matrix.invert","transformNode","ancestors","shearX","parent","ox","oy","invTransform","vector.applyTransform","copyTransform","ax","ay","matrix.rotate","TRANSFORMABLE_PROPS","Transformable$1","textWidthCache","getWidth","cacheOfFont","innerGetBoundingRect","textAlign","getLineHeight","adjustTextX","getBoundingRect","textLines","uniondRect","verticalAlign","parsePercent","maxValue","calculateTextPosition","textPosition","halfHeight","textVerticalAlign","PRESERVED_NORMAL_STATE","PRIMARY_STATES_KEYS","DEFAULT_ANIMATABLE_MAP","tmpTextPosCalcRes","tmpBoundingRect","Element","forceUpdate","textConfig","innerTransformable","textStyleChanged","innerOrigin","layoutRect","textOrigin","relOriginX","relOriginY","textOffset","isInside","innerTextDefaultStyle","textFill","textStroke","autoStroke","backgroundColor","isDark","keyOrObj","toState","normalState","fromStateTransition","targetName","primaryKeys","states","noAnimation","stateName","keepCurrentStates","forceUseHoverLayer","toNormalState","hasStates","currentStates","animationCfg","state","useHoverLayer","textContent","stateObjects","notChange","stateObj","lastStateObj","mergedState","oldState","newState","forceAdd","newStateExists","enable","mergedTextConfig","transition","needsRestoreToNormal","transitionTarget","hasTransition","propNeedsTransition","componentEl","zr","previousTextContent","cfg","guideLine","inHover","animators","leftAnimators","animationProps","animateTo","elProto","createLegacyProperty","privateKey","xKey","yKey","enhanceArray","animatable","reverse","animateToShallow","finishCount","doneHappened","cfgDone","cfgAborted","doneCb","abortedCb","copyArrShallow","is2DArray","copyValue","sourceArr","isValueSame","val2","is1DArraySame","topKey","animateObj","targetKeys","delay","additive","setToFinal","animateAll","existsAnimators","animationKeys","innerKey","targetVal","keyLen","revertedSource","reversedTarget","sourceClone","Element$1","Group","nextSibling","oldChild","newChild","zrUtil.indexOf","index","old","stopped","includeChildren","tmpMat","childRect","Group$1","painterCtors","instances","delInstance","isDarkMode","colorStops","totalLum","ZRender","rendererType","zrUtil.keys","ssrMode","handerProxy","useCoarsePointer","usePointerSize","defaultPointerSize","zrUtil.retrieve2","zLevel","config","darkMode","fromInside","triggerRendered","end","stillFramesCount","eventHandler","init","zrUtil.guid","registerPainter","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","createOrUpdateImage","cbPayload","pendingWrap","isImageReady","imageOnLoad","STYLE_REG","truncateText","containerWidth","ellipsis","prepareTruncateOptions","truncateSingleLine","preparedOpts","minChar","ascCharWidth","contentWidth","ellipsisWidth","textLine","lineWidth","subLength","estimateLength","cnCharWidth","charCode","parsePlainText","overflow","padding","truncate","calculatedLineHeight","bgColorDrawn","truncateLineOverflow","lines","wrapText","contentHeight","lineCount","outerHeight","outerWidth","RichTextToken","RichTextLine","tokens","RichTextContentBlock","parseRichText","contentBlock","topWidth","topHeight","wrapInfo","matchedIndex","pushTokens","pendingList","calculatedHeight","calculatedWidth","stlPadding","truncateLine","finishLine","line","outer","token","tokenStyle","textPadding","paddingH","tokenHeight","styleTokenWidth","tokenWidthNotSpecified","textBackgroundColor","bgImg","imageHelper.findExistImage","imageHelper.isImageReady","remainTruncWidth","percentWidth","block","styleName","isEmptyStr","newLine","strLines","linesWidths","tokenPadding","tokenPaddingH","outerWidth_1","tokensLen","isAlphabeticLetter","ch","code","breakCharMap","isWordBreakChar","isBreakAll","lastAccumWidth","currentWord","currentWordWidth","accumWidth","chWidth","inWord","STYLE_MAGIC_KEY","DEFAULT_COMMON_STYLE","DEFAULT_COMMON_ANIMATION_PROPS","PRIMARY_STATES_KEYS_IN_HOVER_LAYER","Displayable","viewWidth","viewHeight","considerClipPath","considerAncestors","isDisplayableCulled","parent_1","coord","elRect","shadowSize","shadowOffsetX","shadowOffsetY","tolerance","paintRect","targetKey","notRedraw","targetStyle","sourceStyle","changedKeys","statesKeys","mergedStyle","dispProto","viewRect","Displayable$1","mathSin","mathCos","vec2.create","extremity","fromPoints","top","bottom","fromLine","xDim","yDim","fromCubic","curve.cubicExtrema","curve.cubicAt","fromQuadratic","curve.quadraticExtremum","curve.quadraticAt","fromArc","rx","ry","startAngle","endAngle","anticlockwise","vec2Min","vec2.min","vec2Max","vec2.max","diff","angle","CMD","tmpOutX","tmpOutY","min2","max2","mathAbs","PI","hasTypedArray","tmpAngles","modPI2","radian","normalizeArcAngles","angles","newStartAngle","newEndAngle","PathProxy","notSaveData","segmentIgnoreThreshold","exceedUnit","cx","cy","radius","path","appendSize","appendPathData","cmd","newData","xi","yi","isFirst","ux","uy","pathSegLen","pathTotalLen","segCount","drawPart","accumLength","displayedLength","pendingPtDist","pendingPtX","pendingPtY","psi","isEllipse","breakBuild","newProxy","containStroke","_l","_a","_b","_s","curve.cubicProjectPoint","normalizeRadian","windingLine","dir","x_","isAroundEqual","swapExtrema","windingCubic","nRoots","curve.cubicRootAt","nExtrema","y0_","y1_","unit","windingQuadratic","curve.quadraticRootAt","y_","windingArc","dTheta","tmp_1","containPath","isStroke","line.containStroke","cubic.containStroke","quadratic.containStroke","_x","arc.containStroke","contain","pathProxy","DEFAULT_PATH_STYLE","DEFAULT_PATH_ANIMATION_PROPS","pathCopyParams","Path","decalElStyle","defaultStyle","pathFill","fillLum","isDarkLabel","shapeCfg","inBatch","stroke","fill","needsUpdateRect","firstInvoke","rectStroke","lineScale","strokeContainThreshold","localPos","pathContain.containStroke","pathContain.contain","shape","targetShape","targetShapePrimaryProps","shapeKeys","mergedShape","defaultProps","Sub","pathProto","Path$1","DEFAULT_TSPAN_STYLE","TSpan","tspanProto","TSpan$1","DEFAULT_IMAGE_STYLE","DEFAULT_IMAGE_ANIMATION_PROPS","isImageLike","ZRImage","dim","imageSource","otherDim","otherDimSize","ZRImage$1","buildPath","r1","r2","r3","r4","total","round","subPixelOptimizeLine","outputShape","inputShape","subPixelOptimize","subPixelOptimizeRect","originX","originY","originWidth","originHeight","position","positiveOrNegative","doubledPosition","RectShape","subPixelOptimizeOutputShape","Rect","optimizedShape","roundRectHelper.buildPath","Rect$1","DEFAULT_RICH_TEXT_COLOR","DEFAULT_STROKE_LINE_WIDTH","DEFAULT_TEXT_ANIMATION_PROPS","ZRText","normalizeTextStyle","defaultTextStyle","sourceRich","targetRich","richNames","richName","textFont","getStyleText","needDrawBg","needDrawBackground","baseX","baseY","textX","textY","boxX","boxY","getTextXForPadding","defaultLineWidth","useDefaultFill","getFill","getStroke","fixedBoundingRect","subElStyle","setSeparateFont","xLeft","lineTop","xRight","tokenCount","remainedWidth","lineXLeft","lineXRight","parentBgColorDrawn","textWidth","textHeight","topStyle","textBorderWidth","textBorderColor","isImageBg","isPlainOrGradientBg","textBorderRadius","rectEl","imgEl","rectShape","rectStyle","imgStyle","commonStyle","hasSeparateFont","parseFontSize","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","FONT_PARTS","fontProp","normalizeStyle","ZRText$1","mathAtan2","transformPath","nPoint","M","Q","v2ApplyTransform","p_1","vMag","vRatio","u","vAngle","processArc","fa","fs","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathProxyFromString","cpx","cpy","subpathX","subpathY","prevCmd","cmdList","cmdText","cmdStr","pLen","off","ctlPtx","ctlPty","pathData","SVGPath","isPathProxy","createPathOptions","innerOpts","createFromString","extendFromString","defaultOpts","mergePath","pathEls","pathList","pathEl","pathBundle","clonePath","sourcePath","CircleShape","Circle","Circle$1","EllipseShape","Ellipse","Ellipse$1","mathACos","mathATan2","intersect","dx10","dy10","dx32","dy32","computeCornerTangents","cr","clockwise","x01","y01","x11","y11","x10","y10","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","normalizeCornerRadius","innerRadius","hasRadius","hasInnerRadius","arc","mod","icrStart","icrEnd","ocrStart","ocrEnd","ocrs","ocre","icrs","icre","ocrMax","icrMax","limitedOcrMax","limitedIcrMax","xre","yre","xirs","yirs","xrs","yrs","xire","yire","hasArc","cornerRadius","halfRd","it_1","crStart","crEnd","ct0","ct1","SectorShape","Sector","roundSectorHelper.buildPath","Sector$1","RingShape","Ring","Ring$1","smoothBezier","smooth","isLoop","constraint","cps","prevPoint","nextPoint","v2Min","v2Max","point","v2Clone","v2Sub","v2Scale","v2Distance","cp0","v2Add","cp1","closePath","controlPoints","cp2","PolygonShape","Polygon","polyHelper.buildPath","Polygon$1","PolylineShape","Polyline","Polyline$1","LineShape","Line","Line$1","BezierCurveShape","someVectorAt","isTangent","cpx2","cpy2","BezierCurve","cpx1","cpy1","vec2.normalize","BezierCurve$1","ArcShape","Arc","unitX","unitY","Arc$1","CompoundPath","paths","dirtyPath","CompoundPath$1","Gradient","Gradient$1","LinearGradient","globalCoord","LinearGradient$1","RadialGradient","RadialGradient$1","extent","extent2","OrientedBoundingRect","corners","axes","overlapped","noMtv","axis","dist0","dist1","origin","proj","proj_1","OrientedBoundingRect$1","IncrementalDisplayable","notPersistent","displayables","Displayble","IncrementalDisplayable$1","wmUniqueIndex","supportDefineProperty","WeakMap","WeakMap$1","isSafeNum","num","createLinearGradient","canvasGradient","createRadialGradient","getCanvasGradient","isClipPathChanged","prevClipPaths","parseInt10","getSize","whIdx","wh","cwh","plt","prb","normalizeLineDash","lineType","getLineDash","lineDash","lineDashOffset","lineScale_1","rawVal","pathProxyForDraw","styleHasStroke","isValidStrokeFillStyle","strokeOrFill","styleHasFill","doFillPath","originalGlobalAlpha","doStrokePath","createCanvasPattern","pattern","canvasPattern","matrix","brushPath","hasStroke","hasFill","strokePercent","strokePart","firstDraw","dirtyFlag","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","fillGradient","strokeGradient","fillPattern","strokePattern","needsRebuild","brushImage","aspect","sWidth","sHeight","brushText","SHADOW_NUMBER_PROPS","STROKE_PROPS","bindCommonProps","prevStyle","forceSetAll","styleChanged","flushPathDrawn","bindPathAndTextCommonStyle","prevEl","getStyle","newLineWidth","bindImageStyle","setContextTransform","updateClipStatus","allClipped","isTransformChanged","m0","DRAW_TYPE_PATH","DRAW_TYPE_IMAGE","DRAW_TYPE_TEXT","DRAW_TYPE_INCREMENTAL","canPathBatch","brushSingle","brush","isLast","prevElClipPaths","forceSetTransform","forceSetStyle","canBatchPath","brushIncremental","temporalDisplayables","innerScope","i_1","len_1","degree","SVGPathRebuilder","precision","dThetaPositive","isCircle","unifiedTheta","large","xRot","dTheta_1","vals","SVGPathRebuilder$1","NONE","pathHasFill","pathHasStroke","strokeProps","svgStrokeProps","mapStyleToAttrs","updateAttr","fillOpacity","strokeScale","strokeWidth","strokeOpacity","strokeFirst","SVGNS","XLINKNS","XMLNS","XML_NAMESPACE","createElement","createVNode","tag","attrs","createElementOpen","attrsStr","part","createElementClose","vNodeToString","convertElToString","getCssString","selectorNodes","animationNodes","bracketBegin","bracketEnd","selectors","className","attrName","animations","animationName","createBrushScope","zrId","createSVGVNode","useViewBox","EASING_MAP","transformOriginKey","buildPathString","kfShape","svgPathBuilder","setTransformOrigin","ANIMATE_STYLE_MAP","addAnimation","cssAnim","createCompoundPathCSSAnimation","composedAnim","cssAnimationCfg","cssAnimationName","subScope","createCSSAnimation","cssAnims","cssNodes","animNames","lastAnim","getEasingFunc","onlyShape","cssAnimations","groupAnimators","cfgArr","createSingleCSSAnimation","groupAnimator","transformKfs","shapeKfs","finalKfs","animationTimingFunctionAttrName","saveAnimatorTrackToCssKfs","cssKfs","toCssAttrName","kfEasing","timingFunction","canAnimateShape","newLen","percents","allTransformOriginSame","transformOrigin","isCanvasLike","setStyleAttrs","isFillStroke","setGradient","setPattern","setShadow","noRotateScale","noTranslate","setTransform","compress","convertPolyShape","strArr","validatePolyShape","createAttrsConvert","desc","normalizedDesc","item","builtinShapesDef","hasShapeAnimation","brushSVGPath","builtinShpDef","needsAnimate","svgElType","needBuildPath","pathVersion","elExt","brushSVGImage","dw","dh","brushSVGTSpan","separatedFontStr","fontStyle","fontFamily","fontWeight","shadowKey","shadowCache","shadowId","offsetX","offsetY","blur_1","stdDx","stdDy","stdDeviation","gradientTag","gradientAttrs","stopColor","stopsAttrs","gradientVNode","gradientKey","gradientCache","gradientId","boundingRect","patternAttrs","repeat","noRepeat","repeatX","repeatY","imageWidth_1","imageHeight_1","imageSrc","patternImage","errMsg","setSizeToVNode_1","vNode","img","svgEl","createdImage","patternVNode","patternWidth","patternHeight","patternTransform","patternKey","patternCache","patternId","setClipPath","clipPathCache","defs","clipPathId","clipPathAttrs","createTextNode","insertBefore","parentNode","newNode","referenceNode","removeChild","node","appendChild","setTextContent","colonChar","xChar","emptyNode","isUndef","isDef","createKeyToOldIdx","beginIdx","endIdx","sameVnode","vnode1","vnode2","isSameKey","isSameTag","createElm","vnode","elm","updateAttrs","api.appendChild","api.createTextNode","addVnodes","parentElm","before","vnodes","startIdx","api.insertBefore","removeVnodes","api.parentNode","api.removeChild","oldVnode","oldAttrs","cur","updateChildren","oldCh","newCh","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","oldKeyToIdx","idxInOld","elmToMove","patchVnode","api.nextSibling","api.setTextContent","patch","parent_2","svgId","SVGPainter","createMethodNotSupport","viewport","svgDom","viewportRoot","bgVNode","createBackgroundVNode","mainVNode","animationCssStr","styleNode","listLen","clipPathsGroupsStack","clipPathsGroupsStackDepth","currentClipPathGroup","clipGroupNodeIdx","prevLen","lca","i_2","groupAttrs","viewportStyle","bgEl","base64","prefix","method","SVGPainter$1","createDom","newDom","newDomStyle","Layer","util.isObject","util.disableUserSelect","prevList","mergedRepaintRects","maxRepaintRectCount","full","pendingRect","addRectToMergePool","isMerged","minDeltaArea","bestRectToMergeIdx","mergedRect","pendingRect_1","aArea","bArea","pendingArea","deltaArea","shouldPaint","prevRect","curRect","hasIntersections","domBack","clearAll","clearColor","repaintRects","haveMotionBLur","lastFrameAlpha","doClear","clearColorGradientOrPattern","util.isGradientObject","shouldCache","util.isImagePatternObject","Layer$1","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","isLayerValid","createRoot","domRoot","CanvasPainter","singleCanvas","util.extend","rootStyle","zlevelList","layers","rootCanvas","mainLayer","paintAll","z","hoverLayer","redrawId","needsRefreshHover","self_1","layerList","useDirtyRect","zi","zlevel","_loop_1","this_1","useTimer","startTime","firstEl","repaint","repaintRect","dTime","currentLayer","virtual","util.merge","layersMap","prevLayer","prevDom","updatePrevLayer","incrementalLayerCount","prevZlevel","util.logError","layerConfig","_zlevel","imageLayer","width_1","height_1","CanvasPainter$1","parseXML","svg","parser","svgNode","nodeParsers","INHERITABLE_STYLE_ATTRIBUTES_MAP","INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS","SELF_STYLE_ATTRIBUTES_MAP","SELF_STYLE_ATTRIBUTES_MAP_KEYS","SVGParser","xml","named","viewBox","parseAttributes","applyDefs","viewBoxRect","viewBoxTransform","viewBoxArr","splitNumberSequence","makeViewBoxTransform","elRoot","xmlNode","parentGroup","namedFrom","isInDefs","isInText","nodeName","namedFromForSub","parser_1","nameAttr","newNamed","paintServerParsers","def","inheritStyle","applyTextAlignment","textStyle","circle","ellipse","pointsStr","pointsArr","parsePoints","polygon","polyline","gradient","parsePaintServerUnit","parseGradientColorStops","gradientUnits","offsetStr","styleVals","parseInlineStyle","pointsString","defsUsePending","onlyInlineStyle","isTextGroup","inheritedStyle","selfStyle","parseTransformAttribute","parseAttributeStyle","getFillStrokeStyle","parentSelfStyle","zrTextBaseline","parentInheritedStyle","zrTextAlign","urlRegex","urlMatch","url","rawStr","transformRegex","DEGREE_TO_ANGLE","transformOps_1","mt","valueArr","styleRegex","inheritableStyleResult","selfStyleResult","styleRegResult","svgStlAttr","zrInheritableStlAttr","zrSelfStlAttr","svgAttrName","attrValue","parseSVG","aroundEqual","pathToBezierCurves","bezierArrayGroups","currentSubpath","createNewSubpath","addLine","addArc","c1","s1","c2","s2","x4","y4","hx","hy","nextAngle","adpativeBezier","PIXEL_DISTANCE","PIXEL_DISTANCE_SQR","dx2","dy2","cp1LenSqr","cp2LenSqr","projLen1","projLen2","d1Sqr","d2Sqr","tmpSegX","tmpSegY","pathToPolygons","polygons","beziers","getDividingGrids","dimSize","rowDim","count","rowSize","columnSize","ratio","rowCount","columnCount","grids","currentCount","remained","divideSector","sectorShape","outShapes","r0","arcLen","isAngleRow","row","column","newShape","divideRect","isHorizontalRow","rowSizeDim","columnSizeDim","columnDim","crossProduct2d","lineLineIntersect","a1x","a1y","a2x","a2y","b1x","b1y","b2x","b2y","mx","my","nx","ny","nmCrossProduct","b1a1x","b1a1y","projPtOnLine","pt","lineA","lineB","dir2","addToPoly","poly","splitPolygonByLine","intersections","intersectionPt","splitPt0","splitPt1","splitPt0Arr","splitPt1Arr","newPolyA","newPolyB","binaryDividePolygon","polygonShape","pt0","pt1","binaryDivideRecursive","copyPathProps","polygonConvert","split","OutShapeCtor","polygonCount","totalArea_1","items","area","selfCount","subPath","alignSubpath","subpath1","subpath2","shorterPath","shorterBezierCount","eachCurveSubDivCount","newSubpath","actualSubDivCount","createSubpath","lastSubpathSubpath","otherSubpath","lastX","lastY","alignBezierCurves","array1","array2","lastSubpath1","lastSubpath2","newArray1","newArray2","newSubpath1","newSubpath2","centroid","signedArea","findBestRingOffset","fromSubBeziers","toSubBeziers","fromCp","toCp","bezierCount","bestScore","bestOffset","cursorOffset","score","newArr","findBestMorphingRotation","fromArr","toArr","searchAngleIteration","searchAngleRange","fromNeedsReverse","fromSubpathBezier","toSubpathBezier","newFromSubpathBezier","newToSubpathBezier","bestAngle","tmpArr","sa","ca","newX1","newY1","isCombineMorphing","SAVED_METHOD_PREFIX","saveAndModifyMethod","methodName","modifiers","savedMethodName","originalMethod","replace","after","restoreMethod","applyTransformOnBeziers","bezierCurves","mm","subBeziers","prepareMorphPath","fromPath","toPath","fromPathProxy","toPathProxy","fromBezierCurves","toBezierCurves","fromPathTransform","toPathTransform","updateIdentityTransform","morphingData","newCp","from","to","x0_1","y0_1","morphPath","animationOpts","oldDone","oldDuring","restoreToPath","hilbert","minX","minY","bits","sortPaths","xMin","yMin","xMax","yMax","cp","defaultDividePath","param","createEmptyReturn","combineMorph","fromList","fromPathList","addFromPath","separateCount","dividePath","toSubPathList","individualDelay","identityTransform","addToSubPathListToZr","toLen","animating_1","eachDone","indivdualAnimationOpts","separateMorph","toPathList","fromLen"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92]}