mobility-toolbox-js
Version:
Toolbox for JavaScript applications in the domains of mobility and logistics.
500 lines (499 loc) • 4.1 MB
JavaScript
"use strict";
(() => {
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __esm = (fn, res) => function __init() {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
};
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all3) => {
for (var name in all3)
__defProp(target, name, { get: all3[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
// node_modules/maplibre-gl/dist/maplibre-gl.js
var require_maplibre_gl = __commonJS({
"node_modules/maplibre-gl/dist/maplibre-gl.js"(exports, module) {
(function(global2, factory) {
typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.maplibregl = factory());
})(exports, function() {
"use strict";
var maplibregl2 = {};
var modules = {};
function define2(moduleName, _dependencies, moduleFactory) {
modules[moduleName] = moduleFactory;
if (moduleName !== "index") {
return;
}
var workerBundleString = "var sharedModule = {}; (" + modules.shared + ")(sharedModule); (" + modules.worker + ")(sharedModule);";
var sharedModule = {};
modules.shared(sharedModule);
modules.index(maplibregl2, sharedModule);
if (typeof window !== "undefined") {
maplibregl2.setWorkerUrl(window.URL.createObjectURL(new Blob([workerBundleString], { type: "text/javascript" })));
}
return maplibregl2;
}
;
define2("shared", ["exports"], function(t) {
"use strict";
function e(t2, e2, r2, n2) {
return new (r2 || (r2 = Promise))(function(i2, s2) {
function a3(t3) {
try {
l2(n2.next(t3));
} catch (t4) {
s2(t4);
}
}
function o2(t3) {
try {
l2(n2.throw(t3));
} catch (t4) {
s2(t4);
}
}
function l2(t3) {
var e3;
t3.done ? i2(t3.value) : (e3 = t3.value, e3 instanceof r2 ? e3 : new r2(function(t4) {
t4(e3);
})).then(a3, o2);
}
l2((n2 = n2.apply(t2, e2 || [])).next());
});
}
function r(t2) {
return t2 && t2.__esModule && Object.prototype.hasOwnProperty.call(t2, "default") ? t2.default : t2;
}
var n, i;
function s() {
if (i) return n;
function t2(t3, e2) {
this.x = t3, this.y = e2;
}
return i = 1, n = t2, t2.prototype = { clone: function() {
return new t2(this.x, this.y);
}, add: function(t3) {
return this.clone()._add(t3);
}, sub: function(t3) {
return this.clone()._sub(t3);
}, multByPoint: function(t3) {
return this.clone()._multByPoint(t3);
}, divByPoint: function(t3) {
return this.clone()._divByPoint(t3);
}, mult: function(t3) {
return this.clone()._mult(t3);
}, div: function(t3) {
return this.clone()._div(t3);
}, rotate: function(t3) {
return this.clone()._rotate(t3);
}, rotateAround: function(t3, e2) {
return this.clone()._rotateAround(t3, e2);
}, matMult: function(t3) {
return this.clone()._matMult(t3);
}, unit: function() {
return this.clone()._unit();
}, perp: function() {
return this.clone()._perp();
}, round: function() {
return this.clone()._round();
}, mag: function() {
return Math.sqrt(this.x * this.x + this.y * this.y);
}, equals: function(t3) {
return this.x === t3.x && this.y === t3.y;
}, dist: function(t3) {
return Math.sqrt(this.distSqr(t3));
}, distSqr: function(t3) {
var e2 = t3.x - this.x, r2 = t3.y - this.y;
return e2 * e2 + r2 * r2;
}, angle: function() {
return Math.atan2(this.y, this.x);
}, angleTo: function(t3) {
return Math.atan2(this.y - t3.y, this.x - t3.x);
}, angleWith: function(t3) {
return this.angleWithSep(t3.x, t3.y);
}, angleWithSep: function(t3, e2) {
return Math.atan2(this.x * e2 - this.y * t3, this.x * t3 + this.y * e2);
}, _matMult: function(t3) {
var e2 = t3[2] * this.x + t3[3] * this.y;
return this.x = t3[0] * this.x + t3[1] * this.y, this.y = e2, this;
}, _add: function(t3) {
return this.x += t3.x, this.y += t3.y, this;
}, _sub: function(t3) {
return this.x -= t3.x, this.y -= t3.y, this;
}, _mult: function(t3) {
return this.x *= t3, this.y *= t3, this;
}, _div: function(t3) {
return this.x /= t3, this.y /= t3, this;
}, _multByPoint: function(t3) {
return this.x *= t3.x, this.y *= t3.y, this;
}, _divByPoint: function(t3) {
return this.x /= t3.x, this.y /= t3.y, this;
}, _unit: function() {
return this._div(this.mag()), this;
}, _perp: function() {
var t3 = this.y;
return this.y = this.x, this.x = -t3, this;
}, _rotate: function(t3) {
var e2 = Math.cos(t3), r2 = Math.sin(t3), n2 = r2 * this.x + e2 * this.y;
return this.x = e2 * this.x - r2 * this.y, this.y = n2, this;
}, _rotateAround: function(t3, e2) {
var r2 = Math.cos(t3), n2 = Math.sin(t3), i2 = e2.y + n2 * (this.x - e2.x) + r2 * (this.y - e2.y);
return this.x = e2.x + r2 * (this.x - e2.x) - n2 * (this.y - e2.y), this.y = i2, this;
}, _round: function() {
return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
} }, t2.convert = function(e2) {
return e2 instanceof t2 ? e2 : Array.isArray(e2) ? new t2(e2[0], e2[1]) : e2;
}, n;
}
"function" == typeof SuppressedError && SuppressedError;
var a, o, l = r(s()), u = function() {
if (o) return a;
function t2(t3, e2, r2, n2) {
this.cx = 3 * t3, this.bx = 3 * (r2 - t3) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * e2, this.by = 3 * (n2 - e2) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = t3, this.p1y = e2, this.p2x = r2, this.p2y = n2;
}
return o = 1, a = t2, t2.prototype = { sampleCurveX: function(t3) {
return ((this.ax * t3 + this.bx) * t3 + this.cx) * t3;
}, sampleCurveY: function(t3) {
return ((this.ay * t3 + this.by) * t3 + this.cy) * t3;
}, sampleCurveDerivativeX: function(t3) {
return (3 * this.ax * t3 + 2 * this.bx) * t3 + this.cx;
}, solveCurveX: function(t3, e2) {
if (void 0 === e2 && (e2 = 1e-6), t3 < 0) return 0;
if (t3 > 1) return 1;
for (var r2 = t3, n2 = 0; n2 < 8; n2++) {
var i2 = this.sampleCurveX(r2) - t3;
if (Math.abs(i2) < e2) return r2;
var s2 = this.sampleCurveDerivativeX(r2);
if (Math.abs(s2) < 1e-6) break;
r2 -= i2 / s2;
}
var a3 = 0, o2 = 1;
for (r2 = t3, n2 = 0; n2 < 20 && (i2 = this.sampleCurveX(r2), !(Math.abs(i2 - t3) < e2)); n2++) t3 > i2 ? a3 = r2 : o2 = r2, r2 = 0.5 * (o2 - a3) + a3;
return r2;
}, solve: function(t3, e2) {
return this.sampleCurveY(this.solveCurveX(t3, e2));
} }, a;
}(), c = r(u);
let h, p;
function f() {
return null == h && (h = "undefined" != typeof OffscreenCanvas && new OffscreenCanvas(1, 1).getContext("2d") && "function" == typeof createImageBitmap), h;
}
function d() {
if (null == p && (p = false, f())) {
const t2 = 5, e2 = new OffscreenCanvas(t2, t2).getContext("2d", { willReadFrequently: true });
if (e2) {
for (let r3 = 0; r3 < t2 * t2; r3++) {
const n2 = 4 * r3;
e2.fillStyle = `rgb(${n2},${n2 + 1},${n2 + 2})`, e2.fillRect(r3 % t2, Math.floor(r3 / t2), 1, 1);
}
const r2 = e2.getImageData(0, 0, t2, t2).data;
for (let e3 = 0; e3 < t2 * t2 * 4; e3++) if (e3 % 4 != 3 && r2[e3] !== e3) {
p = true;
break;
}
}
}
return p || false;
}
var y = 1e-6, m = "undefined" != typeof Float32Array ? Float32Array : Array;
function g() {
var t2 = new m(9);
return m != Float32Array && (t2[1] = 0, t2[2] = 0, t2[3] = 0, t2[5] = 0, t2[6] = 0, t2[7] = 0), t2[0] = 1, t2[4] = 1, t2[8] = 1, t2;
}
function x(t2) {
return t2[0] = 1, t2[1] = 0, t2[2] = 0, t2[3] = 0, t2[4] = 0, t2[5] = 1, t2[6] = 0, t2[7] = 0, t2[8] = 0, t2[9] = 0, t2[10] = 1, t2[11] = 0, t2[12] = 0, t2[13] = 0, t2[14] = 0, t2[15] = 1, t2;
}
function v() {
var t2 = new m(3);
return m != Float32Array && (t2[0] = 0, t2[1] = 0, t2[2] = 0), t2;
}
function b(t2) {
return Math.hypot(t2[0], t2[1], t2[2]);
}
function w(t2, e2, r2) {
var n2 = new m(3);
return n2[0] = t2, n2[1] = e2, n2[2] = r2, n2;
}
function _(t2, e2, r2) {
return t2[0] = e2[0] + r2[0], t2[1] = e2[1] + r2[1], t2[2] = e2[2] + r2[2], t2;
}
function S(t2, e2, r2) {
return t2[0] = e2[0] * r2, t2[1] = e2[1] * r2, t2[2] = e2[2] * r2, t2;
}
function A(t2, e2, r2) {
var n2 = e2[0], i2 = e2[1], s2 = e2[2], a3 = r2[0], o2 = r2[1], l2 = r2[2];
return t2[0] = i2 * l2 - s2 * o2, t2[1] = s2 * a3 - n2 * l2, t2[2] = n2 * o2 - i2 * a3, t2;
}
Math.hypot || (Math.hypot = function() {
for (var t2 = 0, e2 = arguments.length; e2--; ) t2 += arguments[e2] * arguments[e2];
return Math.sqrt(t2);
});
var k, M = b;
function I(t2, e2, r2) {
var n2 = e2[0], i2 = e2[1], s2 = e2[2], a3 = e2[3];
return t2[0] = r2[0] * n2 + r2[4] * i2 + r2[8] * s2 + r2[12] * a3, t2[1] = r2[1] * n2 + r2[5] * i2 + r2[9] * s2 + r2[13] * a3, t2[2] = r2[2] * n2 + r2[6] * i2 + r2[10] * s2 + r2[14] * a3, t2[3] = r2[3] * n2 + r2[7] * i2 + r2[11] * s2 + r2[15] * a3, t2;
}
function z() {
var t2 = new m(4);
return m != Float32Array && (t2[0] = 0, t2[1] = 0, t2[2] = 0), t2[3] = 1, t2;
}
function P(t2, e2, r2, n2) {
var i2 = 0.5 * Math.PI / 180;
e2 *= i2, r2 *= i2, n2 *= i2;
var s2 = Math.sin(e2), a3 = Math.cos(e2), o2 = Math.sin(r2), l2 = Math.cos(r2), u2 = Math.sin(n2), c2 = Math.cos(n2);
return t2[0] = s2 * l2 * c2 - a3 * o2 * u2, t2[1] = a3 * o2 * c2 + s2 * l2 * u2, t2[2] = a3 * l2 * u2 - s2 * o2 * c2, t2[3] = a3 * l2 * c2 + s2 * o2 * u2, t2;
}
function C() {
var t2 = new m(2);
return m != Float32Array && (t2[0] = 0, t2[1] = 0), t2;
}
function B(t2, e2) {
var r2 = new m(2);
return r2[0] = t2, r2[1] = e2, r2;
}
v(), k = new m(4), m != Float32Array && (k[0] = 0, k[1] = 0, k[2] = 0, k[3] = 0), v(), w(1, 0, 0), w(0, 1, 0), z(), z(), g(), C();
const E4 = 8192;
function T(t2, e2, r2) {
return e2 * (E4 / (t2.tileSize * Math.pow(2, r2 - t2.tileID.overscaledZ)));
}
function V(t2, e2) {
return (t2 % e2 + e2) % e2;
}
function F(t2, e2, r2) {
return t2 * (1 - r2) + e2 * r2;
}
function L(t2) {
if (t2 <= 0) return 0;
if (t2 >= 1) return 1;
const e2 = t2 * t2, r2 = e2 * t2;
return 4 * (t2 < 0.5 ? r2 : 3 * (t2 - e2) + r2 - 0.75);
}
function $(t2, e2, r2, n2) {
const i2 = new c(t2, e2, r2, n2);
return (t3) => i2.solve(t3);
}
const D = $(0.25, 0.1, 0.25, 1);
function O(t2, e2, r2) {
return Math.min(r2, Math.max(e2, t2));
}
function R2(t2, e2, r2) {
const n2 = r2 - e2, i2 = ((t2 - e2) % n2 + n2) % n2 + e2;
return i2 === e2 ? r2 : i2;
}
function j(t2, ...e2) {
for (const r2 of e2) for (const e3 in r2) t2[e3] = r2[e3];
return t2;
}
let N = 1;
function U(t2, e2, r2) {
const n2 = {};
for (const r3 in t2) n2[r3] = e2.call(this, t2[r3], r3, t2);
return n2;
}
function q(t2, e2, r2) {
const n2 = {};
for (const r3 in t2) e2.call(this, t2[r3], r3, t2) && (n2[r3] = t2[r3]);
return n2;
}
function G(t2) {
return Array.isArray(t2) ? t2.map(G) : "object" == typeof t2 && t2 ? U(t2, G) : t2;
}
const X = {};
function Z(t2) {
X[t2] || ("undefined" != typeof console && console.warn(t2), X[t2] = true);
}
function Y(t2, e2, r2) {
return (r2.y - t2.y) * (e2.x - t2.x) > (e2.y - t2.y) * (r2.x - t2.x);
}
function H(t2) {
return "undefined" != typeof WorkerGlobalScope && void 0 !== t2 && t2 instanceof WorkerGlobalScope;
}
let K = null;
function J(t2) {
return "undefined" != typeof ImageBitmap && t2 instanceof ImageBitmap;
}
const W = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";
function Q(t2, r2, n2, i2, s2) {
return e(this, void 0, void 0, function* () {
if ("undefined" == typeof VideoFrame) throw new Error("VideoFrame not supported");
const e2 = new VideoFrame(t2, { timestamp: 0 });
try {
const a3 = null == e2 ? void 0 : e2.format;
if (!a3 || !a3.startsWith("BGR") && !a3.startsWith("RGB")) throw new Error(`Unrecognized format ${a3}`);
const o2 = a3.startsWith("BGR"), l2 = new Uint8ClampedArray(i2 * s2 * 4);
if (yield e2.copyTo(l2, function(t3, e3, r3, n3, i3) {
const s3 = 4 * Math.max(-e3, 0), a4 = (Math.max(0, r3) - r3) * n3 * 4 + s3, o3 = 4 * n3, l3 = Math.max(0, e3), u2 = Math.max(0, r3);
return { rect: { x: l3, y: u2, width: Math.min(t3.width, e3 + n3) - l3, height: Math.min(t3.height, r3 + i3) - u2 }, layout: [{ offset: a4, stride: o3 }] };
}(t2, r2, n2, i2, s2)), o2) for (let t3 = 0; t3 < l2.length; t3 += 4) {
const e3 = l2[t3];
l2[t3] = l2[t3 + 2], l2[t3 + 2] = e3;
}
return l2;
} finally {
e2.close();
}
});
}
let tt, et;
function rt(t2, e2, r2, n2) {
return t2.addEventListener(e2, r2, n2), { unsubscribe: () => {
t2.removeEventListener(e2, r2, n2);
} };
}
function nt(t2) {
return t2 * Math.PI / 180;
}
function it(t2) {
return t2 / Math.PI * 180;
}
const st = { touchstart: true, touchmove: true, touchmoveWindow: true, touchend: true, touchcancel: true }, at = { dblclick: true, click: true, mouseover: true, mouseout: true, mousedown: true, mousemove: true, mousemoveWindow: true, mouseup: true, mouseupWindow: true, contextmenu: true, wheel: true }, ot = "AbortError";
function lt() {
return new Error(ot);
}
const ut = { MAX_PARALLEL_IMAGE_REQUESTS: 16, MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME: 8, MAX_TILE_CACHE_ZOOM_LEVELS: 5, REGISTERED_PROTOCOLS: {}, WORKER_URL: "" };
function ct(t2) {
return ut.REGISTERED_PROTOCOLS[t2.substring(0, t2.indexOf("://"))];
}
const ht = "global-dispatcher";
class pt extends Error {
constructor(t2, e2, r2, n2) {
super(`AJAXError: ${e2} (${t2}): ${r2}`), this.status = t2, this.statusText = e2, this.url = r2, this.body = n2;
}
}
const ft = () => H(self) ? self.worker && self.worker.referrer : ("blob:" === window.location.protocol ? window.parent : window).location.href, dt = function(t2, r2) {
if (/:\/\//.test(t2.url) && !/^https?:|^file:/.test(t2.url)) {
const e2 = ct(t2.url);
if (e2) return e2(t2, r2);
if (H(self) && self.worker && self.worker.actor) return self.worker.actor.sendAsync({ type: "GR", data: t2, targetMapId: ht }, r2);
}
if (!(/^file:/.test(n2 = t2.url) || /^file:/.test(ft()) && !/^\w+:/.test(n2))) {
if (fetch && Request && AbortController && Object.prototype.hasOwnProperty.call(Request.prototype, "signal")) return function(t3, r3) {
return e(this, void 0, void 0, function* () {
const e2 = new Request(t3.url, { method: t3.method || "GET", body: t3.body, credentials: t3.credentials, headers: t3.headers, cache: t3.cache, referrer: ft(), signal: r3.signal });
let n3, i2;
"json" !== t3.type || e2.headers.has("Accept") || e2.headers.set("Accept", "application/json");
try {
n3 = yield fetch(e2);
} catch (e3) {
throw new pt(0, e3.message, t3.url, new Blob());
}
if (!n3.ok) {
const e3 = yield n3.blob();
throw new pt(n3.status, n3.statusText, t3.url, e3);
}
i2 = "arrayBuffer" === t3.type || "image" === t3.type ? n3.arrayBuffer() : "json" === t3.type ? n3.json() : n3.text();
const s2 = yield i2;
if (r3.signal.aborted) throw lt();
return { data: s2, cacheControl: n3.headers.get("Cache-Control"), expires: n3.headers.get("Expires") };
});
}(t2, r2);
if (H(self) && self.worker && self.worker.actor) return self.worker.actor.sendAsync({ type: "GR", data: t2, mustQueue: true, targetMapId: ht }, r2);
}
var n2;
return function(t3, e2) {
return new Promise((r3, n3) => {
var i2;
const s2 = new XMLHttpRequest();
s2.open(t3.method || "GET", t3.url, true), "arrayBuffer" !== t3.type && "image" !== t3.type || (s2.responseType = "arraybuffer");
for (const e3 in t3.headers) s2.setRequestHeader(e3, t3.headers[e3]);
"json" === t3.type && (s2.responseType = "text", (null === (i2 = t3.headers) || void 0 === i2 ? void 0 : i2.Accept) || s2.setRequestHeader("Accept", "application/json")), s2.withCredentials = "include" === t3.credentials, s2.onerror = () => {
n3(new Error(s2.statusText));
}, s2.onload = () => {
if (!e2.signal.aborted) if ((s2.status >= 200 && s2.status < 300 || 0 === s2.status) && null !== s2.response) {
let e3 = s2.response;
if ("json" === t3.type) try {
e3 = JSON.parse(s2.response);
} catch (t4) {
return void n3(t4);
}
r3({ data: e3, cacheControl: s2.getResponseHeader("Cache-Control"), expires: s2.getResponseHeader("Expires") });
} else {
const e3 = new Blob([s2.response], { type: s2.getResponseHeader("Content-Type") });
n3(new pt(s2.status, s2.statusText, t3.url, e3));
}
}, e2.signal.addEventListener("abort", () => {
s2.abort(), n3(lt());
}), s2.send(t3.body);
});
}(t2, r2);
};
function yt(t2) {
if (!t2 || t2.indexOf("://") <= 0 || 0 === t2.indexOf("data:image/") || 0 === t2.indexOf("blob:")) return true;
const e2 = new URL(t2), r2 = window.location;
return e2.protocol === r2.protocol && e2.host === r2.host;
}
function mt(t2, e2, r2) {
r2[t2] && -1 !== r2[t2].indexOf(e2) || (r2[t2] = r2[t2] || [], r2[t2].push(e2));
}
function gt(t2, e2, r2) {
if (r2 && r2[t2]) {
const n2 = r2[t2].indexOf(e2);
-1 !== n2 && r2[t2].splice(n2, 1);
}
}
class xt {
constructor(t2, e2 = {}) {
j(this, e2), this.type = t2;
}
}
class vt extends xt {
constructor(t2, e2 = {}) {
super("error", j({ error: t2 }, e2));
}
}
class bt {
on(t2, e2) {
return this._listeners = this._listeners || {}, mt(t2, e2, this._listeners), { unsubscribe: () => {
this.off(t2, e2);
} };
}
off(t2, e2) {
return gt(t2, e2, this._listeners), gt(t2, e2, this._oneTimeListeners), this;
}
once(t2, e2) {
return e2 ? (this._oneTimeListeners = this._oneTimeListeners || {}, mt(t2, e2, this._oneTimeListeners), this) : new Promise((e3) => this.once(t2, e3));
}
fire(t2, e2) {
"string" == typeof t2 && (t2 = new xt(t2, e2 || {}));
const r2 = t2.type;
if (this.listens(r2)) {
t2.target = this;
const e3 = this._listeners && this._listeners[r2] ? this._listeners[r2].slice() : [];
for (const r3 of e3) r3.call(this, t2);
const n2 = this._oneTimeListeners && this._oneTimeListeners[r2] ? this._oneTimeListeners[r2].slice() : [];
for (const e4 of n2) gt(r2, e4, this._oneTimeListeners), e4.call(this, t2);
const i2 = this._eventedParent;
i2 && (j(t2, "function" == typeof this._eventedParentData ? this._eventedParentData() : this._eventedParentData), i2.fire(t2));
} else t2 instanceof vt && console.error(t2.error);
return this;
}
listens(t2) {
return this._listeners && this._listeners[t2] && this._listeners[t2].length > 0 || this._oneTimeListeners && this._oneTimeListeners[t2] && this._oneTimeListeners[t2].length > 0 || this._eventedParent && this._eventedParent.listens(t2);
}
setEventedParent(t2, e2) {
return this._eventedParent = t2, this._eventedParentData = e2, this;
}
}
var wt = { $version: 8, $root: { version: { required: true, type: "enum", values: [8] }, name: { type: "string" }, metadata: { type: "*" }, center: { type: "array", value: "number" }, centerAltitude: { type: "number" }, zoom: { type: "number" }, bearing: { type: "number", default: 0, period: 360, units: "degrees" }, pitch: { type: "number", default: 0, units: "degrees" }, roll: { type: "number", default: 0, units: "degrees" }, state: { type: "state", default: {} }, light: { type: "light" }, sky: { type: "sky" }, projection: { type: "projection" }, terrain: { type: "terrain" }, sources: { required: true, type: "sources" }, sprite: { type: "sprite" }, glyphs: { type: "string" }, transition: { type: "transition" }, layers: { required: true, type: "array", value: "layer" } }, sources: { "*": { type: "source" } }, source: ["source_vector", "source_raster", "source_raster_dem", "source_geojson", "source_video", "source_image"], source_vector: { type: { required: true, type: "enum", values: { vector: {} } }, url: { type: "string" }, tiles: { type: "array", value: "string" }, bounds: { type: "array", value: "number", length: 4, default: [-180, -85.051129, 180, 85.051129] }, scheme: { type: "enum", values: { xyz: {}, tms: {} }, default: "xyz" }, minzoom: { type: "number", default: 0 }, maxzoom: { type: "number", default: 22 }, attribution: { type: "string" }, promoteId: { type: "promoteId" }, volatile: { type: "boolean", default: false }, "*": { type: "*" } }, source_raster: { type: { required: true, type: "enum", values: { raster: {} } }, url: { type: "string" }, tiles: { type: "array", value: "string" }, bounds: { type: "array", value: "number", length: 4, default: [-180, -85.051129, 180, 85.051129] }, minzoom: { type: "number", default: 0 }, maxzoom: { type: "number", default: 22 }, tileSize: { type: "number", default: 512, units: "pixels" }, scheme: { type: "enum", values: { xyz: {}, tms: {} }, default: "xyz" }, attribution: { type: "string" }, volatile: { type: "boolean", default: false }, "*": { type: "*" } }, source_raster_dem: { type: { required: true, type: "enum", values: { "raster-dem": {} } }, url: { type: "string" }, tiles: { type: "array", value: "string" }, bounds: { type: "array", value: "number", length: 4, default: [-180, -85.051129, 180, 85.051129] }, minzoom: { type: "number", default: 0 }, maxzoom: { type: "number", default: 22 }, tileSize: { type: "number", default: 512, units: "pixels" }, attribution: { type: "string" }, encoding: { type: "enum", values: { terrarium: {}, mapbox: {}, custom: {} }, default: "mapbox" }, redFactor: { type: "number", default: 1 }, blueFactor: { type: "number", default: 1 }, greenFactor: { type: "number", default: 1 }, baseShift: { type: "number", default: 0 }, volatile: { type: "boolean", default: false }, "*": { type: "*" } }, source_geojson: { type: { required: true, type: "enum", values: { geojson: {} } }, data: { required: true, type: "*" }, maxzoom: { type: "number", default: 18 }, attribution: { type: "string" }, buffer: { type: "number", default: 128, maximum: 512, minimum: 0 }, filter: { type: "*" }, tolerance: { type: "number", default: 0.375 }, cluster: { type: "boolean", default: false }, clusterRadius: { type: "number", default: 50, minimum: 0 }, clusterMaxZoom: { type: "number" }, clusterMinPoints: { type: "number" }, clusterProperties: { type: "*" }, lineMetrics: { type: "boolean", default: false }, generateId: { type: "boolean", default: false }, promoteId: { type: "promoteId" } }, source_video: { type: { required: true, type: "enum", values: { video: {} } }, urls: { required: true, type: "array", value: "string" }, coordinates: { required: true, type: "array", length: 4, value: { type: "array", length: 2, value: "number" } } }, source_image: { type: { required: true, type: "enum", values: { image: {} } }, url: { required: true, type: "string" }, coordinates: { required: true, type: "array", length: 4, value: { type: "array", length: 2, value: "number" } } }, layer: { id: { type: "string", required: true }, type: { type: "enum", values: { fill: {}, line: {}, symbol: {}, circle: {}, heatmap: {}, "fill-extrusion": {}, raster: {}, hillshade: {}, "color-relief": {}, background: {} }, required: true }, metadata: { type: "*" }, source: { type: "string" }, "source-layer": { type: "string" }, minzoom: { type: "number", minimum: 0, maximum: 24 }, maxzoom: { type: "number", minimum: 0, maximum: 24 }, filter: { type: "filter" }, layout: { type: "layout" }, paint: { type: "paint" } }, layout: ["layout_fill", "layout_line", "layout_circle", "layout_heatmap", "layout_fill-extrusion", "layout_symbol", "layout_raster", "layout_hillshade", "layout_color-relief", "layout_background"], layout_background: { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, layout_fill: { "fill-sort-key": { type: "number", expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, layout_circle: { "circle-sort-key": { type: "number", expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, layout_heatmap: { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, "layout_fill-extrusion": { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, layout_line: { "line-cap": { type: "enum", values: { butt: {}, round: {}, square: {} }, default: "butt", expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "line-join": { type: "enum", values: { bevel: {}, round: {}, miter: {} }, default: "miter", expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "line-miter-limit": { type: "number", default: 2, requires: [{ "line-join": "miter" }], expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "line-round-limit": { type: "number", default: 1.05, requires: [{ "line-join": "round" }], expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "line-sort-key": { type: "number", expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, layout_symbol: { "symbol-placement": { type: "enum", values: { point: {}, line: {}, "line-center": {} }, default: "point", expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "symbol-spacing": { type: "number", default: 250, minimum: 1, units: "pixels", requires: [{ "symbol-placement": "line" }], expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "symbol-avoid-edges": { type: "boolean", default: false, expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "symbol-sort-key": { type: "number", expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "symbol-z-order": { type: "enum", values: { auto: {}, "viewport-y": {}, source: {} }, default: "auto", expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-allow-overlap": { type: "boolean", default: false, requires: ["icon-image", { "!": "icon-overlap" }], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-overlap": { type: "enum", values: { never: {}, always: {}, cooperative: {} }, requires: ["icon-image"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-ignore-placement": { type: "boolean", default: false, requires: ["icon-image"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-optional": { type: "boolean", default: false, requires: ["icon-image", "text-field"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-rotation-alignment": { type: "enum", values: { map: {}, viewport: {}, auto: {} }, default: "auto", requires: ["icon-image"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-size": { type: "number", default: 1, minimum: 0, units: "factor of the original icon size", requires: ["icon-image"], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-text-fit": { type: "enum", values: { none: {}, width: {}, height: {}, both: {} }, default: "none", requires: ["icon-image", "text-field"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-text-fit-padding": { type: "array", value: "number", length: 4, default: [0, 0, 0, 0], units: "pixels", requires: ["icon-image", "text-field", { "icon-text-fit": ["both", "width", "height"] }], expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-image": { type: "resolvedImage", tokens: true, expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-rotate": { type: "number", default: 0, period: 360, units: "degrees", requires: ["icon-image"], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-padding": { type: "padding", default: [2], units: "pixels", requires: ["icon-image"], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-keep-upright": { type: "boolean", default: false, requires: ["icon-image", { "icon-rotation-alignment": "map" }, { "symbol-placement": ["line", "line-center"] }], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-offset": { type: "array", value: "number", length: 2, default: [0, 0], requires: ["icon-image"], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-anchor": { type: "enum", values: { center: {}, left: {}, right: {}, top: {}, bottom: {}, "top-left": {}, "top-right": {}, "bottom-left": {}, "bottom-right": {} }, default: "center", requires: ["icon-image"], expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-pitch-alignment": { type: "enum", values: { map: {}, viewport: {}, auto: {} }, default: "auto", requires: ["icon-image"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-pitch-alignment": { type: "enum", values: { map: {}, viewport: {}, auto: {} }, default: "auto", requires: ["text-field"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-rotation-alignment": { type: "enum", values: { map: {}, viewport: {}, "viewport-glyph": {}, auto: {} }, default: "auto", requires: ["text-field"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-field": { type: "formatted", default: "", tokens: true, expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-font": { type: "array", value: "string", default: ["Open Sans Regular", "Arial Unicode MS Regular"], requires: ["text-field"], expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-size": { type: "number", default: 16, minimum: 0, units: "pixels", requires: ["text-field"], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-max-width": { type: "number", default: 10, minimum: 0, units: "ems", requires: ["text-field"], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-line-height": { type: "number", default: 1.2, units: "ems", requires: ["text-field"], expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-letter-spacing": { type: "number", default: 0, units: "ems", requires: ["text-field"], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-justify": { type: "enum", values: { auto: {}, left: {}, center: {}, right: {} }, default: "center", requires: ["text-field"], expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-radial-offset": { type: "number", units: "ems", default: 0, requires: ["text-field"], "property-type": "data-driven", expression: { interpolated: true, parameters: ["zoom", "feature"] } }, "text-variable-anchor": { type: "array", value: "enum", values: { center: {}, left: {}, right: {}, top: {}, bottom: {}, "top-left": {}, "top-right": {}, "bottom-left": {}, "bottom-right": {} }, requires: ["text-field", { "symbol-placement": ["point"] }], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-variable-anchor-offset": { type: "variableAnchorOffsetCollection", requires: ["text-field", { "symbol-placement": ["point"] }], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-anchor": { type: "enum", values: { center: {}, left: {}, right: {}, top: {}, bottom: {}, "top-left": {}, "top-right": {}, "bottom-left": {}, "bottom-right": {} }, default: "center", requires: ["text-field", { "!": "text-variable-anchor" }], expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-max-angle": { type: "number", default: 45, units: "degrees", requires: ["text-field", { "symbol-placement": ["line", "line-center"] }], expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-writing-mode": { type: "array", value: "enum", values: { horizontal: {}, vertical: {} }, requires: ["text-field", { "symbol-placement": ["point"] }], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-rotate": { type: "number", default: 0, period: 360, units: "degrees", requires: ["text-field"], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-padding": { type: "number", default: 2, minimum: 0, units: "pixels", requires: ["text-field"], expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-keep-upright": { type: "boolean", default: true, requires: ["text-field", { "text-rotation-alignment": "map" }, { "symbol-placement": ["line", "line-center"] }], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-transform": { type: "enum", values: { none: {}, uppercase: {}, lowercase: {} }, default: "none", requires: ["text-field"], expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-offset": { type: "array", value: "number", units: "ems", length: 2, default: [0, 0], requires: ["text-field", { "!": "text-radial-offset" }], expression: { interpolated: true, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-allow-overlap": { type: "boolean", default: false, requires: ["text-field", { "!": "text-overlap" }], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-overlap": { type: "enum", values: { never: {}, always: {}, cooperative: {} }, requires: ["text-field"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-ignore-placement": { type: "boolean", default: false, requires: ["text-field"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-optional": { type: "boolean", default: false, requires: ["text-field", "icon-image"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, layout_raster: { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, layout_hillshade: { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, "layout_color-relief": { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "constant" } }, filter: { type: "array", value: "*" }, filter_operator: { type: "enum", values: { "==": {}, "!=": {}, ">": {}, ">=": {}, "<": {}, "<=": {}, in: {}, "!in": {}, all: {}, any: {}, none: {}, has: {}, "!has": {} } }, geometry_type: { type: "enum", values: { Point: {}, LineString: {}, Polygon: {} } }, function: { expression: { type: "expression" }, stops: { type: "array", value: "function_stop" }, base: { type: "number", default: 1, minimum: 0 }, property: { type: "string", default: "$zoom" }, type: { type: "enum", values: { identity: {}, exponential: {}, interval: {}, categorical: {} }, default: "exponential" }, colorSpace: { type: "enum", values: { rgb: {}, lab: {}, hcl: {} }, default: "rgb" }, default: { type: "*", required: false } }, function_stop: { type: "array", minimum: 0, maximum: 24, value: ["number", "color"], length: 2 }, expression: { type: "array", value: "*", minimum: 1 }, light: { anchor: { type: "enum", default: "viewport", values: { map: {}, viewport: {} }, "property-type": "data-constant", transition: false, expression: { interpolated: false, parameters: ["zoom"] } }, position: { type: "array", default: [1.15, 210, 30], length: 3, value: "number", "property-type": "data-constant", transition: true, expression: { interpolated: true, parameters: ["zoom"] } }, color: { type: "color", "property-type": "data-constant", default: "#ffffff", expression: { interpolated: true, parameters: ["zoom"] }, transition: true }, intensity: { type: "number", "property-type": "data-constant", default: 0.5, minimum: 0, maximum: 1, expression: { interpolated: true, parameters: ["zoom"] }, transition: true } }, sky: { "sky-color": { type: "color", "property-type": "data-constant", default: "#88C6FC", expression: { interpolated: true, parameters: ["zoom"] }, transition: true }, "horizon-color": { type: "color", "property-type": "data-constant", default: "#ffffff", expression: { interpolated: true, parameters: ["zoom"] }, transition: true }, "fog-color": { type: "color", "property-type": "data-constant", default: "#ffffff", expression: { interpolated: true, parameters: ["zoom"] }, transition: true }, "fog-ground-blend": { type: "number", "property-type": "data-constant", default: 0.5, minimum: 0, maximum: 1, expression: { interpolated: true, parameters: ["zoom"] }, transition: true }, "horizon-fog-blend": { type: "number", "property-type": "data-constant", default: 0.8, minimum: 0, maximum: 1, expression: { interpolated: true, parameters: ["zoom"] }, transition: true }, "sky-horizon-blend": { type: "number", "property-type": "data-constant", default: 0.8, minimum: 0, maximum: 1, expression: { interpolated: true, parameters: ["zoom"] }, transition: true }, "atmosphere-blend": { type: "number", "property-type": "data-constant", default: 0.8, minimum: 0, maximum: 1, expression: { interpolated: true, parameters: ["zoom"] }, transition: true } }, terrain: { source: { type: "string", required: true }, exaggeration: { type: "number", minimum: 0, default: 1 } }, projection: { type: { type: "projectionDefinition", default: "mercator", "property-type": "data-constant", transition: false, expression: { interpolated: true, parameters: ["zoom"] } } }, paint: ["paint_fill", "paint_line", "paint_circle", "paint_heatmap", "paint_fill-extrusion", "paint_symbol", "paint_raster", "paint_hillshade", "paint_color-relief", "paint_background"], paint_fill: { "fill-antialias": { type: "boolean", default: true, expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: true, expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-color": { type: "color", default: "#000000", transition: true, requires: [{ "!": "fill-pattern" }], expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-outline-color": { type: "color", transition: true, requires: [{ "!": "fill-pattern" }, { "fill-antialias": true }], expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: true, units: "pixels", expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-translate-anchor": { type: "enum", values: { map: {}, viewport: {} }, default: "map", requires: ["fill-translate"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-pattern": { type: "resolvedImage", transition: true, expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "cross-faded-data-driven" } }, "paint_fill-extrusion": { "fill-extrusion-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: true, expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-extrusion-color": { type: "color", default: "#000000", transition: true, requires: [{ "!": "fill-extrusion-pattern" }], expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-extrusion-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: true, units: "pixels", expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-extrusion-translate-anchor": { type: "enum", values: { map: {}, viewport: {} }, default: "map", requires: ["fill-extrusion-translate"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-extrusion-pattern": { type: "resolvedImage", transition: true, expression: { interpolated: false, parameters: ["zoom", "feature"] }, "property-type": "cross-faded-data-driven" }, "fill-extrusion-height": { type: "number", default: 0, minimum: 0, units: "meters", transition: true, expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-extrusion-base": { type: "number", default: 0, minimum: 0, units: "meters", transition: true, requires: ["fill-extrusion-height"], expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-extrusion-vertical-gradient": { type: "boolean", default: true, transition: false, expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" } }, paint_line: { "line-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: true, expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-color": { type: "color", default: "#000000", transition: true, requires: [{ "!": "line-pattern" }], expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: true, units: "pixels", expression: { interpolated: true, parameters: ["zoom"] }, "property-type": "data-constant" }, "line-translate-anchor": { type: "enum", values: { map: {}, viewport: {} }, default: "map", requires: ["line-translate"], expression: { interpolated: false, parameters: ["zoom"] }, "property-type": "data-constant" }, "line-width": { type: "number", default: 1, minimum: 0, transition: true, units: "pixels", expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-gap-width": { type: "number", default: 0, minimum: 0, transition: true, units: "pixels", expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-offset": { type: "number", default: 0, transition: true, units: "pixels", expression: { interpolated: true, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-blur": { type: "number", default: 0, minimum: 0, transitio