@phila/layerboard 3.0.0-beta.34 → 3.0.0-beta.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
- import { defineComponent as ge, ref as k, watch as Ee, computed as _, nextTick as Ze, onMounted as it, onUnmounted as At, createElementBlock as M, openBlock as m, createVNode as J, unref as f, withCtx as Ge, createBlock as G, createCommentVNode as R, Fragment as de, renderList as we, useAttrs as Ht, toRef as Jt, normalizeClass as se, createElementVNode as P, toDisplayString as H, renderSlot as me, withDirectives as Bt, mergeProps as ht, vModelDynamic as Kt, createTextVNode as ke, normalizeProps as $t, guardReactiveProps as Mt, normalizeStyle as ye, withModifiers as Qt, readonly as q, provide as N, onBeforeUnmount as Xt, useId as Pt, resolveComponent as Yt, vShow as eo } from "vue";
2
- import { Map as to, DrawTool as oo, RasterLayer as Ft, CircleLayer as Tt, FillLayer as It, LineLayer as mt, MapMarker as ao, MapPopup as io } from "@phila/phila-ui-map-core";
3
- import { cn as gt, Icon as Ce, BaseLink as lo, ActionContent as Et } from "@phila/phila-ui-core";
4
- const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
1
+ import { defineComponent as ge, ref as x, watch as Oe, computed as _, nextTick as Ne, onMounted as lt, onUnmounted as Vt, createElementBlock as M, openBlock as m, createVNode as H, unref as f, withCtx as He, createBlock as q, createCommentVNode as A, Fragment as ue, renderList as Le, useAttrs as Kt, toRef as Qt, normalizeClass as ne, createElementVNode as P, toDisplayString as G, renderSlot as me, withDirectives as Zt, mergeProps as vt, vModelDynamic as Xt, createTextVNode as xe, normalizeProps as Pt, guardReactiveProps as Ft, normalizeStyle as ye, withModifiers as Yt, readonly as j, provide as N, onBeforeUnmount as eo, useId as Tt, resolveComponent as to, vShow as oo } from "vue";
2
+ import { Map as ao, DrawTool as io, RasterLayer as It, CircleLayer as Et, FillLayer as Ot, LineLayer as gt, MapMarker as lo, MapPopup as no } from "@phila/phila-ui-map-core";
3
+ import { cn as bt, Icon as ke, BaseLink as ro, ActionContent as zt } from "@phila/phila-ui-core";
4
+ const so = { class: "map-panel" }, co = /* @__PURE__ */ ge({
5
5
  __name: "MapPanel",
6
6
  props: {
7
7
  visibleLayers: {},
@@ -24,57 +24,57 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
24
24
  },
25
25
  emits: ["zoom", "layerLoading", "layerError"],
26
26
  setup(e, { emit: a }) {
27
- const l = e, o = a, r = k(null), n = k(null), u = k(0);
27
+ const l = e, o = a, r = x(null), n = x(null), u = x(0);
28
28
  function w(t) {
29
29
  o("zoom", t), n.value && (u.value = p(n.value));
30
30
  }
31
31
  function p(t) {
32
- const c = t.getZoom(), b = t.getCenter().lat, $ = 559082264028e-3, E = b * Math.PI / 180;
33
- return $ * Math.cos(E) / Math.pow(2, c);
32
+ const c = t.getZoom(), b = t.getCenter().lat, k = 559082264028e-3, I = b * Math.PI / 180;
33
+ return k * Math.cos(I) / Math.pow(2, c);
34
34
  }
35
- const C = k({}), y = k(null), h = k(/* @__PURE__ */ new Set());
36
- async function i(t, c, s, b, $) {
37
- const E = encodeURIComponent(b || "1=1"), B = JSON.stringify({
35
+ const C = x({}), y = x(null), h = x(/* @__PURE__ */ new Set());
36
+ async function i(t, c, s, b, k) {
37
+ const I = encodeURIComponent(b || "1=1"), B = JSON.stringify({
38
38
  xmin: c.west,
39
39
  ymin: c.south,
40
40
  xmax: c.east,
41
41
  ymax: c.north,
42
42
  spatialReference: { wkid: 4326 }
43
- }), ee = $ !== void 0 && $ < 14 ? `&maxAllowableOffset=${360 / (Math.pow(2, $) * 512)}` : "", Y = 2e3;
44
- let ie = 0, oe = [], A = !0;
45
- for (; A; ) {
46
- const j = `${t}/query?where=${E}&geometry=${encodeURIComponent(B)}&geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelIntersects&outFields=*&returnGeometry=true&resultRecordCount=${Y}&resultOffset=${ie}${ee}&f=geojson`, U = await fetch(j);
47
- if (!U.ok)
48
- throw new Error(`HTTP ${U.status}: ${U.statusText}`);
49
- const ue = await U.json();
50
- ue.features && ue.features.length > 0 ? (oe = oe.concat(ue.features), ie += ue.features.length, A = ue.features.length === Y) : A = !1;
43
+ }), Y = k !== void 0 && k < 14 ? `&maxAllowableOffset=${360 / (Math.pow(2, k) * 512)}` : "", Q = 2e3;
44
+ let pe = 0, we = [], se = !0;
45
+ for (; se; ) {
46
+ const te = `${t}/query?where=${I}&geometry=${encodeURIComponent(B)}&geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelIntersects&outFields=*&returnGeometry=true&resultRecordCount=${Q}&resultOffset=${pe}${Y}&f=geojson`, R = await fetch(te);
47
+ if (!R.ok)
48
+ throw new Error(`HTTP ${R.status}: ${R.statusText}`);
49
+ const W = await R.json();
50
+ W.features && W.features.length > 0 ? (we = we.concat(W.features), pe += W.features.length, se = W.features.length === Q) : se = !1;
51
51
  }
52
- return oe = oe.map((j) => {
53
- if (j.properties) {
54
- const U = {};
55
- for (const ue of Object.keys(j.properties))
56
- U[ue.toLowerCase()] = j.properties[ue];
57
- return { ...j, properties: U };
52
+ return we = we.map((te) => {
53
+ if (te.properties) {
54
+ const R = {};
55
+ for (const W of Object.keys(te.properties))
56
+ R[W.toLowerCase()] = te.properties[W];
57
+ return { ...te, properties: R };
58
58
  }
59
- return j;
59
+ return te;
60
60
  }), {
61
61
  type: "FeatureCollection",
62
- features: oe
62
+ features: we
63
63
  };
64
64
  }
65
65
  async function g(t, c, s) {
66
- const b = c.map(async ($) => {
67
- const E = l.layerList.find((B) => B.config.id === $)?.config;
68
- if (E) {
69
- o("layerLoading", $, !0);
66
+ const b = c.map(async (k) => {
67
+ const I = l.layerList.find((B) => B.config.id === k)?.config;
68
+ if (I) {
69
+ o("layerLoading", k, !0);
70
70
  try {
71
- const B = await i(E.url, t, $, E.where, s);
72
- C.value = { ...C.value, [$]: B }, o("layerError", $, null);
71
+ const B = await i(I.url, t, k, I.where, s);
72
+ C.value = { ...C.value, [k]: B }, o("layerError", k, null);
73
73
  } catch (B) {
74
- const ee = B instanceof Error ? B.message : "Failed to load";
75
- o("layerError", $, ee);
74
+ const Y = B instanceof Error ? B.message : "Failed to load";
75
+ o("layerError", k, Y);
76
76
  } finally {
77
- o("layerLoading", $, !1);
77
+ o("layerLoading", k, !1);
78
78
  }
79
79
  }
80
80
  });
@@ -93,7 +93,7 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
93
93
  function S(t) {
94
94
  y.value = t.bounds, L(t.bounds, t.zoom);
95
95
  }
96
- function I(t) {
96
+ function E(t) {
97
97
  n.value = t;
98
98
  const c = t.getBounds();
99
99
  y.value = {
@@ -105,10 +105,10 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
105
105
  const s = t.getZoom();
106
106
  o("zoom", s), u.value = p(t), L(y.value, s);
107
107
  }
108
- Ee(
108
+ Oe(
109
109
  () => l.visibleLayers,
110
110
  async () => {
111
- if (ce.value.length > 0 && Te(), y.value) {
111
+ if (re.value.length > 0 && Ie(), y.value) {
112
112
  const t = new Set(l.visibleLayers), c = [...t].filter((b) => !h.value.has(b));
113
113
  h.value = new Set(t);
114
114
  const s = d(c);
@@ -135,12 +135,12 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
135
135
  () => l.layerList.filter(
136
136
  (t) => t.config.type === "fill" && t.config.outlinePaint && F(t.config.id) && V(t.config)
137
137
  ).map((t) => t.config)
138
- ), te = _(
138
+ ), ee = _(
139
139
  () => l.layerList.filter((t) => t.config.type === "line" && F(t.config.id) && V(t.config)).map((t) => t.config)
140
140
  );
141
- Ee(te, async (t) => {
141
+ Oe(ee, async (t) => {
142
142
  if (t.length < 2) return;
143
- await Ze();
143
+ await Ne();
144
144
  const c = n.value;
145
145
  if (c)
146
146
  for (let s = t.length - 1; s >= 0; s--) {
@@ -151,16 +151,16 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
151
151
  }
152
152
  }
153
153
  });
154
- function W(t) {
154
+ function U(t) {
155
155
  return l.visibleTiledLayers?.has(t) ?? !1;
156
156
  }
157
- function fe(t) {
157
+ function de(t) {
158
158
  return l.tiledLayerOpacities?.[t] ?? 1;
159
159
  }
160
160
  function ve(t) {
161
161
  return `${t.replace(/\/$/, "")}/tile/{z}/{y}/{x}`;
162
162
  }
163
- function st(t) {
163
+ function ct(t) {
164
164
  return {
165
165
  type: "raster",
166
166
  tiles: [ve(t.url)],
@@ -168,43 +168,43 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
168
168
  attribution: t.attribution || ""
169
169
  };
170
170
  }
171
- const Ne = k({}), Ke = k(/* @__PURE__ */ new Set());
172
- async function Ue(t) {
173
- if (!Ke.value.has(t.id)) {
174
- Ke.value.add(t.id);
171
+ const Ue = x({}), Qe = x(/* @__PURE__ */ new Set());
172
+ async function We(t) {
173
+ if (!Qe.value.has(t.id)) {
174
+ Qe.value.add(t.id);
175
175
  try {
176
176
  const c = t.url.replace(/\/$/, ""), s = await fetch(`${c}?f=json`);
177
177
  if (!s.ok)
178
178
  return;
179
- const b = await s.json(), $ = b.minScale || 0;
180
- let E = b.maxScale || 0;
179
+ const b = await s.json(), k = b.minScale || 0;
180
+ let I = b.maxScale || 0;
181
181
  if (b.layers && b.layers.length > 0)
182
182
  for (const B of b.layers)
183
- B.maxScale && B.maxScale > 0 && (E === 0 || B.maxScale < E) && (E = B.maxScale);
184
- E === 0 && (E = 72e3), Ne.value = {
185
- ...Ne.value,
186
- [t.id]: { minScale: $, maxScale: E }
183
+ B.maxScale && B.maxScale > 0 && (I === 0 || B.maxScale < I) && (I = B.maxScale);
184
+ I === 0 && (I = 72e3), Ue.value = {
185
+ ...Ue.value,
186
+ [t.id]: { minScale: k, maxScale: I }
187
187
  };
188
188
  } catch {
189
189
  }
190
190
  }
191
191
  }
192
- it(() => {
192
+ lt(() => {
193
193
  if (l.tiledLayers)
194
194
  for (const t of l.tiledLayers)
195
- t.scaleBasedRendering && Ue(t);
195
+ t.scaleBasedRendering && We(t);
196
196
  });
197
- function Qe(t) {
197
+ function Xe(t) {
198
198
  if (!t.scaleBasedRendering)
199
199
  return "tiled";
200
- const c = Ne.value[t.id];
200
+ const c = Ue.value[t.id];
201
201
  if (!c)
202
202
  return "tiled";
203
203
  const s = u.value;
204
204
  return s === 0 || s > c.maxScale ? "tiled" : "dynamic";
205
205
  }
206
- const ct = _(() => l.tiledLayers ? l.tiledLayers.filter((t) => W(t.id) ? t.scaleBasedRendering ? Qe(t) === "tiled" : !0 : !1) : []), ze = _(() => l.tiledLayers ? l.tiledLayers.filter((t) => W(t.id) && t.scaleBasedRendering ? Qe(t) === "dynamic" : !1) : []);
207
- function We(t) {
206
+ const ut = _(() => l.tiledLayers ? l.tiledLayers.filter((t) => U(t.id) ? t.scaleBasedRendering ? Xe(t) === "tiled" : !0 : !1) : []), De = _(() => l.tiledLayers ? l.tiledLayers.filter((t) => U(t.id) && t.scaleBasedRendering ? Xe(t) === "dynamic" : !1) : []);
207
+ function je(t) {
208
208
  return {
209
209
  type: "raster",
210
210
  tiles: [`${t.url.replace(/\/$/, "")}/export?bbox={bbox-epsg-3857}&bboxSR=3857&imageSR=3857&size=256,256&format=png32&transparent=true&f=image`],
@@ -212,57 +212,57 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
212
212
  attribution: t.attribution || ""
213
213
  };
214
214
  }
215
- function $e(t) {
215
+ function Me(t) {
216
216
  return { type: "geojson", data: C.value[t.id], tolerance: 0 };
217
217
  }
218
- function Pe(t) {
218
+ function Fe(t) {
219
219
  return l.layerOpacities[t] ?? 1;
220
220
  }
221
- function je(t) {
222
- const c = Pe(t.id), s = t.type === "circle" ? "circle-opacity" : t.type === "fill" ? "fill-opacity" : "line-opacity";
221
+ function qe(t) {
222
+ const c = Fe(t.id), s = t.type === "circle" ? "circle-opacity" : t.type === "fill" ? "fill-opacity" : "line-opacity";
223
223
  if (t.type === "fill" && t.paint["fill-opacity"] === 0)
224
224
  return { ...t.paint, "fill-opacity": 0 };
225
- const b = t.type === "circle" ? "circle-color" : t.type === "fill" ? "fill-color" : "line-color", $ = { ...t.paint }, E = $[b], B = $[s] === 1, ee = typeof E == "string" && E.startsWith("rgba(");
226
- if (B && ee) {
225
+ const b = t.type === "circle" ? "circle-color" : t.type === "fill" ? "fill-color" : "line-color", k = { ...t.paint }, I = k[b], B = k[s] === 1, Y = typeof I == "string" && I.startsWith("rgba(");
226
+ if (B && Y) {
227
227
  if (c === 1)
228
- return $;
228
+ return k;
229
229
  {
230
- const Y = E.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);
231
- if (Y && Y[4]) {
232
- const [, ie, oe, A, j] = Y, U = parseFloat(j) * c;
233
- $[b] = `rgba(${ie}, ${oe}, ${A}, ${U})`, $[s] = 1;
230
+ const Q = I.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);
231
+ if (Q && Q[4]) {
232
+ const [, pe, we, se, te] = Q, R = parseFloat(te) * c;
233
+ k[b] = `rgba(${pe}, ${we}, ${se}, ${R})`, k[s] = 1;
234
234
  }
235
- return $;
235
+ return k;
236
236
  }
237
237
  }
238
- if (ee) {
239
- const Y = E.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);
240
- if (Y) {
241
- const [, ie, oe, A] = Y;
242
- $[b] = `rgb(${ie}, ${oe}, ${A})`;
238
+ if (Y) {
239
+ const Q = I.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);
240
+ if (Q) {
241
+ const [, pe, we, se] = Q;
242
+ k[b] = `rgb(${pe}, ${we}, ${se})`;
243
243
  }
244
244
  }
245
- return $[s] = c, $;
245
+ return k[s] = c, k;
246
246
  }
247
- function ut(t) {
248
- const c = Pe(t.id);
247
+ function dt(t) {
248
+ const c = Fe(t.id);
249
249
  return { ...t.outlinePaint, "line-opacity": c };
250
250
  }
251
- const ce = k([]), Fe = k(null), ae = k(0);
252
- function De(t) {
251
+ const re = x([]), Te = x(null), oe = x(0);
252
+ function _e(t) {
253
253
  const c = t.replace(/-outline$/, "");
254
254
  return l.layerList.find((b) => b.config.id === c)?.config;
255
255
  }
256
- function Xe(t, c) {
256
+ function Ye(t, c) {
257
257
  return t.replace(/\{([^}]+)\}/g, (s, b) => {
258
- const $ = c[b];
259
- return $ == null ? "" : String($);
258
+ const k = c[b];
259
+ return k == null ? "" : String(k);
260
260
  });
261
261
  }
262
262
  function be(t) {
263
263
  return t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
264
264
  }
265
- function qe(t, c, s) {
265
+ function Ge(t, c, s) {
266
266
  if (t == null) return "-";
267
267
  if (c?.dateFormat && typeof t == "number") {
268
268
  const b = new Date(t);
@@ -284,202 +284,205 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
284
284
  if (typeof t == "number") {
285
285
  if (t > 1e12 && !c)
286
286
  return new Date(t).toLocaleDateString();
287
- const b = c?.places, $ = c?.digitSeparator ?? !0;
287
+ const b = c?.places, k = c?.digitSeparator ?? !0;
288
288
  if (b !== void 0) {
289
289
  if (Number.isInteger(t) && b >= 0)
290
290
  return String(t);
291
- const E = t.toFixed(b);
292
- if ($) {
293
- const B = E.split("."), ee = B[0] || "0", Y = B[1], ie = ee.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
294
- return Y ? `${ie}.${Y}` : ie;
291
+ const I = t.toFixed(b);
292
+ if (k) {
293
+ const B = I.split("."), Y = B[0] || "0", Q = B[1], pe = Y.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
294
+ return Q ? `${pe}.${Q}` : pe;
295
295
  }
296
- return E;
296
+ return I;
297
297
  }
298
- return Number.isInteger(t) ? String(t) : $ ? t.toLocaleString() : String(t);
298
+ return Number.isInteger(t) ? String(t) : k ? t.toLocaleString() : String(t);
299
299
  }
300
300
  return String(t);
301
301
  }
302
- function Ye(t) {
302
+ function et(t) {
303
303
  const c = /* @__PURE__ */ new Set();
304
304
  return t.filter((s) => {
305
- const $ = `${s.layer.id.replace(/-outline$/, "")}:${JSON.stringify(s.properties)}`;
306
- return c.has($) ? !1 : (c.add($), !0);
305
+ const k = `${s.layer.id.replace(/-outline$/, "")}:${JSON.stringify(s.properties)}`;
306
+ return c.has(k) ? !1 : (c.add(k), !0);
307
307
  });
308
308
  }
309
- function Le(t, c) {
309
+ function Se(t, c) {
310
310
  const s = C.value[t];
311
311
  if (!s?.features) return null;
312
312
  const b = c.objectid ?? c.OBJECTID ?? c.FID;
313
313
  if (b != null) {
314
- const $ = s.features.find(
315
- (E) => (E.properties?.objectid ?? E.properties?.OBJECTID ?? E.properties?.FID) === b
314
+ const k = s.features.find(
315
+ (I) => (I.properties?.objectid ?? I.properties?.OBJECTID ?? I.properties?.FID) === b
316
316
  );
317
- if ($) return $.geometry;
317
+ if (k) return k.geometry;
318
318
  }
319
319
  return null;
320
320
  }
321
- function dt(t, c) {
321
+ function ft(t, c) {
322
322
  const s = /* @__PURE__ */ new Map();
323
- return c.forEach((b, $) => {
324
- s.set(b.id, $);
325
- }), t.sort((b, $) => {
326
- const E = b.layer.id.replace(/-outline$/, ""), B = $.layer.id.replace(/-outline$/, ""), ee = s.get(E) ?? -1;
327
- return (s.get(B) ?? -1) - ee;
323
+ return c.forEach((b, k) => {
324
+ s.set(b.id, k);
325
+ }), t.sort((b, k) => {
326
+ const I = b.layer.id.replace(/-outline$/, ""), B = k.layer.id.replace(/-outline$/, ""), Y = s.get(I) ?? -1;
327
+ return (s.get(B) ?? -1) - Y;
328
328
  });
329
329
  }
330
- function le(t) {
330
+ function ae(t) {
331
331
  const c = n.value;
332
332
  if (!c) return;
333
333
  const s = [];
334
- l.layerList.forEach((A) => {
335
- const j = A.config;
336
- F(j.id) && (s.push(j.id), j.outlinePaint && s.push(`${j.id}-outline`));
334
+ l.layerList.forEach((R) => {
335
+ const W = R.config;
336
+ F(W.id) && (s.push(W.id), W.outlinePaint && s.push(`${W.id}-outline`));
337
337
  });
338
- const b = s.filter((A) => c.getLayer(A));
338
+ const b = s.filter((R) => c.getLayer(R));
339
339
  if (b.length === 0) return;
340
- const $ = c.project([t.lngLat.lng, t.lngLat.lat]), E = c.queryRenderedFeatures($, {
340
+ const k = c.project([t.lngLat.lng, t.lngLat.lat]), I = 10, B = [
341
+ [k.x - I, k.y - I],
342
+ [k.x + I, k.y + I]
343
+ ], Y = c.queryRenderedFeatures(B, {
341
344
  layers: b
342
345
  });
343
- if (E.length === 0) return;
344
- const B = Ye(E), ee = l.layerList.map((A) => A.config), ie = dt(B, ee).map((A) => {
345
- const j = A.layer.id.replace(/-outline$/, ""), U = De(j);
346
- if (!U) return null;
347
- const ue = Le(U.id, A.properties || {});
346
+ if (Y.length === 0) return;
347
+ const Q = et(Y), pe = l.layerList.map((R) => R.config), se = ft(Q, pe).map((R) => {
348
+ const W = R.layer.id.replace(/-outline$/, ""), ce = _e(W);
349
+ if (!ce) return null;
350
+ const yt = Se(ce.id, R.properties || {});
348
351
  return {
349
- layerId: U.id,
350
- layerTitle: U.title,
351
- properties: A.properties || {},
352
- geometry: ue || A.geometry,
353
- popupConfig: U.popup
352
+ layerId: ce.id,
353
+ layerTitle: ce.title,
354
+ properties: R.properties || {},
355
+ geometry: yt || R.geometry,
356
+ popupConfig: ce.popup
354
357
  };
355
- }).filter((A) => A !== null);
356
- if (ie.length === 0) return;
357
- ie.sort((A, j) => {
358
- const U = A.popupConfig?.popupSortField, ue = j.popupConfig?.popupSortField;
359
- if (!U || U !== ue) return 0;
360
- const pt = A.properties[U], yt = j.properties[U];
361
- if (pt == null || yt == null) return 0;
362
- const xt = A.popupConfig?.popupSortOrder !== "asc";
363
- return pt < yt ? xt ? 1 : -1 : pt > yt ? xt ? -1 : 1 : 0;
364
- }), ce.value = ie, ae.value = 0, Fe.value = [t.lngLat.lng, t.lngLat.lat];
365
- const oe = ie[0];
366
- if (oe) {
367
- const A = De(oe.layerId);
368
- if (A) {
369
- const j = K(oe.geometry), U = Z(A.id, A.type);
370
- x.value = {
371
- geometry: oe.geometry,
372
- geometryType: j,
373
- layerId: A.id,
374
- properties: oe.properties,
375
- originalStyle: U
358
+ }).filter((R) => R !== null);
359
+ if (se.length === 0) return;
360
+ se.sort((R, W) => {
361
+ const ce = R.popupConfig?.popupSortField, yt = W.popupConfig?.popupSortField;
362
+ if (!ce || ce !== yt) return 0;
363
+ const mt = R.properties[ce], ht = W.properties[ce];
364
+ if (mt == null || ht == null) return 0;
365
+ const Mt = R.popupConfig?.popupSortOrder !== "asc";
366
+ return mt < ht ? Mt ? 1 : -1 : mt > ht ? Mt ? -1 : 1 : 0;
367
+ }), re.value = se, oe.value = 0, Te.value = [t.lngLat.lng, t.lngLat.lat];
368
+ const te = se[0];
369
+ if (te) {
370
+ const R = _e(te.layerId);
371
+ if (R) {
372
+ const W = J(te.geometry), ce = Z(R.id, R.type);
373
+ $.value = {
374
+ geometry: te.geometry,
375
+ geometryType: W,
376
+ layerId: R.id,
377
+ properties: te.properties,
378
+ originalStyle: ce
376
379
  };
377
380
  }
378
381
  }
379
382
  }
380
- function Te() {
381
- ce.value = [], Fe.value = null, ae.value = 0, x.value = null;
383
+ function Ie() {
384
+ re.value = [], Te.value = null, oe.value = 0, $.value = null;
382
385
  }
383
- function Ie(t) {
384
- if (ce.value.length === 0) return;
386
+ function Ee(t) {
387
+ if (re.value.length === 0) return;
385
388
  const c = t.target;
386
389
  if (!(c.tagName === "INPUT" || c.tagName === "TEXTAREA" || c.isContentEditable))
387
390
  switch (t.key) {
388
391
  case "ArrowLeft":
389
392
  case "ArrowUp":
390
- t.preventDefault(), et();
393
+ t.preventDefault(), tt();
391
394
  break;
392
395
  case "ArrowRight":
393
396
  case "ArrowDown":
394
- t.preventDefault(), pe();
397
+ t.preventDefault(), fe();
395
398
  break;
396
399
  case "Escape":
397
- t.preventDefault(), Te();
400
+ t.preventDefault(), Ie();
398
401
  break;
399
402
  }
400
403
  }
401
- it(() => {
402
- window.addEventListener("keydown", Ie);
403
- }), At(() => {
404
- window.removeEventListener("keydown", Ie);
404
+ lt(() => {
405
+ window.addEventListener("keydown", Ee);
406
+ }), Vt(() => {
407
+ window.removeEventListener("keydown", Ee);
405
408
  });
406
- function pe() {
407
- const t = ce.value.length;
408
- t <= 1 || ae.value >= t - 1 || (ae.value = ae.value + 1);
409
- }
410
- function et() {
411
- ce.value.length <= 1 || ae.value <= 0 || (ae.value = ae.value - 1);
412
- }
413
- const ne = _(() => ce.value.length === 0 ? null : ce.value[ae.value]), _e = _(() => {
414
- const t = ne.value;
415
- return !t || !t.popupConfig ? t?.layerTitle || "" : Xe(t.popupConfig.title, t.properties);
416
- }), Re = _(() => {
417
- const t = ne.value;
409
+ function fe() {
410
+ const t = re.value.length;
411
+ t <= 1 || oe.value >= t - 1 || (oe.value = oe.value + 1);
412
+ }
413
+ function tt() {
414
+ re.value.length <= 1 || oe.value <= 0 || (oe.value = oe.value - 1);
415
+ }
416
+ const ie = _(() => re.value.length === 0 ? null : re.value[oe.value]), Re = _(() => {
417
+ const t = ie.value;
418
+ return !t || !t.popupConfig ? t?.layerTitle || "" : Ye(t.popupConfig.title, t.properties);
419
+ }), Ae = _(() => {
420
+ const t = ie.value;
418
421
  if (!t) return "";
419
422
  let c = '<div class="popup-content">';
420
- if (c += `<h3 class="popup-title">${be(_e.value)}</h3>`, t.popupConfig?.fields?.length) {
421
- c += `<table class="popup-table" aria-label="${be(_e.value)}">`;
423
+ if (c += `<h3 class="popup-title">${be(Re.value)}</h3>`, t.popupConfig?.fields?.length) {
424
+ c += `<table class="popup-table" aria-label="${be(Re.value)}">`;
422
425
  for (const s of t.popupConfig.fields) {
423
- const b = qe(t.properties[s.field], s.format, t.popupConfig.showTime), $ = s.label.toLowerCase(), E = $.includes("url") || $.includes("website"), B = b.startsWith("http://") || b.startsWith("https://") || b.startsWith("www.") || E && b.includes("."), ee = b.startsWith("http://") || b.startsWith("https://") ? b : `https://${b}`, Y = B ? `<a href="${be(ee)}" target="_blank" rel="noopener noreferrer">${be(b)}</a>` : be(b);
424
- c += `<tr><th scope="row">${be(s.label)}</th><td>${Y}</td></tr>`;
426
+ const b = Ge(t.properties[s.field], s.format, t.popupConfig.showTime), k = s.label.toLowerCase(), I = k.includes("url") || k.includes("website"), B = b.startsWith("http://") || b.startsWith("https://") || b.startsWith("www.") || I && b.includes("."), Y = b.startsWith("http://") || b.startsWith("https://") ? b : `https://${b}`, Q = B ? `<a href="${be(Y)}" target="_blank" rel="noopener noreferrer">${be(b)}</a>` : be(b);
427
+ c += `<tr><th scope="row">${be(s.label)}</th><td>${Q}</td></tr>`;
425
428
  }
426
429
  c += "</table>";
427
430
  }
428
431
  return c += "</div>", c;
429
- }), re = k({
432
+ }), le = x({
430
433
  type: "FeatureCollection",
431
434
  features: []
432
- }), Ae = k({
435
+ }), Be = x({
433
436
  type: "FeatureCollection",
434
437
  features: []
435
- }), Be = k({
438
+ }), Ve = x({
436
439
  type: "FeatureCollection",
437
440
  features: []
438
- }), ft = {
441
+ }), pt = {
439
442
  "circle-radius": ["get", "highlightRadius"],
440
443
  "circle-color": "#00FFFF",
441
444
  "circle-opacity": 0.8,
442
445
  "circle-stroke-width": 2,
443
446
  "circle-stroke-color": "#FFFFFF"
444
- }, tt = {
447
+ }, ot = {
445
448
  "line-width": ["get", "highlightWidth"],
446
449
  "line-color": "#00FFFF",
447
450
  "line-opacity": 0.9
448
451
  }, v = {
449
452
  "fill-color": "#808080",
450
453
  "fill-opacity": 0.5
451
- }, x = k(null);
452
- function K(t) {
454
+ }, $ = x(null);
455
+ function J(t) {
453
456
  return t.type;
454
457
  }
455
458
  function Z(t, c) {
456
- const s = De(t);
459
+ const s = _e(t);
457
460
  if (!s) return { radius: 5, width: 2 };
458
461
  const b = s.paint || {};
459
462
  if (c === "circle") {
460
- const $ = b["circle-radius"];
461
- return typeof $ == "number" ? { radius: $ } : { radius: 5 };
463
+ const k = b["circle-radius"];
464
+ return typeof k == "number" ? { radius: k } : { radius: 5 };
462
465
  }
463
466
  if (c === "line" || c === "fill") {
464
- const $ = b["line-width"];
465
- if (typeof $ == "number")
466
- return { width: $ };
467
+ const k = b["line-width"];
468
+ if (typeof k == "number")
469
+ return { width: k };
467
470
  if (s.outlinePaint && s.outlinePaint["line-width"]) {
468
- const E = s.outlinePaint["line-width"];
469
- if (typeof E == "number")
470
- return { width: E };
471
+ const I = s.outlinePaint["line-width"];
472
+ if (typeof I == "number")
473
+ return { width: I };
471
474
  }
472
475
  return { width: 2 };
473
476
  }
474
477
  return { radius: 5, width: 2 };
475
478
  }
476
- function Q(t) {
479
+ function K(t) {
477
480
  return !t || t.length === 0 ? [] : t[0] ?? [];
478
481
  }
479
- function Se(t) {
482
+ function Ce(t) {
480
483
  const { geometry: c, geometryType: s, originalStyle: b } = t;
481
484
  if (s === "Point" || s === "MultiPoint") {
482
- const E = (b.radius || 5) + 3;
485
+ const I = (b.radius || 5) + 3;
483
486
  return {
484
487
  type: "FeatureCollection",
485
488
  features: [
@@ -487,14 +490,14 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
487
490
  type: "Feature",
488
491
  geometry: c,
489
492
  properties: {
490
- highlightRadius: E
493
+ highlightRadius: I
491
494
  }
492
495
  }
493
496
  ]
494
497
  };
495
498
  }
496
499
  if (s === "LineString" || s === "MultiLineString") {
497
- const E = (b.width || 2) + 3;
500
+ const I = (b.width || 2) + 3;
498
501
  return {
499
502
  type: "FeatureCollection",
500
503
  features: [
@@ -502,14 +505,14 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
502
505
  type: "Feature",
503
506
  geometry: c,
504
507
  properties: {
505
- highlightWidth: E
508
+ highlightWidth: I
506
509
  }
507
510
  }
508
511
  ]
509
512
  };
510
513
  }
511
514
  if (s === "Polygon") {
512
- const $ = c.coordinates, E = Q($), ee = (b.width || 2) + 3;
515
+ const k = c.coordinates, I = K(k), Y = (b.width || 2) + 3;
513
516
  return {
514
517
  type: "FeatureCollection",
515
518
  features: [
@@ -517,24 +520,24 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
517
520
  type: "Feature",
518
521
  geometry: {
519
522
  type: "LineString",
520
- coordinates: E
523
+ coordinates: I
521
524
  },
522
525
  properties: {
523
- highlightWidth: ee
526
+ highlightWidth: Y
524
527
  }
525
528
  }
526
529
  ]
527
530
  };
528
531
  }
529
532
  if (s === "MultiPolygon") {
530
- const $ = c.coordinates, B = (b.width || 2) + 3;
533
+ const k = c.coordinates, B = (b.width || 2) + 3;
531
534
  return {
532
535
  type: "FeatureCollection",
533
- features: $.map((Y) => ({
536
+ features: k.map((Q) => ({
534
537
  type: "Feature",
535
538
  geometry: {
536
539
  type: "LineString",
537
- coordinates: Q(Y)
540
+ coordinates: K(Q)
538
541
  },
539
542
  properties: {
540
543
  highlightWidth: B
@@ -547,42 +550,42 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
547
550
  features: []
548
551
  };
549
552
  }
550
- function Ve(t) {
553
+ function Ze(t) {
551
554
  const { geometry: c, geometryType: s } = t;
552
555
  return s === "Polygon" || s === "MultiPolygon" ? {
553
556
  type: "FeatureCollection",
554
557
  features: [{ type: "Feature", geometry: c, properties: {} }]
555
558
  } : { type: "FeatureCollection", features: [] };
556
559
  }
557
- function jt(t) {
560
+ function Gt(t) {
558
561
  if (!t) {
559
- qt();
562
+ Ht();
560
563
  return;
561
564
  }
562
- const c = Se(t);
563
- t.geometryType === "Point" || t.geometryType === "MultiPoint" ? (re.value = c, Ae.value = { type: "FeatureCollection", features: [] }, Be.value = { type: "FeatureCollection", features: [] }) : (Ae.value = c, re.value = { type: "FeatureCollection", features: [] }, Be.value = Ve(t));
565
+ const c = Ce(t);
566
+ t.geometryType === "Point" || t.geometryType === "MultiPoint" ? (le.value = c, Be.value = { type: "FeatureCollection", features: [] }, Ve.value = { type: "FeatureCollection", features: [] }) : (Be.value = c, le.value = { type: "FeatureCollection", features: [] }, Ve.value = Ze(t));
564
567
  }
565
- function qt() {
566
- re.value = { type: "FeatureCollection", features: [] }, Ae.value = { type: "FeatureCollection", features: [] }, Be.value = { type: "FeatureCollection", features: [] };
568
+ function Ht() {
569
+ le.value = { type: "FeatureCollection", features: [] }, Be.value = { type: "FeatureCollection", features: [] }, Ve.value = { type: "FeatureCollection", features: [] };
567
570
  }
568
- Ee(x, (t) => {
569
- jt(t);
570
- }), Ee(
571
+ Oe($, (t) => {
572
+ Gt(t);
573
+ }), Oe(
571
574
  () => l.visibleLayers,
572
575
  (t) => {
573
- x.value && !t.has(x.value.layerId) && (x.value = null, Te());
576
+ $.value && !t.has($.value.layerId) && ($.value = null, Ie());
574
577
  },
575
578
  { deep: !0 }
576
- ), Ee(ae, () => {
577
- const t = ne.value;
579
+ ), Oe(oe, () => {
580
+ const t = ie.value;
578
581
  if (!t) {
579
- x.value = null;
582
+ $.value = null;
580
583
  return;
581
584
  }
582
- const c = De(t.layerId);
585
+ const c = _e(t.layerId);
583
586
  if (c) {
584
- const s = K(t.geometry), b = Z(c.id, c.type);
585
- x.value = {
587
+ const s = J(t.geometry), b = Z(c.id, c.type);
588
+ $.value = {
586
589
  geometry: t.geometry,
587
590
  geometryType: s,
588
591
  layerId: c.id,
@@ -591,13 +594,13 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
591
594
  };
592
595
  }
593
596
  });
594
- const kt = k(null);
595
- function Gt(t) {
597
+ const $t = x(null);
598
+ function Jt(t) {
596
599
  const [c, s] = t.geometry.coordinates;
597
- kt.value = [c, s];
600
+ $t.value = [c, s];
598
601
  }
599
- return (t, c) => (m(), M("div", no, [
600
- J(f(to), {
602
+ return (t, c) => (m(), M("div", so, [
603
+ H(f(ao), {
601
604
  ref_key: "mapRef",
602
605
  ref: r,
603
606
  zoom: l.initialZoom,
@@ -615,124 +618,124 @@ const no = { class: "map-panel" }, ro = /* @__PURE__ */ ge({
615
618
  "tool-panel-layout": "vertical",
616
619
  "tool-panel-split-ratio": 50,
617
620
  onZoom: w,
618
- onClick: Te,
621
+ onClick: Ie,
619
622
  onMoveend: S,
620
- onLoad: I,
621
- onSearchResult: Gt
623
+ onLoad: E,
624
+ onSearchResult: Jt
622
625
  }, {
623
- default: Ge(() => [
624
- l.drawControlPosition !== null ? (m(), G(f(oo), {
626
+ default: He(() => [
627
+ l.drawControlPosition !== null ? (m(), q(f(io), {
625
628
  key: 0,
626
629
  position: l.drawControlPosition
627
- }, null, 8, ["position"])) : R("", !0),
628
- (m(!0), M(de, null, we(ct.value, (s) => (m(), G(f(Ft), {
630
+ }, null, 8, ["position"])) : A("", !0),
631
+ (m(!0), M(ue, null, Le(ut.value, (s) => (m(), q(f(It), {
629
632
  id: "tiled-" + s.id,
630
633
  key: "tiled-" + s.id,
631
- source: st(s),
632
- paint: { "raster-opacity": fe(s.id) },
634
+ source: ct(s),
635
+ paint: { "raster-opacity": de(s.id) },
633
636
  minzoom: s.minZoom,
634
637
  maxzoom: s.maxZoom
635
638
  }, null, 8, ["id", "source", "paint", "minzoom", "maxzoom"]))), 128)),
636
- (m(!0), M(de, null, we(ze.value, (s) => (m(), G(f(Ft), {
639
+ (m(!0), M(ue, null, Le(De.value, (s) => (m(), q(f(It), {
637
640
  id: "dynamic-" + s.id,
638
641
  key: "dynamic-" + s.id,
639
- source: We(s),
640
- paint: { "raster-opacity": fe(s.id) },
642
+ source: je(s),
643
+ paint: { "raster-opacity": de(s.id) },
641
644
  minzoom: s.minZoom,
642
645
  maxzoom: s.maxZoom
643
646
  }, null, 8, ["id", "source", "paint", "minzoom", "maxzoom"]))), 128)),
644
- (m(!0), M(de, null, we(T.value, (s) => (m(), G(f(Tt), {
647
+ (m(!0), M(ue, null, Le(T.value, (s) => (m(), q(f(Et), {
645
648
  id: s.id,
646
649
  key: s.id,
647
- source: $e(s),
648
- paint: je(s),
650
+ source: Me(s),
651
+ paint: qe(s),
649
652
  minzoom: s.minZoom,
650
653
  maxzoom: s.maxZoom,
651
654
  "before-id": "highlight-circles",
652
- onClick: le
655
+ onClick: ae
653
656
  }, null, 8, ["id", "source", "paint", "minzoom", "maxzoom"]))), 128)),
654
- (m(!0), M(de, null, we(O.value, (s) => (m(), G(f(It), {
657
+ (m(!0), M(ue, null, Le(O.value, (s) => (m(), q(f(Ot), {
655
658
  id: s.id,
656
659
  key: s.id,
657
- source: $e(s),
658
- paint: je(s),
660
+ source: Me(s),
661
+ paint: qe(s),
659
662
  minzoom: s.minZoom,
660
663
  maxzoom: s.maxZoom,
661
664
  "before-id": "highlight-circles",
662
- onClick: le
665
+ onClick: ae
663
666
  }, null, 8, ["id", "source", "paint", "minzoom", "maxzoom"]))), 128)),
664
- (m(!0), M(de, null, we(D.value, (s) => (m(), G(f(mt), {
667
+ (m(!0), M(ue, null, Le(D.value, (s) => (m(), q(f(gt), {
665
668
  id: s.id + "-outline",
666
669
  key: s.id + "-outline",
667
- source: $e(s),
668
- paint: ut(s),
670
+ source: Me(s),
671
+ paint: dt(s),
669
672
  minzoom: s.minZoom,
670
673
  maxzoom: s.maxZoom,
671
674
  "before-id": "highlight-lines",
672
- onClick: le
675
+ onClick: ae
673
676
  }, null, 8, ["id", "source", "paint", "minzoom", "maxzoom"]))), 128)),
674
- (m(!0), M(de, null, we(te.value, (s) => (m(), G(f(mt), {
677
+ (m(!0), M(ue, null, Le(ee.value, (s) => (m(), q(f(gt), {
675
678
  id: s.id,
676
679
  key: s.id,
677
- source: $e(s),
678
- paint: je(s),
680
+ source: Me(s),
681
+ paint: qe(s),
679
682
  minzoom: s.minZoom,
680
683
  maxzoom: s.maxZoom,
681
684
  "before-id": "highlight-lines",
682
- onClick: le
685
+ onClick: ae
683
686
  }, null, 8, ["id", "source", "paint", "minzoom", "maxzoom"]))), 128)),
684
- J(f(Tt), {
687
+ H(f(Et), {
685
688
  id: "highlight-circles",
686
689
  key: "highlight-circles-layer",
687
- source: { type: "geojson", data: re.value },
688
- paint: ft
690
+ source: { type: "geojson", data: le.value },
691
+ paint: pt
689
692
  }, null, 8, ["source"]),
690
- J(f(It), {
693
+ H(f(Ot), {
691
694
  id: "highlight-fill",
692
695
  key: "highlight-fill-layer",
693
- source: { type: "geojson", data: Be.value },
696
+ source: { type: "geojson", data: Ve.value },
694
697
  paint: v
695
698
  }, null, 8, ["source"]),
696
- J(f(mt), {
699
+ H(f(gt), {
697
700
  id: "highlight-lines",
698
701
  key: "highlight-lines-layer",
699
- source: { type: "geojson", data: Ae.value },
700
- paint: tt
702
+ source: { type: "geojson", data: Be.value },
703
+ paint: ot
701
704
  }, null, 8, ["source"]),
702
- J(f(ao), {
703
- "lng-lat": kt.value,
705
+ H(f(lo), {
706
+ "lng-lat": $t.value,
704
707
  color: "#2176d2"
705
708
  }, null, 8, ["lng-lat"]),
706
- ne.value && Fe.value ? (m(), G(f(io), {
709
+ ie.value && Te.value ? (m(), q(f(no), {
707
710
  key: 1,
708
- "lng-lat": Fe.value,
709
- html: Re.value,
711
+ "lng-lat": Te.value,
712
+ html: Ae.value,
710
713
  "close-on-click": !1,
711
714
  offset: [0, -15],
712
- "show-navigation": ce.value.length > 1,
713
- "current-feature-index": ae.value,
714
- "total-features": ce.value.length,
715
- "layer-name": ne.value.layerTitle,
716
- onClose: Te,
717
- onNext: pe,
718
- onPrevious: et
719
- }, null, 8, ["lng-lat", "html", "show-navigation", "current-feature-index", "total-features", "layer-name"])) : R("", !0)
715
+ "show-navigation": re.value.length > 1,
716
+ "current-feature-index": oe.value,
717
+ "total-features": re.value.length,
718
+ "layer-name": ie.value.layerTitle,
719
+ onClose: Ie,
720
+ onNext: fe,
721
+ onPrevious: tt
722
+ }, null, 8, ["lng-lat", "html", "show-navigation", "current-feature-index", "total-features", "layer-name"])) : A("", !0)
720
723
  ]),
721
724
  _: 1
722
725
  }, 8, ["zoom", "center", "navigation-controls", "geolocation-control", "basemap-change-controls", "map-search-control", "cyclomedia-config", "cyclomedia-button-position", "pictometry-credentials", "pictometry-button-position"])
723
726
  ]));
724
727
  }
725
- }), xe = (e, a) => {
728
+ }), $e = (e, a) => {
726
729
  const l = e.__vccOpts || e;
727
730
  for (const [o, r] of a)
728
731
  l[o] = r;
729
732
  return l;
730
- }, so = /* @__PURE__ */ xe(ro, [["__scopeId", "data-v-7b0b7505"]]);
731
- function Vt(e) {
733
+ }, uo = /* @__PURE__ */ $e(co, [["__scopeId", "data-v-c704fcd9"]]);
734
+ function Nt(e) {
732
735
  let a = e.split("?")[0] || e;
733
736
  return a = a.replace(/\/query$/, ""), a = a.replace(/\/$/, ""), a = a.replace(/^https?:\/\//, ""), a.toLowerCase();
734
737
  }
735
- const co = ["disabled"], uo = /* @__PURE__ */ ge({
738
+ const fo = ["disabled"], po = /* @__PURE__ */ ge({
736
739
  inheritAttrs: !1,
737
740
  __name: "PhlButton",
738
741
  props: {
@@ -754,7 +757,7 @@ const co = ["disabled"], uo = /* @__PURE__ */ ge({
754
757
  svgRaw: {}
755
758
  },
756
759
  setup(e) {
757
- const a = e, l = (u) => "href" in u && u.href !== void 0 || "to" in u && u.to !== void 0, o = _(() => gt(
760
+ const a = e, l = (u) => "href" in u && u.href !== void 0 || "to" in u && u.to !== void 0, o = _(() => bt(
758
761
  "phila-button",
759
762
  `phila-button--${a.variant}`,
760
763
  a.size && `is-${a.size}`,
@@ -782,51 +785,51 @@ const co = ["disabled"], uo = /* @__PURE__ */ ge({
782
785
  size: a.size
783
786
  })
784
787
  );
785
- return (u, w) => l(a) ? (m(), G(f(lo), ht({ key: 0 }, { ...r.value, ...u.$attrs }, { role: "button" }), {
786
- default: Ge(() => [
787
- J(f(Et), $t(Mt(n.value)), {
788
- default: Ge(() => [
788
+ return (u, w) => l(a) ? (m(), q(f(ro), vt({ key: 0 }, { ...r.value, ...u.$attrs }, { role: "button" }), {
789
+ default: He(() => [
790
+ H(f(zt), Pt(Ft(n.value)), {
791
+ default: He(() => [
789
792
  me(u.$slots, "default", {}, () => [
790
- ke(H(a.text), 1)
793
+ xe(G(a.text), 1)
791
794
  ])
792
795
  ]),
793
796
  _: 3
794
797
  }, 16)
795
798
  ]),
796
799
  _: 3
797
- }, 16)) : (m(), M("button", ht({
800
+ }, 16)) : (m(), M("button", vt({
798
801
  key: 1,
799
802
  type: "button",
800
803
  disabled: a.disabled,
801
804
  class: o.value
802
805
  }, u.$attrs), [
803
- J(f(Et), $t(Mt(n.value)), {
804
- default: Ge(() => [
806
+ H(f(zt), Pt(Ft(n.value)), {
807
+ default: He(() => [
805
808
  me(u.$slots, "default", {}, () => [
806
- ke(H(a.text), 1)
809
+ xe(G(a.text), 1)
807
810
  ])
808
811
  ]),
809
812
  _: 3
810
813
  }, 16)
811
- ], 16, co));
814
+ ], 16, fo));
812
815
  }
813
816
  });
814
- var fo = {
817
+ var yo = {
815
818
  prefix: "fas",
816
819
  iconName: "circle-exclamation",
817
820
  icon: [512, 512, ["exclamation-circle"], "f06a", "M256 512a256 256 0 1 1 0-512 256 256 0 1 1 0 512zm0-192a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-192c-18.2 0-32.7 15.5-31.4 33.7l7.4 104c.9 12.6 11.4 22.3 23.9 22.3 12.6 0 23-9.7 23.9-22.3l7.4-104c1.3-18.2-13.1-33.7-31.4-33.7z"]
818
- }, po = fo, yo = {
821
+ }, mo = yo, ho = {
819
822
  prefix: "fas",
820
823
  iconName: "xmark",
821
824
  icon: [384, 512, [128473, 10005, 10006, 10060, 215, "close", "multiply", "remove", "times"], "f00d", "M55.1 73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L147.2 256 9.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192.5 301.3 329.9 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.8 256 375.1 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192.5 210.7 55.1 73.4z"]
822
- }, mo = yo;
823
- const ho = ["for"], go = { class: "state-layer" }, vo = { class: "content" }, bo = { class: "input-text-container" }, wo = ["id", "placeholder", "aria-label"], Lo = {
825
+ }, go = ho;
826
+ const vo = ["for"], bo = { class: "state-layer" }, wo = { class: "content" }, Lo = { class: "input-text-container" }, So = ["id", "placeholder", "aria-label"], Co = {
824
827
  key: 1,
825
828
  class: "has-text-body-small phila-supporting-text"
826
- }, So = {
829
+ }, ko = {
827
830
  key: 2,
828
831
  class: "has-text-body-small phila-error-text"
829
- }, Co = /* @__PURE__ */ ge({
832
+ }, xo = /* @__PURE__ */ ge({
830
833
  inheritAttrs: !1,
831
834
  __name: "TextField",
832
835
  props: {
@@ -844,45 +847,45 @@ const ho = ["for"], go = { class: "state-layer" }, vo = { class: "content" }, bo
844
847
  },
845
848
  emits: ["update:modelValue"],
846
849
  setup(e, { emit: a }) {
847
- const l = Ht(), o = e, r = _(() => typeof o.error == "string" ? o.error : o.error[0]), n = Jt(o, "id"), u = a, w = k(""), p = _({
850
+ const l = Kt(), o = e, r = _(() => typeof o.error == "string" ? o.error : o.error[0]), n = Qt(o, "id"), u = a, w = x(""), p = _({
848
851
  get: () => o.modelValue !== void 0 ? o.modelValue : w.value,
849
852
  set: (d) => {
850
853
  u("update:modelValue", d), w.value = d;
851
854
  }
852
855
  }), C = _(() => {
853
856
  const d = ["default-class"];
854
- return l.disabled != null && d.push("phila-input--disabled"), r.value && d.push("phila-input--error"), l.required != null && d.push("phila-input--required"), gt(...d);
857
+ return l.disabled != null && d.push("phila-input--disabled"), r.value && d.push("phila-input--error"), l.required != null && d.push("phila-input--required"), bt(...d);
855
858
  }), y = _(() => {
856
859
  const d = [];
857
- return p.value !== "" && d.push("phila-text-field--filled"), o.className && d.push(o.className), gt(...d);
860
+ return p.value !== "" && d.push("phila-text-field--filled"), o.className && d.push(o.className), bt(...d);
858
861
  }), h = _(() => {
859
862
  if (!(o.label || l["aria-label"]))
860
863
  return o.placeholder || void 0;
861
- }), i = k(null), g = (d) => {
864
+ }), i = x(null), g = (d) => {
862
865
  d.target.closest("button") || i.value?.focus();
863
866
  };
864
867
  return (d, L) => (m(), M("div", {
865
- class: se(["phila-input", C.value])
868
+ class: ne(["phila-input", C.value])
866
869
  }, [
867
870
  o.label ? (m(), M("label", {
868
871
  key: 0,
869
872
  for: n.value,
870
873
  class: "has-text-label-small phila-label"
871
- }, H(o.label), 9, ho)) : R("", !0),
874
+ }, G(o.label), 9, vo)) : A("", !0),
872
875
  P("div", {
873
- class: se(["phila-text-field", y.value]),
876
+ class: ne(["phila-text-field", y.value]),
874
877
  onClick: g
875
878
  }, [
876
- P("div", go, [
877
- o.leadingIcon ? (m(), G(f(Ce), {
879
+ P("div", bo, [
880
+ o.leadingIcon ? (m(), q(f(ke), {
878
881
  key: 0,
879
882
  "icon-class": o.leadingIcon,
880
883
  inline: "",
881
884
  decorative: ""
882
- }, null, 8, ["icon-class"])) : R("", !0),
883
- P("div", vo, [
884
- P("div", bo, [
885
- Bt(P("input", ht({
885
+ }, null, 8, ["icon-class"])) : A("", !0),
886
+ P("div", wo, [
887
+ P("div", Lo, [
888
+ Zt(P("input", vt({
886
889
  id: n.value,
887
890
  ref_key: "inputRef",
888
891
  ref: i,
@@ -890,75 +893,75 @@ const ho = ["for"], go = { class: "state-layer" }, vo = { class: "content" }, bo
890
893
  class: "phila-text-field-input has-text-body-default",
891
894
  placeholder: o.placeholder,
892
895
  "aria-label": h.value
893
- }, f(l)), null, 16, wo), [
894
- [Kt, p.value]
896
+ }, f(l)), null, 16, So), [
897
+ [Xt, p.value]
895
898
  ])
896
899
  ])
897
900
  ]),
898
- p.value != "" ? (m(), G(f(uo), {
901
+ p.value != "" ? (m(), q(f(po), {
899
902
  key: 1,
900
903
  variant: "standard",
901
904
  size: "small",
902
905
  "icon-only": "",
903
- "icon-definition": f(mo),
906
+ "icon-definition": f(go),
904
907
  onClick: L[1] || (L[1] = (S) => p.value = "")
905
- }, null, 8, ["icon-definition"])) : R("", !0),
906
- o.trailingIcon ? (m(), G(f(Ce), {
908
+ }, null, 8, ["icon-definition"])) : A("", !0),
909
+ o.trailingIcon ? (m(), q(f(ke), {
907
910
  key: 2,
908
911
  size: "small",
909
912
  "icon-class": o.trailingIcon,
910
913
  inline: "",
911
914
  decorative: ""
912
- }, null, 8, ["icon-class"])) : R("", !0),
915
+ }, null, 8, ["icon-class"])) : A("", !0),
913
916
  me(d.$slots, "trailing-action")
914
917
  ])
915
918
  ], 2),
916
- o.supportingText ? (m(), M("div", Lo, H(o.supportingText), 1)) : R("", !0),
917
- r.value ? (m(), M("div", So, [
918
- J(f(Ce), {
919
- "icon-definition": f(po),
919
+ o.supportingText ? (m(), M("div", Co, G(o.supportingText), 1)) : A("", !0),
920
+ r.value ? (m(), M("div", ko, [
921
+ H(f(ke), {
922
+ "icon-definition": f(mo),
920
923
  size: "small",
921
924
  inline: "",
922
925
  decorative: ""
923
926
  }, null, 8, ["icon-definition"]),
924
- ke(" " + H(r.value), 1)
925
- ])) : R("", !0)
927
+ xe(" " + G(r.value), 1)
928
+ ])) : A("", !0)
926
929
  ], 2));
927
930
  }
928
931
  });
929
- var ko = {
932
+ var $o = {
930
933
  prefix: "fas",
931
934
  iconName: "filter",
932
935
  icon: [512, 512, [], "f0b0", "M32 64C19.1 64 7.4 71.8 2.4 83.8S.2 109.5 9.4 118.6L192 301.3 192 416c0 8.5 3.4 16.6 9.4 22.6l64 64c9.2 9.2 22.9 11.9 34.9 6.9S320 492.9 320 480l0-178.7 182.6-182.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 64 480 64L32 64z"]
933
- }, xo = {
936
+ }, Mo = {
934
937
  prefix: "fas",
935
938
  iconName: "caret-right",
936
939
  icon: [256, 512, [], "f0da", "M249.3 235.8c10.2 12.6 9.5 31.1-2.2 42.8l-128 128c-9.2 9.2-22.9 11.9-34.9 6.9S64.5 396.9 64.5 384l0-256c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l128 128 2.2 2.4z"]
937
- }, $o = {
940
+ }, Po = {
938
941
  prefix: "fas",
939
942
  iconName: "caret-left",
940
943
  icon: [256, 512, [], "f0d9", "M7.7 235.8c-10.3 12.6-9.5 31.1 2.2 42.8l128 128c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-256c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-128 128-2.2 2.4z"]
941
- }, Ot = {
944
+ }, Dt = {
942
945
  prefix: "fas",
943
946
  iconName: "xmark",
944
947
  icon: [384, 512, [128473, 10005, 10006, 10060, 215, "close", "multiply", "remove", "times"], "f00d", "M55.1 73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L147.2 256 9.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192.5 301.3 329.9 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.8 256 375.1 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192.5 210.7 55.1 73.4z"]
945
- }, Mo = {
948
+ }, Fo = {
946
949
  prefix: "fas",
947
950
  iconName: "bars",
948
951
  icon: [448, 512, ["navicon"], "f0c9", "M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"]
949
- }, Po = {
952
+ }, To = {
950
953
  prefix: "fas",
951
954
  iconName: "circle-info",
952
955
  icon: [512, 512, ["info-circle"], "f05a", "M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-8 64l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z"]
953
956
  };
954
- const Fo = {
957
+ const Io = {
955
958
  key: 0,
956
959
  class: "loading-indicator",
957
960
  role: "status"
958
- }, To = ["aria-label"], Io = {
961
+ }, Eo = ["aria-label"], Oo = {
959
962
  key: 2,
960
963
  class: "zoom-indicator"
961
- }, Eo = /* @__PURE__ */ ge({
964
+ }, zo = /* @__PURE__ */ ge({
962
965
  __name: "LayerStatusIndicators",
963
966
  props: {
964
967
  loading: { type: Boolean },
@@ -966,18 +969,18 @@ const Fo = {
966
969
  unavailable: { type: Boolean }
967
970
  },
968
971
  setup(e) {
969
- return (a, l) => (m(), M(de, null, [
970
- e.loading && !e.unavailable ? (m(), M("span", Fo, " Loading... ")) : R("", !0),
972
+ return (a, l) => (m(), M(ue, null, [
973
+ e.loading && !e.unavailable ? (m(), M("span", Io, " Loading... ")) : A("", !0),
971
974
  e.error ? (m(), M("span", {
972
975
  key: 1,
973
976
  class: "error-indicator",
974
977
  "aria-label": e.error,
975
978
  role: "status"
976
- }, " Error ", 8, To)) : R("", !0),
977
- e.unavailable ? (m(), M("span", Io, " (zoom in) ")) : R("", !0)
979
+ }, " Error ", 8, Eo)) : A("", !0),
980
+ e.unavailable ? (m(), M("span", Oo, " (zoom in) ")) : A("", !0)
978
981
  ], 64));
979
982
  }
980
- }), lt = /* @__PURE__ */ xe(Eo, [["__scopeId", "data-v-19b1b402"]]), Oo = { class: "opacity-control" }, zo = ["for"], Do = ["id", "value", "aria-label"], _o = /* @__PURE__ */ ge({
983
+ }), nt = /* @__PURE__ */ $e(zo, [["__scopeId", "data-v-19b1b402"]]), Do = { class: "opacity-control" }, _o = ["for"], Ro = ["id", "value", "aria-label"], Ao = /* @__PURE__ */ ge({
981
984
  __name: "LayerOpacitySlider",
982
985
  props: {
983
986
  layerId: {},
@@ -991,11 +994,11 @@ const Fo = {
991
994
  const n = r.target;
992
995
  l("update:opacity", parseFloat(n.value));
993
996
  }
994
- return (r, n) => (m(), M("div", Oo, [
997
+ return (r, n) => (m(), M("div", Do, [
995
998
  P("label", {
996
999
  class: "opacity-label",
997
1000
  for: "opacity-" + e.layerId
998
- }, " Opacity: " + H(Math.round(e.opacity * 100)) + "% ", 9, zo),
1001
+ }, " Opacity: " + G(Math.round(e.opacity * 100)) + "% ", 9, _o),
999
1002
  P("input", {
1000
1003
  id: "opacity-" + e.layerId,
1001
1004
  type: "range",
@@ -1006,10 +1009,10 @@ const Fo = {
1006
1009
  "aria-label": "Opacity for " + e.layerName,
1007
1010
  class: "opacity-slider",
1008
1011
  onInput: o
1009
- }, null, 40, Do)
1012
+ }, null, 40, Ro)
1010
1013
  ]));
1011
1014
  }
1012
- }), bt = /* @__PURE__ */ xe(_o, [["__scopeId", "data-v-1a025f6a"]]), Ro = ["aria-label"], Ao = { class: "legend-label" }, Bo = /* @__PURE__ */ ge({
1015
+ }), Lt = /* @__PURE__ */ $e(Ao, [["__scopeId", "data-v-1a025f6a"]]), Bo = ["aria-label"], Vo = { class: "legend-label" }, Zo = /* @__PURE__ */ ge({
1013
1016
  __name: "LayerLegend",
1014
1017
  props: {
1015
1018
  items: {},
@@ -1020,7 +1023,7 @@ const Fo = {
1020
1023
  class: "layer-legend",
1021
1024
  "aria-label": e.label
1022
1025
  }, [
1023
- (m(!0), M(de, null, we(e.items, (o, r) => (m(), M("li", {
1026
+ (m(!0), M(ue, null, Le(e.items, (o, r) => (m(), M("li", {
1024
1027
  key: r,
1025
1028
  class: "legend-item"
1026
1029
  }, [
@@ -1042,13 +1045,13 @@ const Fo = {
1042
1045
  class: "legend-symbol legend-fill",
1043
1046
  style: ye({ backgroundColor: o.color }),
1044
1047
  "aria-hidden": "true"
1045
- }, null, 4)) : R("", !0),
1046
- P("span", Ao, H(o.label), 1)
1048
+ }, null, 4)) : A("", !0),
1049
+ P("span", Vo, G(o.label), 1)
1047
1050
  ]))), 128))
1048
- ], 8, Ro));
1051
+ ], 8, Bo));
1049
1052
  }
1050
- }), wt = /* @__PURE__ */ xe(Bo, [["__scopeId", "data-v-62e210e3"]]);
1051
- function Lt(e) {
1053
+ }), St = /* @__PURE__ */ $e(Zo, [["__scopeId", "data-v-62e210e3"]]);
1054
+ function Ct(e) {
1052
1055
  function a(u) {
1053
1056
  return e().visibleLayerIds.has(u);
1054
1057
  }
@@ -1067,19 +1070,19 @@ function Lt(e) {
1067
1070
  }
1068
1071
  return { isVisible: a, getLayerOpacity: l, isLayerLoading: o, getLayerError: r, isLayerAvailableAtZoom: n };
1069
1072
  }
1070
- const Vo = { class: "layer-panel" }, Zo = {
1073
+ const No = { class: "layer-panel" }, Uo = {
1071
1074
  key: 0,
1072
1075
  class: "search-box"
1073
- }, No = {
1076
+ }, Wo = {
1074
1077
  key: 1,
1075
1078
  class: "topics-container"
1076
- }, Uo = { class: "layer-row" }, Wo = ["href", "aria-label"], jo = {
1079
+ }, jo = { class: "layer-row" }, qo = ["href", "aria-label"], Go = {
1077
1080
  key: 1,
1078
1081
  class: "metadata-placeholder"
1079
- }, qo = ["checked", "disabled", "onChange"], Go = { class: "layer-title" }, Ho = {
1082
+ }, Ho = ["checked", "disabled", "onChange"], Jo = { class: "layer-title" }, Ko = {
1080
1083
  key: 0,
1081
1084
  class: "no-results"
1082
- }, Jo = /* @__PURE__ */ ge({
1085
+ }, Qo = /* @__PURE__ */ ge({
1083
1086
  __name: "LayerPanel",
1084
1087
  props: {
1085
1088
  layerList: {},
@@ -1105,10 +1108,10 @@ const Vo = { class: "layer-panel" }, Zo = {
1105
1108
  return l.layerList.filter((L) => L.config.title.toLowerCase().includes(d));
1106
1109
  });
1107
1110
  function n(d) {
1108
- const L = Vt(d);
1111
+ const L = Nt(d);
1109
1112
  return l.layerMetadata[L] || null;
1110
1113
  }
1111
- const u = _(() => l.layerList.some((d) => n(d.config.url))), { isVisible: w, getLayerOpacity: p, isLayerLoading: C, getLayerError: y, isLayerAvailableAtZoom: h } = Lt(() => ({
1114
+ const u = _(() => l.layerList.some((d) => n(d.config.url))), { isVisible: w, getLayerOpacity: p, isLayerLoading: C, getLayerError: y, isLayerAvailableAtZoom: h } = Ct(() => ({
1112
1115
  visibleLayerIds: l.visibleLayers,
1113
1116
  layerOpacities: l.layerOpacities,
1114
1117
  loadingLayerIds: l.loadingLayers,
@@ -1121,17 +1124,17 @@ const Vo = { class: "layer-panel" }, Zo = {
1121
1124
  function g(d) {
1122
1125
  o("toggleLayer", d);
1123
1126
  }
1124
- return (d, L) => (m(), M("div", Vo, [
1125
- e.showSearch ? (m(), M("div", Zo, [
1126
- J(f(Co), {
1127
+ return (d, L) => (m(), M("div", No, [
1128
+ e.showSearch ? (m(), M("div", Uo, [
1129
+ H(f(xo), {
1127
1130
  modelValue: i.value,
1128
1131
  "onUpdate:modelValue": L[0] || (L[0] = (S) => i.value = S),
1129
1132
  placeholder: e.searchPlaceholder,
1130
1133
  "class-name": "layer-search-field"
1131
1134
  }, {
1132
- "trailing-action": Ge(() => [
1133
- J(f(Ce), {
1134
- "icon-definition": f(ko),
1135
+ "trailing-action": He(() => [
1136
+ H(f(ke), {
1137
+ "icon-definition": f($o),
1135
1138
  size: "small",
1136
1139
  inline: "",
1137
1140
  decorative: ""
@@ -1139,20 +1142,20 @@ const Vo = { class: "layer-panel" }, Zo = {
1139
1142
  ]),
1140
1143
  _: 1
1141
1144
  }, 8, ["modelValue", "placeholder"])
1142
- ])) : R("", !0),
1143
- e.mode === "topics" ? (m(), M("div", No, [
1145
+ ])) : A("", !0),
1146
+ e.mode === "topics" ? (m(), M("div", Wo, [
1144
1147
  me(d.$slots, "topics", {}, () => [
1145
1148
  L[2] || (L[2] = P("div", { class: "no-topics" }, ' No topic components provided. Use the "topics" slot to add TopicAccordion components. ', -1))
1146
1149
  ], !0)
1147
1150
  ])) : (m(), M("div", {
1148
1151
  key: 2,
1149
- class: se(["layer-list", { "has-metadata": u.value }])
1152
+ class: ne(["layer-list", { "has-metadata": u.value }])
1150
1153
  }, [
1151
- (m(!0), M(de, null, we(r.value, (S) => (m(), M("div", {
1154
+ (m(!0), M(ue, null, Le(r.value, (S) => (m(), M("div", {
1152
1155
  key: S.config.id,
1153
1156
  class: "layer-item"
1154
1157
  }, [
1155
- P("div", Uo, [
1158
+ P("div", jo, [
1156
1159
  n(S.config.url) ? (m(), M("a", {
1157
1160
  key: 0,
1158
1161
  href: n(S.config.url) || "",
@@ -1160,18 +1163,18 @@ const Vo = { class: "layer-panel" }, Zo = {
1160
1163
  rel: "noopener noreferrer",
1161
1164
  class: "metadata-link",
1162
1165
  "aria-label": "View metadata for " + S.config.title,
1163
- onClick: L[1] || (L[1] = Qt(() => {
1166
+ onClick: L[1] || (L[1] = Yt(() => {
1164
1167
  }, ["stop"]))
1165
1168
  }, [
1166
- J(f(Ce), {
1167
- "icon-definition": f(Po),
1169
+ H(f(ke), {
1170
+ "icon-definition": f(To),
1168
1171
  size: "small",
1169
1172
  inline: "",
1170
1173
  decorative: ""
1171
1174
  }, null, 8, ["icon-definition"])
1172
- ], 8, Wo)) : u.value ? (m(), M("span", jo)) : R("", !0),
1175
+ ], 8, qo)) : u.value ? (m(), M("span", Go)) : A("", !0),
1173
1176
  P("label", {
1174
- class: se(["layer-checkbox", {
1177
+ class: ne(["layer-checkbox", {
1175
1178
  "layer-unavailable": !f(h)(S.config),
1176
1179
  "layer-error": f(y)(S.config.id)
1177
1180
  }])
@@ -1180,11 +1183,11 @@ const Vo = { class: "layer-panel" }, Zo = {
1180
1183
  type: "checkbox",
1181
1184
  checked: f(w)(S.config.id),
1182
1185
  disabled: !f(h)(S.config),
1183
- onChange: (I) => g(S.config.id)
1184
- }, null, 40, qo),
1185
- P("span", Go, [
1186
- ke(H(S.config.title) + " ", 1),
1187
- J(lt, {
1186
+ onChange: (E) => g(S.config.id)
1187
+ }, null, 40, Ho),
1188
+ P("span", Jo, [
1189
+ xe(G(S.config.title) + " ", 1),
1190
+ H(nt, {
1188
1191
  loading: f(C)(S.config.id),
1189
1192
  error: f(y)(S.config.id),
1190
1193
  unavailable: !f(h)(S.config)
@@ -1192,24 +1195,24 @@ const Vo = { class: "layer-panel" }, Zo = {
1192
1195
  ])
1193
1196
  ], 2)
1194
1197
  ]),
1195
- e.showOpacity && f(w)(S.config.id) && f(h)(S.config) ? (m(), G(bt, {
1198
+ e.showOpacity && f(w)(S.config.id) && f(h)(S.config) ? (m(), q(Lt, {
1196
1199
  key: 0,
1197
1200
  "layer-id": S.config.id,
1198
1201
  "layer-name": S.config.title,
1199
1202
  opacity: f(p)(S.config.id),
1200
- "onUpdate:opacity": (I) => o("setOpacity", S.config.id, I)
1201
- }, null, 8, ["layer-id", "layer-name", "opacity", "onUpdate:opacity"])) : R("", !0),
1202
- e.showLegend && f(w)(S.config.id) && f(h)(S.config) && S.config.legend?.length ? (m(), G(wt, {
1203
+ "onUpdate:opacity": (E) => o("setOpacity", S.config.id, E)
1204
+ }, null, 8, ["layer-id", "layer-name", "opacity", "onUpdate:opacity"])) : A("", !0),
1205
+ e.showLegend && f(w)(S.config.id) && f(h)(S.config) && S.config.legend?.length ? (m(), q(St, {
1203
1206
  key: 1,
1204
1207
  items: S.config.legend,
1205
1208
  label: "Legend for " + S.config.title
1206
- }, null, 8, ["items", "label"])) : R("", !0)
1209
+ }, null, 8, ["items", "label"])) : A("", !0)
1207
1210
  ]))), 128)),
1208
- r.value.length === 0 ? (m(), M("div", Ho, 'No layers match "' + H(e.searchQuery) + '"', 1)) : R("", !0)
1211
+ r.value.length === 0 ? (m(), M("div", Ko, 'No layers match "' + G(e.searchQuery) + '"', 1)) : A("", !0)
1209
1212
  ], 2))
1210
1213
  ]));
1211
1214
  }
1212
- }), Ko = /* @__PURE__ */ xe(Jo, [["__scopeId", "data-v-e48bb978"]]), Qo = {
1215
+ }), Xo = /* @__PURE__ */ $e(Qo, [["__scopeId", "data-v-e48bb978"]]), Yo = {
1213
1216
  esriSLSSolid: null,
1214
1217
  esriSLSDash: [6, 1.5],
1215
1218
  esriSLSDot: [1, 1.5],
@@ -1217,11 +1220,11 @@ const Vo = { class: "layer-panel" }, Zo = {
1217
1220
  esriSLSDashDotDot: [6, 1.5, 1, 1.5, 1, 1.5],
1218
1221
  esriSLSNull: null
1219
1222
  };
1220
- function Je(e) {
1223
+ function Ke(e) {
1221
1224
  if (e)
1222
- return Qo[e] ?? void 0;
1225
+ return Yo[e] ?? void 0;
1223
1226
  }
1224
- function Xo(e, a, l, o, r) {
1227
+ function ea(e, a, l, o, r) {
1225
1228
  const n = [];
1226
1229
  let u = a[0], w = [e[0]], p = 0;
1227
1230
  for (let i = 1; i < e.length; i++)
@@ -1230,37 +1233,37 @@ function Xo(e, a, l, o, r) {
1230
1233
  const C = [], y = /* @__PURE__ */ new Set();
1231
1234
  let h = o.minValue ?? 0;
1232
1235
  for (let i = 0; i < n.length; i++) {
1233
- const g = n[i], d = g.breaks, L = Je(g.style), S = i === 0 ? null : n[i - 1].breaks[n[i - 1].breaks.length - 1].classMaxValue, I = d[d.length - 1].classMaxValue;
1236
+ const g = n[i], d = g.breaks, L = Ke(g.style), S = i === 0 ? null : n[i - 1].breaks[n[i - 1].breaks.length - 1].classMaxValue, E = d[d.length - 1].classMaxValue;
1234
1237
  let F;
1235
1238
  const V = !!o.defaultSymbol;
1236
- S === null ? F = `${!V && o.minValue != null ? `${l} >= ${o.minValue} AND ` : ""}${l} <= ${I}` : i === n.length - 1 && V ? F = `${l} > ${S}` : F = `${l} > ${S} AND ${l} <= ${I}`;
1239
+ S === null ? F = `${!V && o.minValue != null ? `${l} >= ${o.minValue} AND ` : ""}${l} <= ${E}` : i === n.length - 1 && V ? F = `${l} > ${S}` : F = `${l} > ${S} AND ${l} <= ${E}`;
1237
1240
  const T = {
1238
1241
  "line-opacity": he(r)
1239
1242
  };
1240
1243
  if (L && (T["line-dasharray"] = L), d.length === 1)
1241
1244
  T["line-color"] = z(d[0].symbol?.color), T["line-width"] = X(d[0].symbol?.width || 2);
1242
1245
  else {
1243
- const W = ["step", ["get", l]], fe = ["step", ["get", l]];
1244
- W.push(z(d[0].symbol?.color)), fe.push(X(d[0].symbol?.width || 2));
1246
+ const U = ["step", ["get", l]], de = ["step", ["get", l]];
1247
+ U.push(z(d[0].symbol?.color)), de.push(X(d[0].symbol?.width || 2));
1245
1248
  for (let ve = 1; ve < d.length; ve++)
1246
- W.push(d[ve - 1].classMaxValue), W.push(z(d[ve].symbol?.color)), fe.push(d[ve - 1].classMaxValue), fe.push(X(d[ve].symbol?.width || 2));
1247
- T["line-color"] = W, T["line-width"] = fe;
1249
+ U.push(d[ve - 1].classMaxValue), U.push(z(d[ve].symbol?.color)), de.push(d[ve - 1].classMaxValue), de.push(X(d[ve].symbol?.width || 2));
1250
+ T["line-color"] = U, T["line-width"] = de;
1248
1251
  }
1249
1252
  const O = [];
1250
- for (const W of d)
1253
+ for (const U of d)
1251
1254
  O.push({
1252
1255
  type: "line",
1253
- color: z(W.symbol?.color),
1254
- width: X(W.symbol?.width || 2),
1255
- label: W.label || `${h} - ${W.classMaxValue}`
1256
- }), h = W.classMaxValue + 1;
1256
+ color: z(U.symbol?.color),
1257
+ width: X(U.symbol?.width || 2),
1258
+ label: U.label || `${h} - ${U.classMaxValue}`
1259
+ }), h = U.classMaxValue + 1;
1257
1260
  const D = g.style.replace("esriSLS", "").toLowerCase();
1258
- let te;
1259
- i === 0 ? te = "" : y.has(D) ? te = `-${D}-${i}` : te = `-${D}`, y.add(D), C.push({ suffix: te, where: F, paint: T, legend: O });
1261
+ let ee;
1262
+ i === 0 ? ee = "" : y.has(D) ? ee = `-${D}-${i}` : ee = `-${D}`, y.add(D), C.push({ suffix: ee, where: F, paint: T, legend: O });
1260
1263
  }
1261
1264
  return C;
1262
1265
  }
1263
- function Yo(e, a, l, o, r) {
1266
+ function ta(e, a, l, o, r) {
1264
1267
  const n = /* @__PURE__ */ new Map();
1265
1268
  for (const C of e) {
1266
1269
  const y = C.symbol?.style || "esriSLSSolid";
@@ -1269,7 +1272,7 @@ function Yo(e, a, l, o, r) {
1269
1272
  const u = [], w = /* @__PURE__ */ new Set();
1270
1273
  let p = !0;
1271
1274
  for (const [C, y] of n) {
1272
- const h = Je(C), g = y.map((F) => `${a} = '${String(F.value).replace(/'/g, "''")}'`).join(" OR "), d = {
1275
+ const h = Ke(C), g = y.map((F) => `${a} = '${String(F.value).replace(/'/g, "''")}'`).join(" OR "), d = {
1273
1276
  "line-opacity": he(o)
1274
1277
  };
1275
1278
  if (h && (d["line-dasharray"] = h), y.length === 1)
@@ -1277,7 +1280,7 @@ function Yo(e, a, l, o, r) {
1277
1280
  else {
1278
1281
  const F = ["match", ["to-string", ["get", a]]];
1279
1282
  for (const V of y)
1280
- F.push(at(V.value)), F.push(z(V.symbol?.color));
1283
+ F.push(it(V.value)), F.push(z(V.symbol?.color));
1281
1284
  F.push(l ? z(l.color) : "rgba(0, 0, 0, 0)"), d["line-color"] = F, d["line-width"] = X(y[0].symbol?.width || 2);
1282
1285
  }
1283
1286
  const L = [];
@@ -1291,8 +1294,8 @@ function Yo(e, a, l, o, r) {
1291
1294
  });
1292
1295
  }
1293
1296
  const S = C.replace("esriSLS", "").toLowerCase();
1294
- let I;
1295
- p ? I = "" : w.has(S) ? I = `-${S}-${u.length}` : I = `-${S}`, w.add(S), p = !1, u.push({ suffix: I, where: g, paint: d, legend: L });
1297
+ let E;
1298
+ p ? E = "" : w.has(S) ? E = `-${S}-${u.length}` : E = `-${S}`, w.add(S), p = !1, u.push({ suffix: E, where: g, paint: d, legend: L });
1296
1299
  }
1297
1300
  return u;
1298
1301
  }
@@ -1307,23 +1310,23 @@ function he(e) {
1307
1310
  function X(e) {
1308
1311
  return Math.round(e * (96 / 72) * 10) / 10;
1309
1312
  }
1310
- const ea = 559082264;
1311
- function zt(e) {
1312
- return !e || e <= 0 ? null : Math.round(Math.log2(ea / e) * 100) / 100;
1313
+ const oa = 559082264;
1314
+ function _t(e) {
1315
+ return !e || e <= 0 ? null : Math.round(Math.log2(oa / e) * 100) / 100;
1313
1316
  }
1314
- function ta(e, a) {
1317
+ function aa(e, a) {
1315
1318
  const l = {};
1316
1319
  if (e && e > 0) {
1317
- const o = zt(e);
1320
+ const o = _t(e);
1318
1321
  o !== null && (l.minZoom = o);
1319
1322
  }
1320
1323
  if (a && a > 0) {
1321
- const o = zt(a);
1324
+ const o = _t(a);
1322
1325
  o !== null && (l.maxZoom = o);
1323
1326
  }
1324
1327
  return l;
1325
1328
  }
1326
- function rt(e) {
1329
+ function st(e) {
1327
1330
  if (!e) return "fill";
1328
1331
  switch (e.type) {
1329
1332
  case "esriSFS":
@@ -1340,21 +1343,21 @@ function rt(e) {
1340
1343
  return "fill";
1341
1344
  }
1342
1345
  }
1343
- function Me(e) {
1346
+ function Pe(e) {
1344
1347
  return !(!e || e.style === "esriSLSNull" || e.color === null || e.width === 0 || e.color && e.color[3] === 0);
1345
1348
  }
1346
- function at(e) {
1349
+ function it(e) {
1347
1350
  return String(e);
1348
1351
  }
1349
- function Zt(e, a, l) {
1350
- const o = e.symbol, r = rt(o);
1352
+ function Ut(e, a, l) {
1353
+ const o = e.symbol, r = st(o);
1351
1354
  let n = {}, u = [], w = null;
1352
1355
  if (r === "fill" && o) {
1353
1356
  const p = o.color === null ? 0 : o.color?.[3] ?? 255, C = p === 0 ? "rgba(0, 0, 0, 0)" : z(o.color), y = p === 0 ? 0 : p < 255 ? 1 : he(a);
1354
1357
  if (n = {
1355
1358
  "fill-color": C,
1356
1359
  "fill-opacity": y
1357
- }, Me(o.outline)) {
1360
+ }, Pe(o.outline)) {
1358
1361
  const h = X(o.outline.width || 1);
1359
1362
  w = {
1360
1363
  "line-color": z(o.outline.color),
@@ -1374,7 +1377,7 @@ function Zt(e, a, l) {
1374
1377
  "line-width": X(o.width || 1),
1375
1378
  "line-opacity": he(a)
1376
1379
  };
1377
- const p = Je(o.style);
1380
+ const p = Ke(o.style);
1378
1381
  p && (n["line-dasharray"] = p), u = [
1379
1382
  {
1380
1383
  type: "line",
@@ -1389,7 +1392,7 @@ function Zt(e, a, l) {
1389
1392
  "circle-color": z(o.color),
1390
1393
  "circle-radius": p,
1391
1394
  "circle-opacity": he(a)
1392
- }, Me(o.outline) && (n["circle-stroke-color"] = z(o.outline.color), n["circle-stroke-width"] = X(o.outline.width || 1)), u = [
1395
+ }, Pe(o.outline) && (n["circle-stroke-color"] = z(o.outline.color), n["circle-stroke-width"] = X(o.outline.width || 1)), u = [
1393
1396
  {
1394
1397
  type: "circle",
1395
1398
  color: z(o.color),
@@ -1399,18 +1402,18 @@ function Zt(e, a, l) {
1399
1402
  }
1400
1403
  return { paint: n, legend: u, geomType: r, outlinePaint: w };
1401
1404
  }
1402
- function oa(e, a, l) {
1405
+ function ia(e, a, l) {
1403
1406
  const o = e.field1.toLowerCase(), r = e.uniqueValueInfos || [], n = e.defaultSymbol;
1404
1407
  if (r.length === 0)
1405
- return Zt({ ...e, symbol: n }, a);
1406
- const u = r[0]?.symbol || n, w = rt(u);
1408
+ return Ut({ ...e, symbol: n }, a);
1409
+ const u = r[0]?.symbol || n, w = st(u);
1407
1410
  let p = {};
1408
1411
  const C = [];
1409
1412
  let y = null;
1410
1413
  if (w === "fill") {
1411
1414
  const h = ["match", ["to-string", ["get", o]]];
1412
1415
  for (const i of r) {
1413
- h.push(at(i.value)), h.push(z(i.symbol?.color));
1416
+ h.push(it(i.value)), h.push(z(i.symbol?.color));
1414
1417
  const g = String(i.value), L = l?.get(g) || i.label || g;
1415
1418
  C.push({
1416
1419
  type: "fill",
@@ -1421,7 +1424,7 @@ function oa(e, a, l) {
1421
1424
  if (h.push(n ? z(n.color) : "rgba(0, 0, 0, 0)"), p = {
1422
1425
  "fill-color": h,
1423
1426
  "fill-opacity": he(a)
1424
- }, Me(u?.outline)) {
1427
+ }, Pe(u?.outline)) {
1425
1428
  const i = X(Math.max(u.outline.width || 1, 1));
1426
1429
  y = {
1427
1430
  "line-color": z(u.outline.color),
@@ -1431,13 +1434,13 @@ function oa(e, a, l) {
1431
1434
  } else if (w === "line") {
1432
1435
  const h = ["match", ["to-string", ["get", o]]];
1433
1436
  for (const d of r) {
1434
- h.push(at(d.value)), h.push(z(d.symbol?.color));
1435
- const L = String(d.value), I = l?.get(L) || d.label || L;
1437
+ h.push(it(d.value)), h.push(z(d.symbol?.color));
1438
+ const L = String(d.value), E = l?.get(L) || d.label || L;
1436
1439
  C.push({
1437
1440
  type: "line",
1438
1441
  color: z(d.symbol?.color),
1439
1442
  width: X(d.symbol?.width || 1),
1440
- label: I
1443
+ label: E
1441
1444
  });
1442
1445
  }
1443
1446
  h.push(n ? z(n.color) : "rgba(0, 0, 0, 0)"), p = {
@@ -1447,17 +1450,17 @@ function oa(e, a, l) {
1447
1450
  };
1448
1451
  const i = r.map((d) => d.symbol?.style || "esriSLSSolid"), g = [...new Set(i)];
1449
1452
  if (g.length > 1) {
1450
- const d = Yo(r, o, n, a, l);
1453
+ const d = ta(r, o, n, a, l);
1451
1454
  return { paint: {}, legend: [], geomType: w, outlinePaint: y, splitLayers: d };
1452
1455
  }
1453
1456
  if (g.length === 1) {
1454
- const d = Je(g[0]);
1457
+ const d = Ke(g[0]);
1455
1458
  d && (p["line-dasharray"] = d);
1456
1459
  }
1457
1460
  } else if (w === "circle") {
1458
1461
  const h = ["match", ["to-string", ["get", o]]];
1459
1462
  for (const g of r) {
1460
- h.push(at(g.value)), h.push(z(g.symbol?.color));
1463
+ h.push(it(g.value)), h.push(z(g.symbol?.color));
1461
1464
  const d = String(g.value), S = l?.get(d) || g.label || d;
1462
1465
  C.push({
1463
1466
  type: "circle",
@@ -1471,17 +1474,17 @@ function oa(e, a, l) {
1471
1474
  "circle-color": h,
1472
1475
  "circle-radius": i,
1473
1476
  "circle-opacity": he(a)
1474
- }, Me(u?.outline) && (p["circle-stroke-color"] = z(u.outline.color), p["circle-stroke-width"] = X(u.outline.width || 1));
1477
+ }, Pe(u?.outline) && (p["circle-stroke-color"] = z(u.outline.color), p["circle-stroke-width"] = X(u.outline.width || 1));
1475
1478
  }
1476
1479
  return { paint: p, legend: C, geomType: w, outlinePaint: y };
1477
1480
  }
1478
- function aa(e, a) {
1481
+ function la(e, a) {
1479
1482
  const l = e.field.toLowerCase(), o = e.classBreakInfos || [], r = e.visualVariables?.find((y) => y.type === "colorInfo");
1480
1483
  if (r?.stops && r.stops.length > 0)
1481
- return ia(r, l, e, a);
1484
+ return na(r, l, e, a);
1482
1485
  if (o.length === 0)
1483
1486
  return { paint: {}, legend: [], geomType: "fill", outlinePaint: null };
1484
- const n = o[0]?.symbol, u = rt(n);
1487
+ const n = o[0]?.symbol, u = st(n);
1485
1488
  let w = {};
1486
1489
  const p = [];
1487
1490
  let C = null;
@@ -1499,7 +1502,7 @@ function aa(e, a) {
1499
1502
  if (w = {
1500
1503
  "fill-color": y,
1501
1504
  "fill-opacity": he(a)
1502
- }, Me(n?.outline)) {
1505
+ }, Pe(n?.outline)) {
1503
1506
  const h = X(n.outline.width || 1);
1504
1507
  C = {
1505
1508
  "line-color": z(n.outline.color),
@@ -1507,17 +1510,17 @@ function aa(e, a) {
1507
1510
  };
1508
1511
  }
1509
1512
  } else if (u === "line") {
1510
- const y = o.map((I) => I.symbol?.style || "esriSLSSolid"), h = [...new Set(y)];
1513
+ const y = o.map((E) => E.symbol?.style || "esriSLSSolid"), h = [...new Set(y)];
1511
1514
  if (h.length > 1) {
1512
- const I = Xo(o, y, l, e, a);
1513
- return { paint: {}, legend: [], geomType: u, outlinePaint: C, splitLayers: I };
1515
+ const E = ea(o, y, l, e, a);
1516
+ return { paint: {}, legend: [], geomType: u, outlinePaint: C, splitLayers: E };
1514
1517
  }
1515
1518
  const g = ["step", ["get", l]];
1516
1519
  g.push(z(o[0]?.symbol?.color));
1517
1520
  let d = e.minValue ?? 0;
1518
- for (let I = 0; I < o.length; I++) {
1519
- const F = o[I];
1520
- I > 0 && (g.push(o[I - 1].classMaxValue), g.push(z(F.symbol?.color))), p.push({
1521
+ for (let E = 0; E < o.length; E++) {
1522
+ const F = o[E];
1523
+ E > 0 && (g.push(o[E - 1].classMaxValue), g.push(z(F.symbol?.color))), p.push({
1521
1524
  type: "line",
1522
1525
  color: z(F.symbol?.color),
1523
1526
  width: X(F.symbol?.width || n?.width || 2),
@@ -1530,16 +1533,16 @@ function aa(e, a) {
1530
1533
  "line-width": L,
1531
1534
  "line-opacity": he(a)
1532
1535
  };
1533
- const S = Je(h[0]);
1536
+ const S = Ke(h[0]);
1534
1537
  S && (w["line-dasharray"] = S);
1535
1538
  }
1536
1539
  return { paint: w, legend: p, geomType: u, outlinePaint: C };
1537
1540
  }
1538
- function ia(e, a, l, o) {
1541
+ function na(e, a, l, o) {
1539
1542
  const r = e.stops || [];
1540
1543
  if (r.length === 0)
1541
1544
  return { paint: {}, legend: [], geomType: "fill", outlinePaint: null };
1542
- const n = l.classBreakInfos?.[0]?.symbol || l.defaultSymbol, u = rt(n);
1545
+ const n = l.classBreakInfos?.[0]?.symbol || l.defaultSymbol, u = st(n);
1543
1546
  let w = {};
1544
1547
  const p = [];
1545
1548
  let C = null;
@@ -1561,7 +1564,7 @@ function ia(e, a, l, o) {
1561
1564
  // Otherwise use the interpolated color
1562
1565
  ],
1563
1566
  "fill-opacity": he(o)
1564
- }, Me(n?.outline)) {
1567
+ }, Pe(n?.outline)) {
1565
1568
  const i = X(n.outline.width || 1);
1566
1569
  C = {
1567
1570
  "line-color": z(n.outline.color),
@@ -1571,22 +1574,22 @@ function ia(e, a, l, o) {
1571
1574
  }
1572
1575
  return { paint: w, legend: p, geomType: u, outlinePaint: C };
1573
1576
  }
1574
- function la(e, a, l, o) {
1577
+ function ra(e, a, l, o) {
1575
1578
  if (!e?.renderer)
1576
1579
  return { paint: {}, legend: [], geomType: "fill", outlinePaint: null };
1577
1580
  const r = e.renderer;
1578
1581
  switch (r.type) {
1579
1582
  case "simple":
1580
- return Zt(r, a);
1583
+ return Ut(r, a);
1581
1584
  case "uniqueValue":
1582
- return oa(r, a, l);
1585
+ return ia(r, a, l);
1583
1586
  case "classBreaks":
1584
- return aa(r, a);
1587
+ return la(r, a);
1585
1588
  default:
1586
1589
  return { paint: {}, legend: [], geomType: "fill", outlinePaint: null };
1587
1590
  }
1588
1591
  }
1589
- function na(e) {
1592
+ function sa(e) {
1590
1593
  if (!e) return null;
1591
1594
  const a = (e.title || "").replace(/\{([^}]+)\}/g, (n, u) => `{${u.toLowerCase()}}`), o = (e.fieldInfos || []).filter((n) => n.visible === !0).map((n) => {
1592
1595
  const u = {
@@ -1600,16 +1603,16 @@ function na(e) {
1600
1603
  };
1601
1604
  return e.showTime && (r.showTime = !0), r;
1602
1605
  }
1603
- function ra(e) {
1606
+ function ca(e) {
1604
1607
  return e?.definitionExpression;
1605
1608
  }
1606
- function sa(e) {
1609
+ function ua(e) {
1607
1610
  return (e.includes("_") ? e.split("_").slice(1).join(" ") : e).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
1608
1611
  }
1609
- function ca(e) {
1612
+ function da(e) {
1610
1613
  return e.includes("_") ? e.split("_").slice(1).join(" ") : e;
1611
1614
  }
1612
- function ua(e) {
1615
+ function fa(e) {
1613
1616
  const a = /* @__PURE__ */ new Map();
1614
1617
  if (!e)
1615
1618
  return a;
@@ -1624,7 +1627,7 @@ function ua(e) {
1624
1627
  }
1625
1628
  return a;
1626
1629
  }
1627
- async function da(e) {
1630
+ async function pa(e) {
1628
1631
  try {
1629
1632
  const a = await fetch(`${e}?f=json`);
1630
1633
  if (!a.ok)
@@ -1638,7 +1641,7 @@ async function da(e) {
1638
1641
  return null;
1639
1642
  }
1640
1643
  }
1641
- function Dt(e) {
1644
+ function Rt(e) {
1642
1645
  const a = {
1643
1646
  id: e.id,
1644
1647
  title: e.title,
@@ -1651,7 +1654,7 @@ function Dt(e) {
1651
1654
  };
1652
1655
  return e.where && (a.where = e.where), e.minZoom !== void 0 && (a.minZoom = e.minZoom), e.maxZoom !== void 0 && (a.maxZoom = e.maxZoom), e.outlinePaint && (a.outlinePaint = e.outlinePaint), e.parentId && (a.parentId = e.parentId), a;
1653
1656
  }
1654
- async function Nt(e) {
1657
+ async function Wt(e) {
1655
1658
  const a = e.operationalLayers || [], l = [], o = ["Zoning and Planning_Land Use"];
1656
1659
  for (const r of a)
1657
1660
  if (r.url && !r.title?.toLowerCase().includes("(under construction)") && !(r.url && /\/MapServer(\/\d+)?$/i.test(r.url)))
@@ -1659,29 +1662,29 @@ async function Nt(e) {
1659
1662
  let n = r.layerDefinition?.drawingInfo, u;
1660
1663
  const w = !n || !n.renderer, p = o.includes(r.title), C = n?.renderer?.uniqueValueInfos?.[0]?.symbol?.outline || n?.renderer?.defaultSymbol?.outline;
1661
1664
  if ((w || p) && r.url) {
1662
- const O = await da(r.url);
1665
+ const O = await pa(r.url);
1663
1666
  if (O) {
1664
- if (n = O.drawingInfo, C && Me(C) && n?.renderer) {
1665
- const D = n.renderer, te = D.uniqueValueInfos?.[0]?.symbol?.outline || D.defaultSymbol?.outline;
1666
- if (!Me(te)) {
1667
- for (const W of D.uniqueValueInfos || [])
1668
- W.symbol && (W.symbol.outline = C);
1667
+ if (n = O.drawingInfo, C && Pe(C) && n?.renderer) {
1668
+ const D = n.renderer, ee = D.uniqueValueInfos?.[0]?.symbol?.outline || D.defaultSymbol?.outline;
1669
+ if (!Pe(ee)) {
1670
+ for (const U of D.uniqueValueInfos || [])
1671
+ U.symbol && (U.symbol.outline = C);
1669
1672
  D.defaultSymbol && (D.defaultSymbol.outline = C);
1670
1673
  }
1671
1674
  }
1672
- O.description && (u = ua(O.description), u.size > 0);
1675
+ O.description && (u = fa(O.description), u.size > 0);
1673
1676
  }
1674
1677
  }
1675
- const { paint: y, legend: h, geomType: i, outlinePaint: g, splitLayers: d } = la(
1678
+ const { paint: y, legend: h, geomType: i, outlinePaint: g, splitLayers: d } = ra(
1676
1679
  n,
1677
1680
  r.opacity,
1678
1681
  u,
1679
1682
  r.title
1680
- ), L = na(r.popupInfo), S = ra(r.layerDefinition), I = ta(r.layerDefinition?.minScale, r.layerDefinition?.maxScale), F = sa(r.title), V = ca(r.title), T = r.opacity ?? 1;
1683
+ ), L = sa(r.popupInfo), S = ca(r.layerDefinition), E = aa(r.layerDefinition?.minScale, r.layerDefinition?.maxScale), F = ua(r.title), V = da(r.title), T = r.opacity ?? 1;
1681
1684
  if (d && d.length > 0)
1682
1685
  for (const O of d) {
1683
1686
  const D = `${F}${O.suffix}`;
1684
- l.push(Dt({
1687
+ l.push(Rt({
1685
1688
  id: D,
1686
1689
  title: V,
1687
1690
  type: i,
@@ -1691,13 +1694,13 @@ async function Nt(e) {
1691
1694
  legend: O.legend,
1692
1695
  popup: L,
1693
1696
  where: S ? `(${S}) AND (${O.where})` : O.where,
1694
- minZoom: I.minZoom,
1695
- maxZoom: I.maxZoom,
1697
+ minZoom: E.minZoom,
1698
+ maxZoom: E.maxZoom,
1696
1699
  parentId: O.suffix ? F : void 0
1697
1700
  }));
1698
1701
  }
1699
1702
  else
1700
- l.push(Dt({
1703
+ l.push(Rt({
1701
1704
  id: F,
1702
1705
  title: V,
1703
1706
  type: i,
@@ -1707,32 +1710,32 @@ async function Nt(e) {
1707
1710
  legend: h,
1708
1711
  popup: L,
1709
1712
  where: S,
1710
- minZoom: I.minZoom,
1711
- maxZoom: I.maxZoom,
1713
+ minZoom: E.minZoom,
1714
+ maxZoom: E.maxZoom,
1712
1715
  outlinePaint: g
1713
1716
  }));
1714
1717
  } catch {
1715
1718
  }
1716
1719
  return l.sort((r, n) => r.title.localeCompare(n.title)), l;
1717
1720
  }
1718
- const _t = {}, St = "376af635c84643cd816a8c5d017a53aa", Ja = St;
1719
- function Ct(e, a) {
1721
+ const At = {}, kt = "376af635c84643cd816a8c5d017a53aa", Qa = kt;
1722
+ function xt(e, a) {
1720
1723
  let l = `https://www.arcgis.com/sharing/rest/content/items/${e}/data?f=json`;
1721
1724
  return a && (l += `&token=${a}`), l;
1722
1725
  }
1723
- function Ka() {
1724
- return Ct(St);
1726
+ function Xa() {
1727
+ return xt(kt);
1725
1728
  }
1726
- const nt = /* @__PURE__ */ new Map(), He = /* @__PURE__ */ new Map();
1727
- function fa(e) {
1728
- e ? (nt.delete(e), He.delete(e)) : (nt.clear(), He.clear());
1729
+ const rt = /* @__PURE__ */ new Map(), Je = /* @__PURE__ */ new Map();
1730
+ function ya(e) {
1731
+ e ? (rt.delete(e), Je.delete(e)) : (rt.clear(), Je.clear());
1729
1732
  }
1730
- let ot, Rt = 0;
1731
- async function pa() {
1732
- const e = typeof import.meta < "u" && _t?.VITE_AGO_USERNAME, a = typeof import.meta < "u" && _t?.VITE_AGO_PASSWORD;
1733
+ let at, Bt = 0;
1734
+ async function ma() {
1735
+ const e = typeof import.meta < "u" && At?.VITE_AGO_USERNAME, a = typeof import.meta < "u" && At?.VITE_AGO_PASSWORD;
1733
1736
  if (!(!e || !a)) {
1734
- if (ot && Date.now() < Rt - 3e5)
1735
- return ot;
1737
+ if (at && Date.now() < Bt - 3e5)
1738
+ return at;
1736
1739
  try {
1737
1740
  const o = await (await fetch("https://www.arcgis.com/sharing/rest/generateToken", {
1738
1741
  method: "POST",
@@ -1748,14 +1751,14 @@ async function pa() {
1748
1751
  // 2 hours
1749
1752
  })
1750
1753
  })).json();
1751
- return o.error ? void 0 : (ot = o.token, Rt = o.expires, ot);
1754
+ return o.error ? void 0 : (at = o.token, Bt = o.expires, at);
1752
1755
  } catch {
1753
1756
  return;
1754
1757
  }
1755
1758
  }
1756
1759
  }
1757
- async function ya(e, a) {
1758
- const l = Ct(e, a), o = await fetch(l, { cache: "no-store" });
1760
+ async function ha(e, a) {
1761
+ const l = xt(e, a), o = await fetch(l, { cache: "no-store" });
1759
1762
  if (!o.ok)
1760
1763
  throw new Error(`Failed to fetch WebMap: ${o.status} ${o.statusText}`);
1761
1764
  const r = await o.json();
@@ -1763,35 +1766,35 @@ async function ya(e, a) {
1763
1766
  throw new Error(`ArcGIS error: ${r.error.message || r.error.code || "Unknown error"}`);
1764
1767
  return r;
1765
1768
  }
1766
- async function ma(e) {
1769
+ async function ga(e) {
1767
1770
  try {
1768
- const a = await pa(), l = await ya(e, a);
1769
- return await Nt(l);
1771
+ const a = await ma(), l = await ha(e, a);
1772
+ return await Wt(l);
1770
1773
  } catch (a) {
1771
1774
  throw new Error(
1772
1775
  `Failed to load dynamic layer configs: ${a instanceof Error ? a.message : "Unknown error"}`
1773
1776
  );
1774
1777
  }
1775
1778
  }
1776
- async function vt(e = St) {
1777
- const a = nt.get(e);
1779
+ async function wt(e = kt) {
1780
+ const a = rt.get(e);
1778
1781
  if (a)
1779
1782
  return a;
1780
- const l = He.get(e);
1783
+ const l = Je.get(e);
1781
1784
  if (l)
1782
1785
  return l;
1783
1786
  const o = (async () => {
1784
1787
  try {
1785
- const r = await ma(e);
1786
- return nt.set(e, r), r;
1788
+ const r = await ga(e);
1789
+ return rt.set(e, r), r;
1787
1790
  } finally {
1788
- He.delete(e);
1791
+ Je.delete(e);
1789
1792
  }
1790
1793
  })();
1791
- return He.set(e, o), o;
1794
+ return Je.set(e, o), o;
1792
1795
  }
1793
- function ha(e) {
1794
- const a = k({}), l = /* @__PURE__ */ new Map();
1796
+ function va(e) {
1797
+ const a = x({}), l = /* @__PURE__ */ new Map();
1795
1798
  for (const i of e)
1796
1799
  a.value[i.id] = {
1797
1800
  data: null,
@@ -1829,10 +1832,10 @@ function ha(e) {
1829
1832
  throw new Error(`HTTP ${L.status}: ${L.statusText}`);
1830
1833
  d = await L.json();
1831
1834
  } else if (i.type === "esri") {
1832
- const S = `${i.url.replace(/\/$/, "")}/query?where=1%3D1&outFields=*&returnGeometry=false&f=json`, I = await fetch(S, i.options);
1833
- if (!I.ok)
1834
- throw new Error(`HTTP ${I.status}: ${I.statusText}`);
1835
- d = (await I.json()).features?.map((V) => V.attributes) || [];
1835
+ const S = `${i.url.replace(/\/$/, "")}/query?where=1%3D1&outFields=*&returnGeometry=false&f=json`, E = await fetch(S, i.options);
1836
+ if (!E.ok)
1837
+ throw new Error(`HTTP ${E.status}: ${E.statusText}`);
1838
+ d = (await E.json()).features?.map((V) => V.attributes) || [];
1836
1839
  } else
1837
1840
  throw new Error(`Unknown data source type: ${i.type}`);
1838
1841
  i.transform && (d = i.transform(d)), a.value = {
@@ -1888,13 +1891,13 @@ function ha(e) {
1888
1891
  window.clearInterval(i);
1889
1892
  l.clear();
1890
1893
  }
1891
- return it(() => {
1894
+ return lt(() => {
1892
1895
  r(), y();
1893
- }), At(() => {
1896
+ }), Vt(() => {
1894
1897
  h();
1895
1898
  }), {
1896
1899
  /** Reactive state for all data sources */
1897
- state: q(a),
1900
+ state: j(a),
1898
1901
  /** Whether any data source is currently loading */
1899
1902
  isLoading: w,
1900
1903
  /** Fetch all data sources */
@@ -1911,22 +1914,22 @@ function ha(e) {
1911
1914
  stopPolling: h
1912
1915
  };
1913
1916
  }
1914
- const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
1917
+ const ba = { class: "layerboard-layout" }, wa = ["aria-expanded"], La = {
1915
1918
  key: 0,
1916
1919
  class: "layerboard-subtitle"
1917
- }, wa = { class: "layerboard-mobile-menu-content" }, La = { class: "layerboard-main" }, Sa = {
1920
+ }, Sa = { class: "layerboard-mobile-menu-content" }, Ca = { class: "layerboard-main" }, ka = {
1918
1921
  key: 0,
1919
1922
  class: "layerboard-loading",
1920
1923
  role: "status",
1921
1924
  "aria-live": "polite"
1922
- }, Ca = {
1925
+ }, xa = {
1923
1926
  key: 1,
1924
1927
  class: "layerboard-error",
1925
1928
  role: "alert"
1926
- }, ka = ["aria-expanded", "aria-label"], xa = { key: 0 }, $a = { key: 1 }, Ma = {
1929
+ }, $a = ["aria-expanded", "aria-label"], Ma = { key: 0 }, Pa = { key: 1 }, Fa = {
1927
1930
  class: "sr-only",
1928
1931
  "aria-live": "polite"
1929
- }, Pa = /* @__PURE__ */ ge({
1932
+ }, Ta = /* @__PURE__ */ ge({
1930
1933
  __name: "Layerboard",
1931
1934
  props: {
1932
1935
  title: {},
@@ -1956,189 +1959,189 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
1956
1959
  },
1957
1960
  emits: ["configs-loaded", "load-error", "zoom"],
1958
1961
  setup(e, { expose: a, emit: l }) {
1959
- const o = e, r = l, n = k([]), u = k(!0), w = k(null), p = k(12), C = k(""), y = k(/* @__PURE__ */ new Set()), h = k({}), i = k(/* @__PURE__ */ new Set()), g = k({}), d = k({}), L = k(/* @__PURE__ */ new Set()), S = k({});
1960
- function I() {
1962
+ const o = e, r = l, n = x([]), u = x(!0), w = x(null), p = x(12), C = x(""), y = x(/* @__PURE__ */ new Set()), h = x({}), i = x(/* @__PURE__ */ new Set()), g = x({}), d = x({}), L = x(/* @__PURE__ */ new Set()), S = x({});
1963
+ function E() {
1961
1964
  const v = {};
1962
- for (const x of o.tiledLayers)
1963
- v[x.id] = x.opacity ?? 1;
1965
+ for (const $ of o.tiledLayers)
1966
+ v[$.id] = $.opacity ?? 1;
1964
1967
  S.value = v;
1965
1968
  }
1966
1969
  function F(v) {
1967
1970
  L.value.has(v) ? L.value.delete(v) : L.value.add(v), L.value = new Set(L.value);
1968
1971
  }
1969
- function V(v, x) {
1970
- x ? L.value.add(v) : L.value.delete(v), L.value = new Set(L.value);
1972
+ function V(v, $) {
1973
+ $ ? L.value.add(v) : L.value.delete(v), L.value = new Set(L.value);
1971
1974
  }
1972
- function T(v, x) {
1973
- S.value = { ...S.value, [v]: x };
1975
+ function T(v, $) {
1976
+ S.value = { ...S.value, [v]: $ };
1974
1977
  }
1975
- const O = o.dataSources.length > 0 ? ha(o.dataSources) : null, D = _(() => O?.state.value ?? {}), te = _(() => O?.isLoading.value ?? !1);
1976
- function W(v) {
1978
+ const O = o.dataSources.length > 0 ? va(o.dataSources) : null, D = _(() => O?.state.value ?? {}), ee = _(() => O?.isLoading.value ?? !1);
1979
+ function U(v) {
1977
1980
  return O?.getData(v) ?? null;
1978
1981
  }
1979
- function fe(v) {
1982
+ function de(v) {
1980
1983
  return O?.refetch(v) ?? Promise.resolve();
1981
1984
  }
1982
- N("layerboard-layers", q(n)), N("layerboard-visible", y), N("layerboard-opacities", h), N("layerboard-loading", q(i)), N("layerboard-errors", q(g)), N("layerboard-zoom", q(p)), N("layerboard-toggle-layer", ze), N("layerboard-set-layer-visible", We), N("layerboard-set-layers-visible", $e), N("layerboard-set-opacity", Pe), N("layerboard-tiled-layers", q(_(() => o.tiledLayers))), N("layerboard-visible-tiled", L), N("layerboard-tiled-opacities", S), N("layerboard-toggle-tiled", F), N("layerboard-set-tiled-opacity", T), N("layerboard-set-tiled-visible", V), N("layerboard-data-sources-state", D), N("layerboard-data-sources-loading", te), N("layerboard-get-data-source", W), N("layerboard-refetch-data-source", fe);
1985
+ N("layerboard-layers", j(n)), N("layerboard-visible", y), N("layerboard-opacities", h), N("layerboard-loading", j(i)), N("layerboard-errors", j(g)), N("layerboard-zoom", j(p)), N("layerboard-toggle-layer", De), N("layerboard-set-layer-visible", je), N("layerboard-set-layers-visible", Me), N("layerboard-set-opacity", Fe), N("layerboard-tiled-layers", j(_(() => o.tiledLayers))), N("layerboard-visible-tiled", L), N("layerboard-tiled-opacities", S), N("layerboard-toggle-tiled", F), N("layerboard-set-tiled-opacity", T), N("layerboard-set-tiled-visible", V), N("layerboard-data-sources-state", D), N("layerboard-data-sources-loading", ee), N("layerboard-get-data-source", U), N("layerboard-refetch-data-source", de);
1983
1986
  const ve = _(() => ({
1984
1987
  backgroundColor: o.themeColor
1985
- })), st = _(() => ({
1988
+ })), ct = _(() => ({
1986
1989
  backgroundColor: o.themeColor
1987
- })), Ne = _(() => ({
1990
+ })), Ue = _(() => ({
1988
1991
  backgroundColor: o.themeColor
1989
- })), Ke = _(() => ({
1990
- width: pe.value ? "0" : o.sidebarWidth
1992
+ })), Qe = _(() => ({
1993
+ width: fe.value ? "0" : o.sidebarWidth
1991
1994
  }));
1992
- async function Ue() {
1995
+ async function We() {
1993
1996
  try {
1994
1997
  u.value = !0, w.value = null;
1995
- const x = (await vt(o.webMapId)).map((Z) => {
1996
- let Q = Z;
1997
- const Se = o.layerStyleOverrides[Z.id];
1998
- Se && (Q = {
1999
- ...Q,
2000
- paint: Se.paint ?? Q.paint,
2001
- outlinePaint: Se.outlinePaint ?? Q.outlinePaint,
2002
- legend: Se.legend ?? Q.legend,
2003
- type: Se.type ?? Q.type
1998
+ const $ = (await wt(o.webMapId)).map((Z) => {
1999
+ let K = Z;
2000
+ const Ce = o.layerStyleOverrides[Z.id];
2001
+ Ce && (K = {
2002
+ ...K,
2003
+ paint: Ce.paint ?? K.paint,
2004
+ outlinePaint: Ce.outlinePaint ?? K.outlinePaint,
2005
+ legend: Ce.legend ?? K.legend,
2006
+ type: Ce.type ?? K.type
2004
2007
  });
2005
- const Ve = o.popupOverrides[Z.id] || (Z.parentId ? o.popupOverrides[Z.parentId] : void 0);
2006
- return Ve && Q.popup && (Q = {
2007
- ...Q,
2008
- popup: { ...Q.popup, ...Ve }
2009
- }), Q;
2008
+ const Ze = o.popupOverrides[Z.id] || (Z.parentId ? o.popupOverrides[Z.parentId] : void 0);
2009
+ return Ze && K.popup && (K = {
2010
+ ...K,
2011
+ popup: { ...K.popup, ...Ze }
2012
+ }), K;
2010
2013
  });
2011
- n.value = x.map((Z) => ({
2014
+ n.value = $.map((Z) => ({
2012
2015
  config: Z,
2013
2016
  component: Z.type
2014
2017
  }));
2015
- const K = {};
2016
- x.forEach((Z) => {
2017
- K[Z.id] = Z.opacity ?? 1;
2018
- }), h.value = K, r("configs-loaded", x);
2018
+ const J = {};
2019
+ $.forEach((Z) => {
2020
+ J[Z.id] = Z.opacity ?? 1;
2021
+ }), h.value = J, r("configs-loaded", $);
2019
2022
  } catch (v) {
2020
- const x = v instanceof Error ? v.message : "Failed to load layer configurations";
2021
- w.value = x, r("load-error", x);
2023
+ const $ = v instanceof Error ? v.message : "Failed to load layer configurations";
2024
+ w.value = $, r("load-error", $);
2022
2025
  } finally {
2023
2026
  u.value = !1;
2024
2027
  }
2025
2028
  }
2026
- async function Qe() {
2029
+ async function Xe() {
2027
2030
  if (o.fetchMetadata)
2028
2031
  try {
2029
2032
  const v = "https://phl.carto.com/api/v2/sql?q=" + encodeURIComponent(
2030
2033
  "select url_text, COALESCE(representation, '') as representation from phl.knack_metadata_reps_endpoints_join WHERE ( format = 'API' OR format = 'GeoService' ) AND url_text IS NOT null"
2031
- ), x = await fetch(v);
2032
- if (!x.ok) return;
2033
- const K = await x.json(), Z = {};
2034
- for (const Q of K.rows || [])
2035
- if (Q.url_text && Q.representation) {
2036
- const Se = Vt(Q.url_text), Ve = `https://metadata.phila.gov/#home/representationdetails/${Q.representation}/`;
2037
- Z[Se] = Ve;
2034
+ ), $ = await fetch(v);
2035
+ if (!$.ok) return;
2036
+ const J = await $.json(), Z = {};
2037
+ for (const K of J.rows || [])
2038
+ if (K.url_text && K.representation) {
2039
+ const Ce = Nt(K.url_text), Ze = `https://metadata.phila.gov/#home/representationdetails/${K.representation}/`;
2040
+ Z[Ce] = Ze;
2038
2041
  }
2039
2042
  d.value = Z;
2040
2043
  } catch {
2041
2044
  }
2042
2045
  }
2043
- function ct(v) {
2046
+ function ut(v) {
2044
2047
  p.value = v, r("zoom", v);
2045
2048
  }
2046
- function ze(v) {
2049
+ function De(v) {
2047
2050
  y.value.has(v) ? y.value.delete(v) : y.value.add(v), y.value = new Set(y.value);
2048
2051
  }
2049
- function We(v, x) {
2050
- x ? y.value.add(v) : y.value.delete(v), y.value = new Set(y.value);
2052
+ function je(v, $) {
2053
+ $ ? y.value.add(v) : y.value.delete(v), y.value = new Set(y.value);
2051
2054
  }
2052
- function $e(v, x) {
2053
- for (const K of v)
2054
- x ? y.value.add(K) : y.value.delete(K);
2055
+ function Me(v, $) {
2056
+ for (const J of v)
2057
+ $ ? y.value.add(J) : y.value.delete(J);
2055
2058
  y.value = new Set(y.value);
2056
2059
  }
2057
- function Pe(v, x) {
2058
- h.value = { ...h.value, [v]: x };
2060
+ function Fe(v, $) {
2061
+ h.value = { ...h.value, [v]: $ };
2059
2062
  }
2060
- function je(v, x) {
2061
- x ? i.value.add(v) : i.value.delete(v), i.value = new Set(i.value);
2063
+ function qe(v, $) {
2064
+ $ ? i.value.add(v) : i.value.delete(v), i.value = new Set(i.value);
2062
2065
  }
2063
- function ut(v, x) {
2064
- if (x)
2065
- g.value = { ...g.value, [v]: x };
2066
+ function dt(v, $) {
2067
+ if ($)
2068
+ g.value = { ...g.value, [v]: $ };
2066
2069
  else {
2067
- const K = { ...g.value };
2068
- delete K[v], g.value = K;
2070
+ const J = { ...g.value };
2071
+ delete J[v], g.value = J;
2069
2072
  }
2070
2073
  }
2071
- function ce(v) {
2074
+ function re(v) {
2072
2075
  C.value = v;
2073
2076
  }
2074
- const Fe = k(null), ae = k(null), De = k(null), Xe = k(null), be = k(null), qe = k(null), Ye = k(null), Le = k("sidebar");
2075
- function dt() {
2076
- Le.value = Le.value === "sidebar" ? "map" : "sidebar", Ze(() => {
2077
- Le.value === "sidebar" && Fe.value?.focus();
2077
+ const Te = x(null), oe = x(null), _e = x(null), Ye = x(null), be = x(null), Ge = x(null), et = x(null), Se = x("sidebar");
2078
+ function ft() {
2079
+ Se.value = Se.value === "sidebar" ? "map" : "sidebar", Ne(() => {
2080
+ Se.value === "sidebar" && Te.value?.focus();
2078
2081
  });
2079
2082
  }
2080
- const le = k(!1);
2081
- function Te() {
2082
- le.value = !le.value, le.value && Ze(() => {
2083
- Xe.value?.focus();
2083
+ const ae = x(!1);
2084
+ function Ie() {
2085
+ ae.value = !ae.value, ae.value && Ne(() => {
2086
+ Ye.value?.focus();
2084
2087
  });
2085
2088
  }
2086
- function Ie() {
2087
- le.value = !1, Ze(() => {
2088
- ae.value?.focus();
2089
+ function Ee() {
2090
+ ae.value = !1, Ne(() => {
2091
+ oe.value?.focus();
2089
2092
  });
2090
2093
  }
2091
- const pe = k(!1);
2092
- function et() {
2093
- pe.value = !pe.value;
2094
+ const fe = x(!1);
2095
+ function tt() {
2096
+ fe.value = !fe.value;
2094
2097
  }
2095
- const ne = k(!1), _e = k(null);
2096
- function Re() {
2097
- _e.value = document.activeElement, ne.value = !0, Ze(() => {
2098
- Ye.value?.focus();
2098
+ const ie = x(!1), Re = x(null);
2099
+ function Ae() {
2100
+ Re.value = document.activeElement, ie.value = !0, Ne(() => {
2101
+ et.value?.focus();
2099
2102
  });
2100
2103
  }
2101
- function re() {
2102
- ne.value = !1, Ze(() => {
2103
- _e.value?.focus(), _e.value = null;
2104
+ function le() {
2105
+ ie.value = !1, Ne(() => {
2106
+ Re.value?.focus(), Re.value = null;
2104
2107
  });
2105
2108
  }
2106
- function Ae(v) {
2107
- v.target.classList.contains("layerboard-modal-backdrop") && re();
2108
- }
2109
2109
  function Be(v) {
2110
+ v.target.classList.contains("layerboard-modal-backdrop") && le();
2111
+ }
2112
+ function Ve(v) {
2110
2113
  if (v.key === "Escape") {
2111
- Ie();
2114
+ Ee();
2112
2115
  return;
2113
2116
  }
2114
2117
  if (v.key === "Tab" && be.value) {
2115
- const x = Array.from(
2118
+ const $ = Array.from(
2116
2119
  be.value.querySelectorAll(
2117
2120
  'a[href], button:not([disabled]), textarea, input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])'
2118
2121
  )
2119
2122
  );
2120
- if (x.length === 0) return;
2121
- const K = x[0], Z = x[x.length - 1];
2122
- v.shiftKey ? document.activeElement === K && (v.preventDefault(), Z.focus()) : document.activeElement === Z && (v.preventDefault(), K.focus());
2123
+ if ($.length === 0) return;
2124
+ const J = $[0], Z = $[$.length - 1];
2125
+ v.shiftKey ? document.activeElement === J && (v.preventDefault(), Z.focus()) : document.activeElement === Z && (v.preventDefault(), J.focus());
2123
2126
  }
2124
2127
  }
2125
- function ft(v) {
2128
+ function pt(v) {
2126
2129
  if (v.key === "Escape") {
2127
- re();
2130
+ le();
2128
2131
  return;
2129
2132
  }
2130
- if (v.key === "Tab" && qe.value) {
2131
- const x = Array.from(
2132
- qe.value.querySelectorAll(
2133
+ if (v.key === "Tab" && Ge.value) {
2134
+ const $ = Array.from(
2135
+ Ge.value.querySelectorAll(
2133
2136
  'a[href], button:not([disabled]), textarea, input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])'
2134
2137
  )
2135
2138
  );
2136
- if (x.length === 0) return;
2137
- const K = x[0], Z = x[x.length - 1];
2138
- v.shiftKey ? document.activeElement === K && (v.preventDefault(), Z.focus()) : document.activeElement === Z && (v.preventDefault(), K.focus());
2139
+ if ($.length === 0) return;
2140
+ const J = $[0], Z = $[$.length - 1];
2141
+ v.shiftKey ? document.activeElement === J && (v.preventDefault(), Z.focus()) : document.activeElement === Z && (v.preventDefault(), J.focus());
2139
2142
  }
2140
2143
  }
2141
- N("layerboard-open-modal", Re), N("layerboard-close-modal", re), N("layerboard-is-modal-open", q(ne)), a({
2144
+ N("layerboard-open-modal", Ae), N("layerboard-close-modal", le), N("layerboard-is-modal-open", j(ie)), a({
2142
2145
  /** Layer configurations */
2143
2146
  layerList: n,
2144
2147
  /** Set of visible layer IDs */
@@ -2152,17 +2155,17 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2152
2155
  /** Current map zoom level */
2153
2156
  currentZoom: p,
2154
2157
  /** Toggle a layer's visibility */
2155
- toggleLayer: ze,
2158
+ toggleLayer: De,
2156
2159
  /** Set a layer's visibility explicitly */
2157
- setLayerVisible: We,
2160
+ setLayerVisible: je,
2158
2161
  /** Set multiple layers' visibility at once */
2159
- setLayersVisible: $e,
2162
+ setLayersVisible: Me,
2160
2163
  /** Set a layer's opacity */
2161
- setLayerOpacity: Pe,
2164
+ setLayerOpacity: Fe,
2162
2165
  /** Reload layer configurations */
2163
- reloadConfigs: Ue,
2166
+ reloadConfigs: We,
2164
2167
  /** Clear configuration cache */
2165
- clearCache: () => fa(o.webMapId),
2168
+ clearCache: () => ya(o.webMapId),
2166
2169
  // Tiled layer APIs
2167
2170
  /** Set of visible tiled layer IDs */
2168
2171
  visibleTiledLayers: L,
@@ -2178,28 +2181,28 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2178
2181
  /** State of all data sources */
2179
2182
  dataSourcesState: D,
2180
2183
  /** Whether any data source is loading */
2181
- dataSourcesLoading: te,
2184
+ dataSourcesLoading: ee,
2182
2185
  /** Get data from a specific data source */
2183
- getDataSourceData: W,
2186
+ getDataSourceData: U,
2184
2187
  /** Refetch a specific data source */
2185
- refetchDataSource: fe,
2188
+ refetchDataSource: de,
2186
2189
  // Modal APIs
2187
2190
  /** Whether the modal is currently open */
2188
- isModalOpen: ne,
2191
+ isModalOpen: ie,
2189
2192
  /** Open the modal */
2190
- openModal: Re,
2193
+ openModal: Ae,
2191
2194
  /** Close the modal */
2192
- closeModal: re
2195
+ closeModal: le
2193
2196
  });
2194
- function tt(v) {
2195
- v.key === "Escape" && le.value && Ie();
2196
- }
2197
- return it(() => {
2198
- Ue(), Qe(), I(), document.addEventListener("keydown", tt);
2199
- }), Xt(() => {
2200
- document.removeEventListener("keydown", tt);
2201
- }), (v, x) => (m(), M("div", ga, [
2202
- x[5] || (x[5] = P("a", {
2197
+ function ot(v) {
2198
+ v.key === "Escape" && ae.value && Ee();
2199
+ }
2200
+ return lt(() => {
2201
+ We(), Xe(), E(), document.addEventListener("keydown", ot);
2202
+ }), eo(() => {
2203
+ document.removeEventListener("keydown", ot);
2204
+ }), (v, $) => (m(), M("div", ba, [
2205
+ $[5] || ($[5] = P("a", {
2203
2206
  href: "#main-content",
2204
2207
  class: "skip-to-main-content-link"
2205
2208
  }, "Skip to main content", -1)),
@@ -2207,7 +2210,7 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2207
2210
  class: "layerboard-header",
2208
2211
  style: ye(ve.value)
2209
2212
  }, [
2210
- x[1] || (x[1] = P("a", {
2213
+ $[1] || ($[1] = P("a", {
2211
2214
  href: "https://www.phila.gov/",
2212
2215
  class: "layerboard-logo layerboard-desktop-only"
2213
2216
  }, [
@@ -2216,30 +2219,30 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2216
2219
  alt: "City of Philadelphia"
2217
2220
  })
2218
2221
  ], -1)),
2219
- x[2] || (x[2] = P("span", {
2222
+ $[2] || ($[2] = P("span", {
2220
2223
  class: "layerboard-header-divider layerboard-desktop-only",
2221
2224
  "aria-hidden": "true"
2222
2225
  }, null, -1)),
2223
2226
  P("button", {
2224
2227
  ref_key: "hamburgerRef",
2225
- ref: ae,
2228
+ ref: oe,
2226
2229
  class: "layerboard-hamburger layerboard-mobile-only",
2227
- "aria-expanded": le.value,
2230
+ "aria-expanded": ae.value,
2228
2231
  "aria-label": "Toggle menu",
2229
- onClick: Te
2232
+ onClick: Ie
2230
2233
  }, [
2231
- J(f(Ce), {
2232
- "icon-definition": f(Mo),
2234
+ H(f(ke), {
2235
+ "icon-definition": f(Fo),
2233
2236
  size: "medium",
2234
2237
  inline: "",
2235
2238
  decorative: ""
2236
2239
  }, null, 8, ["icon-definition"])
2237
- ], 8, va),
2240
+ ], 8, wa),
2238
2241
  me(v.$slots, "header", {}, () => [
2239
- P("h1", null, H(e.title), 1),
2240
- e.subtitle ? (m(), M("span", ba, H(e.subtitle), 1)) : R("", !0)
2242
+ P("h1", null, G(e.title), 1),
2243
+ e.subtitle ? (m(), M("span", La, G(e.subtitle), 1)) : A("", !0)
2241
2244
  ], !0),
2242
- le.value ? (m(), M("div", {
2245
+ ae.value ? (m(), M("div", {
2243
2246
  key: 0,
2244
2247
  ref_key: "mobileMenuRef",
2245
2248
  ref: be,
@@ -2248,59 +2251,59 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2248
2251
  "aria-modal": "true",
2249
2252
  "aria-label": "Site menu",
2250
2253
  style: ye({ backgroundColor: e.themeColor }),
2251
- onKeydown: Be
2254
+ onKeydown: Ve
2252
2255
  }, [
2253
- P("div", wa, [
2256
+ P("div", Sa, [
2254
2257
  me(v.$slots, "footer", {
2255
- openModal: Re,
2256
- closeModal: re,
2257
- isModalOpen: ne.value
2258
+ openModal: Ae,
2259
+ closeModal: le,
2260
+ isModalOpen: ie.value
2258
2261
  }, () => [
2259
- x[0] || (x[0] = ke(" City of Philadelphia ", -1))
2262
+ $[0] || ($[0] = xe(" City of Philadelphia ", -1))
2260
2263
  ], !0)
2261
2264
  ]),
2262
2265
  P("button", {
2263
2266
  ref_key: "mobileMenuCloseRef",
2264
- ref: Xe,
2267
+ ref: Ye,
2265
2268
  class: "layerboard-mobile-menu-close",
2266
2269
  "aria-label": "Close menu",
2267
- onClick: Ie
2270
+ onClick: Ee
2268
2271
  }, [
2269
- J(f(Ce), {
2270
- "icon-definition": f(Ot),
2272
+ H(f(ke), {
2273
+ "icon-definition": f(Dt),
2271
2274
  size: "medium",
2272
2275
  decorative: ""
2273
2276
  }, null, 8, ["icon-definition"])
2274
2277
  ], 512)
2275
- ], 36)) : R("", !0),
2276
- le.value ? (m(), M("div", {
2278
+ ], 36)) : A("", !0),
2279
+ ae.value ? (m(), M("div", {
2277
2280
  key: 1,
2278
2281
  class: "layerboard-mobile-menu-backdrop",
2279
- onClick: Ie
2280
- })) : R("", !0)
2282
+ onClick: Ee
2283
+ })) : A("", !0)
2281
2284
  ], 4),
2282
- P("div", La, [
2283
- u.value ? (m(), M("div", Sa, [
2285
+ P("div", Ca, [
2286
+ u.value ? (m(), M("div", ka, [
2284
2287
  P("div", {
2285
2288
  class: "layerboard-spinner",
2286
2289
  style: ye({ borderTopColor: e.themeColor })
2287
2290
  }, null, 4),
2288
- P("p", null, "Loading " + H(e.title) + "...", 1)
2289
- ])) : w.value ? (m(), M("div", Ca, [
2290
- x[3] || (x[3] = P("h2", null, "Error Loading Layers", -1)),
2291
- P("p", null, H(w.value), 1),
2291
+ P("p", null, "Loading " + G(e.title) + "...", 1)
2292
+ ])) : w.value ? (m(), M("div", xa, [
2293
+ $[3] || ($[3] = P("h2", null, "Error Loading Layers", -1)),
2294
+ P("p", null, G(w.value), 1),
2292
2295
  P("button", {
2293
2296
  class: "layerboard-retry-button",
2294
2297
  style: ye({ backgroundColor: e.themeColor }),
2295
- onClick: Ue
2298
+ onClick: We
2296
2299
  }, " Retry ", 4)
2297
- ])) : (m(), M(de, { key: 2 }, [
2300
+ ])) : (m(), M(ue, { key: 2 }, [
2298
2301
  P("aside", {
2299
2302
  id: "main-content",
2300
2303
  ref_key: "sidebarRef",
2301
- ref: Fe,
2302
- class: se(["layerboard-sidebar", { "is-active": Le.value === "sidebar" }]),
2303
- style: ye(Ke.value),
2304
+ ref: Te,
2305
+ class: ne(["layerboard-sidebar", { "is-active": Se.value === "sidebar" }]),
2306
+ style: ye(Qe.value),
2304
2307
  "aria-label": "Map layers",
2305
2308
  tabindex: "-1"
2306
2309
  }, [
@@ -2311,10 +2314,10 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2311
2314
  loadingLayers: i.value,
2312
2315
  layerErrors: g.value,
2313
2316
  currentZoom: p.value,
2314
- toggleLayer: ze,
2315
- setLayerVisible: We,
2316
- setLayersVisible: $e,
2317
- setOpacity: Pe,
2317
+ toggleLayer: De,
2318
+ setLayerVisible: je,
2319
+ setLayersVisible: Me,
2320
+ setOpacity: Fe,
2318
2321
  tiledLayers: e.tiledLayers,
2319
2322
  visibleTiledLayers: L.value,
2320
2323
  tiledLayerOpacities: S.value,
@@ -2322,11 +2325,11 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2322
2325
  setTiledLayerVisible: V,
2323
2326
  setTiledLayerOpacity: T,
2324
2327
  dataSourcesState: D.value,
2325
- dataSourcesLoading: te.value,
2326
- getDataSource: W,
2327
- refetchDataSource: fe
2328
+ dataSourcesLoading: ee.value,
2329
+ getDataSource: U,
2330
+ refetchDataSource: de
2328
2331
  }, () => [
2329
- e.showDefaultSidebar ? (m(), G(Ko, {
2332
+ e.showDefaultSidebar ? (m(), q(Xo, {
2330
2333
  key: 0,
2331
2334
  "layer-list": n.value,
2332
2335
  "visible-layers": y.value,
@@ -2336,18 +2339,18 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2336
2339
  "current-zoom": p.value,
2337
2340
  "search-query": C.value,
2338
2341
  "layer-metadata": d.value,
2339
- onToggleLayer: ze,
2340
- onSetOpacity: Pe,
2341
- onUpdateSearch: ce
2342
- }, null, 8, ["layer-list", "visible-layers", "layer-opacities", "loading-layers", "layer-errors", "current-zoom", "search-query", "layer-metadata"])) : R("", !0)
2342
+ onToggleLayer: De,
2343
+ onSetOpacity: Fe,
2344
+ onUpdateSearch: re
2345
+ }, null, 8, ["layer-list", "visible-layers", "layer-opacities", "loading-layers", "layer-errors", "current-zoom", "search-query", "layer-metadata"])) : A("", !0)
2343
2346
  ], !0)
2344
2347
  ], 6),
2345
2348
  P("div", {
2346
2349
  role: "main",
2347
2350
  "aria-label": "Map",
2348
- class: se(["layerboard-map", { "is-active": Le.value === "map" }])
2351
+ class: ne(["layerboard-map", { "is-active": Se.value === "map" }])
2349
2352
  }, [
2350
- J(so, {
2353
+ H(uo, {
2351
2354
  "visible-layers": y.value,
2352
2355
  "layer-opacities": h.value,
2353
2356
  "layer-list": n.value,
@@ -2365,56 +2368,56 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2365
2368
  "pictometry-button-position": e.pictometryButtonPosition,
2366
2369
  "initial-zoom": e.initialZoom,
2367
2370
  "initial-center": e.initialCenter,
2368
- onZoom: ct,
2369
- onLayerLoading: je,
2370
- onLayerError: ut
2371
+ onZoom: ut,
2372
+ onLayerLoading: qe,
2373
+ onLayerError: dt
2371
2374
  }, null, 8, ["visible-layers", "layer-opacities", "layer-list", "tiled-layers", "visible-tiled-layers", "tiled-layer-opacities", "cyclomedia-config", "pictometry-credentials", "basemap-control-position", "navigation-control-position", "geolocation-control-position", "search-control-position", "draw-control-position", "cyclomedia-button-position", "pictometry-button-position", "initial-zoom", "initial-center"])
2372
2375
  ], 2),
2373
2376
  P("button", {
2374
- class: se(["layerboard-sidebar-toggle", { "is-collapsed": pe.value }]),
2375
- style: ye({ left: pe.value ? "0" : o.sidebarWidth }),
2376
- "aria-expanded": !pe.value,
2377
- "aria-label": pe.value ? "Expand sidebar" : "Collapse sidebar",
2378
- onClick: et
2377
+ class: ne(["layerboard-sidebar-toggle", { "is-collapsed": fe.value }]),
2378
+ style: ye({ left: fe.value ? "0" : o.sidebarWidth }),
2379
+ "aria-expanded": !fe.value,
2380
+ "aria-label": fe.value ? "Expand sidebar" : "Collapse sidebar",
2381
+ onClick: tt
2379
2382
  }, [
2380
- J(f(Ce), {
2381
- "icon-definition": pe.value ? f(xo) : f($o),
2383
+ H(f(ke), {
2384
+ "icon-definition": fe.value ? f(Mo) : f(Po),
2382
2385
  size: "medium",
2383
2386
  decorative: ""
2384
2387
  }, null, 8, ["icon-definition"])
2385
- ], 14, ka)
2388
+ ], 14, $a)
2386
2389
  ], 64))
2387
2390
  ]),
2388
2391
  P("button", {
2389
2392
  ref_key: "mobileToggleRef",
2390
- ref: De,
2393
+ ref: _e,
2391
2394
  class: "layerboard-mobile-toggle",
2392
- style: ye(Ne.value),
2393
- onClick: dt
2395
+ style: ye(Ue.value),
2396
+ onClick: ft
2394
2397
  }, [
2395
- Le.value === "map" ? (m(), M("span", xa, H(e.sidebarLabel), 1)) : (m(), M("span", $a, H(e.mapLabel), 1))
2398
+ Se.value === "map" ? (m(), M("span", Ma, G(e.sidebarLabel), 1)) : (m(), M("span", Pa, G(e.mapLabel), 1))
2396
2399
  ], 4),
2397
2400
  P("footer", {
2398
2401
  class: "layerboard-footer",
2399
- style: ye(st.value)
2402
+ style: ye(ct.value)
2400
2403
  }, [
2401
2404
  me(v.$slots, "footer", {
2402
- openModal: Re,
2403
- closeModal: re,
2404
- isModalOpen: ne.value
2405
+ openModal: Ae,
2406
+ closeModal: le,
2407
+ isModalOpen: ie.value
2405
2408
  }, () => [
2406
- x[4] || (x[4] = ke(" City of Philadelphia ", -1))
2409
+ $[4] || ($[4] = xe(" City of Philadelphia ", -1))
2407
2410
  ], !0)
2408
2411
  ], 4),
2409
- ne.value ? (m(), M("div", {
2412
+ ie.value ? (m(), M("div", {
2410
2413
  key: 0,
2411
2414
  class: "layerboard-modal-backdrop",
2412
- onClick: Ae,
2413
- onKeydown: ft
2415
+ onClick: Be,
2416
+ onKeydown: pt
2414
2417
  }, [
2415
2418
  P("div", {
2416
2419
  ref_key: "modalRef",
2417
- ref: qe,
2420
+ ref: Ge,
2418
2421
  class: "layerboard-modal",
2419
2422
  role: "dialog",
2420
2423
  "aria-modal": "true",
@@ -2422,27 +2425,27 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2422
2425
  }, [
2423
2426
  P("button", {
2424
2427
  ref_key: "modalCloseRef",
2425
- ref: Ye,
2428
+ ref: et,
2426
2429
  class: "layerboard-modal-close",
2427
2430
  "aria-label": "Close modal",
2428
- onClick: re
2431
+ onClick: le
2429
2432
  }, [
2430
- J(f(Ce), {
2431
- "icon-definition": f(Ot),
2433
+ H(f(ke), {
2434
+ "icon-definition": f(Dt),
2432
2435
  size: "medium",
2433
2436
  decorative: ""
2434
2437
  }, null, 8, ["icon-definition"])
2435
2438
  ], 512),
2436
- me(v.$slots, "modal", { closeModal: re }, void 0, !0)
2439
+ me(v.$slots, "modal", { closeModal: le }, void 0, !0)
2437
2440
  ], 512)
2438
- ], 32)) : R("", !0),
2439
- P("span", Ma, H(Le.value === "sidebar" ? "Showing layers panel" : "Showing map"), 1)
2441
+ ], 32)) : A("", !0),
2442
+ P("span", Fa, G(Se.value === "sidebar" ? "Showing layers panel" : "Showing map"), 1)
2440
2443
  ]));
2441
2444
  }
2442
- }), Qa = /* @__PURE__ */ xe(Pa, [["__scopeId", "data-v-b6c04107"]]), Fa = ["aria-expanded"], Ta = {
2445
+ }), Ya = /* @__PURE__ */ $e(Ta, [["__scopeId", "data-v-b6c04107"]]), Ia = ["aria-expanded"], Ea = {
2443
2446
  key: 0,
2444
2447
  class: "topic-icon"
2445
- }, Ia = { class: "topic-title" }, Ea = /* @__PURE__ */ ge({
2448
+ }, Oa = { class: "topic-title" }, za = /* @__PURE__ */ ge({
2446
2449
  __name: "TopicAccordion",
2447
2450
  props: {
2448
2451
  title: {},
@@ -2453,8 +2456,8 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2453
2456
  },
2454
2457
  emits: ["toggle", "layerChange"],
2455
2458
  setup(e, { emit: a }) {
2456
- const l = e, o = a, r = k(l.expanded), n = `topic-panel-${Pt()}`, u = `topic-header-${Pt()}`;
2457
- Ee(
2459
+ const l = e, o = a, r = x(l.expanded), n = `topic-panel-${Tt()}`, u = `topic-header-${Tt()}`;
2460
+ Oe(
2458
2461
  () => l.expanded,
2459
2462
  (p) => {
2460
2463
  r.value = p;
@@ -2464,30 +2467,30 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2464
2467
  r.value = !r.value, o("toggle", r.value);
2465
2468
  }
2466
2469
  return (p, C) => {
2467
- const y = Yt("font-awesome-icon");
2470
+ const y = to("font-awesome-icon");
2468
2471
  return m(), M("div", {
2469
- class: se(["topic-accordion", { "is-expanded": r.value }])
2472
+ class: ne(["topic-accordion", { "is-expanded": r.value }])
2470
2473
  }, [
2471
2474
  P("button", {
2472
2475
  id: u,
2473
- class: se(["topic-header", e.headerClass]),
2476
+ class: ne(["topic-header", e.headerClass]),
2474
2477
  type: "button",
2475
2478
  "aria-expanded": r.value,
2476
2479
  "aria-controls": n,
2477
2480
  onClick: w
2478
2481
  }, [
2479
- e.icon || p.$slots.icon ? (m(), M("span", Ta, [
2482
+ e.icon || p.$slots.icon ? (m(), M("span", Ea, [
2480
2483
  me(p.$slots, "icon", {}, () => [
2481
- e.icon ? (m(), G(y, {
2484
+ e.icon ? (m(), q(y, {
2482
2485
  key: 0,
2483
2486
  icon: ["fas", e.icon],
2484
2487
  "aria-hidden": "true"
2485
- }, null, 8, ["icon"])) : R("", !0)
2488
+ }, null, 8, ["icon"])) : A("", !0)
2486
2489
  ], !0)
2487
- ])) : R("", !0),
2488
- P("span", Ia, H(e.title), 1),
2490
+ ])) : A("", !0),
2491
+ P("span", Oa, G(e.title), 1),
2489
2492
  P("span", {
2490
- class: se(["topic-chevron", { "is-rotated": r.value }])
2493
+ class: ne(["topic-chevron", { "is-rotated": r.value }])
2491
2494
  }, [...C[0] || (C[0] = [
2492
2495
  P("svg", {
2493
2496
  xmlns: "http://www.w3.org/2000/svg",
@@ -2504,8 +2507,8 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2504
2507
  P("polyline", { points: "6 9 12 15 18 9" })
2505
2508
  ], -1)
2506
2509
  ])], 2)
2507
- ], 10, Fa),
2508
- Bt(P("div", {
2510
+ ], 10, Ia),
2511
+ Zt(P("div", {
2509
2512
  id: n,
2510
2513
  role: "region",
2511
2514
  "aria-labelledby": u,
@@ -2515,28 +2518,28 @@ const ga = { class: "layerboard-layout" }, va = ["aria-expanded"], ba = {
2515
2518
  C[1] || (C[1] = P("p", { class: "topic-empty" }, "No content provided for this topic.", -1))
2516
2519
  ], !0)
2517
2520
  ], 512), [
2518
- [eo, r.value]
2521
+ [oo, r.value]
2519
2522
  ])
2520
2523
  ], 2);
2521
2524
  };
2522
2525
  }
2523
- }), Xa = /* @__PURE__ */ xe(Ea, [["__scopeId", "data-v-a2023afa"]]);
2524
- function Oa(e) {
2526
+ }), ei = /* @__PURE__ */ $e(za, [["__scopeId", "data-v-a2023afa"]]);
2527
+ function Da(e) {
2525
2528
  return e.displayOptions?.shouldShowCheckbox !== !1;
2526
2529
  }
2527
- function Ut(e, a) {
2530
+ function jt(e, a) {
2528
2531
  return a ? e.displayOptions?.shouldShowSlider !== !1 : !1;
2529
2532
  }
2530
- function Wt(e, a) {
2533
+ function qt(e, a) {
2531
2534
  return a ? e.displayOptions?.shouldShowLegendBox !== !1 : !1;
2532
2535
  }
2533
- function Oe(e) {
2536
+ function ze(e) {
2534
2537
  return e.displayOptions?.layerNameChange || e.title;
2535
2538
  }
2536
- const za = ["aria-label"], Da = ["checked", "disabled", "onChange"], _a = { class: "layer-title" }, Ra = { class: "layer-title" }, Aa = {
2539
+ const _a = ["aria-label"], Ra = ["checked", "disabled", "onChange"], Aa = { class: "layer-title" }, Ba = { class: "layer-title" }, Va = {
2537
2540
  key: 0,
2538
2541
  class: "empty-state"
2539
- }, Ba = /* @__PURE__ */ ge({
2542
+ }, Za = /* @__PURE__ */ ge({
2540
2543
  __name: "LayerCheckboxSet",
2541
2544
  props: {
2542
2545
  layers: {},
@@ -2551,7 +2554,7 @@ const za = ["aria-label"], Da = ["checked", "disabled", "onChange"], _a = { clas
2551
2554
  },
2552
2555
  emits: ["toggleLayer", "setOpacity"],
2553
2556
  setup(e, { emit: a }) {
2554
- const l = e, o = a, { isVisible: r, getLayerOpacity: n, isLayerLoading: u, getLayerError: w, isLayerAvailableAtZoom: p } = Lt(
2557
+ const l = e, o = a, { isVisible: r, getLayerOpacity: n, isLayerLoading: u, getLayerError: w, isLayerAvailableAtZoom: p } = Ct(
2555
2558
  () => l
2556
2559
  );
2557
2560
  function C(y) {
@@ -2562,13 +2565,13 @@ const za = ["aria-label"], Da = ["checked", "disabled", "onChange"], _a = { clas
2562
2565
  role: "group",
2563
2566
  "aria-label": e.groupLabel
2564
2567
  }, [
2565
- (m(!0), M(de, null, we(e.layers, (i) => (m(), M("div", {
2568
+ (m(!0), M(ue, null, Le(e.layers, (i) => (m(), M("div", {
2566
2569
  key: i.id,
2567
2570
  class: "layer-item"
2568
2571
  }, [
2569
- f(Oa)(i) ? (m(), M("label", {
2572
+ f(Da)(i) ? (m(), M("label", {
2570
2573
  key: 0,
2571
- class: se(["layer-checkbox", {
2574
+ class: ne(["layer-checkbox", {
2572
2575
  "layer-unavailable": !f(p)(i),
2573
2576
  "layer-error": f(w)(i.id)
2574
2577
  }])
@@ -2578,10 +2581,10 @@ const za = ["aria-label"], Da = ["checked", "disabled", "onChange"], _a = { clas
2578
2581
  checked: f(r)(i.id),
2579
2582
  disabled: !f(p)(i),
2580
2583
  onChange: (g) => C(i.id)
2581
- }, null, 40, Da),
2582
- P("span", _a, [
2583
- ke(H(f(Oe)(i)) + " ", 1),
2584
- J(lt, {
2584
+ }, null, 40, Ra),
2585
+ P("span", Aa, [
2586
+ xe(G(f(ze)(i)) + " ", 1),
2587
+ H(nt, {
2585
2588
  loading: f(u)(i.id),
2586
2589
  error: f(w)(i.id),
2587
2590
  unavailable: !f(p)(i)
@@ -2589,40 +2592,40 @@ const za = ["aria-label"], Da = ["checked", "disabled", "onChange"], _a = { clas
2589
2592
  ])
2590
2593
  ], 2)) : (m(), M("div", {
2591
2594
  key: 1,
2592
- class: se(["layer-label-only", {
2595
+ class: ne(["layer-label-only", {
2593
2596
  "layer-unavailable": !f(p)(i),
2594
2597
  "layer-error": f(w)(i.id)
2595
2598
  }])
2596
2599
  }, [
2597
- P("span", Ra, [
2598
- ke(H(f(Oe)(i)) + " ", 1),
2599
- J(lt, {
2600
+ P("span", Ba, [
2601
+ xe(G(f(ze)(i)) + " ", 1),
2602
+ H(nt, {
2600
2603
  loading: f(u)(i.id),
2601
2604
  error: f(w)(i.id),
2602
2605
  unavailable: !f(p)(i)
2603
2606
  }, null, 8, ["loading", "error", "unavailable"])
2604
2607
  ])
2605
2608
  ], 2)),
2606
- f(Ut)(i, e.showOpacity) && f(r)(i.id) && f(p)(i) ? (m(), G(bt, {
2609
+ f(jt)(i, e.showOpacity) && f(r)(i.id) && f(p)(i) ? (m(), q(Lt, {
2607
2610
  key: 2,
2608
2611
  "layer-id": i.id,
2609
- "layer-name": f(Oe)(i),
2612
+ "layer-name": f(ze)(i),
2610
2613
  opacity: f(n)(i.id),
2611
2614
  "onUpdate:opacity": (g) => o("setOpacity", i.id, g)
2612
- }, null, 8, ["layer-id", "layer-name", "opacity", "onUpdate:opacity"])) : R("", !0),
2613
- f(Wt)(i, e.showLegend) && f(r)(i.id) && f(p)(i) && i.legend?.length ? (m(), G(wt, {
2615
+ }, null, 8, ["layer-id", "layer-name", "opacity", "onUpdate:opacity"])) : A("", !0),
2616
+ f(qt)(i, e.showLegend) && f(r)(i.id) && f(p)(i) && i.legend?.length ? (m(), q(St, {
2614
2617
  key: 3,
2615
2618
  items: i.legend,
2616
- label: "Legend for " + f(Oe)(i)
2617
- }, null, 8, ["items", "label"])) : R("", !0)
2619
+ label: "Legend for " + f(ze)(i)
2620
+ }, null, 8, ["items", "label"])) : A("", !0)
2618
2621
  ]))), 128)),
2619
- e.layers.length === 0 ? (m(), M("div", Aa, "No layers available")) : R("", !0)
2620
- ], 8, za));
2622
+ e.layers.length === 0 ? (m(), M("div", Va, "No layers available")) : A("", !0)
2623
+ ], 8, _a));
2621
2624
  }
2622
- }), Ya = /* @__PURE__ */ xe(Ba, [["__scopeId", "data-v-bfcd7855"]]), Va = ["aria-label"], Za = ["name", "checked", "disabled", "onChange"], Na = { class: "layer-title" }, Ua = {
2625
+ }), ti = /* @__PURE__ */ $e(Za, [["__scopeId", "data-v-bfcd7855"]]), Na = ["aria-label"], Ua = ["name", "checked", "disabled", "onChange"], Wa = { class: "layer-title" }, ja = {
2623
2626
  key: 0,
2624
2627
  class: "empty-state"
2625
- }, Wa = /* @__PURE__ */ ge({
2628
+ }, qa = /* @__PURE__ */ ge({
2626
2629
  __name: "LayerRadioButtonSet",
2627
2630
  props: {
2628
2631
  layers: {},
@@ -2638,7 +2641,7 @@ const za = ["aria-label"], Da = ["checked", "disabled", "onChange"], _a = { clas
2638
2641
  },
2639
2642
  emits: ["selectLayer", "setOpacity"],
2640
2643
  setup(e, { emit: a }) {
2641
- const l = e, o = a, { isVisible: r, getLayerOpacity: n, isLayerLoading: u, getLayerError: w, isLayerAvailableAtZoom: p } = Lt(
2644
+ const l = e, o = a, { isVisible: r, getLayerOpacity: n, isLayerLoading: u, getLayerError: w, isLayerAvailableAtZoom: p } = Ct(
2642
2645
  () => l
2643
2646
  );
2644
2647
  function C(y) {
@@ -2650,12 +2653,12 @@ const za = ["aria-label"], Da = ["checked", "disabled", "onChange"], _a = { clas
2650
2653
  role: "radiogroup",
2651
2654
  "aria-label": e.groupLabel
2652
2655
  }, [
2653
- (m(!0), M(de, null, we(e.layers, (i) => (m(), M("div", {
2656
+ (m(!0), M(ue, null, Le(e.layers, (i) => (m(), M("div", {
2654
2657
  key: i.id,
2655
2658
  class: "layer-item"
2656
2659
  }, [
2657
2660
  P("label", {
2658
- class: se(["layer-radio", {
2661
+ class: ne(["layer-radio", {
2659
2662
  "layer-unavailable": !f(p)(i),
2660
2663
  "layer-error": f(w)(i.id)
2661
2664
  }])
@@ -2666,35 +2669,35 @@ const za = ["aria-label"], Da = ["checked", "disabled", "onChange"], _a = { clas
2666
2669
  checked: f(r)(i.id),
2667
2670
  disabled: !f(p)(i),
2668
2671
  onChange: (g) => C(i.id)
2669
- }, null, 40, Za),
2670
- P("span", Na, [
2671
- ke(H(f(Oe)(i)) + " ", 1),
2672
- J(lt, {
2672
+ }, null, 40, Ua),
2673
+ P("span", Wa, [
2674
+ xe(G(f(ze)(i)) + " ", 1),
2675
+ H(nt, {
2673
2676
  loading: f(u)(i.id),
2674
2677
  error: f(w)(i.id),
2675
2678
  unavailable: !f(p)(i)
2676
2679
  }, null, 8, ["loading", "error", "unavailable"])
2677
2680
  ])
2678
2681
  ], 2),
2679
- f(Ut)(i, e.showOpacity) && f(r)(i.id) && f(p)(i) ? (m(), G(bt, {
2682
+ f(jt)(i, e.showOpacity) && f(r)(i.id) && f(p)(i) ? (m(), q(Lt, {
2680
2683
  key: 0,
2681
2684
  "layer-id": i.id,
2682
- "layer-name": f(Oe)(i),
2685
+ "layer-name": f(ze)(i),
2683
2686
  opacity: f(n)(i.id),
2684
2687
  "onUpdate:opacity": (g) => o("setOpacity", i.id, g)
2685
- }, null, 8, ["layer-id", "layer-name", "opacity", "onUpdate:opacity"])) : R("", !0),
2686
- f(Wt)(i, e.showLegend) && f(r)(i.id) && f(p)(i) && i.legend?.length ? (m(), G(wt, {
2688
+ }, null, 8, ["layer-id", "layer-name", "opacity", "onUpdate:opacity"])) : A("", !0),
2689
+ f(qt)(i, e.showLegend) && f(r)(i.id) && f(p)(i) && i.legend?.length ? (m(), q(St, {
2687
2690
  key: 1,
2688
2691
  items: i.legend,
2689
- label: "Legend for " + f(Oe)(i)
2690
- }, null, 8, ["items", "label"])) : R("", !0)
2692
+ label: "Legend for " + f(ze)(i)
2693
+ }, null, 8, ["items", "label"])) : A("", !0)
2691
2694
  ]))), 128)),
2692
- e.layers.length === 0 ? (m(), M("div", Ua, "No layers available")) : R("", !0)
2693
- ], 8, Va));
2695
+ e.layers.length === 0 ? (m(), M("div", ja, "No layers available")) : A("", !0)
2696
+ ], 8, Na));
2694
2697
  }
2695
- }), ei = /* @__PURE__ */ xe(Wa, [["__scopeId", "data-v-c368d815"]]);
2696
- function ti(e) {
2697
- const a = k([]), l = k(/* @__PURE__ */ new Set()), o = k({}), r = k(/* @__PURE__ */ new Set()), n = k({}), u = k(""), w = k(!1), p = k(!1), C = k(null), y = _(() => {
2698
+ }), oi = /* @__PURE__ */ $e(qa, [["__scopeId", "data-v-c368d815"]]);
2699
+ function ai(e) {
2700
+ const a = x([]), l = x(/* @__PURE__ */ new Set()), o = x({}), r = x(/* @__PURE__ */ new Set()), n = x({}), u = x(""), w = x(!1), p = x(!1), C = x(null), y = _(() => {
2698
2701
  if (!u.value.trim())
2699
2702
  return a.value;
2700
2703
  const T = u.value.toLowerCase();
@@ -2709,7 +2712,7 @@ function ti(e) {
2709
2712
  w.value = !0, C.value = null;
2710
2713
  try {
2711
2714
  let T;
2712
- e.mode === "dynamic" || !e.mode ? e.webMapId ? T = await g(e.webMapId) : T = await vt() : T = await vt(), a.value = T;
2715
+ e.mode === "dynamic" || !e.mode ? e.webMapId ? T = await g(e.webMapId) : T = await wt() : T = await wt(), a.value = T;
2713
2716
  const O = {};
2714
2717
  T.forEach((D) => {
2715
2718
  O[D.id] = D.opacity ?? 1;
@@ -2722,11 +2725,11 @@ function ti(e) {
2722
2725
  }
2723
2726
  }
2724
2727
  async function g(T) {
2725
- const O = Ct(T), D = await fetch(O, { cache: "no-store" });
2728
+ const O = xt(T), D = await fetch(O, { cache: "no-store" });
2726
2729
  if (!D.ok)
2727
2730
  throw new Error(`Failed to fetch WebMap: ${D.status} ${D.statusText}`);
2728
- const te = await D.json();
2729
- return Nt(te);
2731
+ const ee = await D.json();
2732
+ return Wt(ee);
2730
2733
  }
2731
2734
  function d(T) {
2732
2735
  const O = new Set(l.value);
@@ -2741,7 +2744,7 @@ function ti(e) {
2741
2744
  function S(T) {
2742
2745
  u.value = T;
2743
2746
  }
2744
- function I(T, O) {
2747
+ function E(T, O) {
2745
2748
  const D = new Set(r.value);
2746
2749
  O ? D.add(T) : D.delete(T), r.value = D;
2747
2750
  }
@@ -2758,15 +2761,15 @@ function ti(e) {
2758
2761
  }
2759
2762
  return {
2760
2763
  // State (readonly)
2761
- layerConfigs: q(a),
2762
- visibleLayers: q(l),
2763
- layerOpacities: q(o),
2764
- loadingLayers: q(r),
2765
- layerErrors: q(n),
2766
- searchQuery: q(u),
2767
- isLoading: q(w),
2768
- isInitialized: q(p),
2769
- error: q(C),
2764
+ layerConfigs: j(a),
2765
+ visibleLayers: j(l),
2766
+ layerOpacities: j(o),
2767
+ loadingLayers: j(r),
2768
+ layerErrors: j(n),
2769
+ searchQuery: j(u),
2770
+ isLoading: j(w),
2771
+ isInitialized: j(p),
2772
+ error: j(C),
2770
2773
  // Computed
2771
2774
  filteredLayerConfigs: y,
2772
2775
  layerList: h,
@@ -2777,13 +2780,13 @@ function ti(e) {
2777
2780
  toggleLayer: d,
2778
2781
  setLayerOpacity: L,
2779
2782
  filterLayers: S,
2780
- setLayerLoading: I,
2783
+ setLayerLoading: E,
2781
2784
  setLayerError: F,
2782
2785
  reset: V
2783
2786
  };
2784
2787
  }
2785
- function oi() {
2786
- const e = k([]), a = k(/* @__PURE__ */ new Set()), l = k(/* @__PURE__ */ new Set());
2788
+ function ii() {
2789
+ const e = x([]), a = x(/* @__PURE__ */ new Set()), l = x(/* @__PURE__ */ new Set());
2787
2790
  function o(n) {
2788
2791
  a.value.has(n) ? a.value.delete(n) : a.value.add(n);
2789
2792
  }
@@ -2798,8 +2801,8 @@ function oi() {
2798
2801
  setLayers: r
2799
2802
  };
2800
2803
  }
2801
- function ja(e) {
2802
- const a = k(null), l = k(!1), o = k(null), r = k(0);
2804
+ function Ga(e) {
2805
+ const a = x(null), l = x(!1), o = x(null), r = x(0);
2803
2806
  async function n(p = {}) {
2804
2807
  l.value = !0, o.value = null;
2805
2808
  const C = e.pageSize || 2e3;
@@ -2818,10 +2821,10 @@ function ja(e) {
2818
2821
  });
2819
2822
  S += `&geometry=${encodeURIComponent(V)}&geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelIntersects`;
2820
2823
  }
2821
- const I = await fetch(S);
2822
- if (!I.ok)
2823
- throw new Error(`HTTP ${I.status}: ${I.statusText}`);
2824
- const F = await I.json();
2824
+ const E = await fetch(S);
2825
+ if (!E.ok)
2826
+ throw new Error(`HTTP ${E.status}: ${E.statusText}`);
2827
+ const F = await E.json();
2825
2828
  F.features && F.features.length > 0 ? (h = h.concat(F.features), y += F.features.length, i = F.features.length === C) : i = !1;
2826
2829
  }
2827
2830
  const g = {
@@ -2844,10 +2847,10 @@ function ja(e) {
2844
2847
  }
2845
2848
  return {
2846
2849
  // State (readonly)
2847
- data: q(a),
2848
- isLoading: q(l),
2849
- error: q(o),
2850
- totalFeatures: q(r),
2850
+ data: j(a),
2851
+ isLoading: j(l),
2852
+ error: j(o),
2853
+ totalFeatures: j(r),
2851
2854
  // Config
2852
2855
  config: e,
2853
2856
  // Methods
@@ -2856,9 +2859,9 @@ function ja(e) {
2856
2859
  clear: u
2857
2860
  };
2858
2861
  }
2859
- function ai(e, a, l) {
2860
- const o = ja(e);
2861
- return Ee(
2862
+ function li(e, a, l) {
2863
+ const o = Ga(e);
2864
+ return Oe(
2862
2865
  a,
2863
2866
  async (r) => {
2864
2867
  if (r) {
@@ -2870,26 +2873,26 @@ function ai(e, a, l) {
2870
2873
  ), o;
2871
2874
  }
2872
2875
  export {
2873
- Ya as LayerCheckboxSet,
2874
- Ko as LayerPanel,
2875
- ei as LayerRadioButtonSet,
2876
- Qa as Layerboard,
2877
- so as MapPanel,
2878
- Xa as TopicAccordion,
2879
- Ja as WEBMAP_ID,
2880
- Ct as buildWebMapUrl,
2881
- fa as clearCache,
2882
- vt as getLayerConfigs,
2883
- Oe as getLayerDisplayName,
2884
- Ka as getWebMapUrl,
2885
- Vt as normalizeUrl,
2886
- Oa as shouldShowCheckbox,
2887
- Wt as shouldShowLegendBox,
2888
- Ut as shouldShowSlider,
2889
- Nt as transformWebMapToLayerConfigs,
2890
- ha as useApiDataSources,
2891
- ja as useDataSource,
2892
- oi as useLayerConfig,
2893
- ti as useLayerboard,
2894
- ai as useReactiveDataSource
2876
+ ti as LayerCheckboxSet,
2877
+ Xo as LayerPanel,
2878
+ oi as LayerRadioButtonSet,
2879
+ Ya as Layerboard,
2880
+ uo as MapPanel,
2881
+ ei as TopicAccordion,
2882
+ Qa as WEBMAP_ID,
2883
+ xt as buildWebMapUrl,
2884
+ ya as clearCache,
2885
+ wt as getLayerConfigs,
2886
+ ze as getLayerDisplayName,
2887
+ Xa as getWebMapUrl,
2888
+ Nt as normalizeUrl,
2889
+ Da as shouldShowCheckbox,
2890
+ qt as shouldShowLegendBox,
2891
+ jt as shouldShowSlider,
2892
+ Wt as transformWebMapToLayerConfigs,
2893
+ va as useApiDataSources,
2894
+ Ga as useDataSource,
2895
+ ii as useLayerConfig,
2896
+ ai as useLayerboard,
2897
+ li as useReactiveDataSource
2895
2898
  };