@watergis/mapbox-gl-export
Version:
This module adds control which can export PDF and images.
438 lines • 1.81 MB
JavaScript
var kg = Object.defineProperty;
var Eg = (x, m, _) => m in x ? kg(x, m, { enumerable: !0, configurable: !0, writable: !0, value: _ }) : x[m] = _;
var Ku = (x, m, _) => Eg(x, typeof m != "symbol" ? m + "" : m, _);
import zg, { Map as Dg } from "mapbox-gl";
var Kh = { exports: {} };
/**
* MapLibre GL JS
* @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v5.2.0/LICENSE.txt
*/
var Ng = Kh.exports, tf;
function Rg() {
return tf || (tf = 1, function(x, m) {
(function(_, b) {
x.exports = b();
})(Ng, function() {
var _ = {}, b = {};
function T(y, s, D) {
if (b[y] = D, y === "index") {
var V = "var sharedModule = {}; (" + b.shared + ")(sharedModule); (" + b.worker + ")(sharedModule);", $ = {};
return b.shared($), b.index(_, $), typeof window < "u" && _.setWorkerUrl(window.URL.createObjectURL(new Blob([V], { type: "text/javascript" }))), _;
}
}
T("shared", ["exports"], function(y) {
function s(r, t, n, a) {
return new (n || (n = Promise))(function(c, p) {
function d(M) {
try {
A(a.next(M));
} catch (E) {
p(E);
}
}
function v(M) {
try {
A(a.throw(M));
} catch (E) {
p(E);
}
}
function A(M) {
var E;
M.done ? c(M.value) : (E = M.value, E instanceof n ? E : new n(function(N) {
N(E);
})).then(d, v);
}
A((a = a.apply(r, t || [])).next());
});
}
function D(r) {
return r && r.__esModule && Object.prototype.hasOwnProperty.call(r, "default") ? r.default : r;
}
var V, $;
function X() {
if ($) return V;
function r(t, n) {
this.x = t, this.y = n;
}
return $ = 1, V = r, r.prototype = { clone: function() {
return new r(this.x, this.y);
}, add: function(t) {
return this.clone()._add(t);
}, sub: function(t) {
return this.clone()._sub(t);
}, multByPoint: function(t) {
return this.clone()._multByPoint(t);
}, divByPoint: function(t) {
return this.clone()._divByPoint(t);
}, mult: function(t) {
return this.clone()._mult(t);
}, div: function(t) {
return this.clone()._div(t);
}, rotate: function(t) {
return this.clone()._rotate(t);
}, rotateAround: function(t, n) {
return this.clone()._rotateAround(t, n);
}, matMult: function(t) {
return this.clone()._matMult(t);
}, 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(t) {
return this.x === t.x && this.y === t.y;
}, dist: function(t) {
return Math.sqrt(this.distSqr(t));
}, distSqr: function(t) {
var n = t.x - this.x, a = t.y - this.y;
return n * n + a * a;
}, angle: function() {
return Math.atan2(this.y, this.x);
}, angleTo: function(t) {
return Math.atan2(this.y - t.y, this.x - t.x);
}, angleWith: function(t) {
return this.angleWithSep(t.x, t.y);
}, angleWithSep: function(t, n) {
return Math.atan2(this.x * n - this.y * t, this.x * t + this.y * n);
}, _matMult: function(t) {
var n = t[2] * this.x + t[3] * this.y;
return this.x = t[0] * this.x + t[1] * this.y, this.y = n, this;
}, _add: function(t) {
return this.x += t.x, this.y += t.y, this;
}, _sub: function(t) {
return this.x -= t.x, this.y -= t.y, this;
}, _mult: function(t) {
return this.x *= t, this.y *= t, this;
}, _div: function(t) {
return this.x /= t, this.y /= t, this;
}, _multByPoint: function(t) {
return this.x *= t.x, this.y *= t.y, this;
}, _divByPoint: function(t) {
return this.x /= t.x, this.y /= t.y, this;
}, _unit: function() {
return this._div(this.mag()), this;
}, _perp: function() {
var t = this.y;
return this.y = this.x, this.x = -t, this;
}, _rotate: function(t) {
var n = Math.cos(t), a = Math.sin(t), c = a * this.x + n * this.y;
return this.x = n * this.x - a * this.y, this.y = c, this;
}, _rotateAround: function(t, n) {
var a = Math.cos(t), c = Math.sin(t), p = n.y + c * (this.x - n.x) + a * (this.y - n.y);
return this.x = n.x + a * (this.x - n.x) - c * (this.y - n.y), this.y = p, this;
}, _round: function() {
return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
} }, r.convert = function(t) {
return t instanceof r ? t : Array.isArray(t) ? new r(t[0], t[1]) : t;
}, V;
}
typeof SuppressedError == "function" && SuppressedError;
var Q, z, he = D(X()), pe = function() {
if (z) return Q;
function r(t, n, a, c) {
this.cx = 3 * t, this.bx = 3 * (a - t) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * n, this.by = 3 * (c - n) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = t, this.p1y = n, this.p2x = a, this.p2y = c;
}
return z = 1, Q = r, r.prototype = { sampleCurveX: function(t) {
return ((this.ax * t + this.bx) * t + this.cx) * t;
}, sampleCurveY: function(t) {
return ((this.ay * t + this.by) * t + this.cy) * t;
}, sampleCurveDerivativeX: function(t) {
return (3 * this.ax * t + 2 * this.bx) * t + this.cx;
}, solveCurveX: function(t, n) {
if (n === void 0 && (n = 1e-6), t < 0) return 0;
if (t > 1) return 1;
for (var a = t, c = 0; c < 8; c++) {
var p = this.sampleCurveX(a) - t;
if (Math.abs(p) < n) return a;
var d = this.sampleCurveDerivativeX(a);
if (Math.abs(d) < 1e-6) break;
a -= p / d;
}
var v = 0, A = 1;
for (a = t, c = 0; c < 20 && (p = this.sampleCurveX(a), !(Math.abs(p - t) < n)); c++) t > p ? v = a : A = a, a = 0.5 * (A - v) + v;
return a;
}, solve: function(t, n) {
return this.sampleCurveY(this.solveCurveX(t, n));
} }, Q;
}(), Ce = D(pe);
let ce, Pe;
function et() {
return ce == null && (ce = typeof OffscreenCanvas < "u" && new OffscreenCanvas(1, 1).getContext("2d") && typeof createImageBitmap == "function"), ce;
}
function ft() {
if (Pe == null && (Pe = !1, et())) {
const t = new OffscreenCanvas(5, 5).getContext("2d", { willReadFrequently: !0 });
if (t) {
for (let a = 0; a < 5 * 5; a++) {
const c = 4 * a;
t.fillStyle = `rgb(${c},${c + 1},${c + 2})`, t.fillRect(a % 5, Math.floor(a / 5), 1, 1);
}
const n = t.getImageData(0, 0, 5, 5).data;
for (let a = 0; a < 5 * 5 * 4; a++) if (a % 4 != 3 && n[a] !== a) {
Pe = !0;
break;
}
}
}
return Pe || !1;
}
var Ct, zt = 1e-6, it = typeof Float32Array < "u" ? Float32Array : Array;
function ze() {
var r = new it(9);
return it != Float32Array && (r[1] = 0, r[2] = 0, r[3] = 0, r[5] = 0, r[6] = 0, r[7] = 0), r[0] = 1, r[4] = 1, r[8] = 1, r;
}
function gt(r) {
return r[0] = 1, r[1] = 0, r[2] = 0, r[3] = 0, r[4] = 0, r[5] = 1, r[6] = 0, r[7] = 0, r[8] = 0, r[9] = 0, r[10] = 1, r[11] = 0, r[12] = 0, r[13] = 0, r[14] = 0, r[15] = 1, r;
}
function Dt() {
var r = new it(3);
return it != Float32Array && (r[0] = 0, r[1] = 0, r[2] = 0), r;
}
function ge(r, t, n) {
var a = new it(3);
return a[0] = r, a[1] = t, a[2] = n, a;
}
function me(r, t, n) {
var a = t[0], c = t[1], p = t[2], d = t[3];
return r[0] = n[0] * a + n[4] * c + n[8] * p + n[12] * d, r[1] = n[1] * a + n[5] * c + n[9] * p + n[13] * d, r[2] = n[2] * a + n[6] * c + n[10] * p + n[14] * d, r[3] = n[3] * a + n[7] * c + n[11] * p + n[15] * d, r;
}
function Fe() {
var r = new it(4);
return it != Float32Array && (r[0] = 0, r[1] = 0, r[2] = 0), r[3] = 1, r;
}
function Ee() {
var r = new it(2);
return it != Float32Array && (r[0] = 0, r[1] = 0), r;
}
function xt(r, t) {
var n = new it(2);
return n[0] = r, n[1] = t, n;
}
Math.hypot || (Math.hypot = function() {
for (var r = 0, t = arguments.length; t--; ) r += arguments[t] * arguments[t];
return Math.sqrt(r);
}), Dt(), Ct = new it(4), it != Float32Array && (Ct[0] = 0, Ct[1] = 0, Ct[2] = 0, Ct[3] = 0), Dt(), ge(1, 0, 0), ge(0, 1, 0), Fe(), Fe(), ze(), Ee();
const ot = 8192;
function Pt(r, t, n) {
return t * (ot / (r.tileSize * Math.pow(2, n - r.tileID.overscaledZ)));
}
function ct(r, t) {
return (r % t + t) % t;
}
function kt(r, t, n) {
return r * (1 - n) + t * n;
}
function Et(r) {
if (r <= 0) return 0;
if (r >= 1) return 1;
const t = r * r, n = t * r;
return 4 * (r < 0.5 ? n : 3 * (r - t) + n - 0.75);
}
function ai(r, t, n, a) {
const c = new Ce(r, t, n, a);
return (p) => c.solve(p);
}
const ie = ai(0.25, 0.1, 0.25, 1);
function be(r, t, n) {
return Math.min(n, Math.max(t, r));
}
function Ae(r, t, n) {
const a = n - t, c = ((r - t) % a + a) % a + t;
return c === t ? n : c;
}
function Re(r, ...t) {
for (const n of t) for (const a in n) r[a] = n[a];
return r;
}
let We = 1;
function ht(r, t, n) {
const a = {};
for (const c in r) a[c] = t.call(this, r[c], c, r);
return a;
}
function dt(r, t, n) {
const a = {};
for (const c in r) t.call(this, r[c], c, r) && (a[c] = r[c]);
return a;
}
function ut(r) {
return Array.isArray(r) ? r.map(ut) : typeof r == "object" && r ? ht(r, ut) : r;
}
const Qt = {};
function Ut(r) {
Qt[r] || (typeof console < "u" && console.warn(r), Qt[r] = !0);
}
function Kt(r, t, n) {
return (n.y - r.y) * (t.x - r.x) > (t.y - r.y) * (n.x - r.x);
}
function ii(r) {
return typeof WorkerGlobalScope < "u" && r !== void 0 && r instanceof WorkerGlobalScope;
}
let fi = null;
function Mt(r) {
return typeof ImageBitmap < "u" && r instanceof ImageBitmap;
}
const Me = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";
function Li(r, t, n, a, c) {
return s(this, void 0, void 0, function* () {
if (typeof VideoFrame > "u") throw new Error("VideoFrame not supported");
const p = new VideoFrame(r, { timestamp: 0 });
try {
const d = p == null ? void 0 : p.format;
if (!d || !d.startsWith("BGR") && !d.startsWith("RGB")) throw new Error(`Unrecognized format ${d}`);
const v = d.startsWith("BGR"), A = new Uint8ClampedArray(a * c * 4);
if (yield p.copyTo(A, function(M, E, N, q, Z) {
const G = 4 * Math.max(1, 0), J = (Math.max(0, N) - N) * q * 4 + G, le = 4 * q, ve = Math.max(0, E), je = Math.max(0, N);
return { rect: { x: ve, y: je, width: Math.min(M.width, E + q) - ve, height: Math.min(M.height, N + Z) - je }, layout: [{ offset: J, stride: le }] };
}(r, t, n, a, c)), v) for (let M = 0; M < A.length; M += 4) {
const E = A[M];
A[M] = A[M + 2], A[M + 2] = E;
}
return A;
} finally {
p.close();
}
});
}
let mi, Wt;
function ti(r, t, n, a) {
return r.addEventListener(t, n, a), { unsubscribe: () => {
r.removeEventListener(t, n, a);
} };
}
function ri(r) {
return r / Math.PI * 180;
}
const ni = "AbortError";
function vi() {
return new Error(ni);
}
const ki = { MAX_PARALLEL_IMAGE_REQUESTS: 16, MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME: 8, MAX_TILE_CACHE_ZOOM_LEVELS: 5, REGISTERED_PROTOCOLS: {}, WORKER_URL: "" };
function Di(r) {
return ki.REGISTERED_PROTOCOLS[r.substring(0, r.indexOf("://"))];
}
const ji = "global-dispatcher";
class Zi extends Error {
constructor(t, n, a, c) {
super(`AJAXError: ${n} (${t}): ${a}`), this.status = t, this.statusText = n, this.url = a, this.body = c;
}
}
const ir = () => ii(self) ? self.worker && self.worker.referrer : (window.location.protocol === "blob:" ? window.parent : window).location.href, Mi = function(r, t) {
if (/:\/\//.test(r.url) && !/^https?:|^file:/.test(r.url)) {
const a = Di(r.url);
if (a) return a(r, t);
if (ii(self) && self.worker && self.worker.actor) return self.worker.actor.sendAsync({ type: "GR", data: r, targetMapId: ji }, t);
}
if (!(/^file:/.test(n = r.url) || /^file:/.test(ir()) && !/^\w+:/.test(n))) {
if (fetch && Request && AbortController && Object.prototype.hasOwnProperty.call(Request.prototype, "signal")) return function(a, c) {
return s(this, void 0, void 0, function* () {
const p = new Request(a.url, { method: a.method || "GET", body: a.body, credentials: a.credentials, headers: a.headers, cache: a.cache, referrer: ir(), signal: c.signal });
let d, v;
a.type !== "json" || p.headers.has("Accept") || p.headers.set("Accept", "application/json");
try {
d = yield fetch(p);
} catch (M) {
throw new Zi(0, M.message, a.url, new Blob());
}
if (!d.ok) {
const M = yield d.blob();
throw new Zi(d.status, d.statusText, a.url, M);
}
v = a.type === "arrayBuffer" || a.type === "image" ? d.arrayBuffer() : a.type === "json" ? d.json() : d.text();
const A = yield v;
if (c.signal.aborted) throw vi();
return { data: A, cacheControl: d.headers.get("Cache-Control"), expires: d.headers.get("Expires") };
});
}(r, t);
if (ii(self) && self.worker && self.worker.actor) return self.worker.actor.sendAsync({ type: "GR", data: r, mustQueue: !0, targetMapId: ji }, t);
}
var n;
return function(a, c) {
return new Promise((p, d) => {
var v;
const A = new XMLHttpRequest();
A.open(a.method || "GET", a.url, !0), a.type !== "arrayBuffer" && a.type !== "image" || (A.responseType = "arraybuffer");
for (const M in a.headers) A.setRequestHeader(M, a.headers[M]);
a.type === "json" && (A.responseType = "text", !((v = a.headers) === null || v === void 0) && v.Accept || A.setRequestHeader("Accept", "application/json")), A.withCredentials = a.credentials === "include", A.onerror = () => {
d(new Error(A.statusText));
}, A.onload = () => {
if (!c.signal.aborted) if ((A.status >= 200 && A.status < 300 || A.status === 0) && A.response !== null) {
let M = A.response;
if (a.type === "json") try {
M = JSON.parse(A.response);
} catch (E) {
return void d(E);
}
p({ data: M, cacheControl: A.getResponseHeader("Cache-Control"), expires: A.getResponseHeader("Expires") });
} else {
const M = new Blob([A.response], { type: A.getResponseHeader("Content-Type") });
d(new Zi(A.status, A.statusText, a.url, M));
}
}, c.signal.addEventListener("abort", () => {
A.abort(), d(vi());
}), A.send(a.body);
});
}(r, t);
};
function qi(r) {
if (!r || r.indexOf("://") <= 0 || r.indexOf("data:image/") === 0 || r.indexOf("blob:") === 0) return !0;
const t = new URL(r), n = window.location;
return t.protocol === n.protocol && t.host === n.host;
}
function li(r, t, n) {
n[r] && n[r].indexOf(t) !== -1 || (n[r] = n[r] || [], n[r].push(t));
}
function Hr(r, t, n) {
if (n && n[r]) {
const a = n[r].indexOf(t);
a !== -1 && n[r].splice(a, 1);
}
}
class rr {
constructor(t, n = {}) {
Re(this, n), this.type = t;
}
}
class ln extends rr {
constructor(t, n = {}) {
super("error", Re({ error: t }, n));
}
}
class Ve {
on(t, n) {
return this._listeners = this._listeners || {}, li(t, n, this._listeners), { unsubscribe: () => {
this.off(t, n);
} };
}
off(t, n) {
return Hr(t, n, this._listeners), Hr(t, n, this._oneTimeListeners), this;
}
once(t, n) {
return n ? (this._oneTimeListeners = this._oneTimeListeners || {}, li(t, n, this._oneTimeListeners), this) : new Promise((a) => this.once(t, a));
}
fire(t, n) {
typeof t == "string" && (t = new rr(t, n || {}));
const a = t.type;
if (this.listens(a)) {
t.target = this;
const c = this._listeners && this._listeners[a] ? this._listeners[a].slice() : [];
for (const v of c) v.call(this, t);
const p = this._oneTimeListeners && this._oneTimeListeners[a] ? this._oneTimeListeners[a].slice() : [];
for (const v of p) Hr(a, v, this._oneTimeListeners), v.call(this, t);
const d = this._eventedParent;
d && (Re(t, typeof this._eventedParentData == "function" ? this._eventedParentData() : this._eventedParentData), d.fire(t));
} else t instanceof ln && 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, n) {
return this._eventedParent = t, this._eventedParentData = n, this;
}
}
var B = { $version: 8, $root: { version: { required: !0, type: "enum", values: [8] }, name: { type: "string" }, metadata: { type: "*" }, center: { type: "array", value: "number" }, centerAltitude: { type: "number" }, zoom: { type: "number" }, bearing: { type: "number", default: 0, period: 360, units: "degrees" }, pitch: { type: "number", default: 0, units: "degrees" }, roll: { type: "number", default: 0, units: "degrees" }, 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: "projectionDefinition", default: "mercator", "property-type": "data-constant", transition: !1, expression: { interpolated: !0, parameters: ["zoom"] } } }, 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": "data-driven" }, "heatmap-weight": { type: "number", default: 1, minimum: 0, transition: !1, expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "heatmap-intensity": { type: "number", default: 1, minimum: 0, transition: !0, expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "heatmap-color": { type: "color", default: ["interpolate", ["linear"], ["heatmap-density"], 0, "rgba(0, 0, 255, 0)", 0.1, "royalblue", 0.3, "cyan", 0.5, "lime", 0.7, "yellow", 1, "red"], transition: !1, expression: { interpolated: !0, parameters: ["heatmap-density"] }, "property-type": "color-ramp" }, "heatmap-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: !0, expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" } }, paint_symbol: { "icon-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, transition: !0, requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "icon-color": { type: "color", default: "#000000", transition: !0, requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "icon-halo-color": { type: "color", default: "rgba(0, 0, 0, 0)", transition: !0, requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "icon-halo-width": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "icon-halo-blur": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom", "feature", "feature-state"] }, "property-type": "data-driven" }, "icon-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", requires: ["icon-image"], expression: { interpolated: !0, parameters: ["zoom"] }, "property-type": "data-constant" }, "icon-translate-anchor": { type: "enum", values: { map: {}, viewport: {} }, default: "map", requires: ["icon-image", "icon-translate"], expression: { interpolated: !1, parameters: ["zoom"] }, "property-type": "data-constant" }, "text-opacity": { type: "numb