1 |
- {"version":3,"file":"js/chunk-vendors-d41ecd1a.d5baa5c2.js","mappings":"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","sources":["webpack://app/./node_modules/zrender/lib/core/bbox.js","webpack://app/./node_modules/zrender/lib/core/curve.js","webpack://app/./node_modules/zrender/lib/core/dom.js","webpack://app/./node_modules/zrender/lib/core/env.js","webpack://app/./node_modules/zrender/lib/core/event.js","webpack://app/./node_modules/zrender/lib/core/fourPointsTransform.js","webpack://app/./node_modules/zrender/lib/core/guid.js","webpack://app/./node_modules/zrender/lib/core/log.js","webpack://app/./node_modules/zrender/lib/core/matrix.js","webpack://app/./node_modules/zrender/lib/core/timsort.js","webpack://app/./node_modules/zrender/lib/core/util.js"],"sourcesContent":["var vec2 = require(\"./vector\");\n\nvar curve = require(\"./curve\");\n\n/**\n * @author Yi Shen(https://github.com/pissang)\n */\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();\n/**\n * 从顶点数组中计算出最小包围盒,写入`min`和`max`中\n * @module zrender/core/bbox\n * @param {Array<Object>} points 顶点数组\n * @param {number} min\n * @param {number} max\n */\n\nfunction fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\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 var i;\n\n for (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\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\n/**\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction 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}\n\nvar xDim = [];\nvar yDim = [];\n/**\n * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var i;\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\n for (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 n = cubicExtrema(y0, y1, y2, y3, yDim);\n\n for (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\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}\n/**\n * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt; // Find extremities, where derivative in x dim or y dim is zero\n\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}\n/**\n * 从圆弧中计算出最小包围盒,写入`min`和`max`中\n * @method\n * @memberOf module:zrender/core/bbox\n * @param {number} x\n * @param {number} y\n * @param {number} rx\n * @param {number} ry\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {number} anticlockwise\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction 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\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n // Is a circle\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\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); // Thresh to [0, Math.PI * 2]\n\n startAngle = startAngle % PI2;\n\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n\n endAngle = endAngle % PI2;\n\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n } else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n } // var number = 0;\n // var step = (anticlockwise ? -Math.PI : Math.PI) / 2;\n\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\nexports.fromPoints = fromPoints;\nexports.fromLine = fromLine;\nexports.fromCubic = fromCubic;\nexports.fromQuadratic = fromQuadratic;\nexports.fromArc = fromArc;","var _vector = require(\"./vector\");\n\nvar v2Create = _vector.create;\nvar v2DistSquare = _vector.distSquare;\n\n/**\n * 曲线辅助模块\n * @module zrender/core/curve\n * @author pissang(https://www.github.com/pissang)\n */\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; // 临时变量\n\nvar _v0 = v2Create();\n\nvar _v1 = v2Create();\n\nvar _v2 = v2Create();\n\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * 计算三次贝塞尔值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);\n}\n/**\n * 计算三次贝塞尔导数值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);\n}\n/**\n * 计算三次贝塞尔方程根,使用盛金公式\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} val\n * @param {Array.<number>} roots\n * @return {number} 有效根数目\n */\n\n\nfunction cubicRootAt(p0, p1, p2, p3, val, roots) {\n // Evaluate roots of cubic functions\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\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n } else {\n var t1 = -c / b; //t1, t2, t3, b is not zero\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = B * B - 4 * A * C;\n\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K; // t1, a is not zero\n\n var t2 = -K / 2; // t2, t3\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\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\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n } else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n } else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\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\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算三次贝塞尔方程极限值的位置\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {Array.<number>} extrema\n * @return {number} 有效数目\n */\n\n\nfunction 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\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\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\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 细分三次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {Array.<number>} out\n */\n\n\nfunction 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; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123; // Seg1\n\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\n/**\n * 投射点到三次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} x\n * @param {number} y\n * @param {Array.<number>} [out] 投射点\n * @return {number}\n */\n\n\nfunction cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\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; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\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\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n prev = t - interval;\n next = t + interval; // t - interval\n\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n/**\n * 计算二次方贝塞尔值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\n/**\n * 计算二次方贝塞尔导数值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\n/**\n * 计算二次方贝塞尔方程根\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.<number>} roots\n * @return {number} 有效根数目\n */\n\n\nfunction 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\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\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\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算二次贝塞尔方程极限值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @return {number}\n */\n\n\nfunction quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n\n if (divider === 0) {\n // p1 is center of p0 and p2\n return 0.5;\n } else {\n return (p0 - p1) / divider;\n }\n}\n/**\n * 细分二次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.<number>} out\n */\n\n\nfunction 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; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012; // Seg1\n\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\n/**\n * 投射点到二次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x\n * @param {number} y\n * @param {Array.<number>} out 投射点\n * @return {number}\n */\n\n\nfunction quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\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\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n var prev = t - interval;\n var next = t + interval; // t - interval\n\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n\nexports.cubicAt = cubicAt;\nexports.cubicDerivativeAt = cubicDerivativeAt;\nexports.cubicRootAt = cubicRootAt;\nexports.cubicExtrema = cubicExtrema;\nexports.cubicSubdivide = cubicSubdivide;\nexports.cubicProjectPoint = cubicProjectPoint;\nexports.quadraticAt = quadraticAt;\nexports.quadraticDerivativeAt = quadraticDerivativeAt;\nexports.quadraticRootAt = quadraticRootAt;\nexports.quadraticExtremum = quadraticExtremum;\nexports.quadraticSubdivide = quadraticSubdivide;\nexports.quadraticProjectPoint = quadraticProjectPoint;","var env = require(\"./env\");\n\nvar _fourPointsTransform = require(\"./fourPointsTransform\");\n\nvar buildTransformer = _fourPointsTransform.buildTransformer;\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\n/**\n * Transform \"local coord\" from `elFrom` to `elTarget`.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support when CSS transform is used.\n *\n * Having the `out` (that is, `[outX, outY]`), we can create an DOM element\n * and set the CSS style as \"left: outX; top: outY;\" and append it to `elTarge`\n * to locate the element.\n *\n * For example, this code below positions a child of `document.body` on the event\n * point, no matter whether `body` has `margin`/`paddin`/`transfrom`/... :\n * ```js\n * transformLocalCoord(out, container, document.body, event.offsetX, event.offsetY);\n * if (!eqNaN(out[0])) {\n * // Then locate the tip element on the event point.\n * var tipEl = document.createElement('div');\n * tipEl.style.cssText = 'position: absolute; left:' + out[0] + ';top:' + out[1] + ';';\n * document.body.appendChild(tipEl);\n * }\n * ```\n *\n * Notice: In some env this method is not supported. If called, `out` will be `[NaN, NaN]`.\n *\n * @param {Array.<number>} out [inX: number, inY: number] The output..\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} elFrom The `[inX, inY]` is based on elFrom.\n * @param {HTMLElement} elTarget The `out` is based on elTarget.\n * @param {number} inX\n * @param {number} inY\n * @return {boolean} Whether transform successfully.\n */\n\nfunction transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\n/**\n * Transform between a \"viewport coord\" and a \"local coord\".\n * \"viewport coord\": the coord based on the left-top corner of the viewport\n * of the browser.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n * the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support the case when CSS transform is used on el.\n *\n * @param {Array.<number>} out [inX: number, inY: number] The output. If `inverse: false`,\n * it represents \"local coord\", otherwise \"vireport coord\".\n * If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} el The \"local coord\" is based on the `el`, see comment above.\n * @param {number} inX If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {number} inY If `inverse: false`,\n * it represents \"vireport coord\", otherwise \"local coord\".\n * @param {boolean} [inverse=false]\n * `true`: from \"viewport coord\" to \"local coord\".\n * `false`: from \"local coord\" to \"viewport coord\".\n * @return {boolean} Whether transform successfully.\n */\n\n\nfunction 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\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n\n return false;\n}\n\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n\n if (markers) {\n return markers;\n }\n\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n\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 = ['position: absolute', 'visibility: hidden', 'padding: 0', 'margin: 0', 'border-width: 0', 'user-select: none', 'width:0', 'height:0', // 'width: 5px',\n // 'height: 5px',\n propLR[idxLR] + ':0', propTB[idxTB] + ':0', propLR[1 - idxLR] + ':auto', propTB[1 - idxTB] + ':auto', ''].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n\n return markers;\n}\n\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var oldCoordTheSame = true;\n var srcCoords = [];\n var destCoords = [];\n\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 } // Cache to avoid time consuming of `buildTransformer`.\n\n\n return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords));\n}\n\nfunction isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\n\nexports.transformLocalCoord = transformLocalCoord;\nexports.transformCoordWithViewport = transformCoordWithViewport;\nexports.isCanvasEl = isCanvasEl;","/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\n\n/* global wx */\nvar env = {};\n\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n // In Weixin Application\n env = {\n browser: {},\n os: {},\n node: false,\n wxa: true,\n // Weixin Application\n canvasSupported: true,\n svgSupported: false,\n touchEventsSupported: true,\n domSupported: false\n };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n // In worker\n env = {\n browser: {},\n os: {},\n node: false,\n worker: true,\n canvasSupported: true,\n domSupported: false\n };\n} else if (typeof navigator === 'undefined') {\n // In node\n env = {\n browser: {},\n os: {},\n node: true,\n worker: false,\n // Assume canvas is supported\n canvasSupported: true,\n svgSupported: true,\n domSupported: false\n };\n} else {\n env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n var os = {};\n var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n // var touchpad = webos && ua.match(/TouchPad/);\n // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n // var silk = ua.match(/Silk\\/([\\d._]+)/);\n // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n // var playbook = ua.match(/PlayBook/);\n // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n // - discern (more) between multiple browsers on android\n // - decide if kindle fire in silk mode is android or not\n // - Firefox on Android doesn't specify the Android version\n // - possibly devide in os, device and browser hashes\n // if (browser.webkit = !!webkit) browser.version = webkit[1];\n // if (android) os.android = true, os.version = android[2];\n // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n // if (webos) os.webos = true, os.version = webos[2];\n // if (touchpad) os.touchpad = true;\n // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n // if (bb10) os.bb10 = true, os.version = bb10[2];\n // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n // if (playbook) browser.playbook = true;\n // if (kindle) os.kindle = true, os.version = kindle[1];\n // if (silk) browser.silk = true, browser.version = silk[1];\n // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n // if (webview) browser.webview = true;\n\n\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n // not be set on win phone. So we do not consider Win Phone.\n\n\n if (weChat) {\n browser.weChat = true;\n } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n // (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n // os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n // (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n // (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n return {\n browser: browser,\n os: os,\n node: false,\n // 原生canvas支持,改极端点了\n // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n canvasSupported: !!document.createElement('canvas').getContext,\n svgSupported: typeof SVGRect !== 'undefined',\n // works on most browsers\n // IE10/11 does not support touch event, and MS Edge supports them but not by\n // default, so we dont check navigator.maxTouchPoints for them here.\n touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n // <http://caniuse.com/#search=pointer%20event>.\n pointerEventsSupported: // (1) Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n // events currently. So we dont use that on other browsers unless tested sufficiently.\n // For example, in iOS 13 Mobile Chromium 78, if the touching behavior starts page\n // scroll, the `pointermove` event can not be fired any more. That will break some\n // features like \"pan horizontally to move something and pan vertically to page scroll\".\n // The horizontal pan probably be interrupted by the casually triggered page scroll.\n // (2) Although IE 10 supports pointer event, it use old style and is different from the\n // standard. So we exclude that. (IE 10 is hardly used on touch device)\n 'onpointerdown' in window && (browser.edge || browser.ie && browser.version >= 11),\n // passiveSupported: detectPassiveSupport()\n domSupported: typeof document !== 'undefined'\n };\n} // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n// function detectPassiveSupport() {\n// // Test via a getter in the options object to see if the passive property is accessed\n// var supportsPassive = false;\n// try {\n// var opts = Object.defineProperty({}, 'passive', {\n// get: function() {\n// supportsPassive = true;\n// }\n// });\n// window.addEventListener('testPassive', function() {}, opts);\n// } catch (e) {\n// }\n// return supportsPassive;\n// }\n\n\nmodule.exports = _default;","var Eventful = require(\"../mixin/Eventful\");\n\nexports.Dispatcher = Eventful;\n\nvar env = require(\"./env\");\n\nvar _dom = require(\"./dom\");\n\nvar isCanvasEl = _dom.isCanvasEl;\nvar transformCoordWithViewport = _dom.transformCoordWithViewport;\n\n/**\n * Utilities for mouse or touch events.\n */\nvar isDomLevel2 = typeof window !== 'undefined' && !!window.addEventListener;\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\n/**\n * Get the `zrX` and `zrY`, which are relative to the top-left of\n * the input `el`.\n * CSS transform (2D & 3D) is supported.\n *\n * The strategy to fetch the coords:\n * + If `calculate` is not set as `true`, users of this method should\n * ensure that `el` is the same or the same size & location as `e.target`.\n * Otherwise the result coords are probably not expected. Because we\n * firstly try to get coords from e.offsetX/e.offsetY.\n * + If `calculate` is set as `true`, the input `el` can be any element\n * and we force to calculate the coords based on `el`.\n * + The input `el` should be positionable (not position:static).\n *\n * The force `calculate` can be used in case like:\n * When mousemove event triggered on ec tooltip, `e.target` is not `el`(zr painter.dom).\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} e Mouse event or touch event.\n * @param {Object} out Get `out.zrX` and `out.zrY` as the result.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n */\n\nfunction clientToLocal(el, e, out, calculate) {\n out = out || {}; // According to the W3C Working Draft, offsetX and offsetY should be relative\n // to the padding edge of the target element. The only browser using this convention\n // is IE. Webkit uses the border edge, Opera uses the content edge, and FireFox does\n // not support the properties.\n // (see http://www.jacklmoore.com/notes/mouse-position/)\n // In zr painter.dom, padding edge equals to border edge.\n\n if (calculate || !env.canvasSupported) {\n calculateZrXY(el, e, out);\n } // Caution: In FireFox, layerX/layerY Mouse position relative to the closest positioned\n // ancestor element, so we should make sure el is positioned (e.g., not position:static).\n // BTW1, Webkit don't return the same results as FF in non-simple cases (like add\n // zoom-factor, overflow / opacity layers, transforms ...)\n // BTW2, (ev.offsetY || ev.pageY - $(ev.target).offset().top) is not correct in preserve-3d.\n // <https://bugs.jquery.com/ticket/8523#comment:14>\n // BTW3, In ff, offsetX/offsetY is always 0.\n else if (env.browser.firefox && e.layerX != null && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n } // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n } // For some other device, e.g., IOS safari.\n else {\n calculateZrXY(el, e, out);\n }\n\n return out;\n}\n\nfunction calculateZrXY(el, e, out) {\n // BlackBerry 5, iOS 3 (original iPhone) don't have getBoundingRect.\n if (env.domSupported && el.getBoundingClientRect) {\n var ex = e.clientX;\n var ey = e.clientY;\n\n if (isCanvasEl(el)) {\n // Original approach, which do not support CSS transform.\n // marker can not be locationed in a canvas container\n // (getBoundingClientRect is always 0). We do not support\n // that input a pre-created canvas to zr while using css\n // transform in iOS.\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\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\n out.zrX = out.zrY = 0;\n}\n/**\n * Find native event compat for legency IE.\n * Should be called at the begining of a native event listener.\n *\n * @param {Event} [e] Mouse event or touch event or pointer event.\n * For lagency IE, we use `window.event` is used.\n * @return {Event} The native event.\n */\n\n\nfunction getNativeEvent(e) {\n return e || window.event;\n}\n/**\n * Normalize the coordinates of the input event.\n *\n * Get the `e.zrX` and `e.zrY`, which are relative to the top-left of\n * the input `el`.\n * Get `e.zrDelta` if using mouse wheel.\n * Get `e.which`, see the comment inside this function.\n *\n * Do not calculate repeatly if `zrX` and `zrY` already exist.\n *\n * Notice: see comments in `clientToLocal`. check the relationship\n * between the result coords and the parameters `el` and `calculate`.\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} [e] See `getNativeEvent`.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n * @return {UIEvent} The normalized native UIEvent.\n */\n\n\nfunction normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n\n if (e.zrX != null) {\n return e;\n }\n\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;\n } else {\n var touch = eventType !== 'touchend' ? e.targetTouches[0] : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n } // Add which for click: 1 === left; 2 === middle; 3 === right; otherwise: 0;\n // See jQuery: https://github.com/jquery/jquery/blob/master/src/event.js\n // If e.which has been defined, it may be readonly,\n // see: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\n\n\n var button = e.button;\n\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 } // [Caution]: `e.which` from browser is not always reliable. For example,\n // when press left button and `mousemove (pointermove)` in Edge, the `e.which`\n // is 65536 and the `e.button` is -1. But the `mouseup (pointerup)` and\n // `mousedown (pointerdown)` is the same as Chrome does.\n\n\n return e;\n}\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Function} handler\n * @param {Object|boolean} opt If boolean, means `opt.capture`\n * @param {boolean} [opt.capture=false]\n * @param {boolean} [opt.passive=false]\n */\n\n\nfunction addEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n // Reproduct the console warning:\n // [Violation] Added non-passive event listener to a scroll-blocking <some> event.\n // Consider marking event handler as 'passive' to make the page more responsive.\n // Just set console log level: verbose in chrome dev tool.\n // then the warning log will be printed when addEventListener called.\n // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // We have not yet found a neat way to using passive. Because in zrender the dom event\n // listener delegate all of the upper events of element. Some of those events need\n // to prevent default. For example, the feature `preventDefaultMouseMove` of echarts.\n // Before passive can be adopted, these issues should be considered:\n // (1) Whether and how a zrender user specifies an event listener passive. And by default,\n // passive or not.\n // (2) How to tread that some zrender event listener is passive, and some is not. If\n // we use other way but not preventDefault of mousewheel and touchmove, browser\n // compatibility should be handled.\n // var opts = (env.passiveSupported && name === 'mousewheel')\n // ? {passive: true}\n // // By default, the third param of el.addEventListener is `capture: false`.\n // : void 0;\n // el.addEventListener(name, handler /* , opts */);\n el.addEventListener(name, handler, opt);\n } else {\n // For simplicity, do not implement `setCapture` for IE9-.\n el.attachEvent('on' + name, handler);\n }\n}\n/**\n * Parameter are the same as `addEventListener`.\n *\n * Notice that if a listener is registered twice, one with capture and one without,\n * remove each one separately. Removal of a capturing listener does not affect a\n * non-capturing version of the same listener, and vice versa.\n */\n\n\nfunction removeEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n el.removeEventListener(name, handler, opt);\n } else {\n el.detachEvent('on' + name, handler);\n }\n}\n/**\n * preventDefault and stopPropagation.\n * Notice: do not use this method in zrender. It can only be\n * used by upper applications if necessary.\n *\n * @param {Event} e A mouse or touch event.\n */\n\n\nvar stop = isDomLevel2 ? function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n} : function (e) {\n e.returnValue = false;\n e.cancelBubble = true;\n};\n/**\n * This method only works for mouseup and mousedown. The functionality is restricted\n * for fault tolerance, See the `e.which` compatibility above.\n *\n * @param {MouseEvent} e\n * @return {boolean}\n */\n\nfunction isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\n/**\n * To be removed.\n * @deprecated\n */\n\n\nfunction notLeftMouse(e) {\n // If e.which is undefined, considered as left mouse event.\n return e.which > 1;\n} // For backward compatibility\n\n\nexports.clientToLocal = clientToLocal;\nexports.getNativeEvent = getNativeEvent;\nexports.normalizeEvent = normalizeEvent;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.stop = stop;\nexports.isMiddleOrRightButtonOnMouseUpDown = isMiddleOrRightButtonOnMouseUpDown;\nexports.notLeftMouse = notLeftMouse;","/**\n * The algoritm is learnt from\n * https://franklinta.com/2014/09/08/computing-css-matrix3d-transforms/\n * And we made some optimization for matrix inversion.\n * Other similar approaches:\n * \"cv::getPerspectiveTransform\", \"Direct Linear Transformation\".\n */\nvar LN2 = Math.log(2);\n\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n var cacheKey = rowMask + '-' + colMask;\n var fullRank = rows.length;\n\n if (detCache.hasOwnProperty(cacheKey)) {\n return detCache[cacheKey];\n }\n\n if (rank === 1) {\n // In this case the colMask must be like: `11101111`. We can find the place of `0`.\n var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2);\n return rows[rowStart][colStart];\n }\n\n var subRowMask = rowMask | 1 << rowStart;\n var subRowStart = rowStart + 1;\n\n while (rowMask & 1 << subRowStart) {\n subRowStart++;\n }\n\n var sum = 0;\n\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n var colTag = 1 << j;\n\n if (!(colTag & colMask)) {\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] // det(subMatrix(0, j))\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n colLocalIdx++;\n }\n }\n\n detCache[cacheKey] = sum;\n return sum;\n}\n/**\n * Usage:\n * ```js\n * var transformer = buildTransformer(\n * [10, 44, 100, 44, 100, 300, 10, 300],\n * [50, 54, 130, 14, 140, 330, 14, 220]\n * );\n * var out = [];\n * transformer && transformer([11, 33], out);\n * ```\n *\n * Notice: `buildTransformer` may take more than 10ms in some Android device.\n *\n * @param {Array.<number>} src source four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @param {Array.<number>} dest destination four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @return {Function} transformer If fail, return null/undefined.\n */\n\n\nfunction buildTransformer(src, dest) {\n var mA = [[src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]];\n var detCache = {};\n var det = determinant(mA, 8, 0, 0, 0, detCache);\n\n if (det === 0) {\n // can not make transformer when and only when\n // any three of the markers are collinear.\n return;\n } // `invert(mA) * dest`, that is, `adj(mA) / det * dest`.\n\n\n var vh = [];\n\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) * // det(subMatrix(i, j))\n determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i];\n }\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\nexports.buildTransformer = buildTransformer;","/**\n * zrender: 生成唯一id\n *\n * @author errorrik (errorrik@gmail.com)\n */\nvar idStart = 0x0907;\n\nfunction _default() {\n return idStart++;\n}\n\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar debugMode = _config.debugMode;\n\nvar logError = function () {};\n\nif (debugMode === 1) {\n logError = console.error;\n}\n\nvar _default = logError;\nmodule.exports = _default;","/**\n * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.<number>}\n */\n\nfunction create() {\n var out = new ArrayCtor(6);\n identity(out);\n return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.<number>} out\n */\n\n\nfunction 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}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} m\n */\n\n\nfunction 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}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} m1\n * @param {Float32Array|Array.<number>} m2\n */\n\n\nfunction mul(out, m1, m2) {\n // Consider matrix.mul(m, m2, m);\n // where out is the same as m2.\n // So use temp variable to escape error.\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}\n/**\n * 平移变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {Float32Array|Array.<number>} v\n */\n\n\nfunction 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}\n/**\n * 旋转变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {number} rad\n */\n\n\nfunction 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}\n/**\n * 缩放变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {Float32Array|Array.<number>} v\n */\n\n\nfunction 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}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n */\n\n\nfunction 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\n if (!det) {\n return null;\n }\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}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.<number>} a\n */\n\n\nfunction clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;","// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n var r = 0;\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n\n return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n\n if (runHi === hi) {\n return 1;\n }\n\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n\n return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n hi--;\n\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n\n while (left < right) {\n mid = left + right >>> 1;\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n\n var n = start - left;\n\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n\n case 2:\n array[left + 2] = array[left + 1];\n\n case 1:\n array[left + 1] = array[left];\n break;\n\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n\n }\n\n array[left] = pivot;\n }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n\n return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n\n return offset;\n}\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\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n } else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n\n mergeAt(n);\n }\n }\n\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n\n mergeAt(n);\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\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n\n if (length1 === 0) {\n return;\n }\n\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n if (length2 === 0) {\n return;\n }\n\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n } else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n return;\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n return;\n }\n\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = tmp[cursor1++];\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\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\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n\n return;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n return;\n }\n\n var _minGallop = minGallop;\n\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = tmp[cursor2--];\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n\n if (minGallop < 1) {\n minGallop = 1;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n } else {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n\n this.mergeRuns = mergeRuns;\n this.forceMergeRuns = forceMergeRuns;\n this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n\n if (!hi) {\n hi = array.length;\n }\n\n var remaining = hi - lo;\n\n if (remaining < 2) {\n return;\n }\n\n var runLength = 0;\n\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\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n\n if (runLength < minRun) {\n var force = remaining;\n\n if (force > minRun) {\n force = minRun;\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n\n ts.forceMergeRuns();\n}\n\nmodule.exports = sort;","/**\n * @module zrender/core/util\n */\n// 用于处理merge时无法遍历Date等对象的问题\nvar BUILTIN_OBJECT = {\n '[object Function]': 1,\n '[object RegExp]': 1,\n '[object Date]': 1,\n '[object Error]': 1,\n '[object CanvasGradient]': 1,\n '[object CanvasPattern]': 1,\n // For node-canvas\n '[object Image]': 1,\n '[object Canvas]': 1\n};\nvar TYPED_ARRAY = {\n '[object Int8Array]': 1,\n '[object Uint8Array]': 1,\n '[object Uint8ClampedArray]': 1,\n '[object Int16Array]': 1,\n '[object Uint16Array]': 1,\n '[object Int32Array]': 1,\n '[object Uint32Array]': 1,\n '[object Float32Array]': 1,\n '[object Float64Array]': 1\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 nativeReduce = arrayProto.reduce; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n // Clear ctx instance for different environment\n if (name === 'createCanvas') {\n _ctx = null;\n }\n\n methods[name] = fn;\n}\n/**\n * Those data types can be cloned:\n * Plain object, Array, TypedArray, number, string, null, undefined.\n * Those data types will be assgined using the orginal data:\n * BUILTIN_OBJECT\n * Instance of user defined class will be cloned to a plain object, without\n * properties in prototype.\n * Other data types is not supported (not sure what will happen).\n *\n * Caution: do not support clone Date, for performance consideration.\n * (There might be a large number of date in `series.data`).\n * So date should not be modified in and out of echarts.\n *\n * @param {*} source\n * @return {*} new\n */\n\n\nfunction clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n\n var result = source;\n var typeStr = objToString.call(source);\n\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n } else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n\n if (source.constructor.from) {\n result = Ctor.from(source);\n } else {\n result = new Ctor(source.length);\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n result[key] = clone(source[key]);\n }\n }\n }\n\n return result;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overwrite=false]\n */\n\n\nfunction merge(target, source, overwrite) {\n // We should escapse that source is string\n // and enter for ... in ...\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var targetProp = target[key];\n var sourceProp = source[key];\n\n if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {\n // 如果需要递归覆盖,就递归调用merge\n merge(targetProp, sourceProp, overwrite);\n } else if (overwrite || !(key in target)) {\n // 否则只处理overwrite为true,或者在目标对象中没有此属性的情况\n // NOTE,在 target[key] 不存在的时候也是直接覆盖\n target[key] = clone(source[key], true);\n }\n }\n }\n\n return target;\n}\n/**\n * @param {Array} targetAndSources The first item is target, and the rests are source.\n * @param {boolean} [overwrite=false]\n * @return {*} target\n */\n\n\nfunction mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n\n return result;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @memberOf module:zrender/core/util\n */\n\n\nfunction extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overlay=false]\n * @memberOf module:zrender/core/util\n */\n\n\nfunction defaults(target, source, overlay) {\n for (var key in source) {\n if (source.hasOwnProperty(key) && (overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar createCanvas = function () {\n return methods.createCanvas();\n};\n\nmethods.createCanvas = function () {\n return document.createElement('canvas');\n}; // FIXME\n\n\nvar _ctx;\n\nfunction getContext() {\n if (!_ctx) {\n // Use util.createCanvas instead of createCanvas\n // because createCanvas may be overwritten in different environment\n _ctx = createCanvas().getContext('2d');\n }\n\n return _ctx;\n}\n/**\n * 查询数组中元素的index\n * @memberOf module:zrender/core/util\n */\n\n\nfunction indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n\n return -1;\n}\n/**\n * 构造类继承关系\n *\n * @memberOf module:zrender/core/util\n * @param {Function} clazz 源类\n * @param {Function} baseClazz 基类\n */\n\n\nfunction inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n\n function F() {}\n\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Object|Function} target\n * @param {Object|Function} sorce\n * @param {boolean} overlay\n */\n\n\nfunction mixin(target, source, overlay) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n defaults(target, source, overlay);\n}\n/**\n * Consider typed array.\n * @param {Array|TypedArray} data\n */\n\n\nfunction isArrayLike(data) {\n if (!data) {\n return;\n }\n\n if (typeof data === 'string') {\n return false;\n }\n\n return typeof data.length === 'number';\n}\n/**\n * 数组或对象遍历\n * @memberOf module:zrender/core/util\n * @param {Object|Array} obj\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\nfunction each(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.forEach && obj.forEach === nativeForEach) {\n obj.forEach(cb, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, len = obj.length; i < len; i++) {\n cb.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n cb.call(context, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * 数组映射\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction map(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.map && obj.map === nativeMap) {\n return obj.map(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n result.push(cb.call(context, obj[i], i, obj));\n }\n\n return result;\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {Object} [memo]\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction reduce(obj, cb, memo, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.reduce && obj.reduce === nativeReduce) {\n return obj.reduce(cb, memo, context);\n } else {\n for (var i = 0, len = obj.length; i < len; i++) {\n memo = cb.call(context, memo, obj[i], i, obj);\n }\n\n return memo;\n }\n}\n/**\n * 数组过滤\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction filter(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.filter && obj.filter === nativeFilter) {\n return obj.filter(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n result.push(obj[i]);\n }\n }\n\n return result;\n }\n}\n/**\n * 数组项查找\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {*}\n */\n\n\nfunction find(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n return obj[i];\n }\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @param {*} context\n * @return {Function}\n */\n\n\nfunction bind(func, context) {\n var args = nativeSlice.call(arguments, 2);\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @return {Function}\n */\n\n\nfunction curry(func) {\n var args = nativeSlice.call(arguments, 1);\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isArray(value) {\n return objToString.call(value) === '[object Array]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isString(value) {\n return objToString.call(value) === '[object String]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return type === 'function' || !!value && type === 'object';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isDom(value) {\n return typeof value === 'object' && typeof value.nodeType === 'number' && typeof value.ownerDocument === 'object';\n}\n/**\n * Whether is exactly NaN. Notice isNaN('a') returns true.\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction eqNaN(value) {\n /* eslint-disable-next-line no-self-compare */\n return value !== value;\n}\n/**\n * If value1 is not null, then return value1, otherwise judget rest of values.\n * Low performance.\n * @memberOf module:zrender/core/util\n * @return {*} Final value\n */\n\n\nfunction retrieve(values) {\n for (var i = 0, len = arguments.length; i < len; i++) {\n if (arguments[i] != null) {\n return arguments[i];\n }\n }\n}\n\nfunction retrieve2(value0, value1) {\n return value0 != null ? value0 : value1;\n}\n\nfunction retrieve3(value0, value1, value2) {\n return value0 != null ? value0 : value1 != null ? value1 : value2;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} arr\n * @param {number} startIndex\n * @param {number} endIndex\n * @return {Array}\n */\n\n\nfunction slice() {\n return Function.call.apply(nativeSlice, arguments);\n}\n/**\n * Normalize css liked array configuration\n * e.g.\n * 3 => [3, 3, 3, 3]\n * [4, 2] => [4, 2, 4, 2]\n * [4, 3, 2] => [4, 3, 2, 3]\n * @param {number|Array.<number>} val\n * @return {Array.<number>}\n */\n\n\nfunction normalizeCssArray(val) {\n if (typeof val === 'number') {\n return [val, val, val, val];\n }\n\n var len = val.length;\n\n if (len === 2) {\n // vertical | horizontal\n return [val[0], val[1], val[0], val[1]];\n } else if (len === 3) {\n // top | horizontal | bottom\n return [val[0], val[1], val[2], val[1]];\n }\n\n return val;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {boolean} condition\n * @param {string} message\n */\n\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {string} str string to be trimed\n * @return {string} trimed string\n */\n\n\nfunction trim(str) {\n if (str == null) {\n return null;\n } else if (typeof str.trim === 'function') {\n return str.trim();\n } else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\n\nvar primitiveKey = '__ec_primitive__';\n/**\n * Set an object as primitive to be ignored traversing children in clone or merge\n */\n\nfunction setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\n\nfunction isPrimitive(obj) {\n return obj[primitiveKey];\n}\n/**\n * @constructor\n * @param {Object} obj Only apply `ownProperty`.\n */\n\n\nfunction HashMap(obj) {\n var isArr = isArray(obj); // Key should not be set on this, otherwise\n // methods get/set/... may be overrided.\n\n this.data = {};\n var thisMap = this;\n obj instanceof HashMap ? obj.each(visit) : obj && each(obj, visit);\n\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n}\n\nHashMap.prototype = {\n constructor: HashMap,\n // Do not provide `has` method to avoid defining what is `has`.\n // (We usually treat `null` and `undefined` as the same, different\n // from ES6 Map).\n get: function (key) {\n return this.data.hasOwnProperty(key) ? this.data[key] : null;\n },\n set: function (key, value) {\n // Comparing with invocation chaining, `return value` is more commonly\n // used in this case: `var someVal = map.set('a', genVal());`\n return this.data[key] = value;\n },\n // Although util.each can be performed on this hashMap directly, user\n // should not use the exposed keys, who are prefixed.\n each: function (cb, context) {\n context !== void 0 && (cb = bind(cb, context));\n /* eslint-disable guard-for-in */\n\n for (var key in this.data) {\n this.data.hasOwnProperty(key) && cb(this.data[key], key);\n }\n /* eslint-enable guard-for-in */\n\n },\n // Do not use this method if performance sensitive.\n removeKey: function (key) {\n delete this.data[key];\n }\n};\n\nfunction createHashMap(obj) {\n return new HashMap(obj);\n}\n\nfunction concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n\n var offset = a.length;\n\n for (i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n\n return newArray;\n}\n\nfunction noop() {}\n\nexports.$override = $override;\nexports.clone = clone;\nexports.merge = merge;\nexports.mergeAll = mergeAll;\nexports.extend = extend;\nexports.defaults = defaults;\nexports.createCanvas = createCanvas;\nexports.getContext = getContext;\nexports.indexOf = indexOf;\nexports.inherits = inherits;\nexports.mixin = mixin;\nexports.isArrayLike = isArrayLike;\nexports.each = each;\nexports.map = map;\nexports.reduce = reduce;\nexports.filter = filter;\nexports.find = find;\nexports.bind = bind;\nexports.curry = curry;\nexports.isArray = isArray;\nexports.isFunction = isFunction;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isBuiltInObject = isBuiltInObject;\nexports.isTypedArray = isTypedArray;\nexports.isDom = isDom;\nexports.eqNaN = eqNaN;\nexports.retrieve = retrieve;\nexports.retrieve2 = retrieve2;\nexports.retrieve3 = retrieve3;\nexports.slice = slice;\nexports.normalizeCssArray = normalizeCssArray;\nexports.assert = assert;\nexports.trim = trim;\nexports.setAsPrimitive = setAsPrimitive;\nexports.isPrimitive = isPrimitive;\nexports.createHashMap = createHashMap;\nexports.concatArray = concatArray;\nexports.noop = noop;"],"names":["vec2","curve","mathMin","Math","min","mathMax","max","mathSin","sin","mathCos","cos","PI2","PI","start","create","end","extremity","fromPoints","points","length","i","p","left","right","top","bottom","fromLine","x0","y0","x1","y1","xDim","yDim","fromCubic","x2","y2","x3","y3","cubicExtrema","cubicAt","n","Infinity","x","y","fromQuadratic","quadraticExtremum","quadraticAt","tx","ty","fromArc","rx","ry","startAngle","endAngle","anticlockwise","vec2Min","vec2Max","diff","abs","tmp","angle","exports","_vector","v2Create","v2DistSquare","distSquare","mathPow","pow","mathSqrt","sqrt","EPSILON","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","val","isNotAroundZero","p0","p1","p2","p3","t","onet","cubicDerivativeAt","cubicRootAt","roots","a","b","c","d","A","B","C","t1","disc","K","t2","discSqrt","Y1","Y2","T","theta","acos","ASqrt","t3","extrema","cubicSubdivide","out","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","prev","next","d1","d2","interval","_t","quadraticDerivativeAt","quadraticRootAt","divider","quadraticSubdivide","quadraticProjectPoint","env","_fourPointsTransform","buildTransformer","EVENT_SAVED_PROP","_calcOut","transformLocalCoord","elFrom","elTarget","inX","inY","transformCoordWithViewport","el","inverse","getBoundingClientRect","domSupported","isCanvasEl","saved","markers","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","marker","document","createElement","stl","style","idxLR","idxTB","cssText","join","appendChild","push","transformerName","oldSrcCoords","srcCoords","oldCoordTheSame","destCoords","rect","ii","offsetLeft","offsetTop","nodeName","toUpperCase","wx","getSystemInfoSync","browser","os","node","wxa","canvasSupported","svgSupported","touchEventsSupported","self","worker","navigator","detect","userAgent","_default","ua","firefox","match","ie","edge","weChat","test","version","getContext","SVGRect","window","pointerEventsSupported","module","Eventful","Dispatcher","_dom","isDomLevel2","addEventListener","MOUSE_EVENT_REG","clientToLocal","e","calculate","calculateZrXY","layerX","offsetX","zrX","zrY","layerY","offsetY","ex","clientX","ey","clientY","box","getNativeEvent","event","normalizeEvent","eventType","type","isTouch","indexOf","touch","targetTouches","changedTouches","zrDelta","wheelDelta","detail","button","which","undefined","name","handler","opt","attachEvent","removeEventListener","detachEvent","stop","preventDefault","stopPropagation","cancelBubble","returnValue","isMiddleOrRightButtonOnMouseUpDown","notLeftMouse","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","hasOwnProperty","colStart","round","subRowMask","subRowStart","sum","j","colLocalIdx","colTag","src","dest","mA","det","vh","srcPointX","srcPointY","pk","idStart","_config","debugMode","logError","console","error","ArrayCtor","Float32Array","Array","identity","copy","m","mul","m1","m2","out0","out1","out2","out3","out4","out5","translate","v","rotate","rad","aa","ac","atx","ab","ad","aty","st","ct","scale","vx","vy","invert","clone","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","r","makeAscendingRun","array","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","mid","pivot","gallopLeft","value","hint","lastOffset","maxOffset","offset","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","k","mergeLow","mergeHigh","cursor1","cursor2","count1","count2","exit","_minGallop","Error","customCursor","customDest","this","sort","remaining","ts","minRun","force","BUILTIN_OBJECT","TYPED_ARRAY","objToString","Object","prototype","toString","arrayProto","nativeForEach","forEach","nativeFilter","filter","nativeSlice","slice","nativeMap","map","nativeReduce","reduce","methods","$override","fn","_ctx","source","result","typeStr","call","isPrimitive","len","Ctor","constructor","from","isDom","key","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","mergeAll","targetAndSources","extend","defaults","overlay","createCanvas","inherits","clazz","baseClazz","clazzPrototype","F","prop","superClass","mixin","isArrayLike","data","each","obj","cb","context","memo","find","bind","func","args","arguments","apply","concat","curry","isFunction","isString","isTypedArray","nodeType","ownerDocument","eqNaN","retrieve","values","retrieve2","value0","value1","retrieve3","value2","Function","normalizeCssArray","assert","condition","message","trim","str","replace","primitiveKey","setAsPrimitive","HashMap","isArr","thisMap","visit","set","createHashMap","concatArray","newArray","noop","get","removeKey"],"sourceRoot":""}
|