osm-commerces/public/js/turf/turf.min.js

93 lines
704 KiB
JavaScript
Raw Normal View History

!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).turf = {}) }(this, (function (t) {
"use strict"; var e = 6371008.8, n = { centimeters: 637100880, centimetres: 637100880, degrees: 57.22891354143274, feet: 20902260.511392, inches: 39.37 * e, kilometers: 6371.0088, kilometres: 6371.0088, meters: e, metres: e, miles: 3958.761333810546, millimeters: 6371008800, millimetres: 6371008800, nauticalmiles: e / 1852, radians: 1, yards: 6967335.223679999 }, r = { centimeters: 100, centimetres: 100, degrees: 1 / 111325, feet: 3.28084, inches: 39.37, kilometers: .001, kilometres: .001, meters: 1, metres: 1, miles: 1 / 1609.344, millimeters: 1e3, millimetres: 1e3, nauticalmiles: 1 / 1852, radians: 1 / e, yards: 1.0936133 }, i = { acres: 247105e-9, centimeters: 1e4, centimetres: 1e4, feet: 10.763910417, hectares: 1e-4, inches: 1550.003100006, kilometers: 1e-6, kilometres: 1e-6, meters: 1, metres: 1, miles: 386e-9, millimeters: 1e6, millimetres: 1e6, yards: 1.195990046 }; function o(t, e, n) { void 0 === n && (n = {}); var r = { type: "Feature" }; return (0 === n.id || n.id) && (r.id = n.id), n.bbox && (r.bbox = n.bbox), r.properties = e || {}, r.geometry = t, r } function s(t, e, n) { switch (t) { case "Point": return a(e).geometry; case "LineString": return h(e).geometry; case "Polygon": return l(e).geometry; case "MultiPoint": return d(e).geometry; case "MultiLineString": return g(e).geometry; case "MultiPolygon": return y(e).geometry; default: throw new Error(t + " is invalid") } } function a(t, e, n) { if (void 0 === n && (n = {}), !t) throw new Error("coordinates is required"); if (!Array.isArray(t)) throw new Error("coordinates must be an Array"); if (t.length < 2) throw new Error("coordinates must be at least 2 numbers long"); if (!C(t[0]) || !C(t[1])) throw new Error("coordinates must contain numbers"); return o({ type: "Point", coordinates: t }, e, n) } function u(t, e, n) { return void 0 === n && (n = {}), f(t.map((function (t) { return a(t, e) })), n) } function l(t, e, n) { void 0 === n && (n = {}); for (var r = 0, i = t; r < i.length; r++) { var s = i[r]; if (s.length < 4) throw new Error("Each LinearRing of a Polygon must have 4 or more Positions."); for (var a = 0; a < s[s.length - 1].length; a++)if (s[s.length - 1][a] !== s[0][a]) throw new Error("First and last Position are not equivalent.") } return o({ type: "Polygon", coordinates: t }, e, n) } function c(t, e, n) { return void 0 === n && (n = {}), f(t.map((function (t) { return l(t, e) })), n) } function h(t, e, n) { if (void 0 === n && (n = {}), t.length < 2) throw new Error("coordinates must be an array of two or more positions"); return o({ type: "LineString", coordinates: t }, e, n) } function p(t, e, n) { return void 0 === n && (n = {}), f(t.map((function (t) { return h(t, e) })), n) } function f(t, e) { void 0 === e && (e = {}); var n = { type: "FeatureCollection" }; return e.id && (n.id = e.id), e.bbox && (n.bbox = e.bbox), n.features = t, n } function g(t, e, n) { return void 0 === n && (n = {}), o({ type: "MultiLineString", coordinates: t }, e, n) } function d(t, e, n) { return void 0 === n && (n = {}), o({ type: "MultiPoint", coordinates: t }, e, n) } function y(t, e, n) { return void 0 === n && (n = {}), o({ type: "MultiPolygon", coordinates: t }, e, n) } function v(t, e, n) { return void 0 === n && (n = {}), o({ type: "GeometryCollection", geometries: t }, e, n) } function _(t, e) { if (void 0 === e && (e = 0), e && !(e >= 0)) throw new Error("precision must be a positive number"); var n = Math.pow(10, e || 0); return Math.round(t * n) / n } function m(t, e) { void 0 === e && (e = "kilometers"); var r = n[e]; if (!r) throw new Error(e + " units is invalid"); return t * r } function x(t, e) { void 0 === e && (e = "kilometers"); var r = n[e]; if (!r) throw new Error(e + " units is invalid"); return t / r } function E(t, e) { return w(x(t, e)) } function b(t) { var e = t % 360; return e < 0 && (e += 360), e } function w(t) { return 180 * (t % (2 * Math.PI)) / Math.PI } function I(t) { return t % 360 * Math.PI / 180 } function N(t, e, n) { if (void 0 === e && (e = "kilometers"), void 0 === n && (n = "kilometers"), !(t >= 0)) throw new Err
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/function lt(t) { if (null == t) throw new TypeError("Object.assign cannot be called with null or undefined"); return Object(t) } var ct = function () { try { if (!Object.assign) return !1; var t = new String("abc"); if (t[5] = "de", "5" === Object.getOwnPropertyNames(t)[0]) return !1; for (var e = {}, n = 0; n < 10; n++)e["_" + String.fromCharCode(n)] = n; if ("0123456789" !== Object.getOwnPropertyNames(e).map((function (t) { return e[t] })).join("")) return !1; var r = {}; return "abcdefghijklmnopqrst".split("").forEach((function (t) { r[t] = t })), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, r)).join("") } catch (t) { return !1 } }() ? Object.assign : function (t, e) { for (var n, r, i = lt(t), o = 1; o < arguments.length; o++) { for (var s in n = Object(arguments[o])) at.call(n, s) && (i[s] = n[s]); if (st) { r = st(n); for (var a = 0; a < r.length; a++)ut.call(n, r[a]) && (i[r[a]] = n[r[a]]) } } return i }, ht = { successCallback: null, verbose: !1 }, pt = {};
/**
* @license GNU Affero General Public License.
* Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>
* v. 1.2.0
* https://github.com/RaumZeit/MarchingSquares.js
*
* MarchingSquaresJS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MarchingSquaresJS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* As additional permission under GNU Affero General Public License version 3
* section 7, third-party projects (personal or commercial) may distribute,
* include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the
* requirement that said third-party project for that reason alone becomes
* subject to any requirement of the GNU Affero General Public License version 3.
* Any modifications to MarchingSquaresJS, however, must be shared with the public
* and made available.
*
* In summary this:
* - allows you to use MarchingSquaresJS at no cost
* - allows you to use MarchingSquaresJS for both personal and commercial purposes
* - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any
* license as long as this license notice is included
* - enables you to keep the source code of your program that uses MarchingSquaresJS
* undisclosed
* - forces you to share any modifications you have made to MarchingSquaresJS,
* e.g. bug-fixes
*
* You should have received a copy of the GNU Affero General Public License
* along with MarchingSquaresJS. If not, see <http://www.gnu.org/licenses/>.
*/function ft(t, e, n) { n = n || {}; for (var r = Object.keys(ht), i = 0; i < r.length; i++) { var o = r[i], s = n[o]; s = null != s ? s : ht[o], pt[o] = s } pt.verbose && console.log("MarchingSquaresJS-isoContours: computing isocontour for " + e); var a = function (t) { var e = [], n = 0, r = 1e-7; return t.cells.forEach((function (i, o) { i.forEach((function (i, s) { if (void 0 !== i && (5 !== (f = i).cval && 10 !== f.cval) && !dt(i)) { var a = function (t, e, n) { var r, i, o = t.length, s = [], a = [0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 1, 1, -1, 0, -1, 0], u = [0, -1, 0, 0, 1, 1, 1, 1, 0, -1, 0, 0, 0, -1, 0, 0], l = ["none", "left", "bottom", "left", "right", "none", "bottom", "left", "top", "top", "none", "top", "right", "right", "bottom", "none"], c = ["none", "bottom", "right", "right", "top", "top", "top", "top", "left", "bottom", "right", "right", "left", "bottom", "left", "none"], h = t[e][n], p = h.cval, f = l[p], g = vt(h, f); s.push([n + g[0], e + g[1]]), f = c[p], g = vt(h, f), s.push([n + g[0], e + g[1]]), yt(h); var d = n + a[p], y = e + u[p], v = p; for (; d >= 0 && y >= 0 && y < o && (d != n || y != e) && void 0 !== (h = t[y][d]);) { if (0 === (p = h.cval) || 15 === p) return { path: s, info: "mergeable" }; f = c[p], r = a[p], i = u[p], 5 !== p && 10 !== p || (5 === p ? h.flipped ? -1 === u[v] ? (f = "left", r = -1, i = 0) : (f = "right", r = 1, i = 0) : -1 === a[v] && (f = "bottom", r = 0, i = -1) : 10 === p && (h.flipped ? -1 === a[v] ? (f = "top", r = 0, i = 1) : (f = "bottom", r = 0, i = -1) : 1 === u[v] && (f = "left", r = -1, i = 0))), g = vt(h, f), s.push([d + g[0], y + g[1]]), yt(h), d += r, y += i, v = p } return { path: s, info: "closed" } }(t.cells, o, s), u = !1; if ("mergeable" === a.info) for (var l = a.path[a.path.length - 1][0], c = a.path[a.path.length - 1][1], h = n - 1; h >= 0; h--)if (Math.abs(e[h][0][0] - l) <= r && Math.abs(e[h][0][1] - c) <= r) { for (var p = a.path.length - 2; p >= 0; --p)e[h].unshift(a.path[p]); u = !0; break } u || (e[n++] = a.path) } var f })) })), e }(function (t, e) { for (var n = t.length - 1, r = t[0].length - 1, i = { rows: n, cols: r, cells: [] }, o = 0; o < n; ++o) { i.cells[o] = []; for (var s = 0; s < r; ++s) { var a = 0, u = t[o + 1][s], l = t[o + 1][s + 1], c = t[o][s + 1], h = t[o][s]; if (!(isNaN(u) || isNaN(l) || isNaN(c) || isNaN(h))) { a |= u >= e ? 8 : 0, a |= l >= e ? 4 : 0, a |= c >= e ? 2 : 0; var p, f, g, d, y = !1; if (5 === (a |= h >= e ? 1 : 0) || 10 === a) { var v = (u + l + c + h) / 4; 5 === a && v < e ? (a = 10, y = !0) : 10 === a && v < e && (a = 5, y = !0) } if (0 !== a && 15 !== a) p = f = g = d = .5, 1 === a ? (g = 1 - gt(e, u, h), f = 1 - gt(e, c, h)) : 2 === a ? (f = gt(e, h, c), d = 1 - gt(e, l, c)) : 3 === a ? (g = 1 - gt(e, u, h), d = 1 - gt(e, l, c)) : 4 === a ? (p = gt(e, u, l), d = gt(e, c, l)) : 5 === a ? (p = gt(e, u, l), d = gt(e, c, l), f = 1 - gt(e, c, h), g = 1 - gt(e, u, h)) : 6 === a ? (f = gt(e, h, c), p = gt(e, u, l)) : 7 === a ? (g = 1 - gt(e, u, h), p = gt(e, u, l)) : 8 === a ? (g = gt(e, h, u), p = 1 - gt(e, l, u)) : 9 === a ? (f = 1 - gt(e, c, h), p = 1 - gt(e, l, u)) : 10 === a ? (p = 1 - gt(e, l, u), d = 1 - gt(e, l, c), f = gt(e, h, c), g = gt(e, h, u)) : 11 === a ? (p = 1 - gt(e, l, u), d = 1 - gt(e, l, c)) : 12 === a ? (g = gt(e, h, u), d = gt(e, c, l)) : 13 === a ? (f = 1 - gt(e, c, h), d = gt(e, c, l)) : 14 === a ? (g = gt(e, h, u), f = gt(e, h, c)) : console.log("MarchingSquaresJS-isoContours: Illegal cval detected: " + a), i.cells[o][s] = { cval: a, flipped: y, top: p, right: d, bottom: f, left: g } } } } return i }(t, e)); return "function" == typeof pt.successCallback && pt.successCallback(a), a } function gt(t, e, n) { return (t - e) / (n - e) } function dt(t) { return 0 === t.cval || 15 === t.cval } function yt(t) { dt(t) || 5 === t.cval || 10 === t.cval || (t.cval = 15) } function vt(t, e) { return "top" === e ? [t.top, 1] : "bottom" === e ? [t.bottom, 0] : "right" === e ? [1, t.right] : "left" === e ? [0, t.left] : void 0 } function _t(t, e) { if (!P(e = e || {})) throw new Error("options is
if (!P(e = e || {})) throw new Error("options is invalid"); var n = e.zProperty || "elevation", r = e.flip, i = e.flags; nt(t, "Point", "input must contain Points"); for (var o = function (t, e) { var n = {}; return F(t, (function (t) { var e = Q(t)[1]; n[e] || (n[e] = []), n[e].push(t) })), Object.keys(n).map((function (t) { return n[t].sort((function (t, e) { return Q(t)[0] - Q(e)[0] })) })).sort((function (t, n) { return e ? Q(t[0])[1] - Q(n[0])[1] : Q(n[0])[1] - Q(t[0])[1] })) }
/*!
* @license GNU Affero General Public License.
* Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>
* v. 1.2.0
* https://github.com/RaumZeit/MarchingSquares.js
*
* MarchingSquaresJS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* MarchingSquaresJS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* As additional permission under GNU Affero General Public License version 3
* section 7, third-party projects (personal or commercial) may distribute,
* include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the
* requirement that said third-party project for that reason alone becomes
* subject to any requirement of the GNU Affero General Public License version 3.
* Any modifications to MarchingSquaresJS, however, must be shared with the public
* and made available.
*
* In summary this:
* - allows you to use MarchingSquaresJS at no cost
* - allows you to use MarchingSquaresJS for both personal and commercial purposes
* - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any
* license as long as this license notice is included
* - enables you to keep the source code of your program that uses MarchingSquaresJS
* undisclosed
* - forces you to share any modifications you have made to MarchingSquaresJS,
* e.g. bug-fixes
*
* You should have received a copy of the GNU Affero General Public License
* along with MarchingSquaresJS. If not, see <http://www.gnu.org/licenses/>.
*/(t, r), s = [], a = 0; a < o.length; a++) { for (var u = o[a], l = [], c = 0; c < u.length; c++) { var h = u[c]; h.properties[n] ? l.push(h.properties[n]) : l.push(0), !0 === i && (h.properties.matrixPosition = [a, c]) } s.push(l) } return s
} var Ki = { successCallback: null, verbose: !1, polygons: !1 }, Qi = {}; function $i(t, e, n, r) { r = r || {}; for (var i = Object.keys(Ki), o = 0; o < i.length; o++) { var s = i[o], a = r[s]; a = null != a ? a : Ki[s], Qi[s] = a } Qi.verbose && console.log("MarchingSquaresJS-isoBands: computing isobands for [" + e + ":" + (e + n) + "]"); var u, l = function (t, e, n) { for (var r = t.length - 1, i = t[0].length - 1, o = { rows: r, cols: i, cells: [] }, s = e + Math.abs(n), a = 0; a < r; ++a) { o.cells[a] = []; for (var u = 0; u < i; ++u) { var l = 0, c = t[a + 1][u], h = t[a + 1][u + 1], p = t[a][u + 1], f = t[a][u]; if (!(isNaN(c) || isNaN(h) || isNaN(p) || isNaN(f))) { l |= c < e ? 0 : c > s ? 128 : 64, l |= h < e ? 0 : h > s ? 32 : 16, l |= p < e ? 0 : p > s ? 8 : 4; var g = +(l |= f < e ? 0 : f > s ? 2 : 1), d = 0; if (17 === l || 18 === l || 33 === l || 34 === l || 38 === l || 68 === l || 72 === l || 98 === l || 102 === l || 132 === l || 136 === l || 137 === l || 152 === l || 153 === l) { var y = (c + h + p + f) / 4; d = y > s ? 2 : y < e ? 0 : 1, 34 === l ? 1 === d ? l = 35 : 0 === d && (l = 136) : 136 === l ? 1 === d ? (l = 35, d = 4) : 0 === d && (l = 34) : 17 === l ? 1 === d ? (l = 155, d = 4) : 0 === d && (l = 153) : 68 === l ? 1 === d ? (l = 103, d = 4) : 0 === d && (l = 102) : 153 === l ? 1 === d && (l = 155) : 102 === l ? 1 === d && (l = 103) : 152 === l ? d < 2 && (l = 156, d = 1) : 137 === l ? d < 2 && (l = 139, d = 1) : 98 === l ? d < 2 && (l = 99, d = 1) : 38 === l ? d < 2 && (l = 39, d = 1) : 18 === l ? d > 0 ? (l = 156, d = 4) : l = 152 : 33 === l ? d > 0 ? (l = 139, d = 4) : l = 137 : 72 === l ? d > 0 ? (l = 99, d = 4) : l = 98 : 132 === l && (d > 0 ? (l = 39, d = 4) : l = 38) } if (0 != l && 170 != l) { var v, _, m, x, E, b, w, I; v = _ = m = x = E = b = w = I = .5; var N = []; 1 === l ? (m = 1 - Vo(e, p, f), I = 1 - Vo(e, c, f), N.push(Go[l])) : 169 === l ? (m = Vo(s, f, p), I = Vo(s, f, c), N.push(Go[l])) : 4 === l ? (b = 1 - Vo(e, h, p), x = Vo(e, f, p), N.push(Fo[l])) : 166 === l ? (b = Vo(s, p, h), x = 1 - Vo(s, p, f), N.push(Fo[l])) : 16 === l ? (E = Vo(e, p, h), _ = Vo(e, c, h), N.push(Do[l])) : 154 === l ? (E = 1 - Vo(s, h, p), _ = 1 - Vo(s, h, c), N.push(Do[l])) : 64 === l ? (w = Vo(e, f, c), v = 1 - Vo(e, h, c), N.push(Bo[l])) : 106 === l ? (w = 1 - Vo(s, c, f), v = Vo(s, c, h), N.push(Bo[l])) : 168 === l ? (x = Vo(s, f, p), m = Vo(e, f, p), I = Vo(e, f, c), w = Vo(s, f, c), N.push(ko[l]), N.push(Go[l])) : 2 === l ? (x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), N.push(ko[l]), N.push(Go[l])) : 162 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), x = 1 - Vo(e, p, f), m = 1 - Vo(s, p, f), N.push(ko[l]), N.push(Go[l])) : 8 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), x = Vo(s, f, p), m = Vo(e, f, p), N.push(Do[l]), N.push(Fo[l])) : 138 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c), N.push(Do[l]), N.push(Fo[l])) : 32 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), v = Vo(e, c, h), _ = Vo(s, c, h), N.push(Do[l]), N.push(Fo[l])) : 42 === l ? (I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), v = Vo(e, c, h), _ = Vo(s, c, h), N.push(qo[l]), N.push(Bo[l])) : 128 === l && (I = Vo(e, f, c), w = Vo(s, f, c), v = 1 - Vo(s, h, c), _ = 1 - Vo(e, h, c), N.push(qo[l]), N.push(Bo[l])), 5 === l ? (b = 1 - Vo(e, h, p), I = 1 - Vo(e, c, f), N.push(Fo[l])) : 165 === l ? (b = Vo(s, p, h), I = Vo(s, f, c), N.push(Fo[l])) : 20 === l ? (x = Vo(e, f, p), _ = Vo(e, c, h), N.push(ko[l])) : 150 === l ? (x = 1 - Vo(s, p, f), _ = 1 - Vo(s, h, c), N.push(ko[l])) : 80 === l ? (E = Vo(e, p, h), w = Vo(e, f, c), N.push(Do[l])) : 90 === l ? (E = 1 - Vo(s, h, p), w = 1 - Vo(s, c, f), N.push(Do[l])) : 65 === l ? (m = 1 - Vo(e, p, f), v = 1 - Vo(e, h, c), N.push(Go[l])) : 105 === l ? (m = Vo(s, f, p), v = Vo(s, c, h), N.push(Go[l])) : 160 === l ? (E = Vo(s, p, h), b = Vo(e, p, h), I = Vo(e, f, c), w = Vo(s, f, c), N.push(Do[l]), N.push(Fo[l])) : 10 === l ? (E = 1 - Vo(e, h, p), b = 1 - Vo(s, h, p), I = 1 - Vo(s, c, f), w = 1 - Vo(e, c, f), N.push(Do[l])
/**
* splaytree v3.1.0
* Fast Splay tree for Node and browser
*
* @author Alexander Milevski <info@w8r.name>
* @license MIT
* @preserve
*/function fu(t, e) { return t > e ? 1 : t < e ? -1 : 0 } function gu(t, e, n) { for (var r = new pu(null, null), i = r, o = r; ;) { var s = n(t, e.key); if (s < 0) { if (null === e.left) break; if (n(t, e.left.key) < 0) { var a = e.left; if (e.left = a.right, a.right = e, null === (e = a).left) break } o.left = e, o = e, e = e.left } else { if (!(s > 0)) break; if (null === e.right) break; if (n(t, e.right.key) > 0) { a = e.right; if (e.right = a.left, a.left = e, null === (e = a).right) break } i.right = e, i = e, e = e.right } } return i.right = e.left, o.left = e.right, e.left = r.right, e.right = r.left, e } function du(t, e, n, r) { var i = new pu(t, e); if (null === n) return i.left = i.right = null, i; var o = r(t, (n = gu(t, n, r)).key); return o < 0 ? (i.left = n.left, i.right = n, n.left = null) : o >= 0 && (i.right = n.right, i.left = n, n.right = null), i } function yu(t, e, n) { var r = null, i = null; if (e) { var o = n((e = gu(t, e, n)).key, t); 0 === o ? (r = e.left, i = e.right) : o < 0 ? (i = e.right, e.right = null, r = e) : (r = e.left, e.left = null, i = e) } return { left: r, right: i } } function vu(t, e, n, r, i) { if (t) { r(e + (n ? " " : " ") + i(t) + "\n"); var o = e + (n ? " " : " "); t.left && vu(t.left, o, !1, r, i), t.right && vu(t.right, o, !0, r, i) } } var _u = function () { function t(t) { void 0 === t && (t = fu), this._root = null, this._size = 0, this._comparator = t } return t.prototype.insert = function (t, e) { return this._size++, this._root = du(t, e, this._root, this._comparator) }, t.prototype.add = function (t, e) { var n = new pu(t, e); null === this._root && (n.left = n.right = null, this._size++, this._root = n); var r = this._comparator, i = gu(t, this._root, r), o = r(t, i.key); return 0 === o ? this._root = i : (o < 0 ? (n.left = i.left, n.right = i, i.left = null) : o > 0 && (n.right = i.right, n.left = i, i.right = null), this._size++, this._root = n), this._root }, t.prototype.remove = function (t) { this._root = this._remove(t, this._root, this._comparator) }, t.prototype._remove = function (t, e, n) { var r; return null === e ? null : 0 === n(t, (e = gu(t, e, n)).key) ? (null === e.left ? r = e.right : (r = gu(t, e.left, n)).right = e.right, this._size--, r) : e }, t.prototype.pop = function () { var t = this._root; if (t) { for (; t.left;)t = t.left; return this._root = gu(t.key, this._root, this._comparator), this._root = this._remove(t.key, this._root, this._comparator), { key: t.key, data: t.data } } return null }, t.prototype.findStatic = function (t) { for (var e = this._root, n = this._comparator; e;) { var r = n(t, e.key); if (0 === r) return e; e = r < 0 ? e.left : e.right } return null }, t.prototype.find = function (t) { return this._root && (this._root = gu(t, this._root, this._comparator), 0 !== this._comparator(t, this._root.key)) ? null : this._root }, t.prototype.contains = function (t) { for (var e = this._root, n = this._comparator; e;) { var r = n(t, e.key); if (0 === r) return !0; e = r < 0 ? e.left : e.right } return !1 }, t.prototype.forEach = function (t, e) { for (var n = this._root, r = [], i = !1; !i;)null !== n ? (r.push(n), n = n.left) : 0 !== r.length ? (n = r.pop(), t.call(e, n), n = n.right) : i = !0; return this }, t.prototype.range = function (t, e, n, r) { for (var i = [], o = this._comparator, s = this._root; 0 !== i.length || s;)if (s) i.push(s), s = s.left; else { if (o((s = i.pop()).key, e) > 0) break; if (o(s.key, t) >= 0 && n.call(r, s)) return this; s = s.right } return this }, t.prototype.keys = function () { var t = []; return this.forEach((function (e) { var n = e.key; return t.push(n) })), t }, t.prototype.values = function () { var t = []; return this.forEach((function (e) { var n = e.data; return t.push(n) })), t }, t.prototype.min = function () { return this._root ? this.minNode(this._root).key : null }, t.prototype.max = function () { return this._root ? this.maxNode(this._root).key : null }, t.prototype.minNode = function (t) { if (void 0 === t && (t = this._root), t) for (; t.left;
}));