6133 lines
214 KiB
JavaScript
6133 lines
214 KiB
JavaScript
am4internal_webpackJsonp(["cc1e"], {
|
|
QJ7E: function(t, e, n) {
|
|
"use strict";
|
|
Object.defineProperty(e, "__esModule", {
|
|
value: !0
|
|
});
|
|
var i = {};
|
|
n.d(i, "geoArea", function() {
|
|
return Et
|
|
}), n.d(i, "geoBounds", function() {
|
|
return he
|
|
}), n.d(i, "geoCentroid", function() {
|
|
return Me
|
|
}), n.d(i, "geoCircle", function() {
|
|
return Ge
|
|
}), n.d(i, "geoClipAntimeridian", function() {
|
|
return Ze
|
|
}), n.d(i, "geoClipCircle", function() {
|
|
return qe
|
|
}), n.d(i, "geoClipExtent", function() {
|
|
return en
|
|
}), n.d(i, "geoClipRectangle", function() {
|
|
return Je
|
|
}), n.d(i, "geoContains", function() {
|
|
return bn
|
|
}), n.d(i, "geoDistance", function() {
|
|
return ln
|
|
}), n.d(i, "geoGraticule", function() {
|
|
return _n
|
|
}), n.d(i, "geoGraticule10", function() {
|
|
return Mn
|
|
}), n.d(i, "geoInterpolate", function() {
|
|
return Ln
|
|
}), n.d(i, "geoLength", function() {
|
|
return un
|
|
}), n.d(i, "geoPath", function() {
|
|
return wi
|
|
}), n.d(i, "geoAlbers", function() {
|
|
return Zi
|
|
}), n.d(i, "geoAlbersUsa", function() {
|
|
return qi
|
|
}), n.d(i, "geoAzimuthalEqualArea", function() {
|
|
return Ji
|
|
}), n.d(i, "geoAzimuthalEqualAreaRaw", function() {
|
|
return Ui
|
|
}), n.d(i, "geoAzimuthalEquidistant", function() {
|
|
return Qi
|
|
}), n.d(i, "geoAzimuthalEquidistantRaw", function() {
|
|
return Ki
|
|
}), n.d(i, "geoConicConformal", function() {
|
|
return rr
|
|
}), n.d(i, "geoConicConformalRaw", function() {
|
|
return ir
|
|
}), n.d(i, "geoConicEqualArea", function() {
|
|
return Wi
|
|
}), n.d(i, "geoConicEqualAreaRaw", function() {
|
|
return Hi
|
|
}), n.d(i, "geoConicEquidistant", function() {
|
|
return sr
|
|
}), n.d(i, "geoConicEquidistantRaw", function() {
|
|
return ur
|
|
}), n.d(i, "geoEqualEarth", function() {
|
|
return gr
|
|
}), n.d(i, "geoEqualEarthRaw", function() {
|
|
return dr
|
|
}), n.d(i, "geoEquirectangular", function() {
|
|
return ar
|
|
}), n.d(i, "geoEquirectangularRaw", function() {
|
|
return or
|
|
}), n.d(i, "geoGnomonic", function() {
|
|
return mr
|
|
}), n.d(i, "geoGnomonicRaw", function() {
|
|
return vr
|
|
}), n.d(i, "geoIdentity", function() {
|
|
return yr
|
|
}), n.d(i, "geoProjection", function() {
|
|
return Ri
|
|
}), n.d(i, "geoProjectionMutator", function() {
|
|
return Fi
|
|
}), n.d(i, "geoMercator", function() {
|
|
return tr
|
|
}), n.d(i, "geoMercatorRaw", function() {
|
|
return $i
|
|
}), n.d(i, "geoNaturalEarth1", function() {
|
|
return Pr
|
|
}), n.d(i, "geoNaturalEarth1Raw", function() {
|
|
return br
|
|
}), n.d(i, "geoOrthographic", function() {
|
|
return _r
|
|
}), n.d(i, "geoOrthographicRaw", function() {
|
|
return Sr
|
|
}), n.d(i, "geoStereographic", function() {
|
|
return xr
|
|
}), n.d(i, "geoStereographicRaw", function() {
|
|
return Mr
|
|
}), n.d(i, "geoTransverseMercator", function() {
|
|
return wr
|
|
}), n.d(i, "geoTransverseMercatorRaw", function() {
|
|
return jr
|
|
}), n.d(i, "geoRotation", function() {
|
|
return Ie
|
|
}), n.d(i, "geoStream", function() {
|
|
return ht
|
|
}), n.d(i, "geoTransform", function() {
|
|
return Oi
|
|
});
|
|
var r = {};
|
|
n.d(r, "normalizePoint", function() {
|
|
return oo
|
|
}), n.d(r, "normalizeMultiline", function() {
|
|
return ao
|
|
}), n.d(r, "wrapAngleTo180", function() {
|
|
return uo
|
|
}), n.d(r, "geoToPoint", function() {
|
|
return so
|
|
});
|
|
var o = {};
|
|
n.d(o, "Mercator", function() {
|
|
return zo
|
|
}), n.d(o, "Miller", function() {
|
|
return Au
|
|
}), n.d(o, "Eckert6", function() {
|
|
return ku
|
|
}), n.d(o, "Orthographic", function() {
|
|
return Ru
|
|
}), n.d(o, "Stereographic", function() {
|
|
return Fu
|
|
}), n.d(o, "Albers", function() {
|
|
return Bu
|
|
}), n.d(o, "AlbersUsa", function() {
|
|
return Hu
|
|
}), n.d(o, "NaturalEarth1", function() {
|
|
return Wu
|
|
}), n.d(o, "AzimuthalEqualArea", function() {
|
|
return Zu
|
|
}), n.d(o, "EqualEarth", function() {
|
|
return qu
|
|
}), n.d(o, "Projection", function() {
|
|
return Qr
|
|
});
|
|
var a = {};
|
|
n.d(a, "LegendDataItem", function() {
|
|
return u.b
|
|
}), n.d(a, "Legend", function() {
|
|
return u.a
|
|
}), n.d(a, "LegendSettings", function() {
|
|
return u.c
|
|
}), n.d(a, "HeatLegend", function() {
|
|
return s.a
|
|
}), n.d(a, "MapChartDataItem", function() {
|
|
return Mo
|
|
}), n.d(a, "MapChart", function() {
|
|
return xo
|
|
}), n.d(a, "MapSeriesDataItem", function() {
|
|
return Or
|
|
}), n.d(a, "MapSeries", function() {
|
|
return Lr
|
|
}), n.d(a, "MapObject", function() {
|
|
return Er
|
|
}), n.d(a, "MapPolygon", function() {
|
|
return qr
|
|
}), n.d(a, "MapImage", function() {
|
|
return Ir
|
|
}), n.d(a, "MapLine", function() {
|
|
return vo
|
|
}), n.d(a, "MapLineObject", function() {
|
|
return co
|
|
}), n.d(a, "MapSpline", function() {
|
|
return wo
|
|
}), n.d(a, "MapArc", function() {
|
|
return Lo
|
|
}), n.d(a, "Graticule", function() {
|
|
return bo
|
|
}), n.d(a, "MapPolygonSeriesDataItem", function() {
|
|
return Jr
|
|
}), n.d(a, "MapPolygonSeries", function() {
|
|
return Kr
|
|
}), n.d(a, "MapLineSeriesDataItem", function() {
|
|
return mo
|
|
}), n.d(a, "MapLineSeries", function() {
|
|
return yo
|
|
}), n.d(a, "MapSplineSeriesDataItem", function() {
|
|
return Co
|
|
}), n.d(a, "MapSplineSeries", function() {
|
|
return Eo
|
|
}), n.d(a, "MapImageSeriesDataItem", function() {
|
|
return lo
|
|
}), n.d(a, "MapImageSeries", function() {
|
|
return ho
|
|
}), n.d(a, "MapArcSeriesDataItem", function() {
|
|
return Io
|
|
}), n.d(a, "MapArcSeries", function() {
|
|
return To
|
|
}), n.d(a, "GraticuleSeriesDataItem", function() {
|
|
return Po
|
|
}), n.d(a, "GraticuleSeries", function() {
|
|
return So
|
|
}), n.d(a, "multiPolygonToGeo", function() {
|
|
return zr
|
|
}), n.d(a, "multiLineToGeo", function() {
|
|
return Vr
|
|
}), n.d(a, "multiPointToGeo", function() {
|
|
return Ar
|
|
}), n.d(a, "pointToGeo", function() {
|
|
return Rr
|
|
}), n.d(a, "multiGeoPolygonToMultipolygon", function() {
|
|
return Hr
|
|
}), n.d(a, "getBackground", function() {
|
|
return Zr
|
|
}), n.d(a, "multiGeoLineToMultiLine", function() {
|
|
return Br
|
|
}), n.d(a, "multiGeoToPoint", function() {
|
|
return kr
|
|
}), n.d(a, "getCircle", function() {
|
|
return Wr
|
|
}), n.d(a, "ZoomControl", function() {
|
|
return No
|
|
}), n.d(a, "SmallMap", function() {
|
|
return no
|
|
}), n.d(a, "Projection", function() {
|
|
return Qr
|
|
}), n.d(a, "projections", function() {
|
|
return o
|
|
}), n.d(a, "geo", function() {
|
|
return r
|
|
}), n.d(a, "d3geo", function() {
|
|
return i
|
|
});
|
|
var u = n("uWmK"),
|
|
s = n("2OXf"),
|
|
c = n("m4/l"),
|
|
l = n("2I/e"),
|
|
h = n("hD5A"),
|
|
p = n("MIZb"),
|
|
f = n("aM7D"),
|
|
d = n("aCit"),
|
|
g = n("Mtpk"),
|
|
v = n("Gg2j"),
|
|
m = function(t, e) {
|
|
return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
|
|
},
|
|
y = function(t) {
|
|
var e = t,
|
|
n = t;
|
|
|
|
function i(t, e, i, r) {
|
|
for (null == i && (i = 0), null == r && (r = t.length); i < r;) {
|
|
var o = i + r >>> 1;
|
|
n(t[o], e) < 0 ? i = o + 1 : r = o
|
|
}
|
|
return i
|
|
}
|
|
return 1 === t.length && (e = function(e, n) {
|
|
return t(e) - n
|
|
}, n = function(t) {
|
|
return function(e, n) {
|
|
return m(t(e), n)
|
|
}
|
|
}(t)), {
|
|
left: i,
|
|
center: function(t, n, r, o) {
|
|
null == r && (r = 0), null == o && (o = t.length);
|
|
var a = i(t, n, r, o - 1);
|
|
return a > r && e(t[a - 1], n) > -e(t[a], n) ? a - 1 : a
|
|
},
|
|
right: function(t, e, i, r) {
|
|
for (null == i && (i = 0), null == r && (r = t.length); i < r;) {
|
|
var o = i + r >>> 1;
|
|
n(t[o], e) > 0 ? r = o : i = o + 1
|
|
}
|
|
return i
|
|
}
|
|
}
|
|
};
|
|
var b = function(t) {
|
|
return null === t ? NaN : +t
|
|
};
|
|
var P = y(m);
|
|
P.right, P.left, y(b).center;
|
|
|
|
function S(t, e) {
|
|
for (var n = 0; n < e.length; n++) {
|
|
var i = e[n];
|
|
i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
|
|
}
|
|
}
|
|
var _ = function() {
|
|
function t() {
|
|
! function(t, e) {
|
|
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, t), this._partials = new Float64Array(32), this._n = 0
|
|
}
|
|
return function(t, e, n) {
|
|
e && S(t.prototype, e), n && S(t, n)
|
|
}(t, [{
|
|
key: "add",
|
|
value: function(t) {
|
|
for (var e = this._partials, n = 0, i = 0; i < this._n && i < 32; i++) {
|
|
var r = e[i],
|
|
o = t + r,
|
|
a = Math.abs(t) < Math.abs(r) ? t - (o - r) : r - (o - t);
|
|
a && (e[n++] = a), t = o
|
|
}
|
|
return e[n] = t, this._n = n + 1, this
|
|
}
|
|
}, {
|
|
key: "valueOf",
|
|
value: function() {
|
|
var t, e, n, i = this._partials,
|
|
r = this._n,
|
|
o = 0;
|
|
if (r > 0) {
|
|
for (o = i[--r]; r > 0 && (t = o, !(n = (e = i[--r]) - ((o = t + e) - t))););
|
|
r > 0 && (n < 0 && i[r - 1] < 0 || n > 0 && i[r - 1] > 0) && (e = 2 * n) == (t = o + e) - o && (o = t)
|
|
}
|
|
return o
|
|
}
|
|
}]), t
|
|
}();
|
|
var M = Array.prototype;
|
|
M.slice, M.map, Math.sqrt(50), Math.sqrt(10), Math.sqrt(2);
|
|
var x = regeneratorRuntime.mark(O);
|
|
|
|
function j(t, e) {
|
|
var n;
|
|
if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
|
|
if (Array.isArray(t) || (n = function(t, e) {
|
|
if (!t) return;
|
|
if ("string" == typeof t) return w(t, e);
|
|
var n = Object.prototype.toString.call(t).slice(8, -1);
|
|
"Object" === n && t.constructor && (n = t.constructor.name);
|
|
if ("Map" === n || "Set" === n) return Array.from(t);
|
|
if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return w(t, e)
|
|
}(t)) || e && t && "number" == typeof t.length) {
|
|
n && (t = n);
|
|
var i = 0,
|
|
r = function() {};
|
|
return {
|
|
s: r,
|
|
n: function() {
|
|
return i >= t.length ? {
|
|
done: !0
|
|
} : {
|
|
done: !1,
|
|
value: t[i++]
|
|
}
|
|
},
|
|
e: function(t) {
|
|
throw t
|
|
},
|
|
f: r
|
|
}
|
|
}
|
|
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
|
}
|
|
var o, a = !0,
|
|
u = !1;
|
|
return {
|
|
s: function() {
|
|
n = t[Symbol.iterator]()
|
|
},
|
|
n: function() {
|
|
var t = n.next();
|
|
return a = t.done, t
|
|
},
|
|
e: function(t) {
|
|
u = !0, o = t
|
|
},
|
|
f: function() {
|
|
try {
|
|
a || null == n.return || n.return()
|
|
} finally {
|
|
if (u) throw o
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function w(t, e) {
|
|
(null == e || e > t.length) && (e = t.length);
|
|
for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
|
|
return i
|
|
}
|
|
|
|
function O(t) {
|
|
var e, n, i;
|
|
return regeneratorRuntime.wrap(function(r) {
|
|
for (;;) switch (r.prev = r.next) {
|
|
case 0:
|
|
e = j(t), r.prev = 1, e.s();
|
|
case 3:
|
|
if ((n = e.n()).done) {
|
|
r.next = 8;
|
|
break
|
|
}
|
|
return i = n.value, r.delegateYield(i, "t0", 6);
|
|
case 6:
|
|
r.next = 3;
|
|
break;
|
|
case 8:
|
|
r.next = 13;
|
|
break;
|
|
case 10:
|
|
r.prev = 10, r.t1 = r.catch(1), e.e(r.t1);
|
|
case 13:
|
|
return r.prev = 13, e.f(), r.finish(13);
|
|
case 16:
|
|
case "end":
|
|
return r.stop()
|
|
}
|
|
}, x, null, [
|
|
[1, 10, 13, 16]
|
|
])
|
|
}
|
|
|
|
function L(t) {
|
|
return Array.from(O(t))
|
|
}
|
|
var C = function(t, e, n) {
|
|
t = +t, e = +e, n = (r = arguments.length) < 2 ? (e = t, t = 0, 1) : r < 3 ? 1 : +n;
|
|
for (var i = -1, r = 0 | Math.max(0, Math.ceil((e - t) / n)), o = new Array(r); ++i < r;) o[i] = t + i * n;
|
|
return o
|
|
};
|
|
Math.random;
|
|
var E = 1e-6,
|
|
I = 1e-12,
|
|
T = Math.PI,
|
|
D = T / 2,
|
|
G = T / 4,
|
|
N = 2 * T,
|
|
z = 180 / T,
|
|
V = T / 180,
|
|
A = Math.abs,
|
|
k = Math.atan,
|
|
R = Math.atan2,
|
|
F = Math.cos,
|
|
B = Math.ceil,
|
|
H = Math.exp,
|
|
W = (Math.floor, Math.hypot),
|
|
Z = Math.log,
|
|
q = Math.pow,
|
|
X = Math.sin,
|
|
Y = Math.sign || function(t) {
|
|
return t > 0 ? 1 : t < 0 ? -1 : 0
|
|
},
|
|
U = Math.sqrt,
|
|
J = Math.tan;
|
|
|
|
function K(t) {
|
|
return t > 1 ? 0 : t < -1 ? T : Math.acos(t)
|
|
}
|
|
|
|
function Q(t) {
|
|
return t > 1 ? D : t < -1 ? -D : Math.asin(t)
|
|
}
|
|
|
|
function $(t) {
|
|
return (t = X(t / 2)) * t
|
|
}
|
|
|
|
function tt() {}
|
|
|
|
function et(t, e) {
|
|
t && it.hasOwnProperty(t.type) && it[t.type](t, e)
|
|
}
|
|
var nt = {
|
|
Feature: function(t, e) {
|
|
et(t.geometry, e)
|
|
},
|
|
FeatureCollection: function(t, e) {
|
|
for (var n = t.features, i = -1, r = n.length; ++i < r;) et(n[i].geometry, e)
|
|
}
|
|
},
|
|
it = {
|
|
Sphere: function(t, e) {
|
|
e.sphere()
|
|
},
|
|
Point: function(t, e) {
|
|
t = t.coordinates, e.point(t[0], t[1], t[2])
|
|
},
|
|
MultiPoint: function(t, e) {
|
|
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;) t = n[i], e.point(t[0], t[1], t[2])
|
|
},
|
|
LineString: function(t, e) {
|
|
rt(t.coordinates, e, 0)
|
|
},
|
|
MultiLineString: function(t, e) {
|
|
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;) rt(n[i], e, 0)
|
|
},
|
|
Polygon: function(t, e) {
|
|
ot(t.coordinates, e)
|
|
},
|
|
MultiPolygon: function(t, e) {
|
|
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;) ot(n[i], e)
|
|
},
|
|
GeometryCollection: function(t, e) {
|
|
for (var n = t.geometries, i = -1, r = n.length; ++i < r;) et(n[i], e)
|
|
}
|
|
};
|
|
|
|
function rt(t, e, n) {
|
|
var i, r = -1,
|
|
o = t.length - n;
|
|
for (e.lineStart(); ++r < o;) i = t[r], e.point(i[0], i[1], i[2]);
|
|
e.lineEnd()
|
|
}
|
|
|
|
function ot(t, e) {
|
|
var n = -1,
|
|
i = t.length;
|
|
for (e.polygonStart(); ++n < i;) rt(t[n], e, 1);
|
|
e.polygonEnd()
|
|
}
|
|
var at, ut, st, ct, lt, ht = function(t, e) {
|
|
t && nt.hasOwnProperty(t.type) ? nt[t.type](t, e) : et(t, e)
|
|
},
|
|
pt = new _,
|
|
ft = new _,
|
|
dt = {
|
|
point: tt,
|
|
lineStart: tt,
|
|
lineEnd: tt,
|
|
polygonStart: function() {
|
|
pt = new _, dt.lineStart = gt, dt.lineEnd = vt
|
|
},
|
|
polygonEnd: function() {
|
|
var t = +pt;
|
|
ft.add(t < 0 ? N + t : t), this.lineStart = this.lineEnd = this.point = tt
|
|
},
|
|
sphere: function() {
|
|
ft.add(N)
|
|
}
|
|
};
|
|
|
|
function gt() {
|
|
dt.point = mt
|
|
}
|
|
|
|
function vt() {
|
|
yt(at, ut)
|
|
}
|
|
|
|
function mt(t, e) {
|
|
dt.point = yt, at = t, ut = e, st = t *= V, ct = F(e = (e *= V) / 2 + G), lt = X(e)
|
|
}
|
|
|
|
function yt(t, e) {
|
|
e = (e *= V) / 2 + G;
|
|
var n = (t *= V) - st,
|
|
i = n >= 0 ? 1 : -1,
|
|
r = i * n,
|
|
o = F(e),
|
|
a = X(e),
|
|
u = lt * a,
|
|
s = ct * o + u * F(r),
|
|
c = u * i * X(r);
|
|
pt.add(R(c, s)), st = t, ct = o, lt = a
|
|
}
|
|
var bt, Pt, St, _t, Mt, xt, jt, wt, Ot, Lt, Ct, Et = function(t) {
|
|
return ft = new _, ht(t, dt), 2 * ft
|
|
};
|
|
|
|
function It(t) {
|
|
return [R(t[1], t[0]), Q(t[2])]
|
|
}
|
|
|
|
function Tt(t) {
|
|
var e = t[0],
|
|
n = t[1],
|
|
i = F(n);
|
|
return [i * F(e), i * X(e), X(n)]
|
|
}
|
|
|
|
function Dt(t, e) {
|
|
return t[0] * e[0] + t[1] * e[1] + t[2] * e[2]
|
|
}
|
|
|
|
function Gt(t, e) {
|
|
return [t[1] * e[2] - t[2] * e[1], t[2] * e[0] - t[0] * e[2], t[0] * e[1] - t[1] * e[0]]
|
|
}
|
|
|
|
function Nt(t, e) {
|
|
t[0] += e[0], t[1] += e[1], t[2] += e[2]
|
|
}
|
|
|
|
function zt(t, e) {
|
|
return [t[0] * e, t[1] * e, t[2] * e]
|
|
}
|
|
|
|
function Vt(t) {
|
|
var e = U(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
|
|
t[0] /= e, t[1] /= e, t[2] /= e
|
|
}
|
|
var At = {
|
|
point: kt,
|
|
lineStart: Ft,
|
|
lineEnd: Bt,
|
|
polygonStart: function() {
|
|
At.point = Ht, At.lineStart = Wt, At.lineEnd = Zt, Ot = new _, dt.polygonStart()
|
|
},
|
|
polygonEnd: function() {
|
|
dt.polygonEnd(), At.point = kt, At.lineStart = Ft, At.lineEnd = Bt, pt < 0 ? (bt = -(St = 180), Pt = -(_t = 90)) : Ot > E ? _t = 90 : Ot < -E && (Pt = -90), Ct[0] = bt, Ct[1] = St
|
|
},
|
|
sphere: function() {
|
|
bt = -(St = 180), Pt = -(_t = 90)
|
|
}
|
|
};
|
|
|
|
function kt(t, e) {
|
|
Lt.push(Ct = [bt = t, St = t]), e < Pt && (Pt = e), e > _t && (_t = e)
|
|
}
|
|
|
|
function Rt(t, e) {
|
|
var n = Tt([t * V, e * V]);
|
|
if (wt) {
|
|
var i = Gt(wt, n),
|
|
r = Gt([i[1], -i[0], 0], i);
|
|
Vt(r), r = It(r);
|
|
var o, a = t - Mt,
|
|
u = a > 0 ? 1 : -1,
|
|
s = r[0] * z * u,
|
|
c = A(a) > 180;
|
|
c ^ (u * Mt < s && s < u * t) ? (o = r[1] * z) > _t && (_t = o) : c ^ (u * Mt < (s = (s + 360) % 360 - 180) && s < u * t) ? (o = -r[1] * z) < Pt && (Pt = o) : (e < Pt && (Pt = e), e > _t && (_t = e)), c ? t < Mt ? qt(bt, t) > qt(bt, St) && (St = t) : qt(t, St) > qt(bt, St) && (bt = t) : St >= bt ? (t < bt && (bt = t), t > St && (St = t)) : t > Mt ? qt(bt, t) > qt(bt, St) && (St = t) : qt(t, St) > qt(bt, St) && (bt = t)
|
|
} else Lt.push(Ct = [bt = t, St = t]);
|
|
e < Pt && (Pt = e), e > _t && (_t = e), wt = n, Mt = t
|
|
}
|
|
|
|
function Ft() {
|
|
At.point = Rt
|
|
}
|
|
|
|
function Bt() {
|
|
Ct[0] = bt, Ct[1] = St, At.point = kt, wt = null
|
|
}
|
|
|
|
function Ht(t, e) {
|
|
if (wt) {
|
|
var n = t - Mt;
|
|
Ot.add(A(n) > 180 ? n + (n > 0 ? 360 : -360) : n)
|
|
} else xt = t, jt = e;
|
|
dt.point(t, e), Rt(t, e)
|
|
}
|
|
|
|
function Wt() {
|
|
dt.lineStart()
|
|
}
|
|
|
|
function Zt() {
|
|
Ht(xt, jt), dt.lineEnd(), A(Ot) > E && (bt = -(St = 180)), Ct[0] = bt, Ct[1] = St, wt = null
|
|
}
|
|
|
|
function qt(t, e) {
|
|
return (e -= t) < 0 ? e + 360 : e
|
|
}
|
|
|
|
function Xt(t, e) {
|
|
return t[0] - e[0]
|
|
}
|
|
|
|
function Yt(t, e) {
|
|
return t[0] <= t[1] ? t[0] <= e && e <= t[1] : e < t[0] || t[1] < e
|
|
}
|
|
var Ut, Jt, Kt, Qt, $t, te, ee, ne, ie, re, oe, ae, ue, se, ce, le, he = function(t) {
|
|
var e, n, i, r, o, a, u;
|
|
if (_t = St = -(bt = Pt = 1 / 0), Lt = [], ht(t, At), n = Lt.length) {
|
|
for (Lt.sort(Xt), e = 1, o = [i = Lt[0]]; e < n; ++e) Yt(i, (r = Lt[e])[0]) || Yt(i, r[1]) ? (qt(i[0], r[1]) > qt(i[0], i[1]) && (i[1] = r[1]), qt(r[0], i[1]) > qt(i[0], i[1]) && (i[0] = r[0])) : o.push(i = r);
|
|
for (a = -1 / 0, e = 0, i = o[n = o.length - 1]; e <= n; i = r, ++e) r = o[e], (u = qt(i[1], r[0])) > a && (a = u, bt = r[0], St = i[1])
|
|
}
|
|
return Lt = Ct = null, bt === 1 / 0 || Pt === 1 / 0 ? [
|
|
[NaN, NaN],
|
|
[NaN, NaN]
|
|
] : [
|
|
[bt, Pt],
|
|
[St, _t]
|
|
]
|
|
},
|
|
pe = {
|
|
sphere: tt,
|
|
point: fe,
|
|
lineStart: ge,
|
|
lineEnd: ye,
|
|
polygonStart: function() {
|
|
pe.lineStart = be, pe.lineEnd = Pe
|
|
},
|
|
polygonEnd: function() {
|
|
pe.lineStart = ge, pe.lineEnd = ye
|
|
}
|
|
};
|
|
|
|
function fe(t, e) {
|
|
t *= V;
|
|
var n = F(e *= V);
|
|
de(n * F(t), n * X(t), X(e))
|
|
}
|
|
|
|
function de(t, e, n) {
|
|
Kt += (t - Kt) / ++Ut, Qt += (e - Qt) / Ut, $t += (n - $t) / Ut
|
|
}
|
|
|
|
function ge() {
|
|
pe.point = ve
|
|
}
|
|
|
|
function ve(t, e) {
|
|
t *= V;
|
|
var n = F(e *= V);
|
|
se = n * F(t), ce = n * X(t), le = X(e), pe.point = me, de(se, ce, le)
|
|
}
|
|
|
|
function me(t, e) {
|
|
t *= V;
|
|
var n = F(e *= V),
|
|
i = n * F(t),
|
|
r = n * X(t),
|
|
o = X(e),
|
|
a = R(U((a = ce * o - le * r) * a + (a = le * i - se * o) * a + (a = se * r - ce * i) * a), se * i + ce * r + le * o);
|
|
Jt += a, te += a * (se + (se = i)), ee += a * (ce + (ce = r)), ne += a * (le + (le = o)), de(se, ce, le)
|
|
}
|
|
|
|
function ye() {
|
|
pe.point = fe
|
|
}
|
|
|
|
function be() {
|
|
pe.point = Se
|
|
}
|
|
|
|
function Pe() {
|
|
_e(ae, ue), pe.point = fe
|
|
}
|
|
|
|
function Se(t, e) {
|
|
ae = t, ue = e, t *= V, e *= V, pe.point = _e;
|
|
var n = F(e);
|
|
se = n * F(t), ce = n * X(t), le = X(e), de(se, ce, le)
|
|
}
|
|
|
|
function _e(t, e) {
|
|
t *= V;
|
|
var n = F(e *= V),
|
|
i = n * F(t),
|
|
r = n * X(t),
|
|
o = X(e),
|
|
a = ce * o - le * r,
|
|
u = le * i - se * o,
|
|
s = se * r - ce * i,
|
|
c = W(a, u, s),
|
|
l = Q(c),
|
|
h = c && -l / c;
|
|
ie.add(h * a), re.add(h * u), oe.add(h * s), Jt += l, te += l * (se + (se = i)), ee += l * (ce + (ce = r)), ne += l * (le + (le = o)), de(se, ce, le)
|
|
}
|
|
var Me = function(t) {
|
|
Ut = Jt = Kt = Qt = $t = te = ee = ne = 0, ie = new _, re = new _, oe = new _, ht(t, pe);
|
|
var e = +ie,
|
|
n = +re,
|
|
i = +oe,
|
|
r = W(e, n, i);
|
|
return r < I && (e = te, n = ee, i = ne, Jt < E && (e = Kt, n = Qt, i = $t), (r = W(e, n, i)) < I) ? [NaN, NaN] : [R(n, e) * z, Q(i / r) * z]
|
|
},
|
|
xe = function(t) {
|
|
return function() {
|
|
return t
|
|
}
|
|
},
|
|
je = function(t, e) {
|
|
function n(n, i) {
|
|
return n = t(n, i), e(n[0], n[1])
|
|
}
|
|
return t.invert && e.invert && (n.invert = function(n, i) {
|
|
return (n = e.invert(n, i)) && t.invert(n[0], n[1])
|
|
}), n
|
|
};
|
|
|
|
function we(t, e) {
|
|
return [A(t) > T ? t + Math.round(-t / N) * N : t, e]
|
|
}
|
|
|
|
function Oe(t, e, n) {
|
|
return (t %= N) ? e || n ? je(Ce(t), Ee(e, n)) : Ce(t) : e || n ? Ee(e, n) : we
|
|
}
|
|
|
|
function Le(t) {
|
|
return function(e, n) {
|
|
return [(e += t) > T ? e - N : e < -T ? e + N : e, n]
|
|
}
|
|
}
|
|
|
|
function Ce(t) {
|
|
var e = Le(t);
|
|
return e.invert = Le(-t), e
|
|
}
|
|
|
|
function Ee(t, e) {
|
|
var n = F(t),
|
|
i = X(t),
|
|
r = F(e),
|
|
o = X(e);
|
|
|
|
function a(t, e) {
|
|
var a = F(e),
|
|
u = F(t) * a,
|
|
s = X(t) * a,
|
|
c = X(e),
|
|
l = c * n + u * i;
|
|
return [R(s * r - l * o, u * n - c * i), Q(l * r + s * o)]
|
|
}
|
|
return a.invert = function(t, e) {
|
|
var a = F(e),
|
|
u = F(t) * a,
|
|
s = X(t) * a,
|
|
c = X(e),
|
|
l = c * r - s * o;
|
|
return [R(s * r + c * o, u * n + l * i), Q(l * n - u * i)]
|
|
}, a
|
|
}
|
|
we.invert = we;
|
|
var Ie = function(t) {
|
|
function e(e) {
|
|
return (e = t(e[0] * V, e[1] * V))[0] *= z, e[1] *= z, e
|
|
}
|
|
return t = Oe(t[0] * V, t[1] * V, t.length > 2 ? t[2] * V : 0), e.invert = function(e) {
|
|
return (e = t.invert(e[0] * V, e[1] * V))[0] *= z, e[1] *= z, e
|
|
}, e
|
|
};
|
|
|
|
function Te(t, e, n, i, r, o) {
|
|
if (n) {
|
|
var a = F(e),
|
|
u = X(e),
|
|
s = i * n;
|
|
null == r ? (r = e + i * N, o = e - s / 2) : (r = De(a, r), o = De(a, o), (i > 0 ? r < o : r > o) && (r += i * N));
|
|
for (var c, l = r; i > 0 ? l > o : l < o; l -= s) c = It([a, -u * F(l), -u * X(l)]), t.point(c[0], c[1])
|
|
}
|
|
}
|
|
|
|
function De(t, e) {
|
|
(e = Tt(e))[0] -= t, Vt(e);
|
|
var n = K(-e[1]);
|
|
return ((-e[2] < 0 ? -n : n) + N - E) % N
|
|
}
|
|
var Ge = function() {
|
|
var t, e, n = xe([0, 0]),
|
|
i = xe(90),
|
|
r = xe(6),
|
|
o = {
|
|
point: function(n, i) {
|
|
t.push(n = e(n, i)), n[0] *= z, n[1] *= z
|
|
}
|
|
};
|
|
|
|
function a() {
|
|
var a = n.apply(this, arguments),
|
|
u = i.apply(this, arguments) * V,
|
|
s = r.apply(this, arguments) * V;
|
|
return t = [], e = Oe(-a[0] * V, -a[1] * V, 0).invert, Te(o, u, s, 1), a = {
|
|
type: "Polygon",
|
|
coordinates: [t]
|
|
}, t = e = null, a
|
|
}
|
|
return a.center = function(t) {
|
|
return arguments.length ? (n = "function" == typeof t ? t : xe([+t[0], +t[1]]), a) : n
|
|
}, a.radius = function(t) {
|
|
return arguments.length ? (i = "function" == typeof t ? t : xe(+t), a) : i
|
|
}, a.precision = function(t) {
|
|
return arguments.length ? (r = "function" == typeof t ? t : xe(+t), a) : r
|
|
}, a
|
|
},
|
|
Ne = function() {
|
|
var t, e = [];
|
|
return {
|
|
point: function(e, n, i) {
|
|
t.push([e, n, i])
|
|
},
|
|
lineStart: function() {
|
|
e.push(t = [])
|
|
},
|
|
lineEnd: tt,
|
|
rejoin: function() {
|
|
e.length > 1 && e.push(e.pop().concat(e.shift()))
|
|
},
|
|
result: function() {
|
|
var n = e;
|
|
return e = [], t = null, n
|
|
}
|
|
}
|
|
},
|
|
ze = function(t, e) {
|
|
return A(t[0] - e[0]) < E && A(t[1] - e[1]) < E
|
|
};
|
|
|
|
function Ve(t, e, n, i) {
|
|
this.x = t, this.z = e, this.o = n, this.e = i, this.v = !1, this.n = this.p = null
|
|
}
|
|
var Ae = function(t, e, n, i, r) {
|
|
var o, a, u = [],
|
|
s = [];
|
|
if (t.forEach(function(t) {
|
|
if (!((e = t.length - 1) <= 0)) {
|
|
var e, n, i = t[0],
|
|
a = t[e];
|
|
if (ze(i, a)) {
|
|
if (!i[2] && !a[2]) {
|
|
for (r.lineStart(), o = 0; o < e; ++o) r.point((i = t[o])[0], i[1]);
|
|
return void r.lineEnd()
|
|
}
|
|
a[0] += 2 * E
|
|
}
|
|
u.push(n = new Ve(i, t, null, !0)), s.push(n.o = new Ve(i, null, n, !1)), u.push(n = new Ve(a, t, null, !1)), s.push(n.o = new Ve(a, null, n, !0))
|
|
}
|
|
}), u.length) {
|
|
for (s.sort(e), ke(u), ke(s), o = 0, a = s.length; o < a; ++o) s[o].e = n = !n;
|
|
for (var c, l, h = u[0];;) {
|
|
for (var p = h, f = !0; p.v;)
|
|
if ((p = p.n) === h) return;
|
|
c = p.z, r.lineStart();
|
|
do {
|
|
if (p.v = p.o.v = !0, p.e) {
|
|
if (f)
|
|
for (o = 0, a = c.length; o < a; ++o) r.point((l = c[o])[0], l[1]);
|
|
else i(p.x, p.n.x, 1, r);
|
|
p = p.n
|
|
} else {
|
|
if (f)
|
|
for (c = p.p.z, o = c.length - 1; o >= 0; --o) r.point((l = c[o])[0], l[1]);
|
|
else i(p.x, p.p.x, -1, r);
|
|
p = p.p
|
|
}
|
|
c = (p = p.o).z, f = !f
|
|
} while (!p.v);
|
|
r.lineEnd()
|
|
}
|
|
}
|
|
};
|
|
|
|
function ke(t) {
|
|
if (e = t.length) {
|
|
for (var e, n, i = 0, r = t[0]; ++i < e;) r.n = n = t[i], n.p = r, r = n;
|
|
r.n = n = t[0], n.p = r
|
|
}
|
|
}
|
|
|
|
function Re(t) {
|
|
return A(t[0]) <= T ? t[0] : Y(t[0]) * ((A(t[0]) + T) % N - T)
|
|
}
|
|
var Fe = function(t, e) {
|
|
var n = Re(e),
|
|
i = e[1],
|
|
r = X(i),
|
|
o = [X(n), -F(n), 0],
|
|
a = 0,
|
|
u = 0,
|
|
s = new _;
|
|
1 === r ? i = D + E : -1 === r && (i = -D - E);
|
|
for (var c = 0, l = t.length; c < l; ++c)
|
|
if (p = (h = t[c]).length)
|
|
for (var h, p, f = h[p - 1], d = Re(f), g = f[1] / 2 + G, v = X(g), m = F(g), y = 0; y < p; ++y, d = P, v = M, m = x, f = b) {
|
|
var b = h[y],
|
|
P = Re(b),
|
|
S = b[1] / 2 + G,
|
|
M = X(S),
|
|
x = F(S),
|
|
j = P - d,
|
|
w = j >= 0 ? 1 : -1,
|
|
O = w * j,
|
|
L = O > T,
|
|
C = v * M;
|
|
if (s.add(R(C * w * X(O), m * x + C * F(O))), a += L ? j + w * N : j, L ^ d >= n ^ P >= n) {
|
|
var z = Gt(Tt(f), Tt(b));
|
|
Vt(z);
|
|
var V = Gt(o, z);
|
|
Vt(V);
|
|
var A = (L ^ j >= 0 ? -1 : 1) * Q(V[2]);
|
|
(i > A || i === A && (z[0] || z[1])) && (u += L ^ j >= 0 ? 1 : -1)
|
|
}
|
|
}
|
|
return (a < -E || a < E && s < -I) ^ 1 & u
|
|
},
|
|
Be = function(t, e, n, i) {
|
|
return function(r) {
|
|
var o, a, u, s = e(r),
|
|
c = Ne(),
|
|
l = e(c),
|
|
h = !1,
|
|
p = {
|
|
point: f,
|
|
lineStart: g,
|
|
lineEnd: v,
|
|
polygonStart: function() {
|
|
p.point = m, p.lineStart = y, p.lineEnd = b, a = [], o = []
|
|
},
|
|
polygonEnd: function() {
|
|
p.point = f, p.lineStart = g, p.lineEnd = v, a = L(a);
|
|
var t = Fe(o, i);
|
|
a.length ? (h || (r.polygonStart(), h = !0), Ae(a, We, t, n, r)) : t && (h || (r.polygonStart(), h = !0), r.lineStart(), n(null, null, 1, r), r.lineEnd()), h && (r.polygonEnd(), h = !1), a = o = null
|
|
},
|
|
sphere: function() {
|
|
r.polygonStart(), r.lineStart(), n(null, null, 1, r), r.lineEnd(), r.polygonEnd()
|
|
}
|
|
};
|
|
|
|
function f(e, n) {
|
|
t(e, n) && r.point(e, n)
|
|
}
|
|
|
|
function d(t, e) {
|
|
s.point(t, e)
|
|
}
|
|
|
|
function g() {
|
|
p.point = d, s.lineStart()
|
|
}
|
|
|
|
function v() {
|
|
p.point = f, s.lineEnd()
|
|
}
|
|
|
|
function m(t, e) {
|
|
u.push([t, e]), l.point(t, e)
|
|
}
|
|
|
|
function y() {
|
|
l.lineStart(), u = []
|
|
}
|
|
|
|
function b() {
|
|
m(u[0][0], u[0][1]), l.lineEnd();
|
|
var t, e, n, i, s = l.clean(),
|
|
p = c.result(),
|
|
f = p.length;
|
|
if (u.pop(), o.push(u), u = null, f)
|
|
if (1 & s) {
|
|
if ((e = (n = p[0]).length - 1) > 0) {
|
|
for (h || (r.polygonStart(), h = !0), r.lineStart(), t = 0; t < e; ++t) r.point((i = n[t])[0], i[1]);
|
|
r.lineEnd()
|
|
}
|
|
} else f > 1 && 2 & s && p.push(p.pop().concat(p.shift())), a.push(p.filter(He))
|
|
}
|
|
return p
|
|
}
|
|
};
|
|
|
|
function He(t) {
|
|
return t.length > 1
|
|
}
|
|
|
|
function We(t, e) {
|
|
return ((t = t.x)[0] < 0 ? t[1] - D - E : D - t[1]) - ((e = e.x)[0] < 0 ? e[1] - D - E : D - e[1])
|
|
}
|
|
var Ze = Be(function() {
|
|
return !0
|
|
}, function(t) {
|
|
var e, n = NaN,
|
|
i = NaN,
|
|
r = NaN;
|
|
return {
|
|
lineStart: function() {
|
|
t.lineStart(), e = 1
|
|
},
|
|
point: function(o, a) {
|
|
var u = o > 0 ? T : -T,
|
|
s = A(o - n);
|
|
A(s - T) < E ? (t.point(n, i = (i + a) / 2 > 0 ? D : -D), t.point(r, i), t.lineEnd(), t.lineStart(), t.point(u, i), t.point(o, i), e = 0) : r !== u && s >= T && (A(n - r) < E && (n -= r * E), A(o - u) < E && (o -= u * E), i = function(t, e, n, i) {
|
|
var r, o, a = X(t - n);
|
|
return A(a) > E ? k((X(e) * (o = F(i)) * X(n) - X(i) * (r = F(e)) * X(t)) / (r * o * a)) : (e + i) / 2
|
|
}(n, i, o, a), t.point(r, i), t.lineEnd(), t.lineStart(), t.point(u, i), e = 0), t.point(n = o, i = a), r = u
|
|
},
|
|
lineEnd: function() {
|
|
t.lineEnd(), n = i = NaN
|
|
},
|
|
clean: function() {
|
|
return 2 - e
|
|
}
|
|
}
|
|
}, function(t, e, n, i) {
|
|
var r;
|
|
if (null == t) r = n * D, i.point(-T, r), i.point(0, r), i.point(T, r), i.point(T, 0), i.point(T, -r), i.point(0, -r), i.point(-T, -r), i.point(-T, 0), i.point(-T, r);
|
|
else if (A(t[0] - e[0]) > E) {
|
|
var o = t[0] < e[0] ? T : -T;
|
|
r = n * o / 2, i.point(-o, r), i.point(0, r), i.point(o, r)
|
|
} else i.point(e[0], e[1])
|
|
}, [-T, -D]);
|
|
var qe = function(t) {
|
|
var e = F(t),
|
|
n = 6 * V,
|
|
i = e > 0,
|
|
r = A(e) > E;
|
|
|
|
function o(t, n) {
|
|
return F(t) * F(n) > e
|
|
}
|
|
|
|
function a(t, n, i) {
|
|
var r = [1, 0, 0],
|
|
o = Gt(Tt(t), Tt(n)),
|
|
a = Dt(o, o),
|
|
u = o[0],
|
|
s = a - u * u;
|
|
if (!s) return !i && t;
|
|
var c = e * a / s,
|
|
l = -e * u / s,
|
|
h = Gt(r, o),
|
|
p = zt(r, c);
|
|
Nt(p, zt(o, l));
|
|
var f = h,
|
|
d = Dt(p, f),
|
|
g = Dt(f, f),
|
|
v = d * d - g * (Dt(p, p) - 1);
|
|
if (!(v < 0)) {
|
|
var m = U(v),
|
|
y = zt(f, (-d - m) / g);
|
|
if (Nt(y, p), y = It(y), !i) return y;
|
|
var b, P = t[0],
|
|
S = n[0],
|
|
_ = t[1],
|
|
M = n[1];
|
|
S < P && (b = P, P = S, S = b);
|
|
var x = S - P,
|
|
j = A(x - T) < E;
|
|
if (!j && M < _ && (b = _, _ = M, M = b), j || x < E ? j ? _ + M > 0 ^ y[1] < (A(y[0] - P) < E ? _ : M) : _ <= y[1] && y[1] <= M : x > T ^ (P <= y[0] && y[0] <= S)) {
|
|
var w = zt(f, (-d + m) / g);
|
|
return Nt(w, p), [y, It(w)]
|
|
}
|
|
}
|
|
}
|
|
|
|
function u(e, n) {
|
|
var r = i ? t : T - t,
|
|
o = 0;
|
|
return e < -r ? o |= 1 : e > r && (o |= 2), n < -r ? o |= 4 : n > r && (o |= 8), o
|
|
}
|
|
return Be(o, function(t) {
|
|
var e, n, s, c, l;
|
|
return {
|
|
lineStart: function() {
|
|
c = s = !1, l = 1
|
|
},
|
|
point: function(h, p) {
|
|
var f, d = [h, p],
|
|
g = o(h, p),
|
|
v = i ? g ? 0 : u(h, p) : g ? u(h + (h < 0 ? T : -T), p) : 0;
|
|
if (!e && (c = s = g) && t.lineStart(), g !== s && (!(f = a(e, d)) || ze(e, f) || ze(d, f)) && (d[2] = 1), g !== s) l = 0, g ? (t.lineStart(), f = a(d, e), t.point(f[0], f[1])) : (f = a(e, d), t.point(f[0], f[1], 2), t.lineEnd()), e = f;
|
|
else if (r && e && i ^ g) {
|
|
var m;
|
|
v & n || !(m = a(d, e, !0)) || (l = 0, i ? (t.lineStart(), t.point(m[0][0], m[0][1]), t.point(m[1][0], m[1][1]), t.lineEnd()) : (t.point(m[1][0], m[1][1]), t.lineEnd(), t.lineStart(), t.point(m[0][0], m[0][1], 3)))
|
|
}!g || e && ze(e, d) || t.point(d[0], d[1]), e = d, s = g, n = v
|
|
},
|
|
lineEnd: function() {
|
|
s && t.lineEnd(), e = null
|
|
},
|
|
clean: function() {
|
|
return l | (c && s) << 1
|
|
}
|
|
}
|
|
}, function(e, i, r, o) {
|
|
Te(o, t, n, r, e, i)
|
|
}, i ? [0, -t] : [-T, t - T])
|
|
},
|
|
Xe = function(t, e, n, i, r, o) {
|
|
var a, u = t[0],
|
|
s = t[1],
|
|
c = 0,
|
|
l = 1,
|
|
h = e[0] - u,
|
|
p = e[1] - s;
|
|
if (a = n - u, h || !(a > 0)) {
|
|
if (a /= h, h < 0) {
|
|
if (a < c) return;
|
|
a < l && (l = a)
|
|
} else if (h > 0) {
|
|
if (a > l) return;
|
|
a > c && (c = a)
|
|
}
|
|
if (a = r - u, h || !(a < 0)) {
|
|
if (a /= h, h < 0) {
|
|
if (a > l) return;
|
|
a > c && (c = a)
|
|
} else if (h > 0) {
|
|
if (a < c) return;
|
|
a < l && (l = a)
|
|
}
|
|
if (a = i - s, p || !(a > 0)) {
|
|
if (a /= p, p < 0) {
|
|
if (a < c) return;
|
|
a < l && (l = a)
|
|
} else if (p > 0) {
|
|
if (a > l) return;
|
|
a > c && (c = a)
|
|
}
|
|
if (a = o - s, p || !(a < 0)) {
|
|
if (a /= p, p < 0) {
|
|
if (a > l) return;
|
|
a > c && (c = a)
|
|
} else if (p > 0) {
|
|
if (a < c) return;
|
|
a < l && (l = a)
|
|
}
|
|
return c > 0 && (t[0] = u + c * h, t[1] = s + c * p), l < 1 && (e[0] = u + l * h, e[1] = s + l * p), !0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
Ye = 1e9,
|
|
Ue = -Ye;
|
|
|
|
function Je(t, e, n, i) {
|
|
function r(r, o) {
|
|
return t <= r && r <= n && e <= o && o <= i
|
|
}
|
|
|
|
function o(r, o, u, c) {
|
|
var l = 0,
|
|
h = 0;
|
|
if (null == r || (l = a(r, u)) !== (h = a(o, u)) || s(r, o) < 0 ^ u > 0)
|
|
do {
|
|
c.point(0 === l || 3 === l ? t : n, l > 1 ? i : e)
|
|
} while ((l = (l + u + 4) % 4) !== h);
|
|
else c.point(o[0], o[1])
|
|
}
|
|
|
|
function a(i, r) {
|
|
return A(i[0] - t) < E ? r > 0 ? 0 : 3 : A(i[0] - n) < E ? r > 0 ? 2 : 1 : A(i[1] - e) < E ? r > 0 ? 1 : 0 : r > 0 ? 3 : 2
|
|
}
|
|
|
|
function u(t, e) {
|
|
return s(t.x, e.x)
|
|
}
|
|
|
|
function s(t, e) {
|
|
var n = a(t, 1),
|
|
i = a(e, 1);
|
|
return n !== i ? n - i : 0 === n ? e[1] - t[1] : 1 === n ? t[0] - e[0] : 2 === n ? t[1] - e[1] : e[0] - t[0]
|
|
}
|
|
return function(a) {
|
|
var s, c, l, h, p, f, d, g, v, m, y, b = a,
|
|
P = Ne(),
|
|
S = {
|
|
point: _,
|
|
lineStart: function() {
|
|
S.point = M, c && c.push(l = []);
|
|
m = !0, v = !1, d = g = NaN
|
|
},
|
|
lineEnd: function() {
|
|
s && (M(h, p), f && v && P.rejoin(), s.push(P.result()));
|
|
S.point = _, v && b.lineEnd()
|
|
},
|
|
polygonStart: function() {
|
|
b = P, s = [], c = [], y = !0
|
|
},
|
|
polygonEnd: function() {
|
|
var e = function() {
|
|
for (var e = 0, n = 0, r = c.length; n < r; ++n)
|
|
for (var o, a, u = c[n], s = 1, l = u.length, h = u[0], p = h[0], f = h[1]; s < l; ++s) o = p, a = f, h = u[s], p = h[0], f = h[1], a <= i ? f > i && (p - o) * (i - a) > (f - a) * (t - o) && ++e : f <= i && (p - o) * (i - a) < (f - a) * (t - o) && --e;
|
|
return e
|
|
}(),
|
|
n = y && e,
|
|
r = (s = L(s)).length;
|
|
(n || r) && (a.polygonStart(), n && (a.lineStart(), o(null, null, 1, a), a.lineEnd()), r && Ae(s, u, e, o, a), a.polygonEnd());
|
|
b = a, s = c = l = null
|
|
}
|
|
};
|
|
|
|
function _(t, e) {
|
|
r(t, e) && b.point(t, e)
|
|
}
|
|
|
|
function M(o, a) {
|
|
var u = r(o, a);
|
|
if (c && l.push([o, a]), m) h = o, p = a, f = u, m = !1, u && (b.lineStart(), b.point(o, a));
|
|
else if (u && v) b.point(o, a);
|
|
else {
|
|
var s = [d = Math.max(Ue, Math.min(Ye, d)), g = Math.max(Ue, Math.min(Ye, g))],
|
|
P = [o = Math.max(Ue, Math.min(Ye, o)), a = Math.max(Ue, Math.min(Ye, a))];
|
|
Xe(s, P, t, e, n, i) ? (v || (b.lineStart(), b.point(s[0], s[1])), b.point(P[0], P[1]), u || b.lineEnd(), y = !1) : u && (b.lineStart(), b.point(o, a), y = !1)
|
|
}
|
|
d = o, g = a, v = u
|
|
}
|
|
return S
|
|
}
|
|
}
|
|
var Ke, Qe, $e, tn, en = function() {
|
|
var t, e, n, i = 0,
|
|
r = 0,
|
|
o = 960,
|
|
a = 500;
|
|
return n = {
|
|
stream: function(n) {
|
|
return t && e === n ? t : t = Je(i, r, o, a)(e = n)
|
|
},
|
|
extent: function(u) {
|
|
return arguments.length ? (i = +u[0][0], r = +u[0][1], o = +u[1][0], a = +u[1][1], t = e = null, n) : [
|
|
[i, r],
|
|
[o, a]
|
|
]
|
|
}
|
|
}
|
|
},
|
|
nn = {
|
|
sphere: tt,
|
|
point: tt,
|
|
lineStart: function() {
|
|
nn.point = on, nn.lineEnd = rn
|
|
},
|
|
lineEnd: tt,
|
|
polygonStart: tt,
|
|
polygonEnd: tt
|
|
};
|
|
|
|
function rn() {
|
|
nn.point = nn.lineEnd = tt
|
|
}
|
|
|
|
function on(t, e) {
|
|
Qe = t *= V, $e = X(e *= V), tn = F(e), nn.point = an
|
|
}
|
|
|
|
function an(t, e) {
|
|
t *= V;
|
|
var n = X(e *= V),
|
|
i = F(e),
|
|
r = A(t - Qe),
|
|
o = F(r),
|
|
a = i * X(r),
|
|
u = tn * n - $e * i * o,
|
|
s = $e * n + tn * i * o;
|
|
Ke.add(R(U(a * a + u * u), s)), Qe = t, $e = n, tn = i
|
|
}
|
|
var un = function(t) {
|
|
return Ke = new _, ht(t, nn), +Ke
|
|
},
|
|
sn = [null, null],
|
|
cn = {
|
|
type: "LineString",
|
|
coordinates: sn
|
|
},
|
|
ln = function(t, e) {
|
|
return sn[0] = t, sn[1] = e, un(cn)
|
|
},
|
|
hn = {
|
|
Feature: function(t, e) {
|
|
return fn(t.geometry, e)
|
|
},
|
|
FeatureCollection: function(t, e) {
|
|
for (var n = t.features, i = -1, r = n.length; ++i < r;)
|
|
if (fn(n[i].geometry, e)) return !0;
|
|
return !1
|
|
}
|
|
},
|
|
pn = {
|
|
Sphere: function() {
|
|
return !0
|
|
},
|
|
Point: function(t, e) {
|
|
return dn(t.coordinates, e)
|
|
},
|
|
MultiPoint: function(t, e) {
|
|
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;)
|
|
if (dn(n[i], e)) return !0;
|
|
return !1
|
|
},
|
|
LineString: function(t, e) {
|
|
return gn(t.coordinates, e)
|
|
},
|
|
MultiLineString: function(t, e) {
|
|
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;)
|
|
if (gn(n[i], e)) return !0;
|
|
return !1
|
|
},
|
|
Polygon: function(t, e) {
|
|
return vn(t.coordinates, e)
|
|
},
|
|
MultiPolygon: function(t, e) {
|
|
for (var n = t.coordinates, i = -1, r = n.length; ++i < r;)
|
|
if (vn(n[i], e)) return !0;
|
|
return !1
|
|
},
|
|
GeometryCollection: function(t, e) {
|
|
for (var n = t.geometries, i = -1, r = n.length; ++i < r;)
|
|
if (fn(n[i], e)) return !0;
|
|
return !1
|
|
}
|
|
};
|
|
|
|
function fn(t, e) {
|
|
return !(!t || !pn.hasOwnProperty(t.type)) && pn[t.type](t, e)
|
|
}
|
|
|
|
function dn(t, e) {
|
|
return 0 === ln(t, e)
|
|
}
|
|
|
|
function gn(t, e) {
|
|
for (var n, i, r, o = 0, a = t.length; o < a; o++) {
|
|
if (0 === (i = ln(t[o], e))) return !0;
|
|
if (o > 0 && (r = ln(t[o], t[o - 1])) > 0 && n <= r && i <= r && (n + i - r) * (1 - Math.pow((n - i) / r, 2)) < I * r) return !0;
|
|
n = i
|
|
}
|
|
return !1
|
|
}
|
|
|
|
function vn(t, e) {
|
|
return !!Fe(t.map(mn), yn(e))
|
|
}
|
|
|
|
function mn(t) {
|
|
return (t = t.map(yn)).pop(), t
|
|
}
|
|
|
|
function yn(t) {
|
|
return [t[0] * V, t[1] * V]
|
|
}
|
|
var bn = function(t, e) {
|
|
return (t && hn.hasOwnProperty(t.type) ? hn[t.type] : fn)(t, e)
|
|
};
|
|
|
|
function Pn(t, e, n) {
|
|
var i = C(t, e - E, n).concat(e);
|
|
return function(t) {
|
|
return i.map(function(e) {
|
|
return [t, e]
|
|
})
|
|
}
|
|
}
|
|
|
|
function Sn(t, e, n) {
|
|
var i = C(t, e - E, n).concat(e);
|
|
return function(t) {
|
|
return i.map(function(e) {
|
|
return [e, t]
|
|
})
|
|
}
|
|
}
|
|
|
|
function _n() {
|
|
var t, e, n, i, r, o, a, u, s, c, l, h, p = 10,
|
|
f = p,
|
|
d = 90,
|
|
g = 360,
|
|
v = 2.5;
|
|
|
|
function m() {
|
|
return {
|
|
type: "MultiLineString",
|
|
coordinates: y()
|
|
}
|
|
}
|
|
|
|
function y() {
|
|
return C(B(i / d) * d, n, d).map(l).concat(C(B(u / g) * g, a, g).map(h)).concat(C(B(e / p) * p, t, p).filter(function(t) {
|
|
return A(t % d) > E
|
|
}).map(s)).concat(C(B(o / f) * f, r, f).filter(function(t) {
|
|
return A(t % g) > E
|
|
}).map(c))
|
|
}
|
|
return m.lines = function() {
|
|
return y().map(function(t) {
|
|
return {
|
|
type: "LineString",
|
|
coordinates: t
|
|
}
|
|
})
|
|
}, m.outline = function() {
|
|
return {
|
|
type: "Polygon",
|
|
coordinates: [l(i).concat(h(a).slice(1), l(n).reverse().slice(1), h(u).reverse().slice(1))]
|
|
}
|
|
}, m.extent = function(t) {
|
|
return arguments.length ? m.extentMajor(t).extentMinor(t) : m.extentMinor()
|
|
}, m.extentMajor = function(t) {
|
|
return arguments.length ? (i = +t[0][0], n = +t[1][0], u = +t[0][1], a = +t[1][1], i > n && (t = i, i = n, n = t), u > a && (t = u, u = a, a = t), m.precision(v)) : [
|
|
[i, u],
|
|
[n, a]
|
|
]
|
|
}, m.extentMinor = function(n) {
|
|
return arguments.length ? (e = +n[0][0], t = +n[1][0], o = +n[0][1], r = +n[1][1], e > t && (n = e, e = t, t = n), o > r && (n = o, o = r, r = n), m.precision(v)) : [
|
|
[e, o],
|
|
[t, r]
|
|
]
|
|
}, m.step = function(t) {
|
|
return arguments.length ? m.stepMajor(t).stepMinor(t) : m.stepMinor()
|
|
}, m.stepMajor = function(t) {
|
|
return arguments.length ? (d = +t[0], g = +t[1], m) : [d, g]
|
|
}, m.stepMinor = function(t) {
|
|
return arguments.length ? (p = +t[0], f = +t[1], m) : [p, f]
|
|
}, m.precision = function(p) {
|
|
return arguments.length ? (v = +p, s = Pn(o, r, 90), c = Sn(e, t, v), l = Pn(u, a, 90), h = Sn(i, n, v), m) : v
|
|
}, m.extentMajor([
|
|
[-180, -90 + E],
|
|
[180, 90 - E]
|
|
]).extentMinor([
|
|
[-180, -80 - E],
|
|
[180, 80 + E]
|
|
])
|
|
}
|
|
|
|
function Mn() {
|
|
return _n()()
|
|
}
|
|
var xn, jn, wn, On, Ln = function(t, e) {
|
|
var n = t[0] * V,
|
|
i = t[1] * V,
|
|
r = e[0] * V,
|
|
o = e[1] * V,
|
|
a = F(i),
|
|
u = X(i),
|
|
s = F(o),
|
|
c = X(o),
|
|
l = a * F(n),
|
|
h = a * X(n),
|
|
p = s * F(r),
|
|
f = s * X(r),
|
|
d = 2 * Q(U($(o - i) + a * s * $(r - n))),
|
|
g = X(d),
|
|
v = d ? function(t) {
|
|
var e = X(t *= d) / g,
|
|
n = X(d - t) / g,
|
|
i = n * l + e * p,
|
|
r = n * h + e * f,
|
|
o = n * u + e * c;
|
|
return [R(r, i) * z, R(o, U(i * i + r * r)) * z]
|
|
} : function() {
|
|
return [n * z, i * z]
|
|
};
|
|
return v.distance = d, v
|
|
},
|
|
Cn = function(t) {
|
|
return t
|
|
},
|
|
En = new _,
|
|
In = new _,
|
|
Tn = {
|
|
point: tt,
|
|
lineStart: tt,
|
|
lineEnd: tt,
|
|
polygonStart: function() {
|
|
Tn.lineStart = Dn, Tn.lineEnd = zn
|
|
},
|
|
polygonEnd: function() {
|
|
Tn.lineStart = Tn.lineEnd = Tn.point = tt, En.add(A(In)), In = new _
|
|
},
|
|
result: function() {
|
|
var t = En / 2;
|
|
return En = new _, t
|
|
}
|
|
};
|
|
|
|
function Dn() {
|
|
Tn.point = Gn
|
|
}
|
|
|
|
function Gn(t, e) {
|
|
Tn.point = Nn, xn = wn = t, jn = On = e
|
|
}
|
|
|
|
function Nn(t, e) {
|
|
In.add(On * t - wn * e), wn = t, On = e
|
|
}
|
|
|
|
function zn() {
|
|
Nn(xn, jn)
|
|
}
|
|
var Vn = Tn,
|
|
An = 1 / 0,
|
|
kn = An,
|
|
Rn = -An,
|
|
Fn = Rn;
|
|
var Bn, Hn, Wn, Zn, qn = {
|
|
point: function(t, e) {
|
|
t < An && (An = t);
|
|
t > Rn && (Rn = t);
|
|
e < kn && (kn = e);
|
|
e > Fn && (Fn = e)
|
|
},
|
|
lineStart: tt,
|
|
lineEnd: tt,
|
|
polygonStart: tt,
|
|
polygonEnd: tt,
|
|
result: function() {
|
|
var t = [
|
|
[An, kn],
|
|
[Rn, Fn]
|
|
];
|
|
return Rn = Fn = -(kn = An = 1 / 0), t
|
|
}
|
|
},
|
|
Xn = 0,
|
|
Yn = 0,
|
|
Un = 0,
|
|
Jn = 0,
|
|
Kn = 0,
|
|
Qn = 0,
|
|
$n = 0,
|
|
ti = 0,
|
|
ei = 0,
|
|
ni = {
|
|
point: ii,
|
|
lineStart: ri,
|
|
lineEnd: ui,
|
|
polygonStart: function() {
|
|
ni.lineStart = si, ni.lineEnd = ci
|
|
},
|
|
polygonEnd: function() {
|
|
ni.point = ii, ni.lineStart = ri, ni.lineEnd = ui
|
|
},
|
|
result: function() {
|
|
var t = ei ? [$n / ei, ti / ei] : Qn ? [Jn / Qn, Kn / Qn] : Un ? [Xn / Un, Yn / Un] : [NaN, NaN];
|
|
return Xn = Yn = Un = Jn = Kn = Qn = $n = ti = ei = 0, t
|
|
}
|
|
};
|
|
|
|
function ii(t, e) {
|
|
Xn += t, Yn += e, ++Un
|
|
}
|
|
|
|
function ri() {
|
|
ni.point = oi
|
|
}
|
|
|
|
function oi(t, e) {
|
|
ni.point = ai, ii(Wn = t, Zn = e)
|
|
}
|
|
|
|
function ai(t, e) {
|
|
var n = t - Wn,
|
|
i = e - Zn,
|
|
r = U(n * n + i * i);
|
|
Jn += r * (Wn + t) / 2, Kn += r * (Zn + e) / 2, Qn += r, ii(Wn = t, Zn = e)
|
|
}
|
|
|
|
function ui() {
|
|
ni.point = ii
|
|
}
|
|
|
|
function si() {
|
|
ni.point = li
|
|
}
|
|
|
|
function ci() {
|
|
hi(Bn, Hn)
|
|
}
|
|
|
|
function li(t, e) {
|
|
ni.point = hi, ii(Bn = Wn = t, Hn = Zn = e)
|
|
}
|
|
|
|
function hi(t, e) {
|
|
var n = t - Wn,
|
|
i = e - Zn,
|
|
r = U(n * n + i * i);
|
|
Jn += r * (Wn + t) / 2, Kn += r * (Zn + e) / 2, Qn += r, $n += (r = Zn * t - Wn * e) * (Wn + t), ti += r * (Zn + e), ei += 3 * r, ii(Wn = t, Zn = e)
|
|
}
|
|
var pi = ni;
|
|
|
|
function fi(t) {
|
|
this._context = t
|
|
}
|
|
fi.prototype = {
|
|
_radius: 4.5,
|
|
pointRadius: function(t) {
|
|
return this._radius = t, this
|
|
},
|
|
polygonStart: function() {
|
|
this._line = 0
|
|
},
|
|
polygonEnd: function() {
|
|
this._line = NaN
|
|
},
|
|
lineStart: function() {
|
|
this._point = 0
|
|
},
|
|
lineEnd: function() {
|
|
0 === this._line && this._context.closePath(), this._point = NaN
|
|
},
|
|
point: function(t, e) {
|
|
switch (this._point) {
|
|
case 0:
|
|
this._context.moveTo(t, e), this._point = 1;
|
|
break;
|
|
case 1:
|
|
this._context.lineTo(t, e);
|
|
break;
|
|
default:
|
|
this._context.moveTo(t + this._radius, e), this._context.arc(t, e, this._radius, 0, N)
|
|
}
|
|
},
|
|
result: tt
|
|
};
|
|
var di, gi, vi, mi, yi, bi = new _,
|
|
Pi = {
|
|
point: tt,
|
|
lineStart: function() {
|
|
Pi.point = Si
|
|
},
|
|
lineEnd: function() {
|
|
di && _i(gi, vi), Pi.point = tt
|
|
},
|
|
polygonStart: function() {
|
|
di = !0
|
|
},
|
|
polygonEnd: function() {
|
|
di = null
|
|
},
|
|
result: function() {
|
|
var t = +bi;
|
|
return bi = new _, t
|
|
}
|
|
};
|
|
|
|
function Si(t, e) {
|
|
Pi.point = _i, gi = mi = t, vi = yi = e
|
|
}
|
|
|
|
function _i(t, e) {
|
|
mi -= t, yi -= e, bi.add(U(mi * mi + yi * yi)), mi = t, yi = e
|
|
}
|
|
var Mi = Pi;
|
|
|
|
function xi() {
|
|
this._string = []
|
|
}
|
|
|
|
function ji(t) {
|
|
return "m0," + t + "a" + t + "," + t + " 0 1,1 0," + -2 * t + "a" + t + "," + t + " 0 1,1 0," + 2 * t + "z"
|
|
}
|
|
xi.prototype = {
|
|
_radius: 4.5,
|
|
_circle: ji(4.5),
|
|
pointRadius: function(t) {
|
|
return (t = +t) !== this._radius && (this._radius = t, this._circle = null), this
|
|
},
|
|
polygonStart: function() {
|
|
this._line = 0
|
|
},
|
|
polygonEnd: function() {
|
|
this._line = NaN
|
|
},
|
|
lineStart: function() {
|
|
this._point = 0
|
|
},
|
|
lineEnd: function() {
|
|
0 === this._line && this._string.push("Z"), this._point = NaN
|
|
},
|
|
point: function(t, e) {
|
|
switch (this._point) {
|
|
case 0:
|
|
this._string.push("M", t, ",", e), this._point = 1;
|
|
break;
|
|
case 1:
|
|
this._string.push("L", t, ",", e);
|
|
break;
|
|
default:
|
|
null == this._circle && (this._circle = ji(this._radius)), this._string.push("M", t, ",", e, this._circle)
|
|
}
|
|
},
|
|
result: function() {
|
|
if (this._string.length) {
|
|
var t = this._string.join("");
|
|
return this._string = [], t
|
|
}
|
|
return null
|
|
}
|
|
};
|
|
var wi = function(t, e) {
|
|
var n, i, r = 4.5;
|
|
|
|
function o(t) {
|
|
return t && ("function" == typeof r && i.pointRadius(+r.apply(this, arguments)), ht(t, n(i))), i.result()
|
|
}
|
|
return o.area = function(t) {
|
|
return ht(t, n(Vn)), Vn.result()
|
|
}, o.measure = function(t) {
|
|
return ht(t, n(Mi)), Mi.result()
|
|
}, o.bounds = function(t) {
|
|
return ht(t, n(qn)), qn.result()
|
|
}, o.centroid = function(t) {
|
|
return ht(t, n(pi)), pi.result()
|
|
}, o.projection = function(e) {
|
|
return arguments.length ? (n = null == e ? (t = null, Cn) : (t = e).stream, o) : t
|
|
}, o.context = function(t) {
|
|
return arguments.length ? (i = null == t ? (e = null, new xi) : new fi(e = t), "function" != typeof r && i.pointRadius(r), o) : e
|
|
}, o.pointRadius = function(t) {
|
|
return arguments.length ? (r = "function" == typeof t ? t : (i.pointRadius(+t), +t), o) : r
|
|
}, o.projection(t).context(e)
|
|
},
|
|
Oi = function(t) {
|
|
return {
|
|
stream: Li(t)
|
|
}
|
|
};
|
|
|
|
function Li(t) {
|
|
return function(e) {
|
|
var n = new Ci;
|
|
for (var i in t) n[i] = t[i];
|
|
return n.stream = e, n
|
|
}
|
|
}
|
|
|
|
function Ci() {}
|
|
|
|
function Ei(t, e, n) {
|
|
var i = t.clipExtent && t.clipExtent();
|
|
return t.scale(150).translate([0, 0]), null != i && t.clipExtent(null), ht(n, t.stream(qn)), e(qn.result()), null != i && t.clipExtent(i), t
|
|
}
|
|
|
|
function Ii(t, e, n) {
|
|
return Ei(t, function(n) {
|
|
var i = e[1][0] - e[0][0],
|
|
r = e[1][1] - e[0][1],
|
|
o = Math.min(i / (n[1][0] - n[0][0]), r / (n[1][1] - n[0][1])),
|
|
a = +e[0][0] + (i - o * (n[1][0] + n[0][0])) / 2,
|
|
u = +e[0][1] + (r - o * (n[1][1] + n[0][1])) / 2;
|
|
t.scale(150 * o).translate([a, u])
|
|
}, n)
|
|
}
|
|
|
|
function Ti(t, e, n) {
|
|
return Ii(t, [
|
|
[0, 0], e
|
|
], n)
|
|
}
|
|
|
|
function Di(t, e, n) {
|
|
return Ei(t, function(n) {
|
|
var i = +e,
|
|
r = i / (n[1][0] - n[0][0]),
|
|
o = (i - r * (n[1][0] + n[0][0])) / 2,
|
|
a = -r * n[0][1];
|
|
t.scale(150 * r).translate([o, a])
|
|
}, n)
|
|
}
|
|
|
|
function Gi(t, e, n) {
|
|
return Ei(t, function(n) {
|
|
var i = +e,
|
|
r = i / (n[1][1] - n[0][1]),
|
|
o = -r * n[0][0],
|
|
a = (i - r * (n[1][1] + n[0][1])) / 2;
|
|
t.scale(150 * r).translate([o, a])
|
|
}, n)
|
|
}
|
|
Ci.prototype = {
|
|
constructor: Ci,
|
|
point: function(t, e) {
|
|
this.stream.point(t, e)
|
|
},
|
|
sphere: function() {
|
|
this.stream.sphere()
|
|
},
|
|
lineStart: function() {
|
|
this.stream.lineStart()
|
|
},
|
|
lineEnd: function() {
|
|
this.stream.lineEnd()
|
|
},
|
|
polygonStart: function() {
|
|
this.stream.polygonStart()
|
|
},
|
|
polygonEnd: function() {
|
|
this.stream.polygonEnd()
|
|
}
|
|
};
|
|
var Ni = 16,
|
|
zi = F(30 * V),
|
|
Vi = function(t, e) {
|
|
return +e ? function(t, e) {
|
|
function n(i, r, o, a, u, s, c, l, h, p, f, d, g, v) {
|
|
var m = c - i,
|
|
y = l - r,
|
|
b = m * m + y * y;
|
|
if (b > 4 * e && g--) {
|
|
var P = a + p,
|
|
S = u + f,
|
|
_ = s + d,
|
|
M = U(P * P + S * S + _ * _),
|
|
x = Q(_ /= M),
|
|
j = A(A(_) - 1) < E || A(o - h) < E ? (o + h) / 2 : R(S, P),
|
|
w = t(j, x),
|
|
O = w[0],
|
|
L = w[1],
|
|
C = O - i,
|
|
I = L - r,
|
|
T = y * C - m * I;
|
|
(T * T / b > e || A((m * C + y * I) / b - .5) > .3 || a * p + u * f + s * d < zi) && (n(i, r, o, a, u, s, O, L, j, P /= M, S /= M, _, g, v), v.point(O, L), n(O, L, j, P, S, _, c, l, h, p, f, d, g, v))
|
|
}
|
|
}
|
|
return function(e) {
|
|
var i, r, o, a, u, s, c, l, h, p, f, d, g = {
|
|
point: v,
|
|
lineStart: m,
|
|
lineEnd: b,
|
|
polygonStart: function() {
|
|
e.polygonStart(), g.lineStart = P
|
|
},
|
|
polygonEnd: function() {
|
|
e.polygonEnd(), g.lineStart = m
|
|
}
|
|
};
|
|
|
|
function v(n, i) {
|
|
n = t(n, i), e.point(n[0], n[1])
|
|
}
|
|
|
|
function m() {
|
|
l = NaN, g.point = y, e.lineStart()
|
|
}
|
|
|
|
function y(i, r) {
|
|
var o = Tt([i, r]),
|
|
a = t(i, r);
|
|
n(l, h, c, p, f, d, l = a[0], h = a[1], c = i, p = o[0], f = o[1], d = o[2], Ni, e), e.point(l, h)
|
|
}
|
|
|
|
function b() {
|
|
g.point = v, e.lineEnd()
|
|
}
|
|
|
|
function P() {
|
|
m(), g.point = S, g.lineEnd = _
|
|
}
|
|
|
|
function S(t, e) {
|
|
y(i = t, e), r = l, o = h, a = p, u = f, s = d, g.point = y
|
|
}
|
|
|
|
function _() {
|
|
n(l, h, c, p, f, d, r, o, i, a, u, s, Ni, e), g.lineEnd = b, b()
|
|
}
|
|
return g
|
|
}
|
|
}(t, e) : function(t) {
|
|
return Li({
|
|
point: function(e, n) {
|
|
e = t(e, n), this.stream.point(e[0], e[1])
|
|
}
|
|
})
|
|
}(t)
|
|
};
|
|
var Ai = Li({
|
|
point: function(t, e) {
|
|
this.stream.point(t * V, e * V)
|
|
}
|
|
});
|
|
|
|
function ki(t, e, n, i, r, o) {
|
|
if (!o) return function(t, e, n, i, r) {
|
|
function o(o, a) {
|
|
return [e + t * (o *= i), n - t * (a *= r)]
|
|
}
|
|
return o.invert = function(o, a) {
|
|
return [(o - e) / t * i, (n - a) / t * r]
|
|
}, o
|
|
}(t, e, n, i, r);
|
|
var a = F(o),
|
|
u = X(o),
|
|
s = a * t,
|
|
c = u * t,
|
|
l = a / t,
|
|
h = u / t,
|
|
p = (u * n - a * e) / t,
|
|
f = (u * e + a * n) / t;
|
|
|
|
function d(t, o) {
|
|
return [s * (t *= i) - c * (o *= r) + e, n - c * t - s * o]
|
|
}
|
|
return d.invert = function(t, e) {
|
|
return [i * (l * t - h * e + p), r * (f - h * t - l * e)]
|
|
}, d
|
|
}
|
|
|
|
function Ri(t) {
|
|
return Fi(function() {
|
|
return t
|
|
})()
|
|
}
|
|
|
|
function Fi(t) {
|
|
var e, n, i, r, o, a, u, s, c, l, h = 150,
|
|
p = 480,
|
|
f = 250,
|
|
d = 0,
|
|
g = 0,
|
|
v = 0,
|
|
m = 0,
|
|
y = 0,
|
|
b = 0,
|
|
P = 1,
|
|
S = 1,
|
|
_ = null,
|
|
M = Ze,
|
|
x = null,
|
|
j = Cn,
|
|
w = .5;
|
|
|
|
function O(t) {
|
|
return s(t[0] * V, t[1] * V)
|
|
}
|
|
|
|
function L(t) {
|
|
return (t = s.invert(t[0], t[1])) && [t[0] * z, t[1] * z]
|
|
}
|
|
|
|
function C() {
|
|
var t = ki(h, 0, 0, P, S, b).apply(null, e(d, g)),
|
|
i = ki(h, p - t[0], f - t[1], P, S, b);
|
|
return n = Oe(v, m, y), u = je(e, i), s = je(n, u), a = Vi(u, w), E()
|
|
}
|
|
|
|
function E() {
|
|
return c = l = null, O
|
|
}
|
|
return O.stream = function(t) {
|
|
return c && l === t ? c : c = Ai(function(t) {
|
|
return Li({
|
|
point: function(e, n) {
|
|
var i = t(e, n);
|
|
return this.stream.point(i[0], i[1])
|
|
}
|
|
})
|
|
}(n)(M(a(j(l = t)))))
|
|
}, O.preclip = function(t) {
|
|
return arguments.length ? (M = t, _ = void 0, E()) : M
|
|
}, O.postclip = function(t) {
|
|
return arguments.length ? (j = t, x = i = r = o = null, E()) : j
|
|
}, O.clipAngle = function(t) {
|
|
return arguments.length ? (M = +t ? qe(_ = t * V) : (_ = null, Ze), E()) : _ * z
|
|
}, O.clipExtent = function(t) {
|
|
return arguments.length ? (j = null == t ? (x = i = r = o = null, Cn) : Je(x = +t[0][0], i = +t[0][1], r = +t[1][0], o = +t[1][1]), E()) : null == x ? null : [
|
|
[x, i],
|
|
[r, o]
|
|
]
|
|
}, O.scale = function(t) {
|
|
return arguments.length ? (h = +t, C()) : h
|
|
}, O.translate = function(t) {
|
|
return arguments.length ? (p = +t[0], f = +t[1], C()) : [p, f]
|
|
}, O.center = function(t) {
|
|
return arguments.length ? (d = t[0] % 360 * V, g = t[1] % 360 * V, C()) : [d * z, g * z]
|
|
}, O.rotate = function(t) {
|
|
return arguments.length ? (v = t[0] % 360 * V, m = t[1] % 360 * V, y = t.length > 2 ? t[2] % 360 * V : 0, C()) : [v * z, m * z, y * z]
|
|
}, O.angle = function(t) {
|
|
return arguments.length ? (b = t % 360 * V, C()) : b * z
|
|
}, O.reflectX = function(t) {
|
|
return arguments.length ? (P = t ? -1 : 1, C()) : P < 0
|
|
}, O.reflectY = function(t) {
|
|
return arguments.length ? (S = t ? -1 : 1, C()) : S < 0
|
|
}, O.precision = function(t) {
|
|
return arguments.length ? (a = Vi(u, w = t * t), E()) : U(w)
|
|
}, O.fitExtent = function(t, e) {
|
|
return Ii(O, t, e)
|
|
}, O.fitSize = function(t, e) {
|
|
return Ti(O, t, e)
|
|
}, O.fitWidth = function(t, e) {
|
|
return Di(O, t, e)
|
|
}, O.fitHeight = function(t, e) {
|
|
return Gi(O, t, e)
|
|
},
|
|
function() {
|
|
return e = t.apply(this, arguments), O.invert = e.invert && L, C()
|
|
}
|
|
}
|
|
|
|
function Bi(t) {
|
|
var e = 0,
|
|
n = T / 3,
|
|
i = Fi(t),
|
|
r = i(e, n);
|
|
return r.parallels = function(t) {
|
|
return arguments.length ? i(e = t[0] * V, n = t[1] * V) : [e * z, n * z]
|
|
}, r
|
|
}
|
|
|
|
function Hi(t, e) {
|
|
var n = X(t),
|
|
i = (n + X(e)) / 2;
|
|
if (A(i) < E) return function(t) {
|
|
var e = F(t);
|
|
|
|
function n(t, n) {
|
|
return [t * e, X(n) / e]
|
|
}
|
|
return n.invert = function(t, n) {
|
|
return [t / e, Q(n * e)]
|
|
}, n
|
|
}(t);
|
|
var r = 1 + n * (2 * i - n),
|
|
o = U(r) / i;
|
|
|
|
function a(t, e) {
|
|
var n = U(r - 2 * i * X(e)) / i;
|
|
return [n * X(t *= i), o - n * F(t)]
|
|
}
|
|
return a.invert = function(t, e) {
|
|
var n = o - e,
|
|
a = R(t, A(n)) * Y(n);
|
|
return n * i < 0 && (a -= T * Y(t) * Y(n)), [a / i, Q((r - (t * t + n * n) * i * i) / (2 * i))]
|
|
}, a
|
|
}
|
|
var Wi = function() {
|
|
return Bi(Hi).scale(155.424).center([0, 33.6442])
|
|
},
|
|
Zi = function() {
|
|
return Wi().parallels([29.5, 45.5]).scale(1070).translate([480, 250]).rotate([96, 0]).center([-.6, 38.7])
|
|
};
|
|
var qi = function() {
|
|
var t, e, n, i, r, o, a = Zi(),
|
|
u = Wi().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),
|
|
s = Wi().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),
|
|
c = {
|
|
point: function(t, e) {
|
|
o = [t, e]
|
|
}
|
|
};
|
|
|
|
function l(t) {
|
|
var e = t[0],
|
|
a = t[1];
|
|
return o = null, n.point(e, a), o || (i.point(e, a), o) || (r.point(e, a), o)
|
|
}
|
|
|
|
function h() {
|
|
return t = e = null, l
|
|
}
|
|
return l.invert = function(t) {
|
|
var e = a.scale(),
|
|
n = a.translate(),
|
|
i = (t[0] - n[0]) / e,
|
|
r = (t[1] - n[1]) / e;
|
|
return (r >= .12 && r < .234 && i >= -.425 && i < -.214 ? u : r >= .166 && r < .234 && i >= -.214 && i < -.115 ? s : a).invert(t)
|
|
}, l.stream = function(n) {
|
|
return t && e === n ? t : t = function(t) {
|
|
var e = t.length;
|
|
return {
|
|
point: function(n, i) {
|
|
for (var r = -1; ++r < e;) t[r].point(n, i)
|
|
},
|
|
sphere: function() {
|
|
for (var n = -1; ++n < e;) t[n].sphere()
|
|
},
|
|
lineStart: function() {
|
|
for (var n = -1; ++n < e;) t[n].lineStart()
|
|
},
|
|
lineEnd: function() {
|
|
for (var n = -1; ++n < e;) t[n].lineEnd()
|
|
},
|
|
polygonStart: function() {
|
|
for (var n = -1; ++n < e;) t[n].polygonStart()
|
|
},
|
|
polygonEnd: function() {
|
|
for (var n = -1; ++n < e;) t[n].polygonEnd()
|
|
}
|
|
}
|
|
}([a.stream(e = n), u.stream(n), s.stream(n)])
|
|
}, l.precision = function(t) {
|
|
return arguments.length ? (a.precision(t), u.precision(t), s.precision(t), h()) : a.precision()
|
|
}, l.scale = function(t) {
|
|
return arguments.length ? (a.scale(t), u.scale(.35 * t), s.scale(t), l.translate(a.translate())) : a.scale()
|
|
}, l.translate = function(t) {
|
|
if (!arguments.length) return a.translate();
|
|
var e = a.scale(),
|
|
o = +t[0],
|
|
l = +t[1];
|
|
return n = a.translate(t).clipExtent([
|
|
[o - .455 * e, l - .238 * e],
|
|
[o + .455 * e, l + .238 * e]
|
|
]).stream(c), i = u.translate([o - .307 * e, l + .201 * e]).clipExtent([
|
|
[o - .425 * e + E, l + .12 * e + E],
|
|
[o - .214 * e - E, l + .234 * e - E]
|
|
]).stream(c), r = s.translate([o - .205 * e, l + .212 * e]).clipExtent([
|
|
[o - .214 * e + E, l + .166 * e + E],
|
|
[o - .115 * e - E, l + .234 * e - E]
|
|
]).stream(c), h()
|
|
}, l.fitExtent = function(t, e) {
|
|
return Ii(l, t, e)
|
|
}, l.fitSize = function(t, e) {
|
|
return Ti(l, t, e)
|
|
}, l.fitWidth = function(t, e) {
|
|
return Di(l, t, e)
|
|
}, l.fitHeight = function(t, e) {
|
|
return Gi(l, t, e)
|
|
}, l.scale(1070)
|
|
};
|
|
|
|
function Xi(t) {
|
|
return function(e, n) {
|
|
var i = F(e),
|
|
r = F(n),
|
|
o = t(i * r);
|
|
return o === 1 / 0 ? [2, 0] : [o * r * X(e), o * X(n)]
|
|
}
|
|
}
|
|
|
|
function Yi(t) {
|
|
return function(e, n) {
|
|
var i = U(e * e + n * n),
|
|
r = t(i),
|
|
o = X(r),
|
|
a = F(r);
|
|
return [R(e * o, i * a), Q(i && n * o / i)]
|
|
}
|
|
}
|
|
var Ui = Xi(function(t) {
|
|
return U(2 / (1 + t))
|
|
});
|
|
Ui.invert = Yi(function(t) {
|
|
return 2 * Q(t / 2)
|
|
});
|
|
var Ji = function() {
|
|
return Ri(Ui).scale(124.75).clipAngle(179.999)
|
|
},
|
|
Ki = Xi(function(t) {
|
|
return (t = K(t)) && t / X(t)
|
|
});
|
|
Ki.invert = Yi(function(t) {
|
|
return t
|
|
});
|
|
var Qi = function() {
|
|
return Ri(Ki).scale(79.4188).clipAngle(179.999)
|
|
};
|
|
|
|
function $i(t, e) {
|
|
return [t, Z(J((D + e) / 2))]
|
|
}
|
|
$i.invert = function(t, e) {
|
|
return [t, 2 * k(H(e)) - D]
|
|
};
|
|
var tr = function() {
|
|
return er($i).scale(961 / N)
|
|
};
|
|
|
|
function er(t) {
|
|
var e, n, i, r = Ri(t),
|
|
o = r.center,
|
|
a = r.scale,
|
|
u = r.translate,
|
|
s = r.clipExtent,
|
|
c = null;
|
|
|
|
function l() {
|
|
var o = T * a(),
|
|
u = r(Ie(r.rotate()).invert([0, 0]));
|
|
return s(null == c ? [
|
|
[u[0] - o, u[1] - o],
|
|
[u[0] + o, u[1] + o]
|
|
] : t === $i ? [
|
|
[Math.max(u[0] - o, c), e],
|
|
[Math.min(u[0] + o, n), i]
|
|
] : [
|
|
[c, Math.max(u[1] - o, e)],
|
|
[n, Math.min(u[1] + o, i)]
|
|
])
|
|
}
|
|
return r.scale = function(t) {
|
|
return arguments.length ? (a(t), l()) : a()
|
|
}, r.translate = function(t) {
|
|
return arguments.length ? (u(t), l()) : u()
|
|
}, r.center = function(t) {
|
|
return arguments.length ? (o(t), l()) : o()
|
|
}, r.clipExtent = function(t) {
|
|
return arguments.length ? (null == t ? c = e = n = i = null : (c = +t[0][0], e = +t[0][1], n = +t[1][0], i = +t[1][1]), l()) : null == c ? null : [
|
|
[c, e],
|
|
[n, i]
|
|
]
|
|
}, l()
|
|
}
|
|
|
|
function nr(t) {
|
|
return J((D + t) / 2)
|
|
}
|
|
|
|
function ir(t, e) {
|
|
var n = F(t),
|
|
i = t === e ? X(t) : Z(n / F(e)) / Z(nr(e) / nr(t)),
|
|
r = n * q(nr(t), i) / i;
|
|
if (!i) return $i;
|
|
|
|
function o(t, e) {
|
|
r > 0 ? e < -D + E && (e = -D + E) : e > D - E && (e = D - E);
|
|
var n = r / q(nr(e), i);
|
|
return [n * X(i * t), r - n * F(i * t)]
|
|
}
|
|
return o.invert = function(t, e) {
|
|
var n = r - e,
|
|
o = Y(i) * U(t * t + n * n),
|
|
a = R(t, A(n)) * Y(n);
|
|
return n * i < 0 && (a -= T * Y(t) * Y(n)), [a / i, 2 * k(q(r / o, 1 / i)) - D]
|
|
}, o
|
|
}
|
|
var rr = function() {
|
|
return Bi(ir).scale(109.5).parallels([30, 30])
|
|
};
|
|
|
|
function or(t, e) {
|
|
return [t, e]
|
|
}
|
|
or.invert = or;
|
|
var ar = function() {
|
|
return Ri(or).scale(152.63)
|
|
};
|
|
|
|
function ur(t, e) {
|
|
var n = F(t),
|
|
i = t === e ? X(t) : (n - F(e)) / (e - t),
|
|
r = n / i + t;
|
|
if (A(i) < E) return or;
|
|
|
|
function o(t, e) {
|
|
var n = r - e,
|
|
o = i * t;
|
|
return [n * X(o), r - n * F(o)]
|
|
}
|
|
return o.invert = function(t, e) {
|
|
var n = r - e,
|
|
o = R(t, A(n)) * Y(n);
|
|
return n * i < 0 && (o -= T * Y(t) * Y(n)), [o / i, r - Y(i) * U(t * t + n * n)]
|
|
}, o
|
|
}
|
|
var sr = function() {
|
|
return Bi(ur).scale(131.154).center([0, 13.9389])
|
|
},
|
|
cr = 1.340264,
|
|
lr = -.081106,
|
|
hr = 893e-6,
|
|
pr = .003796,
|
|
fr = U(3) / 2;
|
|
|
|
function dr(t, e) {
|
|
var n = Q(fr * X(e)),
|
|
i = n * n,
|
|
r = i * i * i;
|
|
return [t * F(n) / (fr * (cr + 3 * lr * i + r * (7 * hr + 9 * pr * i))), n * (cr + lr * i + r * (hr + pr * i))]
|
|
}
|
|
dr.invert = function(t, e) {
|
|
for (var n, i = e, r = i * i, o = r * r * r, a = 0; a < 12 && (o = (r = (i -= n = (i * (cr + lr * r + o * (hr + pr * r)) - e) / (cr + 3 * lr * r + o * (7 * hr + 9 * pr * r))) * i) * r * r, !(A(n) < I)); ++a);
|
|
return [fr * t * (cr + 3 * lr * r + o * (7 * hr + 9 * pr * r)) / F(i), Q(X(i) / fr)]
|
|
};
|
|
var gr = function() {
|
|
return Ri(dr).scale(177.158)
|
|
};
|
|
|
|
function vr(t, e) {
|
|
var n = F(e),
|
|
i = F(t) * n;
|
|
return [n * X(t) / i, X(e) / i]
|
|
}
|
|
vr.invert = Yi(k);
|
|
var mr = function() {
|
|
return Ri(vr).scale(144.049).clipAngle(60)
|
|
},
|
|
yr = function() {
|
|
var t, e, n, i, r, o, a, u = 1,
|
|
s = 0,
|
|
c = 0,
|
|
l = 1,
|
|
h = 1,
|
|
p = 0,
|
|
f = null,
|
|
d = 1,
|
|
g = 1,
|
|
v = Li({
|
|
point: function(t, e) {
|
|
var n = b([t, e]);
|
|
this.stream.point(n[0], n[1])
|
|
}
|
|
}),
|
|
m = Cn;
|
|
|
|
function y() {
|
|
return d = u * l, g = u * h, o = a = null, b
|
|
}
|
|
|
|
function b(n) {
|
|
var i = n[0] * d,
|
|
r = n[1] * g;
|
|
if (p) {
|
|
var o = r * t - i * e;
|
|
i = i * t + r * e, r = o
|
|
}
|
|
return [i + s, r + c]
|
|
}
|
|
return b.invert = function(n) {
|
|
var i = n[0] - s,
|
|
r = n[1] - c;
|
|
if (p) {
|
|
var o = r * t + i * e;
|
|
i = i * t - r * e, r = o
|
|
}
|
|
return [i / d, r / g]
|
|
}, b.stream = function(t) {
|
|
return o && a === t ? o : o = v(m(a = t))
|
|
}, b.postclip = function(t) {
|
|
return arguments.length ? (m = t, f = n = i = r = null, y()) : m
|
|
}, b.clipExtent = function(t) {
|
|
return arguments.length ? (m = null == t ? (f = n = i = r = null, Cn) : Je(f = +t[0][0], n = +t[0][1], i = +t[1][0], r = +t[1][1]), y()) : null == f ? null : [
|
|
[f, n],
|
|
[i, r]
|
|
]
|
|
}, b.scale = function(t) {
|
|
return arguments.length ? (u = +t, y()) : u
|
|
}, b.translate = function(t) {
|
|
return arguments.length ? (s = +t[0], c = +t[1], y()) : [s, c]
|
|
}, b.angle = function(n) {
|
|
return arguments.length ? (e = X(p = n % 360 * V), t = F(p), y()) : p * z
|
|
}, b.reflectX = function(t) {
|
|
return arguments.length ? (l = t ? -1 : 1, y()) : l < 0
|
|
}, b.reflectY = function(t) {
|
|
return arguments.length ? (h = t ? -1 : 1, y()) : h < 0
|
|
}, b.fitExtent = function(t, e) {
|
|
return Ii(b, t, e)
|
|
}, b.fitSize = function(t, e) {
|
|
return Ti(b, t, e)
|
|
}, b.fitWidth = function(t, e) {
|
|
return Di(b, t, e)
|
|
}, b.fitHeight = function(t, e) {
|
|
return Gi(b, t, e)
|
|
}, b
|
|
};
|
|
|
|
function br(t, e) {
|
|
var n = e * e,
|
|
i = n * n;
|
|
return [t * (.8707 - .131979 * n + i * (i * (.003971 * n - .001529 * i) - .013791)), e * (1.007226 + n * (.015085 + i * (.028874 * n - .044475 - .005916 * i)))]
|
|
}
|
|
br.invert = function(t, e) {
|
|
var n, i = e,
|
|
r = 25;
|
|
do {
|
|
var o = i * i,
|
|
a = o * o;
|
|
i -= n = (i * (1.007226 + o * (.015085 + a * (.028874 * o - .044475 - .005916 * a))) - e) / (1.007226 + o * (.045255 + a * (.259866 * o - .311325 - .005916 * 11 * a)))
|
|
} while (A(n) > E && --r > 0);
|
|
return [t / (.8707 + (o = i * i) * (o * (o * o * o * (.003971 - .001529 * o) - .013791) - .131979)), i]
|
|
};
|
|
var Pr = function() {
|
|
return Ri(br).scale(175.295)
|
|
};
|
|
|
|
function Sr(t, e) {
|
|
return [F(e) * X(t), X(e)]
|
|
}
|
|
Sr.invert = Yi(Q);
|
|
var _r = function() {
|
|
return Ri(Sr).scale(249.5).clipAngle(90 + E)
|
|
};
|
|
|
|
function Mr(t, e) {
|
|
var n = F(e),
|
|
i = 1 + F(t) * n;
|
|
return [n * X(t) / i, X(e) / i]
|
|
}
|
|
Mr.invert = Yi(function(t) {
|
|
return 2 * k(t)
|
|
});
|
|
var xr = function() {
|
|
return Ri(Mr).scale(250).clipAngle(142)
|
|
};
|
|
|
|
function jr(t, e) {
|
|
return [Z(J((D + e) / 2)), -t]
|
|
}
|
|
jr.invert = function(t, e) {
|
|
return [-e, 2 * k(H(t)) - D]
|
|
};
|
|
var wr = function() {
|
|
var t = er(jr),
|
|
e = t.center,
|
|
n = t.rotate;
|
|
return t.center = function(t) {
|
|
return arguments.length ? e([-t[1], t[0]]) : [(t = e())[1], -t[0]]
|
|
}, t.rotate = function(t) {
|
|
return arguments.length ? n([t[0], t[1], t.length > 2 ? t[2] + 90 : 90]) : [(t = n())[0], t[1], t[2] - 90]
|
|
}, n([0, 0, 90]).scale(159.155)
|
|
},
|
|
Or = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapSeriesDataItem", e.values.value = {}, e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), Object.defineProperty(e.prototype, "value", {
|
|
get: function() {
|
|
return this.values.value.value
|
|
},
|
|
set: function(t) {
|
|
this.setValue("value", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "zoomLevel", {
|
|
get: function() {
|
|
return this.properties.zoomLevel
|
|
},
|
|
set: function(t) {
|
|
this.setProperty("zoomLevel", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "zoomGeoPoint", {
|
|
get: function() {
|
|
return this.properties.zoomGeoPoint
|
|
},
|
|
set: function(t) {
|
|
this.setProperty("zoomGeoPoint", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "east", {
|
|
get: function() {
|
|
return this._east
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "west", {
|
|
get: function() {
|
|
return this._west
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "south", {
|
|
get: function() {
|
|
return this._south
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "north", {
|
|
get: function() {
|
|
return this._north
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.updateExtremes = function() {
|
|
var t = this.getFeature().geometry;
|
|
if (t) {
|
|
var e = he(t),
|
|
n = e[0][0],
|
|
i = e[0][1],
|
|
r = e[1][1],
|
|
o = e[1][0],
|
|
a = !1;
|
|
r != this.north && (this._north = v.round(r, 6), a = !0), i != this.south && (this._south = v.round(i, 6), a = !0), o != this.east && (this._east = v.round(o, 6), a = !0), n != this.west && (this._west = v.round(n, 6), a = !0), this._east < this._west && (this._east = 180, this._west = -180), a && this.component.invalidateDataItems()
|
|
}
|
|
}, e.prototype.getFeature = function() {
|
|
return {}
|
|
}, e
|
|
}(f.b),
|
|
Lr = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapSeries", e.isMeasured = !1, e.nonScalingStroke = !0, e.dataFields.value = "value", e.ignoreBounds = !1, e.tooltip && (e.tooltip.showInViewport = !0), e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
|
|
return new Or
|
|
}, e.prototype.checkInclude = function(t, e, n) {
|
|
if (t) {
|
|
if (0 == t.length) return !1;
|
|
if (-1 == t.indexOf(n)) return !1
|
|
}
|
|
return !(e && e.length > 0 && -1 != e.indexOf(n))
|
|
}, Object.defineProperty(e.prototype, "useGeodata", {
|
|
get: function() {
|
|
return this.getPropertyValue("useGeodata")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("useGeodata", t) && this.invalidateData()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "include", {
|
|
get: function() {
|
|
return this.getPropertyValue("include")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("include", t) && this.processIncExc()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.processIncExc = function() {
|
|
this.invalidateData()
|
|
}, Object.defineProperty(e.prototype, "ignoreBounds", {
|
|
get: function() {
|
|
return this.getPropertyValue("ignoreBounds")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("ignoreBounds", t) && this.chart && this.chart.updateExtremes()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "exclude", {
|
|
get: function() {
|
|
return this.getPropertyValue("exclude")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("exclude", t) && this.processIncExc()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.handleObjectAdded = function(t) {
|
|
var e = t.newValue;
|
|
e.parent = this, e.series = this, e.strokeWidth = e.strokeWidth
|
|
}, Object.defineProperty(e.prototype, "geodata", {
|
|
get: function() {
|
|
return this._geodata
|
|
},
|
|
set: function(t) {
|
|
if (t != this._geodata) {
|
|
this._geodata = t;
|
|
for (var e = this.data.length - 1; e >= 0; e--) 1 == this.data[e].madeFromGeoData && this.data.splice(e, 1);
|
|
this.disposeData(), this.invalidateData()
|
|
}
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "geodataSource", {
|
|
get: function() {
|
|
return this._dataSources.geodata || this.getDataSource("geodata"), this._dataSources.geodata
|
|
},
|
|
set: function(t) {
|
|
var e = this;
|
|
this._dataSources.geodata && this.removeDispose(this._dataSources.geodata), this._dataSources.geodata = t, this._dataSources.geodata.component = this, this.events.on("inited", function() {
|
|
e.loadData("geodata")
|
|
}, void 0, !1), this.setDataSourceEvents(t, "geodata")
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.getFeatures = function() {}, e.prototype.validateDataItems = function() {
|
|
t.prototype.validateDataItems.call(this), this.updateExtremes()
|
|
}, e.prototype.updateExtremes = function() {
|
|
var t, e, n, i;
|
|
this.dataItems.each(function(r) {
|
|
(r.north > t || !g.isNumber(t)) && (t = r.north), (r.south < e || !g.isNumber(e)) && (e = r.south), (r.west < i || !g.isNumber(i)) && (i = r.west), (r.east > n || !g.isNumber(n)) && (n = r.east)
|
|
}), this._mapObjects && this._mapObjects.each(function(r) {
|
|
(r.north > t || !g.isNumber(t)) && (t = r.north), (r.south < e || !g.isNumber(e)) && (e = r.south), (r.west < i || !g.isNumber(i)) && (i = r.west), (r.east > n || !g.isNumber(n)) && (n = r.east)
|
|
}), this.north == t && this.east == n && this.south == e && this.west == i || (this._north = t, this._east = n, this._west = i, this._south = e, this.dispatch("geoBoundsChanged"), this.ignoreBounds || this.chart.updateExtremes())
|
|
}, Object.defineProperty(e.prototype, "north", {
|
|
get: function() {
|
|
return g.isNumber(this._northDefined) ? this._northDefined : this._north
|
|
},
|
|
set: function(t) {
|
|
this._northDefined = t
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "south", {
|
|
get: function() {
|
|
return g.isNumber(this._southDefined) ? this._southDefined : this._south
|
|
},
|
|
set: function(t) {
|
|
this._southDefined = t
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "west", {
|
|
get: function() {
|
|
return g.isNumber(this._westDefined) ? this._westDefined : this._west
|
|
},
|
|
set: function(t) {
|
|
this._westDefined = t
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "east", {
|
|
get: function() {
|
|
return g.isNumber(this._eastDefined) ? this._eastDefined : this._east
|
|
},
|
|
set: function(t) {
|
|
this._eastDefined = t
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.processConfig = function(e) {
|
|
if (g.hasValue(e.geodata) && g.isString(e.geodata)) {
|
|
var n = e.geodata;
|
|
if (g.hasValue(window["am4geodata_" + e.geodata])) e.geodata = window["am4geodata_" + e.geodata];
|
|
else try {
|
|
e.geodata = JSON.parse(e.geodata)
|
|
} catch (t) {
|
|
throw Error("MapChart error: Geodata `" + n + "` is not loaded or is incorrect.")
|
|
}
|
|
}
|
|
t.prototype.processConfig.call(this, e)
|
|
}, e.prototype.asIs = function(e) {
|
|
return "geodata" == e || t.prototype.asIs.call(this, e)
|
|
}, e.prototype.updateTooltipBounds = function() {
|
|
this.tooltip && this.topParent && this.tooltip.setBounds({
|
|
x: 10,
|
|
y: 10,
|
|
width: this.topParent.maxWidth - 20,
|
|
height: this.topParent.maxHeight - 20
|
|
})
|
|
}, e
|
|
}(f.a);
|
|
d.c.registeredClasses.MapSeries = Lr, d.c.registeredClasses.MapSeriesDataItem = Or;
|
|
var Cr = n("C6dT"),
|
|
Er = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapObject", e.isMeasured = !1, e.layout = "none", e.clickable = !0, e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.validate = function() {
|
|
this.series && this.series.itemReaderText && (this.readerTitle = this.series.itemReaderText), t.prototype.validate.call(this)
|
|
}, e.prototype.updateExtremes = function() {
|
|
var t = this.getFeature();
|
|
if (t) {
|
|
var e = t.geometry;
|
|
if (e) {
|
|
var n = he(e),
|
|
i = n[0][0],
|
|
r = n[0][1],
|
|
o = n[1][1],
|
|
a = n[1][0],
|
|
u = !1;
|
|
o != this.north && (this._north = v.round(o, 8), u = !0), r != this.south && (this._south = v.round(r), u = !0), a != this.east && (this._east = v.round(a), u = !0), i != this.west && (this._west = v.round(i), u = !0), u && (this.dispatch("geoBoundsChanged"), this.series && this.series.invalidateDataItems())
|
|
}
|
|
}
|
|
}, e.prototype.getFeature = function() {
|
|
return {}
|
|
}, Object.defineProperty(e.prototype, "east", {
|
|
get: function() {
|
|
return g.isNumber(this._east) ? this._east : this.dataItem ? this.dataItem.east : void 0
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "west", {
|
|
get: function() {
|
|
return g.isNumber(this._west) ? this._west : this.dataItem ? this.dataItem.west : void 0
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "south", {
|
|
get: function() {
|
|
return g.isNumber(this._south) ? this._south : this.dataItem ? this.dataItem.south : void 0
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "north", {
|
|
get: function() {
|
|
return g.isNumber(this._north) ? this._north : this.dataItem ? this.dataItem.north : void 0
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.showTooltip = function(e) {
|
|
var n = t.prototype.showTooltip.call(this, e);
|
|
return n && "always" == this.showTooltipOn && !this.series.chart.events.has("mappositionchanged", this.handleTooltipMove, this) && this.addDisposer(this.series.chart.events.on("mappositionchanged", this.handleTooltipMove, this)), n
|
|
}, e.prototype.handleTooltipMove = function(t) {
|
|
this.tooltip.isHidden || this.showTooltip()
|
|
}, e.prototype.setDataItem = function(e) {
|
|
t.prototype.setDataItem.call(this, e), this.applyAccessibility()
|
|
}, e
|
|
}(Cr.a);
|
|
d.c.registeredClasses.MapObject = Er;
|
|
var Ir = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapImage", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), Object.defineProperty(e.prototype, "latitude", {
|
|
get: function() {
|
|
var t = this.getPropertyValue("latitude");
|
|
return !g.isNumber(t) && this.dataItem && this.dataItem.geoPoint && (t = this.dataItem.geoPoint.latitude), t
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("latitude", t, !1, !0), this.updateExtremes()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "longitude", {
|
|
get: function() {
|
|
var t = this.getPropertyValue("longitude");
|
|
return !g.isNumber(t) && this.dataItem && this.dataItem.geoPoint && (t = this.dataItem.geoPoint.longitude), t
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("longitude", t, !1, !0), this.updateExtremes()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.validatePosition = function() {
|
|
if (g.isNumber(this.latitude) && g.isNumber(this.longitude)) {
|
|
var e = this.series.chart.projection.d3Projection([this.longitude, this.latitude]),
|
|
n = this.series.chart.projection.d3Path({
|
|
type: "Point",
|
|
coordinates: [this.longitude, this.latitude]
|
|
});
|
|
this.__disabled = !n, this.moveTo({
|
|
x: e[0],
|
|
y: e[1]
|
|
})
|
|
}
|
|
t.prototype.validatePosition.call(this)
|
|
}, e.prototype.getFeature = function() {
|
|
return {
|
|
type: "Feature",
|
|
geometry: {
|
|
type: "Point",
|
|
coordinates: [this.longitude, this.latitude]
|
|
}
|
|
}
|
|
}, e
|
|
}(Er);
|
|
d.c.registeredClasses.MapImage = Ir;
|
|
var Tr = n("R6wv"),
|
|
Dr = n("o+vr"),
|
|
Gr = n.n(Dr),
|
|
Nr = n("hJ5i");
|
|
|
|
function zr(t) {
|
|
return Nr.map(t, function(t) {
|
|
var e = t[0],
|
|
n = t[1],
|
|
i = [];
|
|
return e && i.push(Ar(e)), n && i.push(Ar(n)), i
|
|
})
|
|
}
|
|
|
|
function Vr(t) {
|
|
return Nr.map(t, function(t) {
|
|
return Ar(t)
|
|
})
|
|
}
|
|
|
|
function Ar(t) {
|
|
return Nr.map(t, function(t) {
|
|
return Rr(t)
|
|
})
|
|
}
|
|
|
|
function kr(t) {
|
|
return Nr.map(t, Fr)
|
|
}
|
|
|
|
function Rr(t) {
|
|
return {
|
|
longitude: t[0],
|
|
latitude: t[1]
|
|
}
|
|
}
|
|
|
|
function Fr(t) {
|
|
return [t.longitude, t.latitude]
|
|
}
|
|
|
|
function Br(t) {
|
|
return Nr.map(t, function(t) {
|
|
return Nr.map(t, Fr)
|
|
})
|
|
}
|
|
|
|
function Hr(t) {
|
|
return Nr.map(t, function(t) {
|
|
var e = t[0],
|
|
n = t[1],
|
|
i = [];
|
|
return e && i.push(kr(e)), n && i.push(kr(n)), i
|
|
})
|
|
}
|
|
|
|
function Wr(t, e, n) {
|
|
return [Ge().center([t, e]).radius(n)().coordinates]
|
|
}
|
|
|
|
function Zr(t, e, n, i) {
|
|
var r = []; - 180 == i && (i = -179.9999), -90 == n && (n = -89.9999), 90 == t && (t = 89.9999), 180 == e && (e = 179.9999);
|
|
for (var o = Math.min(90, (e - i) / Math.ceil((e - i) / 90)), a = (t - n) / Math.ceil((t - n) / 90), u = i; u < e; u += o) {
|
|
var s = [];
|
|
r.push([s]), u + o > e && (o = e - u);
|
|
for (var c = u; c <= u + o; c += 5) s.push([c, t]);
|
|
for (var l = t; l >= n; l -= a) s.push([u + o, l]);
|
|
for (c = u + o; c >= u; c -= 5) s.push([c, n]);
|
|
for (l = n; l <= t; l += a) s.push([u, l])
|
|
}
|
|
return r
|
|
}
|
|
var qr = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
e.className = "MapPolygon", e.polygon = e.createChild(Tr.a), e.polygon.shouldClone = !1, e.polygon.applyOnClones = !0, e.setPropertyValue("precision", .5);
|
|
var n = new p.a;
|
|
return e.fill = n.getFor("secondaryButton"), e.stroke = n.getFor("secondaryButtonStroke"), e.strokeOpacity = 1, e.tooltipPosition = "pointer", e.nonScalingStroke = !0, e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.getFeature = function() {
|
|
if (this.multiPolygon && this.multiPolygon.length > 0) return {
|
|
type: "Feature",
|
|
geometry: {
|
|
type: "MultiPolygon",
|
|
coordinates: this.multiPolygon
|
|
}
|
|
}
|
|
}, Object.defineProperty(e.prototype, "multiGeoPolygon", {
|
|
get: function() {
|
|
var t = this.getPropertyValue("multiGeoPolygon");
|
|
return !t && this.dataItem && (t = this.dataItem.multiGeoPolygon), t
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("multiGeoPolygon", t, !0), this.multiPolygon = Hr(t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "multiPolygon", {
|
|
get: function() {
|
|
var t = this.getPropertyValue("multiPolygon");
|
|
return !t && this.dataItem && (t = this.dataItem.multiPolygon), t
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("multiPolygon", t) && (this.updateExtremes(), this.invalidate())
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.validate = function() {
|
|
if (this.series) {
|
|
var e = this.series.chart.projection,
|
|
n = e.d3Path;
|
|
if (this.multiPolygon) {
|
|
if (this.series) {
|
|
var i = {
|
|
type: "MultiPolygon",
|
|
coordinates: this.multiPolygon
|
|
};
|
|
e.d3Projection.precision(this.precision), this.polygon.path = n(i)
|
|
}
|
|
if (this.series.calculateVisualCenter) {
|
|
var r = 0,
|
|
o = this.multiPolygon[0];
|
|
if (this.multiPolygon.length > 1)
|
|
for (var a = 0; a < this.multiPolygon.length; a++) {
|
|
var u = this.multiPolygon[a],
|
|
s = Et({
|
|
type: "Polygon",
|
|
coordinates: u
|
|
});
|
|
s > r && (o = u, r = s)
|
|
}
|
|
var c = Gr()(o);
|
|
this._visualLongitude = c[0], this._visualLatitude = c[1]
|
|
} else this._visualLongitude = this.longitude, this._visualLatitude = this.latitude
|
|
}
|
|
}
|
|
t.prototype.validate.call(this)
|
|
}, e.prototype.measureElement = function() {}, Object.defineProperty(e.prototype, "latitude", {
|
|
get: function() {
|
|
return this.north + (this.south - this.north) / 2
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "longitude", {
|
|
get: function() {
|
|
return this.east + (this.west - this.east) / 2
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "visualLatitude", {
|
|
get: function() {
|
|
var t = this.getPropertyValue("visualLatitude");
|
|
return g.isNumber(t) ? t : this._adapterO ? this._adapterO.apply("visualLatitude", this._visualLatitude) : this._visualLatitude
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("visualLatitude", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "visualLongitude", {
|
|
get: function() {
|
|
var t = this.getPropertyValue("visualLongitude");
|
|
return g.isNumber(t) ? t : this._adapterO ? this._adapterO.apply("visualLongitude", this._visualLongitude) : this._visualLongitude
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("visualLongitude", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "pixelWidth", {
|
|
get: function() {
|
|
return this.polygon.pixelWidth
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "pixelHeight", {
|
|
get: function() {
|
|
return this.polygon.pixelHeight
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.copyFrom = function(e) {
|
|
t.prototype.copyFrom.call(this, e), this.polygon.copyFrom(e.polygon)
|
|
}, e.prototype.updateExtremes = function() {
|
|
t.prototype.updateExtremes.call(this)
|
|
}, Object.defineProperty(e.prototype, "boxArea", {
|
|
get: function() {
|
|
return (this.north - this.south) * (this.east - this.west)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.getTooltipX = function() {
|
|
return this.series.chart.projection.convert({
|
|
longitude: this.visualLongitude,
|
|
latitude: this.visualLatitude
|
|
}).x
|
|
}, e.prototype.getTooltipY = function() {
|
|
return this.series.chart.projection.convert({
|
|
longitude: this.visualLongitude,
|
|
latitude: this.visualLatitude
|
|
}).y
|
|
}, Object.defineProperty(e.prototype, "precision", {
|
|
get: function() {
|
|
return this.getPropertyValue("precision")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("precision", t, !0)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(Er);
|
|
d.c.registeredClasses.MapPolygon = qr;
|
|
var Xr = n("vMqJ"),
|
|
Yr = n("v9UT"),
|
|
Ur = n("Wglt"),
|
|
Jr = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapPolygonSeriesDataItem", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.getFeature = function() {
|
|
if (this.multiPolygon && this.multiPolygon.length > 0) return {
|
|
type: "Feature",
|
|
geometry: {
|
|
type: "MultiPolygon",
|
|
coordinates: this.multiPolygon
|
|
}
|
|
}
|
|
}, Object.defineProperty(e.prototype, "mapPolygon", {
|
|
get: function() {
|
|
var t = this;
|
|
if (!this._mapPolygon) {
|
|
var e = this.component.mapPolygons.create();
|
|
this._mapPolygon = e, this.addSprite(e), this._disposers.push(new h.b(function() {
|
|
t.component && t.component.mapPolygons.removeValue(e)
|
|
})), this.mapObject = e
|
|
}
|
|
return this._mapPolygon
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "polygon", {
|
|
get: function() {
|
|
return this._polygon
|
|
},
|
|
set: function(t) {
|
|
this._polygon = t, this.multiPolygon = [t]
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "multiPolygon", {
|
|
get: function() {
|
|
return this._multiPolygon
|
|
},
|
|
set: function(t) {
|
|
this._multiPolygon = t, this.updateExtremes()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "geoPolygon", {
|
|
get: function() {
|
|
return this._geoPolygon
|
|
},
|
|
set: function(t) {
|
|
this._geoPolygon = t, this.multiGeoPolygon = [t]
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "multiGeoPolygon", {
|
|
get: function() {
|
|
return this._multiGeoPolygon
|
|
},
|
|
set: function(t) {
|
|
this._multiGeoPolygon = t, this.multiPolygon = Hr(t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(Or),
|
|
Kr = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.calculateVisualCenter = !1, e.className = "MapPolygonSeries", e.dataFields.multiPolygon = "multiPolygon", e.dataFields.polygon = "polygon", e.dataFields.geoPolygon = "geoPolygon", e.dataFields.multiGeoPolygon = "multiGeoPolygon", e.setPropertyValue("sortPolygonsBy", "area"), e.setPropertyValue("sortPolygonsReversed", !1), e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
|
|
return new Jr
|
|
}, e.prototype.processIncExc = function() {
|
|
this.mapPolygons.clear(), t.prototype.processIncExc.call(this)
|
|
}, e.prototype.validateData = function() {
|
|
if (this.useGeodata || this.geodata) {
|
|
var e = this._dataSources.geodata ? void 0 : this.chart.geodata;
|
|
if (this.geodata && (e = this.geodata), e) {
|
|
var n = void 0;
|
|
if ("FeatureCollection" == e.type ? n = e.features : "Feature" == e.type ? n = [e] : -1 != ["Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon"].indexOf(e.type) ? n = [{
|
|
geometry: e
|
|
}] : console.log("nothing found in geoJSON"), n)
|
|
for (var i = function(t, e) {
|
|
var i = n[t],
|
|
o = i.geometry;
|
|
if (o) {
|
|
var a = o.type,
|
|
u = i.id;
|
|
if (r.chart.geodataNames && r.chart.geodataNames[u] && (i.properties.name = r.chart.geodataNames[u]), "Polygon" == a || "MultiPolygon" == a) {
|
|
if (!r.checkInclude(r.include, r.exclude, u)) return "continue";
|
|
var s = o.coordinates;
|
|
s && "Polygon" == a && (s = [s]);
|
|
var c = Nr.find(r.data, function(t, e) {
|
|
return t.id == u
|
|
});
|
|
c ? c.multiPolygon || (c.multiPolygon = s) : (c = {
|
|
multiPolygon: s,
|
|
id: u,
|
|
madeFromGeoData: !0
|
|
}, r.data.push(c)), Yr.softCopyProperties(i.properties, c)
|
|
}
|
|
}
|
|
}, r = this, o = 0, a = n.length; o < a; o++) i(o)
|
|
}
|
|
}
|
|
t.prototype.validateData.call(this)
|
|
}, e.prototype.validate = function() {
|
|
if (t.prototype.validate.call(this), this.dataItems.each(function(t) {
|
|
Yr.used(t.mapPolygon)
|
|
}), "none" != this.sortPolygonsBy) {
|
|
var e = this.sortPolygonsBy,
|
|
n = this.sortPolygonsReversed;
|
|
this.mapPolygons.sort(function(t, i) {
|
|
var r = "",
|
|
o = "",
|
|
a = -1,
|
|
u = 1;
|
|
switch (e) {
|
|
case "area":
|
|
r = t.boxArea, o = i.boxArea, a = -1, u = 1;
|
|
break;
|
|
case "name":
|
|
r = t.dataItem.dataContext.name || "", o = i.dataItem.dataContext.name || "", a = 1, u = -1;
|
|
break;
|
|
case "id":
|
|
r = t.dataItem.dataContext.id || "", o = i.dataItem.dataContext.id || "", a = 1, u = -1;
|
|
break;
|
|
case "latitude":
|
|
r = n ? t.south : t.north, o = n ? i.south : i.north, a = -1, u = 1;
|
|
break;
|
|
case "longitude":
|
|
r = n ? t.east : t.west, o = n ? i.east : i.west, a = 1, u = -1
|
|
}
|
|
return r < o ? n ? u : a : r > o ? n ? a : u : 0
|
|
}), this.mapPolygons.each(function(t, e) {
|
|
t.validate(), t.zIndex || t.propertyFields.zIndex || (t.zIndex = 1e6 - e)
|
|
})
|
|
}
|
|
}, Object.defineProperty(e.prototype, "mapPolygons", {
|
|
get: function() {
|
|
if (!this._mapPolygons) {
|
|
var t = new qr,
|
|
e = new Xr.e(t);
|
|
this._disposers.push(new Xr.c(e)), this._disposers.push(e.template), e.template.focusable = !0, e.events.on("inserted", this.handleObjectAdded, this, !1), this._mapPolygons = e, this._mapObjects = e
|
|
}
|
|
return this._mapPolygons
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.getPolygonById = function(t) {
|
|
return Ur.find(this.mapPolygons.iterator(), function(e) {
|
|
return e.dataItem.dataContext.id == t
|
|
})
|
|
}, e.prototype.copyFrom = function(e) {
|
|
this.mapPolygons.template.copyFrom(e.mapPolygons.template), t.prototype.copyFrom.call(this, e)
|
|
}, e.prototype.getFeatures = function() {
|
|
var t = this,
|
|
e = [];
|
|
return this.dataItems.each(function(t) {
|
|
var n = t.getFeature();
|
|
n && e.push(n)
|
|
}), this.mapPolygons.each(function(n) {
|
|
if (-1 == t.dataItems.indexOf(n._dataItem)) {
|
|
var i = n.getFeature();
|
|
i && e.push(i)
|
|
}
|
|
}), e
|
|
}, Object.defineProperty(e.prototype, "sortPolygonsBy", {
|
|
get: function() {
|
|
return this.getPropertyValue("sortPolygonsBy")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("sortPolygonsBy", t) && this.invalidateData()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "sortPolygonsReversed", {
|
|
get: function() {
|
|
return this.getPropertyValue("sortPolygonsReversed")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("sortPolygonsReversed", t) && this.invalidateData()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(Lr);
|
|
d.c.registeredClasses.MapPolygonSeries = Kr, d.c.registeredClasses.MapPolygonSeriesDataItem = Jr;
|
|
var Qr = function() {
|
|
function t() {
|
|
this.d3Projection = ar()
|
|
}
|
|
return Object.defineProperty(t.prototype, "d3Projection", {
|
|
get: function() {
|
|
return this._d3Projection
|
|
},
|
|
set: function(t) {
|
|
this._d3Projection = t, t.precision(.1), this._d3Path = wi().projection(t), this.chart && this.chart.invalidateProjection()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(t.prototype, "d3Path", {
|
|
get: function() {
|
|
return this._d3Path
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(t.prototype, "scale", {
|
|
get: function() {
|
|
return this.d3Projection.scale() / 100
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), t.prototype.convert = function(t) {
|
|
var e = this.d3Projection([t.longitude, t.latitude]);
|
|
if (e) return {
|
|
x: e[0],
|
|
y: e[1]
|
|
}
|
|
}, t.prototype.invert = function(t) {
|
|
var e = this.d3Projection.invert([t.x, t.y]);
|
|
if (e) return {
|
|
longitude: e[0],
|
|
latitude: e[1]
|
|
}
|
|
}, t.prototype.project = function(t, e) {
|
|
return this.convert({
|
|
longitude: t * v.DEGREES,
|
|
latitude: e * v.DEGREES
|
|
})
|
|
}, t.prototype.unproject = function(t, e) {
|
|
return this.invert({
|
|
x: t,
|
|
y: e
|
|
})
|
|
}, t.prototype.rotate = function(t, e, n, i) {
|
|
var r = e * v.RADIANS,
|
|
o = n * v.RADIANS;
|
|
i *= v.RADIANS;
|
|
var a = t.longitude * v.RADIANS + r,
|
|
u = t.latitude * v.RADIANS,
|
|
s = Math.cos(o),
|
|
c = Math.sin(o),
|
|
l = Math.cos(i),
|
|
h = Math.sin(i),
|
|
p = Math.cos(u),
|
|
f = Math.cos(a) * p,
|
|
d = Math.sin(a) * p,
|
|
g = Math.sin(u),
|
|
m = g * s + f * c;
|
|
return {
|
|
longitude: v.DEGREES * Math.atan2(d * l - m * h, f * s - g * c),
|
|
latitude: v.DEGREES * Math.asin(m * l + d * h)
|
|
}
|
|
}, t.prototype.unrotate = function(t, e, n, i) {
|
|
var r = e * v.RADIANS,
|
|
o = n * v.RADIANS;
|
|
i *= v.RADIANS;
|
|
var a = t.longitude * v.RADIANS - r,
|
|
u = t.latitude * v.RADIANS,
|
|
s = Math.cos(o),
|
|
c = Math.sin(o),
|
|
l = Math.cos(i),
|
|
h = Math.sin(i),
|
|
p = Math.cos(u),
|
|
f = Math.cos(a) * p,
|
|
d = Math.sin(a) * p,
|
|
g = Math.sin(u),
|
|
m = g * l - d * h;
|
|
return {
|
|
longitude: v.DEGREES * Math.atan2(d * l + g * h, f * s + m * c),
|
|
latitude: v.DEGREES * Math.asin(m * s - f * c)
|
|
}
|
|
}, t.prototype.intermediatePoint = function(t, e, n) {
|
|
var i = Ln([t.longitude, t.latitude], [e.longitude, e.latitude])(n);
|
|
return {
|
|
longitude: i[0],
|
|
latitude: i[1]
|
|
}
|
|
}, t.prototype.multiDistance = function(t) {
|
|
for (var e = 0, n = 0; n < t.length; n++) {
|
|
var i = t[n];
|
|
if (i.length > 1)
|
|
for (var r = 1; r < i.length; r++) {
|
|
var o = i[r - 1],
|
|
a = i[r];
|
|
e += this.distance(o, a)
|
|
}
|
|
}
|
|
return e
|
|
}, t.prototype.distance = function(t, e) {
|
|
return ln([t.longitude, t.latitude], [e.longitude, e.latitude])
|
|
}, t.prototype.positionToPoint = function(t, e) {
|
|
if (t) {
|
|
var n = this.positionToGeoPoint(t, e),
|
|
i = this.positionToGeoPoint(t, e - .01),
|
|
r = this.positionToGeoPoint(t, e + .01);
|
|
if (i && r) {
|
|
var o = this.convert(n),
|
|
a = this.convert(i),
|
|
u = this.convert(r);
|
|
return {
|
|
x: o.x,
|
|
y: o.y,
|
|
angle: v.getAngle(a, u)
|
|
}
|
|
}
|
|
}
|
|
return {
|
|
x: 0,
|
|
y: 0,
|
|
angle: 0
|
|
}
|
|
}, t.prototype.positionToGeoPoint = function(t, e) {
|
|
if (t) {
|
|
for (var n = this.multiDistance(t), i = 0, r = 0, o = 0, a = void 0, u = void 0, s = 0; s < t.length; s++) {
|
|
var c = t[s];
|
|
if (c.length > 1) {
|
|
for (var l = 1; l < c.length; l++)
|
|
if (a = c[l - 1], u = c[l], r = i / n, o = (i += this.distance(a, u)) / n, r <= e && o > e) {
|
|
s = t.length;
|
|
break
|
|
}
|
|
} else 1 == c.length && (a = c[0], u = c[0], r = 0, o = 1)
|
|
}
|
|
if (a && u) {
|
|
var h = (e - r) / (o - r);
|
|
return this.intermediatePoint(a, u, h)
|
|
}
|
|
}
|
|
return {
|
|
longitude: 0,
|
|
latitude: 0
|
|
}
|
|
}, t
|
|
}();
|
|
d.c.registeredClasses.Projection = Qr;
|
|
var $r = n("FzPm"),
|
|
to = n("GtDR"),
|
|
eo = n("8ZqG"),
|
|
no = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
e._chart = new h.d, e.className = "SmallMap", e.align = "left", e.valign = "bottom", e.percentHeight = 20, e.percentWidth = 20, e.margin(5, 5, 5, 5);
|
|
var n = new p.a;
|
|
e.background.fillOpacity = .9, e.background.fill = n.getFor("background"), e.events.on("hit", e.moveToPosition, e, !1), e.events.on("maxsizechanged", e.updateMapSize, e, !1), e.seriesContainer = e.createChild(Cr.a), e.seriesContainer.shouldClone = !1;
|
|
var i = e.createChild(to.a);
|
|
return i.shouldClone = !1, i.stroke = n.getFor("alternativeBackground"), i.strokeWidth = 1, i.strokeOpacity = .5, i.fill = Object(eo.c)(), i.verticalCenter = "middle", i.horizontalCenter = "middle", i.isMeasured = !1, i.visible = !1, e.rectangle = i, e._disposers.push(e._chart), e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), Object.defineProperty(e.prototype, "series", {
|
|
get: function() {
|
|
return this._series || (this._series = new Xr.b, this._series.events.on("inserted", this.handleSeriesAdded, this, !1), this._series.events.on("removed", this.handleSeriesRemoved, this, !1)), this._series
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.handleSeriesAdded = function(t) {
|
|
var e = t.newValue;
|
|
if (this.chart.series.contains(e)) {
|
|
var n = e.clone();
|
|
this._series.removeValue(e), this._series.push(n), e = n, this.chart.dataUsers.push(n)
|
|
}
|
|
e.chart = this.chart, e.parent = this.seriesContainer, e.interactionsEnabled = !1, e.events.on("inited", this.updateMapSize, this, !1), e.hidden = !1
|
|
}, e.prototype.handleSeriesRemoved = function(t) {
|
|
this.invalidate()
|
|
}, e.prototype.moveToPosition = function(t) {
|
|
var e = Yr.spritePointToSprite(t.spritePoint, this, this.seriesContainer),
|
|
n = this.chart.seriesPointToGeo(e);
|
|
this.chart.zoomToGeoPoint(n, this.chart.zoomLevel, !0)
|
|
}, Object.defineProperty(e.prototype, "chart", {
|
|
get: function() {
|
|
return this._chart.get()
|
|
},
|
|
set: function(t) {
|
|
this.chart != t && this._chart.set(t, new h.c([t.events.on("mappositionchanged", this.updateRectangle, this, !1), t.events.on("scaleratiochanged", this.updateMapSize, this, !1)]))
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.updateRectangle = function() {
|
|
var t = this.chart,
|
|
e = t.zoomLevel,
|
|
n = this.rectangle;
|
|
n.width = this.pixelWidth / e, n.height = this.pixelHeight / e;
|
|
var i = Math.min(this.percentWidth, this.percentHeight) / 100,
|
|
r = t.seriesContainer;
|
|
n.x = Math.ceil(-r.pixelX * i / e) + this.seriesContainer.pixelX, n.y = Math.ceil(-r.pixelY * i / e) + this.seriesContainer.pixelY, n.validate()
|
|
}, e.prototype.updateMapSize = function() {
|
|
if (this.chart) {
|
|
var t = this.chart.scaleRatio * Math.min(this.percentWidth, this.percentHeight) / 100;
|
|
this.seriesContainer.scale = t;
|
|
var e = {
|
|
width: 0,
|
|
height: 0,
|
|
x: 0,
|
|
y: 0
|
|
};
|
|
try {
|
|
e = this.seriesContainer.group.node.getBBox()
|
|
} catch (t) {}
|
|
e.width > 0 && (this.rectangle.visible = !0), this.seriesContainer.x = this.pixelWidth / 2 - e.x * t - e.width / 2 * t, this.seriesContainer.y = this.pixelHeight / 2 - e.y * t - e.height / 2 * t, this.updateRectangle(), this.afterDraw()
|
|
}
|
|
}, e.prototype.afterDraw = function() {
|
|
t.prototype.afterDraw.call(this), this.rectangle.maskRectangle = {
|
|
x: -1,
|
|
y: -1,
|
|
width: Math.ceil(this.pixelWidth + 2),
|
|
height: Math.ceil(this.pixelHeight + 2)
|
|
}
|
|
}, e.prototype.processConfig = function(e) {
|
|
if (e && g.hasValue(e.series) && g.isArray(e.series))
|
|
for (var n = 0, i = e.series.length; n < i; n++) {
|
|
var r = e.series[n];
|
|
g.hasValue(r) && g.isString(r) && this.map.hasKey(r) && (e.series[n] = this.map.getKey(r))
|
|
}
|
|
t.prototype.processConfig.call(this, e)
|
|
}, e
|
|
}(Cr.a);
|
|
d.c.registeredClasses.SmallMap = no;
|
|
var io = n("WYhe"),
|
|
ro = n("0FpR");
|
|
|
|
function oo(t) {
|
|
var e = uo(t.longitude),
|
|
n = Math.asin(Math.sin(t.latitude * v.RADIANS)) * v.DEGREES,
|
|
i = uo(t.latitude);
|
|
return Math.abs(i) > 90 && (e = uo(e + 180)), t.longitude = e, t.latitude = n, t
|
|
}
|
|
|
|
function ao(t) {
|
|
return Nr.each(t, function(t) {
|
|
Nr.each(t, function(t) {
|
|
oo(t)
|
|
})
|
|
}), t
|
|
}
|
|
|
|
function uo(t) {
|
|
return (t %= 360) > 180 && (t -= 360), t < -180 && (t += 360), t
|
|
}
|
|
|
|
function so(t) {
|
|
return {
|
|
x: t.longitude,
|
|
y: t.latitude
|
|
}
|
|
}
|
|
var co = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.adjustRotation = !0, e.className = "MapLineObject", e.isMeasured = !1, e.layout = "none", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.validatePosition = function() {
|
|
var e = this.mapLine;
|
|
if (e) {
|
|
var n = e.positionToPoint(this.position);
|
|
if (this.x = n.x, this.y = n.y, this.adjustRotation && (this.rotation = n.angle), this.mapLine.dataItem) {
|
|
var i = this.mapLine.dataItem.component;
|
|
this.scale = 1 / i.scale
|
|
}
|
|
if (e.shortestDistance) {
|
|
var r = this.mapLine.series.chart.projection,
|
|
o = r.positionToGeoPoint(e.multiGeoLine, this.position),
|
|
a = r.d3Path({
|
|
type: "Point",
|
|
coordinates: [o.longitude, o.latitude]
|
|
});
|
|
this.__disabled = !a
|
|
}
|
|
}
|
|
t.prototype.validatePosition.call(this)
|
|
}, Object.defineProperty(e.prototype, "position", {
|
|
get: function() {
|
|
return this.getPropertyValue("position")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("position", t, !1, !0)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "adjustRotation", {
|
|
get: function() {
|
|
return this.getPropertyValue("adjustRotation")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("adjustRotation", t, !1, !0)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(Cr.a);
|
|
d.c.registeredClasses.MapLineObject = co;
|
|
var lo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapImageSeriesDataItem", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.getFeature = function() {
|
|
return {
|
|
type: "Feature",
|
|
geometry: {
|
|
type: "Point",
|
|
coordinates: this.point
|
|
}
|
|
}
|
|
}, Object.defineProperty(e.prototype, "mapImage", {
|
|
get: function() {
|
|
var t = this;
|
|
if (!this._mapImage) {
|
|
var e = this.component.mapImages.create();
|
|
this.addSprite(e), this._mapImage = e, this._disposers.push(e), this._disposers.push(new h.b(function() {
|
|
t.component && t.component.mapImages.removeValue(e)
|
|
})), this.mapObject = e
|
|
}
|
|
return this._mapImage
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "point", {
|
|
get: function() {
|
|
return this._point
|
|
},
|
|
set: function(t) {
|
|
this._point = t, this._geoPoint = Rr(t), this.updateExtremes()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "multiPoint", {
|
|
get: function() {
|
|
return [this._point]
|
|
},
|
|
set: function(t) {
|
|
this._point = t[0], this._geoPoint = Rr(this._point), this.updateExtremes()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "geoPoint", {
|
|
get: function() {
|
|
return this._geoPoint
|
|
},
|
|
set: function(t) {
|
|
this._geoPoint = t, this.point = [t.longitude, t.latitude]
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(Or),
|
|
ho = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapImageSeries", e.dataFields.multiPoint = "multiPoint", e.dataFields.point = "point", e.dataFields.geoPoint = "geoPoint", e.dataFields.multiGeoPoint = "multiGeoPoint", e.ignoreBounds = !0, e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
|
|
return new lo
|
|
}, e.prototype.validateData = function() {
|
|
var e = this;
|
|
if (this.data.length > 0 && 0 == this._parseDataFrom && this.mapImages.clear(), this.useGeodata && (this.useGeodata || this.geodata)) {
|
|
var n = this.chart.geodata,
|
|
i = void 0;
|
|
if ("FeatureCollection" == n.type ? i = n.features : "Feature" == n.type ? i = [n] : -1 != ["Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon"].indexOf(n.type) ? i = [{
|
|
geometry: n
|
|
}] : console.log("nothing found in geoJSON"), i)
|
|
for (var r = function(t, e) {
|
|
var n = i[t],
|
|
r = n.geometry;
|
|
if (r) {
|
|
var a = r.type,
|
|
u = n.id;
|
|
if ("Point" == a || "MultiPoint" == a) {
|
|
if (!o.checkInclude(o.include, o.exclude, u)) return "continue";
|
|
var s = r.coordinates;
|
|
"Point" == a && (s = [s]);
|
|
var c = Nr.find(o.data, function(t, e) {
|
|
return t.id == u
|
|
});
|
|
c ? c.multiPoint || (c.multiPoint = s) : (c = {
|
|
multiPoint: s,
|
|
id: u,
|
|
madeFromGeoData: !0
|
|
}, o.data.push(c)), Yr.softCopyProperties(n.properties, c)
|
|
}
|
|
}
|
|
}, o = this, a = 0, u = i.length; a < u; a++) r(a)
|
|
}
|
|
t.prototype.validateData.call(this), Ur.each(this.dataItems.iterator(), function(t) {
|
|
var n = t.mapImage;
|
|
n.isDisposed() || (e.mapImages.moveValue(n), g.isNumber(n.latitude) && g.isNumber(n.latitude) && (t.geoPoint = {
|
|
latitude: n.latitude,
|
|
longitude: n.longitude
|
|
}))
|
|
})
|
|
}, Object.defineProperty(e.prototype, "mapImages", {
|
|
get: function() {
|
|
if (!this._mapImages) {
|
|
var t = new Ir,
|
|
e = new Xr.e(t);
|
|
this._disposers.push(new Xr.c(e)), this._disposers.push(e.template), e.template.focusable = !0, e.events.on("inserted", this.handleObjectAdded, this, !1), this._mapImages = e, this._mapObjects = e
|
|
}
|
|
return this._mapImages
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.validateDataElement = function(e) {
|
|
t.prototype.validateDataElement.call(this, e), e.mapImage.invalidate()
|
|
}, e.prototype.validate = function() {
|
|
t.prototype.validate.call(this), Ur.each(this.mapImages.iterator(), function(t) {
|
|
t.validatePosition()
|
|
})
|
|
}, e.prototype.copyFrom = function(e) {
|
|
this.mapImages.template.copyFrom(e.mapImages.template), t.prototype.copyFrom.call(this, e)
|
|
}, e.prototype.getFeatures = function() {
|
|
var t = this,
|
|
e = [];
|
|
return this.dataItems.each(function(t) {
|
|
var n = t.getFeature();
|
|
n && e.push(n)
|
|
}), this.mapImages.each(function(n) {
|
|
if (-1 == t.dataItems.indexOf(n._dataItem)) {
|
|
var i = n.getFeature();
|
|
i && e.push(i)
|
|
}
|
|
}), e
|
|
}, e.prototype.getImageById = function(t) {
|
|
return Ur.find(this.mapImages.iterator(), function(e) {
|
|
var n = e.dataItem.dataContext;
|
|
if (e.id == t || n && n.id == t) return !0
|
|
})
|
|
}, e
|
|
}(Lr);
|
|
d.c.registeredClasses.MapImageSeries = ho, d.c.registeredClasses.MapImageSeriesDataItem = lo;
|
|
var po = n("Rnbi"),
|
|
fo = n("jfaP"),
|
|
go = n("tjMS"),
|
|
vo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
e._imageListeners = {}, e.className = "MapLine", e.createLine(), e.line.stroke = Object(eo.c)(), e.line.parent = e, e.strokeOpacity = 1, e.setPropertyValue("precision", .1);
|
|
var n = new p.a;
|
|
return e.stroke = n.getFor("grid"), e.shortestDistance = !0, e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createLine = function() {
|
|
this.line = new fo.a
|
|
}, e.prototype.positionToPoint = function(t) {
|
|
return this.shortestDistance ? this.series.chart.projection.positionToPoint(this.multiGeoLine, t) : this.line ? this.line.positionToPoint(t) : {
|
|
x: 0,
|
|
y: 0,
|
|
angle: 0
|
|
}
|
|
}, Object.defineProperty(e.prototype, "multiGeoLine", {
|
|
get: function() {
|
|
var t = this.getPropertyValue("multiGeoLine");
|
|
return !t && this.dataItem && this.dataItem.multiGeoLine && (t = this.dataItem.multiGeoLine), t
|
|
},
|
|
set: function(t) {
|
|
if (t && t.length > 0) {
|
|
this.setPropertyValue("multiGeoLine", ao(t), !0);
|
|
var e = Br(t);
|
|
this.setPropertyValue("multiLine", e), this.updateExtremes()
|
|
}
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "multiLine", {
|
|
get: function() {
|
|
var t = this.getPropertyValue("multiLine");
|
|
return !t && this.dataItem && this.dataItem.multiLine && (t = this.dataItem.multiLine), t
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("multiLine", t), this.multiGeoLine = Vr(t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "imagesToConnect", {
|
|
get: function() {
|
|
return this.getPropertyValue("imagesToConnect")
|
|
},
|
|
set: function(t) {
|
|
var e = this;
|
|
if (this.setPropertyValue("imagesToConnect", t, !0), this.handleImagesToConnect(), this.series) {
|
|
var n = this.series.chart;
|
|
n && n.series.each(function(t) {
|
|
t instanceof ho && (t.isReady() || e._disposers.push(t.events.on("ready", e.handleImagesToConnect, e, !1)))
|
|
})
|
|
}
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.handleImagesToConnect = function() {
|
|
var t, e, n = this;
|
|
if (this.imagesToConnect) {
|
|
var i = [],
|
|
r = [i],
|
|
o = function(t) {
|
|
if (g.isString(t)) {
|
|
var e = a.series.chart;
|
|
e && e.series.each(function(e) {
|
|
if (e instanceof ho) {
|
|
var n = e.getImageById(t);
|
|
n && (t = n)
|
|
}
|
|
})
|
|
}
|
|
if (t instanceof Ir && (i.push({
|
|
longitude: t.longitude,
|
|
latitude: t.latitude
|
|
}), !a._imageListeners[t.uid])) {
|
|
var r = t.events.on("propertychanged", function(t) {
|
|
"longitude" != t.property && "latitude" != t.property || (n.handleImagesToConnect(), n.invalidate())
|
|
}, a, !1);
|
|
a._imageListeners[t.uid] = r, a._disposers.push(r)
|
|
}
|
|
},
|
|
a = this;
|
|
try {
|
|
for (var u = Object(c.g)(this.imagesToConnect), s = u.next(); !s.done; s = u.next()) {
|
|
o(s.value)
|
|
}
|
|
} catch (e) {
|
|
t = {
|
|
error: e
|
|
}
|
|
} finally {
|
|
try {
|
|
s && !s.done && (e = u.return) && e.call(u)
|
|
} finally {
|
|
if (t) throw t.error
|
|
}
|
|
}
|
|
this.multiGeoLine = r
|
|
}
|
|
}, e.prototype.validate = function() {
|
|
var e = this.series.chart;
|
|
if (this.multiLine) {
|
|
if (this.shortestDistance) e.projection.d3Projection.precision(this.precision), this.line.path = e.projection.d3Path(this.getFeature());
|
|
else {
|
|
for (var n = [], i = 0, r = this.multiLine.length; i < r; i++) {
|
|
for (var o = this.multiLine[i], a = [], u = 0, s = o.length; u < s; u++) {
|
|
var c = o[u],
|
|
l = this.series.chart.projection.convert({
|
|
longitude: c[0],
|
|
latitude: c[1]
|
|
});
|
|
a.push(l)
|
|
}
|
|
n.push(a)
|
|
}
|
|
this.line.segments = n
|
|
}
|
|
this._arrow && this._arrow.validatePosition(), Ur.each(this.lineObjects.iterator(), function(t) {
|
|
t.validatePosition()
|
|
}), this.handleGlobalScale()
|
|
} else this.imagesToConnect && this.handleImagesToConnect();
|
|
t.prototype.validate.call(this)
|
|
}, e.prototype.getFeature = function() {
|
|
if (this.multiLine && this.multiLine.length > 0 && this.multiLine[0] && this.multiLine[0].length > 0) return {
|
|
type: "Feature",
|
|
geometry: {
|
|
type: "MultiLineString",
|
|
coordinates: this.multiLine
|
|
}
|
|
}
|
|
}, e.prototype.measureElement = function() {}, Object.defineProperty(e.prototype, "shortestDistance", {
|
|
get: function() {
|
|
return this.getPropertyValue("shortestDistance")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("shortestDistance", t, !0)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "lineObjects", {
|
|
get: function() {
|
|
return this._lineObjects || (this._lineObjects = new Xr.e(new co), this._lineObjects.events.on("inserted", this.handleLineObjectAdded, this, !1), this._disposers.push(new Xr.c(this._lineObjects)), this._disposers.push(this._lineObjects.template)), this._lineObjects
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.handleLineObjectAdded = function(t) {
|
|
var e = t.newValue;
|
|
e.mapLine = this, e.shouldClone = !1, e.parent = this
|
|
}, Object.defineProperty(e.prototype, "arrow", {
|
|
get: function() {
|
|
if (!this._arrow) {
|
|
var t = this.createChild(co);
|
|
t.shouldClone = !1, t.width = 8, t.height = 10, t.mapLine = this, t.position = .5;
|
|
var e = t.createChild(po.a);
|
|
e.fillOpacity = 1, e.width = Object(go.c)(100), e.height = Object(go.c)(100), e.rotation = 90, e.horizontalCenter = "middle", e.verticalCenter = "middle", this._arrow = t
|
|
}
|
|
return this._arrow
|
|
},
|
|
set: function(t) {
|
|
this._arrow = t, t.mapLine = this, t.parent = this
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.copyFrom = function(e) {
|
|
t.prototype.copyFrom.call(this, e), this.line.copyFrom(e.line), this.lineObjects.copyFrom(e.lineObjects), e._arrow && (this.arrow = e.arrow.clone())
|
|
}, Object.defineProperty(e.prototype, "latitude", {
|
|
get: function() {
|
|
return this.north + (this.south - this.north) / 2
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "longitude", {
|
|
get: function() {
|
|
return this.east + (this.west - this.east) / 2
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.getTooltipX = function() {
|
|
var t = this.getPropertyValue("tooltipX");
|
|
return t instanceof go.a || (t = Object(go.c)(50)), t instanceof go.a ? this.positionToPoint(t.value).x : 0
|
|
}, e.prototype.getTooltipY = function() {
|
|
var t = this.getPropertyValue("tooltipY");
|
|
return t instanceof go.a || (t = Object(go.c)(50)), t instanceof go.a ? this.positionToPoint(t.value).y : 0
|
|
}, Object.defineProperty(e.prototype, "precision", {
|
|
get: function() {
|
|
return this.getPropertyValue("precision")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("precision", t, !0)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(Er);
|
|
d.c.registeredClasses.MapLine = vo;
|
|
var mo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapLineSeriesDataItem", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.getFeature = function() {
|
|
if (this.multiLine && this.multiLine.length > 0) return {
|
|
type: "Feature",
|
|
geometry: {
|
|
type: "MultiLineString",
|
|
coordinates: this.multiLine
|
|
}
|
|
}
|
|
}, Object.defineProperty(e.prototype, "mapLine", {
|
|
get: function() {
|
|
var t = this;
|
|
if (!this._mapLine) {
|
|
var e = this.component.mapLines.create();
|
|
this._mapLine = e, this.addSprite(e), this._disposers.push(e), this._disposers.push(new h.b(function() {
|
|
t.component && t.component.mapLines.removeValue(e)
|
|
})), this.mapObject = e
|
|
}
|
|
return this._mapLine
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "line", {
|
|
get: function() {
|
|
return this._line
|
|
},
|
|
set: function(t) {
|
|
this._line = t, this.multiLine = [t]
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "multiLine", {
|
|
get: function() {
|
|
return this._multiLine
|
|
},
|
|
set: function(t) {
|
|
this._multiLine = t, this._multiGeoLine = Vr(t), this.updateExtremes()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "geoLine", {
|
|
get: function() {
|
|
return this._geoLine
|
|
},
|
|
set: function(t) {
|
|
this._geoLine = t, this.multiLine = Br([t])
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "multiGeoLine", {
|
|
get: function() {
|
|
return this._multiGeoLine
|
|
},
|
|
set: function(t) {
|
|
this._multiGeoLine = t, this.multiLine = Br(t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(Or),
|
|
yo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapLineSeries", e.dataFields.multiLine = "multiLine", e.dataFields.line = "line", e.dataFields.geoLine = "geoLine", e.dataFields.multiGeoLine = "multiGeoLine", e.ignoreBounds = !0, e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
|
|
return new mo
|
|
}, e.prototype.validateData = function() {
|
|
if (this.useGeodata || this.geodata) {
|
|
var e = this.chart.geodata;
|
|
if (e) {
|
|
var n = void 0;
|
|
if ("FeatureCollection" == e.type ? n = e.features : "Feature" == e.type ? n = [e] : -1 != ["Point", "LineString", "Polygon", "MultiPoint", "MultiLineString", "MultiPolygon"].indexOf(e.type) ? n = [{
|
|
geometry: e
|
|
}] : console.log("nothing found in geoJSON"), n)
|
|
for (var i = function(t, e) {
|
|
var i = n[t],
|
|
o = i.geometry;
|
|
if (o) {
|
|
var a = o.type,
|
|
u = i.id;
|
|
if ("LineString" == a || "MultiLineString" == a) {
|
|
if (!r.checkInclude(r.include, r.exclude, u)) return "continue";
|
|
var s = o.coordinates,
|
|
c = Nr.find(r.data, function(t, e) {
|
|
return t.id == u
|
|
});
|
|
"LineString" == a && (s = [s]), c ? c.multiLine || (c.multiLine = s) : (c = {
|
|
multiLine: s,
|
|
id: u,
|
|
madeFromGeoData: !0
|
|
}, r.data.push(c)), Yr.softCopyProperties(i.properties, c)
|
|
}
|
|
}
|
|
}, r = this, o = 0, a = n.length; o < a; o++) i(o)
|
|
}
|
|
}
|
|
t.prototype.validateData.call(this)
|
|
}, Object.defineProperty(e.prototype, "mapLines", {
|
|
get: function() {
|
|
if (!this._mapLines) {
|
|
var t = this.createLine(),
|
|
e = new Xr.e(t);
|
|
this._disposers.push(new Xr.c(e)), this._disposers.push(e.template), e.events.on("inserted", this.handleObjectAdded, this, !1), this._mapLines = e, this._mapObjects = e
|
|
}
|
|
return this._mapLines
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.createLine = function() {
|
|
return new vo
|
|
}, e.prototype.validate = function() {
|
|
this.dataItems.each(function(t) {
|
|
Yr.used(t.mapLine)
|
|
}), t.prototype.validate.call(this), this.mapLines.each(function(t) {
|
|
t.validate()
|
|
})
|
|
}, e.prototype.copyFrom = function(e) {
|
|
this.mapLines.template.copyFrom(e.mapLines.template), t.prototype.copyFrom.call(this, e)
|
|
}, e.prototype.getFeatures = function() {
|
|
var t = this,
|
|
e = [];
|
|
return this.dataItems.each(function(t) {
|
|
var n = t.getFeature();
|
|
n && e.push(n)
|
|
}), this.mapLines.each(function(n) {
|
|
if (-1 == t.dataItems.indexOf(n._dataItem)) {
|
|
var i = n.getFeature();
|
|
i && e.push(i)
|
|
}
|
|
}), e
|
|
}, e.prototype.getLineById = function(t) {
|
|
return Ur.find(this.mapLines.iterator(), function(e) {
|
|
return e.dataItem.dataContext.id == t
|
|
})
|
|
}, e
|
|
}(Lr);
|
|
d.c.registeredClasses.MapLineSeries = yo, d.c.registeredClasses.MapLineSeriesDataItem = mo;
|
|
var bo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "Graticule", e.applyTheme(), e.shortestDistance = !0, e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(vo);
|
|
d.c.registeredClasses.Graticule = bo;
|
|
var Po = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "GraticuleSeriesDataItem", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(mo),
|
|
So = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "GraticuleSeries", e.longitudeStep = 10, e.latitudeStep = 10, e.north = 90, e.south = -90, e.east = -180, e.west = 180, e.fitExtent = !0, e.singleSprite = !0, e.events.disableType("geoBoundsChanged"), e.mapLines.template.line.strokeOpacity = .08, e.ignoreBounds = !1, e.hiddenInLegend = !0, e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
|
|
return new Po
|
|
}, e.prototype.validateData = function() {
|
|
var e = this;
|
|
t.prototype.validateData.call(this), this.mapLines.clear();
|
|
var n = _n();
|
|
if (n) {
|
|
n.stepMinor([this.longitudeStep, this.latitudeStep]), n.stepMajor([360, 360]);
|
|
var i = this.chart;
|
|
if (this.fitExtent ? n.extent([
|
|
[i.east, i.north],
|
|
[i.west, i.south]
|
|
]) : n.extent([
|
|
[this.east, this.north],
|
|
[this.west, this.south]
|
|
]), this.singleSprite) {
|
|
this.mapLines.create().multiLine = n().coordinates
|
|
} else {
|
|
var r = n.lines();
|
|
Nr.each(r, function(t) {
|
|
e.mapLines.create().multiLine = [t.coordinates]
|
|
})
|
|
}
|
|
}
|
|
}, e.prototype.createLine = function() {
|
|
return new bo
|
|
}, Object.defineProperty(e.prototype, "latitudeStep", {
|
|
get: function() {
|
|
return this.getPropertyValue("latitudeStep")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("latitudeStep", t) && this.invalidateData()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "longitudeStep", {
|
|
get: function() {
|
|
return this.getPropertyValue("longitudeStep")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("longitudeStep", t) && this.invalidateData()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "fitExtent", {
|
|
get: function() {
|
|
return this.getPropertyValue("fitExtent")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("fitExtent", t) && this.invalidateData()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "singleSprite", {
|
|
get: function() {
|
|
return this.getPropertyValue("singleSprite")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("singleSprite", t) && this.invalidateData()
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(yo);
|
|
d.c.registeredClasses.GraticuleSeries = So, d.c.registeredClasses.GraticuleSeriesDataItem = Po;
|
|
var _o = n("zhwk"),
|
|
Mo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapChartDataItem", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(l.b),
|
|
xo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
e.scaleRatio = 1, e.zoomDuration = 1e3, e.zoomEasing = ro.cubicOut, e.minZoomLevel = 1, e.maxZoomLevel = 32, e._prevZoomGeoPoint = {
|
|
latitude: 0,
|
|
longitude: 0
|
|
}, e.className = "MapChart", e.projection = new Qr, e.setPropertyValue("deltaLatitude", 0), e.setPropertyValue("deltaLongitude", 0), e.setPropertyValue("deltaGamma", 0), e.maxPanOut = .7, e.homeZoomLevel = 1, e.zoomStep = 2, e.layout = "absolute", e.centerMapOnZoomOut = !0, e.padding(0, 0, 0, 0), Yr.used(e.backgroundSeries), e.minWidth = 10, e.minHeight = 10, e.events.once("inited", e.handleAllInited, e, !1);
|
|
var n = e.seriesContainer;
|
|
n.visible = !1, n.inert = !0, n.resizable = !0, n.events.on("transformed", e.handleMapTransform, e, !1), n.events.on("doublehit", e.handleDoubleHit, e, !1), n.events.on("dragged", e.handleDrag, e, !1), n.zIndex = 0, n.dragWhileResize = !0, n.adapter.add("scale", function(t, n) {
|
|
return v.fitToRange(t, e.minZoomLevel, e.maxZoomLevel)
|
|
}), e.events.on("maxsizechanged", function(t) {
|
|
0 != t.previousWidth && 0 != t.previousHeight || (e.updateExtremes(), e.updateCenterGeoPoint())
|
|
}, void 0, !1);
|
|
var i = e.chartContainer;
|
|
i.parent = e, i.zIndex = -1, e._disposers.push(e.events.on("maxsizechanged", function() {
|
|
if (e.inited) {
|
|
e._mapAnimation && e._mapAnimation.stop();
|
|
var t = !0;
|
|
e.series.each(function(e) {
|
|
e.updateTooltipBounds(), e.inited && !e.dataInvalid || (t = !1)
|
|
}), t && e.updateScaleRatio(), e.zoomToGeoPoint(e._zoomGeoPointReal, e.zoomLevel, !0, 0)
|
|
}
|
|
}, void 0, !1));
|
|
var r = i.background;
|
|
r.fillOpacity = 0, r.events.on("down", function(t) {
|
|
e.seriesContainer.dragStart(t.target.interactions.downPointers.getIndex(0))
|
|
}, e), r.events.on("up", function(t) {
|
|
e.seriesContainer.dragStop()
|
|
}, e), r.events.on("doublehit", e.handleDoubleHit, e), r.focusable = !0, i.events.on("down", e.handleMapDown, e, !1), e.addDisposer(n.events.on("down", function() {
|
|
var t = e.seriesContainer.interactions.inertias.getKey("move");
|
|
t && t.done()
|
|
})), e.background.fillOpacity = 0, e._disposers.push(Object(_o.b)().body.events.on("keyup", function(t) {
|
|
if (e.topParent.hasFocused) {
|
|
var n = io.b.getEventKey(t.event);
|
|
if (!e._zoomControl || !e._zoomControl.thumb.isFocused) switch (n) {
|
|
case "up":
|
|
e.pan({
|
|
x: 0,
|
|
y: .1
|
|
});
|
|
break;
|
|
case "down":
|
|
e.pan({
|
|
x: 0,
|
|
y: -.1
|
|
});
|
|
break;
|
|
case "left":
|
|
e.pan({
|
|
x: .1,
|
|
y: 0
|
|
});
|
|
break;
|
|
case "right":
|
|
e.pan({
|
|
x: -.1,
|
|
y: 0
|
|
})
|
|
}
|
|
}
|
|
}, e)), e.mouseWheelBehavior = "zoom";
|
|
var o = Object(_o.b)();
|
|
e._disposers.push(o.body.events.on("down", e.handlePanDown, e)), e._disposers.push(o.body.events.on("up", e.handlePanUp, e));
|
|
var a = e.seriesContainer.createChild($r.a);
|
|
return a.radius = 10, a.inert = !0, a.isMeasured = !1, a.events.on("transformed", e.handlePanMove, e, !1), a.interactionsEnabled = !1, a.opacity = 0, a.x = 0, a.y = 0, e.panSprite = a, e.panBehavior = "move", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.handlePanDown = function(t) {
|
|
var e = Yr.documentPointToSvg(t.pointer.point, this.htmlContainer);
|
|
e.x > 0 && e.y > 0 && e.x < this.svgContainer.width && e.y < this.svgContainer.height && (this._downPointOrig = Yr.documentPointToSprite(t.pointer.point, this.seriesContainer), this.panSprite.moveTo(this._downPointOrig), this.panSprite.dragStart(t.pointer), this._downDeltaLongitude = this.deltaLongitude, this._downDeltaLatitude = this.deltaLatitude)
|
|
}, e.prototype.handlePanUp = function(t) {
|
|
this._downPointOrig && this.panSprite.dragStop(t.pointer, !0), this._downPointOrig = void 0
|
|
}, e.prototype.handlePanMove = function() {
|
|
if (!this.seriesContainer.isResized) {
|
|
if (Object(_o.b)().areTransformed([this.panSprite.interactions, this.seriesContainer.interactions])) return;
|
|
var t = this.projection.d3Projection,
|
|
e = this.panBehavior;
|
|
if ("move" != e && "none" != e && this._downPointOrig && t.rotate) {
|
|
var n = t.rotate(),
|
|
i = n[0],
|
|
r = n[1],
|
|
o = n[2];
|
|
t.rotate([0, 0, 0]);
|
|
var a = this.projection.invert(this._downPointOrig),
|
|
u = {
|
|
x: this.panSprite.pixelX,
|
|
y: this.panSprite.pixelY
|
|
},
|
|
s = void 0;
|
|
u && (s = this.projection.invert(u)), t.rotate([i, r, o]), s && ("rotateLat" != e && "rotateLongLat" != e || (this.deltaLatitude = this._downDeltaLatitude + s.latitude - a.latitude), "rotateLong" != e && "rotateLongLat" != e || (this.deltaLongitude = this._downDeltaLongitude + s.longitude - a.longitude))
|
|
}
|
|
}
|
|
}, e.prototype.handleAllInited = function() {
|
|
var t = this,
|
|
e = !0;
|
|
if (this.seriesContainer.visible = !0, this.series.each(function(t) {
|
|
t.inited && !t.dataInvalid || (e = !1)
|
|
}), e) this.updateCenterGeoPoint(), this.updateScaleRatio(), this.goHome(0);
|
|
else {
|
|
var n = d.c.events.once("exitframe", function() {
|
|
t.removeDispose(n), t.handleAllInited()
|
|
}, this, !1);
|
|
this.addDisposer(n)
|
|
}
|
|
}, e.prototype.updateZoomGeoPoint = function() {
|
|
var t = Yr.svgPointToSprite({
|
|
x: this.innerWidth / 2 + this.pixelPaddingLeft,
|
|
y: this.innerHeight / 2 + this.pixelPaddingTop
|
|
}, this.series.getIndex(0)),
|
|
e = this.projection.invert(t);
|
|
this._zoomGeoPointReal = e
|
|
}, e.prototype.updateCenterGeoPoint = function() {
|
|
var t, e, n, i;
|
|
if (this.backgroundSeries) {
|
|
var r = this.backgroundSeries.getFeatures();
|
|
if (r.length > 0) {
|
|
var o = this.projection.d3Path.bounds(r[0].geometry);
|
|
t = o[0][0], n = o[0][1], e = o[1][0], i = o[1][1]
|
|
}
|
|
} else this.series.each(function(r) {
|
|
var o = r.group.node.getBBox();
|
|
(t > o.x || !g.isNumber(t)) && (t = o.x), (e < o.x + o.width || !g.isNumber(e)) && (e = o.x + o.width), (n > o.y || !g.isNumber(n)) && (n = o.y), (i < o.y + o.height || !g.isNumber(i)) && (i = o.y + o.height)
|
|
});
|
|
this.seriesMaxLeft = t, this.seriesMaxRight = e, this.seriesMaxTop = n, this.seriesMaxBottom = i, this.seriesWidth = e - t, this.seriesHeight = i - n, this.seriesWidth > 0 && this.seriesHeight > 0 ? (this.chartContainer.visible = !0, this._centerGeoPoint = this.projection.invert({
|
|
x: t + (e - t) / 2,
|
|
y: n + (i - n) / 2
|
|
}), this._zoomGeoPointReal && g.isNumber(this._zoomGeoPointReal.latitude) || (this._zoomGeoPointReal = this._centerGeoPoint)) : this.chartContainer.visible = !1
|
|
}, e.prototype.handleDrag = function() {
|
|
var t = this.zoomLevel * this.scaleRatio,
|
|
e = this.seriesWidth * t,
|
|
n = this.seriesHeight * t,
|
|
i = this.seriesContainer,
|
|
r = this.seriesMaxLeft * t,
|
|
o = this.seriesMaxRight * t,
|
|
a = this.seriesMaxTop * t,
|
|
u = this.seriesMaxBottom * t,
|
|
s = i.pixelX,
|
|
c = i.pixelY,
|
|
l = this.maxPanOut,
|
|
h = Math.min(this.maxWidth * (1 - l) - e - r, -r);
|
|
s < h && (s = h);
|
|
var p = Math.max(this.maxWidth * l - r, this.maxWidth - o);
|
|
s > p && (s = p);
|
|
var f = Math.min(this.maxHeight * (1 - l) - n - a, -a);
|
|
c < f && (c = f);
|
|
var d = Math.max(this.maxHeight * l - a, this.maxHeight - u);
|
|
c > d && (c = d), i.moveTo({
|
|
x: s,
|
|
y: c
|
|
}, void 0, void 0, !0), this._zoomGeoPointReal = this.zoomGeoPoint
|
|
}, e.prototype.applyInternalDefaults = function() {
|
|
t.prototype.applyInternalDefaults.call(this), g.hasValue(this.readerTitle) || (this.readerTitle = this.language.translate("Map")), g.hasValue(this.background.readerTitle) || (this.background.readerTitle = this.language.translate("Use plus and minus keys on your keyboard to zoom in and out"))
|
|
}, e.prototype.handleMapDown = function() {
|
|
this._mapAnimation && this._mapAnimation.stop()
|
|
}, e.prototype.handleDoubleHit = function(t) {
|
|
var e = Yr.documentPointToSvg(t.point, this.htmlContainer, this.svgContainer.cssScale),
|
|
n = this.svgPointToGeo(e);
|
|
this.zoomIn(n)
|
|
}, e.prototype.handleWheel = function(t) {
|
|
var e = this.seriesContainer.interactions.inertias.getKey("move");
|
|
e && e.done();
|
|
var n = Yr.documentPointToSvg(t.point, this.htmlContainer, this.svgContainer.cssScale),
|
|
i = this.svgPointToGeo(n);
|
|
t.shift.y < 0 ? this.zoomIn(i, void 0, this.interactions.mouseOptions.sensitivity) : this.zoomOut(i, void 0, this.interactions.mouseOptions.sensitivity)
|
|
}, Object.defineProperty(e.prototype, "mouseWheelBehavior", {
|
|
get: function() {
|
|
return this.getPropertyValue("mouseWheelBehavior")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("mouseWheelBehavior", t) && ("none" != t ? (this._mouseWheelDisposer = this.chartContainer.events.on("wheel", this.handleWheel, this, !1), this._disposers.push(this._mouseWheelDisposer)) : (this._mouseWheelDisposer && this._mouseWheelDisposer.dispose(), this.chartContainer.wheelable = !1))
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "panBehavior", {
|
|
get: function() {
|
|
return this.getPropertyValue("panBehavior")
|
|
},
|
|
set: function(t) {
|
|
if (this.setPropertyValue("panBehavior", t)) {
|
|
var e = this.seriesContainer;
|
|
switch (this.panSprite.draggable = !1, e.draggable = !1, t) {
|
|
case "move":
|
|
e.draggable = !0;
|
|
break;
|
|
default:
|
|
this.panSprite.draggable = !0
|
|
}
|
|
}
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "centerMapOnZoomOut", {
|
|
get: function() {
|
|
return this.getPropertyValue("centerMapOnZoomOut")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("centerMapOnZoomOut", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "projection", {
|
|
get: function() {
|
|
return this.getPropertyValue("projection")
|
|
},
|
|
set: function(t) {
|
|
var e = this;
|
|
this.setPropertyValue("projection", t) && (this.invalidateProjection(), t.chart = this, this._backgroundSeries && this._backgroundSeries.invalidate(), this.inited && this.updateExtremes(), this.series.each(function(t) {
|
|
t.events.once("validated", function() {
|
|
e.updateCenterGeoPoint(), e.updateScaleRatio(), e.goHome(0)
|
|
})
|
|
}))
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.validateDataItems = function() {
|
|
t.prototype.validateDataItems.call(this), this.updateExtremes()
|
|
}, e.prototype.updateExtremes = function() {
|
|
var t, e, n, i;
|
|
this.series.each(function(r) {
|
|
r.ignoreBounds || r instanceof So && r.fitExtent || ((r.north > e || !g.isNumber(e)) && (e = r.north), (r.south < i || !g.isNumber(i)) && (i = r.south), (r.west < n || !g.isNumber(n)) && (n = r.west), (r.east > t || !g.isNumber(t)) && (t = r.east))
|
|
});
|
|
var r = [],
|
|
o = !1;
|
|
this.series.each(function(t) {
|
|
t instanceof So && !t.fitExtent && (r = t.getFeatures(), o = !0)
|
|
}), o || this.series.each(function(t) {
|
|
t.ignoreBounds || t instanceof So && t.fitExtent || (r = r.concat(t.getFeatures()))
|
|
});
|
|
var a = v.max(50, this.innerWidth),
|
|
u = v.max(50, this.innerHeight),
|
|
s = this.projection.d3Projection;
|
|
if (r.length > 0 && s && (this.east != t || this.west != n || this.north != e || this.south != i)) {
|
|
if (this.east = t, this.west = n, this.north = e, this.south = i, s.rotate) {
|
|
var c = s.rotate(),
|
|
l = c[0],
|
|
h = c[1],
|
|
p = c[2];
|
|
this.deltaLongitude = l, this.deltaLatitude = h, this.deltaGamma = p
|
|
}
|
|
var f = {
|
|
type: "FeatureCollection",
|
|
features: r
|
|
},
|
|
d = s.scale();
|
|
if (s.fitSize([a, u], f), s.scale() != d && this.invalidateDataUsers(), this.series.each(function(t) {
|
|
t instanceof So && t.invalidateData()
|
|
}), this._backgroundSeries) {
|
|
var m = this._backgroundSeries.mapPolygons.getIndex(0);
|
|
m && (m.multiPolygon = Zr(this.north, this.east, this.south, this.west))
|
|
}
|
|
this._fitWidth = a, this._fitHeight = u
|
|
}
|
|
this._zoomGeoPointReal && g.isNumber(this._zoomGeoPointReal.latitude) || this.goHome(0)
|
|
}, e.prototype.updateScaleRatio = function() {
|
|
var t;
|
|
this.updateCenterGeoPoint();
|
|
var e = this.innerWidth / this.seriesWidth,
|
|
n = this.innerHeight / this.seriesHeight;
|
|
t = v.min(e, n), (g.isNaN(t) || t == 1 / 0) && (t = 1), t != this.scaleRatio && (this.scaleRatio = t, Ur.each(this.series.iterator(), function(e) {
|
|
e.scale = t, e.updateTooltipBounds()
|
|
}), this.backgroundSeries.scale = t, this.dispatch("scaleratiochanged"))
|
|
}, e.prototype.svgPointToGeo = function(t) {
|
|
var e = this.series.getIndex(0);
|
|
if (e) {
|
|
var n = Yr.svgPointToSprite(t, e);
|
|
return this.seriesPointToGeo(n)
|
|
}
|
|
}, e.prototype.geoPointToSVG = function(t) {
|
|
var e = this.series.getIndex(0);
|
|
if (e) {
|
|
var n = this.geoPointToSeries(t);
|
|
return Yr.spritePointToSvg(n, e)
|
|
}
|
|
}, e.prototype.seriesPointToGeo = function(t) {
|
|
return this.projection.invert(t)
|
|
}, e.prototype.geoPointToSeries = function(t) {
|
|
return this.projection.convert(t)
|
|
}, Object.defineProperty(e.prototype, "geodata", {
|
|
get: function() {
|
|
return this._geodata
|
|
},
|
|
set: function(t) {
|
|
t != this._geodata && (this._geodata = t, this.invalidateData(), this.dataUsers.each(function(t) {
|
|
for (var e = t.data.length - 1; e >= 0; e--) 1 == t.data[e].madeFromGeoData && t.data.splice(e, 1);
|
|
t.disposeData(), t.invalidateData()
|
|
}))
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.zoomToGeoPoint = function(t, e, n, i, r) {
|
|
var o = this;
|
|
if (!t) {
|
|
var a = !1;
|
|
if (this.series.each(function(t) {
|
|
t.dataItems.length > 0 && (a = !0)
|
|
}), !a) return;
|
|
t = this.zoomGeoPoint
|
|
}
|
|
if (t && g.isNumber(t.longitude) && g.isNumber(t.latitude)) {
|
|
this._zoomGeoPointReal = t, e = v.fitToRange(e, this.minZoomLevel, this.maxZoomLevel);
|
|
var u = this.projection.convert(t);
|
|
if (u) {
|
|
var s = this.geoPointToSVG(t),
|
|
c = Yr.svgPointToSprite(s, this);
|
|
n && (c = {
|
|
x: this.innerWidth / 2,
|
|
y: this.innerHeight / 2
|
|
}), g.isNumber(i) || (i = this.zoomDuration);
|
|
var l = c.x - u.x * e * this.scaleRatio,
|
|
h = c.y - u.y * e * this.scaleRatio;
|
|
return !r && e < this.zoomLevel && this.centerMapOnZoomOut && e < 1.5 && (l = this.innerWidth / 2 - (this.seriesMaxLeft + (this.seriesMaxRight - this.seriesMaxLeft) / 2) * e * this.scaleRatio, h = this.innerHeight / 2 - (this.seriesMaxTop + (this.seriesMaxBottom - this.seriesMaxTop) / 2) * e * this.scaleRatio), this._mapAnimation = this.seriesContainer.animate([{
|
|
property: "scale",
|
|
to: e
|
|
}, {
|
|
property: "x",
|
|
from: this.seriesContainer.pixelX,
|
|
to: l
|
|
}, {
|
|
property: "y",
|
|
from: this.seriesContainer.pixelY,
|
|
to: h
|
|
}], i, this.zoomEasing), this._disposers.push(this._mapAnimation.events.on("animationended", function() {
|
|
o._zoomGeoPointReal = o.zoomGeoPoint
|
|
})), this.seriesContainer.validatePosition(), this._mapAnimation
|
|
}
|
|
}
|
|
}, e.prototype.zoomToMapObject = function(t, e, n, i) {
|
|
void 0 == n && (n = !0);
|
|
var r = this.seriesContainer.interactions.inertias.getKey("move");
|
|
if (r && r.done(), t instanceof Ir) return g.isNaN(e) && (e = 5), this.zoomToGeoPoint({
|
|
latitude: t.latitude,
|
|
longitude: t.longitude
|
|
}, e, n, i, !0);
|
|
var o = t.dataItem;
|
|
if (o && g.isNumber(o.zoomLevel) && (e = o.zoomLevel), t instanceof qr) {
|
|
var a = t.dataItem,
|
|
u = t.polygon.bbox;
|
|
0 != u.width && 0 != u.height || (u = t.polygon.group.getBBox()), g.isNumber(e) || (e = Math.min(this.seriesWidth / u.width, this.seriesHeight / u.height));
|
|
var s = void 0;
|
|
if (a && g.hasValue(a.zoomGeoPoint)) s = a.zoomGeoPoint;
|
|
else {
|
|
var c = {
|
|
x: u.x + u.width / 2,
|
|
y: u.y + u.height / 2
|
|
},
|
|
l = Yr.spritePointToSprite(c, t.polygon, t.series);
|
|
s = this.seriesPointToGeo(l)
|
|
}
|
|
return this.zoomToGeoPoint(s, e, !0, i, !0)
|
|
}
|
|
}, e.prototype.zoomToRectangle = function(t, e, n, i, r, o, a) {
|
|
g.isNaN(r) && (r = 1);
|
|
var u = v.min(i, e),
|
|
s = v.max(i, e);
|
|
i = u, e = s;
|
|
var c = v.normalizeAngle(180 - this.deltaLongitude);
|
|
c > 180 && (c -= 360);
|
|
var l = i + (e - i) / 2,
|
|
h = i - e;
|
|
i < c && e > c && (l += 180, h = v.normalizeAngle(e - i - 360));
|
|
var p = r * Math.min((this.south - this.north) / (n - t), Math.abs((this.west - this.east) / h));
|
|
return this.zoomToGeoPoint({
|
|
latitude: t + (n - t) / 2,
|
|
longitude: l
|
|
}, p, o, a, !0)
|
|
}, e.prototype.zoomIn = function(t, e, n) {
|
|
void 0 === n && (n = 1);
|
|
var i = 1 + (this.zoomStep - 1) * n;
|
|
return i < 1 && (i = 1), this.zoomToGeoPoint(t, this.zoomLevel * i, !1, e)
|
|
}, e.prototype.zoomOut = function(t, e, n) {
|
|
void 0 === n && (n = 1);
|
|
var i = 1 + (this.zoomStep - 1) * n;
|
|
return i < 1 && (i = 1), this.zoomToGeoPoint(t, this.zoomLevel / i, !1, e)
|
|
}, e.prototype.pan = function(t, e) {
|
|
var n = this.geoPointToSVG(this.zoomGeoPoint);
|
|
n.x += this.pixelWidth * t.x, n.y += this.pixelHeight * t.y, this.zoomToGeoPoint(this.svgPointToGeo(n), this.zoomLevel, !0, e, !0)
|
|
}, Object.defineProperty(e.prototype, "zoomGeoPoint", {
|
|
get: function() {
|
|
var t = Yr.spritePointToSvg({
|
|
x: this.pixelWidth / 2,
|
|
y: this.pixelHeight / 2
|
|
}, this);
|
|
return this.svgPointToGeo(t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "zoomLevel", {
|
|
get: function() {
|
|
return this.seriesContainer.scale
|
|
},
|
|
set: function(t) {
|
|
this.seriesContainer.scale = t
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.handleMapTransform = function() {
|
|
this.zoomLevel != this._prevZoomLevel && (this.dispatch("zoomlevelchanged"), this._prevZoomLevel = this.zoomLevel, this.svgContainer.readerAlert(this.language.translate("Zoom level changed to %1", this.language.locale, g.castString(this.zoomLevel)))), !this.zoomGeoPoint || this._prevZoomGeoPoint.latitude == this.zoomGeoPoint.latitude && this._prevZoomGeoPoint.longitude == this.zoomGeoPoint.longitude || this.dispatch("mappositionchanged")
|
|
}, Object.defineProperty(e.prototype, "smallMap", {
|
|
get: function() {
|
|
if (!this._smallMap) {
|
|
var t = new no;
|
|
this.smallMap = t
|
|
}
|
|
return this._smallMap
|
|
},
|
|
set: function(t) {
|
|
this._smallMap && this.removeDispose(this._smallMap), this._smallMap = t, this._smallMap.chart = this, t.parent = this.chartContainer
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "zoomControl", {
|
|
get: function() {
|
|
return this._zoomControl
|
|
},
|
|
set: function(t) {
|
|
this._zoomControl && this.removeDispose(this._zoomControl), this._zoomControl = t, t.chart = this, t.parent = this.chartContainer, t.plusButton.exportable = !1, t.minusButton.exportable = !1
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.createSeries = function() {
|
|
return new Lr
|
|
}, Object.defineProperty(e.prototype, "deltaLongitude", {
|
|
get: function() {
|
|
return this.getPropertyValue("deltaLongitude")
|
|
},
|
|
set: function(t) {
|
|
t = v.round(t, 3), this.setPropertyValue("deltaLongitude", uo(t)) && (this.rotateMap(), this.updateZoomGeoPoint())
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "deltaLatitude", {
|
|
get: function() {
|
|
return this.getPropertyValue("deltaLatitude")
|
|
},
|
|
set: function(t) {
|
|
t = v.round(t, 3), this.setPropertyValue("deltaLatitude", t) && (this.rotateMap(), this.updateZoomGeoPoint())
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "deltaGamma", {
|
|
get: function() {
|
|
return this.getPropertyValue("deltaGamma")
|
|
},
|
|
set: function(t) {
|
|
t = v.round(t, 3), this.setPropertyValue("deltaGamma", t) && (this.rotateMap(), this.updateZoomGeoPoint())
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.rotateMap = function() {
|
|
this.projection.d3Projection && this.projection.d3Projection.rotate && (this.projection.d3Projection.rotate([this.deltaLongitude, this.deltaLatitude, this.deltaGamma]), this.invalidateProjection(), this.updateExtremes())
|
|
}, Object.defineProperty(e.prototype, "maxPanOut", {
|
|
get: function() {
|
|
return this.getPropertyValue("maxPanOut")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("maxPanOut", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "homeGeoPoint", {
|
|
get: function() {
|
|
return this.getPropertyValue("homeGeoPoint")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("homeGeoPoint", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "homeZoomLevel", {
|
|
get: function() {
|
|
return this.getPropertyValue("homeZoomLevel")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("homeZoomLevel", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), Object.defineProperty(e.prototype, "zoomStep", {
|
|
get: function() {
|
|
return this.getPropertyValue("zoomStep")
|
|
},
|
|
set: function(t) {
|
|
this.setPropertyValue("zoomStep", t)
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.invalidateProjection = function() {
|
|
this.east = void 0, this.invalidateDataUsers(), this.updateCenterGeoPoint()
|
|
}, Object.defineProperty(e.prototype, "geodataSource", {
|
|
get: function() {
|
|
return this._dataSources.geodata || this.getDataSource("geodata"), this._dataSources.geodata
|
|
},
|
|
set: function(t) {
|
|
var e = this;
|
|
this._dataSources.geodata && this.removeDispose(this._dataSources.geodata), this._dataSources.geodata = t, this._dataSources.geodata.component = this, this.events.on("inited", function() {
|
|
e.loadData("geodata")
|
|
}, this, !1), this.setDataSourceEvents(t, "geodata")
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.processConfig = function(e) {
|
|
if (g.hasValue(e.geodata) && g.isString(e.geodata)) {
|
|
var n = e.geodata;
|
|
if (g.hasValue(window["am4geodata_" + e.geodata])) e.geodata = window["am4geodata_" + e.geodata];
|
|
else try {
|
|
e.geodata = JSON.parse(e.geodata)
|
|
} catch (t) {
|
|
this.raiseCriticalError(Error("MapChart error: Geodata `" + n + "` is not loaded or is incorrect."), !0)
|
|
}
|
|
}
|
|
g.hasValue(e.projection) && g.isString(e.projection) && (e.projection = this.createClassInstance(e.projection)), g.hasValue(e.smallMap) && !g.hasValue(e.smallMap.type) && (e.smallMap.type = "SmallMap"), g.hasValue(e.zoomControl) && !g.hasValue(e.zoomControl.type) && (e.zoomControl.type = "ZoomControl"), t.prototype.processConfig.call(this, e)
|
|
}, e.prototype.handleSeriesAdded = function(e) {
|
|
t.prototype.handleSeriesAdded.call(this, e);
|
|
var n = e.newValue;
|
|
n.scale = this.scaleRatio, n.events.on("validated", this.updateCenterGeoPoint, this, !1)
|
|
}, e.prototype.configOrder = function(e, n) {
|
|
return e == n ? 0 : "smallMap" == e ? 1 : "smallMap" == n ? -1 : "series" == e ? 1 : "series" == n ? -1 : t.prototype.configOrder.call(this, e, n)
|
|
}, e.prototype.asIs = function(e) {
|
|
return "projection" == e || "geodata" == e || t.prototype.asIs.call(this, e)
|
|
}, Object.defineProperty(e.prototype, "centerGeoPoint", {
|
|
get: function() {
|
|
return this._centerGeoPoint
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.goHome = function(t) {
|
|
var e = this.homeGeoPoint;
|
|
e || (e = this.centerGeoPoint), e && this.zoomToGeoPoint(e, this.homeZoomLevel, !0, t, !0)
|
|
}, e.prototype.setPaper = function(e) {
|
|
return this.svgContainer && (this.svgContainer.hideOverflow = !0), t.prototype.setPaper.call(this, e)
|
|
}, Object.defineProperty(e.prototype, "backgroundSeries", {
|
|
get: function() {
|
|
var t = this;
|
|
if (!this._backgroundSeries) {
|
|
var e = new Kr;
|
|
e.parent = this.seriesContainer, e.chart = this, e.hiddenInLegend = !0, e.mapPolygons.template.focusable = !1, e.addDisposer(new h.b(function() {
|
|
t._backgroundSeries = void 0
|
|
})), this._disposers.push(e);
|
|
var n = (new p.a).getFor("background"),
|
|
i = e.mapPolygons.template.polygon;
|
|
i.stroke = n, i.fill = n, i.fillOpacity = 0, i.strokeOpacity = 0, e.mapPolygons.create(), this._backgroundSeries = e
|
|
}
|
|
return this._backgroundSeries
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.setLegend = function(e) {
|
|
t.prototype.setLegend.call(this, e), e && (e.parent = this)
|
|
}, e.prototype.setTapToActivate = function(e) {
|
|
t.prototype.setTapToActivate.call(this, e), this.seriesContainer.interactions.isTouchProtected = !0, this.panSprite.interactions.isTouchProtected = !0
|
|
}, e.prototype.handleTapToActivate = function() {
|
|
t.prototype.handleTapToActivate.call(this), this.seriesContainer.interactions.isTouchProtected = !1, this.panSprite.interactions.isTouchProtected = !1
|
|
}, e.prototype.handleTapToActivateDeactivation = function() {
|
|
t.prototype.handleTapToActivateDeactivation.call(this), this.seriesContainer.interactions.isTouchProtected = !0, this.panSprite.interactions.isTouchProtected = !0
|
|
}, e.prototype.asFunction = function(e) {
|
|
return "zoomEasing" == e || t.prototype.asIs.call(this, e)
|
|
}, e
|
|
}(l.a);
|
|
d.c.registeredClasses.MapChart = xo;
|
|
var jo = n("xgTw"),
|
|
wo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapSpline", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createLine = function() {
|
|
this.line = new jo.a, this.line.tensionX = .8, this.line.tensionY = .8
|
|
}, Object.defineProperty(e.prototype, "shortestDistance", {
|
|
get: function() {
|
|
return !1
|
|
},
|
|
set: function(t) {},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(vo);
|
|
d.c.registeredClasses.MapSpline = wo;
|
|
var Oo = n("MXvJ"),
|
|
Lo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapArc", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createLine = function() {
|
|
this.line = new Oo.a
|
|
}, Object.defineProperty(e.prototype, "shortestDistance", {
|
|
get: function() {
|
|
return !1
|
|
},
|
|
set: function(t) {},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e
|
|
}(vo);
|
|
d.c.registeredClasses.MapArc = Lo;
|
|
var Co = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapSplineSeriesDataItem", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(mo),
|
|
Eo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapSplineSeries", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
|
|
return new Co
|
|
}, e.prototype.createLine = function() {
|
|
return new wo
|
|
}, e
|
|
}(yo);
|
|
d.c.registeredClasses.MapSplineSeries = Eo, d.c.registeredClasses.MapSplineSeriesDataItem = Co;
|
|
var Io = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapArcSeriesDataItem", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(mo),
|
|
To = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.className = "MapArcSeries", e.applyTheme(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.createDataItem = function() {
|
|
return new Io
|
|
}, e.prototype.createLine = function() {
|
|
return new Lo
|
|
}, e
|
|
}(yo);
|
|
d.c.registeredClasses.MapArcSeries = To, d.c.registeredClasses.MapArcSeriesDataItem = Io;
|
|
var Do = n("aGXA"),
|
|
Go = n("CnhP"),
|
|
No = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
e._chart = new h.d, e.className = "ZoomControl", e.align = "right", e.valign = "bottom", e.layout = "vertical", e.padding(5, 5, 5, 5);
|
|
var n = new p.a,
|
|
i = e.createChild(Do.a);
|
|
i.shouldClone = !1, i.label.text = "+", e.plusButton = i;
|
|
var r = e.createChild(Cr.a);
|
|
r.shouldClone = !1, r.background.fill = n.getFor("alternativeBackground"), r.background.fillOpacity = .05, r.background.events.on("hit", e.handleBackgroundClick, e, !1), r.events.on("sizechanged", e.updateThumbSize, e, !1), e.slider = r;
|
|
var o = r.createChild(Do.a);
|
|
o.shouldClone = !1, o.padding(0, 0, 0, 0), o.draggable = !0, o.events.on("drag", e.handleThumbDrag, e, !1), e.thumb = o;
|
|
var a = e.createChild(Do.a);
|
|
return a.shouldClone = !1, a.label.text = "-", e.minusButton = a, e.thumb.role = "slider", e.thumb.readerLive = "polite", e.thumb.readerTitle = e.language.translate("Use arrow keys to zoom in and out"), e.minusButton.readerTitle = e.language.translate("Press ENTER to zoom in"), e.plusButton.readerTitle = e.language.translate("Press ENTER to zoom out"), e.applyTheme(), e.events.on("propertychanged", function(t) {
|
|
"layout" == t.property && e.fixLayout()
|
|
}, void 0, !1), e._disposers.push(e._chart), e.fixLayout(), e
|
|
}
|
|
return Object(c.c)(e, t), e.prototype.fixLayout = function() {
|
|
var t = this.plusButton,
|
|
e = this.minusButton,
|
|
n = this.thumb,
|
|
i = this.slider;
|
|
t.x = void 0, t.y = void 0, e.x = void 0, e.y = void 0, n.x = void 0, n.y = void 0, i.x = void 0, i.y = void 0, t.padding(6, 10, 6, 10), e.padding(6, 10, 6, 10), e.label.align = "center", e.label.valign = "middle", t.label.align = "center", t.label.valign = "middle", "vertical" == this.layout ? (this.width = 40, this.height = void 0, e.width = Object(go.c)(100), e.height = void 0, n.width = Object(go.c)(100), n.height = void 0, t.width = Object(go.c)(100), t.height = void 0, i.width = Object(go.c)(100), e.marginTop = 1, t.marginBottom = 2, i.height = 0, e.toFront(), t.toBack(), n.minX = 0, n.maxX = 0, n.minY = 0) : "horizontal" == this.layout && (this.height = 40, this.width = void 0, e.height = Object(go.c)(100), e.width = void 0, t.height = Object(go.c)(100), t.width = void 0, n.height = Object(go.c)(100), n.width = void 0, n.minX = 0, n.minY = 0, n.maxY = 0, i.height = Object(go.c)(100), i.width = 0, e.toBack(), t.toFront())
|
|
}, e.prototype.handleBackgroundClick = function(t) {
|
|
var e = t.target,
|
|
n = t.spritePoint.y,
|
|
i = this.chart,
|
|
r = Math.log(i.maxZoomLevel) / Math.LN2,
|
|
o = Math.log(i.minZoomLevel) / Math.LN2,
|
|
a = (e.pixelHeight - n) / e.pixelHeight * (o + (r - o)),
|
|
u = Math.pow(2, a);
|
|
i.zoomToGeoPoint(i.zoomGeoPoint, u)
|
|
}, Object.defineProperty(e.prototype, "chart", {
|
|
get: function() {
|
|
return this._chart.get()
|
|
},
|
|
set: function(t) {
|
|
var e = this;
|
|
this._chart.set(t, new h.c([t.events.on("maxsizechanged", this.updateThumbSize, this, !1), t.events.on("zoomlevelchanged", this.updateThumb, this, !1), this.minusButton.events.on("hit", function() {
|
|
t.zoomOut(t.zoomGeoPoint)
|
|
}, t, !1), Object(_o.b)().body.events.on("keyup", function(n) {
|
|
e.topParent.hasFocused && (io.b.isKey(n.event, "plus") ? t.zoomIn() : io.b.isKey(n.event, "minus") && t.zoomOut())
|
|
}, t), this.plusButton.events.on("hit", function() {
|
|
t.zoomIn(t.zoomGeoPoint)
|
|
}, t, !1)]))
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.updateThumbSize = function() {
|
|
if (this.chart) {
|
|
var t = this.slider,
|
|
e = this.thumb;
|
|
"vertical" == this.layout ? (e.minHeight = Math.min(this.slider.pixelHeight, 20), e.height = t.pixelHeight / this.stepCount, e.maxY = t.pixelHeight - e.pixelHeight, e.pixelHeight <= 1 ? e.visible = !1 : e.visible = !0) : (e.minWidth = Math.min(this.slider.pixelWidth, 20), e.width = t.pixelWidth / this.stepCount, e.maxX = t.pixelWidth - e.pixelWidth, e.pixelWidth <= 1 ? e.visible = !1 : e.visible = !0)
|
|
}
|
|
}, e.prototype.updateThumb = function() {
|
|
var t = this.slider,
|
|
e = this.chart,
|
|
n = this.thumb;
|
|
if (!n.isDown) {
|
|
var i = (Math.log(e.zoomLevel) - Math.log(this.chart.minZoomLevel)) / Math.LN2;
|
|
"vertical" == this.layout ? n.y = t.pixelHeight - (t.pixelHeight - n.pixelHeight) * i / this.stepCount - n.pixelHeight : n.x = t.pixelWidth * i / this.stepCount
|
|
}
|
|
}, e.prototype.handleThumbDrag = function() {
|
|
var t, e = this.slider,
|
|
n = this.chart,
|
|
i = this.thumb;
|
|
t = Math.log(this.chart.minZoomLevel) / Math.LN2 + (t = "vertical" == this.layout ? this.stepCount * (e.pixelHeight - i.pixelY - i.pixelHeight) / (e.pixelHeight - i.pixelHeight) : this.stepCount * i.pixelX / e.pixelWidth);
|
|
var r = Math.pow(2, t);
|
|
n.zoomToGeoPoint(void 0, r, !1, 0)
|
|
}, Object.defineProperty(e.prototype, "stepCount", {
|
|
get: function() {
|
|
return Math.log(this.chart.maxZoomLevel) / Math.LN2 - Math.log(this.chart.minZoomLevel) / Math.LN2
|
|
},
|
|
enumerable: !0,
|
|
configurable: !0
|
|
}), e.prototype.createBackground = function() {
|
|
return new Go.a
|
|
}, e
|
|
}(Cr.a);
|
|
d.c.registeredClasses.ZoomControl = No;
|
|
var zo = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = tr(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.Mercator = zo;
|
|
var Vo = Math.abs,
|
|
Ao = Math.atan,
|
|
ko = Math.atan2,
|
|
Ro = (Math.ceil, Math.cos),
|
|
Fo = Math.exp,
|
|
Bo = Math.floor,
|
|
Ho = Math.log,
|
|
Wo = Math.max,
|
|
Zo = Math.min,
|
|
qo = Math.pow,
|
|
Xo = (Math.round, Math.sign || function(t) {
|
|
return t > 0 ? 1 : t < 0 ? -1 : 0
|
|
}),
|
|
Yo = Math.sin,
|
|
Uo = Math.tan,
|
|
Jo = 1e-6,
|
|
Ko = 1e-12,
|
|
Qo = Math.PI,
|
|
$o = Qo / 2,
|
|
ta = Qo / 4,
|
|
ea = Math.SQRT1_2,
|
|
na = ca(2),
|
|
ia = ca(Qo),
|
|
ra = 2 * Qo,
|
|
oa = 180 / Qo,
|
|
aa = Qo / 180;
|
|
|
|
function ua(t) {
|
|
return t > 1 ? $o : t < -1 ? -$o : Math.asin(t)
|
|
}
|
|
|
|
function sa(t) {
|
|
return t > 1 ? 0 : t < -1 ? Qo : Math.acos(t)
|
|
}
|
|
|
|
function ca(t) {
|
|
return t > 0 ? Math.sqrt(t) : 0
|
|
}
|
|
|
|
function la(t) {
|
|
return (Fo(t) - Fo(-t)) / 2
|
|
}
|
|
|
|
function ha(t) {
|
|
return (Fo(t) + Fo(-t)) / 2
|
|
}
|
|
|
|
function pa(t, e) {
|
|
var n = Ro(e),
|
|
i = function(t) {
|
|
return t ? t / Math.sin(t) : 1
|
|
}(sa(n * Ro(t /= 2)));
|
|
return [2 * n * Yo(t) * i, Yo(e) * i]
|
|
}
|
|
pa.invert = function(t, e) {
|
|
if (!(t * t + 4 * e * e > Qo * Qo + Jo)) {
|
|
var n = t,
|
|
i = e,
|
|
r = 25;
|
|
do {
|
|
var o, a = Yo(n),
|
|
u = Yo(n / 2),
|
|
s = Ro(n / 2),
|
|
c = Yo(i),
|
|
l = Ro(i),
|
|
h = Yo(2 * i),
|
|
p = c * c,
|
|
f = l * l,
|
|
d = u * u,
|
|
g = 1 - f * s * s,
|
|
v = g ? sa(l * s) * ca(o = 1 / g) : o = 0,
|
|
m = 2 * v * l * u - t,
|
|
y = v * c - e,
|
|
b = o * (f * d + v * l * s * p),
|
|
P = o * (.5 * a * h - 2 * v * c * u),
|
|
S = .25 * o * (h * u - v * c * f * a),
|
|
_ = o * (p * s + v * d * l),
|
|
M = P * S - _ * b;
|
|
if (!M) break;
|
|
var x = (y * P - m * _) / M,
|
|
j = (m * S - y * b) / M;
|
|
n -= x, i -= j
|
|
} while ((Vo(x) > Jo || Vo(j) > Jo) && --r > 0);
|
|
return [n, i]
|
|
}
|
|
};
|
|
|
|
function fa(t, e) {
|
|
var n = Uo(e / 2),
|
|
i = ca(1 - n * n),
|
|
r = 1 + i * Ro(t /= 2),
|
|
o = Yo(t) * i / r,
|
|
a = n / r,
|
|
u = o * o,
|
|
s = a * a;
|
|
return [4 / 3 * o * (3 + u - 3 * s), 4 / 3 * a * (3 + 3 * u - s)]
|
|
}
|
|
fa.invert = function(t, e) {
|
|
if (e *= 3 / 8, !(t *= 3 / 8) && Vo(e) > 1) return null;
|
|
var n = 1 + t * t + e * e,
|
|
i = ca((n - ca(n * n - 4 * e * e)) / 2),
|
|
r = ua(i) / 3,
|
|
o = i ? function(t) {
|
|
return Ho(t + ca(t * t - 1))
|
|
}(Vo(e / i)) / 3 : function(t) {
|
|
return Ho(t + ca(t * t + 1))
|
|
}(Vo(t)) / 3,
|
|
a = Ro(r),
|
|
u = ha(o),
|
|
s = u * u - a * a;
|
|
return [2 * Xo(t) * ko(la(o) * a, .25 - s), 2 * Xo(e) * ko(u * Yo(r), .25 + s)]
|
|
};
|
|
var da = ca(8),
|
|
ga = Ho(1 + na);
|
|
|
|
function va(t, e) {
|
|
var n = Vo(e);
|
|
return n < ta ? [t, Ho(Uo(ta + e / 2))] : [t * Ro(n) * (2 * na - 1 / Yo(n)), Xo(e) * (2 * na * (n - ta) - Ho(Uo(n / 2)))]
|
|
}
|
|
va.invert = function(t, e) {
|
|
if ((i = Vo(e)) < ga) return [t, 2 * Ao(Fo(e)) - $o];
|
|
var n, i, r = ta,
|
|
o = 25;
|
|
do {
|
|
var a = Ro(r / 2),
|
|
u = Uo(r / 2);
|
|
r -= n = (da * (r - ta) - Ho(u) - i) / (da - a * a / (2 * u))
|
|
} while (Vo(n) > Ko && --o > 0);
|
|
return [t / (Ro(r) * (da - 1 / Yo(r))), Xo(e) * r]
|
|
};
|
|
|
|
function ma(t, e) {
|
|
return [t * Ro(e) / Ro(e /= 2), 2 * Yo(e)]
|
|
}
|
|
ma.invert = function(t, e) {
|
|
var n = 2 * ua(e / 2);
|
|
return [t * Ro(n / 2) / Ro(n), n]
|
|
};
|
|
|
|
function ya(t, e, n) {
|
|
var i, r, o, a = 100;
|
|
n = void 0 === n ? 0 : +n, e = +e;
|
|
do {
|
|
(r = t(n)) === (o = t(n + Jo)) && (o = r + Jo), n -= i = -1 * Jo * (r - e) / (r - o)
|
|
} while (a-- > 0 && Vo(i) > Jo);
|
|
return a < 0 ? NaN : n
|
|
}
|
|
|
|
function ba(t, e) {
|
|
var n, i = t * Yo(e),
|
|
r = 30;
|
|
do {
|
|
e -= n = (e + Yo(e) - i) / (1 + Ro(e))
|
|
} while (Vo(n) > Jo && --r > 0);
|
|
return e / 2
|
|
}
|
|
|
|
function Pa(t, e, n) {
|
|
function i(i, r) {
|
|
return [t * i * Ro(r = ba(n, r)), e * Yo(r)]
|
|
}
|
|
return i.invert = function(i, r) {
|
|
return r = ua(r / e), [i / (t * Ro(r)), ua((2 * r + Yo(2 * r)) / n)]
|
|
}, i
|
|
}
|
|
var Sa = Pa(na / $o, na, Qo),
|
|
_a = 2.00276,
|
|
Ma = 1.11072;
|
|
|
|
function xa(t, e) {
|
|
var n = ba(Qo, e);
|
|
return [_a * t / (1 / Ro(e) + Ma / Ro(n)), (e + na * Yo(n)) / _a]
|
|
}
|
|
xa.invert = function(t, e) {
|
|
var n, i, r = _a * e,
|
|
o = e < 0 ? -ta : ta,
|
|
a = 25;
|
|
do {
|
|
i = r - na * Yo(o), o -= n = (Yo(2 * o) + 2 * o - Qo * Yo(i)) / (2 * Ro(2 * o) + 2 + Qo * Ro(i) * na * Ro(o))
|
|
} while (Vo(n) > Jo && --a > 0);
|
|
return i = r - na * Yo(o), [t * (1 / Ro(i) + Ma / Ro(o)) / _a, i]
|
|
};
|
|
|
|
function ja(t, e) {
|
|
return [t * Ro(e), e]
|
|
}
|
|
ja.invert = function(t, e) {
|
|
return [t / Ro(e), e]
|
|
};
|
|
Pa(1, 4 / Qo, Qo);
|
|
|
|
function wa(t, e) {
|
|
var n = ca(1 - Yo(e));
|
|
return [2 / ia * t * n, ia * (1 - n)]
|
|
}
|
|
wa.invert = function(t, e) {
|
|
var n = (n = e / ia - 1) * n;
|
|
return [n > 0 ? t * ca(Qo / n) / 2 : 0, ua(1 - n)]
|
|
};
|
|
var Oa = ca(3);
|
|
|
|
function La(t, e) {
|
|
return [Oa * t * (2 * Ro(2 * e / 3) - 1) / ia, Oa * ia * Yo(e / 3)]
|
|
}
|
|
La.invert = function(t, e) {
|
|
var n = 3 * ua(e / (Oa * ia));
|
|
return [ia * t / (Oa * (2 * Ro(2 * n / 3) - 1)), n]
|
|
};
|
|
|
|
function Ca(t) {
|
|
var e = Ro(t);
|
|
|
|
function n(t, n) {
|
|
return [t * e, Yo(n) / e]
|
|
}
|
|
return n.invert = function(t, n) {
|
|
return [t / e, ua(n * e)]
|
|
}, n
|
|
}
|
|
|
|
function Ea(t, e) {
|
|
var n = ca(8 / (3 * Qo));
|
|
return [n * t * (1 - Vo(e) / Qo), n * e]
|
|
}
|
|
Ea.invert = function(t, e) {
|
|
var n = ca(8 / (3 * Qo)),
|
|
i = e / n;
|
|
return [t / (n * (1 - Vo(i) / Qo)), i]
|
|
};
|
|
|
|
function Ia(t, e) {
|
|
var n = ca(4 - 3 * Yo(Vo(e)));
|
|
return [2 / ca(6 * Qo) * t * n, Xo(e) * ca(2 * Qo / 3) * (2 - n)]
|
|
}
|
|
Ia.invert = function(t, e) {
|
|
var n = 2 - Vo(e) / ca(2 * Qo / 3);
|
|
return [t * ca(6 * Qo) / (2 * n), Xo(e) * ua((4 - n * n) / 3)]
|
|
};
|
|
|
|
function Ta(t, e) {
|
|
var n = ca(Qo * (4 + Qo));
|
|
return [2 / n * t * (1 + ca(1 - 4 * e * e / (Qo * Qo))), 4 / n * e]
|
|
}
|
|
Ta.invert = function(t, e) {
|
|
var n = ca(Qo * (4 + Qo)) / 2;
|
|
return [t * n / (1 + ca(1 - e * e * (4 + Qo) / (4 * Qo))), e * n / 2]
|
|
};
|
|
|
|
function Da(t, e) {
|
|
var n = (2 + $o) * Yo(e);
|
|
e /= 2;
|
|
for (var i = 0, r = 1 / 0; i < 10 && Vo(r) > Jo; i++) {
|
|
var o = Ro(e);
|
|
e -= r = (e + Yo(e) * (o + 2) - n) / (2 * o * (1 + o))
|
|
}
|
|
return [2 / ca(Qo * (4 + Qo)) * t * (1 + Ro(e)), 2 * ca(Qo / (4 + Qo)) * Yo(e)]
|
|
}
|
|
Da.invert = function(t, e) {
|
|
var n = e * ca((4 + Qo) / Qo) / 2,
|
|
i = ua(n),
|
|
r = Ro(i);
|
|
return [t / (2 / ca(Qo * (4 + Qo)) * (1 + r)), ua((i + n * (r + 2)) / (2 + $o))]
|
|
};
|
|
|
|
function Ga(t, e) {
|
|
return [t * (1 + Ro(e)) / ca(2 + Qo), 2 * e / ca(2 + Qo)]
|
|
}
|
|
Ga.invert = function(t, e) {
|
|
var n = ca(2 + Qo),
|
|
i = e * n / 2;
|
|
return [n * t / (1 + Ro(i)), i]
|
|
};
|
|
|
|
function Na(t, e) {
|
|
for (var n = (1 + $o) * Yo(e), i = 0, r = 1 / 0; i < 10 && Vo(r) > Jo; i++) e -= r = (e + Yo(e) - n) / (1 + Ro(e));
|
|
return n = ca(2 + Qo), [t * (1 + Ro(e)) / n, 2 * e / n]
|
|
}
|
|
Na.invert = function(t, e) {
|
|
var n = 1 + $o,
|
|
i = ca(n / 2);
|
|
return [2 * t * i / (1 + Ro(e *= i)), ua((e + Yo(e)) / n)]
|
|
};
|
|
var za = function() {
|
|
return Ri(Na).scale(173.044)
|
|
},
|
|
Va = 3 + 2 * na;
|
|
|
|
function Aa(t, e) {
|
|
var n = Yo(t /= 2),
|
|
i = Ro(t),
|
|
r = ca(Ro(e)),
|
|
o = Ro(e /= 2),
|
|
a = Yo(e) / (o + na * i * r),
|
|
u = ca(2 / (1 + a * a)),
|
|
s = ca((na * o + (i + n) * r) / (na * o + (i - n) * r));
|
|
return [Va * (u * (s - 1 / s) - 2 * Ho(s)), Va * (u * a * (s + 1 / s) - 2 * Ao(a))]
|
|
}
|
|
Aa.invert = function(t, e) {
|
|
if (!(n = fa.invert(t / 1.2, 1.065 * e))) return null;
|
|
var n, i = n[0],
|
|
r = n[1],
|
|
o = 20;
|
|
t /= Va, e /= Va;
|
|
do {
|
|
var a = i / 2,
|
|
u = r / 2,
|
|
s = Yo(a),
|
|
c = Ro(a),
|
|
l = Yo(u),
|
|
h = Ro(u),
|
|
p = Ro(r),
|
|
f = ca(p),
|
|
d = l / (h + na * c * f),
|
|
g = d * d,
|
|
v = ca(2 / (1 + g)),
|
|
m = (na * h + (c + s) * f) / (na * h + (c - s) * f),
|
|
y = ca(m),
|
|
b = y - 1 / y,
|
|
P = y + 1 / y,
|
|
S = v * b - 2 * Ho(y) - t,
|
|
_ = v * d * P - 2 * Ao(d) - e,
|
|
M = l && ea * f * s * g / l,
|
|
x = (na * c * h + f) / (2 * (h + na * c * f) * (h + na * c * f) * f),
|
|
j = -.5 * d * v * v * v,
|
|
w = j * M,
|
|
O = j * x,
|
|
L = (L = 2 * h + na * f * (c - s)) * L * y,
|
|
C = (na * c * h * f + p) / L,
|
|
E = -na * s * l / (f * L),
|
|
I = b * w - 2 * C / y + v * (C + C / m),
|
|
T = b * O - 2 * E / y + v * (E + E / m),
|
|
D = d * P * w - 2 * M / (1 + g) + v * P * M + v * d * (C - C / m),
|
|
G = d * P * O - 2 * x / (1 + g) + v * P * x + v * d * (E - E / m),
|
|
N = T * D - G * I;
|
|
if (!N) break;
|
|
var z = (_ * T - S * G) / N,
|
|
V = (S * D - _ * I) / N;
|
|
i -= z, r = Wo(-$o, Zo($o, r - V))
|
|
} while ((Vo(z) > Jo || Vo(V) > Jo) && --o > 0);
|
|
return Vo(Vo(r) - $o) < Jo ? [0, r] : o && [i, r]
|
|
};
|
|
var ka = Ro(35 * aa);
|
|
|
|
function Ra(t, e) {
|
|
var n = Uo(e / 2);
|
|
return [t * ka * ca(1 - n * n), (1 + ka) * n]
|
|
}
|
|
Ra.invert = function(t, e) {
|
|
var n = e / (1 + ka);
|
|
return [t && t / (ka * ca(1 - n * n)), 2 * Ao(n)]
|
|
};
|
|
|
|
function Fa(t, e) {
|
|
var n = e / 2,
|
|
i = Ro(n);
|
|
return [2 * t / ia * Ro(e) * i * i, ia * Uo(n)]
|
|
}
|
|
Fa.invert = function(t, e) {
|
|
var n = Ao(e / ia),
|
|
i = Ro(n),
|
|
r = 2 * n;
|
|
return [t * ia / 2 / (Ro(r) * i * i), r]
|
|
};
|
|
var Ba = function(t, e, n, i, r, o, a, u) {
|
|
function s(s, c) {
|
|
if (!c) return [t * s / Qo, 0];
|
|
var l = c * c,
|
|
h = t + l * (e + l * (n + l * i)),
|
|
p = c * (r - 1 + l * (o - u + l * a)),
|
|
f = (h * h + p * p) / (2 * p),
|
|
d = s * ua(h / f) / Qo;
|
|
return [f * Yo(d), c * (1 + l * u) + f * (1 - Ro(d))]
|
|
}
|
|
return arguments.length < 8 && (u = 0), s.invert = function(s, c) {
|
|
var l, h, p = Qo * s / t,
|
|
f = c,
|
|
d = 50;
|
|
do {
|
|
var g = f * f,
|
|
v = t + g * (e + g * (n + g * i)),
|
|
m = f * (r - 1 + g * (o - u + g * a)),
|
|
y = v * v + m * m,
|
|
b = 2 * m,
|
|
P = y / b,
|
|
S = P * P,
|
|
_ = ua(v / P) / Qo,
|
|
M = p * _,
|
|
x = v * v,
|
|
j = (2 * e + g * (4 * n + 6 * g * i)) * f,
|
|
w = r + g * (3 * o + 5 * g * a),
|
|
O = (2 * (v * j + m * (w - 1)) * b - y * (2 * (w - 1))) / (b * b),
|
|
L = Ro(M),
|
|
C = Yo(M),
|
|
E = P * L,
|
|
I = P * C,
|
|
T = p / Qo * (1 / ca(1 - x / S)) * (j * P - v * O) / S,
|
|
D = I - s,
|
|
G = f * (1 + g * u) + P - E - c,
|
|
N = O * C + E * T,
|
|
z = E * _,
|
|
V = 1 + O - (O * L - I * T),
|
|
A = I * _,
|
|
k = N * A - V * z;
|
|
if (!k) break;
|
|
p -= l = (G * N - D * V) / k, f -= h = (D * A - G * z) / k
|
|
} while ((Vo(l) > Jo || Vo(h) > Jo) && --d > 0);
|
|
return [p, f]
|
|
}, s
|
|
};
|
|
Ba(2.8284, -1.6988, .75432, -.18071, 1.76003, -.38914, .042555), Ba(2.583819, -.835827, .170354, -.038094, 1.543313, -.411435, .082742), Ba(5 / 6 * Qo, -.62636, -.0344, 0, 1.3493, -.05524, 0, .045);
|
|
|
|
function Ha(t, e) {
|
|
var n = t * t,
|
|
i = e * e;
|
|
return [t * (1 - .162388 * i) * (.87 - 952426e-9 * n * n), e * (1 + i / 12)]
|
|
}
|
|
Ha.invert = function(t, e) {
|
|
var n, i = t,
|
|
r = e,
|
|
o = 50;
|
|
do {
|
|
var a = r * r;
|
|
r -= n = (r * (1 + a / 12) - e) / (1 + a / 4)
|
|
} while (Vo(n) > Jo && --o > 0);
|
|
o = 50, t /= 1 - .162388 * a;
|
|
do {
|
|
var u = (u = i * i) * u;
|
|
i -= n = (i * (.87 - 952426e-9 * u) - t) / (.87 - .00476213 * u)
|
|
} while (Vo(n) > Jo && --o > 0);
|
|
return [i, r]
|
|
};
|
|
Ba(2.6516, -.76534, .19123, -.047094, 1.36289, -.13965, .031762);
|
|
|
|
function Wa(t, e) {
|
|
var n = Xo(t),
|
|
i = Xo(e),
|
|
r = Ro(e),
|
|
o = Ro(t) * r,
|
|
a = Yo(t) * r,
|
|
u = Yo(i * e);
|
|
t = Vo(ko(a, u)), e = ua(o), Vo(t - $o) > Jo && (t %= $o);
|
|
var s = function(t, e) {
|
|
if (e === $o) return [0, 0];
|
|
var n, i, r = Yo(e),
|
|
o = r * r,
|
|
a = o * o,
|
|
u = 1 + a,
|
|
s = 1 + 3 * a,
|
|
c = 1 - a,
|
|
l = ua(1 / ca(u)),
|
|
h = c + o * u * l,
|
|
p = (1 - r) / h,
|
|
f = ca(p),
|
|
d = p * u,
|
|
g = ca(d),
|
|
v = f * c;
|
|
if (0 === t) return [0, -(v + o * g)];
|
|
var m, y = Ro(e),
|
|
b = 1 / y,
|
|
P = 2 * r * y,
|
|
S = (-h * y - (-3 * o + l * s) * P * (1 - r)) / (h * h),
|
|
_ = -b * P,
|
|
M = -b * (o * u * S + p * s * P),
|
|
x = -2 * b * (c * (.5 * S / f) - 2 * o * f * P),
|
|
j = 4 * t / Qo;
|
|
if (t > .222 * Qo || e < Qo / 4 && t > .175 * Qo) {
|
|
if (n = (v + o * ca(d * (1 + a) - v * v)) / (1 + a), t > Qo / 4) return [n, n];
|
|
var w = n,
|
|
O = .5 * n;
|
|
n = .5 * (O + w), i = 50;
|
|
do {
|
|
var L = ca(d - n * n),
|
|
C = n * (x + _ * L) + M * ua(n / g) - j;
|
|
if (!C) break;
|
|
C < 0 ? O = n : w = n, n = .5 * (O + w)
|
|
} while (Vo(w - O) > Jo && --i > 0)
|
|
} else {
|
|
n = Jo, i = 25;
|
|
do {
|
|
var E = n * n,
|
|
I = ca(d - E),
|
|
T = x + _ * I,
|
|
D = n * T + M * ua(n / g) - j,
|
|
G = T + (M - _ * E) / I;
|
|
n -= m = I ? D / G : 0
|
|
} while (Vo(m) > Jo && --i > 0)
|
|
}
|
|
return [n, -v - o * ca(d - n * n)]
|
|
}(t > Qo / 4 ? $o - t : t, e);
|
|
return t > Qo / 4 && (u = s[0], s[0] = -s[1], s[1] = -u), s[0] *= n, s[1] *= -i, s
|
|
}
|
|
Wa.invert = function(t, e) {
|
|
Vo(t) > 1 && (t = 2 * Xo(t) - t), Vo(e) > 1 && (e = 2 * Xo(e) - e);
|
|
var n = Xo(t),
|
|
i = Xo(e),
|
|
r = -n * t,
|
|
o = -i * e,
|
|
a = o / r < 1,
|
|
u = function(t, e) {
|
|
var n = 0,
|
|
i = 1,
|
|
r = .5,
|
|
o = 50;
|
|
for (;;) {
|
|
var a = r * r,
|
|
u = ca(r),
|
|
s = ua(1 / ca(1 + a)),
|
|
c = 1 - a + r * (1 + a) * s,
|
|
l = (1 - u) / c,
|
|
h = ca(l),
|
|
p = l * (1 + a),
|
|
f = h * (1 - a),
|
|
d = p - t * t,
|
|
g = ca(d),
|
|
v = e + f + r * g;
|
|
if (Vo(i - n) < Ko || 0 == --o || 0 === v) break;
|
|
v > 0 ? n = r : i = r, r = .5 * (n + i)
|
|
}
|
|
if (!o) return null;
|
|
var m = ua(u),
|
|
y = Ro(m),
|
|
b = 1 / y,
|
|
P = 2 * u * y,
|
|
S = (-c * y - (-3 * r + s * (1 + 3 * a)) * P * (1 - u)) / (c * c);
|
|
return [Qo / 4 * (t * (-2 * b * (.5 * S / h * (1 - a) - 2 * r * h * P) + -b * P * g) + -b * (r * (1 + a) * S + l * (1 + 3 * a) * P) * ua(t / ca(p))), m]
|
|
}(a ? o : r, a ? r : o),
|
|
s = u[0],
|
|
c = u[1],
|
|
l = Ro(c);
|
|
return a && (s = -$o - s), [n * (ko(Yo(s) * l, -Yo(c)) + Qo), i * ua(Ro(s) * l)]
|
|
};
|
|
|
|
function Za(t, e) {
|
|
var n, i, r, o, a;
|
|
if (e < Jo) return [(o = Yo(t)) - (n = e * (t - o * (i = Ro(t))) / 4) * i, i + n * o, 1 - e * o * o / 2, t - n];
|
|
if (e >= 1 - Jo) return n = (1 - e) / 4, r = 1 / (i = ha(t)), [(o = function(t) {
|
|
return ((t = Fo(2 * t)) - 1) / (t + 1)
|
|
}(t)) + n * ((a = i * la(t)) - t) / (i * i), r - n * o * r * (a - t), r + n * o * r * (a + t), 2 * Ao(Fo(t)) - $o + n * (a - t) / i];
|
|
var u = [1, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
s = [ca(e), 0, 0, 0, 0, 0, 0, 0, 0],
|
|
c = 0;
|
|
for (i = ca(1 - e), a = 1; Vo(s[c] / u[c]) > Jo && c < 8;) n = u[c++], s[c] = (n - i) / 2, u[c] = (n + i) / 2, i = ca(n * i), a *= 2;
|
|
r = a * u[c] * t;
|
|
do {
|
|
r = (ua(o = s[c] * Yo(i = r) / u[c]) + r) / 2
|
|
} while (--c);
|
|
return [Yo(r), o = Ro(r), o / Ro(r - i), r]
|
|
}
|
|
|
|
function qa(t, e) {
|
|
if (!e) return t;
|
|
if (1 === e) return Ho(Uo(t / 2 + ta));
|
|
for (var n = 1, i = ca(1 - e), r = ca(e), o = 0; Vo(r) > Jo; o++) {
|
|
if (t % Qo) {
|
|
var a = Ao(i * Uo(t) / n);
|
|
a < 0 && (a += Qo), t += a + ~~(t / Qo) * Qo
|
|
} else t += t;
|
|
r = (n + i) / 2, i = ca(n * i), r = ((n = r) - i) / 2
|
|
}
|
|
return t / (qo(2, o) * n)
|
|
}
|
|
|
|
function Xa(t, e) {
|
|
var n = (na - 1) / (na + 1),
|
|
i = ca(1 - n * n),
|
|
r = qa($o, i * i),
|
|
o = Ho(Uo(Qo / 4 + Vo(e) / 2)),
|
|
a = Fo(-1 * o) / ca(n),
|
|
u = function(t, e) {
|
|
var n = t * t,
|
|
i = e + 1,
|
|
r = 1 - n - e * e;
|
|
return [.5 * ((t >= 0 ? $o : -$o) - ko(r, 2 * t)), -.25 * Ho(r * r + 4 * n) + .5 * Ho(i * i + n)]
|
|
}(a * Ro(-1 * t), a * Yo(-1 * t)),
|
|
s = function(t, e, n) {
|
|
var i = Vo(t),
|
|
r = la(Vo(e));
|
|
if (i) {
|
|
var o = 1 / Yo(i),
|
|
a = 1 / (Uo(i) * Uo(i)),
|
|
u = -(a + n * (r * r * o * o) - 1 + n),
|
|
s = (-u + ca(u * u - (n - 1) * a * 4)) / 2;
|
|
return [qa(Ao(1 / ca(s)), n) * Xo(t), qa(Ao(ca((s / a - 1) / n)), 1 - n) * Xo(e)]
|
|
}
|
|
return [0, qa(Ao(r), 1 - n) * Xo(e)]
|
|
}(u[0], u[1], i * i);
|
|
return [-s[1], (e >= 0 ? 1 : -1) * (.5 * r - s[0])]
|
|
}
|
|
Xa.invert = function(t, e) {
|
|
var n = (na - 1) / (na + 1),
|
|
i = ca(1 - n * n),
|
|
r = function(t, e, n) {
|
|
var i, r, o;
|
|
return t ? (i = Za(t, n), e ? (o = (r = Za(e, 1 - n))[1] * r[1] + n * i[0] * i[0] * r[0] * r[0], [
|
|
[i[0] * r[2] / o, i[1] * i[2] * r[0] * r[1] / o],
|
|
[i[1] * r[1] / o, -i[0] * i[2] * r[0] * r[2] / o],
|
|
[i[2] * r[1] * r[2] / o, -n * i[0] * i[1] * r[0] / o]
|
|
]) : [
|
|
[i[0], 0],
|
|
[i[1], 0],
|
|
[i[2], 0]
|
|
]) : [
|
|
[0, (r = Za(e, 1 - n))[0] / r[1]],
|
|
[1 / r[1], 0],
|
|
[r[2] / r[1], 0]
|
|
]
|
|
}(.5 * qa($o, i * i) - e, -t, i * i),
|
|
o = function(t, e) {
|
|
var n = e[0] * e[0] + e[1] * e[1];
|
|
return [(t[0] * e[0] + t[1] * e[1]) / n, (t[1] * e[0] - t[0] * e[1]) / n]
|
|
}(r[0], r[1]);
|
|
return [ko(o[1], o[0]) / -1, 2 * Ao(Fo(-.5 * Ho(n * o[0] * o[0] + n * o[1] * o[1]))) - $o]
|
|
};
|
|
ua(1 - 1 / 3), Ca(0);
|
|
var Ya = .7109889596207567,
|
|
Ua = .0528035274542;
|
|
|
|
function Ja(t, e) {
|
|
return e > -Ya ? ((t = Sa(t, e))[1] += Ua, t) : ja(t, e)
|
|
}
|
|
Ja.invert = function(t, e) {
|
|
return e > -Ya ? Sa.invert(t, e - Ua) : ja.invert(t, e)
|
|
};
|
|
|
|
function Ka(t, e) {
|
|
return Vo(e) > Ya ? ((t = Sa(t, e))[1] -= e > 0 ? Ua : -Ua, t) : ja(t, e)
|
|
}
|
|
Ka.invert = function(t, e) {
|
|
return Vo(e) > Ya ? Sa.invert(t, e + (e > 0 ? Ua : -Ua)) : ja.invert(t, e)
|
|
};
|
|
|
|
function Qa(t, e) {
|
|
return [3 / ra * t * ca(Qo * Qo / 3 - e * e), e]
|
|
}
|
|
Qa.invert = function(t, e) {
|
|
return [ra / 3 * t / ca(Qo * Qo / 3 - e * e), e]
|
|
};
|
|
var $a = Qo / na;
|
|
|
|
function tu(t, e) {
|
|
return [t * (1 + ca(Ro(e))) / 2, e / (Ro(e / 2) * Ro(t / 6))]
|
|
}
|
|
tu.invert = function(t, e) {
|
|
var n = Vo(t),
|
|
i = Vo(e),
|
|
r = Jo,
|
|
o = $o;
|
|
i < $a ? o *= i / $a : r += 6 * sa($a / i);
|
|
for (var a = 0; a < 25; a++) {
|
|
var u = Yo(o),
|
|
s = ca(Ro(o)),
|
|
c = Yo(o / 2),
|
|
l = Ro(o / 2),
|
|
h = Yo(r / 6),
|
|
p = Ro(r / 6),
|
|
f = .5 * r * (1 + s) - n,
|
|
d = o / (l * p) - i,
|
|
g = s ? -.25 * r * u / s : 0,
|
|
v = .5 * (1 + s),
|
|
m = (1 + .5 * o * c / l) / (l * p),
|
|
y = o / l * (h / 6) / (p * p),
|
|
b = g * y - m * v,
|
|
P = (f * y - d * v) / b,
|
|
S = (d * g - f * m) / b;
|
|
if (o -= P, r -= S, Vo(P) < Jo && Vo(S) < Jo) break
|
|
}
|
|
return [t < 0 ? -r : r, e < 0 ? -o : o]
|
|
};
|
|
|
|
function eu(t, e) {
|
|
var n = t * t,
|
|
i = e * e;
|
|
return [t * (.975534 + i * (-.0143059 * n - .119161 + -.0547009 * i)), e * (1.00384 + n * (.0802894 + -.02855 * i + 199025e-9 * n) + i * (.0998909 + -.0491032 * i))]
|
|
}
|
|
eu.invert = function(t, e) {
|
|
var n = Xo(t) * Qo,
|
|
i = e / 2,
|
|
r = 50;
|
|
do {
|
|
var o = n * n,
|
|
a = i * i,
|
|
u = n * i,
|
|
s = n * (.975534 + a * (-.0143059 * o - .119161 + -.0547009 * a)) - t,
|
|
c = i * (1.00384 + o * (.0802894 + -.02855 * a + 199025e-9 * o) + a * (.0998909 + -.0491032 * a)) - e,
|
|
l = .975534 - a * (.119161 + 3 * o * .0143059 + .0547009 * a),
|
|
h = -u * (.238322 + .2188036 * a + .0286118 * o),
|
|
p = u * (.1605788 + 7961e-7 * o + -.0571 * a),
|
|
f = 1.00384 + o * (.0802894 + 199025e-9 * o) + a * (3 * (.0998909 - .02855 * o) - .245516 * a),
|
|
d = h * p - f * l,
|
|
g = (c * h - s * f) / d,
|
|
v = (s * p - c * l) / d;
|
|
n -= g, i -= v
|
|
} while ((Vo(g) > Jo || Vo(v) > Jo) && --r > 0);
|
|
return r && [n, i]
|
|
};
|
|
|
|
function nu(t, e) {
|
|
return [Yo(t) / Ro(e), Uo(e) * Ro(t)]
|
|
}
|
|
nu.invert = function(t, e) {
|
|
var n = t * t,
|
|
i = e * e + 1,
|
|
r = n + i,
|
|
o = t ? ea * ca((r - ca(r * r - 4 * n)) / n) : 1 / ca(i);
|
|
return [ua(t * o), Xo(e) * sa(o)]
|
|
};
|
|
|
|
function iu(t, e) {
|
|
return [t, 1.25 * Ho(Uo(ta + .4 * e))]
|
|
}
|
|
iu.invert = function(t, e) {
|
|
return [t, 2.5 * Ao(Fo(.8 * e)) - .625 * Qo]
|
|
};
|
|
var ru = function() {
|
|
return Ri(iu).scale(108.318)
|
|
};
|
|
var ou = ca(6),
|
|
au = ca(7);
|
|
|
|
function uu(t, e) {
|
|
var n = ua(7 * Yo(e) / (3 * ou));
|
|
return [ou * t * (2 * Ro(2 * n / 3) - 1) / au, 9 * Yo(n / 3) / au]
|
|
}
|
|
uu.invert = function(t, e) {
|
|
var n = 3 * ua(e * au / 9);
|
|
return [t * au / (ou * (2 * Ro(2 * n / 3) - 1)), ua(3 * Yo(n) * ou / 7)]
|
|
};
|
|
|
|
function su(t, e) {
|
|
for (var n, i = (1 + ea) * Yo(e), r = e, o = 0; o < 25 && (r -= n = (Yo(r / 2) + Yo(r) - i) / (.5 * Ro(r / 2) + Ro(r)), !(Vo(n) < Jo)); o++);
|
|
return [t * (1 + 2 * Ro(r) / Ro(r / 2)) / (3 * na), 2 * ca(3) * Yo(r / 2) / ca(2 + na)]
|
|
}
|
|
su.invert = function(t, e) {
|
|
var n = e * ca(2 + na) / (2 * ca(3)),
|
|
i = 2 * ua(n);
|
|
return [3 * na * t / (1 + 2 * Ro(i) / Ro(i / 2)), ua((n + Yo(i)) / (1 + ea))]
|
|
};
|
|
|
|
function cu(t, e) {
|
|
for (var n, i = ca(6 / (4 + Qo)), r = (1 + Qo / 4) * Yo(e), o = e / 2, a = 0; a < 25 && (o -= n = (o / 2 + Yo(o) - r) / (.5 + Ro(o)), !(Vo(n) < Jo)); a++);
|
|
return [i * (.5 + Ro(o)) * t / 1.5, i * o]
|
|
}
|
|
cu.invert = function(t, e) {
|
|
var n = ca(6 / (4 + Qo)),
|
|
i = e / n;
|
|
return Vo(Vo(i) - $o) < Jo && (i = i < 0 ? -$o : $o), [1.5 * t / (n * (.5 + Ro(i))), ua((i / 2 + Yo(i)) / (1 + Qo / 4))]
|
|
};
|
|
|
|
function lu(t, e) {
|
|
var n = e * e,
|
|
i = n * n,
|
|
r = n * i;
|
|
return [t * (.84719 - .13063 * n + r * r * (.05494 * n - .04515 - .02326 * i + .00331 * r)), e * (1.01183 + i * i * (.01926 * n - .02625 - .00396 * i))]
|
|
}
|
|
lu.invert = function(t, e) {
|
|
var n, i, r, o, a = e,
|
|
u = 25;
|
|
do {
|
|
a -= n = (a * (1.01183 + (r = (i = a * a) * i) * r * (.01926 * i - .02625 - .00396 * r)) - e) / (1.01183 + r * r * (.21186 * i - .23625 + -.05148 * r))
|
|
} while (Vo(n) > Ko && --u > 0);
|
|
return [t / (.84719 - .13063 * (i = a * a) + (o = i * (r = i * i)) * o * (.05494 * i - .04515 - .02326 * r + .00331 * o)), a]
|
|
};
|
|
|
|
function hu(t, e) {
|
|
return [t * (1 + Ro(e)) / 2, 2 * (e - Uo(e / 2))]
|
|
}
|
|
hu.invert = function(t, e) {
|
|
for (var n = e / 2, i = 0, r = 1 / 0; i < 10 && Vo(r) > Jo; ++i) {
|
|
var o = Ro(e / 2);
|
|
e -= r = (e - Uo(e / 2) - n) / (1 - .5 / (o * o))
|
|
}
|
|
return [2 * t / (1 + Ro(e)), e]
|
|
};
|
|
|
|
function pu(t, e) {
|
|
var n = Yo(e),
|
|
i = Ro(e),
|
|
r = Xo(t);
|
|
if (0 === t || Vo(e) === $o) return [0, e];
|
|
if (0 === e) return [t, 0];
|
|
if (Vo(t) === $o) return [t * i, $o * n];
|
|
var o = Qo / (2 * t) - 2 * t / Qo,
|
|
a = 2 * e / Qo,
|
|
u = (1 - a * a) / (n - a),
|
|
s = o * o,
|
|
c = u * u,
|
|
l = 1 + s / c,
|
|
h = 1 + c / s,
|
|
p = (o * n / u - o / 2) / l,
|
|
f = (c * n / s + u / 2) / h,
|
|
d = f * f - (c * n * n / s + u * n - 1) / h;
|
|
return [$o * (p + ca(p * p + i * i / l) * r), $o * (f + ca(d < 0 ? 0 : d) * Xo(-e * o) * r)]
|
|
}
|
|
pu.invert = function(t, e) {
|
|
var n = (t /= $o) * t,
|
|
i = n + (e /= $o) * e,
|
|
r = Qo * Qo;
|
|
return [t ? (i - 1 + ca((1 - i) * (1 - i) + 4 * n)) / (2 * t) * $o : 0, ya(function(t) {
|
|
return i * (Qo * Yo(t) - 2 * t) * Qo + 4 * t * t * (e - Yo(t)) + 2 * Qo * t - r * e
|
|
}, 0)]
|
|
};
|
|
var fu = 1.0148,
|
|
du = .23185,
|
|
gu = -.14499,
|
|
vu = .02406,
|
|
mu = fu,
|
|
yu = 5 * du,
|
|
bu = 7 * gu,
|
|
Pu = 9 * vu;
|
|
|
|
function Su(t, e) {
|
|
var n = e * e;
|
|
return [t, e * (fu + n * n * (du + n * (gu + vu * n)))]
|
|
}
|
|
Su.invert = function(t, e) {
|
|
e > 1.790857183 ? e = 1.790857183 : e < -1.790857183 && (e = -1.790857183);
|
|
var n, i = e;
|
|
do {
|
|
var r = i * i;
|
|
i -= n = (i * (fu + r * r * (du + r * (gu + vu * r))) - e) / (mu + r * r * (yu + r * (bu + Pu * r)))
|
|
} while (Vo(n) > Jo);
|
|
return [t, i]
|
|
};
|
|
|
|
function _u(t, e) {
|
|
if (Vo(e) < Jo) return [t, 0];
|
|
var n = Uo(e),
|
|
i = t * Yo(e);
|
|
return [Yo(i) / n, e + (1 - Ro(i)) / n]
|
|
}
|
|
_u.invert = function(t, e) {
|
|
if (Vo(e) < Jo) return [t, 0];
|
|
var n, i = t * t + e * e,
|
|
r = .5 * e,
|
|
o = 10;
|
|
do {
|
|
var a = Uo(r),
|
|
u = 1 / Ro(r),
|
|
s = i - 2 * e * r + r * r;
|
|
r -= n = (a * s + 2 * (r - e)) / (2 + s * u * u + 2 * (r - e) * a)
|
|
} while (Vo(n) > Jo && --o > 0);
|
|
return a = Uo(r), [(Vo(e) < Vo(r + 1 / a) ? ua(t * a) : Xo(e) * Xo(t) * (sa(Vo(t * a)) + $o)) / Yo(r), r]
|
|
};
|
|
var Mu = [
|
|
[0, 90],
|
|
[-90, 0],
|
|
[0, 0],
|
|
[90, 0],
|
|
[180, 0],
|
|
[0, -90]
|
|
],
|
|
xu = ([
|
|
[0, 2, 1],
|
|
[0, 3, 2],
|
|
[5, 1, 2],
|
|
[5, 2, 3],
|
|
[0, 1, 4],
|
|
[0, 4, 3],
|
|
[5, 4, 1],
|
|
[5, 3, 4]
|
|
].map(function(t) {
|
|
return t.map(function(t) {
|
|
return Mu[t]
|
|
})
|
|
}), 2 / ca(3));
|
|
|
|
function ju(t, e) {
|
|
var n = wa(t, e);
|
|
return [n[0] * xu, n[1]]
|
|
}
|
|
ju.invert = function(t, e) {
|
|
return wa.invert(t / xu, e)
|
|
};
|
|
var wu = [
|
|
[.9986, -.062],
|
|
[1, 0],
|
|
[.9986, .062],
|
|
[.9954, .124],
|
|
[.99, .186],
|
|
[.9822, .248],
|
|
[.973, .31],
|
|
[.96, .372],
|
|
[.9427, .434],
|
|
[.9216, .4958],
|
|
[.8962, .5571],
|
|
[.8679, .6176],
|
|
[.835, .6769],
|
|
[.7986, .7346],
|
|
[.7597, .7903],
|
|
[.7186, .8435],
|
|
[.6732, .8936],
|
|
[.6213, .9394],
|
|
[.5722, .9761],
|
|
[.5322, 1]
|
|
];
|
|
|
|
function Ou(t, e) {
|
|
var n, i = Zo(18, 36 * Vo(e) / Qo),
|
|
r = Bo(i),
|
|
o = i - r,
|
|
a = (n = wu[r])[0],
|
|
u = n[1],
|
|
s = (n = wu[++r])[0],
|
|
c = n[1],
|
|
l = (n = wu[Zo(19, ++r)])[0],
|
|
h = n[1];
|
|
return [t * (s + o * (l - a) / 2 + o * o * (l - 2 * s + a) / 2), (e > 0 ? $o : -$o) * (c + o * (h - u) / 2 + o * o * (h - 2 * c + u) / 2)]
|
|
}
|
|
wu.forEach(function(t) {
|
|
t[1] *= 1.0144
|
|
}), Ou.invert = function(t, e) {
|
|
var n = e / $o,
|
|
i = 90 * n,
|
|
r = Zo(18, Vo(i / 5)),
|
|
o = Wo(0, Bo(r));
|
|
do {
|
|
var a = wu[o][1],
|
|
u = wu[o + 1][1],
|
|
s = wu[Zo(19, o + 2)][1],
|
|
c = s - a,
|
|
l = s - 2 * u + a,
|
|
h = 2 * (Vo(n) - u) / c,
|
|
p = l / c,
|
|
f = h * (1 - p * h * (1 - 2 * p * h));
|
|
if (f >= 0 || 1 === o) {
|
|
i = (e >= 0 ? 5 : -5) * (f + r);
|
|
var d, g = 50;
|
|
do {
|
|
f = (r = Zo(18, Vo(i) / 5)) - (o = Bo(r)), a = wu[o][1], u = wu[o + 1][1], s = wu[Zo(19, o + 2)][1], i -= (d = (e >= 0 ? $o : -$o) * (u + f * (s - a) / 2 + f * f * (s - 2 * u + a) / 2) - e) * oa
|
|
} while (Vo(d) > Ko && --g > 0);
|
|
break
|
|
}
|
|
} while (--o >= 0);
|
|
var v = wu[o][0],
|
|
m = wu[o + 1][0],
|
|
y = wu[Zo(19, o + 2)][0];
|
|
return [t / (m + f * (y - v) / 2 + f * f * (y - 2 * m + v) / 2), i * aa]
|
|
};
|
|
|
|
function Lu(t, e) {
|
|
var n = Uo(e / 2),
|
|
i = Yo(ta * n);
|
|
return [t * (.74482 - .34588 * i * i), 1.70711 * n]
|
|
}
|
|
Lu.invert = function(t, e) {
|
|
var n = e / 1.70711,
|
|
i = Yo(ta * n);
|
|
return [t / (.74482 - .34588 * i * i), 2 * Ao(n)]
|
|
};
|
|
|
|
function Cu(t, e) {
|
|
if (Vo(e) < Jo) return [t, 0];
|
|
var n = Vo(e / $o),
|
|
i = ua(n);
|
|
if (Vo(t) < Jo || Vo(Vo(e) - $o) < Jo) return [0, Xo(e) * Qo * Uo(i / 2)];
|
|
var r = Ro(i),
|
|
o = Vo(Qo / t - t / Qo) / 2,
|
|
a = o * o,
|
|
u = r / (n + r - 1),
|
|
s = u * (2 / n - 1),
|
|
c = s * s,
|
|
l = c + a,
|
|
h = u - c,
|
|
p = a + u;
|
|
return [Xo(t) * Qo * (o * h + ca(a * h * h - l * (u * u - c))) / l, Xo(e) * Qo * (s * p - o * ca((a + 1) * l - p * p)) / l]
|
|
}
|
|
Cu.invert = function(t, e) {
|
|
if (Vo(e) < Jo) return [t, 0];
|
|
if (Vo(t) < Jo) return [0, $o * Yo(2 * Ao(e / Qo))];
|
|
var n = (t /= Qo) * t,
|
|
i = (e /= Qo) * e,
|
|
r = n + i,
|
|
o = r * r,
|
|
a = -Vo(e) * (1 + r),
|
|
u = a - 2 * i + n,
|
|
s = -2 * a + 1 + 2 * i + o,
|
|
c = i / s + (2 * u * u * u / (s * s * s) - 9 * a * u / (s * s)) / 27,
|
|
l = (a - u * u / (3 * s)) / s,
|
|
h = 2 * ca(-l / 3),
|
|
p = sa(3 * c / (l * h)) / 3;
|
|
return [Qo * (r - 1 + ca(1 + 2 * (n - i) + o)) / (2 * t), Xo(e) * Qo * (-h * Ro(p + Qo / 3) - u / (3 * s))]
|
|
};
|
|
|
|
function Eu(t, e) {
|
|
if (Vo(e) < Jo) return [t, 0];
|
|
var n = Vo(e / $o),
|
|
i = ua(n);
|
|
if (Vo(t) < Jo || Vo(Vo(e) - $o) < Jo) return [0, Xo(e) * Qo * Uo(i / 2)];
|
|
var r = Ro(i),
|
|
o = Vo(Qo / t - t / Qo) / 2,
|
|
a = o * o,
|
|
u = r * (ca(1 + a) - o * r) / (1 + a * n * n);
|
|
return [Xo(t) * Qo * u, Xo(e) * Qo * ca(1 - u * (2 * o + u))]
|
|
}
|
|
Eu.invert = function(t, e) {
|
|
if (!t) return [0, $o * Yo(2 * Ao(e / Qo))];
|
|
var n = Vo(t / Qo),
|
|
i = (1 - n * n - (e /= Qo) * e) / (2 * n),
|
|
r = ca(i * i + 1);
|
|
return [Xo(t) * Qo * (r - i), Xo(e) * $o * Yo(2 * ko(ca((1 - 2 * i * n) * (i + r) - n), ca(r + i + n)))]
|
|
};
|
|
|
|
function Iu(t, e) {
|
|
if (Vo(e) < Jo) return [t, 0];
|
|
var n = e / $o,
|
|
i = ua(n);
|
|
if (Vo(t) < Jo || Vo(Vo(e) - $o) < Jo) return [0, Qo * Uo(i / 2)];
|
|
var r = (Qo / t - t / Qo) / 2,
|
|
o = n / (1 + Ro(i));
|
|
return [Qo * (Xo(t) * ca(r * r + 1 - o * o) - r), Qo * o]
|
|
}
|
|
Iu.invert = function(t, e) {
|
|
if (!e) return [t, 0];
|
|
var n = e / Qo,
|
|
i = (Qo * Qo * (1 - n * n) - t * t) / (2 * Qo * t);
|
|
return [t ? Qo * (Xo(t) * ca(i * i + 1) - i) : 0, $o * Yo(2 * Ao(n))]
|
|
};
|
|
|
|
function Tu(t, e) {
|
|
if (!e) return [t, 0];
|
|
var n = Vo(e);
|
|
if (!t || n === $o) return [0, e];
|
|
var i = n / $o,
|
|
r = i * i,
|
|
o = (8 * i - r * (r + 2) - 5) / (2 * r * (i - 1)),
|
|
a = o * o,
|
|
u = i * o,
|
|
s = r + a + 2 * u,
|
|
c = i + 3 * o,
|
|
l = t / $o,
|
|
h = l + 1 / l,
|
|
p = Xo(Vo(t) - $o) * ca(h * h - 4),
|
|
f = p * p,
|
|
d = (p * (s + a - 1) + 2 * ca(s * (r + a * f - 1) + (1 - r) * (r * (c * c + 4 * a) + 12 * u * a + 4 * a * a))) / (4 * s + f);
|
|
return [Xo(t) * $o * d, Xo(e) * $o * ca(1 + p * Vo(d) - d * d)]
|
|
}
|
|
Tu.invert = function(t, e) {
|
|
var n;
|
|
if (!t || !e) return [t, e];
|
|
var i = Xo(e);
|
|
e = Vo(e) / Qo;
|
|
var r = Xo(t) * t / $o,
|
|
o = (r * r - 1 + 4 * e * e) / Vo(r),
|
|
a = o * o,
|
|
u = e * (2 - (e > .5 ? Zo(e, Vo(t)) : 0)),
|
|
s = t * t + e * e,
|
|
c = 50;
|
|
do {
|
|
var l = u * u,
|
|
h = (8 * u - l * (l + 2) - 5) / (2 * l * (u - 1)),
|
|
p = (3 * u - l * u - 10) / (2 * l * u),
|
|
f = h * h,
|
|
d = u * h,
|
|
g = u + h,
|
|
v = g * g,
|
|
m = u + 3 * h,
|
|
y = -2 * g * (4 * d * f + (1 - 4 * l + 3 * l * l) * (1 + p) + f * (14 * l - 6 - a + (8 * l - 8 - 2 * a) * p) + d * (12 * l - 8 + (10 * l - 10 - a) * p)),
|
|
b = ca(v * (l + f * a - 1) + (1 - l) * (l * (m * m + 4 * f) + f * (12 * d + 4 * f)));
|
|
u -= n = (o * (v + f - 1) + 2 * b - r * (4 * v + a)) / (o * (2 * h * p + 2 * g * (1 + p)) + y / b - 8 * g * (o * (-1 + f + v) + 2 * b) * (1 + p) / (a + 4 * v))
|
|
} while (n * s * s > Jo && --c > 0);
|
|
return [Xo(t) * (ca(o * o + 4) + o) * Qo / 4, i * $o * u]
|
|
};
|
|
var Du = 4 * Qo + 3 * ca(3),
|
|
Gu = 2 * ca(2 * Qo * ca(3) / Du);
|
|
Pa(Gu * ca(3) / Qo, Gu, Du / 6);
|
|
|
|
function Nu(t, e) {
|
|
return [t * ca(1 - 3 * e * e / (Qo * Qo)), e]
|
|
}
|
|
Nu.invert = function(t, e) {
|
|
return [t / ca(1 - 3 * e * e / (Qo * Qo)), e]
|
|
};
|
|
|
|
function zu(t, e) {
|
|
var n = Ro(e),
|
|
i = Ro(t) * n,
|
|
r = 1 - i,
|
|
o = Ro(t = ko(Yo(t) * n, -Yo(e))),
|
|
a = Yo(t);
|
|
return [a * (n = ca(1 - i * i)) - o * r, -o * n - a * r]
|
|
}
|
|
zu.invert = function(t, e) {
|
|
var n = (t * t + e * e) / -2,
|
|
i = ca(-n * (2 + n)),
|
|
r = e * n + t * i,
|
|
o = t * n - e * i,
|
|
a = ca(o * o + r * r);
|
|
return [ko(i * r, a * (1 + n)), a ? -ua(i * o / a) : 0]
|
|
};
|
|
|
|
function Vu(t, e) {
|
|
var n = pa(t, e);
|
|
return [(n[0] + t / $o) / 2, (n[1] + e) / 2]
|
|
}
|
|
Vu.invert = function(t, e) {
|
|
var n = t,
|
|
i = e,
|
|
r = 25;
|
|
do {
|
|
var o, a = Ro(i),
|
|
u = Yo(i),
|
|
s = Yo(2 * i),
|
|
c = u * u,
|
|
l = a * a,
|
|
h = Yo(n),
|
|
p = Ro(n / 2),
|
|
f = Yo(n / 2),
|
|
d = f * f,
|
|
g = 1 - l * p * p,
|
|
v = g ? sa(a * p) * ca(o = 1 / g) : o = 0,
|
|
m = .5 * (2 * v * a * f + n / $o) - t,
|
|
y = .5 * (v * u + i) - e,
|
|
b = .5 * o * (l * d + v * a * p * c) + .5 / $o,
|
|
P = o * (h * s / 4 - v * u * f),
|
|
S = .125 * o * (s * f - v * u * l * h),
|
|
_ = .5 * o * (c * p + v * d * a) + .5,
|
|
M = P * S - _ * b,
|
|
x = (y * P - m * _) / M,
|
|
j = (m * S - y * b) / M;
|
|
n -= x, i -= j
|
|
} while ((Vo(x) > Jo || Vo(j) > Jo) && --r > 0);
|
|
return [n, i]
|
|
};
|
|
var Au = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = ru(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.Miller = Au;
|
|
var ku = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = za(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.Eckert6 = ku;
|
|
var Ru = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = _r(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.Orthographic = Ru;
|
|
var Fu = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = xr(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.Stereographic = Fu;
|
|
var Bu = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = Zi(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.Albers = Bu;
|
|
var Hu = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = qi(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.AlbersUsa = Hu;
|
|
var Wu = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = Pr(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.NaturalEarth1 = Wu;
|
|
var Zu = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = Ji(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.AzimuthalEqualArea = Zu;
|
|
var qu = function(t) {
|
|
function e() {
|
|
var e = t.call(this) || this;
|
|
return e.d3Projection = gr(), e
|
|
}
|
|
return Object(c.c)(e, t), e
|
|
}(Qr);
|
|
d.c.registeredClasses.EqualEarth = qu, window.am4maps = a
|
|
},
|
|
QaCB: function(t, e, n) {
|
|
"use strict";
|
|
|
|
function i(t, e) {
|
|
for (var n = 0; n < e.length; n++) {
|
|
var i = e[n];
|
|
i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
|
|
}
|
|
}
|
|
Object.defineProperty(e, "__esModule", {
|
|
value: !0
|
|
}), n.d(e, "default", function() {
|
|
return r
|
|
});
|
|
var r = function() {
|
|
function t() {
|
|
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
|
|
n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : o;
|
|
if (function(t, e) {
|
|
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, t), this.data = e, this.length = this.data.length, this.compare = n, this.length > 0)
|
|
for (var i = (this.length >> 1) - 1; i >= 0; i--) this._down(i)
|
|
}
|
|
return function(t, e, n) {
|
|
e && i(t.prototype, e), n && i(t, n)
|
|
}(t, [{
|
|
key: "push",
|
|
value: function(t) {
|
|
this.data.push(t), this.length++, this._up(this.length - 1)
|
|
}
|
|
}, {
|
|
key: "pop",
|
|
value: function() {
|
|
if (0 !== this.length) {
|
|
var t = this.data[0],
|
|
e = this.data.pop();
|
|
return this.length--, this.length > 0 && (this.data[0] = e, this._down(0)), t
|
|
}
|
|
}
|
|
}, {
|
|
key: "peek",
|
|
value: function() {
|
|
return this.data[0]
|
|
}
|
|
}, {
|
|
key: "_up",
|
|
value: function(t) {
|
|
for (var e = this.data, n = this.compare, i = e[t]; t > 0;) {
|
|
var r = t - 1 >> 1,
|
|
o = e[r];
|
|
if (n(i, o) >= 0) break;
|
|
e[t] = o, t = r
|
|
}
|
|
e[t] = i
|
|
}
|
|
}, {
|
|
key: "_down",
|
|
value: function(t) {
|
|
for (var e = this.data, n = this.compare, i = this.length >> 1, r = e[t]; t < i;) {
|
|
var o = 1 + (t << 1),
|
|
a = e[o],
|
|
u = o + 1;
|
|
if (u < this.length && n(e[u], a) < 0 && (o = u, a = e[u]), n(a, r) >= 0) break;
|
|
e[t] = a, t = o
|
|
}
|
|
e[t] = r
|
|
}
|
|
}]), t
|
|
}();
|
|
|
|
function o(t, e) {
|
|
return t < e ? -1 : t > e ? 1 : 0
|
|
}
|
|
},
|
|
"o+vr": function(t, e, n) {
|
|
"use strict";
|
|
var i = n("QaCB");
|
|
|
|
function r(t, e, n) {
|
|
var r, u, s, c;
|
|
e = e || 1;
|
|
for (var l = 0; l < t[0].length; l++) {
|
|
var h = t[0][l];
|
|
(!l || h[0] < r) && (r = h[0]), (!l || h[1] < u) && (u = h[1]), (!l || h[0] > s) && (s = h[0]), (!l || h[1] > c) && (c = h[1])
|
|
}
|
|
var p = s - r,
|
|
f = c - u,
|
|
d = Math.min(p, f),
|
|
g = d / 2;
|
|
if (0 === d) {
|
|
var v = [r, u];
|
|
return v.distance = 0, v
|
|
}
|
|
for (var m = new i(void 0, o), y = r; y < s; y += d)
|
|
for (var b = u; b < c; b += d) m.push(new a(y + g, b + g, g, t));
|
|
var P = function(t) {
|
|
for (var e = 0, n = 0, i = 0, r = t[0], o = 0, u = r.length, s = u - 1; o < u; s = o++) {
|
|
var c = r[o],
|
|
l = r[s],
|
|
h = c[0] * l[1] - l[0] * c[1];
|
|
n += (c[0] + l[0]) * h, i += (c[1] + l[1]) * h, e += 3 * h
|
|
}
|
|
return 0 === e ? new a(r[0][0], r[0][1], 0, t) : new a(n / e, i / e, 0, t)
|
|
}(t),
|
|
S = new a(r + p / 2, u + f / 2, 0, t);
|
|
S.d > P.d && (P = S);
|
|
for (var _ = m.length; m.length;) {
|
|
var M = m.pop();
|
|
M.d > P.d && (P = M, n && console.log("found best %d after %d probes", Math.round(1e4 * M.d) / 1e4, _)), M.max - P.d <= e || (g = M.h / 2, m.push(new a(M.x - g, M.y - g, g, t)), m.push(new a(M.x + g, M.y - g, g, t)), m.push(new a(M.x - g, M.y + g, g, t)), m.push(new a(M.x + g, M.y + g, g, t)), _ += 4)
|
|
}
|
|
n && (console.log("num probes: " + _), console.log("best distance: " + P.d));
|
|
var x = [P.x, P.y];
|
|
return x.distance = P.d, x
|
|
}
|
|
|
|
function o(t, e) {
|
|
return e.max - t.max
|
|
}
|
|
|
|
function a(t, e, n, i) {
|
|
this.x = t, this.y = e, this.h = n, this.d = function(t, e, n) {
|
|
for (var i = !1, r = 1 / 0, o = 0; o < n.length; o++)
|
|
for (var a = n[o], s = 0, c = a.length, l = c - 1; s < c; l = s++) {
|
|
var h = a[s],
|
|
p = a[l];
|
|
h[1] > e != p[1] > e && t < (p[0] - h[0]) * (e - h[1]) / (p[1] - h[1]) + h[0] && (i = !i), r = Math.min(r, u(t, e, h, p))
|
|
}
|
|
return 0 === r ? 0 : (i ? 1 : -1) * Math.sqrt(r)
|
|
}(t, e, i), this.max = this.d + this.h * Math.SQRT2
|
|
}
|
|
|
|
function u(t, e, n, i) {
|
|
var r = n[0],
|
|
o = n[1],
|
|
a = i[0] - r,
|
|
u = i[1] - o;
|
|
if (0 !== a || 0 !== u) {
|
|
var s = ((t - r) * a + (e - o) * u) / (a * a + u * u);
|
|
s > 1 ? (r = i[0], o = i[1]) : s > 0 && (r += a * s, o += u * s)
|
|
}
|
|
return (a = t - r) * a + (u = e - o) * u
|
|
}
|
|
i.default && (i = i.default), t.exports = r, t.exports.default = r
|
|
}
|
|
}, ["QJ7E"]); |