网站
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

41 rivejä
463 KiB

  1. !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e(t.echarts = {}) }(this, function (t) {
  2. "use strict"; function e(t) { var e = {}, i = {}, n = t.match(/Firefox\/([\d.]+)/), r = t.match(/MSIE\s([\d.]+)/) || t.match(/Trident\/.+?rv:(([\d.]+))/), a = t.match(/Edge\/([\d.]+)/), o = /micromessenger/i.test(t); return n && (i.firefox = !0, i.version = n[1]), r && (i.ie = !0, i.version = r[1]), a && (i.edge = !0, i.version = a[1]), o && (i.weChat = !0), { browser: i, os: e, node: !1, canvasSupported: !!document.createElement("canvas").getContext, svgSupported: "undefined" != typeof SVGRect, touchEventsSupported: "ontouchstart" in window && !i.ie && !i.edge, pointerEventsSupported: "onpointerdown" in window && (i.edge || i.ie && i.version >= 11), domSupported: "undefined" != typeof document } } function i(t, e) { "createCanvas" === t && (Yf = null), Xf[t] = e } function n(t) { if (null == t || "object" != typeof t) return t; var e = t, i = Rf.call(t); if ("[object Array]" === i) { if (!B(t)) { e = []; for (var r = 0, a = t.length; a > r; r++)e[r] = n(t[r]) } } else if (Bf[i]) { if (!B(t)) { var o = t.constructor; if (t.constructor.from) e = o.from(t); else { e = new o(t.length); for (var r = 0, a = t.length; a > r; r++)e[r] = n(t[r]) } } } else if (!zf[i] && !B(t) && !T(t)) { e = {}; for (var s in t) t.hasOwnProperty(s) && (e[s] = n(t[s])) } return e } function r(t, e, i) { if (!S(e) || !S(t)) return i ? n(e) : t; for (var a in e) if (e.hasOwnProperty(a)) { var o = t[a], s = e[a]; !S(s) || !S(o) || x(s) || x(o) || T(s) || T(o) || M(s) || M(o) || B(s) || B(o) ? !i && a in t || (t[a] = n(e[a], !0)) : r(o, s, i) } return t } function a(t, e) { for (var i = t[0], n = 1, a = t.length; a > n; n++)i = r(i, t[n], e); return i } function o(t, e) { for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]); return t } function s(t, e, i) { for (var n in e) e.hasOwnProperty(n) && (i ? null != e[n] : null == t[n]) && (t[n] = e[n]); return t } function l() { return Yf || (Yf = Uf().getContext("2d")), Yf } function h(t, e) { if (t) { if (t.indexOf) return t.indexOf(e); for (var i = 0, n = t.length; n > i; i++)if (t[i] === e) return i } return -1 } function u(t, e) { function i() { } var n = t.prototype; i.prototype = e.prototype, t.prototype = new i; for (var r in n) n.hasOwnProperty(r) && (t.prototype[r] = n[r]); t.prototype.constructor = t, t.superClass = e } function c(t, e, i) { t = "prototype" in t ? t.prototype : t, e = "prototype" in e ? e.prototype : e, s(t, e, i) } function d(t) { return t ? "string" == typeof t ? !1 : "number" == typeof t.length : void 0 } function f(t, e, i) { if (t && e) if (t.forEach && t.forEach === Ff) t.forEach(e, i); else if (t.length === +t.length) for (var n = 0, r = t.length; r > n; n++)e.call(i, t[n], n, t); else for (var a in t) t.hasOwnProperty(a) && e.call(i, t[a], a, t) } function p(t, e, i) { if (t && e) { if (t.map && t.map === Gf) return t.map(e, i); for (var n = [], r = 0, a = t.length; a > r; r++)n.push(e.call(i, t[r], r, t)); return n } } function g(t, e, i, n) { if (t && e) { if (t.reduce && t.reduce === Wf) return t.reduce(e, i, n); for (var r = 0, a = t.length; a > r; r++)i = e.call(n, i, t[r], r, t); return i } } function v(t, e, i) { if (t && e) { if (t.filter && t.filter === Vf) return t.filter(e, i); for (var n = [], r = 0, a = t.length; a > r; r++)e.call(i, t[r], r, t) && n.push(t[r]); return n } } function m(t, e, i) { if (t && e) for (var n = 0, r = t.length; r > n; n++)if (e.call(i, t[n], n, t)) return t[n] } function y(t, e) { var i = Hf.call(arguments, 2); return function () { return t.apply(e, i.concat(Hf.call(arguments))) } } function _(t) { var e = Hf.call(arguments, 1); return function () { return t.apply(this, e.concat(Hf.call(arguments))) } } function x(t) { return "[object Array]" === Rf.call(t) } function w(t) { return "function" == typeof t } function b(t) { return "[object String]" === Rf.call(t) } function S(t) { var e = typeof t; return "function" === e || !!t && "object" === e } function M(t) { return !!zf[Rf.call(t)] } function I(t) { return !!Bf[Rf.call(t)] } function T(t) { return "object" == typeof t && "number" == typeof t.nodeType && "object" == typeof t.ownerDocument } function C(t) { return t !== t } function A() { for (var t = 0, e = arguments.length; e > t; t++)if (null != arguments[t]) return arguments[t] } function D(t, e) { return null != t ? t : e } function k(t, e, i) { return null != t ? t : null != e ? e : i } function P() { return Function.call.apply(Hf, arguments) } function L(t) { if ("number" == typeof t) return [t, t, t, t]; var e = t.length; return 2 === e ? [t[0], t[1], t[0], t[1]] : 3 === e ? [t[0], t[1], t[2], t[1]] : t } function O(t, e) { if (!t) throw new Error(e) } function E(t) { return null == t ? null : "function" == typeof t.trim ? t.trim() : t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "") } function z(t) { t[jf] = !0 } function B(t) { return t[jf] } function R(t) { function e(t, e) { i ? n.set(t, e) : n.set(e, t) } var i = x(t); this.data = {}; var n = this; t instanceof R ? t.each(e) : t && f(t, e) } function N(t) { return new R(t) } function F(t, e) { for (var i = new t.constructor(t.length + e.length), n = 0; n < t.length; n++)i[n] = t[n]; var r = t.length; for (n = 0; n < e.length; n++)i[n + r] = e[n]; return i } function V() { } function H(t, e) { var i = new Zf(2); return null == t && (t = 0), null == e && (e = 0), i[0] = t, i[1] = e, i } function G(t, e) { return t[0] = e[0], t[1] = e[1], t } function W(t) { var e = new Zf(2); return e[0] = t[0], e[1] = t[1], e } function X(t, e, i) { return t[0] = e, t[1] = i, t } function U(t, e, i) { return t[0] = e[0] + i[0], t[1] = e[1] + i[1], t } function Y(t, e, i, n) { return t[0] = e[0] + i[0] * n, t[1] = e[1] + i[1] * n, t } function j(t, e, i) { return t[0] = e[0] - i[0], t[1] = e[1] - i[1], t } function q(t) { return Math.sqrt(Z(t)) } function Z(t) { return t[0] * t[0] + t[1] * t[1] } function K(t, e, i) { return t[0] = e[0] * i[0], t[1] = e[1] * i[1], t } function $(t, e, i) { return t[0] = e[0] / i[0], t[1] = e[1] / i[1], t } function Q(t, e) { return t[0] * e[0] + t[1] * e[1] } function J(t, e, i) { return t[0] = e[0] * i, t[1] = e[1] * i, t } function te(t, e) { var i = q(e); return 0 === i ? (t[0] = 0, t[1] = 0) : (t[0] = e[0] / i, t[1] = e[1] / i), t } function ee(t, e) { return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1])) } function ie(t, e) { return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]) } function ne(t, e) { return t[0] = -e[0], t[1] = -e[1], t } function re(t, e, i, n) { return t[0] = e[0] + n * (i[0] - e[0]), t[1] = e[1] + n * (i[1] - e[1]), t } function ae(t, e, i) { var n = e[0], r = e[1]; return t[0] = i[0] * n + i[2] * r + i[4], t[1] = i[1] * n + i[3] * r + i[5], t } function oe(t, e, i) { return t[0] = Math.min(e[0], i[0]), t[1] = Math.min(e[1], i[1]), t } function se(t, e, i) { return t[0] = Math.max(e[0], i[0]), t[1] = Math.max(e[1], i[1]), t } function le() { this.on("mousedown", this._dragStart, this), this.on("mousemove", this._drag, this), this.on("mouseup", this._dragEnd, this), this.on("globalout", this._dragEnd, this) } function he(t, e) { return { target: t, topTarget: e && e.topTarget } } function ue(t, e) { var i = t._$eventProcessor; return null != e && i && i.normalizeQuery && (e = i.normalizeQuery(e)), e } function ce(t, e, i, n, r, a) { var o = t._$handlers; if ("function" == typeof i && (r = n, n = i, i = null), !n || !e) return t; i = ue(t, i), o[e] || (o[e] = []); for (var s = 0; s < o[e].length; s++)if (o[e][s].h === n) return t; var l = { h: n, one: a, query: i, ctx: r || t, callAtLast: n.zrEventfulCallAtLast }, h = o[e].length - 1, u = o[e][h]; return u && u.callAtLast ? o[e].splice(h, 0, l) : o[e].push(l), t } function de(t, e, i, n, r, a) { var o = n + "-" + r, s = t.length; if (a.hasOwnProperty(o)) return a[o]; if (1 === e) { var l = Math.round(Math.log((1 << s) - 1 & ~r) / np); return t[i][l] } for (var h = n | 1 << i, u = i + 1; n & 1 << u;)u++; for (var c = 0, d = 0, f = 0; s > d; d++) { var p = 1 << d; p & r || (c += (f % 2 ? -1 : 1) * t[i][d] * de(t, e - 1, u, h, r | p, a), f++) } return a[o] = c, c } function fe(t, e) { var i = [[t[0], t[1], 1, 0, 0, 0, -e[0] * t[0], -e[0] * t[1]], [0, 0, 0, t[0], t[1], 1, -e[1] * t[0], -e[1] * t[1]], [t[2], t[3], 1, 0, 0, 0, -e[2] * t[2], -e[2] * t[3]], [0, 0, 0, t[2], t[3], 1, -e[3] * t[2], -e[3] * t[3]], [t[4], t[5], 1, 0, 0, 0, -e[4] * t[4], -e[4] * t[5]], [0, 0, 0, t[4], t[5], 1, -e[5] * t[4], -e[5] * t[5]], [t[6], t[7], 1, 0, 0, 0, -e[6] * t[6], -e[6] * t[7]], [0, 0, 0, t[6], t[7], 1, -e[7] * t[6], -e[7] * t[7]]], n = {}, r = de(i, 8, 0, 0, 0, n); if (0 !== r) { for (var a = [], o = 0; 8 > o; o++)for (var s = 0; 8 > s; s++)null == a[s] && (a[s] = 0), a[s] += ((o + s) % 2 ? -1 : 1) * de(i, 7, 0 === o ? 1 : 0, 1 << o, 1 << s, n) / r * e[o]; return function (t, e, i) { var n = e * a[6] + i * a[7] + 1; t[0] = (e * a[0] + i * a[1] + a[2]) / n, t[1] = (e * a[3] + i * a[4] + a[5]) / n } } } function pe(t, e, i, n) { return i = i || {}, n || !Ef.canvasSupported ? ge(t, e, i) : Ef.browser.firefox && null != e.layerX && e.layerX !== e.offsetX ? (i.zrX = e.layerX, i.zrY = e.layerY) : null != e.offsetX ? (i.zrX = e.offsetX, i.zrY = e.offsetY) : ge(t, e, i), i } function ge(t, e, i) { if (t.getBoundingClientRect && Ef.domSupported) { var n = e.clientX, r = e.clientY; if ("CANVAS" === t.nodeName.toUpperCase()) { var a = t.getBoundingClientRect(); return i.zrX = n - a.left, void (i.zrY = r - a.top) } var o = t[op] || (t[op] = {}), s = me(ve(t, o), o); if (s) return s(sp, n, r), i.zrX = sp[0], void (i.zrY = sp[1]) } i.zrX = i.zrY = 0 } function ve(t, e) { var i = e.markers; if (i) return i; i = e.markers = []; for (var n = ["left", "right"], r = ["top", "bottom"], a = 0; 4 > a; a++) { var o = document.createElement("div"), s = o.style, l = a % 2, h = (a >> 1) % 2; s.cssText = ["position:absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "width:0", "height:0", n[l] + ":0", r[h] + ":0", n[1 - l] + ":auto", r[1 - h] + ":auto", ""].join("!important;"), t.appendChild(o), i.push(o) } return i } function me(t, e) { for (var i = e.transformer, n = e.srcCoords, r = !0, a = [], o = [], s = 0; 4 > s; s++) { var l = t[s].getBoundingClientRect(), h = 2 * s, u = l.left, c = l.top; a.push(u, c), r &= n && u === n[h] && c === n[h + 1], o.push(t[s].offsetLeft, t[s].offsetTop) } return r ? i : (e.srcCoords = a, e.transformer = fe(a, o)) } function ye(t, e, i) { if (e = e || window.event, null != e.zrX) return e; var n = e.type, r = n && n.indexOf("touch") >= 0; if (r) { var a = "touchend" !== n ? e.targetTouches[0] : e.changedTouches[0]; a && pe(t, a, e, i) } else pe(t, e, e, i), e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3; var o = e.button; return null == e.which && void 0 !== o && ap.test(e.type) && (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), e } function _e(t, e, i) { rp ? t.addEventListener(e, i) : t.attachEvent("on" + e, i) } function xe(t, e, i) { rp ? t.removeEventListener(e, i) : t.detachEvent("on" + e, i) } function we(t) { var e = t[1][0] - t[0][0], i = t[1][1] - t[0][1]; return Math.sqrt(e * e + i * i) } function be(t) { return [(t[0][0] + t[1][0]) / 2, (t[0][1] + t[1][1]) / 2] } function Se(t, e, i) { return { type: t, event: i, target: e.target, topTarget: e.topTarget, cancelBubble: !1, offsetX: i.zrX, offsetY: i.zrY, gestureEvent: i.gestureEvent, pinchX: i.pinchX, pinchY: i.pinchY, pinchScale: i.pinchScale, wheelDelta: i.zrDelta, zrByTouch: i.zrByTouch, which: i.which, stop: Me } } function Me() { lp(this.event) } function Ie() { } function Te(t, e, i) { if (t[t.rectHover ? "rectContain" : "contain"](e, i)) { for (var n, r = t; r;) { if (r.clipPath && !r.clipPath.contain(e, i)) return !1; r.silent && (n = !0), r = r.parent } return n ? cp : !0 } return !1 } function Ce() { var t = new pp(6); return Ae(t), t } function Ae(t) { return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t } function De(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], t } function ke(t, e, i) { var n = e[0] * i[0] + e[2] * i[1], r = e[1] * i[0] + e[3] * i[1], a = e[0] * i[2] + e[2] * i[3], o = e[1] * i[2] + e[3] * i[3], s = e[0] * i[4] + e[2] * i[5] + e[4], l = e[1] * i[4] + e[3] * i[5] + e[5]; return t[0] = n, t[1] = r, t[2] = a, t[3] = o, t[4] = s, t[5] = l, t } function Pe(t, e, i) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4] + i[0], t[5] = e[5] + i[1], t } function Le(t, e, i) { var n = e[0], r = e[2], a = e[4], o = e[1], s = e[3], l = e[5], h = Math.sin(i), u = Math.cos(i); return t[0] = n * u + o * h, t[1] = -n * h + o * u, t[2] = r * u + s * h, t[3] = -r * h + u * s, t[4] = u * a + h * l, t[5] = u * l - h * a, t } function Oe(t, e, i) { var n = i[0], r = i[1]; return t[0] = e[0] * n, t[1] = e[1] * r, t[2] = e[2] * n, t[3] = e[3] * r, t[4] = e[4] * n, t[5] = e[5] * r, t } function Ee(t, e) { var i = e[0], n = e[2], r = e[4], a = e[1], o = e[3], s = e[5], l = i * o - a * n; return l ? (l = 1 / l, t[0] = o * l, t[1] = -a * l, t[2] = -n * l, t[3] = i * l, t[4] = (n * s - o * r) * l, t[5] = (a * r - i * s) * l, t) : null } function ze(t) { var e = Ce(); return De(e, t), e } function Be(t) { return t > mp || -mp > t } function Re(t) { this._target = t.target, this._life = t.life || 1e3, this._delay = t.delay || 0, this._initialized = !1, this.loop = null == t.loop ? !1 : t.loop, this.gap = t.gap || 0, this.easing = t.easing || "Linear", this.onframe = t.onframe, this.ondestroy = t.ondestroy, this.onrestart = t.onrestart, this._pausedTime = 0, this._paused = !1 } function Ne(t) { return t = Math.round(t), 0 > t ? 0 : t > 255 ? 255 : t } function Fe(t) { return t = Math.round(t), 0 > t ? 0 : t > 360 ? 360 : t } function Ve(t) { return 0 > t ? 0 : t > 1 ? 1 : t } function He(t) { return Ne(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 * 255 : parseInt(t, 10)) } function Ge(t) { return Ve(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 : parseFloat(t)) } function We(t, e, i) { return 0 > i ? i += 1 : i > 1 && (i -= 1), 1 > 6 * i ? t + (e - t) * i * 6 : 1 > 2 * i ? e : 2 > 3 * i ? t + (e - t) * (2 / 3 - i) * 6 : t } function Xe(t, e, i) { return t + (e - t) * i } function Ue(t, e, i, n, r) { return t[0] = e, t[1] = i, t[2] = n, t[3] = r, t } function Ye(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t } function je(t, e) { Pp && Ye(Pp, e), Pp = kp.put(t, Pp || e.slice()) } function qe(t, e) { if (t) { e = e || []; var i = kp.get(t); if (i) return Ye(e, i); t += ""; var n = t.replace(/ /g, "").toLowerCase(); if (n in Dp) return Ye(e, Dp[n]), je(t, e), e; if ("#" !== n.charAt(0)) { var r = n.indexOf("("), a = n.indexOf(")"); if (-1 !== r && a + 1 === n.length) { var o = n.substr(0, r), s = n.substr(r + 1, a - (r + 1)).split(","), l = 1; switch (o) { case "rgba": if (4 !== s.length) return void Ue(e, 0, 0, 0, 1); l = Ge(s.pop()); case "rgb": return 3 !== s.length ? void Ue(e, 0, 0, 0, 1) : (Ue(e, He(s[0]), He(s[1]), He(s[2]), l), je(t, e), e); case "hsla": return 4 !== s.length ? void Ue(e, 0, 0, 0, 1) : (s[3] = Ge(s[3]), Ze(s, e), je(t, e), e); case "hsl": return 3 !== s.length ? void Ue(e, 0, 0, 0, 1) : (Ze(s, e), je(t, e), e); default: return } } Ue(e, 0, 0, 0, 1) } else { if (4 === n.length) { var h = parseInt(n.substr(1), 16); return h >= 0 && 4095 >= h ? (Ue(e, (3840 & h) >> 4 | (3840 & h) >> 8, 240 & h | (240 & h) >> 4, 15 & h | (15 & h) << 4, 1), je(t, e), e) : void Ue(e, 0, 0, 0, 1) } if (7 === n.length) { var h = parseInt(n.substr(1), 16); return h >= 0 && 16777215 >= h ? (Ue(e, (16711680 & h) >> 16, (65280 & h) >> 8, 255 & h, 1), je(t, e), e) : void Ue(e, 0, 0, 0, 1) } } } } function Ze(t, e) { var i = (parseFloat(t[0]) % 360 + 360) % 360 / 360, n = Ge(t[1]), r = Ge(t[2]), a = .5 >= r ? r * (n + 1) : r + n - r * n, o = 2 * r - a; return e = e || [], Ue(e, Ne(255 * We(o, a, i + 1 / 3)), Ne(255 * We(o, a, i)), Ne(255 * We(o, a, i - 1 / 3)), 1), 4 === t.length && (e[3] = t[3]), e } function Ke(t) { if (t) { var e, i, n = t[0] / 255, r = t[1] / 255, a = t[2] / 255, o = Math.min(n, r, a), s = Math.max(n, r, a), l = s - o, h = (s + o) / 2; if (0 === l) e = 0, i = 0; else { i = .5 > h ? l / (s + o) : l / (2 - s - o); var u = ((s - n) / 6 + l / 2) / l, c = ((s - r) / 6 + l / 2) / l, d = ((s - a) / 6 + l / 2) / l; n === s ? e = d - c : r === s ? e = 1 / 3 + u - d : a === s && (e = 2 / 3 + c - u), 0 > e && (e += 1), e > 1 && (e -= 1) } var f = [360 * e, i, h]; return null != t[3] && f.push(t[3]), f } } function $e(t, e) { var i = qe(t); if (i) { for (var n = 0; 3 > n; n++)i[n] = 0 > e ? i[n] * (1 - e) | 0 : (255 - i[n]) * e + i[n] | 0, i[n] > 255 ? i[n] = 255 : t[n] < 0 && (i[n] = 0); return ni(i, 4 === i.length ? "rgba" : "rgb") } } function Qe(t) { var e = qe(t); return e ? ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1) : void 0 } function Je(t, e, i) { if (e && e.length && t >= 0 && 1 >= t) { i = i || []; var n = t * (e.length - 1), r = Math.floor(n), a = Math.ceil(n), o = e[r], s = e[a], l = n - r; return i[0] = Ne(Xe(o[0], s[0], l)), i[1] = Ne(Xe(o[1], s[1], l)), i[2] = Ne(Xe(o[2], s[2], l)), i[3] = Ve(Xe(o[3], s[3], l)), i } } function ti(t, e, i) { if (e && e.length && t >= 0 && 1 >= t) { var n = t * (e.length - 1), r = Math.floor(n), a = Math.ceil(n), o = qe(e[r]), s = qe(e[a]), l = n - r, h = ni([Ne(Xe(o[0], s[0], l)), Ne(Xe(o[1], s[1], l)), Ne(Xe(o[2], s[2], l)), Ve(Xe(o[3], s[3], l))], "rgba"); return i ? { color: h, leftIndex: r, rightIndex: a, value: n } : h } } function ei(t, e, i, n) { return t = qe(t), t ? (t = Ke(t), null != e && (t[0] = Fe(e)), null != i && (t[1] = Ge(i)), null != n && (t[2] = Ge(n)), ni(Ze(t), "rgba")) : void 0 } function ii(t, e) { return t = qe(t), t && null != e ? (t[3] = Ve(e), ni(t, "rgba")) : void 0 } function ni(t, e) { if (t && t.length) { var i = t[0] + "," + t[1] + "," + t[2]; return ("rgba" === e || "hsva" === e || "hsla" === e) && (i += "," + t[3]), e + "(" + i + ")" } } function ri(t, e) { return t[e] } function ai(t, e, i) { t[e] = i } function oi(t, e, i) { return (e - t) * i + t } function si(t, e, i) { return i > .5 ? e : t } function li(t, e, i, n, r) { var a = t.length; if (1 === r) for (var o = 0; a > o; o++)n[o] = oi(t[o], e[o], i); else for (var s = a && t[0].length, o = 0; a > o; o++)for (var l = 0; s > l; l++)n[o][l] = oi(t[o][l], e[o][l], i) } function hi(t, e, i) { var n = t.length, r = e.length; if (n !== r) { var a = n > r; if (a) t.length = r; else for (var o = n; r > o; o++)t.push(1 === i ? e[o] : zp.call(e[o])) } for (var s = t[0] && t[0].length, o = 0; o < t.length; o++)if (1 === i) isNaN(t[o]) && (t[o] = e[o]); else for (var l = 0; s > l; l++)isNaN(t[o][l]) && (t[o][l] = e[o][l]) } function ui(t, e, i) { if (t === e) return !0; var n = t.length; if (n !== e.length) return !1; if (1 === i) { for (var r = 0; n > r; r++)if (t[r] !== e[r]) return !1 } else for (var a = t[0].length, r = 0; n > r; r++)for (var o = 0; a > o; o++)if (t[r][o] !== e[r][o]) return !1; return !0 } function ci(t, e, i, n, r, a, o, s, l) { var h = t.length; if (1 === l) for (var u = 0; h > u; u++)s[u] = di(t[u], e[u], i[u], n[u], r, a, o); else for (var c = t[0].length, u = 0; h > u; u++)for (var d = 0; c > d; d++)s[u][d] = di(t[u][d], e[u][d], i[u][d], n[u][d], r, a, o) } function di(t, e, i, n, r, a, o) { var s = .5 * (i - t), l = .5 * (n - e); return (2 * (e - i) + s + l) * o + (-3 * (e - i) - 2 * s - l) * a + s * r + e } function fi(t) { if (d(t)) { var e = t.length; if (d(t[0])) { for (var i = [], n = 0; e > n; n++)i.push(zp.call(t[n])); return i } return zp.call(t) } return t } function pi(t) { return t[0] = Math.floor(t[0]), t[1] = Math.floor(t[1]), t[2] = Math.floor(t[2]), "rgba(" + t.join(",") + ")" } function gi(t) { var e = t[t.length - 1].value; return d(e && e[0]) ? 2 : 1 } function vi(t, e, i, n, r, a) { var o = t._getter, s = t._setter, l = "spline" === e, h = n.length; if (h) { var u, c = n[0].value, f = d(c), p = !1, g = !1, v = f ? gi(n) : 0; n.sort(function (t, e) { return t.time - e.time }), u = n[h - 1].time; for (var m = [], y = [], _ = n[0].value, x = !0, w = 0; h > w; w++) { m.push(n[w].time / u); var b = n[w].value; if (f && ui(b, _, v) || !f && b === _ || (x = !1), _ = b, "string" == typeof b) { var S = qe(b); S ? (b = S, p = !0) : g = !0 } y.push(b) } if (a || !x) { for (var M = y[h - 1], w = 0; h - 1 > w; w++)f ? hi(y[w], M, v) : !isNaN(y[w]) || isNaN(M) || g || p || (y[w] = M); f && hi(o(t._target, r), M, v); var I, T, C, A, D, k, P = 0, L = 0; if (p) var O = [0, 0, 0, 0]; var E = function (t, e) { var i; if (0 > e) i = 0; else if (L > e) { for (I = Math.min(P + 1, h - 1), i = I; i >= 0 && !(m[i] <= e); i--); i = Math.min(i, h - 2) } else { for (i = P; h > i && !(m[i] > e); i++); i = Math.min(i - 1, h - 2) } P = i, L = e; var n = m[i + 1] - m[i]; if (0 !== n) if (T = (e - m[i]) / n, l) if (A = y[i], C = y[0 === i ? i : i - 1], D = y[i > h - 2 ? h - 1 : i + 1], k = y[i > h - 3 ? h - 1 : i + 2], f) ci(C, A, D, k, T, T * T, T * T * T, o(t, r), v); else { var a; if (p) a = ci(C, A, D, k, T, T * T, T * T * T, O, 1), a = pi(O); else { if (g) return si(A, D, T); a = di(C, A, D, k, T, T * T, T * T * T) } s(t, r, a) } else if (f) li(y[i], y[i + 1], T, o(t, r), v); else { var a; if (p) li(y[i], y[i + 1], T, O, 1), a = pi(O); else { if (g) return si(y[i], y[i + 1], T); a = oi(y[i], y[i + 1], T) } s(t, r, a) } }, z = new Re({ target: t._target, life: u, loop: t._loop, delay: t._delay, onframe: E, ondestroy: i }); return e && "spline" !== e && (z.easing = e), z } } } function mi(t, e, i, n, r, a, o, s) { function l() { u--, u || a && a() } b(n) ? (a = r, r = n, n = 0) : w(r) ? (a = r, r = "linear", n = 0) : w(n) ? (a = n, n = 0) : w(i) ? (a = i, i = 500) : i || (i = 500), t.stopAnimation(), yi(t, "", t, e, i, n, s); var h = t.animators.slice(), u = h.length; u || a && a(); for (var c = 0; c < h.length; c++)h[c].done(l).start(r, o) } function yi(t, e, i, n, r, a, o) { var s = {}, l = 0; for (var h in n) n.hasOwnProperty(h) && (null != i[h] ? S(n[h]) && !d(n[h]) ? yi(t, e ? e + "." + h : h, i[h], n[h], r, a, o) : (o ? (s[h] = i[h], _i(t, e, h, n[h])) : s[h] = n[h], l++) : null == n[h] || o || _i(t, e, h, n[h])); l > 0 && t.animate(e, !1).when(null == r ? 500 : r, s).delay(a || 0) } function _i(t, e, i, n) { if (e) { var r = {}; r[e] = {}, r[e][i] = n, t.attr(r) } else t.attr(i, n) } function xi(t, e, i, n) { 0 > i && (t += i, i = -i), 0 > n && (e += n, n = -n), this.x = t, this.y = e, this.width = i, this.height = n } function wi(t) { for (var e = 0; t >= qp;)e |= 1 & t, t >>= 1; return t + e } function bi(t, e, i, n) { var r = e + 1; if (r === i) return 1; if (n(t[r++], t[e]) < 0) { for (; i > r && n(t[r], t[r - 1]) < 0;)r++; Si(t, e, r) } else for (; i > r && n(t[r], t[r - 1]) >= 0;)r++; return r - e } function Si(t, e, i) { for (i--; i > e;) { var n = t[e]; t[e++] = t[i], t[i--] = n } } function Mi(t, e, i, n, r) { for (n === e && n++; i > n; n++) { for (var a, o = t[n], s = e, l = n; l > s;)a = s + l >>> 1, r(o, t[a]) < 0 ? l = a : s = a + 1; var h = n - s; switch (h) { case 3: t[s + 3] = t[s + 2]; case 2: t[s + 2] = t[s + 1]; case 1: t[s + 1] = t[s]; break; default: for (; h > 0;)t[s + h] = t[s + h - 1], h-- }t[s] = o } } function Ii(t, e, i, n, r, a) { var o = 0, s = 0, l = 1; if (a(t, e[i + r]) > 0) { for (s = n - r; s > l && a(t, e[i + r + l]) > 0;)o = l, l = (l << 1) + 1, 0 >= l && (l = s); l > s && (l = s), o += r, l += r } else { for (s = r + 1; s > l && a(t, e[i + r - l]) <= 0;)o = l, l = (l << 1) + 1, 0 >= l && (l = s); l > s && (l = s); var h = o; o = r - l, l = r - h } for (o++; l > o;) { var u = o + (l - o >>> 1); a(t, e[i + u]) > 0 ? o = u + 1 : l = u } return l } function Ti(t, e, i, n, r, a) { var o = 0, s = 0, l = 1; if (a(t, e[i + r]) < 0) { for (s = r + 1; s > l && a(t, e[i + r - l]) < 0;)o = l, l = (l << 1) + 1, 0 >= l && (l = s); l > s && (l = s); var h = o; o = r - l, l = r - h } else { for (s = n - r; s > l && a(t, e[i + r + l]) >= 0;)o = l, l = (l << 1) + 1, 0 >= l && (l = s); l > s && (l = s), o += r, l += r } for (o++; l > o;) { var u = o + (l - o >>> 1); a(t, e[i + u]) < 0 ? l = u : o = u + 1 } return l } function Ci(t, e) { function i(t, e) { l[c] = t, h[c] = e, c += 1 } function n() { for (; c > 1;) { var t = c - 2; if (t >= 1 && h[t - 1] <= h[t] + h[t + 1] || t >= 2 && h[t - 2] <= h[t] + h[t - 1]) h[t - 1] < h[t + 1] && t--; else if (h[t] > h[t + 1]) break; a(t) } } function r() { for (; c > 1;) { var t = c - 2; t > 0 && h[t - 1] < h[t + 1] && t--, a(t) } } function a(i) { var n = l[i], r = h[i], a = l[i + 1], u = h[i + 1]; h[i] = r + u, i === c - 3 && (l[i + 1] = l[i + 2], h[i + 1] = h[i + 2]), c--; var d = Ti(t[a], t, n, r, 0, e); n += d, r -= d, 0 !== r && (u = Ii(t[n + r - 1], t, a, u, u - 1, e), 0 !== u && (u >= r ? o(n, r, a, u) : s(n, r, a, u))) } function o(i, n, r, a) { var o = 0; for (o = 0; n > o; o++)d[o] = t[i + o]; var s = 0, l = r, h = i; if (t[h++] = t[l++], 0 !== --a) { if (1 === n) { for (o = 0; a > o; o++)t[h + o] = t[l + o]; return void (t[h + a] = d[s]) } for (var c, f, p, g = u; ;) { c = 0, f = 0, p = !1; do if (e(t[l], d[s]) < 0) { if (t[h++] = t[l++], f++, c = 0, 0 === --a) { p = !0; break } } else if (t[h++] = d[s++], c++, f = 0, 1 === --n) { p = !0; break } while (g > (c | f)); if (p) break; do { if (c = Ti(t[l], d, s, n, 0, e), 0 !== c) { for (o = 0; c > o; o++)t[h + o] = d[s + o]; if (h += c, s += c, n -= c, 1 >= n) { p = !0; break } } if (t[h++] = t[l++], 0 === --a) { p = !0; break } if (f = Ii(d[s], t, l, a, 0, e), 0 !== f) { for (o = 0; f > o; o++)t[h + o] = t[l + o]; if (h += f, l += f, a -= f, 0 === a) { p = !0; break } } if (t[h++] = d[s++], 1 === --n) { p = !0; break } g-- } while (c >= Zp || f >= Zp); if (p) break; 0 > g && (g = 0), g += 2 } if (u = g, 1 > u && (u = 1), 1 === n) { for (o = 0; a > o; o++)t[h + o] = t[l + o]; t[h + a] = d[s] } else { if (0 === n) throw new Error; for (o = 0; n > o; o++)t[h + o] = d[s + o] } } else for (o = 0; n > o; o++)t[h + o] = d[s + o] } function s(i, n, r, a) { var o = 0; for (o = 0; a > o; o++)d[o] = t[r + o]; var s = i + n - 1, l = a - 1, h = r + a - 1, c = 0, f = 0; if (t[h--] = t[s--], 0 !== --n) { if (1 === a) { for (h -= n, s -= n, f = h + 1, c = s + 1, o = n - 1; o >= 0; o--)t[f + o] = t[c + o]; return void (t[h] = d[l]) } for (var p = u; ;) { var g = 0, v = 0, m = !1; do if (e(d[l], t[s]) < 0) { if (t[h--] = t[s--], g++, v = 0, 0 === --n) { m = !0; break } } else if (t[h--] = d[l--], v++, g = 0, 1 === --a) { m = !0; break } while (p > (g | v)); if (m) break; do { if (g = n - Ti(d[l], t, i, n, n - 1, e), 0 !== g) { for (h -= g, s -= g, n -= g, f = h + 1, c = s + 1, o = g - 1; o >= 0; o--)t[f + o] = t[c + o]; if (0 === n) { m = !0; break } } if (t[h--] = d[l--], 1 === --a) { m = !0; break } if (v = a - Ii(t[s], d, 0, a, a - 1, e), 0 !== v) { for (h -= v, l -= v, a -= v, f = h + 1, c = l + 1, o = 0; v > o; o++)t[f + o] = d[c + o]; if (1 >= a) { m = !0; break } } if (t[h--] = t[s--], 0 === --n) { m = !0; break } p-- } while (g >= Zp || v >= Zp); if (m) break; 0 > p && (p = 0), p += 2 } if (u = p, 1 > u && (u = 1), 1 === a) { for (h -= n, s -= n, f = h + 1, c = s + 1, o = n - 1; o >= 0; o--)t[f + o] = t[c + o]; t[h] = d[l] } else { if (0 === a) throw new Error; for (c = h - (a - 1), o = 0; a > o; o++)t[c + o] = d[o] } } else for (c = h - (a - 1), o = 0; a > o; o++)t[c + o] = d[o] } var l, h, u = Zp, c = 0, d = []; l = [], h = [], this.mergeRuns = n, this.forceMergeRuns = r, this.pushRun = i } function Ai(t, e, i, n) { i || (i = 0), n || (n = t.length); var r = n - i; if (!(2 > r)) { var a = 0; if (qp > r) return a = bi(t, i, n, e), void Mi(t, i, n, i + a, e); var o = new Ci(t, e), s = wi(r); do { if (a = bi(t, i, n, e), s > a) { var l = r; l > s && (l = s), Mi(t, i, i + l, i + a, e), a = l } o.pushRun(i, a), o.mergeRuns(), r -= a, i += a } while (0 !== r); o.forceMergeRuns() } } function Di(t, e) { return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel } function ki(t, e, i) { var n = null == e.x ? 0 : e.x, r = null == e.x2 ? 1 : e.x2, a = null == e.y ? 0 : e.y, o = null == e.y2 ? 0 : e.y2; e.global || (n = n * i.width + i.x, r = r * i.width + i.x, a = a * i.height + i.y, o = o * i.height + i.y), n = isNaN(n) ? 0 : n, r = isNaN(r) ? 1 : r, a = isNaN(a) ? 0 : a, o = isNaN(o) ? 0 : o; var s = t.createLinearGradient(n, a, r, o); return s } function Pi(t, e, i) { var n = i.width, r = i.height, a = Math.min(n, r), o = null == e.x ? .5 : e.x, s = null == e.y ? .5 : e.y, l = null == e.r ? .5 : e.r; e.global || (o = o * n + i.x, s = s * r + i.y, l *= a); var h = t.createRadialGradient(o, s, 0, o, s, l); return h } function Li() { return !1 } function Oi(t, e, i) { var n = Uf(), r = e.getWidth(), a = e.getHeight(), o = n.style; return o && (o.position = "absolute", o.left = 0, o.top = 0, o.width = r + "px", o.height = a + "px", n.setAttribute("data-zr-dom-id", t)), n.width = r * i, n.height = a * i, n } function Ei(t) { if ("string" == typeof t) { var e = hg.get(t); return e && e.image } return t } function zi(t, e, i, n, r) { if (t) { if ("string" == typeof t) { if (e && e.__zrImageSrc === t || !i) return e; var a = hg.get(t), o = { hostEl: i, cb: n, cbPayload: r }; return a ? (e = a.image, !Ri(e) && a.pending.push(o)) : (e = new Image, e.onload = e.onerror = Bi, hg.put(t, e.__cachedImgObj = { image: e, pending: [o] }), e.src = e.__zrImageSrc = t), e } return t } return e } function Bi() { var t = this.__cachedImgObj; this.onload = this.onerror = this.__cachedImgObj = null; for (var e = 0; e < t.pending.length; e++) { var i = t.pending[e], n = i.cb; n && n(this, i.cbPayload), i.hostEl.dirty() } t.pending.length = 0 } function Ri(t) { return t && t.width && t.height } function Ni(t, e) { gg[t] = e } function Fi(t, e) { e = e || pg; var i = t + ":" + e; if (ug[i]) return ug[i]; for (var n = (t + "").split("\n"), r = 0, a = 0, o = n.length; o > a; a++)r = Math.max($i(n[a], e).width, r); return cg > dg && (cg = 0, ug = {}), cg++, ug[i] = r, r } function Vi(t, e, i, n, r, a, o, s) { return o ? Gi(t, e, i, n, r, a, o, s) : Hi(t, e, i, n, r, a, s) } function Hi(t, e, i, n, r, a, o) { var s = Qi(t, e, r, a, o), l = Fi(t, e); r && (l += r[1] + r[3]); var h = s.outerHeight, u = Wi(0, l, i), c = Xi(0, h, n), d = new xi(u, c, l, h); return d.lineHeight = s.lineHeight, d } function Gi(t, e, i, n, r, a, o, s) { var l = Ji(t, { rich: o, truncate: s, font: e, textAlign: i, textPadding: r, textLineHeight: a }), h = l.outerWidth, u = l.outerHeight, c = Wi(0, h, i), d = Xi(0, u, n); return new xi(c, d, h, u) } function Wi(t, e, i) { return "right" === i ? t -= e : "center" === i && (t -= e / 2), t } function Xi(t, e, i) { return "middle" === i ? t -= e / 2 : "bottom" === i && (t -= e), t } function Ui(t, e, i) { var n = e.textPosition, r = e.textDistance, a = i.x, o = i.y; r = r || 0; var s = i.height, l = i.width, h = s / 2, u = "left", c = "top"; switch (n) { case "left": a -= r, o += h, u = "right", c = "middle"; break; case "right": a += r + l, o += h, c = "middle"; break; case "top": a += l / 2, o -= r, u = "center", c = "bottom"; break; case "bottom": a += l / 2, o += s + r, u = "center"; break; case "inside": a += l / 2, o += h, u = "center", c = "middle"; break; case "insideLeft": a += r, o += h, c = "middle"; break; case "insideRight": a += l - r, o += h, u = "right", c = "middle"; break; case "insideTop": a += l / 2, o += r, u = "center"; break; case "insideBottom": a += l / 2, o += s - r, u = "center", c = "bottom"; break; case "insideTopLeft": a += r, o += r; break; case "insideTopRight": a += l - r, o += r, u = "right"; break; case "insideBottomLeft": a += r, o += s - r, c = "bottom"; break; case "insideBottomRight": a += l - r, o += s - r, u = "right", c = "bottom" }return t = t || {}, t.x = a, t.y = o, t.textAlign = u, t.textVerticalAlign = c, t } function Yi(t, e, i, n, r) { if (!e) return ""; var a = (t + "").split("\n"); r = ji(e, i, n, r); for (var o = 0, s = a.length; s > o; o++)a[o] = qi(a[o], r); return a.join("\n") } function ji(t, e, i, n) { n = o({}, n), n.font = e; var i = D(i, "..."); n.maxIterations = D(n.maxIterations, 2); var r = n.minChar = D(n.minChar, 0); n.cnCharWidth = Fi("国", e); var a = n.ascCharWidth = Fi("a", e); n.placeholder = D(n.placeholder, ""); for (var s = t = Math.max(0, t - 1), l = 0; r > l && s >= a; l++)s -= a; var h = Fi(i, e); return h > s && (i = "", h = 0), s = t - h, n.ellipsis = i, n.ellipsisWidth = h, n.contentWidth = s, n.containerWidth = t, n } function qi(t, e) { var i = e.containerWidth, n = e.font, r = e.contentWidth; if (!i) return ""; var a = Fi(t, n); if (i >= a) return t; for (var o = 0; ; o++) { if (r >= a || o >= e.maxIterations) { t += e.ellipsis; break } var s = 0 === o ? Zi(t, r, e.ascCharWidth, e.cnCharWidth) : a > 0 ? Math.floor(t.length * r / a) : 0; t = t.substr(0, s), a = Fi(t, n) } return "" === t && (t = e.placeholder), t } function Zi(t, e, i, n) { for (var r = 0, a = 0, o = t.length; o > a && e > r; a++) { var s = t.charCodeAt(a); r += s >= 0 && 127 >= s ? i : n } return a } function Ki(t) { return Fi("国", t) } function $i(t, e) { return gg.measureText(t, e) } function Qi(t, e, i, n, r) { null != t && (t += ""); var a = D(n, Ki(e)), o = t ? t.split("\n") : [], s = o.length * a, l = s, h = !0; if (i && (l += i[0] + i[2]), t && r) { h = !1; var u = r.outerHeight, c = r.outerWidth; if (null != u && l > u) t = "", o = []; else if (null != c) for (var d = ji(c - (i ? i[1] + i[3] : 0), e, r.ellipsis, { minChar: r.minChar, placeholder: r.placeholder }), f = 0, p = o.length; p > f; f++)o[f] = qi(o[f], d) } return { lines: o, height: s, outerHeight: l, lineHeight: a, canCacheByTextString: h } } function Ji(t, e) { var i = { lines: [], width: 0, height: 0 }; if (null != t && (t += ""), !t) return i; for (var n, r = fg.lastIndex = 0; null != (n = fg.exec(t));) { var a = n.index; a > r && tn(i, t.substring(r, a)), tn(i, n[2], n[1]), r = fg.lastIndex } r < t.length && tn(i, t.substring(r, t.length)); var o = i.lines, s = 0, l = 0, h = [], u = e.textPadding, c = e.truncate, d = c && c.outerWidth, f = c && c.outerHeight; u && (null != d && (d -= u[1] + u[3]), null != f && (f -= u[0] + u[2])); for (var p = 0; p < o.length; p++) { for (var g = o[p], v = 0, m = 0, y = 0; y < g.tokens.length; y++) { var _ = g.tokens[y], x = _.styleName && e.rich[_.styleName] || {}, w = _.textPadding = x.textPadding, b = _.font = x.font || e.font, S = _.textHeight = D(x.textHeight, Ki(b)); if (w && (S += w[0] + w[2]), _.height = S, _.lineHeight = k(x.textLineHeight, e.textLineHeight, S), _.textAlign = x && x.textAlign || e.textAlign, _.textVerticalAlign = x && x.textVerticalAlign || "middle", null != f && s + _.lineHeight > f) return { lines: [], width: 0, height: 0 }; _.textWidth = Fi(_.text, b); var M = x.textWidth, I = null == M || "auto" === M; if ("string" == typeof M && "%" === M.charAt(M.length - 1)) _.percentWidth = M, h.push(_), M = 0; else { if (I) { M = _.textWidth; var T = x.textBackgroundColor, C = T && T.image; C && (C = Ei(C), Ri(C) && (M = Math.max(M, C.width * S / C.height))) } var A = w ? w[1] + w[3] : 0; M += A; var P = null != d ? d - m : null; null != P && M > P && (!I || A > P ? (_.text = "", _.textWidth = M = 0) : (_.text = Yi(_.text, P - A, b, c.ellipsis, { minChar: c.minChar }), _.textWidth = Fi(_.text, b), M = _.textWidth + A)) } m += _.width = M, x && (v = Math.max(v, _.lineHeight)) } g.width = m, g.lineHeight = v, s += v, l = Math.max(l, m) } i.outerWidth = i.width = D(e.textWidth, l), i.outerHeight = i.height = D(e.textHeight, s), u && (i.outerWidth += u[1] + u[3], i.outerHeight += u[0] + u[2]); for (var p = 0; p < h.length; p++) { var _ = h[p], L = _.percentWidth; _.width = parseInt(L, 10) / 100 * l } return i } function tn(t, e, i) { for (var n = "" === e, r = e.split("\n"), a = t.lines, o = 0; o < r.length; o++) { var s = r[o], l = { styleName: i, text: s, isLineHolder: !s && !n }; if (o) a.push({ tokens: [l] }); else { var h = (a[a.length - 1] || (a[0] = { tokens: [] })).tokens, u = h.length; 1 === u && h[0].isLineHolder ? h[0] = l : (s || !u || n) && h.push(l) } } } function en(t) { var e = (t.fontSize || t.fontFamily) && [t.fontStyle, t.fontWeight, (t.fontSize || 12) + "px", t.fontFamily || "sans-serif"].join(" "); return e && E(e) || t.textFont || t.font } function nn(t, e) { var i, n, r, a, o = e.x, s = e.y, l = e.width, h = e.height, u = e.r; 0 > l && (o += l, l = -l), 0 > h && (s += h, h = -h), "number" == typeof u ? i = n = r = a = u : u instanceof Array ? 1 === u.length ? i = n = r = a = u[0] : 2 === u.length ? (i = r = u[0], n = a = u[1]) : 3 === u.length ? (i = u[0], n = a = u[1], r = u[2]) : (i = u[0], n = u[1], r = u[2], a = u[3]) : i = n = r = a = 0; var c; i + n > l && (c = i + n, i *= l / c, n *= l / c), r + a > l && (c = r + a, r *= l / c, a *= l / c), n + r > h && (c = n + r, n *= h / c, r *= h / c), i + a > h && (c = i + a, i *= h / c, a *= h / c), t.moveTo(o + i, s), t.lineTo(o + l - n, s), 0 !== n && t.arc(o + l - n, s + n, n, -Math.PI / 2, 0), t.lineTo(o + l, s + h - r), 0 !== r && t.arc(o + l - r, s + h - r, r, 0, Math.PI / 2), t.lineTo(o + a, s + h), 0 !== a && t.arc(o + a, s + h - a, a, Math.PI / 2, Math.PI), t.lineTo(o, s + i), 0 !== i && t.arc(o + i, s + i, i, Math.PI, 1.5 * Math.PI) } function rn(t) { return an(t), f(t.rich, an), t } function an(t) { if (t) { t.font = en(t); var e = t.textAlign; "middle" === e && (e = "center"), t.textAlign = null == e || mg[e] ? e : "left"; var i = t.textVerticalAlign || t.textBaseline; "center" === i && (i = "middle"), t.textVerticalAlign = null == i || yg[i] ? i : "top"; var n = t.textPadding; n && (t.textPadding = L(t.textPadding)) } } function on(t, e, i, n, r, a) { n.rich ? ln(t, e, i, n, r, a) : sn(t, e, i, n, r, a) } function sn(t, e, i, n, r, a) { var o, s = dn(n), l = !1, h = e.__attrCachedBy === Jp.PLAIN_TEXT; a !== tg ? (a && (o = a.style, l = !s && h && o), e.__attrCachedBy = s ? Jp.NONE : Jp.PLAIN_TEXT) : h && (e.__attrCachedBy = Jp.NONE); var u = n.font || vg; l && u === (o.font || vg) || (e.font = u); var c = t.__computedFont; t.__styleFont !== u && (t.__styleFont = u, c = t.__computedFont = e.font); var d = n.textPadding, f = n.textLineHeight, p = t.__textCotentBlock; (!p || t.__dirtyText) && (p = t.__textCotentBlock = Qi(i, c, d, f, n.truncate)); var g = p.outerHeight, v = p.lines, m = p.lineHeight, y = gn(wg, t, n, r), _ = y.baseX, x = y.baseY, w = y.textAlign || "left", b = y.textVerticalAlign; un(e, n, r, _, x); var S = Xi(x, g, b), M = _, I = S; if (s || d) { var T = Fi(i, c), C = T; d && (C += d[1] + d[3]); var A = Wi(_, C, w); s && fn(t, e, n, A, S, C, g), d && (M = xn(_, w, d), I += d[0]) } e.textAlign = w, e.textBaseline = "middle", e.globalAlpha = n.opacity || 1; for (var D = 0; D < _g.length; D++) { var k = _g[D], P = k[0], L = k[1], O = n[P]; l && O === o[P] || (e[L] = Qp(e, L, O || k[2])) } I += m / 2; var E = n.textStrokeWidth, z = l ? o.textStrokeWidth : null, B = !l || E !== z, R = !l || B || n.textStroke !== o.textStroke, N = mn(n.textStroke, E), F = yn(n.textFill); if (N && (B && (e.lineWidth = E), R && (e.strokeStyle = N)), F && (l && n.textFill === o.textFill || (e.fillStyle = F)), 1 === v.length) N && e.strokeText(v[0], M, I), F && e.fillText(v[0], M, I); else for (var D = 0; D < v.length; D++)N && e.strokeText(v[D], M, I), F && e.fillText(v[D], M, I), I += m } function ln(t, e, i, n, r, a) { a !== tg && (e.__attrCachedBy = Jp.NONE); var o = t.__textCotentBlock; (!o || t.__dirtyText) && (o = t.__textCotentBlock = Ji(i, n)), hn(t, e, o, n, r) } function hn(t, e, i, n, r) { var a = i.width, o = i.outerWidth, s = i.outerHeight, l = n.textPadding, h = gn(wg, t, n, r), u = h.baseX, c = h.baseY, d = h.textAlign, f = h.textVerticalAlign; un(e, n, r, u, c); var p = Wi(u, o, d), g = Xi(c, s, f), v = p, m = g; l && (v += l[3], m += l[0]); var y = v + a; dn(n) && fn(t, e, n, p, g, o, s); for (var _ = 0; _ < i.lines.length; _++) { for (var x, w = i.lines[_], b = w.tokens, S = b.length, M = w.lineHeight, I = w.width, T = 0, C = v, A = y, D = S - 1; S > T && (x = b[T], !x.textAlign || "left" === x.textAlign);)cn(t, e, x, n, M, m, C, "left"), I -= x.width, C += x.width, T++; for (; D >= 0 && (x = b[D], "right" === x.textAlign);)cn(t, e, x, n, M, m, A, "right"), I -= x.width, A -= x.width, D--; for (C += (a - (C - v) - (y - A) - I) / 2; D >= T;)x = b[T], cn(t, e, x, n, M, m, C + x.width / 2, "center"), C += x.width, T++; m += M } } function un(t, e, i, n, r) { if (i && e.textRotation) { var a = e.textOrigin; "center" === a ? (n = i.width / 2 + i.x, r = i.height / 2 + i.y) : a && (n = a[0] + i.x, r = a[1] + i.y), t.translate(n, r), t.rotate(-e.textRotation), t.translate(-n, -r) } } function cn(t, e, i, n, r, a, o, s) {
  3. var l = n.rich[i.styleName] || {}; l.text = i.text; var h = i.textVerticalAlign, u = a + r / 2; "top" === h ? u = a + i.height / 2 : "bottom" === h && (u = a + r - i.height / 2), !i.isLineHolder && dn(l) && fn(t, e, l, "right" === s ? o - i.width : "center" === s ? o - i.width / 2 : o, u - i.height / 2, i.width, i.height); var c = i.textPadding; c && (o = xn(o, s, c), u -= i.height / 2 - c[2] - i.textHeight / 2), vn(e, "shadowBlur", k(l.textShadowBlur, n.textShadowBlur, 0)), vn(e, "shadowColor", l.textShadowColor || n.textShadowColor || "transparent"), vn(e, "shadowOffsetX", k(l.textShadowOffsetX, n.textShadowOffsetX, 0)), vn(e, "shadowOffsetY", k(l.textShadowOffsetY, n.textShadowOffsetY, 0)), vn(e, "textAlign", s), vn(e, "textBaseline", "middle"), vn(e, "font", i.font || vg);
  4. var d = mn(l.textStroke || n.textStroke, p), f = yn(l.textFill || n.textFill), p = D(l.textStrokeWidth, n.textStrokeWidth); d && (vn(e, "lineWidth", p), vn(e, "strokeStyle", d), e.strokeText(i.text, o, u)), f && (vn(e, "fillStyle", f), e.fillText(i.text, o, u))
  5. } function dn(t) { return !!(t.textBackgroundColor || t.textBorderWidth && t.textBorderColor) } function fn(t, e, i, n, r, a, o) { var s = i.textBackgroundColor, l = i.textBorderWidth, h = i.textBorderColor, u = b(s); if (vn(e, "shadowBlur", i.textBoxShadowBlur || 0), vn(e, "shadowColor", i.textBoxShadowColor || "transparent"), vn(e, "shadowOffsetX", i.textBoxShadowOffsetX || 0), vn(e, "shadowOffsetY", i.textBoxShadowOffsetY || 0), u || l && h) { e.beginPath(); var c = i.textBorderRadius; c ? nn(e, { x: n, y: r, width: a, height: o, r: c }) : e.rect(n, r, a, o), e.closePath() } if (u) if (vn(e, "fillStyle", s), null != i.fillOpacity) { var d = e.globalAlpha; e.globalAlpha = i.fillOpacity * i.opacity, e.fill(), e.globalAlpha = d } else e.fill(); else if (S(s)) { var f = s.image; f = zi(f, null, t, pn, s), f && Ri(f) && e.drawImage(f, n, r, a, o) } if (l && h) if (vn(e, "lineWidth", l), vn(e, "strokeStyle", h), null != i.strokeOpacity) { var d = e.globalAlpha; e.globalAlpha = i.strokeOpacity * i.opacity, e.stroke(), e.globalAlpha = d } else e.stroke() } function pn(t, e) { e.image = t } function gn(t, e, i, n) { var r = i.x || 0, a = i.y || 0, o = i.textAlign, s = i.textVerticalAlign; if (n) { var l = i.textPosition; if (l instanceof Array) r = n.x + _n(l[0], n.width), a = n.y + _n(l[1], n.height); else { var h = e && e.calculateTextPosition ? e.calculateTextPosition(xg, i, n) : Ui(xg, i, n); r = h.x, a = h.y, o = o || h.textAlign, s = s || h.textVerticalAlign } var u = i.textOffset; u && (r += u[0], a += u[1]) } return t = t || {}, t.baseX = r, t.baseY = a, t.textAlign = o, t.textVerticalAlign = s, t } function vn(t, e, i) { return t[e] = Qp(t, e, i), t[e] } function mn(t, e) { return null == t || 0 >= e || "transparent" === t || "none" === t ? null : t.image || t.colorStops ? "#000" : t } function yn(t) { return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t } function _n(t, e) { return "string" == typeof t ? t.lastIndexOf("%") >= 0 ? parseFloat(t) / 100 * e : parseFloat(t) : t } function xn(t, e, i) { return "right" === e ? t - i[1] : "center" === e ? t + i[3] / 2 - i[1] / 2 : t + i[3] } function wn(t, e) { return null != t && (t || e.textBackgroundColor || e.textBorderWidth && e.textBorderColor || e.textPadding) } function bn(t) { t = t || {}, Wp.call(this, t); for (var e in t) t.hasOwnProperty(e) && "style" !== e && (this[e] = t[e]); this.style = new ig(t.style, this), this._rect = null, this.__clipPaths = null } function Sn(t) { bn.call(this, t) } function Mn(t) { return parseInt(t, 10) } function In(t) { return t ? t.__builtin__ ? !0 : "function" != typeof t.resize || "function" != typeof t.refresh ? !1 : !0 : !1 } function Tn(t, e, i) { return Ag.copy(t.getBoundingRect()), t.transform && Ag.applyTransform(t.transform), Dg.width = e, Dg.height = i, !Ag.intersect(Dg) } function Cn(t, e) { if (t === e) return !1; if (!t || !e || t.length !== e.length) return !0; for (var i = 0; i < t.length; i++)if (t[i] !== e[i]) return !0; return !1 } function An(t, e) { for (var i = 0; i < t.length; i++) { var n = t[i]; n.setTransform(e), e.beginPath(), n.buildPath(e, n.shape), e.clip(), n.restoreTransform(e) } } function Dn(t, e) { var i = document.createElement("div"); return i.style.cssText = ["position:relative", "width:" + t + "px", "height:" + e + "px", "padding:0", "margin:0", "border-width:0"].join(";") + ";", i } function kn(t) { return "mousewheel" === t && Ef.browser.firefox ? "DOMMouseScroll" : t } function Pn(t) { t._touching = !0, clearTimeout(t._touchTimer), t._touchTimer = setTimeout(function () { t._touching = !1 }, 700) } function Ln(t) { var e = t.pointerType; return "pen" === e || "touch" === e } function On(t) { function e(t, e) { return function () { return e._touching ? void 0 : t.apply(e, arguments) } } f(Eg, function (e) { t._handlers[e] = y(Rg[e], t) }), f(Bg, function (e) { t._handlers[e] = y(Rg[e], t) }), f(Og, function (i) { t._handlers[i] = e(Rg[i], t) }) } function En(t) { function e(e, i) { f(e, function (e) { _e(t, kn(e), i._handlers[e]) }, i) } ip.call(this), this.dom = t, this._touching = !1, this._touchTimer, this._handlers = {}, On(this), Ef.pointerEventsSupported ? e(Bg, this) : (Ef.touchEventsSupported && e(Eg, this), e(Og, this)) } function zn(t, e) { var i = new Wg(Lf(), t, e); return Hg[i.id] = i, i } function Bn(t) { if (t) t.dispose(); else { for (var e in Hg) Hg.hasOwnProperty(e) && Hg[e].dispose(); Hg = {} } return this } function Rn(t) { return Hg[t] } function Nn(t, e) { Vg[t] = e } function Fn(t) { delete Hg[t] } function Vn(t) { return t instanceof Array ? t : null == t ? [] : [t] } function Hn(t, e, i) { if (t) { t[e] = t[e] || {}, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {}; for (var n = 0, r = i.length; r > n; n++) { var a = i[n]; !t.emphasis[e].hasOwnProperty(a) && t[e].hasOwnProperty(a) && (t.emphasis[e][a] = t[e][a]) } } } function Gn(t) { return !Yg(t) || jg(t) || t instanceof Date ? t : t.value } function Wn(t) { return Yg(t) && !(t instanceof Array) } function Xn(t, e) { e = (e || []).slice(); var i = p(t || [], function (t) { return { exist: t } }); return Ug(e, function (t, n) { if (Yg(t)) { for (var r = 0; r < i.length; r++)if (!i[r].option && null != t.id && i[r].exist.id === t.id + "") return i[r].option = t, void (e[n] = null); for (var r = 0; r < i.length; r++) { var a = i[r].exist; if (!(i[r].option || null != a.id && null != t.id || null == t.name || jn(t) || jn(a) || a.name !== t.name + "")) return i[r].option = t, void (e[n] = null) } } }), Ug(e, function (t) { if (Yg(t)) { for (var e = 0; e < i.length; e++) { var n = i[e].exist; if (!i[e].option && !jn(n) && null == t.id) { i[e].option = t; break } } e >= i.length && i.push({ option: t }) } }), i } function Un(t) { var e = N(); Ug(t, function (t) { var i = t.exist; i && e.set(i.id, t) }), Ug(t, function (t) { var i = t.option; O(!i || null == i.id || !e.get(i.id) || e.get(i.id) === t, "id duplicates: " + (i && i.id)), i && null != i.id && e.set(i.id, t), !t.keyInfo && (t.keyInfo = {}) }), Ug(t, function (t, i) { var n = t.exist, r = t.option, a = t.keyInfo; if (Yg(r)) { if (a.name = null != r.name ? r.name + "" : n ? n.name : qg + i, n) a.id = n.id; else if (null != r.id) a.id = r.id + ""; else { var o = 0; do a.id = "\x00" + a.name + "\x00" + o++; while (e.get(a.id)) } e.set(a.id, t) } }) } function Yn(t) { var e = t.name; return !(!e || !e.indexOf(qg)) } function jn(t) { return Yg(t) && t.id && 0 === (t.id + "").indexOf("\x00_ec_\x00") } function qn(t, e) { return null != e.dataIndexInside ? e.dataIndexInside : null != e.dataIndex ? x(e.dataIndex) ? p(e.dataIndex, function (e) { return t.indexOfRawIndex(e) }) : t.indexOfRawIndex(e.dataIndex) : null != e.name ? x(e.name) ? p(e.name, function (e) { return t.indexOfName(e) }) : t.indexOfName(e.name) : void 0 } function Zn() { var t = "__\x00ec_inner_" + Kg++ + "_" + Math.random().toFixed(5); return function (e) { return e[t] || (e[t] = {}) } } function Kn(t, e, i) { if (b(e)) { var n = {}; n[e + "Index"] = 0, e = n } var r = i && i.defaultMainType; !r || $n(e, r + "Index") || $n(e, r + "Id") || $n(e, r + "Name") || (e[r + "Index"] = 0); var a = {}; return Ug(e, function (n, r) { var n = e[r]; if ("dataIndex" === r || "dataIndexInside" === r) return void (a[r] = n); var o = r.match(/^(\w+)(Index|Id|Name)$/) || [], s = o[1], l = (o[2] || "").toLowerCase(); if (!(!s || !l || null == n || "index" === l && "none" === n || i && i.includeMainTypes && h(i.includeMainTypes, s) < 0)) { var u = { mainType: s }; ("index" !== l || "all" !== n) && (u[l] = n); var c = t.queryComponents(u); a[s + "Models"] = c, a[s + "Model"] = c[0] } }), a } function $n(t, e) { return t && t.hasOwnProperty(e) } function Qn(t, e, i) { t.setAttribute ? t.setAttribute(e, i) : t[e] = i } function Jn(t, e) { return t.getAttribute ? t.getAttribute(e) : t[e] } function tr(t) { return "auto" === t ? Ef.domSupported ? "html" : "richText" : t || "html" } function er(t) { var e = { main: "", sub: "" }; return t && (t = t.split($g), e.main = t[0] || "", e.sub = t[1] || ""), e } function ir(t) { O(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t), 'componentType "' + t + '" illegal') } function nr(t, e) { t.$constructor = t, t.extend = function (t) { kf && f(e, function (e) { t[e] || console.warn("Method `" + e + "` should be implemented" + (t.type ? " in " + t.type : "") + ".") }); var i = this, n = function () { t.$constructor ? t.$constructor.apply(this, arguments) : i.apply(this, arguments) }; return o(n.prototype, t), n.extend = this.extend, n.superCall = ar, n.superApply = or, u(n, this), n.superClass = i, n } } function rr(t) { var e = ["__\x00is_clz", Jg++, Math.random().toFixed(3)].join("_"); t.prototype[e] = !0, kf && O(!t.isInstance, 'The method "is" can not be defined.'), t.isInstance = function (t) { return !(!t || !t[e]) } } function ar(t, e) { var i = P(arguments, 2); return this.superClass.prototype[e].apply(t, i) } function or(t, e, i) { return this.superClass.prototype[e].apply(t, i) } function sr(t, e) { function i(t) { var e = n[t.main]; return e && e[Qg] || (e = n[t.main] = {}, e[Qg] = !0), e } e = e || {}; var n = {}; if (t.registerClass = function (t, e) { if (e) if (ir(e), e = er(e), e.sub) { if (e.sub !== Qg) { var r = i(e); r[e.sub] = t } } else kf && n[e.main] && console.warn(e.main + " exists."), n[e.main] = t; return t }, t.getClass = function (t, e, i) { var r = n[t]; if (r && r[Qg] && (r = e ? r[e] : null), i && !r) throw new Error(e ? "Component " + t + "." + (e || "") + " not exists. Load it first." : t + ".type should be specified."); return r }, t.getClassesByMainType = function (t) { t = er(t); var e = [], i = n[t.main]; return i && i[Qg] ? f(i, function (t, i) { i !== Qg && e.push(t) }) : e.push(i), e }, t.hasClass = function (t) { return t = er(t), !!n[t.main] }, t.getAllClassMainTypes = function () { var t = []; return f(n, function (e, i) { t.push(i) }), t }, t.hasSubTypes = function (t) { t = er(t); var e = n[t.main]; return e && e[Qg] }, t.parseClassType = er, e.registerWhenExtend) { var r = t.extend; r && (t.extend = function (e) { var i = r.call(this, e); return t.registerClass(i, e.type) }) } return t } function lr(t) { return t > -sv && sv > t } function hr(t) { return t > sv || -sv > t } function ur(t, e, i, n, r) { var a = 1 - r; return a * a * (a * t + 3 * r * e) + r * r * (r * n + 3 * a * i) } function cr(t, e, i, n, r) { var a = 1 - r; return 3 * (((e - t) * a + 2 * (i - e) * r) * a + (n - i) * r * r) } function dr(t, e, i, n, r, a) { var o = n + 3 * (e - i) - t, s = 3 * (i - 2 * e + t), l = 3 * (e - t), h = t - r, u = s * s - 3 * o * l, c = s * l - 9 * o * h, d = l * l - 3 * s * h, f = 0; if (lr(u) && lr(c)) if (lr(s)) a[0] = 0; else { var p = -l / s; p >= 0 && 1 >= p && (a[f++] = p) } else { var g = c * c - 4 * u * d; if (lr(g)) { var v = c / u, p = -s / o + v, m = -v / 2; p >= 0 && 1 >= p && (a[f++] = p), m >= 0 && 1 >= m && (a[f++] = m) } else if (g > 0) { var y = ov(g), _ = u * s + 1.5 * o * (-c + y), x = u * s + 1.5 * o * (-c - y); _ = 0 > _ ? -av(-_, uv) : av(_, uv), x = 0 > x ? -av(-x, uv) : av(x, uv); var p = (-s - (_ + x)) / (3 * o); p >= 0 && 1 >= p && (a[f++] = p) } else { var w = (2 * u * s - 3 * o * c) / (2 * ov(u * u * u)), b = Math.acos(w) / 3, S = ov(u), M = Math.cos(b), p = (-s - 2 * S * M) / (3 * o), m = (-s + S * (M + hv * Math.sin(b))) / (3 * o), I = (-s + S * (M - hv * Math.sin(b))) / (3 * o); p >= 0 && 1 >= p && (a[f++] = p), m >= 0 && 1 >= m && (a[f++] = m), I >= 0 && 1 >= I && (a[f++] = I) } } return f } function fr(t, e, i, n, r) { var a = 6 * i - 12 * e + 6 * t, o = 9 * e + 3 * n - 3 * t - 9 * i, s = 3 * e - 3 * t, l = 0; if (lr(o)) { if (hr(a)) { var h = -s / a; h >= 0 && 1 >= h && (r[l++] = h) } } else { var u = a * a - 4 * o * s; if (lr(u)) r[0] = -a / (2 * o); else if (u > 0) { var c = ov(u), h = (-a + c) / (2 * o), d = (-a - c) / (2 * o); h >= 0 && 1 >= h && (r[l++] = h), d >= 0 && 1 >= d && (r[l++] = d) } } return l } function pr(t, e, i, n, r, a) { var o = (e - t) * r + t, s = (i - e) * r + e, l = (n - i) * r + i, h = (s - o) * r + o, u = (l - s) * r + s, c = (u - h) * r + h; a[0] = t, a[1] = o, a[2] = h, a[3] = c, a[4] = c, a[5] = u, a[6] = l, a[7] = n } function gr(t, e, i, n, r, a, o, s, l, h, u) { var c, d, f, p, g, v = .005, m = 1 / 0; cv[0] = l, cv[1] = h; for (var y = 0; 1 > y; y += .05)dv[0] = ur(t, i, r, o, y), dv[1] = ur(e, n, a, s, y), p = Jf(cv, dv), m > p && (c = y, m = p); m = 1 / 0; for (var _ = 0; 32 > _ && !(lv > v); _++)d = c - v, f = c + v, dv[0] = ur(t, i, r, o, d), dv[1] = ur(e, n, a, s, d), p = Jf(dv, cv), d >= 0 && m > p ? (c = d, m = p) : (fv[0] = ur(t, i, r, o, f), fv[1] = ur(e, n, a, s, f), g = Jf(fv, cv), 1 >= f && m > g ? (c = f, m = g) : v *= .5); return u && (u[0] = ur(t, i, r, o, c), u[1] = ur(e, n, a, s, c)), ov(m) } function vr(t, e, i, n) { var r = 1 - n; return r * (r * t + 2 * n * e) + n * n * i } function mr(t, e, i, n) { return 2 * ((1 - n) * (e - t) + n * (i - e)) } function yr(t, e, i, n, r) { var a = t - 2 * e + i, o = 2 * (e - t), s = t - n, l = 0; if (lr(a)) { if (hr(o)) { var h = -s / o; h >= 0 && 1 >= h && (r[l++] = h) } } else { var u = o * o - 4 * a * s; if (lr(u)) { var h = -o / (2 * a); h >= 0 && 1 >= h && (r[l++] = h) } else if (u > 0) { var c = ov(u), h = (-o + c) / (2 * a), d = (-o - c) / (2 * a); h >= 0 && 1 >= h && (r[l++] = h), d >= 0 && 1 >= d && (r[l++] = d) } } return l } function _r(t, e, i) { var n = t + i - 2 * e; return 0 === n ? .5 : (t - e) / n } function xr(t, e, i, n, r) { var a = (e - t) * n + t, o = (i - e) * n + e, s = (o - a) * n + a; r[0] = t, r[1] = a, r[2] = s, r[3] = s, r[4] = o, r[5] = i } function wr(t, e, i, n, r, a, o, s, l) { var h, u = .005, c = 1 / 0; cv[0] = o, cv[1] = s; for (var d = 0; 1 > d; d += .05) { dv[0] = vr(t, i, r, d), dv[1] = vr(e, n, a, d); var f = Jf(cv, dv); c > f && (h = d, c = f) } c = 1 / 0; for (var p = 0; 32 > p && !(lv > u); p++) { var g = h - u, v = h + u; dv[0] = vr(t, i, r, g), dv[1] = vr(e, n, a, g); var f = Jf(dv, cv); if (g >= 0 && c > f) h = g, c = f; else { fv[0] = vr(t, i, r, v), fv[1] = vr(e, n, a, v); var m = Jf(fv, cv); 1 >= v && c > m ? (h = v, c = m) : u *= .5 } } return l && (l[0] = vr(t, i, r, h), l[1] = vr(e, n, a, h)), ov(c) } function br(t, e, i) { if (0 !== t.length) { var n, r = t[0], a = r[0], o = r[0], s = r[1], l = r[1]; for (n = 1; n < t.length; n++)r = t[n], a = pv(a, r[0]), o = gv(o, r[0]), s = pv(s, r[1]), l = gv(l, r[1]); e[0] = a, e[1] = s, i[0] = o, i[1] = l } } function Sr(t, e, i, n, r, a) { r[0] = pv(t, i), r[1] = pv(e, n), a[0] = gv(t, i), a[1] = gv(e, n) } function Mr(t, e, i, n, r, a, o, s, l, h) { var u, c = fr, d = ur, f = c(t, i, r, o, bv); for (l[0] = 1 / 0, l[1] = 1 / 0, h[0] = -1 / 0, h[1] = -1 / 0, u = 0; f > u; u++) { var p = d(t, i, r, o, bv[u]); l[0] = pv(p, l[0]), h[0] = gv(p, h[0]) } for (f = c(e, n, a, s, Sv), u = 0; f > u; u++) { var g = d(e, n, a, s, Sv[u]); l[1] = pv(g, l[1]), h[1] = gv(g, h[1]) } l[0] = pv(t, l[0]), h[0] = gv(t, h[0]), l[0] = pv(o, l[0]), h[0] = gv(o, h[0]), l[1] = pv(e, l[1]), h[1] = gv(e, h[1]), l[1] = pv(s, l[1]), h[1] = gv(s, h[1]) } function Ir(t, e, i, n, r, a, o, s) { var l = _r, h = vr, u = gv(pv(l(t, i, r), 1), 0), c = gv(pv(l(e, n, a), 1), 0), d = h(t, i, r, u), f = h(e, n, a, c); o[0] = pv(t, r, d), o[1] = pv(e, a, f), s[0] = gv(t, r, d), s[1] = gv(e, a, f) } function Tr(t, e, i, n, r, a, o, s, l) { var h = oe, u = se, c = Math.abs(r - a); if (1e-4 > c % yv && c > 1e-4) return s[0] = t - i, s[1] = e - n, l[0] = t + i, void (l[1] = e + n); if (_v[0] = mv(r) * i + t, _v[1] = vv(r) * n + e, xv[0] = mv(a) * i + t, xv[1] = vv(a) * n + e, h(s, _v, xv), u(l, _v, xv), r %= yv, 0 > r && (r += yv), a %= yv, 0 > a && (a += yv), r > a && !o ? a += yv : a > r && o && (r += yv), o) { var d = a; a = r, r = d } for (var f = 0; a > f; f += Math.PI / 2)f > r && (wv[0] = mv(f) * i + t, wv[1] = vv(f) * n + e, h(s, wv, s), u(l, wv, l)) } function Cr(t, e, i, n, r, a, o) { if (0 === r) return !1; var s = r, l = 0, h = t; if (o > e + s && o > n + s || e - s > o && n - s > o || a > t + s && a > i + s || t - s > a && i - s > a) return !1; if (t === i) return Math.abs(a - t) <= s / 2; l = (e - n) / (t - i), h = (t * n - i * e) / (t - i); var u = l * a - o + h, c = u * u / (l * l + 1); return s / 2 * s / 2 >= c } function Ar(t, e, i, n, r, a, o, s, l, h, u) { if (0 === l) return !1; var c = l; if (u > e + c && u > n + c && u > a + c && u > s + c || e - c > u && n - c > u && a - c > u && s - c > u || h > t + c && h > i + c && h > r + c && h > o + c || t - c > h && i - c > h && r - c > h && o - c > h) return !1; var d = gr(t, e, i, n, r, a, o, s, h, u, null); return c / 2 >= d } function Dr(t, e, i, n, r, a, o, s, l) { if (0 === o) return !1; var h = o; if (l > e + h && l > n + h && l > a + h || e - h > l && n - h > l && a - h > l || s > t + h && s > i + h && s > r + h || t - h > s && i - h > s && r - h > s) return !1; var u = wr(t, e, i, n, r, a, s, l, null); return h / 2 >= u } function kr(t) { return t %= Rv, 0 > t && (t += Rv), t } function Pr(t, e, i, n, r, a, o, s, l) { if (0 === o) return !1; var h = o; s -= t, l -= e; var u = Math.sqrt(s * s + l * l); if (u - h > i || i > u + h) return !1; if (Math.abs(n - r) % Nv < 1e-4) return !0; if (a) { var c = n; n = kr(r), r = kr(c) } else n = kr(n), r = kr(r); n > r && (r += Nv); var d = Math.atan2(l, s); return 0 > d && (d += Nv), d >= n && r >= d || d + Nv >= n && r >= d + Nv } function Lr(t, e, i, n, r, a) { if (a > e && a > n || e > a && n > a) return 0; if (n === e) return 0; var o = e > n ? 1 : -1, s = (a - e) / (n - e); (1 === s || 0 === s) && (o = e > n ? .5 : -.5); var l = s * (i - t) + t; return l === r ? 1 / 0 : l > r ? o : 0 } function Or(t, e) { return Math.abs(t - e) < Hv } function Er() { var t = Wv[0]; Wv[0] = Wv[1], Wv[1] = t } function zr(t, e, i, n, r, a, o, s, l, h) { if (h > e && h > n && h > a && h > s || e > h && n > h && a > h && s > h) return 0; var u = dr(e, n, a, s, h, Gv); if (0 === u) return 0; for (var c, d, f = 0, p = -1, g = 0; u > g; g++) { var v = Gv[g], m = 0 === v || 1 === v ? .5 : 1, y = ur(t, i, r, o, v); l > y || (0 > p && (p = fr(e, n, a, s, Wv), Wv[1] < Wv[0] && p > 1 && Er(), c = ur(e, n, a, s, Wv[0]), p > 1 && (d = ur(e, n, a, s, Wv[1]))), f += 2 === p ? v < Wv[0] ? e > c ? m : -m : v < Wv[1] ? c > d ? m : -m : d > s ? m : -m : v < Wv[0] ? e > c ? m : -m : c > s ? m : -m) } return f } function Br(t, e, i, n, r, a, o, s) { if (s > e && s > n && s > a || e > s && n > s && a > s) return 0; var l = yr(e, n, a, s, Gv); if (0 === l) return 0; var h = _r(e, n, a); if (h >= 0 && 1 >= h) { for (var u = 0, c = vr(e, n, a, h), d = 0; l > d; d++) { var f = 0 === Gv[d] || 1 === Gv[d] ? .5 : 1, p = vr(t, i, r, Gv[d]); o > p || (u += Gv[d] < h ? e > c ? f : -f : c > a ? f : -f) } return u } var f = 0 === Gv[0] || 1 === Gv[0] ? .5 : 1, p = vr(t, i, r, Gv[0]); return o > p ? 0 : e > a ? f : -f } function Rr(t, e, i, n, r, a, o, s) { if (s -= e, s > i || -i > s) return 0; var l = Math.sqrt(i * i - s * s); Gv[0] = -l, Gv[1] = l; var h = Math.abs(n - r); if (1e-4 > h) return 0; if (1e-4 > h % Vv) { n = 0, r = Vv; var u = a ? 1 : -1; return o >= Gv[0] + t && o <= Gv[1] + t ? u : 0 } if (a) { var l = n; n = kr(r), r = kr(l) } else n = kr(n), r = kr(r); n > r && (r += Vv); for (var c = 0, d = 0; 2 > d; d++) { var f = Gv[d]; if (f + t > o) { var p = Math.atan2(s, f), u = a ? 1 : -1; 0 > p && (p = Vv + p), (p >= n && r >= p || p + Vv >= n && r >= p + Vv) && (p > Math.PI / 2 && p < 1.5 * Math.PI && (u = -u), c += u) } } return c } function Nr(t, e, i, n, r) { for (var a = 0, o = 0, s = 0, l = 0, h = 0, u = 0; u < t.length;) { var c = t[u++]; switch (c === Fv.M && u > 1 && (i || (a += Lr(o, s, l, h, n, r))), 1 === u && (o = t[u], s = t[u + 1], l = o, h = s), c) { case Fv.M: l = t[u++], h = t[u++], o = l, s = h; break; case Fv.L: if (i) { if (Cr(o, s, t[u], t[u + 1], e, n, r)) return !0 } else a += Lr(o, s, t[u], t[u + 1], n, r) || 0; o = t[u++], s = t[u++]; break; case Fv.C: if (i) { if (Ar(o, s, t[u++], t[u++], t[u++], t[u++], t[u], t[u + 1], e, n, r)) return !0 } else a += zr(o, s, t[u++], t[u++], t[u++], t[u++], t[u], t[u + 1], n, r) || 0; o = t[u++], s = t[u++]; break; case Fv.Q: if (i) { if (Dr(o, s, t[u++], t[u++], t[u], t[u + 1], e, n, r)) return !0 } else a += Br(o, s, t[u++], t[u++], t[u], t[u + 1], n, r) || 0; o = t[u++], s = t[u++]; break; case Fv.A: var d = t[u++], f = t[u++], p = t[u++], g = t[u++], v = t[u++], m = t[u++]; u += 1; var y = 1 - t[u++], _ = Math.cos(v) * p + d, x = Math.sin(v) * g + f; u > 1 ? a += Lr(o, s, _, x, n, r) : (l = _, h = x); var w = (n - d) * g / p + d; if (i) { if (Pr(d, f, g, v, v + m, y, e, w, r)) return !0 } else a += Rr(d, f, g, v, v + m, y, w, r); o = Math.cos(v + m) * p + d, s = Math.sin(v + m) * g + f; break; case Fv.R: l = o = t[u++], h = s = t[u++]; var b = t[u++], S = t[u++], _ = l + b, x = h + S; if (i) { if (Cr(l, h, _, h, e, n, r) || Cr(_, h, _, x, e, n, r) || Cr(_, x, l, x, e, n, r) || Cr(l, x, l, h, e, n, r)) return !0 } else a += Lr(_, h, _, x, n, r), a += Lr(l, x, l, h, n, r); break; case Fv.Z: if (i) { if (Cr(o, s, l, h, e, n, r)) return !0 } else a += Lr(o, s, l, h, n, r); o = l, s = h } } return i || Or(s, h) || (a += Lr(o, s, l, h, n, r) || 0), 0 !== a } function Fr(t, e, i) { return Nr(t, 0, !1, e, i) } function Vr(t, e, i, n) { return Nr(t, e, !0, i, n) } function Hr(t) { bn.call(this, t), this.path = null } function Gr(t, e, i, n, r, a, o, s, l, h, u) { var c = l * (em / 180), d = tm(c) * (t - i) / 2 + Jv(c) * (e - n) / 2, f = -1 * Jv(c) * (t - i) / 2 + tm(c) * (e - n) / 2, p = d * d / (o * o) + f * f / (s * s); p > 1 && (o *= Qv(p), s *= Qv(p)); var g = (r === a ? -1 : 1) * Qv((o * o * s * s - o * o * f * f - s * s * d * d) / (o * o * f * f + s * s * d * d)) || 0, v = g * o * f / s, m = g * -s * d / o, y = (t + i) / 2 + tm(c) * v - Jv(c) * m, _ = (e + n) / 2 + Jv(c) * v + tm(c) * m, x = rm([1, 0], [(d - v) / o, (f - m) / s]), w = [(d - v) / o, (f - m) / s], b = [(-1 * d - v) / o, (-1 * f - m) / s], S = rm(w, b); nm(w, b) <= -1 && (S = em), nm(w, b) >= 1 && (S = 0), 0 === a && S > 0 && (S -= 2 * em), 1 === a && 0 > S && (S += 2 * em), u.addData(h, y, _, o, s, x, S, c, a) } function Wr(t) { if (!t) return new Bv; for (var e, i = 0, n = 0, r = i, a = n, o = new Bv, s = Bv.CMD, l = t.match(am), h = 0; h < l.length; h++) { for (var u, c = l[h], d = c.charAt(0), f = c.match(om) || [], p = f.length, g = 0; p > g; g++)f[g] = parseFloat(f[g]); for (var v = 0; p > v;) { var m, y, _, x, w, b, S, M = i, I = n; switch (d) { case "l": i += f[v++], n += f[v++], u = s.L, o.addData(u, i, n); break; case "L": i = f[v++], n = f[v++], u = s.L, o.addData(u, i, n); break; case "m": i += f[v++], n += f[v++], u = s.M, o.addData(u, i, n), r = i, a = n, d = "l"; break; case "M": i = f[v++], n = f[v++], u = s.M, o.addData(u, i, n), r = i, a = n, d = "L"; break; case "h": i += f[v++], u = s.L, o.addData(u, i, n); break; case "H": i = f[v++], u = s.L, o.addData(u, i, n); break; case "v": n += f[v++], u = s.L, o.addData(u, i, n); break; case "V": n = f[v++], u = s.L, o.addData(u, i, n); break; case "C": u = s.C, o.addData(u, f[v++], f[v++], f[v++], f[v++], f[v++], f[v++]), i = f[v - 2], n = f[v - 1]; break; case "c": u = s.C, o.addData(u, f[v++] + i, f[v++] + n, f[v++] + i, f[v++] + n, f[v++] + i, f[v++] + n), i += f[v - 2], n += f[v - 1]; break; case "S": m = i, y = n; var T = o.len(), C = o.data; e === s.C && (m += i - C[T - 4], y += n - C[T - 3]), u = s.C, M = f[v++], I = f[v++], i = f[v++], n = f[v++], o.addData(u, m, y, M, I, i, n); break; case "s": m = i, y = n; var T = o.len(), C = o.data; e === s.C && (m += i - C[T - 4], y += n - C[T - 3]), u = s.C, M = i + f[v++], I = n + f[v++], i += f[v++], n += f[v++], o.addData(u, m, y, M, I, i, n); break; case "Q": M = f[v++], I = f[v++], i = f[v++], n = f[v++], u = s.Q, o.addData(u, M, I, i, n); break; case "q": M = f[v++] + i, I = f[v++] + n, i += f[v++], n += f[v++], u = s.Q, o.addData(u, M, I, i, n); break; case "T": m = i, y = n; var T = o.len(), C = o.data; e === s.Q && (m += i - C[T - 4], y += n - C[T - 3]), i = f[v++], n = f[v++], u = s.Q, o.addData(u, m, y, i, n); break; case "t": m = i, y = n; var T = o.len(), C = o.data; e === s.Q && (m += i - C[T - 4], y += n - C[T - 3]), i += f[v++], n += f[v++], u = s.Q, o.addData(u, m, y, i, n); break; case "A": _ = f[v++], x = f[v++], w = f[v++], b = f[v++], S = f[v++], M = i, I = n, i = f[v++], n = f[v++], u = s.A, Gr(M, I, i, n, b, S, _, x, w, u, o); break; case "a": _ = f[v++], x = f[v++], w = f[v++], b = f[v++], S = f[v++], M = i, I = n, i += f[v++], n += f[v++], u = s.A, Gr(M, I, i, n, b, S, _, x, w, u, o) } } ("z" === d || "Z" === d) && (u = s.Z, o.addData(u), i = r, n = a), e = u } return o.toStatic(), o } function Xr(t, e) { var i = Wr(t); return e = e || {}, e.buildPath = function (t) { if (t.setData) { t.setData(i.data); var e = t.getContext(); e && t.rebuildPath(e) } else { var e = t; i.rebuildPath(e) } }, e.applyTransform = function (t) { $v(i, t), this.dirty(!0) }, e } function Ur(t, e) { return new Hr(Xr(t, e)) } function Yr(t, e) { return Hr.extend(Xr(t, e)) } function jr(t, e) { for (var i = [], n = t.length, r = 0; n > r; r++) { var a = t[r]; a.path || a.createPathProxy(), a.__dirtyPath && a.buildPath(a.path, a.shape, !0), i.push(a.path) } var o = new Hr(e); return o.createPathProxy(), o.buildPath = function (t) { t.appendPath(i); var e = t.getContext(); e && t.rebuildPath(e) }, o } function qr(t, e, i, n, r, a, o) { var s = .5 * (i - t), l = .5 * (n - e); return (2 * (e - i) + s + l) * o + (-3 * (e - i) - 2 * s - l) * a + s * r + e } function Zr(t, e, i) { var n = e.points, r = e.smooth; if (n && n.length >= 2) { if (r && "spline" !== r) { var a = pm(n, r, i, e.smoothConstraint); t.moveTo(n[0][0], n[0][1]); for (var o = n.length, s = 0; (i ? o : o - 1) > s; s++) { var l = a[2 * s], h = a[2 * s + 1], u = n[(s + 1) % o]; t.bezierCurveTo(l[0], l[1], h[0], h[1], u[0], u[1]) } } else { "spline" === r && (n = fm(n, i)), t.moveTo(n[0][0], n[0][1]); for (var s = 1, c = n.length; c > s; s++)t.lineTo(n[s][0], n[s][1]) } i && t.closePath() } } function Kr(t, e, i) { var n = i && i.lineWidth; if (e && n) { var r = e.x1, a = e.x2, o = e.y1, s = e.y2; mm(2 * r) === mm(2 * a) ? t.x1 = t.x2 = Qr(r, n, !0) : (t.x1 = r, t.x2 = a), mm(2 * o) === mm(2 * s) ? t.y1 = t.y2 = Qr(o, n, !0) : (t.y1 = o, t.y2 = s) } } function $r(t, e, i) { var n = i && i.lineWidth; if (e && n) { var r = e.x, a = e.y, o = e.width, s = e.height; t.x = Qr(r, n, !0), t.y = Qr(a, n, !0), t.width = Math.max(Qr(r + o, n, !1) - t.x, 0 === o ? 0 : 1), t.height = Math.max(Qr(a + s, n, !1) - t.y, 0 === s ? 0 : 1) } } function Qr(t, e, i) { var n = mm(2 * t); return (n + mm(e)) % 2 === 0 ? n / 2 : (n + (i ? 1 : -1)) / 2 } function Jr(t, e, i) { var n = t.cpx2, r = t.cpy2; return null === n || null === r ? [(i ? cr : ur)(t.x1, t.cpx1, t.cpx2, t.x2, e), (i ? cr : ur)(t.y1, t.cpy1, t.cpy2, t.y2, e)] : [(i ? mr : vr)(t.x1, t.cpx1, t.x2, e), (i ? mr : vr)(t.y1, t.cpy1, t.y2, e)] } function ta(t) { bn.call(this, t), this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.notClear = !0 } function ea(t) { return Hr.extend(t) } function ia(t, e) { return Yr(t, e) } function na(t, e) { Fm[t] = e } function ra(t) { return Fm.hasOwnProperty(t) ? Fm[t] : void 0 } function aa(t, e, i, n) { var r = Ur(t, e); return i && ("center" === n && (i = sa(i, r.getBoundingRect())), la(r, i)), r } function oa(t, e, i) { var n = new Sn({ style: { image: t, x: e.x, y: e.y, width: e.width, height: e.height }, onload: function (t) { if ("center" === i) { var r = { width: t.width, height: t.height }; n.setStyle(sa(e, r)) } } }); return n } function sa(t, e) { var i, n = e.width / e.height, r = t.height * n; r <= t.width ? i = t.height : (r = t.width, i = r / n); var a = t.x + t.width / 2, o = t.y + t.height / 2; return { x: a - r / 2, y: o - i / 2, width: r, height: i } } function la(t, e) { if (t.applyTransform) { var i = t.getBoundingRect(), n = i.calculateTransform(e); t.applyTransform(n) } } function ha(t) { return Kr(t.shape, t.shape, t.style), t } function ua(t) { return $r(t.shape, t.shape, t.style), t } function ca(t) { return null != t && "none" !== t } function da(t) { if ("string" != typeof t) return t; var e = Gm.get(t); return e || (e = $e(t, -.1), 1e4 > Wm && (Gm.set(t, e), Wm++)), e } function fa(t) { if (t.__hoverStlDirty) { t.__hoverStlDirty = !1; var e = t.__hoverStl; if (!e) return void (t.__cachedNormalStl = t.__cachedNormalZ2 = null); var i = t.__cachedNormalStl = {}; t.__cachedNormalZ2 = t.z2; var n = t.style; for (var r in e) null != e[r] && (i[r] = n[r]); i.fill = n.fill, i.stroke = n.stroke } } function pa(t) { var e = t.__hoverStl; if (e && !t.__highlighted) { var i = t.__zr, n = t.useHoverLayer && i && "canvas" === i.painter.type; if (t.__highlighted = n ? "layer" : "plain", !(t.isGroup || !i && t.useHoverLayer)) { var r = t, a = t.style; n && (r = i.addHover(t), a = r.style), Ra(a), n || fa(r), a.extendFrom(e), ga(a, e, "fill"), ga(a, e, "stroke"), Ba(a), n || (t.dirty(!1), t.z2 += Om) } } } function ga(t, e, i) { !ca(e[i]) && ca(t[i]) && (t[i] = da(t[i])) } function va(t) { var e = t.__highlighted; if (e && (t.__highlighted = !1, !t.isGroup)) if ("layer" === e) t.__zr && t.__zr.removeHover(t); else { var i = t.style, n = t.__cachedNormalStl; n && (Ra(i), t.setStyle(n), Ba(i)); var r = t.__cachedNormalZ2; null != r && t.z2 - r === Om && (t.z2 = r) } } function ma(t, e, i) { var n, r = Bm, a = Bm; t.__highlighted && (r = zm, n = !0), e(t, i), t.__highlighted && (a = zm, n = !0), t.isGroup && t.traverse(function (t) { !t.isGroup && e(t, i) }), n && t.__highDownOnUpdate && t.__highDownOnUpdate(r, a) } function ya(t, e) { e = t.__hoverStl = e !== !1 && (t.hoverStyle || e || {}), t.__hoverStlDirty = !0, t.__highlighted && (t.__cachedNormalStl = null, va(t), pa(t)) } function _a(t) { !Sa(this, t) && !this.__highByOuter && ma(this, pa) } function xa(t) { !Sa(this, t) && !this.__highByOuter && ma(this, va) } function wa(t) { this.__highByOuter |= 1 << (t || 0), ma(this, pa) } function ba(t) { !(this.__highByOuter &= ~(1 << (t || 0))) && ma(this, va) } function Sa(t, e) { return t.__highDownSilentOnTouch && e.zrByTouch } function Ma(t, e) { Ia(t, !0), ma(t, ya, e) } function Ia(t, e) { var i = e === !1; if (t.__highDownSilentOnTouch = t.highDownSilentOnTouch, t.__highDownOnUpdate = t.highDownOnUpdate, !i || t.__highDownDispatcher) { var n = i ? "off" : "on"; t[n]("mouseover", _a)[n]("mouseout", xa), t[n]("emphasis", wa)[n]("normal", ba), t.__highByOuter = t.__highByOuter || 0, t.__highDownDispatcher = !i } } function Ta(t) { return !(!t || !t.__highDownDispatcher) } function Ca(t) { var e = Nm[t]; return null == e && 32 >= Rm && (e = Nm[t] = Rm++), e } function Aa(t, e, i, n, r, a, o) { r = r || Lm; var s, l = r.labelFetcher, h = r.labelDataIndex, u = r.labelDimIndex, c = i.getShallow("show"), d = n.getShallow("show"); (c || d) && (l && (s = l.getFormattedLabel(h, "normal", null, u)), null == s && (s = w(r.defaultText) ? r.defaultText(h, r) : r.defaultText)); var f = c ? s : null, p = d ? D(l ? l.getFormattedLabel(h, "emphasis", null, u) : null, s) : null; (null != f || null != p) && (ka(t, i, a, r), ka(e, n, o, r, !0)), t.text = f, e.text = p } function Da(t, e, i) { var n = t.style; e && (Ra(n), t.setStyle(e), Ba(n)), n = t.__hoverStl, i && n && (Ra(n), o(n, i), Ba(n)) } function ka(t, e, i, n, r) { return La(t, e, n, r), i && o(t, i), t } function Pa(t, e, i) { var n, r = { isRectText: !0 }; i === !1 ? n = !0 : r.autoColor = i, La(t, e, r, n) } function La(t, e, i, n) { if (i = i || Lm, i.isRectText) { var r; i.getTextPosition ? r = i.getTextPosition(e, n) : (r = e.getShallow("position") || (n ? null : "inside"), "outside" === r && (r = "top")), t.textPosition = r, t.textOffset = e.getShallow("offset"); var a = e.getShallow("rotate"); null != a && (a *= Math.PI / 180), t.textRotation = a, t.textDistance = D(e.getShallow("distance"), n ? null : 5) } var o, s = e.ecModel, l = s && s.option.textStyle, h = Oa(e); if (h) { o = {}; for (var u in h) if (h.hasOwnProperty(u)) { var c = e.getModel(["rich", u]); Ea(o[u] = {}, c, l, i, n) } } return t.rich = o, Ea(t, e, l, i, n, !0), i.forceRich && !i.textStyle && (i.textStyle = {}), t } function Oa(t) { for (var e; t && t !== t.ecModel;) { var i = (t.option || Lm).rich; if (i) { e = e || {}; for (var n in i) i.hasOwnProperty(n) && (e[n] = 1) } t = t.parentModel } return e } function Ea(t, e, i, n, r, a) { i = !r && i || Lm, t.textFill = za(e.getShallow("color"), n) || i.color, t.textStroke = za(e.getShallow("textBorderColor"), n) || i.textBorderColor, t.textStrokeWidth = D(e.getShallow("textBorderWidth"), i.textBorderWidth), r || (a && (t.insideRollbackOpt = n, Ba(t)), null == t.textFill && (t.textFill = n.autoColor)), t.fontStyle = e.getShallow("fontStyle") || i.fontStyle, t.fontWeight = e.getShallow("fontWeight") || i.fontWeight, t.fontSize = e.getShallow("fontSize") || i.fontSize, t.fontFamily = e.getShallow("fontFamily") || i.fontFamily, t.textAlign = e.getShallow("align"), t.textVerticalAlign = e.getShallow("verticalAlign") || e.getShallow("baseline"), t.textLineHeight = e.getShallow("lineHeight"), t.textWidth = e.getShallow("width"), t.textHeight = e.getShallow("height"), t.textTag = e.getShallow("tag"), a && n.disableBox || (t.textBackgroundColor = za(e.getShallow("backgroundColor"), n), t.textPadding = e.getShallow("padding"), t.textBorderColor = za(e.getShallow("borderColor"), n), t.textBorderWidth = e.getShallow("borderWidth"), t.textBorderRadius = e.getShallow("borderRadius"), t.textBoxShadowColor = e.getShallow("shadowColor"), t.textBoxShadowBlur = e.getShallow("shadowBlur"), t.textBoxShadowOffsetX = e.getShallow("shadowOffsetX"), t.textBoxShadowOffsetY = e.getShallow("shadowOffsetY")), t.textShadowColor = e.getShallow("textShadowColor") || i.textShadowColor, t.textShadowBlur = e.getShallow("textShadowBlur") || i.textShadowBlur, t.textShadowOffsetX = e.getShallow("textShadowOffsetX") || i.textShadowOffsetX, t.textShadowOffsetY = e.getShallow("textShadowOffsetY") || i.textShadowOffsetY } function za(t, e) { return "auto" !== t ? t : e && e.autoColor ? e.autoColor : null } function Ba(t) { var e, i = t.textPosition, n = t.insideRollbackOpt; if (n && null == t.textFill) { var r = n.autoColor, a = n.isRectText, o = n.useInsideStyle, s = o !== !1 && (o === !0 || a && i && "string" == typeof i && i.indexOf("inside") >= 0), l = !s && null != r; (s || l) && (e = { textFill: t.textFill, textStroke: t.textStroke, textStrokeWidth: t.textStrokeWidth }), s && (t.textFill = "#fff", null == t.textStroke && (t.textStroke = r, null == t.textStrokeWidth && (t.textStrokeWidth = 2))), l && (t.textFill = r) } t.insideRollback = e } function Ra(t) { var e = t.insideRollback; e && (t.textFill = e.textFill, t.textStroke = e.textStroke, t.textStrokeWidth = e.textStrokeWidth, t.insideRollback = null) } function Na(t, e) { var i = e || e.getModel("textStyle"); return E([t.fontStyle || i && i.getShallow("fontStyle") || "", t.fontWeight || i && i.getShallow("fontWeight") || "", (t.fontSize || i && i.getShallow("fontSize") || 12) + "px", t.fontFamily || i && i.getShallow("fontFamily") || "sans-serif"].join(" ")) } function Fa(t, e, i, n, r, a) { "function" == typeof r && (a = r, r = null); var o = n && n.isAnimationEnabled(); if (o) { var s = t ? "Update" : "", l = n.getShallow("animationDuration" + s), h = n.getShallow("animationEasing" + s), u = n.getShallow("animationDelay" + s); "function" == typeof u && (u = u(r, n.getAnimationDelayParams ? n.getAnimationDelayParams(e, r) : null)), "function" == typeof l && (l = l(r)), l > 0 ? e.animateTo(i, l, u || 0, h, a, !!a) : (e.stopAnimation(), e.attr(i), a && a()) } else e.stopAnimation(), e.attr(i), a && a() } function Va(t, e, i, n, r) { Fa(!0, t, e, i, n, r) } function Ha(t, e, i, n, r) { Fa(!1, t, e, i, n, r) } function Ga(t, e) { for (var i = Ae([]); t && t !== e;)ke(i, t.getLocalTransform(), i), t = t.parent; return i } function Wa(t, e, i) { return e && !d(e) && (e = yp.getLocalTransform(e)), i && (e = Ee([], e)), ae([], t, e) } function Xa(t, e, i) { var n = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0]), r = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2]), a = ["left" === t ? -n : "right" === t ? n : 0, "top" === t ? -r : "bottom" === t ? r : 0]; return a = Wa(a, e, i), Math.abs(a[0]) > Math.abs(a[1]) ? a[0] > 0 ? "right" : "left" : a[1] > 0 ? "bottom" : "top" } function Ua(t, e, i) { function n(t) { var e = {}; return t.traverse(function (t) { !t.isGroup && t.anid && (e[t.anid] = t) }), e } function r(t) { var e = { position: W(t.position), rotation: t.rotation }; return t.shape && (e.shape = o({}, t.shape)), e } if (t && e) { var a = n(t); e.traverse(function (t) { if (!t.isGroup && t.anid) { var e = a[t.anid]; if (e) { var n = r(t); t.attr(r(e)), Va(t, n, i, t.dataIndex) } } }) } } function Ya(t, e) { return p(t, function (t) { var i = t[0]; i = km(i, e.x), i = Pm(i, e.x + e.width); var n = t[1]; return n = km(n, e.y), n = Pm(n, e.y + e.height), [i, n] }) } function ja(t, e) { var i = km(t.x, e.x), n = Pm(t.x + t.width, e.x + e.width), r = km(t.y, e.y), a = Pm(t.y + t.height, e.y + e.height); return n >= i && a >= r ? { x: i, y: r, width: n - i, height: a - r } : void 0 } function qa(t, e, i) { e = o({ rectHover: !0 }, e); var n = e.style = { strokeNoScale: !0 }; return i = i || { x: -1, y: -1, width: 2, height: 2 }, t ? 0 === t.indexOf("image://") ? (n.image = t.slice(8), s(n, i), new Sn(e)) : aa(t.replace("path://", ""), e, i, "center") : void 0 } function Za(t, e, i, n, r) { for (var a = 0, o = r[r.length - 1]; a < r.length; a++) { var s = r[a]; if (Ka(t, e, i, n, s[0], s[1], o[0], o[1])) return !0; o = s } } function Ka(t, e, i, n, r, a, o, s) { var l = i - t, h = n - e, u = o - r, c = s - a, d = $a(u, c, l, h); if (Qa(d)) return !1; var f = t - r, p = e - a, g = $a(f, p, l, h) / d; if (0 > g || g > 1) return !1; var v = $a(f, p, u, c) / d; return 0 > v || v > 1 ? !1 : !0 } function $a(t, e, i, n) { return t * n - i * e } function Qa(t) { return 1e-6 >= t && t >= -1e-6 } function Ja(t, e, i) { this.parentModel = e, this.ecModel = i, this.option = t } function to(t, e, i) { for (var n = 0; n < e.length && (!e[n] || (t = t && "object" == typeof t ? t[e[n]] : null, null != t)); n++); return null == t && i && (t = i.get(e)), t } function eo(t, e) { var i = Km(t).getParent; return i ? i.call(t, e) : t.parentModel } function io(t) { return [t || "", $m++, Math.random().toFixed(5)].join("_") } function no(t) { var e = {}; return t.registerSubTypeDefaulter = function (t, i) { t = er(t), e[t.main] = i }, t.determineSubType = function (i, n) { var r = n.type; if (!r) { var a = er(i).main; t.hasSubTypes(i) && e[a] && (r = e[a](n)) } return r }, t } function ro(t, e) { function i(t) { var i = {}, a = []; return f(t, function (o) { var s = n(i, o), l = s.originalDeps = e(o), u = r(l, t); s.entryCount = u.length, 0 === s.entryCount && a.push(o), f(u, function (t) { h(s.predecessor, t) < 0 && s.predecessor.push(t); var e = n(i, t); h(e.successor, t) < 0 && e.successor.push(o) }) }), { graph: i, noEntryList: a } } function n(t, e) { return t[e] || (t[e] = { predecessor: [], successor: [] }), t[e] } function r(t, e) { var i = []; return f(t, function (t) { h(e, t) >= 0 && i.push(t) }), i } t.topologicalTravel = function (t, e, n, r) { function a(t) { l[t].entryCount--, 0 === l[t].entryCount && h.push(t) } function o(t) { u[t] = !0, a(t) } if (t.length) { var s = i(e), l = s.graph, h = s.noEntryList, u = {}; for (f(t, function (t) { u[t] = !0 }); h.length;) { var c = h.pop(), d = l[c], p = !!u[c]; p && (n.call(r, c, d.originalDeps.slice()), delete u[c]), f(d.successor, p ? o : a) } f(u, function () { throw new Error("Circle dependency may exists") }) } } } function ao(t) { return t.replace(/^\s+|\s+$/g, "") } function oo(t, e, i, n) { var r = e[1] - e[0], a = i[1] - i[0]; if (0 === r) return 0 === a ? i[0] : (i[0] + i[1]) / 2; if (n) if (r > 0) { if (t <= e[0]) return i[0]; if (t >= e[1]) return i[1] } else { if (t >= e[0]) return i[0]; if (t <= e[1]) return i[1] } else { if (t === e[0]) return i[0]; if (t === e[1]) return i[1] } return (t - e[0]) / r * a + i[0] } function so(t, e) { switch (t) { case "center": case "middle": t = "50%"; break; case "left": case "top": t = "0%"; break; case "right": case "bottom": t = "100%" }return "string" == typeof t ? ao(t).match(/%$/) ? parseFloat(t) / 100 * e : parseFloat(t) : null == t ? 0 / 0 : +t } function lo(t, e, i) {
  6. return null == e && (e = 10), e = Math.min(Math.max(0, e), 20), t = (+t).toFixed(e), i ? t : +t
  7. } function ho(t) { return t.sort(function (t, e) { return t - e }), t } function uo(t) { if (t = +t, isNaN(t)) return 0; for (var e = 1, i = 0; Math.round(t * e) / e !== t;)e *= 10, i++; return i } function co(t) { var e = t.toString(), i = e.indexOf("e"); if (i > 0) { var n = +e.slice(i + 1); return 0 > n ? -n : 0 } var r = e.indexOf("."); return 0 > r ? 0 : e.length - 1 - r } function fo(t, e) { var i = Math.log, n = Math.LN10, r = Math.floor(i(t[1] - t[0]) / n), a = Math.round(i(Math.abs(e[1] - e[0])) / n), o = Math.min(Math.max(-r + a, 0), 20); return isFinite(o) ? o : 20 } function po(t, e, i) { if (!t[e]) return 0; var n = g(t, function (t, e) { return t + (isNaN(e) ? 0 : e) }, 0); if (0 === n) return 0; for (var r = Math.pow(10, i), a = p(t, function (t) { return (isNaN(t) ? 0 : t) / n * r * 100 }), o = 100 * r, s = p(a, function (t) { return Math.floor(t) }), l = g(s, function (t, e) { return t + e }, 0), h = p(a, function (t, e) { return t - s[e] }); o > l;) { for (var u = Number.NEGATIVE_INFINITY, c = null, d = 0, f = h.length; f > d; ++d)h[d] > u && (u = h[d], c = d); ++s[c], h[c] = 0, ++l } return s[e] / r } function go(t) { var e = 2 * Math.PI; return (t % e + e) % e } function vo(t) { return t > -Qm && Qm > t } function mo(t) { if (t instanceof Date) return t; if ("string" == typeof t) { var e = ty.exec(t); if (!e) return new Date(0 / 0); if (e[8]) { var i = +e[4] || 0; return "Z" !== e[8].toUpperCase() && (i -= e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, i, +(e[5] || 0), +e[6] || 0, +e[7] || 0)) } return new Date(+e[1], +(e[2] || 1) - 1, +e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, +e[7] || 0) } return new Date(null == t ? 0 / 0 : Math.round(t)) } function yo(t) { return Math.pow(10, _o(t)) } function _o(t) { if (0 === t) return 0; var e = Math.floor(Math.log(t) / Math.LN10); return t / Math.pow(10, e) >= 10 && e++, e } function xo(t, e) { var i, n = _o(t), r = Math.pow(10, n), a = t / r; return i = e ? 1.5 > a ? 1 : 2.5 > a ? 2 : 4 > a ? 3 : 7 > a ? 5 : 10 : 1 > a ? 1 : 2 > a ? 2 : 3 > a ? 3 : 5 > a ? 5 : 10, t = i * r, n >= -20 ? +t.toFixed(0 > n ? -n : 0) : t } function wo(t, e) { var i = (t.length - 1) * e + 1, n = Math.floor(i), r = +t[n - 1], a = i - n; return a ? r + a * (t[n] - r) : r } function bo(t) { function e(t, i, n) { return t.interval[n] < i.interval[n] || t.interval[n] === i.interval[n] && (t.close[n] - i.close[n] === (n ? -1 : 1) || !n && e(t, i, 1)) } t.sort(function (t, i) { return e(t, i, 0) ? -1 : 1 }); for (var i = -1 / 0, n = 1, r = 0; r < t.length;) { for (var a = t[r].interval, o = t[r].close, s = 0; 2 > s; s++)a[s] <= i && (a[s] = i, o[s] = s ? 1 : 1 - n), i = a[s], n = o[s]; a[0] === a[1] && o[0] * o[1] !== 1 ? t.splice(r, 1) : r++ } return t } function So(t) { return t - parseFloat(t) >= 0 } function Mo(t) { return isNaN(t) ? "-" : (t = (t + "").split("."), t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (t.length > 1 ? "." + t[1] : "")) } function Io(t, e) { return t = (t || "").toLowerCase().replace(/-(.)/g, function (t, e) { return e.toUpperCase() }), e && t && (t = t.charAt(0).toUpperCase() + t.slice(1)), t } function To(t) { return null == t ? "" : (t + "").replace(ny, function (t, e) { return ry[e] }) } function Co(t, e, i) { x(e) || (e = [e]); var n = e.length; if (!n) return ""; for (var r = e[0].$vars || [], a = 0; a < r.length; a++) { var o = ay[a]; t = t.replace(oy(o), oy(o, 0)) } for (var s = 0; n > s; s++)for (var l = 0; l < r.length; l++) { var h = e[s][r[l]]; t = t.replace(oy(ay[l], s), i ? To(h) : h) } return t } function Ao(t, e, i) { return f(e, function (e, n) { t = t.replace("{" + n + "}", i ? To(e) : e) }), t } function Do(t, e) { t = b(t) ? { color: t, extraCssText: e } : t || {}; var i = t.color, n = t.type, e = t.extraCssText, r = t.renderMode || "html", a = t.markerId || "X"; return i ? "html" === r ? "subItem" === n ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' + To(i) + ";" + (e || "") + '"></span>' : '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:' + To(i) + ";" + (e || "") + '"></span>' : { renderMode: r, content: "{marker" + a + "|} ", style: { color: i } } : "" } function ko(t, e) { return t += "", "0000".substr(0, e - t.length) + t } function Po(t, e, i) { ("week" === t || "month" === t || "quarter" === t || "half-year" === t || "year" === t) && (t = "MM-dd\nyyyy"); var n = mo(e), r = i ? "UTC" : "", a = n["get" + r + "FullYear"](), o = n["get" + r + "Month"]() + 1, s = n["get" + r + "Date"](), l = n["get" + r + "Hours"](), h = n["get" + r + "Minutes"](), u = n["get" + r + "Seconds"](), c = n["get" + r + "Milliseconds"](); return t = t.replace("MM", ko(o, 2)).replace("M", o).replace("yyyy", a).replace("yy", a % 100).replace("dd", ko(s, 2)).replace("d", s).replace("hh", ko(l, 2)).replace("h", l).replace("mm", ko(h, 2)).replace("m", h).replace("ss", ko(u, 2)).replace("s", u).replace("SSS", ko(c, 3)) } function Lo(t) { return t ? t.charAt(0).toUpperCase() + t.substr(1) : t } function Oo(t) { return Vi(t.text, t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich, t.truncate) } function Eo(t, e, i, n, r, a, o, s) { return Vi(t, e, i, n, r, s, a, o) } function zo(t, e, i, n, r) { var a = 0, o = 0; null == n && (n = 1 / 0), null == r && (r = 1 / 0); var s = 0; e.eachChild(function (l, h) { var u, c, d = l.position, f = l.getBoundingRect(), p = e.childAt(h + 1), g = p && p.getBoundingRect(); if ("horizontal" === t) { var v = f.width + (g ? -g.x + f.x : 0); u = a + v, u > n || l.newline ? (a = 0, u = v, o += s + i, s = f.height) : s = Math.max(s, f.height) } else { var m = f.height + (g ? -g.y + f.y : 0); c = o + m, c > r || l.newline ? (a += s + i, o = 0, c = m, s = f.width) : s = Math.max(s, f.width) } l.newline || (d[0] = a, d[1] = o, "horizontal" === t ? a = u + i : o = c + i) }) } function Bo(t, e, i) { i = iy(i || 0); var n = e.width, r = e.height, a = so(t.left, n), o = so(t.top, r), s = so(t.right, n), l = so(t.bottom, r), h = so(t.width, n), u = so(t.height, r), c = i[2] + i[0], d = i[1] + i[3], f = t.aspect; switch (isNaN(h) && (h = n - s - d - a), isNaN(u) && (u = r - l - c - o), null != f && (isNaN(h) && isNaN(u) && (f > n / r ? h = .8 * n : u = .8 * r), isNaN(h) && (h = f * u), isNaN(u) && (u = h / f)), isNaN(a) && (a = n - s - h - d), isNaN(o) && (o = r - l - u - c), t.left || t.right) { case "center": a = n / 2 - h / 2 - i[3]; break; case "right": a = n - h - d }switch (t.top || t.bottom) { case "middle": case "center": o = r / 2 - u / 2 - i[0]; break; case "bottom": o = r - u - c }a = a || 0, o = o || 0, isNaN(h) && (h = n - d - a - (s || 0)), isNaN(u) && (u = r - c - o - (l || 0)); var p = new xi(a + i[3], o + i[0], h, u); return p.margin = i, p } function Ro(t, e, i) { function n(i, n) { var o = {}, l = 0, h = {}, u = 0, c = 2; if (hy(i, function (e) { h[e] = t[e] }), hy(i, function (t) { r(e, t) && (o[t] = h[t] = e[t]), a(o, t) && l++, a(h, t) && u++ }), s[n]) return a(e, i[1]) ? h[i[2]] = null : a(e, i[2]) && (h[i[1]] = null), h; if (u !== c && l) { if (l >= c) return o; for (var d = 0; d < i.length; d++) { var f = i[d]; if (!r(o, f) && r(t, f)) { o[f] = t[f]; break } } return o } return h } function r(t, e) { return t.hasOwnProperty(e) } function a(t, e) { return null != t[e] && "auto" !== t[e] } function o(t, e, i) { hy(t, function (t) { e[t] = i[t] }) } !S(i) && (i = {}); var s = i.ignoreSize; !x(s) && (s = [s, s]); var l = n(cy[0], 0), h = n(cy[1], 1); o(cy[0], t, l), o(cy[1], t, h) } function No(t) { return Fo({}, t) } function Fo(t, e) { return e && t && hy(uy, function (i) { e.hasOwnProperty(i) && (t[i] = e[i]) }), t } function Vo(t) { var e = []; return f(gy.getClassesByMainType(t), function (t) { e = e.concat(t.prototype.dependencies || []) }), e = p(e, function (t) { return er(t).main }), "dataset" !== t && h(e, "dataset") <= 0 && e.unshift("dataset"), e } function Ho(t, e) { for (var i = t.length, n = 0; i > n; n++)if (t[n].length > e) return t[n]; return t[i - 1] } function Go(t) { var e = t.get("coordinateSystem"), i = { coordSysName: e, coordSysDims: [], axisMap: N(), categoryAxisMap: N() }, n = xy[e]; return n ? (n(t, i, i.axisMap, i.categoryAxisMap), i) : void 0 } function Wo(t) { return "category" === t.get("type") } function Xo(t) { this.fromDataset = t.fromDataset, this.data = t.data || (t.sourceFormat === My ? {} : []), this.sourceFormat = t.sourceFormat || Iy, this.seriesLayoutBy = t.seriesLayoutBy || Cy, this.dimensionsDefine = t.dimensionsDefine, this.encodeDefine = t.encodeDefine && N(t.encodeDefine), this.startIndex = t.startIndex || 0, this.dimensionsDetectCount = t.dimensionsDetectCount } function Uo(t) { var e = t.option.source, i = Iy; if (I(e)) i = Ty; else if (x(e)) { 0 === e.length && (i = by); for (var n = 0, r = e.length; r > n; n++) { var a = e[n]; if (null != a) { if (x(a)) { i = by; break } if (S(a)) { i = Sy; break } } } } else if (S(e)) { for (var o in e) if (e.hasOwnProperty(o) && d(e[o])) { i = My; break } } else if (null != e) throw new Error("Invalid data"); Dy(t).sourceFormat = i } function Yo(t) { return Dy(t).source } function jo(t) { Dy(t).datasetMap = N() } function qo(t) { var e = t.option, i = e.data, n = I(i) ? Ty : wy, r = !1, a = e.seriesLayoutBy, o = e.sourceHeader, s = e.dimensions, l = ts(t); if (l) { var h = l.option; i = h.source, n = Dy(l).sourceFormat, r = !0, a = a || h.seriesLayoutBy, null == o && (o = h.sourceHeader), s = s || h.dimensions } var u = Zo(i, n, a, o, s), c = e.encode; !c && l && (c = Jo(t, l, i, n, a, u)), Dy(t).source = new Xo({ data: i, fromDataset: r, seriesLayoutBy: a, sourceFormat: n, dimensionsDefine: u.dimensionsDefine, startIndex: u.startIndex, dimensionsDetectCount: u.dimensionsDetectCount, encodeDefine: c }) } function Zo(t, e, i, n, r) { if (!t) return { dimensionsDefine: Ko(r) }; var a, o, s; if (e === by) "auto" === n || null == n ? $o(function (t) { null != t && "-" !== t && (b(t) ? null == o && (o = 1) : o = 0) }, i, t, 10) : o = n ? 1 : 0, r || 1 !== o || (r = [], $o(function (t, e) { r[e] = null != t ? t : "" }, i, t)), a = r ? r.length : i === Ay ? t.length : t[0] ? t[0].length : null; else if (e === Sy) r || (r = Qo(t), s = !0); else if (e === My) r || (r = [], s = !0, f(t, function (t, e) { r.push(e) })); else if (e === wy) { var l = Gn(t[0]); a = x(l) && l.length || 1 } else e === Ty && kf && O(!!r, "dimensions must be given if data is TypedArray."); var h; return s && f(r, function (t, e) { "name" === (S(t) ? t.name : t) && (h = e) }), { startIndex: o, dimensionsDefine: Ko(r), dimensionsDetectCount: a, potentialNameDimIndex: h } } function Ko(t) { if (t) { var e = N(); return p(t, function (t) { if (t = o({}, S(t) ? t : { name: t }), null == t.name) return t; t.name += "", null == t.displayName && (t.displayName = t.name); var i = e.get(t.name); return i ? t.name += "-" + i.count++ : e.set(t.name, { count: 1 }), t }) } } function $o(t, e, i, n) { if (null == n && (n = 1 / 0), e === Ay) for (var r = 0; r < i.length && n > r; r++)t(i[r] ? i[r][0] : null, r); else for (var a = i[0] || [], r = 0; r < a.length && n > r; r++)t(a[r], r) } function Qo(t) { for (var e, i = 0; i < t.length && !(e = t[i++]);); if (e) { var n = []; return f(e, function (t, e) { n.push(e) }), n } } function Jo(t, e, i, n, r, a) { var o = Go(t), s = {}, l = [], h = [], u = t.subType, c = N(["pie", "map", "funnel"]), d = N(["line", "bar", "pictorialBar", "scatter", "effectScatter", "candlestick", "boxplot"]); if (o && null != d.get(u)) { var p = t.ecModel, g = Dy(p).datasetMap, v = e.uid + "_" + r, m = g.get(v) || g.set(v, { categoryWayDim: 1, valueWayDim: 0 }); f(o.coordSysDims, function (t) { if (null == o.firstCategoryDimIndex) { var e = m.valueWayDim++; s[t] = e, h.push(e) } else if (o.categoryAxisMap.get(t)) s[t] = 0, l.push(0); else { var e = m.categoryWayDim++; s[t] = e, h.push(e) } }) } else if (null != c.get(u)) { for (var y, _ = 0; 5 > _ && null == y; _++)is(i, n, r, a.dimensionsDefine, a.startIndex, _) || (y = _); if (null != y) { s.value = y; var x = a.potentialNameDimIndex || Math.max(y - 1, 0); h.push(x), l.push(x) } } return l.length && (s.itemName = l), h.length && (s.seriesName = h), s } function ts(t) { var e = t.option, i = e.data; return i ? void 0 : t.ecModel.getComponent("dataset", e.datasetIndex || 0) } function es(t, e) { return is(t.data, t.sourceFormat, t.seriesLayoutBy, t.dimensionsDefine, t.startIndex, e) } function is(t, e, i, n, r, a) { function o(t) { return null != t && isFinite(t) && "" !== t ? !1 : b(t) && "-" !== t ? !0 : void 0 } var s, l = 5; if (I(t)) return !1; var h; if (n && (h = n[a], h = S(h) ? h.name : h), e === by) if (i === Ay) { for (var u = t[a], c = 0; c < (u || []).length && l > c; c++)if (null != (s = o(u[r + c]))) return s } else for (var c = 0; c < t.length && l > c; c++) { var d = t[r + c]; if (d && null != (s = o(d[a]))) return s } else if (e === Sy) { if (!h) return; for (var c = 0; c < t.length && l > c; c++) { var f = t[c]; if (f && null != (s = o(f[h]))) return s } } else if (e === My) { if (!h) return; var u = t[h]; if (!u || I(u)) return !1; for (var c = 0; c < u.length && l > c; c++)if (null != (s = o(u[c]))) return s } else if (e === wy) for (var c = 0; c < t.length && l > c; c++) { var f = t[c], p = Gn(f); if (!x(p)) return !1; if (null != (s = o(p[a]))) return s } return !1 } function ns(t, e) { if (e) { var i = e.seiresIndex, n = e.seriesId, r = e.seriesName; return null != i && t.componentIndex !== i || null != n && t.id !== n || null != r && t.name !== r } } function rs(t, e) { var i = t.color && !t.colorLayer; f(e, function (e, a) { "colorLayer" === a && i || gy.hasClass(a) || ("object" == typeof e ? t[a] = t[a] ? r(t[a], e, !1) : n(e) : null == t[a] && (t[a] = e)) }) } function as(t) { t = t, this.option = {}, this.option[ky] = 1, this._componentsMap = N({ series: [] }), this._seriesIndices, this._seriesIndicesMap, rs(t, this._theme.option), r(t, my, !1), this.mergeOption(t) } function os(t, e) { x(e) || (e = e ? [e] : []); var i = {}; return f(e, function (e) { i[e] = (t.get(e) || []).slice() }), i } function ss(t, e, i) { var n = e.type ? e.type : i ? i.subType : gy.determineSubType(t, e); return n } function ls(t, e) { t._seriesIndicesMap = N(t._seriesIndices = p(e, function (t) { return t.componentIndex }) || []) } function hs(t, e) { return e.hasOwnProperty("subType") ? v(t, function (t) { return t.subType === e.subType }) : t } function us(t) { if (kf && !t._seriesIndices) throw new Error("Option should contains series.") } function cs(t) { f(Ly, function (e) { this[e] = y(t[e], t) }, this) } function ds() { this._coordinateSystems = [] } function fs(t) { this._api = t, this._timelineOptions = [], this._mediaList = [], this._mediaDefault, this._currentMediaIndices = [], this._optionBackup, this._newBaseOption } function ps(t, e, i) { var n, r, a = [], o = [], s = t.timeline; if (t.baseOption && (r = t.baseOption), (s || t.options) && (r = r || {}, a = (t.options || []).slice()), t.media) { r = r || {}; var l = t.media; Ey(l, function (t) { t && t.option && (t.query ? o.push(t) : n || (n = t)) }) } return r || (r = t), r.timeline || (r.timeline = s), Ey([r].concat(a).concat(p(o, function (t) { return t.option })), function (t) { Ey(e, function (e) { e(t, i) }) }), { baseOption: r, timelineOptions: a, mediaDefault: n, mediaList: o } } function gs(t, e, i) { var n = { width: e, height: i, aspectratio: e / i }, r = !0; return f(t, function (t, e) { var i = e.match(Ny); if (i && i[1] && i[2]) { var a = i[1], o = i[2].toLowerCase(); vs(n[o], t, a) || (r = !1) } }), r } function vs(t, e, i) { return "min" === i ? t >= e : "max" === i ? e >= t : t === e } function ms(t, e) { return t.join(",") === e.join(",") } function ys(t, e) { e = e || {}, Ey(e, function (e, i) { if (null != e) { var n = t[i]; if (gy.hasClass(i)) { e = Vn(e), n = Vn(n); var r = Xn(n, e); t[i] = By(r, function (t) { return t.option && t.exist ? Ry(t.exist, t.option, !0) : t.exist || t.option }) } else t[i] = Ry(n, e, !0) } }) } function _s(t) { var e = t && t.itemStyle; if (e) for (var i = 0, n = Hy.length; n > i; i++) { var a = Hy[i], o = e.normal, s = e.emphasis; o && o[a] && (t[a] = t[a] || {}, t[a].normal ? r(t[a].normal, o[a]) : t[a].normal = o[a], o[a] = null), s && s[a] && (t[a] = t[a] || {}, t[a].emphasis ? r(t[a].emphasis, s[a]) : t[a].emphasis = s[a], s[a] = null) } } function xs(t, e, i) { if (t && t[e] && (t[e].normal || t[e].emphasis)) { var n = t[e].normal, r = t[e].emphasis; n && (i ? (t[e].normal = t[e].emphasis = null, s(t[e], n)) : t[e] = n), r && (t.emphasis = t.emphasis || {}, t.emphasis[e] = r) } } function ws(t) { xs(t, "itemStyle"), xs(t, "lineStyle"), xs(t, "areaStyle"), xs(t, "label"), xs(t, "labelLine"), xs(t, "upperLabel"), xs(t, "edgeLabel") } function bs(t, e) { var i = Vy(t) && t[e], n = Vy(i) && i.textStyle; if (n) for (var r = 0, a = Zg.length; a > r; r++) { var e = Zg[r]; n.hasOwnProperty(e) && (i[e] = n[e]) } } function Ss(t) { t && (ws(t), bs(t, "label"), t.emphasis && bs(t.emphasis, "label")) } function Ms(t) { if (Vy(t)) { _s(t), ws(t), bs(t, "label"), bs(t, "upperLabel"), bs(t, "edgeLabel"), t.emphasis && (bs(t.emphasis, "label"), bs(t.emphasis, "upperLabel"), bs(t.emphasis, "edgeLabel")); var e = t.markPoint; e && (_s(e), Ss(e)); var i = t.markLine; i && (_s(i), Ss(i)); var n = t.markArea; n && Ss(n); var r = t.data; if ("graph" === t.type) { r = r || t.nodes; var a = t.links || t.edges; if (a && !I(a)) for (var o = 0; o < a.length; o++)Ss(a[o]); f(t.categories, function (t) { ws(t) }) } if (r && !I(r)) for (var o = 0; o < r.length; o++)Ss(r[o]); var e = t.markPoint; if (e && e.data) for (var s = e.data, o = 0; o < s.length; o++)Ss(s[o]); var i = t.markLine; if (i && i.data) for (var l = i.data, o = 0; o < l.length; o++)x(l[o]) ? (Ss(l[o][0]), Ss(l[o][1])) : Ss(l[o]); "gauge" === t.type ? (bs(t, "axisLabel"), bs(t, "title"), bs(t, "detail")) : "treemap" === t.type ? (xs(t.breadcrumb, "itemStyle"), f(t.levels, function (t) { ws(t) })) : "tree" === t.type && ws(t.leaves) } } function Is(t) { return x(t) ? t : t ? [t] : [] } function Ts(t) { return (x(t) ? t[0] : t) || {} } function Cs(t, e) { e = e.split(","); for (var i = t, n = 0; n < e.length && (i = i && i[e[n]], null != i); n++); return i } function As(t, e, i, n) { e = e.split(","); for (var r, a = t, o = 0; o < e.length - 1; o++)r = e[o], null == a[r] && (a[r] = {}), a = a[r]; (n || null == a[e[o]]) && (a[e[o]] = i) } function Ds(t) { f(Wy, function (e) { e[0] in t && !(e[1] in t) && (t[e[1]] = t[e[0]]) }) } function ks(t) { f(t, function (e, i) { var n = [], r = [0 / 0, 0 / 0], a = [e.stackResultDimension, e.stackedOverDimension], o = e.data, s = e.isStackedByIndex, l = o.map(a, function (a, l, h) { var u = o.get(e.stackedDimension, h); if (isNaN(u)) return r; var c, d; s ? d = o.getRawIndex(h) : c = o.get(e.stackedByDimension, h); for (var f = 0 / 0, p = i - 1; p >= 0; p--) { var g = t[p]; if (s || (d = g.data.rawIndexOf(g.stackedByDimension, c)), d >= 0) { var v = g.data.getByRawIndex(g.stackResultDimension, d); if (u >= 0 && v > 0 || 0 >= u && 0 > v) { u += v, f = v; break } } } return n[0] = u, n[1] = f, n }); o.hostModel.setData(l), e.data = l }) } function Ps(t, e) { Xo.isInstance(t) || (t = Xo.seriesDataToSource(t)), this._source = t; var i = this._data = t.data, n = t.sourceFormat; if (n === Ty) { if (kf && null == e) throw new Error("Typed array data must specify dimension size"); this._offset = 0, this._dimSize = e, this._data = i } var r = qy[n === by ? n + "_" + t.seriesLayoutBy : n]; kf && O(r, "Invalide sourceFormat: " + n), o(this, r) } function Ls() { return this._data.length } function Os(t) { return this._data[t] } function Es(t) { for (var e = 0; e < t.length; e++)this._data.push(t[e]) } function zs(t, e, i) { return null != i ? t[i] : t } function Bs(t, e, i, n) { return Rs(t[n], this._dimensionInfos[e]) } function Rs(t, e) { var i = e && e.type; if ("ordinal" === i) { var n = e && e.ordinalMeta; return n ? n.parseAndCollect(t) : t } return "time" === i && "number" != typeof t && null != t && "-" !== t && (t = +mo(t)), null == t || "" === t ? 0 / 0 : +t } function Ns(t, e, i) { if (t) { var n = t.getRawDataItem(e); if (null != n) { var r, a, o = t.getProvider().getSource().sourceFormat, s = t.getDimensionInfo(i); return s && (r = s.name, a = s.index), Zy[o](n, e, a, r) } } } function Fs(t, e, i) { if (t) { var n = t.getProvider().getSource().sourceFormat; if (n === wy || n === Sy) { var r = t.getRawDataItem(e); return n !== wy || S(r) || (r = null), r ? r[i] : void 0 } } } function Vs(t) { return new Hs(t) } function Hs(t) { t = t || {}, this._reset = t.reset, this._plan = t.plan, this._count = t.count, this._onDirty = t.onDirty, this._dirty = !0, this.context } function Gs(t, e, i, n, r, a) { t_.reset(i, n, r, a), t._callingProgress = e, t._callingProgress({ start: i, end: n, count: n - i, next: t_.next }, t.context) } function Ws(t, e) { t._dueIndex = t._outputDueEnd = t._dueEnd = 0, t._settedOutputEnd = null; var i, n; !e && t._reset && (i = t._reset(t.context), i && i.progress && (n = i.forceFirstProgress, i = i.progress), x(i) && !i.length && (i = null)), t._progress = i, t._modBy = t._modDataCount = null; var r = t._downstream; return r && r.dirty(), n } function Xs(t) { var e = t.name; Yn(t) || (t.name = Us(t) || e) } function Us(t) { var e = t.getRawData(), i = e.mapDimension("seriesName", !0), n = []; return f(i, function (t) { var i = e.getDimensionInfo(t); i.displayName && n.push(i.displayName) }), n.join(" ") } function Ys(t) { return t.model.getRawData().count() } function js(t) { var e = t.model; return e.setData(e.getRawData().cloneShallow()), qs } function qs(t, e) { t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData) } function Zs(t, e) { f(t.CHANGABLE_METHODS, function (i) { t.wrapMethod(i, _(Ks, e)) }) } function Ks(t) { var e = $s(t); e && e.setOutputEnd(this.count()) } function $s(t) { var e = (t.ecModel || {}).scheduler, i = e && e.getPipeline(t.uid); if (i) { var n = i.currentTask; if (n) { var r = n.agentStubMap; r && (n = r.get(t.uid)) } return n } } function Qs() { this.group = new jp, this.uid = io("viewChart"), this.renderTask = Vs({ plan: el, reset: il }), this.renderTask.context = { view: this } } function Js(t, e, i) { if (t && (t.trigger(e, i), t.isGroup && !Ta(t))) for (var n = 0, r = t.childCount(); r > n; n++)Js(t.childAt(n), e, i) } function tl(t, e, i) { var n = qn(t, e), r = e && null != e.highlightKey ? Ca(e.highlightKey) : null; null != n ? f(Vn(n), function (e) { Js(t.getItemGraphicEl(e), i, r) }) : t.eachItemGraphicEl(function (t) { Js(t, i, r) }) } function el(t) { return s_(t.model) } function il(t) { var e = t.model, i = t.ecModel, n = t.api, r = t.payload, a = e.pipelineContext.progressiveRender, o = t.view, s = r && o_(r).updateMethod, l = a ? "incrementalPrepareRender" : s && o[s] ? s : "render"; return "render" !== l && o[l](e, i, n, r), h_[l] } function nl(t, e, i) { function n() { u = (new Date).getTime(), c = null, t.apply(o, s || []) } var r, a, o, s, l, h = 0, u = 0, c = null; e = e || 0; var d = function () { r = (new Date).getTime(), o = this, s = arguments; var t = l || e, d = l || i; l = null, a = r - (d ? h : u) - t, clearTimeout(c), d ? c = setTimeout(n, t) : a >= 0 ? n() : c = setTimeout(n, -a), h = r }; return d.clear = function () { c && (clearTimeout(c), c = null) }, d.debounceNextCall = function (t) { l = t }, d } function rl(t, e, i, n) { var r = t[e]; if (r) { var a = r[u_] || r, o = r[d_], s = r[c_]; if (s !== i || o !== n) { if (null == i || !n) return t[e] = a; r = t[e] = nl(a, i, "debounce" === n), r[u_] = a, r[d_] = n, r[c_] = i } return r } } function al(t, e, i, n) { this.ecInstance = t, this.api = e, this.unfinished; var i = this._dataProcessorHandlers = i.slice(), n = this._visualHandlers = n.slice(); this._allHandlers = i.concat(n), this._stageTaskMap = N() } function ol(t, e, i, n, r) { function a(t, e) { return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id)) } r = r || {}; var o; f(e, function (e) { if (!r.visualType || r.visualType === e.visualType) { var s = t._stageTaskMap.get(e.uid), l = s.seriesTaskMap, h = s.overallTask; if (h) { var u, c = h.agentStubMap; c.each(function (t) { a(r, t) && (t.dirty(), u = !0) }), u && h.dirty(), __(h, n); var d = t.getPerformArgs(h, r.block); c.each(function (t) { t.perform(d) }), o |= h.perform(d) } else l && l.each(function (s) { a(r, s) && s.dirty(); var l = t.getPerformArgs(s, r.block); l.skip = !e.performRawSeries && i.isSeriesFiltered(s.context.model), __(s, n), o |= s.perform(l) }) } }), t.unfinished |= o } function sl(t, e, i, n, r) { function a(i) { var a = i.uid, s = o.get(a) || o.set(a, Vs({ plan: fl, reset: pl, count: vl })); s.context = { model: i, ecModel: n, api: r, useClearVisual: e.isVisual && !e.isLayout, plan: e.plan, reset: e.reset, scheduler: t }, ml(t, i, s) } var o = i.seriesTaskMap || (i.seriesTaskMap = N()), s = e.seriesType, l = e.getTargetSeries; e.createOnAllSeries ? n.eachRawSeries(a) : s ? n.eachRawSeriesByType(s, a) : l && l(n, r).each(a); var h = t._pipelineMap; o.each(function (t, e) { h.get(e) || (t.dispose(), o.removeKey(e)) }) } function ll(t, e, i, n, r) { function a(e) { var i = e.uid, n = s.get(i); n || (n = s.set(i, Vs({ reset: ul, onDirty: dl })), o.dirty()), n.context = { model: e, overallProgress: u, modifyOutputEnd: c }, n.agent = o, n.__block = u, ml(t, e, n) } var o = i.overallTask = i.overallTask || Vs({ reset: hl }); o.context = { ecModel: n, api: r, overallReset: e.overallReset, scheduler: t }; var s = o.agentStubMap = o.agentStubMap || N(), l = e.seriesType, h = e.getTargetSeries, u = !0, c = e.modifyOutputEnd; l ? n.eachRawSeriesByType(l, a) : h ? h(n, r).each(a) : (u = !1, f(n.getSeries(), a)); var d = t._pipelineMap; s.each(function (t, e) { d.get(e) || (t.dispose(), o.dirty(), s.removeKey(e)) }) } function hl(t) { t.overallReset(t.ecModel, t.api, t.payload) } function ul(t) { return t.overallProgress && cl } function cl() { this.agent.dirty(), this.getDownstream().dirty() } function dl() { this.agent && this.agent.dirty() } function fl(t) { return t.plan && t.plan(t.model, t.ecModel, t.api, t.payload) } function pl(t) { t.useClearVisual && t.data.clearAllVisual(); var e = t.resetDefines = Vn(t.reset(t.model, t.ecModel, t.api, t.payload)); return e.length > 1 ? p(e, function (t, e) { return gl(e) }) : x_ } function gl(t) { return function (e, i) { var n = i.data, r = i.resetDefines[t]; if (r && r.dataEach) for (var a = e.start; a < e.end; a++)r.dataEach(n, a); else r && r.progress && r.progress(e, n) } } function vl(t) { return t.data.count() } function ml(t, e, i) { var n = e.uid, r = t._pipelineMap.get(n); !r.head && (r.head = i), r.tail && r.tail.pipe(i), r.tail = i, i.__idxInPipeline = r.count++, i.__pipeline = r } function yl(t) { w_ = null; try { t(b_, S_) } catch (e) { } return w_ } function _l(t, e) { for (var i in e.prototype) t[i] = V } function xl(t) { if (b(t)) { var e = new DOMParser; t = e.parseFromString(t, "text/xml") } for (9 === t.nodeType && (t = t.firstChild); "svg" !== t.nodeName.toLowerCase() || 1 !== t.nodeType;)t = t.nextSibling; return t } function wl() { this._defs = {}, this._root = null, this._isDefine = !1, this._isText = !1 } function bl(t, e) { for (var i = t.firstChild; i;) { if (1 === i.nodeType) { var n = i.getAttribute("offset"); n = n.indexOf("%") > 0 ? parseInt(n, 10) / 100 : n ? parseFloat(n) : 0; var r = i.getAttribute("stop-color") || "#000000"; e.addColorStop(n, r) } i = i.nextSibling } } function Sl(t, e) { t && t.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}), s(e.__inheritedStyle, t.__inheritedStyle)) } function Ml(t) { for (var e = E(t).split(P_), i = [], n = 0; n < e.length; n += 2) { var r = parseFloat(e[n]), a = parseFloat(e[n + 1]); i.push([r, a]) } return i } function Il(t, e, i, n) { var r = e.__inheritedStyle || {}, a = "text" === e.type; if (1 === t.nodeType && (Cl(t, e), o(r, Al(t)), !n)) for (var s in E_) if (E_.hasOwnProperty(s)) { var l = t.getAttribute(s); null != l && (r[E_[s]] = l) } var h = a ? "textFill" : "fill", u = a ? "textStroke" : "stroke"; e.style = e.style || new ig; var c = e.style; null != r.fill && c.set(h, Tl(r.fill, i)), null != r.stroke && c.set(u, Tl(r.stroke, i)), f(["lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize"], function (t) { var e = "lineWidth" === t && a ? "textStrokeWidth" : t; null != r[t] && c.set(e, parseFloat(r[t])) }), r.textBaseline && "auto" !== r.textBaseline || (r.textBaseline = "alphabetic"), "alphabetic" === r.textBaseline && (r.textBaseline = "bottom"), "start" === r.textAlign && (r.textAlign = "left"), "end" === r.textAlign && (r.textAlign = "right"), f(["lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign", "textBaseline"], function (t) { null != r[t] && c.set(t, r[t]) }), r.lineDash && (e.style.lineDash = E(r.lineDash).split(P_)), c[u] && "none" !== c[u] && (e[u] = !0), e.__inheritedStyle = r } function Tl(t, e) { var i = e && t && t.match(z_); if (i) { var n = E(i[1]), r = e[n]; return r } return t } function Cl(t, e) { var i = t.getAttribute("transform"); if (i) { i = i.replace(/,/g, " "); var n = null, r = []; i.replace(B_, function (t, e, i) { r.push(e, i) }); for (var a = r.length - 1; a > 0; a -= 2) { var o = r[a], s = r[a - 1]; switch (n = n || Ce(), s) { case "translate": o = E(o).split(P_), Pe(n, n, [parseFloat(o[0]), parseFloat(o[1] || 0)]); break; case "scale": o = E(o).split(P_), Oe(n, n, [parseFloat(o[0]), parseFloat(o[1] || o[0])]); break; case "rotate": o = E(o).split(P_), Le(n, n, parseFloat(o[0])); break; case "skew": o = E(o).split(P_), console.warn("Skew transform is not supported yet"); break; case "matrix": var o = E(o).split(P_); n[0] = parseFloat(o[0]), n[1] = parseFloat(o[1]), n[2] = parseFloat(o[2]), n[3] = parseFloat(o[3]), n[4] = parseFloat(o[4]), n[5] = parseFloat(o[5]) } } e.setLocalTransform(n) } } function Al(t) { var e = t.getAttribute("style"), i = {}; if (!e) return i; var n = {}; R_.lastIndex = 0; for (var r; null != (r = R_.exec(e));)n[r[1]] = r[2]; for (var a in E_) E_.hasOwnProperty(a) && null != n[a] && (i[E_[a]] = n[a]); return i } function Dl(t, e, i) { var n = e / t.width, r = i / t.height, a = Math.min(n, r), o = [a, a], s = [-(t.x + t.width / 2) * a + e / 2, -(t.y + t.height / 2) * a + i / 2]; return { scale: o, position: s } } function kl(t, e) { return function (i, n, r) { return !e && this._disposed ? void jl(this.id) : (i = i && i.toLowerCase(), void ip.prototype[t].call(this, i, n, r)) } } function Pl() { ip.call(this) } function Ll(t, e, i) { function r(t, e) { return t.__prio - e.__prio } i = i || {}, "string" == typeof e && (e = _x[e]), this.id, this.group, this._dom = t; var a = "canvas"; kf && (a = ("undefined" == typeof window ? global : window).__ECHARTS__DEFAULT__RENDERER__ || a); var o = this._zr = zn(t, { renderer: i.renderer || a, devicePixelRatio: i.devicePixelRatio, width: i.width, height: i.height }); this._throttledZrFlush = nl(y(o.flush, o), 17); var e = n(e); e && Uy(e, !0), this._theme = e, this._chartsViews = [], this._chartsMap = {}, this._componentsViews = [], this._componentsMap = {}, this._coordSysMgr = new ds; var s = this._api = $l(this); Ai(yx, r), Ai(gx, r), this._scheduler = new al(this, s, gx, yx), ip.call(this, this._ecEventProcessor = new Ql), this._messageCenter = new Pl, this._initEvents(), this.resize = y(this.resize, this), this._pendingActions = [], o.animation.on("frame", this._onframe, this), Vl(o, this), z(this) } function Ol(t, e, i) { if (this._disposed) return void jl(this.id); var n, r = this._model, a = this._coordSysMgr.getCoordinateSystems(); e = Kn(r, e); for (var o = 0; o < a.length; o++) { var s = a[o]; if (s[t] && null != (n = s[t](r, e, i))) return n } kf && console.warn("No coordinate system that supports " + t + " found by the given finder.") } function El(t) { var e = t._model, i = t._scheduler; i.restorePipelines(e), i.prepareStageTasks(), Hl(t, "component", e, i), Hl(t, "chart", e, i), i.plan() } function zl(t, e, i, n, r) { function a(n) { n && n.__alive && n[e] && n[e](n.__model, o, t._api, i) } var o = t._model; if (!n) return void G_(t._componentsViews.concat(t._chartsViews), a); var s = {}; s[n + "Id"] = i[n + "Id"], s[n + "Index"] = i[n + "Index"], s[n + "Name"] = i[n + "Name"]; var l = { mainType: n, query: s }; r && (l.subType = r); var h = i.excludeSeriesId; null != h && (h = N(Vn(h))), o && o.eachComponent(l, function (e) { h && null != h.get(e.id) || a(t["series" === n ? "_chartsMap" : "_componentsMap"][e.__viewId]) }, t) } function Bl(t, e) { var i = t._chartsMap, n = t._scheduler; e.eachSeries(function (t) { n.updateStreamModes(t, i[t.__viewId]) }) } function Rl(t, e) { var i = t.type, n = t.escapeConnect, r = fx[i], a = r.actionInfo, l = (a.update || "update").split(":"), h = l.pop(); l = null != l[0] && U_(l[0]), this[sx] = !0; var u = [t], c = !1; t.batch && (c = !0, u = p(t.batch, function (e) { return e = s(o({}, e), t), e.batch = null, e })); var d, f = [], g = "highlight" === i || "downplay" === i; G_(u, function (t) { d = r.action(t, this._model, this._api), d = d || o({}, t), d.type = a.event || d.type, f.push(d), g ? zl(this, h, t, "series") : l && zl(this, h, t, l.main, l.sub) }, this), "none" === h || g || l || (this[lx] ? (El(this), cx.update.call(this, t), this[lx] = !1) : cx[h].call(this, t)), d = c ? { type: a.event || i, escapeConnect: n, batch: f } : f[0], this[sx] = !1, !e && this._messageCenter.trigger(d.type, d) } function Nl(t) { for (var e = this._pendingActions; e.length;) { var i = e.shift(); Rl.call(this, i, t) } } function Fl(t) { !t && this.trigger("updated") } function Vl(t, e) { t.on("rendered", function () { e.trigger("rendered"), !t.animation.isFinished() || e[lx] || e._scheduler.unfinished || e._pendingActions.length || e.trigger("finished") }) } function Hl(t, e, i, n) { function r(t) { var e = "_ec_" + t.id + "_" + t.type, r = s[e]; if (!r) { var u = U_(t.type), c = a ? n_.getClass(u.main, u.sub) : Qs.getClass(u.sub); kf && H_(c, u.sub + " does not exist."), r = new c, r.init(i, h), s[e] = r, o.push(r), l.add(r.group) } t.__viewId = r.__id = e, r.__alive = !0, r.__model = t, r.group.__ecComponentInfo = { mainType: t.mainType, index: t.componentIndex }, !a && n.prepareView(r, t, i, h) } for (var a = "component" === e, o = a ? t._componentsViews : t._chartsViews, s = a ? t._componentsMap : t._chartsMap, l = t._zr, h = t._api, u = 0; u < o.length; u++)o[u].__alive = !1; a ? i.eachComponent(function (t, e) { "series" !== t && r(e) }) : i.eachSeries(r); for (var u = 0; u < o.length;) { var c = o[u]; c.__alive ? u++ : (!a && c.renderTask.dispose(), l.remove(c.group), c.dispose(i, h), o.splice(u, 1), delete s[c.__id], c.__id = c.group.__ecComponentInfo = null) } } function Gl(t) { t.clearColorPalette(), t.eachSeries(function (t) { t.clearColorPalette() }) } function Wl(t, e, i, n) { Xl(t, e, i, n), G_(t._chartsViews, function (t) { t.__alive = !1 }), Ul(t, e, i, n), G_(t._chartsViews, function (t) { t.__alive || t.remove(e, i) }) } function Xl(t, e, i, n, r) { G_(r || t._componentsViews, function (t) { var r = t.__model; t.render(r, e, i, n), Kl(r, t) }) } function Ul(t, e, i, n, r) { var a, o = t._scheduler; e.eachSeries(function (e) { var i = t._chartsMap[e.__viewId]; i.__alive = !0; var s = i.renderTask; o.updatePayload(s, n), r && r.get(e.uid) && s.dirty(), a |= s.perform(o.getPerformArgs(s)), i.group.silent = !!e.get("silent"), Kl(e, i), Zl(e, i) }), o.unfinished |= a, ql(t, e), g_(t._zr.dom, e) } function Yl(t, e) { G_(mx, function (i) { i(t, e) }) } function jl(t) { kf && console.warn("Instance " + t + " has been disposed") } function ql(t, e) { var i = t._zr, n = i.storage, r = 0; n.traverse(function () { r++ }), r > e.get("hoverLayerThreshold") && !Ef.node && e.eachSeries(function (e) { if (!e.preventUsingHoverLayer) { var i = t._chartsMap[e.__viewId]; i.__alive && i.group.traverse(function (t) { t.useHoverLayer = !0 }) } }) } function Zl(t, e) { var i = t.get("blendMode") || null; kf && !Ef.canvasSupported && i && "source-over" !== i && console.warn("Only canvas support blendMode"), e.group.traverse(function (t) { t.isGroup || t.style.blend !== i && t.setStyle("blend", i), t.eachPendingDisplayable && t.eachPendingDisplayable(function (t) { t.setStyle("blend", i) }) }) } function Kl(t, e) { var i = t.get("z"), n = t.get("zlevel"); e.group.traverse(function (t) { "group" !== t.type && (null != i && (t.z = i), null != n && (t.zlevel = n)) }) } function $l(t) { var e = t._coordSysMgr; return o(new cs(t), { getCoordinateSystems: y(e.getCoordinateSystems, e), getComponentByElement: function (e) { for (; e;) { var i = e.__ecComponentInfo; if (null != i) return t._model.getComponent(i.mainType, i.index); e = e.parent } } }) } function Ql() { this.eventInfo } function Jl(t) { function e(t, e) { for (var i = 0; i < t.length; i++) { var n = t[i]; n[a] = e } } var i = 0, n = 1, r = 2, a = "__connectUpdateStatus"; G_(px, function (o, s) { t._messageCenter.on(s, function (o) { if (Sx[t.group] && t[a] !== i) { if (o && o.escapeConnect) return; var s = t.makeActionFromEvent(o), l = []; G_(bx, function (e) { e !== t && e.group === t.group && l.push(e) }), e(l, i), G_(l, function (t) { t[a] !== n && t.dispatchAction(s) }), e(l, r) } }) }) } function th(t, e, i) { if (kf) { if (Gg.replace(".", "") - 0 < j_.zrender.replace(".", "") - 0) throw new Error("zrender/src " + Gg + " is too old for ECharts " + Y_ + ". Current version need ZRender " + j_.zrender + "+"); if (!t) throw new Error("Initialize failed: invalid dom.") } var n = rh(t); if (n) return kf && console.warn("There is a chart instance already initialized on the dom."), n; kf && (!T(t) || "CANVAS" === t.nodeName.toUpperCase() || (t.clientWidth || i && null != i.width) && (t.clientHeight || i && null != i.height) || console.warn("Can't get DOM width or height. Please check dom.clientWidth and dom.clientHeight. They should not be 0.For example, you may need to call this in the callback of window.onload.")); var r = new Ll(t, e, i); return r.id = "ec_" + Mx++, bx[r.id] = r, Qn(t, Tx, r.id), Jl(r), r } function eh(t) { if (x(t)) { var e = t; t = null, G_(e, function (e) { null != e.group && (t = e.group) }), t = t || "g_" + Ix++, G_(e, function (e) { e.group = t }) } return Sx[t] = !0, t } function ih(t) { Sx[t] = !1 } function nh(t) { "string" == typeof t ? t = bx[t] : t instanceof Ll || (t = rh(t)), t instanceof Ll && !t.isDisposed() && t.dispose() } function rh(t) { return bx[Jn(t, Tx)] } function ah(t) { return bx[t] } function oh(t, e) { _x[t] = e } function sh(t) { vx.push(t) } function lh(t, e) {
  8. gh(gx, t, e, Z_)
  9. } function hh(t) { mx.push(t) } function uh(t, e, i) { "function" == typeof e && (i = e, e = ""); var n = X_(t) ? t.type : [t, t = { event: e }][0]; t.event = (t.event || n).toLowerCase(), e = t.event, H_(hx.test(n) && hx.test(e)), fx[n] || (fx[n] = { action: i, actionInfo: t }), px[e] = n } function ch(t, e) { ds.register(t, e) } function dh(t) { var e = ds.get(t); return e ? e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice() : void 0 } function fh(t, e) { gh(yx, t, e, J_, "layout") } function ph(t, e) { gh(yx, t, e, ix, "visual") } function gh(t, e, i, n, r) { if ((W_(e) || X_(e)) && (i = e, e = n), kf) { if (isNaN(e) || null == e) throw new Error("Illegal priority"); G_(t, function (t) { H_(t.__raw !== i) }) } var a = al.wrapStageHandler(i, r); return a.__prio = e, a.__raw = i, t.push(a), a } function vh(t, e) { xx[t] = e } function mh(t) { return gy.extend(t) } function yh(t) { return n_.extend(t) } function _h(t) { return i_.extend(t) } function xh(t) { return Qs.extend(t) } function wh(t) { i("createCanvas", t) } function bh(t, e, i) { F_.registerMap(t, e, i) } function Sh(t) { var e = F_.retrieveMap(t); return e && e[0] && { geoJson: e[0].geoJSON, specialAreas: e[0].specialAreas } } function Mh(t) { return t } function Ih(t, e, i, n, r) { this._old = t, this._new = e, this._oldKeyGetter = i || Mh, this._newKeyGetter = n || Mh, this.context = r } function Th(t, e, i, n, r) { for (var a = 0; a < t.length; a++) { var o = "_ec_" + r[n](t[a], a), s = e[o]; null == s ? (i.push(o), e[o] = a) : (s.length || (e[o] = s = [s]), s.push(a)) } } function Ch(t) { var e = {}, i = e.encode = {}, n = N(), r = [], a = [], o = e.userOutput = { dimensionNames: t.dimensions.slice(), encode: {} }; f(t.dimensions, function (e) { var s = t.getDimensionInfo(e), l = s.coordDim; if (l) { kf && O(null == Dx.get(l)); var h = s.coordDimIndex; Ah(i, l)[h] = e, s.isExtraCoord || (n.set(l, 1), kh(s.type) && (r[0] = e), Ah(o.encode, l)[h] = s.index), s.defaultTooltip && a.push(e) } Dx.each(function (t, e) { var n = Ah(i, e), r = s.otherDims[e]; null != r && r !== !1 && (n[r] = s.name) }) }); var s = [], l = {}; n.each(function (t, e) { var n = i[e]; l[e] = n[0], s = s.concat(n) }), e.dataDimsOnCoord = s, e.encodeFirstDimNotExtra = l; var h = i.label; h && h.length && (r = h.slice()); var u = i.tooltip; return u && u.length ? a = u.slice() : a.length || (a = r.slice()), i.defaultedLabel = r, i.defaultedTooltip = a, e } function Ah(t, e) { return t.hasOwnProperty(e) || (t[e] = []), t[e] } function Dh(t) { return "category" === t ? "ordinal" : "time" === t ? "time" : "float" } function kh(t) { return !("ordinal" === t || "time" === t) } function Ph(t) { return t._rawCount > 65535 ? zx : Rx } function Lh(t) { var e = t.constructor; return e === Array ? t.slice() : new e(t) } function Oh(t, e) { f(Nx.concat(e.__wrappedMethods || []), function (i) { e.hasOwnProperty(i) && (t[i] = e[i]) }), t.__wrappedMethods = e.__wrappedMethods, f(Fx, function (i) { t[i] = n(e[i]) }), t._calculationInfo = o(e._calculationInfo) } function Eh(t, e, i, n, r) { var a = Ex[e.type], o = n - 1, s = e.name, l = t[s][o]; if (l && l.length < i) { for (var h = new a(Math.min(r - o * i, i)), u = 0; u < l.length; u++)h[u] = l[u]; t[s][o] = h } for (var c = n * i; r > c; c += i)t[s].push(new a(Math.min(r - c, i))) } function zh(t) { var e = t._invertedIndicesMap; f(e, function (i, n) { var r = t._dimensionInfos[n], a = r.ordinalMeta; if (a) { i = e[n] = new Bx(a.categories.length); for (var o = 0; o < i.length; o++)i[o] = Lx; for (var o = 0; o < t._count; o++)i[t.get(n, o)] = o } }) } function Bh(t, e, i) { var n; if (null != e) { var r = t._chunkSize, a = Math.floor(i / r), o = i % r, s = t.dimensions[e], l = t._storage[s][a]; if (l) { n = l[o]; var h = t._dimensionInfos[s].ordinalMeta; h && h.categories.length && (n = h.categories[n]) } } return n } function Rh(t) { return t } function Nh(t) { return t < this._count && t >= 0 ? this._indices[t] : -1 } function Fh(t, e) { var i = t._idList[e]; return null == i && (i = Bh(t, t._idDimIdx, e)), null == i && (i = Ox + e), i } function Vh(t) { return x(t) || (t = [t]), t } function Hh(t, e) { for (var i = 0; i < e.length; i++)t._dimensionInfos[e[i]] || console.error("Unkown dimension " + e[i]) } function Gh(t, e) { var i = t.dimensions, n = new Vx(p(i, t.getDimensionInfo, t), t.hostModel); Oh(n, t); for (var r = n._storage = {}, a = t._storage, o = 0; o < i.length; o++) { var s = i[o]; a[s] && (h(e, s) >= 0 ? (r[s] = Wh(a[s]), n._rawExtent[s] = Xh(), n._extent[s] = null) : r[s] = a[s]) } return n } function Wh(t) { for (var e = new Array(t.length), i = 0; i < t.length; i++)e[i] = Lh(t[i]); return e } function Xh() { return [1 / 0, -1 / 0] } function Uh(t, e, i) { function r(t, e, i) { null != Dx.get(e) ? t.otherDims[e] = i : (t.coordDim = e, t.coordDimIndex = i, u.set(e, !0)) } Xo.isInstance(e) || (e = Xo.seriesDataToSource(e)), i = i || {}, t = (t || []).slice(); for (var a = (i.dimsDef || []).slice(), l = N(i.encodeDef), h = N(), u = N(), c = [], d = Yh(e, t, a, i.dimCount), p = 0; d > p; p++) { var g = a[p] = o({}, S(a[p]) ? a[p] : { name: a[p] }), v = g.name, m = c[p] = { otherDims: {} }; null != v && null == h.get(v) && (m.name = m.displayName = v, h.set(v, p)), null != g.type && (m.type = g.type), null != g.displayName && (m.displayName = g.displayName) } l.each(function (t, e) { if (t = Vn(t).slice(), 1 === t.length && !b(t[0]) && t[0] < 0) return void l.set(e, !1); var i = l.set(e, []); f(t, function (t, n) { b(t) && (t = h.get(t)), null != t && d > t && (i[n] = t, r(c[t], e, n)) }) }); var y = 0; f(t, function (t) { var e, t, i, a; if (b(t)) e = t, t = {}; else { e = t.name; var o = t.ordinalMeta; t.ordinalMeta = null, t = n(t), t.ordinalMeta = o, i = t.dimsDef, a = t.otherDims, t.name = t.coordDim = t.coordDimIndex = t.dimsDef = t.otherDims = null } var h = l.get(e); if (h !== !1) { var h = Vn(h); if (!h.length) for (var u = 0; u < (i && i.length || 1); u++) { for (; y < c.length && null != c[y].coordDim;)y++; y < c.length && h.push(y++) } f(h, function (n, o) { var l = c[n]; if (r(s(l, t), e, o), null == l.name && i) { var h = i[o]; !S(h) && (h = { name: h }), l.name = l.displayName = h.name, l.defaultTooltip = h.defaultTooltip } a && s(l.otherDims, a) }) } }); var _ = i.generateCoord, x = i.generateCoordCount, w = null != x; x = _ ? x || 1 : 0; for (var M = _ || "value", I = 0; d > I; I++) { var m = c[I] = c[I] || {}, T = m.coordDim; null == T && (m.coordDim = jh(M, u, w), m.coordDimIndex = 0, (!_ || 0 >= x) && (m.isExtraCoord = !0), x--), null == m.name && (m.name = jh(m.coordDim, h)), null == m.type && es(e, I, m.name) && (m.type = "ordinal") } return c } function Yh(t, e, i, n) { var r = Math.max(t.dimensionsDetectCount || 1, e.length, i.length, n || 0); return f(e, function (t) { var e = t.dimsDef; e && (r = Math.max(r, e.length)) }), r } function jh(t, e, i) { if (i || null != e.get(t)) { for (var n = 0; null != e.get(t + n);)n++; t += n } return e.set(t, !0), t } function qh(t, e, i) { i = i || {}; var n, r, a, o, s = i.byIndex, l = i.stackedCoordDimension, h = !(!t || !t.get("stack")); if (f(e, function (t, i) { b(t) && (e[i] = t = { name: t }), h && !t.isExtraCoord && (s || n || !t.ordinalMeta || (n = t), r || "ordinal" === t.type || "time" === t.type || l && l !== t.coordDim || (r = t)) }), !r || s || n || (s = !0), r) { a = "__\x00ecstackresult", o = "__\x00ecstackedover", n && (n.createInvertedIndices = !0); var u = r.coordDim, c = r.type, d = 0; f(e, function (t) { t.coordDim === u && d++ }), e.push({ name: a, coordDim: u, coordDimIndex: d, type: c, isExtraCoord: !0, isCalculationCoord: !0 }), d++, e.push({ name: o, coordDim: o, coordDimIndex: d, type: c, isExtraCoord: !0, isCalculationCoord: !0 }) } return { stackedDimension: r && r.name, stackedByDimension: n && n.name, isStackedByIndex: s, stackedOverDimension: o, stackResultDimension: a } } function Zh(t, e) { return !!e && e === t.getCalculationInfo("stackedDimension") } function Kh(t, e) { return Zh(t, e) ? t.getCalculationInfo("stackResultDimension") : e } function $h(t, e, i) { i = i || {}, Xo.isInstance(t) || (t = Xo.seriesDataToSource(t)); var n, r = e.get("coordinateSystem"), a = ds.get(r), o = Go(e); o && (n = p(o.coordSysDims, function (t) { var e = { name: t }, i = o.axisMap.get(t); if (i) { var n = i.get("type"); e.type = Dh(n) } return e })), n || (n = a && (a.getDimensionsInfo ? a.getDimensionsInfo() : a.dimensions.slice()) || ["x", "y"]); var s, l, h = Wx(t, { coordDimensions: n, generateCoord: i.generateCoord }); o && f(h, function (t, e) { var i = t.coordDim, n = o.categoryAxisMap.get(i); n && (null == s && (s = e), t.ordinalMeta = n.getOrdinalMeta()), null != t.otherDims.itemName && (l = !0) }), l || null == s || (h[s].otherDims.itemName = 0); var u = qh(e, h), c = new Vx(h, e); c.setCalculationInfo(u); var d = null != s && Qh(t) ? function (t, e, i, n) { return n === s ? i : this.defaultDimValueGetter(t, e, i, n) } : null; return c.hasItemOption = !1, c.initData(t, null, d), c } function Qh(t) { if (t.sourceFormat === wy) { var e = Jh(t.data || []); return null != e && !x(Gn(e)) } } function Jh(t) { for (var e = 0; e < t.length && null == t[e];)e++; return t[e] } function tu(t) { this._setting = t || {}, this._extent = [1 / 0, -1 / 0], this._interval = 0, this.init && this.init.apply(this, arguments) } function eu(t) { this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t.deduplication, this._map } function iu(t) { return t._map || (t._map = N(t.categories)) } function nu(t) { return S(t) && null != t.value ? t.value : t + "" } function ru(t, e, i, n) { var r = {}, a = t[1] - t[0], o = r.interval = xo(a / e, !0); null != i && i > o && (o = r.interval = i), null != n && o > n && (o = r.interval = n); var s = r.intervalPrecision = au(o), l = r.niceTickExtent = [jx(Math.ceil(t[0] / o) * o, s), jx(Math.floor(t[1] / o) * o, s)]; return su(l, t), r } function au(t) { return co(t) + 2 } function ou(t, e, i) { t[e] = Math.max(Math.min(t[e], i[1]), i[0]) } function su(t, e) { !isFinite(t[0]) && (t[0] = e[0]), !isFinite(t[1]) && (t[1] = e[1]), ou(t, 0, e), ou(t, 1, e), t[0] > t[1] && (t[0] = t[1]) } function lu(t, e, i, n) { var r = []; if (!t) return r; var a = 1e4; e[0] < i[0] && r.push(e[0]); for (var o = i[0]; o <= i[1] && (r.push(o), o = jx(o + t, n), o !== r[r.length - 1]);)if (r.length > a) return []; return e[1] > (r.length ? r[r.length - 1] : i[1]) && r.push(e[1]), r } function hu(t) { return t.get("stack") || Kx + t.seriesIndex } function uu(t) { return t.dim + t.index } function cu(t, e) { var i = []; return e.eachSeriesByType(t, function (t) { mu(t) && !yu(t) && i.push(t) }), i } function du(t) { var e = {}; f(t, function (t) { var i = t.coordinateSystem, n = i.getBaseAxis(); if ("time" === n.type || "value" === n.type) for (var r = t.getData(), a = n.dim + "_" + n.index, o = r.mapDimension(n.dim), s = 0, l = r.count(); l > s; ++s) { var h = r.get(o, s); e[a] ? e[a].push(h) : e[a] = [h] } }); var i = []; for (var n in e) if (e.hasOwnProperty(n)) { var r = e[n]; if (r) { r.sort(function (t, e) { return t - e }); for (var a = null, o = 1; o < r.length; ++o) { var s = r[o] - r[o - 1]; s > 0 && (a = null === a ? s : Math.min(a, s)) } i[n] = a } } return i } function fu(t) { var e = du(t), i = []; return f(t, function (t) { var n, r = t.coordinateSystem, a = r.getBaseAxis(), o = a.getExtent(); if ("category" === a.type) n = a.getBandWidth(); else if ("value" === a.type || "time" === a.type) { var s = a.dim + "_" + a.index, l = e[s], h = Math.abs(o[1] - o[0]), u = a.scale.getExtent(), c = Math.abs(u[1] - u[0]); n = l ? h / c * l : h } else { var d = t.getData(); n = Math.abs(o[1] - o[0]) / d.count() } var f = so(t.get("barWidth"), n), p = so(t.get("barMaxWidth"), n), g = so(t.get("barMinWidth") || 1, n), v = t.get("barGap"), m = t.get("barCategoryGap"); i.push({ bandWidth: n, barWidth: f, barMaxWidth: p, barMinWidth: g, barGap: v, barCategoryGap: m, axisKey: uu(a), stackId: hu(t) }) }), pu(i) } function pu(t) { var e = {}; f(t, function (t) { var i = t.axisKey, n = t.bandWidth, r = e[i] || { bandWidth: n, remainedWidth: n, autoWidthCount: 0, categoryGap: "20%", gap: "30%", stacks: {} }, a = r.stacks; e[i] = r; var o = t.stackId; a[o] || r.autoWidthCount++, a[o] = a[o] || { width: 0, maxWidth: 0 }; var s = t.barWidth; s && !a[o].width && (a[o].width = s, s = Math.min(r.remainedWidth, s), r.remainedWidth -= s); var l = t.barMaxWidth; l && (a[o].maxWidth = l); var h = t.barMinWidth; h && (a[o].minWidth = h); var u = t.barGap; null != u && (r.gap = u); var c = t.barCategoryGap; null != c && (r.categoryGap = c) }); var i = {}; return f(e, function (t, e) { i[e] = {}; var n = t.stacks, r = t.bandWidth, a = so(t.categoryGap, r), o = so(t.gap, 1), s = t.remainedWidth, l = t.autoWidthCount, h = (s - a) / (l + (l - 1) * o); h = Math.max(h, 0), f(n, function (t) { var e = t.maxWidth, i = t.minWidth; if (t.width) { var n = t.width; e && (n = Math.min(n, e)), i && (n = Math.max(n, i)), t.width = n, s -= n, l-- } else { var n = h; e && n > e && (n = Math.min(e, s)), i && i > n && (n = i), n !== h && (t.width = n, s -= n, l--) } }), h = (s - a) / (l + (l - 1) * o), h = Math.max(h, 0); var u, c = 0; f(n, function (t) { t.width || (t.width = h), u = t, c += t.width * (1 + o) }), u && (c -= u.width * o); var d = -c / 2; f(n, function (t, n) { i[e][n] = i[e][n] || { bandWidth: r, offset: d, width: t.width }, d += t.width * (1 + o) }) }), i } function gu(t, e, i) { if (t && e) { var n = t[uu(e)]; return null != n && null != i && (n = n[hu(i)]), n } } function vu(t, e) { var i = cu(t, e), n = fu(i), r = {}; f(i, function (t) { var e = t.getData(), i = t.coordinateSystem, a = i.getBaseAxis(), o = hu(t), s = n[uu(a)][o], l = s.offset, h = s.width, u = i.getOtherAxis(a), c = t.get("barMinHeight") || 0; r[o] = r[o] || [], e.setLayout({ bandWidth: s.bandWidth, offset: l, size: h }); for (var d = e.mapDimension(u.dim), f = e.mapDimension(a.dim), p = Zh(e, d), g = u.isHorizontal(), v = _u(a, u, p), m = 0, y = e.count(); y > m; m++) { var _ = e.get(d, m), x = e.get(f, m); if (!isNaN(_) && !isNaN(x)) { var w = _ >= 0 ? "p" : "n", b = v; p && (r[o][x] || (r[o][x] = { p: v, n: v }), b = r[o][x][w]); var S, M, I, T; if (g) { var C = i.dataToPoint([_, x]); S = b, M = C[1] + l, I = C[0] - v, T = h, Math.abs(I) < c && (I = (0 > I ? -1 : 1) * c), p && (r[o][x][w] += I) } else { var C = i.dataToPoint([x, _]); S = C[0] + l, M = b, I = h, T = C[1] - v, Math.abs(T) < c && (T = (0 >= T ? -1 : 1) * c), p && (r[o][x][w] += T) } e.setItemLayout(m, { x: S, y: M, width: I, height: T }) } } }, this) } function mu(t) { return t.coordinateSystem && "cartesian2d" === t.coordinateSystem.type } function yu(t) { return t.pipelineContext && t.pipelineContext.large } function _u(t, e) { return e.toGlobalCoord(e.dataToCoord("log" === e.type ? 1 : 0)) } function xu(t, e) { return fw(t, dw(e)) } function wu(t, e) { var i, n, r, a = t.type, o = e.getMin(), s = e.getMax(), l = null != o, h = null != s, u = t.getExtent(); "ordinal" === a ? i = e.getCategories().length : (n = e.get("boundaryGap"), x(n) || (n = [n || 0, n || 0]), "boolean" == typeof n[0] && (kf && console.warn('Boolean type for boundaryGap is only allowed for ordinal axis. Please use string in percentage instead, e.g., "20%". Currently, boundaryGap is set to be 0.'), n = [0, 0]), n[0] = so(n[0], 1), n[1] = so(n[1], 1), r = u[1] - u[0] || Math.abs(u[0])), null == o && (o = "ordinal" === a ? i ? 0 : 0 / 0 : u[0] - n[0] * r), null == s && (s = "ordinal" === a ? i ? i - 1 : 0 / 0 : u[1] + n[1] * r), "dataMin" === o ? o = u[0] : "function" == typeof o && (o = o({ min: u[0], max: u[1] })), "dataMax" === s ? s = u[1] : "function" == typeof s && (s = s({ min: u[0], max: u[1] })), (null == o || !isFinite(o)) && (o = 0 / 0), (null == s || !isFinite(s)) && (s = 0 / 0), t.setBlank(C(o) || C(s) || "ordinal" === a && !t.getOrdinalMeta().categories.length), e.getNeedCrossZero() && (o > 0 && s > 0 && !l && (o = 0), 0 > o && 0 > s && !h && (s = 0)); var c = e.ecModel; if (c && "time" === a) { var d, p = cu("bar", c); if (f(p, function (t) { d |= t.getBaseAxis() === e.axis }), d) { var g = fu(p), v = bu(o, s, e, g); o = v.min, s = v.max } } return [o, s] } function bu(t, e, i, n) { var r = i.axis.getExtent(), a = r[1] - r[0], o = gu(n, i.axis); if (void 0 === o) return { min: t, max: e }; var s = 1 / 0; f(o, function (t) { s = Math.min(t.offset, s) }); var l = -1 / 0; f(o, function (t) { l = Math.max(t.offset + t.width, l) }), s = Math.abs(s), l = Math.abs(l); var h = s + l, u = e - t, c = 1 - (s + l) / a, d = u / c - u; return e += d * (l / h), t -= d * (s / h), { min: t, max: e } } function Su(t, e) { var i = wu(t, e), n = null != e.getMin(), r = null != e.getMax(), a = e.get("splitNumber"); "log" === t.type && (t.base = e.get("logBase")); var o = t.type; t.setExtent(i[0], i[1]), t.niceExtent({ splitNumber: a, fixMin: n, fixMax: r, minInterval: "interval" === o || "time" === o ? e.get("minInterval") : null, maxInterval: "interval" === o || "time" === o ? e.get("maxInterval") : null }); var s = e.get("interval"); null != s && t.setInterval && t.setInterval(s) } function Mu(t, e) { if (e = e || t.get("type")) switch (e) { case "category": return new Yx(t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(), [1 / 0, -1 / 0]); case "value": return new Zx; default: return (tu.getClass(e) || Zx).create(t) } } function Iu(t) { var e = t.scale.getExtent(), i = e[0], n = e[1]; return !(i > 0 && n > 0 || 0 > i && 0 > n) } function Tu(t) { var e = t.getLabelModel().get("formatter"), i = "category" === t.type ? t.scale.getExtent()[0] : null; return "string" == typeof e ? e = function (e) { return function (i) { return i = t.scale.getLabel(i), e.replace("{value}", null != i ? i : "") } }(e) : "function" == typeof e ? function (n, r) { return null != i && (r = n - i), e(Cu(t, n), r) } : function (e) { return t.scale.getLabel(e) } } function Cu(t, e) { return "category" === t.type ? t.scale.getLabel(e) : e } function Au(t) { var e = t.model, i = t.scale; if (e.get("axisLabel.show") && !i.isBlank()) { var n, r, a = "category" === t.type, o = i.getExtent(); a ? r = i.count() : (n = i.getTicks(), r = n.length); var s, l = t.getLabelModel(), h = Tu(t), u = 1; r > 40 && (u = Math.ceil(r / 40)); for (var c = 0; r > c; c += u) { var d = n ? n[c] : o[0] + c, f = h(d), p = l.getTextRect(f), g = Du(p, l.get("rotate") || 0); s ? s.union(g) : s = g } return s } } function Du(t, e) { var i = e * Math.PI / 180, n = t.plain(), r = n.width, a = n.height, o = r * Math.cos(i) + a * Math.sin(i), s = r * Math.sin(i) + a * Math.cos(i), l = new xi(n.x, n.y, o, s); return l } function ku(t) { var e = t.get("interval"); return null == e ? "auto" : e } function Pu(t) { return "category" === t.type && 0 === ku(t.getLabelModel()) } function Lu(t, e) { if ("image" !== this.type) { var i = this.style, n = this.shape; n && "line" === n.symbolType ? i.stroke = t : this.__isEmptyBrush ? (i.stroke = t, i.fill = e || "#fff") : (i.fill && (i.fill = t), i.stroke && (i.stroke = t)), this.dirty(!1) } } function Ou(t, e, i, n, r, a, o) { var s = 0 === t.indexOf("empty"); s && (t = t.substr(5, 1).toLowerCase() + t.substr(6)); var l; return l = 0 === t.indexOf("image://") ? oa(t.slice(8), new xi(e, i, n, r), o ? "center" : "cover") : 0 === t.indexOf("path://") ? aa(t.slice(7), {}, new xi(e, i, n, r), o ? "center" : "cover") : new Cw({ shape: { symbolType: t, x: e, y: i, width: n, height: r } }), l.__isEmptyBrush = s, l.setColor = Lu, l.setColor(a), l } function Eu(t) { return $h(t.getSource(), t) } function zu(t, e) { var i = e; Ja.isInstance(e) || (i = new Ja(e), c(i, _w)); var n = Mu(i); return n.setExtent(t[0], t[1]), Su(n, i), n } function Bu(t) { c(t, _w) } function Ru(t, e) { return Math.abs(t - e) < kw } function Nu(t, e, i) { var n = 0, r = t[0]; if (!r) return !1; for (var a = 1; a < t.length; a++) { var o = t[a]; n += Lr(r[0], r[1], o[0], o[1], e, i), r = o } var s = t[0]; return Ru(r[0], s[0]) && Ru(r[1], s[1]) || (n += Lr(r[0], r[1], s[0], s[1], e, i)), 0 !== n } function Fu(t, e, i) { if (this.name = t, this.geometries = e, i) i = [i[0], i[1]]; else { var n = this.getBoundingRect(); i = [n.x + n.width / 2, n.y + n.height / 2] } this.center = i } function Vu(t) { if (!t.UTF8Encoding) return t; var e = t.UTF8Scale; null == e && (e = 1024); for (var i = t.features, n = 0; n < i.length; n++)for (var r = i[n], a = r.geometry, o = a.coordinates, s = a.encodeOffsets, l = 0; l < o.length; l++) { var h = o[l]; if ("Polygon" === a.type) o[l] = Hu(h, s[l], e); else if ("MultiPolygon" === a.type) for (var u = 0; u < h.length; u++) { var c = h[u]; h[u] = Hu(c, s[l][u], e) } } return t.UTF8Encoding = !1, t } function Hu(t, e, i) { for (var n = [], r = e[0], a = e[1], o = 0; o < t.length; o += 2) { var s = t.charCodeAt(o) - 64, l = t.charCodeAt(o + 1) - 64; s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), s += r, l += a, r = s, a = l, n.push([s / i, l / i]) } return n } function Gu(t) { return "category" === t.type ? Xu(t) : ju(t) } function Wu(t, e) { return "category" === t.type ? Yu(t, e) : { ticks: t.scale.getTicks() } } function Xu(t) { var e = t.getLabelModel(), i = Uu(t, e); return !e.get("show") || t.scale.isBlank() ? { labels: [], labelCategoryInterval: i.labelCategoryInterval } : i } function Uu(t, e) { var i = qu(t, "labels"), n = ku(e), r = Zu(i, n); if (r) return r; var a, o; return w(n) ? a = ec(t, n) : (o = "auto" === n ? $u(t) : n, a = tc(t, o)), Ku(i, n, { labels: a, labelCategoryInterval: o }) } function Yu(t, e) { var i = qu(t, "ticks"), n = ku(e), r = Zu(i, n); if (r) return r; var a, o; if ((!e.get("show") || t.scale.isBlank()) && (a = []), w(n)) a = ec(t, n, !0); else if ("auto" === n) { var s = Uu(t, t.getLabelModel()); o = s.labelCategoryInterval, a = p(s.labels, function (t) { return t.tickValue }) } else o = n, a = tc(t, o, !0); return Ku(i, n, { ticks: a, tickCategoryInterval: o }) } function ju(t) { var e = t.scale.getTicks(), i = Tu(t); return { labels: p(e, function (e, n) { return { formattedLabel: i(e, n), rawLabel: t.scale.getLabel(e), tickValue: e } }) } } function qu(t, e) { return Lw(t)[e] || (Lw(t)[e] = []) } function Zu(t, e) { for (var i = 0; i < t.length; i++)if (t[i].key === e) return t[i].value } function Ku(t, e, i) { return t.push({ key: e, value: i }), i } function $u(t) { var e = Lw(t).autoInterval; return null != e ? e : Lw(t).autoInterval = t.calculateCategoryInterval() } function Qu(t) { var e = Ju(t), i = Tu(t), n = (e.axisRotate - e.labelRotate) / 180 * Math.PI, r = t.scale, a = r.getExtent(), o = r.count(); if (a[1] - a[0] < 1) return 0; var s = 1; o > 40 && (s = Math.max(1, Math.floor(o / 40))); for (var l = a[0], h = t.dataToCoord(l + 1) - t.dataToCoord(l), u = Math.abs(h * Math.cos(n)), c = Math.abs(h * Math.sin(n)), d = 0, f = 0; l <= a[1]; l += s) { var p = 0, g = 0, v = Vi(i(l), e.font, "center", "top"); p = 1.3 * v.width, g = 1.3 * v.height, d = Math.max(d, p, 7), f = Math.max(f, g, 7) } var m = d / u, y = f / c; isNaN(m) && (m = 1 / 0), isNaN(y) && (y = 1 / 0); var _ = Math.max(0, Math.floor(Math.min(m, y))), x = Lw(t.model), w = t.getExtent(), b = x.lastAutoInterval, S = x.lastTickCount; return null != b && null != S && Math.abs(b - _) <= 1 && Math.abs(S - o) <= 1 && b > _ && x.axisExtend0 === w[0] && x.axisExtend1 === w[1] ? _ = b : (x.lastTickCount = o, x.lastAutoInterval = _, x.axisExtend0 = w[0], x.axisExtend1 = w[1]), _ } function Ju(t) { var e = t.getLabelModel(); return { axisRotate: t.getRotate ? t.getRotate() : t.isHorizontal && !t.isHorizontal() ? 90 : 0, labelRotate: e.get("rotate") || 0, font: e.getFont() } } function tc(t, e, i) { function n(t) { l.push(i ? t : { formattedLabel: r(t), rawLabel: a.getLabel(t), tickValue: t }) } var r = Tu(t), a = t.scale, o = a.getExtent(), s = t.getLabelModel(), l = [], h = Math.max((e || 0) + 1, 1), u = o[0], c = a.count(); 0 !== u && h > 1 && c / h > 2 && (u = Math.round(Math.ceil(u / h) * h)); var d = Pu(t), f = s.get("showMinLabel") || d, p = s.get("showMaxLabel") || d; f && u !== o[0] && n(o[0]); for (var g = u; g <= o[1]; g += h)n(g); return p && g - h !== o[1] && n(o[1]), l } function ec(t, e, i) { var n = t.scale, r = Tu(t), a = []; return f(n.getTicks(), function (t) { var o = n.getLabel(t); e(t, o) && a.push(i ? t : { formattedLabel: r(t), rawLabel: o, tickValue: t }) }), a } function ic(t, e) { var i = t[1] - t[0], n = e, r = i / n / 2; t[0] += r, t[1] -= r } function nc(t, e, i, n) { function r(t, e) { return t = lo(t), e = lo(e), d ? t > e : e > t } var a = e.length; if (t.onBand && !i && a) { var o, s, l = t.getExtent(); if (1 === a) e[0].coord = l[0], o = e[1] = { coord: l[0] }; else { var h = e[a - 1].tickValue - e[0].tickValue, u = (e[a - 1].coord - e[0].coord) / h; f(e, function (t) { t.coord -= u / 2 }); var c = t.scale.getExtent(); s = 1 + c[1] - e[a - 1].tickValue, o = { coord: e[a - 1].coord + u * s }, e.push(o) } var d = l[0] > l[1]; r(e[0].coord, l[0]) && (n ? e[0].coord = l[0] : e.shift()), n && r(l[0], e[0].coord) && e.unshift({ coord: l[0] }), r(l[1], o.coord) && (n ? o.coord = l[1] : e.pop()), n && r(o.coord, l[1]) && e.push({ coord: l[1] }) } } function rc(t) { return this._axes[t] } function ac(t) { Nw.call(this, t) } function oc(t, e) { return e.type || (e.data ? "category" : "value") } function sc(t, e) { return t.getCoordSysModel() === e } function lc(t, e, i) { this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this._initCartesian(t, e, i), this.model = t } function hc(t, e, i, n) { function r(t) { return t.dim + "_" + t.index } i.getAxesOnZeroOf = function () { return a ? [a] : [] }; var a, o = t[e], s = i.model, l = s.get("axisLine.onZero"), h = s.get("axisLine.onZeroAxisIndex"); if (l) { if (null != h) uc(o[h]) && (a = o[h]); else for (var u in o) if (o.hasOwnProperty(u) && uc(o[u]) && !n[r(o[u])]) { a = o[u]; break } a && (n[r(a)] = !0) } } function uc(t) { return t && "category" !== t.type && "time" !== t.type && Iu(t) } function cc(t, e) { var i = t.getExtent(), n = i[0] + i[1]; t.toGlobalCoord = "x" === t.dim ? function (t) { return t + e } : function (t) { return n - t + e }, t.toLocalCoord = "x" === t.dim ? function (t) { return t - e } : function (t) { return n - t + e } } function dc(t) { return p(jw, function (e) { var i = t.getReferringComponents(e)[0]; if (kf && !i) throw new Error(e + ' "' + A(t.get(e + "Index"), t.get(e + "Id"), 0) + '" not found'); return i }) } function fc(t) { return "cartesian2d" === t.get("coordinateSystem") } function pc(t, e) { var i = t.mapDimension("defaultedLabel", !0), n = i.length; if (1 === n) return Ns(t, e, i[0]); if (n) { for (var r = [], a = 0; a < i.length; a++) { var o = Ns(t, e, i[a]); r.push(o) } return r.join(" ") } } function gc(t, e, i, n, r, a) { var o = i.getModel("label"), s = i.getModel("emphasis.label"); Aa(t, e, o, s, { labelFetcher: r, labelDataIndex: a, defaultText: pc(r.getData(), a), isRectText: !0, autoColor: n }), vc(t), vc(e) } function vc(t, e) { "outside" === t.textPosition && (t.textPosition = e) } function mc(t, e, i) { var n = t.getArea(), r = t.getBaseAxis().isHorizontal(), a = n.x, o = n.y, s = n.width, l = n.height, h = i.get("lineStyle.width") || 2; a -= h / 2, o -= h / 2, s += h, l += h; var u = new _m({ shape: { x: a, y: o, width: s, height: l } }); return e && (u.shape[r ? "width" : "height"] = 0, Ha(u, { shape: { width: s, height: l } }, i)), u } function yc(t, e, i) { var n = t.getArea(), r = new cm({ shape: { cx: lo(t.cx, 1), cy: lo(t.cy, 1), r0: lo(n.r0, 1), r: lo(n.r, 1), startAngle: n.startAngle, endAngle: n.endAngle, clockwise: n.clockwise } }); return e && (r.shape.endAngle = n.startAngle, Ha(r, { shape: { endAngle: n.endAngle } }, i)), r } function _c(t, e, i) { return t ? "polar" === t.type ? yc(t, e, i) : "cartesian2d" === t.type ? mc(t, e, i) : null : null } function xc(t, e) { var i = t.getArea && t.getArea(); if ("cartesian2d" === t.type) { var n = t.getBaseAxis(); if ("category" !== n.type || !n.onBand) { var r = e.getLayout("bandWidth"); n.isHorizontal() ? (i.x -= r, i.width += 2 * r) : (i.y -= r, i.height += 2 * r) } } return i } function wc(t, e, i) { i.style.text = null, Va(i, { shape: { width: 0 } }, e, t, function () { i.parent && i.parent.remove(i) }) } function bc(t, e, i) { i.style.text = null, Va(i, { shape: { r: i.shape.r0 } }, e, t, function () { i.parent && i.parent.remove(i) }) } function Sc(t, e, i, n, r, a, o, l) { var h = e.getItemVisual(i, "color"), u = e.getItemVisual(i, "opacity"), c = n.getModel("itemStyle"), d = n.getModel("emphasis.itemStyle").getBarItemStyle(); l || t.setShape("r", c.get("barBorderRadius") || 0), t.useStyle(s({ fill: h, opacity: u }, c.getBarItemStyle())); var f = n.getShallow("cursor"); f && t.attr("cursor", f); var p = o ? r.height > 0 ? "bottom" : "top" : r.width > 0 ? "left" : "right"; l || gc(t.style, d, n, h, a, i, p), Ma(t, d) } function Mc(t, e) { var i = t.get(Qw) || 0; return Math.min(i, Math.abs(e.width), Math.abs(e.height)) } function Ic(t, e, i) { var n = t.getData(), r = [], a = n.getLayout("valueAxisHorizontal") ? 1 : 0; r[1 - a] = n.getLayout("valueAxisStart"); var o = new ab({ shape: { points: n.getLayout("largePoints") }, incremental: !!i, __startPoint: r, __baseDimIdx: a, __largeDataIndices: n.getLayout("largeDataIndices"), __barWidth: n.getLayout("barWidth") }); e.add(o), Cc(o, t, n), o.seriesIndex = t.seriesIndex, t.get("silent") || (o.on("mousedown", ob), o.on("mousemove", ob)) } function Tc(t, e, i) { var n = t.__baseDimIdx, r = 1 - n, a = t.shape.points, o = t.__largeDataIndices, s = Math.abs(t.__barWidth / 2), l = t.__startPoint[r]; Jw[0] = e, Jw[1] = i; for (var h = Jw[n], u = Jw[1 - n], c = h - s, d = h + s, f = 0, p = a.length / 2; p > f; f++) { var g = 2 * f, v = a[g + n], m = a[g + r]; if (v >= c && d >= v && (m >= l ? u >= l && m >= u : u >= m && l >= u)) return o[f] } return -1 } function Cc(t, e, i) { var n = i.getVisual("borderColor") || i.getVisual("color"), r = e.getModel("itemStyle").getItemStyle(["color", "borderColor"]); t.useStyle(r), t.style.fill = null, t.style.stroke = n, t.style.lineWidth = i.getLayout("barWidth") } function Ac(t, e, i, n) { var r, a, o = go(i - t.rotation), s = n[0] > n[1], l = "start" === e && !s || "start" !== e && s; return vo(o - sb / 2) ? (a = l ? "bottom" : "top", r = "center") : vo(o - 1.5 * sb) ? (a = l ? "top" : "bottom", r = "center") : (a = "middle", r = 1.5 * sb > o && o > sb / 2 ? l ? "left" : "right" : l ? "right" : "left"), { rotation: o, textAlign: r, textVerticalAlign: a } } function Dc(t, e, i) { if (!Pu(t.axis)) { var n = t.get("axisLabel.showMinLabel"), r = t.get("axisLabel.showMaxLabel"); e = e || [], i = i || []; var a = e[0], o = e[1], s = e[e.length - 1], l = e[e.length - 2], h = i[0], u = i[1], c = i[i.length - 1], d = i[i.length - 2]; n === !1 ? (kc(a), kc(h)) : Pc(a, o) && (n ? (kc(o), kc(u)) : (kc(a), kc(h))), r === !1 ? (kc(s), kc(c)) : Pc(l, s) && (r ? (kc(l), kc(d)) : (kc(s), kc(c))) } } function kc(t) { t && (t.ignore = !0) } function Pc(t, e) { var i = t && t.getBoundingRect().clone(), n = e && e.getBoundingRect().clone(); if (i && n) { var r = Ae([]); return Le(r, r, -t.rotation), i.applyTransform(ke([], r, t.getLocalTransform())), n.applyTransform(ke([], r, e.getLocalTransform())), i.intersect(n) } } function Lc(t) { return "middle" === t || "center" === t } function Oc(t, e, i) { var n = e.axis; if (e.get("axisTick.show") && !n.scale.isBlank()) { for (var r = e.getModel("axisTick"), a = r.getModel("lineStyle"), o = r.get("length"), l = n.getTicksCoords(), h = [], u = [], c = t._transform, d = [], f = 0; f < l.length; f++) { var p = l[f].coord; h[0] = p, h[1] = 0, u[0] = p, u[1] = i.tickDirection * o, c && (ae(h, h, c), ae(u, u, c)); var g = new wm({ anid: "tick_" + l[f].tickValue, subPixelOptimize: !0, shape: { x1: h[0], y1: h[1], x2: u[0], y2: u[1] }, style: s(a.getLineStyle(), { stroke: e.get("axisLine.lineStyle.color") }), z2: 2, silent: !0 }); t.group.add(g), d.push(g) } return d } } function Ec(t, e, i) { var n = e.axis, r = A(i.axisLabelShow, e.get("axisLabel.show")); if (r && !n.scale.isBlank()) { var a = e.getModel("axisLabel"), o = a.get("margin"), s = n.getViewLabels(), l = (A(i.labelRotate, a.get("rotate")) || 0) * sb / 180, h = cb(i.rotation, l, i.labelDirection), u = e.getCategories && e.getCategories(!0), c = [], d = db(e), p = e.get("triggerEvent"); return f(s, function (r, s) { var l = r.tickValue, f = r.formattedLabel, g = r.rawLabel, v = a; u && u[l] && u[l].textStyle && (v = new Ja(u[l].textStyle, a, e.ecModel)); var m = v.getTextColor() || e.get("axisLine.lineStyle.color"), y = n.dataToCoord(l), _ = [y, i.labelOffset + i.labelDirection * o], x = new sm({ anid: "label_" + l, position: _, rotation: h.rotation, silent: d, z2: 10 }); ka(x.style, v, { text: f, textAlign: v.getShallow("align", !0) || h.textAlign, textVerticalAlign: v.getShallow("verticalAlign", !0) || v.getShallow("baseline", !0) || h.textVerticalAlign, textFill: "function" == typeof m ? m("category" === n.type ? g : "value" === n.type ? l + "" : l, s) : m }), p && (x.eventData = ub(e), x.eventData.targetType = "axisLabel", x.eventData.value = g), t._dumbGroup.add(x), x.updateTransform(), c.push(x), t.group.add(x), x.decomposeTransform() }), c } } function zc(t, e) { var i = { axesInfo: {}, seriesInvolved: !1, coordSysAxesInfo: {}, coordSysMap: {} }; return Bc(i, t, e), i.seriesInvolved && Nc(i, t), i } function Bc(t, e, i) { var n = e.getComponent("tooltip"), r = e.getComponent("axisPointer"), a = r.get("link", !0) || [], o = []; fb(i.getCoordinateSystems(), function (i) { function s(n, s, l) { var u = l.model.getModel("axisPointer", r), d = u.get("show"); if (d && ("auto" !== d || n || Xc(u))) { null == s && (s = u.get("triggerTooltip")), u = n ? Rc(l, c, r, e, n, s) : u; var f = u.get("snap"), p = Uc(l.model), g = s || f || "category" === l.type, v = t.axesInfo[p] = { key: p, axis: l, coordSys: i, axisPointerModel: u, triggerTooltip: s, involveSeries: g, snap: f, useHandle: Xc(u), seriesModels: [] }; h[p] = v, t.seriesInvolved |= g; var m = Fc(a, l); if (null != m) { var y = o[m] || (o[m] = { axesInfo: {} }); y.axesInfo[p] = v, y.mapper = a[m].mapper, v.linkGroup = y } } } if (i.axisPointerEnabled) { var l = Uc(i.model), h = t.coordSysAxesInfo[l] = {}; t.coordSysMap[l] = i; var u = i.model, c = u.getModel("tooltip", n); if (fb(i.getAxes(), pb(s, !1, null)), i.getTooltipAxes && n && c.get("show")) { var d = "axis" === c.get("trigger"), f = "cross" === c.get("axisPointer.type"), p = i.getTooltipAxes(c.get("axisPointer.axis")); (d || f) && fb(p.baseAxes, pb(s, f ? "cross" : !0, d)), f && fb(p.otherAxes, pb(s, "cross", !1)) } } }) } function Rc(t, e, i, r, a, o) { var l = e.getModel("axisPointer"), h = {}; fb(["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"], function (t) { h[t] = n(l.get(t)) }), h.snap = "category" !== t.type && !!o, "cross" === l.get("type") && (h.type = "line"); var u = h.label || (h.label = {}); if (null == u.show && (u.show = !1), "cross" === a) { var c = l.get("label.show"); if (u.show = null != c ? c : !0, !o) { var d = h.lineStyle = l.get("crossStyle"); d && s(u, d.textStyle) } } return t.model.getModel("axisPointer", new Ja(h, i, r)) } function Nc(t, e) { e.eachSeries(function (e) { var i = e.coordinateSystem, n = e.get("tooltip.trigger", !0), r = e.get("tooltip.show", !0); i && "none" !== n && n !== !1 && "item" !== n && r !== !1 && e.get("axisPointer.show", !0) !== !1 && fb(t.coordSysAxesInfo[Uc(i.model)], function (t) { var n = t.axis; i.getAxis(n.dim) === n && (t.seriesModels.push(e), null == t.seriesDataCount && (t.seriesDataCount = 0), t.seriesDataCount += e.getData().count()) }) }, this) } function Fc(t, e) { for (var i = e.model, n = e.dim, r = 0; r < t.length; r++) { var a = t[r] || {}; if (Vc(a[n + "AxisId"], i.id) || Vc(a[n + "AxisIndex"], i.componentIndex) || Vc(a[n + "AxisName"], i.name)) return r } } function Vc(t, e) { return "all" === t || x(t) && h(t, e) >= 0 || t === e } function Hc(t) { var e = Gc(t); if (e) { var i = e.axisPointerModel, n = e.axis.scale, r = i.option, a = i.get("status"), o = i.get("value"); null != o && (o = n.parse(o)); var s = Xc(i); null == a && (r.status = s ? "show" : "hide"); var l = n.getExtent().slice(); l[0] > l[1] && l.reverse(), (null == o || o > l[1]) && (o = l[1]), o < l[0] && (o = l[0]), r.value = o, s && (r.status = e.axis.scale.isBlank() ? "hide" : "show") } } function Gc(t) { var e = (t.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo; return e && e.axesInfo[Uc(t)] } function Wc(t) { var e = Gc(t); return e && e.axisPointerModel } function Xc(t) { return !!t.get("handle.show") } function Uc(t) { return t.type + "||" + t.id } function Yc(t, e, i, n, r, a) { var o = gb.getAxisPointerClass(t.axisPointerClass); if (o) { var s = Wc(e); s ? (t._axisPointer || (t._axisPointer = new o)).render(e, s, n, a) : jc(t, n) } } function jc(t, e, i) { var n = t._axisPointer; n && n.dispose(e, i), t._axisPointer = null } function qc(t, e, i) { i = i || {}; var n = t.coordinateSystem, r = e.axis, a = {}, o = r.getAxesOnZeroOf()[0], s = r.position, l = o ? "onZero" : s, h = r.dim, u = n.getRect(), c = [u.x, u.x + u.width, u.y, u.y + u.height], d = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 }, f = e.get("offset") || 0, p = "x" === h ? [c[2] - f, c[3] + f] : [c[0] - f, c[1] + f]; if (o) { var g = o.toGlobalCoord(o.dataToCoord(0)); p[d.onZero] = Math.max(Math.min(g, p[1]), p[0]) } a.position = ["y" === h ? p[d[l]] : c[0], "x" === h ? p[d[l]] : c[3]], a.rotation = Math.PI / 2 * ("x" === h ? 0 : 1); var v = { top: -1, bottom: 1, left: -1, right: 1 }; a.labelDirection = a.tickDirection = a.nameDirection = v[s], a.labelOffset = o ? p[d[s]] - p[d.onZero] : 0, e.get("axisTick.inside") && (a.tickDirection = -a.tickDirection), A(i.labelInside, e.get("axisLabel.inside")) && (a.labelDirection = -a.labelDirection); var m = e.get("axisLabel.rotate"); return a.labelRotate = "top" === l ? -m : m, a.z2 = 1, a } function Zc(t, e, i) { jp.call(this), this.updateData(t, e, i) } function Kc(t) { return [t[0] / 2, t[1] / 2] } function $c(t, e) { this.parent.drift(t, e) } function Qc(t, e) { if (!this.incremental && !this.useHoverLayer) if ("emphasis" === e) { var i = this.__symbolOriginalScale, n = i[1] / i[0], r = { scale: [Math.max(1.1 * i[0], i[0] + 3), Math.max(1.1 * i[1], i[1] + 3 * n)] }; this.animateTo(r, 400, "elasticOut") } else "normal" === e && this.animateTo({ scale: this.__symbolOriginalScale }, 400, "elasticOut") } function Jc(t) { this.group = new jp, this._symbolCtor = t || Zc } function td(t, e, i, n) { return !(!e || isNaN(e[0]) || isNaN(e[1]) || n.isIgnore && n.isIgnore(i) || n.clipShape && !n.clipShape.contain(e[0], e[1]) || "none" === t.getItemVisual(i, "symbol")) } function ed(t) { return null == t || S(t) || (t = { isIgnore: t }), t || {} } function id(t) {
  10. var e = t.hostModel; return { itemStyle: e.getModel("itemStyle").getItemStyle(["color"]), hoverItemStyle: e.getModel("emphasis.itemStyle").getItemStyle(), symbolRotate: e.get("symbolRotate"), symbolOffset: e.get("symbolOffset"), hoverAnimation: e.get("hoverAnimation"), labelModel: e.getModel("label"), hoverLabelModel: e.getModel("emphasis.label"), cursorStyle: e.get("cursor") }
  11. } function nd(t, e, i) { var n, r = t.getBaseAxis(), a = t.getOtherAxis(r), o = rd(a, i), s = r.dim, l = a.dim, h = e.mapDimension(l), u = e.mapDimension(s), c = "x" === l || "radius" === l ? 1 : 0, d = p(t.dimensions, function (t) { return e.mapDimension(t) }), f = e.getCalculationInfo("stackResultDimension"); return (n |= Zh(e, d[0])) && (d[0] = f), (n |= Zh(e, d[1])) && (d[1] = f), { dataDimsForPoint: d, valueStart: o, valueAxisDim: l, baseAxisDim: s, stacked: !!n, valueDim: h, baseDim: u, baseDataOffset: c, stackedOverDimension: e.getCalculationInfo("stackedOverDimension") } } function rd(t, e) { var i = 0, n = t.scale.getExtent(); return "start" === e ? i = n[0] : "end" === e ? i = n[1] : n[0] > 0 ? i = n[0] : n[1] < 0 && (i = n[1]), i } function ad(t, e, i, n) { var r = 0 / 0; t.stacked && (r = i.get(i.getCalculationInfo("stackedOverDimension"), n)), isNaN(r) && (r = t.valueStart); var a = t.baseDataOffset, o = []; return o[a] = i.get(t.baseDim, n), o[1 - a] = r, e.dataToPoint(o) } function od(t, e) { var i = []; return e.diff(t).add(function (t) { i.push({ cmd: "+", idx: t }) }).update(function (t, e) { i.push({ cmd: "=", idx: e, idx1: t }) }).remove(function (t) { i.push({ cmd: "-", idx: t }) }).execute(), i } function sd(t) { return isNaN(t[0]) || isNaN(t[1]) } function ld(t, e, i, n, r, a, o, s, l, h) { return "none" !== h && h ? hd.apply(this, arguments) : ud.apply(this, arguments) } function hd(t, e, i, n, r, a, o, s, l, h, u) { for (var c = 0, d = i, f = 0; n > f; f++) { var p = e[d]; if (d >= r || 0 > d) break; if (sd(p)) { if (u) { d += a; continue } break } if (d === i) t[a > 0 ? "moveTo" : "lineTo"](p[0], p[1]); else if (l > 0) { var g = e[c], v = "y" === h ? 1 : 0, m = (p[v] - g[v]) * l; Pb(Ob, g), Ob[v] = g[v] + m, Pb(Eb, p), Eb[v] = p[v] - m, t.bezierCurveTo(Ob[0], Ob[1], Eb[0], Eb[1], p[0], p[1]) } else t.lineTo(p[0], p[1]); c = d, d += a } return f } function ud(t, e, i, n, r, a, o, s, l, h, u) { for (var c = 0, d = i, f = 0; n > f; f++) { var p = e[d]; if (d >= r || 0 > d) break; if (sd(p)) { if (u) { d += a; continue } break } if (d === i) t[a > 0 ? "moveTo" : "lineTo"](p[0], p[1]), Pb(Ob, p); else if (l > 0) { var g = d + a, v = e[g]; if (u) for (; v && sd(e[g]);)g += a, v = e[g]; var m = .5, y = e[c], v = e[g]; if (!v || sd(v)) Pb(Eb, p); else { sd(v) && !u && (v = p), j(Lb, v, y); var _, x; if ("x" === h || "y" === h) { var w = "x" === h ? 0 : 1; _ = Math.abs(p[w] - y[w]), x = Math.abs(p[w] - v[w]) } else _ = Qf(p, y), x = Qf(p, v); m = x / (x + _), kb(Eb, p, Lb, -l * (1 - m)) } Ab(Ob, Ob, s), Db(Ob, Ob, o), Ab(Eb, Eb, s), Db(Eb, Eb, o), t.bezierCurveTo(Ob[0], Ob[1], Eb[0], Eb[1], p[0], p[1]), kb(Ob, p, Lb, l * m) } else t.lineTo(p[0], p[1]); c = d, d += a } return f } function cd(t, e) { var i = [1 / 0, 1 / 0], n = [-1 / 0, -1 / 0]; if (e) for (var r = 0; r < t.length; r++) { var a = t[r]; a[0] < i[0] && (i[0] = a[0]), a[1] < i[1] && (i[1] = a[1]), a[0] > n[0] && (n[0] = a[0]), a[1] > n[1] && (n[1] = a[1]) } return { min: e ? i : n, max: e ? n : i } } function dd(t, e) { if (t.length === e.length) { for (var i = 0; i < t.length; i++) { var n = t[i], r = e[i]; if (n[0] !== r[0] || n[1] !== r[1]) return } return !0 } } function fd(t) { return "number" == typeof t ? t : t ? .5 : 0 } function pd(t, e, i) { if (!i.valueDim) return []; for (var n = [], r = 0, a = e.count(); a > r; r++)n.push(ad(i, t, e, r)); return n } function gd(t, e, i) { for (var n = e.getBaseAxis(), r = "x" === n.dim || "radius" === n.dim ? 0 : 1, a = [], o = 0; o < t.length - 1; o++) { var s = t[o + 1], l = t[o]; a.push(l); var h = []; switch (i) { case "end": h[r] = s[r], h[1 - r] = l[1 - r], a.push(h); break; case "middle": var u = (l[r] + s[r]) / 2, c = []; h[r] = c[r] = u, h[1 - r] = l[1 - r], c[1 - r] = s[1 - r], a.push(h), a.push(c); break; default: h[r] = l[r], h[1 - r] = s[1 - r], a.push(h) } } return t[o] && a.push(t[o]), a } function vd(t, e) { var i = t.getVisual("visualMeta"); if (i && i.length && t.count()) { if ("cartesian2d" !== e.type) return void (kf && console.warn("Visual map on line style is only supported on cartesian2d.")); for (var n, r, a = i.length - 1; a >= 0; a--) { var o = i[a].dimension, s = t.dimensions[o], l = t.getDimensionInfo(s); if (n = l && l.coordDim, "x" === n || "y" === n) { r = i[a]; break } } if (!r) return void (kf && console.warn("Visual map on line style only support x or y dimension.")); var h = e.getAxis(n), u = p(r.stops, function (t) { return { coord: h.toGlobalCoord(h.dataToCoord(t.value)), color: t.color } }), c = u.length, d = r.outerColors.slice(); c && u[0].coord > u[c - 1].coord && (u.reverse(), d.reverse()); var g = 10, v = u[0].coord - g, m = u[c - 1].coord + g, y = m - v; if (.001 > y) return "transparent"; f(u, function (t) { t.offset = (t.coord - v) / y }), u.push({ offset: c ? u[c - 1].offset : .5, color: d[1] || "transparent" }), u.unshift({ offset: c ? u[0].offset : .5, color: d[0] || "transparent" }); var _ = new Cm(0, 0, 0, 0, u, !0); return _[n] = v, _[n + "2"] = m, _ } } function md(t, e, i) { var n = t.get("showAllSymbol"), r = "auto" === n; if (!n || r) { var a = i.getAxesByScale("ordinal")[0]; if (a && (!r || !yd(a, e))) { var o = e.mapDimension(a.dim), s = {}; return f(a.getViewLabels(), function (t) { s[t.tickValue] = 1 }), function (t) { return !s.hasOwnProperty(e.get(o, t)) } } } } function yd(t, e) { var i = t.getExtent(), n = Math.abs(i[1] - i[0]) / t.scale.count(); isNaN(n) && (n = 0); for (var r = e.count(), a = Math.max(1, Math.round(r / 5)), o = 0; r > o; o += a)if (1.5 * Zc.getSymbolSize(e, o)[t.isHorizontal() ? 1 : 0] > n) return !1; return !0 } function _d(t, e, i) { if ("cartesian2d" === t.type) { var n = t.getBaseAxis().isHorizontal(), r = mc(t, e, i); if (!i.get("clip", !0)) { var a = r.shape, o = Math.max(a.width, a.height); n ? (a.y -= o, a.height += 2 * o) : (a.x -= o, a.width += 2 * o) } return r } return yc(t, e, i) } function xd(t, e, i, n) { var r = e.getData(), a = this.dataIndex, o = r.getName(a), s = e.get("selectedOffset"); n.dispatchAction({ type: "pieToggleSelect", from: t, name: o, seriesId: e.id }), r.each(function (t) { wd(r.getItemGraphicEl(t), r.getItemLayout(t), e.isSelected(r.getName(t)), s, i) }) } function wd(t, e, i, n, r) { var a = (e.startAngle + e.endAngle) / 2, o = Math.cos(a), s = Math.sin(a), l = i ? n : 0, h = [o * l, s * l]; r ? t.animate().when(200, { position: h }).start("bounceOut") : t.attr("position", h) } function bd(t, e) { jp.call(this); var i = new cm({ z2: 2 }), n = new vm, r = new sm; this.add(i), this.add(n), this.add(r), this.updateData(t, e, !0) } function Sd(t, e, i, n, r, a, o) { function s(e, i, n) { for (var r = e; i > r; r++)if (t[r].y += n, r > e && i > r + 1 && t[r + 1].y > t[r].y + t[r].height) return void l(r, n / 2); l(i - 1, n / 2) } function l(e, i) { for (var n = e; n >= 0 && (t[n].y -= i, !(n > 0 && t[n].y > t[n - 1].y + t[n - 1].height)); n--); } function h(t, e, i, n, r, a) { for (var o = a > 0 ? e ? Number.MAX_VALUE : 0 : e ? Number.MAX_VALUE : 0, s = 0, l = t.length; l > s; s++) { var h = Math.abs(t[s].y - n), u = t[s].len, c = t[s].len2, d = r + u > h ? Math.sqrt((r + u + c) * (r + u + c) - h * h) : Math.abs(t[s].x - i); e && d >= o && (d = o - 10), !e && o >= d && (d = o + 10), t[s].x = i + d * a, o = d } } t.sort(function (t, e) { return t.y - e.y }); for (var u, c = 0, d = t.length, f = [], p = [], g = 0; d > g; g++)u = t[g].y - c, 0 > u && s(g, d, -u, r), c = t[g].y + t[g].height; 0 > o - c && l(d - 1, c - o); for (var g = 0; d > g; g++)t[g].y >= i ? p.push(t[g]) : f.push(t[g]); h(f, !1, e, i, n, r), h(p, !0, e, i, n, r) } function Md(t, e, i, n, r, a) { for (var o = [], s = [], l = 0; l < t.length; l++)Id(t[l]) || (t[l].x < e ? o.push(t[l]) : s.push(t[l])); Sd(s, e, i, n, 1, r, a), Sd(o, e, i, n, -1, r, a); for (var l = 0; l < t.length; l++)if (!Id(t[l])) { var h = t[l].linePoints; if (h) { var u = h[1][0] - h[2][0]; h[2][0] = t[l].x < e ? t[l].x + 3 : t[l].x - 3, h[1][1] = h[2][1] = t[l].y, h[1][0] = h[2][0] + u } } } function Id(t) { return "center" === t.position } function Td(t, e, i) { var n, r = {}, a = "toggleSelected" === t; return i.eachComponent("legend", function (i) { a && null != n ? i[n ? "select" : "unSelect"](e.name) : "allSelect" === t || "inverseSelect" === t ? i[t]() : (i[t](e.name), n = i.isSelected(e.name)); var o = i.getData(); f(o, function (t) { var e = t.get("name"); if ("\n" !== e && "" !== e) { var n = i.isSelected(e); r[e] = r.hasOwnProperty(e) ? r[e] && n : n } }) }), "allSelect" === t || "inverseSelect" === t ? { selected: r } : { name: e.name, selected: r } } function Cd(t, e) { var i = iy(e.get("padding")), n = e.getItemStyle(["color", "opacity"]); n.fill = e.get("backgroundColor"); var t = new _m({ shape: { x: t.x - i[3], y: t.y - i[0], width: t.width + i[1] + i[3], height: t.height + i[0] + i[2], r: e.get("borderRadius") }, style: n, silent: !0, z2: -1 }); return t } function Ad(t, e, i, n, r, a) { var o; return "line" !== e && e.indexOf("empty") < 0 ? (o = i.getItemStyle(), t.style.stroke = n, a || (o.stroke = r)) : o = i.getItemStyle(["borderWidth", "borderColor"]), t.setStyle(o) } function Dd(t, e) { e.dispatchAction({ type: "legendToggleSelect", name: t }) } function kd(t, e, i, n) { var r = i.getZr().storage.getDisplayList()[0]; r && r.useHoverLayer || i.dispatchAction({ type: "highlight", seriesName: t, name: e, excludeSeriesId: n }) } function Pd(t, e, i, n) { var r = i.getZr().storage.getDisplayList()[0]; r && r.useHoverLayer || i.dispatchAction({ type: "downplay", seriesName: t, name: e, excludeSeriesId: n }) } function Ld(t, e, i) { var n = t.getOrient(), r = [1, 1]; r[n.index] = 0, Ro(e, i, { type: "box", ignoreSize: r }) } function Od(t, e, i, n, r) { var a = t.axis; if (!a.scale.isBlank() && a.containData(e)) { if (!t.involveSeries) return void i.showPointer(t, e); var s = Ed(e, t), l = s.payloadBatch, h = s.snapToValue; l[0] && null == r.seriesIndex && o(r, l[0]), !n && t.snap && a.containData(h) && null != h && (e = h), i.showPointer(t, e, l, r), i.showTooltip(t, s, h) } } function Ed(t, e) { var i = e.axis, n = i.dim, r = t, a = [], o = Number.MAX_VALUE, s = -1; return pS(e.seriesModels, function (e) { var l, h, u = e.getData().mapDimension(n, !0); if (e.getAxisTooltipData) { var c = e.getAxisTooltipData(u, t, i); h = c.dataIndices, l = c.nestestValue } else { if (h = e.getData().indicesOfNearest(u[0], t, "category" === i.type ? .5 : null), !h.length) return; l = e.getData().get(u[0], h[0]) } if (null != l && isFinite(l)) { var d = t - l, f = Math.abs(d); o >= f && ((o > f || d >= 0 && 0 > s) && (o = f, s = d, r = l, a.length = 0), pS(h, function (t) { a.push({ seriesIndex: e.seriesIndex, dataIndexInside: t, dataIndex: e.getData().getRawIndex(t) }) })) } }), { payloadBatch: a, snapToValue: r } } function zd(t, e, i, n) { t[e.key] = { value: i, payloadBatch: n } } function Bd(t, e, i, n) { var r = i.payloadBatch, a = e.axis, o = a.model, s = e.axisPointerModel; if (e.triggerTooltip && r.length) { var l = e.coordSys.model, h = Uc(l), u = t.map[h]; u || (u = t.map[h] = { coordSysId: l.id, coordSysIndex: l.componentIndex, coordSysType: l.type, coordSysMainType: l.mainType, dataByAxis: [] }, t.list.push(u)), u.dataByAxis.push({ axisDim: a.dim, axisIndex: o.componentIndex, axisType: o.type, axisId: o.id, value: n, valueLabelOpt: { precision: s.get("label.precision"), formatter: s.get("label.formatter") }, seriesDataIndices: r.slice() }) } } function Rd(t, e, i) { var n = i.axesInfo = []; pS(e, function (e, i) { var r = e.axisPointerModel.option, a = t[i]; a ? (!e.useHandle && (r.status = "show"), r.value = a.value, r.seriesDataIndices = (a.payloadBatch || []).slice()) : !e.useHandle && (r.status = "hide"), "show" === r.status && n.push({ axisDim: e.axis.dim, axisIndex: e.axis.model.componentIndex, value: r.value }) }) } function Nd(t, e, i, n) { if (Gd(e) || !t.list.length) return void n({ type: "hideTip" }); var r = ((t.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; n({ type: "showTip", escapeConnect: !0, x: e[0], y: e[1], tooltipOption: i.tooltipOption, position: i.position, dataIndexInside: r.dataIndexInside, dataIndex: r.dataIndex, seriesIndex: r.seriesIndex, dataByCoordSys: t.list }) } function Fd(t, e, i) { var n = i.getZr(), r = "axisPointerLastHighlights", a = vS(n)[r] || {}, o = vS(n)[r] = {}; pS(t, function (t) { var e = t.axisPointerModel.option; "show" === e.status && pS(e.seriesDataIndices, function (t) { var e = t.seriesIndex + " | " + t.dataIndex; o[e] = t }) }); var s = [], l = []; f(a, function (t, e) { !o[e] && l.push(t) }), f(o, function (t, e) { !a[e] && s.push(t) }), l.length && i.dispatchAction({ type: "downplay", escapeConnect: !0, batch: l }), s.length && i.dispatchAction({ type: "highlight", escapeConnect: !0, batch: s }) } function Vd(t, e) { for (var i = 0; i < (t || []).length; i++) { var n = t[i]; if (e.axis.dim === n.axisDim && e.axis.model.componentIndex === n.axisIndex) return n } } function Hd(t) { var e = t.axis.model, i = {}, n = i.axisDim = t.axis.dim; return i.axisIndex = i[n + "AxisIndex"] = e.componentIndex, i.axisName = i[n + "AxisName"] = e.name, i.axisId = i[n + "AxisId"] = e.id, i } function Gd(t) { return !t || null == t[0] || isNaN(t[0]) || null == t[1] || isNaN(t[1]) } function Wd(t, e, i) { if (!Ef.node) { var n = e.getZr(); yS(n).records || (yS(n).records = {}), Xd(n, e); var r = yS(n).records[t] || (yS(n).records[t] = {}); r.handler = i } } function Xd(t, e) { function i(i, n) { t.on(i, function (i) { var r = qd(e); _S(yS(t).records, function (t) { t && n(t, i, r.dispatchAction) }), Ud(r.pendings, e) }) } yS(t).initialized || (yS(t).initialized = !0, i("click", _(jd, "click")), i("mousemove", _(jd, "mousemove")), i("globalout", Yd)) } function Ud(t, e) { var i, n = t.showTip.length, r = t.hideTip.length; n ? i = t.showTip[n - 1] : r && (i = t.hideTip[r - 1]), i && (i.dispatchAction = null, e.dispatchAction(i)) } function Yd(t, e, i) { t.handler("leave", null, i) } function jd(t, e, i, n) { e.handler(t, i, n) } function qd(t) { var e = { showTip: [], hideTip: [] }, i = function (n) { var r = e[n.type]; r ? r.push(n) : (n.dispatchAction = i, t.dispatchAction(n)) }; return { dispatchAction: i, pendings: e } } function Zd(t, e) { if (!Ef.node) { var i = e.getZr(), n = (yS(i).records || {})[t]; n && (yS(i).records[t] = null) } } function Kd() { } function $d(t, e, i, n) { Qd(wS(i).lastProp, n) || (wS(i).lastProp = n, e ? Va(i, n, t) : (i.stopAnimation(), i.attr(n))) } function Qd(t, e) { if (S(t) && S(e)) { var i = !0; return f(e, function (e, n) { i = i && Qd(t[n], e) }), !!i } return t === e } function Jd(t, e) { t[e.get("label.show") ? "show" : "hide"]() } function tf(t) { return { position: t.position.slice(), rotation: t.rotation || 0 } } function ef(t, e, i) { var n = e.get("z"), r = e.get("zlevel"); t && t.traverse(function (t) { "group" !== t.type && (null != n && (t.z = n), null != r && (t.zlevel = r), t.silent = i) }) } function nf(t) { var e, i = t.get("type"), n = t.getModel(i + "Style"); return "line" === i ? (e = n.getLineStyle(), e.fill = null) : "shadow" === i && (e = n.getAreaStyle(), e.stroke = null), e } function rf(t, e, i, n, r) { var a = i.get("value"), o = of(a, e.axis, e.ecModel, i.get("seriesDataIndices"), { precision: i.get("label.precision"), formatter: i.get("label.formatter") }), s = i.getModel("label"), l = iy(s.get("padding") || 0), h = s.getFont(), u = Vi(o, h), c = r.position, d = u.width + l[1] + l[3], f = u.height + l[0] + l[2], p = r.align; "right" === p && (c[0] -= d), "center" === p && (c[0] -= d / 2); var g = r.verticalAlign; "bottom" === g && (c[1] -= f), "middle" === g && (c[1] -= f / 2), af(c, d, f, n); var v = s.get("backgroundColor"); v && "auto" !== v || (v = e.get("axisLine.lineStyle.color")), t.label = { shape: { x: 0, y: 0, width: d, height: f, r: s.get("borderRadius") }, position: c.slice(), style: { text: o, textFont: h, textFill: s.getTextColor(), textPosition: "inside", textPadding: l, fill: v, stroke: s.get("borderColor") || "transparent", lineWidth: s.get("borderWidth") || 0, shadowBlur: s.get("shadowBlur"), shadowColor: s.get("shadowColor"), shadowOffsetX: s.get("shadowOffsetX"), shadowOffsetY: s.get("shadowOffsetY") }, z2: 10 } } function af(t, e, i, n) { var r = n.getWidth(), a = n.getHeight(); t[0] = Math.min(t[0] + e, r) - e, t[1] = Math.min(t[1] + i, a) - i, t[0] = Math.max(t[0], 0), t[1] = Math.max(t[1], 0) } function of(t, e, i, n, r) { t = e.scale.parse(t); var a = e.scale.getLabel(t, { precision: r.precision }), o = r.formatter; if (o) { var s = { value: Cu(e, t), axisDimension: e.dim, axisIndex: e.index, seriesData: [] }; f(n, function (t) { var e = i.getSeriesByIndex(t.seriesIndex), n = t.dataIndexInside, r = e && e.getDataParams(n); r && s.seriesData.push(r) }), b(o) ? a = o.replace("{value}", a) : w(o) && (a = o(s)) } return a } function sf(t, e, i) { var n = Ce(); return Le(n, n, i.rotation), Pe(n, n, i.position), Wa([t.dataToCoord(e), (i.labelOffset || 0) + (i.labelDirection || 1) * (i.labelMargin || 0)], n) } function lf(t, e, i, n, r, a) { var o = lb.innerTextLayout(i.rotation, 0, i.labelDirection); i.labelMargin = r.get("label.margin"), rf(e, n, r, a, { position: sf(n.axis, t, i), align: o.textAlign, verticalAlign: o.textVerticalAlign }) } function hf(t, e, i) { return i = i || 0, { x1: t[i], y1: t[1 - i], x2: e[i], y2: e[1 - i] } } function uf(t, e, i) { return i = i || 0, { x: t[i], y: t[1 - i], width: e[i], height: e[1 - i] } } function cf(t, e) { var i = {}; return i[e.dim + "AxisIndex"] = e.index, t.getCartesian(i) } function df(t) { return "x" === t.dim ? 0 : 1 } function ff(t) { var e = "cubic-bezier(0.23, 1, 0.32, 1)", i = "left " + t + "s " + e + ",top " + t + "s " + e; return p(AS, function (t) { return t + "transition:" + i }).join(";") } function pf(t) { var e = [], i = t.get("fontSize"), n = t.getTextColor(); return n && e.push("color:" + n), e.push("font:" + t.getFont()), i && e.push("line-height:" + Math.round(3 * i / 2) + "px"), TS(["decoration", "align"], function (i) { var n = t.get(i); n && e.push("text-" + i + ":" + n) }), e.join(";") } function gf(t) { var e = [], i = t.get("transitionDuration"), n = t.get("backgroundColor"), r = t.getModel("textStyle"), a = t.get("padding"); return i && e.push(ff(i)), n && (Ef.canvasSupported ? e.push("background-Color:" + n) : (e.push("background-Color:#" + Qe(n)), e.push("filter:alpha(opacity=70)"))), TS(["width", "color", "radius"], function (i) { var n = "border-" + i, r = CS(n), a = t.get(r); null != a && e.push(n + ":" + a + ("color" === i ? "" : "px")) }), e.push(pf(r)), null != a && e.push("padding:" + iy(a).join("px ") + "px"), e.join(";") + ";" } function vf(t, e) { if (Ef.wxa) return null; var i = document.createElement("div"), n = this._zr = e.getZr(); this.el = i, this._x = e.getWidth() / 2, this._y = e.getHeight() / 2, t.appendChild(i), this._container = t, this._show = !1, this._hideTimeout; var r = this; i.onmouseenter = function () { r._enterable && (clearTimeout(r._hideTimeout), r._show = !0), r._inContent = !0 }, i.onmousemove = function (e) { if (e = e || window.event, !r._enterable) { var i = n.handler; ye(t, e, !0), i.dispatch("mousemove", e) } }, i.onmouseleave = function () { r._enterable && r._show && r.hideLater(r._hideDelay), r._inContent = !1 } } function mf(t) { this._zr = t.getZr(), this._show = !1, this._hideTimeout } function yf(t) { for (var e = t.pop(); t.length;) { var i = t.pop(); i && (Ja.isInstance(i) && (i = i.get("tooltip", !0)), "string" == typeof i && (i = { formatter: i }), e = new Ja(i, e, e.ecModel)) } return e } function _f(t, e) { return t.dispatchAction || y(e.dispatchAction, e) } function xf(t, e, i, n, r, a, o) { var s = i.getOuterSize(), l = s.width, h = s.height; return null != a && (t + l + a > n ? t -= l + a : t += a), null != o && (e + h + o > r ? e -= h + o : e += o), [t, e] } function wf(t, e, i, n, r) { var a = i.getOuterSize(), o = a.width, s = a.height; return t = Math.min(t + o, n) - o, e = Math.min(e + s, r) - s, t = Math.max(t, 0), e = Math.max(e, 0), [t, e] } function bf(t, e, i) { var n = i[0], r = i[1], a = 5, o = 0, s = 0, l = e.width, h = e.height; switch (t) { case "inside": o = e.x + l / 2 - n / 2, s = e.y + h / 2 - r / 2; break; case "top": o = e.x + l / 2 - n / 2, s = e.y - r - a; break; case "bottom": o = e.x + l / 2 - n / 2, s = e.y + h + a; break; case "left": o = e.x - n - a, s = e.y + h / 2 - r / 2; break; case "right": o = e.x + l + a, s = e.y + h / 2 - r / 2 }return [o, s] } function Sf(t) { return "center" === t || "middle" === t } function Mf(t) { return ES(t) } function If() { if (!RS && NS) { RS = !0; var t = NS.styleSheets; t.length < 31 ? NS.createStyleSheet().addRule(".zrvml", "behavior:url(#default#VML)") : t[0].addRule(".zrvml", "behavior:url(#default#VML)") } } function Tf(t) { return parseInt(t, 10) } function Cf(t, e) { If(), this.root = t, this.storage = e; var i = document.createElement("div"), n = document.createElement("div"); i.style.cssText = "display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;", n.style.cssText = "position:absolute;left:0;top:0;", t.appendChild(i), this._vmlRoot = n, this._vmlViewport = i, this.resize(); var r = e.delFromStorage, a = e.addToStorage; e.delFromStorage = function (t) { r.call(e, t), t && t.onRemove && t.onRemove(n) }, e.addToStorage = function (t) { t.onAdd && t.onAdd(n), a.call(e, t) }, this._firstPaint = !0 } function Af(t) { return function () { Hp('In IE8.0 VML mode painter not support method "' + t + '"') } } var Df; "undefined" != typeof window ? Df = window.__DEV__ : "undefined" != typeof global && (Df = global.__DEV__), "undefined" == typeof Df && (Df = !0); var kf = Df, Pf = 2311, Lf = function () { return Pf++ }, Of = {}; Of = "object" == typeof wx && "function" == typeof wx.getSystemInfoSync ? { browser: {}, os: {}, node: !1, wxa: !0, canvasSupported: !0, svgSupported: !1, touchEventsSupported: !0, domSupported: !1 } : "undefined" == typeof document && "undefined" != typeof self ? { browser: {}, os: {}, node: !1, worker: !0, canvasSupported: !0, domSupported: !1 } : "undefined" == typeof navigator ? { browser: {}, os: {}, node: !0, worker: !1, canvasSupported: !0, svgSupported: !0, domSupported: !1 } : e(navigator.userAgent); var Ef = Of, zf = { "[object Function]": 1, "[object RegExp]": 1, "[object Date]": 1, "[object Error]": 1, "[object CanvasGradient]": 1, "[object CanvasPattern]": 1, "[object Image]": 1, "[object Canvas]": 1 }, Bf = { "[object Int8Array]": 1, "[object Uint8Array]": 1, "[object Uint8ClampedArray]": 1, "[object Int16Array]": 1, "[object Uint16Array]": 1, "[object Int32Array]": 1, "[object Uint32Array]": 1, "[object Float32Array]": 1, "[object Float64Array]": 1 }, Rf = Object.prototype.toString, Nf = Array.prototype, Ff = Nf.forEach, Vf = Nf.filter, Hf = Nf.slice, Gf = Nf.map, Wf = Nf.reduce, Xf = {}, Uf = function () { return Xf.createCanvas() }; Xf.createCanvas = function () { return document.createElement("canvas") }; var Yf, jf = "__ec_primitive__"; R.prototype = { constructor: R, get: function (t) { return this.data.hasOwnProperty(t) ? this.data[t] : null }, set: function (t, e) { return this.data[t] = e }, each: function (t, e) { void 0 !== e && (t = y(t, e)); for (var i in this.data) this.data.hasOwnProperty(i) && t(this.data[i], i) }, removeKey: function (t) { delete this.data[t] } }; var qf = (Object.freeze || Object)({ $override: i, clone: n, merge: r, mergeAll: a, extend: o, defaults: s, createCanvas: Uf, getContext: l, indexOf: h, inherits: u, mixin: c, isArrayLike: d, each: f, map: p, reduce: g, filter: v, find: m, bind: y, curry: _, isArray: x, isFunction: w, isString: b, isObject: S, isBuiltInObject: M, isTypedArray: I, isDom: T, eqNaN: C, retrieve: A, retrieve2: D, retrieve3: k, slice: P, normalizeCssArray: L, assert: O, trim: E, setAsPrimitive: z, isPrimitive: B, createHashMap: N, concatArray: F, noop: V }), Zf = "undefined" == typeof Float32Array ? Array : Float32Array, Kf = q, $f = Z, Qf = ee, Jf = ie, tp = (Object.freeze || Object)({ create: H, copy: G, clone: W, set: X, add: U, scaleAndAdd: Y, sub: j, len: q, length: Kf, lenSquare: Z, lengthSquare: $f, mul: K, div: $, dot: Q, scale: J, normalize: te, distance: ee, dist: Qf, distanceSquare: ie, distSquare: Jf, negate: ne, lerp: re, applyTransform: ae, min: oe, max: se }); le.prototype = { constructor: le, _dragStart: function (t) { var e = t.target; e && e.draggable && (this._draggingTarget = e, e.dragging = !0, this._x = t.offsetX, this._y = t.offsetY, this.dispatchToElement(he(e, t), "dragstart", t.event)) }, _drag: function (t) { var e = this._draggingTarget; if (e) { var i = t.offsetX, n = t.offsetY, r = i - this._x, a = n - this._y; this._x = i, this._y = n, e.drift(r, a, t), this.dispatchToElement(he(e, t), "drag", t.event); var o = this.findHover(i, n, e).target, s = this._dropTarget; this._dropTarget = o, e !== o && (s && o !== s && this.dispatchToElement(he(s, t), "dragleave", t.event), o && o !== s && this.dispatchToElement(he(o, t), "dragenter", t.event)) } }, _dragEnd: function (t) { var e = this._draggingTarget; e && (e.dragging = !1), this.dispatchToElement(he(e, t), "dragend", t.event), this._dropTarget && this.dispatchToElement(he(this._dropTarget, t), "drop", t.event), this._draggingTarget = null, this._dropTarget = null } }; var ep = Array.prototype.slice, ip = function (t) { this._$handlers = {}, this._$eventProcessor = t }; ip.prototype = { constructor: ip, one: function (t, e, i, n) { return ce(this, t, e, i, n, !0) }, on: function (t, e, i, n) { return ce(this, t, e, i, n, !1) }, isSilent: function (t) { var e = this._$handlers; return !e[t] || !e[t].length }, off: function (t, e) { var i = this._$handlers; if (!t) return this._$handlers = {}, this; if (e) { if (i[t]) { for (var n = [], r = 0, a = i[t].length; a > r; r++)i[t][r].h !== e && n.push(i[t][r]); i[t] = n } i[t] && 0 === i[t].length && delete i[t] } else delete i[t]; return this }, trigger: function (t) { var e = this._$handlers[t], i = this._$eventProcessor; if (e) { var n = arguments, r = n.length; r > 3 && (n = ep.call(n, 1)); for (var a = e.length, o = 0; a > o;) { var s = e[o]; if (i && i.filter && null != s.query && !i.filter(t, s.query)) o++; else { switch (r) { case 1: s.h.call(s.ctx); break; case 2: s.h.call(s.ctx, n[1]); break; case 3: s.h.call(s.ctx, n[1], n[2]); break; default: s.h.apply(s.ctx, n) }s.one ? (e.splice(o, 1), a--) : o++ } } } return i && i.afterTrigger && i.afterTrigger(t), this }, triggerWithContext: function (t) { var e = this._$handlers[t], i = this._$eventProcessor; if (e) { var n = arguments, r = n.length; r > 4 && (n = ep.call(n, 1, n.length - 1)); for (var a = n[n.length - 1], o = e.length, s = 0; o > s;) { var l = e[s]; if (i && i.filter && null != l.query && !i.filter(t, l.query)) s++; else { switch (r) { case 1: l.h.call(a); break; case 2: l.h.call(a, n[1]); break; case 3: l.h.call(a, n[1], n[2]); break; default: l.h.apply(a, n) }l.one ? (e.splice(s, 1), o--) : s++ } } } return i && i.afterTrigger && i.afterTrigger(t), this } }; var np = Math.log(2), rp = "undefined" != typeof window && !!window.addEventListener, ap = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, op = "___zrEVENTSAVED", sp = [], lp = rp ? function (t) { t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0 } : function (t) { t.returnValue = !1, t.cancelBubble = !0 }, hp = function () { this._track = [] }; hp.prototype = { constructor: hp, recognize: function (t, e, i) { return this._doTrack(t, e, i), this._recognize(t) }, clear: function () { return this._track.length = 0, this }, _doTrack: function (t, e, i) { var n = t.touches; if (n) { for (var r = { points: [], touches: [], target: e, event: t }, a = 0, o = n.length; o > a; a++) { var s = n[a], l = pe(i, s, {}); r.points.push([l.zrX, l.zrY]), r.touches.push(s) } this._track.push(r) } }, _recognize: function (t) { for (var e in up) if (up.hasOwnProperty(e)) { var i = up[e](this._track, t); if (i) return i } } }; var up = { pinch: function (t, e) { var i = t.length; if (i) { var n = (t[i - 1] || {}).points, r = (t[i - 2] || {}).points || n; if (r && r.length > 1 && n && n.length > 1) { var a = we(n) / we(r); !isFinite(a) && (a = 1), e.pinchScale = a; var o = be(n); return e.pinchX = o[0], e.pinchY = o[1], { type: "pinch", target: t[0].target, event: e } } } } }, cp = "silent"; Ie.prototype.dispose = function () { }; var dp = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"], fp = function (t, e, i, n) { ip.call(this), this.storage = t, this.painter = e, this.painterRoot = n, i = i || new Ie, this.proxy = null, this._hovered = {}, this._lastTouchMoment, this._lastX, this._lastY, this._gestureMgr, le.call(this), this.setHandlerProxy(i) }; fp.prototype = { constructor: fp, setHandlerProxy: function (t) { this.proxy && this.proxy.dispose(), t && (f(dp, function (e) { t.on && t.on(e, this[e], this) }, this), t.handler = this), this.proxy = t }, mousemove: function (t) { var e = t.zrX, i = t.zrY, n = this._hovered, r = n.target; r && !r.__zr && (n = this.findHover(n.x, n.y), r = n.target); var a = this._hovered = this.findHover(e, i), o = a.target, s = this.proxy; s.setCursor && s.setCursor(o ? o.cursor : "default"), r && o !== r && this.dispatchToElement(n, "mouseout", t), this.dispatchToElement(a, "mousemove", t), o && o !== r && this.dispatchToElement(a, "mouseover", t) }, mouseout: function (t) { this.dispatchToElement(this._hovered, "mouseout", t); var e, i = t.toElement || t.relatedTarget; do i = i && i.parentNode; while (i && 9 !== i.nodeType && !(e = i === this.painterRoot)); !e && this.trigger("globalout", { event: t }) }, resize: function () { this._hovered = {} }, dispatch: function (t, e) { var i = this[t]; i && i.call(this, e) }, dispose: function () { this.proxy.dispose(), this.storage = this.proxy = this.painter = null }, setCursorStyle: function (t) { var e = this.proxy; e.setCursor && e.setCursor(t) }, dispatchToElement: function (t, e, i) { t = t || {}; var n = t.target; if (!n || !n.silent) { for (var r = "on" + e, a = Se(e, t, i); n && (n[r] && (a.cancelBubble = n[r].call(n, a)), n.trigger(e, a), n = n.parent, !a.cancelBubble);); a.cancelBubble || (this.trigger(e, a), this.painter && this.painter.eachOtherLayer(function (t) { "function" == typeof t[r] && t[r].call(t, a), t.trigger && t.trigger(e, a) })) } }, findHover: function (t, e, i) { for (var n = this.storage.getDisplayList(), r = { x: t, y: e }, a = n.length - 1; a >= 0; a--) { var o; if (n[a] !== i && !n[a].ignore && (o = Te(n[a], t, e)) && (!r.topTarget && (r.topTarget = n[a]), o !== cp)) { r.target = n[a]; break } } return r }, processGesture: function (t, e) { this._gestureMgr || (this._gestureMgr = new hp); var i = this._gestureMgr; "start" === e && i.clear(); var n = i.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this.proxy.dom); if ("end" === e && i.clear(), n) { var r = n.type; t.gestureEvent = r, this.dispatchToElement({ target: n.target }, r, n.event) } } }, f(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function (t) { fp.prototype[t] = function (e) { var i = this.findHover(e.zrX, e.zrY), n = i.target; if ("mousedown" === t) this._downEl = n, this._downPoint = [e.zrX, e.zrY], this._upEl = n; else if ("mouseup" === t) this._upEl = n; else if ("click" === t) { if (this._downEl !== this._upEl || !this._downPoint || Qf(this._downPoint, [e.zrX, e.zrY]) > 4) return; this._downPoint = null } this.dispatchToElement(i, t, e) } }), c(fp, ip), c(fp, le); var pp = "undefined" == typeof Float32Array ? Array : Float32Array, gp = (Object.freeze || Object)({ create: Ce, identity: Ae, copy: De, mul: ke, translate: Pe, rotate: Le, scale: Oe, invert: Ee, clone: ze }), vp = Ae, mp = 5e-5, yp = function (t) { t = t || {}, t.position || (this.position = [0, 0]), null == t.rotation && (this.rotation = 0), t.scale || (this.scale = [1, 1]), this.origin = this.origin || null }, _p = yp.prototype; _p.transform = null, _p.needLocalTransform = function () { return Be(this.rotation) || Be(this.position[0]) || Be(this.position[1]) || Be(this.scale[0] - 1) || Be(this.scale[1] - 1) }; var xp = []; _p.updateTransform = function () { var t = this.parent, e = t && t.transform, i = this.needLocalTransform(), n = this.transform; if (!i && !e) return void (n && vp(n)); n = n || Ce(), i ? this.getLocalTransform(n) : vp(n), e && (i ? ke(n, t.transform, n) : De(n, t.transform)), this.transform = n; var r = this.globalScaleRatio; if (null != r && 1 !== r) { this.getGlobalScale(xp); var a = xp[0] < 0 ? -1 : 1, o = xp[1] < 0 ? -1 : 1, s = ((xp[0] - a) * r + a) / xp[0] || 0, l = ((xp[1] - o) * r + o) / xp[1] || 0; n[0] *= s, n[1] *= s, n[2] *= l, n[3] *= l } this.invTransform = this.invTransform || Ce(), Ee(this.invTransform, n) }, _p.getLocalTransform = function (t) { return yp.getLocalTransform(this, t) }, _p.setTransform = function (t) { var e = this.transform, i = t.dpr || 1; e ? t.setTransform(i * e[0], i * e[1], i * e[2], i * e[3], i * e[4], i * e[5]) : t.setTransform(i, 0, 0, i, 0, 0) }, _p.restoreTransform = function (t) { var e = t.dpr || 1; t.setTransform(e, 0, 0, e, 0, 0) }; var wp = [], bp = Ce(); _p.setLocalTransform = function (t) { if (t) { var e = t[0] * t[0] + t[1] * t[1], i = t[2] * t[2] + t[3] * t[3], n = this.position, r = this.scale; Be(e - 1) && (e = Math.sqrt(e)), Be(i - 1) && (i = Math.sqrt(i)), t[0] < 0 && (e = -e), t[3] < 0 && (i = -i), n[0] = t[4], n[1] = t[5], r[0] = e, r[1] = i, this.rotation = Math.atan2(-t[1] / i, t[0] / e) } }, _p.decomposeTransform = function () { if (this.transform) { var t = this.parent, e = this.transform; t && t.transform && (ke(wp, t.invTransform, e), e = wp); var i = this.origin; i && (i[0] || i[1]) && (bp[4] = i[0], bp[5] = i[1], ke(wp, e, bp), wp[4] -= i[0], wp[5] -= i[1], e = wp), this.setLocalTransform(e) } }, _p.getGlobalScale = function (t) { var e = this.transform; return t = t || [], e ? (t[0] = Math.sqrt(e[0] * e[0] + e[1] * e[1]), t[1] = Math.sqrt(e[2] * e[2] + e[3] * e[3]), e[0] < 0 && (t[0] = -t[0]), e[3] < 0 && (t[1] = -t[1]), t) : (t[0] = 1, t[1] = 1, t) }, _p.transformCoordToLocal = function (t, e) { var i = [t, e], n = this.invTransform; return n && ae(i, i, n), i }, _p.transformCoordToGlobal = function (t, e) { var i = [t, e], n = this.transform; return n && ae(i, i, n), i }, yp.getLocalTransform = function (t, e) { e = e || [], vp(e); var i = t.origin, n = t.scale || [1, 1], r = t.rotation || 0, a = t.position || [0, 0]; return i && (e[4] -= i[0], e[5] -= i[1]), Oe(e, e, n), r && Le(e, e, r), i && (e[4] += i[0], e[5] += i[1]), e[4] += a[0], e[5] += a[1], e }; var Sp = { linear: function (t) { return t }, quadraticIn: function (t) { return t * t }, quadraticOut: function (t) { return t * (2 - t) }, quadraticInOut: function (t) { return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1) }, cubicIn: function (t) { return t * t * t }, cubicOut: function (t) { return --t * t * t + 1 }, cubicInOut: function (t) { return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2) }, quarticIn: function (t) { return t * t * t * t }, quarticOut: function (t) { return 1 - --t * t * t * t }, quarticInOut: function (t) { return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2) }, quinticIn: function (t) { return t * t * t * t * t }, quinticOut: function (t) { return --t * t * t * t * t + 1 }, quinticInOut: function (t) { return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2) }, sinusoidalIn: function (t) { return 1 - Math.cos(t * Math.PI / 2) }, sinusoidalOut: function (t) { return Math.sin(t * Math.PI / 2) }, sinusoidalInOut: function (t) { return .5 * (1 - Math.cos(Math.PI * t)) }, exponentialIn: function (t) { return 0 === t ? 0 : Math.pow(1024, t - 1) }, exponentialOut: function (t) { return 1 === t ? 1 : 1 - Math.pow(2, -10 * t) }, exponentialInOut: function (t) { return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (-Math.pow(2, -10 * (t - 1)) + 2) }, circularIn: function (t) { return 1 - Math.sqrt(1 - t * t) }, circularOut: function (t) { return Math.sqrt(1 - --t * t) }, circularInOut: function (t) { return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1) }, elasticIn: function (t) { var e, i = .1, n = .4; return 0 === t ? 0 : 1 === t ? 1 : (!i || 1 > i ? (i = 1, e = n / 4) : e = n * Math.asin(1 / i) / (2 * Math.PI), -(i * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / n))) }, elasticOut: function (t) { var e, i = .1, n = .4; return 0 === t ? 0 : 1 === t ? 1 : (!i || 1 > i ? (i = 1, e = n / 4) : e = n * Math.asin(1 / i) / (2 * Math.PI), i * Math.pow(2, -10 * t) * Math.sin(2 * (t - e) * Math.PI / n) + 1) }, elasticInOut: function (t) { var e, i = .1, n = .4; return 0 === t ? 0 : 1 === t ? 1 : (!i || 1 > i ? (i = 1, e = n / 4) : e = n * Math.asin(1 / i) / (2 * Math.PI), (t *= 2) < 1 ? -.5 * i * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / n) : i * Math.pow(2, -10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / n) * .5 + 1) }, backIn: function (t) { var e = 1.70158; return t * t * ((e + 1) * t - e) }, backOut: function (t) { var e = 1.70158; return --t * t * ((e + 1) * t + e) + 1 }, backInOut: function (t) { var e = 2.5949095; return (t *= 2) < 1 ? .5 * t * t * ((e + 1) * t - e) : .5 * ((t -= 2) * t * ((e + 1) * t + e) + 2) }, bounceIn: function (t) { return 1 - Sp.bounceOut(1 - t) }, bounceOut: function (t) { return 1 / 2.75 > t ? 7.5625 * t * t : 2 / 2.75 > t ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : 2.5 / 2.75 > t ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375 }, bounceInOut: function (t) { return .5 > t ? .5 * Sp.bounceIn(2 * t) : .5 * Sp.bounceOut(2 * t - 1) + .5 } }; Re.prototype = { constructor: Re, step: function (t, e) { if (this._initialized || (this._startTime = t + this._delay, this._initialized = !0), this._paused) return void (this._pausedTime += e); var i = (t - this._startTime - this._pausedTime) / this._life; if (!(0 > i)) { i = Math.min(i, 1); var n = this.easing, r = "string" == typeof n ? Sp[n] : n, a = "function" == typeof r ? r(i) : i; return this.fire("frame", a), 1 === i ? this.loop ? (this.restart(t), "restart") : (this._needsRemove = !0, "destroy") : null } }, restart: function (t) { var e = (t - this._startTime - this._pausedTime) % this._life; this._startTime = t - e + this.gap, this._pausedTime = 0, this._needsRemove = !1 }, fire: function (t, e) { t = "on" + t, this[t] && this[t](this._target, e) }, pause: function () { this._paused = !0 }, resume: function () { this._paused = !1 } }; var Mp = function () { this.head = null, this.tail = null, this._len = 0 }, Ip = Mp.prototype; Ip.insert = function (t) { var e = new Tp(t); return this.insertEntry(e), e }, Ip.insertEntry = function (t) {
  12. this.head ? (this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t) : this.head = this.tail = t, this._len++
  13. }, Ip.remove = function (t) { var e = t.prev, i = t.next; e ? e.next = i : this.head = i, i ? i.prev = e : this.tail = e, t.next = t.prev = null, this._len-- }, Ip.len = function () { return this._len }, Ip.clear = function () { this.head = this.tail = null, this._len = 0 }; var Tp = function (t) { this.value = t, this.next, this.prev }, Cp = function (t) { this._list = new Mp, this._map = {}, this._maxSize = t || 10, this._lastRemovedEntry = null }, Ap = Cp.prototype; Ap.put = function (t, e) { var i = this._list, n = this._map, r = null; if (null == n[t]) { var a = i.len(), o = this._lastRemovedEntry; if (a >= this._maxSize && a > 0) { var s = i.head; i.remove(s), delete n[s.key], r = s.value, this._lastRemovedEntry = s } o ? o.value = e : o = new Tp(e), o.key = t, i.insertEntry(o), n[t] = o } return r }, Ap.get = function (t) { var e = this._map[t], i = this._list; return null != e ? (e !== i.tail && (i.remove(e), i.insertEntry(e)), e.value) : void 0 }, Ap.clear = function () { this._list.clear(), this._map = {} }; var Dp = { transparent: [0, 0, 0, 0], aliceblue: [240, 248, 255, 1], antiquewhite: [250, 235, 215, 1], aqua: [0, 255, 255, 1], aquamarine: [127, 255, 212, 1], azure: [240, 255, 255, 1], beige: [245, 245, 220, 1], bisque: [255, 228, 196, 1], black: [0, 0, 0, 1], blanchedalmond: [255, 235, 205, 1], blue: [0, 0, 255, 1], blueviolet: [138, 43, 226, 1], brown: [165, 42, 42, 1], burlywood: [222, 184, 135, 1], cadetblue: [95, 158, 160, 1], chartreuse: [127, 255, 0, 1], chocolate: [210, 105, 30, 1], coral: [255, 127, 80, 1], cornflowerblue: [100, 149, 237, 1], cornsilk: [255, 248, 220, 1], crimson: [220, 20, 60, 1], cyan: [0, 255, 255, 1], darkblue: [0, 0, 139, 1], darkcyan: [0, 139, 139, 1], darkgoldenrod: [184, 134, 11, 1], darkgray: [169, 169, 169, 1], darkgreen: [0, 100, 0, 1], darkgrey: [169, 169, 169, 1], darkkhaki: [189, 183, 107, 1], darkmagenta: [139, 0, 139, 1], darkolivegreen: [85, 107, 47, 1], darkorange: [255, 140, 0, 1], darkorchid: [153, 50, 204, 1], darkred: [139, 0, 0, 1], darksalmon: [233, 150, 122, 1], darkseagreen: [143, 188, 143, 1], darkslateblue: [72, 61, 139, 1], darkslategray: [47, 79, 79, 1], darkslategrey: [47, 79, 79, 1], darkturquoise: [0, 206, 209, 1], darkviolet: [148, 0, 211, 1], deeppink: [255, 20, 147, 1], deepskyblue: [0, 191, 255, 1], dimgray: [105, 105, 105, 1], dimgrey: [105, 105, 105, 1], dodgerblue: [30, 144, 255, 1], firebrick: [178, 34, 34, 1], floralwhite: [255, 250, 240, 1], forestgreen: [34, 139, 34, 1], fuchsia: [255, 0, 255, 1], gainsboro: [220, 220, 220, 1], ghostwhite: [248, 248, 255, 1], gold: [255, 215, 0, 1], goldenrod: [218, 165, 32, 1], gray: [128, 128, 128, 1], green: [0, 128, 0, 1], greenyellow: [173, 255, 47, 1], grey: [128, 128, 128, 1], honeydew: [240, 255, 240, 1], hotpink: [255, 105, 180, 1], indianred: [205, 92, 92, 1], indigo: [75, 0, 130, 1], ivory: [255, 255, 240, 1], khaki: [240, 230, 140, 1], lavender: [230, 230, 250, 1], lavenderblush: [255, 240, 245, 1], lawngreen: [124, 252, 0, 1], lemonchiffon: [255, 250, 205, 1], lightblue: [173, 216, 230, 1], lightcoral: [240, 128, 128, 1], lightcyan: [224, 255, 255, 1], lightgoldenrodyellow: [250, 250, 210, 1], lightgray: [211, 211, 211, 1], lightgreen: [144, 238, 144, 1], lightgrey: [211, 211, 211, 1], lightpink: [255, 182, 193, 1], lightsalmon: [255, 160, 122, 1], lightseagreen: [32, 178, 170, 1], lightskyblue: [135, 206, 250, 1], lightslategray: [119, 136, 153, 1], lightslategrey: [119, 136, 153, 1], lightsteelblue: [176, 196, 222, 1], lightyellow: [255, 255, 224, 1], lime: [0, 255, 0, 1], limegreen: [50, 205, 50, 1], linen: [250, 240, 230, 1], magenta: [255, 0, 255, 1], maroon: [128, 0, 0, 1], mediumaquamarine: [102, 205, 170, 1], mediumblue: [0, 0, 205, 1], mediumorchid: [186, 85, 211, 1], mediumpurple: [147, 112, 219, 1], mediumseagreen: [60, 179, 113, 1], mediumslateblue: [123, 104, 238, 1], mediumspringgreen: [0, 250, 154, 1], mediumturquoise: [72, 209, 204, 1], mediumvioletred: [199, 21, 133, 1], midnightblue: [25, 25, 112, 1], mintcream: [245, 255, 250, 1], mistyrose: [255, 228, 225, 1], moccasin: [255, 228, 181, 1], navajowhite: [255, 222, 173, 1], navy: [0, 0, 128, 1], oldlace: [253, 245, 230, 1], olive: [128, 128, 0, 1], olivedrab: [107, 142, 35, 1], orange: [255, 165, 0, 1], orangered: [255, 69, 0, 1], orchid: [218, 112, 214, 1], palegoldenrod: [238, 232, 170, 1], palegreen: [152, 251, 152, 1], paleturquoise: [175, 238, 238, 1], palevioletred: [219, 112, 147, 1], papayawhip: [255, 239, 213, 1], peachpuff: [255, 218, 185, 1], peru: [205, 133, 63, 1], pink: [255, 192, 203, 1], plum: [221, 160, 221, 1], powderblue: [176, 224, 230, 1], purple: [128, 0, 128, 1], red: [255, 0, 0, 1], rosybrown: [188, 143, 143, 1], royalblue: [65, 105, 225, 1], saddlebrown: [139, 69, 19, 1], salmon: [250, 128, 114, 1], sandybrown: [244, 164, 96, 1], seagreen: [46, 139, 87, 1], seashell: [255, 245, 238, 1], sienna: [160, 82, 45, 1], silver: [192, 192, 192, 1], skyblue: [135, 206, 235, 1], slateblue: [106, 90, 205, 1], slategray: [112, 128, 144, 1], slategrey: [112, 128, 144, 1], snow: [255, 250, 250, 1], springgreen: [0, 255, 127, 1], steelblue: [70, 130, 180, 1], tan: [210, 180, 140, 1], teal: [0, 128, 128, 1], thistle: [216, 191, 216, 1], tomato: [255, 99, 71, 1], turquoise: [64, 224, 208, 1], violet: [238, 130, 238, 1], wheat: [245, 222, 179, 1], white: [255, 255, 255, 1], whitesmoke: [245, 245, 245, 1], yellow: [255, 255, 0, 1], yellowgreen: [154, 205, 50, 1] }, kp = new Cp(20), Pp = null, Lp = Je, Op = ti, Ep = (Object.freeze || Object)({ parse: qe, lift: $e, toHex: Qe, fastLerp: Je, fastMapToColor: Lp, lerp: ti, mapToColor: Op, modifyHSL: ei, modifyAlpha: ii, stringify: ni }), zp = Array.prototype.slice, Bp = function (t, e, i, n) { this._tracks = {}, this._target = t, this._loop = e || !1, this._getter = i || ri, this._setter = n || ai, this._clipCount = 0, this._delay = 0, this._doneList = [], this._onframeList = [], this._clipList = [] }; Bp.prototype = { when: function (t, e) { var i = this._tracks; for (var n in e) if (e.hasOwnProperty(n)) { if (!i[n]) { i[n] = []; var r = this._getter(this._target, n); if (null == r) continue; 0 !== t && i[n].push({ time: 0, value: fi(r) }) } i[n].push({ time: t, value: e[n] }) } return this }, during: function (t) { return this._onframeList.push(t), this }, pause: function () { for (var t = 0; t < this._clipList.length; t++)this._clipList[t].pause(); this._paused = !0 }, resume: function () { for (var t = 0; t < this._clipList.length; t++)this._clipList[t].resume(); this._paused = !1 }, isPaused: function () { return !!this._paused }, _doneCallback: function () { this._tracks = {}, this._clipList.length = 0; for (var t = this._doneList, e = t.length, i = 0; e > i; i++)t[i].call(this) }, start: function (t, e) { var i, n = this, r = 0, a = function () { r--, r || n._doneCallback() }; for (var o in this._tracks) if (this._tracks.hasOwnProperty(o)) { var s = vi(this, t, a, this._tracks[o], o, e); s && (this._clipList.push(s), r++, this.animation && this.animation.addClip(s), i = s) } if (i) { var l = i.onframe; i.onframe = function (t, e) { l(t, e); for (var i = 0; i < n._onframeList.length; i++)n._onframeList[i](t, e) } } return r || this._doneCallback(), this }, stop: function (t) { for (var e = this._clipList, i = this.animation, n = 0; n < e.length; n++) { var r = e[n]; t && r.onframe(this._target, 1), i && i.removeClip(r) } e.length = 0 }, delay: function (t) { return this._delay = t, this }, done: function (t) { return t && this._doneList.push(t), this }, getClips: function () { return this._clipList } }; var Rp = 1; "undefined" != typeof window && (Rp = Math.max(window.devicePixelRatio || 1, 1)); var Np = 0, Fp = Rp, Vp = function () { }; 1 === Np && (Vp = console.error); var Hp = Vp, Gp = function () { this.animators = [] }; Gp.prototype = { constructor: Gp, animate: function (t, e) { var i, n = !1, r = this, a = this.__zr; if (t) { var o = t.split("."), s = r; n = "shape" === o[0]; for (var l = 0, u = o.length; u > l; l++)s && (s = s[o[l]]); s && (i = s) } else i = r; if (!i) return void Hp('Property "' + t + '" is not existed in element ' + r.id); var c = r.animators, d = new Bp(i, e); return d.during(function () { r.dirty(n) }).done(function () { c.splice(h(c, d), 1) }), c.push(d), a && a.animation.addAnimator(d), d }, stopAnimation: function (t) { for (var e = this.animators, i = e.length, n = 0; i > n; n++)e[n].stop(t); return e.length = 0, this }, animateTo: function (t, e, i, n, r, a) { mi(this, t, e, i, n, r, a) }, animateFrom: function (t, e, i, n, r, a) { mi(this, t, e, i, n, r, a, !0) } }; var Wp = function (t) { yp.call(this, t), ip.call(this, t), Gp.call(this, t), this.id = t.id || Lf() }; Wp.prototype = { type: "element", name: "", __zr: null, ignore: !1, clipPath: null, isGroup: !1, drift: function (t, e) { switch (this.draggable) { case "horizontal": e = 0; break; case "vertical": t = 0 }var i = this.transform; i || (i = this.transform = [1, 0, 0, 1, 0, 0]), i[4] += t, i[5] += e, this.decomposeTransform(), this.dirty(!1) }, beforeUpdate: function () { }, afterUpdate: function () { }, update: function () { this.updateTransform() }, traverse: function () { }, attrKV: function (t, e) { if ("position" === t || "scale" === t || "origin" === t) { if (e) { var i = this[t]; i || (i = this[t] = []), i[0] = e[0], i[1] = e[1] } } else this[t] = e }, hide: function () { this.ignore = !0, this.__zr && this.__zr.refresh() }, show: function () { this.ignore = !1, this.__zr && this.__zr.refresh() }, attr: function (t, e) { if ("string" == typeof t) this.attrKV(t, e); else if (S(t)) for (var i in t) t.hasOwnProperty(i) && this.attrKV(i, t[i]); return this.dirty(!1), this }, setClipPath: function (t) { var e = this.__zr; e && t.addSelfToZr(e), this.clipPath && this.clipPath !== t && this.removeClipPath(), this.clipPath = t, t.__zr = e, t.__clipTarget = this, this.dirty(!1) }, removeClipPath: function () { var t = this.clipPath; t && (t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__clipTarget = null, this.clipPath = null, this.dirty(!1)) }, addSelfToZr: function (t) { this.__zr = t; var e = this.animators; if (e) for (var i = 0; i < e.length; i++)t.animation.addAnimator(e[i]); this.clipPath && this.clipPath.addSelfToZr(t) }, removeSelfFromZr: function (t) { this.__zr = null; var e = this.animators; if (e) for (var i = 0; i < e.length; i++)t.animation.removeAnimator(e[i]); this.clipPath && this.clipPath.removeSelfFromZr(t) } }, c(Wp, Gp), c(Wp, yp), c(Wp, ip); var Xp = ae, Up = Math.min, Yp = Math.max; xi.prototype = { constructor: xi, union: function (t) { var e = Up(t.x, this.x), i = Up(t.y, this.y); this.width = Yp(t.x + t.width, this.x + this.width) - e, this.height = Yp(t.y + t.height, this.y + this.height) - i, this.x = e, this.y = i }, applyTransform: function () { var t = [], e = [], i = [], n = []; return function (r) { if (r) { t[0] = i[0] = this.x, t[1] = n[1] = this.y, e[0] = n[0] = this.x + this.width, e[1] = i[1] = this.y + this.height, Xp(t, t, r), Xp(e, e, r), Xp(i, i, r), Xp(n, n, r), this.x = Up(t[0], e[0], i[0], n[0]), this.y = Up(t[1], e[1], i[1], n[1]); var a = Yp(t[0], e[0], i[0], n[0]), o = Yp(t[1], e[1], i[1], n[1]); this.width = a - this.x, this.height = o - this.y } } }(), calculateTransform: function (t) { var e = this, i = t.width / e.width, n = t.height / e.height, r = Ce(); return Pe(r, r, [-e.x, -e.y]), Oe(r, r, [i, n]), Pe(r, r, [t.x, t.y]), r }, intersect: function (t) { if (!t) return !1; t instanceof xi || (t = xi.create(t)); var e = this, i = e.x, n = e.x + e.width, r = e.y, a = e.y + e.height, o = t.x, s = t.x + t.width, l = t.y, h = t.y + t.height; return !(o > n || i > s || l > a || r > h) }, contain: function (t, e) { var i = this; return t >= i.x && t <= i.x + i.width && e >= i.y && e <= i.y + i.height }, clone: function () { return new xi(this.x, this.y, this.width, this.height) }, copy: function (t) { this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height }, plain: function () { return { x: this.x, y: this.y, width: this.width, height: this.height } } }, xi.create = function (t) { return new xi(t.x, t.y, t.width, t.height) }; var jp = function (t) { t = t || {}, Wp.call(this, t); for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); this._children = [], this.__storage = null, this.__dirty = !0 }; jp.prototype = { constructor: jp, isGroup: !0, type: "group", silent: !1, children: function () { return this._children.slice() }, childAt: function (t) { return this._children[t] }, childOfName: function (t) { for (var e = this._children, i = 0; i < e.length; i++)if (e[i].name === t) return e[i] }, childCount: function () { return this._children.length }, add: function (t) { return t && t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), this }, addBefore: function (t, e) { if (t && t !== this && t.parent !== this && e && e.parent === this) { var i = this._children, n = i.indexOf(e); n >= 0 && (i.splice(n, 0, t), this._doAdd(t)) } return this }, _doAdd: function (t) { t.parent && t.parent.remove(t), t.parent = this; var e = this.__storage, i = this.__zr; e && e !== t.__storage && (e.addToStorage(t), t instanceof jp && t.addChildrenToStorage(e)), i && i.refresh() }, remove: function (t) { var e = this.__zr, i = this.__storage, n = this._children, r = h(n, t); return 0 > r ? this : (n.splice(r, 1), t.parent = null, i && (i.delFromStorage(t), t instanceof jp && t.delChildrenFromStorage(i)), e && e.refresh(), this) }, removeAll: function () { var t, e, i = this._children, n = this.__storage; for (e = 0; e < i.length; e++)t = i[e], n && (n.delFromStorage(t), t instanceof jp && t.delChildrenFromStorage(n)), t.parent = null; return i.length = 0, this }, eachChild: function (t, e) { for (var i = this._children, n = 0; n < i.length; n++) { var r = i[n]; t.call(e, r, n) } return this }, traverse: function (t, e) { for (var i = 0; i < this._children.length; i++) { var n = this._children[i]; t.call(e, n), "group" === n.type && n.traverse(t, e) } return this }, addChildrenToStorage: function (t) { for (var e = 0; e < this._children.length; e++) { var i = this._children[e]; t.addToStorage(i), i instanceof jp && i.addChildrenToStorage(t) } }, delChildrenFromStorage: function (t) { for (var e = 0; e < this._children.length; e++) { var i = this._children[e]; t.delFromStorage(i), i instanceof jp && i.delChildrenFromStorage(t) } }, dirty: function () { return this.__dirty = !0, this.__zr && this.__zr.refresh(), this }, getBoundingRect: function (t) { for (var e = null, i = new xi(0, 0, 0, 0), n = t || this._children, r = [], a = 0; a < n.length; a++) { var o = n[a]; if (!o.ignore && !o.invisible) { var s = o.getBoundingRect(), l = o.getLocalTransform(r); l ? (i.copy(s), i.applyTransform(l), e = e || i.clone(), e.union(i)) : (e = e || s.clone(), e.union(s)) } } return e || i } }, u(jp, Wp); var qp = 32, Zp = 7, Kp = function () { this._roots = [], this._displayList = [], this._displayListLen = 0 }; Kp.prototype = { constructor: Kp, traverse: function (t, e) { for (var i = 0; i < this._roots.length; i++)this._roots[i].traverse(t, e) }, getDisplayList: function (t, e) { return e = e || !1, t && this.updateDisplayList(e), this._displayList }, updateDisplayList: function (t) { this._displayListLen = 0; for (var e = this._roots, i = this._displayList, n = 0, r = e.length; r > n; n++)this._updateAndAddDisplayable(e[n], null, t); i.length = this._displayListLen, Ef.canvasSupported && Ai(i, Di) }, _updateAndAddDisplayable: function (t, e, i) { if (!t.ignore || i) { t.beforeUpdate(), t.__dirty && t.update(), t.afterUpdate(); var n = t.clipPath; if (n) { e = e ? e.slice() : []; for (var r = n, a = t; r;)r.parent = a, r.updateTransform(), e.push(r), a = r, r = r.clipPath } if (t.isGroup) { for (var o = t._children, s = 0; s < o.length; s++) { var l = o[s]; t.__dirty && (l.__dirty = !0), this._updateAndAddDisplayable(l, e, i) } t.__dirty = !1 } else t.__clipPaths = e, this._displayList[this._displayListLen++] = t } }, addRoot: function (t) { t.__storage !== this && (t instanceof jp && t.addChildrenToStorage(this), this.addToStorage(t), this._roots.push(t)) }, delRoot: function (t) { if (null == t) { for (var e = 0; e < this._roots.length; e++) { var i = this._roots[e]; i instanceof jp && i.delChildrenFromStorage(this) } return this._roots = [], this._displayList = [], void (this._displayListLen = 0) } if (t instanceof Array) for (var e = 0, n = t.length; n > e; e++)this.delRoot(t[e]); else { var r = h(this._roots, t); r >= 0 && (this.delFromStorage(t), this._roots.splice(r, 1), t instanceof jp && t.delChildrenFromStorage(this)) } }, addToStorage: function (t) { return t && (t.__storage = this, t.dirty(!1)), this }, delFromStorage: function (t) { return t && (t.__storage = null), this }, dispose: function () { this._renderList = this._roots = null }, displayableSortFunc: Di }; var $p = { shadowBlur: 1, shadowOffsetX: 1, shadowOffsetY: 1, textShadowBlur: 1, textShadowOffsetX: 1, textShadowOffsetY: 1, textBoxShadowBlur: 1, textBoxShadowOffsetX: 1, textBoxShadowOffsetY: 1 }, Qp = function (t, e, i) { return $p.hasOwnProperty(e) ? i *= t.dpr : i }, Jp = { NONE: 0, STYLE_BIND: 1, PLAIN_TEXT: 2 }, tg = 9, eg = [["shadowBlur", 0], ["shadowOffsetX", 0], ["shadowOffsetY", 0], ["shadowColor", "#000"], ["lineCap", "butt"], ["lineJoin", "miter"], ["miterLimit", 10]], ig = function (t) { this.extendFrom(t, !1) }; ig.prototype = { constructor: ig, fill: "#000", stroke: null, opacity: 1, fillOpacity: null, strokeOpacity: null, lineDash: null, lineDashOffset: 0, shadowBlur: 0, shadowOffsetX: 0, shadowOffsetY: 0, lineWidth: 1, strokeNoScale: !1, text: null, font: null, textFont: null, fontStyle: null, fontWeight: null, fontSize: null, fontFamily: null, textTag: null, textFill: "#000", textStroke: null, textWidth: null, textHeight: null, textStrokeWidth: 0, textLineHeight: null, textPosition: "inside", textRect: null, textOffset: null, textAlign: null, textVerticalAlign: null, textDistance: 5, textShadowColor: "transparent", textShadowBlur: 0, textShadowOffsetX: 0, textShadowOffsetY: 0, textBoxShadowColor: "transparent", textBoxShadowBlur: 0, textBoxShadowOffsetX: 0, textBoxShadowOffsetY: 0, transformText: !1, textRotation: 0, textOrigin: null, textBackgroundColor: null, textBorderColor: null, textBorderWidth: 0, textBorderRadius: 0, textPadding: null, rich: null, truncate: null, blend: null, bind: function (t, e, i) { var n = this, r = i && i.style, a = !r || t.__attrCachedBy !== Jp.STYLE_BIND; t.__attrCachedBy = Jp.STYLE_BIND; for (var o = 0; o < eg.length; o++) { var s = eg[o], l = s[0]; (a || n[l] !== r[l]) && (t[l] = Qp(t, l, n[l] || s[1])) } if ((a || n.fill !== r.fill) && (t.fillStyle = n.fill), (a || n.stroke !== r.stroke) && (t.strokeStyle = n.stroke), (a || n.opacity !== r.opacity) && (t.globalAlpha = null == n.opacity ? 1 : n.opacity), (a || n.blend !== r.blend) && (t.globalCompositeOperation = n.blend || "source-over"), this.hasStroke()) { var h = n.lineWidth; t.lineWidth = h / (this.strokeNoScale && e && e.getLineScale ? e.getLineScale() : 1) } }, hasFill: function () { var t = this.fill; return null != t && "none" !== t }, hasStroke: function () { var t = this.stroke; return null != t && "none" !== t && this.lineWidth > 0 }, extendFrom: function (t, e) { if (t) for (var i in t) !t.hasOwnProperty(i) || e !== !0 && (e === !1 ? this.hasOwnProperty(i) : null == t[i]) || (this[i] = t[i]) }, set: function (t, e) { "string" == typeof t ? this[t] = e : this.extendFrom(t, !0) }, clone: function () { var t = new this.constructor; return t.extendFrom(this, !0), t }, getGradient: function (t, e, i) { for (var n = "radial" === e.type ? Pi : ki, r = n(t, e, i), a = e.colorStops, o = 0; o < a.length; o++)r.addColorStop(a[o].offset, a[o].color); return r } }; for (var ng = ig.prototype, rg = 0; rg < eg.length; rg++) { var ag = eg[rg]; ag[0] in ng || (ng[ag[0]] = ag[1]) } ig.getGradient = ng.getGradient; var og = function (t, e) { this.image = t, this.repeat = e, this.type = "pattern" }; og.prototype.getCanvasPattern = function (t) { return t.createPattern(this.image, this.repeat || "repeat") }; var sg = function (t, e, i) { var n; i = i || Fp, "string" == typeof t ? n = Oi(t, e, i) : S(t) && (n = t, t = n.id), this.id = t, this.dom = n; var r = n.style; r && (n.onselectstart = Li, r["-webkit-user-select"] = "none", r["user-select"] = "none", r["-webkit-touch-callout"] = "none", r["-webkit-tap-highlight-color"] = "rgba(0,0,0,0)", r.padding = 0, r.margin = 0, r["border-width"] = 0), this.domBack = null, this.ctxBack = null, this.painter = e, this.config = null, this.clearColor = 0, this.motionBlur = !1, this.lastFrameAlpha = .7, this.dpr = i }; sg.prototype = { constructor: sg, __dirty: !0, __used: !1, __drawIndex: 0, __startIndex: 0, __endIndex: 0, incremental: !1, getElementCount: function () { return this.__endIndex - this.__startIndex }, initContext: function () { this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr }, createBackBuffer: function () { var t = this.dpr; this.domBack = Oi("back-" + this.id, this.painter, t), this.ctxBack = this.domBack.getContext("2d"), 1 !== t && this.ctxBack.scale(t, t) }, resize: function (t, e) { var i = this.dpr, n = this.dom, r = n.style, a = this.domBack; r && (r.width = t + "px", r.height = e + "px"), n.width = t * i, n.height = e * i, a && (a.width = t * i, a.height = e * i, 1 !== i && this.ctxBack.scale(i, i)) }, clear: function (t, e) { var i = this.dom, n = this.ctx, r = i.width, a = i.height, e = e || this.clearColor, o = this.motionBlur && !t, s = this.lastFrameAlpha, l = this.dpr; if (o && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", this.ctxBack.drawImage(i, 0, 0, r / l, a / l)), n.clearRect(0, 0, r, a), e && "transparent" !== e) { var h; e.colorStops ? (h = e.__canvasGradient || ig.getGradient(n, e, { x: 0, y: 0, width: r, height: a }), e.__canvasGradient = h) : e.image && (h = og.prototype.getCanvasPattern.call(e, n)), n.save(), n.fillStyle = h || e, n.fillRect(0, 0, r, a), n.restore() } if (o) { var u = this.domBack; n.save(), n.globalAlpha = s, n.drawImage(u, 0, 0, r, a), n.restore() } } }; var lg = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (t) { setTimeout(t, 16) }, hg = new Cp(50), ug = {}, cg = 0, dg = 5e3, fg = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g, pg = "12px sans-serif", gg = {}; gg.measureText = function (t, e) { var i = l(); return i.font = e || pg, i.measureText(t) }; var vg = pg, mg = { left: 1, right: 1, center: 1 }, yg = { top: 1, bottom: 1, middle: 1 }, _g = [["textShadowBlur", "shadowBlur", 0], ["textShadowOffsetX", "shadowOffsetX", 0], ["textShadowOffsetY", "shadowOffsetY", 0], ["textShadowColor", "shadowColor", "transparent"]], xg = {}, wg = {}, bg = new xi, Sg = function () { }; Sg.prototype = { constructor: Sg, drawRectText: function (t, e) { var i = this.style; e = i.textRect || e, this.__dirty && rn(i, !0); var n = i.text; if (null != n && (n += ""), wn(n, i)) { t.save(); var r = this.transform; i.transformText ? this.setTransform(t) : r && (bg.copy(e), bg.applyTransform(r), e = bg), on(this, t, n, i, e, tg), t.restore() } } }, bn.prototype = { constructor: bn, type: "displayable", __dirty: !0, invisible: !1, z: 0, z2: 0, zlevel: 0, draggable: !1, dragging: !1, silent: !1, culling: !1, cursor: "pointer", rectHover: !1, progressive: !1, incremental: !1, globalScaleRatio: 1, beforeBrush: function () { }, afterBrush: function () { }, brush: function () { }, getBoundingRect: function () { }, contain: function (t, e) { return this.rectContain(t, e) }, traverse: function (t, e) { t.call(e, this) }, rectContain: function (t, e) { var i = this.transformCoordToLocal(t, e), n = this.getBoundingRect(); return n.contain(i[0], i[1]) }, dirty: function () { this.__dirty = this.__dirtyText = !0, this._rect = null, this.__zr && this.__zr.refresh() }, animateStyle: function (t) { return this.animate("style", t) }, attrKV: function (t, e) { "style" !== t ? Wp.prototype.attrKV.call(this, t, e) : this.style.set(e) }, setStyle: function (t, e) { return this.style.set(t, e), this.dirty(!1), this }, useStyle: function (t) { return this.style = new ig(t, this), this.dirty(!1), this }, calculateTextPosition: null }, u(bn, Wp), c(bn, Sg), Sn.prototype = { constructor: Sn, type: "image", brush: function (t, e) { var i = this.style, n = i.image; i.bind(t, this, e); var r = this._image = zi(n, this._image, this, this.onload); if (r && Ri(r)) { var a = i.x || 0, o = i.y || 0, s = i.width, l = i.height, h = r.width / r.height; if (null == s && null != l ? s = l * h : null == l && null != s ? l = s / h : null == s && null == l && (s = r.width, l = r.height), this.setTransform(t), i.sWidth && i.sHeight) { var u = i.sx || 0, c = i.sy || 0; t.drawImage(r, u, c, i.sWidth, i.sHeight, a, o, s, l) } else if (i.sx && i.sy) { var u = i.sx, c = i.sy, d = s - u, f = l - c; t.drawImage(r, u, c, d, f, a, o, s, l) } else t.drawImage(r, a, o, s, l); null != i.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect())) } }, getBoundingRect: function () { var t = this.style; return this._rect || (this._rect = new xi(t.x || 0, t.y || 0, t.width || 0, t.height || 0)), this._rect } }, u(Sn, bn); var Mg = 1e5, Ig = 314159, Tg = .01, Cg = .001, Ag = new xi(0, 0, 0, 0), Dg = new xi(0, 0, 0, 0), kg = function (t, e, i) { this.type = "canvas"; var n = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase(); this._opts = i = o({}, i || {}), this.dpr = i.devicePixelRatio || Fp, this._singleCanvas = n, this.root = t; var r = t.style; r && (r["-webkit-tap-highlight-color"] = "transparent", r["-webkit-user-select"] = r["user-select"] = r["-webkit-touch-callout"] = "none", t.innerHTML = ""), this.storage = e; var a = this._zlevelList = [], s = this._layers = {}; if (this._layerConfig = {}, this._needsManuallyCompositing = !1, n) { var l = t.width, h = t.height; null != i.width && (l = i.width), null != i.height && (h = i.height), this.dpr = i.devicePixelRatio || 1, t.width = l * this.dpr, t.height = h * this.dpr, this._width = l, this._height = h; var u = new sg(t, this, this.dpr); u.__builtin__ = !0, u.initContext(), s[Ig] = u, u.zlevel = Ig, a.push(Ig), this._domRoot = t } else { this._width = this._getSize(0), this._height = this._getSize(1); var c = this._domRoot = Dn(this._width, this._height); t.appendChild(c) } this._hoverlayer = null, this._hoverElements = [] }; kg.prototype = { constructor: kg, getType: function () { return "canvas" }, isSingleCanvas: function () { return this._singleCanvas }, getViewportRoot: function () { return this._domRoot }, getViewportRootOffset: function () { var t = this.getViewportRoot(); return t ? { offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0 } : void 0 }, refresh: function (t) { var e = this.storage.getDisplayList(!0), i = this._zlevelList; this._redrawId = Math.random(), this._paintList(e, t, this._redrawId); for (var n = 0; n < i.length; n++) { var r = i[n], a = this._layers[r]; if (!a.__builtin__ && a.refresh) { var o = 0 === n ? this._backgroundColor : null; a.refresh(o) } } return this.refreshHover(), this }, addHover: function (t, e) { if (!t.__hoverMir) { var i = new t.constructor({ style: t.style, shape: t.shape, z: t.z, z2: t.z2, silent: t.silent }); return i.__from = t, t.__hoverMir = i, e && i.setStyle(e), this._hoverElements.push(i), i } }, removeHover: function (t) { var e = t.__hoverMir, i = this._hoverElements, n = h(i, e); n >= 0 && i.splice(n, 1), t.__hoverMir = null }, clearHover: function () { for (var t = this._hoverElements, e = 0; e < t.length; e++) { var i = t[e].__from; i && (i.__hoverMir = null) } t.length = 0 }, refreshHover: function () { var t = this._hoverElements, e = t.length, i = this._hoverlayer; if (i && i.clear(), e) { Ai(t, this.storage.displayableSortFunc), i || (i = this._hoverlayer = this.getLayer(Mg)); var n = {}; i.ctx.save(); for (var r = 0; e > r;) { var a = t[r], o = a.__from; o && o.__zr ? (r++, o.invisible || (a.transform = o.transform, a.invTransform = o.invTransform, a.__clipPaths = o.__clipPaths, this._doPaintEl(a, i, !0, n))) : (t.splice(r, 1), o.__hoverMir = null, e--) } i.ctx.restore() } }, getHoverLayer: function () { return this.getLayer(Mg) }, _paintList: function (t, e, i) { if (this._redrawId === i) { e = e || !1, this._updateLayerStatus(t); var n = this._doPaintList(t, e); if (this._needsManuallyCompositing && this._compositeManually(), !n) { var r = this; lg(function () { r._paintList(t, e, i) }) } } }, _compositeManually: function () { var t = this.getLayer(Ig).ctx, e = this._domRoot.width, i = this._domRoot.height; t.clearRect(0, 0, e, i), this.eachBuiltinLayer(function (n) { n.virtual && t.drawImage(n.dom, 0, 0, e, i) }) }, _doPaintList: function (t, e) { for (var i = [], n = 0; n < this._zlevelList.length; n++) { var r = this._zlevelList[n], a = this._layers[r]; a.__builtin__ && a !== this._hoverlayer && (a.__dirty || e) && i.push(a) } for (var o = !0, s = 0; s < i.length; s++) { var a = i[s], l = a.ctx, h = {}; l.save(); var u = e ? a.__startIndex : a.__drawIndex, c = !e && a.incremental && Date.now, d = c && Date.now(), p = a.zlevel === this._zlevelList[0] ? this._backgroundColor : null; if (a.__startIndex === a.__endIndex) a.clear(!1, p); else if (u === a.__startIndex) { var g = t[u]; g.incremental && g.notClear && !e || a.clear(!1, p) } -1 === u && (console.error("For some unknown reason. drawIndex is -1"), u = a.__startIndex); for (var v = u; v < a.__endIndex; v++) { var m = t[v]; if (this._doPaintEl(m, a, e, h), m.__dirty = m.__dirtyText = !1, c) { var y = Date.now() - d; if (y > 15) break } } a.__drawIndex = v, a.__drawIndex < a.__endIndex && (o = !1), h.prevElClipPaths && l.restore(), l.restore() } return Ef.wxa && f(this._layers, function (t) { t && t.ctx && t.ctx.draw && t.ctx.draw() }), o }, _doPaintEl: function (t, e, i, n) { var r = e.ctx, a = t.transform; if (!(!e.__dirty && !i || t.invisible || 0 === t.style.opacity || a && !a[0] && !a[3] || t.culling && Tn(t, this._width, this._height))) { var o = t.__clipPaths, s = n.prevElClipPaths; (!s || Cn(o, s)) && (s && (r.restore(), n.prevElClipPaths = null, n.prevEl = null), o && (r.save(), An(o, r), n.prevElClipPaths = o)), t.beforeBrush && t.beforeBrush(r), t.brush(r, n.prevEl || null), n.prevEl = t, t.afterBrush && t.afterBrush(r) } }, getLayer: function (t, e) { this._singleCanvas && !this._needsManuallyCompositing && (t = Ig); var i = this._layers[t]; return i || (i = new sg("zr_" + t, this, this.dpr), i.zlevel = t, i.__builtin__ = !0, this._layerConfig[t] && r(i, this._layerConfig[t], !0), e && (i.virtual = e), this.insertLayer(t, i), i.initContext()), i }, insertLayer: function (t, e) { var i = this._layers, n = this._zlevelList, r = n.length, a = null, o = -1, s = this._domRoot; if (i[t]) return void Hp("ZLevel " + t + " has been used already"); if (!In(e)) return void Hp("Layer of zlevel " + t + " is not valid"); if (r > 0 && t > n[0]) { for (o = 0; r - 1 > o && !(n[o] < t && n[o + 1] > t); o++); a = i[n[o]] } if (n.splice(o + 1, 0, t), i[t] = e, !e.virtual) if (a) { var l = a.dom; l.nextSibling ? s.insertBefore(e.dom, l.nextSibling) : s.appendChild(e.dom) } else s.firstChild ? s.insertBefore(e.dom, s.firstChild) : s.appendChild(e.dom) }, eachLayer: function (t, e) { var i, n, r = this._zlevelList; for (n = 0; n < r.length; n++)i = r[n], t.call(e, this._layers[i], i) }, eachBuiltinLayer: function (t, e) { var i, n, r, a = this._zlevelList; for (r = 0; r < a.length; r++)n = a[r], i = this._layers[n], i.__builtin__ && t.call(e, i, n) }, eachOtherLayer: function (t, e) { var i, n, r, a = this._zlevelList; for (r = 0; r < a.length; r++)n = a[r], i = this._layers[n], i.__builtin__ || t.call(e, i, n) }, getLayers: function () { return this._layers }, _updateLayerStatus: function (t) { function e(t) { r && (r.__endIndex !== t && (r.__dirty = !0), r.__endIndex = t) } if (this.eachBuiltinLayer(function (t) { t.__dirty = t.__used = !1 }), this._singleCanvas) for (var i = 1; i < t.length; i++) { var n = t[i]; if (n.zlevel !== t[i - 1].zlevel || n.incremental) { this._needsManuallyCompositing = !0; break } } for (var r = null, a = 0, i = 0; i < t.length; i++) { var o, n = t[i], s = n.zlevel; n.incremental ? (o = this.getLayer(s + Cg, this._needsManuallyCompositing), o.incremental = !0, a = 1) : o = this.getLayer(s + (a > 0 ? Tg : 0), this._needsManuallyCompositing), o.__builtin__ || Hp("ZLevel " + s + " has been used by unkown layer " + o.id), o !== r && (o.__used = !0, o.__startIndex !== i && (o.__dirty = !0), o.__startIndex = i, o.__drawIndex = o.incremental ? -1 : i, e(i), r = o), n.__dirty && (o.__dirty = !0, o.incremental && o.__drawIndex < 0 && (o.__drawIndex = i)) } e(i), this.eachBuiltinLayer(function (t) { !t.__used && t.getElementCount() > 0 && (t.__dirty = !0, t.__startIndex = t.__endIndex = t.__drawIndex = 0), t.__dirty && t.__drawIndex < 0 && (t.__drawIndex = t.__startIndex) }) }, clear: function () { return this.eachBuiltinLayer(this._clearLayer), this }, _clearLayer: function (t) { t.clear() }, setBackgroundColor: function (t) { this._backgroundColor = t }, configLayer: function (t, e) { if (e) { var i = this._layerConfig; i[t] ? r(i[t], e, !0) : i[t] = e; for (var n = 0; n < this._zlevelList.length; n++) { var a = this._zlevelList[n]; if (a === t || a === t + Tg) { var o = this._layers[a]; r(o, i[t], !0) } } } }, delLayer: function (t) { var e = this._layers, i = this._zlevelList, n = e[t]; n && (n.dom.parentNode.removeChild(n.dom), delete e[t], i.splice(h(i, t), 1)) }, resize: function (t, e) { if (this._domRoot.style) { var i = this._domRoot; i.style.display = "none"; var n = this._opts; if (null != t && (n.width = t), null != e && (n.height = e), t = this._getSize(0), e = this._getSize(1), i.style.display = "", this._width !== t || e !== this._height) { i.style.width = t + "px", i.style.height = e + "px"; for (var r in this._layers) this._layers.hasOwnProperty(r) && this._layers[r].resize(t, e); f(this._progressiveLayers, function (i) { i.resize(t, e) }), this.refresh(!0) } this._width = t, this._height = e } else { if (null == t || null == e) return; this._width = t, this._height = e, this.getLayer(Ig).resize(t, e) } return this }, clearLayer: function (t) { var e = this._layers[t]; e && e.clear() }, dispose: function () { this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null }, getRenderedCanvas: function (t) { if (t = t || {}, this._singleCanvas && !this._compositeManually) return this._layers[Ig].dom; var e = new sg("image", this, t.pixelRatio || this.dpr); if (e.initContext(), e.clear(!1, t.backgroundColor || this._backgroundColor), t.pixelRatio <= this.dpr) { this.refresh(); var i = e.dom.width, n = e.dom.height, r = e.ctx; this.eachLayer(function (t) { t.__builtin__ ? r.drawImage(t.dom, 0, 0, i, n) : t.renderToCanvas && (e.ctx.save(), t.renderToCanvas(e.ctx), e.ctx.restore()) }) } else for (var a = {}, o = this.storage.getDisplayList(!0), s = 0; s < o.length; s++) { var l = o[s]; this._doPaintEl(l, e, !0, a) } return e.dom }, getWidth: function () { return this._width }, getHeight: function () { return this._height }, _getSize: function (t) { var e = this._opts, i = ["width", "height"][t], n = ["clientWidth", "clientHeight"][t], r = ["paddingLeft", "paddingTop"][t], a = ["paddingRight", "paddingBottom"][t]; if (null != e[i] && "auto" !== e[i]) return parseFloat(e[i]); var o = this.root, s = document.defaultView.getComputedStyle(o); return (o[n] || Mn(s[i]) || Mn(o.style[i])) - (Mn(s[r]) || 0) - (Mn(s[a]) || 0) | 0 }, pathToImage: function (t, e) { e = e || this.dpr; var i = document.createElement("canvas"), n = i.getContext("2d"), r = t.getBoundingRect(), a = t.style, o = a.shadowBlur * e, s = a.shadowOffsetX * e, l = a.shadowOffsetY * e, h = a.hasStroke() ? a.lineWidth : 0, u = Math.max(h / 2, -s + o), c = Math.max(h / 2, s + o), d = Math.max(h / 2, -l + o), f = Math.max(h / 2, l + o), p = r.width + u + c, g = r.height + d + f; i.width = p * e, i.height = g * e, n.scale(e, e), n.clearRect(0, 0, p, g), n.dpr = e; var v = { position: t.position, rotation: t.rotation, scale: t.scale }; t.position = [u - r.x, d - r.y], t.rotation = 0, t.scale = [1, 1], t.updateTransform(), t && t.brush(n); var m = Sn, y = new m({ style: { x: 0, y: 0, image: i } }); return null != v.position && (y.position = t.position = v.position), null != v.rotation && (y.rotation = t.rotation = v.rotation), null != v.scale && (y.scale = t.scale = v.scale), y } }; var Pg = function (t) { t = t || {}, this.stage = t.stage || {}, this.onframe = t.onframe || function () { }, this._clips = [], this._running = !1, this._time, this._pausedTime, this._pauseStart, this._paused = !1, ip.call(this) }; Pg.prototype = {
  14. constructor: Pg, addClip: function (t) { this._clips.push(t) }, addAnimator: function (t) { t.animation = this; for (var e = t.getClips(), i = 0; i < e.length; i++)this.addClip(e[i]) }, removeClip: function (t) { var e = h(this._clips, t); e >= 0 && this._clips.splice(e, 1) }, removeAnimator: function (t) { for (var e = t.getClips(), i = 0; i < e.length; i++)this.removeClip(e[i]); t.animation = null }, _update: function () { for (var t = (new Date).getTime() - this._pausedTime, e = t - this._time, i = this._clips, n = i.length, r = [], a = [], o = 0; n > o; o++) { var s = i[o], l = s.step(t, e); l && (r.push(l), a.push(s)) } for (var o = 0; n > o;)i[o]._needsRemove ? (i[o] = i[n - 1], i.pop(), n--) : o++; n = r.length; for (var o = 0; n > o; o++)a[o].fire(r[o]); this._time = t, this.onframe(e), this.trigger("frame", e), this.stage.update && this.stage.update() }, _startLoop: function () { function t() { e._running && (lg(t), !e._paused && e._update()) } var e = this; this._running = !0, lg(t) }, start: function () {
  15. this._time = (new Date).getTime(), this._pausedTime = 0, this._startLoop()
  16. }, stop: function () { this._running = !1 }, pause: function () { this._paused || (this._pauseStart = (new Date).getTime(), this._paused = !0) }, resume: function () { this._paused && (this._pausedTime += (new Date).getTime() - this._pauseStart, this._paused = !1) }, clear: function () { this._clips = [] }, isFinished: function () { return !this._clips.length }, animate: function (t, e) { e = e || {}; var i = new Bp(t, e.loop, e.getter, e.setter); return this.addAnimator(i), i }
  17. }, c(Pg, ip); var Lg = 300, Og = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"], Eg = ["touchstart", "touchend", "touchmove"], zg = { pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1 }, Bg = p(Og, function (t) { var e = t.replace("mouse", "pointer"); return zg[e] ? e : t }), Rg = { mousemove: function (t) { t = ye(this.dom, t), this.trigger("mousemove", t) }, mouseout: function (t) { t = ye(this.dom, t); var e = t.toElement || t.relatedTarget; if (e !== this.dom) for (; e && 9 !== e.nodeType;) { if (e === this.dom) return; e = e.parentNode } this.trigger("mouseout", t) }, touchstart: function (t) { t = ye(this.dom, t), t.zrByTouch = !0, this._lastTouchMoment = new Date, this.handler.processGesture(t, "start"), Rg.mousemove.call(this, t), Rg.mousedown.call(this, t), Pn(this) }, touchmove: function (t) { t = ye(this.dom, t), t.zrByTouch = !0, this.handler.processGesture(t, "change"), Rg.mousemove.call(this, t), Pn(this) }, touchend: function (t) { t = ye(this.dom, t), t.zrByTouch = !0, this.handler.processGesture(t, "end"), Rg.mouseup.call(this, t), +new Date - this._lastTouchMoment < Lg && Rg.click.call(this, t), Pn(this) }, pointerdown: function (t) { Rg.mousedown.call(this, t) }, pointermove: function (t) { Ln(t) || Rg.mousemove.call(this, t) }, pointerup: function (t) { Rg.mouseup.call(this, t) }, pointerout: function (t) { Ln(t) || Rg.mouseout.call(this, t) } }; f(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function (t) { Rg[t] = function (e) { e = ye(this.dom, e), this.trigger(t, e) } }); var Ng = En.prototype; Ng.dispose = function () { for (var t = Og.concat(Eg), e = 0; e < t.length; e++) { var i = t[e]; xe(this.dom, kn(i), this._handlers[i]) } }, Ng.setCursor = function (t) { this.dom.style && (this.dom.style.cursor = t || "default") }, c(En, ip); var Fg = !Ef.canvasSupported, Vg = { canvas: kg }, Hg = {}, Gg = "4.1.2", Wg = function (t, e, i) { i = i || {}, this.dom = e, this.id = t; var n = this, r = new Kp, a = i.renderer; if (Fg) { if (!Vg.vml) throw new Error("You need to require 'zrender/vml/vml' to support IE8"); a = "vml" } else a && Vg[a] || (a = "canvas"); var o = new Vg[a](e, r, i, t); this.storage = r, this.painter = o; var s = Ef.node || Ef.worker ? null : new En(o.getViewportRoot()); this.handler = new fp(r, o, s, o.root), this.animation = new Pg({ stage: { update: y(this.flush, this) } }), this.animation.start(), this._needsRefresh; var l = r.delFromStorage, h = r.addToStorage; r.delFromStorage = function (t) { l.call(r, t), t && t.removeSelfFromZr(n) }, r.addToStorage = function (t) { h.call(r, t), t.addSelfToZr(n) } }; Wg.prototype = { constructor: Wg, getId: function () { return this.id }, add: function (t) { this.storage.addRoot(t), this._needsRefresh = !0 }, remove: function (t) { this.storage.delRoot(t), this._needsRefresh = !0 }, configLayer: function (t, e) { this.painter.configLayer && this.painter.configLayer(t, e), this._needsRefresh = !0 }, setBackgroundColor: function (t) { this.painter.setBackgroundColor && this.painter.setBackgroundColor(t), this._needsRefresh = !0 }, refreshImmediately: function () { this._needsRefresh = this._needsRefreshHover = !1, this.painter.refresh(), this._needsRefresh = this._needsRefreshHover = !1 }, refresh: function () { this._needsRefresh = !0 }, flush: function () { var t; this._needsRefresh && (t = !0, this.refreshImmediately()), this._needsRefreshHover && (t = !0, this.refreshHoverImmediately()), t && this.trigger("rendered") }, addHover: function (t, e) { if (this.painter.addHover) { var i = this.painter.addHover(t, e); return this.refreshHover(), i } }, removeHover: function (t) { this.painter.removeHover && (this.painter.removeHover(t), this.refreshHover()) }, clearHover: function () { this.painter.clearHover && (this.painter.clearHover(), this.refreshHover()) }, refreshHover: function () { this._needsRefreshHover = !0 }, refreshHoverImmediately: function () { this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.refreshHover() }, resize: function (t) { t = t || {}, this.painter.resize(t.width, t.height), this.handler.resize() }, clearAnimation: function () { this.animation.clear() }, getWidth: function () { return this.painter.getWidth() }, getHeight: function () { return this.painter.getHeight() }, pathToImage: function (t, e) { return this.painter.pathToImage(t, e) }, setCursorStyle: function (t) { this.handler.setCursorStyle(t) }, findHover: function (t, e) { return this.handler.findHover(t, e) }, on: function (t, e, i) { this.handler.on(t, e, i) }, off: function (t, e) { this.handler.off(t, e) }, trigger: function (t, e) { this.handler.trigger(t, e) }, clear: function () { this.storage.delRoot(), this.painter.clear() }, dispose: function () { this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, Fn(this.id) } }; var Xg = (Object.freeze || Object)({ version: Gg, init: zn, dispose: Bn, getInstance: Rn, registerPainter: Nn }), Ug = f, Yg = S, jg = x, qg = "series\x00", Zg = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"], Kg = 0, $g = ".", Qg = "___EC__COMPONENT__CONTAINER___", Jg = 0, tv = function (t) { for (var e = 0; e < t.length; e++)t[e][1] || (t[e][1] = t[e][0]); return function (e, i, n) { for (var r = {}, a = 0; a < t.length; a++) { var o = t[a][1]; if (!(i && h(i, o) >= 0 || n && h(n, o) < 0)) { var s = e.getShallow(o); null != s && (r[t[a][0]] = s) } } return r } }, ev = tv([["lineWidth", "width"], ["stroke", "color"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"]]), iv = { getLineStyle: function (t) { var e = ev(this, t); return e.lineDash = this.getLineDash(e.lineWidth), e }, getLineDash: function (t) { null == t && (t = 1); var e = this.get("type"), i = Math.max(t, 2), n = 4 * t; return "solid" === e || null == e ? !1 : "dashed" === e ? [n, n] : [i, i] } }, nv = tv([["fill", "color"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["opacity"], ["shadowColor"]]), rv = { getAreaStyle: function (t, e) { return nv(this, t, e) } }, av = Math.pow, ov = Math.sqrt, sv = 1e-8, lv = 1e-4, hv = ov(3), uv = 1 / 3, cv = H(), dv = H(), fv = H(), pv = Math.min, gv = Math.max, vv = Math.sin, mv = Math.cos, yv = 2 * Math.PI, _v = H(), xv = H(), wv = H(), bv = [], Sv = [], Mv = { M: 1, L: 2, C: 3, Q: 4, A: 5, Z: 6, R: 7 }, Iv = [], Tv = [], Cv = [], Av = [], Dv = Math.min, kv = Math.max, Pv = Math.cos, Lv = Math.sin, Ov = Math.sqrt, Ev = Math.abs, zv = "undefined" != typeof Float32Array, Bv = function (t) { this._saveData = !t, this._saveData && (this.data = []), this._ctx = null }; Bv.prototype = { constructor: Bv, _xi: 0, _yi: 0, _x0: 0, _y0: 0, _ux: 0, _uy: 0, _len: 0, _lineDash: null, _dashOffset: 0, _dashIdx: 0, _dashSum: 0, setScale: function (t, e, i) { i = i || 0, this._ux = Ev(i / Fp / t) || 0, this._uy = Ev(i / Fp / e) || 0 }, getContext: function () { return this._ctx }, beginPath: function (t) { return this._ctx = t, t && t.beginPath(), t && (this.dpr = t.dpr), this._saveData && (this._len = 0), this._lineDash && (this._lineDash = null, this._dashOffset = 0), this }, moveTo: function (t, e) { return this.addData(Mv.M, t, e), this._ctx && this._ctx.moveTo(t, e), this._x0 = t, this._y0 = e, this._xi = t, this._yi = e, this }, lineTo: function (t, e) { var i = Ev(t - this._xi) > this._ux || Ev(e - this._yi) > this._uy || this._len < 5; return this.addData(Mv.L, t, e), this._ctx && i && (this._needsDash() ? this._dashedLineTo(t, e) : this._ctx.lineTo(t, e)), i && (this._xi = t, this._yi = e), this }, bezierCurveTo: function (t, e, i, n, r, a) { return this.addData(Mv.C, t, e, i, n, r, a), this._ctx && (this._needsDash() ? this._dashedBezierTo(t, e, i, n, r, a) : this._ctx.bezierCurveTo(t, e, i, n, r, a)), this._xi = r, this._yi = a, this }, quadraticCurveTo: function (t, e, i, n) { return this.addData(Mv.Q, t, e, i, n), this._ctx && (this._needsDash() ? this._dashedQuadraticTo(t, e, i, n) : this._ctx.quadraticCurveTo(t, e, i, n)), this._xi = i, this._yi = n, this }, arc: function (t, e, i, n, r, a) { return this.addData(Mv.A, t, e, i, i, n, r - n, 0, a ? 0 : 1), this._ctx && this._ctx.arc(t, e, i, n, r, a), this._xi = Pv(r) * i + t, this._yi = Lv(r) * i + e, this }, arcTo: function (t, e, i, n, r) { return this._ctx && this._ctx.arcTo(t, e, i, n, r), this }, rect: function (t, e, i, n) { return this._ctx && this._ctx.rect(t, e, i, n), this.addData(Mv.R, t, e, i, n), this }, closePath: function () { this.addData(Mv.Z); var t = this._ctx, e = this._x0, i = this._y0; return t && (this._needsDash() && this._dashedLineTo(e, i), t.closePath()), this._xi = e, this._yi = i, this }, fill: function (t) { t && t.fill(), this.toStatic() }, stroke: function (t) { t && t.stroke(), this.toStatic() }, setLineDash: function (t) { if (t instanceof Array) { this._lineDash = t, this._dashIdx = 0; for (var e = 0, i = 0; i < t.length; i++)e += t[i]; this._dashSum = e } return this }, setLineDashOffset: function (t) { return this._dashOffset = t, this }, len: function () { return this._len }, setData: function (t) { var e = t.length; this.data && this.data.length === e || !zv || (this.data = new Float32Array(e)); for (var i = 0; e > i; i++)this.data[i] = t[i]; this._len = e }, appendPath: function (t) { t instanceof Array || (t = [t]); for (var e = t.length, i = 0, n = this._len, r = 0; e > r; r++)i += t[r].len(); zv && this.data instanceof Float32Array && (this.data = new Float32Array(n + i)); for (var r = 0; e > r; r++)for (var a = t[r].data, o = 0; o < a.length; o++)this.data[n++] = a[o]; this._len = n }, addData: function (t) { if (this._saveData) { var e = this.data; this._len + arguments.length > e.length && (this._expandData(), e = this.data); for (var i = 0; i < arguments.length; i++)e[this._len++] = arguments[i]; this._prevCmd = t } }, _expandData: function () { if (!(this.data instanceof Array)) { for (var t = [], e = 0; e < this._len; e++)t[e] = this.data[e]; this.data = t } }, _needsDash: function () { return this._lineDash }, _dashedLineTo: function (t, e) { var i, n, r = this._dashSum, a = this._dashOffset, o = this._lineDash, s = this._ctx, l = this._xi, h = this._yi, u = t - l, c = e - h, d = Ov(u * u + c * c), f = l, p = h, g = o.length; for (u /= d, c /= d, 0 > a && (a = r + a), a %= r, f -= a * u, p -= a * c; u > 0 && t >= f || 0 > u && f >= t || 0 === u && (c > 0 && e >= p || 0 > c && p >= e);)n = this._dashIdx, i = o[n], f += u * i, p += c * i, this._dashIdx = (n + 1) % g, u > 0 && l > f || 0 > u && f > l || c > 0 && h > p || 0 > c && p > h || s[n % 2 ? "moveTo" : "lineTo"](u >= 0 ? Dv(f, t) : kv(f, t), c >= 0 ? Dv(p, e) : kv(p, e)); u = f - t, c = p - e, this._dashOffset = -Ov(u * u + c * c) }, _dashedBezierTo: function (t, e, i, n, r, a) { var o, s, l, h, u, c = this._dashSum, d = this._dashOffset, f = this._lineDash, p = this._ctx, g = this._xi, v = this._yi, m = ur, y = 0, _ = this._dashIdx, x = f.length, w = 0; for (0 > d && (d = c + d), d %= c, o = 0; 1 > o; o += .1)s = m(g, t, i, r, o + .1) - m(g, t, i, r, o), l = m(v, e, n, a, o + .1) - m(v, e, n, a, o), y += Ov(s * s + l * l); for (; x > _ && (w += f[_], !(w > d)); _++); for (o = (w - d) / y; 1 >= o;)h = m(g, t, i, r, o), u = m(v, e, n, a, o), _ % 2 ? p.moveTo(h, u) : p.lineTo(h, u), o += f[_] / y, _ = (_ + 1) % x; _ % 2 !== 0 && p.lineTo(r, a), s = r - h, l = a - u, this._dashOffset = -Ov(s * s + l * l) }, _dashedQuadraticTo: function (t, e, i, n) { var r = i, a = n; i = (i + 2 * t) / 3, n = (n + 2 * e) / 3, t = (this._xi + 2 * t) / 3, e = (this._yi + 2 * e) / 3, this._dashedBezierTo(t, e, i, n, r, a) }, toStatic: function () { var t = this.data; t instanceof Array && (t.length = this._len, zv && (this.data = new Float32Array(t))) }, getBoundingRect: function () { Iv[0] = Iv[1] = Cv[0] = Cv[1] = Number.MAX_VALUE, Tv[0] = Tv[1] = Av[0] = Av[1] = -Number.MAX_VALUE; for (var t = this.data, e = 0, i = 0, n = 0, r = 0, a = 0; a < t.length;) { var o = t[a++]; switch (1 === a && (e = t[a], i = t[a + 1], n = e, r = i), o) { case Mv.M: n = t[a++], r = t[a++], e = n, i = r, Cv[0] = n, Cv[1] = r, Av[0] = n, Av[1] = r; break; case Mv.L: Sr(e, i, t[a], t[a + 1], Cv, Av), e = t[a++], i = t[a++]; break; case Mv.C: Mr(e, i, t[a++], t[a++], t[a++], t[a++], t[a], t[a + 1], Cv, Av), e = t[a++], i = t[a++]; break; case Mv.Q: Ir(e, i, t[a++], t[a++], t[a], t[a + 1], Cv, Av), e = t[a++], i = t[a++]; break; case Mv.A: var s = t[a++], l = t[a++], h = t[a++], u = t[a++], c = t[a++], d = t[a++] + c; a += 1; var f = 1 - t[a++]; 1 === a && (n = Pv(c) * h + s, r = Lv(c) * u + l), Tr(s, l, h, u, c, d, f, Cv, Av), e = Pv(d) * h + s, i = Lv(d) * u + l; break; case Mv.R: n = e = t[a++], r = i = t[a++]; var p = t[a++], g = t[a++]; Sr(n, r, n + p, r + g, Cv, Av); break; case Mv.Z: e = n, i = r }oe(Iv, Iv, Cv), se(Tv, Tv, Av) } return 0 === a && (Iv[0] = Iv[1] = Tv[0] = Tv[1] = 0), new xi(Iv[0], Iv[1], Tv[0] - Iv[0], Tv[1] - Iv[1]) }, rebuildPath: function (t) { for (var e, i, n, r, a, o, s = this.data, l = this._ux, h = this._uy, u = this._len, c = 0; u > c;) { var d = s[c++]; switch (1 === c && (n = s[c], r = s[c + 1], e = n, i = r), d) { case Mv.M: e = n = s[c++], i = r = s[c++], t.moveTo(n, r); break; case Mv.L: a = s[c++], o = s[c++], (Ev(a - n) > l || Ev(o - r) > h || c === u - 1) && (t.lineTo(a, o), n = a, r = o); break; case Mv.C: t.bezierCurveTo(s[c++], s[c++], s[c++], s[c++], s[c++], s[c++]), n = s[c - 2], r = s[c - 1]; break; case Mv.Q: t.quadraticCurveTo(s[c++], s[c++], s[c++], s[c++]), n = s[c - 2], r = s[c - 1]; break; case Mv.A: var f = s[c++], p = s[c++], g = s[c++], v = s[c++], m = s[c++], y = s[c++], _ = s[c++], x = s[c++], w = g > v ? g : v, b = g > v ? 1 : g / v, S = g > v ? v / g : 1, M = Math.abs(g - v) > .001, I = m + y; M ? (t.translate(f, p), t.rotate(_), t.scale(b, S), t.arc(0, 0, w, m, I, 1 - x), t.scale(1 / b, 1 / S), t.rotate(-_), t.translate(-f, -p)) : t.arc(f, p, w, m, I, 1 - x), 1 === c && (e = Pv(m) * g + f, i = Lv(m) * v + p), n = Pv(I) * g + f, r = Lv(I) * v + p; break; case Mv.R: e = n = s[c], i = r = s[c + 1], t.rect(s[c++], s[c++], s[c++], s[c++]); break; case Mv.Z: t.closePath(), n = e, r = i } } } }, Bv.CMD = Mv; var Rv = 2 * Math.PI, Nv = 2 * Math.PI, Fv = Bv.CMD, Vv = 2 * Math.PI, Hv = 1e-4, Gv = [-1, -1, -1], Wv = [-1, -1], Xv = og.prototype.getCanvasPattern, Uv = Math.abs, Yv = new Bv(!0); Hr.prototype = { constructor: Hr, type: "path", __dirtyPath: !0, strokeContainThreshold: 5, segmentIgnoreThreshold: 0, subPixelOptimize: !1, brush: function (t, e) { var i = this.style, n = this.path || Yv, r = i.hasStroke(), a = i.hasFill(), o = i.fill, s = i.stroke, l = a && !!o.colorStops, h = r && !!s.colorStops, u = a && !!o.image, c = r && !!s.image; if (i.bind(t, this, e), this.setTransform(t), this.__dirty) { var d; l && (d = d || this.getBoundingRect(), this._fillGradient = i.getGradient(t, o, d)), h && (d = d || this.getBoundingRect(), this._strokeGradient = i.getGradient(t, s, d)) } l ? t.fillStyle = this._fillGradient : u && (t.fillStyle = Xv.call(o, t)), h ? t.strokeStyle = this._strokeGradient : c && (t.strokeStyle = Xv.call(s, t)); var f = i.lineDash, p = i.lineDashOffset, g = !!t.setLineDash, v = this.getGlobalScale(); if (n.setScale(v[0], v[1], this.segmentIgnoreThreshold), this.__dirtyPath || f && !g && r ? (n.beginPath(t), f && !g && (n.setLineDash(f), n.setLineDashOffset(p)), this.buildPath(n, this.shape, !1), this.path && (this.__dirtyPath = !1)) : (t.beginPath(), this.path.rebuildPath(t)), a) if (null != i.fillOpacity) { var m = t.globalAlpha; t.globalAlpha = i.fillOpacity * i.opacity, n.fill(t), t.globalAlpha = m } else n.fill(t); if (f && g && (t.setLineDash(f), t.lineDashOffset = p), r) if (null != i.strokeOpacity) { var m = t.globalAlpha; t.globalAlpha = i.strokeOpacity * i.opacity, n.stroke(t), t.globalAlpha = m } else n.stroke(t); f && g && t.setLineDash([]), null != i.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect())) }, buildPath: function () { }, createPathProxy: function () { this.path = new Bv }, getBoundingRect: function () { var t = this._rect, e = this.style, i = !t; if (i) { var n = this.path; n || (n = this.path = new Bv), this.__dirtyPath && (n.beginPath(), this.buildPath(n, this.shape, !1)), t = n.getBoundingRect() } if (this._rect = t, e.hasStroke()) { var r = this._rectWithStroke || (this._rectWithStroke = t.clone()); if (this.__dirty || i) { r.copy(t); var a = e.lineWidth, o = e.strokeNoScale ? this.getLineScale() : 1; e.hasFill() || (a = Math.max(a, this.strokeContainThreshold || 4)), o > 1e-10 && (r.width += a / o, r.height += a / o, r.x -= a / o / 2, r.y -= a / o / 2) } return r } return t }, contain: function (t, e) { var i = this.transformCoordToLocal(t, e), n = this.getBoundingRect(), r = this.style; if (t = i[0], e = i[1], n.contain(t, e)) { var a = this.path.data; if (r.hasStroke()) { var o = r.lineWidth, s = r.strokeNoScale ? this.getLineScale() : 1; if (s > 1e-10 && (r.hasFill() || (o = Math.max(o, this.strokeContainThreshold)), Vr(a, o / s, t, e))) return !0 } if (r.hasFill()) return Fr(a, t, e) } return !1 }, dirty: function (t) { null == t && (t = !0), t && (this.__dirtyPath = t, this._rect = null), this.__dirty = this.__dirtyText = !0, this.__zr && this.__zr.refresh(), this.__clipTarget && this.__clipTarget.dirty() }, animateShape: function (t) { return this.animate("shape", t) }, attrKV: function (t, e) { "shape" === t ? (this.setShape(e), this.__dirtyPath = !0, this._rect = null) : bn.prototype.attrKV.call(this, t, e) }, setShape: function (t, e) { var i = this.shape; if (i) { if (S(t)) for (var n in t) t.hasOwnProperty(n) && (i[n] = t[n]); else i[t] = e; this.dirty(!0) } return this }, getLineScale: function () { var t = this.transform; return t && Uv(t[0] - 1) > 1e-10 && Uv(t[3] - 1) > 1e-10 ? Math.sqrt(Uv(t[0] * t[3] - t[2] * t[1])) : 1 } }, Hr.extend = function (t) { var e = function (e) { Hr.call(this, e), t.style && this.style.extendFrom(t.style, !1); var i = t.shape; if (i) { this.shape = this.shape || {}; var n = this.shape; for (var r in i) !n.hasOwnProperty(r) && i.hasOwnProperty(r) && (n[r] = i[r]) } t.init && t.init.call(this, e) }; u(e, Hr); for (var i in t) "style" !== i && "shape" !== i && (e.prototype[i] = t[i]); return e }, u(Hr, bn); var jv = Bv.CMD, qv = [[], [], []], Zv = Math.sqrt, Kv = Math.atan2, $v = function (t, e) { var i, n, r, a, o, s, l = t.data, h = jv.M, u = jv.C, c = jv.L, d = jv.R, f = jv.A, p = jv.Q; for (r = 0, a = 0; r < l.length;) { switch (i = l[r++], a = r, n = 0, i) { case h: n = 1; break; case c: n = 1; break; case u: n = 3; break; case p: n = 2; break; case f: var g = e[4], v = e[5], m = Zv(e[0] * e[0] + e[1] * e[1]), y = Zv(e[2] * e[2] + e[3] * e[3]), _ = Kv(-e[1] / y, e[0] / m); l[r] *= m, l[r++] += g, l[r] *= y, l[r++] += v, l[r++] *= m, l[r++] *= y, l[r++] += _, l[r++] += _, r += 2, a = r; break; case d: s[0] = l[r++], s[1] = l[r++], ae(s, s, e), l[a++] = s[0], l[a++] = s[1], s[0] += l[r++], s[1] += l[r++], ae(s, s, e), l[a++] = s[0], l[a++] = s[1] }for (o = 0; n > o; o++) { var s = qv[o]; s[0] = l[r++], s[1] = l[r++], ae(s, s, e), l[a++] = s[0], l[a++] = s[1] } } }, Qv = Math.sqrt, Jv = Math.sin, tm = Math.cos, em = Math.PI, im = function (t) { return Math.sqrt(t[0] * t[0] + t[1] * t[1]) }, nm = function (t, e) { return (t[0] * e[0] + t[1] * e[1]) / (im(t) * im(e)) }, rm = function (t, e) { return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(nm(t, e)) }, am = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi, om = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g, sm = function (t) { bn.call(this, t) }; sm.prototype = { constructor: sm, type: "text", brush: function (t, e) { var i = this.style; this.__dirty && rn(i, !0), i.fill = i.stroke = i.shadowBlur = i.shadowColor = i.shadowOffsetX = i.shadowOffsetY = null; var n = i.text; return null != n && (n += ""), wn(n, i) ? (this.setTransform(t), on(this, t, n, i, null, e), void this.restoreTransform(t)) : void (t.__attrCachedBy = Jp.NONE) }, getBoundingRect: function () { var t = this.style; if (this.__dirty && rn(t, !0), !this._rect) { var e = t.text; null != e ? e += "" : e = ""; var i = Vi(t.text + "", t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich); if (i.x += t.x || 0, i.y += t.y || 0, mn(t.textStroke, t.textStrokeWidth)) { var n = t.textStrokeWidth; i.x -= n / 2, i.y -= n / 2, i.width += n, i.height += n } this._rect = i } return this._rect } }, u(sm, bn); var lm = Hr.extend({ type: "circle", shape: { cx: 0, cy: 0, r: 0 }, buildPath: function (t, e, i) { i && t.moveTo(e.cx + e.r, e.cy), t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI, !0) } }), hm = [["shadowBlur", 0], ["shadowColor", "#000"], ["shadowOffsetX", 0], ["shadowOffsetY", 0]], um = function (t) { return Ef.browser.ie && Ef.browser.version >= 11 ? function () { var e, i = this.__clipPaths, n = this.style; if (i) for (var r = 0; r < i.length; r++) { var a = i[r], o = a && a.shape, s = a && a.type; if (o && ("sector" === s && o.startAngle === o.endAngle || "rect" === s && (!o.width || !o.height))) { for (var l = 0; l < hm.length; l++)hm[l][2] = n[hm[l][0]], n[hm[l][0]] = hm[l][1]; e = !0; break } } if (t.apply(this, arguments), e) for (var l = 0; l < hm.length; l++)n[hm[l][0]] = hm[l][2] } : t }, cm = Hr.extend({ type: "sector", shape: { cx: 0, cy: 0, r0: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0 }, brush: um(Hr.prototype.brush), buildPath: function (t, e) { var i = e.cx, n = e.cy, r = Math.max(e.r0 || 0, 0), a = Math.max(e.r, 0), o = e.startAngle, s = e.endAngle, l = e.clockwise, h = Math.cos(o), u = Math.sin(o); t.moveTo(h * r + i, u * r + n), t.lineTo(h * a + i, u * a + n), t.arc(i, n, a, o, s, !l), t.lineTo(Math.cos(s) * r + i, Math.sin(s) * r + n), 0 !== r && t.arc(i, n, r, s, o, l), t.closePath() } }), dm = Hr.extend({ type: "ring", shape: { cx: 0, cy: 0, r: 0, r0: 0 }, buildPath: function (t, e) { var i = e.cx, n = e.cy, r = 2 * Math.PI; t.moveTo(i + e.r, n), t.arc(i, n, e.r, 0, r, !1), t.moveTo(i + e.r0, n), t.arc(i, n, e.r0, 0, r, !0) } }), fm = function (t, e) { for (var i = t.length, n = [], r = 0, a = 1; i > a; a++)r += ee(t[a - 1], t[a]); var o = r / 2; o = i > o ? i : o; for (var a = 0; o > a; a++) { var s, l, h, u = a / (o - 1) * (e ? i : i - 1), c = Math.floor(u), d = u - c, f = t[c % i]; e ? (s = t[(c - 1 + i) % i], l = t[(c + 1) % i], h = t[(c + 2) % i]) : (s = t[0 === c ? c : c - 1], l = t[c > i - 2 ? i - 1 : c + 1], h = t[c > i - 3 ? i - 1 : c + 2]); var p = d * d, g = d * p; n.push([qr(s[0], f[0], l[0], h[0], d, p, g), qr(s[1], f[1], l[1], h[1], d, p, g)]) } return n }, pm = function (t, e, i, n) { var r, a, o, s, l = [], h = [], u = [], c = []; if (n) { o = [1 / 0, 1 / 0], s = [-1 / 0, -1 / 0]; for (var d = 0, f = t.length; f > d; d++)oe(o, o, t[d]), se(s, s, t[d]); oe(o, o, n[0]), se(s, s, n[1]) } for (var d = 0, f = t.length; f > d; d++) { var p = t[d]; if (i) r = t[d ? d - 1 : f - 1], a = t[(d + 1) % f]; else { if (0 === d || d === f - 1) { l.push(W(t[d])); continue } r = t[d - 1], a = t[d + 1] } j(h, a, r), J(h, h, e); var g = ee(p, r), v = ee(p, a), m = g + v; 0 !== m && (g /= m, v /= m), J(u, h, -g), J(c, h, v); var y = U([], p, u), _ = U([], p, c); n && (se(y, y, o), oe(y, y, s), se(_, _, o), oe(_, _, s)), l.push(y), l.push(_) } return i && l.push(l.shift()), l }, gm = Hr.extend({ type: "polygon", shape: { points: null, smooth: !1, smoothConstraint: null }, buildPath: function (t, e) { Zr(t, e, !0) } }), vm = Hr.extend({ type: "polyline", shape: { points: null, smooth: !1, smoothConstraint: null }, style: { stroke: "#000", fill: null }, buildPath: function (t, e) { Zr(t, e, !1) } }), mm = Math.round, ym = {}, _m = Hr.extend({ type: "rect", shape: { r: 0, x: 0, y: 0, width: 0, height: 0 }, buildPath: function (t, e) { var i, n, r, a; this.subPixelOptimize ? ($r(ym, e, this.style), i = ym.x, n = ym.y, r = ym.width, a = ym.height, ym.r = e.r, e = ym) : (i = e.x, n = e.y, r = e.width, a = e.height), e.r ? nn(t, e) : t.rect(i, n, r, a), t.closePath() } }), xm = {}, wm = Hr.extend({ type: "line", shape: { x1: 0, y1: 0, x2: 0, y2: 0, percent: 1 }, style: { stroke: "#000", fill: null }, buildPath: function (t, e) { var i, n, r, a; this.subPixelOptimize ? (Kr(xm, e, this.style), i = xm.x1, n = xm.y1, r = xm.x2, a = xm.y2) : (i = e.x1, n = e.y1, r = e.x2, a = e.y2); var o = e.percent; 0 !== o && (t.moveTo(i, n), 1 > o && (r = i * (1 - o) + r * o, a = n * (1 - o) + a * o), t.lineTo(r, a)) }, pointAt: function (t) { var e = this.shape; return [e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t] } }), bm = [], Sm = Hr.extend({ type: "bezier-curve", shape: { x1: 0, y1: 0, x2: 0, y2: 0, cpx1: 0, cpy1: 0, percent: 1 }, style: { stroke: "#000", fill: null }, buildPath: function (t, e) { var i = e.x1, n = e.y1, r = e.x2, a = e.y2, o = e.cpx1, s = e.cpy1, l = e.cpx2, h = e.cpy2, u = e.percent; 0 !== u && (t.moveTo(i, n), null == l || null == h ? (1 > u && (xr(i, o, r, u, bm), o = bm[1], r = bm[2], xr(n, s, a, u, bm), s = bm[1], a = bm[2]), t.quadraticCurveTo(o, s, r, a)) : (1 > u && (pr(i, o, l, r, u, bm), o = bm[1], l = bm[2], r = bm[3], pr(n, s, h, a, u, bm), s = bm[1], h = bm[2], a = bm[3]), t.bezierCurveTo(o, s, l, h, r, a))) }, pointAt: function (t) { return Jr(this.shape, t, !1) }, tangentAt: function (t) { var e = Jr(this.shape, t, !0); return te(e, e) } }), Mm = Hr.extend({ type: "arc", shape: { cx: 0, cy: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0 }, style: { stroke: "#000", fill: null }, buildPath: function (t, e) { var i = e.cx, n = e.cy, r = Math.max(e.r, 0), a = e.startAngle, o = e.endAngle, s = e.clockwise, l = Math.cos(a), h = Math.sin(a); t.moveTo(l * r + i, h * r + n), t.arc(i, n, r, a, o, !s) } }), Im = Hr.extend({ type: "compound", shape: { paths: null }, _updatePathDirty: function () { for (var t = this.__dirtyPath, e = this.shape.paths, i = 0; i < e.length; i++)t = t || e[i].__dirtyPath; this.__dirtyPath = t, this.__dirty = this.__dirty || t }, beforeBrush: function () { this._updatePathDirty(); for (var t = this.shape.paths || [], e = this.getGlobalScale(), i = 0; i < t.length; i++)t[i].path || t[i].createPathProxy(), t[i].path.setScale(e[0], e[1], t[i].segmentIgnoreThreshold) }, buildPath: function (t, e) { for (var i = e.paths || [], n = 0; n < i.length; n++)i[n].buildPath(t, i[n].shape, !0) }, afterBrush: function () { for (var t = this.shape.paths || [], e = 0; e < t.length; e++)t[e].__dirtyPath = !1 }, getBoundingRect: function () { return this._updatePathDirty(), Hr.prototype.getBoundingRect.call(this) } }), Tm = function (t) { this.colorStops = t || [] }; Tm.prototype = { constructor: Tm, addColorStop: function (t, e) { this.colorStops.push({ offset: t, color: e }) } }; var Cm = function (t, e, i, n, r, a) { this.x = null == t ? 0 : t, this.y = null == e ? 0 : e, this.x2 = null == i ? 1 : i, this.y2 = null == n ? 0 : n, this.type = "linear", this.global = a || !1, Tm.call(this, r) }; Cm.prototype = { constructor: Cm }, u(Cm, Tm); var Am = function (t, e, i, n, r) { this.x = null == t ? .5 : t, this.y = null == e ? .5 : e, this.r = null == i ? .5 : i, this.type = "radial", this.global = r || !1, Tm.call(this, n) }; Am.prototype = { constructor: Am }, u(Am, Tm), ta.prototype.incremental = !0, ta.prototype.clearDisplaybles = function () { this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.dirty(), this.notClear = !1 }, ta.prototype.addDisplayable = function (t, e) { e ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.dirty() }, ta.prototype.addDisplayables = function (t, e) { e = e || !1; for (var i = 0; i < t.length; i++)this.addDisplayable(t[i], e) }, ta.prototype.eachPendingDisplayable = function (t) { for (var e = this._cursor; e < this._displayables.length; e++)t && t(this._displayables[e]); for (var e = 0; e < this._temporaryDisplayables.length; e++)t && t(this._temporaryDisplayables[e]) }, ta.prototype.update = function () { this.updateTransform(); for (var t = this._cursor; t < this._displayables.length; t++) { var e = this._displayables[t]; e.parent = this, e.update(), e.parent = null } for (var t = 0; t < this._temporaryDisplayables.length; t++) { var e = this._temporaryDisplayables[t]; e.parent = this, e.update(), e.parent = null } }, ta.prototype.brush = function (t) { for (var e = this._cursor; e < this._displayables.length; e++) { var i = this._displayables[e]; i.beforeBrush && i.beforeBrush(t), i.brush(t, e === this._cursor ? null : this._displayables[e - 1]), i.afterBrush && i.afterBrush(t) } this._cursor = e; for (var e = 0; e < this._temporaryDisplayables.length; e++) { var i = this._temporaryDisplayables[e]; i.beforeBrush && i.beforeBrush(t), i.brush(t, 0 === e ? null : this._temporaryDisplayables[e - 1]), i.afterBrush && i.afterBrush(t) } this._temporaryDisplayables = [], this.notClear = !0 }; var Dm = []; ta.prototype.getBoundingRect = function () { if (!this._rect) { for (var t = new xi(1 / 0, 1 / 0, -1 / 0, -1 / 0), e = 0; e < this._displayables.length; e++) { var i = this._displayables[e], n = i.getBoundingRect().clone(); i.needLocalTransform() && n.applyTransform(i.getLocalTransform(Dm)), t.union(n) } this._rect = t } return this._rect }, ta.prototype.contain = function (t, e) { var i = this.transformCoordToLocal(t, e), n = this.getBoundingRect(); if (n.contain(i[0], i[1])) for (var r = 0; r < this._displayables.length; r++) { var a = this._displayables[r]; if (a.contain(t, e)) return !0 } return !1 }, u(ta, bn); var km = Math.max, Pm = Math.min, Lm = {}, Om = 1, Em = { color: "textFill", textBorderColor: "textStroke", textBorderWidth: "textStrokeWidth" }, zm = "emphasis", Bm = "normal", Rm = 1, Nm = {}, Fm = {}, Vm = jr, Hm = Qr, Gm = N(), Wm = 0; na("circle", lm), na("sector", cm), na("ring", dm), na("polygon", gm), na("polyline", vm), na("rect", _m), na("line", wm), na("bezierCurve", Sm), na("arc", Mm); var Xm = (Object.freeze || Object)({ Z2_EMPHASIS_LIFT: Om, CACHED_LABEL_STYLE_PROPERTIES: Em, extendShape: ea, extendPath: ia, registerShape: na, getShapeClass: ra, makePath: aa, makeImage: oa, mergePath: Vm, resizePath: la, subPixelOptimizeLine: ha, subPixelOptimizeRect: ua, subPixelOptimize: Hm, setElementHoverStyle: ya, setHoverStyle: Ma, setAsHighDownDispatcher: Ia, isHighDownDispatcher: Ta, getHighlightDigit: Ca, setLabelStyle: Aa, modifyLabelStyle: Da, setTextStyle: ka, setText: Pa, getFont: Na, updateProps: Va, initProps: Ha, getTransform: Ga, applyTransform: Wa, transformDirection: Xa, groupTransition: Ua, clipPointsByRect: Ya, clipRectByRect: ja, createIcon: qa, linePolygonIntersect: Za, lineLineIntersect: Ka, Group: jp, Image: Sn, Text: sm, Circle: lm, Sector: cm, Ring: dm, Polygon: gm, Polyline: vm, Rect: _m, Line: wm, BezierCurve: Sm, Arc: Mm, IncrementalDisplayable: ta, CompoundPath: Im, LinearGradient: Cm, RadialGradient: Am, BoundingRect: xi }), Um = ["textStyle", "color"], Ym = { getTextColor: function (t) { var e = this.ecModel; return this.getShallow("color") || (!t && e ? e.get(Um) : null) }, getFont: function () { return Na({ fontStyle: this.getShallow("fontStyle"), fontWeight: this.getShallow("fontWeight"), fontSize: this.getShallow("fontSize"), fontFamily: this.getShallow("fontFamily") }, this.ecModel) }, getTextRect: function (t) { return Vi(t, this.getFont(), this.getShallow("align"), this.getShallow("verticalAlign") || this.getShallow("baseline"), this.getShallow("padding"), this.getShallow("lineHeight"), this.getShallow("rich"), this.getShallow("truncateText")) } }, jm = tv([["fill", "color"], ["stroke", "borderColor"], ["lineWidth", "borderWidth"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"], ["textPosition"], ["textAlign"]]), qm = { getItemStyle: function (t, e) { var i = jm(this, t, e), n = this.getBorderLineDash(); return n && (i.lineDash = n), i }, getBorderLineDash: function () { var t = this.get("borderType"); return "solid" === t || null == t ? null : "dashed" === t ? [5, 5] : [1, 1] } }, Zm = c, Km = Zn(); Ja.prototype = { constructor: Ja, init: null, mergeOption: function (t) { r(this.option, t, !0) }, get: function (t, e) { return null == t ? this.option : to(this.option, this.parsePath(t), !e && eo(this, t)) }, getShallow: function (t, e) { var i = this.option, n = null == i ? i : i[t], r = !e && eo(this, t); return null == n && r && (n = r.getShallow(t)), n }, getModel: function (t, e) { var i, n = null == t ? this.option : to(this.option, t = this.parsePath(t)); return e = e || (i = eo(this, t)) && i.getModel(t), new Ja(n, e, this.ecModel) }, isEmpty: function () { return null == this.option }, restoreData: function () { }, clone: function () { var t = this.constructor; return new t(n(this.option)) }, setReadOnly: function () { }, parsePath: function (t) { return "string" == typeof t && (t = t.split(".")), t }, customizeGetParent: function (t) { Km(this).getParent = t }, isAnimationEnabled: function () { if (!Ef.node) { if (null != this.option.animation) return !!this.option.animation; if (this.parentModel) return this.parentModel.isAnimationEnabled() } } }, nr(Ja), rr(Ja), Zm(Ja, iv), Zm(Ja, rv), Zm(Ja, Ym), Zm(Ja, qm); var $m = 0, Qm = 1e-4, Jm = 9007199254740991, ty = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/, ey = (Object.freeze || Object)({ linearMap: oo, parsePercent: so, round: lo, asc: ho, getPrecision: uo, getPrecisionSafe: co, getPixelPrecision: fo, getPercentWithPrecision: po, MAX_SAFE_INTEGER: Jm, remRadian: go, isRadianAroundZero: vo, parseDate: mo, quantity: yo, quantityExponent: _o, nice: xo, quantile: wo, reformIntervals: bo, isNumeric: So }), iy = L, ny = /([&<>"'])/g, ry = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" }, ay = ["a", "b", "c", "d", "e", "f", "g"], oy = function (t, e) { return "{" + t + (null == e ? "" : e) + "}" }, sy = Yi, ly = (Object.freeze || Object)({ addCommas: Mo, toCamelCase: Io, normalizeCssArray: iy, encodeHTML: To, formatTpl: Co, formatTplSimple: Ao, getTooltipMarker: Do, formatTime: Po, capitalFirst: Lo, truncateText: sy, getTextBoundingRect: Oo, getTextRect: Eo }), hy = f, uy = ["left", "right", "top", "bottom", "width", "height"], cy = [["width", "left", "right"], ["height", "top", "bottom"]], dy = zo, fy = (_(zo, "vertical"), _(zo, "horizontal"), { getBoxLayoutParams: function () { return { left: this.get("left"), top: this.get("top"), right: this.get("right"), bottom: this.get("bottom"), width: this.get("width"), height: this.get("height") } } }), py = Zn(), gy = Ja.extend({ type: "component", id: "", name: "", mainType: "", subType: "", componentIndex: 0, defaultOption: null, ecModel: null, dependentModels: [], uid: null, layoutMode: null, $constructor: function (t, e, i, n) { Ja.call(this, t, e, i, n), this.uid = io("ec_cpt_model") }, init: function (t, e, i) { this.mergeDefaultAndTheme(t, i) }, mergeDefaultAndTheme: function (t, e) { var i = this.layoutMode, n = i ? No(t) : {}, a = e.getTheme(); r(t, a.get(this.mainType)), r(t, this.getDefaultOption()), i && Ro(t, n, i) }, mergeOption: function (t) { r(this.option, t, !0); var e = this.layoutMode; e && Ro(this.option, t, e) }, optionUpdated: function () { }, getDefaultOption: function () { var t = py(this); if (!t.defaultOption) { for (var e = [], i = this.constructor; i;) { var n = i.prototype.defaultOption; n && e.push(n), i = i.superClass } for (var a = {}, o = e.length - 1; o >= 0; o--)a = r(a, e[o], !0); t.defaultOption = a } return t.defaultOption }, getReferringComponents: function (t) { return this.ecModel.queryComponents({ mainType: t, index: this.get(t + "Index", !0), id: this.get(t + "Id", !0) }) } }); sr(gy, { registerWhenExtend: !0 }), no(gy), ro(gy, Vo), c(gy, fy); var vy = ""; "undefined" != typeof navigator && (vy = navigator.platform || ""); var my = { color: ["#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae", "#749f83", "#ca8622", "#bda29a", "#6e7074", "#546570", "#c4ccd3"], gradientColor: ["#f6efa6", "#d88273", "#bf444c"], textStyle: { fontFamily: vy.match(/^Win/) ? "Microsoft YaHei" : "sans-serif", fontSize: 12, fontStyle: "normal", fontWeight: "normal" }, blendMode: null, animation: "auto", animationDuration: 1e3, animationDurationUpdate: 300, animationEasing: "exponentialOut", animationEasingUpdate: "cubicOut", animationThreshold: 2e3, progressiveThreshold: 3e3, progressive: 400, hoverLayerThreshold: 3e3, useUTC: !1 }, yy = Zn(), _y = { clearColorPalette: function () { yy(this).colorIdx = 0, yy(this).colorNameMap = {} }, getColorFromPalette: function (t, e, i) { e = e || this; var n = yy(e), r = n.colorIdx || 0, a = n.colorNameMap = n.colorNameMap || {}; if (a.hasOwnProperty(t)) return a[t]; var o = Vn(this.get("color", !0)), s = this.get("colorLayer", !0), l = null != i && s ? Ho(s, i) : o; if (l = l || o, l && l.length) { var h = l[r]; return t && (a[t] = h), n.colorIdx = (r + 1) % l.length, h } } }, xy = {
  18. cartesian2d: function (t, e, i, n) { var r = t.getReferringComponents("xAxis")[0], a = t.getReferringComponents("yAxis")[0]; if (kf) { if (!r) throw new Error('xAxis "' + A(t.get("xAxisIndex"), t.get("xAxisId"), 0) + '" not found'); if (!a) throw new Error('yAxis "' + A(t.get("xAxisIndex"), t.get("yAxisId"), 0) + '" not found') } e.coordSysDims = ["x", "y"], i.set("x", r), i.set("y", a), Wo(r) && (n.set("x", r), e.firstCategoryDimIndex = 0), Wo(a) && (n.set("y", a), e.firstCategoryDimIndex = 1) }, singleAxis: function (t, e, i, n) {
  19. var r = t.getReferringComponents("singleAxis")[0]; if (kf && !r) throw new Error("singleAxis should be specified."); e.coordSysDims = ["single"], i.set("single", r), Wo(r) && (n.set("single", r), e.firstCategoryDimIndex = 0)
  20. }, polar: function (t, e, i, n) { var r = t.getReferringComponents("polar")[0], a = r.findAxisModel("radiusAxis"), o = r.findAxisModel("angleAxis"); if (kf) { if (!o) throw new Error("angleAxis option not found"); if (!a) throw new Error("radiusAxis option not found") } e.coordSysDims = ["radius", "angle"], i.set("radius", a), i.set("angle", o), Wo(a) && (n.set("radius", a), e.firstCategoryDimIndex = 0), Wo(o) && (n.set("angle", o), e.firstCategoryDimIndex = 1) }, geo: function (t, e) { e.coordSysDims = ["lng", "lat"] }, parallel: function (t, e, i, n) { var r = t.ecModel, a = r.getComponent("parallel", t.get("parallelIndex")), o = e.coordSysDims = a.dimensions.slice(); f(a.parallelAxisIndex, function (t, a) { var s = r.getComponent("parallelAxis", t), l = o[a]; i.set(l, s), Wo(s) && null == e.firstCategoryDimIndex && (n.set(l, s), e.firstCategoryDimIndex = a) }) }
  21. }, wy = "original", by = "arrayRows", Sy = "objectRows", My = "keyedColumns", Iy = "unknown", Ty = "typedArray", Cy = "column", Ay = "row"; Xo.seriesDataToSource = function (t) { return new Xo({ data: t, sourceFormat: I(t) ? Ty : wy, fromDataset: !1 }) }, rr(Xo); var Dy = Zn(), ky = "\x00_ec_inner", Py = Ja.extend({ init: function (t, e, i, n) { i = i || {}, this.option = null, this._theme = new Ja(i), this._optionManager = n }, setOption: function (t, e) { O(!(ky in t), "please use chart.getOption()"), this._optionManager.setOption(t, e), this.resetOption(null) }, resetOption: function (t) { var e = !1, i = this._optionManager; if (!t || "recreate" === t) { var n = i.mountOption("recreate" === t); this.option && "recreate" !== t ? (this.restoreData(), this.mergeOption(n)) : as.call(this, n), e = !0 } if (("timeline" === t || "media" === t) && this.restoreData(), !t || "recreate" === t || "timeline" === t) { var r = i.getTimelineOption(this); r && (this.mergeOption(r), e = !0) } if (!t || "recreate" === t || "media" === t) { var a = i.getMediaOption(this, this._api); a.length && f(a, function (t) { this.mergeOption(t, e = !0) }, this) } return e }, mergeOption: function (t) { function e(e, n) { var r = Vn(t[e]), s = Xn(a.get(e), r); Un(s), f(s, function (t) { var i = t.option; S(i) && (t.keyInfo.mainType = e, t.keyInfo.subType = ss(e, i, t.exist)) }); var l = os(a, n); i[e] = [], a.set(e, []), f(s, function (t, n) { var r = t.exist, s = t.option; if (O(S(s) || r, "Empty component definition"), s) { var h = gy.getClass(e, t.keyInfo.subType, !0); if (r && r.constructor === h) r.name = t.keyInfo.name, r.mergeOption(s, this), r.optionUpdated(s, !1); else { var u = o({ dependentModels: l, componentIndex: n }, t.keyInfo); r = new h(s, this, this, u), o(r, u), r.init(s, this, this, u), r.optionUpdated(null, !0) } } else r.mergeOption({}, this), r.optionUpdated({}, !1); a.get(e)[n] = r, i[e][n] = r.option }, this), "series" === e && ls(this, a.get("series")) } var i = this.option, a = this._componentsMap, s = []; jo(this), f(t, function (t, e) { null != t && (gy.hasClass(e) ? e && s.push(e) : i[e] = null == i[e] ? n(t) : r(i[e], t, !0)) }), gy.topologicalTravel(s, gy.getAllClassMainTypes(), e, this), this._seriesIndicesMap = N(this._seriesIndices = this._seriesIndices || []) }, getOption: function () { var t = n(this.option); return f(t, function (e, i) { if (gy.hasClass(i)) { for (var e = Vn(e), n = e.length - 1; n >= 0; n--)jn(e[n]) && e.splice(n, 1); t[i] = e } }), delete t[ky], t }, getTheme: function () { return this._theme }, getComponent: function (t, e) { var i = this._componentsMap.get(t); return i ? i[e || 0] : void 0 }, queryComponents: function (t) { var e = t.mainType; if (!e) return []; var i = t.index, n = t.id, r = t.name, a = this._componentsMap.get(e); if (!a || !a.length) return []; var o; if (null != i) x(i) || (i = [i]), o = v(p(i, function (t) { return a[t] }), function (t) { return !!t }); else if (null != n) { var s = x(n); o = v(a, function (t) { return s && h(n, t.id) >= 0 || !s && t.id === n }) } else if (null != r) { var l = x(r); o = v(a, function (t) { return l && h(r, t.name) >= 0 || !l && t.name === r }) } else o = a.slice(); return hs(o, t) }, findComponents: function (t) { function e(t) { var e = r + "Index", i = r + "Id", n = r + "Name"; return !t || null == t[e] && null == t[i] && null == t[n] ? null : { mainType: r, index: t[e], id: t[i], name: t[n] } } function i(e) { return t.filter ? v(e, t.filter) : e } var n = t.query, r = t.mainType, a = e(n), o = a ? this.queryComponents(a) : this._componentsMap.get(r); return i(hs(o, t)) }, eachComponent: function (t, e, i) { var n = this._componentsMap; if ("function" == typeof t) i = e, e = t, n.each(function (t, n) { f(t, function (t, r) { e.call(i, n, t, r) }) }); else if (b(t)) f(n.get(t), e, i); else if (S(t)) { var r = this.findComponents(t); f(r, e, i) } }, getSeriesByName: function (t) { var e = this._componentsMap.get("series"); return v(e, function (e) { return e.name === t }) }, getSeriesByIndex: function (t) { return this._componentsMap.get("series")[t] }, getSeriesByType: function (t) { var e = this._componentsMap.get("series"); return v(e, function (e) { return e.subType === t }) }, getSeries: function () { return this._componentsMap.get("series").slice() }, getSeriesCount: function () { return this._componentsMap.get("series").length }, eachSeries: function (t, e) { us(this), f(this._seriesIndices, function (i) { var n = this._componentsMap.get("series")[i]; t.call(e, n, i) }, this) }, eachRawSeries: function (t, e) { f(this._componentsMap.get("series"), t, e) }, eachSeriesByType: function (t, e, i) { us(this), f(this._seriesIndices, function (n) { var r = this._componentsMap.get("series")[n]; r.subType === t && e.call(i, r, n) }, this) }, eachRawSeriesByType: function (t, e, i) { return f(this.getSeriesByType(t), e, i) }, isSeriesFiltered: function (t) { return us(this), null == this._seriesIndicesMap.get(t.componentIndex) }, getCurrentSeriesIndices: function () { return (this._seriesIndices || []).slice() }, filterSeries: function (t, e) { us(this); var i = v(this._componentsMap.get("series"), t, e); ls(this, i) }, restoreData: function (t) { var e = this._componentsMap; ls(this, e.get("series")); var i = []; e.each(function (t, e) { i.push(e) }), gy.topologicalTravel(i, gy.getAllClassMainTypes(), function (i) { f(e.get(i), function (e) { ("series" !== i || !ns(e, t)) && e.restoreData() }) }) } }); c(Py, _y); var Ly = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getModel", "getOption", "getViewOfComponentModel", "getViewOfSeriesModel"], Oy = {}; ds.prototype = { constructor: ds, create: function (t, e) { var i = []; f(Oy, function (n) { var r = n.create(t, e); i = i.concat(r || []) }), this._coordinateSystems = i }, update: function (t, e) { f(this._coordinateSystems, function (i) { i.update && i.update(t, e) }) }, getCoordinateSystems: function () { return this._coordinateSystems.slice() } }, ds.register = function (t, e) { Oy[t] = e }, ds.get = function (t) { return Oy[t] }; var Ey = f, zy = n, By = p, Ry = r, Ny = /^(min|max)?(.+)$/; fs.prototype = { constructor: fs, setOption: function (t, e) { t && f(Vn(t.series), function (t) { t && t.data && I(t.data) && z(t.data) }), t = zy(t); var i = this._optionBackup, n = ps.call(this, t, e, !i); this._newBaseOption = n.baseOption, i ? (ys(i.baseOption, n.baseOption), n.timelineOptions.length && (i.timelineOptions = n.timelineOptions), n.mediaList.length && (i.mediaList = n.mediaList), n.mediaDefault && (i.mediaDefault = n.mediaDefault)) : this._optionBackup = n }, mountOption: function (t) { var e = this._optionBackup; return this._timelineOptions = By(e.timelineOptions, zy), this._mediaList = By(e.mediaList, zy), this._mediaDefault = zy(e.mediaDefault), this._currentMediaIndices = [], zy(t ? e.baseOption : this._newBaseOption) }, getTimelineOption: function (t) { var e, i = this._timelineOptions; if (i.length) { var n = t.getComponent("timeline"); n && (e = zy(i[n.getCurrentIndex()], !0)) } return e }, getMediaOption: function () { var t = this._api.getWidth(), e = this._api.getHeight(), i = this._mediaList, n = this._mediaDefault, r = [], a = []; if (!i.length && !n) return a; for (var o = 0, s = i.length; s > o; o++)gs(i[o].query, t, e) && r.push(o); return !r.length && n && (r = [-1]), r.length && !ms(r, this._currentMediaIndices) && (a = By(r, function (t) { return zy(-1 === t ? n.option : i[t].option) })), this._currentMediaIndices = r, a } }; var Fy = f, Vy = S, Hy = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"], Gy = function (t, e) { Fy(Is(t.series), function (t) { Vy(t) && Ms(t) }); var i = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"]; e && i.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), Fy(i, function (e) { Fy(Is(t[e]), function (t) { t && (bs(t, "axisLabel"), bs(t.axisPointer, "label")) }) }), Fy(Is(t.parallel), function (t) { var e = t && t.parallelAxisDefault; bs(e, "axisLabel"), bs(e && e.axisPointer, "label") }), Fy(Is(t.calendar), function (t) { xs(t, "itemStyle"), bs(t, "dayLabel"), bs(t, "monthLabel"), bs(t, "yearLabel") }), Fy(Is(t.radar), function (t) { bs(t, "name") }), Fy(Is(t.geo), function (t) { Vy(t) && (Ss(t), Fy(Is(t.regions), function (t) { Ss(t) })) }), Fy(Is(t.timeline), function (t) { Ss(t), xs(t, "label"), xs(t, "itemStyle"), xs(t, "controlStyle", !0); var e = t.data; x(e) && f(e, function (t) { S(t) && (xs(t, "label"), xs(t, "itemStyle")) }) }), Fy(Is(t.toolbox), function (t) { xs(t, "iconStyle"), Fy(t.feature, function (t) { xs(t, "iconStyle") }) }), bs(Ts(t.axisPointer), "label"), bs(Ts(t.tooltip).axisPointer, "label") }, Wy = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]], Xy = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"], Uy = function (t, e) { Gy(t, e), t.series = Vn(t.series), f(t.series, function (t) { if (S(t)) { var e = t.type; if ("line" === e) null != t.clipOverflow && (t.clip = t.clipOverflow); else if ("pie" === e || "gauge" === e) null != t.clockWise && (t.clockwise = t.clockWise); else if ("gauge" === e) { var i = Cs(t, "pointer.color"); null != i && As(t, "itemStyle.color", i) } Ds(t) } }), t.dataRange && (t.visualMap = t.dataRange), f(Xy, function (e) { var i = t[e]; i && (x(i) || (i = [i]), f(i, function (t) { Ds(t) })) }) }, Yy = function (t) { var e = N(); t.eachSeries(function (t) { var i = t.get("stack"); if (i) { var n = e.get(i) || e.set(i, []), r = t.getData(), a = { stackResultDimension: r.getCalculationInfo("stackResultDimension"), stackedOverDimension: r.getCalculationInfo("stackedOverDimension"), stackedDimension: r.getCalculationInfo("stackedDimension"), stackedByDimension: r.getCalculationInfo("stackedByDimension"), isStackedByIndex: r.getCalculationInfo("isStackedByIndex"), data: r, seriesModel: t }; if (!a.stackedDimension || !a.isStackedByIndex && !a.stackedByDimension) return; n.length && r.setCalculationInfo("stackedOnSeries", n[n.length - 1].seriesModel), n.push(a) } }), e.each(ks) }, jy = Ps.prototype; jy.pure = !1, jy.persistent = !0, jy.getSource = function () { return this._source }; var qy = { arrayRows_column: { pure: !0, count: function () { return Math.max(0, this._data.length - this._source.startIndex) }, getItem: function (t) { return this._data[t + this._source.startIndex] }, appendData: Es }, arrayRows_row: { pure: !0, count: function () { var t = this._data[0]; return t ? Math.max(0, t.length - this._source.startIndex) : 0 }, getItem: function (t) { t += this._source.startIndex; for (var e = [], i = this._data, n = 0; n < i.length; n++) { var r = i[n]; e.push(r ? r[t] : null) } return e }, appendData: function () { throw new Error('Do not support appendData when set seriesLayoutBy: "row".') } }, objectRows: { pure: !0, count: Ls, getItem: Os, appendData: Es }, keyedColumns: { pure: !0, count: function () { var t = this._source.dimensionsDefine[0].name, e = this._data[t]; return e ? e.length : 0 }, getItem: function (t) { for (var e = [], i = this._source.dimensionsDefine, n = 0; n < i.length; n++) { var r = this._data[i[n].name]; e.push(r ? r[t] : null) } return e }, appendData: function (t) { var e = this._data; f(t, function (t, i) { for (var n = e[i] || (e[i] = []), r = 0; r < (t || []).length; r++)n.push(t[r]) }) } }, original: { count: Ls, getItem: Os, appendData: Es }, typedArray: { persistent: !1, pure: !0, count: function () { return this._data ? this._data.length / this._dimSize : 0 }, getItem: function (t, e) { t -= this._offset, e = e || []; for (var i = this._dimSize * t, n = 0; n < this._dimSize; n++)e[n] = this._data[i + n]; return e }, appendData: function (t) { kf && O(I(t), "Added data must be TypedArray if data in initialization is TypedArray"), this._data = t }, clean: function () { this._offset += this.count(), this._data = null } } }, Zy = { arrayRows: zs, objectRows: function (t, e, i, n) { return null != i ? t[n] : t }, keyedColumns: zs, original: function (t, e, i) { var n = Gn(t); return null != i && n instanceof Array ? n[i] : n }, typedArray: zs }, Ky = { arrayRows: Bs, objectRows: function (t, e) { return Rs(t[e], this._dimensionInfos[e]) }, keyedColumns: Bs, original: function (t, e, i, n) { var r = t && (null == t.value ? t : t.value); return !this._rawData.pure && Wn(t) && (this.hasItemOption = !0), Rs(r instanceof Array ? r[n] : r, this._dimensionInfos[e]) }, typedArray: function (t, e, i, n) { return t[n] } }, $y = /\{@(.+?)\}/g, Qy = { getDataParams: function (t, e) { var i = this.getData(e), n = this.getRawValue(t, e), r = i.getRawIndex(t), a = i.getName(t), o = i.getRawDataItem(t), s = i.getItemVisual(t, "color"), l = i.getItemVisual(t, "borderColor"), h = this.ecModel.getComponent("tooltip"), u = h && h.get("renderMode"), c = tr(u), d = this.mainType, f = "series" === d, p = i.userOutput; return { componentType: d, componentSubType: this.subType, componentIndex: this.componentIndex, seriesType: f ? this.subType : null, seriesIndex: this.seriesIndex, seriesId: f ? this.id : null, seriesName: f ? this.name : null, name: a, dataIndex: r, data: o, dataType: e, value: n, color: s, borderColor: l, dimensionNames: p ? p.dimensionNames : null, encode: p ? p.encode : null, marker: Do({ color: s, renderMode: c }), $vars: ["seriesName", "name", "value"] } }, getFormattedLabel: function (t, e, i, n, r) { e = e || "normal"; var a = this.getData(i), o = a.getItemModel(t), s = this.getDataParams(t, i); null != n && s.value instanceof Array && (s.value = s.value[n]); var l = o.get("normal" === e ? [r || "label", "formatter"] : [e, r || "label", "formatter"]); if ("function" == typeof l) return s.status = e, s.dimensionIndex = n, l(s); if ("string" == typeof l) { var h = Co(l, s); return h.replace($y, function (e, i) { var n = i.length; return "[" === i.charAt(0) && "]" === i.charAt(n - 1) && (i = +i.slice(1, n - 1)), Ns(a, t, i) }) } }, getRawValue: function (t, e) { return Ns(this.getData(e), t) }, formatTooltip: function () { } }, Jy = Hs.prototype; Jy.perform = function (t) { function e(t) { return !(t >= 1) && (t = 1), t } var i = this._upstream, n = t && t.skip; if (this._dirty && i) { var r = this.context; r.data = r.outputData = i.context.outputData } this.__pipeline && (this.__pipeline.currentTask = this); var a; this._plan && !n && (a = this._plan(this.context)); var o = e(this._modBy), s = this._modDataCount || 0, l = e(t && t.modBy), h = t && t.modDataCount || 0; (o !== l || s !== h) && (a = "reset"); var u; (this._dirty || "reset" === a) && (this._dirty = !1, u = Ws(this, n)), this._modBy = l, this._modDataCount = h; var c = t && t.step; if (i ? (kf && O(null != i._outputDueEnd), this._dueEnd = i._outputDueEnd) : (kf && O(!this._progress || this._count), this._dueEnd = this._count ? this._count(this.context) : 1 / 0), this._progress) { var d = this._dueIndex, f = Math.min(null != c ? this._dueIndex + c : 1 / 0, this._dueEnd); if (!n && (u || f > d)) { var p = this._progress; if (x(p)) for (var g = 0; g < p.length; g++)Gs(this, p[g], d, f, l, h); else Gs(this, p, d, f, l, h) } this._dueIndex = f; var v = null != this._settedOutputEnd ? this._settedOutputEnd : f; kf && O(v >= this._outputDueEnd), this._outputDueEnd = v } else this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd : this._dueEnd; return this.unfinished() }; var t_ = function () { function t() { return i > n ? n++ : null } function e() { var t = n % o * r + Math.ceil(n / o), e = n >= i ? null : a > t ? t : n; return n++, e } var i, n, r, a, o, s = { reset: function (l, h, u, c) { n = l, i = h, r = u, a = c, o = Math.ceil(a / r), s.next = r > 1 && a > 0 ? e : t } }; return s }(); Jy.dirty = function () { this._dirty = !0, this._onDirty && this._onDirty(this.context) }, Jy.unfinished = function () { return this._progress && this._dueIndex < this._dueEnd }, Jy.pipe = function (t) { kf && O(t && !t._disposed && t !== this), (this._downstream !== t || this._dirty) && (this._downstream = t, t._upstream = this, t.dirty()) }, Jy.dispose = function () { this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), this._dirty = !1, this._disposed = !0) }, Jy.getUpstream = function () { return this._upstream }, Jy.getDownstream = function () { return this._downstream }, Jy.setOutputEnd = function (t) { this._outputDueEnd = this._settedOutputEnd = t }; var e_ = Zn(), i_ = gy.extend({ type: "series.__base__", seriesIndex: 0, coordinateSystem: null, defaultOption: null, legendDataProvider: null, visualColorAccessPath: "itemStyle.color", visualBorderColorAccessPath: "itemStyle.borderColor", layoutMode: null, init: function (t, e, i) { this.seriesIndex = this.componentIndex, this.dataTask = Vs({ count: Ys, reset: js }), this.dataTask.context = { model: this }, this.mergeDefaultAndTheme(t, i), qo(this); var n = this.getInitialData(t, i); Zs(n, this), this.dataTask.context.data = n, kf && O(n, "getInitialData returned invalid data."), e_(this).dataBeforeProcessed = n, Xs(this) }, mergeDefaultAndTheme: function (t, e) { var i = this.layoutMode, n = i ? No(t) : {}, a = this.subType; gy.hasClass(a) && (a += "Series"), r(t, e.getTheme().get(this.subType)), r(t, this.getDefaultOption()), Hn(t, "label", ["show"]), this.fillDataTextStyle(t.data), i && Ro(t, n, i) }, mergeOption: function (t, e) { t = r(this.option, t, !0), this.fillDataTextStyle(t.data); var i = this.layoutMode; i && Ro(this.option, t, i), qo(this); var n = this.getInitialData(t, e); Zs(n, this), this.dataTask.dirty(), this.dataTask.context.data = n, e_(this).dataBeforeProcessed = n, Xs(this) }, fillDataTextStyle: function (t) { if (t && !I(t)) for (var e = ["show"], i = 0; i < t.length; i++)t[i] && t[i].label && Hn(t[i], "label", e) }, getInitialData: function () { }, appendData: function (t) { var e = this.getRawData(); e.appendData(t.data) }, getData: function (t) { var e = $s(this); if (e) { var i = e.context.data; return null == t ? i : i.getLinkedData(t) } return e_(this).data }, setData: function (t) { var e = $s(this); if (e) { var i = e.context; i.data !== t && e.modifyOutputEnd && e.setOutputEnd(t.count()), i.outputData = t, e !== this.dataTask && (i.data = t) } e_(this).data = t }, getSource: function () { return Yo(this) }, getRawData: function () { return e_(this).dataBeforeProcessed }, getBaseAxis: function () { var t = this.coordinateSystem; return t && t.getBaseAxis && t.getBaseAxis() }, formatTooltip: function (t, e, i, n) { function r(i) { function r(t, i) { var r = c.getDimensionInfo(i); if (r && r.otherDims.tooltip !== !1) { var d = r.type, f = "sub" + o.seriesIndex + "at" + u, p = Do({ color: y, type: "subItem", renderMode: n, markerId: f }), g = "string" == typeof p ? p : p.content, v = (a ? g + To(r.displayName || "-") + ": " : "") + To("ordinal" === d ? t + "" : "time" === d ? e ? "" : Po("yyyy/MM/dd hh:mm:ss", t) : Mo(t)); v && s.push(v), l && (h[f] = y, ++u) } } var a = g(i, function (t, e, i) { var n = c.getDimensionInfo(i); return t |= n && n.tooltip !== !1 && null != n.displayName }, 0), s = []; d.length ? f(d, function (e) { r(Ns(c, t, e), e) }) : f(i, r); var p = a ? l ? "\n" : "<br/>" : "", v = p + s.join(p || ", "); return { renderMode: n, content: v, style: h } } function a(t) { return { renderMode: n, content: To(Mo(t)), style: h } } var o = this; n = n || "html"; var s = "html" === n ? "<br/>" : "\n", l = "richText" === n, h = {}, u = 0, c = this.getData(), d = c.mapDimension("defaultedTooltip", !0), p = d.length, v = this.getRawValue(t), m = x(v), y = c.getItemVisual(t, "color"); S(y) && y.colorStops && (y = (y.colorStops[0] || {}).color), y = y || "transparent"; var _ = p > 1 || m && !p ? r(v) : a(p ? Ns(c, t, d[0]) : m ? v[0] : v), w = _.content, b = o.seriesIndex + "at" + u, M = Do({ color: y, type: "item", renderMode: n, markerId: b }); h[b] = y, ++u; var I = c.getName(t), T = this.name; Yn(this) || (T = ""), T = T ? To(T) + (e ? ": " : s) : ""; var C = "string" == typeof M ? M : M.content, A = e ? C + T + w : T + C + (I ? To(I) + ": " + w : w); return { html: A, markers: h } }, isAnimationEnabled: function () { if (Ef.node) return !1; var t = this.getShallow("animation"); return t && this.getData().count() > this.getShallow("animationThreshold") && (t = !1), t }, restoreData: function () { this.dataTask.dirty() }, getColorFromPalette: function (t, e, i) { var n = this.ecModel, r = _y.getColorFromPalette.call(this, t, e, i); return r || (r = n.getColorFromPalette(t, e, i)), r }, coordDimToDataDim: function (t) { return this.getRawData().mapDimension(t, !0) }, getProgressive: function () { return this.get("progressive") }, getProgressiveThreshold: function () { return this.get("progressiveThreshold") }, getAxisTooltipData: null, getTooltipPosition: null, pipeTask: null, preventIncremental: null, pipelineContext: null }); c(i_, Qy), c(i_, _y); var n_ = function () { this.group = new jp, this.uid = io("viewComponent") }; n_.prototype = { constructor: n_, init: function () { }, render: function () { }, dispose: function () { }, filterForExposedEvent: null }; var r_ = n_.prototype; r_.updateView = r_.updateLayout = r_.updateVisual = function () { }, nr(n_), sr(n_, { registerWhenExtend: !0 }); var a_ = function () { var t = Zn(); return function (e) { var i = t(e), n = e.pipelineContext, r = i.large, a = i.progressiveRender, o = i.large = n.large, s = i.progressiveRender = n.progressiveRender; return !!(r ^ o || a ^ s) && "reset" } }, o_ = Zn(), s_ = a_(); Qs.prototype = { type: "chart", init: function () { }, render: function () { }, highlight: function (t, e, i, n) { tl(t.getData(), n, "emphasis") }, downplay: function (t, e, i, n) { tl(t.getData(), n, "normal") }, remove: function () { this.group.removeAll() }, dispose: function () { }, incrementalPrepareRender: null, incrementalRender: null, updateTransform: null, filterForExposedEvent: null }; var l_ = Qs.prototype; l_.updateView = l_.updateLayout = l_.updateVisual = function (t, e, i, n) { this.render(t, e, i, n) }, nr(Qs, ["dispose"]), sr(Qs, { registerWhenExtend: !0 }), Qs.markUpdateMethod = function (t, e) { o_(t).updateMethod = e }; var h_ = { incrementalPrepareRender: { progress: function (t, e) { e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload) } }, render: { forceFirstProgress: !0, progress: function (t, e) { e.view.render(e.model, e.ecModel, e.api, e.payload) } } }, u_ = "\x00__throttleOriginMethod", c_ = "\x00__throttleRate", d_ = "\x00__throttleType", f_ = { createOnAllSeries: !0, performRawSeries: !0, reset: function (t, e) { var i = t.getData(), n = (t.visualColorAccessPath || "itemStyle.color").split("."), r = t.get(n) || t.getColorFromPalette(t.name, null, e.getSeriesCount()); i.setVisual("color", r); var a = (t.visualBorderColorAccessPath || "itemStyle.borderColor").split("."), o = t.get(a); if (i.setVisual("borderColor", o), !e.isSeriesFiltered(t)) { "function" != typeof r || r instanceof Tm || i.each(function (e) { i.setItemVisual(e, "color", r(t.getDataParams(e))) }); var s = function (t, e) { var i = t.getItemModel(e), r = i.get(n, !0), o = i.get(a, !0); null != r && t.setItemVisual(e, "color", r), null != o && t.setItemVisual(e, "borderColor", o) }; return { dataEach: i.hasItemOption ? s : null } } } }, p_ = { legend: { selector: { all: "全选", inverse: "反选" } }, toolbox: { brush: { title: { rect: "矩形选择", polygon: "圈选", lineX: "横向选择", lineY: "纵向选择", keep: "保持选择", clear: "清除选择" } }, dataView: { title: "数据视图", lang: ["数据视图", "关闭", "刷新"] }, dataZoom: { title: { zoom: "区域缩放", back: "区域缩放还原" } }, magicType: { title: { line: "切换为折线图", bar: "切换为柱状图", stack: "切换为堆叠", tiled: "切换为平铺" } }, restore: { title: "还原" }, saveAsImage: { title: "保存为图片", lang: ["右键另存为图片"] } }, series: { typeNames: { pie: "饼图", bar: "柱状图", line: "折线图", scatter: "散点图", effectScatter: "涟漪散点图", radar: "雷达图", tree: "树图", treemap: "矩形树图", boxplot: "箱型图", candlestick: "K线图", k: "K线图", heatmap: "热力图", map: "地图", parallel: "平行坐标图", lines: "线图", graph: "关系图", sankey: "桑基图", funnel: "漏斗图", gauge: "仪表盘图", pictorialBar: "象形柱图", themeRiver: "主题河流图", sunburst: "旭日图" } }, aria: { general: { withTitle: "这是一个关于“{title}”的图表。", withoutTitle: "这是一个图表," }, series: { single: { prefix: "", withName: "图表类型是{seriesType},表示{seriesName}。", withoutName: "图表类型是{seriesType}。" }, multiple: { prefix: "它由{seriesCount}个图表系列组成。", withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType},", withoutName: "第{seriesId}个系列是一个{seriesType},", separator: { middle: ";", end: "。" } } }, data: { allData: "其数据是——", partialData: "其中,前{displayCnt}项是——", withName: "{name}的数据是{value}", withoutName: "{value}", separator: { middle: ",", end: "" } } } }, g_ = function (t, e) { function i(t, e) { if ("string" != typeof t) return t; var i = t; return f(e, function (t, e) { i = i.replace(new RegExp("\\{\\s*" + e + "\\s*\\}", "g"), t) }), i } function n(t) { var e = o.get(t); if (null == e) { for (var i = t.split("."), n = p_.aria, r = 0; r < i.length; ++r)n = n[i[r]]; return n } return e } function r() { var t = e.getModel("title").option; return t && t.length && (t = t[0]), t && t.text } function a(t) { return p_.series.typeNames[t] || "自定义图" } var o = e.getModel("aria"); if (o.get("show")) { if (o.get("description")) return void t.setAttribute("aria-label", o.get("description")); var s = 0; e.eachSeries(function () { ++s }, this); var l, h = o.get("data.maxCount") || 10, u = o.get("series.maxCount") || 10, c = Math.min(s, u); if (!(1 > s)) { var d = r(); l = d ? i(n("general.withTitle"), { title: d }) : n("general.withoutTitle"); var p = [], g = s > 1 ? "series.multiple.prefix" : "series.single.prefix"; l += i(n(g), { seriesCount: s }), e.eachSeries(function (t, e) { if (c > e) { var r, o = t.get("name"), l = "series." + (s > 1 ? "multiple" : "single") + "."; r = n(o ? l + "withName" : l + "withoutName"), r = i(r, { seriesId: t.seriesIndex, seriesName: t.get("name"), seriesType: a(t.subType) }); var u = t.getData(); window.data = u, r += u.count() > h ? i(n("data.partialData"), { displayCnt: h }) : n("data.allData"); for (var d = [], f = 0; f < u.count(); f++)if (h > f) { var g = u.getName(f), v = Ns(u, f); d.push(i(n(g ? "data.withName" : "data.withoutName"), { name: g, value: v })) } r += d.join(n("data.separator.middle")) + n("data.separator.end"), p.push(r) } }), l += p.join(n("series.multiple.separator.middle")) + n("series.multiple.separator.end"), t.setAttribute("aria-label", l) } } }, v_ = Math.PI, m_ = function (t, e) { e = e || {}, s(e, { text: "loading", color: "#c23531", textColor: "#000", maskColor: "rgba(255, 255, 255, 0.8)", zlevel: 0 }); var i = new _m({ style: { fill: e.maskColor }, zlevel: e.zlevel, z: 1e4 }), n = new Mm({ shape: { startAngle: -v_ / 2, endAngle: -v_ / 2 + .1, r: 10 }, style: { stroke: e.color, lineCap: "round", lineWidth: 5 }, zlevel: e.zlevel, z: 10001 }), r = new _m({ style: { fill: "none", text: e.text, textPosition: "right", textDistance: 10, textFill: e.textColor }, zlevel: e.zlevel, z: 10001 }); n.animateShape(!0).when(1e3, { endAngle: 3 * v_ / 2 }).start("circularInOut"), n.animateShape(!0).when(1e3, { startAngle: 3 * v_ / 2 }).delay(300).start("circularInOut"); var a = new jp; return a.add(n), a.add(r), a.add(i), a.resize = function () { var e = t.getWidth() / 2, a = t.getHeight() / 2; n.setShape({ cx: e, cy: a }); var o = n.shape.r; r.setShape({ x: e - o, y: a - o, width: 2 * o, height: 2 * o }), i.setShape({ x: 0, y: 0, width: t.getWidth(), height: t.getHeight() }) }, a.resize(), a }, y_ = al.prototype; y_.restoreData = function (t, e) { t.restoreData(e), this._stageTaskMap.each(function (t) { var e = t.overallTask; e && e.dirty() }) }, y_.getPerformArgs = function (t, e) { if (t.__pipeline) { var i = this._pipelineMap.get(t.__pipeline.id), n = i.context, r = !e && i.progressiveEnabled && (!n || n.progressiveRender) && t.__idxInPipeline > i.blockIndex, a = r ? i.step : null, o = n && n.modDataCount, s = null != o ? Math.ceil(o / a) : null; return { step: a, modBy: s, modDataCount: o } } }, y_.getPipeline = function (t) { return this._pipelineMap.get(t) }, y_.updateStreamModes = function (t, e) { var i = this._pipelineMap.get(t.uid), n = t.getData(), r = n.count(), a = i.progressiveEnabled && e.incrementalPrepareRender && r >= i.threshold, o = t.get("large") && r >= t.get("largeThreshold"), s = "mod" === t.get("progressiveChunkMode") ? r : null; t.pipelineContext = i.context = { progressiveRender: a, modDataCount: s, large: o } }, y_.restorePipelines = function (t) { var e = this, i = e._pipelineMap = N(); t.eachSeries(function (t) { var n = t.getProgressive(), r = t.uid; i.set(r, { id: r, head: null, tail: null, threshold: t.getProgressiveThreshold(), progressiveEnabled: n && !(t.preventIncremental && t.preventIncremental()), blockIndex: -1, step: Math.round(n || 700), count: 0 }), ml(e, t, t.dataTask) }) }, y_.prepareStageTasks = function () { var t = this._stageTaskMap, e = this.ecInstance.getModel(), i = this.api; f(this._allHandlers, function (n) { var r = t.get(n.uid) || t.set(n.uid, []); n.reset && sl(this, n, r, e, i), n.overallReset && ll(this, n, r, e, i) }, this) }, y_.prepareView = function (t, e, i, n) { var r = t.renderTask, a = r.context; a.model = e, a.ecModel = i, a.api = n, r.__block = !t.incrementalPrepareRender, ml(this, e, r) }, y_.performDataProcessorTasks = function (t, e) { ol(this, this._dataProcessorHandlers, t, e, { block: !0 }) }, y_.performVisualTasks = function (t, e, i) { ol(this, this._visualHandlers, t, e, i) }, y_.performSeriesTasks = function (t) { var e; t.eachSeries(function (t) { e |= t.dataTask.perform() }), this.unfinished |= e }, y_.plan = function () { this._pipelineMap.each(function (t) { var e = t.tail; do { if (e.__block) { t.blockIndex = e.__idxInPipeline; break } e = e.getUpstream() } while (e) }) }; var __ = y_.updatePayload = function (t, e) { "remain" !== e && (t.context.payload = e) }, x_ = gl(0); al.wrapStageHandler = function (t, e) { return w(t) && (t = { overallReset: t, seriesType: yl(t) }), t.uid = io("stageHandler"), e && (t.visualType = e), t }; var w_, b_ = {}, S_ = {}; _l(b_, Py), _l(S_, cs), b_.eachSeriesByType = b_.eachRawSeriesByType = function (t) { w_ = t }, b_.eachComponent = function (t) { "series" === t.mainType && t.subType && (w_ = t.subType) }; var M_ = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"], I_ = { color: M_, colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], M_] }, T_ = "#eee", C_ = function () { return { axisLine: { lineStyle: { color: T_ } }, axisTick: { lineStyle: { color: T_ } }, axisLabel: { textStyle: { color: T_ } }, splitLine: { lineStyle: { type: "dashed", color: "#aaa" } }, splitArea: { areaStyle: { color: T_ } } } }, A_ = ["#dd6b66", "#759aa0", "#e69d87", "#8dc1a9", "#ea7e53", "#eedd78", "#73a373", "#73b9bc", "#7289ab", "#91ca8c", "#f49f42"], D_ = { color: A_, backgroundColor: "#333", tooltip: { axisPointer: { lineStyle: { color: T_ }, crossStyle: { color: T_ } } }, legend: { textStyle: { color: T_ } }, textStyle: { color: T_ }, title: { textStyle: { color: T_ } }, toolbox: { iconStyle: { normal: { borderColor: T_ } } }, dataZoom: { textStyle: { color: T_ } }, visualMap: { textStyle: { color: T_ } }, timeline: { lineStyle: { color: T_ }, itemStyle: { normal: { color: A_[1] } }, label: { normal: { textStyle: { color: T_ } } }, controlStyle: { normal: { color: T_, borderColor: T_ } } }, timeAxis: C_(), logAxis: C_(), valueAxis: C_(), categoryAxis: C_(), line: { symbol: "circle" }, graph: { color: A_ }, gauge: { title: { textStyle: { color: T_ } } }, candlestick: { itemStyle: { normal: { color: "#FD1050", color0: "#0CF49B", borderColor: "#FD1050", borderColor0: "#0CF49B" } } } }; D_.categoryAxis.splitLine.show = !1, gy.extend({ type: "dataset", defaultOption: { seriesLayoutBy: Cy, sourceHeader: null, dimensions: null, source: null }, optionUpdated: function () { Uo(this) } }), n_.extend({ type: "dataset" }); var k_ = Hr.extend({ type: "ellipse", shape: { cx: 0, cy: 0, rx: 0, ry: 0 }, buildPath: function (t, e) { var i = .5522848, n = e.cx, r = e.cy, a = e.rx, o = e.ry, s = a * i, l = o * i; t.moveTo(n - a, r), t.bezierCurveTo(n - a, r - l, n - s, r - o, n, r - o), t.bezierCurveTo(n + s, r - o, n + a, r - l, n + a, r), t.bezierCurveTo(n + a, r + l, n + s, r + o, n, r + o), t.bezierCurveTo(n - s, r + o, n - a, r + l, n - a, r), t.closePath() } }), P_ = /[\s,]+/; wl.prototype.parse = function (t, e) { e = e || {}; var i = xl(t); if (!i) throw new Error("Illegal svg"); var n = new jp; this._root = n; var r = i.getAttribute("viewBox") || "", a = parseFloat(i.getAttribute("width") || e.width), o = parseFloat(i.getAttribute("height") || e.height); isNaN(a) && (a = null), isNaN(o) && (o = null), Il(i, n, null, !0); for (var s = i.firstChild; s;)this._parseNode(s, n), s = s.nextSibling; var l, h; if (r) { var u = E(r).split(P_); u.length >= 4 && (l = { x: parseFloat(u[0] || 0), y: parseFloat(u[1] || 0), width: parseFloat(u[2]), height: parseFloat(u[3]) }) } if (l && null != a && null != o && (h = Dl(l, a, o), !e.ignoreViewBox)) { var c = n; n = new jp, n.add(c), c.scale = h.scale.slice(), c.position = h.position.slice() } return e.ignoreRootClip || null == a || null == o || n.setClipPath(new _m({ shape: { x: 0, y: 0, width: a, height: o } })), { root: n, width: a, height: o, viewBoxRect: l, viewBoxTransform: h } }, wl.prototype._parseNode = function (t, e) { var i = t.nodeName.toLowerCase(); "defs" === i ? this._isDefine = !0 : "text" === i && (this._isText = !0); var n; if (this._isDefine) { var r = O_[i]; if (r) { var a = r.call(this, t), o = t.getAttribute("id"); o && (this._defs[o] = a) } } else { var r = L_[i]; r && (n = r.call(this, t, e), e.add(n)) } for (var s = t.firstChild; s;)1 === s.nodeType && this._parseNode(s, n), 3 === s.nodeType && this._isText && this._parseText(s, n), s = s.nextSibling; "defs" === i ? this._isDefine = !1 : "text" === i && (this._isText = !1) }, wl.prototype._parseText = function (t, e) { if (1 === t.nodeType) { var i = t.getAttribute("dx") || 0, n = t.getAttribute("dy") || 0; this._textX += parseFloat(i), this._textY += parseFloat(n) } var r = new sm({ style: { text: t.textContent, transformText: !0 }, position: [this._textX || 0, this._textY || 0] }); Sl(e, r), Il(t, r, this._defs); var a = r.style.fontSize; a && 9 > a && (r.style.fontSize = 9, r.scale = r.scale || [1, 1], r.scale[0] *= a / 9, r.scale[1] *= a / 9); var o = r.getBoundingRect(); return this._textX += o.width, e.add(r), r }; var L_ = {
  22. g: function (t, e) { var i = new jp; return Sl(e, i), Il(t, i, this._defs), i }, rect: function (t, e) { var i = new _m; return Sl(e, i), Il(t, i, this._defs), i.setShape({ x: parseFloat(t.getAttribute("x") || 0), y: parseFloat(t.getAttribute("y") || 0), width: parseFloat(t.getAttribute("width") || 0), height: parseFloat(t.getAttribute("height") || 0) }), i }, circle: function (t, e) { var i = new lm; return Sl(e, i), Il(t, i, this._defs), i.setShape({ cx: parseFloat(t.getAttribute("cx") || 0), cy: parseFloat(t.getAttribute("cy") || 0), r: parseFloat(t.getAttribute("r") || 0) }), i }, line: function (t, e) { var i = new wm; return Sl(e, i), Il(t, i, this._defs), i.setShape({ x1: parseFloat(t.getAttribute("x1") || 0), y1: parseFloat(t.getAttribute("y1") || 0), x2: parseFloat(t.getAttribute("x2") || 0), y2: parseFloat(t.getAttribute("y2") || 0) }), i }, ellipse: function (t, e) { var i = new k_; return Sl(e, i), Il(t, i, this._defs), i.setShape({ cx: parseFloat(t.getAttribute("cx") || 0), cy: parseFloat(t.getAttribute("cy") || 0), rx: parseFloat(t.getAttribute("rx") || 0), ry: parseFloat(t.getAttribute("ry") || 0) }), i }, polygon: function (t, e) { var i = t.getAttribute("points"); i && (i = Ml(i)); var n = new gm({ shape: { points: i || [] } }); return Sl(e, n), Il(t, n, this._defs), n }, polyline: function (t, e) { var i = new Hr; Sl(e, i), Il(t, i, this._defs); var n = t.getAttribute("points"); n && (n = Ml(n)); var r = new vm({ shape: { points: n || [] } }); return r }, image: function (t, e) { var i = new Sn; return Sl(e, i), Il(t, i, this._defs), i.setStyle({ image: t.getAttribute("xlink:href"), x: t.getAttribute("x"), y: t.getAttribute("y"), width: t.getAttribute("width"), height: t.getAttribute("height") }), i }, text: function (t, e) {
  23. var i = t.getAttribute("x") || 0, n = t.getAttribute("y") || 0, r = t.getAttribute("dx") || 0, a = t.getAttribute("dy") || 0; this._textX = parseFloat(i) + parseFloat(r), this._textY = parseFloat(n) + parseFloat(a);
  24. var o = new jp; return Sl(e, o), Il(t, o, this._defs), o
  25. }, tspan: function (t, e) { var i = t.getAttribute("x"), n = t.getAttribute("y"); null != i && (this._textX = parseFloat(i)), null != n && (this._textY = parseFloat(n)); var r = t.getAttribute("dx") || 0, a = t.getAttribute("dy") || 0, o = new jp; return Sl(e, o), Il(t, o, this._defs), this._textX += r, this._textY += a, o }, path: function (t, e) { var i = t.getAttribute("d") || "", n = Ur(i); return Sl(e, n), Il(t, n, this._defs), n }
  26. }, O_ = { lineargradient: function (t) { var e = parseInt(t.getAttribute("x1") || 0, 10), i = parseInt(t.getAttribute("y1") || 0, 10), n = parseInt(t.getAttribute("x2") || 10, 10), r = parseInt(t.getAttribute("y2") || 0, 10), a = new Cm(e, i, n, r); return bl(t, a), a }, radialgradient: function () { } }, E_ = { fill: "fill", stroke: "stroke", "stroke-width": "lineWidth", opacity: "opacity", "fill-opacity": "fillOpacity", "stroke-opacity": "strokeOpacity", "stroke-dasharray": "lineDash", "stroke-dashoffset": "lineDashOffset", "stroke-linecap": "lineCap", "stroke-linejoin": "lineJoin", "stroke-miterlimit": "miterLimit", "font-family": "fontFamily", "font-size": "fontSize", "font-style": "fontStyle", "font-weight": "fontWeight", "text-align": "textAlign", "alignment-baseline": "textBaseline" }, z_ = /url\(\s*#(.*?)\)/, B_ = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g, R_ = /([^\s:;]+)\s*:\s*([^:;]+)/g, N_ = N(), F_ = { registerMap: function (t, e, i) { var n; return x(e) ? n = e : e.svg ? n = [{ type: "svg", source: e.svg, specialAreas: e.specialAreas }] : (e.geoJson && !e.features && (i = e.specialAreas, e = e.geoJson), n = [{ type: "geoJSON", source: e, specialAreas: i }]), f(n, function (t) { var e = t.type; "geoJson" === e && (e = t.type = "geoJSON"); var i = V_[e]; kf && O(i, "Illegal map type: " + e), i(t) }), N_.set(t, n) }, retrieveMap: function (t) { return N_.get(t) } }, V_ = { geoJSON: function (t) { var e = t.source; t.geoJSON = b(e) ? "undefined" != typeof JSON && JSON.parse ? JSON.parse(e) : new Function("return (" + e + ");")() : e }, svg: function (t) { t.svgXML = xl(t.source) } }, H_ = O, G_ = f, W_ = w, X_ = S, U_ = gy.parseClassType, Y_ = "4.5.0", j_ = { zrender: "4.1.2" }, q_ = 1, Z_ = 1e3, K_ = 800, $_ = 900, Q_ = 5e3, J_ = 1e3, tx = 1100, ex = 2e3, ix = 3e3, nx = 3500, rx = 4e3, ax = 5e3, ox = { PROCESSOR: { FILTER: Z_, SERIES_FILTER: K_, STATISTIC: Q_ }, VISUAL: { LAYOUT: J_, PROGRESSIVE_LAYOUT: tx, GLOBAL: ex, CHART: ix, POST_CHART_LAYOUT: nx, COMPONENT: rx, BRUSH: ax } }, sx = "__flagInMainProcess", lx = "__optionUpdated", hx = /^[a-zA-Z0-9_]+$/; Pl.prototype.on = kl("on", !0), Pl.prototype.off = kl("off", !0), Pl.prototype.one = kl("one", !0), c(Pl, ip); var ux = Ll.prototype; ux._onframe = function () { if (!this._disposed) { var t = this._scheduler; if (this[lx]) { var e = this[lx].silent; this[sx] = !0, El(this), cx.update.call(this), this[sx] = !1, this[lx] = !1, Nl.call(this, e), Fl.call(this, e) } else if (t.unfinished) { var i = q_, n = this._model, r = this._api; t.unfinished = !1; do { var a = +new Date; t.performSeriesTasks(n), t.performDataProcessorTasks(n), Bl(this, n), t.performVisualTasks(n), Ul(this, this._model, r, "remain"), i -= +new Date - a } while (i > 0 && t.unfinished); t.unfinished || this._zr.flush() } } }, ux.getDom = function () { return this._dom }, ux.getZr = function () { return this._zr }, ux.setOption = function (t, e, i) { if (kf && H_(!this[sx], "`setOption` should not be called during main process."), this._disposed) return void jl(this.id); var n; if (X_(e) && (i = e.lazyUpdate, n = e.silent, e = e.notMerge), this[sx] = !0, !this._model || e) { var r = new fs(this._api), a = this._theme, o = this._model = new Py; o.scheduler = this._scheduler, o.init(null, null, a, r) } this._model.setOption(t, vx), i ? (this[lx] = { silent: n }, this[sx] = !1) : (El(this), cx.update.call(this), this._zr.flush(), this[lx] = !1, this[sx] = !1, Nl.call(this, n), Fl.call(this, n)) }, ux.setTheme = function () { console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0") }, ux.getModel = function () { return this._model }, ux.getOption = function () { return this._model && this._model.getOption() }, ux.getWidth = function () { return this._zr.getWidth() }, ux.getHeight = function () { return this._zr.getHeight() }, ux.getDevicePixelRatio = function () { return this._zr.painter.dpr || window.devicePixelRatio || 1 }, ux.getRenderedCanvas = function (t) { if (Ef.canvasSupported) { t = t || {}, t.pixelRatio = t.pixelRatio || 1, t.backgroundColor = t.backgroundColor || this._model.get("backgroundColor"); var e = this._zr; return e.painter.getRenderedCanvas(t) } }, ux.getSvgDataUrl = function () { if (Ef.svgSupported) { var t = this._zr, e = t.storage.getDisplayList(); return f(e, function (t) { t.stopAnimation(!0) }), t.painter.pathToDataUrl() } }, ux.getDataURL = function (t) { if (this._disposed) return void jl(this.id); t = t || {}; var e = t.excludeComponents, i = this._model, n = [], r = this; G_(e, function (t) { i.eachComponent({ mainType: t }, function (t) { var e = r._componentsMap[t.__viewId]; e.group.ignore || (n.push(e), e.group.ignore = !0) }) }); var a = "svg" === this._zr.painter.getType() ? this.getSvgDataUrl() : this.getRenderedCanvas(t).toDataURL("image/" + (t && t.type || "png")); return G_(n, function (t) { t.group.ignore = !1 }), a }, ux.getConnectedDataURL = function (t) { if (this._disposed) return void jl(this.id); if (Ef.canvasSupported) { var e = this.group, i = Math.min, r = Math.max, a = 1 / 0; if (Sx[e]) { var o = a, s = a, l = -a, h = -a, u = [], c = t && t.pixelRatio || 1; f(bx, function (a) { if (a.group === e) { var c = a.getRenderedCanvas(n(t)), d = a.getDom().getBoundingClientRect(); o = i(d.left, o), s = i(d.top, s), l = r(d.right, l), h = r(d.bottom, h), u.push({ dom: c, left: d.left, top: d.top }) } }), o *= c, s *= c, l *= c, h *= c; var d = l - o, p = h - s, g = Uf(); g.width = d, g.height = p; var v = zn(g); return t.connectedBackgroundColor && v.add(new _m({ shape: { x: 0, y: 0, width: d, height: p }, style: { fill: t.connectedBackgroundColor } })), G_(u, function (t) { var e = new Sn({ style: { x: t.left * c - o, y: t.top * c - s, image: t.dom } }); v.add(e) }), v.refreshImmediately(), g.toDataURL("image/" + (t && t.type || "png")) } return this.getDataURL(t) } }, ux.convertToPixel = _(Ol, "convertToPixel"), ux.convertFromPixel = _(Ol, "convertFromPixel"), ux.containPixel = function (t, e) { if (this._disposed) return void jl(this.id); var i, n = this._model; return t = Kn(n, t), f(t, function (t, n) { n.indexOf("Models") >= 0 && f(t, function (t) { var r = t.coordinateSystem; if (r && r.containPoint) i |= !!r.containPoint(e); else if ("seriesModels" === n) { var a = this._chartsMap[t.__viewId]; a && a.containPoint ? i |= a.containPoint(e, t) : kf && console.warn(n + ": " + (a ? "The found component do not support containPoint." : "No view mapping to the found component.")) } else kf && console.warn(n + ": containPoint is not supported") }, this) }, this), !!i }, ux.getVisual = function (t, e) { var i = this._model; t = Kn(i, t, { defaultMainType: "series" }); var n = t.seriesModel; kf && (n || console.warn("There is no specified seires model")); var r = n.getData(), a = t.hasOwnProperty("dataIndexInside") ? t.dataIndexInside : t.hasOwnProperty("dataIndex") ? r.indexOfRawIndex(t.dataIndex) : null; return null != a ? r.getItemVisual(a, e) : r.getVisual(e) }, ux.getViewOfComponentModel = function (t) { return this._componentsMap[t.__viewId] }, ux.getViewOfSeriesModel = function (t) { return this._chartsMap[t.__viewId] }; var cx = { prepareAndUpdate: function (t) { El(this), cx.update.call(this, t) }, update: function (t) { var e = this._model, i = this._api, n = this._zr, r = this._coordSysMgr, a = this._scheduler; if (e) { a.restoreData(e, t), a.performSeriesTasks(e), r.create(e, i), a.performDataProcessorTasks(e, t), Bl(this, e), r.update(e, i), Gl(e), a.performVisualTasks(e, t), Wl(this, e, i, t); var o = e.get("backgroundColor") || "transparent"; if (Ef.canvasSupported) n.setBackgroundColor(o); else { var s = qe(o); o = ni(s, "rgb"), 0 === s[3] && (o = "transparent") } Yl(e, i) } }, updateTransform: function (t) { var e = this._model, i = this, n = this._api; if (e) { var r = []; e.eachComponent(function (a, o) { var s = i.getViewOfComponentModel(o); if (s && s.__alive) if (s.updateTransform) { var l = s.updateTransform(o, e, n, t); l && l.update && r.push(s) } else r.push(s) }); var a = N(); e.eachSeries(function (r) { var o = i._chartsMap[r.__viewId]; if (o.updateTransform) { var s = o.updateTransform(r, e, n, t); s && s.update && a.set(r.uid, 1) } else a.set(r.uid, 1) }), Gl(e), this._scheduler.performVisualTasks(e, t, { setDirty: !0, dirtyMap: a }), Ul(i, e, n, t, a), Yl(e, this._api) } }, updateView: function (t) { var e = this._model; e && (Qs.markUpdateMethod(t, "updateView"), Gl(e), this._scheduler.performVisualTasks(e, t, { setDirty: !0 }), Wl(this, this._model, this._api, t), Yl(e, this._api)) }, updateVisual: function (t) { cx.update.call(this, t) }, updateLayout: function (t) { cx.update.call(this, t) } }; ux.resize = function (t) { if (kf && H_(!this[sx], "`resize` should not be called during main process."), this._disposed) return void jl(this.id); this._zr.resize(t); var e = this._model; if (this._loadingFX && this._loadingFX.resize(), e) { var i = e.resetOption("media"), n = t && t.silent; this[sx] = !0, i && El(this), cx.update.call(this), this[sx] = !1, Nl.call(this, n), Fl.call(this, n) } }, ux.showLoading = function (t, e) { if (this._disposed) return void jl(this.id); if (X_(t) && (e = t, t = ""), t = t || "default", this.hideLoading(), !xx[t]) return void (kf && console.warn("Loading effects " + t + " not exists.")); var i = xx[t](this._api, e), n = this._zr; this._loadingFX = i, n.add(i) }, ux.hideLoading = function () { return this._disposed ? void jl(this.id) : (this._loadingFX && this._zr.remove(this._loadingFX), void (this._loadingFX = null)) }, ux.makeActionFromEvent = function (t) { var e = o({}, t); return e.type = px[t.type], e }, ux.dispatchAction = function (t, e) { if (this._disposed) return void jl(this.id); if (X_(e) || (e = { silent: !!e }), fx[t.type] && this._model) { if (this[sx]) return void this._pendingActions.push(t); Rl.call(this, t, e.silent), e.flush ? this._zr.flush(!0) : e.flush !== !1 && Ef.browser.weChat && this._throttledZrFlush(), Nl.call(this, e.silent), Fl.call(this, e.silent) } }, ux.appendData = function (t) { if (this._disposed) return void jl(this.id); var e = t.seriesIndex, i = this.getModel(), n = i.getSeriesByIndex(e); kf && H_(t.data && n), n.appendData(t), this._scheduler.unfinished = !0 }, ux.on = kl("on", !1), ux.off = kl("off", !1), ux.one = kl("one", !1); var dx = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"]; ux._initEvents = function () { G_(dx, function (t) { var e = function (e) { var i, n = this.getModel(), r = e.target, a = "globalout" === t; if (a) i = {}; else if (r && null != r.dataIndex) { var s = r.dataModel || n.getSeriesByIndex(r.seriesIndex); i = s && s.getDataParams(r.dataIndex, r.dataType, r) || {} } else r && r.eventData && (i = o({}, r.eventData)); if (i) { var l = i.componentType, h = i.componentIndex; ("markLine" === l || "markPoint" === l || "markArea" === l) && (l = "series", h = i.seriesIndex); var u = l && null != h && n.getComponent(l, h), c = u && this["series" === u.mainType ? "_chartsMap" : "_componentsMap"][u.__viewId]; kf && (a || u && c || console.warn("model or view can not be found by params")), i.event = e, i.type = t, this._ecEventProcessor.eventInfo = { targetEl: r, packedEvent: i, model: u, view: c }, this.trigger(t, i) } }; e.zrEventfulCallAtLast = !0, this._zr.on(t, e, this) }, this), G_(px, function (t, e) { this._messageCenter.on(e, function (t) { this.trigger(e, t) }, this) }, this) }, ux.isDisposed = function () { return this._disposed }, ux.clear = function () { return this._disposed ? void jl(this.id) : void this.setOption({ series: [] }, !0) }, ux.dispose = function () { if (this._disposed) return void jl(this.id); this._disposed = !0, Qn(this.getDom(), Tx, ""); var t = this._api, e = this._model; G_(this._componentsViews, function (i) { i.dispose(e, t) }), G_(this._chartsViews, function (i) { i.dispose(e, t) }), this._zr.dispose(), delete bx[this.id] }, c(Ll, ip), Ql.prototype = { constructor: Ql, normalizeQuery: function (t) { var e = {}, i = {}, n = {}; if (b(t)) { var r = U_(t); e.mainType = r.main || null, e.subType = r.sub || null } else { var a = ["Index", "Name", "Id"], o = { name: 1, dataIndex: 1, dataType: 1 }; f(t, function (t, r) { for (var s = !1, l = 0; l < a.length; l++) { var h = a[l], u = r.lastIndexOf(h); if (u > 0 && u === r.length - h.length) { var c = r.slice(0, u); "data" !== c && (e.mainType = c, e[h.toLowerCase()] = t, s = !0) } } o.hasOwnProperty(r) && (i[r] = t, s = !0), s || (n[r] = t) }) } return { cptQuery: e, dataQuery: i, otherQuery: n } }, filter: function (t, e) { function i(t, e, i, n) { return null == t[i] || e[n || i] === t[i] } var n = this.eventInfo; if (!n) return !0; var r = n.targetEl, a = n.packedEvent, o = n.model, s = n.view; if (!o || !s) return !0; var l = e.cptQuery, h = e.dataQuery; return i(l, o, "mainType") && i(l, o, "subType") && i(l, o, "index", "componentIndex") && i(l, o, "name") && i(l, o, "id") && i(h, a, "name") && i(h, a, "dataIndex") && i(h, a, "dataType") && (!s.filterForExposedEvent || s.filterForExposedEvent(t, e.otherQuery, r, a)) }, afterTrigger: function () { this.eventInfo = null } }; var fx = {}, px = {}, gx = [], vx = [], mx = [], yx = [], _x = {}, xx = {}, bx = {}, Sx = {}, Mx = new Date - 0, Ix = new Date - 0, Tx = "_echarts_instance_", Cx = ih; ph(ex, f_), sh(Uy), lh($_, Yy), vh("default", m_), uh({ type: "highlight", event: "highlight", update: "highlight" }, V), uh({ type: "downplay", event: "downplay", update: "downplay" }, V), oh("light", I_), oh("dark", D_); var Ax = {}; Ih.prototype = { constructor: Ih, add: function (t) { return this._add = t, this }, update: function (t) { return this._update = t, this }, remove: function (t) { return this._remove = t, this }, execute: function () { var t, e = this._old, i = this._new, n = {}, r = {}, a = [], o = []; for (Th(e, n, a, "_oldKeyGetter", this), Th(i, r, o, "_newKeyGetter", this), t = 0; t < e.length; t++) { var s = a[t], l = r[s]; if (null != l) { var h = l.length; h ? (1 === h && (r[s] = null), l = l.shift()) : r[s] = null, this._update && this._update(l, t) } else this._remove && this._remove(t) } for (var t = 0; t < o.length; t++) { var s = o[t]; if (r.hasOwnProperty(s)) { var l = r[s]; if (null == l) continue; if (l.length) for (var u = 0, h = l.length; h > u; u++)this._add && this._add(l[u]); else this._add && this._add(l) } } } }; var Dx = N(["tooltip", "label", "itemName", "itemId", "seriesName"]), kx = S, Px = "undefined", Lx = -1, Ox = "e\x00\x00", Ex = { "float": typeof Float64Array === Px ? Array : Float64Array, "int": typeof Int32Array === Px ? Array : Int32Array, ordinal: Array, number: Array, time: Array }, zx = typeof Uint32Array === Px ? Array : Uint32Array, Bx = typeof Int32Array === Px ? Array : Int32Array, Rx = typeof Uint16Array === Px ? Array : Uint16Array, Nx = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_rawData", "_chunkSize", "_chunkCount", "_dimValueGetter", "_count", "_rawCount", "_nameDimIdx", "_idDimIdx"], Fx = ["_extent", "_approximateExtent", "_rawExtent"], Vx = function (t, e) { t = t || ["x", "y"]; for (var i = {}, n = [], r = {}, a = 0; a < t.length; a++) { var o = t[a]; b(o) && (o = { name: o }); var s = o.name; o.type = o.type || "float", o.coordDim || (o.coordDim = s, o.coordDimIndex = 0), o.otherDims = o.otherDims || {}, n.push(s), i[s] = o, o.index = a, o.createInvertedIndices && (r[s] = []) } this.dimensions = n, this._dimensionInfos = i, this.hostModel = e, this.dataType, this._indices = null, this._count = 0, this._rawCount = 0, this._storage = {}, this._nameList = [], this._idList = [], this._optionModels = [], this._visual = {}, this._layout = {}, this._itemVisuals = [], this.hasItemVisual = {}, this._itemLayouts = [], this._graphicEls = [], this._chunkSize = 1e5, this._chunkCount = 0, this._rawData, this._rawExtent = {}, this._extent = {}, this._approximateExtent = {}, this._dimensionsSummary = Ch(this), this._invertedIndicesMap = r, this._calculationInfo = {}, this.userOutput = this._dimensionsSummary.userOutput }, Hx = Vx.prototype; Hx.type = "list", Hx.hasItemOption = !0, Hx.getDimension = function (t) { return ("number" == typeof t || !isNaN(t) && !this._dimensionInfos.hasOwnProperty(t)) && (t = this.dimensions[t]), t }, Hx.getDimensionInfo = function (t) { return this._dimensionInfos[this.getDimension(t)] }, Hx.getDimensionsOnCoord = function () { return this._dimensionsSummary.dataDimsOnCoord.slice() }, Hx.mapDimension = function (t, e) { var i = this._dimensionsSummary; if (null == e) return i.encodeFirstDimNotExtra[t]; var n = i.encode[t]; return e === !0 ? (n || []).slice() : n && n[e] }, Hx.initData = function (t, e, i) { var n = Xo.isInstance(t) || d(t); if (n && (t = new Ps(t, this.dimensions.length)), kf && !n && ("function" != typeof t.getItem || "function" != typeof t.count)) throw new Error("Inavlid data provider."); this._rawData = t, this._storage = {}, this._indices = null, this._nameList = e || [], this._idList = [], this._nameRepeatCount = {}, i || (this.hasItemOption = !1), this.defaultDimValueGetter = Ky[this._rawData.getSource().sourceFormat], this._dimValueGetter = i = i || this.defaultDimValueGetter, this._dimValueGetterArrayRows = Ky.arrayRows, this._rawExtent = {}, this._initDataFromProvider(0, t.count()), t.pure && (this.hasItemOption = !1) }, Hx.getProvider = function () { return this._rawData }, Hx.appendData = function (t) { kf && O(!this._indices, "appendData can only be called on raw data."); var e = this._rawData, i = this.count(); e.appendData(t); var n = e.count(); e.persistent || (n += i), this._initDataFromProvider(i, n) }, Hx.appendValues = function (t, e) { for (var i = this._chunkSize, n = this._storage, r = this.dimensions, a = r.length, o = this._rawExtent, s = this.count(), l = s + Math.max(t.length, e ? e.length : 0), h = this._chunkCount, u = 0; a > u; u++) { var c = r[u]; o[c] || (o[c] = Xh()), n[c] || (n[c] = []), Eh(n, this._dimensionInfos[c], i, h, l), this._chunkCount = n[c].length } for (var d = new Array(a), f = s; l > f; f++) { for (var p = f - s, g = Math.floor(f / i), v = f % i, m = 0; a > m; m++) { var c = r[m], y = this._dimValueGetterArrayRows(t[p] || d, c, p, m); n[c][g][v] = y; var _ = o[c]; y < _[0] && (_[0] = y), y > _[1] && (_[1] = y) } e && (this._nameList[f] = e[p]) } this._rawCount = this._count = l, this._extent = {}, zh(this) }, Hx._initDataFromProvider = function (t, e) { if (!(t >= e)) { for (var i, n = this._chunkSize, r = this._rawData, a = this._storage, o = this.dimensions, s = o.length, l = this._dimensionInfos, h = this._nameList, u = this._idList, c = this._rawExtent, d = this._nameRepeatCount = {}, f = this._chunkCount, p = 0; s > p; p++) { var g = o[p]; c[g] || (c[g] = Xh()); var v = l[g]; 0 === v.otherDims.itemName && (i = this._nameDimIdx = p), 0 === v.otherDims.itemId && (this._idDimIdx = p), a[g] || (a[g] = []), Eh(a, v, n, f, e), this._chunkCount = a[g].length } for (var m = new Array(s), y = t; e > y; y++) { m = r.getItem(y, m); for (var _ = Math.floor(y / n), x = y % n, w = 0; s > w; w++) { var g = o[w], b = a[g][_], S = this._dimValueGetter(m, g, y, w); b[x] = S; var M = c[g]; S < M[0] && (M[0] = S), S > M[1] && (M[1] = S) } if (!r.pure) { var I = h[y]; if (m && null == I) if (null != m.name) h[y] = I = m.name; else if (null != i) { var T = o[i], C = a[T][_]; if (C) { I = C[x]; var A = l[T].ordinalMeta; A && A.categories.length && (I = A.categories[I]) } } var D = null == m ? null : m.id; null == D && null != I && (d[I] = d[I] || 0, D = I, d[I] > 0 && (D += "__ec__" + d[I]), d[I]++), null != D && (u[y] = D) } } !r.persistent && r.clean && r.clean(), this._rawCount = this._count = e, this._extent = {}, zh(this) } }, Hx.count = function () { return this._count }, Hx.getIndices = function () { var t, e = this._indices; if (e) { var i = e.constructor, n = this._count; if (i === Array) { t = new i(n); for (var r = 0; n > r; r++)t[r] = e[r] } else t = new i(e.buffer, 0, n) } else for (var i = Ph(this), t = new i(this.count()), r = 0; r < t.length; r++)t[r] = r; return t }, Hx.get = function (t, e) { if (!(e >= 0 && e < this._count)) return 0 / 0; var i = this._storage; if (!i[t]) return 0 / 0; e = this.getRawIndex(e); var n = Math.floor(e / this._chunkSize), r = e % this._chunkSize, a = i[t][n], o = a[r]; return o }, Hx.getByRawIndex = function (t, e) { if (!(e >= 0 && e < this._rawCount)) return 0 / 0; var i = this._storage[t]; if (!i) return 0 / 0; var n = Math.floor(e / this._chunkSize), r = e % this._chunkSize, a = i[n]; return a[r] }, Hx._getFast = function (t, e) { var i = Math.floor(e / this._chunkSize), n = e % this._chunkSize, r = this._storage[t][i]; return r[n] }, Hx.getValues = function (t, e) { var i = []; x(t) || (e = t, t = this.dimensions); for (var n = 0, r = t.length; r > n; n++)i.push(this.get(t[n], e)); return i }, Hx.hasValue = function (t) { for (var e = this._dimensionsSummary.dataDimsOnCoord, i = 0, n = e.length; n > i; i++)if (isNaN(this.get(e[i], t))) return !1; return !0 }, Hx.getDataExtent = function (t) { t = this.getDimension(t); var e = this._storage[t], i = Xh(); if (!e) return i; var n, r = this.count(), a = !this._indices; if (a) return this._rawExtent[t].slice(); if (n = this._extent[t]) return n.slice(); n = i; for (var o = n[0], s = n[1], l = 0; r > l; l++) { var h = this._getFast(t, this.getRawIndex(l)); o > h && (o = h), h > s && (s = h) } return n = [o, s], this._extent[t] = n, n }, Hx.getApproximateExtent = function (t) { return t = this.getDimension(t), this._approximateExtent[t] || this.getDataExtent(t) }, Hx.setApproximateExtent = function (t, e) { e = this.getDimension(e), this._approximateExtent[e] = t.slice() }, Hx.getCalculationInfo = function (t) { return this._calculationInfo[t] }, Hx.setCalculationInfo = function (t, e) { kx(t) ? o(this._calculationInfo, t) : this._calculationInfo[t] = e }, Hx.getSum = function (t) { var e = this._storage[t], i = 0; if (e) for (var n = 0, r = this.count(); r > n; n++) { var a = this.get(t, n); isNaN(a) || (i += a) } return i }, Hx.getMedian = function (t) { var e = []; this.each(t, function (t) { isNaN(t) || e.push(t) }); var i = [].concat(e).sort(function (t, e) { return t - e }), n = this.count(); return 0 === n ? 0 : n % 2 === 1 ? i[(n - 1) / 2] : (i[n / 2] + i[n / 2 - 1]) / 2 }, Hx.rawIndexOf = function (t, e) { var i = t && this._invertedIndicesMap[t]; if (kf && !i) throw new Error("Do not supported yet"); var n = i[e]; return null == n || isNaN(n) ? Lx : n }, Hx.indexOfName = function (t) { for (var e = 0, i = this.count(); i > e; e++)if (this.getName(e) === t) return e; return -1 }, Hx.indexOfRawIndex = function (t) { if (t >= this._rawCount || 0 > t) return -1; if (!this._indices) return t; var e = this._indices, i = e[t]; if (null != i && i < this._count && i === t) return t; for (var n = 0, r = this._count - 1; r >= n;) { var a = (n + r) / 2 | 0; if (e[a] < t) n = a + 1; else { if (!(e[a] > t)) return a; r = a - 1 } } return -1 }, Hx.indicesOfNearest = function (t, e, i) { var n = this._storage, r = n[t], a = []; if (!r) return a; null == i && (i = 1 / 0); for (var o = Number.MAX_VALUE, s = -1, l = 0, h = this.count(); h > l; l++) { var u = e - this.get(t, l), c = Math.abs(u); i >= u && o >= c && ((o > c || u >= 0 && 0 > s) && (o = c, s = u, a.length = 0), a.push(l)) } return a }, Hx.getRawIndex = Rh, Hx.getRawDataItem = function (t) { if (this._rawData.persistent) return this._rawData.getItem(this.getRawIndex(t)); for (var e = [], i = 0; i < this.dimensions.length; i++) { var n = this.dimensions[i]; e.push(this.get(n, t)) } return e }, Hx.getName = function (t) { var e = this.getRawIndex(t); return this._nameList[e] || Bh(this, this._nameDimIdx, e) || "" }, Hx.getId = function (t) { return Fh(this, this.getRawIndex(t)) }, Hx.each = function (t, e, i, n) { if (this._count) { "function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this, t = p(Vh(t), this.getDimension, this), kf && Hh(this, t); for (var r = t.length, a = 0; a < this.count(); a++)switch (r) { case 0: e.call(i, a); break; case 1: e.call(i, this.get(t[0], a), a); break; case 2: e.call(i, this.get(t[0], a), this.get(t[1], a), a); break; default: for (var o = 0, s = []; r > o; o++)s[o] = this.get(t[o], a); s[o] = a, e.apply(i, s) } } }, Hx.filterSelf = function (t, e, i, n) { if (this._count) { "function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this, t = p(Vh(t), this.getDimension, this), kf && Hh(this, t); for (var r = this.count(), a = Ph(this), o = new a(r), s = [], l = t.length, h = 0, u = t[0], c = 0; r > c; c++) { var d, f = this.getRawIndex(c); if (0 === l) d = e.call(i, c); else if (1 === l) { var g = this._getFast(u, f); d = e.call(i, g, c) } else { for (var v = 0; l > v; v++)s[v] = this._getFast(u, f); s[v] = c, d = e.apply(i, s) } d && (o[h++] = f) } return r > h && (this._indices = o), this._count = h, this._extent = {}, this.getRawIndex = this._indices ? Nh : Rh, this } }, Hx.selectRange = function (t) { if (this._count) { var e = []; for (var i in t) t.hasOwnProperty(i) && e.push(i); kf && Hh(this, e); var n = e.length; if (n) { var r = this.count(), a = Ph(this), o = new a(r), s = 0, l = e[0], h = t[l][0], u = t[l][1], c = !1; if (!this._indices) { var d = 0; if (1 === n) { for (var f = this._storage[e[0]], p = 0; p < this._chunkCount; p++)for (var g = f[p], v = Math.min(this._count - p * this._chunkSize, this._chunkSize), m = 0; v > m; m++) { var y = g[m]; (y >= h && u >= y || isNaN(y)) && (o[s++] = d), d++ } c = !0 } else if (2 === n) { for (var f = this._storage[l], _ = this._storage[e[1]], x = t[e[1]][0], w = t[e[1]][1], p = 0; p < this._chunkCount; p++)for (var g = f[p], b = _[p], v = Math.min(this._count - p * this._chunkSize, this._chunkSize), m = 0; v > m; m++) { var y = g[m], S = b[m]; (y >= h && u >= y || isNaN(y)) && (S >= x && w >= S || isNaN(S)) && (o[s++] = d), d++ } c = !0 } } if (!c) if (1 === n) for (var m = 0; r > m; m++) { var M = this.getRawIndex(m), y = this._getFast(l, M); (y >= h && u >= y || isNaN(y)) && (o[s++] = M) } else for (var m = 0; r > m; m++) { for (var I = !0, M = this.getRawIndex(m), p = 0; n > p; p++) { var T = e[p], y = this._getFast(i, M); (y < t[T][0] || y > t[T][1]) && (I = !1) } I && (o[s++] = this.getRawIndex(m)) } return r > s && (this._indices = o), this._count = s, this._extent = {}, this.getRawIndex = this._indices ? Nh : Rh, this } } }, Hx.mapArray = function (t, e, i, n) { "function" == typeof t && (n = i, i = e, e = t, t = []), i = i || n || this; var r = []; return this.each(t, function () { r.push(e && e.apply(this, arguments)) }, i), r }, Hx.map = function (t, e, i, n) { i = i || n || this, t = p(Vh(t), this.getDimension, this), kf && Hh(this, t); var r = Gh(this, t); r._indices = this._indices, r.getRawIndex = r._indices ? Nh : Rh; for (var a = r._storage, o = [], s = this._chunkSize, l = t.length, h = this.count(), u = [], c = r._rawExtent, d = 0; h > d; d++) { for (var f = 0; l > f; f++)u[f] = this.get(t[f], d); u[l] = d; var g = e && e.apply(i, u); if (null != g) { "object" != typeof g && (o[0] = g, g = o); for (var v = this.getRawIndex(d), m = Math.floor(v / s), y = v % s, _ = 0; _ < g.length; _++) { var x = t[_], w = g[_], b = c[x], S = a[x]; S && (S[m][y] = w), w < b[0] && (b[0] = w), w > b[1] && (b[1] = w) } } } return r }, Hx.downSample = function (t, e, i, n) { for (var r = Gh(this, [t]), a = r._storage, o = [], s = Math.floor(1 / e), l = a[t], h = this.count(), u = this._chunkSize, c = r._rawExtent[t], d = new (Ph(this))(h), f = 0, p = 0; h > p; p += s) { s > h - p && (s = h - p, o.length = s); for (var g = 0; s > g; g++) { var v = this.getRawIndex(p + g), m = Math.floor(v / u), y = v % u; o[g] = l[m][y] } var _ = i(o), x = this.getRawIndex(Math.min(p + n(o, _) || 0, h - 1)), w = Math.floor(x / u), b = x % u; l[w][b] = _, _ < c[0] && (c[0] = _), _ > c[1] && (c[1] = _), d[f++] = x } return r._count = f, r._indices = d, r.getRawIndex = Nh, r }, Hx.getItemModel = function (t) { var e = this.hostModel; return new Ja(this.getRawDataItem(t), e, e && e.ecModel) }, Hx.diff = function (t) { var e = this; return new Ih(t ? t.getIndices() : [], this.getIndices(), function (e) { return Fh(t, e) }, function (t) { return Fh(e, t) }) }, Hx.getVisual = function (t) { var e = this._visual; return e && e[t] }, Hx.setVisual = function (t, e) { if (kx(t)) for (var i in t) t.hasOwnProperty(i) && this.setVisual(i, t[i]); else this._visual = this._visual || {}, this._visual[t] = e }, Hx.setLayout = function (t, e) { if (kx(t)) for (var i in t) t.hasOwnProperty(i) && this.setLayout(i, t[i]); else this._layout[t] = e }, Hx.getLayout = function (t) { return this._layout[t] }, Hx.getItemLayout = function (t) { return this._itemLayouts[t] }, Hx.setItemLayout = function (t, e, i) { this._itemLayouts[t] = i ? o(this._itemLayouts[t] || {}, e) : e }, Hx.clearItemLayouts = function () { this._itemLayouts.length = 0 }, Hx.getItemVisual = function (t, e, i) { var n = this._itemVisuals[t], r = n && n[e]; return null != r || i ? r : this.getVisual(e) }, Hx.setItemVisual = function (t, e, i) { var n = this._itemVisuals[t] || {}, r = this.hasItemVisual; if (this._itemVisuals[t] = n, kx(e)) for (var a in e) e.hasOwnProperty(a) && (n[a] = e[a], r[a] = !0); else n[e] = i, r[e] = !0 }, Hx.clearAllVisual = function () { this._visual = {}, this._itemVisuals = [], this.hasItemVisual = {} }; var Gx = function (t) { t.seriesIndex = this.seriesIndex, t.dataIndex = this.dataIndex, t.dataType = this.dataType }; Hx.setItemGraphicEl = function (t, e) { var i = this.hostModel; e && (e.dataIndex = t, e.dataType = this.dataType, e.seriesIndex = i && i.seriesIndex, "group" === e.type && e.traverse(Gx, e)), this._graphicEls[t] = e }, Hx.getItemGraphicEl = function (t) { return this._graphicEls[t] }, Hx.eachItemGraphicEl = function (t, e) { f(this._graphicEls, function (i, n) { i && t && t.call(e, i, n) }) }, Hx.cloneShallow = function (t) { if (!t) { var e = p(this.dimensions, this.getDimensionInfo, this); t = new Vx(e, this.hostModel) } if (t._storage = this._storage, Oh(t, this), this._indices) { var i = this._indices.constructor; t._indices = new i(this._indices) } else t._indices = null; return t.getRawIndex = t._indices ? Nh : Rh, t }, Hx.wrapMethod = function (t, e) { var i = this[t]; "function" == typeof i && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(t), this[t] = function () { var t = i.apply(this, arguments); return e.apply(this, [t].concat(P(arguments))) }) }, Hx.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "map"], Hx.CHANGABLE_METHODS = ["filterSelf", "selectRange"]; var Wx = function (t, e) { return e = e || {}, Uh(e.coordDimensions || [], t, { dimsDef: e.dimensionsDefine || t.dimensionsDefine, encodeDef: e.encodeDefine || t.encodeDefine, dimCount: e.dimensionsCount, generateCoord: e.generateCoord, generateCoordCount: e.generateCoordCount }) }; tu.prototype.parse = function (t) { return t }, tu.prototype.getSetting = function (t) { return this._setting[t] }, tu.prototype.contain = function (t) { var e = this._extent; return t >= e[0] && t <= e[1] }, tu.prototype.normalize = function (t) { var e = this._extent; return e[1] === e[0] ? .5 : (t - e[0]) / (e[1] - e[0]) }, tu.prototype.scale = function (t) { var e = this._extent; return t * (e[1] - e[0]) + e[0] }, tu.prototype.unionExtent = function (t) { var e = this._extent; t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]) }, tu.prototype.unionExtentFromData = function (t, e) { this.unionExtent(t.getApproximateExtent(e)) }, tu.prototype.getExtent = function () { return this._extent.slice() }, tu.prototype.setExtent = function (t, e) { var i = this._extent; isNaN(t) || (i[0] = t), isNaN(e) || (i[1] = e) }, tu.prototype.isBlank = function () { return this._isBlank }, tu.prototype.setBlank = function (t) { this._isBlank = t }, tu.prototype.getLabel = null, nr(tu), sr(tu, { registerWhenExtend: !0 }), eu.createByAxisModel = function (t) { var e = t.option, i = e.data, n = i && p(i, nu); return new eu({ categories: n, needCollect: !n, deduplication: e.dedplication !== !1 }) }; var Xx = eu.prototype; Xx.getOrdinal = function (t) { return iu(this).get(t) }, Xx.parseAndCollect = function (t) { var e, i = this._needCollect; if ("string" != typeof t && !i) return t; if (i && !this._deduplication) return e = this.categories.length, this.categories[e] = t, e; var n = iu(this); return e = n.get(t), null == e && (i ? (e = this.categories.length, this.categories[e] = t, n.set(t, e)) : e = 0 / 0), e }; var Ux = tu.prototype, Yx = tu.extend({ type: "ordinal", init: function (t, e) { (!t || x(t)) && (t = new eu({ categories: t })), this._ordinalMeta = t, this._extent = e || [0, t.categories.length - 1] }, parse: function (t) { return "string" == typeof t ? this._ordinalMeta.getOrdinal(t) : Math.round(t) }, contain: function (t) { return t = this.parse(t), Ux.contain.call(this, t) && null != this._ordinalMeta.categories[t] }, normalize: function (t) { return Ux.normalize.call(this, this.parse(t)) }, scale: function (t) { return Math.round(Ux.scale.call(this, t)) }, getTicks: function () { for (var t = [], e = this._extent, i = e[0]; i <= e[1];)t.push(i), i++; return t }, getLabel: function (t) { return this.isBlank() ? void 0 : this._ordinalMeta.categories[t] }, count: function () { return this._extent[1] - this._extent[0] + 1 }, unionExtentFromData: function (t, e) { this.unionExtent(t.getApproximateExtent(e)) }, getOrdinalMeta: function () { return this._ordinalMeta }, niceTicks: V, niceExtent: V }); Yx.create = function () { return new Yx }; var jx = lo, qx = lo, Zx = tu.extend({ type: "interval", _interval: 0, _intervalPrecision: 2, setExtent: function (t, e) { var i = this._extent; isNaN(t) || (i[0] = parseFloat(t)), isNaN(e) || (i[1] = parseFloat(e)) }, unionExtent: function (t) { var e = this._extent; t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), Zx.prototype.setExtent.call(this, e[0], e[1]) }, getInterval: function () { return this._interval }, setInterval: function (t) { this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = au(t) }, getTicks: function () { return lu(this._interval, this._extent, this._niceExtent, this._intervalPrecision) }, getLabel: function (t, e) { if (null == t) return ""; var i = e && e.precision; return null == i ? i = co(t) || 0 : "auto" === i && (i = this._intervalPrecision), t = qx(t, i, !0), Mo(t) }, niceTicks: function (t, e, i) { t = t || 5; var n = this._extent, r = n[1] - n[0]; if (isFinite(r)) { 0 > r && (r = -r, n.reverse()); var a = ru(n, t, e, i); this._intervalPrecision = a.intervalPrecision, this._interval = a.interval, this._niceExtent = a.niceTickExtent } }, niceExtent: function (t) { var e = this._extent; if (e[0] === e[1]) if (0 !== e[0]) { var i = e[0]; t.fixMax ? e[0] -= i / 2 : (e[1] += i / 2, e[0] -= i / 2) } else e[1] = 1; var n = e[1] - e[0]; isFinite(n) || (e[0] = 0, e[1] = 1), this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval); var r = this._interval; t.fixMin || (e[0] = qx(Math.floor(e[0] / r) * r)), t.fixMax || (e[1] = qx(Math.ceil(e[1] / r) * r)) } }); Zx.create = function () { return new Zx }; var Kx = "__ec_stack_", $x = .5, Qx = "undefined" != typeof Float32Array ? Float32Array : Array, Jx = { seriesType: "bar", plan: a_(), reset: function (t) { function e(t, e) { for (var i, c = t.count, d = new Qx(2 * c), f = new Qx(c), p = [], g = [], v = 0, m = 0; null != (i = t.next());)g[h] = e.get(o, i), g[1 - h] = e.get(s, i), p = n.dataToPoint(g, null, p), d[v++] = p[0], d[v++] = p[1], f[m++] = i; e.setLayout({ largePoints: d, largeDataIndices: f, barWidth: u, valueAxisStart: _u(r, a, !1), valueAxisHorizontal: l }) } if (mu(t) && yu(t)) { var i = t.getData(), n = t.coordinateSystem, r = n.getBaseAxis(), a = n.getOtherAxis(r), o = i.mapDimension(a.dim), s = i.mapDimension(r.dim), l = a.isHorizontal(), h = l ? 0 : 1, u = gu(fu([t]), r, t).width; return u > $x || (u = $x), { progress: e } } } }, tw = Zx.prototype, ew = Math.ceil, iw = Math.floor, nw = 1e3, rw = 60 * nw, aw = 60 * rw, ow = 24 * aw, sw = function (t, e, i, n) { for (; n > i;) { var r = i + n >>> 1; t[r][1] < e ? i = r + 1 : n = r } return i }, lw = Zx.extend({ type: "time", getLabel: function (t) { var e = this._stepLvl, i = new Date(t); return Po(e[0], i, this.getSetting("useUTC")) }, niceExtent: function (t) { var e = this._extent; if (e[0] === e[1] && (e[0] -= ow, e[1] += ow), e[1] === -1 / 0 && 1 / 0 === e[0]) { var i = new Date; e[1] = +new Date(i.getFullYear(), i.getMonth(), i.getDate()), e[0] = e[1] - ow } this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval); var n = this._interval; t.fixMin || (e[0] = lo(iw(e[0] / n) * n)), t.fixMax || (e[1] = lo(ew(e[1] / n) * n)) }, niceTicks: function (t, e, i) { t = t || 10; var n = this._extent, r = n[1] - n[0], a = r / t; null != e && e > a && (a = e), null != i && a > i && (a = i); var o = hw.length, s = sw(hw, a, 0, o), l = hw[Math.min(s, o - 1)], h = l[1]; if ("year" === l[0]) { var u = r / h, c = xo(u / t, !0); h *= c } var d = this.getSetting("useUTC") ? 0 : 60 * new Date(+n[0] || +n[1]).getTimezoneOffset() * 1e3, f = [Math.round(ew((n[0] - d) / h) * h + d), Math.round(iw((n[1] - d) / h) * h + d)]; su(f, n), this._stepLvl = l, this._interval = h, this._niceExtent = f }, parse: function (t) { return +mo(t) } }); f(["contain", "normalize"], function (t) { lw.prototype[t] = function (e) { return tw[t].call(this, this.parse(e)) } }); var hw = [["hh:mm:ss", nw], ["hh:mm:ss", 5 * nw], ["hh:mm:ss", 10 * nw], ["hh:mm:ss", 15 * nw], ["hh:mm:ss", 30 * nw], ["hh:mm\nMM-dd", rw], ["hh:mm\nMM-dd", 5 * rw], ["hh:mm\nMM-dd", 10 * rw], ["hh:mm\nMM-dd", 15 * rw], ["hh:mm\nMM-dd", 30 * rw], ["hh:mm\nMM-dd", aw], ["hh:mm\nMM-dd", 2 * aw], ["hh:mm\nMM-dd", 6 * aw], ["hh:mm\nMM-dd", 12 * aw], ["MM-dd\nyyyy", ow], ["MM-dd\nyyyy", 2 * ow], ["MM-dd\nyyyy", 3 * ow], ["MM-dd\nyyyy", 4 * ow], ["MM-dd\nyyyy", 5 * ow], ["MM-dd\nyyyy", 6 * ow], ["week", 7 * ow], ["MM-dd\nyyyy", 10 * ow], ["week", 14 * ow], ["week", 21 * ow], ["month", 31 * ow], ["week", 42 * ow], ["month", 62 * ow], ["week", 70 * ow], ["quarter", 95 * ow], ["month", 31 * ow * 4], ["month", 31 * ow * 5], ["half-year", 380 * ow / 2], ["month", 31 * ow * 8], ["month", 31 * ow * 10], ["year", 380 * ow]];
  27. lw.create = function (t) { return new lw({ useUTC: t.ecModel.get("useUTC") }) }; var uw = tu.prototype, cw = Zx.prototype, dw = co, fw = lo, pw = Math.floor, gw = Math.ceil, vw = Math.pow, mw = Math.log, yw = tu.extend({ type: "log", base: 10, $constructor: function () { tu.apply(this, arguments), this._originalScale = new Zx }, getTicks: function () { var t = this._originalScale, e = this._extent, i = t.getExtent(); return p(cw.getTicks.call(this), function (n) { var r = lo(vw(this.base, n)); return r = n === e[0] && t.__fixMin ? xu(r, i[0]) : r, r = n === e[1] && t.__fixMax ? xu(r, i[1]) : r }, this) }, getLabel: cw.getLabel, scale: function (t) { return t = uw.scale.call(this, t), vw(this.base, t) }, setExtent: function (t, e) { var i = this.base; t = mw(t) / mw(i), e = mw(e) / mw(i), cw.setExtent.call(this, t, e) }, getExtent: function () { var t = this.base, e = uw.getExtent.call(this); e[0] = vw(t, e[0]), e[1] = vw(t, e[1]); var i = this._originalScale, n = i.getExtent(); return i.__fixMin && (e[0] = xu(e[0], n[0])), i.__fixMax && (e[1] = xu(e[1], n[1])), e }, unionExtent: function (t) { this._originalScale.unionExtent(t); var e = this.base; t[0] = mw(t[0]) / mw(e), t[1] = mw(t[1]) / mw(e), uw.unionExtent.call(this, t) }, unionExtentFromData: function (t, e) { this.unionExtent(t.getApproximateExtent(e)) }, niceTicks: function (t) { t = t || 10; var e = this._extent, i = e[1] - e[0]; if (!(1 / 0 === i || 0 >= i)) { var n = yo(i), r = t / i * n; for (.5 >= r && (n *= 10); !isNaN(n) && Math.abs(n) < 1 && Math.abs(n) > 0;)n *= 10; var a = [lo(gw(e[0] / n) * n), lo(pw(e[1] / n) * n)]; this._interval = n, this._niceExtent = a } }, niceExtent: function (t) { cw.niceExtent.call(this, t); var e = this._originalScale; e.__fixMin = t.fixMin, e.__fixMax = t.fixMax } }); f(["contain", "normalize"], function (t) { yw.prototype[t] = function (e) { return e = mw(e) / mw(this.base), uw[t].call(this, e) } }), yw.create = function () { return new yw }; var _w = { getMin: function (t) { var e = this.option, i = t || null == e.rangeStart ? e.min : e.rangeStart; return this.axis && null != i && "dataMin" !== i && "function" != typeof i && !C(i) && (i = this.axis.scale.parse(i)), i }, getMax: function (t) { var e = this.option, i = t || null == e.rangeEnd ? e.max : e.rangeEnd; return this.axis && null != i && "dataMax" !== i && "function" != typeof i && !C(i) && (i = this.axis.scale.parse(i)), i }, getNeedCrossZero: function () { var t = this.option; return null != t.rangeStart || null != t.rangeEnd ? !1 : !t.scale }, getCoordSysModel: V, setRange: function (t, e) { this.option.rangeStart = t, this.option.rangeEnd = e }, resetRange: function () { this.option.rangeStart = this.option.rangeEnd = null } }, xw = ea({ type: "triangle", shape: { cx: 0, cy: 0, width: 0, height: 0 }, buildPath: function (t, e) { var i = e.cx, n = e.cy, r = e.width / 2, a = e.height / 2; t.moveTo(i, n - a), t.lineTo(i + r, n + a), t.lineTo(i - r, n + a), t.closePath() } }), ww = ea({ type: "diamond", shape: { cx: 0, cy: 0, width: 0, height: 0 }, buildPath: function (t, e) { var i = e.cx, n = e.cy, r = e.width / 2, a = e.height / 2; t.moveTo(i, n - a), t.lineTo(i + r, n), t.lineTo(i, n + a), t.lineTo(i - r, n), t.closePath() } }), bw = ea({ type: "pin", shape: { x: 0, y: 0, width: 0, height: 0 }, buildPath: function (t, e) { var i = e.x, n = e.y, r = e.width / 5 * 3, a = Math.max(r, e.height), o = r / 2, s = o * o / (a - o), l = n - a + o + s, h = Math.asin(s / o), u = Math.cos(h) * o, c = Math.sin(h), d = Math.cos(h), f = .6 * o, p = .7 * o; t.moveTo(i - u, l + s), t.arc(i, l, o, Math.PI - h, 2 * Math.PI + h), t.bezierCurveTo(i + u - c * f, l + s + d * f, i, n - p, i, n), t.bezierCurveTo(i, n - p, i - u + c * f, l + s + d * f, i - u, l + s), t.closePath() } }), Sw = ea({ type: "arrow", shape: { x: 0, y: 0, width: 0, height: 0 }, buildPath: function (t, e) { var i = e.height, n = e.width, r = e.x, a = e.y, o = n / 3 * 2; t.moveTo(r, a), t.lineTo(r + o, a + i), t.lineTo(r, a + i / 4 * 3), t.lineTo(r - o, a + i), t.lineTo(r, a), t.closePath() } }), Mw = { line: wm, rect: _m, roundRect: _m, square: _m, circle: lm, diamond: ww, pin: bw, arrow: Sw, triangle: xw }, Iw = { line: function (t, e, i, n, r) { r.x1 = t, r.y1 = e + n / 2, r.x2 = t + i, r.y2 = e + n / 2 }, rect: function (t, e, i, n, r) { r.x = t, r.y = e, r.width = i, r.height = n }, roundRect: function (t, e, i, n, r) { r.x = t, r.y = e, r.width = i, r.height = n, r.r = Math.min(i, n) / 4 }, square: function (t, e, i, n, r) { var a = Math.min(i, n); r.x = t, r.y = e, r.width = a, r.height = a }, circle: function (t, e, i, n, r) { r.cx = t + i / 2, r.cy = e + n / 2, r.r = Math.min(i, n) / 2 }, diamond: function (t, e, i, n, r) { r.cx = t + i / 2, r.cy = e + n / 2, r.width = i, r.height = n }, pin: function (t, e, i, n, r) { r.x = t + i / 2, r.y = e + n / 2, r.width = i, r.height = n }, arrow: function (t, e, i, n, r) { r.x = t + i / 2, r.y = e + n / 2, r.width = i, r.height = n }, triangle: function (t, e, i, n, r) { r.cx = t + i / 2, r.cy = e + n / 2, r.width = i, r.height = n } }, Tw = {}; f(Mw, function (t, e) { Tw[e] = new t }); var Cw = ea({ type: "symbol", shape: { symbolType: "", x: 0, y: 0, width: 0, height: 0 }, calculateTextPosition: function (t, e, i) { var n = Ui(t, e, i), r = this.shape; return r && "pin" === r.symbolType && "inside" === e.textPosition && (n.y = i.y + .4 * i.height), n }, buildPath: function (t, e, i) { var n = e.symbolType; if ("none" !== n) { var r = Tw[n]; r || (n = "rect", r = Tw[n]), Iw[n](e.x, e.y, e.width, e.height, r.shape), r.buildPath(t, r.shape, i) } } }), Aw = { isDimensionStacked: Zh, enableDataStack: qh, getStackedDimension: Kh }, Dw = (Object.freeze || Object)({ createList: Eu, getLayoutRect: Bo, dataStack: Aw, createScale: zu, mixinAxisModelCommonMethods: Bu, completeDimensions: Uh, createDimensions: Wx, createSymbol: Ou }), kw = 1e-8; Fu.prototype = { constructor: Fu, properties: null, getBoundingRect: function () { var t = this._rect; if (t) return t; for (var e = Number.MAX_VALUE, i = [e, e], n = [-e, -e], r = [], a = [], o = this.geometries, s = 0; s < o.length; s++)if ("polygon" === o[s].type) { var l = o[s].exterior; br(l, r, a), oe(i, i, r), se(n, n, a) } return 0 === s && (i[0] = i[1] = n[0] = n[1] = 0), this._rect = new xi(i[0], i[1], n[0] - i[0], n[1] - i[1]) }, contain: function (t) { var e = this.getBoundingRect(), i = this.geometries; if (!e.contain(t[0], t[1])) return !1; t: for (var n = 0, r = i.length; r > n; n++)if ("polygon" === i[n].type) { var a = i[n].exterior, o = i[n].interiors; if (Nu(a, t[0], t[1])) { for (var s = 0; s < (o ? o.length : 0); s++)if (Nu(o[s])) continue t; return !0 } } return !1 }, transformTo: function (t, e, i, n) { var r = this.getBoundingRect(), a = r.width / r.height; i ? n || (n = i / a) : i = a * n; for (var o = new xi(t, e, i, n), s = r.calculateTransform(o), l = this.geometries, h = 0; h < l.length; h++)if ("polygon" === l[h].type) { for (var u = l[h].exterior, c = l[h].interiors, d = 0; d < u.length; d++)ae(u[d], u[d], s); for (var f = 0; f < (c ? c.length : 0); f++)for (var d = 0; d < c[f].length; d++)ae(c[f][d], c[f][d], s) } r = this._rect, r.copy(o), this.center = [r.x + r.width / 2, r.y + r.height / 2] }, cloneShallow: function (t) { null == t && (t = this.name); var e = new Fu(t, this.geometries, this.center); return e._rect = this._rect, e.transformTo = null, e } }; var Pw = function (t) { return Vu(t), p(v(t.features, function (t) { return t.geometry && t.properties && t.geometry.coordinates.length > 0 }), function (t) { var e = t.properties, i = t.geometry, n = i.coordinates, r = []; "Polygon" === i.type && r.push({ type: "polygon", exterior: n[0], interiors: n.slice(1) }), "MultiPolygon" === i.type && f(n, function (t) { t[0] && r.push({ type: "polygon", exterior: t[0], interiors: t.slice(1) }) }); var a = new Fu(e.name, r, e.cp); return a.properties = e, a }) }, Lw = Zn(), Ow = [0, 1], Ew = function (t, e, i) { this.dim = t, this.scale = e, this._extent = i || [0, 0], this.inverse = !1, this.onBand = !1 }; Ew.prototype = { constructor: Ew, contain: function (t) { var e = this._extent, i = Math.min(e[0], e[1]), n = Math.max(e[0], e[1]); return t >= i && n >= t }, containData: function (t) { return this.contain(this.dataToCoord(t)) }, getExtent: function () { return this._extent.slice() }, getPixelPrecision: function (t) { return fo(t || this.scale.getExtent(), this._extent) }, setExtent: function (t, e) { var i = this._extent; i[0] = t, i[1] = e }, dataToCoord: function (t, e) { var i = this._extent, n = this.scale; return t = n.normalize(t), this.onBand && "ordinal" === n.type && (i = i.slice(), ic(i, n.count())), oo(t, Ow, i, e) }, coordToData: function (t, e) { var i = this._extent, n = this.scale; this.onBand && "ordinal" === n.type && (i = i.slice(), ic(i, n.count())); var r = oo(t, i, Ow, e); return this.scale.scale(r) }, pointToData: function () { }, getTicksCoords: function (t) { t = t || {}; var e = t.tickModel || this.getTickModel(), i = Wu(this, e), n = i.ticks, r = p(n, function (t) { return { coord: this.dataToCoord(t), tickValue: t } }, this), a = e.get("alignWithLabel"); return nc(this, r, a, t.clamp), r }, getViewLabels: function () { return Gu(this).labels }, getLabelModel: function () { return this.model.getModel("axisLabel") }, getTickModel: function () { return this.model.getModel("axisTick") }, getBandWidth: function () { var t = this._extent, e = this.scale.getExtent(), i = e[1] - e[0] + (this.onBand ? 1 : 0); 0 === i && (i = 1); var n = Math.abs(t[1] - t[0]); return Math.abs(n) / i }, isHorizontal: null, getRotate: null, calculateCategoryInterval: function () { return Qu(this) } }; var zw = Pw, Bw = {}; f(["map", "each", "filter", "indexOf", "inherits", "reduce", "filter", "bind", "curry", "isArray", "isString", "isObject", "isFunction", "extend", "defaults", "clone", "merge"], function (t) { Bw[t] = qf[t] }); var Rw = {}; f(["extendShape", "extendPath", "makePath", "makeImage", "mergePath", "resizePath", "createIcon", "setHoverStyle", "setLabelStyle", "setTextStyle", "setText", "getFont", "updateProps", "initProps", "getTransform", "clipPointsByRect", "clipRectByRect", "registerShape", "getShapeClass", "Group", "Image", "Text", "Circle", "Sector", "Ring", "Polygon", "Polyline", "Rect", "Line", "BezierCurve", "Arc", "IncrementalDisplayable", "CompoundPath", "LinearGradient", "RadialGradient", "BoundingRect"], function (t) { Rw[t] = Xm[t] }); var Nw = function (t) { this._axes = {}, this._dimList = [], this.name = t || "" }; Nw.prototype = { constructor: Nw, type: "cartesian", getAxis: function (t) { return this._axes[t] }, getAxes: function () { return p(this._dimList, rc, this) }, getAxesByScale: function (t) { return t = t.toLowerCase(), v(this.getAxes(), function (e) { return e.scale.type === t }) }, addAxis: function (t) { var e = t.dim; this._axes[e] = t, this._dimList.push(e) }, dataToCoord: function (t) { return this._dataCoordConvert(t, "dataToCoord") }, coordToData: function (t) { return this._dataCoordConvert(t, "coordToData") }, _dataCoordConvert: function (t, e) { for (var i = this._dimList, n = t instanceof Array ? [] : {}, r = 0; r < i.length; r++) { var a = i[r], o = this._axes[a]; n[a] = o[e](t[a]) } return n } }, ac.prototype = { constructor: ac, type: "cartesian2d", dimensions: ["x", "y"], getBaseAxis: function () { return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x") }, containPoint: function (t) { var e = this.getAxis("x"), i = this.getAxis("y"); return e.contain(e.toLocalCoord(t[0])) && i.contain(i.toLocalCoord(t[1])) }, containData: function (t) { return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1]) }, dataToPoint: function (t, e, i) { var n = this.getAxis("x"), r = this.getAxis("y"); return i = i || [], i[0] = n.toGlobalCoord(n.dataToCoord(t[0])), i[1] = r.toGlobalCoord(r.dataToCoord(t[1])), i }, clampData: function (t, e) { var i = this.getAxis("x").scale, n = this.getAxis("y").scale, r = i.getExtent(), a = n.getExtent(), o = i.parse(t[0]), s = n.parse(t[1]); return e = e || [], e[0] = Math.min(Math.max(Math.min(r[0], r[1]), o), Math.max(r[0], r[1])), e[1] = Math.min(Math.max(Math.min(a[0], a[1]), s), Math.max(a[0], a[1])), e }, pointToData: function (t, e) { var i = this.getAxis("x"), n = this.getAxis("y"); return e = e || [], e[0] = i.coordToData(i.toLocalCoord(t[0])), e[1] = n.coordToData(n.toLocalCoord(t[1])), e }, getOtherAxis: function (t) { return this.getAxis("x" === t.dim ? "y" : "x") }, getArea: function () { var t = this.getAxis("x").getGlobalExtent(), e = this.getAxis("y").getGlobalExtent(), i = Math.min(t[0], t[1]), n = Math.min(e[0], e[1]), r = Math.max(t[0], t[1]) - i, a = Math.max(e[0], e[1]) - n, o = new xi(i, n, r, a); return o } }, u(ac, Nw); var Fw = function (t, e, i, n, r) { Ew.call(this, t, e, i), this.type = n || "value", this.position = r || "bottom" }; Fw.prototype = { constructor: Fw, index: 0, getAxesOnZeroOf: null, model: null, isHorizontal: function () { var t = this.position; return "top" === t || "bottom" === t }, getGlobalExtent: function (t) { var e = this.getExtent(); return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e.reverse(), e }, getOtherAxis: function () { this.grid.getOtherAxis() }, pointToData: function (t, e) { return this.coordToData(this.toLocalCoord(t["x" === this.dim ? 0 : 1]), e) }, toLocalCoord: null, toGlobalCoord: null }, u(Fw, Ew); var Vw = { show: !0, zlevel: 0, z: 0, inverse: !1, name: "", nameLocation: "end", nameRotate: null, nameTruncate: { maxWidth: null, ellipsis: "...", placeholder: "." }, nameTextStyle: {}, nameGap: 15, silent: !1, triggerEvent: !1, tooltip: { show: !1 }, axisPointer: {}, axisLine: { show: !0, onZero: !0, onZeroAxisIndex: null, lineStyle: { color: "#333", width: 1, type: "solid" }, symbol: ["none", "none"], symbolSize: [10, 15] }, axisTick: { show: !0, inside: !1, length: 5, lineStyle: { width: 1 } }, axisLabel: { show: !0, inside: !1, rotate: 0, showMinLabel: null, showMaxLabel: null, margin: 8, fontSize: 12 }, splitLine: { show: !0, lineStyle: { color: ["#ccc"], width: 1, type: "solid" } }, splitArea: { show: !1, areaStyle: { color: ["rgba(250,250,250,0.3)", "rgba(200,200,200,0.3)"] } } }, Hw = {}; Hw.categoryAxis = r({ boundaryGap: !0, deduplication: null, splitLine: { show: !1 }, axisTick: { alignWithLabel: !1, interval: "auto" }, axisLabel: { interval: "auto" } }, Vw), Hw.valueAxis = r({ boundaryGap: [0, 0], splitNumber: 5 }, Vw), Hw.timeAxis = s({ scale: !0, min: "dataMin", max: "dataMax" }, Hw.valueAxis), Hw.logAxis = s({ scale: !0, logBase: 10 }, Hw.valueAxis); var Gw = ["value", "category", "time", "log"], Ww = function (t, e, i, n) { f(Gw, function (o) { e.extend({ type: t + "Axis." + o, mergeDefaultAndTheme: function (e, n) { var a = this.layoutMode, s = a ? No(e) : {}, l = n.getTheme(); r(e, l.get(o + "Axis")), r(e, this.getDefaultOption()), e.type = i(t, e), a && Ro(e, s, a) }, optionUpdated: function () { var t = this.option; "category" === t.type && (this.__ordinalMeta = eu.createByAxisModel(this)) }, getCategories: function (t) { var e = this.option; return "category" === e.type ? t ? e.data : this.__ordinalMeta.categories : void 0 }, getOrdinalMeta: function () { return this.__ordinalMeta }, defaultOption: a([{}, Hw[o + "Axis"], n], !0) }) }), gy.registerSubTypeDefaulter(t + "Axis", _(i, t)) }, Xw = gy.extend({ type: "cartesian2dAxis", axis: null, init: function () { Xw.superApply(this, "init", arguments), this.resetRange() }, mergeOption: function () { Xw.superApply(this, "mergeOption", arguments), this.resetRange() }, restoreData: function () { Xw.superApply(this, "restoreData", arguments), this.resetRange() }, getCoordSysModel: function () { return this.ecModel.queryComponents({ mainType: "grid", index: this.option.gridIndex, id: this.option.gridId })[0] } }); r(Xw.prototype, _w); var Uw = { offset: 0 }; Ww("x", Xw, oc, Uw), Ww("y", Xw, oc, Uw), gy.extend({ type: "grid", dependencies: ["xAxis", "yAxis"], layoutMode: "box", coordinateSystem: null, defaultOption: { show: !1, zlevel: 0, z: 0, left: "10%", top: 60, right: "10%", bottom: 60, containLabel: !1, backgroundColor: "rgba(0,0,0,0)", borderWidth: 1, borderColor: "#ccc" } }); var Yw = lc.prototype; Yw.type = "grid", Yw.axisPointerEnabled = !0, Yw.getRect = function () { return this._rect }, Yw.update = function (t, e) { var i = this._axesMap; this._updateScale(t, this.model), f(i.x, function (t) { Su(t.scale, t.model) }), f(i.y, function (t) { Su(t.scale, t.model) }); var n = {}; f(i.x, function (t) { hc(i, "y", t, n) }), f(i.y, function (t) { hc(i, "x", t, n) }), this.resize(this.model, e) }, Yw.resize = function (t, e, i) { function n() { f(a, function (t) { var e = t.isHorizontal(), i = e ? [0, r.width] : [0, r.height], n = t.inverse ? 1 : 0; t.setExtent(i[n], i[1 - n]), cc(t, e ? r.x : r.y) }) } var r = Bo(t.getBoxLayoutParams(), { width: e.getWidth(), height: e.getHeight() }); this._rect = r; var a = this._axesList; n(), !i && t.get("containLabel") && (f(a, function (t) { if (!t.model.get("axisLabel.inside")) { var e = Au(t); if (e) { var i = t.isHorizontal() ? "height" : "width", n = t.model.get("axisLabel.margin"); r[i] -= e[i] + n, "top" === t.position ? r.y += e.height + n : "left" === t.position && (r.x += e.width + n) } } }), n()) }, Yw.getAxis = function (t, e) { var i = this._axesMap[t]; if (null != i) { if (null == e) for (var n in i) if (i.hasOwnProperty(n)) return i[n]; return i[e] } }, Yw.getAxes = function () { return this._axesList.slice() }, Yw.getCartesian = function (t, e) { if (null != t && null != e) { var i = "x" + t + "y" + e; return this._coordsMap[i] } S(t) && (e = t.yAxisIndex, t = t.xAxisIndex); for (var n = 0, r = this._coordsList; n < r.length; n++)if (r[n].getAxis("x").index === t || r[n].getAxis("y").index === e) return r[n] }, Yw.getCartesians = function () { return this._coordsList.slice() }, Yw.convertToPixel = function (t, e, i) { var n = this._findConvertTarget(t, e); return n.cartesian ? n.cartesian.dataToPoint(i) : n.axis ? n.axis.toGlobalCoord(n.axis.dataToCoord(i)) : null }, Yw.convertFromPixel = function (t, e, i) { var n = this._findConvertTarget(t, e); return n.cartesian ? n.cartesian.pointToData(i) : n.axis ? n.axis.coordToData(n.axis.toLocalCoord(i)) : null }, Yw._findConvertTarget = function (t, e) { var i, n, r = e.seriesModel, a = e.xAxisModel || r && r.getReferringComponents("xAxis")[0], o = e.yAxisModel || r && r.getReferringComponents("yAxis")[0], s = e.gridModel, l = this._coordsList; if (r) i = r.coordinateSystem, h(l, i) < 0 && (i = null); else if (a && o) i = this.getCartesian(a.componentIndex, o.componentIndex); else if (a) n = this.getAxis("x", a.componentIndex); else if (o) n = this.getAxis("y", o.componentIndex); else if (s) { var u = s.coordinateSystem; u === this && (i = this._coordsList[0]) } return { cartesian: i, axis: n } }, Yw.containPoint = function (t) { var e = this._coordsList[0]; return e ? e.containPoint(t) : void 0 }, Yw._initCartesian = function (t, e) { function i(i) { return function (o, s) { if (sc(o, t, e)) { var l = o.get("position"); "x" === i ? "top" !== l && "bottom" !== l && (l = n.bottom ? "top" : "bottom") : "left" !== l && "right" !== l && (l = n.left ? "right" : "left"), n[l] = !0; var h = new Fw(i, Mu(o), [0, 0], o.get("type"), l), u = "category" === h.type; h.onBand = u && o.get("boundaryGap"), h.inverse = o.get("inverse"), o.axis = h, h.model = o, h.grid = this, h.index = s, this._axesList.push(h), r[i][s] = h, a[i]++ } } } var n = { left: !1, right: !1, top: !1, bottom: !1 }, r = { x: {}, y: {} }, a = { x: 0, y: 0 }; return e.eachComponent("xAxis", i("x"), this), e.eachComponent("yAxis", i("y"), this), a.x && a.y ? (this._axesMap = r, void f(r.x, function (e, i) { f(r.y, function (n, r) { var a = "x" + i + "y" + r, o = new ac(a); o.grid = this, o.model = t, this._coordsMap[a] = o, this._coordsList.push(o), o.addAxis(e), o.addAxis(n) }, this) }, this)) : (this._axesMap = {}, void (this._axesList = [])) }, Yw._updateScale = function (t, e) { function i(t, e) { f(t.mapDimension(e.dim, !0), function (i) { e.scale.unionExtentFromData(t, Kh(t, i)) }) } f(this._axesList, function (t) { t.scale.setExtent(1 / 0, -1 / 0) }), t.eachSeries(function (n) { if (fc(n)) { var r = dc(n, t), a = r[0], o = r[1]; if (!sc(a, e, t) || !sc(o, e, t)) return; var s = this.getCartesian(a.componentIndex, o.componentIndex), l = n.getData(), h = s.getAxis("x"), u = s.getAxis("y"); "list" === l.type && (i(l, h, n), i(l, u, n)) } }, this) }, Yw.getTooltipAxes = function (t) { var e = [], i = []; return f(this.getCartesians(), function (n) { var r = null != t && "auto" !== t ? n.getAxis(t) : n.getBaseAxis(), a = n.getOtherAxis(r); h(e, r) < 0 && e.push(r), h(i, a) < 0 && i.push(a) }), { baseAxes: e, otherAxes: i } }; var jw = ["xAxis", "yAxis"]; lc.create = function (t, e) { var i = []; return t.eachComponent("grid", function (n, r) { var a = new lc(n, t, e); a.name = "grid_" + r, a.resize(n, e, !0), n.coordinateSystem = a, i.push(a) }), t.eachSeries(function (e) { if (fc(e)) { var i = dc(e, t), n = i[0], r = i[1], a = n.getCoordSysModel(); if (kf) { if (!a) throw new Error('Grid "' + A(n.get("gridIndex"), n.get("gridId"), 0) + '" not found'); if (n.getCoordSysModel() !== r.getCoordSysModel()) throw new Error("xAxis and yAxis must use the same grid") } var o = a.coordinateSystem; e.coordinateSystem = o.getCartesian(n.componentIndex, r.componentIndex) } }), i }, lc.dimensions = lc.prototype.dimensions = ac.prototype.dimensions, ds.register("cartesian2d", lc); var qw = i_.extend({ type: "series.__base_bar__", getInitialData: function () { return $h(this.getSource(), this) }, getMarkerPosition: function (t) { var e = this.coordinateSystem; if (e) { var i = e.dataToPoint(e.clampData(t)), n = this.getData(), r = n.getLayout("offset"), a = n.getLayout("size"), o = e.getBaseAxis().isHorizontal() ? 0 : 1; return i[o] += r + a / 2, i } return [0 / 0, 0 / 0] }, defaultOption: { zlevel: 0, z: 2, coordinateSystem: "cartesian2d", legendHoverLink: !0, barMinHeight: 0, barMinAngle: 0, large: !1, largeThreshold: 400, progressive: 3e3, progressiveChunkMode: "mod", itemStyle: {}, emphasis: {} } }); qw.extend({ type: "series.bar", dependencies: ["grid", "polar"], brushSelector: "rect", getProgressive: function () { return this.get("large") ? this.get("progressive") : !1 }, getProgressiveThreshold: function () { var t = this.get("progressiveThreshold"), e = this.get("largeThreshold"); return e > t && (t = e), t }, defaultOption: { clip: !0, roundCap: !1 } }); var Zw = tv([["fill", "color"], ["stroke", "borderColor"], ["lineWidth", "borderWidth"], ["stroke", "barBorderColor"], ["lineWidth", "barBorderWidth"], ["opacity"], ["shadowBlur"], ["shadowOffsetX"], ["shadowOffsetY"], ["shadowColor"]]), Kw = { getBarItemStyle: function (t) { var e = Zw(this, t); if (this.getBorderLineDash) { var i = this.getBorderLineDash(); i && (e.lineDash = i) } return e } }, $w = ea({ type: "sausage", shape: { cx: 0, cy: 0, r0: 0, r: 0, startAngle: 0, endAngle: 2 * Math.PI, clockwise: !0 }, buildPath: function (t, e) { var i = e.cx, n = e.cy, r = Math.max(e.r0 || 0, 0), a = Math.max(e.r, 0), o = .5 * (a - r), s = r + o, l = e.startAngle, h = e.endAngle, u = e.clockwise, c = Math.cos(l), d = Math.sin(l), f = Math.cos(h), p = Math.sin(h), g = u ? h - l < 2 * Math.PI : l - h < 2 * Math.PI; g && (t.moveTo(c * r + i, d * r + n), t.arc(c * s + i, d * s + n, o, -Math.PI + l, l, !u)), t.arc(i, n, a, l, h, !u), t.moveTo(f * a + i, p * a + n), t.arc(f * s + i, p * s + n, o, h - 2 * Math.PI, h - Math.PI, !u), 0 !== r && (t.arc(i, n, r, h, l, u), t.moveTo(c * r + i, p * r + n)), t.closePath() } }), Qw = ["itemStyle", "barBorderWidth"], Jw = [0, 0]; o(Ja.prototype, Kw), xh({ type: "bar", render: function (t, e, i) { this._updateDrawMode(t); var n = t.get("coordinateSystem"); return "cartesian2d" === n || "polar" === n ? this._isLargeDraw ? this._renderLarge(t, e, i) : this._renderNormal(t, e, i) : kf && console.warn("Only cartesian2d and polar supported for bar."), this.group }, incrementalPrepareRender: function (t) { this._clear(), this._updateDrawMode(t) }, incrementalRender: function (t, e) { this._incrementalRenderLarge(t, e) }, _updateDrawMode: function (t) { var e = t.pipelineContext.large; (null == this._isLargeDraw || e ^ this._isLargeDraw) && (this._isLargeDraw = e, this._clear()) }, _renderNormal: function (t) { var e, i = this.group, n = t.getData(), r = this._data, a = t.coordinateSystem, o = a.getBaseAxis(); "cartesian2d" === a.type ? e = o.isHorizontal() : "polar" === a.type && (e = "angle" === o.dim); var s = t.isAnimationEnabled() ? t : null, l = t.get("clip", !0), h = xc(a, n); i.removeClipPath(); var u = t.get("roundCap", !0); n.diff(r).add(function (r) { if (n.hasValue(r)) { var o = n.getItemModel(r), c = rb[a.type](n, r, o); if (l) { var d = ib[a.type](h, c); if (d) return void i.remove(f) } var f = nb[a.type](r, c, e, s, !1, u); n.setItemGraphicEl(r, f), i.add(f), Sc(f, n, r, o, c, t, e, "polar" === a.type) } }).update(function (o, c) { var d = r.getItemGraphicEl(c); if (!n.hasValue(o)) return void i.remove(d); var f = n.getItemModel(o), p = rb[a.type](n, o, f); if (l) { var g = ib[a.type](h, p); if (g) return void i.remove(d) } d ? Va(d, { shape: p }, s, o) : d = nb[a.type](o, p, e, s, !0, u), n.setItemGraphicEl(o, d), i.add(d), Sc(d, n, o, f, p, t, e, "polar" === a.type) }).remove(function (t) { var e = r.getItemGraphicEl(t); "cartesian2d" === a.type ? e && wc(t, s, e) : e && bc(t, s, e) }).execute(), this._data = n }, _renderLarge: function (t) { this._clear(), Ic(t, this.group); var e = t.get("clip", !0) ? _c(t.coordinateSystem, !1, t) : null; e ? this.group.setClipPath(e) : this.group.removeClipPath() }, _incrementalRenderLarge: function (t, e) { Ic(e, this.group, !0) }, dispose: V, remove: function (t) { this._clear(t) }, _clear: function (t) { var e = this.group, i = this._data; t && t.get("animation") && i && !this._isLargeDraw ? i.eachItemGraphicEl(function (e) { "sector" === e.type ? bc(e.dataIndex, t, e) : wc(e.dataIndex, t, e) }) : e.removeAll(), this._data = null } }); var tb = Math.max, eb = Math.min, ib = { cartesian2d: function (t, e) { var i = e.width < 0 ? -1 : 1, n = e.height < 0 ? -1 : 1; 0 > i && (e.x += e.width, e.width = -e.width), 0 > n && (e.y += e.height, e.height = -e.height); var r = tb(e.x, t.x), a = eb(e.x + e.width, t.x + t.width), o = tb(e.y, t.y), s = eb(e.y + e.height, t.y + t.height); e.x = r, e.y = o, e.width = a - r, e.height = s - o; var l = e.width < 0 || e.height < 0; return 0 > i && (e.x += e.width, e.width = -e.width), 0 > n && (e.y += e.height, e.height = -e.height), l }, polar: function () { return !1 } }, nb = { cartesian2d: function (t, e, i, n, r) { var a = new _m({ shape: o({}, e) }); if (n) { var s = a.shape, l = i ? "height" : "width", h = {}; s[l] = 0, h[l] = e[l], Xm[r ? "updateProps" : "initProps"](a, { shape: h }, n, t) } return a }, polar: function (t, e, i, n, r, a) { var o = e.startAngle < e.endAngle, l = !i && a ? $w : cm, h = new l({ shape: s({ clockwise: o }, e) }); if (n) { var u = h.shape, c = i ? "r" : "endAngle", d = {}; u[c] = i ? 0 : e.startAngle, d[c] = e[c], Xm[r ? "updateProps" : "initProps"](h, { shape: d }, n, t) } return h } }, rb = { cartesian2d: function (t, e, i) { var n = t.getItemLayout(e), r = Mc(i, n), a = n.width > 0 ? 1 : -1, o = n.height > 0 ? 1 : -1; return { x: n.x + a * r / 2, y: n.y + o * r / 2, width: n.width - a * r, height: n.height - o * r } }, polar: function (t, e) { var i = t.getItemLayout(e); return { cx: i.cx, cy: i.cy, r0: i.r0, r: i.r, startAngle: i.startAngle, endAngle: i.endAngle } } }, ab = Hr.extend({ type: "largeBar", shape: { points: [] }, buildPath: function (t, e) { for (var i = e.points, n = this.__startPoint, r = this.__baseDimIdx, a = 0; a < i.length; a += 2)n[r] = i[a + r], t.moveTo(n[0], n[1]), t.lineTo(i[a], i[a + 1]) } }), ob = nl(function (t) { var e = this, i = Tc(e, t.offsetX, t.offsetY); e.dataIndex = i >= 0 ? i : null }, 30, !1), sb = Math.PI, lb = function (t, e) { this.opt = e, this.axisModel = t, s(e, { labelOffset: 0, nameDirection: 1, tickDirection: 1, labelDirection: 1, silent: !0 }), this.group = new jp; var i = new jp({ position: e.position.slice(), rotation: e.rotation }); i.updateTransform(), this._transform = i.transform, this._dumbGroup = i }; lb.prototype = { constructor: lb, hasBuilder: function (t) { return !!hb[t] }, add: function (t) { hb[t].call(this) }, getGroup: function () { return this.group } }; var hb = { axisLine: function () { var t = this.opt, e = this.axisModel; if (e.get("axisLine.show")) { var i = this.axisModel.axis.getExtent(), n = this._transform, r = [i[0], 0], a = [i[1], 0]; n && (ae(r, r, n), ae(a, a, n)); var s = o({ lineCap: "round" }, e.getModel("axisLine.lineStyle").getLineStyle()); this.group.add(new wm({ anid: "line", subPixelOptimize: !0, shape: { x1: r[0], y1: r[1], x2: a[0], y2: a[1] }, style: s, strokeContainThreshold: t.strokeContainThreshold || 5, silent: !0, z2: 1 })); var l = e.get("axisLine.symbol"), h = e.get("axisLine.symbolSize"), u = e.get("axisLine.symbolOffset") || 0; if ("number" == typeof u && (u = [u, u]), null != l) { "string" == typeof l && (l = [l, l]), ("string" == typeof h || "number" == typeof h) && (h = [h, h]); var c = h[0], d = h[1]; f([{ rotate: t.rotation + Math.PI / 2, offset: u[0], r: 0 }, { rotate: t.rotation - Math.PI / 2, offset: u[1], r: Math.sqrt((r[0] - a[0]) * (r[0] - a[0]) + (r[1] - a[1]) * (r[1] - a[1])) }], function (e, i) { if ("none" !== l[i] && null != l[i]) { var n = Ou(l[i], -c / 2, -d / 2, c, d, s.stroke, !0), a = e.r + e.offset, o = [r[0] + a * Math.cos(t.rotation), r[1] - a * Math.sin(t.rotation)]; n.attr({ rotation: e.rotate, position: o, silent: !0, z2: 11 }), this.group.add(n) } }, this) } } }, axisTickLabel: function () { var t = this.axisModel, e = this.opt, i = Oc(this, t, e), n = Ec(this, t, e); Dc(t, n, i) }, axisName: function () { var t = this.opt, e = this.axisModel, i = A(t.axisName, e.get("name")); if (i) { var n, r = e.get("nameLocation"), a = t.nameDirection, s = e.getModel("nameTextStyle"), l = e.get("nameGap") || 0, h = this.axisModel.axis.getExtent(), u = h[0] > h[1] ? -1 : 1, c = ["start" === r ? h[0] - u * l : "end" === r ? h[1] + u * l : (h[0] + h[1]) / 2, Lc(r) ? t.labelOffset + a * l : 0], d = e.get("nameRotate"); null != d && (d = d * sb / 180); var f; Lc(r) ? n = cb(t.rotation, null != d ? d : t.rotation, a) : (n = Ac(t, r, d || 0, h), f = t.axisNameAvailableWidth, null != f && (f = Math.abs(f / Math.sin(n.rotation)), !isFinite(f) && (f = null))); var p = s.getFont(), g = e.get("nameTruncate", !0) || {}, v = g.ellipsis, m = A(t.nameTruncateMaxWidth, g.maxWidth, f), y = null != v && null != m ? sy(i, m, p, v, { minChar: 2, placeholder: g.placeholder }) : i, _ = e.get("tooltip", !0), x = e.mainType, w = { componentType: x, name: i, $vars: ["name"] }; w[x + "Index"] = e.componentIndex; var b = new sm({ anid: "name", __fullText: i, __truncatedText: y, position: c, rotation: n.rotation, silent: db(e), z2: 1, tooltip: _ && _.show ? o({ content: i, formatter: function () { return i }, formatterParams: w }, _) : null }); ka(b.style, s, { text: y, textFont: p, textFill: s.getTextColor() || e.get("axisLine.lineStyle.color"), textAlign: s.get("align") || n.textAlign, textVerticalAlign: s.get("verticalAlign") || n.textVerticalAlign }), e.get("triggerEvent") && (b.eventData = ub(e), b.eventData.targetType = "axisName", b.eventData.name = i), this._dumbGroup.add(b), b.updateTransform(), this.group.add(b), b.decomposeTransform() } } }, ub = lb.makeAxisEventDataBase = function (t) { var e = { componentType: t.mainType, componentIndex: t.componentIndex }; return e[t.mainType + "Index"] = t.componentIndex, e }, cb = lb.innerTextLayout = function (t, e, i) { var n, r, a = go(e - t); return vo(a) ? (r = i > 0 ? "top" : "bottom", n = "center") : vo(a - sb) ? (r = i > 0 ? "bottom" : "top", n = "center") : (r = "middle", n = a > 0 && sb > a ? i > 0 ? "right" : "left" : i > 0 ? "left" : "right"), { rotation: a, textAlign: n, textVerticalAlign: r } }, db = lb.isLabelSilent = function (t) { var e = t.get("tooltip"); return t.get("silent") || !(t.get("triggerEvent") || e && e.show) }, fb = f, pb = _, gb = yh({ type: "axis", _axisPointer: null, axisPointerClass: null, render: function (t, e, i, n) { this.axisPointerClass && Hc(t), gb.superApply(this, "render", arguments), Yc(this, t, e, i, n, !0) }, updateAxisPointer: function (t, e, i, n) { Yc(this, t, e, i, n, !1) }, remove: function (t, e) { var i = this._axisPointer; i && i.remove(e), gb.superApply(this, "remove", arguments) }, dispose: function (t, e) { jc(this, e), gb.superApply(this, "dispose", arguments) } }), vb = []; gb.registerAxisPointerClass = function (t, e) { if (kf && vb[t]) throw new Error("axisPointer " + t + " exists"); vb[t] = e }, gb.getAxisPointerClass = function (t) { return t && vb[t] }; var mb = ["axisLine", "axisTickLabel", "axisName"], yb = ["splitArea", "splitLine"], _b = gb.extend({ type: "cartesianAxis", axisPointerClass: "CartesianAxisPointer", render: function (t, e, i, n) { this.group.removeAll(); var r = this._axisGroup; if (this._axisGroup = new jp, this.group.add(this._axisGroup), t.get("show")) { var a = t.getCoordSysModel(), o = qc(a, t), s = new lb(t, o); f(mb, s.add, s), this._axisGroup.add(s.getGroup()), f(yb, function (e) { t.get(e + ".show") && this["_" + e](t, a) }, this), Ua(r, this._axisGroup, t), _b.superCall(this, "render", t, e, i, n) } }, remove: function () { this._splitAreaColors = null }, _splitLine: function (t, e) { var i = t.axis; if (!i.scale.isBlank()) { var n = t.getModel("splitLine"), r = n.getModel("lineStyle"), a = r.get("color"); a = x(a) ? a : [a]; for (var o = e.coordinateSystem.getRect(), l = i.isHorizontal(), h = 0, u = i.getTicksCoords({ tickModel: n }), c = [], d = [], f = r.getLineStyle(), p = 0; p < u.length; p++) { var g = i.toGlobalCoord(u[p].coord); l ? (c[0] = g, c[1] = o.y, d[0] = g, d[1] = o.y + o.height) : (c[0] = o.x, c[1] = g, d[0] = o.x + o.width, d[1] = g); var v = h++ % a.length, m = u[p].tickValue; this._axisGroup.add(new wm({ anid: null != m ? "line_" + u[p].tickValue : null, subPixelOptimize: !0, shape: { x1: c[0], y1: c[1], x2: d[0], y2: d[1] }, style: s({ stroke: a[v] }, f), silent: !0 })) } } }, _splitArea: function (t, e) { var i = t.axis; if (!i.scale.isBlank()) { var n = t.getModel("splitArea"), r = n.getModel("areaStyle"), a = r.get("color"), o = e.coordinateSystem.getRect(), l = i.getTicksCoords({ tickModel: n, clamp: !0 }); if (l.length) { var h = a.length, u = this._splitAreaColors, c = N(), d = 0; if (u) for (var f = 0; f < l.length; f++) { var p = u.get(l[f].tickValue); if (null != p) { d = (p + (h - 1) * f) % h; break } } var g = i.toGlobalCoord(l[0].coord), v = r.getAreaStyle(); a = x(a) ? a : [a]; for (var f = 1; f < l.length; f++) { var m, y, _, w, b = i.toGlobalCoord(l[f].coord); i.isHorizontal() ? (m = g, y = o.y, _ = b - m, w = o.height, g = m + _) : (m = o.x, y = g, _ = o.width, w = b - y, g = y + w); var S = l[f - 1].tickValue; null != S && c.set(S, d), this._axisGroup.add(new _m({ anid: null != S ? "area_" + S : null, shape: { x: m, y: y, width: _, height: w }, style: s({ fill: a[d] }, v), silent: !0 })), d = (d + 1) % h } this._splitAreaColors = c } } } }); _b.extend({ type: "xAxis" }), _b.extend({ type: "yAxis" }), yh({ type: "grid", render: function (t) { this.group.removeAll(), t.get("show") && this.group.add(new _m({ shape: t.coordinateSystem.getRect(), style: s({ fill: t.get("backgroundColor") }, t.getItemStyle()), silent: !0, z2: -1 })) } }), sh(function (t) { t.xAxis && t.yAxis && !t.grid && (t.grid = {}) }), fh(ox.VISUAL.LAYOUT, _(vu, "bar")), fh(ox.VISUAL.PROGRESSIVE_LAYOUT, Jx), ph({ seriesType: "bar", reset: function (t) { t.getData().setVisual("legendSymbol", "roundRect") } }), i_.extend({ type: "series.line", dependencies: ["grid", "polar"], getInitialData: function (t) { if (kf) { var e = t.coordinateSystem; if ("polar" !== e && "cartesian2d" !== e) throw new Error("Line not support coordinateSystem besides cartesian and polar") } return $h(this.getSource(), this) }, defaultOption: { zlevel: 0, z: 2, coordinateSystem: "cartesian2d", legendHoverLink: !0, hoverAnimation: !0, clip: !0, label: { position: "top" }, lineStyle: { width: 2, type: "solid" }, step: !1, smooth: !1, smoothMonotone: null, symbol: "emptyCircle", symbolSize: 4, symbolRotate: null, showSymbol: !0, showAllSymbol: "auto", connectNulls: !1, sampling: "none", animationEasing: "linear", progressive: 0, hoverLayerThreshold: 1 / 0 } }); var xb = Zc.prototype, wb = Zc.getSymbolSize = function (t, e) { var i = t.getItemVisual(e, "symbolSize"); return i instanceof Array ? i.slice() : [+i, +i] }; xb._createSymbol = function (t, e, i, n, r) { this.removeAll(); var a = e.getItemVisual(i, "color"), o = Ou(t, -1, -1, 2, 2, a, r); o.attr({ z2: 100, culling: !0, scale: Kc(n) }), o.drift = $c, this._symbolType = t, this.add(o) }, xb.stopSymbolAnimation = function (t) { this.childAt(0).stopAnimation(t) }, xb.getSymbolPath = function () { return this.childAt(0) }, xb.getScale = function () { return this.childAt(0).scale }, xb.highlight = function () { this.childAt(0).trigger("emphasis") }, xb.downplay = function () { this.childAt(0).trigger("normal") }, xb.setZ = function (t, e) { var i = this.childAt(0); i.zlevel = t, i.z = e }, xb.setDraggable = function (t) { var e = this.childAt(0); e.draggable = t, e.cursor = t ? "move" : e.cursor }, xb.updateData = function (t, e, i) { this.silent = !1; var n = t.getItemVisual(e, "symbol") || "circle", r = t.hostModel, a = wb(t, e), o = n !== this._symbolType; if (o) { var s = t.getItemVisual(e, "symbolKeepAspect"); this._createSymbol(n, t, e, a, s) } else { var l = this.childAt(0); l.silent = !1, Va(l, { scale: Kc(a) }, r, e) } if (this._updateCommon(t, e, a, i), o) { var l = this.childAt(0), h = i && i.fadeIn, u = { scale: l.scale.slice() }; h && (u.style = { opacity: l.style.opacity }), l.scale = [0, 0], h && (l.style.opacity = 0), Ha(l, u, r, e) } this._seriesModel = r }; var bb = ["itemStyle"], Sb = ["emphasis", "itemStyle"], Mb = ["label"], Ib = ["emphasis", "label"];
  28. xb._updateCommon = function (t, e, i, n) { function r(e) { return b ? t.getName(e) : pc(t, e) } var a = this.childAt(0), s = t.hostModel, l = t.getItemVisual(e, "color"); "image" !== a.type ? a.useStyle({ strokeNoScale: !0 }) : a.setStyle({ opacity: null, shadowBlur: null, shadowOffsetX: null, shadowOffsetY: null, shadowColor: null }); var h = n && n.itemStyle, u = n && n.hoverItemStyle, c = n && n.symbolRotate, d = n && n.symbolOffset, f = n && n.labelModel, p = n && n.hoverLabelModel, g = n && n.hoverAnimation, v = n && n.cursorStyle; if (!n || t.hasItemOption) { var m = n && n.itemModel ? n.itemModel : t.getItemModel(e); h = m.getModel(bb).getItemStyle(["color"]), u = m.getModel(Sb).getItemStyle(), c = m.getShallow("symbolRotate"), d = m.getShallow("symbolOffset"), f = m.getModel(Mb), p = m.getModel(Ib), g = m.getShallow("hoverAnimation"), v = m.getShallow("cursor") } else u = o({}, u); var y = a.style; a.attr("rotation", (c || 0) * Math.PI / 180 || 0), d && a.attr("position", [so(d[0], i[0]), so(d[1], i[1])]), v && a.attr("cursor", v), a.setColor(l, n && n.symbolInnerColor), a.setStyle(h); var _ = t.getItemVisual(e, "opacity"); null != _ && (y.opacity = _); var x = t.getItemVisual(e, "liftZ"), w = a.__z2Origin; null != x ? null == w && (a.__z2Origin = a.z2, a.z2 += x) : null != w && (a.z2 = w, a.__z2Origin = null); var b = n && n.useNameLabel; Aa(y, u, f, p, { labelFetcher: s, labelDataIndex: e, defaultText: r, isRectText: !0, autoColor: l }), a.__symbolOriginalScale = Kc(i), a.hoverStyle = u, a.highDownOnUpdate = g && s.isAnimationEnabled() ? Qc : null, Ma(a) }, xb.fadeOut = function (t, e) { var i = this.childAt(0); this.silent = i.silent = !0, !(e && e.keepLabel) && (i.style.text = null), Va(i, { style: { opacity: 0 }, scale: [0, 0] }, this._seriesModel, this.dataIndex, t) }, u(Zc, jp); var Tb = Jc.prototype; Tb.updateData = function (t, e) { e = ed(e); var i = this.group, n = t.hostModel, r = this._data, a = this._symbolCtor, o = id(t); r || i.removeAll(), t.diff(r).add(function (n) { var r = t.getItemLayout(n); if (td(t, r, n, e)) { var s = new a(t, n, o); s.attr("position", r), t.setItemGraphicEl(n, s), i.add(s) } }).update(function (s, l) { var h = r.getItemGraphicEl(l), u = t.getItemLayout(s); return td(t, u, s, e) ? (h ? (h.updateData(t, s, o), Va(h, { position: u }, n)) : (h = new a(t, s), h.attr("position", u)), i.add(h), void t.setItemGraphicEl(s, h)) : void i.remove(h) }).remove(function (t) { var e = r.getItemGraphicEl(t); e && e.fadeOut(function () { i.remove(e) }) }).execute(), this._data = t }, Tb.isPersistent = function () { return !0 }, Tb.updateLayout = function () { var t = this._data; t && t.eachItemGraphicEl(function (e, i) { var n = t.getItemLayout(i); e.attr("position", n) }) }, Tb.incrementalPrepareUpdate = function (t) { this._seriesScope = id(t), this._data = null, this.group.removeAll() }, Tb.incrementalUpdate = function (t, e, i) { function n(t) { t.isGroup || (t.incremental = t.useHoverLayer = !0) } i = ed(i); for (var r = t.start; r < t.end; r++) { var a = e.getItemLayout(r); if (td(e, a, r, i)) { var o = new this._symbolCtor(e, r, this._seriesScope); o.traverse(n), o.attr("position", a), this.group.add(o), e.setItemGraphicEl(r, o) } } }, Tb.remove = function (t) { var e = this.group, i = this._data; i && t ? i.eachItemGraphicEl(function (t) { t.fadeOut(function () { e.remove(t) }) }) : e.removeAll() }; var Cb = function (t, e, i, n, r, a, o, s) { for (var l = od(t, e), h = [], u = [], c = [], d = [], f = [], p = [], g = [], v = nd(r, e, o), m = nd(a, t, s), y = 0; y < l.length; y++) { var _ = l[y], x = !0; switch (_.cmd) { case "=": var w = t.getItemLayout(_.idx), b = e.getItemLayout(_.idx1); (isNaN(w[0]) || isNaN(w[1])) && (w = b.slice()), h.push(w), u.push(b), c.push(i[_.idx]), d.push(n[_.idx1]), g.push(e.getRawIndex(_.idx1)); break; case "+": var S = _.idx; h.push(r.dataToPoint([e.get(v.dataDimsForPoint[0], S), e.get(v.dataDimsForPoint[1], S)])), u.push(e.getItemLayout(S).slice()), c.push(ad(v, r, e, S)), d.push(n[S]), g.push(e.getRawIndex(S)); break; case "-": var S = _.idx, M = t.getRawIndex(S); M !== S ? (h.push(t.getItemLayout(S)), u.push(a.dataToPoint([t.get(m.dataDimsForPoint[0], S), t.get(m.dataDimsForPoint[1], S)])), c.push(i[S]), d.push(ad(m, a, t, S)), g.push(M)) : x = !1 }x && (f.push(_), p.push(p.length)) } p.sort(function (t, e) { return g[t] - g[e] }); for (var I = [], T = [], C = [], A = [], D = [], y = 0; y < p.length; y++) { var S = p[y]; I[y] = h[S], T[y] = u[S], C[y] = c[S], A[y] = d[S], D[y] = f[S] } return { current: I, next: T, stackedOnCurrent: C, stackedOnNext: A, status: D } }, Ab = oe, Db = se, kb = Y, Pb = G, Lb = [], Ob = [], Eb = [], zb = Hr.extend({ type: "ec-polyline", shape: { points: [], smooth: 0, smoothConstraint: !0, smoothMonotone: null, connectNulls: !1 }, style: { fill: null, stroke: "#000" }, brush: um(Hr.prototype.brush), buildPath: function (t, e) { var i = e.points, n = 0, r = i.length, a = cd(i, e.smoothConstraint); if (e.connectNulls) { for (; r > 0 && sd(i[r - 1]); r--); for (; r > n && sd(i[n]); n++); } for (; r > n;)n += ld(t, i, n, r, r, 1, a.min, a.max, e.smooth, e.smoothMonotone, e.connectNulls) + 1 } }), Bb = Hr.extend({ type: "ec-polygon", shape: { points: [], stackedOnPoints: [], smooth: 0, stackedOnSmooth: 0, smoothConstraint: !0, smoothMonotone: null, connectNulls: !1 }, brush: um(Hr.prototype.brush), buildPath: function (t, e) { var i = e.points, n = e.stackedOnPoints, r = 0, a = i.length, o = e.smoothMonotone, s = cd(i, e.smoothConstraint), l = cd(n, e.smoothConstraint); if (e.connectNulls) { for (; a > 0 && sd(i[a - 1]); a--); for (; a > r && sd(i[r]); r++); } for (; a > r;) { var h = ld(t, i, r, a, a, 1, s.min, s.max, e.smooth, o, e.connectNulls); ld(t, n, r + h - 1, h, a, -1, l.min, l.max, e.stackedOnSmooth, o, e.connectNulls), r += h + 1, t.closePath() } } }); Qs.extend({ type: "line", init: function () { var t = new jp, e = new Jc; this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t }, render: function (t, e, i) { var n = t.coordinateSystem, r = this.group, a = t.getData(), o = t.getModel("lineStyle"), l = t.getModel("areaStyle"), h = a.mapArray(a.getItemLayout), u = "polar" === n.type, c = this._coordSys, d = this._symbolDraw, f = this._polyline, p = this._polygon, g = this._lineGroup, v = t.get("animation"), m = !l.isEmpty(), y = l.get("origin"), _ = nd(n, a, y), x = pd(n, a, _), w = t.get("showSymbol"), b = w && !u && md(t, a, n), S = this._data; S && S.eachItemGraphicEl(function (t, e) { t.__temp && (r.remove(t), S.setItemGraphicEl(e, null)) }), w || d.remove(), r.add(g); var M, I = !u && t.get("step"); n && n.getArea && (M = n.getArea(), null != M.width ? (M.x -= .1, M.y -= .1, M.width += .2, M.height += .2) : M.r0 && (M.r0 -= .5, M.r1 += .5)), f && c.type === n.type && I === this._step ? (m && !p ? p = this._newPolygon(h, x, n, v) : p && !m && (g.remove(p), p = this._polygon = null), g.setClipPath(_d(n, !1, t)), w && d.updateData(a, { isIgnore: b, clipShape: M }), a.eachItemGraphicEl(function (t) { t.stopAnimation(!0) }), dd(this._stackedOnPoints, x) && dd(this._points, h) || (v ? this._updateAnimation(a, x, n, i, I, y) : (I && (h = gd(h, n, I), x = gd(x, n, I)), f.setShape({ points: h }), p && p.setShape({ points: h, stackedOnPoints: x })))) : (w && d.updateData(a, { isIgnore: b, clipShape: M }), I && (h = gd(h, n, I), x = gd(x, n, I)), f = this._newPolyline(h, n, v), m && (p = this._newPolygon(h, x, n, v)), g.setClipPath(_d(n, !0, t))); var T = vd(a, n) || a.getVisual("color"); f.useStyle(s(o.getLineStyle(), { fill: "none", stroke: T, lineJoin: "bevel" })); var C = t.get("smooth"); if (C = fd(t.get("smooth")), f.setShape({ smooth: C, smoothMonotone: t.get("smoothMonotone"), connectNulls: t.get("connectNulls") }), p) { var A = a.getCalculationInfo("stackedOnSeries"), D = 0; p.useStyle(s(l.getAreaStyle(), { fill: T, opacity: .7, lineJoin: "bevel" })), A && (D = fd(A.get("smooth"))), p.setShape({ smooth: C, stackedOnSmooth: D, smoothMonotone: t.get("smoothMonotone"), connectNulls: t.get("connectNulls") }) } this._data = a, this._coordSys = n, this._stackedOnPoints = x, this._points = h, this._step = I, this._valueOrigin = y }, dispose: function () { }, highlight: function (t, e, i, n) { var r = t.getData(), a = qn(r, n); if (!(a instanceof Array) && null != a && a >= 0) { var o = r.getItemGraphicEl(a); if (!o) { var s = r.getItemLayout(a); if (!s) return; o = new Zc(r, a), o.position = s, o.setZ(t.get("zlevel"), t.get("z")), o.ignore = isNaN(s[0]) || isNaN(s[1]), o.__temp = !0, r.setItemGraphicEl(a, o), o.stopSymbolAnimation(!0), this.group.add(o) } o.highlight() } else Qs.prototype.highlight.call(this, t, e, i, n) }, downplay: function (t, e, i, n) { var r = t.getData(), a = qn(r, n); if (null != a && a >= 0) { var o = r.getItemGraphicEl(a); o && (o.__temp ? (r.setItemGraphicEl(a, null), this.group.remove(o)) : o.downplay()) } else Qs.prototype.downplay.call(this, t, e, i, n) }, _newPolyline: function (t) { var e = this._polyline; return e && this._lineGroup.remove(e), e = new zb({ shape: { points: t }, silent: !0, z2: 10 }), this._lineGroup.add(e), this._polyline = e, e }, _newPolygon: function (t, e) { var i = this._polygon; return i && this._lineGroup.remove(i), i = new Bb({ shape: { points: t, stackedOnPoints: e }, silent: !0 }), this._lineGroup.add(i), this._polygon = i, i }, _updateAnimation: function (t, e, i, n, r, a) { var o = this._polyline, s = this._polygon, l = t.hostModel, h = Cb(this._data, t, this._stackedOnPoints, e, this._coordSys, i, this._valueOrigin, a), u = h.current, c = h.stackedOnCurrent, d = h.next, f = h.stackedOnNext; r && (u = gd(h.current, i, r), c = gd(h.stackedOnCurrent, i, r), d = gd(h.next, i, r), f = gd(h.stackedOnNext, i, r)), o.shape.__points = h.current, o.shape.points = u, Va(o, { shape: { points: d } }, l), s && (s.setShape({ points: u, stackedOnPoints: c }), Va(s, { shape: { points: d, stackedOnPoints: f } }, l)); for (var p = [], g = h.status, v = 0; v < g.length; v++) { var m = g[v].cmd; if ("=" === m) { var y = t.getItemGraphicEl(g[v].idx1); y && p.push({ el: y, ptIdx: v }) } } o.animators && o.animators.length && o.animators[0].during(function () { for (var t = 0; t < p.length; t++) { var e = p[t].el; e.attr("position", o.shape.__points[p[t].ptIdx]) } }) }, remove: function () { var t = this.group, e = this._data; this._lineGroup.removeAll(), this._symbolDraw.remove(!0), e && e.eachItemGraphicEl(function (i, n) { i.__temp && (t.remove(i), e.setItemGraphicEl(n, null)) }), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null } }); var Rb = function (t, e, i) { return { seriesType: t, performRawSeries: !0, reset: function (t, n) { function r(e, i) { if (c) { var n = t.getRawValue(i), r = t.getDataParams(i); h && e.setItemVisual(i, "symbol", o(n, r)), u && e.setItemVisual(i, "symbolSize", s(n, r)) } if (e.hasItemOption) { var a = e.getItemModel(i), l = a.getShallow("symbol", !0), d = a.getShallow("symbolSize", !0), f = a.getShallow("symbolKeepAspect", !0); null != l && e.setItemVisual(i, "symbol", l), null != d && e.setItemVisual(i, "symbolSize", d), null != f && e.setItemVisual(i, "symbolKeepAspect", f) } } var a = t.getData(), o = t.get("symbol"), s = t.get("symbolSize"), l = t.get("symbolKeepAspect"), h = w(o), u = w(s), c = h || u, d = !h && o ? o : e, f = u ? null : s; return a.setVisual({ legendSymbol: i || d, symbol: d, symbolSize: f, symbolKeepAspect: l }), n.isSeriesFiltered(t) ? void 0 : { dataEach: a.hasItemOption || c ? r : null } } } }, Nb = function (t) { return { seriesType: t, plan: a_(), reset: function (t) { function e(t, e) { for (var i = t.end - t.start, r = a && new Float32Array(i * s), l = t.start, h = 0, u = [], c = []; l < t.end; l++) { var d; if (1 === s) { var f = e.get(o[0], l); d = !isNaN(f) && n.dataToPoint(f, null, c) } else { var f = u[0] = e.get(o[0], l), p = u[1] = e.get(o[1], l); d = !isNaN(f) && !isNaN(p) && n.dataToPoint(u, null, c) } a ? (r[h++] = d ? d[0] : 0 / 0, r[h++] = d ? d[1] : 0 / 0) : e.setItemLayout(l, d && d.slice() || [0 / 0, 0 / 0]) } a && e.setLayout("symbolPoints", r) } var i = t.getData(), n = t.coordinateSystem, r = t.pipelineContext, a = r.large; if (n) { var o = p(n.dimensions, function (t) { return i.mapDimension(t) }).slice(0, 2), s = o.length, l = i.getCalculationInfo("stackResultDimension"); return Zh(i, o[0]) && (o[0] = l), Zh(i, o[1]) && (o[1] = l), s && { progress: e } } } } }, Fb = { average: function (t) { for (var e = 0, i = 0, n = 0; n < t.length; n++)isNaN(t[n]) || (e += t[n], i++); return 0 === i ? 0 / 0 : e / i }, sum: function (t) { for (var e = 0, i = 0; i < t.length; i++)e += t[i] || 0; return e }, max: function (t) { for (var e = -1 / 0, i = 0; i < t.length; i++)t[i] > e && (e = t[i]); return isFinite(e) ? e : 0 / 0 }, min: function (t) { for (var e = 1 / 0, i = 0; i < t.length; i++)t[i] < e && (e = t[i]); return isFinite(e) ? e : 0 / 0 }, nearest: function (t) { return t[0] } }, Vb = function (t) { return Math.round(t.length / 2) }, Hb = function (t) { return { seriesType: t, modifyOutputEnd: !0, reset: function (t) { var e = t.getData(), i = t.get("sampling"), n = t.coordinateSystem; if ("cartesian2d" === n.type && i) { var r = n.getBaseAxis(), a = n.getOtherAxis(r), o = r.getExtent(), s = o[1] - o[0], l = Math.round(e.count() / s); if (l > 1) { var h; "string" == typeof i ? h = Fb[i] : "function" == typeof i && (h = i), h && t.setData(e.downSample(e.mapDimension(a.dim), 1 / l, h, Vb)) } } } } }; ph(Rb("line", "circle", "line")), fh(Nb("line")), lh(ox.PROCESSOR.STATISTIC, Hb("line")); var Gb = function (t, e, i) { e = x(e) && { coordDimensions: e } || o({}, e); var n = t.getSource(), r = Wx(n, e), a = new Vx(r, t); return a.initData(n, i), a }, Wb = { updateSelectedMap: function (t) { this._targetList = x(t) ? t.slice() : [], this._selectTargetMap = g(t || [], function (t, e) { return t.set(e.name, e), t }, N()) }, select: function (t, e) { var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t), n = this.get("selectedMode"); "single" === n && this._selectTargetMap.each(function (t) { t.selected = !1 }), i && (i.selected = !0) }, unSelect: function (t, e) { var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t); i && (i.selected = !1) }, toggleSelected: function (t, e) { var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t); return null != i ? (this[i.selected ? "unSelect" : "select"](t, e), i.selected) : void 0 }, isSelected: function (t, e) { var i = null != e ? this._targetList[e] : this._selectTargetMap.get(t); return i && i.selected } }, Xb = _h({ type: "series.pie", init: function (t) { Xb.superApply(this, "init", arguments), this.legendDataProvider = function () { return this.getRawData() }, this.updateSelectedMap(this._createSelectableList()), this._defaultLabelLine(t) }, mergeOption: function (t) { Xb.superCall(this, "mergeOption", t), this.updateSelectedMap(this._createSelectableList()) }, getInitialData: function () { return Gb(this, ["value"]) }, _createSelectableList: function () { for (var t = this.getRawData(), e = t.mapDimension("value"), i = [], n = 0, r = t.count(); r > n; n++)i.push({ name: t.getName(n), value: t.get(e, n), selected: Fs(t, n, "selected") }); return i }, getDataParams: function (t) { var e = this.getData(), i = Xb.superCall(this, "getDataParams", t), n = []; return e.each(e.mapDimension("value"), function (t) { n.push(t) }), i.percent = po(n, t, e.hostModel.get("percentPrecision")), i.$vars.push("percent"), i }, _defaultLabelLine: function (t) { Hn(t, "labelLine", ["show"]); var e = t.labelLine, i = t.emphasis.labelLine; e.show = e.show && t.label.show, i.show = i.show && t.emphasis.label.show }, defaultOption: { zlevel: 0, z: 2, legendHoverLink: !0, hoverAnimation: !0, center: ["50%", "50%"], radius: [0, "75%"], clockwise: !0, startAngle: 90, minAngle: 0, minShowLabelAngle: 0, selectedOffset: 10, hoverOffset: 10, avoidLabelOverlap: !0, percentPrecision: 2, stillShowZeroSum: !0, label: { rotate: !1, show: !0, position: "outer" }, labelLine: { show: !0, length: 15, length2: 15, smooth: !1, lineStyle: { width: 1, type: "solid" } }, itemStyle: { borderWidth: 1 }, animationType: "expansion", animationTypeUpdate: "transition", animationEasing: "cubicOut" } }); c(Xb, Wb); var Ub = bd.prototype; Ub.updateData = function (t, e, i) { var n = this.childAt(0), r = this.childAt(1), a = this.childAt(2), l = t.hostModel, h = t.getItemModel(e), u = t.getItemLayout(e), c = o({}, u); c.label = null; var d = l.getShallow("animationTypeUpdate"); if (i) { n.setShape(c); var f = l.getShallow("animationType"); "scale" === f ? (n.shape.r = u.r0, Ha(n, { shape: { r: u.r } }, l, e)) : (n.shape.endAngle = u.startAngle, Va(n, { shape: { endAngle: u.endAngle } }, l, e)) } else "expansion" === d ? n.setShape(c) : Va(n, { shape: c }, l, e); var p = t.getItemVisual(e, "color"); n.useStyle(s({ lineJoin: "bevel", fill: p }, h.getModel("itemStyle").getItemStyle())), n.hoverStyle = h.getModel("emphasis.itemStyle").getItemStyle(); var g = h.getShallow("cursor"); g && n.attr("cursor", g), wd(this, t.getItemLayout(e), l.isSelected(null, e), l.get("selectedOffset"), l.get("animation")); var v = !i && "transition" === d; this._updateLabel(t, e, v), this.highDownOnUpdate = h.get("hoverAnimation") && l.isAnimationEnabled() ? function (t, e) { "emphasis" === e ? (r.ignore = r.hoverIgnore, a.ignore = a.hoverIgnore, n.stopAnimation(!0), n.animateTo({ shape: { r: u.r + l.get("hoverOffset") } }, 300, "elasticOut")) : (r.ignore = r.normalIgnore, a.ignore = a.normalIgnore, n.stopAnimation(!0), n.animateTo({ shape: { r: u.r } }, 300, "elasticOut")) } : null, Ma(this) }, Ub._updateLabel = function (t, e, i) { var n = this.childAt(1), r = this.childAt(2), a = t.hostModel, o = t.getItemModel(e), s = t.getItemLayout(e), l = s.label, h = t.getItemVisual(e, "color"); if (!l || isNaN(l.x) || isNaN(l.y)) return void (r.ignore = r.normalIgnore = r.hoverIgnore = n.ignore = n.normalIgnore = n.hoverIgnore = !0); var u = { points: l.linePoints || [[l.x, l.y], [l.x, l.y], [l.x, l.y]] }, c = { x: l.x, y: l.y }; i ? (Va(n, { shape: u }, a, e), Va(r, { style: c }, a, e)) : (n.attr({ shape: u }), r.attr({ style: c })), r.attr({ rotation: l.rotation, origin: [l.x, l.y], z2: 10 }); var d = o.getModel("label"), f = o.getModel("emphasis.label"), p = o.getModel("labelLine"), g = o.getModel("emphasis.labelLine"), h = t.getItemVisual(e, "color"); Aa(r.style, r.hoverStyle = {}, d, f, { labelFetcher: t.hostModel, labelDataIndex: e, defaultText: t.getName(e), autoColor: h, useInsideStyle: !!l.inside }, { textAlign: l.textAlign, textVerticalAlign: l.verticalAlign, opacity: t.getItemVisual(e, "opacity") }), r.ignore = r.normalIgnore = !d.get("show"), r.hoverIgnore = !f.get("show"), n.ignore = n.normalIgnore = !p.get("show"), n.hoverIgnore = !g.get("show"), n.setStyle({ stroke: h, opacity: t.getItemVisual(e, "opacity") }), n.setStyle(p.getModel("lineStyle").getLineStyle()), n.hoverStyle = g.getModel("lineStyle").getLineStyle(); var v = p.get("smooth"); v && v === !0 && (v = .4), n.setShape({ smooth: v }) }, u(bd, jp); var Yb = (Qs.extend({ type: "pie", init: function () { var t = new jp; this._sectorGroup = t }, render: function (t, e, i, n) { if (!n || n.from !== this.uid) { var r = t.getData(), a = this._data, o = this.group, s = e.get("animation"), l = !a, h = t.get("animationType"), u = t.get("animationTypeUpdate"), c = _(xd, this.uid, t, s, i), d = t.get("selectedMode"); if (r.diff(a).add(function (t) { var e = new bd(r, t); l && "scale" !== h && e.eachChild(function (t) { t.stopAnimation(!0) }), d && e.on("click", c), r.setItemGraphicEl(t, e), o.add(e) }).update(function (t, e) { var i = a.getItemGraphicEl(e); l || "transition" === u || i.eachChild(function (t) { t.stopAnimation(!0) }), i.updateData(r, t), i.off("click"), d && i.on("click", c), o.add(i), r.setItemGraphicEl(t, i) }).remove(function (t) { var e = a.getItemGraphicEl(t); o.remove(e) }).execute(), s && r.count() > 0 && (l ? "scale" !== h : "transition" !== u)) { for (var f = r.getItemLayout(0), p = 1; isNaN(f.startAngle) && p < r.count(); ++p)f = r.getItemLayout(p); var g = Math.max(i.getWidth(), i.getHeight()) / 2, v = y(o.removeClipPath, o); o.setClipPath(this._createClipPath(f.cx, f.cy, g, f.startAngle, f.clockwise, v, t, l)) } else o.removeClipPath(); this._data = r } }, dispose: function () { }, _createClipPath: function (t, e, i, n, r, a, o, s) { var l = new cm({ shape: { cx: t, cy: e, r0: 0, r: i, startAngle: n, endAngle: n, clockwise: r } }), h = s ? Ha : Va; return h(l, { shape: { endAngle: n + (r ? 1 : -1) * Math.PI * 2 } }, o, a), l }, containPoint: function (t, e) { var i = e.getData(), n = i.getItemLayout(0); if (n) { var r = t[0] - n.cx, a = t[1] - n.cy, o = Math.sqrt(r * r + a * a); return o <= n.r && o >= n.r0 } } }), function (t, e) { f(e, function (e) { e.update = "updateView", uh(e, function (i, n) { var r = {}; return n.eachComponent({ mainType: "series", subType: t, query: i }, function (t) { t[e.method] && t[e.method](i.name, i.dataIndex); var n = t.getData(); n.each(function (e) { var i = n.getName(e); r[i] = t.isSelected(i) || !1 }) }), { name: i.name, selected: r, seriesId: i.seriesId } }) }) }), jb = function (t) { return { getTargetSeries: function (e) { var i = {}, n = N(); return e.eachSeriesByType(t, function (t) { t.__paletteScope = i, n.set(t.uid, t) }), n }, reset: function (t) { var e = t.getRawData(), i = {}, n = t.getData(); n.each(function (t) { var e = n.getRawIndex(t); i[e] = t }), e.each(function (r) { var a, o = i[r], s = null != o && n.getItemVisual(o, "color", !0), l = null != o && n.getItemVisual(o, "borderColor", !0); if (s && l || (a = e.getItemModel(r)), s) e.setItemVisual(r, "color", s); else { var h = a.get("itemStyle.color") || t.getColorFromPalette(e.getName(r) || r + "", t.__paletteScope, e.count()); e.setItemVisual(r, "color", h), null != o && n.setItemVisual(o, "color", h) } if (l) e.setItemVisual(r, "borderColor", l); else { var u = a.get("itemStyle.borderColor"); e.setItemVisual(r, "borderColor", u), null != o && n.setItemVisual(o, "borderColor", u) } }) } } }, qb = Math.PI / 180, Zb = function (t, e, i, n) { var r, a, o = t.getData(), s = [], l = !1, h = (t.get("minShowLabelAngle") || 0) * qb; o.each(function (i) { var n = o.getItemLayout(i), u = o.getItemModel(i), c = u.getModel("label"), d = c.get("position") || u.get("emphasis.label.position"), f = u.getModel("labelLine"), p = f.get("length"), g = f.get("length2"); if (!(n.angle < h)) { var v, m, y, _, x = (n.startAngle + n.endAngle) / 2, w = Math.cos(x), b = Math.sin(x); r = n.cx, a = n.cy; var S = "inside" === d || "inner" === d; if ("center" === d) v = n.cx, m = n.cy, _ = "center"; else { var M = (S ? (n.r + n.r0) / 2 * w : n.r * w) + r, I = (S ? (n.r + n.r0) / 2 * b : n.r * b) + a; if (v = M + 3 * w, m = I + 3 * b, !S) { var T = M + w * (p + e - n.r), C = I + b * (p + e - n.r), A = T + (0 > w ? -1 : 1) * g, D = C; v = A + (0 > w ? -5 : 5), m = D, y = [[M, I], [T, C], [A, D]] } _ = S ? "center" : w > 0 ? "left" : "right" } var k, P = c.getFont(), L = c.get("rotate"); k = "number" == typeof L ? L * (Math.PI / 180) : L ? 0 > w ? -x + Math.PI : -x : 0; var O = t.getFormattedLabel(i, "normal") || o.getName(i), E = Vi(O, P, _, "top"); l = !!k, n.label = { x: v, y: m, position: d, height: E.height, len: p, len2: g, linePoints: y, textAlign: _, verticalAlign: "middle", rotation: k, inside: S }, S || s.push(n.label) } }), !l && t.get("avoidLabelOverlap") && Md(s, r, a, e, i, n) }, Kb = 2 * Math.PI, $b = Math.PI / 180, Qb = function (t, e, i) { e.eachSeriesByType(t, function (t) { var e = t.getData(), n = e.mapDimension("value"), r = t.get("center"), a = t.get("radius"); x(a) || (a = [0, a]), x(r) || (r = [r, r]); var o = i.getWidth(), s = i.getHeight(), l = Math.min(o, s), h = so(r[0], o), u = so(r[1], s), c = so(a[0], l / 2), d = so(a[1], l / 2), f = -t.get("startAngle") * $b, p = t.get("minAngle") * $b, g = 0; e.each(n, function (t) { !isNaN(t) && g++ }); var v = e.getSum(n), m = Math.PI / (v || g) * 2, y = t.get("clockwise"), _ = t.get("roseType"), w = t.get("stillShowZeroSum"), b = e.getDataExtent(n); b[0] = 0; var S = Kb, M = 0, I = f, T = y ? 1 : -1; if (e.each(n, function (t, i) { var n; if (isNaN(t)) return void e.setItemLayout(i, { angle: 0 / 0, startAngle: 0 / 0, endAngle: 0 / 0, clockwise: y, cx: h, cy: u, r0: c, r: _ ? 0 / 0 : d }); n = "area" !== _ ? 0 === v && w ? m : t * m : Kb / g, p > n ? (n = p, S -= p) : M += t; var r = I + T * n; e.setItemLayout(i, { angle: n, startAngle: I, endAngle: r, clockwise: y, cx: h, cy: u, r0: c, r: _ ? oo(t, b, [c, d]) : d }), I = r }), Kb > S && g) if (.001 >= S) { var C = Kb / g; e.each(n, function (t, i) { if (!isNaN(t)) { var n = e.getItemLayout(i); n.angle = C, n.startAngle = f + T * i * C, n.endAngle = f + T * (i + 1) * C } }) } else m = S / M, I = f, e.each(n, function (t, i) { if (!isNaN(t)) { var n = e.getItemLayout(i), r = n.angle === p ? p : t * m; n.startAngle = I, n.endAngle = I + T * r, I += T * r } }); Zb(t, d, o, s) }) }, Jb = function (t) { return { seriesType: t, reset: function (t, e) { var i = e.findComponents({ mainType: "legend" }); if (i && i.length) { var n = t.getData(); n.filterSelf(function (t) { for (var e = n.getName(t), r = 0; r < i.length; r++)if (!i[r].isSelected(e)) return !1; return !0 }) } } } }; Yb("pie", [{ type: "pieToggleSelect", event: "pieselectchanged", method: "toggleSelected" }, { type: "pieSelect", event: "pieselected", method: "select" }, { type: "pieUnSelect", event: "pieunselected", method: "unSelect" }]), ph(jb("pie")), fh(_(Qb, "pie")), lh(Jb("pie")), mh({ type: "title", layoutMode: { type: "box", ignoreSize: !0 }, defaultOption: { zlevel: 0, z: 6, show: !0, text: "", target: "blank", subtext: "", subtarget: "blank", left: 0, top: 0, backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", borderWidth: 0, padding: 5, itemGap: 10, textStyle: { fontSize: 18, fontWeight: "bolder", color: "#333" }, subtextStyle: { color: "#aaa" } } }), yh({ type: "title", render: function (t, e, i) { if (this.group.removeAll(), t.get("show")) { var n = this.group, r = t.getModel("textStyle"), a = t.getModel("subtextStyle"), o = t.get("textAlign"), s = D(t.get("textBaseline"), t.get("textVerticalAlign")), l = new sm({ style: ka({}, r, { text: t.get("text"), textFill: r.getTextColor() }, { disableBox: !0 }), z2: 10 }), h = l.getBoundingRect(), u = t.get("subtext"), c = new sm({ style: ka({}, a, { text: u, textFill: a.getTextColor(), y: h.height + t.get("itemGap"), textVerticalAlign: "top" }, { disableBox: !0 }), z2: 10 }), d = t.get("link"), f = t.get("sublink"), p = t.get("triggerEvent", !0); l.silent = !d && !p, c.silent = !f && !p, d && l.on("click", function () { window.open(d, "_" + t.get("target")) }), f && c.on("click", function () { window.open(f, "_" + t.get("subtarget")) }), l.eventData = c.eventData = p ? { componentType: "title", componentIndex: t.componentIndex } : null, n.add(l), u && n.add(c); var g = n.getBoundingRect(), v = t.getBoxLayoutParams(); v.width = g.width, v.height = g.height; var m = Bo(v, { width: i.getWidth(), height: i.getHeight() }, t.get("padding")); o || (o = t.get("left") || t.get("right"), "middle" === o && (o = "center"), "right" === o ? m.x += m.width : "center" === o && (m.x += m.width / 2)), s || (s = t.get("top") || t.get("bottom"), "center" === s && (s = "middle"), "bottom" === s ? m.y += m.height : "middle" === s && (m.y += m.height / 2), s = s || "top"), n.attr("position", [m.x, m.y]); var y = { textAlign: o, textVerticalAlign: s }; l.setStyle(y), c.setStyle(y), g = n.getBoundingRect(); var _ = m.margin, x = t.getItemStyle(["color", "opacity"]); x.fill = t.get("backgroundColor"); var w = new _m({ shape: { x: g.x - _[3], y: g.y - _[0], width: g.width + _[1] + _[3], height: g.height + _[0] + _[2], r: t.get("borderRadius") }, style: x, subPixelOptimize: !0, silent: !0 }); n.add(w) } } }); var tS = p_.legend.selector, eS = { all: { type: "all", title: n(tS.all) }, inverse: { type: "inverse", title: n(tS.inverse) } }, iS = mh({ type: "legend.plain", dependencies: ["series"], layoutMode: { type: "box", ignoreSize: !0 }, init: function (t, e, i) { this.mergeDefaultAndTheme(t, i), t.selected = t.selected || {}, this._updateSelector(t) }, mergeOption: function (t) { iS.superCall(this, "mergeOption", t), this._updateSelector(t) }, _updateSelector: function (t) { var e = t.selector; e === !0 && (e = t.selector = ["all", "inverse"]), x(e) && f(e, function (t, i) { b(t) && (t = { type: t }), e[i] = r(t, eS[t.type]) }) }, optionUpdated: function () { this._updateData(this.ecModel); var t = this._data; if (t[0] && "single" === this.get("selectedMode")) { for (var e = !1, i = 0; i < t.length; i++) { var n = t[i].get("name"); if (this.isSelected(n)) { this.select(n), e = !0; break } } !e && this.select(t[0].get("name")) } }, _updateData: function (t) { var e = [], i = []; t.eachRawSeries(function (n) { var r = n.name; i.push(r); var a; if (n.legendDataProvider) { var o = n.legendDataProvider(), s = o.mapArray(o.getName); t.isSeriesFiltered(n) || (i = i.concat(s)), s.length ? e = e.concat(s) : a = !0 } else a = !0; a && Yn(n) && e.push(n.name) }), this._availableNames = i; var n = this.get("data") || e, r = p(n, function (t) { return ("string" == typeof t || "number" == typeof t) && (t = { name: t }), new Ja(t, this, this.ecModel) }, this); this._data = r }, getData: function () { return this._data }, select: function (t) { var e = this.option.selected, i = this.get("selectedMode"); if ("single" === i) { var n = this._data; f(n, function (t) { e[t.get("name")] = !1 }) } e[t] = !0 }, unSelect: function (t) { "single" !== this.get("selectedMode") && (this.option.selected[t] = !1) }, toggleSelected: function (t) { var e = this.option.selected; e.hasOwnProperty(t) || (e[t] = !0), this[e[t] ? "unSelect" : "select"](t) }, allSelect: function () { var t = this._data, e = this.option.selected; f(t, function (t) { e[t.get("name", !0)] = !0 }) }, inverseSelect: function () { var t = this._data, e = this.option.selected; f(t, function (t) { var i = t.get("name", !0); e.hasOwnProperty(i) || (e[i] = !0), e[i] = !e[i] }) }, isSelected: function (t) { var e = this.option.selected; return !(e.hasOwnProperty(t) && !e[t]) && h(this._availableNames, t) >= 0 }, getOrient: function () { return "vertical" === this.get("orient") ? { index: 1, name: "vertical" } : { index: 0, name: "horizontal" } }, defaultOption: { zlevel: 0, z: 4, show: !0, orient: "horizontal", left: "center", top: 0, align: "auto", backgroundColor: "rgba(0,0,0,0)", borderColor: "#ccc", borderRadius: 0, borderWidth: 0, padding: 5, itemGap: 10, itemWidth: 25, itemHeight: 14, inactiveColor: "#ccc", inactiveBorderColor: "#ccc", itemStyle: { borderWidth: 0 }, textStyle: { color: "#333" }, selectedMode: !0, selector: !1, selectorLabel: { show: !0, borderRadius: 10, padding: [3, 5, 3, 5], fontSize: 12, fontFamily: " sans-serif", color: "#666", borderWidth: 1, borderColor: "#666" }, emphasis: { selectorLabel: { show: !0, color: "#eee", backgroundColor: "#666" } }, selectorPosition: "auto", selectorItemGap: 7, selectorButtonGap: 10, tooltip: { show: !1 } } }); uh("legendToggleSelect", "legendselectchanged", _(Td, "toggleSelected")), uh("legendAllSelect", "legendselectall", _(Td, "allSelect")), uh("legendInverseSelect", "legendinverseselect", _(Td, "inverseSelect")), uh("legendSelect", "legendselected", _(Td, "select")), uh("legendUnSelect", "legendunselected", _(Td, "unSelect")); var nS = _, rS = f, aS = jp, oS = yh({ type: "legend.plain", newlineDisabled: !1, init: function () { this.group.add(this._contentGroup = new aS), this._backgroundEl, this.group.add(this._selectorGroup = new aS), this._isFirstRender = !0 }, getContentGroup: function () { return this._contentGroup }, getSelectorGroup: function () { return this._selectorGroup }, render: function (t, e, i) { var n = this._isFirstRender; if (this._isFirstRender = !1, this.resetInner(), t.get("show", !0)) { var r = t.get("align"), a = t.get("orient"); r && "auto" !== r || (r = "right" === t.get("left") && "vertical" === a ? "right" : "left"); var o = t.get("selector", !0), l = t.get("selectorPosition", !0); !o || l && "auto" !== l || (l = "horizontal" === a ? "end" : "start"), this.renderInner(r, t, e, i, o, a, l); var h = t.getBoxLayoutParams(), u = { width: i.getWidth(), height: i.getHeight() }, c = t.get("padding"), d = Bo(h, u, c), f = this.layoutInner(t, r, d, n, o, l), p = Bo(s({ width: f.width, height: f.height }, h), u, c); this.group.attr("position", [p.x - f.x, p.y - f.y]), this.group.add(this._backgroundEl = Cd(f, t)) } }, resetInner: function () { this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl), this.getSelectorGroup().removeAll() }, renderInner: function (t, e, i, n, r, a, o) { var s = this.getContentGroup(), l = N(), h = e.get("selectedMode"), u = []; i.eachRawSeries(function (t) { !t.get("legendHoverLink") && u.push(t.id) }), rS(e.getData(), function (r, a) { var o = r.get("name"); if (!this.newlineDisabled && ("" === o || "\n" === o)) return void s.add(new aS({ newline: !0 })); var c = i.getSeriesByName(o)[0]; if (!l.get(o)) { if (c) { var d = c.getData(), f = d.getVisual("color"), p = d.getVisual("borderColor"); "function" == typeof f && (f = f(c.getDataParams(0))), "function" == typeof p && (p = p(c.getDataParams(0))); var g = d.getVisual("legendSymbol") || "roundRect", v = d.getVisual("symbol"), m = this._createItem(o, a, r, e, g, v, t, f, p, h); m.on("click", nS(Dd, o, n)).on("mouseover", nS(kd, c.name, null, n, u)).on("mouseout", nS(Pd, c.name, null, n, u)), l.set(o, !0) } else i.eachRawSeries(function (i) { if (!l.get(o) && i.legendDataProvider) { var s = i.legendDataProvider(), c = s.indexOfName(o); if (0 > c) return; var d = s.getItemVisual(c, "color"), f = s.getItemVisual(c, "borderColor"), p = "roundRect", g = this._createItem(o, a, r, e, p, null, t, d, f, h); g.on("click", nS(Dd, o, n)).on("mouseover", nS(kd, null, o, n, u)).on("mouseout", nS(Pd, null, o, n, u)), l.set(o, !0) } }, this); kf && (l.get(o) || console.warn(o + " series not exists. Legend data should be same with series name or data name.")) } }, this), r && this._createSelector(r, e, n, a, o) }, _createSelector: function (t, e, i) { function n(t) { var n = t.type, a = new sm({ style: { x: 0, y: 0, align: "center", verticalAlign: "middle" }, onclick: function () { i.dispatchAction({ type: "all" === n ? "legendAllSelect" : "legendInverseSelect" }) } }); r.add(a); var o = e.getModel("selectorLabel"), s = e.getModel("emphasis.selectorLabel"); Aa(a.style, a.hoverStyle = {}, o, s, { defaultText: t.title, isRectText: !1 }), Ma(a) } var r = this.getSelectorGroup(); rS(t, function (t) { n(t) }) }, _createItem: function (t, e, i, n, r, a, s, l, h, u) { var c = n.get("itemWidth"), d = n.get("itemHeight"), f = n.get("inactiveColor"), p = n.get("inactiveBorderColor"), g = n.get("symbolKeepAspect"), v = n.getModel("itemStyle"), m = n.isSelected(t), y = new aS, _ = i.getModel("textStyle"), x = i.get("icon"), w = i.getModel("tooltip"), b = w.parentModel; r = x || r; var S = Ou(r, 0, 0, c, d, m ? l : f, null == g ? !0 : g); if (y.add(Ad(S, r, v, h, p, m)), !x && a && (a !== r || "none" === a)) { var M = .8 * d; "none" === a && (a = "circle"); var I = Ou(a, (c - M) / 2, (d - M) / 2, M, M, m ? l : f, null == g ? !0 : g); y.add(Ad(I, a, v, h, p, m)) } var T = "left" === s ? c + 5 : -5, C = s, A = n.get("formatter"), D = t; "string" == typeof A && A ? D = A.replace("{name}", null != t ? t : "") : "function" == typeof A && (D = A(t)), y.add(new sm({ style: ka({}, _, { text: D, x: T, y: d / 2, textFill: m ? _.getTextColor() : f, textAlign: C, textVerticalAlign: "middle" }) })); var k = new _m({ shape: y.getBoundingRect(), invisible: !0, tooltip: w.get("show") ? o({ content: t, formatter: b.get("formatter", !0) || function () { return t }, formatterParams: { componentType: "legend", legendIndex: n.componentIndex, name: t, $vars: ["name"] } }, w.option) : null }); return y.add(k), y.eachChild(function (t) { t.silent = !0 }), k.silent = !u, this.getContentGroup().add(y), Ma(y), y.__legendDataIndex = e, y }, layoutInner: function (t, e, i, n, r, a) { var o = this.getContentGroup(), s = this.getSelectorGroup(); dy(t.get("orient"), o, t.get("itemGap"), i.width, i.height); var l = o.getBoundingRect(), h = [-l.x, -l.y]; if (r) { dy("horizontal", s, t.get("selectorItemGap", !0)); var u = s.getBoundingRect(), c = [-u.x, -u.y], d = t.get("selectorButtonGap", !0), f = t.getOrient().index, p = 0 === f ? "width" : "height", g = 0 === f ? "height" : "width", v = 0 === f ? "y" : "x"; "end" === a ? c[f] += l[p] + d : h[f] += u[p] + d, c[1 - f] += l[g] / 2 - u[g] / 2, s.attr("position", c), o.attr("position", h); var m = { x: 0, y: 0 }; return m[p] = l[p] + d + u[p], m[g] = Math.max(l[g], u[g]), m[v] = Math.min(0, u[v] + c[1 - f]), m } return o.attr("position", h), this.group.getBoundingRect() }, remove: function () { this.getContentGroup().removeAll(), this._isFirstRender = !0 } }), sS = function (t) { var e = t.findComponents({ mainType: "legend" }); e && e.length && t.filterSeries(function (t) { for (var i = 0; i < e.length; i++)if (!e[i].isSelected(t.name)) return !1; return !0 }) }; lh(ox.PROCESSOR.SERIES_FILTER, sS), gy.registerSubTypeDefaulter("legend", function () { return "plain" }); var lS = iS.extend({
  29. type: "legend.scroll", setScrollDataIndex: function (t) { this.option.scrollDataIndex = t }, defaultOption: { scrollDataIndex: 0, pageButtonItemGap: 5, pageButtonGap: null, pageButtonPosition: "end", pageFormatter: "{current}/{total}", pageIcons: { horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"], vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"] }, pageIconColor: "#2f4554", pageIconInactiveColor: "#aaa", pageIconSize: 15, pageTextStyle: { color: "#333" }, animationDurationUpdate: 800 }, init: function (t, e, i, n) {
  30. var r = No(t);
  31. lS.superCall(this, "init", t, e, i, n), Ld(this, t, r)
  32. }, mergeOption: function (t, e) { lS.superCall(this, "mergeOption", t, e), Ld(this, this.option, t) }
  33. }), hS = jp, uS = ["width", "height"], cS = ["x", "y"], dS = oS.extend({ type: "legend.scroll", newlineDisabled: !0, init: function () { dS.superCall(this, "init"), this._currentIndex = 0, this.group.add(this._containerGroup = new hS), this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new hS), this._showController }, resetInner: function () { dS.superCall(this, "resetInner"), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), this._containerGroup.__rectSize = null }, renderInner: function (t, e, i, n, r, a, o) { function s(t, i) { var r = t + "DataIndex", a = qa(e.get("pageIcons", !0)[e.getOrient().name][i], { onclick: y(l._pageGo, l, r, e, n) }, { x: -u[0] / 2, y: -u[1] / 2, width: u[0], height: u[1] }); a.name = t, h.add(a) } var l = this; dS.superCall(this, "renderInner", t, e, i, n, r, a, o); var h = this._controllerGroup, u = e.get("pageIconSize", !0); x(u) || (u = [u, u]), s("pagePrev", 0); var c = e.getModel("pageTextStyle"); h.add(new sm({ name: "pageText", style: { textFill: c.getTextColor(), font: c.getFont(), textVerticalAlign: "middle", textAlign: "center" }, silent: !0 })), s("pageNext", 1) }, layoutInner: function (t, e, i, r, a, o) { var s = this.getSelectorGroup(), l = t.getOrient().index, h = uS[l], u = cS[l], c = uS[1 - l], d = cS[1 - l]; a && dy("horizontal", s, t.get("selectorItemGap", !0)); var f = t.get("selectorButtonGap", !0), p = s.getBoundingRect(), g = [-p.x, -p.y], v = n(i); a && (v[h] = i[h] - p[h] - f); var m = this._layoutContentAndController(t, r, v, l, h, c, d); if (a) { if ("end" === o) g[l] += m[h] + f; else { var y = p[h] + f; g[l] -= y, m[u] -= y } m[h] += p[h] + f, g[1 - l] += m[d] + m[c] / 2 - p[c] / 2, m[c] = Math.max(m[c], p[c]), m[d] = Math.min(m[d], p[d] + g[1 - l]), s.attr("position", g) } return m }, _layoutContentAndController: function (t, e, i, n, r, a, o) { var s = this.getContentGroup(), l = this._containerGroup, h = this._controllerGroup; dy(t.get("orient"), s, t.get("itemGap"), n ? i.width : null, n ? null : i.height), dy("horizontal", h, t.get("pageButtonItemGap", !0)); var u = s.getBoundingRect(), c = h.getBoundingRect(), d = this._showController = u[r] > i[r], f = [-u.x, -u.y]; e || (f[n] = s.position[n]); var p = [0, 0], g = [-c.x, -c.y], v = D(t.get("pageButtonGap", !0), t.get("itemGap", !0)); if (d) { var m = t.get("pageButtonPosition", !0); "end" === m ? g[n] += i[r] - c[r] : p[n] += c[r] + v } g[1 - n] += u[a] / 2 - c[a] / 2, s.attr("position", f), l.attr("position", p), h.attr("position", g); var y = { x: 0, y: 0 }; if (y[r] = d ? i[r] : u[r], y[a] = Math.max(u[a], c[a]), y[o] = Math.min(0, c[o] + g[1 - n]), l.__rectSize = i[r], d) { var _ = { x: 0, y: 0 }; _[r] = Math.max(i[r] - c[r] - v, 0), _[a] = y[a], l.setClipPath(new _m({ shape: _ })), l.__rectSize = _[r] } else h.eachChild(function (t) { t.attr({ invisible: !0, silent: !0 }) }); var x = this._getPageInfo(t); return null != x.pageIndex && Va(s, { position: x.contentPosition }, d ? t : !1), this._updatePageInfoView(t, x), y }, _pageGo: function (t, e, i) { var n = this._getPageInfo(e)[t]; null != n && i.dispatchAction({ type: "legendScroll", scrollDataIndex: n, legendId: e.id }) }, _updatePageInfoView: function (t, e) { var i = this._controllerGroup; f(["pagePrev", "pageNext"], function (n) { var r = null != e[n + "DataIndex"], a = i.childOfName(n); a && (a.setStyle("fill", r ? t.get("pageIconColor", !0) : t.get("pageIconInactiveColor", !0)), a.cursor = r ? "pointer" : "default") }); var n = i.childOfName("pageText"), r = t.get("pageFormatter"), a = e.pageIndex, o = null != a ? a + 1 : 0, s = e.pageCount; n && r && n.setStyle("text", b(r) ? r.replace("{current}", o).replace("{total}", s) : r({ current: o, total: s })) }, _getPageInfo: function (t) { function e(t) { if (t) { var e = t.getBoundingRect(), i = e[l] + t.position[o]; return { s: i, e: i + e[s], i: t.__legendDataIndex } } } function i(t, e) { return t.e >= e && t.s <= e + a } var n = t.get("scrollDataIndex", !0), r = this.getContentGroup(), a = this._containerGroup.__rectSize, o = t.getOrient().index, s = uS[o], l = cS[o], h = this._findTargetItemIndex(n), u = r.children(), c = u[h], d = u.length, f = d ? 1 : 0, p = { contentPosition: r.position.slice(), pageCount: f, pageIndex: f - 1, pagePrevDataIndex: null, pageNextDataIndex: null }; if (!c) return p; var g = e(c); p.contentPosition[o] = -g.s; for (var v = h + 1, m = g, y = g, _ = null; d >= v; ++v)_ = e(u[v]), (!_ && y.e > m.s + a || _ && !i(_, m.s)) && (m = y.i > m.i ? y : _, m && (null == p.pageNextDataIndex && (p.pageNextDataIndex = m.i), ++p.pageCount)), y = _; for (var v = h - 1, m = g, y = g, _ = null; v >= -1; --v)_ = e(u[v]), _ && i(y, _.s) || !(m.i < y.i) || (y = m, null == p.pagePrevDataIndex && (p.pagePrevDataIndex = m.i), ++p.pageCount, ++p.pageIndex), m = _; return p }, _findTargetItemIndex: function (t) { var e, i, n = this.getContentGroup(); return this._showController && n.eachChild(function (n, r) { var a = n.__legendDataIndex; null == i && null != a && (i = r), a === t && (e = r) }), null != e ? e : i } }); uh("legendScroll", "legendscroll", function (t, e) { var i = t.scrollDataIndex; null != i && e.eachComponent({ mainType: "legend", subType: "scroll", query: t }, function (t) { t.setScrollDataIndex(i) }) }); var fS = function (t, e) { var i, n = [], r = t.seriesIndex; if (null == r || !(i = e.getSeriesByIndex(r))) return { point: [] }; var a = i.getData(), o = qn(a, t); if (null == o || 0 > o || x(o)) return { point: [] }; var s = a.getItemGraphicEl(o), l = i.coordinateSystem; if (i.getTooltipPosition) n = i.getTooltipPosition(o) || []; else if (l && l.dataToPoint) n = l.dataToPoint(a.getValues(p(l.dimensions, function (t) { return a.mapDimension(t) }), o, !0)) || []; else if (s) { var h = s.getBoundingRect().clone(); h.applyTransform(s.transform), n = [h.x + h.width / 2, h.y + h.height / 2] } return { point: n, el: s } }, pS = f, gS = _, vS = Zn(), mS = function (t, e, i) { var n = t.currTrigger, r = [t.x, t.y], a = t, o = t.dispatchAction || y(i.dispatchAction, i), s = e.getComponent("axisPointer").coordSysAxesInfo; if (s) { Gd(r) && (r = fS({ seriesIndex: a.seriesIndex, dataIndex: a.dataIndex }, e).point); var l = Gd(r), h = a.axesInfo, u = s.axesInfo, c = "leave" === n || Gd(r), d = {}, f = {}, p = { list: [], map: {} }, g = { showPointer: gS(zd, f), showTooltip: gS(Bd, p) }; pS(s.coordSysMap, function (t, e) { var i = l || t.containPoint(r); pS(s.coordSysAxesInfo[e], function (t) { var e = t.axis, n = Vd(h, t); if (!c && i && (!h || n)) { var a = n && n.value; null != a || l || (a = e.pointToData(r)), null != a && Od(t, a, g, !1, d) } }) }); var v = {}; return pS(u, function (t, e) { var i = t.linkGroup; i && !f[e] && pS(i.axesInfo, function (e, n) { var r = f[n]; if (e !== t && r) { var a = r.value; i.mapper && (a = t.axis.scale.parse(i.mapper(a, Hd(e), Hd(t)))), v[t.key] = a } }) }), pS(v, function (t, e) { Od(u[e], t, g, !0, d) }), Rd(f, u, d), Nd(p, r, t, o), Fd(u, o, i), d } }, yS = (mh({ type: "axisPointer", coordSysAxesInfo: null, defaultOption: { show: "auto", triggerOn: null, zlevel: 0, z: 50, type: "line", snap: !1, triggerTooltip: !0, value: null, status: null, link: [], animation: null, animationDurationUpdate: 200, lineStyle: { color: "#aaa", width: 1, type: "solid" }, shadowStyle: { color: "rgba(150,150,150,0.3)" }, label: { show: !0, formatter: null, precision: "auto", margin: 3, color: "#fff", padding: [5, 7, 5, 7], backgroundColor: "auto", borderColor: null, borderWidth: 0, shadowBlur: 3, shadowColor: "#aaa" }, handle: { show: !1, icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z", size: 45, margin: 50, color: "#333", shadowBlur: 3, shadowColor: "#aaa", shadowOffsetX: 0, shadowOffsetY: 2, throttle: 40 } } }), Zn()), _S = f, xS = yh({ type: "axisPointer", render: function (t, e, i) { var n = e.getComponent("tooltip"), r = t.get("triggerOn") || n && n.get("triggerOn") || "mousemove|click"; Wd("axisPointer", i, function (t, e, i) { "none" !== r && ("leave" === t || r.indexOf(t) >= 0) && i({ type: "updateAxisPointer", currTrigger: t, x: e && e.offsetX, y: e && e.offsetY }) }) }, remove: function (t, e) { Zd(e.getZr(), "axisPointer"), xS.superApply(this._model, "remove", arguments) }, dispose: function (t, e) { Zd("axisPointer", e), xS.superApply(this._model, "dispose", arguments) } }), wS = Zn(), bS = n, SS = y; Kd.prototype = { _group: null, _lastGraphicKey: null, _handle: null, _dragging: !1, _lastValue: null, _lastStatus: null, _payloadInfo: null, animationThreshold: 15, render: function (t, e, i, n) { var r = e.get("value"), a = e.get("status"); if (this._axisModel = t, this._axisPointerModel = e, this._api = i, n || this._lastValue !== r || this._lastStatus !== a) { this._lastValue = r, this._lastStatus = a; var o = this._group, s = this._handle; if (!a || "hide" === a) return o && o.hide(), void (s && s.hide()); o && o.show(), s && s.show(); var l = {}; this.makeElOption(l, r, t, e, i); var h = l.graphicKey; h !== this._lastGraphicKey && this.clear(i), this._lastGraphicKey = h; var u = this._moveAnimation = this.determineAnimation(t, e); if (o) { var c = _($d, e, u); this.updatePointerEl(o, l, c, e), this.updateLabelEl(o, l, c, e) } else o = this._group = new jp, this.createPointerEl(o, l, t, e), this.createLabelEl(o, l, t, e), i.getZr().add(o); ef(o, e, !0), this._renderHandle(r) } }, remove: function (t) { this.clear(t) }, dispose: function (t) { this.clear(t) }, determineAnimation: function (t, e) { var i = e.get("animation"), n = t.axis, r = "category" === n.type, a = e.get("snap"); if (!a && !r) return !1; if ("auto" === i || null == i) { var o = this.animationThreshold; if (r && n.getBandWidth() > o) return !0; if (a) { var s = Gc(t).seriesDataCount, l = n.getExtent(); return Math.abs(l[0] - l[1]) / s > o } return !1 } return i === !0 }, makeElOption: function () { }, createPointerEl: function (t, e) { var i = e.pointer; if (i) { var n = wS(t).pointerEl = new Xm[i.type](bS(e.pointer)); t.add(n) } }, createLabelEl: function (t, e, i, n) { if (e.label) { var r = wS(t).labelEl = new _m(bS(e.label)); t.add(r), Jd(r, n) } }, updatePointerEl: function (t, e, i) { var n = wS(t).pointerEl; n && e.pointer && (n.setStyle(e.pointer.style), i(n, { shape: e.pointer.shape })) }, updateLabelEl: function (t, e, i, n) { var r = wS(t).labelEl; r && (r.setStyle(e.label.style), i(r, { shape: e.label.shape, position: e.label.position }), Jd(r, n)) }, _renderHandle: function (t) { if (!this._dragging && this.updateHandleTransform) { var e = this._axisPointerModel, i = this._api.getZr(), n = this._handle, r = e.getModel("handle"), a = e.get("status"); if (!r.get("show") || !a || "hide" === a) return n && i.remove(n), void (this._handle = null); var o; this._handle || (o = !0, n = this._handle = qa(r.get("icon"), { cursor: "move", draggable: !0, onmousemove: function (t) { lp(t.event) }, onmousedown: SS(this._onHandleDragMove, this, 0, 0), drift: SS(this._onHandleDragMove, this), ondragend: SS(this._onHandleDragEnd, this) }), i.add(n)), ef(n, e, !1); var s = ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]; n.setStyle(r.getItemStyle(null, s)); var l = r.get("size"); x(l) || (l = [l, l]), n.attr("scale", [l[0] / 2, l[1] / 2]), rl(this, "_doDispatchAxisPointer", r.get("throttle") || 0, "fixRate"), this._moveHandleToValue(t, o) } }, _moveHandleToValue: function (t, e) { $d(this._axisPointerModel, !e && this._moveAnimation, this._handle, tf(this.getHandleTransform(t, this._axisModel, this._axisPointerModel))) }, _onHandleDragMove: function (t, e) { var i = this._handle; if (i) { this._dragging = !0; var n = this.updateHandleTransform(tf(i), [t, e], this._axisModel, this._axisPointerModel); this._payloadInfo = n, i.stopAnimation(), i.attr(tf(n)), wS(i).lastProp = null, this._doDispatchAxisPointer() } }, _doDispatchAxisPointer: function () { var t = this._handle; if (t) { var e = this._payloadInfo, i = this._axisModel; this._api.dispatchAction({ type: "updateAxisPointer", x: e.cursorPoint[0], y: e.cursorPoint[1], tooltipOption: e.tooltipOption, axesInfo: [{ axisDim: i.axis.dim, axisIndex: i.componentIndex }] }) } }, _onHandleDragEnd: function () { this._dragging = !1; var t = this._handle; if (t) { var e = this._axisPointerModel.get("value"); this._moveHandleToValue(e), this._api.dispatchAction({ type: "hideTip" }) } }, getHandleTransform: null, updateHandleTransform: null, clear: function (t) { this._lastValue = null, this._lastStatus = null; var e = t.getZr(), i = this._group, n = this._handle; e && i && (this._lastGraphicKey = null, i && e.remove(i), n && e.remove(n), this._group = null, this._handle = null, this._payloadInfo = null) }, doClear: function () { }, buildLabel: function (t, e, i) { return i = i || 0, { x: t[i], y: t[1 - i], width: e[i], height: e[1 - i] } } }, Kd.prototype.constructor = Kd, nr(Kd); var MS = Kd.extend({ makeElOption: function (t, e, i, n, r) { var a = i.axis, o = a.grid, s = n.get("type"), l = cf(o, a).getOtherAxis(a).getGlobalExtent(), h = a.toGlobalCoord(a.dataToCoord(e, !0)); if (s && "none" !== s) { var u = nf(n), c = IS[s](a, h, l); c.style = u, t.graphicKey = c.type, t.pointer = c } var d = qc(o.model, i); lf(e, t, d, i, n, r) }, getHandleTransform: function (t, e, i) { var n = qc(e.axis.grid.model, e, { labelInside: !1 }); return n.labelMargin = i.get("handle.margin"), { position: sf(e.axis, t, n), rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0) } }, updateHandleTransform: function (t, e, i) { var n = i.axis, r = n.grid, a = n.getGlobalExtent(!0), o = cf(r, n).getOtherAxis(n).getGlobalExtent(), s = "x" === n.dim ? 0 : 1, l = t.position; l[s] += e[s], l[s] = Math.min(a[1], l[s]), l[s] = Math.max(a[0], l[s]); var h = (o[1] + o[0]) / 2, u = [h, h]; u[s] = l[s]; var c = [{ verticalAlign: "middle" }, { align: "center" }]; return { position: l, rotation: t.rotation, cursorPoint: u, tooltipOption: c[s] } } }), IS = { line: function (t, e, i) { var n = hf([e, i[0]], [e, i[1]], df(t)); return { type: "Line", subPixelOptimize: !0, shape: n } }, shadow: function (t, e, i) { var n = Math.max(1, t.getBandWidth()), r = i[1] - i[0]; return { type: "Rect", shape: uf([e - n / 2, i[0]], [n, r], df(t)) } } }; gb.registerAxisPointerClass("CartesianAxisPointer", MS), sh(function (t) { if (t) { (!t.axisPointer || 0 === t.axisPointer.length) && (t.axisPointer = {}); var e = t.axisPointer.link; e && !x(e) && (t.axisPointer.link = [e]) } }), lh(ox.PROCESSOR.STATISTIC, function (t, e) { t.getComponent("axisPointer").coordSysAxesInfo = zc(t, e) }), uh({ type: "updateAxisPointer", event: "updateAxisPointer", update: ":updateAxisPointer" }, mS), mh({ type: "tooltip", dependencies: ["axisPointer"], defaultOption: { zlevel: 0, z: 60, show: !0, showContent: !0, trigger: "item", triggerOn: "mousemove|click", alwaysShowContent: !1, displayMode: "single", renderMode: "auto", confine: !1, showDelay: 0, hideDelay: 100, transitionDuration: .4, enterable: !1, backgroundColor: "rgba(50,50,50,0.7)", borderColor: "#333", borderRadius: 4, borderWidth: 0, padding: 5, extraCssText: "", axisPointer: { type: "line", axis: "auto", animation: "auto", animationDurationUpdate: 200, animationEasingUpdate: "exponentialOut", crossStyle: { color: "#999", width: 1, type: "dashed", textStyle: {} } }, textStyle: { color: "#fff", fontSize: 14 } } }); var TS = f, CS = Io, AS = ["", "-webkit-", "-moz-", "-o-"], DS = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"; vf.prototype = { constructor: vf, _enterable: !0, update: function () { var t = this._container, e = t.currentStyle || document.defaultView.getComputedStyle(t), i = t.style; "absolute" !== i.position && "absolute" !== e.position && (i.position = "relative") }, show: function (t) { clearTimeout(this._hideTimeout); var e = this.el; e.style.cssText = DS + gf(t) + ";left:" + this._x + "px;top:" + this._y + "px;" + (t.get("extraCssText") || ""), e.style.display = e.innerHTML ? "block" : "none", e.style.pointerEvents = this._enterable ? "auto" : "none", this._show = !0 }, setContent: function (t) { this.el.innerHTML = null == t ? "" : t }, setEnterable: function (t) { this._enterable = t }, getSize: function () { var t = this.el; return [t.clientWidth, t.clientHeight] }, moveTo: function (t, e) { var i, n = this._zr; n && n.painter && (i = n.painter.getViewportRootOffset()) && (t += i.offsetLeft, e += i.offsetTop); var r = this.el.style; r.left = t + "px", r.top = e + "px", this._x = t, this._y = e }, hide: function () { this.el.style.display = "none", this._show = !1 }, hideLater: function (t) { !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(y(this.hide, this), t)) : this.hide()) }, isShow: function () { return this._show }, getOuterSize: function () { var t = this.el.clientWidth, e = this.el.clientHeight; if (document.defaultView && document.defaultView.getComputedStyle) { var i = document.defaultView.getComputedStyle(this.el); i && (t += parseInt(i.borderLeftWidth, 10) + parseInt(i.borderRightWidth, 10), e += parseInt(i.borderTopWidth, 10) + parseInt(i.borderBottomWidth, 10)) } return { width: t, height: e } } }, mf.prototype = { constructor: mf, _enterable: !0, update: function () { }, show: function () { this._hideTimeout && clearTimeout(this._hideTimeout), this.el.attr("show", !0), this._show = !0 }, setContent: function (t, e, i) { this.el && this._zr.remove(this.el); for (var n = {}, r = t, a = "{marker", o = "|}", s = r.indexOf(a); s >= 0;) { var l = r.indexOf(o), h = r.substr(s + a.length, l - s - a.length); n["marker" + h] = h.indexOf("sub") > -1 ? { textWidth: 4, textHeight: 4, textBorderRadius: 2, textBackgroundColor: e[h], textOffset: [3, 0] } : { textWidth: 10, textHeight: 10, textBorderRadius: 5, textBackgroundColor: e[h] }, r = r.substr(l + 1), s = r.indexOf("{marker") } this.el = new sm({ style: { rich: n, text: t, textLineHeight: 20, textBackgroundColor: i.get("backgroundColor"), textBorderRadius: i.get("borderRadius"), textFill: i.get("textStyle.color"), textPadding: i.get("padding") }, z: i.get("z") }), this._zr.add(this.el); var u = this; this.el.on("mouseover", function () { u._enterable && (clearTimeout(u._hideTimeout), u._show = !0), u._inContent = !0 }), this.el.on("mouseout", function () { u._enterable && u._show && u.hideLater(u._hideDelay), u._inContent = !1 }) }, setEnterable: function (t) { this._enterable = t }, getSize: function () { var t = this.el.getBoundingRect(); return [t.width, t.height] }, moveTo: function (t, e) { this.el && this.el.attr("position", [t, e]) }, hide: function () { this.el && this.el.hide(), this._show = !1 }, hideLater: function (t) { !this._show || this._inContent && this._enterable || (t ? (this._hideDelay = t, this._show = !1, this._hideTimeout = setTimeout(y(this.hide, this), t)) : this.hide()) }, isShow: function () { return this._show }, getOuterSize: function () { var t = this.getSize(); return { width: t[0], height: t[1] } } }; var kS = y, PS = f, LS = so, OS = new _m({ shape: { x: -1, y: -1, width: 2, height: 2 } }); yh({ type: "tooltip", init: function (t, e) { if (!Ef.node) { var i = t.getComponent("tooltip"), n = i.get("renderMode"); this._renderMode = tr(n); var r; "html" === this._renderMode ? (r = new vf(e.getDom(), e), this._newLine = "<br/>") : (r = new mf(e), this._newLine = "\n"), this._tooltipContent = r } }, render: function (t, e, i) { if (!Ef.node) { this.group.removeAll(), this._tooltipModel = t, this._ecModel = e, this._api = i, this._lastDataByCoordSys = null, this._alwaysShowContent = t.get("alwaysShowContent"); var n = this._tooltipContent; n.update(), n.setEnterable(t.get("enterable")), this._initGlobalListener(), this._keepShow() } }, _initGlobalListener: function () { var t = this._tooltipModel, e = t.get("triggerOn"); Wd("itemTooltip", this._api, kS(function (t, i, n) { "none" !== e && (e.indexOf(t) >= 0 ? this._tryShow(i, n) : "leave" === t && this._hide(n)) }, this)) }, _keepShow: function () { var t = this._tooltipModel, e = this._ecModel, i = this._api; if (null != this._lastX && null != this._lastY && "none" !== t.get("triggerOn")) { var n = this; clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(function () { !i.isDisposed() && n.manuallyShowTip(t, e, i, { x: n._lastX, y: n._lastY }) }) } }, manuallyShowTip: function (t, e, i, n) { if (n.from !== this.uid && !Ef.node) { var r = _f(n, i); this._ticket = ""; var a = n.dataByCoordSys; if (n.tooltip && null != n.x && null != n.y) { var o = OS; o.position = [n.x, n.y], o.update(), o.tooltip = n.tooltip, this._tryShow({ offsetX: n.x, offsetY: n.y, target: o }, r) } else if (a) this._tryShow({ offsetX: n.x, offsetY: n.y, position: n.position, event: {}, dataByCoordSys: n.dataByCoordSys, tooltipOption: n.tooltipOption }, r); else if (null != n.seriesIndex) { if (this._manuallyAxisShowTip(t, e, i, n)) return; var s = fS(n, e), l = s.point[0], h = s.point[1]; null != l && null != h && this._tryShow({ offsetX: l, offsetY: h, position: n.position, target: s.el, event: {} }, r) } else null != n.x && null != n.y && (i.dispatchAction({ type: "updateAxisPointer", x: n.x, y: n.y }), this._tryShow({ offsetX: n.x, offsetY: n.y, position: n.position, target: i.getZr().findHover(n.x, n.y).target, event: {} }, r)) } }, manuallyHideTip: function (t, e, i, n) { var r = this._tooltipContent; !this._alwaysShowContent && this._tooltipModel && r.hideLater(this._tooltipModel.get("hideDelay")), this._lastX = this._lastY = null, n.from !== this.uid && this._hide(_f(n, i)) }, _manuallyAxisShowTip: function (t, e, i, n) { var r = n.seriesIndex, a = n.dataIndex, o = e.getComponent("axisPointer").coordSysAxesInfo; if (null != r && null != a && null != o) { var s = e.getSeriesByIndex(r); if (s) { var l = s.getData(), t = yf([l.getItemModel(a), s, (s.coordinateSystem || {}).model, t]); if ("axis" === t.get("trigger")) return i.dispatchAction({ type: "updateAxisPointer", seriesIndex: r, dataIndex: a, position: n.position }), !0 } } }, _tryShow: function (t, e) { var i = t.target, n = this._tooltipModel; if (n) { this._lastX = t.offsetX, this._lastY = t.offsetY; var r = t.dataByCoordSys; r && r.length ? this._showAxisTooltip(r, t) : i && null != i.dataIndex ? (this._lastDataByCoordSys = null, this._showSeriesItemTooltip(t, i, e)) : i && i.tooltip ? (this._lastDataByCoordSys = null, this._showComponentItemTooltip(t, i, e)) : (this._lastDataByCoordSys = null, this._hide(e)) } }, _showOrMove: function (t, e) { var i = t.get("showDelay"); e = y(e, this), clearTimeout(this._showTimout), i > 0 ? this._showTimout = setTimeout(e, i) : e() }, _showAxisTooltip: function (t, e) { var i = this._ecModel, n = this._tooltipModel, a = [e.offsetX, e.offsetY], o = [], s = [], l = yf([e.tooltipOption, n]), h = this._renderMode, u = this._newLine, c = {}; PS(t, function (t) { PS(t.dataByAxis, function (t) { var e = i.getComponent(t.axisDim + "Axis", t.axisIndex), n = t.value, a = []; if (e && null != n) { var l = of(n, e.axis, i, t.seriesDataIndices, t.valueLabelOpt); f(t.seriesDataIndices, function (o) { var u = i.getSeriesByIndex(o.seriesIndex), d = o.dataIndexInside, f = u && u.getDataParams(d); if (f.axisDim = t.axisDim, f.axisIndex = t.axisIndex, f.axisType = t.axisType, f.axisId = t.axisId, f.axisValue = Cu(e.axis, n), f.axisValueLabel = l, f) { s.push(f); var p, g = u.formatTooltip(d, !0, null, h); if (S(g)) { p = g.html; var v = g.markers; r(c, v) } else p = g; a.push(p) } }); var d = l; o.push("html" !== h ? a.join(u) : (d ? To(d) + u : "") + a.join(u)) } }) }, this), o.reverse(), o = o.join(this._newLine + this._newLine); var d = e.position; this._showOrMove(l, function () { this._updateContentNotChangedOnAxis(t) ? this._updatePosition(l, d, a[0], a[1], this._tooltipContent, s) : this._showTooltipContent(l, o, s, Math.random(), a[0], a[1], d, void 0, c) }) }, _showSeriesItemTooltip: function (t, e, i) { var n = this._ecModel, r = e.seriesIndex, a = n.getSeriesByIndex(r), o = e.dataModel || a, s = e.dataIndex, l = e.dataType, h = o.getData(), u = yf([h.getItemModel(s), o, a && (a.coordinateSystem || {}).model, this._tooltipModel]), c = u.get("trigger"); if (null == c || "item" === c) { var d, f, p = o.getDataParams(s, l), g = o.formatTooltip(s, !1, l, this._renderMode); S(g) ? (d = g.html, f = g.markers) : (d = g, f = null); var v = "item_" + o.name + "_" + s; this._showOrMove(u, function () { this._showTooltipContent(u, d, p, v, t.offsetX, t.offsetY, t.position, t.target, f) }), i({ type: "showTip", dataIndexInside: s, dataIndex: h.getRawIndex(s), seriesIndex: r, from: this.uid }) } }, _showComponentItemTooltip: function (t, e, i) { var n = e.tooltip; if ("string" == typeof n) { var r = n; n = { content: r, formatter: r } } var a = new Ja(n, this._tooltipModel, this._ecModel), o = a.get("content"), s = Math.random(); this._showOrMove(a, function () { this._showTooltipContent(a, o, a.get("formatterParams") || {}, s, t.offsetX, t.offsetY, t.position, e) }), i({ type: "showTip", from: this.uid }) }, _showTooltipContent: function (t, e, i, n, r, a, o, s, l) { if (this._ticket = "", t.get("showContent") && t.get("show")) { var h = this._tooltipContent, u = t.get("formatter"); o = o || t.get("position"); var c = e; if (u && "string" == typeof u) c = Co(u, i, !0); else if ("function" == typeof u) { var d = kS(function (e, n) { e === this._ticket && (h.setContent(n, l, t), this._updatePosition(t, o, r, a, h, i, s)) }, this); this._ticket = n, c = u(i, n, d) } h.setContent(c, l, t), h.show(t), this._updatePosition(t, o, r, a, h, i, s) } }, _updatePosition: function (t, e, i, n, r, a, o) { var s = this._api.getWidth(), l = this._api.getHeight(); e = e || t.get("position"); var h = r.getSize(), u = t.get("align"), c = t.get("verticalAlign"), d = o && o.getBoundingRect().clone(); if (o && d.applyTransform(o.transform), "function" == typeof e && (e = e([i, n], a, r.el, d, { viewSize: [s, l], contentSize: h.slice() })), x(e)) i = LS(e[0], s), n = LS(e[1], l); else if (S(e)) { e.width = h[0], e.height = h[1]; var f = Bo(e, { width: s, height: l }); i = f.x, n = f.y, u = null, c = null } else if ("string" == typeof e && o) { var p = bf(e, d, h); i = p[0], n = p[1] } else { var p = xf(i, n, r, s, l, u ? null : 20, c ? null : 20); i = p[0], n = p[1] } if (u && (i -= Sf(u) ? h[0] / 2 : "right" === u ? h[0] : 0), c && (n -= Sf(c) ? h[1] / 2 : "bottom" === c ? h[1] : 0), t.get("confine")) { var p = wf(i, n, r, s, l); i = p[0], n = p[1] } r.moveTo(i, n) }, _updateContentNotChangedOnAxis: function (t) { var e = this._lastDataByCoordSys, i = !!e && e.length === t.length; return i && PS(e, function (e, n) { var r = e.dataByAxis || {}, a = t[n] || {}, o = a.dataByAxis || []; i &= r.length === o.length, i && PS(r, function (t, e) { var n = o[e] || {}, r = t.seriesDataIndices || [], a = n.seriesDataIndices || []; i &= t.value === n.value && t.axisType === n.axisType && t.axisId === n.axisId && r.length === a.length, i && PS(r, function (t, e) { var n = a[e]; i &= t.seriesIndex === n.seriesIndex && t.dataIndex === n.dataIndex }) }) }), this._lastDataByCoordSys = t, !!i }, _hide: function (t) { this._lastDataByCoordSys = null, t({ type: "hideTip", from: this.uid }) }, dispose: function (t, e) { Ef.node || (this._tooltipContent.hide(), Zd("itemTooltip", e)) } }), uh({ type: "showTip", event: "showTip", update: "tooltip:manuallyShowTip" }, function () { }), uh({ type: "hideTip", event: "hideTip", update: "tooltip:manuallyHideTip" }, function () { }); var ES, zS = "urn:schemas-microsoft-com:vml", BS = "undefined" == typeof window ? null : window, RS = !1, NS = BS && BS.document; if (NS && !Ef.canvasSupported) try { !NS.namespaces.zrvml && NS.namespaces.add("zrvml", zS), ES = function (t) { return NS.createElement("<zrvml:" + t + ' class="zrvml">') } } catch (FS) { ES = function (t) { return NS.createElement("<" + t + ' xmlns="' + zS + '" class="zrvml">') } } var VS = Bv.CMD, HS = Math.round, GS = Math.sqrt, WS = Math.abs, XS = Math.cos, US = Math.sin, YS = Math.max; if (!Ef.canvasSupported) {
  34. var jS = ",", qS = "progid:DXImageTransform.Microsoft", ZS = 21600, KS = ZS / 2, $S = 1e5, QS = 1e3, JS = function (t) { t.style.cssText = "position:absolute;left:0;top:0;width:1px;height:1px;", t.coordsize = ZS + "," + ZS, t.coordorigin = "0,0" }, tM = function (t) { return String(t).replace(/&/g, "&amp;").replace(/"/g, "&quot;") }, eM = function (t, e, i) { return "rgb(" + [t, e, i].join(",") + ")" }, iM = function (t, e) { e && t && e.parentNode !== t && t.appendChild(e) }, nM = function (t, e) { e && t && e.parentNode === t && t.removeChild(e) }, rM = function (t, e, i) { return (parseFloat(t) || 0) * $S + (parseFloat(e) || 0) * QS + i }, aM = _n, oM = function (t, e, i) { var n = qe(e); i = +i, isNaN(i) && (i = 1), n && (t.color = eM(n[0], n[1], n[2]), t.opacity = i * n[3]) }, sM = function (t) { var e = qe(t); return [eM(e[0], e[1], e[2]), e[3]] }, lM = function (t, e, i) { var n = e.fill; if (null != n) if (n instanceof Tm) { var r, a = 0, o = [0, 0], s = 0, l = 1, h = i.getBoundingRect(), u = h.width, c = h.height; if ("linear" === n.type) { r = "gradient"; var d = i.transform, f = [n.x * u, n.y * c], p = [n.x2 * u, n.y2 * c]; d && (ae(f, f, d), ae(p, p, d)); var g = p[0] - f[0], v = p[1] - f[1]; a = 180 * Math.atan2(g, v) / Math.PI, 0 > a && (a += 360), 1e-6 > a && (a = 0) } else { r = "gradientradial"; var f = [n.x * u, n.y * c], d = i.transform, m = i.scale, y = u, _ = c; o = [(f[0] - h.x) / y, (f[1] - h.y) / _], d && ae(f, f, d), y /= m[0] * ZS, _ /= m[1] * ZS; var x = YS(y, _); s = 0 / x, l = 2 * n.r / x - s } var w = n.colorStops.slice(); w.sort(function (t, e) { return t.offset - e.offset }); for (var b = w.length, S = [], M = [], I = 0; b > I; I++) { var T = w[I], C = sM(T.color); M.push(T.offset * l + s + " " + C[0]), (0 === I || I === b - 1) && S.push(C) } if (b >= 2) { var A = S[0][0], D = S[1][0], k = S[0][1] * e.opacity, P = S[1][1] * e.opacity; t.type = r, t.method = "none", t.focus = "100%", t.angle = a, t.color = A, t.color2 = D, t.colors = M.join(","), t.opacity = P, t.opacity2 = k } "radial" === r && (t.focusposition = o.join(",")) } else oM(t, n, e.opacity) }, hM = function (t, e) { e.lineDash && (t.dashstyle = e.lineDash.join(" ")), null == e.stroke || e.stroke instanceof Tm || oM(t, e.stroke, e.opacity) }, uM = function (t, e, i, n) { var r = "fill" === e, a = t.getElementsByTagName(e)[0]; null != i[e] && "none" !== i[e] && (r || !r && i.lineWidth) ? (t[r ? "filled" : "stroked"] = "true", i[e] instanceof Tm && nM(t, a), a || (a = Mf(e)), r ? lM(a, i, n) : hM(a, i), iM(t, a)) : (t[r ? "filled" : "stroked"] = "false", nM(t, a)) }, cM = [[], [], []], dM = function (t, e) { var i, n, r, a, o, s, l = VS.M, h = VS.C, u = VS.L, c = VS.A, d = VS.Q, f = [], p = t.data, g = t.len(); for (a = 0; g > a;) { switch (r = p[a++], n = "", i = 0, r) { case l: n = " m ", i = 1, o = p[a++], s = p[a++], cM[0][0] = o, cM[0][1] = s; break; case u: n = " l ", i = 1, o = p[a++], s = p[a++], cM[0][0] = o, cM[0][1] = s; break; case d: case h: n = " c ", i = 3; var v, m, y = p[a++], _ = p[a++], x = p[a++], w = p[a++]; r === d ? (v = x, m = w, x = (x + 2 * y) / 3, w = (w + 2 * _) / 3, y = (o + 2 * y) / 3, _ = (s + 2 * _) / 3) : (v = p[a++], m = p[a++]), cM[0][0] = y, cM[0][1] = _, cM[1][0] = x, cM[1][1] = w, cM[2][0] = v, cM[2][1] = m, o = v, s = m; break; case c: var b = 0, S = 0, M = 1, I = 1, T = 0; e && (b = e[4], S = e[5], M = GS(e[0] * e[0] + e[1] * e[1]), I = GS(e[2] * e[2] + e[3] * e[3]), T = Math.atan2(-e[1] / I, e[0] / M)); var C = p[a++], A = p[a++], D = p[a++], k = p[a++], P = p[a++] + T, L = p[a++] + P + T; a++; var O = p[a++], E = C + XS(P) * D, z = A + US(P) * k, y = C + XS(L) * D, _ = A + US(L) * k, B = O ? " wa " : " at "; Math.abs(E - y) < 1e-4 && (Math.abs(L - P) > .01 ? O && (E += 270 / ZS) : Math.abs(z - A) < 1e-4 ? O && C > E || !O && E > C ? _ -= 270 / ZS : _ += 270 / ZS : O && A > z || !O && z > A ? y += 270 / ZS : y -= 270 / ZS), f.push(B, HS(((C - D) * M + b) * ZS - KS), jS, HS(((A - k) * I + S) * ZS - KS), jS, HS(((C + D) * M + b) * ZS - KS), jS, HS(((A + k) * I + S) * ZS - KS), jS, HS((E * M + b) * ZS - KS), jS, HS((z * I + S) * ZS - KS), jS, HS((y * M + b) * ZS - KS), jS, HS((_ * I + S) * ZS - KS)), o = y, s = _; break; case VS.R: var R = cM[0], N = cM[1]; R[0] = p[a++], R[1] = p[a++], N[0] = R[0] + p[a++], N[1] = R[1] + p[a++], e && (ae(R, R, e), ae(N, N, e)), R[0] = HS(R[0] * ZS - KS), N[0] = HS(N[0] * ZS - KS), R[1] = HS(R[1] * ZS - KS), N[1] = HS(N[1] * ZS - KS), f.push(" m ", R[0], jS, R[1], " l ", N[0], jS, R[1], " l ", N[0], jS, N[1], " l ", R[0], jS, N[1]); break; case VS.Z: f.push(" x ") }if (i > 0) { f.push(n); for (var F = 0; i > F; F++) { var V = cM[F]; e && ae(V, V, e), f.push(HS(V[0] * ZS - KS), jS, HS(V[1] * ZS - KS), i - 1 > F ? jS : "") } } } return f.join("") }; Hr.prototype.brushVML = function (t) { var e = this.style, i = this._vmlEl; i || (i = Mf("shape"), JS(i), this._vmlEl = i), uM(i, "fill", e, this), uM(i, "stroke", e, this); var n = this.transform, r = null != n, a = i.getElementsByTagName("stroke")[0]; if (a) { var o = e.lineWidth; if (r && !e.strokeNoScale) { var s = n[0] * n[3] - n[1] * n[2]; o *= GS(WS(s)) } a.weight = o + "px" } var l = this.path || (this.path = new Bv); this.__dirtyPath && (l.beginPath(), l.subPixelOptimize = !1, this.buildPath(l, this.shape), l.toStatic(), this.__dirtyPath = !1), i.path = dM(l, this.transform), i.style.zIndex = rM(this.zlevel, this.z, this.z2), iM(t, i), null != e.text ? this.drawRectText(t, this.getBoundingRect()) : this.removeRectText(t) }, Hr.prototype.onRemove = function (t) { nM(t, this._vmlEl), this.removeRectText(t) }, Hr.prototype.onAdd = function (t) { iM(t, this._vmlEl), this.appendRectText(t) }; var fM = function (t) { return "object" == typeof t && t.tagName && "IMG" === t.tagName.toUpperCase() }; Sn.prototype.brushVML = function (t) { var e, i, n = this.style, r = n.image; if (fM(r)) { var a = r.src; if (a === this._imageSrc) e = this._imageWidth, i = this._imageHeight; else { var o = r.runtimeStyle, s = o.width, l = o.height; o.width = "auto", o.height = "auto", e = r.width, i = r.height, o.width = s, o.height = l, this._imageSrc = a, this._imageWidth = e, this._imageHeight = i } r = a } else r === this._imageSrc && (e = this._imageWidth, i = this._imageHeight); if (r) { var h = n.x || 0, u = n.y || 0, c = n.width, d = n.height, f = n.sWidth, p = n.sHeight, g = n.sx || 0, v = n.sy || 0, m = f && p, y = this._vmlEl; y || (y = NS.createElement("div"), JS(y), this._vmlEl = y); var _, x = y.style, w = !1, b = 1, S = 1; if (this.transform && (_ = this.transform, b = GS(_[0] * _[0] + _[1] * _[1]), S = GS(_[2] * _[2] + _[3] * _[3]), w = _[1] || _[2]), w) { var M = [h, u], I = [h + c, u], T = [h, u + d], C = [h + c, u + d]; ae(M, M, _), ae(I, I, _), ae(T, T, _), ae(C, C, _); var A = YS(M[0], I[0], T[0], C[0]), D = YS(M[1], I[1], T[1], C[1]), k = []; k.push("M11=", _[0] / b, jS, "M12=", _[2] / S, jS, "M21=", _[1] / b, jS, "M22=", _[3] / S, jS, "Dx=", HS(h * b + _[4]), jS, "Dy=", HS(u * S + _[5])), x.padding = "0 " + HS(A) + "px " + HS(D) + "px 0", x.filter = qS + ".Matrix(" + k.join("") + ", SizingMethod=clip)" } else _ && (h = h * b + _[4], u = u * S + _[5]), x.filter = "", x.left = HS(h) + "px", x.top = HS(u) + "px"; var P = this._imageEl, L = this._cropEl; P || (P = NS.createElement("div"), this._imageEl = P); var O = P.style; if (m) { if (e && i) O.width = HS(b * e * c / f) + "px", O.height = HS(S * i * d / p) + "px"; else { var E = new Image, z = this; E.onload = function () { E.onload = null, e = E.width, i = E.height, O.width = HS(b * e * c / f) + "px", O.height = HS(S * i * d / p) + "px", z._imageWidth = e, z._imageHeight = i, z._imageSrc = r }, E.src = r } L || (L = NS.createElement("div"), L.style.overflow = "hidden", this._cropEl = L); var B = L.style; B.width = HS((c + g * c / f) * b), B.height = HS((d + v * d / p) * S), B.filter = qS + ".Matrix(Dx=" + -g * c / f * b + ",Dy=" + -v * d / p * S + ")", L.parentNode || y.appendChild(L), P.parentNode !== L && L.appendChild(P) } else O.width = HS(b * c) + "px", O.height = HS(S * d) + "px", y.appendChild(P), L && L.parentNode && (y.removeChild(L), this._cropEl = null); var R = "", N = n.opacity; 1 > N && (R += ".Alpha(opacity=" + HS(100 * N) + ") "), R += qS + ".AlphaImageLoader(src=" + r + ", SizingMethod=scale)", O.filter = R, y.style.zIndex = rM(this.zlevel, this.z, this.z2), iM(t, y), null != n.text && this.drawRectText(t, this.getBoundingRect()) } }, Sn.prototype.onRemove = function (t) { nM(t, this._vmlEl), this._vmlEl = null, this._cropEl = null, this._imageEl = null, this.removeRectText(t) }, Sn.prototype.onAdd = function (t) { iM(t, this._vmlEl), this.appendRectText(t) }; var pM, gM = "normal", vM = {}, mM = 0, yM = 100, _M = document.createElement("div"), xM = function (t) { var e = vM[t]; if (!e) { mM > yM && (mM = 0, vM = {}); var i, n = _M.style; try { n.font = t, i = n.fontFamily.split(",")[0] } catch (r) { } e = { style: n.fontStyle || gM, variant: n.fontVariant || gM, weight: n.fontWeight || gM, size: 0 | parseFloat(n.fontSize || 12), family: i || "Microsoft YaHei" }, vM[t] = e, mM++ } return e }; Ni("measureText", function (t, e) { var i = NS; pM || (pM = i.createElement("div"), pM.style.cssText = "position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;", NS.body.appendChild(pM)); try { pM.style.font = e } catch (n) { } return pM.innerHTML = "", pM.appendChild(i.createTextNode(t)), { width: pM.offsetWidth } }); for (var wM = new xi, bM = function (t, e, i, n) {
  35. var r = this.style; this.__dirty && rn(r, !0); var a = r.text; if (null != a && (a += ""), a) {
  36. if (r.rich) { var o = Ji(a, r); a = []; for (var s = 0; s < o.lines.length; s++) { for (var l = o.lines[s].tokens, h = [], u = 0; u < l.length; u++)h.push(l[u].text); a.push(h.join("")) } a = a.join("\n") } var c, d, f = r.textAlign, p = r.textVerticalAlign, g = xM(r.font), v = g.style + " " + g.variant + " " + g.weight + " " + g.size + 'px "' + g.family + '"';
  37. i = i || Vi(a, v, f, p, r.textPadding, r.textLineHeight); var m = this.transform; if (m && !n && (wM.copy(e), wM.applyTransform(m), e = wM), n) c = e.x, d = e.y; else { var y = r.textPosition; if (y instanceof Array) c = e.x + aM(y[0], e.width), d = e.y + aM(y[1], e.height), f = f || "left"; else { var _ = this.calculateTextPosition ? this.calculateTextPosition({}, r, e) : Ui({}, r, e); c = _.x, d = _.y, f = f || _.textAlign, p = p || _.textVerticalAlign } } c = Wi(c, i.width, f), d = Xi(d, i.height, p), d += i.height / 2; var x, w, b, S = Mf, M = this._textVmlEl; M ? (b = M.firstChild, x = b.nextSibling, w = x.nextSibling) : (M = S("line"), x = S("path"), w = S("textpath"), b = S("skew"), w.style["v-text-align"] = "left", JS(M), x.textpathok = !0, w.on = !0, M.from = "0 0", M.to = "1000 0.05", iM(M, b), iM(M, x), iM(M, w), this._textVmlEl = M); var I = [c, d], T = M.style; m && n ? (ae(I, I, m), b.on = !0, b.matrix = m[0].toFixed(3) + jS + m[2].toFixed(3) + jS + m[1].toFixed(3) + jS + m[3].toFixed(3) + ",0,0", b.offset = (HS(I[0]) || 0) + "," + (HS(I[1]) || 0), b.origin = "0 0", T.left = "0px", T.top = "0px") : (b.on = !1, T.left = HS(c) + "px", T.top = HS(d) + "px"), w.string = tM(a); try { w.style.font = v } catch (C) { } uM(M, "fill", { fill: r.textFill, opacity: r.opacity }, this), uM(M, "stroke", { stroke: r.textStroke, opacity: r.opacity, lineDash: r.lineDash || null }, this), M.style.zIndex = rM(this.zlevel, this.z, this.z2), iM(t, M)
  38. }
  39. }, SM = function (t) { nM(t, this._textVmlEl), this._textVmlEl = null }, MM = function (t) { iM(t, this._textVmlEl) }, IM = [Sg, bn, Sn, Hr, sm], TM = 0; TM < IM.length; TM++) { var CM = IM[TM].prototype; CM.drawRectText = bM, CM.removeRectText = SM, CM.appendRectText = MM } sm.prototype.brushVML = function (t) { var e = this.style; null != e.text ? this.drawRectText(t, { x: e.x || 0, y: e.y || 0, width: 0, height: 0 }, this.getBoundingRect(), !0) : this.removeRectText(t) }, sm.prototype.onRemove = function (t) { this.removeRectText(t) }, sm.prototype.onAdd = function (t) { this.appendRectText(t) }
  40. } Cf.prototype = { constructor: Cf, getType: function () { return "vml" }, getViewportRoot: function () { return this._vmlViewport }, getViewportRootOffset: function () { var t = this.getViewportRoot(); return t ? { offsetLeft: t.offsetLeft || 0, offsetTop: t.offsetTop || 0 } : void 0 }, refresh: function () { var t = this.storage.getDisplayList(!0, !0); this._paintList(t) }, _paintList: function (t) { for (var e = this._vmlRoot, i = 0; i < t.length; i++) { var n = t[i]; n.invisible || n.ignore ? (n.__alreadyNotVisible || n.onRemove(e), n.__alreadyNotVisible = !0) : (n.__alreadyNotVisible && n.onAdd(e), n.__alreadyNotVisible = !1, n.__dirty && (n.beforeBrush && n.beforeBrush(), (n.brushVML || n.brush).call(n, e), n.afterBrush && n.afterBrush())), n.__dirty = !1 } this._firstPaint && (this._vmlViewport.appendChild(e), this._firstPaint = !1) }, resize: function (t, e) { var t = null == t ? this._getWidth() : t, e = null == e ? this._getHeight() : e; if (this._width !== t || this._height !== e) { this._width = t, this._height = e; var i = this._vmlViewport.style; i.width = t + "px", i.height = e + "px" } }, dispose: function () { this.root.innerHTML = "", this._vmlRoot = this._vmlViewport = this.storage = null }, getWidth: function () { return this._width }, getHeight: function () { return this._height }, clear: function () { this._vmlViewport && this.root.removeChild(this._vmlViewport) }, _getWidth: function () { var t = this.root, e = t.currentStyle; return (t.clientWidth || Tf(e.width)) - Tf(e.paddingLeft) - Tf(e.paddingRight) | 0 }, _getHeight: function () { var t = this.root, e = t.currentStyle; return (t.clientHeight || Tf(e.height)) - Tf(e.paddingTop) - Tf(e.paddingBottom) | 0 } }, f(["getLayer", "insertLayer", "eachLayer", "eachBuiltinLayer", "eachOtherLayer", "getLayers", "modLayer", "delLayer", "clearLayer", "toDataURL", "pathToImage"], function (t) { Cf.prototype[t] = Af(t) }), Nn("vml", Cf), t.version = Y_, t.dependencies = j_, t.PRIORITY = ox, t.init = th, t.connect = eh, t.disConnect = ih, t.disconnect = Cx, t.dispose = nh, t.getInstanceByDom = rh, t.getInstanceById = ah, t.registerTheme = oh, t.registerPreprocessor = sh, t.registerProcessor = lh, t.registerPostUpdate = hh, t.registerAction = uh, t.registerCoordinateSystem = ch, t.getCoordinateSystemDimensions = dh, t.registerLayout = fh, t.registerVisual = ph, t.registerLoading = vh, t.extendComponentModel = mh, t.extendComponentView = yh, t.extendSeriesModel = _h, t.extendChartView = xh, t.setCanvasCreator = wh, t.registerMap = bh, t.getMap = Sh, t.dataTool = Ax, t.zrender = Xg, t.number = ey, t.format = ly, t.throttle = nl, t.helper = Dw, t.matrix = gp, t.vector = tp, t.color = Ep, t.parseGeoJSON = Pw, t.parseGeoJson = zw, t.util = Bw, t.graphic = Rw, t.List = Vx, t.Model = Ja, t.Axis = Ew, t.env = Ef
  41. });