UNPKG

@visitscotland/component-library

Version:
731 lines 1.2 MB
import { a8 as gn, x as g_, a9 as __, _ as Mn, c as Ud, F as L0, u as x_, v as R0, aa as F0, t as O0, m as b_, a as w_, V as Rp, a7 as U0, h as V0, g as N0, f as $0, o as Vh } from "./LoadingSpinner-ij7CWJOg.mjs"; import { ref as kl, resolveComponent as jt, openBlock as ut, createElementBlock as Ot, normalizeClass as an, createVNode as Xt, createElementVNode as jr, createTextVNode as on, toDisplayString as ai, createBlock as Gi, withKeys as Rl, createCommentVNode as Mr, renderSlot as Ar, withCtx as qt, h as q0, render as j0, Fragment as nn, renderList as mp } from "vue"; import { defineStore as G0, mapState as cs } from "pinia"; let us = null; typeof window < "u" && (us = document.currentScript); const Dy = { /** * Default configuration options. */ options: { div: "map", logo: "os-logo-maps", // os-logo-maps | os-logo-maps-white statement: "Contains OS data &copy; Crown copyright and database rights YYYY", prefix: "", suffix: "" }, /** * Add the API logo and copyright statement. */ init(d) { if (typeof window < "u") { us && (this.options.div = us.getAttribute("data-div") || this.options.div, this.options.logo = us.getAttribute("data-logo") || this.options.logo, this.options.statement = us.getAttribute("data-statement") || this.options.statement, this.options.prefix = us.getAttribute("data-prefix") || this.options.prefix, this.options.suffix = us.getAttribute("data-suffix") || this.options.suffix), d = typeof d < "u" ? d : {}, Object.assign(this.options, d); const h = document.getElementById(this.options.div); let _ = "os-api-branding logo"; this.options.logo === "os-logo-maps-white" && (_ = "os-api-branding logo white"); let E = this.options.statement; E = E.replace("YYYY", (/* @__PURE__ */ new Date()).getFullYear()), this.options.prefix !== "" && (E = `${this.options.prefix}<span>|</span>${E}`), this.options.suffix !== "" && (E = `${E}<span>|</span>${this.options.suffix}`), document.querySelectorAll(`#${this.options.div} .os-api-branding`).forEach((u) => u.remove()); const k = document.createElement("div"); k.className = _, h.appendChild(k); const O = document.createElement("div"); O.className = "os-api-branding copyright", O.innerHTML = E, h.appendChild(O); } } }, sn = G0("map", () => { const d = kl([]), h = kl([]), _ = kl(null), E = kl(null), k = kl(null); function O(Ie) { d.value.push({ id: Ie.id, filters: Ie.filters, places: Ie.places, activePins: Ie.activePins, hovered: "", activePlace: null }); } function u(Ie) { d.value.forEach((Ke) => { Ke.id === Ie.mapId && (Ke.hovered = Ie.hoveredFeature); }); } function te(Ie) { d.value.forEach((Ke) => { Ke.id === Ie.mapId && (Ke.activePlace = Ie.activeFeature); }); } function $(Ie) { h.value = Ie; } function de(Ie) { _.value = Ie; } function ce(Ie) { E.value = Ie; } function Ce(Ie) { return d.value.find((Ke) => Ke.id === Ie); } function ae(Ie) { return d.value.find(($e) => $e.id === Ie).hovered; } function ye(Ie) { return d.value.find(($e) => $e.id === Ie).activePlace; } return { maps: d, activeSubcatFilters: h, selectedSubCategory: _, activeMarkerPos: E, activePlace: k, addMapInstance: O, setHoveredPlace: u, setActivePlace: te, setActiveSubcatFilters: $, setSelectedSubcat: de, setActiveMarkerPos: ce, getMapById: Ce, getHoveredStop: ae, getActivePlace: ye }; }); var S_ = { exports: {} }; (function(d, h) { (function(_, E) { d.exports = E(); })(gn, function() { var _, E, k; function O(u, te) { if (!_) _ = te; else if (!E) E = te; else { var $ = "var sharedChunk = {}; (" + _ + ")(sharedChunk); (" + E + ")(sharedChunk);", de = {}; _(de), k = te(de), typeof window < "u" && (k.workerUrl = window.URL.createObjectURL(new Blob([$], { type: "text/javascript" }))); } } return O(["exports"], function(u) { function te(e, t) { return e(t = { exports: {} }, t.exports), t.exports; } var $ = de; function de(e, t, r, o) { this.cx = 3 * e, this.bx = 3 * (r - e) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * t, this.by = 3 * (o - t) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = e, this.p1y = o, this.p2x = r, this.p2y = o; } de.prototype.sampleCurveX = function(e) { return ((this.ax * e + this.bx) * e + this.cx) * e; }, de.prototype.sampleCurveY = function(e) { return ((this.ay * e + this.by) * e + this.cy) * e; }, de.prototype.sampleCurveDerivativeX = function(e) { return (3 * this.ax * e + 2 * this.bx) * e + this.cx; }, de.prototype.solveCurveX = function(e, t) { var r, o, l, c, f; for (t === void 0 && (t = 1e-6), l = e, f = 0; f < 8; f++) { if (c = this.sampleCurveX(l) - e, Math.abs(c) < t) return l; var v = this.sampleCurveDerivativeX(l); if (Math.abs(v) < 1e-6) break; l -= c / v; } if ((l = e) < (r = 0)) return r; if (l > (o = 1)) return o; for (; r < o; ) { if (c = this.sampleCurveX(l), Math.abs(c - e) < t) return l; e > c ? r = l : o = l, l = 0.5 * (o - r) + r; } return l; }, de.prototype.solve = function(e, t) { return this.sampleCurveY(this.solveCurveX(e, t)); }; var ce = Ce; function Ce(e, t) { this.x = e, this.y = t; } Ce.prototype = { clone: function() { return new Ce(this.x, this.y); }, add: function(e) { return this.clone()._add(e); }, sub: function(e) { return this.clone()._sub(e); }, multByPoint: function(e) { return this.clone()._multByPoint(e); }, divByPoint: function(e) { return this.clone()._divByPoint(e); }, mult: function(e) { return this.clone()._mult(e); }, div: function(e) { return this.clone()._div(e); }, rotate: function(e) { return this.clone()._rotate(e); }, rotateAround: function(e, t) { return this.clone()._rotateAround(e, t); }, matMult: function(e) { return this.clone()._matMult(e); }, 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(e) { return this.x === e.x && this.y === e.y; }, dist: function(e) { return Math.sqrt(this.distSqr(e)); }, distSqr: function(e) { var t = e.x - this.x, r = e.y - this.y; return t * t + r * r; }, angle: function() { return Math.atan2(this.y, this.x); }, angleTo: function(e) { return Math.atan2(this.y - e.y, this.x - e.x); }, angleWith: function(e) { return this.angleWithSep(e.x, e.y); }, angleWithSep: function(e, t) { return Math.atan2(this.x * t - this.y * e, this.x * e + this.y * t); }, _matMult: function(e) { var 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: function(e) { return this.x += e.x, this.y += e.y, this; }, _sub: function(e) { return this.x -= e.x, this.y -= e.y, this; }, _mult: function(e) { return this.x *= e, this.y *= e, this; }, _div: function(e) { return this.x /= e, this.y /= e, this; }, _multByPoint: function(e) { return this.x *= e.x, this.y *= e.y, this; }, _divByPoint: function(e) { return this.x /= e.x, this.y /= e.y, this; }, _unit: function() { return this._div(this.mag()), this; }, _perp: function() { var e = this.y; return this.y = this.x, this.x = -e, this; }, _rotate: function(e) { var t = Math.cos(e), r = Math.sin(e), o = r * this.x + t * this.y; return this.x = t * this.x - r * this.y, this.y = o, this; }, _rotateAround: function(e, t) { var r = Math.cos(e), o = Math.sin(e), l = t.y + o * (this.x - t.x) + r * (this.y - t.y); return this.x = t.x + r * (this.x - t.x) - o * (this.y - t.y), this.y = l, this; }, _round: function() { return this.x = Math.round(this.x), this.y = Math.round(this.y), this; } }, Ce.convert = function(e) { return e instanceof Ce ? e : Array.isArray(e) ? new Ce(e[0], e[1]) : e; }; var ae = typeof self < "u" ? self : {}, ye = Math.pow(2, 53) - 1; function Ie(e, t, r, o) { var l = new $(e, t, r, o); return function(c) { return l.solve(c); }; } var Ke = Ie(0.25, 0.1, 0.25, 1); function $e(e, t, r) { return Math.min(r, Math.max(t, e)); } function ct(e, t, r) { var o = r - t, l = ((e - t) % o + o) % o + t; return l === t ? r : l; } function nt(e) { for (var t = [], r = arguments.length - 1; r-- > 0; ) t[r] = arguments[r + 1]; for (var o = 0, l = t; o < l.length; o += 1) { var c = l[o]; for (var f in c) e[f] = c[f]; } return e; } var Lt = 1; function xt() { return Lt++; } function Pt() { return function e(t) { return t ? (t ^ 16 * Math.random() >> t / 4).toString(16) : ([1e7] + -[1e3] + -4e3 + -8e3 + -1e11).replace(/[018]/g, e); }(); } function rr(e) { return !!e && /^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e); } function xr(e, t) { e.forEach(function(r) { t[r] && (t[r] = t[r].bind(t)); }); } function zr(e, t) { return e.indexOf(t, e.length - t.length) !== -1; } function ir(e, t, r) { var o = {}; for (var l in e) o[l] = t.call(r || this, e[l], l, e); return o; } function oi(e, t, r) { var o = {}; for (var l in e) t.call(r || this, e[l], l, e) && (o[l] = e[l]); return o; } function si(e) { return Array.isArray(e) ? e.map(si) : typeof e == "object" && e ? ir(e, si) : e; } var Ti = {}; function Tt(e) { Ti[e] || (typeof console < "u" && console.warn(e), Ti[e] = !0); } function br(e, t, r) { return (r.y - e.y) * (t.x - e.x) > (t.y - e.y) * (r.x - e.x); } function Ga(e) { for (var t = 0, r = 0, o = e.length, l = o - 1, c = void 0, f = void 0; r < o; l = r++) t += ((f = e[l]).x - (c = e[r]).x) * (c.y + f.y); return t; } function mi() { return typeof WorkerGlobalScope < "u" && typeof self < "u" && self instanceof WorkerGlobalScope; } function Za(e) { var t = {}; if (e.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g, function(o, l, c, f) { var v = c || f; return t[l] = !v || v.toLowerCase(), ""; }), t["max-age"]) { var r = parseInt(t["max-age"], 10); isNaN(r) ? delete t["max-age"] : t["max-age"] = r; } return t; } var Wa = null; function vs(e) { if (Wa == null) { var t = e.navigator ? e.navigator.userAgent : null; Wa = !!e.safari || !(!t || !(/\b(iPad|iPhone|iPod)\b/.test(t) || t.match("Safari") && !t.match("Chrome"))); } return Wa; } function Dn(e) { try { var t = ae[e]; return t.setItem("_mapbox_test_", 1), t.removeItem("_mapbox_test_"), !0; } catch { return !1; } } var Zi, un, ua, la, Bn = ae.performance && ae.performance.now ? ae.performance.now.bind(ae.performance) : Date.now.bind(Date), zu = ae.requestAnimationFrame || ae.mozRequestAnimationFrame || ae.webkitRequestAnimationFrame || ae.msRequestAnimationFrame, Hr = ae.cancelAnimationFrame || ae.mozCancelAnimationFrame || ae.webkitCancelAnimationFrame || ae.msCancelAnimationFrame, xn = { now: Bn, frame: function(e) { var t = zu(e); return { cancel: function() { return Hr(t); } }; }, getImageData: function(e, t) { t === void 0 && (t = 0); var r = ae.document.createElement("canvas"), o = r.getContext("2d"); if (!o) throw new Error("failed to create canvas 2d context"); return r.width = e.width, r.height = e.height, o.drawImage(e, 0, 0, e.width, e.height), o.getImageData(-t, -t, e.width + 2 * t, e.height + 2 * t); }, resolveURL: function(e) { return Zi || (Zi = ae.document.createElement("a")), Zi.href = e, Zi.href; }, hardwareConcurrency: ae.navigator && ae.navigator.hardwareConcurrency || 4, get devicePixelRatio() { return ae.devicePixelRatio; }, get prefersReducedMotion() { return !!ae.matchMedia && (un == null && (un = ae.matchMedia("(prefers-reduced-motion: reduce)")), un.matches); } }, Ut = { API_URL: "https://api.mapbox.com", get EVENTS_URL() { return this.API_URL ? this.API_URL.indexOf("https://api.mapbox.cn") === 0 ? "https://events.mapbox.cn/events/v2" : this.API_URL.indexOf("https://api.mapbox.com") === 0 ? "https://events.mapbox.com/events/v2" : null : null; }, FEEDBACK_URL: "https://apps.mapbox.com/feedback", REQUIRE_ACCESS_TOKEN: !0, ACCESS_TOKEN: null, MAX_PARALLEL_IMAGE_REQUESTS: 16 }, ln = { supported: !1, testSupport: function(e) { !Ha && la && (Wi ? mt(e) : ua = e); } }, Ha = !1, Wi = !1; function mt(e) { var t = e.createTexture(); e.bindTexture(e.TEXTURE_2D, t); try { if (e.texImage2D(e.TEXTURE_2D, 0, e.RGBA, e.RGBA, e.UNSIGNED_BYTE, la), e.isContextLost()) return; ln.supported = !0; } catch { } e.deleteTexture(t), Ha = !0; } ae.document && ((la = ae.document.createElement("img")).onload = function() { ua && mt(ua), ua = null, Wi = !0; }, la.onerror = function() { Ha = !0, ua = null; }, la.src = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="); var Ln = "01", ui = function(e, t) { this._transformRequestFn = e, this._customAccessToken = t, this._createSkuToken(); }; function Mi(e) { return e.indexOf("mapbox:") === 0; } ui.prototype._createSkuToken = function() { var e = function() { for (var t = "", r = 0; r < 10; r++) t += "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62 * Math.random())]; return { token: ["1", Ln, t].join(""), tokenExpiresAt: Date.now() + 432e5 }; }(); this._skuToken = e.token, this._skuTokenExpiresAt = e.tokenExpiresAt; }, ui.prototype._isSkuTokenExpired = function() { return Date.now() > this._skuTokenExpiresAt; }, ui.prototype.transformRequest = function(e, t) { return this._transformRequestFn && this._transformRequestFn(e, t) || { url: e }; }, ui.prototype.normalizeStyleURL = function(e, t) { if (!Mi(e)) return e; var r = zi(e); return r.path = "/styles/v1" + r.path, this._makeAPIURL(r, this._customAccessToken || t); }, ui.prototype.normalizeGlyphsURL = function(e, t) { if (!Mi(e)) return e; var r = zi(e); return r.path = "/fonts/v1" + r.path, this._makeAPIURL(r, this._customAccessToken || t); }, ui.prototype.normalizeSourceURL = function(e, t) { if (!Mi(e)) return e; var r = zi(e); return r.path = "/v4/" + r.authority + ".json", r.params.push("secure"), this._makeAPIURL(r, this._customAccessToken || t); }, ui.prototype.normalizeSpriteURL = function(e, t, r, o) { var l = zi(e); return Mi(e) ? (l.path = "/styles/v1" + l.path + "/sprite" + t + r, this._makeAPIURL(l, this._customAccessToken || o)) : (l.path += "" + t + r, ca(l)); }, ui.prototype.normalizeTileURL = function(e, t) { if (this._isSkuTokenExpired() && this._createSkuToken(), e && !Mi(e)) return e; var r = zi(e); r.path = r.path.replace(/(\.(png|jpg)\d*)(?=$)/, (xn.devicePixelRatio >= 2 || t === 512 ? "@2x" : "") + (ln.supported ? ".webp" : "$1")), r.path = r.path.replace(/^.+\/v4\//, "/"), r.path = "/v4" + r.path; var o = this._customAccessToken || function(l) { for (var c = 0, f = l; c < f.length; c += 1) { var v = f[c].match(/^access_token=(.*)$/); if (v) return v[1]; } return null; }(r.params) || Ut.ACCESS_TOKEN; return Ut.REQUIRE_ACCESS_TOKEN && o && this._skuToken && r.params.push("sku=" + this._skuToken), this._makeAPIURL(r, o); }, ui.prototype.canonicalizeTileURL = function(e, t) { var r = zi(e); if (!r.path.match(/(^\/v4\/)/) || !r.path.match(/\.[\w]+$/)) return e; var o = "mapbox://tiles/"; o += r.path.replace("/v4/", ""); var l = r.params; return t && (l = l.filter(function(c) { return !c.match(/^access_token=/); })), l.length && (o += "?" + l.join("&")), o; }, ui.prototype.canonicalizeTileset = function(e, t) { for (var r = !!t && Mi(t), o = [], l = 0, c = e.tiles || []; l < c.length; l += 1) { var f = c[l]; Hi(f) ? o.push(this.canonicalizeTileURL(f, r)) : o.push(f); } return o; }, ui.prototype._makeAPIURL = function(e, t) { var r = "See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes", o = zi(Ut.API_URL); if (e.protocol = o.protocol, e.authority = o.authority, e.protocol === "http") { var l = e.params.indexOf("secure"); l >= 0 && e.params.splice(l, 1); } if (o.path !== "/" && (e.path = "" + o.path + e.path), !Ut.REQUIRE_ACCESS_TOKEN) return ca(e); if (!(t = t || Ut.ACCESS_TOKEN)) throw new Error("An API access token is required to use Mapbox GL. " + r); if (t[0] === "s") throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). " + r); return e.params = e.params.filter(function(c) { return c.indexOf("access_token") === -1; }), e.params.push("access_token=" + t), ca(e); }; var Du = /^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i; function Hi(e) { return Du.test(e); } var So = /^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/; function zi(e) { var t = e.match(So); if (!t) throw new Error("Unable to parse URL object"); return { protocol: t[1], authority: t[2], path: t[3] || "/", params: t[4] ? t[4].split("&") : [] }; } function ca(e) { var t = e.params.length ? "?" + e.params.join("&") : ""; return e.protocol + "://" + e.authority + e.path + t; } function Xa(e) { if (!e) return null; var t = e.split("."); if (!t || t.length !== 3) return null; try { return JSON.parse(decodeURIComponent(ae.atob(t[1]).split("").map(function(r) { return "%" + ("00" + r.charCodeAt(0).toString(16)).slice(-2); }).join(""))); } catch { return null; } } var Di = function(e) { this.type = e, this.anonId = null, this.eventData = {}, this.queue = [], this.pendingRequest = null; }; Di.prototype.getStorageKey = function(e) { var t, r = Xa(Ut.ACCESS_TOKEN); return t = r && r.u ? ae.btoa(encodeURIComponent(r.u).replace(/%([0-9A-F]{2})/g, function(o, l) { return String.fromCharCode(+("0x" + l)); })) : Ut.ACCESS_TOKEN || "", e ? "mapbox.eventData." + e + ":" + t : "mapbox.eventData:" + t; }, Di.prototype.fetchEventData = function() { var e = Dn("localStorage"), t = this.getStorageKey(), r = this.getStorageKey("uuid"); if (e) try { var o = ae.localStorage.getItem(t); o && (this.eventData = JSON.parse(o)); var l = ae.localStorage.getItem(r); l && (this.anonId = l); } catch { Tt("Unable to read from LocalStorage"); } }, Di.prototype.saveEventData = function() { var e = Dn("localStorage"), t = this.getStorageKey(), r = this.getStorageKey("uuid"); if (e) try { ae.localStorage.setItem(r, this.anonId), Object.keys(this.eventData).length >= 1 && ae.localStorage.setItem(t, JSON.stringify(this.eventData)); } catch { Tt("Unable to write to LocalStorage"); } }, Di.prototype.processRequests = function(e) { }, Di.prototype.postEvent = function(e, t, r, o) { var l = this; if (Ut.EVENTS_URL) { var c = zi(Ut.EVENTS_URL); c.params.push("access_token=" + (o || Ut.ACCESS_TOKEN || "")); var f = { event: this.type, created: new Date(e).toISOString(), sdkIdentifier: "mapbox-gl-js", sdkVersion: "1.13.3", skuId: Ln, userId: this.anonId }, v = t ? nt(f, t) : f, x = { url: ca(c), headers: { "Content-Type": "text/plain" }, body: JSON.stringify([v]) }; this.pendingRequest = lr(x, function(b) { l.pendingRequest = null, r(b), l.saveEventData(), l.processRequests(o); }); } }, Di.prototype.queueRequest = function(e, t) { this.queue.push(e), this.processRequests(t); }; var Bi, pa, Xi = function(e) { function t() { e.call(this, "map.load"), this.success = {}, this.skuToken = ""; } return e && (t.__proto__ = e), (t.prototype = Object.create(e && e.prototype)).constructor = t, t.prototype.postMapLoadEvent = function(r, o, l, c) { this.skuToken = l; var f = !(!c && !Ut.ACCESS_TOKEN), v = Array.isArray(r) && r.some(function(x) { return Mi(x) || Hi(x); }); Ut.EVENTS_URL && f && v && this.queueRequest({ id: o, timestamp: Date.now() }, c); }, t.prototype.processRequests = function(r) { var o = this; if (!this.pendingRequest && this.queue.length !== 0) { var l = this.queue.shift(), c = l.id, f = l.timestamp; c && this.success[c] || (this.anonId || this.fetchEventData(), rr(this.anonId) || (this.anonId = Pt()), this.postEvent(f, { skuToken: this.skuToken }, function(v) { v || c && (o.success[c] = !0); }, r)); } }, t; }(Di), gs = new (function(e) { function t(r) { e.call(this, "appUserTurnstile"), this._customAccessToken = r; } return e && (t.__proto__ = e), (t.prototype = Object.create(e && e.prototype)).constructor = t, t.prototype.postTurnstileEvent = function(r, o) { Ut.EVENTS_URL && Ut.ACCESS_TOKEN && Array.isArray(r) && r.some(function(l) { return Mi(l) || Hi(l); }) && this.queueRequest(Date.now(), o); }, t.prototype.processRequests = function(r) { var o = this; if (!this.pendingRequest && this.queue.length !== 0) { this.anonId && this.eventData.lastSuccess && this.eventData.tokenU || this.fetchEventData(); var l = Xa(Ut.ACCESS_TOKEN), c = l ? l.u : Ut.ACCESS_TOKEN, f = c !== this.eventData.tokenU; rr(this.anonId) || (this.anonId = Pt(), f = !0); var v = this.queue.shift(); if (this.eventData.lastSuccess) { var x = new Date(this.eventData.lastSuccess), b = new Date(v), S = (v - this.eventData.lastSuccess) / 864e5; f = f || S >= 1 || S < -1 || x.getDate() !== b.getDate(); } else f = !0; if (!f) return this.processRequests(); this.postEvent(v, { "enabled.telemetry": !1 }, function(T) { T || (o.eventData.lastSuccess = v, o.eventData.tokenU = c); }, r); } }, t; }(Di))(), _s = gs.postTurnstileEvent.bind(gs), To = new Xi(), Io = To.postMapLoadEvent.bind(To), Ka = 500, xs = 50; function Ja() { ae.caches && !Bi && (Bi = ae.caches.open("mapbox-tiles")); } function Ao(e) { var t = e.indexOf("?"); return t < 0 ? e : e.slice(0, t); } var ha, Eo = 1 / 0; function Po() { return ha == null && (ha = ae.OffscreenCanvas && new ae.OffscreenCanvas(1, 1).getContext("2d") && typeof ae.createImageBitmap == "function"), ha; } var bs = { Unknown: "Unknown", Style: "Style", Source: "Source", Tile: "Tile", Glyphs: "Glyphs", SpriteImage: "SpriteImage", SpriteJSON: "SpriteJSON", Image: "Image" }; typeof Object.freeze == "function" && Object.freeze(bs); var ws = function(e) { function t(r, o, l) { o === 401 && Hi(l) && (r += ": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes"), e.call(this, r), this.status = o, this.url = l, this.name = this.constructor.name, this.message = r; } return e && (t.__proto__ = e), (t.prototype = Object.create(e && e.prototype)).constructor = t, t.prototype.toString = function() { return this.name + ": " + this.message + " (" + this.status + "): " + this.url; }, t; }(Error), fa = mi() ? function() { return self.worker && self.worker.referrer; } : function() { return (ae.location.protocol === "blob:" ? ae.parent : ae).location.href; }, bn, wn, Ya = function(e, t) { if (!(/^file:/.test(r = e.url) || /^file:/.test(fa()) && !/^\w+:/.test(r))) { if (ae.fetch && ae.Request && ae.AbortController && ae.Request.prototype.hasOwnProperty("signal")) return function(o, l) { var c, f = new ae.AbortController(), v = new ae.Request(o.url, { method: o.method || "GET", body: o.body, credentials: o.credentials, headers: o.headers, referrer: fa(), signal: f.signal }), x = !1, b = !1, S = (c = v.url).indexOf("sku=") > 0 && Hi(c); o.type === "json" && v.headers.set("Accept", "application/json"); var T = function(z, V, N) { if (!b) { if (z && z.message !== "SecurityError" && Tt(z), V && N) return C(V); var K = Date.now(); ae.fetch(v).then(function(W) { if (W.ok) { var ee = S ? W.clone() : null; return C(W, ee, K); } return l(new ws(W.statusText, W.status, o.url)); }).catch(function(W) { W.code !== 20 && l(new Error(W.message)); }); } }, C = function(z, V, N) { (o.type === "arrayBuffer" ? z.arrayBuffer() : o.type === "json" ? z.json() : z.text()).then(function(K) { b || (V && N && function(W, ee, ne) { if (Ja(), Bi) { var oe = { status: ee.status, statusText: ee.statusText, headers: new ae.Headers() }; ee.headers.forEach(function(me, be) { return oe.headers.set(be, me); }); var ue = Za(ee.headers.get("Cache-Control") || ""); ue["no-store"] || (ue["max-age"] && oe.headers.set("Expires", new Date(ne + 1e3 * ue["max-age"]).toUTCString()), new Date(oe.headers.get("Expires")).getTime() - ne < 42e4 || function(me, be) { if (pa === void 0) try { new Response(new ReadableStream()), pa = !0; } catch { pa = !1; } pa ? be(me.body) : me.blob().then(be); }(ee, function(me) { var be = new ae.Response(me, oe); Ja(), Bi && Bi.then(function(Te) { return Te.put(Ao(W.url), be); }).catch(function(Te) { return Tt(Te.message); }); })); } }(v, V, N), x = !0, l(null, K, z.headers.get("Cache-Control"), z.headers.get("Expires"))); }).catch(function(K) { b || l(new Error(K.message)); }); }; return S ? function(z, V) { if (Ja(), !Bi) return V(null); var N = Ao(z.url); Bi.then(function(K) { K.match(N).then(function(W) { var ee = function(ne) { if (!ne) return !1; var oe = new Date(ne.headers.get("Expires") || 0), ue = Za(ne.headers.get("Cache-Control") || ""); return oe > Date.now() && !ue["no-cache"]; }(W); K.delete(N), ee && K.put(N, W.clone()), V(null, W, ee); }).catch(V); }).catch(V); }(v, T) : T(null, null), { cancel: function() { b = !0, x || f.abort(); } }; }(e, t); if (mi() && self.worker && self.worker.actor) return self.worker.actor.send("getResource", e, t, void 0, !0); } var r; return function(o, l) { var c = new ae.XMLHttpRequest(); for (var f in c.open(o.method || "GET", o.url, !0), o.type === "arrayBuffer" && (c.responseType = "arraybuffer"), o.headers) c.setRequestHeader(f, o.headers[f]); return o.type === "json" && (c.responseType = "text", c.setRequestHeader("Accept", "application/json")), c.withCredentials = o.credentials === "include", c.onerror = function() { l(new Error(c.statusText)); }, c.onload = function() { if ((c.status >= 200 && c.status < 300 || c.status === 0) && c.response !== null) { var v = c.response; if (o.type === "json") try { v = JSON.parse(c.response); } catch (x) { return l(x); } l(null, v, c.getResponseHeader("Cache-Control"), c.getResponseHeader("Expires")); } else l(new ws(c.statusText, c.status, o.url)); }, c.send(o.body), { cancel: function() { return c.abort(); } }; }(e, t); }, Co = function(e, t) { return Ya(nt(e, { type: "arrayBuffer" }), t); }, lr = function(e, t) { return Ya(nt(e, { method: "POST" }), t); }, I = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII="; bn = [], wn = 0; var P = function(e, t) { if (ln.supported && (e.headers || (e.headers = {}), e.headers.accept = "image/webp,*/*"), wn >= Ut.MAX_PARALLEL_IMAGE_REQUESTS) { var r = { requestParameters: e, callback: t, cancelled: !1, cancel: function() { this.cancelled = !0; } }; return bn.push(r), r; } wn++; var o = !1, l = function() { if (!o) for (o = !0, wn--; bn.length && wn < Ut.MAX_PARALLEL_IMAGE_REQUESTS; ) { var f = bn.shift(); f.cancelled || (f.cancel = P(f.requestParameters, f.callback).cancel); } }, c = Co(e, function(f, v, x, b) { l(), f ? t(f) : v && (Po() ? function(S, T) { var C = new ae.Blob([new Uint8Array(S)], { type: "image/png" }); ae.createImageBitmap(C).then(function(z) { T(null, z); }).catch(function(z) { T(new Error("Could not load image because of " + z.message + ". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.")); }); }(v, t) : function(S, T, C, z) { var V = new ae.Image(), N = ae.URL; V.onload = function() { T(null, V), N.revokeObjectURL(V.src), V.onload = null, ae.requestAnimationFrame(function() { V.src = I; }); }, V.onerror = function() { return T(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.")); }; var K = new ae.Blob([new Uint8Array(S)], { type: "image/png" }); V.cacheControl = C, V.expires = z, V.src = S.byteLength ? N.createObjectURL(K) : I; }(v, t, x, b)); }); return { cancel: function() { c.cancel(), l(); } }; }; function M(e, t, r) { r[e] && r[e].indexOf(t) !== -1 || (r[e] = r[e] || [], r[e].push(t)); } function F(e, t, r) { if (r && r[e]) { var o = r[e].indexOf(t); o !== -1 && r[e].splice(o, 1); } } var j = function(e, t) { t === void 0 && (t = {}), nt(this, t), this.type = e; }, J = function(e) { function t(r, o) { o === void 0 && (o = {}), e.call(this, "error", nt({ error: r }, o)); } return e && (t.__proto__ = e), (t.prototype = Object.create(e && e.prototype)).constructor = t, t; }(j), Q = function() { }; Q.prototype.on = function(e, t) { return this._listeners = this._listeners || {}, M(e, t, this._listeners), this; }, Q.prototype.off = function(e, t) { return F(e, t, this._listeners), F(e, t, this._oneTimeListeners), this; }, Q.prototype.once = function(e, t) { return this._oneTimeListeners = this._oneTimeListeners || {}, M(e, t, this._oneTimeListeners), this; }, Q.prototype.fire = function(e, t) { typeof e == "string" && (e = new j(e, t || {})); var r = e.type; if (this.listens(r)) { e.target = this; for (var o = 0, l = this._listeners && this._listeners[r] ? this._listeners[r].slice() : []; o < l.length; o += 1) l[o].call(this, e); for (var c = 0, f = this._oneTimeListeners && this._oneTimeListeners[r] ? this._oneTimeListeners[r].slice() : []; c < f.length; c += 1) { var v = f[c]; F(r, v, this._oneTimeListeners), v.call(this, e); } var x = this._eventedParent; x && (nt(e, typeof this._eventedParentData == "function" ? this._eventedParentData() : this._eventedParentData), x.fire(e)); } else e instanceof J && console.error(e.error); return this; }, Q.prototype.listens = function(e) { return this._listeners && this._listeners[e] && this._listeners[e].length > 0 || this._oneTimeListeners && this._oneTimeListeners[e] && this._oneTimeListeners[e].length > 0 || this._eventedParent && this._eventedParent.listens(e); }, Q.prototype.setEventedParent = function(e, t) { return this._eventedParent = e, this._eventedParentData = t, this; }; var B = { $version: 8, $root: { version: { required: !0, type: "enum", values: [8] }, name: { type: "string" }, metadata: { type: "*" }, center: { type: "array", value: "number" }, zoom: { type: "number" }, bearing: { type: "number", default: 0, period: 360, units: "degrees" }, pitch: { type: "number", default: 0, units: "degrees" }, light: { type: "light" }, sources: { required: !0, type: "sources" }, sprite: { type: "string" }, glyphs: { type: "string" }, 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 }, "*": { 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: {} }, default: "mapbox" }, volatile: { type: "boolean", default: !1 }, "*": { type: "*" } }, source_geojson: { type: { required: !0, type: "enum", values: { geojson: {} } }, data: { 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: !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: {}, 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_background"], layout_background: { visibility: { type: "enum", values: { visible: {}, none: {} }, default: "visible", "property-type": "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", "property-type": "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", "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: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "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"] }, "property-type": "data-constant" }, "line-round-limit": { type: "number", default: 1.05, requires: [{ "line-join": "round" }], expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "line-sort-key": { type: "number", expression: { interpolated: !1, 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: !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"], 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: "number", default: 2, minimum: 0, units: "pixels", requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "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: {}, 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-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"], 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"],