@thibezer/ui-components-kit 2.17.2 → 2.17.3

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/camadas.js CHANGED
@@ -1,15 +1,15 @@
1
- var Ia = Object.defineProperty;
2
- var ka = (e, t, a) => t in e ? Ia(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;
3
- var A = (e, t, a) => ka(e, typeof t != "symbol" ? t + "" : t, a);
1
+ var Pa = Object.defineProperty;
2
+ var za = (e, t, a) => t in e ? Pa(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;
3
+ var I = (e, t, a) => za(e, typeof t != "symbol" ? t + "" : t, a);
4
4
  /* empty css */
5
- import { d as xe, S as La } from "./ssr-safe-5cWfJP-s.js";
6
- import { A as Ca, a as Se, e as Sa } from "./degrade-gDa5sW__.js";
7
- import { L as $a } from "./listener-bag-DQgv7OON.js";
8
- import { a as Te } from "./parts-CaoQiCfI.js";
9
- import { a as Fa } from "./ui-seletor-cor-DFIQ1sin.js";
10
- import { f as Ma } from "./alvo-digitavel-CzCvNVQ3.js";
11
- import { UIMapaBase as mr, UISeletorMapaBase as gr } from "./seletor-mapa-base.js";
12
- const y = {
5
+ import { d as Ce, S as Ba } from "./ssr-safe-5cWfJP-s.js";
6
+ import { A as qa, a as qe, e as Da } from "./degrade-gDa5sW__.js";
7
+ import { L as Ta } from "./listener-bag-DQgv7OON.js";
8
+ import { a as _e } from "./parts-CaoQiCfI.js";
9
+ import { a as Oa } from "./ui-seletor-cor-DFIQ1sin.js";
10
+ import { f as Ra } from "./alvo-digitavel-CzCvNVQ3.js";
11
+ import { UIMapaBase as Fr, UISeletorMapaBase as $r } from "./seletor-mapa-base.js";
12
+ const b = {
13
13
  camadas: `<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
14
14
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
15
15
  <polyline points="2 17 12 22 22 17"></polyline>
@@ -107,8 +107,8 @@ const y = {
107
107
  <line x1="9" y1="3" x2="9" y2="21"></line>
108
108
  <line x1="15" y1="3" x2="15" y2="21"></line>
109
109
  </svg>`
110
- }, U = 6378137;
111
- function za(e, t) {
110
+ }, X = 6378137;
111
+ function ja(e, t) {
112
112
  if (!Array.isArray(e) || !Array.isArray(t) || e.length < 2 || t.length < 2 || !Number.isFinite(e[0]) || !Number.isFinite(e[1]) || !Number.isFinite(t[0]) || !Number.isFinite(t[1]))
113
113
  return 0;
114
114
  const a = e[0] * Math.PI / 180, r = e[1] * Math.PI / 180, i = t[0] * Math.PI / 180, o = t[1] * Math.PI / 180, n = i - a, s = o - r, c = Math.min(
@@ -117,65 +117,65 @@ function za(e, t) {
117
117
  0,
118
118
  Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(i) * Math.sin(s / 2) * Math.sin(s / 2)
119
119
  )
120
- ), l = U * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
120
+ ), l = X * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
121
121
  return Number.isFinite(l) ? l : 0;
122
122
  }
123
- function Re(e) {
123
+ function Ye(e) {
124
124
  if (!Array.isArray(e) || e.length < 2) return 0;
125
125
  if (Array.isArray(e[0]) && Array.isArray(e[0][0]))
126
- return e.reduce((a, r) => a + Re(r), 0);
126
+ return e.reduce((a, r) => a + Ye(r), 0);
127
127
  let t = 0;
128
128
  for (let a = 0; a < e.length - 1; a++) {
129
129
  const r = e[a], i = e[a + 1];
130
- Array.isArray(r) && Array.isArray(i) && r.length >= 2 && i.length >= 2 && (t += za([r[0], r[1]], [i[0], i[1]]));
130
+ Array.isArray(r) && Array.isArray(i) && r.length >= 2 && i.length >= 2 && (t += ja([r[0], r[1]], [i[0], i[1]]));
131
131
  }
132
132
  return t;
133
133
  }
134
- function pe(e) {
134
+ function ye(e) {
135
135
  if (!Array.isArray(e)) return 0;
136
136
  const t = [];
137
- for (let d = 0; d < e.length; d++) {
138
- const u = e[d];
139
- Array.isArray(u) && u.length >= 2 && Number.isFinite(u[0]) && Number.isFinite(u[1]) && t.push([u[0], u[1]]);
137
+ for (let p = 0; p < e.length; p++) {
138
+ const d = e[p];
139
+ Array.isArray(d) && d.length >= 2 && Number.isFinite(d[0]) && Number.isFinite(d[1]) && t.push([d[0], d[1]]);
140
140
  }
141
141
  t.length > 3 && t[0][0] === t[t.length - 1][0] && t[0][1] === t[t.length - 1][1] && t.pop();
142
142
  const a = t.length;
143
143
  if (a < 3) return 0;
144
144
  let r = 0;
145
- for (let d = 0; d < a; d++)
146
- r += t[d][0];
145
+ for (let p = 0; p < a; p++)
146
+ r += t[p][0];
147
147
  const i = r / a * Math.PI / 180, o = Math.cos(i), n = Math.PI / 180, s = t[0][0], c = t[0][1];
148
148
  let l = 0;
149
- for (let d = 0; d < a; d++) {
150
- const u = t[d], f = t[(d + 1) % a], m = (u[1] - c) * n * U * o, g = (u[0] - s) * n * U, b = (f[1] - c) * n * U * o, v = (f[0] - s) * n * U;
151
- l += m * v - b * g;
149
+ for (let p = 0; p < a; p++) {
150
+ const d = t[p], f = t[(p + 1) % a], m = (d[1] - c) * n * X * o, h = (d[0] - s) * n * X, v = (f[1] - c) * n * X * o, g = (f[0] - s) * n * X;
151
+ l += m * g - v * h;
152
152
  }
153
- const p = Math.abs(l) / 2;
154
- return Number.isFinite(p) ? p : 0;
153
+ const u = Math.abs(l) / 2;
154
+ return Number.isFinite(u) ? u : 0;
155
155
  }
156
- function Oe(e) {
156
+ function Ue(e) {
157
157
  if (!Array.isArray(e) || e.length === 0) return 0;
158
158
  if (Array.isArray(e[0]) && typeof e[0][0] == "number")
159
- return pe(e);
159
+ return ye(e);
160
160
  if (Array.isArray(e[0]) && Array.isArray(e[0][0])) {
161
161
  if (Array.isArray(e[0][0][0]))
162
- return e.reduce((r, i) => r + Oe(i), 0);
163
- const t = pe(e[0]);
162
+ return e.reduce((r, i) => r + Ue(i), 0);
163
+ const t = ye(e[0]);
164
164
  let a = 0;
165
165
  for (let r = 1; r < e.length; r++)
166
- a += pe(e[r]);
166
+ a += ye(e[r]);
167
167
  return Math.max(0, t - a);
168
168
  }
169
169
  return 0;
170
170
  }
171
- function lr(e) {
171
+ function Er(e) {
172
172
  if (!e || e.length === 0) return "";
173
173
  const t = e.filter(
174
174
  (r) => r.type === "Polygon" || r.type === "MultiPolygon" || r.geometryType === "Polygon"
175
175
  );
176
176
  if (t.length > 0) {
177
177
  const r = t.reduce(
178
- (i, o) => i + (Oe(o.coordinates) || 0),
178
+ (i, o) => i + (Ue(o.coordinates) || 0),
179
179
  0
180
180
  );
181
181
  return r >= 1e4 ? `${(r / 1e4).toLocaleString("pt-BR", {
@@ -188,7 +188,7 @@ function lr(e) {
188
188
  );
189
189
  if (a.length > 0) {
190
190
  const r = a.reduce(
191
- (i, o) => i + (Re(o.coordinates) || 0),
191
+ (i, o) => i + (Ye(o.coordinates) || 0),
192
192
  0
193
193
  );
194
194
  return r >= 1e3 ? `${(r / 1e3).toLocaleString("pt-BR", {
@@ -198,23 +198,23 @@ function lr(e) {
198
198
  }
199
199
  return "";
200
200
  }
201
- function z(e) {
201
+ function M(e) {
202
202
  return e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
203
203
  }
204
- const Ba = /^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;
205
- function G(e, t = "#00E08A") {
204
+ const Na = /^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;
205
+ function K(e, t = "#00E08A") {
206
206
  if (!e || typeof e != "string") return t;
207
207
  const a = e.trim();
208
- return Ba.test(a) ? a : t;
208
+ return Na.test(a) ? a : t;
209
209
  }
210
- function fe(e) {
210
+ function xe(e) {
211
211
  return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
212
212
  }
213
- function qa(e, t, a) {
213
+ function Ha(e, t, a) {
214
214
  const r = t / 100, i = a / 100, o = (c) => (c + e / 30) % 12, n = r * Math.min(i, 1 - i), s = (c) => i - n * Math.max(-1, Math.min(o(c) - 3, Math.min(9 - o(c), 1)));
215
215
  return [s(0) * 255, s(8) * 255, s(4) * 255];
216
216
  }
217
- function Pa(e, t = "#000000") {
217
+ function Ga(e, t = "#000000") {
218
218
  if (!e || typeof e != "string") return t;
219
219
  const a = e.trim().toLowerCase(), r = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
220
220
  if (r) {
@@ -225,19 +225,19 @@ function Pa(e, t = "#000000") {
225
225
  if (i) {
226
226
  const o = i[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
227
227
  if (o.length >= 3 && o.slice(0, 3).every((n) => !isNaN(n))) {
228
- const [n, s, c] = o, [l, p, d] = i[1] === "rgb" ? [n, s, c] : qa(n, s, c);
229
- return `#${fe(l)}${fe(p)}${fe(d)}`;
228
+ const [n, s, c] = o, [l, u, p] = i[1] === "rgb" ? [n, s, c] : Ha(n, s, c);
229
+ return `#${xe(l)}${xe(u)}${xe(p)}`;
230
230
  }
231
231
  }
232
232
  return t;
233
233
  }
234
- function P(e, t, a) {
234
+ function D(e, t, a) {
235
235
  const r = e.querySelectorAll(`[${t}]`);
236
236
  for (let i = 0; i < r.length; i++)
237
237
  if (r[i].getAttribute(t) === a) return r[i];
238
238
  return null;
239
239
  }
240
- function je(e, t = 80) {
240
+ function Ke(e, t = 80) {
241
241
  let a = null;
242
242
  return (...r) => {
243
243
  a && clearTimeout(a), a = setTimeout(() => {
@@ -245,10 +245,10 @@ function je(e, t = 80) {
245
245
  }, t);
246
246
  };
247
247
  }
248
- function D(e, t) {
248
+ function T(e, t) {
249
249
  e.setAttribute("title", t), e.setAttribute("aria-label", t);
250
250
  }
251
- const Ne = [
251
+ const Qe = [
252
252
  {
253
253
  id: "none",
254
254
  nome: "Sem Mapa",
@@ -291,16 +291,16 @@ const Ne = [
291
291
  thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
292
292
  }
293
293
  ];
294
- function He(e, t) {
294
+ function Xe(e, t) {
295
295
  const a = Array.isArray(e) ? e.find((r) => r.id === t) : void 0;
296
296
  return a && typeof a.nome == "string" ? a.nome : "";
297
297
  }
298
- function Da(e = Ne, t = "satelite", a = !1) {
298
+ function Va(e = Qe, t = "satelite", a = !1) {
299
299
  if (!e || e.length === 0) return "";
300
300
  const r = e.map((i) => {
301
- const o = t === i.id, n = z(i.id), s = z(i.nome), c = z(i.descricao || i.nome);
301
+ const o = t === i.id, n = M(i.id), s = M(i.nome), c = M(i.descricao || i.nome);
302
302
  let l = "";
303
- return i.thumbnailUrl ? l = `<img class="ui-basemap-preview" src="${z(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : l = `<div class="ui-basemap-preview-none">${y.gradeCad}</div>`, `
303
+ return i.thumbnailUrl ? l = `<img class="ui-basemap-preview" src="${M(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : l = `<div class="ui-basemap-preview-none">${b.gradeCad}</div>`, `
304
304
  <div class="ui-basemap-card ${o ? "active" : ""}" data-basemap-id="${n}" role="button" tabindex="0" aria-pressed="${o}" title="${c}">
305
305
  ${l}
306
306
  <span>${s}</span>
@@ -311,8 +311,8 @@ function Da(e = Ne, t = "satelite", a = !1) {
311
311
  <div class="ui-basemap-section ${a ? "recolhido" : ""}" part="mapas-base">
312
312
  <button type="button" class="ui-basemap-toggle" data-basemap-toggle="alternar" aria-expanded="${!a}" aria-controls="ui-basemap-grid" title="${a ? "Mostrar mapas base" : "Recolher mapas base"}">
313
313
  <span class="ui-basemap-title">Mapa Base</span>
314
- <span class="ui-basemap-atual" data-basemap-atual>${z(He(e, t))}</span>
315
- <span class="ui-chevron-icon ${a ? "" : "open"}">${y.chevronDir}</span>
314
+ <span class="ui-basemap-atual" data-basemap-atual>${M(Xe(e, t))}</span>
315
+ <span class="ui-chevron-icon ${a ? "" : "open"}">${b.chevronDir}</span>
316
316
  </button>
317
317
  ${a ? "" : `<div class="ui-basemap-grid" id="ui-basemap-grid">
318
318
  ${r}
@@ -320,50 +320,50 @@ function Da(e = Ne, t = "satelite", a = !1) {
320
320
  </div>
321
321
  `;
322
322
  }
323
- function se(e) {
323
+ function pe(e) {
324
324
  if (!Array.isArray(e) || e.length === 0) return [];
325
325
  const t = e.filter((l) => !!(l && typeof l == "object" && l.id)), a = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
326
- t.forEach((l, p) => {
327
- a.set(l.id, l), r.set(l.id, p);
326
+ t.forEach((l, u) => {
327
+ a.set(l.id, l), r.set(l.id, u);
328
328
  });
329
329
  const i = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
330
330
  for (const l of t) {
331
331
  if (o.has(l.id)) continue;
332
- const p = [], d = /* @__PURE__ */ new Map();
333
- let u = l;
334
- for (; u && u.parentId && a.has(u.parentId) && u.parentId !== u.id; ) {
335
- if (d.has(u.id)) {
336
- const f = d.get(u.id), m = p.slice(f);
337
- let g = m[0];
338
- for (const b of m)
339
- (r.get(b) ?? 1 / 0) < (r.get(g) ?? 1 / 0) && (g = b);
340
- i.add(g);
332
+ const u = [], p = /* @__PURE__ */ new Map();
333
+ let d = l;
334
+ for (; d && d.parentId && a.has(d.parentId) && d.parentId !== d.id; ) {
335
+ if (p.has(d.id)) {
336
+ const f = p.get(d.id), m = u.slice(f);
337
+ let h = m[0];
338
+ for (const v of m)
339
+ (r.get(v) ?? 1 / 0) < (r.get(h) ?? 1 / 0) && (h = v);
340
+ i.add(h);
341
341
  break;
342
342
  }
343
- if (o.has(u.id)) break;
344
- d.set(u.id, p.length), p.push(u.id), u = a.get(u.parentId);
343
+ if (o.has(d.id)) break;
344
+ p.set(d.id, u.length), u.push(d.id), d = a.get(d.parentId);
345
345
  }
346
- for (const f of p) o.add(f);
346
+ for (const f of u) o.add(f);
347
347
  }
348
348
  const n = /* @__PURE__ */ new Map(), s = [];
349
349
  t.forEach((l) => {
350
350
  !i.has(l.id) && !!(l.parentId && a.has(l.parentId) && l.parentId !== l.id) && l.parentId ? (n.has(l.parentId) || n.set(l.parentId, []), n.get(l.parentId).push(l)) : s.push(l);
351
351
  });
352
- function c(l, p, d) {
353
- const u = new Set(d);
354
- u.add(l.id);
352
+ function c(l, u, p) {
353
+ const d = new Set(p);
354
+ d.add(l.id);
355
355
  const m = (n.get(l.id) || (Array.isArray(l.children) ? l.children : [])).filter(
356
- (g) => !!(g && typeof g == "object" && g.id && !u.has(g.id))
356
+ (h) => !!(h && typeof h == "object" && h.id && !d.has(h.id))
357
357
  );
358
358
  return {
359
359
  camada: l,
360
- depth: p,
361
- subcamadas: m.map((g) => c(g, p + 1, u))
360
+ depth: u,
361
+ subcamadas: m.map((h) => c(h, u + 1, d))
362
362
  };
363
363
  }
364
364
  return s.map((l) => c(l, 0, /* @__PURE__ */ new Set()));
365
365
  }
366
- function Ta(e, t) {
366
+ function _a(e, t) {
367
367
  const a = /* @__PURE__ */ new Set();
368
368
  if (!t || !Array.isArray(e)) return a;
369
369
  const r = /* @__PURE__ */ new Map();
@@ -381,12 +381,12 @@ function Ta(e, t) {
381
381
  }
382
382
  return a;
383
383
  }
384
- function W(e, t, a) {
384
+ function ae(e, t, a) {
385
385
  if (!a || !Array.isArray(t) || t.length === 0) return [];
386
- const r = Ta(e, a);
386
+ const r = _a(e, a);
387
387
  return t.filter((i) => !!(i && i.layerId && r.has(i.layerId)));
388
388
  }
389
- function le(e) {
389
+ function fe(e) {
390
390
  const t = /* @__PURE__ */ new Map();
391
391
  e.forEach((r) => r && r.id && t.set(r.id, r));
392
392
  const a = /* @__PURE__ */ new Map();
@@ -400,8 +400,8 @@ function le(e) {
400
400
  }
401
401
  return a;
402
402
  }
403
- function ie(e) {
404
- const t = le(e);
403
+ function ce(e) {
404
+ const t = fe(e);
405
405
  return new Set(
406
406
  e.filter((a) => {
407
407
  var r;
@@ -409,24 +409,24 @@ function ie(e) {
409
409
  }).map((a) => a.id)
410
410
  );
411
411
  }
412
- function Ge(e) {
413
- const t = se(e), a = ie(e), r = (i) => {
414
- const o = i.camada, n = i.depth, s = i.subcamadas, c = n > 0 ? "&nbsp;&nbsp;".repeat(n) + "↳ " : s.length > 0 || o.isGroup ? "📁 " : "", l = a.has(o.id), p = `<option value="${z(o.id)}"${l ? " disabled" : ""}>${c}${z(o.name)}${l ? " 🔒" : ""}</option>`, d = s.map((u) => r(u)).join("");
415
- return p + d;
412
+ function We(e) {
413
+ const t = pe(e), a = ce(e), r = (i) => {
414
+ const o = i.camada, n = i.depth, s = i.subcamadas, c = n > 0 ? "&nbsp;&nbsp;".repeat(n) + "↳ " : s.length > 0 || o.isGroup ? "📁 " : "", l = a.has(o.id), u = `<option value="${M(o.id)}"${l ? " disabled" : ""}>${c}${M(o.name)}${l ? " 🔒" : ""}</option>`, p = s.map((d) => r(d)).join("");
415
+ return u + p;
416
416
  };
417
417
  return t.map((i) => r(i)).join("");
418
418
  }
419
- function _e(e, t) {
419
+ function Je(e, t) {
420
420
  return t > 0 ? {
421
- icone: y.alvoEnquadrar,
421
+ icone: b.alvoEnquadrar,
422
422
  texto: `${t} ${t > 1 ? "selecionados" : "selecionado"}`
423
423
  } : {
424
- icone: y.camadas,
424
+ icone: b.camadas,
425
425
  texto: `${e} ${e > 1 ? "camadas" : "camada"}`
426
426
  };
427
427
  }
428
- function Ra(e, t, a) {
429
- const r = t.filter((c) => a.has(c.id)), i = r.length > 0, o = i ? r.length : e.length, n = _e(e.length, r.length), s = Ge(e);
428
+ function Ya(e, t, a) {
429
+ const r = t.filter((c) => a.has(c.id)), i = r.length > 0, o = i ? r.length : e.length, n = Je(e.length, r.length), s = We(e);
430
430
  return `
431
431
  <div class="ui-tree-footer ${i ? "tem-selecao" : "sem-selecao"}" part="rodape">
432
432
  <div class="ui-footer-left">
@@ -437,11 +437,11 @@ function Ra(e, t, a) {
437
437
  <!-- Criação de camadas/grupos quando não há nada selecionado -->
438
438
  <div class="ui-footer-actions-gerais" style="display: ${i ? "none" : "flex"};">
439
439
  <button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
440
- ${y.moverPasta}
440
+ ${b.moverPasta}
441
441
  <span>Grupo</span>
442
442
  </button>
443
443
  <button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
444
- ${y.mais}
444
+ ${b.mais}
445
445
  <span>Camada</span>
446
446
  </button>
447
447
  </div>
@@ -456,103 +456,103 @@ function Ra(e, t, a) {
456
456
  </div>
457
457
 
458
458
  <button class="ui-footer-btn btn-danger-footer ${i ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${i ? "" : "disabled"}>
459
- ${y.lixeira}
459
+ ${b.lixeira}
460
460
  </button>
461
461
  </div>
462
462
  </div>
463
463
  `;
464
464
  }
465
- const me = 64;
466
- function $e(e) {
465
+ const we = 64;
466
+ function De(e) {
467
467
  return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
468
468
  }
469
- function Ue(e) {
470
- return !Array.isArray(e) || e.length === 0 ? [] : $e(e[0]) ? [e.filter($e)] : e.flatMap(Ue);
469
+ function Ze(e) {
470
+ return !Array.isArray(e) || e.length === 0 ? [] : De(e[0]) ? [e.filter(De)] : e.flatMap(Ze);
471
471
  }
472
- function Fe(e) {
473
- if (e.length <= me) return e;
474
- const t = e.length / me, a = [];
475
- for (let r = 0; r < me; r++) a.push(e[Math.floor(r * t)]);
472
+ function Te(e) {
473
+ if (e.length <= we) return e;
474
+ const t = e.length / we, a = [];
475
+ for (let r = 0; r < we; r++) a.push(e[Math.floor(r * t)]);
476
476
  return a.push(e[e.length - 1]), a;
477
477
  }
478
- function Oa(e, t, a) {
479
- const r = Ue(t).filter(($) => $.length > 0);
478
+ function Ua(e, t, a) {
479
+ const r = Ze(t).filter((S) => S.length > 0);
480
480
  if (r.length === 0) return "";
481
481
  let i = 1 / 0, o = -1 / 0, n = 1 / 0, s = -1 / 0;
482
- for (const $ of r)
483
- for (const [h, F] of $)
484
- F < i && (i = F), F > o && (o = F), -h < n && (n = -h), -h > s && (s = -h);
485
- const c = 16, l = 2, p = c - l * 2, d = o - i, u = s - n, f = Math.max(d, u), m = f > 0 ? p / f : 0, g = l + (p - d * m) / 2, b = l + (p - u * m) / 2, v = ($) => Math.round($ * 100) / 100, E = ([$, h]) => `${v(g + (h - i) * m)},${v(b + (-$ - n) * m)}`, k = e === "polygon" || e === "multipolygon", C = e === "linestring" || e === "multilinestring", w = ($) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${$}</svg>`;
482
+ for (const S of r)
483
+ for (const [F, B] of S)
484
+ B < i && (i = B), B > o && (o = B), -F < n && (n = -F), -F > s && (s = -F);
485
+ const c = 16, l = 2, u = c - l * 2, p = o - i, d = s - n, f = Math.max(p, d), m = f > 0 ? u / f : 0, h = l + (u - p * m) / 2, v = l + (u - d * m) / 2, g = (S) => Math.round(S * 100) / 100, w = ([S, F]) => `${g(h + (F - i) * m)},${g(v + (-S - n) * m)}`, k = e === "polygon" || e === "multipolygon", L = e === "linestring" || e === "multilinestring", A = (S) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${S}</svg>`;
486
486
  if (k) {
487
- const $ = r.filter((h) => h.length >= 3).map((h) => `M${Fe(h).map(E).join("L")}Z`).join("");
488
- return $ ? w(
489
- `<path d="${$}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
487
+ const S = r.filter((F) => F.length >= 3).map((F) => `M${Te(F).map(w).join("L")}Z`).join("");
488
+ return S ? A(
489
+ `<path d="${S}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
490
490
  ) : "";
491
491
  }
492
- if (C) {
493
- const $ = r.filter((h) => h.length >= 2).map((h) => `M${Fe(h).map(E).join("L")}`).join("");
494
- return $ ? w(
495
- `<path d="${$}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
492
+ if (L) {
493
+ const S = r.filter((F) => F.length >= 2).map((F) => `M${Te(F).map(w).join("L")}`).join("");
494
+ return S ? A(
495
+ `<path d="${S}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
496
496
  ) : "";
497
497
  }
498
498
  return "";
499
499
  }
500
- function Ve(e, t, a) {
501
- const r = G(t, "#00E08A"), i = (e || "").toLowerCase(), o = a !== void 0 ? Oa(i, a, r) : "";
500
+ function ea(e, t, a) {
501
+ const r = K(t, "#00E08A"), i = (e || "").toLowerCase(), o = a !== void 0 ? Ua(i, a, r) : "";
502
502
  return o || (i === "polygon" || i === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${r}" fill-opacity="0.45" stroke="${r}" stroke-width="1.5"/></svg>` : i === "linestring" || i === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${r}" stroke-width="2"/></svg>` : i === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${r}" text-anchor="middle" font-family="sans-serif">T</text></svg>` : `<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${r}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
503
503
  }
504
- function Ye(e, t, a) {
504
+ function aa(e, t, a) {
505
505
  return {
506
- camadaIdSeguro: z(e.id),
507
- corCamada: G(e.color, "#00E08A"),
506
+ camadaIdSeguro: M(e.id),
507
+ corCamada: K(e.color, "#00E08A"),
508
508
  profundidade: t,
509
509
  esmaecida: e.visible === !1 || (a == null ? void 0 : a.ocultaPorAncestral) === !0,
510
510
  travadaPelaCamada: e.locked === !0 || (a == null ? void 0 : a.travadaPorAncestral) === !0
511
511
  };
512
512
  }
513
- const ge = (e, t, a) => `${e} ${e === 1 ? t : a}`;
514
- function Ke(e, t, a) {
515
- return a === 0 ? ge(e, "feição", "feições") : `${ge(e, "feição", "feições")} no grupo (${t} nesta camada) · ${ge(a, "subcamada", "subcamadas")}`;
513
+ const Ae = (e, t, a) => `${e} ${e === 1 ? t : a}`;
514
+ function ta(e, t, a) {
515
+ return a === 0 ? Ae(e, "feição", "feições") : `${Ae(e, "feição", "feições")} no grupo (${t} nesta camada) · ${Ae(a, "subcamada", "subcamadas")}`;
516
516
  }
517
- function Qe(e, t, a, r) {
518
- return e === 0 && r ? "" : `<span class="ui-count-chip" title="${Ke(e, t, a)}">${e}</span>`;
517
+ function ra(e, t, a, r) {
518
+ return e === 0 && r ? "" : `<span class="ui-count-chip" title="${ta(e, t, a)}">${e}</span>`;
519
519
  }
520
- function Xe(e, t) {
520
+ function ia(e, t) {
521
521
  const a = t - e;
522
522
  return {
523
523
  resumo: `Exibindo ${e} de ${t} feições. Use a busca acima para filtrar.`,
524
524
  botao: `Mostrar mais (+${Math.min(80, a)})`
525
525
  };
526
526
  }
527
- function We(e, t, a) {
528
- const r = Xe(t, a);
527
+ function oa(e, t, a) {
528
+ const r = ia(t, a);
529
529
  return `<div class="ui-truncate-notice" role="note">
530
530
  <span>${r.resumo}</span>
531
531
  <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${e}">${r.botao}</button>
532
532
  </div>`;
533
533
  }
534
- function Je(e) {
534
+ function na(e) {
535
535
  return `<div class="ui-empty-row"><span>${e ? "Grupo vazio (adicione subcamadas ou feições)" : "Camada vazia"}</span></div>`;
536
536
  }
537
- const ja = ["name", "color", "visible", "locked", "status", "type", "geometryType", "coordinates", "layerId"];
538
- function Na(e, t) {
539
- return ja.every((a) => e[a] === t[a]);
537
+ const Ka = ["name", "color", "visible", "locked", "status", "type", "geometryType", "coordinates", "layerId"];
538
+ function Qa(e, t) {
539
+ return Ka.every((a) => e[a] === t[a]);
540
540
  }
541
- function Ze(e, t, a, r) {
542
- const { camadaIdSeguro: i, corCamada: o, profundidade: n } = t, s = z(e.id), c = z(e.name || "Feição"), l = G(e.color, o), p = e.visible !== !1, d = t.travadaPelaCamada, u = e.locked === !0 || d, f = d ? "Bloqueada pela camada" : u ? "Desbloquear Feição" : "Bloquear Feição", m = e.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
541
+ function sa(e, t, a, r) {
542
+ const { camadaIdSeguro: i, corCamada: o, profundidade: n } = t, s = M(e.id), c = M(e.name || "Feição"), l = K(e.color, o), u = e.visible !== !1, p = t.travadaPelaCamada, d = e.locked === !0 || p, f = p ? "Bloqueada pela camada" : d ? "Desbloquear Feição" : "Bloquear Feição", m = e.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
543
543
  return `
544
- <div class="ui-feat-row ${a ? "selected-row" : ""} ${p ? "" : "hidden-row"} ${t.esmaecida ? "herdado-oculto" : ""}" data-feat-row="${s}" data-feat-select="${s}" data-feat-layer="${i}" role="treeitem" aria-level="${n + 2}" aria-selected="${a}" tabindex="-1" draggable="true" part="${a ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${n + 1};" title="Clique para selecionar | Arraste para reordenar">
545
- <div class="ui-col ui-col-eye" data-feat-eye="${s}" role="button" tabindex="0" aria-label="${p ? "Ocultar Feição" : "Exibir Feição"}" title="${p ? "Ocultar Feição" : "Exibir Feição"}">
546
- ${p ? y.olhoAberto : y.olhoFechado}
544
+ <div class="ui-feat-row ${a ? "selected-row" : ""} ${u ? "" : "hidden-row"} ${t.esmaecida ? "herdado-oculto" : ""}" data-feat-row="${s}" data-feat-select="${s}" data-feat-layer="${i}" role="treeitem" aria-level="${n + 2}" aria-selected="${a}" tabindex="-1" draggable="true" part="${a ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${n + 1};" title="Clique para selecionar | Arraste para reordenar">
545
+ <div class="ui-col ui-col-eye" data-feat-eye="${s}" role="button" tabindex="0" aria-label="${u ? "Ocultar Feição" : "Exibir Feição"}" title="${u ? "Ocultar Feição" : "Exibir Feição"}">
546
+ ${u ? b.olhoAberto : b.olhoFechado}
547
547
  </div>
548
548
 
549
- <div class="ui-col ui-col-lock ${u ? "" : "ui-lock-open"}" data-feat-lock="${s}" ${d ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${f}" title="${f}">
550
- ${u ? y.cadeadoTrancado : y.cadeadoAberto}
549
+ <div class="ui-col ui-col-lock ${d ? "" : "ui-lock-open"}" data-feat-lock="${s}" ${p ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${f}" title="${f}">
550
+ ${d ? b.cadeadoTrancado : b.cadeadoAberto}
551
551
  </div>
552
552
 
553
553
  <div class="ui-col ui-col-colorbar" style="background: ${o};"></div>
554
554
  <div class="ui-col ui-col-thumb">
555
- <div class="ui-thumb-box">${Ve(e.type || e.geometryType, l, e.coordinates)}</div>
555
+ <div class="ui-thumb-box">${ea(e.type || e.geometryType, l, e.coordinates)}</div>
556
556
  </div>
557
557
 
558
558
  <div class="ui-col ui-col-name" data-feat-name-trigger="${s}" title="Duplo clique para renomear">
@@ -560,7 +560,7 @@ function Ze(e, t, a, r) {
560
560
  </div>
561
561
 
562
562
  <div class="ui-col ui-col-actions">
563
- <button class="ui-micro-btn" data-feat-fit="${s}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${y.alvoEnquadrar}</button>
563
+ <button class="ui-micro-btn" data-feat-fit="${s}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${b.alvoEnquadrar}</button>
564
564
  </div>
565
565
 
566
566
  <div class="ui-col ui-col-target" data-feat-target="${s}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
@@ -569,15 +569,15 @@ function Ze(e, t, a, r) {
569
569
  </div>
570
570
  `;
571
571
  }
572
- const we = 80;
573
- function V(e, t) {
572
+ const Se = 80;
573
+ function W(e, t) {
574
574
  const a = (t || "").trim().toLowerCase();
575
575
  return a ? e.filter(
576
576
  (r) => (r.name || "").toLowerCase().includes(a) || (r.category || "").toLowerCase().includes(a) || (r.type || "").toLowerCase().includes(a)
577
577
  ) : e;
578
578
  }
579
- function ea(e, t, a) {
580
- var u, f;
579
+ function la(e, t, a) {
580
+ var d, f;
581
581
  const r = (a || "").trim().toLowerCase();
582
582
  if (!r) return null;
583
583
  const i = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
@@ -585,73 +585,73 @@ function ea(e, t, a) {
585
585
  i.set(m.id, m), m.parentId && m.parentId !== m.id && (o.has(m.parentId) || o.set(m.parentId, []), o.get(m.parentId).push(m.id));
586
586
  const n = /* @__PURE__ */ new Map();
587
587
  for (const m of t) {
588
- const g = m.layerId || "";
589
- n.has(g) || n.set(g, []), n.get(g).push(m);
588
+ const h = m.layerId || "";
589
+ n.has(h) || n.set(h, []), n.get(h).push(m);
590
590
  }
591
591
  const s = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set();
592
592
  for (const m of e)
593
- (typeof m.name == "string" ? m.name.toLowerCase() : "").includes(r) ? (s.add(m.id), c.add(m.id)) : V(n.get(m.id) || [], r).length > 0 && c.add(m.id);
593
+ (typeof m.name == "string" ? m.name.toLowerCase() : "").includes(r) ? (s.add(m.id), c.add(m.id)) : W(n.get(m.id) || [], r).length > 0 && c.add(m.id);
594
594
  const l = new Set(c);
595
595
  for (const m of c) {
596
- const g = /* @__PURE__ */ new Set([m]);
597
- let b = (u = i.get(m)) == null ? void 0 : u.parentId;
598
- for (; b && i.has(b) && !g.has(b); )
599
- g.add(b), l.add(b), b = (f = i.get(b)) == null ? void 0 : f.parentId;
600
- }
601
- const p = [...s];
602
- for (; p.length > 0; ) {
603
- const m = p.pop();
604
- for (const g of o.get(m) || [])
605
- l.has(g) || (l.add(g), p.push(g));
606
- }
607
- const d = /* @__PURE__ */ new Map();
596
+ const h = /* @__PURE__ */ new Set([m]);
597
+ let v = (d = i.get(m)) == null ? void 0 : d.parentId;
598
+ for (; v && i.has(v) && !h.has(v); )
599
+ h.add(v), l.add(v), v = (f = i.get(v)) == null ? void 0 : f.parentId;
600
+ }
601
+ const u = [...s];
602
+ for (; u.length > 0; ) {
603
+ const m = u.pop();
604
+ for (const h of o.get(m) || [])
605
+ l.has(h) || (l.add(h), u.push(h));
606
+ }
607
+ const p = /* @__PURE__ */ new Map();
608
608
  for (const m of l) {
609
- const g = n.get(m) || [];
610
- d.set(m, s.has(m) ? g : V(g, r));
611
- }
612
- return { camadasVisiveis: l, feicoesPorCamada: d };
613
- }
614
- function aa(e, t, a, r = "", i = we, o) {
615
- const n = ea(e, t, r), s = [], c = /* @__PURE__ */ new Map();
616
- for (let d = 0; d < t.length; d++) {
617
- const u = t[d];
618
- if (!u || !u.id) continue;
619
- const f = u.layerId || "";
620
- c.has(f) || c.set(f, []), c.get(f).push(u);
621
- }
622
- const l = se(e);
623
- function p(d) {
624
- const u = d.camada;
625
- if (n && !n.camadasVisiveis.has(u.id) || !(n ? !0 : a.has(u.id))) return;
626
- for (const v of d.subcamadas)
627
- p(v);
628
- const m = n ? n.feicoesPorCamada.get(u.id) || [] : c.get(u.id) || [], g = (o == null ? void 0 : o.get(u.id)) ?? i, b = m.slice(0, g);
629
- for (let v = 0; v < b.length; v++)
630
- s.push(b[v].id);
631
- }
632
- for (const d of l)
633
- p(d);
609
+ const h = n.get(m) || [];
610
+ p.set(m, s.has(m) ? h : W(h, r));
611
+ }
612
+ return { camadasVisiveis: l, feicoesPorCamada: p };
613
+ }
614
+ function ca(e, t, a, r = "", i = Se, o) {
615
+ const n = la(e, t, r), s = [], c = /* @__PURE__ */ new Map();
616
+ for (let p = 0; p < t.length; p++) {
617
+ const d = t[p];
618
+ if (!d || !d.id) continue;
619
+ const f = d.layerId || "";
620
+ c.has(f) || c.set(f, []), c.get(f).push(d);
621
+ }
622
+ const l = pe(e);
623
+ function u(p) {
624
+ const d = p.camada;
625
+ if (n && !n.camadasVisiveis.has(d.id) || !(n ? !0 : a.has(d.id))) return;
626
+ for (const g of p.subcamadas)
627
+ u(g);
628
+ const m = n ? n.feicoesPorCamada.get(d.id) || [] : c.get(d.id) || [], h = (o == null ? void 0 : o.get(d.id)) ?? i, v = m.slice(0, h);
629
+ for (let g = 0; g < v.length; g++)
630
+ s.push(v[g].id);
631
+ }
632
+ for (const p of l)
633
+ u(p);
634
634
  return s;
635
635
  }
636
- function Ha(e, t, a, r, i, o) {
636
+ function Xa(e, t, a, r, i, o) {
637
637
  if (!e.includes(r)) return null;
638
638
  const n = new Set(t);
639
639
  let s = a;
640
640
  if (o && a && e.includes(a)) {
641
- const c = e.indexOf(a), l = e.indexOf(r), p = Math.min(c, l), d = Math.max(c, l);
641
+ const c = e.indexOf(a), l = e.indexOf(r), u = Math.min(c, l), p = Math.max(c, l);
642
642
  i || n.clear();
643
- for (let u = p; u <= d; u++)
644
- n.add(e[u]);
643
+ for (let d = u; d <= p; d++)
644
+ n.add(e[d]);
645
645
  } else i ? (n.has(r) ? n.delete(r) : n.add(r), s = r) : (n.clear(), n.add(r), s = r);
646
646
  return { selecionados: n, ultimoClicadoId: s };
647
647
  }
648
- function Ae(e, t) {
648
+ function Fe(e, t) {
649
649
  if (e.size === 0) return;
650
650
  const a = new Set(t.map((r) => r.id));
651
651
  for (const r of e)
652
652
  a.has(r) || e.delete(r);
653
653
  }
654
- function Y(e, t, a) {
654
+ function N(e, t, a) {
655
655
  const r = /* @__PURE__ */ new Set();
656
656
  let i = e.find((o) => o.id === t);
657
657
  for (; i && i.parentId; ) {
@@ -660,40 +660,172 @@ function Y(e, t, a) {
660
660
  }
661
661
  return !1;
662
662
  }
663
- function Me(e) {
663
+ function Ee(e) {
664
664
  return Number.isFinite(e) ? e < 0.25 ? "acima" : e > 0.75 ? "abaixo" : "dentro" : "dentro";
665
665
  }
666
- function ze(e, t, a, r) {
666
+ function Oe(e, t, a, r) {
667
667
  if (!t || !a || t === a) return null;
668
668
  const i = e.find((l) => l.id === t), o = e.find((l) => l.id === a);
669
669
  if (!i || !o) return null;
670
670
  const n = i.parentId !== void 0 ? i.parentId : null;
671
671
  if (r === "dentro")
672
- return Y(e, o.id, i.id) ? null : (i.parentId = o.id, { tipo: "hierarquia", camada: i, novoParentId: o.id, parentAnteriorId: n });
673
- if (Y(e, o.id, i.id)) return null;
672
+ return N(e, o.id, i.id) ? null : (i.parentId = o.id, { tipo: "hierarquia", camada: i, novoParentId: o.id, parentAnteriorId: n });
673
+ if (N(e, o.id, i.id)) return null;
674
674
  const s = e.findIndex((l) => l.id === t);
675
675
  e.splice(s, 1);
676
676
  const c = e.findIndex((l) => l.id === a);
677
677
  return c === -1 ? e.push(i) : e.splice(r === "acima" ? c : c + 1, 0, i), i.parentId = o.parentId ?? null, { tipo: "ordem", camada: i, parentAnteriorId: n, novoParentId: i.parentId };
678
678
  }
679
- function Ga(e, t, a, r) {
679
+ function Wa(e, t, a, r) {
680
680
  const i = e.find((s) => s.id === a), o = t.find((s) => s.id === r);
681
681
  if (!i || !o || i.layerId === r) return null;
682
682
  const n = i.layerId;
683
683
  return i.layerId = r, { feicao: i, camadaOrigemId: n, camadaDestinoId: r, mudouDeCamada: !0 };
684
684
  }
685
- function _a(e, t, a, r) {
685
+ function Ja(e, t, a, r) {
686
686
  if (!t || !a || t === a) return null;
687
- const i = e.findIndex((d) => d.id === t);
687
+ const i = e.findIndex((p) => p.id === t);
688
688
  if (i === -1) return null;
689
- const o = e.find((d) => d.id === a);
689
+ const o = e.find((p) => p.id === a);
690
690
  if (!o) return null;
691
691
  const [n] = e.splice(i, 1), s = n.layerId, c = o.layerId, l = s !== c;
692
692
  l && (n.layerId = c);
693
- const p = e.findIndex((d) => d.id === a);
694
- return p === -1 ? e.push(n) : e.splice(r ? p : p + 1, 0, n), { feicao: n, camadaOrigemId: s, camadaDestinoId: c, mudouDeCamada: l };
693
+ const u = e.findIndex((p) => p.id === a);
694
+ return u === -1 ? e.push(n) : e.splice(r ? u : u + 1, 0, n), { feicao: n, camadaOrigemId: s, camadaDestinoId: c, mudouDeCamada: l };
695
+ }
696
+ function R(e) {
697
+ return `L:${e}`;
698
+ }
699
+ function O(e) {
700
+ return `F:${e}`;
701
+ }
702
+ function Za(e, t, a) {
703
+ if (!a || a.length === 0)
704
+ return [
705
+ ...e.map((s) => ({ tipo: "layer", nodo: s })),
706
+ ...t.map((s) => ({ tipo: "feature", feicao: s }))
707
+ ];
708
+ const r = new Map(e.map((s) => [s.camada.id, s])), i = new Map(t.map((s) => [s.id, s])), o = /* @__PURE__ */ new Set(), n = [];
709
+ for (const s of a)
710
+ if (!o.has(s)) {
711
+ if (s.startsWith("L:")) {
712
+ const c = s.slice(2), l = r.get(c);
713
+ l && (o.add(s), n.push({ tipo: "layer", nodo: l }));
714
+ } else if (s.startsWith("F:")) {
715
+ const c = s.slice(2), l = i.get(c);
716
+ l && (o.add(s), n.push({ tipo: "feature", feicao: l }));
717
+ }
718
+ }
719
+ for (const s of e) {
720
+ const c = R(s.camada.id);
721
+ o.has(c) || (o.add(c), n.push({ tipo: "layer", nodo: s }));
722
+ }
723
+ for (const s of t) {
724
+ const c = O(s.id);
725
+ o.has(c) || (o.add(c), n.push({ tipo: "feature", feicao: s }));
726
+ }
727
+ return n;
728
+ }
729
+ function me(e, t, a, r) {
730
+ const i = a.filter((u) => u.parentId === t).map((u) => u.id), o = r.filter((u) => u.layerId === t).map((u) => u.id), n = /* @__PURE__ */ new Set([
731
+ ...i.map(R),
732
+ ...o.map(O)
733
+ ]), s = e.get(t), c = [], l = /* @__PURE__ */ new Set();
734
+ if (s)
735
+ for (const u of s)
736
+ n.has(u) && !l.has(u) && (l.add(u), c.push(u));
737
+ for (const u of i) {
738
+ const p = R(u);
739
+ l.has(p) || (l.add(p), c.push(p));
740
+ }
741
+ for (const u of o) {
742
+ const p = O(u);
743
+ l.has(p) || (l.add(p), c.push(p));
744
+ }
745
+ return c;
746
+ }
747
+ function ge(e, t, a, r) {
748
+ const i = e.filter((n) => n !== t), o = i.indexOf(a);
749
+ o === -1 ? i.push(t) : i.splice(r ? o : o + 1, 0, t), e.length = 0, e.push(...i);
750
+ }
751
+ function _(e, t, a) {
752
+ if (!t) return;
753
+ const r = e.get(t);
754
+ if (!r) return;
755
+ const i = r.filter((o) => o !== a);
756
+ i.length === 0 ? e.delete(t) : e.set(t, i);
757
+ }
758
+ function et(e, t) {
759
+ const a = t.filter((n) => n.startsWith("L:")).map((n) => n.slice(2));
760
+ if (a.length < 2) return;
761
+ const r = new Set(a), i = [], o = /* @__PURE__ */ new Map();
762
+ for (let n = 0; n < e.length; n++)
763
+ r.has(e[n].id) && (i.push(n), o.set(e[n].id, e[n]));
764
+ if (i.length === a.length)
765
+ for (let n = 0; n < i.length; n++) {
766
+ const s = o.get(a[n]);
767
+ s && (e[i[n]] = s);
768
+ }
769
+ }
770
+ function at(e, t) {
771
+ const a = t.filter((n) => n.startsWith("F:")).map((n) => n.slice(2));
772
+ if (a.length < 2) return;
773
+ const r = new Set(a), i = [], o = /* @__PURE__ */ new Map();
774
+ for (let n = 0; n < e.length; n++)
775
+ r.has(e[n].id) && (i.push(n), o.set(e[n].id, e[n]));
776
+ if (i.length === a.length)
777
+ for (let n = 0; n < i.length; n++) {
778
+ const s = o.get(a[n]);
779
+ s && (e[i[n]] = s);
780
+ }
781
+ }
782
+ function Re(e, t, a, r, i, o) {
783
+ if (!r || !i) return null;
784
+ const n = e.find((p) => p.id === r), s = t.find((p) => p.id === i);
785
+ if (!n || !s || !s.layerId) return null;
786
+ const c = s.layerId;
787
+ if (c === r || N(e, c, r)) return null;
788
+ const l = n.parentId !== void 0 ? n.parentId : null;
789
+ l && l !== c && _(a, l, R(r)), n.parentId = c;
790
+ const u = me(a, c, e, t);
791
+ return ge(u, R(r), O(i), o), a.set(c, u), et(e, u), {
792
+ tipo: l !== c ? "hierarquia" : "ordem",
793
+ camada: n,
794
+ parentAnteriorId: l,
795
+ novoParentId: c
796
+ };
695
797
  }
696
- function Ua(e) {
798
+ function tt(e, t, a, r, i, o) {
799
+ if (!r || !i) return null;
800
+ const n = t.find((d) => d.id === r), s = e.find((d) => d.id === i);
801
+ if (!n || !s || !s.parentId) return null;
802
+ const c = s.parentId, l = n.layerId, u = l !== c;
803
+ u && (_(a, l, O(r)), n.layerId = c);
804
+ const p = me(a, c, e, t);
805
+ return ge(p, O(r), R(i), o), a.set(c, p), at(t, p), { feicao: n, camadaOrigemId: l, camadaDestinoId: c, mudouDeCamada: u };
806
+ }
807
+ function je(e, t, a, r, i, o, n, s) {
808
+ const c = R(r);
809
+ if (n && (n !== s || o === "dentro") && _(a, n, c), o !== "dentro" && s && a.has(s)) {
810
+ const l = me(a, s, e, t);
811
+ ge(l, c, R(i), o === "acima"), a.set(s, l);
812
+ }
813
+ }
814
+ function rt(e, t, a, r, i, o, n, s) {
815
+ const c = O(r);
816
+ if (n && n !== s && _(a, n, c), s && a.has(s)) {
817
+ const l = me(a, s, e, t);
818
+ ge(l, c, O(i), o), a.set(s, l);
819
+ }
820
+ }
821
+ function it(e, t, a, r) {
822
+ const i = O(t);
823
+ if (_(e, a, i), r && e.has(r)) {
824
+ const o = e.get(r);
825
+ o.includes(i) || o.push(i);
826
+ }
827
+ }
828
+ function ot(e) {
697
829
  const {
698
830
  camadas: t,
699
831
  feicoes: a,
@@ -704,60 +836,59 @@ function Ua(e) {
704
836
  editingLayerId: s,
705
837
  editingFeatureId: c,
706
838
  searchQuery: l,
707
- titulo: p = "CAMADAS",
708
- mostrarBusca: d = !0,
709
- limitesPorCamada: u,
710
- limiteFeicoesPorCamada: f = we,
711
- mostrarBotaoColapsar: m = !1
712
- } = e, g = (l || "").trim().toLowerCase(), b = ea(t, a, g), v = /* @__PURE__ */ new Map();
713
- for (let I = 0; I < a.length; I++) {
714
- const x = a[I];
715
- if (!x || !x.id) continue;
716
- const B = x.layerId || "";
717
- v.has(B) || v.set(B, []), v.get(B).push(x);
718
- }
719
- const E = le(t), k = t.every((I) => I.visible !== !1), C = t.length > 0 && t.every((I) => i.has(I.id)), w = d ? `
839
+ titulo: u = "CAMADAS",
840
+ mostrarBusca: p = !0,
841
+ limitesPorCamada: d,
842
+ limiteFeicoesPorCamada: f = Se,
843
+ mostrarBotaoColapsar: m = !1,
844
+ ordemFilhosPorPai: h
845
+ } = e, v = (l || "").trim().toLowerCase(), g = la(t, a, v), w = /* @__PURE__ */ new Map();
846
+ for (let x = 0; x < a.length; x++) {
847
+ const y = a[x];
848
+ if (!y || !y.id) continue;
849
+ const P = y.layerId || "";
850
+ w.has(P) || w.set(P, []), w.get(P).push(y);
851
+ }
852
+ const k = fe(t), L = t.every((x) => x.visible !== !1), A = t.length > 0 && t.every((x) => i.has(x.id)), S = p ? `
720
853
  <div class="ui-tree-search-wrapper" part="busca">
721
- <span class="ui-tree-search-icon">${y.busca}</span>
722
- <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${z(
854
+ <span class="ui-tree-search-icon">${b.busca}</span>
855
+ <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${M(
723
856
  l
724
857
  )}" />
725
- ${l ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${y.fechar}</button>` : ""}
858
+ ${l ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${b.fechar}</button>` : ""}
726
859
  </div>
727
- ` : "", $ = `
860
+ ` : "", F = `
728
861
  <div class="ui-tree-toolbar" part="toolbar">
729
862
  <div class="ui-tree-title-group">
730
- <span class="ui-tree-section-title">${z(p || "CAMADAS")}</span>
863
+ <span class="ui-tree-section-title">${M(u || "CAMADAS")}</span>
731
864
  <span class="ui-tree-count-badge">${t.length}</span>
732
865
  </div>
733
866
  <div class="ui-tree-actions">
734
- <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${k ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${k ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
735
- ${k ? y.olhoAberto : y.olhoFechado}
867
+ <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${L ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${L ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
868
+ ${L ? b.olhoAberto : b.olhoFechado}
736
869
  </button>
737
- <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${C ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${C ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
738
- <span class="ui-chevron-icon ${C ? "open" : ""}">${y.chevronDir}</span>
870
+ <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${A ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${A ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
871
+ <span class="ui-chevron-icon ${A ? "open" : ""}">${b.chevronDir}</span>
739
872
  </button>
740
- ${m ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${y.recolherPainel}</button>` : ""}
873
+ ${m ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>` : ""}
741
874
  </div>
742
875
  </div>
743
- ${w}
744
- `, h = (I) => {
745
- const x = I.camada;
746
- if (b && !b.camadasVisiveis.has(x.id)) return "";
747
- const B = I.depth, T = I.subcamadas, Ie = b ? T.filter((M) => b.camadasVisiveis.has(M.camada.id)) : T, _ = !!(x.isGroup || T.length > 0), S = z(x.id), J = z(x.name || (_ ? "Novo Grupo" : "Camada")), O = G(x.color, "#00E08A"), Z = x.visible !== !1, ee = x.locked === !0, ae = g ? !0 : i.has(x.id), ce = n === x.id, de = r === x.id, j = E.get(x.id), pa = (j == null ? void 0 : j.ocultaPorAncestral) === !0, fa = (j == null ? void 0 : j.travadaPorAncestral) === !0, R = b ? b.feicoesPorCamada.get(x.id) || [] : v.get(x.id) || [], te = b ? R : W(t, a, x.id), ke = te.length > 0 && te.every((M) => o.has(M.id)), ma = !ke && te.some((M) => o.has(M.id)), ue = (u == null ? void 0 : u.get(x.id)) ?? f, ga = R.slice(0, ue), va = R.length > ue, ba = Ye(x, B, j), ha = ga.map(
748
- (M) => Ze(M, ba, o.has(M.id), c === M.id)
749
- ).join(""), ya = va ? We(S, ue, R.length) : "", Le = Number(x.opacity ?? 1), Ce = Number.isFinite(Le) ? Math.min(1, Math.max(0, Le)) : 1, xa = Math.round(Ce * 100), wa = t.filter((M) => M.id !== x.id && !Y(t, M.id, x.id)).map(
750
- (M) => `<option value="${z(M.id)}" ${x.parentId === M.id ? "selected" : ""}>${M.isGroup ? "📁 " : ""}${z(M.name)}</option>`
751
- ).join(""), Aa = ce ? `
752
- <div class="ui-layer-settings-drawer" id="settings-drawer-${S}" part="drawer" style="--drawer-cor-camada: ${O};">
876
+ ${S}
877
+ `, B = (x) => {
878
+ const y = x.camada;
879
+ if (g && !g.camadasVisiveis.has(y.id)) return "";
880
+ const P = x.depth, Y = x.subcamadas, Me = g ? Y.filter(($) => g.camadasVisiveis.has($.camada.id)) : Y, te = !!(y.isGroup || Y.length > 0), C = M(y.id), re = M(y.name || (te ? "Novo Grupo" : "Camada")), H = K(y.color, "#00E08A"), ie = y.visible !== !1, oe = y.locked === !0, ne = v ? !0 : i.has(y.id), he = n === y.id, ve = r === y.id, G = k.get(y.id), xa = (G == null ? void 0 : G.ocultaPorAncestral) === !0, wa = (G == null ? void 0 : G.travadaPorAncestral) === !0, j = g ? g.feicoesPorCamada.get(y.id) || [] : w.get(y.id) || [], se = g ? j : ae(t, a, y.id), Pe = se.length > 0 && se.every(($) => o.has($.id)), Aa = !Pe && se.some(($) => o.has($.id)), be = (d == null ? void 0 : d.get(y.id)) ?? f, Ea = j.slice(0, be), Ia = j.length > be, ka = aa(y, P, G), La = ($) => sa($, ka, o.has($.id), c === $.id), Ca = Ia ? oa(C, be, j.length) : "", ze = Number(y.opacity ?? 1), Be = Number.isFinite(ze) ? Math.min(1, Math.max(0, ze)) : 1, Sa = Math.round(Be * 100), Fa = t.filter(($) => $.id !== y.id && !N(t, $.id, y.id)).map(
881
+ ($) => `<option value="${M($.id)}" ${y.parentId === $.id ? "selected" : ""}>${$.isGroup ? "📁 " : ""}${M($.name)}</option>`
882
+ ).join(""), $a = he ? `
883
+ <div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${H};">
753
884
  <div class="ui-drawer-header">
754
885
  <div class="ui-drawer-header-left">
755
- <span class="ui-drawer-icon">${y.engrenagem}</span>
886
+ <span class="ui-drawer-icon">${b.engrenagem}</span>
756
887
  <span class="ui-drawer-title">Configurações da Camada</span>
757
- <span class="ui-drawer-layer-chip" title="${J}">${J}</span>
888
+ <span class="ui-drawer-layer-chip" title="${re}">${re}</span>
758
889
  </div>
759
- <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${S}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
760
- ${y.fechar}
890
+ <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${C}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
891
+ ${b.fechar}
761
892
  </button>
762
893
  </div>
763
894
 
@@ -769,9 +900,9 @@ function Ua(e) {
769
900
  </div>
770
901
  <div class="ui-drawer-color-group">
771
902
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
772
- <span class="ui-drawer-color-sample" id="sample-color-${S}" style="background-color: ${O};"></span>
773
- <span class="ui-drawer-color-hex" id="hex-color-${S}">${O.toUpperCase()}</span>
774
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${S}" value="${Pa(O, "#00e08a")}" class="ui-drawer-color-native" />
903
+ <span class="ui-drawer-color-sample" id="sample-color-${C}" style="background-color: ${H};"></span>
904
+ <span class="ui-drawer-color-hex" id="hex-color-${C}">${H.toUpperCase()}</span>
905
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Ga(H, "#00e08a")}" class="ui-drawer-color-native" />
775
906
  </label>
776
907
  </div>
777
908
  </div>
@@ -780,10 +911,10 @@ function Ua(e) {
780
911
  <div class="ui-drawer-row">
781
912
  <div class="ui-drawer-row-label">
782
913
  <span>Opacidade</span>
783
- <span class="ui-drawer-badge" id="badge-op-${S}">${xa}%</span>
914
+ <span class="ui-drawer-badge" id="badge-op-${C}">${Sa}%</span>
784
915
  </div>
785
916
  <div class="ui-drawer-slider-container">
786
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(Ce) || 0}" data-layer-opacity-slider="${S}" class="ui-drawer-slider" />
917
+ <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(Be) || 0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
787
918
  </div>
788
919
  </div>
789
920
 
@@ -793,9 +924,9 @@ function Ua(e) {
793
924
  <span>Pertence ao Grupo</span>
794
925
  </div>
795
926
  <div class="ui-drawer-select-wrapper">
796
- <select class="ui-drawer-select" data-layer-parent-select="${S}" aria-label="Grupo pai da camada">
797
- <option value="" ${x.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
798
- ${wa}
927
+ <select class="ui-drawer-select" data-layer-parent-select="${C}" aria-label="Grupo pai da camada">
928
+ <option value="" ${y.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
929
+ ${Fa}
799
930
  </select>
800
931
  </div>
801
932
  </div>
@@ -803,76 +934,78 @@ function Ua(e) {
803
934
 
804
935
  <div class="ui-drawer-footer">
805
936
  <div class="ui-drawer-meta-info">
806
- <span>${T.length > 0 ? `${T.length} subcamadas · ` : ""}${R.length} ${R.length === 1 ? "feição" : "feições"}</span>
937
+ <span>${Y.length > 0 ? `${Y.length} subcamadas · ` : ""}${j.length} ${j.length === 1 ? "feição" : "feições"}</span>
807
938
  </div>
808
939
  <div class="ui-drawer-actions">
809
- <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${S}" title="Adicionar nova camada dentro desta">
810
- ${y.mais} Subcamada
940
+ <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${C}" title="Adicionar nova camada dentro desta">
941
+ ${b.mais} Subcamada
811
942
  </button>
812
- <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${S}" title="Excluir esta camada e suas feições">
813
- ${y.lixeira}
943
+ <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${C}" title="Excluir esta camada e suas feições">
944
+ ${b.lixeira}
814
945
  <span class="ui-btn-label">Excluir</span>
815
946
  </button>
816
947
  </div>
817
948
  </div>
818
949
  </div>
819
- ` : "", Ea = Ie.map((M) => h(M)).join("");
950
+ ` : "", Ma = Za(
951
+ Me,
952
+ Ea,
953
+ h == null ? void 0 : h.get(y.id)
954
+ ).map(($) => $.tipo === "layer" ? B($.nodo) : La($.feicao)).join("");
820
955
  return `
821
- <div class="ui-layer-group ${B > 0 ? "is-sublayer-group" : ""}" data-layer-id="${S}" data-layer-depth="${B}" role="treeitem" aria-level="${B + 1}" aria-expanded="${ae}" part="grupo" style="--layer-active-color: ${O};">
822
- <div class="ui-layer-row ${Z ? "" : "hidden-layer"} ${de ? "active-drawing-layer" : ""} ${B > 0 ? "is-sublayer" : ""} ${_ ? "is-group-row" : ""} ${pa ? "herdado-oculto" : ""} ${fa ? "herdado-travado" : ""}" data-layer-row="${S}" data-layer-id="${S}" tabindex="-1" draggable="true" part="${de ? "camada camada-ativa" : "camada"}" ${de ? 'aria-current="true"' : ""} style="--layer-depth: ${B};">
823
- <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${y.dragHandle}</div>
956
+ <div class="ui-layer-group ${P > 0 ? "is-sublayer-group" : ""}" data-layer-id="${C}" data-layer-depth="${P}" role="treeitem" aria-level="${P + 1}" aria-expanded="${ne}" part="grupo" style="--layer-active-color: ${H};">
957
+ <div class="ui-layer-row ${ie ? "" : "hidden-layer"} ${ve ? "active-drawing-layer" : ""} ${P > 0 ? "is-sublayer" : ""} ${te ? "is-group-row" : ""} ${xa ? "herdado-oculto" : ""} ${wa ? "herdado-travado" : ""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${ve ? "camada camada-ativa" : "camada"}" ${ve ? 'aria-current="true"' : ""} style="--layer-depth: ${P};">
958
+ <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${b.dragHandle}</div>
824
959
 
825
- <div class="ui-col ui-col-eye" data-layer-eye="${S}" role="button" tabindex="0" aria-label="${Z ? "Ocultar Camada" : "Exibir Camada"}" title="${Z ? "Ocultar Camada" : "Exibir Camada"}">
826
- ${Z ? y.olhoAberto : y.olhoFechado}
960
+ <div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${ie ? "Ocultar Camada" : "Exibir Camada"}" title="${ie ? "Ocultar Camada" : "Exibir Camada"}">
961
+ ${ie ? b.olhoAberto : b.olhoFechado}
827
962
  </div>
828
963
 
829
- <div class="ui-col ui-col-lock ${ee ? "" : "ui-lock-open"}" data-layer-lock="${S}" role="button" tabindex="0" aria-label="${ee ? "Desbloquear Camada" : "Bloquear Camada"}" title="${ee ? "Desbloquear Camada" : "Bloquear Camada"}">
830
- ${ee ? y.cadeadoTrancado : y.cadeadoAberto}
964
+ <div class="ui-col ui-col-lock ${oe ? "" : "ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${oe ? "Desbloquear Camada" : "Bloquear Camada"}" title="${oe ? "Desbloquear Camada" : "Bloquear Camada"}">
965
+ ${oe ? b.cadeadoTrancado : b.cadeadoAberto}
831
966
  </div>
832
967
 
833
- <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${S}" role="button" tabindex="0" style="background: ${O};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
968
+ <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" role="button" tabindex="0" style="background: ${H};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
834
969
 
835
- <div class="ui-col ui-col-chevron" data-layer-expand="${S}" role="button" tabindex="0" aria-label="${ae ? "Recolher grupo" : "Expandir grupo"}">
836
- <span class="ui-chevron-icon ${ae ? "open" : ""}">${y.chevronDir}</span>
970
+ <div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${ne ? "Recolher grupo" : "Expandir grupo"}">
971
+ <span class="ui-chevron-icon ${ne ? "open" : ""}">${b.chevronDir}</span>
837
972
  </div>
838
973
 
839
- <div class="ui-col ui-col-name" data-layer-name-trigger="${S}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
840
- ${s === x.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${S}" value="${J}" />` : `${_ ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${y.moverPasta}</span>` : ""}
841
- <span class="ui-name-text">${J}</span>
842
- ${Qe(te.length, R.length, T.length, _)}`}
974
+ <div class="ui-col ui-col-name" data-layer-name-trigger="${C}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
975
+ ${s === y.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${re}" />` : `<span class="ui-name-text">${re}</span>
976
+ ${ra(se.length, j.length, Y.length, te)}`}
843
977
  </div>
844
978
 
845
979
  <div class="ui-col ui-col-actions">
846
- <button class="ui-micro-btn" data-layer-fit="${S}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${y.alvoEnquadrar}</button>
847
- <button class="ui-micro-btn ${ce ? "active" : ""}" data-layer-settings="${S}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${ce}">${y.engrenagem}</button>
980
+ <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
981
+ <button class="ui-micro-btn ${he ? "active" : ""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${he}">${b.engrenagem}</button>
848
982
  </div>
849
983
 
850
- <div class="ui-col ui-col-target" data-layer-target="${S}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
851
- <div class="ui-target-circle ${ke ? "selected" : ma ? "partial" : ""}"></div>
984
+ <div class="ui-col ui-col-target" data-layer-target="${C}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
985
+ <div class="ui-target-circle ${Pe ? "selected" : Aa ? "partial" : ""}"></div>
852
986
  </div>
853
987
  </div>
854
988
 
855
- ${Aa}
989
+ ${$a}
856
990
 
857
- <div class="ui-children-container ${B > 0 ? "is-subchildren" : ""}" role="group" style="--parent-depth: ${B}; --parent-layer-color: ${O}; display: ${ae ? "block" : "none"};">
858
- ${Ea}
859
- ${ha}
860
- ${ya}
861
- ${Ie.length === 0 && R.length === 0 ? Je(_) : ""}
991
+ <div class="ui-children-container ${P > 0 ? "is-subchildren" : ""}" role="group" style="--parent-depth: ${P}; --parent-layer-color: ${H}; display: ${ne ? "block" : "none"};">
992
+ ${Ma}
993
+ ${Ca}
994
+ ${Me.length === 0 && j.length === 0 ? na(te) : ""}
862
995
  </div>
863
996
  </div>
864
997
  `;
865
- }, F = se(t), L = b && b.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${z((l || "").trim())}”</div>` : F.map((I) => h(I)).join("");
998
+ }, E = pe(t), z = g && g.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${M((l || "").trim())}”</div>` : E.map((x) => B(x)).join("");
866
999
  return `
867
- ${$}
1000
+ ${F}
868
1001
  <div class="ui-panel-box">
869
1002
  <div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true" part="arvore">
870
- ${L}
1003
+ ${z}
871
1004
  </div>
872
1005
  </div>
873
1006
  `;
874
1007
  }
875
- function Va(e) {
1008
+ function nt(e) {
876
1009
  return [
877
1010
  {
878
1011
  gatilho: "data-layer-name-trigger",
@@ -902,46 +1035,46 @@ function Va(e) {
902
1035
  }
903
1036
  ];
904
1037
  }
905
- function Be(e, t, a = t) {
906
- for (const r of Va(e))
1038
+ function Ne(e, t, a = t) {
1039
+ for (const r of nt(e))
907
1040
  a.querySelectorAll(`[${r.gatilho}]`).forEach((i) => {
908
1041
  i.addEventListener("dblclick", (o) => {
909
1042
  o.stopPropagation();
910
1043
  const n = i.getAttribute(r.gatilho);
911
1044
  if (!n) return;
912
1045
  r.marcarEditando(n), e.solicitarRenderizacao();
913
- const s = P(t, r.input, n);
1046
+ const s = D(t, r.input, n);
914
1047
  if (!s) return;
915
1048
  s.focus(), s.select();
916
1049
  let c = !1;
917
- const l = (p, d = !1) => {
918
- var u, f;
1050
+ const l = (u, p = !1) => {
1051
+ var d, f;
919
1052
  if (!c) {
920
- if (c = !0, r.marcarEditando(null), p) {
1053
+ if (c = !0, r.marcarEditando(null), u) {
921
1054
  const m = r.aplicar(n, s.value.trim());
922
- m && (m.salvar && ((u = e.salvarLembrancaEstado) == null || u.call(e)), r.emitir(m.detalhe));
1055
+ m && (m.salvar && ((d = e.salvarLembrancaEstado) == null || d.call(e)), r.emitir(m.detalhe));
923
1056
  }
924
- e.solicitarRenderizacao(), d && ((f = P(t, r.linha, n)) == null || f.focus());
1057
+ e.solicitarRenderizacao(), p && ((f = D(t, r.linha, n)) == null || f.focus());
925
1058
  }
926
1059
  };
927
- s.addEventListener("keydown", (p) => {
928
- p.key === "Enter" ? (p.preventDefault(), l(!0, !0)) : p.key === "Escape" && (p.preventDefault(), l(!1, !0));
1060
+ s.addEventListener("keydown", (u) => {
1061
+ u.key === "Enter" ? (u.preventDefault(), l(!0, !0)) : u.key === "Escape" && (u.preventDefault(), l(!1, !0));
929
1062
  }), s.addEventListener("blur", () => l(!0));
930
1063
  });
931
1064
  });
932
1065
  }
933
- const Ya = ["dragging", "drop-above", "drop-below", "drop-into"];
934
- class Ka {
1066
+ const st = ["dragging", "drop-above", "drop-below", "drop-into"];
1067
+ class lt {
935
1068
  constructor(t, a) {
936
- A(this, "host");
937
- A(this, "shadow");
1069
+ I(this, "host");
1070
+ I(this, "shadow");
938
1071
  /** Cancela um arraste por toque em andamento (remove os ouvintes de `window`). */
939
- A(this, "cancelarToque", null);
1072
+ I(this, "cancelarToque", null);
940
1073
  /**
941
1074
  * Arraste HTML5 em andamento. Fica no gerenciador (e não numa closure de `bindDragAndDrop`) para que linhas
942
1075
  * ligadas depois, na atualização incremental, enxerguem o arraste iniciado numa linha mais antiga.
943
1076
  */
944
- A(this, "arraste", {
1077
+ I(this, "arraste", {
945
1078
  tipo: null,
946
1079
  camadaId: null,
947
1080
  feicaoId: null
@@ -957,11 +1090,11 @@ class Ka {
957
1090
  (t = this.cancelarToque) == null || t.call(this), this.cancelarToque = null;
958
1091
  }
959
1092
  bindInlineRename() {
960
- Be(this.host, this.shadow);
1093
+ Ne(this.host, this.shadow);
961
1094
  }
962
1095
  limparClassesDeArraste() {
963
1096
  this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((t) => {
964
- t.classList.remove(...Ya);
1097
+ t.classList.remove(...st);
965
1098
  });
966
1099
  }
967
1100
  /** Depois de qualquer mudança na ordem/hierarquia de camadas. */
@@ -974,7 +1107,8 @@ class Ka {
974
1107
  feicaoId: t.feicao.id,
975
1108
  camadaOrigemId: t.camadaOrigemId,
976
1109
  camadaDestinoId: t.camadaDestinoId,
977
- feicao: t.feicao
1110
+ feicao: t.feicao,
1111
+ feicoes: [...this.host.feicoes]
978
1112
  });
979
1113
  }
980
1114
  /** Camada travada (ou sob grupo travado) ou feição individualmente travada não pode ser movida entre camadas. */
@@ -982,7 +1116,7 @@ class Ka {
982
1116
  const r = this.host.feicoes.find((n) => n.id === t), i = r == null ? void 0 : r.layerId;
983
1117
  if (!a || i === a) return !1;
984
1118
  if ((r == null ? void 0 : r.locked) === !0) return !0;
985
- const o = ie(this.host.camadas);
1119
+ const o = ce(this.host.camadas);
986
1120
  return o.has(a) || !!i && o.has(i);
987
1121
  }
988
1122
  arrasteBloqueado(t) {
@@ -994,7 +1128,7 @@ class Ka {
994
1128
  }
995
1129
  /** Atualização incremental: liga renomear e arraste só nas linhas de feição novas dentro de `raiz`. */
996
1130
  bindLinhasFeicao(t) {
997
- Be(this.host, this.shadow, t), this.vincularArrasteFeicoes(t);
1131
+ Ne(this.host, this.shadow, t), this.vincularArrasteFeicoes(t);
998
1132
  }
999
1133
  vincularArrasteCamadas(t) {
1000
1134
  t.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((a) => {
@@ -1010,35 +1144,72 @@ class Ka {
1010
1144
  const o = i;
1011
1145
  if (o.preventDefault(), o.stopPropagation(), o.dataTransfer && (o.dataTransfer.dropEffect = "move"), this.arraste.tipo === "layer") {
1012
1146
  if (this.arraste.camadaId === r) return;
1013
- const n = a.getBoundingClientRect(), s = Me((o.clientY - n.top) / n.height);
1147
+ const n = a.getBoundingClientRect(), s = Ee((o.clientY - n.top) / n.height);
1014
1148
  a.classList.toggle("drop-above", s === "acima"), a.classList.toggle("drop-below", s === "abaixo"), a.classList.toggle("drop-into", s === "dentro");
1015
- } else this.arraste.tipo === "feature" && a.classList.add("drop-into");
1149
+ } else if (this.arraste.tipo === "feature") {
1150
+ const n = this.host.camadas.find((s) => s.id === r);
1151
+ if (n != null && n.parentId) {
1152
+ const s = a.getBoundingClientRect(), c = s.height > 0 ? Ee((o.clientY - s.top) / s.height) : "dentro";
1153
+ a.classList.toggle("drop-above", c === "acima"), a.classList.toggle("drop-below", c === "abaixo"), a.classList.toggle("drop-into", c === "dentro");
1154
+ } else
1155
+ a.classList.remove("drop-above", "drop-below"), a.classList.add("drop-into");
1156
+ }
1016
1157
  }), a.addEventListener("dragleave", (i) => {
1017
1158
  const o = i.relatedTarget;
1018
1159
  o && a.contains(o) || a.classList.remove("drop-above", "drop-below", "drop-into");
1019
1160
  }), a.addEventListener("drop", (i) => {
1020
- var s;
1161
+ var s, c, l, u, p;
1021
1162
  const o = i;
1022
1163
  o.preventDefault(), o.stopPropagation();
1023
1164
  const n = a.classList.contains("drop-into") ? "dentro" : a.classList.contains("drop-above") ? "acima" : "abaixo";
1024
1165
  if (this.limparClassesDeArraste(), this.arraste.tipo === "layer") {
1025
- if (!this.arraste.camadaId || this.arraste.camadaId === r || !this.host.camadas.some((l) => l.id === this.arraste.camadaId) || !this.host.camadas.some((l) => l.id === r)) return;
1026
- const c = ze(this.host.camadas, this.arraste.camadaId, r, n);
1027
- (c == null ? void 0 : c.tipo) === "hierarquia" ? ((s = this.host.expandedLayers) == null || s.add(c.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1028
- camadaId: c.camada.id,
1029
- novoParentId: c.novoParentId,
1030
- parentAnteriorId: c.parentAnteriorId,
1031
- camada: c.camada
1032
- })) : c && c.parentAnteriorId !== c.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
1033
- camadaId: c.camada.id,
1034
- novoParentId: c.novoParentId,
1035
- parentAnteriorId: c.parentAnteriorId,
1036
- camada: c.camada
1166
+ if (!this.arraste.camadaId || this.arraste.camadaId === r || !this.host.camadas.some((f) => f.id === this.arraste.camadaId) || !this.host.camadas.some((f) => f.id === r)) return;
1167
+ const d = Oe(this.host.camadas, this.arraste.camadaId, r, n);
1168
+ d && this.host.ordemFilhosPorPai && je(
1169
+ this.host.camadas,
1170
+ this.host.feicoes,
1171
+ this.host.ordemFilhosPorPai,
1172
+ this.arraste.camadaId,
1173
+ r,
1174
+ n,
1175
+ d.parentAnteriorId,
1176
+ d.novoParentId
1177
+ ), (d == null ? void 0 : d.tipo) === "hierarquia" ? ((s = this.host.expandedLayers) == null || s.add(d.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1178
+ camadaId: d.camada.id,
1179
+ novoParentId: d.novoParentId,
1180
+ parentAnteriorId: d.parentAnteriorId,
1181
+ camada: d.camada
1182
+ })) : d && d.parentAnteriorId !== d.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
1183
+ camadaId: d.camada.id,
1184
+ novoParentId: d.novoParentId,
1185
+ parentAnteriorId: d.parentAnteriorId,
1186
+ camada: d.camada
1037
1187
  }), this.aposReordenarCamadas();
1038
1188
  } else if (this.arraste.tipo === "feature") {
1039
- if (!this.arraste.feicaoId || this.trocaEntreCamadasTravada(this.arraste.feicaoId, r)) return;
1040
- const c = Ga(this.host.feicoes, this.host.camadas, this.arraste.feicaoId, r);
1041
- c && (this.emitirFeicaoMovida(c), this.host.solicitarRenderizacao());
1189
+ if (!this.arraste.feicaoId) return;
1190
+ const d = this.host.camadas.find((f) => f.id === r);
1191
+ if (d != null && d.parentId && (n === "acima" || n === "abaixo")) {
1192
+ if (this.trocaEntreCamadasTravada(this.arraste.feicaoId, d.parentId) || !this.host.ordemFilhosPorPai) return;
1193
+ const f = tt(
1194
+ this.host.camadas,
1195
+ this.host.feicoes,
1196
+ this.host.ordemFilhosPorPai,
1197
+ this.arraste.feicaoId,
1198
+ r,
1199
+ n === "acima"
1200
+ );
1201
+ if (!f) return;
1202
+ this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), f.mudouDeCamada && this.emitirFeicaoMovida(f), (l = (c = this.host).salvarLembrancaEstado) == null || l.call(c), this.host.solicitarRenderizacao();
1203
+ } else {
1204
+ if (this.trocaEntreCamadasTravada(this.arraste.feicaoId, r)) return;
1205
+ const f = Wa(this.host.feicoes, this.host.camadas, this.arraste.feicaoId, r);
1206
+ f && (this.host.ordemFilhosPorPai && it(
1207
+ this.host.ordemFilhosPorPai,
1208
+ f.feicao.id,
1209
+ f.camadaOrigemId,
1210
+ f.camadaDestinoId
1211
+ ), this.emitirFeicaoMovida(f), (p = (u = this.host).salvarLembrancaEstado) == null || p.call(u), this.host.solicitarRenderizacao());
1212
+ }
1042
1213
  }
1043
1214
  }), a.addEventListener("dragend", () => {
1044
1215
  this.arraste.tipo = null, this.arraste.camadaId = null, this.arraste.feicaoId = null, this.limparClassesDeArraste();
@@ -1056,22 +1227,50 @@ class Ka {
1056
1227
  }
1057
1228
  n.stopPropagation(), this.arraste.tipo = "feature", this.arraste.feicaoId = r, this.arraste.camadaId = i, n.dataTransfer && (n.dataTransfer.setData("text/plain", JSON.stringify({ type: "feature", id: r, layerId: i })), n.dataTransfer.effectAllowed = "move"), a.classList.add("dragging");
1058
1229
  }), a.addEventListener("dragover", (o) => {
1059
- const n = o;
1060
- if (this.arraste.tipo !== "feature" || this.arraste.feicaoId === r) return;
1230
+ const n = o, s = this.arraste.tipo === "feature" && this.arraste.feicaoId !== r, c = this.arraste.tipo === "layer" && !!this.arraste.camadaId && !!i && this.arraste.camadaId !== i && !N(this.host.camadas, i, this.arraste.camadaId);
1231
+ if (!s && !c) return;
1061
1232
  n.preventDefault(), n.stopPropagation(), n.dataTransfer && (n.dataTransfer.dropEffect = "move");
1062
- const s = a.getBoundingClientRect(), c = n.clientY - s.top < s.height / 2;
1063
- a.classList.toggle("drop-above", c), a.classList.toggle("drop-below", !c);
1233
+ const l = a.getBoundingClientRect(), u = n.clientY - l.top < l.height / 2;
1234
+ a.classList.toggle("drop-above", u), a.classList.toggle("drop-below", !u);
1064
1235
  }), a.addEventListener("dragleave", (o) => {
1065
1236
  const n = o.relatedTarget;
1066
1237
  n && a.contains(n) || a.classList.remove("drop-above", "drop-below");
1067
1238
  }), a.addEventListener("drop", (o) => {
1068
- const n = o;
1069
- if (this.arraste.tipo !== "feature" || !this.arraste.feicaoId || this.arraste.feicaoId === r) return;
1070
- n.preventDefault(), n.stopPropagation();
1071
- const s = a.classList.contains("drop-above");
1072
- if (this.limparClassesDeArraste(), this.trocaEntreCamadasTravada(this.arraste.feicaoId, i)) return;
1073
- const c = _a(this.host.feicoes, this.arraste.feicaoId, r, s);
1074
- c && (c.mudouDeCamada && this.emitirFeicaoMovida(c), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
1239
+ var l, u, p;
1240
+ const n = o, s = a.getBoundingClientRect(), c = a.classList.contains("drop-above") ? !0 : a.classList.contains("drop-below") ? !1 : s.height > 0 && n.clientY - s.top < s.height / 2;
1241
+ if (this.arraste.tipo === "feature") {
1242
+ if (!this.arraste.feicaoId || this.arraste.feicaoId === r || (n.preventDefault(), n.stopPropagation(), this.limparClassesDeArraste(), this.trocaEntreCamadasTravada(this.arraste.feicaoId, i))) return;
1243
+ const d = Ja(this.host.feicoes, this.arraste.feicaoId, r, c);
1244
+ if (!d) return;
1245
+ this.host.ordemFilhosPorPai && rt(
1246
+ this.host.camadas,
1247
+ this.host.feicoes,
1248
+ this.host.ordemFilhosPorPai,
1249
+ this.arraste.feicaoId,
1250
+ r,
1251
+ c,
1252
+ d.camadaOrigemId,
1253
+ d.camadaDestinoId
1254
+ ), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), d.mudouDeCamada && this.emitirFeicaoMovida(d), (u = (l = this.host).salvarLembrancaEstado) == null || u.call(l), this.host.solicitarRenderizacao();
1255
+ } else if (this.arraste.tipo === "layer") {
1256
+ if (!this.arraste.camadaId || !i || !this.host.ordemFilhosPorPai) return;
1257
+ n.preventDefault(), n.stopPropagation(), this.limparClassesDeArraste();
1258
+ const d = Re(
1259
+ this.host.camadas,
1260
+ this.host.feicoes,
1261
+ this.host.ordemFilhosPorPai,
1262
+ this.arraste.camadaId,
1263
+ r,
1264
+ c
1265
+ );
1266
+ if (!d) return;
1267
+ d.parentAnteriorId !== d.novoParentId && d.novoParentId && ((p = this.host.expandedLayers) == null || p.add(d.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1268
+ camadaId: d.camada.id,
1269
+ novoParentId: d.novoParentId,
1270
+ parentAnteriorId: d.parentAnteriorId,
1271
+ camada: d.camada
1272
+ })), this.aposReordenarCamadas();
1273
+ }
1075
1274
  }), a.addEventListener("dragend", (o) => {
1076
1275
  o.stopPropagation(), this.arraste.tipo = null, this.arraste.feicaoId = null, this.arraste.camadaId = null, this.limparClassesDeArraste();
1077
1276
  }));
@@ -1089,82 +1288,129 @@ class Ka {
1089
1288
  if (!a) return;
1090
1289
  const r = a.getAttribute("data-layer-id");
1091
1290
  r && t.addEventListener("pointerdown", (i) => {
1092
- var d;
1291
+ var p;
1093
1292
  const o = i;
1094
1293
  if (o.pointerType === "mouse" && o.button !== 0 || this.host.editingLayerId || this.host.editingFeatureId) return;
1095
- (d = this.cancelarToque) == null || d.call(this);
1294
+ (p = this.cancelarToque) == null || p.call(this);
1096
1295
  let n = null, s = "abaixo";
1097
- const c = (u) => {
1098
- u.preventDefault(), a.classList.add("dragging");
1099
- const f = this.shadow.elementFromPoint(u.clientX, u.clientY), m = f ? f.closest(".ui-layer-row") : null;
1100
- if (n && n !== m && n.classList.remove("drop-above", "drop-below", "drop-into"), m && m !== a) {
1101
- n = m;
1102
- const g = m.getBoundingClientRect();
1103
- s = g.height > 0 ? Me((u.clientY - g.top) / g.height) : "abaixo", m.classList.toggle("drop-above", s === "acima"), m.classList.toggle("drop-below", s === "abaixo"), m.classList.toggle("drop-into", s === "dentro");
1104
- } else
1296
+ const c = (d) => {
1297
+ d.preventDefault(), a.classList.add("dragging");
1298
+ const f = this.shadow.elementFromPoint(d.clientX, d.clientY), m = f ? f.closest(".ui-layer-row, .ui-feat-row") : null;
1299
+ if (n && n !== m && n.classList.remove("drop-above", "drop-below", "drop-into"), m && m !== a)
1300
+ if (m.classList.contains("ui-feat-row")) {
1301
+ const v = m.getAttribute("data-feat-layer");
1302
+ if (!v || v === r || N(this.host.camadas, v, r)) {
1303
+ n = null;
1304
+ return;
1305
+ }
1306
+ n = m;
1307
+ const g = m.getBoundingClientRect(), w = g.height > 0 && d.clientY - g.top < g.height / 2;
1308
+ s = w ? "acima" : "abaixo", m.classList.toggle("drop-above", w), m.classList.toggle("drop-below", !w), m.classList.remove("drop-into");
1309
+ } else {
1310
+ n = m;
1311
+ const v = m.getBoundingClientRect();
1312
+ s = v.height > 0 ? Ee((d.clientY - v.top) / v.height) : "abaixo", m.classList.toggle("drop-above", s === "acima"), m.classList.toggle("drop-below", s === "abaixo"), m.classList.toggle("drop-into", s === "dentro");
1313
+ }
1314
+ else
1105
1315
  n = null;
1106
1316
  }, l = () => {
1107
- window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", p), window.removeEventListener("pointercancel", p), this.cancelarToque = null;
1108
- }, p = () => {
1109
- var m;
1317
+ window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", u), window.removeEventListener("pointercancel", u), this.cancelarToque = null;
1318
+ }, u = () => {
1319
+ var h, v;
1110
1320
  l();
1111
- const u = n == null ? void 0 : n.getAttribute("data-layer-id");
1112
- if (this.limparClassesDeArraste(), !u || u === r) return;
1113
- const f = ze(this.host.camadas, r, u, s);
1114
- f && (f.tipo === "hierarquia" ? ((m = this.host.expandedLayers) == null || m.add(f.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1115
- camadaId: f.camada.id,
1116
- novoParentId: f.novoParentId,
1117
- parentAnteriorId: f.parentAnteriorId,
1118
- camada: f.camada
1119
- })) : f.parentAnteriorId !== f.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
1120
- camadaId: f.camada.id,
1121
- novoParentId: f.novoParentId,
1122
- parentAnteriorId: f.parentAnteriorId,
1123
- camada: f.camada
1321
+ const d = n == null ? void 0 : n.getAttribute("data-layer-id"), f = n == null ? void 0 : n.getAttribute("data-feat-row");
1322
+ if (this.limparClassesDeArraste(), f && this.host.ordemFilhosPorPai) {
1323
+ const g = Re(
1324
+ this.host.camadas,
1325
+ this.host.feicoes,
1326
+ this.host.ordemFilhosPorPai,
1327
+ r,
1328
+ f,
1329
+ s === "acima"
1330
+ );
1331
+ if (!g) return;
1332
+ g.parentAnteriorId !== g.novoParentId && g.novoParentId && ((h = this.host.expandedLayers) == null || h.add(g.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1333
+ camadaId: g.camada.id,
1334
+ novoParentId: g.novoParentId,
1335
+ parentAnteriorId: g.parentAnteriorId,
1336
+ camada: g.camada
1337
+ })), this.aposReordenarCamadas();
1338
+ return;
1339
+ }
1340
+ if (!d || d === r) return;
1341
+ const m = Oe(this.host.camadas, r, d, s);
1342
+ m && (this.host.ordemFilhosPorPai && je(
1343
+ this.host.camadas,
1344
+ this.host.feicoes,
1345
+ this.host.ordemFilhosPorPai,
1346
+ r,
1347
+ d,
1348
+ s,
1349
+ m.parentAnteriorId,
1350
+ m.novoParentId
1351
+ ), m.tipo === "hierarquia" ? ((v = this.host.expandedLayers) == null || v.add(m.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1352
+ camadaId: m.camada.id,
1353
+ novoParentId: m.novoParentId,
1354
+ parentAnteriorId: m.parentAnteriorId,
1355
+ camada: m.camada
1356
+ })) : m.parentAnteriorId !== m.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
1357
+ camadaId: m.camada.id,
1358
+ novoParentId: m.novoParentId,
1359
+ parentAnteriorId: m.parentAnteriorId,
1360
+ camada: m.camada
1124
1361
  }), this.aposReordenarCamadas());
1125
1362
  };
1126
1363
  this.cancelarToque = () => {
1127
1364
  l(), this.limparClassesDeArraste();
1128
- }, window.addEventListener("pointermove", c, { passive: !1 }), window.addEventListener("pointerup", p), window.addEventListener("pointercancel", p);
1365
+ }, window.addEventListener("pointermove", c, { passive: !1 }), window.addEventListener("pointerup", u), window.addEventListener("pointercancel", u);
1129
1366
  });
1130
1367
  });
1131
1368
  }
1132
1369
  }
1133
- const Qa = "ui_camadas_estado_";
1134
- function Xa(e, t) {
1370
+ const ct = "ui_camadas_estado_";
1371
+ function dt(e, t) {
1135
1372
  const a = (e || t || "default").trim();
1136
- return `${Qa}${a}`;
1373
+ return `${ct}${a}`;
1137
1374
  }
1138
- function be(e) {
1375
+ function le(e) {
1139
1376
  return !!e && typeof e == "object" && !Array.isArray(e);
1140
1377
  }
1141
- function re(e) {
1378
+ function Q(e) {
1142
1379
  return Array.isArray(e) ? e.filter((t) => typeof t == "string") : [];
1143
1380
  }
1144
- function qe(e) {
1145
- if (!be(e)) return;
1381
+ function He(e) {
1382
+ if (!le(e)) return;
1146
1383
  const t = {};
1147
1384
  return typeof e.name == "string" && (t.name = e.name), typeof e.visible == "boolean" && (t.visible = e.visible), typeof e.locked == "boolean" && (t.locked = e.locked), typeof e.opacity == "number" && Number.isFinite(e.opacity) && e.opacity >= 0 && e.opacity <= 1 && (t.opacity = e.opacity), typeof e.color == "string" && (t.color = e.color), (typeof e.parentId == "string" || e.parentId === null) && (t.parentId = e.parentId), t;
1148
1385
  }
1149
- function Wa(e) {
1150
- if (!be(e)) return null;
1386
+ function ut(e) {
1387
+ if (!le(e)) return null;
1151
1388
  const t = {};
1152
- if (be(e.camadasOverrides))
1389
+ if (le(e.camadasOverrides))
1153
1390
  for (const [r, i] of Object.entries(e.camadasOverrides)) {
1154
- const o = qe(i);
1391
+ const o = He(i);
1155
1392
  if (!o) continue;
1156
- const n = qe(i.origem);
1393
+ const n = He(i.origem);
1157
1394
  t[r] = n ? { ...o, origem: n } : o;
1158
1395
  }
1159
1396
  const a = e.altura;
1160
1397
  return {
1161
1398
  versao: typeof e.versao == "number" ? e.versao : 1,
1162
- expandedLayerIds: re(e.expandedLayerIds),
1163
- collapsedLayerIds: re(e.collapsedLayerIds),
1399
+ expandedLayerIds: Q(e.expandedLayerIds),
1400
+ collapsedLayerIds: Q(e.collapsedLayerIds),
1164
1401
  camadaAtivaId: typeof e.camadaAtivaId == "string" ? e.camadaAtivaId : null,
1165
1402
  painelColapsado: typeof e.painelColapsado == "boolean" ? e.painelColapsado : void 0,
1166
- ordemCamadasIds: re(e.ordemCamadasIds),
1167
- ordemOrigemIds: Array.isArray(e.ordemOrigemIds) ? re(e.ordemOrigemIds) : void 0,
1403
+ ordemCamadasIds: Q(e.ordemCamadasIds),
1404
+ ordemOrigemIds: Array.isArray(e.ordemOrigemIds) ? Q(e.ordemOrigemIds) : void 0,
1405
+ ordemFilhosPorPai: (() => {
1406
+ if (!le(e.ordemFilhosPorPai)) return;
1407
+ const r = {};
1408
+ for (const [i, o] of Object.entries(e.ordemFilhosPorPai)) {
1409
+ const n = Q(o);
1410
+ n.length > 0 && (r[i] = n);
1411
+ }
1412
+ return Object.keys(r).length > 0 ? r : void 0;
1413
+ })(),
1168
1414
  mapaBaseAtivo: typeof e.mapaBaseAtivo == "string" ? e.mapaBaseAtivo : void 0,
1169
1415
  densidade: e.densidade === "compacto" || e.densidade === "normal" ? e.densidade : void 0,
1170
1416
  altura: typeof a == "number" && Number.isFinite(a) && a > 0 ? a : null,
@@ -1172,18 +1418,18 @@ function Wa(e) {
1172
1418
  ultimaAtualizacao: typeof e.ultimaAtualizacao == "number" ? e.ultimaAtualizacao : void 0
1173
1419
  };
1174
1420
  }
1175
- function he(e) {
1421
+ function ke(e) {
1176
1422
  if (typeof window > "u" || typeof localStorage > "u")
1177
1423
  return null;
1178
1424
  try {
1179
1425
  const t = localStorage.getItem(e);
1180
- return t ? Wa(JSON.parse(t)) : null;
1426
+ return t ? ut(JSON.parse(t)) : null;
1181
1427
  } catch (t) {
1182
1428
  console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`, t);
1183
1429
  }
1184
1430
  return null;
1185
1431
  }
1186
- function Ja(e, t) {
1432
+ function pt(e, t) {
1187
1433
  if (!(typeof window > "u" || typeof localStorage > "u"))
1188
1434
  try {
1189
1435
  localStorage.setItem(e, JSON.stringify(t));
@@ -1191,14 +1437,14 @@ function Ja(e, t) {
1191
1437
  console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
1192
1438
  }
1193
1439
  }
1194
- function Za(e) {
1440
+ function ft(e) {
1195
1441
  if (!(typeof window > "u" || typeof localStorage > "u"))
1196
1442
  try {
1197
1443
  localStorage.removeItem(e);
1198
1444
  } catch {
1199
1445
  }
1200
1446
  }
1201
- function ta(e) {
1447
+ function da(e) {
1202
1448
  return {
1203
1449
  name: e.name,
1204
1450
  visible: e.visible !== !1,
@@ -1208,58 +1454,61 @@ function ta(e) {
1208
1454
  parentId: e.parentId !== void 0 ? e.parentId : null
1209
1455
  };
1210
1456
  }
1211
- function et(e, t, a, r) {
1212
- var d;
1457
+ function mt(e, t, a, r) {
1458
+ var p;
1213
1459
  if (!Array.isArray(e)) return;
1214
1460
  const i = (t == null ? void 0 : t.camadasOverrides) || {}, o = new Set((t == null ? void 0 : t.expandedLayerIds) || []), n = new Set((t == null ? void 0 : t.collapsedLayerIds) || []), s = o.size > 0 || n.size > 0;
1215
- for (let u = 0; u < e.length; u++) {
1216
- const f = e[u], m = i[f.id];
1217
- if (r == null || r.set(f.id, ta(f)), m) {
1218
- const g = m.origem, b = (v) => {
1461
+ for (let d = 0; d < e.length; d++) {
1462
+ const f = e[d], m = i[f.id];
1463
+ if (r == null || r.set(f.id, da(f)), m) {
1464
+ const h = m.origem, v = (g) => {
1219
1465
  var k;
1220
- const E = (k = r == null ? void 0 : r.get(f.id)) == null ? void 0 : k[v];
1221
- return g !== void 0 && g[v] !== E;
1466
+ const w = (k = r == null ? void 0 : r.get(f.id)) == null ? void 0 : k[g];
1467
+ return h !== void 0 && h[g] !== w;
1222
1468
  };
1223
- typeof m.name == "string" && m.name.trim() && !b("name") && (f.name = m.name), typeof m.visible == "boolean" && !b("visible") && (f.visible = m.visible), typeof m.locked == "boolean" && !b("locked") && (f.locked = m.locked), typeof m.opacity == "number" && !b("opacity") && (f.opacity = m.opacity), typeof m.color == "string" && !b("color") && (f.color = m.color), m.parentId !== void 0 && !b("parentId") && (f.parentId = m.parentId);
1469
+ typeof m.name == "string" && m.name.trim() && !v("name") && (f.name = m.name), typeof m.visible == "boolean" && !v("visible") && (f.visible = m.visible), typeof m.locked == "boolean" && !v("locked") && (f.locked = m.locked), typeof m.opacity == "number" && !v("opacity") && (f.opacity = m.opacity), typeof m.color == "string" && !v("color") && (f.color = m.color), m.parentId !== void 0 && !v("parentId") && (f.parentId = m.parentId);
1224
1470
  }
1225
1471
  s ? o.has(f.id) ? a.add(f.id) : n.has(f.id) ? a.delete(f.id) : a.add(f.id) : a.add(f.id);
1226
1472
  }
1227
- for (let u = 0; u < e.length; u++) {
1228
- const f = e[u];
1229
- f.parentId && (f.parentId === f.id || Y(e, f.parentId, f.id)) && (f.parentId = ((d = r == null ? void 0 : r.get(f.id)) == null ? void 0 : d.parentId) ?? null);
1473
+ for (let d = 0; d < e.length; d++) {
1474
+ const f = e[d];
1475
+ f.parentId && (f.parentId === f.id || N(e, f.parentId, f.id)) && (f.parentId = ((p = r == null ? void 0 : r.get(f.id)) == null ? void 0 : p.parentId) ?? null);
1230
1476
  }
1231
- const c = new Set(e.map((u) => u.id)), l = t == null ? void 0 : t.ordemOrigemIds;
1477
+ const c = new Set(e.map((d) => d.id)), l = t == null ? void 0 : t.ordemOrigemIds;
1232
1478
  if (!(Array.isArray(l) && (() => {
1233
- const u = new Set(l), f = (m) => m.filter((g) => c.has(g) && u.has(g)).join("|");
1479
+ const d = new Set(l), f = (m) => m.filter((h) => c.has(h) && d.has(h)).join("|");
1234
1480
  return f(l) !== f(e.map((m) => m.id));
1235
1481
  })()) && Array.isArray(t == null ? void 0 : t.ordemCamadasIds) && t.ordemCamadasIds.length > 0) {
1236
- const u = /* @__PURE__ */ new Map();
1237
- t.ordemCamadasIds.forEach((f, m) => u.set(f, m)), e.sort((f, m) => {
1238
- const g = u.has(f.id) ? u.get(f.id) : 9999, b = u.has(m.id) ? u.get(m.id) : 9999;
1239
- return g - b;
1482
+ const d = /* @__PURE__ */ new Map();
1483
+ t.ordemCamadasIds.forEach((f, m) => d.set(f, m)), e.sort((f, m) => {
1484
+ const h = d.has(f.id) ? d.get(f.id) : 9999, v = d.has(m.id) ? d.get(m.id) : 9999;
1485
+ return h - v;
1240
1486
  });
1241
1487
  }
1242
1488
  }
1243
- function at(e) {
1489
+ function gt(e) {
1244
1490
  const { estadoAnterior: t, camadas: a, expandedLayers: r } = e;
1245
1491
  let i = (t == null ? void 0 : t.expandedLayerIds) || [], o = (t == null ? void 0 : t.collapsedLayerIds) || [], n = (t == null ? void 0 : t.ordemCamadasIds) || [], s = t == null ? void 0 : t.ordemOrigemIds;
1246
1492
  const c = {
1247
1493
  ...(t == null ? void 0 : t.camadasOverrides) || {}
1248
1494
  };
1249
- a.length > 0 && (i = [], o = [], n = a.map((l) => l.id), s = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((l) => {
1495
+ a.length > 0 && (i = [], o = [], n = a.map((u) => u.id), s = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((u) => {
1250
1496
  var p, d;
1251
- r.has(l.id) ? i.push(l.id) : o.push(l.id), c[l.id] = {
1252
- name: l.name,
1253
- visible: l.visible !== !1,
1254
- locked: !!l.locked,
1255
- opacity: typeof l.opacity == "number" ? l.opacity : 1,
1256
- color: l.color || "#00E08A",
1257
- parentId: l.parentId !== void 0 ? l.parentId : null,
1258
- origem: ((p = e.origensCamadas) == null ? void 0 : p.get(l.id)) ?? ((d = c[l.id]) == null ? void 0 : d.origem)
1497
+ r.has(u.id) ? i.push(u.id) : o.push(u.id), c[u.id] = {
1498
+ name: u.name,
1499
+ visible: u.visible !== !1,
1500
+ locked: !!u.locked,
1501
+ opacity: typeof u.opacity == "number" ? u.opacity : 1,
1502
+ color: u.color || "#00E08A",
1503
+ parentId: u.parentId !== void 0 ? u.parentId : null,
1504
+ origem: ((p = e.origensCamadas) == null ? void 0 : p.get(u.id)) ?? ((d = c[u.id]) == null ? void 0 : d.origem)
1259
1505
  };
1260
1506
  }));
1261
- for (const l of e.camadasRemovidas ?? []) delete c[l];
1262
- return {
1507
+ for (const u of e.camadasRemovidas ?? []) delete c[u];
1508
+ let l;
1509
+ return e.ordemFilhosPorPai && e.ordemFilhosPorPai.size > 0 ? (l = {}, e.ordemFilhosPorPai.forEach((u, p) => {
1510
+ u.length > 0 && (l[p] = [...u]);
1511
+ }), Object.keys(l).length === 0 && (l = void 0)) : !a.length && (t != null && t.ordemFilhosPorPai) && (l = t.ordemFilhosPorPai), {
1263
1512
  versao: 1,
1264
1513
  expandedLayerIds: i,
1265
1514
  collapsedLayerIds: o,
@@ -1267,6 +1516,7 @@ function at(e) {
1267
1516
  painelColapsado: e.painelColapsado,
1268
1517
  ordemCamadasIds: n,
1269
1518
  ordemOrigemIds: s,
1519
+ ordemFilhosPorPai: l,
1270
1520
  mapaBaseAtivo: e.mapaBaseAtivo,
1271
1521
  densidade: e.densidade,
1272
1522
  altura: e.altura,
@@ -1274,25 +1524,25 @@ function at(e) {
1274
1524
  ultimaAtualizacao: Date.now()
1275
1525
  };
1276
1526
  }
1277
- const tt = `:host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-respiro: 8px;--camada-barra-altura: 28px;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-indent-nivel: 16px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-degrade-interno, var(--ui-camadas-fundo, var(--ui-fundo-superficie, var(--ui-cor-superficie, #141417))));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-camadas-toggle-fundo, var(--ui-fundo-superficie, var(--ui-cor-superficie, #141417)));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 var(--camada-respiro) var(--camada-respiro);display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro));padding:0 var(--camada-respiro);gap:8px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:24px;height:24px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);border:none;color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-children-container{position:relative}.ui-children-container:before{content:"";position:absolute;top:0;bottom:10px;left:calc(64px + var(--parent-depth, 0) * var(--camada-indent-nivel, 16px) + 7px);width:1.5px;background:color-mix(in srgb,var(--parent-layer-color, var(--layer-active-color, var(--ui-cor-primaria, #00E08A))) 48%,transparent);pointer-events:none;z-index:2}.ui-children-container:has(>.ui-empty-row):before{display:none}.ui-col-chevron,.ui-feat-row .ui-col-thumb{position:relative;margin-left:calc(var(--layer-depth, 0) * var(--camada-indent-nivel, 16px))}.ui-layer-row.is-sublayer .ui-col-chevron:before,.ui-feat-row .ui-col-thumb:before{content:"";position:absolute;left:-9px;top:50%;width:8px;height:1.5px;transform:translateY(-50%);background:color-mix(in srgb,var(--parent-layer-color, var(--layer-active-color, var(--ui-cor-primaria, #00E08A))) 48%,transparent);pointer-events:none}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions,.ui-layer-row:focus-within .ui-col-actions,.ui-feat-row:focus-within .ui-col-actions,.ui-col-actions:has(.ui-micro-btn.active){opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 var(--camada-respiro);gap:6px;box-sizing:border-box;overflow:hidden;position:relative;flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro))}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{display:inline-flex;align-items:center;color:var(--ui-cor-texto-secundario, #888899);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 8px;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-footer-right{display:flex;align-items:center;gap:4px;flex:1 1 auto;min-width:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:var(--ui-cor-texto-erro, #ff5555);background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 15%,transparent)}.ui-footer-btn.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c)!important;color:var(--ui-cor-botao-destrutivo-texto, #ffffff)!important}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0}.ui-footer-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;--_chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background:var(--_chevron) right 6px center / 10px no-repeat,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background:var(--_chevron) right 6px center / 10px no-repeat,var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-drawer-btn-sublayer{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.ui-truncate-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;margin:4px 8px 6px;background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #1a1a1e) 70%,transparent);border:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 4px);font-size:10px;color:var(--ui-cor-texto-secundario, #9696a6)}.ui-truncate-notice span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-truncate-more-btn{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 4px);color:var(--ui-cor-primaria, #00E08A);font-size:10px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--camada-transicao)}.ui-truncate-more-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .08));border-color:var(--ui-cor-primaria, #00E08A)}.ui-truncate-more-btn:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}:host(.degrade),:host(.gradiente),:host([data-degrade]:not([data-degrade="false"])),.ui-camadas-container[data-degrade]:not([data-degrade=false]){--ui-camadas-fundo: var(--ui-gradiente-superficie);--ui-camadas-toggle-fundo: var(--ui-gradiente-superficie)}`;
1278
- function rt(e, t) {
1527
+ const ht = `:host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-respiro: 8px;--camada-barra-altura: 28px;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-indent-nivel: 16px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-degrade-interno, var(--ui-camadas-fundo, var(--ui-fundo-superficie, var(--ui-cor-superficie, #141417))));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-camadas-toggle-fundo, var(--ui-fundo-superficie, var(--ui-cor-superficie, #141417)));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 var(--camada-respiro) var(--camada-respiro);display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro));padding:0 var(--camada-respiro);gap:8px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:24px;height:24px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);border:none;color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-children-container{position:relative}.ui-children-container:before{content:"";position:absolute;top:0;bottom:10px;left:calc(64px + var(--parent-depth, 0) * var(--camada-indent-nivel, 16px) + 7px);width:1.5px;background:color-mix(in srgb,var(--parent-layer-color, var(--layer-active-color, var(--ui-cor-primaria, #00E08A))) 48%,transparent);pointer-events:none;z-index:2}.ui-children-container:has(>.ui-empty-row):before{display:none}.ui-col-chevron,.ui-feat-row .ui-col-thumb{position:relative;margin-left:calc(var(--layer-depth, 0) * var(--camada-indent-nivel, 16px))}.ui-layer-row.is-sublayer .ui-col-chevron:before,.ui-feat-row .ui-col-thumb:before{content:"";position:absolute;left:-9px;top:50%;width:8px;height:1.5px;transform:translateY(-50%);background:color-mix(in srgb,var(--parent-layer-color, var(--layer-active-color, var(--ui-cor-primaria, #00E08A))) 48%,transparent);pointer-events:none}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions,.ui-layer-row:focus-within .ui-col-actions,.ui-feat-row:focus-within .ui-col-actions,.ui-col-actions:has(.ui-micro-btn.active){opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 var(--camada-respiro);gap:6px;box-sizing:border-box;overflow:hidden;position:relative;flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro))}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{display:inline-flex;align-items:center;color:var(--ui-cor-texto-secundario, #888899);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 8px;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-footer-right{display:flex;align-items:center;gap:4px;flex:1 1 auto;min-width:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:var(--ui-cor-texto-erro, #ff5555);background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 15%,transparent)}.ui-footer-btn.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c)!important;color:var(--ui-cor-botao-destrutivo-texto, #ffffff)!important}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0}.ui-footer-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;--_chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background:var(--_chevron) right 6px center / 10px no-repeat,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background:var(--_chevron) right 6px center / 10px no-repeat,var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-drawer-btn-sublayer{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.ui-truncate-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;margin:4px 8px 6px;background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #1a1a1e) 70%,transparent);border:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 4px);font-size:10px;color:var(--ui-cor-texto-secundario, #9696a6)}.ui-truncate-notice span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-truncate-more-btn{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 4px);color:var(--ui-cor-primaria, #00E08A);font-size:10px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--camada-transicao)}.ui-truncate-more-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .08));border-color:var(--ui-cor-primaria, #00E08A)}.ui-truncate-more-btn:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}:host(.degrade),:host(.gradiente),:host([data-degrade]:not([data-degrade="false"])),.ui-camadas-container[data-degrade]:not([data-degrade=false]){--ui-camadas-fundo: var(--ui-gradiente-superficie);--ui-camadas-toggle-fundo: var(--ui-gradiente-superficie)}`;
1528
+ function vt(e, t) {
1279
1529
  t.querySelectorAll("[data-layer-row]").forEach((r) => {
1280
1530
  const o = r.getAttribute("data-layer-row") === e.camadaAtivaId;
1281
- r.classList.toggle("active-drawing-layer", o), Te(r, "camada-ativa", o), o ? r.setAttribute("aria-current", "true") : r.removeAttribute("aria-current");
1531
+ r.classList.toggle("active-drawing-layer", o), _e(r, "camada-ativa", o), o ? r.setAttribute("aria-current", "true") : r.removeAttribute("aria-current");
1282
1532
  });
1283
1533
  }
1284
- function it(e, t) {
1534
+ function bt(e, t) {
1285
1535
  t.querySelectorAll(".ui-feat-row").forEach((a) => {
1286
1536
  const r = a.getAttribute("data-feat-row"), i = r ? e.selectedFeatureIds.has(r) : !1;
1287
- a.classList.toggle("selected-row", i), Te(a, "feicao-selecionada", i), a.setAttribute("aria-selected", String(i));
1537
+ a.classList.toggle("selected-row", i), _e(a, "feicao-selecionada", i), a.setAttribute("aria-selected", String(i));
1288
1538
  const o = a.querySelector(".ui-target-circle");
1289
1539
  o && o.classList.toggle("selected", i);
1290
1540
  }), t.querySelectorAll(".ui-layer-group").forEach((a) => {
1291
- const r = a.getAttribute("data-layer-id"), i = W(e.camadas, e.feicoes, r ?? ""), o = V(i, e.searchQuery);
1292
- ra(a.querySelector(".ui-layer-row .ui-target-circle"), o, e.selectedFeatureIds);
1293
- }), ia(e, t);
1541
+ const r = a.getAttribute("data-layer-id"), i = ae(e.camadas, e.feicoes, r ?? ""), o = W(i, e.searchQuery);
1542
+ ua(a.querySelector(".ui-layer-row .ui-target-circle"), o, e.selectedFeatureIds);
1543
+ }), pa(e, t);
1294
1544
  }
1295
- function ra(e, t, a) {
1545
+ function ua(e, t, a) {
1296
1546
  if (!e) return;
1297
1547
  if (t.length === 0) {
1298
1548
  e.classList.remove("selected", "partial");
@@ -1301,28 +1551,28 @@ function ra(e, t, a) {
1301
1551
  const r = t.every((o) => a.has(o.id)), i = !r && t.some((o) => a.has(o.id));
1302
1552
  e.classList.toggle("selected", r), e.classList.toggle("partial", i);
1303
1553
  }
1304
- function ia(e, t) {
1305
- const a = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id)), r = a.length > 0, i = t.getElementById("footer-count"), o = t.getElementById("footer-label");
1554
+ function pa(e, t) {
1555
+ const a = e.feicoes.filter((p) => e.selectedFeatureIds.has(p.id)), r = a.length > 0, i = t.getElementById("footer-count"), o = t.getElementById("footer-label");
1306
1556
  if (i && (i.textContent = String(r ? a.length : e.camadas.length)), o) {
1307
- const d = _e(e.camadas.length, a.length);
1308
- o.innerHTML = d.icone, o.title = d.texto, o.setAttribute("aria-label", d.texto);
1557
+ const p = Je(e.camadas.length, a.length);
1558
+ o.innerHTML = p.icone, o.title = p.texto, o.setAttribute("aria-label", p.texto);
1309
1559
  }
1310
1560
  const n = t.querySelector(".ui-tree-footer");
1311
1561
  n && (n.classList.toggle("tem-selecao", r), n.classList.toggle("sem-selecao", !r));
1312
1562
  const s = t.querySelector(".ui-footer-actions-gerais");
1313
1563
  s && (s.style.display = r ? "none" : "flex");
1314
1564
  const c = t.querySelector(".ui-footer-bulk-actions");
1315
- c && (c.style.display = r ? "flex" : "none"), ["btn-footer-del"].forEach((d) => {
1316
- const u = t.getElementById(d);
1317
- u && (u.disabled = !r, u.classList.toggle("disabled", !r));
1565
+ c && (c.style.display = r ? "flex" : "none"), ["btn-footer-del"].forEach((p) => {
1566
+ const d = t.getElementById(p);
1567
+ d && (d.disabled = !r, d.classList.toggle("disabled", !r));
1318
1568
  });
1319
1569
  const l = t.querySelector(".ui-footer-move-wrapper");
1320
1570
  l && l.classList.toggle("disabled", !r);
1321
- const p = t.getElementById("select-footer-move");
1322
- p && (p.disabled = !r);
1571
+ const u = t.getElementById("select-footer-move");
1572
+ u && (u.disabled = !r);
1323
1573
  }
1324
- function Pe(e, t) {
1325
- const a = le(e.camadas), r = new Map(e.camadas.map((n) => [n.id, n]));
1574
+ function Ge(e, t) {
1575
+ const a = fe(e.camadas), r = new Map(e.camadas.map((n) => [n.id, n]));
1326
1576
  t.querySelectorAll(".ui-layer-row").forEach((n) => {
1327
1577
  const s = a.get(n.getAttribute("data-layer-row") || "");
1328
1578
  n.classList.toggle("herdado-oculto", (s == null ? void 0 : s.ocultaPorAncestral) === !0), n.classList.toggle("herdado-travado", (s == null ? void 0 : s.travadaPorAncestral) === !0);
@@ -1331,18 +1581,18 @@ function Pe(e, t) {
1331
1581
  t.querySelectorAll(".ui-feat-row").forEach((n) => {
1332
1582
  const s = n.getAttribute("data-feat-layer") || "", c = r.get(s), l = a.get(s);
1333
1583
  n.classList.toggle("herdado-oculto", (c == null ? void 0 : c.visible) === !1 || (l == null ? void 0 : l.ocultaPorAncestral) === !0);
1334
- const p = n.querySelector("[data-feat-lock]"), d = i.get(n.getAttribute("data-feat-row") || "");
1335
- if (!p || !d) return;
1336
- const u = (c == null ? void 0 : c.locked) === !0 || (l == null ? void 0 : l.travadaPorAncestral) === !0, f = d.locked === !0 || u;
1337
- p.innerHTML = f ? y.cadeadoTrancado : y.cadeadoAberto, p.classList.toggle("ui-lock-open", !f), u ? p.setAttribute("data-locked-by-layer", "true") : p.removeAttribute("data-locked-by-layer"), D(
1338
- p,
1339
- u ? "Bloqueada pela camada" : f ? "Desbloquear Feição" : "Bloquear Feição"
1584
+ const u = n.querySelector("[data-feat-lock]"), p = i.get(n.getAttribute("data-feat-row") || "");
1585
+ if (!u || !p) return;
1586
+ const d = (c == null ? void 0 : c.locked) === !0 || (l == null ? void 0 : l.travadaPorAncestral) === !0, f = p.locked === !0 || d;
1587
+ u.innerHTML = f ? b.cadeadoTrancado : b.cadeadoAberto, u.classList.toggle("ui-lock-open", !f), d ? u.setAttribute("data-locked-by-layer", "true") : u.removeAttribute("data-locked-by-layer"), T(
1588
+ u,
1589
+ d ? "Bloqueada pela camada" : f ? "Desbloquear Feição" : "Bloquear Feição"
1340
1590
  );
1341
1591
  });
1342
1592
  const o = t.getElementById("select-footer-move");
1343
- o && (o.innerHTML = `<option value="" disabled selected>Mover para...</option>${Ge(e.camadas)}`);
1593
+ o && (o.innerHTML = `<option value="" disabled selected>Mover para...</option>${We(e.camadas)}`);
1344
1594
  }
1345
- function ot(e, t) {
1595
+ function yt(e, t) {
1346
1596
  t.querySelectorAll("[data-layer-row]").forEach((i) => {
1347
1597
  i.addEventListener("click", (o) => {
1348
1598
  if (o.target.closest(
@@ -1361,10 +1611,10 @@ function ot(e, t) {
1361
1611
  const s = i.closest(".ui-layer-group"), c = i.querySelector(".ui-chevron-icon"), l = e.expandedLayers.has(n);
1362
1612
  if (c && c.classList.toggle("open", l), s) {
1363
1613
  s.setAttribute("aria-expanded", String(l));
1364
- const p = s.querySelector(".ui-children-container");
1365
- p && (p.style.display = l ? "block" : "none");
1614
+ const u = s.querySelector(".ui-children-container");
1615
+ u && (u.style.display = l ? "block" : "none");
1366
1616
  }
1367
- D(i, l ? "Recolher grupo" : "Expandir grupo"), nt(e, t), e.salvarLembrancaEstado();
1617
+ T(i, l ? "Recolher grupo" : "Expandir grupo"), xt(e, t), e.salvarLembrancaEstado();
1368
1618
  });
1369
1619
  }), t.querySelectorAll("[data-layer-eye]").forEach((i) => {
1370
1620
  i.addEventListener("click", (o) => {
@@ -1373,9 +1623,9 @@ function ot(e, t) {
1373
1623
  if (s) {
1374
1624
  s.visible = s.visible === !1;
1375
1625
  const c = s.visible !== !1;
1376
- i.innerHTML = c ? y.olhoAberto : y.olhoFechado, D(i, c ? "Ocultar Camada" : "Exibir Camada");
1626
+ i.innerHTML = c ? b.olhoAberto : b.olhoFechado, T(i, c ? "Ocultar Camada" : "Exibir Camada");
1377
1627
  const l = i.closest(".ui-layer-row");
1378
- l && l.classList.toggle("hidden-layer", !c), st(e, t), Pe(e, t), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1628
+ l && l.classList.toggle("hidden-layer", !c), wt(e, t), Ge(e, t), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1379
1629
  camadaId: s.id,
1380
1630
  visivel: c
1381
1631
  });
@@ -1385,7 +1635,7 @@ function ot(e, t) {
1385
1635
  i.addEventListener("click", (o) => {
1386
1636
  o.stopPropagation();
1387
1637
  const n = i.getAttribute("data-layer-lock"), s = e.camadas.find((c) => c.id === n);
1388
- s && (s.locked = !s.locked, i.innerHTML = s.locked ? y.cadeadoTrancado : y.cadeadoAberto, i.classList.toggle("ui-lock-open", !s.locked), D(i, s.locked ? "Desbloquear Camada" : "Bloquear Camada"), Pe(e, t), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1638
+ s && (s.locked = !s.locked, i.innerHTML = s.locked ? b.cadeadoTrancado : b.cadeadoAberto, i.classList.toggle("ui-lock-open", !s.locked), T(i, s.locked ? "Desbloquear Camada" : "Bloquear Camada"), Ge(e, t), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1389
1639
  camadaId: s.id,
1390
1640
  bloqueado: s.locked
1391
1641
  }));
@@ -1410,31 +1660,31 @@ function ot(e, t) {
1410
1660
  const a = (i, o, n) => {
1411
1661
  const s = e.camadas.find((f) => f.id === i);
1412
1662
  if (!s) return;
1413
- const c = G(o, s.color || "#00E08A");
1663
+ const c = K(o, s.color || "#00E08A");
1414
1664
  s.color = c;
1415
1665
  const l = t.getElementById(`sample-color-${i}`);
1416
1666
  l && (l.style.backgroundColor = c);
1417
- const p = t.getElementById(`hex-color-${i}`);
1418
- p && (p.textContent = c.toUpperCase());
1419
- const d = t.getElementById(`settings-drawer-${i}`);
1420
- d && d.style.setProperty("--drawer-cor-camada", c);
1421
- const u = P(t, "data-layer-row", i);
1422
- if (u) {
1423
- const f = u.closest(".ui-layer-group");
1667
+ const u = t.getElementById(`hex-color-${i}`);
1668
+ u && (u.textContent = c.toUpperCase());
1669
+ const p = t.getElementById(`settings-drawer-${i}`);
1670
+ p && p.style.setProperty("--drawer-cor-camada", c);
1671
+ const d = D(t, "data-layer-row", i);
1672
+ if (d) {
1673
+ const f = d.closest(".ui-layer-group");
1424
1674
  f == null || f.style.setProperty("--layer-active-color", c);
1425
1675
  const m = f == null ? void 0 : f.querySelector(":scope > .ui-children-container");
1426
1676
  m == null || m.style.setProperty("--parent-layer-color", c);
1427
- const g = u.querySelector(".ui-col-colorbar");
1428
- g && (g.style.backgroundColor = c);
1429
- const b = new Map(e.feicoes.map((v) => [v.id, v]));
1430
- f == null || f.querySelectorAll(".ui-feat-row").forEach((v) => {
1431
- if (v.getAttribute("data-feat-layer") !== i) return;
1432
- const E = v.querySelector(".ui-col-colorbar");
1433
- E && (E.style.backgroundColor = c);
1434
- const k = b.get(v.getAttribute("data-feat-row") || "");
1677
+ const h = d.querySelector(".ui-col-colorbar");
1678
+ h && (h.style.backgroundColor = c);
1679
+ const v = new Map(e.feicoes.map((g) => [g.id, g]));
1680
+ f == null || f.querySelectorAll(".ui-feat-row").forEach((g) => {
1681
+ if (g.getAttribute("data-feat-layer") !== i) return;
1682
+ const w = g.querySelector(".ui-col-colorbar");
1683
+ w && (w.style.backgroundColor = c);
1684
+ const k = v.get(g.getAttribute("data-feat-row") || "");
1435
1685
  if (!k || k.color) return;
1436
- const C = v.querySelector(".ui-thumb-box");
1437
- C && (C.innerHTML = Ve(k.type || k.geometryType, c, k.coordinates));
1686
+ const L = g.querySelector(".ui-thumb-box");
1687
+ L && (L.innerHTML = ea(k.type || k.geometryType, c, k.coordinates));
1438
1688
  });
1439
1689
  }
1440
1690
  n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: s.id, cor: c });
@@ -1443,19 +1693,19 @@ function ot(e, t) {
1443
1693
  const o = i, n = (s) => (c) => {
1444
1694
  const l = o.getAttribute("data-layer-color-picker");
1445
1695
  if (!l) return;
1446
- const p = c.target.value;
1447
- a(l, p, s);
1696
+ const u = c.target.value;
1697
+ a(l, u, s);
1448
1698
  };
1449
1699
  o.addEventListener("input", n(!1)), o.addEventListener("change", n(!0));
1450
1700
  }), t.querySelectorAll("[data-layer-color]").forEach((i) => {
1451
1701
  const o = (n) => {
1452
1702
  n.stopPropagation();
1453
1703
  const s = i.getAttribute("data-layer-color"), c = e.camadas.find((l) => l.id === s);
1454
- !s || !c || Fa({
1704
+ !s || !c || Oa({
1455
1705
  ancora: i,
1456
1706
  titulo: `Cor · ${c.name || "Camada"}`,
1457
1707
  modo: "simples",
1458
- cor: G(c.color, "#00E08A"),
1708
+ cor: K(c.color, "#00E08A"),
1459
1709
  mostrarOpacidade: !1,
1460
1710
  aoAlterar: (l) => a(s, l.cor, !1),
1461
1711
  aoConfirmar: (l) => a(s, l.cor, !0),
@@ -1473,7 +1723,7 @@ function ot(e, t) {
1473
1723
  n.opacity = o;
1474
1724
  const s = t.getElementById(`badge-op-${i}`);
1475
1725
  s && (s.textContent = `${Math.round(o * 100)}%`);
1476
- const c = P(t, "data-layer-opacity-slider", i);
1726
+ const c = D(t, "data-layer-opacity-slider", i);
1477
1727
  c && parseFloat(c.value) !== o && (c.value = String(o)), e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-opacidade", { camadaId: n.id, opacidade: o });
1478
1728
  };
1479
1729
  t.querySelectorAll("[data-layer-opacity-slider]").forEach((i) => {
@@ -1496,29 +1746,29 @@ function ot(e, t) {
1496
1746
  if (!c) return;
1497
1747
  if (i.classList.contains("confirming")) {
1498
1748
  n(), e.dispararEvento("ui-camada-excluida", { camadaId: c });
1499
- const p = e.selectedFeatureIds.size;
1500
- e.camadas.forEach((d) => {
1501
- d.parentId === c && (d.parentId = null);
1502
- }), e.removerCamada(c), e.selectedFeatureIds.size !== p && e.notificarMudancaSelecao();
1749
+ const u = e.selectedFeatureIds.size;
1750
+ e.camadas.forEach((p) => {
1751
+ p.parentId === c && (p.parentId = null);
1752
+ }), e.removerCamada(c), e.selectedFeatureIds.size !== u && e.notificarMudancaSelecao();
1503
1753
  } else {
1504
1754
  i.classList.add("confirming");
1505
- const p = i.querySelector(".ui-btn-label");
1506
- p && (p.textContent = "Confirmar Exclusão?"), o = setTimeout(n, 3500);
1755
+ const u = i.querySelector(".ui-btn-label");
1756
+ u && (u.textContent = "Confirmar Exclusão?"), o = setTimeout(n, 3500);
1507
1757
  }
1508
1758
  });
1509
1759
  }), t.querySelectorAll("[data-layer-parent-select]").forEach((i) => {
1510
1760
  i.addEventListener("change", (o) => {
1511
- const n = o.target, s = n.getAttribute("data-layer-parent-select"), c = n.value || null, l = e.camadas.find((p) => p.id === s);
1761
+ const n = o.target, s = n.getAttribute("data-layer-parent-select"), c = n.value || null, l = e.camadas.find((u) => u.id === s);
1512
1762
  if (l) {
1513
- if (c && (c === l.id || Y(e.camadas, c, l.id))) {
1763
+ if (c && (c === l.id || N(e.camadas, c, l.id))) {
1514
1764
  n.value = l.parentId || "";
1515
1765
  return;
1516
1766
  }
1517
- const p = l.parentId ?? null;
1767
+ const u = l.parentId ?? null;
1518
1768
  l.parentId = c, c && e.expandedLayers.add(c), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-mover-hierarquia", {
1519
1769
  camadaId: l.id,
1520
1770
  novoParentId: c,
1521
- parentAnteriorId: p,
1771
+ parentAnteriorId: u,
1522
1772
  camada: l
1523
1773
  }), e.solicitarRenderizacao();
1524
1774
  }
@@ -1529,18 +1779,18 @@ function ot(e, t) {
1529
1779
  const n = i.getAttribute("data-add-sublayer");
1530
1780
  e.dispararEvento("ui-camada-adicionar", { parentId: n });
1531
1781
  });
1532
- }), oa(e, t), t.querySelectorAll("[data-layer-target]").forEach((i) => {
1782
+ }), fa(e, t), t.querySelectorAll("[data-layer-target]").forEach((i) => {
1533
1783
  i.addEventListener("click", (o) => {
1534
1784
  o.stopPropagation();
1535
1785
  const n = o, s = i.getAttribute("data-layer-target");
1536
1786
  if (!s) return;
1537
- const c = W(e.camadas, e.feicoes, s), l = V(c, e.searchQuery);
1787
+ const c = ae(e.camadas, e.feicoes, s), l = W(c, e.searchQuery);
1538
1788
  if (l.length === 0) return;
1539
- l.every((d) => e.selectedFeatureIds.has(d.id)) ? l.forEach((d) => e.selectedFeatureIds.delete(d.id)) : (!n.ctrlKey && !n.metaKey && e.selectedFeatureIds.clear(), l.forEach((d) => e.selectedFeatureIds.add(d.id))), e.lastClickedFeatureId = l[l.length - 1].id, e.sincronizarSelecaoDOM(), e.notificarMudancaSelecao();
1789
+ l.every((p) => e.selectedFeatureIds.has(p.id)) ? l.forEach((p) => e.selectedFeatureIds.delete(p.id)) : (!n.ctrlKey && !n.metaKey && e.selectedFeatureIds.clear(), l.forEach((p) => e.selectedFeatureIds.add(p.id))), e.lastClickedFeatureId = l[l.length - 1].id, e.sincronizarSelecaoDOM(), e.notificarMudancaSelecao();
1540
1790
  });
1541
1791
  });
1542
1792
  }
1543
- function oa(e, t) {
1793
+ function fa(e, t) {
1544
1794
  t.querySelectorAll("[data-layer-show-more]").forEach((a) => {
1545
1795
  a.addEventListener("click", (r) => {
1546
1796
  r.stopPropagation();
@@ -1549,49 +1799,49 @@ function oa(e, t) {
1549
1799
  });
1550
1800
  });
1551
1801
  }
1552
- function nt(e, t) {
1802
+ function xt(e, t) {
1553
1803
  const a = t.getElementById("btn-toggle-all-expand");
1554
1804
  if (!a) return;
1555
1805
  const r = e.camadas.length > 0 && e.camadas.every((o) => e.expandedLayers.has(o.id)), i = a.querySelector(".ui-chevron-icon");
1556
- i && i.classList.toggle("open", r), D(
1806
+ i && i.classList.toggle("open", r), T(
1557
1807
  a,
1558
1808
  r ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"
1559
1809
  );
1560
1810
  }
1561
- function st(e, t) {
1811
+ function wt(e, t) {
1562
1812
  const a = t.getElementById("btn-toggle-all-vis");
1563
1813
  if (!a) return;
1564
1814
  const r = e.camadas.every((i) => i.visible !== !1);
1565
- a.innerHTML = r ? y.olhoAberto : y.olhoFechado, D(a, r ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1815
+ a.innerHTML = r ? b.olhoAberto : b.olhoFechado, T(a, r ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1566
1816
  }
1567
- function lt(e, t) {
1817
+ function At(e, t) {
1568
1818
  const a = t.getElementById("select-footer-move");
1569
1819
  a && a.addEventListener("change", (n) => {
1570
1820
  const s = n.target.value;
1571
1821
  if (!s) return;
1572
- const c = ie(e.camadas);
1822
+ const c = ce(e.camadas);
1573
1823
  if (c.has(s)) {
1574
1824
  a.value = "";
1575
1825
  return;
1576
1826
  }
1577
1827
  const l = e.feicoes.filter(
1578
- (d) => e.selectedFeatureIds.has(d.id) && !c.has(d.layerId) && d.locked !== !0
1828
+ (p) => e.selectedFeatureIds.has(p.id) && !c.has(p.layerId) && p.locked !== !0
1579
1829
  );
1580
1830
  if (l.length === 0) {
1581
1831
  a.value = "";
1582
1832
  return;
1583
1833
  }
1584
- const p = new Map(l.map((d) => [d.id, d.layerId]));
1585
- l.forEach((d) => d.layerId = s), l.forEach((d) => {
1586
- p.get(d.id) !== s && e.dispararEvento("ui-feicao-movida", {
1587
- feicaoId: d.id,
1588
- camadaOrigemId: p.get(d.id),
1834
+ const u = new Map(l.map((p) => [p.id, p.layerId]));
1835
+ l.forEach((p) => p.layerId = s), l.forEach((p) => {
1836
+ u.get(p.id) !== s && e.dispararEvento("ui-feicao-movida", {
1837
+ feicaoId: p.id,
1838
+ camadaOrigemId: u.get(p.id),
1589
1839
  camadaDestinoId: s,
1590
- feicao: d
1840
+ feicao: p
1591
1841
  });
1592
1842
  }), e.dispararEvento("ui-acao-massa", {
1593
1843
  acao: "mover",
1594
- feicoesIds: l.map((d) => d.id),
1844
+ feicoesIds: l.map((p) => p.id),
1595
1845
  feicoes: l,
1596
1846
  valor: s
1597
1847
  }), e.solicitarRenderizacao();
@@ -1608,45 +1858,45 @@ function lt(e, t) {
1608
1858
  if (o) {
1609
1859
  let n = null;
1610
1860
  const s = "Excluir selecionados", c = () => {
1611
- n && (clearTimeout(n), n = null), o.classList.remove("confirming"), D(o, s);
1861
+ n && (clearTimeout(n), n = null), o.classList.remove("confirming"), T(o, s);
1612
1862
  };
1613
1863
  o.addEventListener("ui-cancelar-confirmacao", c), o.addEventListener("click", () => {
1614
- const l = ie(e.camadas), p = e.feicoes.filter(
1864
+ const l = ce(e.camadas), u = e.feicoes.filter(
1615
1865
  (f) => e.selectedFeatureIds.has(f.id) && !l.has(f.layerId) && f.locked !== !0
1616
1866
  );
1617
- if (p.length === 0) return;
1618
- const d = p.map((f) => f.id);
1867
+ if (u.length === 0) return;
1868
+ const p = u.map((f) => f.id);
1619
1869
  if (!o.classList.contains("confirming")) {
1620
- o.classList.add("confirming"), D(o, `Clique novamente para excluir ${d.length} selecionado(s)`), n = setTimeout(c, 3500);
1870
+ o.classList.add("confirming"), T(o, `Clique novamente para excluir ${p.length} selecionado(s)`), n = setTimeout(c, 3500);
1621
1871
  return;
1622
1872
  }
1623
1873
  c();
1624
- const u = new Set(d);
1625
- e.feicoes = e.feicoes.filter((f) => !u.has(f.id)), d.forEach((f) => e.selectedFeatureIds.delete(f)), e.lastClickedFeatureId && u.has(e.lastClickedFeatureId) && (e.lastClickedFeatureId = null), e.dispararEvento("ui-acao-massa", {
1874
+ const d = new Set(p);
1875
+ e.feicoes = e.feicoes.filter((f) => !d.has(f.id)), p.forEach((f) => e.selectedFeatureIds.delete(f)), e.lastClickedFeatureId && d.has(e.lastClickedFeatureId) && (e.lastClickedFeatureId = null), e.dispararEvento("ui-acao-massa", {
1626
1876
  acao: "excluir",
1627
- feicoesIds: d,
1628
- feicoes: p
1877
+ feicoesIds: p,
1878
+ feicoes: u
1629
1879
  }), e.notificarMudancaSelecao(), e.solicitarRenderizacao();
1630
1880
  });
1631
1881
  }
1632
1882
  }
1633
- const ct = [
1883
+ const Et = [
1634
1884
  { tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
1635
1885
  { tipo: "olho", atributo: "data-feat-eye", entidade: "feicao" },
1636
1886
  { tipo: "cadeado", atributo: "data-layer-lock", entidade: "camada" },
1637
1887
  { tipo: "cadeado", atributo: "data-feat-lock", entidade: "feicao" },
1638
1888
  { tipo: "selecao", atributo: "data-layer-target", entidade: "camada" },
1639
1889
  { tipo: "selecao", atributo: "data-feat-target", entidade: "feicao" }
1640
- ], ye = {
1890
+ ], Le = {
1641
1891
  olho: "[data-layer-eye], [data-feat-eye]",
1642
1892
  cadeado: "[data-layer-lock], [data-feat-lock]",
1643
1893
  selecao: "[data-layer-target], [data-feat-target]"
1644
- }, dt = 3;
1645
- function ut(e) {
1646
- return ct.find((t) => e.hasAttribute(t.atributo)) ?? null;
1894
+ }, It = 3;
1895
+ function kt(e) {
1896
+ return Et.find((t) => e.hasAttribute(t.atributo)) ?? null;
1647
1897
  }
1648
- function ve(e, t) {
1649
- const a = ut(t);
1898
+ function Ie(e, t) {
1899
+ const a = kt(t);
1650
1900
  if (!a) return null;
1651
1901
  const r = t.getAttribute(a.atributo);
1652
1902
  if (!r) return null;
@@ -1660,13 +1910,13 @@ function ve(e, t) {
1660
1910
  return o ? o.locked === !0 : null;
1661
1911
  }
1662
1912
  if (a.entidade === "feicao") return e.selectedFeatureIds.has(r);
1663
- const i = V(
1664
- W(e.camadas, e.feicoes, r),
1913
+ const i = W(
1914
+ ae(e.camadas, e.feicoes, r),
1665
1915
  e.searchQuery
1666
1916
  );
1667
1917
  return i.length === 0 ? null : i.every((o) => e.selectedFeatureIds.has(o.id));
1668
1918
  }
1669
- function De(e, t, a = !1) {
1919
+ function Ve(e, t, a = !1) {
1670
1920
  e.dispatchEvent(
1671
1921
  new MouseEvent("click", {
1672
1922
  bubbles: !0,
@@ -1677,53 +1927,53 @@ function De(e, t, a = !1) {
1677
1927
  );
1678
1928
  }
1679
1929
  let q = null;
1680
- function pt(e) {
1930
+ function Lt(e) {
1681
1931
  (q == null ? void 0 : q.host) === e && q.cancelar();
1682
1932
  }
1683
- function na(e, t, a = t) {
1684
- Object.keys(ye).forEach((r) => {
1685
- a.querySelectorAll(ye[r]).forEach((i) => {
1686
- i.addEventListener("pointerdown", (o) => ft(e, t, r, i, o));
1933
+ function ma(e, t, a = t) {
1934
+ Object.keys(Le).forEach((r) => {
1935
+ a.querySelectorAll(Le[r]).forEach((i) => {
1936
+ i.addEventListener("pointerdown", (o) => Ct(e, t, r, i, o));
1687
1937
  });
1688
1938
  });
1689
1939
  }
1690
- function ft(e, t, a, r, i) {
1691
- if (i.pointerType === "mouse" && i.button !== 0 || e.editingLayerId || e.editingFeatureId || ve(e, r) === null) return;
1940
+ function Ct(e, t, a, r, i) {
1941
+ if (i.pointerType === "mouse" && i.button !== 0 || e.editingLayerId || e.editingFeatureId || Ie(e, r) === null) return;
1692
1942
  q == null || q.cancelar();
1693
- const o = ye[a], n = i.ctrlKey || i.metaKey, s = i.shiftKey;
1694
- let c = !1, l = !1, p = i.clientY;
1695
- const d = /* @__PURE__ */ new Set([r]), u = (w) => {
1696
- w.preventDefault(), w.stopImmediatePropagation();
1697
- }, f = (w) => {
1698
- w.stopPropagation(), w.preventDefault();
1699
- }, m = (w) => w.preventDefault(), g = (w) => {
1700
- d.has(w) || (d.add(w), ve(e, w) !== l && De(w, a === "selecao"));
1701
- }, b = () => {
1702
- c = !0, De(r, n, s), l = ve(e, r) === !0, t.addEventListener("selectstart", m), document.body.style.userSelect = "none";
1703
- }, v = (w) => {
1704
- var L, I;
1943
+ const o = Le[a], n = i.ctrlKey || i.metaKey, s = i.shiftKey;
1944
+ let c = !1, l = !1, u = i.clientY;
1945
+ const p = /* @__PURE__ */ new Set([r]), d = (A) => {
1946
+ A.preventDefault(), A.stopImmediatePropagation();
1947
+ }, f = (A) => {
1948
+ A.stopPropagation(), A.preventDefault();
1949
+ }, m = (A) => A.preventDefault(), h = (A) => {
1950
+ p.has(A) || (p.add(A), Ie(e, A) !== l && Ve(A, a === "selecao"));
1951
+ }, v = () => {
1952
+ c = !0, Ve(r, n, s), l = Ie(e, r) === !0, t.addEventListener("selectstart", m), document.body.style.userSelect = "none";
1953
+ }, g = (A) => {
1954
+ var E, z;
1705
1955
  if (!c) {
1706
- if (Math.hypot(w.clientX - i.clientX, w.clientY - i.clientY) < dt) return;
1707
- const x = (L = t.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : L.closest(o);
1956
+ if (Math.hypot(A.clientX - i.clientX, A.clientY - i.clientY) < It) return;
1957
+ const x = (E = t.elementFromPoint(A.clientX, A.clientY)) == null ? void 0 : E.closest(o);
1708
1958
  if (!x || x === r) return;
1709
- b();
1959
+ v();
1710
1960
  }
1711
- w.preventDefault();
1712
- const $ = Math.min(p, w.clientY), h = Math.max(p, w.clientY);
1961
+ A.preventDefault();
1962
+ const S = Math.min(u, A.clientY), F = Math.max(u, A.clientY);
1713
1963
  t.querySelectorAll(o).forEach((x) => {
1714
- const B = x.getBoundingClientRect();
1715
- if (B.height === 0) return;
1716
- const T = B.top + B.height / 2;
1717
- T >= $ && T <= h && g(x);
1964
+ const y = x.getBoundingClientRect();
1965
+ if (y.height === 0) return;
1966
+ const P = y.top + y.height / 2;
1967
+ P >= S && P <= F && h(x);
1718
1968
  });
1719
- const F = (I = t.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : I.closest(o);
1720
- F && g(F), p = w.clientY;
1721
- }, E = (w = !1) => {
1722
- (q == null ? void 0 : q.cancelar) === C && (q = null), window.removeEventListener("pointermove", v), window.removeEventListener("pointerup", k), window.removeEventListener("pointercancel", k), window.removeEventListener("dragstart", u, !0), t.removeEventListener("selectstart", m), c && (document.body.style.userSelect = "", w || (window.addEventListener("click", f, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", f, !0), 0)));
1723
- }, k = () => E(), C = () => E(!0);
1724
- q = { host: e, cancelar: C }, window.addEventListener("dragstart", u, !0), window.addEventListener("pointermove", v, { passive: !1 }), window.addEventListener("pointerup", k), window.addEventListener("pointercancel", k);
1725
- }
1726
- function mt(e, t) {
1969
+ const B = (z = t.elementFromPoint(A.clientX, A.clientY)) == null ? void 0 : z.closest(o);
1970
+ B && h(B), u = A.clientY;
1971
+ }, w = (A = !1) => {
1972
+ (q == null ? void 0 : q.cancelar) === L && (q = null), window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", k), window.removeEventListener("pointercancel", k), window.removeEventListener("dragstart", d, !0), t.removeEventListener("selectstart", m), c && (document.body.style.userSelect = "", A || (window.addEventListener("click", f, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", f, !0), 0)));
1973
+ }, k = () => w(), L = () => w(!0);
1974
+ q = { host: e, cancelar: L }, window.addEventListener("dragstart", d, !0), window.addEventListener("pointermove", g, { passive: !1 }), window.addEventListener("pointerup", k), window.addEventListener("pointercancel", k);
1975
+ }
1976
+ function St(e, t) {
1727
1977
  const a = t.getElementById("btn-toggle-all-vis");
1728
1978
  a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
1729
1979
  const r = t.getElementById("btn-toggle-all-expand");
@@ -1731,15 +1981,15 @@ function mt(e, t) {
1731
1981
  o.stopPropagation(), e.camadas.length > 0 && e.camadas.every((s) => e.expandedLayers.has(s.id)) ? e.colapsarTodas() : e.expandirTodas();
1732
1982
  });
1733
1983
  const i = t.getElementById("btn-colapsar");
1734
- i && i.addEventListener("click", () => e.colapsar(!0)), gt(e, t);
1984
+ i && i.addEventListener("click", () => e.colapsar(!0)), Ft(e, t);
1735
1985
  }
1736
- function gt(e, t) {
1986
+ function Ft(e, t) {
1737
1987
  const a = t.getElementById("input-layer-search"), r = t.getElementById("btn-clear-layer-search"), i = () => {
1738
1988
  var o;
1739
1989
  e.searchQuery = "", e.solicitarRenderizacao(), (o = t.getElementById("input-layer-search")) == null || o.focus();
1740
1990
  };
1741
1991
  if (a) {
1742
- const o = je(() => e.solicitarRenderizacao(), 75);
1992
+ const o = Ke(() => e.solicitarRenderizacao(), 75);
1743
1993
  a.addEventListener("input", (n) => {
1744
1994
  e.searchQuery = n.target.value, o();
1745
1995
  }), a.addEventListener("keydown", (n) => {
@@ -1748,7 +1998,7 @@ function gt(e, t) {
1748
1998
  }
1749
1999
  r && r.addEventListener("click", i);
1750
2000
  }
1751
- function sa(e, t) {
2001
+ function ga(e, t) {
1752
2002
  t.querySelectorAll("[data-feat-select]").forEach((a) => {
1753
2003
  a.addEventListener("click", (r) => {
1754
2004
  if (e.editingFeatureId) return;
@@ -1773,7 +2023,7 @@ function sa(e, t) {
1773
2023
  if (o) {
1774
2024
  o.visible = o.visible === !1;
1775
2025
  const n = o.visible !== !1;
1776
- a.innerHTML = n ? y.olhoAberto : y.olhoFechado, D(a, n ? "Ocultar Feição" : "Exibir Feição");
2026
+ a.innerHTML = n ? b.olhoAberto : b.olhoFechado, T(a, n ? "Ocultar Feição" : "Exibir Feição");
1777
2027
  const s = a.closest(".ui-feat-row");
1778
2028
  s && s.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
1779
2029
  feicaoId: o.id,
@@ -1785,7 +2035,7 @@ function sa(e, t) {
1785
2035
  a.addEventListener("click", (r) => {
1786
2036
  if (r.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
1787
2037
  const i = a.getAttribute("data-feat-lock"), o = e.feicoes.find((n) => n.id === i);
1788
- o && (o.locked = !o.locked, a.innerHTML = o.locked ? y.cadeadoTrancado : y.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), D(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
2038
+ o && (o.locked = !o.locked, a.innerHTML = o.locked ? b.cadeadoTrancado : b.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), T(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1789
2039
  feicaoId: o.id,
1790
2040
  bloqueado: o.locked
1791
2041
  }));
@@ -1798,7 +2048,7 @@ function sa(e, t) {
1798
2048
  });
1799
2049
  });
1800
2050
  }
1801
- function vt(e, t) {
2051
+ function $t(e, t) {
1802
2052
  var a;
1803
2053
  (a = t.querySelector("[data-basemap-toggle]")) == null || a.addEventListener("click", () => {
1804
2054
  e.alternarMapasBaseRecolhido(!0);
@@ -1809,10 +2059,10 @@ function vt(e, t) {
1809
2059
  });
1810
2060
  });
1811
2061
  }
1812
- function bt(e, t) {
1813
- mt(e, t), ot(e, t), sa(e, t), vt(e, t), lt(e, t), na(e, t);
2062
+ function Mt(e, t) {
2063
+ St(e, t), yt(e, t), ga(e, t), $t(e, t), At(e, t), ma(e, t);
1814
2064
  }
1815
- function ht(e) {
2065
+ function Pt(e) {
1816
2066
  if (!e.arvoreRenderizada) return { incremental: !1, motivo: "arvore-nao-renderizada" };
1817
2067
  if (e.buscaAtiva) return { incremental: !1, motivo: "busca-ativa" };
1818
2068
  if (e.editandoCamada || e.editandoFeicao) return { incremental: !1, motivo: "edicao-inline" };
@@ -1823,12 +2073,12 @@ function ht(e) {
1823
2073
  }
1824
2074
  return e.idsDuplicados ? { incremental: !1, motivo: "ids-duplicados" } : { incremental: !0 };
1825
2075
  }
1826
- function la(e, t = /* @__PURE__ */ new Map()) {
2076
+ function ha(e, t = /* @__PURE__ */ new Map()) {
1827
2077
  for (const a of e)
1828
- t.set(a.camada.id, a), la(a.subcamadas, t);
2078
+ t.set(a.camada.id, a), ha(a.subcamadas, t);
1829
2079
  return t;
1830
2080
  }
1831
- function yt(e) {
2081
+ function zt(e) {
1832
2082
  const t = /* @__PURE__ */ new Map();
1833
2083
  for (let a = 0; a < e.length; a++) {
1834
2084
  const r = e[a];
@@ -1838,23 +2088,24 @@ function yt(e) {
1838
2088
  }
1839
2089
  return t;
1840
2090
  }
1841
- function K(e, t) {
2091
+ function J(e, t) {
1842
2092
  for (let a = e.firstElementChild; a; a = a.nextElementSibling)
1843
2093
  if (a.classList.contains(t)) return a;
1844
2094
  return null;
1845
2095
  }
1846
- function xt(e) {
2096
+ function Bt(e) {
1847
2097
  const t = /* @__PURE__ */ new Map(), a = (r) => {
1848
- for (let i = r.firstElementChild; i && i.classList.contains("ui-layer-group"); i = i.nextElementSibling) {
2098
+ for (let i = r.firstElementChild; i; i = i.nextElementSibling) {
2099
+ if (!i.classList.contains("ui-layer-group")) continue;
1849
2100
  const o = i.getAttribute("data-layer-id");
1850
2101
  o !== null && t.set(o, i);
1851
- const n = K(i, "ui-children-container");
2102
+ const n = J(i, "ui-children-container");
1852
2103
  n && a(n);
1853
2104
  }
1854
2105
  };
1855
2106
  return a(e), t;
1856
2107
  }
1857
- function wt(e) {
2108
+ function qt(e) {
1858
2109
  if (!e || e.length < 2) return !1;
1859
2110
  const t = /* @__PURE__ */ new Set();
1860
2111
  for (const a of e) {
@@ -1863,7 +2114,7 @@ function wt(e) {
1863
2114
  }
1864
2115
  return !1;
1865
2116
  }
1866
- function At(e, t) {
2117
+ function Dt(e, t) {
1867
2118
  var i;
1868
2119
  const a = new Map(t.map((o) => [o.id, o])), r = /* @__PURE__ */ new Set();
1869
2120
  for (const o of e) {
@@ -1873,142 +2124,145 @@ function At(e, t) {
1873
2124
  }
1874
2125
  return r;
1875
2126
  }
1876
- function oe(e) {
2127
+ function de(e) {
1877
2128
  const t = document.createElement("template");
1878
2129
  return t.innerHTML = e, { modelo: t, elementos: Array.from(t.content.children) };
1879
2130
  }
1880
- function ne(e) {
2131
+ function ue(e) {
1881
2132
  var a;
1882
2133
  const t = e.nextSibling;
1883
2134
  t && t.nodeType === 3 && !(t.textContent ?? "").trim() && ((a = t.parentNode) == null || a.removeChild(t)), e.remove();
1884
2135
  }
1885
- function Et(e, t) {
2136
+ function Tt(e, t) {
1886
2137
  if (!e || !t.contains(e)) return null;
1887
2138
  const a = Array.from(e.attributes).find((r) => r.name.startsWith("data-") && r.value !== "");
1888
2139
  return a ? { nome: a.name, valor: a.value } : null;
1889
2140
  }
1890
- function It(e, t) {
1891
- const { host: a, shadow: r, mudanca: i } = e, o = e.grupos.get(t), n = e.nodos.get(t), s = o ? K(o, "ui-children-container") : null;
2141
+ function Ot(e, t) {
2142
+ var F, B;
2143
+ const { host: a, shadow: r, mudanca: i } = e;
2144
+ if ((B = (F = a.ordemFilhosPorPai) == null ? void 0 : F.get(t)) != null && B.length) return !1;
2145
+ const o = e.grupos.get(t), n = e.nodos.get(t), s = o ? J(o, "ui-children-container") : null;
1892
2146
  if (!o || !n || !s) return !1;
1893
- const c = n.camada, l = e.porCamada.get(t) ?? [], p = a.expandedFeatureLimits.get(t) ?? we, d = l.slice(0, p), u = new Set(d.map((h) => h.id)), f = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), g = r.activeElement;
1894
- let b = null;
1895
- for (let h = s.firstElementChild, F; h; h = F) {
1896
- F = h.nextElementSibling;
1897
- const L = h.getAttribute("data-feat-row");
1898
- if (L === null) {
1899
- !b && !h.classList.contains("ui-layer-group") && (b = h);
2147
+ const c = n.camada, l = e.porCamada.get(t) ?? [], u = a.expandedFeatureLimits.get(t) ?? Se, p = l.slice(0, u), d = new Set(p.map((E) => E.id)), f = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), h = r.activeElement;
2148
+ let v = null;
2149
+ for (let E = s.firstElementChild, z; E; E = z) {
2150
+ z = E.nextElementSibling;
2151
+ const x = E.getAttribute("data-feat-row");
2152
+ if (x === null) {
2153
+ !v && !E.classList.contains("ui-layer-group") && (v = E);
1900
2154
  continue;
1901
2155
  }
1902
- const I = i.idsAlterados.has(L) && u.has(L) && !f.has(L);
1903
- !u.has(L) || f.has(L) || I ? (I && m.set(L, { tabindex: h.getAttribute("tabindex"), foco: Et(g, h) }), ne(h)) : (f.set(L, h), b || (b = h));
2156
+ const y = i.idsAlterados.has(x) && d.has(x) && !f.has(x);
2157
+ !d.has(x) || f.has(x) || y ? (y && m.set(x, { tabindex: E.getAttribute("tabindex"), foco: Tt(h, E) }), ue(E)) : (f.set(x, E), v || (v = E));
1904
2158
  }
1905
- const v = Ye(c, n.depth, e.herdado.get(t)), E = d.filter((h) => !f.has(h.id));
2159
+ const g = aa(c, n.depth, e.herdado.get(t)), w = p.filter((E) => !f.has(E.id));
1906
2160
  let k = [];
1907
- if (E.length > 0) {
1908
- const h = E.map(
1909
- (I) => Ze(I, v, a.selectedFeatureIds.has(I.id), a.editingFeatureId === I.id)
1910
- ).join(""), { modelo: F, elementos: L } = oe(h);
1911
- if (L.length !== E.length) return !1;
1912
- e.ligar(F.content), k = L;
1913
- }
1914
- let C = b, w = 0;
1915
- const $ = /* @__PURE__ */ new Map();
1916
- for (const h of d) {
1917
- const F = f.get(h.id);
1918
- if (F)
1919
- F === C ? C = F.nextElementSibling : s.insertBefore(F, C);
2161
+ if (w.length > 0) {
2162
+ const E = w.map(
2163
+ (y) => sa(y, g, a.selectedFeatureIds.has(y.id), a.editingFeatureId === y.id)
2164
+ ).join(""), { modelo: z, elementos: x } = de(E);
2165
+ if (x.length !== w.length) return !1;
2166
+ e.ligar(z.content), k = x;
2167
+ }
2168
+ let L = v, A = 0;
2169
+ const S = /* @__PURE__ */ new Map();
2170
+ for (const E of p) {
2171
+ const z = f.get(E.id);
2172
+ if (z)
2173
+ z === L ? L = z.nextElementSibling : s.insertBefore(z, L);
1920
2174
  else {
1921
- const L = k[w++];
1922
- s.insertBefore(L, C), $.set(h.id, L);
2175
+ const x = k[A++];
2176
+ s.insertBefore(x, L), S.set(E.id, x);
1923
2177
  }
1924
2178
  }
1925
- return m.forEach((h, F) => {
1926
- const L = $.get(F);
1927
- if (!L || (h.tabindex !== null && L.setAttribute("tabindex", h.tabindex), !h.foco)) return;
1928
- const I = L.getAttribute(h.foco.nome) === h.foco.valor ? L : Array.from(L.querySelectorAll(`[${h.foco.nome}]`)).find(
1929
- (x) => x.getAttribute(h.foco.nome) === h.foco.valor
2179
+ return m.forEach((E, z) => {
2180
+ const x = S.get(z);
2181
+ if (!x || (E.tabindex !== null && x.setAttribute("tabindex", E.tabindex), !E.foco)) return;
2182
+ const y = x.getAttribute(E.foco.nome) === E.foco.valor ? x : Array.from(x.querySelectorAll(`[${E.foco.nome}]`)).find(
2183
+ (P) => P.getAttribute(E.foco.nome) === E.foco.valor
1930
2184
  );
1931
- I == null || I.focus({ preventScroll: !0 });
1932
- }), kt(e, s, n, p, l.length);
2185
+ y == null || y.focus({ preventScroll: !0 });
2186
+ }), Rt(e, s, n, u, l.length);
1933
2187
  }
1934
- function kt(e, t, a, r, i) {
1935
- const o = z(a.camada.id), n = !!(a.camada.isGroup || a.subcamadas.length > 0), s = i > r, c = a.subcamadas.length === 0 && i === 0, l = K(t, "ui-truncate-notice"), p = K(t, "ui-empty-row");
1936
- if (p && !c && ne(p), l && !s && ne(l), s)
2188
+ function Rt(e, t, a, r, i) {
2189
+ const o = M(a.camada.id), n = !!(a.camada.isGroup || a.subcamadas.length > 0), s = i > r, c = a.subcamadas.length === 0 && i === 0, l = J(t, "ui-truncate-notice"), u = J(t, "ui-empty-row");
2190
+ if (u && !c && ue(u), l && !s && ue(l), s)
1937
2191
  if (l) {
1938
- const d = Xe(r, i), u = l.querySelector("span"), f = l.querySelector(".ui-truncate-more-btn");
1939
- if (!u || !f) return !1;
1940
- u.textContent !== d.resumo && (u.textContent = d.resumo), f.textContent !== d.botao && (f.textContent = d.botao);
2192
+ const p = ia(r, i), d = l.querySelector("span"), f = l.querySelector(".ui-truncate-more-btn");
2193
+ if (!d || !f) return !1;
2194
+ d.textContent !== p.resumo && (d.textContent = p.resumo), f.textContent !== p.botao && (f.textContent = p.botao);
1941
2195
  } else {
1942
- const { modelo: d, elementos: u } = oe(We(o, r, i));
1943
- if (u.length !== 1) return !1;
1944
- e.ligar(d.content), t.appendChild(u[0]);
2196
+ const { modelo: p, elementos: d } = de(oa(o, r, i));
2197
+ if (d.length !== 1) return !1;
2198
+ e.ligar(p.content), t.appendChild(d[0]);
1945
2199
  }
1946
- if (c && !p) {
1947
- const { elementos: d } = oe(Je(n));
1948
- if (d.length !== 1) return !1;
1949
- t.appendChild(d[0]);
2200
+ if (c && !u) {
2201
+ const { elementos: p } = de(na(n));
2202
+ if (p.length !== 1) return !1;
2203
+ t.appendChild(p[0]);
1950
2204
  }
1951
2205
  return !0;
1952
2206
  }
1953
- function Lt(e, t) {
1954
- const a = e.grupos.get(t), r = e.nodos.get(t), i = a ? K(a, "ui-layer-row") : null, o = i == null ? void 0 : i.querySelector(".ui-col-name");
2207
+ function jt(e, t) {
2208
+ const a = e.grupos.get(t), r = e.nodos.get(t), i = a ? J(a, "ui-layer-row") : null, o = i == null ? void 0 : i.querySelector(".ui-col-name");
1955
2209
  if (!a || !r || !i || !o) return !1;
1956
- const { host: n } = e, s = W(n.camadas, n.feicoes, t), c = (e.porCamada.get(t) ?? []).length, l = r.subcamadas.length, p = !!(r.camada.isGroup || l > 0), d = o.querySelector(".ui-count-chip");
1957
- if (d)
1958
- if (s.length === 0 && p)
1959
- ne(d);
2210
+ const { host: n } = e, s = ae(n.camadas, n.feicoes, t), c = (e.porCamada.get(t) ?? []).length, l = r.subcamadas.length, u = !!(r.camada.isGroup || l > 0), p = o.querySelector(".ui-count-chip");
2211
+ if (p)
2212
+ if (s.length === 0 && u)
2213
+ ue(p);
1960
2214
  else {
1961
- const u = String(s.length), f = Ke(s.length, c, l);
1962
- d.textContent !== u && (d.textContent = u), d.getAttribute("title") !== f && d.setAttribute("title", f);
2215
+ const d = String(s.length), f = ta(s.length, c, l);
2216
+ p.textContent !== d && (p.textContent = d), p.getAttribute("title") !== f && p.setAttribute("title", f);
1963
2217
  }
1964
2218
  else {
1965
- const u = Qe(s.length, c, l, p);
1966
- if (u) {
1967
- const { elementos: f } = oe(u);
2219
+ const d = ra(s.length, c, l, u);
2220
+ if (d) {
2221
+ const { elementos: f } = de(d);
1968
2222
  if (f.length !== 1) return !1;
1969
2223
  o.appendChild(f[0]);
1970
2224
  }
1971
2225
  }
1972
- return ra(i.querySelector(".ui-target-circle"), s, n.selectedFeatureIds), !0;
2226
+ return ua(i.querySelector(".ui-target-circle"), s, n.selectedFeatureIds), !0;
1973
2227
  }
1974
- function Ct(e, t, a, r) {
1975
- const i = t.getElementById("ui-layer-tree-mount"), o = la(se(e.camadas)), n = i ? xt(i) : /* @__PURE__ */ new Map(), s = yt(e.feicoes), c = a.camadas === "todas" ? Array.from(o.keys()) : Array.from(a.camadas), l = c.map((u) => ({
1976
- existeNoModelo: o.has(u),
1977
- renderizadaNoDom: n.has(u),
1978
- drawerAberto: e.activeSettingsLayerId === u
2228
+ function Nt(e, t, a, r) {
2229
+ const i = t.getElementById("ui-layer-tree-mount"), o = ha(pe(e.camadas)), n = i ? Bt(i) : /* @__PURE__ */ new Map(), s = zt(e.feicoes), c = a.camadas === "todas" ? Array.from(o.keys()) : Array.from(a.camadas), l = c.map((d) => ({
2230
+ existeNoModelo: o.has(d),
2231
+ renderizadaNoDom: n.has(d),
2232
+ drawerAberto: e.activeSettingsLayerId === d
1979
2233
  }));
1980
- if (!ht({
2234
+ if (!Pt({
1981
2235
  arvoreRenderizada: i !== null,
1982
2236
  buscaAtiva: (e.searchQuery || "").trim() !== "",
1983
2237
  editandoCamada: e.editingLayerId !== null,
1984
2238
  editandoFeicao: e.editingFeatureId !== null,
1985
- idsDuplicados: c.some((u) => wt(s.get(u))),
2239
+ idsDuplicados: c.some((d) => qt(s.get(d))),
1986
2240
  camadasAfetadas: l
1987
2241
  }).incremental) return !1;
1988
- const d = {
2242
+ const p = {
1989
2243
  host: e,
1990
2244
  shadow: t,
1991
2245
  mudanca: a,
1992
2246
  porCamada: s,
1993
2247
  nodos: o,
1994
2248
  grupos: n,
1995
- herdado: le(e.camadas),
2249
+ herdado: fe(e.camadas),
1996
2250
  ligar: r
1997
2251
  };
1998
- for (const u of c)
1999
- if (!It(d, u)) return !1;
2000
- for (const u of At(c, e.camadas))
2001
- if (!Lt(d, u)) return !1;
2002
- return (a.selecaoAfetada || e.selectedFeatureIds.size > 0) && ia(e, t), !0;
2252
+ for (const d of c)
2253
+ if (!Ot(p, d)) return !1;
2254
+ for (const d of Dt(c, e.camadas))
2255
+ if (!jt(p, d)) return !1;
2256
+ return (a.selecaoAfetada || e.selectedFeatureIds.size > 0) && pa(e, t), !0;
2003
2257
  }
2004
- function St(e) {
2258
+ function Ht(e) {
2005
2259
  if (!e.isConnected) return;
2006
2260
  const t = document.createElement("div");
2007
- t.className = "ui-basemap-preview-none", t.innerHTML = y.gradeCad, e.replaceWith(t);
2261
+ t.className = "ui-basemap-preview-none", t.innerHTML = b.gradeCad, e.replaceWith(t);
2008
2262
  }
2009
- function $t(e, t, a, r) {
2010
- var g, b;
2011
- const i = Ua({
2263
+ function Gt(e, t, a, r) {
2264
+ var h, v;
2265
+ const i = ot({
2012
2266
  camadas: e.camadas,
2013
2267
  feicoes: e.feicoes,
2014
2268
  camadaAtivaId: e.camadaAtivaId,
@@ -2021,50 +2275,51 @@ function $t(e, t, a, r) {
2021
2275
  titulo: e.titulo,
2022
2276
  mostrarBusca: e.mostrarBusca,
2023
2277
  limitesPorCamada: e.expandedFeatureLimits,
2024
- mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false"
2025
- }), o = e.mostrarMapasBase ? Da(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? Ra(e.camadas, e.feicoes, e.selectedFeatureIds) : "", s = t.getElementById("ui-layer-tree-mount"), c = a.scrollTop, l = s ? s.scrollTop : 0, p = t.activeElement, d = p && a.contains(p) ? p.id : "", u = p && !d && a.contains(p) ? Array.from(p.attributes).find((v) => v.name.startsWith("data-") && v.value !== "") : void 0, f = p && "selectionStart" in p ? p.selectionStart : null;
2278
+ mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false",
2279
+ ordemFilhosPorPai: e.ordemFilhosPorPai
2280
+ }), o = e.mostrarMapasBase ? Va(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? Ya(e.camadas, e.feicoes, e.selectedFeatureIds) : "", s = t.getElementById("ui-layer-tree-mount"), c = a.scrollTop, l = s ? s.scrollTop : 0, u = t.activeElement, p = u && a.contains(u) ? u.id : "", d = u && !p && a.contains(u) ? Array.from(u.attributes).find((g) => g.name.startsWith("data-") && g.value !== "") : void 0, f = u && "selectionStart" in u ? u.selectionStart : null;
2026
2281
  a.innerHTML = `
2027
2282
  ${i}
2028
2283
  ${n}
2029
2284
  ${o}
2030
2285
  `, a.scrollTop = c;
2031
2286
  const m = t.getElementById("ui-layer-tree-mount");
2032
- if (m && (m.scrollTop = l), d) {
2033
- const v = t.getElementById(d);
2034
- if (v && (v.focus({ preventScroll: !0 }), f !== null && typeof v.setSelectionRange == "function"))
2287
+ if (m && (m.scrollTop = l), p) {
2288
+ const g = t.getElementById(p);
2289
+ if (g && (g.focus({ preventScroll: !0 }), f !== null && typeof g.setSelectionRange == "function"))
2035
2290
  try {
2036
- v.setSelectionRange(f, f);
2291
+ g.setSelectionRange(f, f);
2037
2292
  } catch {
2038
2293
  }
2039
2294
  }
2040
- !d && u && ((g = P(a, u.name, u.value)) == null || g.focus({ preventScroll: !0 })), (b = t.querySelector("[data-layer-row], [data-feat-row]")) == null || b.setAttribute("tabindex", "0"), a.querySelectorAll("img[data-basemap-thumb]").forEach((v) => {
2041
- const E = () => St(v);
2042
- v.addEventListener("error", E, { once: !0 }), v.complete && v.naturalWidth === 0 && v.getAttribute("src") && E();
2043
- }), bt(e, t), r.bindAll();
2295
+ !p && d && ((h = D(a, d.name, d.value)) == null || h.focus({ preventScroll: !0 })), (v = t.querySelector("[data-layer-row], [data-feat-row]")) == null || v.setAttribute("tabindex", "0"), a.querySelectorAll("img[data-basemap-thumb]").forEach((g) => {
2296
+ const w = () => Ht(g);
2297
+ g.addEventListener("error", w, { once: !0 }), g.complete && g.naturalWidth === 0 && g.getAttribute("src") && w();
2298
+ }), Mt(e, t), r.bindAll();
2044
2299
  }
2045
- function Ft(e, t, a, r) {
2300
+ function Vt(e, t, a, r) {
2046
2301
  try {
2047
- return Ct(e, t, r, (i) => {
2048
- sa(e, i), oa(e, i), na(e, t, i), a.bindLinhasFeicao(i);
2302
+ return Nt(e, t, r, (i) => {
2303
+ ga(e, i), fa(e, i), ma(e, t, i), a.bindLinhasFeicao(i);
2049
2304
  });
2050
2305
  } catch (i) {
2051
2306
  return console.warn("[UI-Camadas] atualização incremental falhou; redesenhando o painel.", i), !1;
2052
2307
  }
2053
2308
  }
2054
- const Mt = '[role="button"][tabindex]', Q = "[data-layer-row], [data-feat-row]", zt = ["color", "range", "checkbox", "radio", "button"];
2055
- function ca(e) {
2056
- return !e || !(e instanceof Element) || e instanceof HTMLInputElement && zt.includes(e.type) ? !1 : Ma({ composedPath: () => [e] });
2309
+ const _t = '[role="button"][tabindex]', Z = "[data-layer-row], [data-feat-row]", Yt = ["color", "range", "checkbox", "radio", "button"];
2310
+ function va(e) {
2311
+ return !e || !(e instanceof Element) || e instanceof HTMLInputElement && Yt.includes(e.type) ? !1 : Ra({ composedPath: () => [e] });
2057
2312
  }
2058
- function Bt(e) {
2059
- return Array.from(e.querySelectorAll(Q)).filter((t) => {
2313
+ function Ut(e) {
2314
+ return Array.from(e.querySelectorAll(Z)).filter((t) => {
2060
2315
  const a = t.closest(".ui-children-container");
2061
2316
  return !(a && a.style.display === "none") && !t.classList.contains("ui-search-hidden");
2062
2317
  });
2063
2318
  }
2064
- function N(e, t) {
2065
- t && (e.querySelectorAll(Q).forEach((a) => a.setAttribute("tabindex", "-1")), t.setAttribute("tabindex", "0"), t.focus());
2319
+ function V(e, t) {
2320
+ t && (e.querySelectorAll(Z).forEach((a) => a.setAttribute("tabindex", "-1")), t.setAttribute("tabindex", "0"), t.focus());
2066
2321
  }
2067
- function qt(e, t) {
2322
+ function Kt(e, t) {
2068
2323
  e.dispatchEvent(
2069
2324
  new MouseEvent("click", {
2070
2325
  bubbles: !0,
@@ -2073,9 +2328,9 @@ function qt(e, t) {
2073
2328
  })
2074
2329
  );
2075
2330
  }
2076
- function Pt(e, t, a) {
2331
+ function Qt(e, t, a) {
2077
2332
  var i;
2078
- if (ca(a.composedPath()[0])) return;
2333
+ if (va(a.composedPath()[0])) return;
2079
2334
  const r = t.querySelector(".confirming");
2080
2335
  if (r) {
2081
2336
  a.preventDefault(), r.dispatchEvent(new Event("ui-cancelar-confirmacao")), r.classList.remove("confirming");
@@ -2084,30 +2339,30 @@ function Pt(e, t, a) {
2084
2339
  if (e.activeSettingsLayerId) {
2085
2340
  a.preventDefault();
2086
2341
  const o = e.activeSettingsLayerId;
2087
- e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (i = P(t, "data-layer-settings", o)) == null || i.focus();
2342
+ e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (i = D(t, "data-layer-settings", o)) == null || i.focus();
2088
2343
  return;
2089
2344
  }
2090
2345
  e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
2091
2346
  }
2092
- function Dt(e, t, a, r) {
2347
+ function Xt(e, t, a, r) {
2093
2348
  var s, c, l;
2094
2349
  const i = r.composedPath()[0];
2095
- if (!(i instanceof HTMLElement) || ca(i)) return;
2096
- if ((r.key === "Enter" || r.key === " ") && i.matches(Mt)) {
2350
+ if (!(i instanceof HTMLElement) || va(i)) return;
2351
+ if ((r.key === "Enter" || r.key === " ") && i.matches(_t)) {
2097
2352
  r.preventDefault(), i.click();
2098
2353
  return;
2099
2354
  }
2100
- if (!i.matches(Q)) return;
2101
- const o = Bt(t), n = o.indexOf(i);
2355
+ if (!i.matches(Z)) return;
2356
+ const o = Ut(t), n = o.indexOf(i);
2102
2357
  if (r.key === "F2") {
2103
2358
  r.preventDefault();
2104
- const p = i.getAttribute("data-layer-row"), d = i.getAttribute("data-feat-row"), u = p ? P(i, "data-layer-name-trigger", p) : d ? P(i, "data-feat-name-trigger", d) : null;
2105
- u && u.dispatchEvent(new MouseEvent("dblclick", { bubbles: !0 }));
2359
+ const u = i.getAttribute("data-layer-row"), p = i.getAttribute("data-feat-row"), d = u ? D(i, "data-layer-name-trigger", u) : p ? D(i, "data-feat-name-trigger", p) : null;
2360
+ d && d.dispatchEvent(new MouseEvent("dblclick", { bubbles: !0 }));
2106
2361
  return;
2107
2362
  }
2108
2363
  if ((r.ctrlKey || r.metaKey) && (r.key === "a" || r.key === "A")) {
2109
2364
  r.preventDefault();
2110
- const p = aa(
2365
+ const u = ca(
2111
2366
  e.camadas,
2112
2367
  e.feicoes,
2113
2368
  e.expandedLayers,
@@ -2115,75 +2370,75 @@ function Dt(e, t, a, r) {
2115
2370
  void 0,
2116
2371
  e.expandedFeatureLimits
2117
2372
  );
2118
- p.length > 0 && e.selecionarFeicoes(p, !0);
2373
+ u.length > 0 && e.selecionarFeicoes(u, !0);
2119
2374
  return;
2120
2375
  }
2121
2376
  if (r.key === "Delete") {
2122
- const p = a.getElementById("btn-footer-del");
2123
- if (p && !p.hasAttribute("disabled") && e.selectedFeatureIds.size > 0) {
2124
- r.preventDefault(), p.click();
2377
+ const u = a.getElementById("btn-footer-del");
2378
+ if (u && !u.hasAttribute("disabled") && e.selectedFeatureIds.size > 0) {
2379
+ r.preventDefault(), u.click();
2125
2380
  return;
2126
2381
  }
2127
2382
  }
2128
2383
  switch (r.key) {
2129
2384
  case "ArrowDown":
2130
- r.preventDefault(), N(t, o[Math.min(o.length - 1, n + 1)]);
2385
+ r.preventDefault(), V(t, o[Math.min(o.length - 1, n + 1)]);
2131
2386
  break;
2132
2387
  case "ArrowUp":
2133
- r.preventDefault(), N(t, o[Math.max(0, n - 1)]);
2388
+ r.preventDefault(), V(t, o[Math.max(0, n - 1)]);
2134
2389
  break;
2135
2390
  case "Home":
2136
- r.preventDefault(), N(t, o[0]);
2391
+ r.preventDefault(), V(t, o[0]);
2137
2392
  break;
2138
2393
  case "End":
2139
- r.preventDefault(), N(t, o[o.length - 1]);
2394
+ r.preventDefault(), V(t, o[o.length - 1]);
2140
2395
  break;
2141
2396
  case "ArrowRight": {
2142
- const p = i.getAttribute("data-layer-row");
2143
- if (!p) return;
2144
- const d = i.closest(".ui-layer-group");
2145
- (d == null ? void 0 : d.getAttribute("aria-expanded")) === "true" ? n + 1 < o.length && (d != null && d.contains(o[n + 1])) && (r.preventDefault(), N(t, o[n + 1])) : (r.preventDefault(), (s = P(a, "data-layer-expand", p)) == null || s.click());
2397
+ const u = i.getAttribute("data-layer-row");
2398
+ if (!u) return;
2399
+ const p = i.closest(".ui-layer-group");
2400
+ (p == null ? void 0 : p.getAttribute("aria-expanded")) === "true" ? n + 1 < o.length && (p != null && p.contains(o[n + 1])) && (r.preventDefault(), V(t, o[n + 1])) : (r.preventDefault(), (s = D(a, "data-layer-expand", u)) == null || s.click());
2146
2401
  break;
2147
2402
  }
2148
2403
  case "ArrowLeft": {
2149
- const p = i.getAttribute("data-layer-row");
2150
- if (p) {
2404
+ const u = i.getAttribute("data-layer-row");
2405
+ if (u) {
2151
2406
  const f = i.closest(".ui-layer-group");
2152
2407
  if ((f == null ? void 0 : f.getAttribute("aria-expanded")) === "true")
2153
- r.preventDefault(), (c = P(a, "data-layer-expand", p)) == null || c.click();
2408
+ r.preventDefault(), (c = D(a, "data-layer-expand", u)) == null || c.click();
2154
2409
  else {
2155
- const g = (l = f == null ? void 0 : f.parentElement) == null ? void 0 : l.closest(".ui-layer-group"), b = g == null ? void 0 : g.getAttribute("data-layer-id"), v = b ? P(t, "data-layer-row", b) : null;
2156
- v && (r.preventDefault(), N(t, v));
2410
+ const h = (l = f == null ? void 0 : f.parentElement) == null ? void 0 : l.closest(".ui-layer-group"), v = h == null ? void 0 : h.getAttribute("data-layer-id"), g = v ? D(t, "data-layer-row", v) : null;
2411
+ g && (r.preventDefault(), V(t, g));
2157
2412
  }
2158
2413
  return;
2159
2414
  }
2160
- const d = i.getAttribute("data-feat-layer"), u = d ? P(t, "data-layer-row", d) : null;
2161
- u && (r.preventDefault(), N(t, u));
2415
+ const p = i.getAttribute("data-feat-layer"), d = p ? D(t, "data-layer-row", p) : null;
2416
+ d && (r.preventDefault(), V(t, d));
2162
2417
  break;
2163
2418
  }
2164
2419
  case "Enter":
2165
2420
  case " ":
2166
- r.preventDefault(), qt(i, r);
2421
+ r.preventDefault(), Kt(i, r);
2167
2422
  break;
2168
2423
  }
2169
2424
  }
2170
- function Tt(e, t, a, r, i) {
2425
+ function Wt(e, t, a, r, i) {
2171
2426
  i.add(t, "keydown", (o) => {
2172
- o.key === "Escape" && Pt(e, a, o);
2173
- }), i.add(r, "keydown", (o) => Dt(e, r, a, o)), i.add(r, "focusin", (o) => {
2427
+ o.key === "Escape" && Qt(e, a, o);
2428
+ }), i.add(r, "keydown", (o) => Xt(e, r, a, o)), i.add(r, "focusin", (o) => {
2174
2429
  const n = o.composedPath()[0];
2175
- n instanceof HTMLElement && n.matches(Q) && (r.querySelectorAll(Q).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
2430
+ n instanceof HTMLElement && n.matches(Z) && (r.querySelectorAll(Z).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
2176
2431
  });
2177
2432
  }
2178
- function Rt(e, t, a, r, i) {
2179
- const o = aa(
2433
+ function Jt(e, t, a, r, i) {
2434
+ const o = ca(
2180
2435
  e.camadas,
2181
2436
  e.feicoes,
2182
2437
  e.expandedLayers,
2183
2438
  e.searchQuery,
2184
2439
  void 0,
2185
2440
  e.expandedFeatureLimits
2186
- ), n = !r && !o.includes(t) && e.feicoes.some((c) => c.id === t), s = Ha(
2441
+ ), n = !r && !o.includes(t) && e.feicoes.some((c) => c.id === t), s = Xa(
2187
2442
  n ? [...o, t] : o,
2188
2443
  e.selectedFeatureIds,
2189
2444
  e.lastClickedFeatureId,
@@ -2193,33 +2448,33 @@ function Rt(e, t, a, r, i) {
2193
2448
  );
2194
2449
  s && (e.selectedFeatureIds = s.selecionados, e.lastClickedFeatureId = s.ultimoClicadoId, e.sincronizarSelecaoDOM(), i && e.notificarMudancaSelecao());
2195
2450
  }
2196
- function Ot(e, t, a) {
2451
+ function Zt(e, t, a) {
2197
2452
  const r = t || [];
2198
2453
  r.length === e.selectedFeatureIds.size && r.every((n) => e.selectedFeatureIds.has(n)) || (e.selectedFeatureIds.clear(), r.forEach((n) => e.selectedFeatureIds.add(n)), e.lastClickedFeatureId = r.length > 0 ? r[r.length - 1] : null, e.sincronizarSelecaoDOM(), a && e.notificarMudancaSelecao());
2199
2454
  }
2200
- function jt(e, t) {
2455
+ function er(e, t) {
2201
2456
  e.selectedFeatureIds.size !== 0 && (e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.sincronizarSelecaoDOM(), t && e.notificarMudancaSelecao());
2202
2457
  }
2203
- function Nt(e) {
2458
+ function ar(e) {
2204
2459
  const t = e.feicoes.filter((a) => e.selectedFeatureIds.has(a.id));
2205
2460
  e.dispararEvento("ui-feicoes-selecionadas", {
2206
2461
  feicoesIds: Array.from(e.selectedFeatureIds),
2207
2462
  feicoes: t
2208
2463
  }), t.length === 1 ? e.dispararEvento("ui-feicao-selecionada", { feicaoId: t[0].id, feicao: t[0] }) : t.length === 0 && e.dispararEvento("ui-feicao-selecionada", { feicaoId: null, feicao: null });
2209
2464
  }
2210
- class Ht {
2465
+ class tr {
2211
2466
  constructor(t) {
2212
- A(this, "origens", /* @__PURE__ */ new Map());
2213
- A(this, "removidas", /* @__PURE__ */ new Set());
2214
- A(this, "salvarComDebounce", je(() => this.salvar(), 200));
2467
+ I(this, "origens", /* @__PURE__ */ new Map());
2468
+ I(this, "removidas", /* @__PURE__ */ new Set());
2469
+ I(this, "salvarComDebounce", Ke(() => this.salvar(), 200));
2215
2470
  this.instantaneo = t;
2216
2471
  }
2217
2472
  chaveAtual() {
2218
2473
  const t = this.instantaneo();
2219
- return Xa(t.storageKey, t.id);
2474
+ return dt(t.storageKey, t.id);
2220
2475
  }
2221
2476
  carregar() {
2222
- return he(this.chaveAtual());
2477
+ return ke(this.chaveAtual());
2223
2478
  }
2224
2479
  /** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
2225
2480
  agendar() {
@@ -2228,8 +2483,8 @@ class Ht {
2228
2483
  salvar() {
2229
2484
  const t = this.instantaneo();
2230
2485
  if (!t.persistir || !t.conectado) return;
2231
- const a = this.chaveAtual(), r = at({
2232
- estadoAnterior: he(a),
2486
+ const a = this.chaveAtual(), r = gt({
2487
+ estadoAnterior: ke(a),
2233
2488
  origensCamadas: this.origens,
2234
2489
  camadas: t.camadas,
2235
2490
  expandedLayers: t.expandedLayers,
@@ -2238,29 +2493,32 @@ class Ht {
2238
2493
  mapaBaseAtivo: t.mapaBaseAtivo,
2239
2494
  densidade: t.densidade,
2240
2495
  altura: t.altura,
2241
- camadasRemovidas: this.removidas
2496
+ camadasRemovidas: this.removidas,
2497
+ ordemFilhosPorPai: t.ordemFilhosPorPai
2242
2498
  });
2243
- this.removidas.clear(), Ja(a, r);
2499
+ this.removidas.clear(), pt(a, r);
2244
2500
  }
2245
2501
  limpar() {
2246
- Za(this.chaveAtual());
2502
+ ft(this.chaveAtual());
2247
2503
  }
2248
2504
  // --- Origens (como a camada chegou do consumidor) e remoções ---
2249
2505
  limparOrigens() {
2250
2506
  this.origens.clear();
2251
2507
  }
2252
2508
  registrarOrigem(t) {
2253
- this.origens.set(t.id, ta(t));
2509
+ this.origens.set(t.id, da(t));
2254
2510
  }
2255
2511
  esquecerCamada(t) {
2256
2512
  this.origens.delete(t), this.removidas.add(t);
2257
2513
  }
2258
2514
  /** Aplica por cima de `camadas` o que foi lembrado (expansão, visibilidade, travas, opacidade, cor, ordem). */
2259
- reidratar(t, a, r) {
2260
- et(t, a, r, this.origens);
2515
+ reidratar(t, a, r, i) {
2516
+ if (mt(t, a, r, this.origens), i && (i.clear(), a != null && a.ordemFilhosPorPai))
2517
+ for (const [o, n] of Object.entries(a.ordemFilhosPorPai))
2518
+ Array.isArray(n) && n.length > 0 && i.set(o, [...n]);
2261
2519
  }
2262
2520
  }
2263
- function Ee(e, t = null, a = /* @__PURE__ */ new Set()) {
2521
+ function $e(e, t = null, a = /* @__PURE__ */ new Set()) {
2264
2522
  const r = [];
2265
2523
  if (!Array.isArray(e)) return r;
2266
2524
  for (const i of e) {
@@ -2269,15 +2527,15 @@ function Ee(e, t = null, a = /* @__PURE__ */ new Set()) {
2269
2527
  if (a.has(o)) continue;
2270
2528
  a.add(o);
2271
2529
  const n = { ...i, id: o };
2272
- delete n.children, t && n.parentId === void 0 && (n.parentId = t), r.push(n), Array.isArray(i.children) && i.children.length > 0 && r.push(...Ee(i.children, o, a));
2530
+ delete n.children, t && n.parentId === void 0 && (n.parentId = t), r.push(n), Array.isArray(i.children) && i.children.length > 0 && r.push(...$e(i.children, o, a));
2273
2531
  }
2274
2532
  return r;
2275
2533
  }
2276
- function da(e) {
2534
+ function ba(e) {
2277
2535
  const t = e.lastClickedFeatureId;
2278
2536
  t && !e.feicoes.some((a) => a.id === t) && (e.lastClickedFeatureId = null);
2279
2537
  }
2280
- function ua(e) {
2538
+ function ya(e) {
2281
2539
  if (!Array.isArray(e)) return [];
2282
2540
  const t = /* @__PURE__ */ new Set(), a = [];
2283
2541
  for (const r of e) {
@@ -2287,21 +2545,21 @@ function ua(e) {
2287
2545
  }
2288
2546
  return a;
2289
2547
  }
2290
- function Gt(e, t, a) {
2291
- if (e.camadas = Array.isArray(t) ? Ee(t) : [], e.lembranca.limparOrigens(), e.persistir) {
2548
+ function rr(e, t, a) {
2549
+ if (e.camadas = Array.isArray(t) ? $e(t) : [], e.lembranca.limparOrigens(), e.persistir) {
2292
2550
  const o = e.lembranca.carregar();
2293
- e.lembranca.reidratar(e.camadas, o, e.expandedLayers), o != null && o.camadaAtivaId && e.camadas.some((n) => n.id === o.camadaAtivaId) && (e.camadaAtivaId = o.camadaAtivaId);
2551
+ e.lembranca.reidratar(e.camadas, o, e.expandedLayers, e.ordemFilhosPorPai), o != null && o.camadaAtivaId && e.camadas.some((n) => n.id === o.camadaAtivaId) && (e.camadaAtivaId = o.camadaAtivaId);
2294
2552
  } else
2295
2553
  e.camadas.forEach((o) => {
2296
2554
  e.lembranca.registrarOrigem(o), e.expandedLayers.has(o.id) || e.expandedLayers.add(o.id);
2297
2555
  });
2298
2556
  if (Array.isArray(a)) {
2299
- e.feicoes = ua(a);
2557
+ e.feicoes = ya(a);
2300
2558
  const o = new Set(e.camadas.map((s) => s.id)), n = e.feicoes.filter((s) => s.layerId && !o.has(s.layerId));
2301
2559
  n.length > 0 && console.warn(
2302
2560
  `[UI-Camadas] ${n.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
2303
2561
  n.map((s) => ({ id: s.id, nome: s.name, layerId: s.layerId }))
2304
- ), Ae(e.selectedFeatureIds, e.feicoes), da(e);
2562
+ ), Fe(e.selectedFeatureIds, e.feicoes), ba(e);
2305
2563
  }
2306
2564
  const r = new Set(e.camadas.map((o) => o.id));
2307
2565
  if (e.activeSettingsLayerId && !r.has(e.activeSettingsLayerId) && (e.activeSettingsLayerId = null), e.editingLayerId && !r.has(e.editingLayerId) && (e.editingLayerId = null), e.expandedFeatureLimits)
@@ -2310,32 +2568,32 @@ function Gt(e, t, a) {
2310
2568
  const i = e.getAttribute("camada-ativa");
2311
2569
  e.camadas.length > 0 && (!i || !r.has(i)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2312
2570
  }
2313
- function _t(e, t) {
2571
+ function ir(e, t) {
2314
2572
  const a = new Map(e.map((i) => [i.id, i])), r = /* @__PURE__ */ new Set();
2315
2573
  for (const i of t) {
2316
2574
  const o = a.get(i.id);
2317
- (!o || !Na(o, i)) && r.add(i.id);
2575
+ (!o || !Qa(o, i)) && r.add(i.id);
2318
2576
  }
2319
2577
  return r;
2320
2578
  }
2321
- function Ut(e, t) {
2579
+ function or(e, t) {
2322
2580
  const a = e.feicoes;
2323
- e.feicoes = ua(t);
2581
+ e.feicoes = ya(t);
2324
2582
  const r = e.selectedFeatureIds.size;
2325
- Ae(e.selectedFeatureIds, e.feicoes), da(e), e.editingFeatureId && !e.feicoes.some((i) => i.id === e.editingFeatureId) && (e.editingFeatureId = null), e.solicitarAtualizacaoFeicoes({
2583
+ Fe(e.selectedFeatureIds, e.feicoes), ba(e), e.editingFeatureId && !e.feicoes.some((i) => i.id === e.editingFeatureId) && (e.editingFeatureId = null), e.solicitarAtualizacaoFeicoes({
2326
2584
  camadas: "todas",
2327
- idsAlterados: _t(a, e.feicoes),
2585
+ idsAlterados: ir(a, e.feicoes),
2328
2586
  selecaoAfetada: e.selectedFeatureIds.size !== r
2329
2587
  });
2330
2588
  }
2331
- function Vt(e, t) {
2589
+ function nr(e, t) {
2332
2590
  if (!t || !t.id) return;
2333
2591
  if (e.camadas.some((r) => r.id === t.id)) {
2334
2592
  console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${t.id}'.`);
2335
2593
  return;
2336
2594
  }
2337
2595
  const a = new Set(e.camadas.map((r) => r.id));
2338
- for (const r of Ee([t])) {
2596
+ for (const r of $e([t])) {
2339
2597
  if (a.has(r.id)) {
2340
2598
  console.warn(`[UI-Camadas] adicionarCamada: subcamada '${r.id}' ignorada, o id já existe.`);
2341
2599
  continue;
@@ -2344,13 +2602,14 @@ function Vt(e, t) {
2344
2602
  }
2345
2603
  e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2346
2604
  }
2347
- function Yt(e, t) {
2348
- var a, r;
2349
- e.camadas.forEach((i) => {
2350
- i.parentId === t && (i.parentId = null);
2351
- }), e.camadas = e.camadas.filter((i) => i.id !== t), e.feicoes = e.feicoes.filter((i) => i.layerId !== t), e.lembranca.esquecerCamada(t), e.expandedLayers.delete(t), (a = e.expandedFeatureLimits) == null || a.delete(t), e.activeSettingsLayerId === t && (e.activeSettingsLayerId = null), e.editingLayerId === t && (e.editingLayerId = null), e.editingFeatureId && !e.feicoes.some((i) => i.id === e.editingFeatureId) && (e.editingFeatureId = null), Ae(e.selectedFeatureIds, e.feicoes), e.selectedFeatureIds.size === 0 && (e.lastClickedFeatureId = null), e.camadaAtivaId === t && (e.camadaAtivaId = ((r = e.camadas[0]) == null ? void 0 : r.id) ?? null), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2605
+ function sr(e, t) {
2606
+ var r, i;
2607
+ const a = e.camadas.find((o) => o.id === t);
2608
+ e.camadas.forEach((o) => {
2609
+ o.parentId === t && (o.parentId = null);
2610
+ }), e.camadas = e.camadas.filter((o) => o.id !== t), e.feicoes = e.feicoes.filter((o) => o.layerId !== t), e.ordemFilhosPorPai && (e.ordemFilhosPorPai.delete(t), a != null && a.parentId && _(e.ordemFilhosPorPai, a.parentId, R(t))), e.lembranca.esquecerCamada(t), e.expandedLayers.delete(t), (r = e.expandedFeatureLimits) == null || r.delete(t), e.activeSettingsLayerId === t && (e.activeSettingsLayerId = null), e.editingLayerId === t && (e.editingLayerId = null), e.editingFeatureId && !e.feicoes.some((o) => o.id === e.editingFeatureId) && (e.editingFeatureId = null), Fe(e.selectedFeatureIds, e.feicoes), e.selectedFeatureIds.size === 0 && (e.lastClickedFeatureId = null), e.camadaAtivaId === t && (e.camadaAtivaId = ((i = e.camadas[0]) == null ? void 0 : i.id) ?? null), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2352
2611
  }
2353
- function Kt(e, t) {
2612
+ function lr(e, t) {
2354
2613
  if (!(!t || !t.id)) {
2355
2614
  if (e.feicoes.some((a) => a.id === t.id)) {
2356
2615
  console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${t.id}'.`);
@@ -2363,7 +2622,7 @@ function Kt(e, t) {
2363
2622
  });
2364
2623
  }
2365
2624
  }
2366
- function Qt(e, t) {
2625
+ function cr(e, t) {
2367
2626
  if (!t || typeof t != "object" || !t.id) return;
2368
2627
  const a = e.feicoes.findIndex((r) => r.id === t.id);
2369
2628
  if (a !== -1) {
@@ -2375,9 +2634,9 @@ function Qt(e, t) {
2375
2634
  });
2376
2635
  }
2377
2636
  }
2378
- function Xt(e, t) {
2637
+ function dr(e, t) {
2379
2638
  const a = e.feicoes.find((i) => i.id === t);
2380
- e.feicoes = e.feicoes.filter((i) => i.id !== t);
2639
+ e.feicoes = e.feicoes.filter((i) => i.id !== t), a != null && a.layerId && e.ordemFilhosPorPai && _(e.ordemFilhosPorPai, a.layerId, O(t));
2381
2640
  const r = e.selectedFeatureIds.delete(t);
2382
2641
  e.lastClickedFeatureId === t && (e.lastClickedFeatureId = null), e.editingFeatureId === t && (e.editingFeatureId = null), e.solicitarAtualizacaoFeicoes({
2383
2642
  camadas: new Set(a ? [a.layerId || ""] : []),
@@ -2385,16 +2644,16 @@ function Xt(e, t) {
2385
2644
  selecaoAfetada: r
2386
2645
  });
2387
2646
  }
2388
- function Wt(e) {
2647
+ function ur(e) {
2389
2648
  function r() {
2390
2649
  return e.getMinAltura ? e.getMinAltura() : 140;
2391
2650
  }
2392
2651
  function i() {
2393
2652
  return e.getMaxAltura ? e.getMaxAltura() : 1600;
2394
2653
  }
2395
- function o(l, p = !1) {
2654
+ function o(l, u = !1) {
2396
2655
  if (l == null || l === "") {
2397
- e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"), p && e.hostElement.dispatchEvent(
2656
+ e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"), u && e.hostElement.dispatchEvent(
2398
2657
  new CustomEvent("ui-redimensionar-altura", {
2399
2658
  bubbles: !0,
2400
2659
  composed: !0,
@@ -2403,64 +2662,64 @@ function Wt(e) {
2403
2662
  );
2404
2663
  return;
2405
2664
  }
2406
- const d = typeof l == "number" ? l : parseFloat(String(l));
2407
- if (isNaN(d)) return;
2408
- const u = Math.max(r(), Math.min(i(), Math.round(d)));
2409
- e.hostElement.style.height = `${u}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${u}px`), p && e.hostElement.dispatchEvent(
2665
+ const p = typeof l == "number" ? l : parseFloat(String(l));
2666
+ if (isNaN(p)) return;
2667
+ const d = Math.max(r(), Math.min(i(), Math.round(p)));
2668
+ e.hostElement.style.height = `${d}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${d}px`), u && e.hostElement.dispatchEvent(
2410
2669
  new CustomEvent("ui-redimensionar-altura", {
2411
2670
  bubbles: !0,
2412
2671
  composed: !0,
2413
- detail: { altura: u }
2672
+ detail: { altura: d }
2414
2673
  })
2415
2674
  );
2416
2675
  }
2417
2676
  let n = null;
2418
2677
  function s() {
2419
2678
  if (!e.resizerElement) return;
2420
- let l = !1, p = 0, d = 0;
2421
- const u = (m) => {
2679
+ let l = !1, u = 0, p = 0;
2680
+ const d = (m) => {
2422
2681
  if (m.button !== 0) return;
2423
- m.preventDefault(), m.stopPropagation(), l = !0, p = m.clientY, d = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
2682
+ m.preventDefault(), m.stopPropagation(), l = !0, u = m.clientY, p = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
2424
2683
  try {
2425
2684
  e.resizerElement.setPointerCapture(m.pointerId);
2426
2685
  } catch {
2427
2686
  }
2428
- const g = (E) => {
2687
+ const h = (w) => {
2429
2688
  if (!l) return;
2430
- E.preventDefault();
2431
- const k = E.clientY - p, C = Math.max(r(), Math.min(i(), Math.round(d + k)));
2432
- e.hostElement.style.height = `${C}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${C}px`), e.onRedimensionando && e.onRedimensionando(C), e.hostElement.dispatchEvent(
2689
+ w.preventDefault();
2690
+ const k = w.clientY - u, L = Math.max(r(), Math.min(i(), Math.round(p + k)));
2691
+ e.hostElement.style.height = `${L}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${L}px`), e.onRedimensionando && e.onRedimensionando(L), e.hostElement.dispatchEvent(
2433
2692
  new CustomEvent("ui-redimensionando-altura", {
2434
2693
  bubbles: !0,
2435
2694
  composed: !0,
2436
- detail: { altura: C }
2695
+ detail: { altura: L }
2437
2696
  })
2438
2697
  );
2439
- }, b = () => {
2440
- var E;
2441
- l = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", v), window.removeEventListener("pointercancel", v), (E = e.resizerElement) == null || E.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2442
- }, v = (E) => {
2698
+ }, v = () => {
2699
+ var w;
2700
+ l = !1, n = null, window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", g), window.removeEventListener("pointercancel", g), (w = e.resizerElement) == null || w.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2701
+ }, g = (w) => {
2443
2702
  if (!l) return;
2444
2703
  l = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2445
2704
  try {
2446
- e.resizerElement.hasPointerCapture(E.pointerId) && e.resizerElement.releasePointerCapture(E.pointerId);
2705
+ e.resizerElement.hasPointerCapture(w.pointerId) && e.resizerElement.releasePointerCapture(w.pointerId);
2447
2706
  } catch {
2448
2707
  }
2449
- window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", v), window.removeEventListener("pointercancel", v);
2450
- const k = e.hostElement.getBoundingClientRect().height, C = Math.round(k);
2451
- e.onAlturaAlterada && e.onAlturaAlterada(C), e.hostElement.dispatchEvent(
2708
+ window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", g), window.removeEventListener("pointercancel", g);
2709
+ const k = e.hostElement.getBoundingClientRect().height, L = Math.round(k);
2710
+ e.onAlturaAlterada && e.onAlturaAlterada(L), e.hostElement.dispatchEvent(
2452
2711
  new CustomEvent("ui-redimensionar-altura", {
2453
2712
  bubbles: !0,
2454
2713
  composed: !0,
2455
- detail: { altura: C }
2714
+ detail: { altura: L }
2456
2715
  })
2457
2716
  );
2458
2717
  };
2459
- n = b, window.addEventListener("pointermove", g), window.addEventListener("pointerup", v), window.addEventListener("pointercancel", v);
2718
+ n = v, window.addEventListener("pointermove", h), window.addEventListener("pointerup", g), window.addEventListener("pointercancel", g);
2460
2719
  }, f = (m) => {
2461
2720
  m.preventDefault(), m.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
2462
2721
  };
2463
- e.listeners.add(e.resizerElement, "pointerdown", u), e.listeners.add(e.resizerElement, "dblclick", f);
2722
+ e.listeners.add(e.resizerElement, "pointerdown", d), e.listeners.add(e.resizerElement, "dblclick", f);
2464
2723
  }
2465
2724
  function c() {
2466
2725
  n == null || n(), e.listeners.cleanup();
@@ -2471,21 +2730,21 @@ function Wt(e) {
2471
2730
  destruir: c
2472
2731
  };
2473
2732
  }
2474
- const H = class H extends La {
2733
+ const U = class U extends Ba {
2475
2734
  constructor() {
2476
2735
  super();
2477
- A(this, "shadow");
2478
- A(this, "listeners", new $a());
2479
- A(this, "dragDropManager");
2480
- A(this, "resizerController");
2481
- A(this, "alturaCustomizada", null);
2482
- A(this, "conectado", !1);
2483
- A(this, "profundidadeLote", 0);
2484
- A(this, "renderPendente", !1);
2736
+ I(this, "shadow");
2737
+ I(this, "listeners", new Ta());
2738
+ I(this, "dragDropManager");
2739
+ I(this, "resizerController");
2740
+ I(this, "alturaCustomizada", null);
2741
+ I(this, "conectado", !1);
2742
+ I(this, "profundidadeLote", 0);
2743
+ I(this, "renderPendente", !1);
2485
2744
  /** Mudança de feições à espera do `render()` (consumida nele): permite atualizar só as linhas afetadas. */
2486
- A(this, "mudancaFeicoes", null);
2745
+ I(this, "mudancaFeicoes", null);
2487
2746
  /** @internal */
2488
- A(this, "lembranca", new Ht(() => ({
2747
+ I(this, "lembranca", new tr(() => ({
2489
2748
  persistir: this.persistir,
2490
2749
  conectado: this.conectado,
2491
2750
  storageKey: this.storageKey,
@@ -2496,24 +2755,26 @@ const H = class H extends La {
2496
2755
  painelColapsado: this.colapsado,
2497
2756
  mapaBaseAtivo: this.mapaBaseAtivo,
2498
2757
  densidade: this.densidade,
2499
- altura: this.alturaCustomizada
2758
+ altura: this.alturaCustomizada,
2759
+ ordemFilhosPorPai: this.ordemFilhosPorPai
2500
2760
  })));
2501
2761
  // Estado interno
2502
- A(this, "camadas", []);
2503
- A(this, "feicoes", []);
2504
- A(this, "mapasBase", [...Ne]);
2505
- A(this, "expandedLayers", /* @__PURE__ */ new Set());
2506
- A(this, "expandedFeatureLimits", /* @__PURE__ */ new Map());
2507
- A(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
2508
- A(this, "lastClickedFeatureId", null);
2509
- A(this, "activeSettingsLayerId", null);
2510
- A(this, "editingLayerId", null);
2511
- A(this, "editingFeatureId", null);
2512
- A(this, "searchQuery", "");
2513
- A(this, "corpoElement");
2514
- A(this, "btnExpandirFlutuante");
2762
+ I(this, "camadas", []);
2763
+ I(this, "feicoes", []);
2764
+ I(this, "mapasBase", [...Qe]);
2765
+ I(this, "expandedLayers", /* @__PURE__ */ new Set());
2766
+ I(this, "expandedFeatureLimits", /* @__PURE__ */ new Map());
2767
+ I(this, "ordemFilhosPorPai", /* @__PURE__ */ new Map());
2768
+ I(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
2769
+ I(this, "lastClickedFeatureId", null);
2770
+ I(this, "activeSettingsLayerId", null);
2771
+ I(this, "editingLayerId", null);
2772
+ I(this, "editingFeatureId", null);
2773
+ I(this, "searchQuery", "");
2774
+ I(this, "corpoElement");
2775
+ I(this, "btnExpandirFlutuante");
2515
2776
  this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
2516
- <style>${tt}</style>
2777
+ <style>${ht}</style>
2517
2778
  <div class="ui-camadas-container" id="panel-container" part="base" role="region" aria-label="Painel de Camadas">
2518
2779
  <div class="ui-camadas-corpo" id="painel-corpo" part="corpo"></div>
2519
2780
  <div class="ui-camadas-resizer-altura" id="resizer-altura" part="resizer" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
@@ -2521,11 +2782,11 @@ const H = class H extends La {
2521
2782
  </div>
2522
2783
  </div>
2523
2784
  <button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" part="botao-expandir" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
2524
- ${y.camadas}
2785
+ ${b.camadas}
2525
2786
  </button>
2526
- `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new Ka(this, this.shadow);
2787
+ `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new lt(this, this.shadow);
2527
2788
  const a = this.shadow.getElementById("resizer-altura");
2528
- this.resizerController = Wt({
2789
+ this.resizerController = ur({
2529
2790
  hostElement: this,
2530
2791
  resizerElement: a,
2531
2792
  listeners: this.listeners,
@@ -2563,27 +2824,27 @@ const H = class H extends La {
2563
2824
  "altura",
2564
2825
  "min-altura",
2565
2826
  "max-altura",
2566
- ...Ca
2827
+ ...qa
2567
2828
  ];
2568
2829
  }
2569
2830
  connectedCallback() {
2570
2831
  if (this.persistir) {
2571
- const a = he(this.obterChaveStorageAtual());
2832
+ const a = ke(this.obterChaveStorageAtual());
2572
2833
  a && (a.painelColapsado === !0 && !this.hasAttribute("colapsado") && (this.colapsado = !0), a.camadaAtivaId && !this.getAttribute("camada-ativa") && (this.camadaAtivaId = a.camadaAtivaId), a.mapaBaseAtivo && !this.getAttribute("mapa-base-ativo") && (this.mapaBaseAtivo = a.mapaBaseAtivo), a.densidade && !this.getAttribute("densidade") && (this.densidade = a.densidade), typeof a.altura == "number" && !this.getAttribute("altura") && !this.style.height && (this.resizerController.definirAltura(a.altura, !1), this.alturaCustomizada = a.altura));
2573
2834
  }
2574
- this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (H.instanciasChavePadrao.size > 0 && console.warn(
2835
+ this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (U.instanciasChavePadrao.size > 0 && console.warn(
2575
2836
  "[UI-Camadas] Mais de um painel sem 'id' nem 'storage-key' divide a mesma chave de persistência e um sobrescreve o estado do outro. Defina 'storage-key' (ou 'id') em cada um."
2576
- ), H.instanciasChavePadrao.add(this)), this.resizerController.init(), Se(this, this.shadow.getElementById("panel-container")), this.render(), this.conectarEventosGerais(), Tt(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
2837
+ ), U.instanciasChavePadrao.add(this)), this.resizerController.init(), qe(this, this.shadow.getElementById("panel-container")), this.render(), this.conectarEventosGerais(), Wt(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
2577
2838
  }
2578
2839
  disconnectedCallback() {
2579
2840
  var a, r;
2580
- this.conectado = !1, H.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (r = this.dragDropManager) == null || r.destruir(), pt(this), this.listeners.cleanup();
2841
+ this.conectado = !1, U.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (r = this.dragDropManager) == null || r.destruir(), Lt(this), this.listeners.cleanup();
2581
2842
  }
2582
2843
  attributeChangedCallback(a, r, i) {
2583
2844
  var o, n;
2584
2845
  if (r !== i) {
2585
- if (Sa(a)) {
2586
- Se(this, this.shadow.getElementById("panel-container"));
2846
+ if (Da(a)) {
2847
+ qe(this, this.shadow.getElementById("panel-container"));
2587
2848
  return;
2588
2849
  }
2589
2850
  a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "densidade" ? this.salvarLembrancaEstado() : a === "mapa-base-ativo" ? i && this.marcarMapaBaseAtivoNoDOM(i) : a === "titulo" || a === "mostrar-mapas-base" || a === "mapas-base-recolhido" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" ? (o = this.resizerController) == null || o.definirAltura(i, !1) : (a === "min-altura" || a === "max-altura") && this.alturaCustomizada !== null && ((n = this.resizerController) == null || n.definirAltura(this.alturaCustomizada, !1));
@@ -2618,7 +2879,7 @@ const H = class H extends La {
2618
2879
  i.classList.toggle("active", o), i.setAttribute("aria-pressed", String(o));
2619
2880
  });
2620
2881
  const r = this.shadow.querySelector("[data-basemap-atual]");
2621
- r && (r.textContent = He(this.mapasBase, a));
2882
+ r && (r.textContent = Xe(this.mapasBase, a));
2622
2883
  }
2623
2884
  /** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
2624
2885
  get mapasBaseRecolhido() {
@@ -2721,7 +2982,7 @@ const H = class H extends La {
2721
2982
  this.lembranca.salvar();
2722
2983
  }
2723
2984
  limparLembranca() {
2724
- this.expandedFeatureLimits.clear(), this.lembranca.limpar();
2985
+ this.expandedFeatureLimits.clear(), this.ordemFilhosPorPai.clear(), this.lembranca.limpar();
2725
2986
  }
2726
2987
  // --- API Pública de Alta Ergonomia ---
2727
2988
  //
@@ -2752,10 +3013,10 @@ const H = class H extends La {
2752
3013
  this.definirMapasBase(a);
2753
3014
  }
2754
3015
  definirCamadas(a, r) {
2755
- Gt(this, a, r);
3016
+ rr(this, a, r);
2756
3017
  }
2757
3018
  definirFeicoes(a) {
2758
- Ut(this, a);
3019
+ or(this, a);
2759
3020
  }
2760
3021
  definirMapasBase(a) {
2761
3022
  this.mapasBase = Array.isArray(a) ? [...a] : [], this.solicitarRenderizacao();
@@ -2779,28 +3040,28 @@ const H = class H extends La {
2779
3040
  return this.feicoes.filter((a) => this.selectedFeatureIds.has(a.id));
2780
3041
  }
2781
3042
  adicionarCamada(a) {
2782
- Vt(this, a);
3043
+ nr(this, a);
2783
3044
  }
2784
3045
  removerCamada(a) {
2785
- Yt(this, a);
3046
+ sr(this, a);
2786
3047
  }
2787
3048
  adicionarFeicao(a) {
2788
- Kt(this, a);
3049
+ lr(this, a);
2789
3050
  }
2790
3051
  atualizarFeicao(a) {
2791
- Qt(this, a);
3052
+ cr(this, a);
2792
3053
  }
2793
3054
  removerFeicao(a) {
2794
- Xt(this, a);
3055
+ dr(this, a);
2795
3056
  }
2796
3057
  selecionarFeicao(a, r = !1, i = !1, o = !1) {
2797
- Rt(this, a, r, i, o);
3058
+ Jt(this, a, r, i, o);
2798
3059
  }
2799
3060
  selecionarFeicoes(a, r = !1) {
2800
- Ot(this, a, r);
3061
+ Zt(this, a, r);
2801
3062
  }
2802
3063
  limparSelecao(a = !1) {
2803
- jt(this, a);
3064
+ er(this, a);
2804
3065
  }
2805
3066
  expandirTodas() {
2806
3067
  this.expandedLayers = new Set(this.camadas.map((a) => a.id)), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
@@ -2878,7 +3139,7 @@ const H = class H extends La {
2878
3139
  }
2879
3140
  render() {
2880
3141
  const a = this.mudancaFeicoes;
2881
- this.mudancaFeicoes = null, this.corpoElement && (a && Ft(this, this.shadow, this.dragDropManager, a) || $t(this, this.shadow, this.corpoElement, this.dragDropManager));
3142
+ this.mudancaFeicoes = null, this.corpoElement && (a && Vt(this, this.shadow, this.dragDropManager, a) || Gt(this, this.shadow, this.corpoElement, this.dragDropManager));
2882
3143
  }
2883
3144
  // --- Conexão de Eventos ---
2884
3145
  conectarEventosGerais() {
@@ -2886,27 +3147,27 @@ const H = class H extends La {
2886
3147
  }
2887
3148
  // --- Sincronização de DOM (delegada) ---
2888
3149
  sincronizarCamadaAtivaDOM() {
2889
- rt(this, this.shadow);
3150
+ vt(this, this.shadow);
2890
3151
  }
2891
3152
  sincronizarSelecaoDOM() {
2892
- it(this, this.shadow);
3153
+ bt(this, this.shadow);
2893
3154
  }
2894
3155
  // --- Auxiliares Internos ---
2895
3156
  notificarMudancaSelecao() {
2896
- Nt(this);
3157
+ ar(this);
2897
3158
  }
2898
3159
  };
2899
3160
  /** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
2900
- A(H, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2901
- let X = H;
2902
- class Jt extends X {
3161
+ I(U, "instanciasChavePadrao", /* @__PURE__ */ new Set());
3162
+ let ee = U;
3163
+ class pr extends ee {
2903
3164
  }
2904
- class Zt extends X {
3165
+ class fr extends ee {
2905
3166
  }
2906
- xe("ui-camadas", X);
2907
- xe("ui-painel-camadas", Jt);
2908
- xe("ui-layer-panel", Zt);
2909
- function cr(e) {
3167
+ Ce("ui-camadas", ee);
3168
+ Ce("ui-painel-camadas", pr);
3169
+ Ce("ui-layer-panel", fr);
3170
+ function Ir(e) {
2910
3171
  var t;
2911
3172
  return {
2912
3173
  id: e.id,
@@ -2923,7 +3184,7 @@ function cr(e) {
2923
3184
  dados: e.dados
2924
3185
  };
2925
3186
  }
2926
- function dr(e, t = "levantamento", a = "feicoes") {
3187
+ function kr(e, t = "levantamento", a = "feicoes") {
2927
3188
  return {
2928
3189
  id: e.id,
2929
3190
  nome: e.name,
@@ -2942,7 +3203,7 @@ function dr(e, t = "levantamento", a = "feicoes") {
2942
3203
  dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
2943
3204
  };
2944
3205
  }
2945
- function ur(e, t = "") {
3206
+ function Lr(e, t = "") {
2946
3207
  var o, n, s, c;
2947
3208
  const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", r = ((s = e.geometria) == null ? void 0 : s.coordenadas) || ((c = e.geometria) == null ? void 0 : c.coordinates) || e.coordinates, i = e.cor || e.color;
2948
3209
  return {
@@ -2961,43 +3222,43 @@ function ur(e, t = "") {
2961
3222
  };
2962
3223
  }
2963
3224
  export {
2964
- Ka as CamadasDragDropManager,
2965
- y as ICONES,
2966
- we as LIMITE_FEICOES_POR_CAMADA,
2967
- Ne as MAPAS_BASE_PADRAO,
2968
- X as UICamadas,
2969
- Zt as UILayerPanel,
2970
- mr as UIMapaBase,
2971
- Jt as UIPainelCamadas,
2972
- gr as UISeletorMapaBase,
2973
- pe as calcularAreaAnelSimples,
2974
- Oe as calcularAreaPoligono,
2975
- Re as calcularComprimentoLinha,
2976
- za as calcularDistanciaPontos,
2977
- Ha as calcularSelecaoFeicao,
2978
- he as carregarEstadoPersistido,
2979
- se as construirHierarquiaCamadas,
2980
- dr as converterCamadaItemParaCanvasLayer,
2981
- cr as converterCanvasLayerParaCamadaItem,
2982
- ur as converterFeicaoParaItem,
2983
- z as escapeHtml,
2984
- ea as filtrarCamadasPorBusca,
2985
- V as filtrarFeicoesPorBusca,
2986
- lr as formatarMetricaFeicoes,
2987
- Ge as formatarOpcoesCamadasHierarquicas,
2988
- Xa as gerarChaveStorage,
2989
- Za as limparEstadoPersistido,
2990
- at as montarEstadoPersistido,
2991
- He as nomeDoMapaBase,
2992
- Wa as normalizarEstadoPersistido,
2993
- aa as obterIdsVisiveisFeicoes,
2994
- et as reidratarCamadasComOverrides,
2995
- Ae as removerSelecoesInvalidas,
2996
- Ua as renderizarArvoreCamadas,
2997
- Da as renderizarGridMapasBase,
2998
- Ra as renderizarRodapeAcoes,
2999
- Ve as renderizarThumbGeometria,
3000
- _e as rotuloRodape,
3001
- Ja as salvarEstadoPersistido,
3002
- ta as snapshotCamada
3225
+ lt as CamadasDragDropManager,
3226
+ b as ICONES,
3227
+ Se as LIMITE_FEICOES_POR_CAMADA,
3228
+ Qe as MAPAS_BASE_PADRAO,
3229
+ ee as UICamadas,
3230
+ fr as UILayerPanel,
3231
+ Fr as UIMapaBase,
3232
+ pr as UIPainelCamadas,
3233
+ $r as UISeletorMapaBase,
3234
+ ye as calcularAreaAnelSimples,
3235
+ Ue as calcularAreaPoligono,
3236
+ Ye as calcularComprimentoLinha,
3237
+ ja as calcularDistanciaPontos,
3238
+ Xa as calcularSelecaoFeicao,
3239
+ ke as carregarEstadoPersistido,
3240
+ pe as construirHierarquiaCamadas,
3241
+ kr as converterCamadaItemParaCanvasLayer,
3242
+ Ir as converterCanvasLayerParaCamadaItem,
3243
+ Lr as converterFeicaoParaItem,
3244
+ M as escapeHtml,
3245
+ la as filtrarCamadasPorBusca,
3246
+ W as filtrarFeicoesPorBusca,
3247
+ Er as formatarMetricaFeicoes,
3248
+ We as formatarOpcoesCamadasHierarquicas,
3249
+ dt as gerarChaveStorage,
3250
+ ft as limparEstadoPersistido,
3251
+ gt as montarEstadoPersistido,
3252
+ Xe as nomeDoMapaBase,
3253
+ ut as normalizarEstadoPersistido,
3254
+ ca as obterIdsVisiveisFeicoes,
3255
+ mt as reidratarCamadasComOverrides,
3256
+ Fe as removerSelecoesInvalidas,
3257
+ ot as renderizarArvoreCamadas,
3258
+ Va as renderizarGridMapasBase,
3259
+ Ya as renderizarRodapeAcoes,
3260
+ ea as renderizarThumbGeometria,
3261
+ Je as rotuloRodape,
3262
+ pt as salvarEstadoPersistido,
3263
+ da as snapshotCamada
3003
3264
  };