@opengis/bi
Version:
BI data visualization module
551 lines • 1.11 MB
JavaScript
import { _ as Qs, h as Vp, j as Np } from "./import-file-XFI3CaVb.js";
import { createElementBlock as br, openBlock as wr, createElementVNode as Vt, createStaticVNode as jp, withDirectives as Up, toDisplayString as rh, vShow as $p, Fragment as ju, renderList as Uu, normalizeClass as qp, resolveComponent as Zp, createVNode as Gp } from "vue";
const Hp = {}, Xp = {
class: "shrink-0 size-3",
xmlns: "http://www.w3.org/2000/svg",
width: "24",
height: "24",
viewBox: "0 0 24 24",
fill: "none",
stroke: "currentColor",
"stroke-width": "2",
"stroke-linecap": "round",
"stroke-linejoin": "round"
};
function Wp(ae, Ie) {
return wr(), br("svg", Xp, Ie[0] || (Ie[0] = [
Vt("path", { d: "M18 6 6 18" }, null, -1),
Vt("path", { d: "m6 6 12 12" }, null, -1)
]));
}
const Kp = /* @__PURE__ */ Qs(Hp, [["render", Wp]]);
function Jp(ae) {
return [
{
type: "fill",
paint: {
"fill-color": ae.color || "#ccc",
"fill-outline-color": ae.color || "blue",
"fill-opacity": ae.opacity || 1
}
}
];
}
function Yp(ae) {
return [
{
type: "line",
paint: {
"line-color": ae.color || "#ccc",
"line-opacity": ae.opacity || 1
}
}
];
}
function Qp(ae) {
return [
{
type: "circle",
paint: {
"circle-radius": ae.radius || 6,
"circle-stroke-color": ae.stroke || "#ccc",
"circle-stroke-width": ae.width || 1,
"circle-color": ae.color || "blue"
}
}
];
}
function Nu(ae) {
if (!ae) return null;
const Ie = ae.type || "point";
return Ie === "polygon" ? Jp(ae) : Ie === "line" ? Yp(ae) : Qp(ae);
}
const ef = {
data() {
return {
layerList: [],
activeLayer: ""
};
},
computed: {
interactiveSources() {
return this.layerList.filter((ae) => ae == null ? void 0 : ae.interactive).map((ae) => ae.id);
}
},
methods: {
moveLayer(ae, Ie = this.map) {
Ie.getStyle().layers.forEach((Ae) => {
Ae.id.match(ae) && Ie.moveLayer(Ae.id);
});
},
async setVisible(ae, Ie = !0, Ae = this.map) {
if (!ae) return;
const Ve = (ae == null ? void 0 : ae.id) || ae, it = this.layerList.find((C) => C.id === ae) || ae;
if (!(it != null && it.id)) throw new Error("MixinError: Layer has no id");
const ot = Ae.getStyle().layers.filter((C) => C.id.match(Ve));
ot.forEach((C) => {
Ae.setLayoutProperty(
C.id,
"visibility",
Ie ? "visible" : "none"
);
}), !ot.length && Ie && await this.addLayer(it);
},
async addLayer(ae, Ie = this == null ? void 0 : this.map) {
var it, ot;
const Ae = this.layerList.find((C) => C.id === ae) || ae;
!this.map.getStyle() || this.map.getStyle().layers.find((C) => C.id === Ae.id) || (this.layerList.find((C) => C.id === Ae.id) || this.layerList.push(Ae), (Ae.service === "vtile" || Ae.service === "vector" || (it = Ae.url) != null && it.includes(".vmt")) && this.addVtileLayer(Ae, Ie), Ae.service === "geojson" && this.addGeoJsonLayer(Ae, Ie), ((ot = Ae.url) != null && ot.includes(".png") || ["tms", "raster"].includes(Ae.service)) && await this.addRasterLayer(Ae, Ie));
},
async addRasterLayer(ae, Ie = this == null ? void 0 : this.map) {
var Ae, Ve;
Ie.getSource(ae.id) || (await Ie.addSource(ae.id, {
type: "raster",
tiles: [ae == null ? void 0 : ae.url],
tileSize: 256,
...ae != null && ae.scheme ? { scheme: ae == null ? void 0 : ae.scheme } : {}
}), await Ie.addLayer(
{
id: ae.id,
type: "raster",
source: ae.id,
minzoom: 0,
maxzoom: (ae == null ? void 0 : ae.maxzoom) || 22
},
ae.basemap ? (Ve = (Ae = this.map.getStyle().layers) == null ? void 0 : Ae[0]) == null ? void 0 : Ve.id : null
));
},
async addVtileLayer(ae, Ie = this == null ? void 0 : this.map) {
var ot;
const Ae = ["props", "pointZoom"].filter((C) => ae[C]).map((C) => `&${C}=${ae[C]}`), Ve = {
type: "vector",
tiles: [
`${(ot = ae == null ? void 0 : ae.url) != null && ot.startsWith("http") ? "" : window.location.origin}${ae == null ? void 0 : ae.url}${Ae}`
],
minzoom: ae.minzoom || 3,
maxzoom: ae.maxzoom || 24
};
Ie.addSource(ae.id, Ve), (Nu(ae.style) || ae.layers || []).forEach((C, p) => {
const St = {
...C,
id: `${ae.id}-${p}`,
source: ae.id,
"source-layer": C["source-layer"] || ae.source || ae.id,
maxzoom: +C.maxzoom || 24,
minzoom: +C.minzoom || 0
};
Ie.addLayer(St);
});
},
async addGeoJsonLayer(ae, Ie = this.map) {
var it;
const Ae = ae.data || ((it = ae == null ? void 0 : ae.url) != null && it.startsWith("http") ? "" : window.location.origin) + ae.url;
Ie.addSource(ae.id, { type: "geojson", data: Ae }), (Nu(ae.style) || ae.layers || []).forEach((ot) => {
const C = {
...ot,
source: ae.id,
id: ot.id || ae.id,
maxzoom: +ot.maxzoom || 24,
minzoom: +ot.minzoom || 0,
type: ot.type || "circle"
};
Ie.addLayer(C);
});
},
setLayerData(ae, Ie) {
this.layerList = this.layerList.map((Ae) => Ae.id === ae ? { ...Ae, ...Ie } : Ae);
},
async removeLayer(ae, Ie = this.map) {
Ie.getSource(ae) && (await Ie.getStyle().layers.forEach(async (Ae) => {
Ae.source === ae && await Ie.removeLayer(Ae.id);
}), await Ie.removeSource(ae));
},
async setFilter(ae, Ie) {
var it;
const Ae = this.layerList.find((ot) => ot.id === ae), Ve = await ((it = this.map) == null ? void 0 : it.getSource(ae));
if (Ve && Ae.service === "vtile") {
await Ve.setTiles([
`${window.location.origin}${Ae.url}${Ae.url.includes("?") ? "&" : "?"}filter=${Ie}${Ae.props ? `&props=${Ae.props}` : ""}`
]);
return;
}
Ve && Ae.service;
},
async changeBaseLayer(ae) {
const Ie = ae != null && ae.id ? ae : this.layerList.find((Ve) => Ve.id === ae), { id: Ae } = Ie;
if (Ae && Ae !== this.activeLayer) {
if (this.activeLayer && this.map.setLayoutProperty(this.activeLayer, "visibility", "none"), this.activeLayer = Ae, this.map.getLayer(Ae)) {
this.map.setLayoutProperty(Ae, "visibility", "visible");
return;
}
await this.addRasterLayer(Ie);
}
},
async refreshLayer(ae, Ie = this.map) {
await Ie.getStyle().layers.forEach((Ae) => {
Ae.source === ae && Ie.removeLayer(Ae.id);
}), await Ie.removeSource(ae), this.setVisible(ae);
}
}
};
var $u = { exports: {} };
/**
* MapLibre GL JS
* @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v4.7.1/LICENSE.txt
*/
(function(ae, Ie) {
(function(Ae, Ve) {
ae.exports = Ve();
})(Np, function() {
var Ae = {}, Ve = {};
function it(C, p, St) {
if (Ve[C] = St, C === "index") {
var Zt = "var sharedModule = {}; (" + Ve.shared + ")(sharedModule); (" + Ve.worker + ")(sharedModule);", Ft = {};
return Ve.shared(Ft), Ve.index(Ae, Ft), typeof window < "u" && Ae.setWorkerUrl(window.URL.createObjectURL(new Blob([Zt], { type: "text/javascript" }))), Ae;
}
}
it("shared", ["exports"], function(C) {
function p(i, t, r, n) {
return new (r || (r = Promise))(function(l, u) {
function d(x) {
try {
_(n.next(x));
} catch (v) {
u(v);
}
}
function f(x) {
try {
_(n.throw(x));
} catch (v) {
u(v);
}
}
function _(x) {
var v;
x.done ? l(x.value) : (v = x.value, v instanceof r ? v : new r(function(w) {
w(v);
})).then(d, f);
}
_((n = n.apply(i, t || [])).next());
});
}
function St(i) {
return i && i.__esModule && Object.prototype.hasOwnProperty.call(i, "default") ? i.default : i;
}
typeof SuppressedError == "function" && SuppressedError;
var Zt = Ft;
function Ft(i, t) {
this.x = i, this.y = t;
}
Ft.prototype = { clone: function() {
return new Ft(this.x, this.y);
}, add: function(i) {
return this.clone()._add(i);
}, sub: function(i) {
return this.clone()._sub(i);
}, multByPoint: function(i) {
return this.clone()._multByPoint(i);
}, divByPoint: function(i) {
return this.clone()._divByPoint(i);
}, mult: function(i) {
return this.clone()._mult(i);
}, div: function(i) {
return this.clone()._div(i);
}, rotate: function(i) {
return this.clone()._rotate(i);
}, rotateAround: function(i, t) {
return this.clone()._rotateAround(i, t);
}, matMult: function(i) {
return this.clone()._matMult(i);
}, 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(i) {
return this.x === i.x && this.y === i.y;
}, dist: function(i) {
return Math.sqrt(this.distSqr(i));
}, distSqr: function(i) {
var t = i.x - this.x, r = i.y - this.y;
return t * t + r * r;
}, angle: function() {
return Math.atan2(this.y, this.x);
}, angleTo: function(i) {
return Math.atan2(this.y - i.y, this.x - i.x);
}, angleWith: function(i) {
return this.angleWithSep(i.x, i.y);
}, angleWithSep: function(i, t) {
return Math.atan2(this.x * t - this.y * i, this.x * i + this.y * t);
}, _matMult: function(i) {
var t = i[2] * this.x + i[3] * this.y;
return this.x = i[0] * this.x + i[1] * this.y, this.y = t, this;
}, _add: function(i) {
return this.x += i.x, this.y += i.y, this;
}, _sub: function(i) {
return this.x -= i.x, this.y -= i.y, this;
}, _mult: function(i) {
return this.x *= i, this.y *= i, this;
}, _div: function(i) {
return this.x /= i, this.y /= i, this;
}, _multByPoint: function(i) {
return this.x *= i.x, this.y *= i.y, this;
}, _divByPoint: function(i) {
return this.x /= i.x, this.y /= i.y, this;
}, _unit: function() {
return this._div(this.mag()), this;
}, _perp: function() {
var i = this.y;
return this.y = this.x, this.x = -i, this;
}, _rotate: function(i) {
var t = Math.cos(i), r = Math.sin(i), n = r * this.x + t * this.y;
return this.x = t * this.x - r * this.y, this.y = n, this;
}, _rotateAround: function(i, t) {
var r = Math.cos(i), n = Math.sin(i), l = t.y + n * (this.x - t.x) + r * (this.y - t.y);
return this.x = t.x + r * (this.x - t.x) - n * (this.y - t.y), this.y = l, this;
}, _round: function() {
return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
} }, Ft.convert = function(i) {
return i instanceof Ft ? i : Array.isArray(i) ? new Ft(i[0], i[1]) : i;
};
var de = St(Zt), ne = nr;
function nr(i, t, r, n) {
this.cx = 3 * i, this.bx = 3 * (r - i) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * t, this.by = 3 * (n - t) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = i, this.p1y = t, this.p2x = r, this.p2y = n;
}
nr.prototype = { sampleCurveX: function(i) {
return ((this.ax * i + this.bx) * i + this.cx) * i;
}, sampleCurveY: function(i) {
return ((this.ay * i + this.by) * i + this.cy) * i;
}, sampleCurveDerivativeX: function(i) {
return (3 * this.ax * i + 2 * this.bx) * i + this.cx;
}, solveCurveX: function(i, t) {
if (t === void 0 && (t = 1e-6), i < 0) return 0;
if (i > 1) return 1;
for (var r = i, n = 0; n < 8; n++) {
var l = this.sampleCurveX(r) - i;
if (Math.abs(l) < t) return r;
var u = this.sampleCurveDerivativeX(r);
if (Math.abs(u) < 1e-6) break;
r -= l / u;
}
var d = 0, f = 1;
for (r = i, n = 0; n < 20 && (l = this.sampleCurveX(r), !(Math.abs(l - i) < t)); n++) i > l ? d = r : f = r, r = 0.5 * (f - d) + d;
return r;
}, solve: function(i, t) {
return this.sampleCurveY(this.solveCurveX(i, t));
} };
var Ui = St(ne);
let zi, ar;
function Gt() {
return zi == null && (zi = typeof OffscreenCanvas < "u" && new OffscreenCanvas(1, 1).getContext("2d") && typeof createImageBitmap == "function"), zi;
}
function Sr() {
if (ar == null && (ar = !1, Gt())) {
const t = new OffscreenCanvas(5, 5).getContext("2d", { willReadFrequently: !0 });
if (t) {
for (let n = 0; n < 5 * 5; n++) {
const l = 4 * n;
t.fillStyle = `rgb(${l},${l + 1},${l + 2})`, t.fillRect(n % 5, Math.floor(n / 5), 1, 1);
}
const r = t.getImageData(0, 0, 5, 5).data;
for (let n = 0; n < 5 * 5 * 4; n++) if (n % 4 != 3 && r[n] !== n) {
ar = !0;
break;
}
}
}
return ar || !1;
}
function It(i, t, r, n) {
const l = new Ui(i, t, r, n);
return (u) => l.solve(u);
}
const $i = It(0.25, 0.1, 0.25, 1);
function Nt(i, t, r) {
return Math.min(r, Math.max(t, i));
}
function or(i, t, r) {
const n = r - t, l = ((i - t) % n + n) % n + t;
return l === t ? r : l;
}
function Ei(i, ...t) {
for (const r of t) for (const n in r) i[n] = r[n];
return i;
}
let Ln = 1;
function lr(i, t, r) {
const n = {};
for (const l in i) n[l] = t.call(this, i[l], l, i);
return n;
}
function en(i, t, r) {
const n = {};
for (const l in i) t.call(this, i[l], l, i) && (n[l] = i[l]);
return n;
}
function ut(i) {
return Array.isArray(i) ? i.map(ut) : typeof i == "object" && i ? lr(i, ut) : i;
}
const Rn = {};
function Kt(i) {
Rn[i] || (typeof console < "u" && console.warn(i), Rn[i] = !0);
}
function ui(i, t, r) {
return (r.y - i.y) * (t.x - i.x) > (t.y - i.y) * (r.x - i.x);
}
function Tr(i) {
return typeof WorkerGlobalScope < "u" && i !== void 0 && i instanceof WorkerGlobalScope;
}
let ms = null;
function cr(i) {
return typeof ImageBitmap < "u" && i instanceof ImageBitmap;
}
const Bn = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";
function Xr(i, t, r, n, l) {
return p(this, void 0, void 0, function* () {
if (typeof VideoFrame > "u") throw new Error("VideoFrame not supported");
const u = new VideoFrame(i, { timestamp: 0 });
try {
const d = u == null ? void 0 : u.format;
if (!d || !d.startsWith("BGR") && !d.startsWith("RGB")) throw new Error(`Unrecognized format ${d}`);
const f = d.startsWith("BGR"), _ = new Uint8ClampedArray(n * l * 4);
if (yield u.copyTo(_, function(x, v, w, I, A) {
const z = 4 * Math.max(-v, 0), E = (Math.max(0, w) - w) * I * 4 + z, B = 4 * I, j = Math.max(0, v), Q = Math.max(0, w);
return { rect: { x: j, y: Q, width: Math.min(x.width, v + I) - j, height: Math.min(x.height, w + A) - Q }, layout: [{ offset: E, stride: B }] };
}(i, t, r, n, l)), f) for (let x = 0; x < _.length; x += 4) {
const v = _[x];
_[x] = _[x + 2], _[x + 2] = v;
}
return _;
} finally {
u.close();
}
});
}
let Ir, di;
const qi = "AbortError";
function _s() {
return new Error(qi);
}
const Lr = { MAX_PARALLEL_IMAGE_REQUESTS: 16, MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME: 8, MAX_TILE_CACHE_ZOOM_LEVELS: 5, REGISTERED_PROTOCOLS: {}, WORKER_URL: "" };
function hr(i) {
return Lr.REGISTERED_PROTOCOLS[i.substring(0, i.indexOf("://"))];
}
const gs = "global-dispatcher";
class wi extends Error {
constructor(t, r, n, l) {
super(`AJAXError: ${r} (${t}): ${n}`), this.status = t, this.statusText = r, this.url = n, this.body = l;
}
}
const Zi = () => Tr(self) ? self.worker && self.worker.referrer : (window.location.protocol === "blob:" ? window.parent : window).location.href, Wr = function(i, t) {
if (/:\/\//.test(i.url) && !/^https?:|^file:/.test(i.url)) {
const n = hr(i.url);
if (n) return n(i, t);
if (Tr(self) && self.worker && self.worker.actor) return self.worker.actor.sendAsync({ type: "GR", data: i, targetMapId: gs }, t);
}
if (!(/^file:/.test(r = i.url) || /^file:/.test(Zi()) && !/^\w+:/.test(r))) {
if (fetch && Request && AbortController && Object.prototype.hasOwnProperty.call(Request.prototype, "signal")) return function(n, l) {
return p(this, void 0, void 0, function* () {
const u = new Request(n.url, { method: n.method || "GET", body: n.body, credentials: n.credentials, headers: n.headers, cache: n.cache, referrer: Zi(), signal: l.signal });
n.type !== "json" || u.headers.has("Accept") || u.headers.set("Accept", "application/json");
const d = yield fetch(u);
if (!d.ok) {
const x = yield d.blob();
throw new wi(d.status, d.statusText, n.url, x);
}
let f;
f = n.type === "arrayBuffer" || n.type === "image" ? d.arrayBuffer() : n.type === "json" ? d.json() : d.text();
const _ = yield f;
if (l.signal.aborted) throw _s();
return { data: _, cacheControl: d.headers.get("Cache-Control"), expires: d.headers.get("Expires") };
});
}(i, t);
if (Tr(self) && self.worker && self.worker.actor) return self.worker.actor.sendAsync({ type: "GR", data: i, mustQueue: !0, targetMapId: gs }, t);
}
var r;
return function(n, l) {
return new Promise((u, d) => {
var f;
const _ = new XMLHttpRequest();
_.open(n.method || "GET", n.url, !0), n.type !== "arrayBuffer" && n.type !== "image" || (_.responseType = "arraybuffer");
for (const x in n.headers) _.setRequestHeader(x, n.headers[x]);
n.type === "json" && (_.responseType = "text", !((f = n.headers) === null || f === void 0) && f.Accept || _.setRequestHeader("Accept", "application/json")), _.withCredentials = n.credentials === "include", _.onerror = () => {
d(new Error(_.statusText));
}, _.onload = () => {
if (!l.signal.aborted) if ((_.status >= 200 && _.status < 300 || _.status === 0) && _.response !== null) {
let x = _.response;
if (n.type === "json") try {
x = JSON.parse(_.response);
} catch (v) {
return void d(v);
}
u({ data: x, cacheControl: _.getResponseHeader("Cache-Control"), expires: _.getResponseHeader("Expires") });
} else {
const x = new Blob([_.response], { type: _.getResponseHeader("Content-Type") });
d(new wi(_.status, _.statusText, n.url, x));
}
}, l.signal.addEventListener("abort", () => {
_.abort(), d(_s());
}), _.send(n.body);
});
}(i, t);
};
function Kr(i) {
if (!i || i.indexOf("://") <= 0 || i.indexOf("data:image/") === 0 || i.indexOf("blob:") === 0) return !0;
const t = new URL(i), r = window.location;
return t.protocol === r.protocol && t.host === r.host;
}
function tn(i, t, r) {
r[i] && r[i].indexOf(t) !== -1 || (r[i] = r[i] || [], r[i].push(t));
}
function Pr(i, t, r) {
if (r && r[i]) {
const n = r[i].indexOf(t);
n !== -1 && r[i].splice(n, 1);
}
}
class Rr {
constructor(t, r = {}) {
Ei(this, r), this.type = t;
}
}
class Br extends Rr {
constructor(t, r = {}) {
super("error", Ei({ error: t }, r));
}
}
class ys {
on(t, r) {
return this._listeners = this._listeners || {}, tn(t, r, this._listeners), this;
}
off(t, r) {
return Pr(t, r, this._listeners), Pr(t, r, this._oneTimeListeners), this;
}
once(t, r) {
return r ? (this._oneTimeListeners = this._oneTimeListeners || {}, tn(t, r, this._oneTimeListeners), this) : new Promise((n) => this.once(t, n));
}
fire(t, r) {
typeof t == "string" && (t = new Rr(t, r || {}));
const n = t.type;
if (this.listens(n)) {
t.target = this;
const l = this._listeners && this._listeners[n] ? this._listeners[n].slice() : [];
for (const f of l) f.call(this, t);
const u = this._oneTimeListeners && this._oneTimeListeners[n] ? this._oneTimeListeners[n].slice() : [];
for (const f of u) Pr(n, f, this._oneTimeListeners), f.call(this, t);
const d = this._eventedParent;
d && (Ei(t, typeof this._eventedParentData == "function" ? this._eventedParentData() : this._eventedParentData), d.fire(t));
} else t instanceof Br && console.error(t.error);
return this;
}
listens(t) {
return this._listeners && this._listeners[t] && this._listeners[t].length > 0 || this._oneTimeListeners && this._oneTimeListeners[t] && this._oneTimeListeners[t].length > 0 || this._eventedParent && this._eventedParent.listens(t);
}
setEventedParent(t, r) {
return this._eventedParent = t, this._eventedParentData = r, this;
}
}
var ie = { $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" }, sky: { type: "sky" }, projection: { type: "projection" }, terrain: { type: "terrain" }, sources: { required: !0, type: "sources" }, sprite: { type: "sprite" }, 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: {}, 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: "*" }, 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", { "!": "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", "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" } }, 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: !1 } }, 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: !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: 0.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: 0.5, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "horizon-fog-blend": { type: "number", "property-type": "data-constant", default: 0.8, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "sky-horizon-blend": { type: "number", "property-type": "data-constant", default: 0.8, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 }, "atmosphere-blend": { type: "number", "property-type": "data-constant", default: 0.8, minimum: 0, maximum: 1, expression: { interpolated: !0, parameters: ["zoom"] }, transition: !0 } }, terrain: { source: { type: "string", required: !0 }, exaggeration: { type: "number", minimum: 0, default: 1 } }, projection: { type: { type: "enum", default: "mercator", values: { mercator: {}, globe: {} } } }, paint: ["paint_fill", "paint_line", "paint_circle", "paint_heatmap", "paint_fill-extrusion", "paint_symbol", "paint_raster", "paint_hillshade", "paint_background"], paint_fill: { "fill-antialias": { type: "boolean", default: !0, expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-color": { type: "color", default: "#000000", transition: !0, requires: [{ "!": "fill-pattern" }], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-outline-color": { type: "color", transition: !0, requires: [{ "!": "fill-pattern" }, { "fill-antialias": !0 }], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-translate-anchor": { type: "enum", values: { map: {}, viewport: {} }, default: "map", requires: ["fill-translate"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-pattern": { type: "resolvedImage", transition: !0, expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "cross-faded-data-driven" } }, "paint_fill-extrusion": { "fill-extrusion-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-extrusion-color": { type: "color", default: "#000000", transition: !0, requires: [{ "!": "fill-extrusion-pattern" }], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-extrusion-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-extrusion-translate-anchor": { type: "enum", values: { map: {}, viewport: {} }, default: "map", requires: ["fill-extrusion-translate"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "fill-extrusion-pattern": { type: "resolvedImage", transition: !0, expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "cross-faded-data-driven" }, "fill-extrusion-height": { type: "number", default: 0, minimum: 0, units: "meters", transition: !0, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-extrusion-base": { type: "number", default: 0, minimum: 0, units: "meters", transition: !0, requires: ["fill-extrusion-height"], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "fill-extrusion-vertical-gradient": { type: "boolean", default: !0, transition: !1, expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" } }, paint_line: { "line-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-color": { type: "color", default: "#000000", transition: !0, requires: [{ "!": "line-pattern" }], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "line-translate-anchor": { type: "enum", values: { map: {}, viewport: {} }, default: "map", requires: ["line-translate"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "line-width": { type: "number", default: 1, minimum: 0, transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-gap-width": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-offset": { type: "number", default: 0, transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-blur": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "line-dasharray": { type: "array", value: "number", minimum: 0, transition: !0, units: "line widths", requires: [{ "!": "line-pattern" }], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "cross-faded" }, "line-pattern": { type: "resolvedImage", transition: !0, expression: { interpolated: !1, parameters: ["zoom", "feature"] }, "property-type": "cross-faded-data-driven" }, "line-gradient": { type: "color", transition: !1, requires: [{ "!": "line-dasharray" }, { "!": "line-pattern" }, { source: "geojson", has: { lineMetrics: !0 } }], expression: { interpolated: !0, parameters: ["line-progress"] }, "property-type": "color-ramp" } }, paint_circle: { "circle-radius": { type: "number", default: 5, minimum: 0, transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "circle-color": { type: "color", default: "#000000", transition: !0, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "circle-blur": { type: "number", default: 0, transition: !0, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "circle-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "circle-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "circle-translate-anchor": { type: "enum", values: { map: {}, viewport: {} }, default: "map", requires: ["circle-translate"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "circle-pitch-scale": { type: "enum", values: { map: {}, viewport: {} }, default: "map", expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "circle-pitch-alignment": { type: "enum", values: { map: {}, viewport: {} }, default: "viewport", expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "circle-stroke-width": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "circle-stroke-color": { type: "color", default: "#000000", transition: !0, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "circle-stroke-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" } }, paint_heatmap: { "heatmap-radius": { type: "number", default: 30, minimum: 1, transition: !0, units: "pixels", expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "dat