UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2,000 lines 1.49 MB
function __vite_inject_css__(css, id, forceLightDom){ if (typeof document==='undefined') return; var shadow=!forceLightDom&&typeof window!=='undefined'&&window.__efpShadowDOMStyleParent; var parent=shadow||document.head; var s=document.createElement('style'); s.setAttribute('data-chunk-style', id); s.appendChild(document.createTextNode(css)); parent.appendChild(s);} (function() { try { var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {}; e.SENTRY_RELEASE = { id: "3.7.8" }; var t = new e.Error().stack; t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "eb099dd0-7543-4ba9-8400-351b5d0eebc6", e._sentryDebugIdIdentifier = "sentry-dbid-eb099dd0-7543-4ba9-8400-351b5d0eebc6"); } catch {} })(); import { r as e, t } from "./rolldown-runtime-YBAZwyzS.js"; import { t as n } from "./react-Di3Pmpio.js"; import { t as r } from "./jsx-runtime-C8yjdFgZ.js"; import { v as i } from "./i18n-BEer1tI4.js"; import { n as a } from "./Button-C4gPbjAY.js"; import { At as o, Ht as s, Kt as c, Lt as l, an as u, bt as d, fn as f, ln as p, nt as m, o as h, qt as g, s as _, sn as v, st as y, t as b, un as x, wt as S } from "./store-DTwRqruF.js"; import { r as C } from "./mobx-BLgYz-7U.js"; import { a as w, c as T, i as E, l as D, n as O, o as k, r as A, s as j, t as M, u as ee } from "./createWayfinding-Dqwtb_AQ.js"; //#region ../../node_modules/.pnpm/maplibre-gl@5.24.0/node_modules/maplibre-gl/dist/maplibre-gl.css var N = /* @__PURE__ */ e(n(), 1), te = /* @__PURE__ */ e(x(), 1), ne = (/* @__PURE__ */ t(((e, t) => { (function(n, r) { typeof e == "object" && t !== void 0 ? t.exports = r() : typeof define == "function" && define.amd ? define(r) : (n = typeof globalThis < "u" ? globalThis : n || self, n.maplibregl = r()); })(e, (function() { var e = {}, t = {}; function n(n, r, i) { if (t[n] = i, n === "index") { var a = "var sharedModule = {}; (" + t.shared + ")(sharedModule); (" + t.worker + ")(sharedModule);", o = {}; return t.shared(o), t.index(e, o), typeof window < "u" && e.setWorkerUrl(window.URL.createObjectURL(new Blob([a], { type: "text/javascript" }))), e; } } return n("shared", ["exports"], (function(e) { function t(e, t, n, r) { return new (n || (n = Promise))((function(i, a) { function o(e) { try { c(r.next(e)); } catch (e) { a(e); } } function s(e) { try { c(r.throw(e)); } catch (e) { a(e); } } function c(e) { var t; e.done ? i(e.value) : (t = e.value, t instanceof n ? t : new n((function(e) { e(t); }))).then(o, s); } c((r = r.apply(e, t || [])).next()); })); } function n(e, t) { this.x = e, this.y = t; } function r(e) { return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; } var i, a; n.prototype = { clone() { return new n(this.x, this.y); }, add(e) { return this.clone()._add(e); }, sub(e) { return this.clone()._sub(e); }, multByPoint(e) { return this.clone()._multByPoint(e); }, divByPoint(e) { return this.clone()._divByPoint(e); }, mult(e) { return this.clone()._mult(e); }, div(e) { return this.clone()._div(e); }, rotate(e) { return this.clone()._rotate(e); }, rotateAround(e, t) { return this.clone()._rotateAround(e, t); }, matMult(e) { return this.clone()._matMult(e); }, unit() { return this.clone()._unit(); }, perp() { return this.clone()._perp(); }, round() { return this.clone()._round(); }, mag() { return Math.sqrt(this.x * this.x + this.y * this.y); }, equals(e) { return this.x === e.x && this.y === e.y; }, dist(e) { return Math.sqrt(this.distSqr(e)); }, distSqr(e) { let t = e.x - this.x, n = e.y - this.y; return t * t + n * n; }, angle() { return Math.atan2(this.y, this.x); }, angleTo(e) { return Math.atan2(this.y - e.y, this.x - e.x); }, angleWith(e) { return this.angleWithSep(e.x, e.y); }, angleWithSep(e, t) { return Math.atan2(this.x * t - this.y * e, this.x * e + this.y * t); }, _matMult(e) { let t = e[2] * this.x + e[3] * this.y; return this.x = e[0] * this.x + e[1] * this.y, this.y = t, this; }, _add(e) { return this.x += e.x, this.y += e.y, this; }, _sub(e) { return this.x -= e.x, this.y -= e.y, this; }, _mult(e) { return this.x *= e, this.y *= e, this; }, _div(e) { return this.x /= e, this.y /= e, this; }, _multByPoint(e) { return this.x *= e.x, this.y *= e.y, this; }, _divByPoint(e) { return this.x /= e.x, this.y /= e.y, this; }, _unit() { return this._div(this.mag()), this; }, _perp() { let e = this.y; return this.y = this.x, this.x = -e, this; }, _rotate(e) { let t = Math.cos(e), n = Math.sin(e), r = n * this.x + t * this.y; return this.x = t * this.x - n * this.y, this.y = r, this; }, _rotateAround(e, t) { let n = Math.cos(e), r = Math.sin(e), i = t.y + r * (this.x - t.x) + n * (this.y - t.y); return this.x = t.x + n * (this.x - t.x) - r * (this.y - t.y), this.y = i, this; }, _round() { return this.x = Math.round(this.x), this.y = Math.round(this.y), this; }, constructor: n }, n.convert = function(e) { if (e instanceof n) return e; if (Array.isArray(e)) return new n(+e[0], +e[1]); if (e.x !== void 0 && e.y !== void 0) return new n(+e.x, +e.y); throw Error("Expected [x, y] or {x, y} point format"); }; var o = r(function() { if (a) return i; function e(e, t, n, r) { this.cx = 3 * e, this.bx = 3 * (n - e) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * t, this.by = 3 * (r - t) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = e, this.p1y = t, this.p2x = n, this.p2y = r; } return a = 1, i = e, e.prototype = { sampleCurveX: function(e) { return ((this.ax * e + this.bx) * e + this.cx) * e; }, sampleCurveY: function(e) { return ((this.ay * e + this.by) * e + this.cy) * e; }, sampleCurveDerivativeX: function(e) { return (3 * this.ax * e + 2 * this.bx) * e + this.cx; }, solveCurveX: function(e, t) { if (t === void 0 && (t = 1e-6), e < 0) return 0; if (e > 1) return 1; for (var n = e, r = 0; r < 8; r++) { var i = this.sampleCurveX(n) - e; if (Math.abs(i) < t) return n; var a = this.sampleCurveDerivativeX(n); if (Math.abs(a) < 1e-6) break; n -= i / a; } var o = 0, s = 1; for (n = e, r = 0; r < 20 && (i = this.sampleCurveX(n), !(Math.abs(i - e) < t)); r++) e > i ? o = n : s = n, n = .5 * (s - o) + o; return n; }, solve: function(e, t) { return this.sampleCurveY(this.solveCurveX(e, t)); } }, i; }()); let s, c; function l() { return s != null || (s = typeof OffscreenCanvas < "u" && new OffscreenCanvas(1, 1).getContext("2d") && typeof createImageBitmap == "function"), s; } function u() { if (c == null && (c = !1, l())) { let e = new OffscreenCanvas(5, 5).getContext("2d", { willReadFrequently: !0 }); if (e) { for (let t = 0; t < 25; t++) { let n = 4 * t; e.fillStyle = `rgb(${n},${n + 1},${n + 2})`, e.fillRect(t % 5, Math.floor(t / 5), 1, 1); } let t = e.getImageData(0, 0, 5, 5).data; for (let e = 0; e < 100; e++) if (e % 4 != 3 && t[e] !== e) { c = !0; break; } } } return c || !1; } var d = 1e-6, f = typeof Float32Array < "u" ? Float32Array : Array; function p() { var e = new f(9); return f != Float32Array && (e[1] = 0, e[2] = 0, e[3] = 0, e[5] = 0, e[6] = 0, e[7] = 0), e[0] = 1, e[4] = 1, e[8] = 1, e; } function m(e) { return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 0, e[4] = 0, e[5] = 1, e[6] = 0, e[7] = 0, e[8] = 0, e[9] = 0, e[10] = 1, e[11] = 0, e[12] = 0, e[13] = 0, e[14] = 0, e[15] = 1, e; } function h() { var e = new f(3); return f != Float32Array && (e[0] = 0, e[1] = 0, e[2] = 0), e; } function g(e) { var t = e[0], n = e[1], r = e[2]; return Math.sqrt(t * t + n * n + r * r); } function _(e, t, n) { var r = new f(3); return r[0] = e, r[1] = t, r[2] = n, r; } function v(e, t, n) { return e[0] = t[0] + n[0], e[1] = t[1] + n[1], e[2] = t[2] + n[2], e; } function y(e, t, n) { return e[0] = t[0] * n, e[1] = t[1] * n, e[2] = t[2] * n, e; } function b(e, t, n) { var r = t[0], i = t[1], a = t[2], o = n[0], s = n[1], c = n[2]; return e[0] = i * c - a * s, e[1] = a * o - r * c, e[2] = r * s - i * o, e; } var x, S = g; function C(e, t, n) { var r = t[0], i = t[1], a = t[2], o = t[3]; return e[0] = n[0] * r + n[4] * i + n[8] * a + n[12] * o, e[1] = n[1] * r + n[5] * i + n[9] * a + n[13] * o, e[2] = n[2] * r + n[6] * i + n[10] * a + n[14] * o, e[3] = n[3] * r + n[7] * i + n[11] * a + n[15] * o, e; } function w() { var e = new f(4); return f != Float32Array && (e[0] = 0, e[1] = 0, e[2] = 0), e[3] = 1, e; } function T(e, t, n, r) { var i = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : "zyx", a = Math.PI / 360; t *= a, r *= a, n *= a; var o = Math.sin(t), s = Math.cos(t), c = Math.sin(n), l = Math.cos(n), u = Math.sin(r), d = Math.cos(r); switch (i) { case "xyz": e[0] = o * l * d + s * c * u, e[1] = s * c * d - o * l * u, e[2] = s * l * u + o * c * d, e[3] = s * l * d - o * c * u; break; case "xzy": e[0] = o * l * d - s * c * u, e[1] = s * c * d - o * l * u, e[2] = s * l * u + o * c * d, e[3] = s * l * d + o * c * u; break; case "yxz": e[0] = o * l * d + s * c * u, e[1] = s * c * d - o * l * u, e[2] = s * l * u - o * c * d, e[3] = s * l * d + o * c * u; break; case "yzx": e[0] = o * l * d + s * c * u, e[1] = s * c * d + o * l * u, e[2] = s * l * u - o * c * d, e[3] = s * l * d - o * c * u; break; case "zxy": e[0] = o * l * d - s * c * u, e[1] = s * c * d + o * l * u, e[2] = s * l * u + o * c * d, e[3] = s * l * d - o * c * u; break; case "zyx": e[0] = o * l * d - s * c * u, e[1] = s * c * d + o * l * u, e[2] = s * l * u - o * c * d, e[3] = s * l * d + o * c * u; break; default: throw Error("Unknown angle order " + i); } return e; } function E() { var e = new f(2); return f != Float32Array && (e[0] = 0, e[1] = 0), e; } function D(e, t) { var n = new f(2); return n[0] = e, n[1] = t, n; } h(), x = new f(4), f != Float32Array && (x[0] = 0, x[1] = 0, x[2] = 0, x[3] = 0), h(), _(1, 0, 0), _(0, 1, 0), w(), w(), p(), E(); let O = 8192; function k(e, t, n) { return t * (O / (e.tileSize * 2 ** (n - e.tileID.overscaledZ))); } function A(e) { return e instanceof Error ? e : Error(typeof e == "string" ? e : String(e)); } function j(e, t) { return (e % t + t) % t; } function M(e, t, n) { return e * (1 - n) + t * n; } function ee(e) { if (e <= 0) return 0; if (e >= 1) return 1; let t = e * e, n = t * e; return 4 * (e < .5 ? n : 3 * (e - t) + n - .75); } function N(e, t, n, r) { let i = new o(e, t, n, r); return (e) => i.solve(e); } let te = N(.25, .1, .25, 1); function ne(e, t, n) { return Math.min(n, Math.max(t, e)); } function P(e, t, n) { let r = n - t, i = ((e - t) % r + r) % r + t; return i === t ? n : i; } function re(e, ...t) { for (let n of t) for (let t in n) e[t] = n[t]; return e; } let ie = 1; function ae(e, t, n) { let r = {}; for (let n in e) r[n] = t.call(this, e[n], n, e); return r; } function oe(e, t, n) { let r = {}; for (let n in e) t.call(this, e[n], n, e) && (r[n] = e[n]); return r; } function se(e) { return Array.isArray(e) ? e.map(se) : typeof e == "object" && e ? ae(e, se) : e; } let F = {}; function ce(e) { F[e] || (typeof console < "u" && console.warn(e), F[e] = !0); } function le(e, t, n) { return (n.y - e.y) * (t.x - e.x) > (t.y - e.y) * (n.x - e.x); } function ue(e) { return typeof WorkerGlobalScope < "u" && e !== void 0 && e instanceof WorkerGlobalScope; } let de = null; function fe(e) { return typeof ImageBitmap < "u" && e instanceof ImageBitmap; } let pe = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII="; function me(e, n, r, i, a) { return t(this, void 0, void 0, (function* () { if (typeof VideoFrame > "u") throw Error("VideoFrame not supported"); let t = new VideoFrame(e, { timestamp: 0 }); try { let o = t == null ? void 0 : t.format; if (!o || !o.startsWith("BGR") && !o.startsWith("RGB")) throw Error(`Unrecognized format ${o}`); let s = o.startsWith("BGR"), c = new Uint8ClampedArray(i * a * 4); if (yield t.copyTo(c, function(e, t, n, r, i) { let a = 4 * Math.max(-t, 0), o = (Math.max(0, n) - n) * r * 4 + a, s = 4 * r, c = Math.max(0, t), l = Math.max(0, n); return { rect: { x: c, y: l, width: Math.min(e.width, t + r) - c, height: Math.min(e.height, n + i) - l }, layout: [{ offset: o, stride: s }] }; }(e, n, r, i, a)), s) for (let e = 0; e < c.length; e += 4) { let t = c[e]; c[e] = c[e + 2], c[e + 2] = t; } return c; } finally { t.close(); } })); } let he, ge; function _e(e, t, n, r) { return e.addEventListener(t, n, r), { unsubscribe: () => { e.removeEventListener(t, n, r); } }; } function ve(e) { return e * Math.PI / 180; } function ye(e) { return e / Math.PI * 180; } let be = { touchstart: !0, touchmove: !0, touchmoveWindow: !0, touchend: !0, touchcancel: !0 }, xe = { dblclick: !0, click: !0, mouseover: !0, mouseout: !0, mousedown: !0, mousemove: !0, mousemoveWindow: !0, mouseup: !0, mouseupWindow: !0, contextmenu: !0, wheel: !0 }, Se = "AbortError"; class Ce extends Error { constructor(e = Se) { super(e instanceof Error ? e.message : e), this.name = Se, e instanceof Error && e.stack && (this.stack = e.stack); } } function we(e) { return e instanceof Error && e.name === Se; } function Te(e) { if (e.aborted) throw new Ce(e.reason); } let Ee = { MAX_PARALLEL_IMAGE_REQUESTS: 16, MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME: 8, MAX_TILE_CACHE_ZOOM_LEVELS: 5, REGISTERED_PROTOCOLS: {}, WORKER_URL: "" }; function De(e) { return Ee.REGISTERED_PROTOCOLS[e.substring(0, e.indexOf("://"))]; } let Oe = "global-dispatcher"; class ke extends Error { constructor(e, t, n, r) { super(`AJAXError: ${t} (${e}): ${n}`), this.status = e, this.statusText = t, this.url = n, this.body = r; } } let Ae = () => { var e; return ue(self) ? (e = self.worker) == null ? void 0 : e.referrer : (window.location.protocol === "blob:" ? window.parent : window).location.href; }, je = function(e, n) { return t(this, void 0, void 0, (function* () { var r, i; if (e.url.includes("://") && !/^https?:|^file:/.test(e.url)) { let t = De(e.url); if (t) { let r = yield t(e, n); return r.data || e.type !== "arrayBuffer" ? r : re(r, { data: /* @__PURE__ */ new ArrayBuffer(0) }); } if (ue(self) && (r = self.worker) != null && r.actor) return self.worker.actor.sendAsync({ type: "GR", data: e, targetMapId: Oe }, n); } if (!((e) => { var t; return e.startsWith("file:") || ((t = Ae()) == null ? void 0 : t.startsWith("file:")) && !/^\w+:/.test(e); })(e.url)) { if (fetch && Request && AbortController && Object.hasOwn(Request.prototype, "signal")) return function(e, n) { return t(this, void 0, void 0, (function* () { let t = new Request(e.url, { method: e.method || "GET", body: e.body, credentials: e.credentials, headers: e.headers, cache: e.cache, referrer: Ae(), referrerPolicy: e.referrerPolicy, signal: n.signal }), r, i; e.type !== "json" || t.headers.has("Accept") || t.headers.set("Accept", "application/json"); try { r = yield fetch(t); } catch (t) { throw we(t) ? t : new ke(0, A(t).message, e.url, new Blob()); } if (!r.ok) { let t = yield r.blob(); throw new ke(r.status, r.statusText, e.url, t); } i = e.type === "arrayBuffer" || e.type === "image" ? r.arrayBuffer() : e.type === "json" ? r.json() : r.text(); let a = yield i; return Te(n.signal), { data: a, cacheControl: r.headers.get("Cache-Control"), expires: r.headers.get("Expires"), etag: r.headers.get("ETag") }; })); }(e, n); if (ue(self) && (i = self.worker) != null && i.actor) return self.worker.actor.sendAsync({ type: "GR", data: e, mustQueue: !0, targetMapId: Oe }, n); } return function(e, t) { return new Promise(((n, r) => { var i; let a = new XMLHttpRequest(); a.open(e.method || "GET", e.url, !0), e.type !== "arrayBuffer" && e.type !== "image" || (a.responseType = "arraybuffer"); for (let t in e.headers) a.setRequestHeader(t, e.headers[t]); e.type === "json" && (a.responseType = "text", (i = e.headers) != null && i.Accept || a.setRequestHeader("Accept", "application/json")), a.withCredentials = e.credentials === "include", a.onerror = () => { r(Error(a.statusText)); }, a.onload = () => { if (!t.signal.aborted) if ((a.status >= 200 && a.status < 300 || a.status === 0) && a.response !== null) { let t = a.response; if (e.type === "json") try { t = JSON.parse(a.response); } catch (e) { r(e); return; } n({ data: t, cacheControl: a.getResponseHeader("Cache-Control"), expires: a.getResponseHeader("Expires"), etag: a.getResponseHeader("ETag") }); } else { let t = new Blob([a.response], { type: a.getResponseHeader("Content-Type") }); r(new ke(a.status, a.statusText, e.url, t)); } }, t.signal.addEventListener("abort", (() => { a.abort(), r(new Ce(t.signal.reason)); })), a.send(e.body); })); }(e, n); })); }; function Me(e) { if (!e || e.indexOf("://") <= 0 || e.startsWith("data:image/") || e.startsWith("blob:")) return !0; let t = new URL(e), n = window.location; return t.protocol === n.protocol && t.host === n.host; } function Ne(e, t, n) { var r; (r = n[e]) != null && r.includes(t) || (n[e] || (n[e] = []), n[e].push(t)); } function Pe(e, t, n) { if (n != null && n[e]) { let r = n[e].indexOf(t); r !== -1 && n[e].splice(r, 1); } } class Fe { constructor(e, t = {}) { re(this, t), this.type = e; } } class Ie extends Fe { constructor(e, t = {}) { super("error", re({ error: e }, t)); } } class Le { on(e, t) { return this._listeners || (this._listeners = {}), Ne(e, t, this._listeners), { unsubscribe: () => { this.off(e, t); } }; } off(e, t) { return Pe(e, t, this._listeners), Pe(e, t, this._oneTimeListeners), this; } once(e, t) { return t ? (this._oneTimeListeners || (this._oneTimeListeners = {}), Ne(e, t, this._oneTimeListeners), this) : new Promise(((t) => this.once(e, t))); } fire(e, t) { var n, r; typeof e == "string" && (e = new Fe(e, t || {})); let i = e.type; if (this.listens(i)) { e.target = this; let t = (n = this._listeners) != null && n[i] ? this._listeners[i].slice() : []; for (let n of t) n.call(this, e); let a = (r = this._oneTimeListeners) != null && r[i] ? this._oneTimeListeners[i].slice() : []; for (let t of a) Pe(i, t, this._oneTimeListeners), t.call(this, e); let o = this._eventedParent; o && (re(e, typeof this._eventedParentData == "function" ? this._eventedParentData() : this._eventedParentData), o.fire(e)); } else e instanceof Ie && console.error(e.error); return this; } listens(e) { var t, n, r, i, a; return ((n = (t = this._listeners) == null ? void 0 : t[e]) == null ? void 0 : n.length) > 0 || ((i = (r = this._oneTimeListeners) == null ? void 0 : r[e]) == null ? void 0 : i.length) > 0 || ((a = this._eventedParent) == null ? void 0 : a.listens(e)); } setEventedParent(e, t) { return this._eventedParent = e, this._eventedParentData = t, this; } } var I = { $version: 8, $root: { version: { required: !0, type: "enum", values: [8] }, name: { type: "string" }, metadata: { type: "*" }, center: { type: "array", value: "number", length: 2 }, 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: !0, type: "sources" }, sprite: { type: "sprite" }, glyphs: { type: "string" }, "font-faces": { type: "fontFaces" }, transition: { type: "transition" }, layers: { required: !0, 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: !0, 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: !1 }, encoding: { type: "enum", values: { mvt: {}, mlt: {} }, default: "mvt" }, "*": { type: "*" } }, source_raster: { type: { required: !0, 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: !1 }, "*": { type: "*" } }, source_raster_dem: { type: { required: !0, 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: !1 }, "*": { type: "*" } }, source_geojson: { type: { required: !0, type: "enum", values: { geojson: {} } }, data: { required: !0, type: "*" }, maxzoom: { type: "number", default: 18 }, attribution: { type: "string" }, buffer: { type: "number", default: 128, maximum: 512, minimum: 0 }, filter: { type: "filter" }, tolerance: { type: "number", default: .375 }, cluster: { type: "boolean", default: !1 }, clusterRadius: { type: "number", default: 50, minimum: 0 }, clusterMaxZoom: { type: "number" }, clusterMinPoints: { type: "number" }, clusterProperties: { type: "*" }, lineMetrics: { type: "boolean", default: !1 }, generateId: { type: "boolean", default: !1 }, promoteId: { type: "promoteId" } }, source_video: { type: { required: !0, type: "enum", values: { video: {} } }, urls: { required: !0, type: "array", value: "string" }, coordinates: { required: !0, type: "array", length: 4, value: { type: "array", length: 2, value: "number" } } }, source_image: { type: { required: !0, type: "enum", values: { image: {} } }, url: { required: !0, type: "string" }, coordinates: { required: !0, type: "array", length: 4, value: { type: "array", length: 2, value: "number" } } }, layer: { id: { type: "string", required: !0 }, type: { type: "enum", values: { fill: {}, line: {}, symbol: {}, circle: {}, heatmap: {}, "fill-extrusion": {}, raster: {}, hillshade: {}, "color-relief": {}, background: {} }, required: !0 }, 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", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, layout_fill: { "fill-sort-key": { type: "number", expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, layout_circle: { "circle-sort-key": { type: "number", expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, layout_heatmap: { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, "layout_fill-extrusion": { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, layout_line: { "line-cap": { type: "enum", values: { butt: {}, round: {}, square: {} }, default: "butt", expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "line-join": { type: "enum", values: { bevel: {}, round: {}, miter: {} }, default: "miter", expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "line-miter-limit": { type: "number", default: 2, requires: [{ "line-join": "miter" }], expression: { interpolated: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "line-round-limit": { type: "number", default: 1.05, requires: [{ "line-join": "round" }], expression: { interpolated: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "line-sort-key": { type: "number", expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, layout_symbol: { "symbol-placement": { type: "enum", values: { point: {}, line: {}, "line-center": {} }, default: "point", expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "symbol-spacing": { type: "number", default: 250, minimum: 1, units: "pixels", requires: [{ "symbol-placement": "line" }], expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "symbol-avoid-edges": { type: "boolean", default: !1, expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "symbol-sort-key": { type: "number", expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "symbol-z-order": { type: "enum", values: { auto: {}, "viewport-y": {}, source: {} }, default: "auto", expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-allow-overlap": { type: "boolean", default: !1, requires: ["icon-image", { "!": "icon-overlap" }], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-overlap": { type: "enum", values: { never: {}, always: {}, cooperative: {} }, requires: ["icon-image"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-ignore-placement": { type: "boolean", default: !1, requires: ["icon-image"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-optional": { type: "boolean", default: !1, requires: ["icon-image", "text-field"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-rotation-alignment": { type: "enum", values: { map: {}, viewport: {}, auto: {} }, default: "auto", requires: ["icon-image"], expression: { interpolated: !1, 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: !0, 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: !1, 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: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-image": { type: "resolvedImage", tokens: !0, expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-rotate": { type: "number", default: 0, period: 360, units: "degrees", requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-padding": { type: "padding", default: [2], units: "pixels", requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-keep-upright": { type: "boolean", default: !1, requires: [ "icon-image", { "icon-rotation-alignment": "map" }, { "symbol-placement": ["line", "line-center"] } ], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-offset": { type: "array", value: "number", length: 2, default: [0, 0], requires: ["icon-image"], expression: { interpolated: !0, 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: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "icon-pitch-alignment": { type: "enum", values: { map: {}, viewport: {}, auto: {} }, default: "auto", requires: ["icon-image"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-pitch-alignment": { type: "enum", values: { map: {}, viewport: {}, auto: {} }, default: "auto", requires: ["text-field"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-rotation-alignment": { type: "enum", values: { map: {}, viewport: {}, "viewport-glyph": {}, auto: {} }, default: "auto", requires: ["text-field"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-field": { type: "formatted", default: "", tokens: !0, expression: { interpolated: !1, 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: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-size": { type: "number", default: 16, minimum: 0, units: "pixels", requires: ["text-field"], expression: { interpolated: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-max-width": { type: "number", default: 10, minimum: 0, units: "ems", requires: ["text-field"], expression: { interpolated: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-line-height": { type: "number", default: 1.2, units: "ems", requires: ["text-field"], expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-letter-spacing": { type: "number", default: 0, units: "ems", requires: ["text-field"], expression: { interpolated: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-justify": { type: "enum", values: { auto: {}, left: {}, center: {}, right: {} }, default: "center", requires: ["text-field"], expression: { interpolated: !1, 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: !0, 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: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-variable-anchor-offset": { type: "variableAnchorOffsetCollection", requires: ["text-field", { "symbol-placement": ["point"] }], expression: { interpolated: !0, 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: !1, 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: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-writing-mode": { type: "array", value: "enum", values: { horizontal: {}, vertical: {} }, requires: ["text-field", { "symbol-placement": ["point"] }], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-rotate": { type: "number", default: 0, period: 360, units: "degrees", requires: ["text-field"], expression: { interpolated: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-padding": { type: "number", default: 2, minimum: 0, units: "pixels", requires: ["text-field"], expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-keep-upright": { type: "boolean", default: !0, requires: [ "text-field", { "text-rotation-alignment": "map" }, { "symbol-placement": ["line", "line-center"] } ], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-transform": { type: "enum", values: { none: {}, uppercase: {}, lowercase: {} }, default: "none", requires: ["text-field"], expression: { interpolated: !1, 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: !0, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, "text-allow-overlap": { type: "boolean", default: !1, requires: ["text-field", { "!": "text-overlap" }], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-overlap": { type: "enum", values: { never: {}, always: {}, cooperative: {} }, requires: ["text-field"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-ignore-placement": { type: "boolean", default: !1, requires: ["text-field"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-optional": { type: "boolean", default: !1, requires: ["text-field", "icon-image"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, layout_raster: { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, layout_hillshade: { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, "layout_color-relief": { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", expression: { interpolated: !1, parameters: ["global-state"] }, "property-type": "data-constant" } }, filter: { type: "boolean", expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "data-driven" }, 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: !1 } }, function_stop: { type: "array", minimum: 0, maximum: 24, value: ["number", "color"], length: 2 }, expression: { type: "array", value: "expression_name", minimum: 1 }, light: { anchor: { type: "enum", default: "viewport", values: { map: {}, viewport: {} }, "property-type": "data-constant", transition: !1, expression: { interpolated: !1, parameters: ["zoom"] } }, position: { type: "array", default: [ 1.15, 210, 30 ], length: 3, value: "number", "property-type": "data-constant", transition: !0, expression: { interpolated: !0, parameters: ["zoom"] } }, color: { type: "color", "property-type": "data-constant", default: "#ffffff", expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, intensity: { type: "number", "property-type": "data-constant", default: .5, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 } }, sky: { "sky-color": { type: "color", "property-type": "data-constant", default: "#88C6FC", expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "horizon-color": { type: "color", "property-type": "data-constant", default: "#ffffff", expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "fog-color": { type: "color", "property-type": "data-constant", default: "#ffffff", expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "fog-ground-blend": { type: "number", "property-type": "data-constant", default: .5, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "horizon-fog-blend": { type: "number", "property-type": "data-constant", default: .8, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "sky-horizon-blend": { type: "number", "property-type": "data-constant", default: .8, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "atmosphere-blend": { type: "number", "property-type": "data-constant", default: .8, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 } }, terrain: { source: { type: "string", required: !0 }, exaggeration: { t