@phila/layerboard 3.0.0-beta.11 → 3.0.0-beta.13
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.js +2 -2
- package/dist/index.mjs +477 -467
- package/dist/layerboard.css +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as Se, ref as C, watch as Te, computed as I, onMounted as Je, onUnmounted as
|
|
1
|
+
import { defineComponent as Se, ref as C, watch as Te, computed as I, onMounted as Je, onUnmounted as _t, createElementBlock as m, openBlock as d, createVNode as Q, unref as O, withCtx as Ne, createBlock as ee, createCommentVNode as z, Fragment as oe, renderList as re, useAttrs as zt, toRef as Ft, normalizeClass as ae, createElementVNode as x, toDisplayString as V, renderSlot as ce, withDirectives as Et, mergeProps as dt, vModelDynamic as Ot, createTextVNode as me, normalizeProps as mt, guardReactiveProps as vt, withModifiers as It, normalizeStyle as H, readonly as j, provide as W, onBeforeUnmount as Rt, nextTick as Ae, useId as bt, resolveComponent as Dt, vShow as Zt } from "vue";
|
|
2
2
|
import { Map as Bt, DrawTool as At, RasterLayer as wt, CircleLayer as Lt, FillLayer as Nt, LineLayer as ct, MapMarker as Vt, MapPopup as Ut } from "@phila/phila-ui-map-core";
|
|
3
3
|
import { cn as ft, Icon as ge, BaseLink as Wt, ActionContent as St } from "@phila/phila-ui-core";
|
|
4
4
|
function Xe(e, i, t = {}) {
|
|
@@ -6,15 +6,15 @@ function Xe(e, i, t = {}) {
|
|
|
6
6
|
return (t.id === 0 || t.id) && (o.id = t.id), t.bbox && (o.bbox = t.bbox), o.properties = i || {}, o.geometry = e, o;
|
|
7
7
|
}
|
|
8
8
|
function jt(e, i, t = {}) {
|
|
9
|
-
for (const
|
|
10
|
-
if (
|
|
9
|
+
for (const n of e) {
|
|
10
|
+
if (n.length < 4)
|
|
11
11
|
throw new Error(
|
|
12
12
|
"Each LinearRing of a Polygon must have 4 or more Positions."
|
|
13
13
|
);
|
|
14
|
-
if (
|
|
14
|
+
if (n[n.length - 1].length !== n[0].length)
|
|
15
15
|
throw new Error("First and last Position are not equivalent.");
|
|
16
|
-
for (let l = 0; l <
|
|
17
|
-
if (
|
|
16
|
+
for (let l = 0; l < n[n.length - 1].length; l++)
|
|
17
|
+
if (n[n.length - 1][l] !== n[0][l])
|
|
18
18
|
throw new Error("First and last Position are not equivalent.");
|
|
19
19
|
}
|
|
20
20
|
return Xe({
|
|
@@ -46,27 +46,27 @@ function Kt(e) {
|
|
|
46
46
|
return e.type === "Feature" ? e.geometry : e;
|
|
47
47
|
}
|
|
48
48
|
function Jt(e, i, t) {
|
|
49
|
-
var o = e.length,
|
|
50
|
-
let
|
|
49
|
+
var o = e.length, n = ze(e[0], i), l = [], u, b, y;
|
|
50
|
+
let P, v;
|
|
51
51
|
for (t || (t = []), u = 1; u < o; u++) {
|
|
52
|
-
for (
|
|
53
|
-
if (
|
|
54
|
-
if (
|
|
52
|
+
for (P = e[u - 1], v = e[u], b = y = ze(v, i); ; )
|
|
53
|
+
if (n | b) {
|
|
54
|
+
if (n & b)
|
|
55
55
|
break;
|
|
56
|
-
|
|
56
|
+
n ? (P = pt(P, v, n, i), n = ze(P, i)) : (v = pt(P, v, b, i), b = ze(v, i));
|
|
57
57
|
} else {
|
|
58
|
-
l.push(
|
|
58
|
+
l.push(P), b !== y ? (l.push(v), u < o - 1 && (t.push(l), l = [])) : u === o - 1 && l.push(v);
|
|
59
59
|
break;
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
n = y;
|
|
62
62
|
}
|
|
63
63
|
return l.length && t.push(l), t;
|
|
64
64
|
}
|
|
65
65
|
function Qt(e, i) {
|
|
66
|
-
var t, o,
|
|
66
|
+
var t, o, n, l, u, b, y;
|
|
67
67
|
for (o = 1; o <= 8; o *= 2) {
|
|
68
|
-
for (t = [],
|
|
69
|
-
b = e[u], y = !(ze(b, i) & o), y !== l && t.push(pt(
|
|
68
|
+
for (t = [], n = e[e.length - 1], l = !(ze(n, i) & o), u = 0; u < e.length; u++)
|
|
69
|
+
b = e[u], y = !(ze(b, i) & o), y !== l && t.push(pt(n, b, o, i)), y && t.push(b), n = b, l = y;
|
|
70
70
|
if (e = t, !e.length) break;
|
|
71
71
|
}
|
|
72
72
|
return t;
|
|
@@ -79,7 +79,7 @@ function ze(e, i) {
|
|
|
79
79
|
return e[0] < i[0] ? t |= 1 : e[0] > i[2] && (t |= 2), e[1] < i[1] ? t |= 4 : e[1] > i[3] && (t |= 8), t;
|
|
80
80
|
}
|
|
81
81
|
function Xt(e, i) {
|
|
82
|
-
const t = Kt(e), o = t.type,
|
|
82
|
+
const t = Kt(e), o = t.type, n = e.type === "Feature" ? e.properties : {};
|
|
83
83
|
let l = t.coordinates;
|
|
84
84
|
switch (o) {
|
|
85
85
|
case "LineString":
|
|
@@ -87,14 +87,14 @@ function Xt(e, i) {
|
|
|
87
87
|
const u = [];
|
|
88
88
|
return o === "LineString" && (l = [l]), l.forEach((b) => {
|
|
89
89
|
Jt(b, i, u);
|
|
90
|
-
}), u.length === 1 ? qt(u[0],
|
|
90
|
+
}), u.length === 1 ? qt(u[0], n) : Gt(u, n);
|
|
91
91
|
}
|
|
92
92
|
case "Polygon":
|
|
93
|
-
return jt(kt(l, i),
|
|
93
|
+
return jt(kt(l, i), n);
|
|
94
94
|
case "MultiPolygon":
|
|
95
95
|
return Ht(
|
|
96
96
|
l.map((u) => kt(u, i)),
|
|
97
|
-
|
|
97
|
+
n
|
|
98
98
|
);
|
|
99
99
|
default:
|
|
100
100
|
throw new Error("geometry " + o + " not supported");
|
|
@@ -103,8 +103,8 @@ function Xt(e, i) {
|
|
|
103
103
|
function kt(e, i) {
|
|
104
104
|
const t = [];
|
|
105
105
|
for (const o of e) {
|
|
106
|
-
const
|
|
107
|
-
|
|
106
|
+
const n = Qt(o, i);
|
|
107
|
+
n.length > 0 && ((n[0][0] !== n[n.length - 1][0] || n[0][1] !== n[n.length - 1][1]) && n.push(n[0]), n.length >= 4 && t.push(n));
|
|
108
108
|
}
|
|
109
109
|
return t;
|
|
110
110
|
}
|
|
@@ -132,17 +132,17 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
132
132
|
},
|
|
133
133
|
emits: ["zoom", "layerLoading", "layerError"],
|
|
134
134
|
setup(e, { emit: i }) {
|
|
135
|
-
const t = e, o = i,
|
|
136
|
-
function b(
|
|
137
|
-
o("zoom",
|
|
135
|
+
const t = e, o = i, n = C(null), l = C(null), u = C(0);
|
|
136
|
+
function b(a) {
|
|
137
|
+
o("zoom", a), l.value && (u.value = y(l.value));
|
|
138
138
|
}
|
|
139
|
-
function y(
|
|
140
|
-
const p =
|
|
141
|
-
return
|
|
139
|
+
function y(a) {
|
|
140
|
+
const p = a.getZoom(), E = a.getCenter().lat, _ = 559082264028e-3, M = E * Math.PI / 180;
|
|
141
|
+
return _ * Math.cos(M) / Math.pow(2, p);
|
|
142
142
|
}
|
|
143
|
-
const
|
|
144
|
-
async function h(
|
|
145
|
-
const
|
|
143
|
+
const P = C({}), v = C(null), k = C(/* @__PURE__ */ new Set()), r = ["fema-100-year-floodplain", "fema-500-year-floodplain"];
|
|
144
|
+
async function h(a, p, s, E) {
|
|
145
|
+
const _ = encodeURIComponent(E || "1=1"), M = JSON.stringify({
|
|
146
146
|
xmin: p.west,
|
|
147
147
|
ymin: p.south,
|
|
148
148
|
xmax: p.east,
|
|
@@ -151,7 +151,7 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
151
151
|
}), R = 2e3;
|
|
152
152
|
let N = 0, U = [], Y = !0;
|
|
153
153
|
for (; Y; ) {
|
|
154
|
-
const G = `${
|
|
154
|
+
const G = `${a}/query?where=${_}&geometry=${encodeURIComponent(M)}&geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelIntersects&outFields=*&returnGeometry=true&resultRecordCount=${R}&resultOffset=${N}&f=geojson`, Z = await fetch(G);
|
|
155
155
|
if (!Z.ok)
|
|
156
156
|
throw new Error(`HTTP ${Z.status}: ${Z.statusText}`);
|
|
157
157
|
const J = await Z.json();
|
|
@@ -174,14 +174,14 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
174
174
|
features: U
|
|
175
175
|
};
|
|
176
176
|
}
|
|
177
|
-
async function w(
|
|
177
|
+
async function w(a, p) {
|
|
178
178
|
const s = p.map(async (E) => {
|
|
179
|
-
const
|
|
180
|
-
if (
|
|
179
|
+
const _ = t.layerList.find((M) => M.config.id === E)?.config;
|
|
180
|
+
if (_) {
|
|
181
181
|
o("layerLoading", E, !0);
|
|
182
182
|
try {
|
|
183
|
-
const M = await h(
|
|
184
|
-
|
|
183
|
+
const M = await h(_.url, a, E, _.where);
|
|
184
|
+
P.value = { ...P.value, [E]: M }, o("layerError", E, null);
|
|
185
185
|
} catch (M) {
|
|
186
186
|
const R = M instanceof Error ? M.message : "Failed to load";
|
|
187
187
|
o("layerError", E, R);
|
|
@@ -192,84 +192,84 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
192
192
|
});
|
|
193
193
|
await Promise.all(s);
|
|
194
194
|
}
|
|
195
|
-
async function g(
|
|
195
|
+
async function g(a) {
|
|
196
196
|
const p = [...t.visibleLayers];
|
|
197
|
-
await w(
|
|
197
|
+
await w(a, p);
|
|
198
198
|
}
|
|
199
|
-
function f(
|
|
200
|
-
v.value =
|
|
199
|
+
function f(a) {
|
|
200
|
+
v.value = a.bounds, g(a.bounds);
|
|
201
201
|
}
|
|
202
|
-
function c(
|
|
203
|
-
l.value =
|
|
204
|
-
const p =
|
|
202
|
+
function c(a) {
|
|
203
|
+
l.value = a;
|
|
204
|
+
const p = a.getBounds();
|
|
205
205
|
v.value = {
|
|
206
206
|
west: p.getWest(),
|
|
207
207
|
south: p.getSouth(),
|
|
208
208
|
east: p.getEast(),
|
|
209
209
|
north: p.getNorth()
|
|
210
210
|
};
|
|
211
|
-
const s =
|
|
212
|
-
o("zoom", s), u.value = y(
|
|
211
|
+
const s = a.getZoom();
|
|
212
|
+
o("zoom", s), u.value = y(a), g(v.value);
|
|
213
213
|
}
|
|
214
214
|
Te(
|
|
215
215
|
() => t.visibleLayers.size,
|
|
216
216
|
async () => {
|
|
217
217
|
if (ie.value.length > 0 && $e(), v.value) {
|
|
218
|
-
const
|
|
218
|
+
const a = new Set(t.visibleLayers), p = [...a].filter(
|
|
219
219
|
(s) => !k.value.has(s)
|
|
220
220
|
);
|
|
221
|
-
k.value = new Set(
|
|
221
|
+
k.value = new Set(a), p.length > 0 && await w(v.value, p);
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
);
|
|
225
|
-
function S(
|
|
226
|
-
return t.visibleLayers.has(
|
|
225
|
+
function S(a) {
|
|
226
|
+
return t.visibleLayers.has(a);
|
|
227
227
|
}
|
|
228
|
-
function F(
|
|
229
|
-
return !!
|
|
228
|
+
function F(a) {
|
|
229
|
+
return !!P.value[a.id];
|
|
230
230
|
}
|
|
231
231
|
const T = I(
|
|
232
|
-
() => t.layerList.filter((
|
|
232
|
+
() => t.layerList.filter((a) => a.config.type === "circle" && S(a.config.id) && F(a.config)).map((a) => a.config)
|
|
233
233
|
), A = I(
|
|
234
|
-
() => t.layerList.filter((
|
|
234
|
+
() => t.layerList.filter((a) => a.config.type === "fill" && S(a.config.id) && F(a.config)).map((a) => a.config)
|
|
235
235
|
), q = I(
|
|
236
|
-
() => t.layerList.filter((
|
|
236
|
+
() => t.layerList.filter((a) => a.config.type === "fill" && a.config.outlinePaint && S(a.config.id) && F(a.config)).map((a) => a.config)
|
|
237
237
|
), fe = I(
|
|
238
|
-
() => t.layerList.filter((
|
|
238
|
+
() => t.layerList.filter((a) => a.config.type === "line" && S(a.config.id) && F(a.config)).map((a) => a.config)
|
|
239
239
|
);
|
|
240
|
-
function
|
|
241
|
-
return t.visibleTiledLayers?.has(
|
|
240
|
+
function Pe(a) {
|
|
241
|
+
return t.visibleTiledLayers?.has(a) ?? !1;
|
|
242
242
|
}
|
|
243
|
-
function
|
|
244
|
-
return t.tiledLayerOpacities?.[
|
|
243
|
+
function _e(a) {
|
|
244
|
+
return t.tiledLayerOpacities?.[a] ?? 1;
|
|
245
245
|
}
|
|
246
|
-
function et(
|
|
247
|
-
return `${
|
|
246
|
+
function et(a) {
|
|
247
|
+
return `${a.replace(/\/$/, "")}/tile/{z}/{y}/{x}`;
|
|
248
248
|
}
|
|
249
|
-
function tt(
|
|
249
|
+
function tt(a) {
|
|
250
250
|
return {
|
|
251
251
|
type: "raster",
|
|
252
|
-
tiles: [et(
|
|
252
|
+
tiles: [et(a.url)],
|
|
253
253
|
tileSize: 256,
|
|
254
|
-
attribution:
|
|
254
|
+
attribution: a.attribution || ""
|
|
255
255
|
};
|
|
256
256
|
}
|
|
257
257
|
const Ie = C({}), Ue = C(/* @__PURE__ */ new Set());
|
|
258
|
-
async function Re(
|
|
259
|
-
if (!Ue.value.has(
|
|
260
|
-
Ue.value.add(
|
|
258
|
+
async function Re(a) {
|
|
259
|
+
if (!Ue.value.has(a.id)) {
|
|
260
|
+
Ue.value.add(a.id);
|
|
261
261
|
try {
|
|
262
|
-
const p =
|
|
262
|
+
const p = a.url.replace(/\/$/, ""), s = await fetch(`${p}?f=json`);
|
|
263
263
|
if (!s.ok)
|
|
264
264
|
return;
|
|
265
265
|
const E = await s.json();
|
|
266
|
-
let
|
|
266
|
+
let _ = E.minScale || 0, M = E.maxScale || 0;
|
|
267
267
|
if (E.layers && E.layers.length > 0)
|
|
268
268
|
for (const R of E.layers)
|
|
269
269
|
R.maxScale && R.maxScale > 0 && (M === 0 || R.maxScale < M) && (M = R.maxScale);
|
|
270
270
|
M === 0 && (M = 72e3), Ie.value = {
|
|
271
271
|
...Ie.value,
|
|
272
|
-
[
|
|
272
|
+
[a.id]: { minScale: _, maxScale: M }
|
|
273
273
|
};
|
|
274
274
|
} catch {
|
|
275
275
|
}
|
|
@@ -277,81 +277,81 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
277
277
|
}
|
|
278
278
|
Je(() => {
|
|
279
279
|
if (t.tiledLayers)
|
|
280
|
-
for (const
|
|
281
|
-
|
|
280
|
+
for (const a of t.tiledLayers)
|
|
281
|
+
a.scaleBasedRendering && Re(a);
|
|
282
282
|
});
|
|
283
|
-
function We(
|
|
284
|
-
if (!
|
|
283
|
+
function We(a) {
|
|
284
|
+
if (!a.scaleBasedRendering)
|
|
285
285
|
return "tiled";
|
|
286
|
-
const p = Ie.value[
|
|
286
|
+
const p = Ie.value[a.id];
|
|
287
287
|
if (!p)
|
|
288
288
|
return "tiled";
|
|
289
289
|
const s = u.value;
|
|
290
290
|
return s === 0 || s > p.maxScale ? "tiled" : "dynamic";
|
|
291
291
|
}
|
|
292
|
-
const ot = I(() => t.tiledLayers ? t.tiledLayers.filter((
|
|
293
|
-
function Ee(
|
|
292
|
+
const ot = I(() => t.tiledLayers ? t.tiledLayers.filter((a) => Pe(a.id) ? a.scaleBasedRendering ? We(a) === "tiled" : !0 : !1) : []), at = I(() => t.tiledLayers ? t.tiledLayers.filter((a) => Pe(a.id) && a.scaleBasedRendering ? We(a) === "dynamic" : !1) : []);
|
|
293
|
+
function Ee(a) {
|
|
294
294
|
return {
|
|
295
295
|
type: "raster",
|
|
296
|
-
tiles: [`${
|
|
296
|
+
tiles: [`${a.url.replace(/\/$/, "")}/export?bbox={bbox-epsg-3857}&bboxSR=3857&imageSR=3857&size=256,256&format=png32&transparent=true&f=image`],
|
|
297
297
|
tileSize: 256,
|
|
298
|
-
attribution:
|
|
298
|
+
attribution: a.attribution || ""
|
|
299
299
|
};
|
|
300
300
|
}
|
|
301
|
-
function ve(
|
|
302
|
-
return { type: "geojson", data:
|
|
301
|
+
function ve(a) {
|
|
302
|
+
return { type: "geojson", data: P.value[a.id] };
|
|
303
303
|
}
|
|
304
|
-
function Me(
|
|
305
|
-
return t.layerOpacities[
|
|
304
|
+
function Me(a) {
|
|
305
|
+
return t.layerOpacities[a] ?? 1;
|
|
306
306
|
}
|
|
307
|
-
function be(
|
|
308
|
-
const p = Me(
|
|
309
|
-
if (
|
|
310
|
-
return { ...
|
|
311
|
-
const E =
|
|
307
|
+
function be(a) {
|
|
308
|
+
const p = Me(a.id), s = a.type === "circle" ? "circle-opacity" : a.type === "fill" ? "fill-opacity" : "line-opacity";
|
|
309
|
+
if (a.type === "fill" && a.paint["fill-opacity"] === 0)
|
|
310
|
+
return { ...a.paint, "fill-opacity": 0 };
|
|
311
|
+
const E = a.type === "circle" ? "circle-color" : a.type === "fill" ? "fill-color" : "line-color", _ = { ...a.paint }, M = _[E], R = _[s] === 1, N = typeof M == "string" && M.startsWith("rgba(");
|
|
312
312
|
if (R && N) {
|
|
313
313
|
if (p === 1)
|
|
314
|
-
return
|
|
314
|
+
return _;
|
|
315
315
|
{
|
|
316
316
|
const U = M.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);
|
|
317
317
|
if (U && U[4]) {
|
|
318
318
|
const [, Y, G, Z, J] = U, st = parseFloat(J) * p;
|
|
319
|
-
|
|
319
|
+
_[E] = `rgba(${Y}, ${G}, ${Z}, ${st})`, _[s] = 1;
|
|
320
320
|
}
|
|
321
|
-
return
|
|
321
|
+
return _;
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
324
|
if (N) {
|
|
325
325
|
const U = M.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);
|
|
326
326
|
if (U) {
|
|
327
327
|
const [, Y, G, Z] = U;
|
|
328
|
-
|
|
328
|
+
_[E] = `rgb(${Y}, ${G}, ${Z})`;
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
|
-
return
|
|
331
|
+
return _[s] = p, _;
|
|
332
332
|
}
|
|
333
|
-
function it(
|
|
334
|
-
const p = Me(
|
|
335
|
-
return { ...
|
|
333
|
+
function it(a) {
|
|
334
|
+
const p = Me(a.id);
|
|
335
|
+
return { ...a.outlinePaint, "line-opacity": p };
|
|
336
336
|
}
|
|
337
|
-
const ie = C([]), we = C(null),
|
|
338
|
-
function ke(
|
|
339
|
-
const p =
|
|
337
|
+
const ie = C([]), we = C(null), ne = C(0);
|
|
338
|
+
function ke(a) {
|
|
339
|
+
const p = a.replace(/-outline$/, "");
|
|
340
340
|
return t.layerList.find((E) => E.config.id === p)?.config;
|
|
341
341
|
}
|
|
342
|
-
function
|
|
343
|
-
return
|
|
344
|
-
const
|
|
345
|
-
return
|
|
342
|
+
function nt(a, p) {
|
|
343
|
+
return a.replace(/\{([^}]+)\}/g, (s, E) => {
|
|
344
|
+
const _ = p[E];
|
|
345
|
+
return _ == null ? "" : String(_);
|
|
346
346
|
});
|
|
347
347
|
}
|
|
348
|
-
function Ce(
|
|
349
|
-
return
|
|
348
|
+
function Ce(a) {
|
|
349
|
+
return a.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
350
350
|
}
|
|
351
|
-
function De(
|
|
352
|
-
if (
|
|
353
|
-
if (p?.dateFormat && typeof
|
|
354
|
-
const s = new Date(
|
|
351
|
+
function De(a, p) {
|
|
352
|
+
if (a == null) return "-";
|
|
353
|
+
if (p?.dateFormat && typeof a == "number") {
|
|
354
|
+
const s = new Date(a);
|
|
355
355
|
switch (p.dateFormat) {
|
|
356
356
|
case "shortDateShortTime":
|
|
357
357
|
return s.toLocaleString();
|
|
@@ -365,39 +365,39 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
365
365
|
return s.toLocaleDateString();
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
|
-
if (typeof
|
|
369
|
-
if (
|
|
370
|
-
return new Date(
|
|
368
|
+
if (typeof a == "number") {
|
|
369
|
+
if (a > 1e12 && !p)
|
|
370
|
+
return new Date(a).toLocaleDateString();
|
|
371
371
|
const s = p?.places, E = p?.digitSeparator ?? !0;
|
|
372
372
|
if (s !== void 0) {
|
|
373
|
-
const
|
|
373
|
+
const _ = a.toFixed(s);
|
|
374
374
|
if (E) {
|
|
375
|
-
const M =
|
|
375
|
+
const M = _.split("."), R = M[0] || "0", N = M[1], U = R.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
376
376
|
return N ? `${U}.${N}` : U;
|
|
377
377
|
}
|
|
378
|
-
return
|
|
378
|
+
return _;
|
|
379
379
|
}
|
|
380
|
-
return E ?
|
|
380
|
+
return E ? a.toLocaleString() : String(a);
|
|
381
381
|
}
|
|
382
|
-
return String(
|
|
382
|
+
return String(a);
|
|
383
383
|
}
|
|
384
|
-
function Ze(
|
|
384
|
+
function Ze(a) {
|
|
385
385
|
const p = /* @__PURE__ */ new Set();
|
|
386
|
-
return
|
|
387
|
-
const
|
|
388
|
-
return p.has(
|
|
386
|
+
return a.filter((s) => {
|
|
387
|
+
const _ = `${s.layer.id.replace(/-outline$/, "")}:${JSON.stringify(s.properties)}`;
|
|
388
|
+
return p.has(_) ? !1 : (p.add(_), !0);
|
|
389
389
|
});
|
|
390
390
|
}
|
|
391
|
-
function je(
|
|
391
|
+
function je(a, p) {
|
|
392
392
|
const s = /* @__PURE__ */ new Map();
|
|
393
|
-
return p.forEach((E,
|
|
394
|
-
s.set(E.id,
|
|
395
|
-
}),
|
|
396
|
-
const M = E.layer.id.replace(/-outline$/, ""), R =
|
|
393
|
+
return p.forEach((E, _) => {
|
|
394
|
+
s.set(E.id, _);
|
|
395
|
+
}), a.sort((E, _) => {
|
|
396
|
+
const M = E.layer.id.replace(/-outline$/, ""), R = _.layer.id.replace(/-outline$/, ""), N = s.get(M) ?? -1;
|
|
397
397
|
return (s.get(R) ?? -1) - N;
|
|
398
398
|
});
|
|
399
399
|
}
|
|
400
|
-
function le(
|
|
400
|
+
function le(a) {
|
|
401
401
|
const p = l.value;
|
|
402
402
|
if (!p) return;
|
|
403
403
|
const s = [];
|
|
@@ -405,11 +405,11 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
405
405
|
const Z = G.config;
|
|
406
406
|
t.visibleLayers.has(Z.id) && (s.push(Z.id), Z.outlinePaint && s.push(`${Z.id}-outline`));
|
|
407
407
|
});
|
|
408
|
-
const E = p.project([
|
|
408
|
+
const E = p.project([a.lngLat.lng, a.lngLat.lat]), _ = p.queryRenderedFeatures(E, {
|
|
409
409
|
layers: s
|
|
410
410
|
});
|
|
411
|
-
if (
|
|
412
|
-
const M = Ze(
|
|
411
|
+
if (_.length === 0) return;
|
|
412
|
+
const M = Ze(_), R = t.layerList.map((G) => G.config), N = je(M, R), U = N.map((G) => {
|
|
413
413
|
const Z = G.layer.id.replace(/-outline$/, ""), J = ke(Z);
|
|
414
414
|
return J ? {
|
|
415
415
|
layerId: J.id,
|
|
@@ -419,7 +419,7 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
419
419
|
} : null;
|
|
420
420
|
}).filter((G) => G !== null);
|
|
421
421
|
if (U.length === 0) return;
|
|
422
|
-
ie.value = U,
|
|
422
|
+
ie.value = U, ne.value = 0, we.value = [a.lngLat.lng, a.lngLat.lat];
|
|
423
423
|
const Y = N[0];
|
|
424
424
|
if (Y && Y.geometry) {
|
|
425
425
|
const G = Y.layer.id.replace(/-outline$/, ""), Z = ke(G);
|
|
@@ -436,51 +436,51 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
436
436
|
}
|
|
437
437
|
}
|
|
438
438
|
function $e() {
|
|
439
|
-
ie.value = [], we.value = null,
|
|
439
|
+
ie.value = [], we.value = null, ne.value = 0, de.value = null;
|
|
440
440
|
}
|
|
441
|
-
function se(
|
|
441
|
+
function se(a) {
|
|
442
442
|
if (ie.value.length === 0) return;
|
|
443
|
-
const p =
|
|
443
|
+
const p = a.target;
|
|
444
444
|
if (!(p.tagName === "INPUT" || p.tagName === "TEXTAREA" || p.isContentEditable))
|
|
445
|
-
switch (
|
|
445
|
+
switch (a.key) {
|
|
446
446
|
case "ArrowLeft":
|
|
447
447
|
case "ArrowUp":
|
|
448
|
-
|
|
448
|
+
a.preventDefault(), xe();
|
|
449
449
|
break;
|
|
450
450
|
case "ArrowRight":
|
|
451
451
|
case "ArrowDown":
|
|
452
|
-
|
|
452
|
+
a.preventDefault(), qe();
|
|
453
453
|
break;
|
|
454
454
|
case "Escape":
|
|
455
|
-
|
|
455
|
+
a.preventDefault(), $e();
|
|
456
456
|
break;
|
|
457
457
|
}
|
|
458
458
|
}
|
|
459
459
|
Je(() => {
|
|
460
460
|
window.addEventListener("keydown", se);
|
|
461
|
-
}),
|
|
461
|
+
}), _t(() => {
|
|
462
462
|
window.removeEventListener("keydown", se);
|
|
463
463
|
});
|
|
464
464
|
function qe() {
|
|
465
|
-
const
|
|
466
|
-
|
|
465
|
+
const a = ie.value.length;
|
|
466
|
+
a <= 1 || (ne.value = (ne.value + 1) % a);
|
|
467
467
|
}
|
|
468
468
|
function xe() {
|
|
469
|
-
const
|
|
470
|
-
|
|
469
|
+
const a = ie.value.length;
|
|
470
|
+
a <= 1 || (ne.value = (ne.value - 1 + a) % a);
|
|
471
471
|
}
|
|
472
|
-
const X = I(() => ie.value.length === 0 ? null : ie.value[
|
|
473
|
-
const
|
|
474
|
-
return !
|
|
472
|
+
const X = I(() => ie.value.length === 0 ? null : ie.value[ne.value]), Ge = I(() => {
|
|
473
|
+
const a = X.value;
|
|
474
|
+
return !a || !a.popupConfig ? a?.layerTitle || "" : nt(a.popupConfig.title, a.properties);
|
|
475
475
|
}), pe = I(() => {
|
|
476
|
-
const
|
|
477
|
-
if (!
|
|
476
|
+
const a = X.value;
|
|
477
|
+
if (!a) return "";
|
|
478
478
|
let p = '<div class="popup-content">';
|
|
479
|
-
if (p += `<h3 class="popup-title">${Ce(Ge.value)}</h3>`,
|
|
479
|
+
if (p += `<h3 class="popup-title">${Ce(Ge.value)}</h3>`, a.popupConfig?.fields?.length) {
|
|
480
480
|
p += `<table class="popup-table" aria-label="${Ce(Ge.value)}">`;
|
|
481
|
-
for (const s of
|
|
482
|
-
const E = De(
|
|
483
|
-
p += `<tr><th>${Ce(s.label)}</th><td>${Ce(E)}</td></tr>`;
|
|
481
|
+
for (const s of a.popupConfig.fields) {
|
|
482
|
+
const E = De(a.properties[s.field], s.format);
|
|
483
|
+
p += `<tr><th scope="row">${Ce(s.label)}</th><td>${Ce(E)}</td></tr>`;
|
|
484
484
|
}
|
|
485
485
|
p += "</table>";
|
|
486
486
|
} else
|
|
@@ -503,21 +503,21 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
503
503
|
"line-color": "#00FFFF",
|
|
504
504
|
"line-opacity": 0.9
|
|
505
505
|
}, de = C(null);
|
|
506
|
-
function He(
|
|
507
|
-
return
|
|
506
|
+
function He(a) {
|
|
507
|
+
return a.type;
|
|
508
508
|
}
|
|
509
|
-
function Be(
|
|
510
|
-
const s = ke(
|
|
509
|
+
function Be(a, p) {
|
|
510
|
+
const s = ke(a);
|
|
511
511
|
if (!s) return { radius: 5, width: 2 };
|
|
512
512
|
const E = s.paint || {};
|
|
513
513
|
if (p === "circle") {
|
|
514
|
-
const
|
|
515
|
-
return typeof
|
|
514
|
+
const _ = E["circle-radius"];
|
|
515
|
+
return typeof _ == "number" ? { radius: _ } : { radius: 5 };
|
|
516
516
|
}
|
|
517
517
|
if (p === "line" || p === "fill") {
|
|
518
|
-
const
|
|
519
|
-
if (typeof
|
|
520
|
-
return { width:
|
|
518
|
+
const _ = E["line-width"];
|
|
519
|
+
if (typeof _ == "number")
|
|
520
|
+
return { width: _ };
|
|
521
521
|
if (s.outlinePaint && s.outlinePaint["line-width"]) {
|
|
522
522
|
const M = s.outlinePaint["line-width"];
|
|
523
523
|
if (typeof M == "number")
|
|
@@ -527,11 +527,11 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
527
527
|
}
|
|
528
528
|
return { radius: 5, width: 2 };
|
|
529
529
|
}
|
|
530
|
-
function L(
|
|
531
|
-
return !
|
|
530
|
+
function L(a) {
|
|
531
|
+
return !a || a.length === 0 ? [] : a[0] ?? [];
|
|
532
532
|
}
|
|
533
|
-
function $(
|
|
534
|
-
const { geometry: p, geometryType: s, originalStyle: E } =
|
|
533
|
+
function $(a) {
|
|
534
|
+
const { geometry: p, geometryType: s, originalStyle: E } = a;
|
|
535
535
|
if (s === "Point" || s === "MultiPoint") {
|
|
536
536
|
const M = (E.radius || 5) + 3;
|
|
537
537
|
return {
|
|
@@ -559,7 +559,7 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
559
559
|
};
|
|
560
560
|
}
|
|
561
561
|
if (s === "Polygon") {
|
|
562
|
-
const
|
|
562
|
+
const _ = p.coordinates, M = L(_), N = (E.width || 2) + 3;
|
|
563
563
|
return {
|
|
564
564
|
type: "FeatureCollection",
|
|
565
565
|
features: [{
|
|
@@ -575,10 +575,10 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
575
575
|
};
|
|
576
576
|
}
|
|
577
577
|
if (s === "MultiPolygon") {
|
|
578
|
-
const
|
|
578
|
+
const _ = p.coordinates, R = (E.width || 2) + 3;
|
|
579
579
|
return {
|
|
580
580
|
type: "FeatureCollection",
|
|
581
|
-
features:
|
|
581
|
+
features: _.map((U) => ({
|
|
582
582
|
type: "Feature",
|
|
583
583
|
geometry: {
|
|
584
584
|
type: "LineString",
|
|
@@ -595,28 +595,28 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
595
595
|
features: []
|
|
596
596
|
};
|
|
597
597
|
}
|
|
598
|
-
function K(
|
|
599
|
-
if (!
|
|
598
|
+
function K(a) {
|
|
599
|
+
if (!a) {
|
|
600
600
|
B();
|
|
601
601
|
return;
|
|
602
602
|
}
|
|
603
|
-
const p = $(
|
|
604
|
-
|
|
603
|
+
const p = $(a);
|
|
604
|
+
a.geometryType === "Point" || a.geometryType === "MultiPoint" ? (Le.value = p, ye.value = { type: "FeatureCollection", features: [] }) : (ye.value = p, Le.value = { type: "FeatureCollection", features: [] });
|
|
605
605
|
}
|
|
606
606
|
function B() {
|
|
607
607
|
Le.value = { type: "FeatureCollection", features: [] }, ye.value = { type: "FeatureCollection", features: [] };
|
|
608
608
|
}
|
|
609
|
-
Te(de, (
|
|
610
|
-
K(
|
|
609
|
+
Te(de, (a) => {
|
|
610
|
+
K(a);
|
|
611
611
|
}), Te(
|
|
612
612
|
() => t.visibleLayers,
|
|
613
|
-
(
|
|
614
|
-
de.value && !
|
|
613
|
+
(a) => {
|
|
614
|
+
de.value && !a.has(de.value.layerId) && (de.value = null, $e());
|
|
615
615
|
},
|
|
616
616
|
{ deep: !0 }
|
|
617
|
-
), Te(
|
|
618
|
-
const
|
|
619
|
-
if (!
|
|
617
|
+
), Te(ne, () => {
|
|
618
|
+
const a = X.value;
|
|
619
|
+
if (!a) {
|
|
620
620
|
de.value = null;
|
|
621
621
|
return;
|
|
622
622
|
}
|
|
@@ -629,9 +629,9 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
629
629
|
});
|
|
630
630
|
const E = p.project(we.value), M = p.queryRenderedFeatures(E, {
|
|
631
631
|
layers: s
|
|
632
|
-
}).find((R) => R.layer.id.replace(/-outline$/, "") ===
|
|
632
|
+
}).find((R) => R.layer.id.replace(/-outline$/, "") === a.layerId && JSON.stringify(R.properties) === JSON.stringify(a.properties));
|
|
633
633
|
if (M && M.geometry) {
|
|
634
|
-
const R = ke(
|
|
634
|
+
const R = ke(a.layerId);
|
|
635
635
|
if (R) {
|
|
636
636
|
const N = He(M.geometry), U = Be(R.id, R.type);
|
|
637
637
|
de.value = {
|
|
@@ -645,14 +645,14 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
645
645
|
}
|
|
646
646
|
});
|
|
647
647
|
const te = C(null);
|
|
648
|
-
function rt(
|
|
649
|
-
const [p, s] =
|
|
648
|
+
function rt(a) {
|
|
649
|
+
const [p, s] = a.geometry.coordinates;
|
|
650
650
|
te.value = [p, s];
|
|
651
651
|
}
|
|
652
|
-
return (
|
|
652
|
+
return (a, p) => (d(), m("div", eo, [
|
|
653
653
|
Q(O(Bt), {
|
|
654
654
|
ref_key: "mapRef",
|
|
655
|
-
ref:
|
|
655
|
+
ref: n,
|
|
656
656
|
zoom: t.initialZoom,
|
|
657
657
|
center: t.initialCenter,
|
|
658
658
|
"navigation-controls": { position: t.navigationControlPosition },
|
|
@@ -682,15 +682,15 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
682
682
|
key: "tiled-" + s.id,
|
|
683
683
|
id: "tiled-" + s.id,
|
|
684
684
|
source: tt(s),
|
|
685
|
-
paint: { "raster-opacity":
|
|
685
|
+
paint: { "raster-opacity": _e(s.id) },
|
|
686
686
|
minzoom: s.minZoom,
|
|
687
687
|
maxzoom: s.maxZoom
|
|
688
688
|
}, null, 8, ["id", "source", "paint", "minzoom", "maxzoom"]))), 128)),
|
|
689
|
-
(d(!0), m(oe, null, re(
|
|
689
|
+
(d(!0), m(oe, null, re(at.value, (s) => (d(), ee(O(wt), {
|
|
690
690
|
key: "dynamic-" + s.id,
|
|
691
691
|
id: "dynamic-" + s.id,
|
|
692
692
|
source: Ee(s),
|
|
693
|
-
paint: { "raster-opacity":
|
|
693
|
+
paint: { "raster-opacity": _e(s.id) },
|
|
694
694
|
minzoom: s.minZoom,
|
|
695
695
|
maxzoom: s.maxZoom
|
|
696
696
|
}, null, 8, ["id", "source", "paint", "minzoom", "maxzoom"]))), 128)),
|
|
@@ -756,7 +756,7 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
756
756
|
html: pe.value,
|
|
757
757
|
"close-on-click": !1,
|
|
758
758
|
"show-navigation": ie.value.length > 1,
|
|
759
|
-
"current-feature-index":
|
|
759
|
+
"current-feature-index": ne.value,
|
|
760
760
|
"total-features": ie.value.length,
|
|
761
761
|
"layer-name": X.value.layerTitle,
|
|
762
762
|
onClose: $e,
|
|
@@ -770,10 +770,10 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
770
770
|
}
|
|
771
771
|
}), Oe = (e, i) => {
|
|
772
772
|
const t = e.__vccOpts || e;
|
|
773
|
-
for (const [o,
|
|
774
|
-
t[o] =
|
|
773
|
+
for (const [o, n] of i)
|
|
774
|
+
t[o] = n;
|
|
775
775
|
return t;
|
|
776
|
-
}, oo = /* @__PURE__ */ Oe(to, [["__scopeId", "data-v-
|
|
776
|
+
}, oo = /* @__PURE__ */ Oe(to, [["__scopeId", "data-v-669444d6"]]), ao = ["disabled"], io = /* @__PURE__ */ Se({
|
|
777
777
|
inheritAttrs: !1,
|
|
778
778
|
__name: "PhlButton",
|
|
779
779
|
props: {
|
|
@@ -802,7 +802,7 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
802
802
|
i.iconOnly && "icon-button",
|
|
803
803
|
i.iconOnly && i.variant === "standard" && "icon-button--standard",
|
|
804
804
|
i.className
|
|
805
|
-
)),
|
|
805
|
+
)), n = I(() => t(i) ? "to" in i && i.to !== void 0 ? {
|
|
806
806
|
to: i.to,
|
|
807
807
|
disabled: i.disabled,
|
|
808
808
|
className: o.value
|
|
@@ -823,7 +823,7 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
823
823
|
size: i.size
|
|
824
824
|
})
|
|
825
825
|
);
|
|
826
|
-
return (u, b) => t(i) ? (d(), ee(O(Wt), dt({ key: 0 }, { ...
|
|
826
|
+
return (u, b) => t(i) ? (d(), ee(O(Wt), dt({ key: 0 }, { ...n.value, ...u.$attrs }, { role: "button" }), {
|
|
827
827
|
default: Ne(() => [
|
|
828
828
|
Q(O(St), mt(vt(l.value)), {
|
|
829
829
|
default: Ne(() => [
|
|
@@ -849,14 +849,14 @@ const eo = { class: "map-panel" }, to = /* @__PURE__ */ Se({
|
|
|
849
849
|
]),
|
|
850
850
|
_: 3
|
|
851
851
|
}, 16)
|
|
852
|
-
], 16,
|
|
852
|
+
], 16, ao));
|
|
853
853
|
}
|
|
854
854
|
});
|
|
855
|
-
var
|
|
855
|
+
var no = {
|
|
856
856
|
prefix: "fas",
|
|
857
857
|
iconName: "circle-exclamation",
|
|
858
858
|
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"]
|
|
859
|
-
}, lo =
|
|
859
|
+
}, lo = no, ro = {
|
|
860
860
|
prefix: "fas",
|
|
861
861
|
iconName: "xmark",
|
|
862
862
|
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"]
|
|
@@ -885,14 +885,14 @@ const co = ["for"], uo = { class: "state-layer" }, fo = { class: "content" }, po
|
|
|
885
885
|
},
|
|
886
886
|
emits: ["update:modelValue"],
|
|
887
887
|
setup(e, { emit: i }) {
|
|
888
|
-
const t = zt(), o = e,
|
|
888
|
+
const t = zt(), o = e, n = I(() => typeof o.error == "string" ? o.error : o.error[0]), l = Ft(o, "id"), u = i, b = C(""), y = I({
|
|
889
889
|
get: () => o.modelValue !== void 0 ? o.modelValue : b.value,
|
|
890
890
|
set: (h) => {
|
|
891
891
|
u("update:modelValue", h), b.value = h;
|
|
892
892
|
}
|
|
893
|
-
}),
|
|
893
|
+
}), P = I(() => {
|
|
894
894
|
const h = ["default-class"];
|
|
895
|
-
return t.disabled != null && h.push("phila-input--disabled"),
|
|
895
|
+
return t.disabled != null && h.push("phila-input--disabled"), n.value && h.push("phila-input--error"), t.required != null && h.push("phila-input--required"), ft(...h);
|
|
896
896
|
}), v = I(() => {
|
|
897
897
|
const h = [];
|
|
898
898
|
return y.value !== "" && h.push("phila-text-field--filled"), o.className && h.push(o.className), ft(...h);
|
|
@@ -900,7 +900,7 @@ const co = ["for"], uo = { class: "state-layer" }, fo = { class: "content" }, po
|
|
|
900
900
|
h.target.closest("button") || k.value?.focus();
|
|
901
901
|
};
|
|
902
902
|
return (h, w) => (d(), m("div", {
|
|
903
|
-
class:
|
|
903
|
+
class: ae(["phila-input", P.value])
|
|
904
904
|
}, [
|
|
905
905
|
o.label ? (d(), m("label", {
|
|
906
906
|
key: 0,
|
|
@@ -908,7 +908,7 @@ const co = ["for"], uo = { class: "state-layer" }, fo = { class: "content" }, po
|
|
|
908
908
|
class: "has-text-label-small phila-label"
|
|
909
909
|
}, V(o.label), 9, co)) : z("", !0),
|
|
910
910
|
x("div", {
|
|
911
|
-
class:
|
|
911
|
+
class: ae(["phila-text-field", v.value]),
|
|
912
912
|
onClick: r
|
|
913
913
|
}, [
|
|
914
914
|
x("div", uo, [
|
|
@@ -951,14 +951,14 @@ const co = ["for"], uo = { class: "state-layer" }, fo = { class: "content" }, po
|
|
|
951
951
|
])
|
|
952
952
|
], 2),
|
|
953
953
|
o.supportingText ? (d(), m("div", go, V(o.supportingText), 1)) : z("", !0),
|
|
954
|
-
|
|
954
|
+
n.value ? (d(), m("div", ho, [
|
|
955
955
|
Q(O(ge), {
|
|
956
956
|
"icon-definition": O(lo),
|
|
957
957
|
size: "small",
|
|
958
958
|
inline: "",
|
|
959
959
|
decorative: ""
|
|
960
960
|
}, null, 8, ["icon-definition"]),
|
|
961
|
-
me(" " + V(
|
|
961
|
+
me(" " + V(n.value), 1)
|
|
962
962
|
])) : z("", !0)
|
|
963
963
|
], 2));
|
|
964
964
|
}
|
|
@@ -994,7 +994,7 @@ const ko = { class: "layer-panel" }, Co = {
|
|
|
994
994
|
}, $o = {
|
|
995
995
|
key: 1,
|
|
996
996
|
class: "topics-container"
|
|
997
|
-
}, xo = { class: "layer-row" },
|
|
997
|
+
}, xo = { class: "layer-row" }, Po = ["href", "aria-label"], _o = {
|
|
998
998
|
key: 1,
|
|
999
999
|
class: "metadata-placeholder"
|
|
1000
1000
|
}, Eo = ["checked", "disabled", "onChange"], Mo = { class: "layer-title" }, To = {
|
|
@@ -1007,10 +1007,7 @@ const ko = { class: "layer-panel" }, Co = {
|
|
|
1007
1007
|
}, Oo = {
|
|
1008
1008
|
key: 0,
|
|
1009
1009
|
class: "opacity-control"
|
|
1010
|
-
}, Io = ["for"], Ro = ["id", "value", "aria-label", "onInput"], Do = {
|
|
1011
|
-
key: 1,
|
|
1012
|
-
class: "layer-legend"
|
|
1013
|
-
}, Zo = { class: "legend-label" }, Bo = {
|
|
1010
|
+
}, Io = ["for"], Ro = ["id", "value", "aria-label", "onInput"], Do = ["aria-label"], Zo = { class: "legend-label" }, Bo = {
|
|
1014
1011
|
key: 0,
|
|
1015
1012
|
class: "no-results"
|
|
1016
1013
|
}, Ao = /* @__PURE__ */ Se({
|
|
@@ -1032,7 +1029,7 @@ const ko = { class: "layer-panel" }, Co = {
|
|
|
1032
1029
|
},
|
|
1033
1030
|
emits: ["toggleLayer", "setOpacity", "updateSearch"],
|
|
1034
1031
|
setup(e, { emit: i }) {
|
|
1035
|
-
const t = e, o = i,
|
|
1032
|
+
const t = e, o = i, n = I(() => {
|
|
1036
1033
|
if (!t.searchQuery.trim())
|
|
1037
1034
|
return t.layerList;
|
|
1038
1035
|
const f = t.searchQuery.toLowerCase();
|
|
@@ -1052,7 +1049,7 @@ const ko = { class: "layer-panel" }, Co = {
|
|
|
1052
1049
|
function y(f) {
|
|
1053
1050
|
return t.visibleLayers.has(f);
|
|
1054
1051
|
}
|
|
1055
|
-
function
|
|
1052
|
+
function P(f) {
|
|
1056
1053
|
return t.layerOpacities[f] ?? 1;
|
|
1057
1054
|
}
|
|
1058
1055
|
function v(f) {
|
|
@@ -1101,9 +1098,9 @@ const ko = { class: "layer-panel" }, Co = {
|
|
|
1101
1098
|
], !0)
|
|
1102
1099
|
])) : (d(), m("div", {
|
|
1103
1100
|
key: 2,
|
|
1104
|
-
class:
|
|
1101
|
+
class: ae(["layer-list", { "has-metadata": b.value }])
|
|
1105
1102
|
}, [
|
|
1106
|
-
(d(!0), m(oe, null, re(
|
|
1103
|
+
(d(!0), m(oe, null, re(n.value, (S) => (d(), m("div", {
|
|
1107
1104
|
key: S.config.id,
|
|
1108
1105
|
class: "layer-item"
|
|
1109
1106
|
}, [
|
|
@@ -1124,9 +1121,9 @@ const ko = { class: "layer-panel" }, Co = {
|
|
|
1124
1121
|
inline: "",
|
|
1125
1122
|
decorative: ""
|
|
1126
1123
|
}, null, 8, ["icon-definition"])
|
|
1127
|
-
], 8,
|
|
1124
|
+
], 8, Po)) : b.value ? (d(), m("span", _o)) : z("", !0),
|
|
1128
1125
|
x("label", {
|
|
1129
|
-
class:
|
|
1126
|
+
class: ae(["layer-checkbox", {
|
|
1130
1127
|
"layer-unavailable": !r(S.config),
|
|
1131
1128
|
"layer-error": k(S.config.id)
|
|
1132
1129
|
}])
|
|
@@ -1154,20 +1151,24 @@ const ko = { class: "layer-panel" }, Co = {
|
|
|
1154
1151
|
x("label", {
|
|
1155
1152
|
class: "opacity-label",
|
|
1156
1153
|
for: "opacity-" + S.config.id
|
|
1157
|
-
}, " Opacity: " + V(Math.round(
|
|
1154
|
+
}, " Opacity: " + V(Math.round(P(S.config.id) * 100)) + "% ", 9, Io),
|
|
1158
1155
|
x("input", {
|
|
1159
1156
|
id: "opacity-" + S.config.id,
|
|
1160
1157
|
type: "range",
|
|
1161
1158
|
min: "0",
|
|
1162
1159
|
max: "1",
|
|
1163
1160
|
step: "0.05",
|
|
1164
|
-
value:
|
|
1161
|
+
value: P(S.config.id),
|
|
1165
1162
|
"aria-label": "Opacity for " + S.config.title,
|
|
1166
1163
|
class: "opacity-slider",
|
|
1167
1164
|
onInput: (F) => g(S.config.id, F)
|
|
1168
1165
|
}, null, 40, Ro)
|
|
1169
1166
|
])) : z("", !0),
|
|
1170
|
-
e.showLegend && y(S.config.id) && S.config.legend?.length ? (d(), m("ul",
|
|
1167
|
+
e.showLegend && y(S.config.id) && S.config.legend?.length ? (d(), m("ul", {
|
|
1168
|
+
key: 1,
|
|
1169
|
+
class: "layer-legend",
|
|
1170
|
+
"aria-label": "Legend for " + S.config.title
|
|
1171
|
+
}, [
|
|
1171
1172
|
(d(!0), m(oe, null, re(S.config.legend, (F, T) => (d(), m("li", {
|
|
1172
1173
|
key: T,
|
|
1173
1174
|
class: "legend-item"
|
|
@@ -1193,13 +1194,13 @@ const ko = { class: "layer-panel" }, Co = {
|
|
|
1193
1194
|
}, null, 4)) : z("", !0),
|
|
1194
1195
|
x("span", Zo, V(F.label), 1)
|
|
1195
1196
|
]))), 128))
|
|
1196
|
-
])) : z("", !0)
|
|
1197
|
+
], 8, Do)) : z("", !0)
|
|
1197
1198
|
]))), 128)),
|
|
1198
|
-
|
|
1199
|
+
n.value.length === 0 ? (d(), m("div", Bo, ' No layers match "' + V(e.searchQuery) + '" ', 1)) : z("", !0)
|
|
1199
1200
|
], 2))
|
|
1200
1201
|
]));
|
|
1201
1202
|
}
|
|
1202
|
-
}), No = /* @__PURE__ */ Oe(Ao, [["__scopeId", "data-v-
|
|
1203
|
+
}), No = /* @__PURE__ */ Oe(Ao, [["__scopeId", "data-v-a0dcf4f0"]]);
|
|
1203
1204
|
function D(e) {
|
|
1204
1205
|
if (!e || !Array.isArray(e) || e.length < 3) return "#888888";
|
|
1205
1206
|
const i = e[0], t = e[1], o = e[2], l = (e[3] ?? 255) / 255;
|
|
@@ -1248,12 +1249,12 @@ function ut(e) {
|
|
|
1248
1249
|
return String(e);
|
|
1249
1250
|
}
|
|
1250
1251
|
function Mt(e, i, t) {
|
|
1251
|
-
const o = e.symbol,
|
|
1252
|
+
const o = e.symbol, n = Ye(o);
|
|
1252
1253
|
let l = {}, u = [], b = null;
|
|
1253
|
-
if (
|
|
1254
|
-
const y = o.color === null ? 0 : o.color?.[3] ?? 255,
|
|
1254
|
+
if (n === "fill" && o) {
|
|
1255
|
+
const y = o.color === null ? 0 : o.color?.[3] ?? 255, P = y === 0 ? "rgba(0, 0, 0, 0)" : D(o.color), v = y === 0 ? 0 : y < 255 ? 1 : he(i);
|
|
1255
1256
|
if (l = {
|
|
1256
|
-
"fill-color":
|
|
1257
|
+
"fill-color": P,
|
|
1257
1258
|
"fill-opacity": v
|
|
1258
1259
|
}, Fe(o.outline)) {
|
|
1259
1260
|
const k = o.outline.width || 1, r = D(o.outline.color);
|
|
@@ -1267,7 +1268,7 @@ function Mt(e, i, t) {
|
|
|
1267
1268
|
color: D(o.color),
|
|
1268
1269
|
label: e.label || "Feature"
|
|
1269
1270
|
}];
|
|
1270
|
-
} else if (
|
|
1271
|
+
} else if (n === "line" && o)
|
|
1271
1272
|
l = {
|
|
1272
1273
|
"line-color": D(o.color),
|
|
1273
1274
|
"line-width": o.width || 1,
|
|
@@ -1278,7 +1279,7 @@ function Mt(e, i, t) {
|
|
|
1278
1279
|
width: o.width || 1,
|
|
1279
1280
|
label: e.label || "Feature"
|
|
1280
1281
|
}];
|
|
1281
|
-
else if (
|
|
1282
|
+
else if (n === "circle" && o) {
|
|
1282
1283
|
const y = Math.round((o.size || 6) * 0.71 * 100) / 100;
|
|
1283
1284
|
l = {
|
|
1284
1285
|
"circle-color": D(o.color),
|
|
@@ -1290,20 +1291,20 @@ function Mt(e, i, t) {
|
|
|
1290
1291
|
label: e.label || "Feature"
|
|
1291
1292
|
}];
|
|
1292
1293
|
}
|
|
1293
|
-
return { paint: l, legend: u, geomType:
|
|
1294
|
+
return { paint: l, legend: u, geomType: n, outlinePaint: b };
|
|
1294
1295
|
}
|
|
1295
1296
|
function Wo(e, i, t) {
|
|
1296
|
-
const o = e.field1,
|
|
1297
|
-
if (
|
|
1297
|
+
const o = e.field1, n = e.uniqueValueInfos || [], l = e.defaultSymbol;
|
|
1298
|
+
if (n.length === 0)
|
|
1298
1299
|
return Mt({ ...e, symbol: l }, i);
|
|
1299
|
-
const u =
|
|
1300
|
-
let y = {},
|
|
1300
|
+
const u = n[0]?.symbol || l, b = Ye(u);
|
|
1301
|
+
let y = {}, P = [], v = null;
|
|
1301
1302
|
if (b === "fill") {
|
|
1302
1303
|
const k = ["match", ["to-string", ["get", o]]];
|
|
1303
|
-
for (const r of
|
|
1304
|
+
for (const r of n) {
|
|
1304
1305
|
k.push(ut(r.value)), k.push(D(r.symbol?.color));
|
|
1305
1306
|
const h = String(r.value), g = t?.get(h) || r.label || h;
|
|
1306
|
-
|
|
1307
|
+
P.push({
|
|
1307
1308
|
type: "fill",
|
|
1308
1309
|
color: D(r.symbol?.color),
|
|
1309
1310
|
label: g
|
|
@@ -1321,10 +1322,10 @@ function Wo(e, i, t) {
|
|
|
1321
1322
|
}
|
|
1322
1323
|
} else if (b === "line") {
|
|
1323
1324
|
const k = ["match", ["to-string", ["get", o]]];
|
|
1324
|
-
for (const r of
|
|
1325
|
+
for (const r of n) {
|
|
1325
1326
|
k.push(ut(r.value)), k.push(D(r.symbol?.color));
|
|
1326
1327
|
const h = String(r.value), g = t?.get(h) || r.label || h;
|
|
1327
|
-
|
|
1328
|
+
P.push({
|
|
1328
1329
|
type: "line",
|
|
1329
1330
|
color: D(r.symbol?.color),
|
|
1330
1331
|
width: r.symbol?.width || 1,
|
|
@@ -1338,10 +1339,10 @@ function Wo(e, i, t) {
|
|
|
1338
1339
|
};
|
|
1339
1340
|
} else if (b === "circle") {
|
|
1340
1341
|
const k = ["match", ["to-string", ["get", o]]];
|
|
1341
|
-
for (const h of
|
|
1342
|
+
for (const h of n) {
|
|
1342
1343
|
k.push(ut(h.value)), k.push(D(h.symbol?.color));
|
|
1343
1344
|
const w = String(h.value), f = t?.get(w) || h.label || w;
|
|
1344
|
-
|
|
1345
|
+
P.push({
|
|
1345
1346
|
type: "circle",
|
|
1346
1347
|
color: D(h.symbol?.color),
|
|
1347
1348
|
label: f
|
|
@@ -1355,16 +1356,16 @@ function Wo(e, i, t) {
|
|
|
1355
1356
|
"circle-opacity": he(i)
|
|
1356
1357
|
}, Fe(u?.outline) && (y["circle-stroke-color"] = D(u.outline.color), y["circle-stroke-width"] = u.outline.width || 1);
|
|
1357
1358
|
}
|
|
1358
|
-
return { paint: y, legend:
|
|
1359
|
+
return { paint: y, legend: P, geomType: b, outlinePaint: v };
|
|
1359
1360
|
}
|
|
1360
1361
|
function jo(e, i) {
|
|
1361
|
-
const t = e.field, o = e.classBreakInfos || [],
|
|
1362
|
-
if (
|
|
1363
|
-
return qo(
|
|
1362
|
+
const t = e.field, o = e.classBreakInfos || [], n = e.visualVariables?.find((v) => v.type === "colorInfo");
|
|
1363
|
+
if (n?.stops && n.stops.length > 0)
|
|
1364
|
+
return qo(n, t, e, i);
|
|
1364
1365
|
if (o.length === 0)
|
|
1365
1366
|
return { paint: {}, legend: [], geomType: "fill", outlinePaint: null };
|
|
1366
1367
|
const l = o[0]?.symbol, u = Ye(l);
|
|
1367
|
-
let b = {}, y = [],
|
|
1368
|
+
let b = {}, y = [], P = null;
|
|
1368
1369
|
if (u === "fill") {
|
|
1369
1370
|
const v = ["step", ["get", t]];
|
|
1370
1371
|
v.push(D(o[0]?.symbol?.color));
|
|
@@ -1381,7 +1382,7 @@ function jo(e, i) {
|
|
|
1381
1382
|
"fill-opacity": he(i)
|
|
1382
1383
|
}, Fe(l?.outline)) {
|
|
1383
1384
|
const k = l.outline.width || 1, r = D(l.outline.color);
|
|
1384
|
-
b["fill-outline-color"] = r, k > 1 && (
|
|
1385
|
+
b["fill-outline-color"] = r, k > 1 && (P = {
|
|
1385
1386
|
"line-color": r,
|
|
1386
1387
|
"line-width": k
|
|
1387
1388
|
});
|
|
@@ -1406,17 +1407,17 @@ function jo(e, i) {
|
|
|
1406
1407
|
"line-opacity": he(i)
|
|
1407
1408
|
};
|
|
1408
1409
|
}
|
|
1409
|
-
return { paint: b, legend: y, geomType: u, outlinePaint:
|
|
1410
|
+
return { paint: b, legend: y, geomType: u, outlinePaint: P };
|
|
1410
1411
|
}
|
|
1411
1412
|
function qo(e, i, t, o) {
|
|
1412
|
-
const
|
|
1413
|
-
if (
|
|
1413
|
+
const n = e.stops || [];
|
|
1414
|
+
if (n.length === 0)
|
|
1414
1415
|
return { paint: {}, legend: [], geomType: "fill", outlinePaint: null };
|
|
1415
1416
|
const l = t.classBreakInfos?.[0]?.symbol || t.defaultSymbol, u = Ye(l);
|
|
1416
|
-
let b = {}, y = [],
|
|
1417
|
+
let b = {}, y = [], P = null;
|
|
1417
1418
|
if (u === "fill") {
|
|
1418
1419
|
const v = ["interpolate", ["linear"], ["get", i]];
|
|
1419
|
-
for (const r of
|
|
1420
|
+
for (const r of n)
|
|
1420
1421
|
v.push(r.value), v.push(D(r.color)), y.push({
|
|
1421
1422
|
type: "fill",
|
|
1422
1423
|
color: D(r.color),
|
|
@@ -1434,37 +1435,37 @@ function qo(e, i, t, o) {
|
|
|
1434
1435
|
"fill-opacity": he(o)
|
|
1435
1436
|
}, Fe(l?.outline)) {
|
|
1436
1437
|
const r = l.outline.width || 1, h = D(l.outline.color);
|
|
1437
|
-
b["fill-outline-color"] = h, r > 1 && (
|
|
1438
|
+
b["fill-outline-color"] = h, r > 1 && (P = {
|
|
1438
1439
|
"line-color": h,
|
|
1439
1440
|
"line-width": r
|
|
1440
1441
|
});
|
|
1441
1442
|
}
|
|
1442
1443
|
}
|
|
1443
|
-
return { paint: b, legend: y, geomType: u, outlinePaint:
|
|
1444
|
+
return { paint: b, legend: y, geomType: u, outlinePaint: P };
|
|
1444
1445
|
}
|
|
1445
1446
|
function Go(e, i, t, o) {
|
|
1446
1447
|
if (!e?.renderer)
|
|
1447
1448
|
return { paint: {}, legend: [], geomType: "fill", outlinePaint: null };
|
|
1448
|
-
const
|
|
1449
|
-
switch (
|
|
1449
|
+
const n = e.renderer;
|
|
1450
|
+
switch (n.type) {
|
|
1450
1451
|
case "simple":
|
|
1451
|
-
return Mt(
|
|
1452
|
+
return Mt(n, i);
|
|
1452
1453
|
case "uniqueValue":
|
|
1453
|
-
return Wo(
|
|
1454
|
+
return Wo(n, i, t);
|
|
1454
1455
|
case "classBreaks":
|
|
1455
|
-
return jo(
|
|
1456
|
+
return jo(n, i);
|
|
1456
1457
|
default:
|
|
1457
1458
|
return { paint: {}, legend: [], geomType: "fill", outlinePaint: null };
|
|
1458
1459
|
}
|
|
1459
1460
|
}
|
|
1460
1461
|
function Ho(e) {
|
|
1461
1462
|
if (!e) return null;
|
|
1462
|
-
const i = e.title || "", o = (e.fieldInfos || []).filter((
|
|
1463
|
+
const i = e.title || "", o = (e.fieldInfos || []).filter((n) => n.visible === !0).map((n) => {
|
|
1463
1464
|
const l = {
|
|
1464
|
-
field:
|
|
1465
|
-
label:
|
|
1465
|
+
field: n.fieldName,
|
|
1466
|
+
label: n.label || n.fieldName
|
|
1466
1467
|
};
|
|
1467
|
-
return
|
|
1468
|
+
return n.format && (l.format = {}, n.format.dateFormat && (l.format.dateFormat = n.format.dateFormat), n.format.digitSeparator !== void 0 && (l.format.digitSeparator = n.format.digitSeparator), n.format.places !== void 0 && (l.format.places = n.format.places), Object.keys(l.format).length === 0 && delete l.format), l;
|
|
1468
1469
|
});
|
|
1469
1470
|
return {
|
|
1470
1471
|
title: i,
|
|
@@ -1486,8 +1487,8 @@ function Xo(e) {
|
|
|
1486
1487
|
return i;
|
|
1487
1488
|
const t = e.split(`
|
|
1488
1489
|
`), o = /^(\d{1,3})\s+(.+)$/;
|
|
1489
|
-
for (const
|
|
1490
|
-
const l =
|
|
1490
|
+
for (const n of t) {
|
|
1491
|
+
const l = n.trim().match(o);
|
|
1491
1492
|
if (l) {
|
|
1492
1493
|
const [, u, b] = l;
|
|
1493
1494
|
u && b && i.set(u, b.trim());
|
|
@@ -1511,57 +1512,57 @@ async function Yo(e) {
|
|
|
1511
1512
|
}
|
|
1512
1513
|
async function Tt(e) {
|
|
1513
1514
|
const i = e.operationalLayers || [], t = [], o = ["Zoning and Planning_Land Use"];
|
|
1514
|
-
for (const
|
|
1515
|
-
if (
|
|
1515
|
+
for (const n of i)
|
|
1516
|
+
if (n.url && n.itemId !== "4f39b829b96d437da9231727d9c91fab")
|
|
1516
1517
|
try {
|
|
1517
|
-
let l =
|
|
1518
|
-
const b = !l || !l.renderer, y = o.includes(
|
|
1519
|
-
if ((b || y) &&
|
|
1520
|
-
const T = await Yo(
|
|
1518
|
+
let l = n.layerDefinition?.drawingInfo, u;
|
|
1519
|
+
const b = !l || !l.renderer, y = o.includes(n.title);
|
|
1520
|
+
if ((b || y) && n.url) {
|
|
1521
|
+
const T = await Yo(n.url);
|
|
1521
1522
|
T && (l = T.drawingInfo, T.description && (u = Xo(T.description), u.size > 0));
|
|
1522
1523
|
}
|
|
1523
|
-
const { paint:
|
|
1524
|
+
const { paint: P, legend: v, geomType: k, outlinePaint: r } = Go(
|
|
1524
1525
|
l,
|
|
1525
|
-
|
|
1526
|
+
n.opacity,
|
|
1526
1527
|
u,
|
|
1527
|
-
|
|
1528
|
-
), h = Ho(
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
), f = Jo(
|
|
1532
|
-
let S =
|
|
1528
|
+
n.title
|
|
1529
|
+
), h = Ho(n.popupInfo), w = Ko(n.layerDefinition), g = Uo(
|
|
1530
|
+
n.layerDefinition?.minScale,
|
|
1531
|
+
n.layerDefinition?.maxScale
|
|
1532
|
+
), f = Jo(n.title), c = Qo(n.title);
|
|
1533
|
+
let S = n.opacity ?? 1;
|
|
1533
1534
|
const F = {
|
|
1534
1535
|
id: f,
|
|
1535
1536
|
title: c,
|
|
1536
1537
|
type: k,
|
|
1537
|
-
url:
|
|
1538
|
+
url: n.url,
|
|
1538
1539
|
opacity: S,
|
|
1539
|
-
paint:
|
|
1540
|
+
paint: P,
|
|
1540
1541
|
legend: v,
|
|
1541
1542
|
popup: h
|
|
1542
1543
|
};
|
|
1543
1544
|
w && (F.where = w), g.minZoom !== void 0 && (F.minZoom = g.minZoom), g.maxZoom !== void 0 && (F.maxZoom = g.maxZoom), r && (F.outlinePaint = r), t.push(F);
|
|
1544
1545
|
} catch {
|
|
1545
1546
|
}
|
|
1546
|
-
return t.sort((
|
|
1547
|
+
return t.sort((n, l) => n.title.localeCompare(l.title)), t;
|
|
1547
1548
|
}
|
|
1548
|
-
const xt = {}, gt = "376af635c84643cd816a8c5d017a53aa",
|
|
1549
|
+
const xt = {}, gt = "376af635c84643cd816a8c5d017a53aa", ti = gt;
|
|
1549
1550
|
function ht(e, i) {
|
|
1550
1551
|
let t = `https://www.arcgis.com/sharing/rest/content/items/${e}/data?f=json`;
|
|
1551
1552
|
return i && (t += `&token=${i}`), t;
|
|
1552
1553
|
}
|
|
1553
|
-
function
|
|
1554
|
+
function oi() {
|
|
1554
1555
|
return ht(gt);
|
|
1555
1556
|
}
|
|
1556
1557
|
const Qe = /* @__PURE__ */ new Map(), Ve = /* @__PURE__ */ new Map();
|
|
1557
|
-
function
|
|
1558
|
+
function ea(e) {
|
|
1558
1559
|
e ? (Qe.delete(e), Ve.delete(e)) : (Qe.clear(), Ve.clear());
|
|
1559
1560
|
}
|
|
1560
|
-
let Ke,
|
|
1561
|
-
async function
|
|
1561
|
+
let Ke, Pt = 0;
|
|
1562
|
+
async function ta() {
|
|
1562
1563
|
const e = typeof import.meta < "u" && xt?.VITE_AGO_USERNAME, i = typeof import.meta < "u" && xt?.VITE_AGO_PASSWORD;
|
|
1563
1564
|
if (!(!e || !i)) {
|
|
1564
|
-
if (Ke && Date.now() <
|
|
1565
|
+
if (Ke && Date.now() < Pt - 3e5)
|
|
1565
1566
|
return Ke;
|
|
1566
1567
|
try {
|
|
1567
1568
|
const o = await (await fetch("https://www.arcgis.com/sharing/rest/generateToken", {
|
|
@@ -1578,24 +1579,24 @@ async function tn() {
|
|
|
1578
1579
|
// 2 hours
|
|
1579
1580
|
})
|
|
1580
1581
|
})).json();
|
|
1581
|
-
return o.error ? void 0 : (Ke = o.token,
|
|
1582
|
+
return o.error ? void 0 : (Ke = o.token, Pt = o.expires, Ke);
|
|
1582
1583
|
} catch {
|
|
1583
1584
|
return;
|
|
1584
1585
|
}
|
|
1585
1586
|
}
|
|
1586
1587
|
}
|
|
1587
|
-
async function
|
|
1588
|
+
async function oa(e, i) {
|
|
1588
1589
|
const t = ht(e, i), o = await fetch(t);
|
|
1589
1590
|
if (!o.ok)
|
|
1590
1591
|
throw new Error(`Failed to fetch WebMap: ${o.status} ${o.statusText}`);
|
|
1591
|
-
const
|
|
1592
|
-
if (
|
|
1593
|
-
throw new Error(`ArcGIS error: ${
|
|
1594
|
-
return
|
|
1592
|
+
const n = await o.json();
|
|
1593
|
+
if (n.error)
|
|
1594
|
+
throw new Error(`ArcGIS error: ${n.error.message || n.error.code || "Unknown error"}`);
|
|
1595
|
+
return n;
|
|
1595
1596
|
}
|
|
1596
|
-
async function
|
|
1597
|
+
async function aa(e) {
|
|
1597
1598
|
try {
|
|
1598
|
-
const i = await
|
|
1599
|
+
const i = await ta(), t = await oa(e, i);
|
|
1599
1600
|
return await Tt(t);
|
|
1600
1601
|
} catch (i) {
|
|
1601
1602
|
throw new Error(`Failed to load dynamic layer configs: ${i instanceof Error ? i.message : "Unknown error"}`);
|
|
@@ -1610,15 +1611,15 @@ async function yt(e = gt) {
|
|
|
1610
1611
|
return t;
|
|
1611
1612
|
const o = (async () => {
|
|
1612
1613
|
try {
|
|
1613
|
-
const
|
|
1614
|
-
return Qe.set(e,
|
|
1614
|
+
const n = await aa(e);
|
|
1615
|
+
return Qe.set(e, n), n;
|
|
1615
1616
|
} finally {
|
|
1616
1617
|
Ve.delete(e);
|
|
1617
1618
|
}
|
|
1618
1619
|
})();
|
|
1619
1620
|
return Ve.set(e, o), o;
|
|
1620
1621
|
}
|
|
1621
|
-
function
|
|
1622
|
+
function ia(e) {
|
|
1622
1623
|
const i = C({}), t = /* @__PURE__ */ new Map();
|
|
1623
1624
|
for (const r of e)
|
|
1624
1625
|
i.value[r.id] = {
|
|
@@ -1685,7 +1686,7 @@ function an(e) {
|
|
|
1685
1686
|
};
|
|
1686
1687
|
}
|
|
1687
1688
|
}
|
|
1688
|
-
async function
|
|
1689
|
+
async function n() {
|
|
1689
1690
|
await Promise.all(e.map((r) => o(r)));
|
|
1690
1691
|
}
|
|
1691
1692
|
async function l(r) {
|
|
@@ -1699,7 +1700,7 @@ function an(e) {
|
|
|
1699
1700
|
function y(r) {
|
|
1700
1701
|
return i.value[r]?.loading ?? !1;
|
|
1701
1702
|
}
|
|
1702
|
-
function
|
|
1703
|
+
function P(r) {
|
|
1703
1704
|
return i.value[r]?.error ?? null;
|
|
1704
1705
|
}
|
|
1705
1706
|
function v() {
|
|
@@ -1717,8 +1718,8 @@ function an(e) {
|
|
|
1717
1718
|
t.clear();
|
|
1718
1719
|
}
|
|
1719
1720
|
return Je(() => {
|
|
1720
|
-
|
|
1721
|
-
}),
|
|
1721
|
+
n(), v();
|
|
1722
|
+
}), _t(() => {
|
|
1722
1723
|
k();
|
|
1723
1724
|
}), {
|
|
1724
1725
|
/** Reactive state for all data sources */
|
|
@@ -1726,7 +1727,7 @@ function an(e) {
|
|
|
1726
1727
|
/** Whether any data source is currently loading */
|
|
1727
1728
|
isLoading: b,
|
|
1728
1729
|
/** Fetch all data sources */
|
|
1729
|
-
fetchAll:
|
|
1730
|
+
fetchAll: n,
|
|
1730
1731
|
/** Refetch a specific data source by id */
|
|
1731
1732
|
refetch: l,
|
|
1732
1733
|
/** Get data for a specific source */
|
|
@@ -1734,27 +1735,27 @@ function an(e) {
|
|
|
1734
1735
|
/** Check if a specific source is loading */
|
|
1735
1736
|
isSourceLoading: y,
|
|
1736
1737
|
/** Get error for a specific source */
|
|
1737
|
-
getError:
|
|
1738
|
+
getError: P,
|
|
1738
1739
|
/** Stop all polling (useful for cleanup) */
|
|
1739
1740
|
stopPolling: k
|
|
1740
1741
|
};
|
|
1741
1742
|
}
|
|
1742
|
-
const
|
|
1743
|
+
const na = { class: "layerboard-layout" }, la = ["aria-expanded"], ra = {
|
|
1743
1744
|
key: 0,
|
|
1744
1745
|
class: "layerboard-subtitle"
|
|
1745
|
-
},
|
|
1746
|
+
}, sa = { class: "layerboard-mobile-menu-content" }, ca = { class: "layerboard-main" }, ua = {
|
|
1746
1747
|
key: 0,
|
|
1747
1748
|
class: "layerboard-loading",
|
|
1748
1749
|
role: "status",
|
|
1749
1750
|
"aria-live": "polite"
|
|
1750
|
-
},
|
|
1751
|
+
}, da = {
|
|
1751
1752
|
key: 1,
|
|
1752
1753
|
class: "layerboard-error",
|
|
1753
1754
|
role: "alert"
|
|
1754
|
-
},
|
|
1755
|
+
}, fa = ["aria-expanded", "aria-label"], pa = { key: 0 }, ya = { key: 1 }, ga = {
|
|
1755
1756
|
class: "sr-only",
|
|
1756
1757
|
"aria-live": "polite"
|
|
1757
|
-
},
|
|
1758
|
+
}, ha = /* @__PURE__ */ Se({
|
|
1758
1759
|
__name: "Layerboard",
|
|
1759
1760
|
props: {
|
|
1760
1761
|
title: {},
|
|
@@ -1783,7 +1784,7 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
1783
1784
|
},
|
|
1784
1785
|
emits: ["configs-loaded", "load-error", "zoom"],
|
|
1785
1786
|
setup(e, { expose: i, emit: t }) {
|
|
1786
|
-
const o = e,
|
|
1787
|
+
const o = e, n = t, l = C([]), u = C(!0), b = C(null), y = C(12), P = C(""), v = C(/* @__PURE__ */ new Set()), k = C({}), r = C(/* @__PURE__ */ new Set()), h = C({}), w = C({}), g = C(/* @__PURE__ */ new Set()), f = C({});
|
|
1787
1788
|
function c() {
|
|
1788
1789
|
const L = {};
|
|
1789
1790
|
for (const $ of o.tiledLayers)
|
|
@@ -1799,14 +1800,14 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
1799
1800
|
function T(L, $) {
|
|
1800
1801
|
f.value = { ...f.value, [L]: $ };
|
|
1801
1802
|
}
|
|
1802
|
-
const A = o.dataSources.length > 0 ?
|
|
1803
|
-
function
|
|
1803
|
+
const A = o.dataSources.length > 0 ? ia(o.dataSources) : null, q = I(() => A?.state.value ?? {}), fe = I(() => A?.isLoading.value ?? !1);
|
|
1804
|
+
function Pe(L) {
|
|
1804
1805
|
return A?.getData(L) ?? null;
|
|
1805
1806
|
}
|
|
1806
|
-
function
|
|
1807
|
+
function _e(L) {
|
|
1807
1808
|
return A?.refetch(L) ?? Promise.resolve();
|
|
1808
1809
|
}
|
|
1809
|
-
W("layerboard-layers", j(l)), W("layerboard-visible", v), W("layerboard-opacities", k), W("layerboard-loading", j(r)), W("layerboard-errors", j(h)), W("layerboard-zoom", j(y)), W("layerboard-toggle-layer", Ee), W("layerboard-set-layer-visible", ve), W("layerboard-set-layers-visible", Me), W("layerboard-set-opacity", be), W("layerboard-tiled-layers", j(I(() => o.tiledLayers))), W("layerboard-visible-tiled", g), W("layerboard-tiled-opacities", f), W("layerboard-toggle-tiled", S), W("layerboard-set-tiled-opacity", T), W("layerboard-set-tiled-visible", F), W("layerboard-data-sources-state", q), W("layerboard-data-sources-loading", fe), W("layerboard-get-data-source",
|
|
1810
|
+
W("layerboard-layers", j(l)), W("layerboard-visible", v), W("layerboard-opacities", k), W("layerboard-loading", j(r)), W("layerboard-errors", j(h)), W("layerboard-zoom", j(y)), W("layerboard-toggle-layer", Ee), W("layerboard-set-layer-visible", ve), W("layerboard-set-layers-visible", Me), W("layerboard-set-opacity", be), W("layerboard-tiled-layers", j(I(() => o.tiledLayers))), W("layerboard-visible-tiled", g), W("layerboard-tiled-opacities", f), W("layerboard-toggle-tiled", S), W("layerboard-set-tiled-opacity", T), W("layerboard-set-tiled-visible", F), W("layerboard-data-sources-state", q), W("layerboard-data-sources-loading", fe), W("layerboard-get-data-source", Pe), W("layerboard-refetch-data-source", _e);
|
|
1810
1811
|
const et = I(() => ({
|
|
1811
1812
|
backgroundColor: o.themeColor
|
|
1812
1813
|
})), tt = I(() => ({
|
|
@@ -1836,10 +1837,10 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
1836
1837
|
const K = {};
|
|
1837
1838
|
$.forEach((B) => {
|
|
1838
1839
|
K[B.id] = B.opacity ?? 1;
|
|
1839
|
-
}), k.value = K,
|
|
1840
|
+
}), k.value = K, n("configs-loaded", $);
|
|
1840
1841
|
} catch (L) {
|
|
1841
1842
|
const $ = L instanceof Error ? L.message : "Failed to load layer configurations";
|
|
1842
|
-
b.value = $,
|
|
1843
|
+
b.value = $, n("load-error", $);
|
|
1843
1844
|
} finally {
|
|
1844
1845
|
u.value = !1;
|
|
1845
1846
|
}
|
|
@@ -1858,15 +1859,15 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
1858
1859
|
const K = await $.json(), B = {};
|
|
1859
1860
|
for (const te of K.rows || [])
|
|
1860
1861
|
if (te.url_text && te.representation) {
|
|
1861
|
-
const rt = We(te.url_text),
|
|
1862
|
-
B[rt] =
|
|
1862
|
+
const rt = We(te.url_text), a = `https://metadata.phila.gov/#home/representationdetails/${te.representation}/`;
|
|
1863
|
+
B[rt] = a;
|
|
1863
1864
|
}
|
|
1864
1865
|
w.value = B;
|
|
1865
1866
|
} catch {
|
|
1866
1867
|
}
|
|
1867
1868
|
}
|
|
1868
|
-
function
|
|
1869
|
-
y.value = L,
|
|
1869
|
+
function at(L) {
|
|
1870
|
+
y.value = L, n("zoom", L);
|
|
1870
1871
|
}
|
|
1871
1872
|
function Ee(L) {
|
|
1872
1873
|
v.value.has(L) ? v.value.delete(L) : v.value.add(L), v.value = new Set(v.value);
|
|
@@ -1894,12 +1895,12 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
1894
1895
|
}
|
|
1895
1896
|
}
|
|
1896
1897
|
function we(L) {
|
|
1897
|
-
|
|
1898
|
+
P.value = L;
|
|
1898
1899
|
}
|
|
1899
|
-
const
|
|
1900
|
+
const ne = C(null), ke = C(null), nt = C(null), Ce = C(null), De = C(null), Ze = C(null), je = C(null), le = C("map");
|
|
1900
1901
|
function $e() {
|
|
1901
1902
|
le.value = le.value === "sidebar" ? "map" : "sidebar", Ae(() => {
|
|
1902
|
-
le.value === "sidebar" &&
|
|
1903
|
+
le.value === "sidebar" && ne.value?.focus();
|
|
1903
1904
|
});
|
|
1904
1905
|
}
|
|
1905
1906
|
const se = C(!1);
|
|
@@ -1983,7 +1984,7 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
1983
1984
|
/** Reload layer configurations */
|
|
1984
1985
|
reloadConfigs: Re,
|
|
1985
1986
|
/** Clear configuration cache */
|
|
1986
|
-
clearCache: () =>
|
|
1987
|
+
clearCache: () => ea(o.webMapId),
|
|
1987
1988
|
// Tiled layer APIs
|
|
1988
1989
|
/** Set of visible tiled layer IDs */
|
|
1989
1990
|
visibleTiledLayers: g,
|
|
@@ -2001,9 +2002,9 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2001
2002
|
/** Whether any data source is loading */
|
|
2002
2003
|
dataSourcesLoading: fe,
|
|
2003
2004
|
/** Get data from a specific data source */
|
|
2004
|
-
getDataSourceData:
|
|
2005
|
+
getDataSourceData: Pe,
|
|
2005
2006
|
/** Refetch a specific data source */
|
|
2006
|
-
refetchDataSource:
|
|
2007
|
+
refetchDataSource: _e,
|
|
2007
2008
|
// Modal APIs
|
|
2008
2009
|
/** Whether the modal is currently open */
|
|
2009
2010
|
isModalOpen: pe,
|
|
@@ -2019,7 +2020,7 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2019
2020
|
Re(), ot(), c(), document.addEventListener("keydown", Be);
|
|
2020
2021
|
}), Rt(() => {
|
|
2021
2022
|
document.removeEventListener("keydown", Be);
|
|
2022
|
-
}), (L, $) => (d(), m("div",
|
|
2023
|
+
}), (L, $) => (d(), m("div", na, [
|
|
2023
2024
|
$[5] || ($[5] = x("a", {
|
|
2024
2025
|
href: "#main-content",
|
|
2025
2026
|
class: "skip-to-main-content-link"
|
|
@@ -2054,20 +2055,23 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2054
2055
|
size: "medium",
|
|
2055
2056
|
decorative: ""
|
|
2056
2057
|
}, null, 8, ["icon-definition"])
|
|
2057
|
-
], 8,
|
|
2058
|
+
], 8, la),
|
|
2058
2059
|
ce(L.$slots, "header", {}, () => [
|
|
2059
2060
|
x("h1", null, V(e.title), 1),
|
|
2060
|
-
e.subtitle ? (d(), m("span",
|
|
2061
|
+
e.subtitle ? (d(), m("span", ra, V(e.subtitle), 1)) : z("", !0)
|
|
2061
2062
|
], !0),
|
|
2062
2063
|
se.value ? (d(), m("div", {
|
|
2063
2064
|
key: 0,
|
|
2064
2065
|
ref_key: "mobileMenuRef",
|
|
2065
2066
|
ref: De,
|
|
2066
2067
|
class: "layerboard-mobile-menu",
|
|
2068
|
+
role: "dialog",
|
|
2069
|
+
"aria-modal": "true",
|
|
2070
|
+
"aria-label": "Site menu",
|
|
2067
2071
|
style: H({ backgroundColor: e.themeColor }),
|
|
2068
2072
|
onKeydown: de
|
|
2069
2073
|
}, [
|
|
2070
|
-
x("div",
|
|
2074
|
+
x("div", sa, [
|
|
2071
2075
|
ce(L.$slots, "footer", {
|
|
2072
2076
|
openModal: ye,
|
|
2073
2077
|
closeModal: ue,
|
|
@@ -2096,14 +2100,14 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2096
2100
|
onClick: xe
|
|
2097
2101
|
})) : z("", !0)
|
|
2098
2102
|
], 4),
|
|
2099
|
-
x("div",
|
|
2100
|
-
u.value ? (d(), m("div",
|
|
2103
|
+
x("div", ca, [
|
|
2104
|
+
u.value ? (d(), m("div", ua, [
|
|
2101
2105
|
x("div", {
|
|
2102
2106
|
class: "layerboard-spinner",
|
|
2103
2107
|
style: H({ borderTopColor: e.themeColor })
|
|
2104
2108
|
}, null, 4),
|
|
2105
2109
|
x("p", null, "Loading " + V(e.title) + "...", 1)
|
|
2106
|
-
])) : b.value ? (d(), m("div",
|
|
2110
|
+
])) : b.value ? (d(), m("div", da, [
|
|
2107
2111
|
$[3] || ($[3] = x("h2", null, "Error Loading Layers", -1)),
|
|
2108
2112
|
x("p", null, V(b.value), 1),
|
|
2109
2113
|
x("button", {
|
|
@@ -2114,9 +2118,9 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2114
2118
|
])) : (d(), m(oe, { key: 2 }, [
|
|
2115
2119
|
x("aside", {
|
|
2116
2120
|
ref_key: "sidebarRef",
|
|
2117
|
-
ref:
|
|
2121
|
+
ref: ne,
|
|
2118
2122
|
id: "main-content",
|
|
2119
|
-
class:
|
|
2123
|
+
class: ae(["layerboard-sidebar", { "is-active": le.value === "sidebar" }]),
|
|
2120
2124
|
style: H(Ue.value),
|
|
2121
2125
|
"aria-label": "Map layers",
|
|
2122
2126
|
tabindex: "-1"
|
|
@@ -2140,8 +2144,8 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2140
2144
|
setTiledLayerOpacity: T,
|
|
2141
2145
|
dataSourcesState: q.value,
|
|
2142
2146
|
dataSourcesLoading: fe.value,
|
|
2143
|
-
getDataSource:
|
|
2144
|
-
refetchDataSource:
|
|
2147
|
+
getDataSource: Pe,
|
|
2148
|
+
refetchDataSource: _e
|
|
2145
2149
|
}, () => [
|
|
2146
2150
|
e.showDefaultSidebar ? (d(), ee(No, {
|
|
2147
2151
|
key: 0,
|
|
@@ -2151,7 +2155,7 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2151
2155
|
"loading-layers": r.value,
|
|
2152
2156
|
"layer-errors": h.value,
|
|
2153
2157
|
"current-zoom": y.value,
|
|
2154
|
-
"search-query":
|
|
2158
|
+
"search-query": P.value,
|
|
2155
2159
|
"layer-metadata": w.value,
|
|
2156
2160
|
onToggleLayer: Ee,
|
|
2157
2161
|
onSetOpacity: be,
|
|
@@ -2162,7 +2166,7 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2162
2166
|
x("div", {
|
|
2163
2167
|
role: "main",
|
|
2164
2168
|
"aria-label": "Map",
|
|
2165
|
-
class:
|
|
2169
|
+
class: ae(["layerboard-map", { "is-active": le.value === "map" }])
|
|
2166
2170
|
}, [
|
|
2167
2171
|
Q(oo, {
|
|
2168
2172
|
"visible-layers": v.value,
|
|
@@ -2182,13 +2186,13 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2182
2186
|
"pictometry-button-position": e.pictometryButtonPosition,
|
|
2183
2187
|
"initial-zoom": e.initialZoom,
|
|
2184
2188
|
"initial-center": e.initialCenter,
|
|
2185
|
-
onZoom:
|
|
2189
|
+
onZoom: at,
|
|
2186
2190
|
onLayerLoading: it,
|
|
2187
2191
|
onLayerError: ie
|
|
2188
2192
|
}, 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"])
|
|
2189
2193
|
], 2),
|
|
2190
2194
|
x("button", {
|
|
2191
|
-
class:
|
|
2195
|
+
class: ae(["layerboard-sidebar-toggle", { "is-collapsed": X.value }]),
|
|
2192
2196
|
style: H({ left: X.value ? "0" : o.sidebarWidth }),
|
|
2193
2197
|
onClick: Ge,
|
|
2194
2198
|
"aria-expanded": !X.value,
|
|
@@ -2199,17 +2203,17 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2199
2203
|
size: "medium",
|
|
2200
2204
|
decorative: ""
|
|
2201
2205
|
}, null, 8, ["icon-definition"])
|
|
2202
|
-
], 14,
|
|
2206
|
+
], 14, fa)
|
|
2203
2207
|
], 64))
|
|
2204
2208
|
]),
|
|
2205
2209
|
x("button", {
|
|
2206
2210
|
ref_key: "mobileToggleRef",
|
|
2207
|
-
ref:
|
|
2211
|
+
ref: nt,
|
|
2208
2212
|
class: "layerboard-mobile-toggle",
|
|
2209
2213
|
style: H(Ie.value),
|
|
2210
2214
|
onClick: $e
|
|
2211
2215
|
}, [
|
|
2212
|
-
le.value === "map" ? (d(), m("span",
|
|
2216
|
+
le.value === "map" ? (d(), m("span", pa, V(e.sidebarLabel), 1)) : (d(), m("span", ya, V(e.mapLabel), 1))
|
|
2213
2217
|
], 4),
|
|
2214
2218
|
x("footer", {
|
|
2215
2219
|
class: "layerboard-footer",
|
|
@@ -2253,13 +2257,13 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2253
2257
|
ce(L.$slots, "modal", { closeModal: ue }, void 0, !0)
|
|
2254
2258
|
], 512)
|
|
2255
2259
|
], 32)) : z("", !0),
|
|
2256
|
-
x("span",
|
|
2260
|
+
x("span", ga, V(le.value === "sidebar" ? "Showing layers panel" : "Showing map"), 1)
|
|
2257
2261
|
]));
|
|
2258
2262
|
}
|
|
2259
|
-
}),
|
|
2263
|
+
}), ai = /* @__PURE__ */ Oe(ha, [["__scopeId", "data-v-d1e907be"]]), ma = ["aria-expanded"], va = {
|
|
2260
2264
|
key: 0,
|
|
2261
2265
|
class: "topic-icon"
|
|
2262
|
-
},
|
|
2266
|
+
}, ba = { class: "topic-title" }, wa = /* @__PURE__ */ Se({
|
|
2263
2267
|
__name: "TopicAccordion",
|
|
2264
2268
|
props: {
|
|
2265
2269
|
title: {},
|
|
@@ -2270,30 +2274,30 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2270
2274
|
},
|
|
2271
2275
|
emits: ["toggle", "layerChange"],
|
|
2272
2276
|
setup(e, { emit: i }) {
|
|
2273
|
-
const t = e, o = i,
|
|
2277
|
+
const t = e, o = i, n = C(t.expanded), l = `topic-panel-${bt()}`, u = `topic-header-${bt()}`;
|
|
2274
2278
|
Te(
|
|
2275
2279
|
() => t.expanded,
|
|
2276
2280
|
(y) => {
|
|
2277
|
-
|
|
2281
|
+
n.value = y;
|
|
2278
2282
|
}
|
|
2279
2283
|
);
|
|
2280
2284
|
function b() {
|
|
2281
|
-
|
|
2285
|
+
n.value = !n.value, o("toggle", n.value);
|
|
2282
2286
|
}
|
|
2283
|
-
return (y,
|
|
2287
|
+
return (y, P) => {
|
|
2284
2288
|
const v = Dt("font-awesome-icon");
|
|
2285
2289
|
return d(), m("div", {
|
|
2286
|
-
class:
|
|
2290
|
+
class: ae(["topic-accordion", { "is-expanded": n.value }])
|
|
2287
2291
|
}, [
|
|
2288
2292
|
x("button", {
|
|
2289
2293
|
id: u,
|
|
2290
|
-
class:
|
|
2294
|
+
class: ae(["topic-header", e.headerClass]),
|
|
2291
2295
|
type: "button",
|
|
2292
|
-
"aria-expanded":
|
|
2296
|
+
"aria-expanded": n.value,
|
|
2293
2297
|
"aria-controls": l,
|
|
2294
2298
|
onClick: b
|
|
2295
2299
|
}, [
|
|
2296
|
-
e.icon || y.$slots.icon ? (d(), m("span",
|
|
2300
|
+
e.icon || y.$slots.icon ? (d(), m("span", va, [
|
|
2297
2301
|
ce(y.$slots, "icon", {}, () => [
|
|
2298
2302
|
e.icon ? (d(), ee(v, {
|
|
2299
2303
|
key: 0,
|
|
@@ -2302,10 +2306,10 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2302
2306
|
}, null, 8, ["icon"])) : z("", !0)
|
|
2303
2307
|
], !0)
|
|
2304
2308
|
])) : z("", !0),
|
|
2305
|
-
x("span",
|
|
2309
|
+
x("span", ba, V(e.title), 1),
|
|
2306
2310
|
x("span", {
|
|
2307
|
-
class:
|
|
2308
|
-
}, [...
|
|
2311
|
+
class: ae(["topic-chevron", { "is-rotated": n.value }])
|
|
2312
|
+
}, [...P[0] || (P[0] = [
|
|
2309
2313
|
x("svg", {
|
|
2310
2314
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2311
2315
|
width: "20",
|
|
@@ -2321,7 +2325,7 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2321
2325
|
x("polyline", { points: "6 9 12 15 18 9" })
|
|
2322
2326
|
], -1)
|
|
2323
2327
|
])], 2)
|
|
2324
|
-
], 10,
|
|
2328
|
+
], 10, ma),
|
|
2325
2329
|
Et(x("div", {
|
|
2326
2330
|
id: l,
|
|
2327
2331
|
role: "region",
|
|
@@ -2329,41 +2333,35 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2329
2333
|
class: "topic-content"
|
|
2330
2334
|
}, [
|
|
2331
2335
|
ce(y.$slots, "default", {}, () => [
|
|
2332
|
-
|
|
2336
|
+
P[1] || (P[1] = x("p", { class: "topic-empty" }, "No content provided for this topic.", -1))
|
|
2333
2337
|
], !0)
|
|
2334
2338
|
], 512), [
|
|
2335
|
-
[Zt,
|
|
2339
|
+
[Zt, n.value]
|
|
2336
2340
|
])
|
|
2337
2341
|
], 2);
|
|
2338
2342
|
};
|
|
2339
2343
|
}
|
|
2340
|
-
}),
|
|
2341
|
-
class: "layer-checkbox-set",
|
|
2342
|
-
role: "group"
|
|
2343
|
-
}, kn = ["checked", "disabled", "onChange"], Cn = { class: "layer-title" }, $n = {
|
|
2344
|
+
}), ii = /* @__PURE__ */ Oe(wa, [["__scopeId", "data-v-13853397"]]), La = ["aria-label"], Sa = ["checked", "disabled", "onChange"], ka = { class: "layer-title" }, Ca = {
|
|
2344
2345
|
key: 0,
|
|
2345
2346
|
class: "loading-indicator",
|
|
2346
2347
|
role: "status"
|
|
2347
|
-
},
|
|
2348
|
+
}, $a = ["aria-label"], xa = {
|
|
2348
2349
|
key: 2,
|
|
2349
2350
|
class: "zoom-indicator"
|
|
2350
|
-
},
|
|
2351
|
+
}, Pa = { class: "layer-title" }, _a = {
|
|
2351
2352
|
key: 0,
|
|
2352
2353
|
class: "loading-indicator",
|
|
2353
2354
|
role: "status"
|
|
2354
|
-
},
|
|
2355
|
+
}, Ea = ["aria-label"], Ma = {
|
|
2355
2356
|
key: 2,
|
|
2356
2357
|
class: "zoom-indicator"
|
|
2357
|
-
},
|
|
2358
|
+
}, Ta = {
|
|
2358
2359
|
key: 2,
|
|
2359
2360
|
class: "opacity-control"
|
|
2360
|
-
},
|
|
2361
|
-
key: 3,
|
|
2362
|
-
class: "layer-legend"
|
|
2363
|
-
}, Rn = { class: "legend-label" }, Dn = {
|
|
2361
|
+
}, za = ["for"], Fa = ["id", "value", "aria-label", "onInput"], Oa = ["aria-label"], Ia = { class: "legend-label" }, Ra = {
|
|
2364
2362
|
key: 0,
|
|
2365
2363
|
class: "empty-state"
|
|
2366
|
-
},
|
|
2364
|
+
}, Da = /* @__PURE__ */ Se({
|
|
2367
2365
|
__name: "LayerCheckboxSet",
|
|
2368
2366
|
props: {
|
|
2369
2367
|
layers: {},
|
|
@@ -2373,12 +2371,13 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2373
2371
|
layerErrors: { default: () => ({}) },
|
|
2374
2372
|
currentZoom: { default: 12 },
|
|
2375
2373
|
showOpacity: { type: Boolean, default: !0 },
|
|
2376
|
-
showLegend: { type: Boolean, default: !0 }
|
|
2374
|
+
showLegend: { type: Boolean, default: !0 },
|
|
2375
|
+
groupLabel: {}
|
|
2377
2376
|
},
|
|
2378
2377
|
emits: ["toggleLayer", "setOpacity"],
|
|
2379
2378
|
setup(e, { emit: i }) {
|
|
2380
2379
|
const t = e, o = i;
|
|
2381
|
-
function
|
|
2380
|
+
function n(g) {
|
|
2382
2381
|
return t.visibleLayerIds.has(g);
|
|
2383
2382
|
}
|
|
2384
2383
|
function l(g) {
|
|
@@ -2394,7 +2393,7 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2394
2393
|
const f = t.currentZoom, c = g.minZoom, S = g.maxZoom;
|
|
2395
2394
|
return !(c !== void 0 && f < c || S !== void 0 && f > S);
|
|
2396
2395
|
}
|
|
2397
|
-
function
|
|
2396
|
+
function P(g) {
|
|
2398
2397
|
return g.displayOptions?.shouldShowCheckbox !== !1;
|
|
2399
2398
|
}
|
|
2400
2399
|
function v(g) {
|
|
@@ -2413,59 +2412,63 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2413
2412
|
const c = f.target;
|
|
2414
2413
|
o("setOpacity", g, parseFloat(c.value));
|
|
2415
2414
|
}
|
|
2416
|
-
return (g, f) => (d(), m("fieldset",
|
|
2415
|
+
return (g, f) => (d(), m("fieldset", {
|
|
2416
|
+
class: "layer-checkbox-set",
|
|
2417
|
+
role: "group",
|
|
2418
|
+
"aria-label": e.groupLabel
|
|
2419
|
+
}, [
|
|
2417
2420
|
(d(!0), m(oe, null, re(e.layers, (c) => (d(), m("div", {
|
|
2418
2421
|
key: c.id,
|
|
2419
2422
|
class: "layer-item"
|
|
2420
2423
|
}, [
|
|
2421
|
-
|
|
2424
|
+
P(c) ? (d(), m("label", {
|
|
2422
2425
|
key: 0,
|
|
2423
|
-
class:
|
|
2426
|
+
class: ae(["layer-checkbox", {
|
|
2424
2427
|
"layer-unavailable": !y(c),
|
|
2425
2428
|
"layer-error": b(c.id)
|
|
2426
2429
|
}])
|
|
2427
2430
|
}, [
|
|
2428
2431
|
x("input", {
|
|
2429
2432
|
type: "checkbox",
|
|
2430
|
-
checked:
|
|
2433
|
+
checked: n(c.id),
|
|
2431
2434
|
disabled: !y(c),
|
|
2432
2435
|
onChange: (S) => h(c.id)
|
|
2433
|
-
}, null, 40,
|
|
2434
|
-
x("span",
|
|
2436
|
+
}, null, 40, Sa),
|
|
2437
|
+
x("span", ka, [
|
|
2435
2438
|
me(V(r(c)) + " ", 1),
|
|
2436
|
-
u(c.id) ? (d(), m("span",
|
|
2439
|
+
u(c.id) ? (d(), m("span", Ca, " Loading... ")) : z("", !0),
|
|
2437
2440
|
b(c.id) ? (d(), m("span", {
|
|
2438
2441
|
key: 1,
|
|
2439
2442
|
class: "error-indicator",
|
|
2440
2443
|
"aria-label": b(c.id) || "Error",
|
|
2441
2444
|
role: "status"
|
|
2442
|
-
}, " Error ", 8,
|
|
2443
|
-
y(c) ? z("", !0) : (d(), m("span",
|
|
2445
|
+
}, " Error ", 8, $a)) : z("", !0),
|
|
2446
|
+
y(c) ? z("", !0) : (d(), m("span", xa, " (zoom in) "))
|
|
2444
2447
|
])
|
|
2445
2448
|
], 2)) : (d(), m("div", {
|
|
2446
2449
|
key: 1,
|
|
2447
|
-
class:
|
|
2450
|
+
class: ae(["layer-label-only", {
|
|
2448
2451
|
"layer-unavailable": !y(c),
|
|
2449
2452
|
"layer-error": b(c.id)
|
|
2450
2453
|
}])
|
|
2451
2454
|
}, [
|
|
2452
|
-
x("span",
|
|
2455
|
+
x("span", Pa, [
|
|
2453
2456
|
me(V(r(c)) + " ", 1),
|
|
2454
|
-
u(c.id) ? (d(), m("span",
|
|
2457
|
+
u(c.id) ? (d(), m("span", _a, " Loading... ")) : z("", !0),
|
|
2455
2458
|
b(c.id) ? (d(), m("span", {
|
|
2456
2459
|
key: 1,
|
|
2457
2460
|
class: "error-indicator",
|
|
2458
2461
|
"aria-label": b(c.id) || "Error",
|
|
2459
2462
|
role: "status"
|
|
2460
|
-
}, " Error ", 8,
|
|
2461
|
-
y(c) ? z("", !0) : (d(), m("span",
|
|
2463
|
+
}, " Error ", 8, Ea)) : z("", !0),
|
|
2464
|
+
y(c) ? z("", !0) : (d(), m("span", Ma, " (zoom in) "))
|
|
2462
2465
|
])
|
|
2463
2466
|
], 2)),
|
|
2464
|
-
v(c) &&
|
|
2467
|
+
v(c) && n(c.id) ? (d(), m("div", Ta, [
|
|
2465
2468
|
x("label", {
|
|
2466
2469
|
class: "opacity-label",
|
|
2467
2470
|
for: "opacity-" + c.id
|
|
2468
|
-
}, " Opacity: " + V(Math.round(l(c.id) * 100)) + "% ", 9,
|
|
2471
|
+
}, " Opacity: " + V(Math.round(l(c.id) * 100)) + "% ", 9, za),
|
|
2469
2472
|
x("input", {
|
|
2470
2473
|
id: "opacity-" + c.id,
|
|
2471
2474
|
type: "range",
|
|
@@ -2476,9 +2479,13 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2476
2479
|
"aria-label": "Opacity for " + r(c),
|
|
2477
2480
|
class: "opacity-slider",
|
|
2478
2481
|
onInput: (S) => w(c.id, S)
|
|
2479
|
-
}, null, 40,
|
|
2482
|
+
}, null, 40, Fa)
|
|
2480
2483
|
])) : z("", !0),
|
|
2481
|
-
k(c) &&
|
|
2484
|
+
k(c) && n(c.id) && c.legend?.length ? (d(), m("ul", {
|
|
2485
|
+
key: 3,
|
|
2486
|
+
class: "layer-legend",
|
|
2487
|
+
"aria-label": "Legend for " + r(c)
|
|
2488
|
+
}, [
|
|
2482
2489
|
(d(!0), m(oe, null, re(c.legend, (S, F) => (d(), m("li", {
|
|
2483
2490
|
key: F,
|
|
2484
2491
|
class: "legend-item"
|
|
@@ -2502,33 +2509,27 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2502
2509
|
style: H({ backgroundColor: S.color }),
|
|
2503
2510
|
"aria-hidden": "true"
|
|
2504
2511
|
}, null, 4)) : z("", !0),
|
|
2505
|
-
x("span",
|
|
2512
|
+
x("span", Ia, V(S.label), 1)
|
|
2506
2513
|
]))), 128))
|
|
2507
|
-
])) : z("", !0)
|
|
2514
|
+
], 8, Oa)) : z("", !0)
|
|
2508
2515
|
]))), 128)),
|
|
2509
|
-
e.layers.length === 0 ? (d(), m("div",
|
|
2510
|
-
]));
|
|
2516
|
+
e.layers.length === 0 ? (d(), m("div", Ra, " No layers available ")) : z("", !0)
|
|
2517
|
+
], 8, La));
|
|
2511
2518
|
}
|
|
2512
|
-
}),
|
|
2513
|
-
class: "layer-radio-set",
|
|
2514
|
-
role: "radiogroup"
|
|
2515
|
-
}, An = ["name", "checked", "disabled", "onChange"], Nn = { class: "layer-title" }, Vn = {
|
|
2519
|
+
}), ni = /* @__PURE__ */ Oe(Da, [["__scopeId", "data-v-a20fd1c9"]]), Za = ["aria-label"], Ba = ["name", "checked", "disabled", "onChange"], Aa = { class: "layer-title" }, Na = {
|
|
2516
2520
|
key: 0,
|
|
2517
2521
|
class: "loading-indicator",
|
|
2518
2522
|
role: "status"
|
|
2519
|
-
},
|
|
2523
|
+
}, Va = ["aria-label"], Ua = {
|
|
2520
2524
|
key: 2,
|
|
2521
2525
|
class: "zoom-indicator"
|
|
2522
|
-
},
|
|
2526
|
+
}, Wa = {
|
|
2523
2527
|
key: 0,
|
|
2524
2528
|
class: "opacity-control"
|
|
2525
|
-
},
|
|
2526
|
-
key: 1,
|
|
2527
|
-
class: "layer-legend"
|
|
2528
|
-
}, Kn = { class: "legend-label" }, Jn = {
|
|
2529
|
+
}, ja = ["for"], qa = ["id", "value", "aria-label", "onInput"], Ga = ["aria-label"], Ha = { class: "legend-label" }, Ka = {
|
|
2529
2530
|
key: 0,
|
|
2530
2531
|
class: "empty-state"
|
|
2531
|
-
},
|
|
2532
|
+
}, Ja = /* @__PURE__ */ Se({
|
|
2532
2533
|
__name: "LayerRadioButtonSet",
|
|
2533
2534
|
props: {
|
|
2534
2535
|
layers: {},
|
|
@@ -2539,12 +2540,13 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2539
2540
|
currentZoom: { default: 12 },
|
|
2540
2541
|
showOpacity: { type: Boolean, default: !0 },
|
|
2541
2542
|
showLegend: { type: Boolean, default: !0 },
|
|
2542
|
-
groupName: { default: "layer-radio-group" }
|
|
2543
|
+
groupName: { default: "layer-radio-group" },
|
|
2544
|
+
groupLabel: {}
|
|
2543
2545
|
},
|
|
2544
2546
|
emits: ["selectLayer", "setOpacity"],
|
|
2545
2547
|
setup(e, { emit: i }) {
|
|
2546
2548
|
const t = e, o = i;
|
|
2547
|
-
function
|
|
2549
|
+
function n(w) {
|
|
2548
2550
|
return t.visibleLayerIds.has(w);
|
|
2549
2551
|
}
|
|
2550
2552
|
function l(w) {
|
|
@@ -2560,7 +2562,7 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2560
2562
|
const g = t.currentZoom, f = w.minZoom, c = w.maxZoom;
|
|
2561
2563
|
return !(f !== void 0 && g < f || c !== void 0 && g > c);
|
|
2562
2564
|
}
|
|
2563
|
-
function
|
|
2565
|
+
function P(w) {
|
|
2564
2566
|
return t.showOpacity ? w.displayOptions?.shouldShowSlider !== !1 : !1;
|
|
2565
2567
|
}
|
|
2566
2568
|
function v(w) {
|
|
@@ -2577,13 +2579,17 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2577
2579
|
const f = g.target;
|
|
2578
2580
|
o("setOpacity", w, parseFloat(f.value));
|
|
2579
2581
|
}
|
|
2580
|
-
return (w, g) => (d(), m("div",
|
|
2582
|
+
return (w, g) => (d(), m("div", {
|
|
2583
|
+
class: "layer-radio-set",
|
|
2584
|
+
role: "radiogroup",
|
|
2585
|
+
"aria-label": e.groupLabel
|
|
2586
|
+
}, [
|
|
2581
2587
|
(d(!0), m(oe, null, re(e.layers, (f) => (d(), m("div", {
|
|
2582
2588
|
key: f.id,
|
|
2583
2589
|
class: "layer-item"
|
|
2584
2590
|
}, [
|
|
2585
2591
|
x("label", {
|
|
2586
|
-
class:
|
|
2592
|
+
class: ae(["layer-radio", {
|
|
2587
2593
|
"layer-unavailable": !y(f),
|
|
2588
2594
|
"layer-error": b(f.id)
|
|
2589
2595
|
}])
|
|
@@ -2591,27 +2597,27 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2591
2597
|
x("input", {
|
|
2592
2598
|
type: "radio",
|
|
2593
2599
|
name: e.groupName,
|
|
2594
|
-
checked:
|
|
2600
|
+
checked: n(f.id),
|
|
2595
2601
|
disabled: !y(f),
|
|
2596
2602
|
onChange: (c) => r(f.id)
|
|
2597
|
-
}, null, 40,
|
|
2598
|
-
x("span",
|
|
2603
|
+
}, null, 40, Ba),
|
|
2604
|
+
x("span", Aa, [
|
|
2599
2605
|
me(V(k(f)) + " ", 1),
|
|
2600
|
-
u(f.id) ? (d(), m("span",
|
|
2606
|
+
u(f.id) ? (d(), m("span", Na, " Loading... ")) : z("", !0),
|
|
2601
2607
|
b(f.id) ? (d(), m("span", {
|
|
2602
2608
|
key: 1,
|
|
2603
2609
|
class: "error-indicator",
|
|
2604
2610
|
"aria-label": b(f.id) || "Error",
|
|
2605
2611
|
role: "status"
|
|
2606
|
-
}, " Error ", 8,
|
|
2607
|
-
y(f) ? z("", !0) : (d(), m("span",
|
|
2612
|
+
}, " Error ", 8, Va)) : z("", !0),
|
|
2613
|
+
y(f) ? z("", !0) : (d(), m("span", Ua, " (zoom in) "))
|
|
2608
2614
|
])
|
|
2609
2615
|
], 2),
|
|
2610
|
-
|
|
2616
|
+
P(f) && n(f.id) ? (d(), m("div", Wa, [
|
|
2611
2617
|
x("label", {
|
|
2612
2618
|
class: "opacity-label",
|
|
2613
2619
|
for: "opacity-" + f.id
|
|
2614
|
-
}, " Opacity: " + V(Math.round(l(f.id) * 100)) + "% ", 9,
|
|
2620
|
+
}, " Opacity: " + V(Math.round(l(f.id) * 100)) + "% ", 9, ja),
|
|
2615
2621
|
x("input", {
|
|
2616
2622
|
id: "opacity-" + f.id,
|
|
2617
2623
|
type: "range",
|
|
@@ -2622,9 +2628,13 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2622
2628
|
"aria-label": "Opacity for " + k(f),
|
|
2623
2629
|
class: "opacity-slider",
|
|
2624
2630
|
onInput: (c) => h(f.id, c)
|
|
2625
|
-
}, null, 40,
|
|
2631
|
+
}, null, 40, qa)
|
|
2626
2632
|
])) : z("", !0),
|
|
2627
|
-
v(f) &&
|
|
2633
|
+
v(f) && n(f.id) && f.legend?.length ? (d(), m("ul", {
|
|
2634
|
+
key: 1,
|
|
2635
|
+
class: "layer-legend",
|
|
2636
|
+
"aria-label": "Legend for " + k(f)
|
|
2637
|
+
}, [
|
|
2628
2638
|
(d(!0), m(oe, null, re(f.legend, (c, S) => (d(), m("li", {
|
|
2629
2639
|
key: S,
|
|
2630
2640
|
class: "legend-item"
|
|
@@ -2648,16 +2658,16 @@ const ln = { class: "layerboard-layout" }, rn = ["aria-expanded"], sn = {
|
|
|
2648
2658
|
style: H({ backgroundColor: c.color }),
|
|
2649
2659
|
"aria-hidden": "true"
|
|
2650
2660
|
}, null, 4)) : z("", !0),
|
|
2651
|
-
x("span",
|
|
2661
|
+
x("span", Ha, V(c.label), 1)
|
|
2652
2662
|
]))), 128))
|
|
2653
|
-
])) : z("", !0)
|
|
2663
|
+
], 8, Ga)) : z("", !0)
|
|
2654
2664
|
]))), 128)),
|
|
2655
|
-
e.layers.length === 0 ? (d(), m("div",
|
|
2656
|
-
]));
|
|
2665
|
+
e.layers.length === 0 ? (d(), m("div", Ka, " No layers available ")) : z("", !0)
|
|
2666
|
+
], 8, Za));
|
|
2657
2667
|
}
|
|
2658
|
-
}),
|
|
2659
|
-
function
|
|
2660
|
-
const i = C([]), t = C(/* @__PURE__ */ new Set()), o = C({}),
|
|
2668
|
+
}), li = /* @__PURE__ */ Oe(Ja, [["__scopeId", "data-v-ed130a35"]]);
|
|
2669
|
+
function ri(e) {
|
|
2670
|
+
const i = C([]), t = C(/* @__PURE__ */ new Set()), o = C({}), n = C(/* @__PURE__ */ new Set()), l = C({}), u = C(""), b = C(!1), y = C(!1), P = C(null), v = I(() => {
|
|
2661
2671
|
if (!u.value.trim())
|
|
2662
2672
|
return i.value;
|
|
2663
2673
|
const T = u.value.toLowerCase();
|
|
@@ -2671,7 +2681,7 @@ function si(e) {
|
|
|
2671
2681
|
})));
|
|
2672
2682
|
async function r() {
|
|
2673
2683
|
if (!y.value) {
|
|
2674
|
-
b.value = !0,
|
|
2684
|
+
b.value = !0, P.value = null;
|
|
2675
2685
|
try {
|
|
2676
2686
|
let T;
|
|
2677
2687
|
e.mode === "dynamic" || !e.mode ? e.webMapId ? T = await h(e.webMapId) : T = await yt() : T = await yt(), i.value = T;
|
|
@@ -2680,7 +2690,7 @@ function si(e) {
|
|
|
2680
2690
|
A[q.id] = q.opacity ?? 1;
|
|
2681
2691
|
}), o.value = A, y.value = !0;
|
|
2682
2692
|
} catch (T) {
|
|
2683
|
-
|
|
2693
|
+
P.value = T instanceof Error ? T : new Error("Failed to initialize layerboard");
|
|
2684
2694
|
} finally {
|
|
2685
2695
|
b.value = !1;
|
|
2686
2696
|
}
|
|
@@ -2707,8 +2717,8 @@ function si(e) {
|
|
|
2707
2717
|
u.value = T;
|
|
2708
2718
|
}
|
|
2709
2719
|
function c(T, A) {
|
|
2710
|
-
const q = new Set(
|
|
2711
|
-
A ? q.add(T) : q.delete(T),
|
|
2720
|
+
const q = new Set(n.value);
|
|
2721
|
+
A ? q.add(T) : q.delete(T), n.value = q;
|
|
2712
2722
|
}
|
|
2713
2723
|
function S(T, A) {
|
|
2714
2724
|
if (A)
|
|
@@ -2719,19 +2729,19 @@ function si(e) {
|
|
|
2719
2729
|
}
|
|
2720
2730
|
}
|
|
2721
2731
|
function F() {
|
|
2722
|
-
i.value = [], t.value = /* @__PURE__ */ new Set(), o.value = {},
|
|
2732
|
+
i.value = [], t.value = /* @__PURE__ */ new Set(), o.value = {}, n.value = /* @__PURE__ */ new Set(), l.value = {}, u.value = "", b.value = !1, y.value = !1, P.value = null;
|
|
2723
2733
|
}
|
|
2724
2734
|
return {
|
|
2725
2735
|
// State (readonly)
|
|
2726
2736
|
layerConfigs: j(i),
|
|
2727
2737
|
visibleLayers: j(t),
|
|
2728
2738
|
layerOpacities: j(o),
|
|
2729
|
-
loadingLayers: j(
|
|
2739
|
+
loadingLayers: j(n),
|
|
2730
2740
|
layerErrors: j(l),
|
|
2731
2741
|
searchQuery: j(u),
|
|
2732
2742
|
isLoading: j(b),
|
|
2733
2743
|
isInitialized: j(y),
|
|
2734
|
-
error: j(
|
|
2744
|
+
error: j(P),
|
|
2735
2745
|
// Computed
|
|
2736
2746
|
filteredLayerConfigs: v,
|
|
2737
2747
|
layerList: k,
|
|
@@ -2747,12 +2757,12 @@ function si(e) {
|
|
|
2747
2757
|
reset: F
|
|
2748
2758
|
};
|
|
2749
2759
|
}
|
|
2750
|
-
function
|
|
2760
|
+
function si() {
|
|
2751
2761
|
const e = C([]), i = C(/* @__PURE__ */ new Set()), t = C(/* @__PURE__ */ new Set());
|
|
2752
2762
|
function o(l) {
|
|
2753
2763
|
i.value.has(l) ? i.value.delete(l) : i.value.add(l);
|
|
2754
2764
|
}
|
|
2755
|
-
function
|
|
2765
|
+
function n(l) {
|
|
2756
2766
|
e.value = l;
|
|
2757
2767
|
}
|
|
2758
2768
|
return {
|
|
@@ -2760,19 +2770,19 @@ function ci() {
|
|
|
2760
2770
|
visibleLayerIds: I(() => i.value),
|
|
2761
2771
|
loadingLayerIds: I(() => t.value),
|
|
2762
2772
|
toggleLayer: o,
|
|
2763
|
-
setLayers:
|
|
2773
|
+
setLayers: n
|
|
2764
2774
|
};
|
|
2765
2775
|
}
|
|
2766
|
-
function
|
|
2767
|
-
const i = C(null), t = C(!1), o = C(null),
|
|
2776
|
+
function Qa(e) {
|
|
2777
|
+
const i = C(null), t = C(!1), o = C(null), n = C(0);
|
|
2768
2778
|
async function l(y = {}) {
|
|
2769
2779
|
t.value = !0, o.value = null;
|
|
2770
|
-
const
|
|
2780
|
+
const P = e.pageSize || 2e3;
|
|
2771
2781
|
let v = 0, k = [], r = !0;
|
|
2772
2782
|
try {
|
|
2773
2783
|
for (; r; ) {
|
|
2774
2784
|
const w = e.url.replace(/\/$/, ""), g = encodeURIComponent(y.where || e.where || "1=1");
|
|
2775
|
-
let f = `${w}/query?where=${g}&outFields=*&returnGeometry=true&resultRecordCount=${
|
|
2785
|
+
let f = `${w}/query?where=${g}&outFields=*&returnGeometry=true&resultRecordCount=${P}&resultOffset=${v}&f=geojson`;
|
|
2776
2786
|
if (y.bounds) {
|
|
2777
2787
|
const F = JSON.stringify({
|
|
2778
2788
|
xmin: y.bounds.west,
|
|
@@ -2787,13 +2797,13 @@ function Xn(e) {
|
|
|
2787
2797
|
if (!c.ok)
|
|
2788
2798
|
throw new Error(`HTTP ${c.status}: ${c.statusText}`);
|
|
2789
2799
|
const S = await c.json();
|
|
2790
|
-
S.features && S.features.length > 0 ? (k = k.concat(S.features), v += S.features.length, r = S.features.length ===
|
|
2800
|
+
S.features && S.features.length > 0 ? (k = k.concat(S.features), v += S.features.length, r = S.features.length === P) : r = !1;
|
|
2791
2801
|
}
|
|
2792
2802
|
const h = {
|
|
2793
2803
|
type: "FeatureCollection",
|
|
2794
2804
|
features: k
|
|
2795
2805
|
};
|
|
2796
|
-
return i.value = h,
|
|
2806
|
+
return i.value = h, n.value = k.length, h;
|
|
2797
2807
|
} catch (h) {
|
|
2798
2808
|
const w = h instanceof Error ? h : new Error("Failed to fetch features");
|
|
2799
2809
|
throw o.value = w, w;
|
|
@@ -2802,7 +2812,7 @@ function Xn(e) {
|
|
|
2802
2812
|
}
|
|
2803
2813
|
}
|
|
2804
2814
|
function u() {
|
|
2805
|
-
i.value = null,
|
|
2815
|
+
i.value = null, n.value = 0, o.value = null;
|
|
2806
2816
|
}
|
|
2807
2817
|
async function b(y = {}) {
|
|
2808
2818
|
return l(y);
|
|
@@ -2812,7 +2822,7 @@ function Xn(e) {
|
|
|
2812
2822
|
data: j(i),
|
|
2813
2823
|
isLoading: j(t),
|
|
2814
2824
|
error: j(o),
|
|
2815
|
-
totalFeatures: j(
|
|
2825
|
+
totalFeatures: j(n),
|
|
2816
2826
|
// Config
|
|
2817
2827
|
config: e,
|
|
2818
2828
|
// Methods
|
|
@@ -2821,13 +2831,13 @@ function Xn(e) {
|
|
|
2821
2831
|
clear: u
|
|
2822
2832
|
};
|
|
2823
2833
|
}
|
|
2824
|
-
function
|
|
2825
|
-
const o =
|
|
2834
|
+
function ci(e, i, t) {
|
|
2835
|
+
const o = Qa(e);
|
|
2826
2836
|
return Te(
|
|
2827
2837
|
i,
|
|
2828
|
-
async (
|
|
2829
|
-
if (
|
|
2830
|
-
const l = t(
|
|
2838
|
+
async (n) => {
|
|
2839
|
+
if (n) {
|
|
2840
|
+
const l = t(n);
|
|
2831
2841
|
await o.fetch(l);
|
|
2832
2842
|
}
|
|
2833
2843
|
},
|
|
@@ -2835,21 +2845,21 @@ function ui(e, i, t) {
|
|
|
2835
2845
|
), o;
|
|
2836
2846
|
}
|
|
2837
2847
|
export {
|
|
2838
|
-
|
|
2848
|
+
ni as LayerCheckboxSet,
|
|
2839
2849
|
No as LayerPanel,
|
|
2840
|
-
|
|
2841
|
-
|
|
2850
|
+
li as LayerRadioButtonSet,
|
|
2851
|
+
ai as Layerboard,
|
|
2842
2852
|
oo as MapPanel,
|
|
2843
|
-
|
|
2844
|
-
|
|
2853
|
+
ii as TopicAccordion,
|
|
2854
|
+
ti as WEBMAP_ID,
|
|
2845
2855
|
ht as buildWebMapUrl,
|
|
2846
|
-
|
|
2856
|
+
ea as clearCache,
|
|
2847
2857
|
yt as getLayerConfigs,
|
|
2848
|
-
|
|
2858
|
+
oi as getWebMapUrl,
|
|
2849
2859
|
Tt as transformWebMapToLayerConfigs,
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2860
|
+
ia as useApiDataSources,
|
|
2861
|
+
Qa as useDataSource,
|
|
2862
|
+
si as useLayerConfig,
|
|
2863
|
+
ri as useLayerboard,
|
|
2864
|
+
ci as useReactiveDataSource
|
|
2855
2865
|
};
|