@thibezer/ui-components-kit 2.12.0 → 2.12.2

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,13 +1,13 @@
1
- var Ze = Object.defineProperty;
2
- var ea = (e, r, a) => r in e ? Ze(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
3
- var A = (e, r, a) => ea(e, typeof r != "symbol" ? r + "" : r, a);
1
+ var We = Object.defineProperty;
2
+ var Ze = (e, r, a) => r in e ? We(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
3
+ var y = (e, r, a) => Ze(e, typeof r != "symbol" ? r + "" : r, a);
4
4
  /* empty css */
5
- import { d as ge, S as aa } from "./ssr-safe-5cWfJP-s.js";
6
- import { L as ra } from "./listener-bag-DQgv7OON.js";
7
- import { a as ta } from "./ui-seletor-cor-D2_C6Aor.js";
8
- import { f as ia } from "./alvo-digitavel-CzCvNVQ3.js";
5
+ import { d as ge, S as ea } from "./ssr-safe-5cWfJP-s.js";
6
+ import { L as aa } from "./listener-bag-DQgv7OON.js";
7
+ import { a as ra } from "./ui-seletor-cor-D2_C6Aor.js";
8
+ import { f as ta } from "./alvo-digitavel-CzCvNVQ3.js";
9
9
  import { a as Le } from "./parts-CaoQiCfI.js";
10
- import { UIMapaBase as Fr, UISeletorMapaBase as zr } from "./seletor-mapa-base.js";
10
+ import { UIMapaBase as zr, UISeletorMapaBase as Br } from "./seletor-mapa-base.js";
11
11
  const b = {
12
12
  camadas: `<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
13
13
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
@@ -107,7 +107,7 @@ const b = {
107
107
  <line x1="15" y1="3" x2="15" y2="21"></line>
108
108
  </svg>`
109
109
  }, U = 6378137;
110
- function oa(e, r) {
110
+ function ia(e, r) {
111
111
  if (!Array.isArray(e) || !Array.isArray(r) || e.length < 2 || r.length < 2 || !Number.isFinite(e[0]) || !Number.isFinite(e[1]) || !Number.isFinite(r[0]) || !Number.isFinite(r[1]))
112
112
  return 0;
113
113
  const a = e[0] * Math.PI / 180, i = e[1] * Math.PI / 180, t = r[0] * Math.PI / 180, o = r[1] * Math.PI / 180, n = t - a, l = o - i, c = Math.min(
@@ -126,7 +126,7 @@ function Ce(e) {
126
126
  let r = 0;
127
127
  for (let a = 0; a < e.length - 1; a++) {
128
128
  const i = e[a], t = e[a + 1];
129
- Array.isArray(i) && Array.isArray(t) && i.length >= 2 && t.length >= 2 && (r += oa([i[0], i[1]], [t[0], t[1]]));
129
+ Array.isArray(i) && Array.isArray(t) && i.length >= 2 && t.length >= 2 && (r += ia([i[0], i[1]], [t[0], t[1]]));
130
130
  }
131
131
  return r;
132
132
  }
@@ -146,11 +146,11 @@ function ce(e) {
146
146
  const t = i / a * Math.PI / 180, o = Math.cos(t), n = Math.PI / 180, l = r[0][0], c = r[0][1];
147
147
  let s = 0;
148
148
  for (let f = 0; f < a; f++) {
149
- const p = r[f], m = r[(f + 1) % a], d = (p[1] - c) * n * U * o, g = (p[0] - l) * n * U, v = (m[1] - c) * n * U * o, x = (m[0] - l) * n * U;
150
- s += d * x - v * g;
149
+ const p = r[f], m = r[(f + 1) % a], u = (p[1] - c) * n * U * o, g = (p[0] - l) * n * U, v = (m[1] - c) * n * U * o, h = (m[0] - l) * n * U;
150
+ s += u * h - v * g;
151
151
  }
152
- const u = Math.abs(s) / 2;
153
- return Number.isFinite(u) ? u : 0;
152
+ const d = Math.abs(s) / 2;
153
+ return Number.isFinite(d) ? d : 0;
154
154
  }
155
155
  function $e(e) {
156
156
  if (!Array.isArray(e) || e.length === 0) return 0;
@@ -167,7 +167,7 @@ function $e(e) {
167
167
  }
168
168
  return 0;
169
169
  }
170
- function Se(e) {
170
+ function Lr(e) {
171
171
  if (!e || e.length === 0) return "";
172
172
  const r = e.filter(
173
173
  (i) => i.type === "Polygon" || i.type === "MultiPolygon" || i.geometryType === "Polygon"
@@ -197,23 +197,23 @@ function Se(e) {
197
197
  }
198
198
  return "";
199
199
  }
200
- function F(e) {
200
+ function M(e) {
201
201
  return e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
202
202
  }
203
- 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;
204
- function N(e, r = "#00E08A") {
203
+ const oa = /^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;
204
+ function V(e, r = "#00E08A") {
205
205
  if (!e || typeof e != "string") return r;
206
206
  const a = e.trim();
207
- return na.test(a) ? a : r;
207
+ return oa.test(a) ? a : r;
208
208
  }
209
209
  function de(e) {
210
210
  return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
211
211
  }
212
- function sa(e, r, a) {
212
+ function na(e, r, a) {
213
213
  const i = r / 100, t = a / 100, o = (c) => (c + e / 30) % 12, n = i * Math.min(t, 1 - t), l = (c) => t - n * Math.max(-1, Math.min(o(c) - 3, Math.min(9 - o(c), 1)));
214
214
  return [l(0) * 255, l(8) * 255, l(4) * 255];
215
215
  }
216
- function Me(e, r = "#000000") {
216
+ function sa(e, r = "#000000") {
217
217
  if (!e || typeof e != "string") return r;
218
218
  const a = e.trim().toLowerCase(), i = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
219
219
  if (i) {
@@ -224,8 +224,8 @@ function Me(e, r = "#000000") {
224
224
  if (t) {
225
225
  const o = t[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
226
226
  if (o.length >= 3 && o.slice(0, 3).every((n) => !isNaN(n))) {
227
- const [n, l, c] = o, [s, u, f] = t[1] === "rgb" ? [n, l, c] : sa(n, l, c);
228
- return `#${de(s)}${de(u)}${de(f)}`;
227
+ const [n, l, c] = o, [s, d, f] = t[1] === "rgb" ? [n, l, c] : na(n, l, c);
228
+ return `#${de(s)}${de(d)}${de(f)}`;
229
229
  }
230
230
  }
231
231
  return r;
@@ -236,7 +236,7 @@ function T(e, r, a) {
236
236
  if (i[t].getAttribute(r) === a) return i[t];
237
237
  return null;
238
238
  }
239
- function Fe(e, r = 80) {
239
+ function Se(e, r = 80) {
240
240
  let a = null;
241
241
  return (...i) => {
242
242
  a && clearTimeout(a), a = setTimeout(() => {
@@ -244,10 +244,10 @@ function Fe(e, r = 80) {
244
244
  }, r);
245
245
  };
246
246
  }
247
- function P(e, r) {
247
+ function D(e, r) {
248
248
  e.setAttribute("title", r), e.setAttribute("aria-label", r);
249
249
  }
250
- const ze = [
250
+ const Me = [
251
251
  {
252
252
  id: "none",
253
253
  nome: "Sem Mapa",
@@ -290,16 +290,16 @@ const ze = [
290
290
  thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
291
291
  }
292
292
  ];
293
- function Be(e, r) {
293
+ function Fe(e, r) {
294
294
  const a = Array.isArray(e) ? e.find((i) => i.id === r) : void 0;
295
295
  return a && typeof a.nome == "string" ? a.nome : "";
296
296
  }
297
- function la(e = ze, r = "satelite", a = !1) {
297
+ function la(e = Me, r = "satelite", a = !1) {
298
298
  if (!e || e.length === 0) return "";
299
299
  const i = e.map((t) => {
300
- const o = r === t.id, n = F(t.id), l = F(t.nome), c = F(t.descricao || t.nome);
300
+ const o = r === t.id, n = M(t.id), l = M(t.nome), c = M(t.descricao || t.nome);
301
301
  let s = "";
302
- return t.thumbnailUrl ? s = `<img class="ui-basemap-preview" src="${F(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : s = `<div class="ui-basemap-preview-none">${b.gradeCad}</div>`, `
302
+ return t.thumbnailUrl ? s = `<img class="ui-basemap-preview" src="${M(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : s = `<div class="ui-basemap-preview-none">${b.gradeCad}</div>`, `
303
303
  <div class="ui-basemap-card ${o ? "active" : ""}" data-basemap-id="${n}" role="button" tabindex="0" aria-pressed="${o}" title="${c}">
304
304
  ${s}
305
305
  <span>${l}</span>
@@ -310,7 +310,7 @@ function la(e = ze, r = "satelite", a = !1) {
310
310
  <div class="ui-basemap-section ${a ? "recolhido" : ""}" part="mapas-base">
311
311
  <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"}">
312
312
  <span class="ui-basemap-title">Mapa Base</span>
313
- <span class="ui-basemap-atual" data-basemap-atual>${F(Be(e, r))}</span>
313
+ <span class="ui-basemap-atual" data-basemap-atual>${M(Fe(e, r))}</span>
314
314
  <span class="ui-chevron-icon ${a ? "" : "open"}">${b.chevronDir}</span>
315
315
  </button>
316
316
  ${a ? "" : `<div class="ui-basemap-grid" id="ui-basemap-grid">
@@ -322,42 +322,42 @@ function la(e = ze, r = "satelite", a = !1) {
322
322
  function ve(e) {
323
323
  if (!Array.isArray(e) || e.length === 0) return [];
324
324
  const r = e.filter((s) => !!(s && typeof s == "object" && s.id)), a = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
325
- r.forEach((s, u) => {
326
- a.set(s.id, s), i.set(s.id, u);
325
+ r.forEach((s, d) => {
326
+ a.set(s.id, s), i.set(s.id, d);
327
327
  });
328
328
  const t = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
329
329
  for (const s of r) {
330
330
  if (o.has(s.id)) continue;
331
- const u = [], f = /* @__PURE__ */ new Map();
331
+ const d = [], f = /* @__PURE__ */ new Map();
332
332
  let p = s;
333
333
  for (; p && p.parentId && a.has(p.parentId) && p.parentId !== p.id; ) {
334
334
  if (f.has(p.id)) {
335
- const m = f.get(p.id), d = u.slice(m);
336
- let g = d[0];
337
- for (const v of d)
335
+ const m = f.get(p.id), u = d.slice(m);
336
+ let g = u[0];
337
+ for (const v of u)
338
338
  (i.get(v) ?? 1 / 0) < (i.get(g) ?? 1 / 0) && (g = v);
339
339
  t.add(g);
340
340
  break;
341
341
  }
342
342
  if (o.has(p.id)) break;
343
- f.set(p.id, u.length), u.push(p.id), p = a.get(p.parentId);
343
+ f.set(p.id, d.length), d.push(p.id), p = a.get(p.parentId);
344
344
  }
345
- for (const m of u) o.add(m);
345
+ for (const m of d) o.add(m);
346
346
  }
347
347
  const n = /* @__PURE__ */ new Map(), l = [];
348
348
  r.forEach((s) => {
349
349
  !t.has(s.id) && !!(s.parentId && a.has(s.parentId) && s.parentId !== s.id) && s.parentId ? (n.has(s.parentId) || n.set(s.parentId, []), n.get(s.parentId).push(s)) : l.push(s);
350
350
  });
351
- function c(s, u, f) {
351
+ function c(s, d, f) {
352
352
  const p = new Set(f);
353
353
  p.add(s.id);
354
- const d = (n.get(s.id) || (Array.isArray(s.children) ? s.children : [])).filter(
354
+ const u = (n.get(s.id) || (Array.isArray(s.children) ? s.children : [])).filter(
355
355
  (g) => !!(g && typeof g == "object" && g.id && !p.has(g.id))
356
356
  );
357
357
  return {
358
358
  camada: s,
359
- depth: u,
360
- subcamadas: d.map((g) => c(g, u + 1, p))
359
+ depth: d,
360
+ subcamadas: u.map((g) => c(g, d + 1, p))
361
361
  };
362
362
  }
363
363
  return l.map((s) => c(s, 0, /* @__PURE__ */ new Set()));
@@ -387,61 +387,53 @@ function re(e, r, a) {
387
387
  }
388
388
  function da(e) {
389
389
  const r = ve(e), a = (i) => {
390
- const t = i.camada, o = i.depth, n = i.subcamadas, l = o > 0 ? "&nbsp;&nbsp;".repeat(o) + "↳ " : n.length > 0 || t.isGroup ? "📁 " : "", c = `<option value="${F(t.id)}">${l}${F(t.name)}</option>`, s = n.map((u) => a(u)).join("");
390
+ const t = i.camada, o = i.depth, n = i.subcamadas, l = o > 0 ? "&nbsp;&nbsp;".repeat(o) + "↳ " : n.length > 0 || t.isGroup ? "📁 " : "", c = `<option value="${M(t.id)}">${l}${M(t.name)}</option>`, s = n.map((d) => a(d)).join("");
391
391
  return c + s;
392
392
  };
393
393
  return r.map((i) => a(i)).join("");
394
394
  }
395
+ function ze(e, r) {
396
+ return r > 0 ? {
397
+ icone: b.alvoEnquadrar,
398
+ texto: `${r} ${r > 1 ? "selecionados" : "selecionado"}`
399
+ } : {
400
+ icone: b.camadas,
401
+ texto: `${e} ${e > 1 ? "camadas" : "camada"}`
402
+ };
403
+ }
395
404
  function ua(e, r, a) {
396
- var f;
397
- const i = r.filter((p) => a.has(p.id)), t = i.length > 0, o = Se(i), n = N((f = i[0]) == null ? void 0 : f.color, "#00E08A"), l = Me(n, "#00E08A"), c = t ? i.length : e.length, s = t ? i.length > 1 ? "selecionados" : "selecionado" : e.length > 1 ? "camadas" : "camada", u = da(e);
405
+ const i = r.filter((c) => a.has(c.id)), t = i.length > 0, o = t ? i.length : e.length, n = ze(e.length, i.length), l = da(e);
398
406
  return `
399
407
  <div class="ui-tree-footer ${t ? "tem-selecao" : "sem-selecao"}" part="rodape">
400
408
  <div class="ui-footer-left">
401
- <span class="ui-footer-count" id="footer-count">${c}</span>
402
- <span class="ui-footer-label" id="footer-label">${s}</span>
403
- <span class="ui-footer-metric" id="footer-metric" style="display: ${o ? "inline-flex" : "none"};">${o ? `${b.reguaMetrica} ${o}` : ""}</span>
409
+ <span class="ui-footer-count" id="footer-count">${o}</span>
410
+ <span class="ui-footer-label" id="footer-label" role="img" title="${n.texto}" aria-label="${n.texto}">${n.icone}</span>
404
411
  </div>
405
412
 
406
- <!-- Ações de topo/gerais quando não há nada selecionado -->
413
+ <!-- Criação de camadas/grupos quando não há nada selecionado -->
407
414
  <div class="ui-footer-actions-gerais" style="display: ${t ? "none" : "flex"};">
408
415
  <button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
409
416
  ${b.moverPasta}
410
- <span>+ Grupo</span>
417
+ <span>Grupo</span>
411
418
  </button>
412
419
  <button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
413
420
  ${b.mais}
414
- <span>+ Camada</span>
421
+ <span>Camada</span>
415
422
  </button>
416
423
  </div>
417
424
 
418
425
  <!-- Ações em massa ativadas quando há seleção -->
419
426
  <div class="ui-footer-right ui-footer-bulk-actions" style="display: ${t ? "flex" : "none"};">
420
- <button class="ui-footer-btn ${t ? "" : "disabled"}" id="btn-footer-vis" title="Alternar visibilidade coletiva" aria-label="Alternar visibilidade coletiva" ${t ? "" : "disabled"}>
421
- ${b.olhoAberto}
422
- </button>
423
-
424
- <button class="ui-footer-btn ${t ? "" : "disabled"}" id="btn-footer-lock" title="Alternar bloqueio coletivo" aria-label="Alternar bloqueio coletivo" ${t ? "" : "disabled"}>
425
- ${b.cadeadoTrancado}
426
- </button>
427
-
428
- <div class="ui-footer-color-wrapper ${t ? "" : "disabled"}" title="Alterar cor dos selecionados">
429
- <span class="ui-footer-color-preview" id="preview-footer-color" style="background-color: ${n};"></span>
430
- <input type="color" id="input-footer-color" aria-label="Cor dos selecionados" value="${l}" class="ui-footer-color" ${t ? "" : "disabled"} />
431
- </div>
432
-
433
427
  <div class="ui-footer-move-wrapper ${t ? "" : "disabled"}" title="Mover selecionados para outra camada">
434
428
  <select id="select-footer-move" aria-label="Mover selecionados para outra camada" class="ui-footer-select" ${t ? "" : "disabled"}>
435
- <option value="" disabled selected>📂 Mover para...</option>
436
- ${u}
429
+ <option value="" disabled selected>Mover para...</option>
430
+ ${l}
437
431
  </select>
438
432
  </div>
439
433
 
440
434
  <button class="ui-footer-btn btn-danger-footer ${t ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${t ? "" : "disabled"}>
441
435
  ${b.lixeira}
442
436
  </button>
443
-
444
- ${t ? `<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${b.fechar}</button>` : ""}
445
437
  </div>
446
438
  </div>
447
439
  `;
@@ -450,8 +442,8 @@ const ue = 64;
450
442
  function Ee(e) {
451
443
  return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
452
444
  }
453
- function qe(e) {
454
- return !Array.isArray(e) || e.length === 0 ? [] : Ee(e[0]) ? [e.filter(Ee)] : e.flatMap(qe);
445
+ function Be(e) {
446
+ return !Array.isArray(e) || e.length === 0 ? [] : Ee(e[0]) ? [e.filter(Ee)] : e.flatMap(Be);
455
447
  }
456
448
  function ke(e) {
457
449
  if (e.length <= ue) return e;
@@ -460,75 +452,75 @@ function ke(e) {
460
452
  return a.push(e[e.length - 1]), a;
461
453
  }
462
454
  function pa(e, r, a) {
463
- const i = qe(r).filter((E) => E.length > 0);
455
+ const i = Be(r).filter((I) => I.length > 0);
464
456
  if (i.length === 0) return "";
465
457
  let t = 1 / 0, o = -1 / 0, n = 1 / 0, l = -1 / 0;
466
- for (const E of i)
467
- for (const [k, z] of E)
468
- z < t && (t = z), z > o && (o = z), -k < n && (n = -k), -k > l && (l = -k);
469
- const c = 16, s = 2, u = c - s * 2, f = o - t, p = l - n, m = Math.max(f, p), d = m > 0 ? u / m : 0, g = s + (u - f * d) / 2, v = s + (u - p * d) / 2, x = (E) => Math.round(E * 100) / 100, L = ([E, k]) => `${x(g + (k - t) * d)},${x(v + (-E - n) * d)}`, $ = e === "polygon" || e === "multipolygon", y = e === "linestring" || e === "multilinestring", h = (E) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${E}</svg>`;
470
- if ($) {
471
- const E = i.filter((k) => k.length >= 3).map((k) => `M${ke(k).map(L).join("L")}Z`).join("");
472
- return E ? h(
473
- `<path d="${E}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
458
+ for (const I of i)
459
+ for (const [L, P] of I)
460
+ P < t && (t = P), P > o && (o = P), -L < n && (n = -L), -L > l && (l = -L);
461
+ const c = 16, s = 2, d = c - s * 2, f = o - t, p = l - n, m = Math.max(f, p), u = m > 0 ? d / m : 0, g = s + (d - f * u) / 2, v = s + (d - p * u) / 2, h = (I) => Math.round(I * 100) / 100, k = ([I, L]) => `${h(g + (L - t) * u)},${h(v + (-I - n) * u)}`, C = e === "polygon" || e === "multipolygon", F = e === "linestring" || e === "multilinestring", x = (I) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${I}</svg>`;
462
+ if (C) {
463
+ const I = i.filter((L) => L.length >= 3).map((L) => `M${ke(L).map(k).join("L")}Z`).join("");
464
+ return I ? x(
465
+ `<path d="${I}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
474
466
  ) : "";
475
467
  }
476
- if (y) {
477
- const E = i.filter((k) => k.length >= 2).map((k) => `M${ke(k).map(L).join("L")}`).join("");
478
- return E ? h(
479
- `<path d="${E}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
468
+ if (F) {
469
+ const I = i.filter((L) => L.length >= 2).map((L) => `M${ke(L).map(k).join("L")}`).join("");
470
+ return I ? x(
471
+ `<path d="${I}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
480
472
  ) : "";
481
473
  }
482
474
  return "";
483
475
  }
484
476
  function fa(e, r, a) {
485
- const i = N(r, "#00E08A"), t = (e || "").toLowerCase(), o = a !== void 0 ? pa(t, a, i) : "";
477
+ const i = V(r, "#00E08A"), t = (e || "").toLowerCase(), o = a !== void 0 ? pa(t, a, i) : "";
486
478
  return o || (t === "polygon" || t === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${i}" fill-opacity="0.45" stroke="${i}" stroke-width="1.5"/></svg>` : t === "linestring" || t === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${i}" stroke-width="2"/></svg>` : t === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${i}" 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="${i}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
487
479
  }
488
- const De = 80;
480
+ const qe = 80;
489
481
  function ae(e, r) {
490
482
  const a = (r || "").trim().toLowerCase();
491
483
  return a ? e.filter(
492
484
  (i) => (i.name || "").toLowerCase().includes(a) || (i.category || "").toLowerCase().includes(a) || (i.type || "").toLowerCase().includes(a)
493
485
  ) : e;
494
486
  }
495
- function Pe(e, r, a) {
487
+ function De(e, r, a) {
496
488
  var p, m;
497
489
  const i = (a || "").trim().toLowerCase();
498
490
  if (!i) return null;
499
491
  const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
500
- for (const d of e)
501
- t.set(d.id, d), d.parentId && d.parentId !== d.id && (o.has(d.parentId) || o.set(d.parentId, []), o.get(d.parentId).push(d.id));
492
+ for (const u of e)
493
+ t.set(u.id, u), u.parentId && u.parentId !== u.id && (o.has(u.parentId) || o.set(u.parentId, []), o.get(u.parentId).push(u.id));
502
494
  const n = /* @__PURE__ */ new Map();
503
- for (const d of r) {
504
- const g = d.layerId || "";
505
- n.has(g) || n.set(g, []), n.get(g).push(d);
495
+ for (const u of r) {
496
+ const g = u.layerId || "";
497
+ n.has(g) || n.set(g, []), n.get(g).push(u);
506
498
  }
507
499
  const l = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set();
508
- for (const d of e)
509
- (typeof d.name == "string" ? d.name.toLowerCase() : "").includes(i) ? (l.add(d.id), c.add(d.id)) : ae(n.get(d.id) || [], i).length > 0 && c.add(d.id);
500
+ for (const u of e)
501
+ (typeof u.name == "string" ? u.name.toLowerCase() : "").includes(i) ? (l.add(u.id), c.add(u.id)) : ae(n.get(u.id) || [], i).length > 0 && c.add(u.id);
510
502
  const s = new Set(c);
511
- for (const d of c) {
512
- const g = /* @__PURE__ */ new Set([d]);
513
- let v = (p = t.get(d)) == null ? void 0 : p.parentId;
503
+ for (const u of c) {
504
+ const g = /* @__PURE__ */ new Set([u]);
505
+ let v = (p = t.get(u)) == null ? void 0 : p.parentId;
514
506
  for (; v && t.has(v) && !g.has(v); )
515
507
  g.add(v), s.add(v), v = (m = t.get(v)) == null ? void 0 : m.parentId;
516
508
  }
517
- const u = [...l];
518
- for (; u.length > 0; ) {
519
- const d = u.pop();
520
- for (const g of o.get(d) || [])
521
- s.has(g) || (s.add(g), u.push(g));
509
+ const d = [...l];
510
+ for (; d.length > 0; ) {
511
+ const u = d.pop();
512
+ for (const g of o.get(u) || [])
513
+ s.has(g) || (s.add(g), d.push(g));
522
514
  }
523
515
  const f = /* @__PURE__ */ new Map();
524
- for (const d of s) {
525
- const g = n.get(d) || [];
526
- f.set(d, l.has(d) ? g : ae(g, i));
516
+ for (const u of s) {
517
+ const g = n.get(u) || [];
518
+ f.set(u, l.has(u) ? g : ae(g, i));
527
519
  }
528
520
  return { camadasVisiveis: s, feicoesPorCamada: f };
529
521
  }
530
- function Te(e, r, a, i = "", t = De, o) {
531
- const n = Pe(e, r, i), l = [], c = /* @__PURE__ */ new Map();
522
+ function Pe(e, r, a, i = "", t = qe, o) {
523
+ const n = De(e, r, i), l = [], c = /* @__PURE__ */ new Map();
532
524
  for (let f = 0; f < r.length; f++) {
533
525
  const p = r[f];
534
526
  if (!p || !p.id) continue;
@@ -536,17 +528,17 @@ function Te(e, r, a, i = "", t = De, o) {
536
528
  c.has(m) || c.set(m, []), c.get(m).push(p);
537
529
  }
538
530
  const s = ve(e);
539
- function u(f) {
531
+ function d(f) {
540
532
  const p = f.camada;
541
533
  if (n && !n.camadasVisiveis.has(p.id) || !(n ? !0 : a.has(p.id))) return;
542
- for (const x of f.subcamadas)
543
- u(x);
544
- const d = n ? n.feicoesPorCamada.get(p.id) || [] : c.get(p.id) || [], g = (o == null ? void 0 : o.get(p.id)) ?? t, v = d.slice(0, g);
545
- for (let x = 0; x < v.length; x++)
546
- l.push(v[x].id);
534
+ for (const h of f.subcamadas)
535
+ d(h);
536
+ const u = n ? n.feicoesPorCamada.get(p.id) || [] : c.get(p.id) || [], g = (o == null ? void 0 : o.get(p.id)) ?? t, v = u.slice(0, g);
537
+ for (let h = 0; h < v.length; h++)
538
+ l.push(v[h].id);
547
539
  }
548
540
  for (const f of s)
549
- u(f);
541
+ d(f);
550
542
  return l;
551
543
  }
552
544
  function ma(e, r, a, i, t, o) {
@@ -554,9 +546,9 @@ function ma(e, r, a, i, t, o) {
554
546
  const n = new Set(r);
555
547
  let l = a;
556
548
  if (o && a && e.includes(a)) {
557
- const c = e.indexOf(a), s = e.indexOf(i), u = Math.min(c, s), f = Math.max(c, s);
549
+ const c = e.indexOf(a), s = e.indexOf(i), d = Math.min(c, s), f = Math.max(c, s);
558
550
  t || n.clear();
559
- for (let p = u; p <= f; p++)
551
+ for (let p = d; p <= f; p++)
560
552
  n.add(e[p]);
561
553
  } else t ? (n.has(i) ? n.delete(i) : n.add(i), l = i) : (n.clear(), n.add(i), l = i);
562
554
  return { selecionados: n, ultimoClicadoId: l };
@@ -612,8 +604,8 @@ function xa(e, r, a, i) {
612
604
  if (!o) return null;
613
605
  const [n] = e.splice(t, 1), l = n.layerId, c = o.layerId, s = l !== c;
614
606
  s && (n.layerId = c);
615
- const u = e.findIndex((f) => f.id === a);
616
- return u === -1 ? e.push(n) : e.splice(i ? u : u + 1, 0, n), { feicao: n, camadaOrigemId: l, camadaDestinoId: c, mudouDeCamada: s };
607
+ const d = e.findIndex((f) => f.id === a);
608
+ return d === -1 ? e.push(n) : e.splice(i ? d : d + 1, 0, n), { feicao: n, camadaOrigemId: l, camadaDestinoId: c, mudouDeCamada: s };
617
609
  }
618
610
  function ya(e) {
619
611
  const {
@@ -626,58 +618,52 @@ function ya(e) {
626
618
  editingLayerId: l,
627
619
  editingFeatureId: c,
628
620
  searchQuery: s,
629
- titulo: u = "CAMADAS",
621
+ titulo: d = "CAMADAS",
630
622
  mostrarBusca: f = !0,
631
623
  limitesPorCamada: p,
632
- limiteFeicoesPorCamada: m = De,
633
- mostrarBotaoColapsar: d = !1
634
- } = e, g = (s || "").trim().toLowerCase(), v = Pe(r, a, g), x = /* @__PURE__ */ new Map();
635
- for (let S = 0; S < a.length; S++) {
636
- const w = a[S];
624
+ limiteFeicoesPorCamada: m = qe,
625
+ mostrarBotaoColapsar: u = !1
626
+ } = e, g = (s || "").trim().toLowerCase(), v = De(r, a, g), h = /* @__PURE__ */ new Map();
627
+ for (let $ = 0; $ < a.length; $++) {
628
+ const w = a[$];
637
629
  if (!w || !w.id) continue;
638
- const M = w.layerId || "";
639
- x.has(M) || x.set(M, []), x.get(M).push(w);
630
+ const S = w.layerId || "";
631
+ h.has(S) || h.set(S, []), h.get(S).push(w);
640
632
  }
641
- const L = r.every((S) => S.visible !== !1), $ = r.length > 0 && r.every((S) => t.has(S.id)), y = f ? `
633
+ const k = r.every(($) => $.visible !== !1), C = r.length > 0 && r.every(($) => t.has($.id)), F = f ? `
642
634
  <div class="ui-tree-search-wrapper" part="busca">
643
635
  <span class="ui-tree-search-icon">${b.busca}</span>
644
- <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="${F(
636
+ <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(
645
637
  s
646
638
  )}" />
647
639
  ${s ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${b.fechar}</button>` : ""}
648
640
  </div>
649
- ` : "", h = `
641
+ ` : "", x = `
650
642
  <div class="ui-tree-toolbar" part="toolbar">
651
643
  <div class="ui-tree-title-group">
652
- <span class="ui-tree-section-title">${F(u || "CAMADAS")}</span>
644
+ <span class="ui-tree-section-title">${M(d || "CAMADAS")}</span>
653
645
  <span class="ui-tree-count-badge">${r.length}</span>
654
646
  </div>
655
647
  <div class="ui-tree-actions">
656
- <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"}">
657
- ${L ? b.olhoAberto : b.olhoFechado}
658
- </button>
659
- <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${$ ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${$ ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
660
- <span class="ui-chevron-icon ${$ ? "open" : ""}">${b.chevronDir}</span>
648
+ <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"}">
649
+ ${k ? b.olhoAberto : b.olhoFechado}
661
650
  </button>
662
- <button id="btn-add-group" class="ui-tree-btn-group" title="Criar grupo / pasta de camadas" aria-label="Criar grupo de camadas">
663
- ${b.moverPasta} Grupo
651
+ <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"}">
652
+ <span class="ui-chevron-icon ${C ? "open" : ""}">${b.chevronDir}</span>
664
653
  </button>
665
- <button id="btn-add-layer" class="ui-tree-btn-new" title="Adicionar nova camada vetorial">
666
- ${b.mais} Camada
667
- </button>
668
- ${d ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>` : ""}
654
+ ${u ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>` : ""}
669
655
  </div>
670
656
  </div>
671
- ${y}
672
- `, E = (S) => {
673
- const w = S.camada;
657
+ ${F}
658
+ `, I = ($) => {
659
+ const w = $.camada;
674
660
  if (v && !v.camadasVisiveis.has(w.id)) return "";
675
- const M = S.depth, D = S.subcamadas, H = v ? D.filter((I) => v.camadasVisiveis.has(I.camada.id)) : D, G = !!(w.isGroup || D.length > 0), C = F(w.id), _ = F(w.name || (G ? "Novo Grupo" : "Camada")), O = N(w.color, "#00E08A"), X = w.visible !== !1, V = w.locked === !0, Q = g ? !0 : t.has(w.id), ie = n === w.id, oe = i === w.id, B = v ? v.feicoesPorCamada.get(w.id) || [] : x.get(w.id) || [], ne = v ? B : re(r, a, w.id), he = ne.length > 0 && ne.every((I) => o.has(I.id)), He = !he && ne.some((I) => o.has(I.id)), W = (p == null ? void 0 : p.get(w.id)) ?? m, Ge = B.slice(0, W), Ve = B.length > W, Ue = B.length - W, Ye = Ge.map((I) => {
676
- const R = F(I.id), ye = F(I.name || "Feição"), we = N(I.color, O), J = I.visible !== !1, se = V, le = I.locked === !0 || se, Ae = se ? "Bloqueada pela camada" : le ? "Desbloquear Feição" : "Bloquear Feição", Z = o.has(I.id), Je = I.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
661
+ const S = $.depth, q = $.subcamadas, N = v ? q.filter((A) => v.camadasVisiveis.has(A.camada.id)) : q, H = !!(w.isGroup || q.length > 0), E = M(w.id), _ = M(w.name || (H ? "Novo Grupo" : "Camada")), O = V(w.color, "#00E08A"), X = w.visible !== !1, G = w.locked === !0, Q = g ? !0 : t.has(w.id), ie = n === w.id, oe = i === w.id, z = v ? v.feicoesPorCamada.get(w.id) || [] : h.get(w.id) || [], ne = v ? z : re(r, a, w.id), he = ne.length > 0 && ne.every((A) => o.has(A.id)), Ne = !he && ne.some((A) => o.has(A.id)), J = (p == null ? void 0 : p.get(w.id)) ?? m, He = z.slice(0, J), Ge = z.length > J, Ue = z.length - J, Ve = He.map((A) => {
662
+ const R = M(A.id), ye = M(A.name || "Feição"), we = V(A.color, O), W = A.visible !== !1, se = G, le = A.locked === !0 || se, Ae = se ? "Bloqueada pela camada" : le ? "Desbloquear Feição" : "Bloquear Feição", Z = o.has(A.id), Je = A.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
677
663
  return `
678
- <div class="ui-feat-row ${Z ? "selected-row" : ""} ${J ? "" : "hidden-row"}" data-feat-row="${R}" data-feat-select="${R}" data-feat-layer="${C}" role="treeitem" aria-selected="${Z}" tabindex="-1" draggable="true" part="${Z ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${M + 1};" title="Clique para selecionar | Arraste para reordenar">
679
- <div class="ui-col ui-col-eye" data-feat-eye="${R}" role="button" tabindex="0" aria-label="${J ? "Ocultar Feição" : "Exibir Feição"}" title="${J ? "Ocultar Feição" : "Exibir Feição"}">
680
- ${J ? b.olhoAberto : b.olhoFechado}
664
+ <div class="ui-feat-row ${Z ? "selected-row" : ""} ${W ? "" : "hidden-row"}" data-feat-row="${R}" data-feat-select="${R}" data-feat-layer="${E}" role="treeitem" aria-selected="${Z}" tabindex="-1" draggable="true" part="${Z ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${S + 1};" title="Clique para selecionar | Arraste para reordenar">
665
+ <div class="ui-col ui-col-eye" data-feat-eye="${R}" role="button" tabindex="0" aria-label="${W ? "Ocultar Feição" : "Exibir Feição"}" title="${W ? "Ocultar Feição" : "Exibir Feição"}">
666
+ ${W ? b.olhoAberto : b.olhoFechado}
681
667
  </div>
682
668
 
683
669
  <div class="ui-col ui-col-lock ${le ? "" : "ui-lock-open"}" data-feat-lock="${R}" ${se ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${Ae}" title="${Ae}">
@@ -687,11 +673,11 @@ function ya(e) {
687
673
  <div class="ui-col ui-col-colorbar" style="background: ${we};"></div>
688
674
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
689
675
  <div class="ui-col ui-col-thumb">
690
- <div class="ui-thumb-box">${fa(I.type || I.geometryType, we, I.coordinates)}</div>
676
+ <div class="ui-thumb-box">${fa(A.type || A.geometryType, we, A.coordinates)}</div>
691
677
  </div>
692
678
 
693
679
  <div class="ui-col ui-col-name" data-feat-name-trigger="${R}" title="Duplo clique para renomear">
694
- ${c === I.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${R}" value="${ye}" />` : `<span class="ui-name-text">${ye}</span>${Je}`}
680
+ ${c === A.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${R}" value="${ye}" />` : `<span class="ui-name-text">${ye}</span>${Je}`}
695
681
  </div>
696
682
 
697
683
  <div class="ui-col ui-col-actions">
@@ -703,20 +689,20 @@ function ya(e) {
703
689
  </div>
704
690
  </div>
705
691
  `;
706
- }).join(""), Ke = Ve ? `<div class="ui-truncate-notice" style="display: flex; align-items: center; justify-content: space-between; padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: var(--ui-cor-fundo-recuado, rgba(0,0,0,0.15));">
707
- <span>Exibindo ${W} de ${B.length} feições. Use a busca acima para filtrar.</span>
708
- <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${C}" style="background: transparent; border: 1px solid var(--ui-cor-borda, rgba(255,255,255,0.15)); color: var(--ui-cor-primaria, #00E08A); border-radius: 3px; font-size: 9.5px; font-style: normal; padding: 1px 6px; cursor: pointer; white-space: nowrap;">Mostrar mais (+${Math.min(80, Ue)})</button>
709
- </div>` : "", xe = w.opacity !== void 0 ? w.opacity : 1, _e = Math.round(xe * 100), Xe = r.filter((I) => I.id !== w.id && !te(r, I.id, w.id)).map(
710
- (I) => `<option value="${F(I.id)}" ${w.parentId === I.id ? "selected" : ""}>${I.isGroup ? "📁 " : ""}${F(I.name)}</option>`
711
- ).join(""), Qe = ie ? `
712
- <div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${O};">
692
+ }).join(""), Ye = Ge ? `<div class="ui-truncate-notice" style="display: flex; align-items: center; justify-content: space-between; padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: var(--ui-cor-fundo-recuado, rgba(0,0,0,0.15));">
693
+ <span>Exibindo ${J} de ${z.length} feições. Use a busca acima para filtrar.</span>
694
+ <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${E}" style="background: transparent; border: 1px solid var(--ui-cor-borda, rgba(255,255,255,0.15)); color: var(--ui-cor-primaria, #00E08A); border-radius: 3px; font-size: 9.5px; font-style: normal; padding: 1px 6px; cursor: pointer; white-space: nowrap;">Mostrar mais (+${Math.min(80, Ue)})</button>
695
+ </div>` : "", xe = w.opacity !== void 0 ? w.opacity : 1, Ke = Math.round(xe * 100), _e = r.filter((A) => A.id !== w.id && !te(r, A.id, w.id)).map(
696
+ (A) => `<option value="${M(A.id)}" ${w.parentId === A.id ? "selected" : ""}>${A.isGroup ? "📁 " : ""}${M(A.name)}</option>`
697
+ ).join(""), Xe = ie ? `
698
+ <div class="ui-layer-settings-drawer" id="settings-drawer-${E}" part="drawer" style="--drawer-cor-camada: ${O};">
713
699
  <div class="ui-drawer-header">
714
700
  <div class="ui-drawer-header-left">
715
701
  <span class="ui-drawer-icon">${b.engrenagem}</span>
716
702
  <span class="ui-drawer-title">Configurações da Camada</span>
717
703
  <span class="ui-drawer-layer-chip" title="${_}">${_}</span>
718
704
  </div>
719
- <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${C}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
705
+ <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${E}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
720
706
  ${b.fechar}
721
707
  </button>
722
708
  </div>
@@ -729,9 +715,9 @@ function ya(e) {
729
715
  </div>
730
716
  <div class="ui-drawer-color-group">
731
717
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
732
- <span class="ui-drawer-color-sample" id="sample-color-${C}" style="background-color: ${O};"></span>
733
- <span class="ui-drawer-color-hex" id="hex-color-${C}">${O.toUpperCase()}</span>
734
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Me(O, "#00e08a")}" class="ui-drawer-color-native" />
718
+ <span class="ui-drawer-color-sample" id="sample-color-${E}" style="background-color: ${O};"></span>
719
+ <span class="ui-drawer-color-hex" id="hex-color-${E}">${O.toUpperCase()}</span>
720
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${E}" value="${sa(O, "#00e08a")}" class="ui-drawer-color-native" />
735
721
  </label>
736
722
  </div>
737
723
  </div>
@@ -740,10 +726,10 @@ function ya(e) {
740
726
  <div class="ui-drawer-row">
741
727
  <div class="ui-drawer-row-label">
742
728
  <span>Opacidade</span>
743
- <span class="ui-drawer-badge" id="badge-op-${C}">${_e}%</span>
729
+ <span class="ui-drawer-badge" id="badge-op-${E}">${Ke}%</span>
744
730
  </div>
745
731
  <div class="ui-drawer-slider-container">
746
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(xe) || 0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
732
+ <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(xe) || 0}" data-layer-opacity-slider="${E}" class="ui-drawer-slider" />
747
733
  </div>
748
734
  </div>
749
735
 
@@ -753,9 +739,9 @@ function ya(e) {
753
739
  <span>Pertence ao Grupo</span>
754
740
  </div>
755
741
  <div class="ui-drawer-select-wrapper">
756
- <select class="ui-drawer-select" data-layer-parent-select="${C}" aria-label="Grupo pai da camada">
742
+ <select class="ui-drawer-select" data-layer-parent-select="${E}" aria-label="Grupo pai da camada">
757
743
  <option value="" ${w.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
758
- ${Xe}
744
+ ${_e}
759
745
  </select>
760
746
  </div>
761
747
  </div>
@@ -763,71 +749,71 @@ function ya(e) {
763
749
 
764
750
  <div class="ui-drawer-footer">
765
751
  <div class="ui-drawer-meta-info">
766
- <span>${D.length > 0 ? `${D.length} subcamadas · ` : ""}${B.length} ${B.length === 1 ? "feição" : "feições"}</span>
752
+ <span>${q.length > 0 ? `${q.length} subcamadas · ` : ""}${z.length} ${z.length === 1 ? "feição" : "feições"}</span>
767
753
  </div>
768
754
  <div class="ui-drawer-actions">
769
- <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${C}" title="Adicionar nova camada dentro desta">
755
+ <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${E}" title="Adicionar nova camada dentro desta">
770
756
  ${b.mais} Subcamada
771
757
  </button>
772
- <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${C}" title="Excluir esta camada e suas feições">
758
+ <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${E}" title="Excluir esta camada e suas feições">
773
759
  ${b.lixeira}
774
760
  <span class="ui-btn-label">Excluir</span>
775
761
  </button>
776
762
  </div>
777
763
  </div>
778
764
  </div>
779
- ` : "", We = H.map((I) => E(I)).join("");
765
+ ` : "", Qe = N.map((A) => I(A)).join("");
780
766
  return `
781
- <div class="ui-layer-group ${M > 0 ? "is-sublayer-group" : ""}" data-layer-id="${C}" data-layer-depth="${M}" role="treeitem" aria-expanded="${Q}" part="grupo" style="--layer-active-color: ${O};">
782
- <div class="ui-layer-row ${X ? "" : "hidden-layer"} ${oe ? "active-drawing-layer" : ""} ${M > 0 ? "is-sublayer" : ""} ${G ? "is-group-row" : ""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${oe ? "camada camada-ativa" : "camada"}" ${oe ? 'aria-current="true"' : ""} style="--layer-depth: ${M};">
767
+ <div class="ui-layer-group ${S > 0 ? "is-sublayer-group" : ""}" data-layer-id="${E}" data-layer-depth="${S}" role="treeitem" aria-expanded="${Q}" part="grupo" style="--layer-active-color: ${O};">
768
+ <div class="ui-layer-row ${X ? "" : "hidden-layer"} ${oe ? "active-drawing-layer" : ""} ${S > 0 ? "is-sublayer" : ""} ${H ? "is-group-row" : ""}" data-layer-row="${E}" data-layer-id="${E}" tabindex="-1" draggable="true" part="${oe ? "camada camada-ativa" : "camada"}" ${oe ? 'aria-current="true"' : ""} style="--layer-depth: ${S};">
783
769
  <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${b.dragHandle}</div>
784
770
 
785
- <div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${X ? "Ocultar Camada" : "Exibir Camada"}" title="${X ? "Ocultar Camada" : "Exibir Camada"}">
771
+ <div class="ui-col ui-col-eye" data-layer-eye="${E}" role="button" tabindex="0" aria-label="${X ? "Ocultar Camada" : "Exibir Camada"}" title="${X ? "Ocultar Camada" : "Exibir Camada"}">
786
772
  ${X ? b.olhoAberto : b.olhoFechado}
787
773
  </div>
788
774
 
789
- <div class="ui-col ui-col-lock ${V ? "" : "ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${V ? "Desbloquear Camada" : "Bloquear Camada"}" title="${V ? "Desbloquear Camada" : "Bloquear Camada"}">
790
- ${V ? b.cadeadoTrancado : b.cadeadoAberto}
775
+ <div class="ui-col ui-col-lock ${G ? "" : "ui-lock-open"}" data-layer-lock="${E}" role="button" tabindex="0" aria-label="${G ? "Desbloquear Camada" : "Bloquear Camada"}" title="${G ? "Desbloquear Camada" : "Bloquear Camada"}">
776
+ ${G ? b.cadeadoTrancado : b.cadeadoAberto}
791
777
  </div>
792
778
 
793
- <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" 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>
779
+ <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${E}" 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>
794
780
 
795
- <div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${Q ? "Recolher grupo" : "Expandir grupo"}">
781
+ <div class="ui-col ui-col-chevron" data-layer-expand="${E}" role="button" tabindex="0" aria-label="${Q ? "Recolher grupo" : "Expandir grupo"}">
796
782
  <span class="ui-chevron-icon ${Q ? "open" : ""}">${b.chevronDir}</span>
797
783
  </div>
798
784
 
799
- <div class="ui-col ui-col-name" data-layer-name-trigger="${C}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
800
- ${l === w.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${_}" />` : `${G ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${b.moverPasta}</span>` : ""}
785
+ <div class="ui-col ui-col-name" data-layer-name-trigger="${E}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
786
+ ${l === w.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${E}" value="${_}" />` : `${H ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${b.moverPasta}</span>` : ""}
801
787
  <span class="ui-name-text">${_}</span>
802
- ${B.length > 0 || !G ? `<span class="ui-count-chip" title="${B.length} ${B.length === 1 ? "feição" : "feições"}${D.length > 0 ? ` · ${D.length} subcamadas` : ""}">${B.length}</span>` : ""}`}
788
+ ${z.length > 0 || !H ? `<span class="ui-count-chip" title="${z.length} ${z.length === 1 ? "feição" : "feições"}${q.length > 0 ? ` · ${q.length} subcamadas` : ""}">${z.length}</span>` : ""}`}
803
789
  </div>
804
790
 
805
791
  <div class="ui-col ui-col-actions">
806
- <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
807
- <button class="ui-micro-btn ${ie ? "active" : ""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${ie}">${b.engrenagem}</button>
792
+ <button class="ui-micro-btn" data-layer-fit="${E}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
793
+ <button class="ui-micro-btn ${ie ? "active" : ""}" data-layer-settings="${E}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${ie}">${b.engrenagem}</button>
808
794
  </div>
809
795
 
810
- <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">
811
- <div class="ui-target-circle ${he ? "selected" : He ? "partial" : ""}"></div>
796
+ <div class="ui-col ui-col-target" data-layer-target="${E}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
797
+ <div class="ui-target-circle ${he ? "selected" : Ne ? "partial" : ""}"></div>
812
798
  </div>
813
799
  </div>
814
800
 
815
- ${Qe}
801
+ ${Xe}
816
802
 
817
- <div class="ui-children-container ${M > 0 ? "is-subchildren" : ""}" role="group" style="display: ${Q ? "block" : "none"};">
818
- ${We}
803
+ <div class="ui-children-container ${S > 0 ? "is-subchildren" : ""}" role="group" style="display: ${Q ? "block" : "none"};">
804
+ ${Qe}
805
+ ${Ve}
819
806
  ${Ye}
820
- ${Ke}
821
- ${H.length === 0 && B.length === 0 ? `<div class="ui-empty-row"><span>${G ? "Grupo vazio (adicione subcamadas ou feições)" : "Nenhum elemento neste grupo"}</span></div>` : ""}
807
+ ${N.length === 0 && z.length === 0 ? `<div class="ui-empty-row"><span>${H ? "Grupo vazio (adicione subcamadas ou feições)" : "Nenhum elemento neste grupo"}</span></div>` : ""}
822
808
  </div>
823
809
  </div>
824
810
  `;
825
- }, k = ve(r), z = v && v.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${F((s || "").trim())}”</div>` : k.map((S) => E(S)).join("");
811
+ }, L = ve(r), P = v && v.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${M((s || "").trim())}”</div>` : L.map(($) => I($)).join("");
826
812
  return `
827
- ${h}
813
+ ${x}
828
814
  <div class="ui-panel-box">
829
815
  <div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true" part="arvore">
830
- ${z}
816
+ ${P}
831
817
  </div>
832
818
  </div>
833
819
  `;
@@ -873,11 +859,11 @@ function Aa(e, r) {
873
859
  n.focus(), n.select();
874
860
  let l = !1;
875
861
  const c = (s) => {
876
- var u;
862
+ var d;
877
863
  if (!l) {
878
864
  if (l = !0, a.marcarEditando(null), s) {
879
865
  const f = a.aplicar(o, n.value.trim());
880
- f && (f.salvar && ((u = e.salvarLembrancaEstado) == null || u.call(e)), a.emitir(f.detalhe));
866
+ f && (f.salvar && ((d = e.salvarLembrancaEstado) == null || d.call(e)), a.emitir(f.detalhe));
881
867
  }
882
868
  e.solicitarRenderizacao();
883
869
  }
@@ -891,10 +877,10 @@ function Aa(e, r) {
891
877
  const Ea = ["dragging", "drop-above", "drop-below", "drop-into"];
892
878
  class ka {
893
879
  constructor(r, a) {
894
- A(this, "host");
895
- A(this, "shadow");
880
+ y(this, "host");
881
+ y(this, "shadow");
896
882
  /** Cancela um arraste por toque em andamento (remove os ouvintes de `window`). */
897
- A(this, "cancelarToque", null);
883
+ y(this, "cancelarToque", null);
898
884
  this.host = r, this.shadow = a;
899
885
  }
900
886
  bindAll() {
@@ -957,22 +943,22 @@ class ka {
957
943
  const c = t.classList.contains("drop-into") ? "dentro" : t.classList.contains("drop-above") ? "acima" : "abaixo";
958
944
  if (this.limparClassesDeArraste(), r === "layer") {
959
945
  if (!a || a === o || !this.host.camadas.some((f) => f.id === a) || !this.host.camadas.some((f) => f.id === o)) return;
960
- const u = va(this.host.camadas, a, o, c);
961
- (u == null ? void 0 : u.tipo) === "hierarquia" ? ((s = this.host.expandedLayers) == null || s.add(u.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
962
- camadaId: u.camada.id,
963
- novoParentId: u.novoParentId,
964
- parentAnteriorId: u.parentAnteriorId,
965
- camada: u.camada
966
- })) : u && u.parentAnteriorId !== u.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
967
- camadaId: u.camada.id,
968
- novoParentId: u.novoParentId,
969
- parentAnteriorId: u.parentAnteriorId,
970
- camada: u.camada
946
+ const d = va(this.host.camadas, a, o, c);
947
+ (d == null ? void 0 : d.tipo) === "hierarquia" ? ((s = this.host.expandedLayers) == null || s.add(d.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
948
+ camadaId: d.camada.id,
949
+ novoParentId: d.novoParentId,
950
+ parentAnteriorId: d.parentAnteriorId,
951
+ camada: d.camada
952
+ })) : d && d.parentAnteriorId !== d.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
953
+ camadaId: d.camada.id,
954
+ novoParentId: d.novoParentId,
955
+ parentAnteriorId: d.parentAnteriorId,
956
+ camada: d.camada
971
957
  }), this.aposReordenarCamadas();
972
958
  } else if (r === "feature") {
973
959
  if (!i) return;
974
- const u = ha(this.host.feicoes, this.host.camadas, i, o);
975
- u && (this.emitirFeicaoMovida(u), this.host.solicitarRenderizacao());
960
+ const d = ha(this.host.feicoes, this.host.camadas, i, o);
961
+ d && (this.emitirFeicaoMovida(d), this.host.solicitarRenderizacao());
976
962
  }
977
963
  }), t.addEventListener("dragend", () => {
978
964
  r = null, a = null, i = null, this.limparClassesDeArraste();
@@ -990,8 +976,8 @@ class ka {
990
976
  const c = l;
991
977
  if (r !== "feature" || i === o) return;
992
978
  c.preventDefault(), c.stopPropagation(), c.dataTransfer && (c.dataTransfer.dropEffect = "move");
993
- const s = t.getBoundingClientRect(), u = c.clientY - s.top < s.height / 2;
994
- t.classList.toggle("drop-above", u), t.classList.toggle("drop-below", !u);
979
+ const s = t.getBoundingClientRect(), d = c.clientY - s.top < s.height / 2;
980
+ t.classList.toggle("drop-above", d), t.classList.toggle("drop-below", !d);
995
981
  }), t.addEventListener("dragleave", (l) => {
996
982
  const c = l.relatedTarget;
997
983
  c && t.contains(c) || t.classList.remove("drop-above", "drop-below");
@@ -1001,8 +987,8 @@ class ka {
1001
987
  c.preventDefault(), c.stopPropagation();
1002
988
  const s = t.classList.contains("drop-above");
1003
989
  this.limparClassesDeArraste();
1004
- const u = xa(this.host.feicoes, i, o, s);
1005
- u && (u.mudouDeCamada && this.emitirFeicaoMovida(u), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
990
+ const d = xa(this.host.feicoes, i, o, s);
991
+ d && (d.mudouDeCamada && this.emitirFeicaoMovida(d), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
1006
992
  }), t.addEventListener("dragend", (l) => {
1007
993
  l.stopPropagation(), r = null, i = null, a = null, this.limparClassesDeArraste();
1008
994
  }));
@@ -1025,23 +1011,23 @@ class ka {
1025
1011
  let n = null, l = !1;
1026
1012
  const c = (p) => {
1027
1013
  p.preventDefault(), a.classList.add("dragging");
1028
- const m = this.shadow.elementFromPoint(p.clientX, p.clientY), d = m ? m.closest(".ui-layer-row") : null;
1029
- if (n && n !== d && n.classList.remove("drop-above", "drop-below"), d && d !== a) {
1030
- n = d;
1031
- const g = d.getBoundingClientRect();
1032
- l = p.clientY - g.top < g.height / 2, d.classList.toggle("drop-above", l), d.classList.toggle("drop-below", !l);
1014
+ const m = this.shadow.elementFromPoint(p.clientX, p.clientY), u = m ? m.closest(".ui-layer-row") : null;
1015
+ if (n && n !== u && n.classList.remove("drop-above", "drop-below"), u && u !== a) {
1016
+ n = u;
1017
+ const g = u.getBoundingClientRect();
1018
+ l = p.clientY - g.top < g.height / 2, u.classList.toggle("drop-above", l), u.classList.toggle("drop-below", !l);
1033
1019
  } else
1034
1020
  n = null;
1035
1021
  }, s = () => {
1036
- window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", u), window.removeEventListener("pointercancel", u), this.cancelarToque = null;
1037
- }, u = () => {
1022
+ window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", d), window.removeEventListener("pointercancel", d), this.cancelarToque = null;
1023
+ }, d = () => {
1038
1024
  s();
1039
1025
  const p = n == null ? void 0 : n.getAttribute("data-layer-id");
1040
1026
  this.limparClassesDeArraste(), p && ba(this.host.camadas, i, p, l) && this.aposReordenarCamadas();
1041
1027
  };
1042
1028
  this.cancelarToque = () => {
1043
1029
  s(), this.limparClassesDeArraste();
1044
- }, window.addEventListener("pointermove", c, { passive: !1 }), window.addEventListener("pointerup", u), window.addEventListener("pointercancel", u);
1030
+ }, window.addEventListener("pointermove", c, { passive: !1 }), window.addEventListener("pointerup", d), window.addEventListener("pointercancel", d);
1045
1031
  });
1046
1032
  });
1047
1033
  }
@@ -1080,7 +1066,7 @@ function $a(e) {
1080
1066
  } catch {
1081
1067
  }
1082
1068
  }
1083
- function Re(e) {
1069
+ function Te(e) {
1084
1070
  return {
1085
1071
  name: e.name,
1086
1072
  visible: e.visible !== !1,
@@ -1095,14 +1081,14 @@ function Sa(e, r, a, i) {
1095
1081
  if (!Array.isArray(e)) return;
1096
1082
  const t = (r == null ? void 0 : r.camadasOverrides) || {}, o = new Set((r == null ? void 0 : r.expandedLayerIds) || []), n = new Set((r == null ? void 0 : r.collapsedLayerIds) || []), l = o.size > 0 || n.size > 0;
1097
1083
  for (let p = 0; p < e.length; p++) {
1098
- const m = e[p], d = t[m.id];
1099
- if (i == null || i.set(m.id, Re(m)), d) {
1100
- const g = d.origem, v = (x) => {
1101
- var $;
1102
- const L = ($ = i == null ? void 0 : i.get(m.id)) == null ? void 0 : $[x];
1103
- return g !== void 0 && g[x] !== L;
1084
+ const m = e[p], u = t[m.id];
1085
+ if (i == null || i.set(m.id, Te(m)), u) {
1086
+ const g = u.origem, v = (h) => {
1087
+ var C;
1088
+ const k = (C = i == null ? void 0 : i.get(m.id)) == null ? void 0 : C[h];
1089
+ return g !== void 0 && g[h] !== k;
1104
1090
  };
1105
- typeof d.name == "string" && d.name.trim() && !v("name") && (m.name = d.name), typeof d.visible == "boolean" && !v("visible") && (m.visible = d.visible), typeof d.locked == "boolean" && !v("locked") && (m.locked = d.locked), typeof d.opacity == "number" && !v("opacity") && (m.opacity = d.opacity), typeof d.color == "string" && !v("color") && (m.color = d.color), d.parentId !== void 0 && !v("parentId") && (m.parentId = d.parentId);
1091
+ typeof u.name == "string" && u.name.trim() && !v("name") && (m.name = u.name), typeof u.visible == "boolean" && !v("visible") && (m.visible = u.visible), typeof u.locked == "boolean" && !v("locked") && (m.locked = u.locked), typeof u.opacity == "number" && !v("opacity") && (m.opacity = u.opacity), typeof u.color == "string" && !v("color") && (m.color = u.color), u.parentId !== void 0 && !v("parentId") && (m.parentId = u.parentId);
1106
1092
  }
1107
1093
  l ? o.has(m.id) ? a.add(m.id) : n.has(m.id) ? a.delete(m.id) : a.add(m.id) : a.add(m.id);
1108
1094
  }
@@ -1112,12 +1098,12 @@ function Sa(e, r, a, i) {
1112
1098
  }
1113
1099
  const c = new Set(e.map((p) => p.id)), s = r == null ? void 0 : r.ordemOrigemIds;
1114
1100
  if (!(Array.isArray(s) && (() => {
1115
- const p = new Set(s), m = (d) => d.filter((g) => c.has(g) && p.has(g)).join("|");
1116
- return m(s) !== m(e.map((d) => d.id));
1101
+ const p = new Set(s), m = (u) => u.filter((g) => c.has(g) && p.has(g)).join("|");
1102
+ return m(s) !== m(e.map((u) => u.id));
1117
1103
  })()) && Array.isArray(r == null ? void 0 : r.ordemCamadasIds) && r.ordemCamadasIds.length > 0) {
1118
1104
  const p = /* @__PURE__ */ new Map();
1119
- r.ordemCamadasIds.forEach((m, d) => p.set(m, d)), e.sort((m, d) => {
1120
- const g = p.has(m.id) ? p.get(m.id) : 9999, v = p.has(d.id) ? p.get(d.id) : 9999;
1105
+ r.ordemCamadasIds.forEach((m, u) => p.set(m, u)), e.sort((m, u) => {
1106
+ const g = p.has(m.id) ? p.get(m.id) : 9999, v = p.has(u.id) ? p.get(u.id) : 9999;
1121
1107
  return g - v;
1122
1108
  });
1123
1109
  }
@@ -1129,7 +1115,7 @@ function Ma(e) {
1129
1115
  ...(r == null ? void 0 : r.camadasOverrides) || {}
1130
1116
  };
1131
1117
  a.length > 0 && (t = [], o = [], n = a.map((s) => s.id), l = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((s) => {
1132
- var u, f;
1118
+ var d, f;
1133
1119
  i.has(s.id) ? t.push(s.id) : o.push(s.id), c[s.id] = {
1134
1120
  name: s.name,
1135
1121
  visible: s.visible !== !1,
@@ -1137,7 +1123,7 @@ function Ma(e) {
1137
1123
  opacity: typeof s.opacity == "number" ? s.opacity : 1,
1138
1124
  color: s.color || "#00E08A",
1139
1125
  parentId: s.parentId !== void 0 ? s.parentId : null,
1140
- origem: ((u = e.origensCamadas) == null ? void 0 : u.get(s.id)) ?? ((f = c[s.id]) == null ? void 0 : f.origem)
1126
+ origem: ((d = e.origensCamadas) == null ? void 0 : d.get(s.id)) ?? ((f = c[s.id]) == null ? void 0 : f.origem)
1141
1127
  };
1142
1128
  }));
1143
1129
  for (const s of e.camadasRemovidas ?? []) delete c[s];
@@ -1156,7 +1142,7 @@ function Ma(e) {
1156
1142
  ultimaAtualizacao: Date.now()
1157
1143
  };
1158
1144
  }
1159
- const Fa = ':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-linha-altura: 25px;--camada-thumb-tamanho: 20px;--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-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-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-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.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:6px 6px 4px;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;padding:1px 2px 3px;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:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;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);border-color:var(--ui-cor-primaria, #00E08A);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) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;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);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.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:3.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-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.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-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.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{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:32px;min-height:32px;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 8px;gap:6px;box-sizing:border-box;overflow:hidden;position:relative}.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{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);padding:1px 5px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 24%,transparent);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 7px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#fff3}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border-color:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 32%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 22%,transparent);border-color:var(--ui-cor-primaria, #00E08A);color:#fff}.ui-footer-right{display:flex;align-items:center;gap:3px;flex-shrink: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:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-btn.btn-clear-footer{color:var(--ui-cor-texto-secundario, #888899);margin-left:2px}.ui-footer-btn.btn-clear-footer:hover{color:#fff;background:#ffffff1f}.ui-footer-color-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;flex-shrink:0}.ui-footer-color-preview{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 0 4px #0006;pointer-events:none;transition:transform .15s ease,border-color .15s ease}.ui-footer-color-wrapper:hover .ui-footer-color-preview{transform:scale(1.15);border-color:#fff}.ui-footer-color{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0;border:none}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;max-width:95px;flex-shrink:0}.ui-footer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10px;height:22px;padding:0 4px;cursor:pointer;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){border-color:#ffffff40}.ui-footer-select:focus{outline:none;border-color:var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#ffffff40}.ui-drawer-btn-sublayer{background:#ffffff0f;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:#ffffff1f;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-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-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-superficie-elevada, #1c1c21) 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, #9ca3af)}.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, #27272a);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-superficie-hover, #3f3f46);border-color:var(--ui-cor-primaria, #00E08A)}.ui-truncate-more-btn:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}';
1145
+ const Fa = `: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-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-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-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-header{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);max-height:var(--camada-barra-altura);display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.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:3.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-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.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-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.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{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:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!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;background-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);background-image: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-repeat:no-repeat;background-position:right 6px center;background-size:10px;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-color:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-drawer-btn-sublayer{background:#ffffff0f;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:#ffffff1f;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-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-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-superficie-elevada, #1c1c21) 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, #9ca3af)}.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, #27272a);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-superficie-hover, #3f3f46);border-color:var(--ui-cor-primaria, #00E08A)}.ui-truncate-more-btn:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}`;
1160
1146
  function za(e, r) {
1161
1147
  r.querySelectorAll("[data-layer-row]").forEach((t) => {
1162
1148
  t.addEventListener("click", (o) => {
@@ -1176,10 +1162,10 @@ function za(e, r) {
1176
1162
  const l = t.closest(".ui-layer-group"), c = t.querySelector(".ui-chevron-icon"), s = e.expandedLayers.has(n);
1177
1163
  if (c && c.classList.toggle("open", s), l) {
1178
1164
  l.setAttribute("aria-expanded", String(s));
1179
- const u = l.querySelector(".ui-children-container");
1180
- u && (u.style.display = s ? "block" : "none");
1165
+ const d = l.querySelector(".ui-children-container");
1166
+ d && (d.style.display = s ? "block" : "none");
1181
1167
  }
1182
- P(t, s ? "Recolher grupo" : "Expandir grupo"), Ba(e, r), e.salvarLembrancaEstado();
1168
+ D(t, s ? "Recolher grupo" : "Expandir grupo"), Ba(e, r), e.salvarLembrancaEstado();
1183
1169
  });
1184
1170
  }), r.querySelectorAll("[data-layer-eye]").forEach((t) => {
1185
1171
  t.addEventListener("click", (o) => {
@@ -1188,7 +1174,7 @@ function za(e, r) {
1188
1174
  if (l) {
1189
1175
  l.visible = l.visible === !1;
1190
1176
  const c = l.visible !== !1;
1191
- t.innerHTML = c ? b.olhoAberto : b.olhoFechado, P(t, c ? "Ocultar Camada" : "Exibir Camada");
1177
+ t.innerHTML = c ? b.olhoAberto : b.olhoFechado, D(t, c ? "Ocultar Camada" : "Exibir Camada");
1192
1178
  const s = t.closest(".ui-layer-row");
1193
1179
  s && s.classList.toggle("hidden-layer", !c), qa(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1194
1180
  camadaId: l.id,
@@ -1200,7 +1186,7 @@ function za(e, r) {
1200
1186
  t.addEventListener("click", (o) => {
1201
1187
  o.stopPropagation();
1202
1188
  const n = t.getAttribute("data-layer-lock"), l = e.camadas.find((c) => c.id === n);
1203
- l && (l.locked = !l.locked, t.innerHTML = l.locked ? b.cadeadoTrancado : b.cadeadoAberto, t.classList.toggle("ui-lock-open", !l.locked), P(t, l.locked ? "Desbloquear Camada" : "Bloquear Camada"), Da(e, r, l.id, l.locked === !0), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1189
+ l && (l.locked = !l.locked, t.innerHTML = l.locked ? b.cadeadoTrancado : b.cadeadoAberto, t.classList.toggle("ui-lock-open", !l.locked), D(t, l.locked ? "Desbloquear Camada" : "Bloquear Camada"), Da(e, r, l.id, l.locked === !0), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1204
1190
  camadaId: l.id,
1205
1191
  bloqueado: l.locked
1206
1192
  }));
@@ -1224,21 +1210,21 @@ function za(e, r) {
1224
1210
  });
1225
1211
  const a = (t, o, n) => {
1226
1212
  var m;
1227
- const l = e.camadas.find((d) => d.id === t);
1213
+ const l = e.camadas.find((u) => u.id === t);
1228
1214
  if (!l) return;
1229
- const c = N(o, l.color || "#00E08A");
1215
+ const c = V(o, l.color || "#00E08A");
1230
1216
  l.color = c;
1231
1217
  const s = r.getElementById(`sample-color-${t}`);
1232
1218
  s && (s.style.backgroundColor = c);
1233
- const u = r.getElementById(`hex-color-${t}`);
1234
- u && (u.textContent = c.toUpperCase());
1219
+ const d = r.getElementById(`hex-color-${t}`);
1220
+ d && (d.textContent = c.toUpperCase());
1235
1221
  const f = r.getElementById(`settings-drawer-${t}`);
1236
1222
  f && f.style.setProperty("--drawer-cor-camada", c);
1237
1223
  const p = T(r, "data-layer-row", t);
1238
1224
  if (p) {
1239
1225
  (m = p.closest(".ui-layer-group")) == null || m.style.setProperty("--layer-active-color", c);
1240
- const d = p.querySelector(".ui-col-colorbar");
1241
- d && (d.style.backgroundColor = c);
1226
+ const u = p.querySelector(".ui-col-colorbar");
1227
+ u && (u.style.backgroundColor = c);
1242
1228
  }
1243
1229
  n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: l.id, cor: c });
1244
1230
  };
@@ -1246,19 +1232,19 @@ function za(e, r) {
1246
1232
  const o = t, n = (l) => (c) => {
1247
1233
  const s = o.getAttribute("data-layer-color-picker");
1248
1234
  if (!s) return;
1249
- const u = c.target.value;
1250
- a(s, u, l);
1235
+ const d = c.target.value;
1236
+ a(s, d, l);
1251
1237
  };
1252
1238
  o.addEventListener("input", n(!1)), o.addEventListener("change", n(!0));
1253
1239
  }), r.querySelectorAll("[data-layer-color]").forEach((t) => {
1254
1240
  const o = (n) => {
1255
1241
  n.stopPropagation();
1256
1242
  const l = t.getAttribute("data-layer-color"), c = e.camadas.find((s) => s.id === l);
1257
- !l || !c || ta({
1243
+ !l || !c || ra({
1258
1244
  ancora: t,
1259
1245
  titulo: `Cor · ${c.name || "Camada"}`,
1260
1246
  modo: "simples",
1261
- cor: N(c.color, "#00E08A"),
1247
+ cor: V(c.color, "#00E08A"),
1262
1248
  mostrarOpacidade: !1,
1263
1249
  aoAlterar: (s) => a(l, s.cor, !1),
1264
1250
  aoConfirmar: (s) => a(l, s.cor, !0),
@@ -1295,8 +1281,8 @@ function za(e, r) {
1295
1281
  if (t.classList.contains("confirming")) {
1296
1282
  o && clearTimeout(o), e.dispararEvento("ui-camada-excluida", { camadaId: l });
1297
1283
  const s = e.selectedFeatureIds.size;
1298
- e.camadas.forEach((u) => {
1299
- u.parentId === l && (u.parentId = null);
1284
+ e.camadas.forEach((d) => {
1285
+ d.parentId === l && (d.parentId = null);
1300
1286
  }), e.removerCamada(l), e.selectedFeatureIds.size !== s && e.notificarMudancaSelecao();
1301
1287
  } else {
1302
1288
  t.classList.add("confirming");
@@ -1308,17 +1294,17 @@ function za(e, r) {
1308
1294
  });
1309
1295
  }), r.querySelectorAll("[data-layer-parent-select]").forEach((t) => {
1310
1296
  t.addEventListener("change", (o) => {
1311
- const n = o.target, l = n.getAttribute("data-layer-parent-select"), c = n.value || null, s = e.camadas.find((u) => u.id === l);
1297
+ const n = o.target, l = n.getAttribute("data-layer-parent-select"), c = n.value || null, s = e.camadas.find((d) => d.id === l);
1312
1298
  if (s) {
1313
1299
  if (c && (c === s.id || te(e.camadas, c, s.id))) {
1314
1300
  n.value = s.parentId || "";
1315
1301
  return;
1316
1302
  }
1317
- const u = s.parentId ?? null;
1303
+ const d = s.parentId ?? null;
1318
1304
  s.parentId = c, c && e.expandedLayers.add(c), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-mover-hierarquia", {
1319
1305
  camadaId: s.id,
1320
1306
  novoParentId: c,
1321
- parentAnteriorId: u,
1307
+ parentAnteriorId: d,
1322
1308
  camada: s
1323
1309
  }), e.solicitarRenderizacao();
1324
1310
  }
@@ -1350,7 +1336,7 @@ function Ba(e, r) {
1350
1336
  const a = r.getElementById("btn-toggle-all-expand");
1351
1337
  if (!a) return;
1352
1338
  const i = e.camadas.length > 0 && e.camadas.every((o) => e.expandedLayers.has(o.id)), t = a.querySelector(".ui-chevron-icon");
1353
- t && t.classList.toggle("open", i), P(
1339
+ t && t.classList.toggle("open", i), D(
1354
1340
  a,
1355
1341
  i ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"
1356
1342
  );
@@ -1359,114 +1345,71 @@ function qa(e, r) {
1359
1345
  const a = r.getElementById("btn-toggle-all-vis");
1360
1346
  if (!a) return;
1361
1347
  const i = e.camadas.every((t) => t.visible !== !1);
1362
- a.innerHTML = i ? b.olhoAberto : b.olhoFechado, P(a, i ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1348
+ a.innerHTML = i ? b.olhoAberto : b.olhoFechado, D(a, i ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1363
1349
  }
1364
1350
  function Da(e, r, a, i) {
1365
1351
  e.feicoes.filter((t) => t.layerId === a).forEach((t) => {
1366
1352
  const o = T(r, "data-feat-lock", t.id);
1367
1353
  if (!o) return;
1368
1354
  const n = t.locked === !0 || i;
1369
- o.innerHTML = n ? b.cadeadoTrancado : b.cadeadoAberto, o.classList.toggle("ui-lock-open", !n), i ? o.setAttribute("data-locked-by-layer", "true") : o.removeAttribute("data-locked-by-layer"), P(
1355
+ o.innerHTML = n ? b.cadeadoTrancado : b.cadeadoAberto, o.classList.toggle("ui-lock-open", !n), i ? o.setAttribute("data-locked-by-layer", "true") : o.removeAttribute("data-locked-by-layer"), D(
1370
1356
  o,
1371
1357
  i ? "Bloqueada pela camada" : n ? "Desbloquear Feição" : "Bloquear Feição"
1372
1358
  );
1373
1359
  });
1374
1360
  }
1375
1361
  function Pa(e, r) {
1376
- const a = r.getElementById("btn-footer-vis");
1377
- a && a.addEventListener("click", () => {
1378
- const f = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id));
1379
- if (f.length === 0) return;
1380
- const m = !f.some((d) => d.visible !== !1);
1381
- f.forEach((d) => d.visible = m), e.dispararEvento("ui-acao-massa", {
1382
- acao: "visibilidade",
1383
- feicoesIds: f.map((d) => d.id),
1384
- feicoes: f,
1385
- valor: m
1386
- }), e.solicitarRenderizacao();
1387
- });
1388
- const i = r.getElementById("btn-footer-lock");
1389
- i && i.addEventListener("click", () => {
1390
- const f = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id));
1391
- if (f.length === 0) return;
1392
- const m = !f.some((d) => d.locked === !0);
1393
- f.forEach((d) => d.locked = m), e.dispararEvento("ui-acao-massa", {
1394
- acao: "bloqueio",
1395
- feicoesIds: f.map((d) => d.id),
1396
- feicoes: f,
1397
- valor: m
1398
- }), e.solicitarRenderizacao();
1399
- });
1400
- const t = r.getElementById("input-footer-color"), o = r.getElementById("preview-footer-color");
1401
- t && (t.addEventListener("input", (f) => {
1402
- const p = f.target.value;
1403
- o && (o.style.backgroundColor = p);
1404
- }), t.addEventListener("change", (f) => {
1405
- const p = f.target.value;
1406
- o && (o.style.backgroundColor = p);
1407
- const m = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id));
1408
- m.length !== 0 && (m.forEach((d) => {
1409
- d.color = p, d.style = { ...d.style || {}, fillColor: p, strokeColor: p };
1410
- }), e.dispararEvento("ui-acao-massa", {
1411
- acao: "cor",
1412
- feicoesIds: m.map((d) => d.id),
1413
- feicoes: m,
1414
- valor: p
1415
- }), e.solicitarRenderizacao());
1416
- }));
1417
- const n = r.getElementById("select-footer-move");
1418
- n && n.addEventListener("change", (f) => {
1419
- const p = f.target.value;
1420
- if (!p) return;
1421
- const m = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
1422
- if (m.length === 0) return;
1423
- const d = new Map(m.map((g) => [g.id, g.layerId]));
1424
- m.forEach((g) => g.layerId = p), m.forEach((g) => {
1425
- d.get(g.id) !== p && e.dispararEvento("ui-feicao-movida", {
1426
- feicaoId: g.id,
1427
- camadaOrigemId: d.get(g.id),
1428
- camadaDestinoId: p,
1429
- feicao: g
1362
+ const a = r.getElementById("select-footer-move");
1363
+ a && a.addEventListener("change", (n) => {
1364
+ const l = n.target.value;
1365
+ if (!l) return;
1366
+ const c = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id));
1367
+ if (c.length === 0) return;
1368
+ const s = new Map(c.map((d) => [d.id, d.layerId]));
1369
+ c.forEach((d) => d.layerId = l), c.forEach((d) => {
1370
+ s.get(d.id) !== l && e.dispararEvento("ui-feicao-movida", {
1371
+ feicaoId: d.id,
1372
+ camadaOrigemId: s.get(d.id),
1373
+ camadaDestinoId: l,
1374
+ feicao: d
1430
1375
  });
1431
1376
  }), e.dispararEvento("ui-acao-massa", {
1432
1377
  acao: "mover",
1433
- feicoesIds: m.map((g) => g.id),
1434
- feicoes: m,
1435
- valor: p
1378
+ feicoesIds: c.map((d) => d.id),
1379
+ feicoes: c,
1380
+ valor: l
1436
1381
  }), e.solicitarRenderizacao();
1437
1382
  });
1438
- const l = r.getElementById("btn-footer-new-layer");
1439
- l && l.addEventListener("click", () => {
1383
+ const i = r.getElementById("btn-footer-new-layer");
1384
+ i && i.addEventListener("click", () => {
1440
1385
  e.dispararEvento("ui-camada-adicionar", {});
1441
1386
  });
1442
- const c = r.getElementById("btn-footer-new-group");
1443
- c && c.addEventListener("click", () => {
1387
+ const t = r.getElementById("btn-footer-new-group");
1388
+ t && t.addEventListener("click", () => {
1444
1389
  e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
1445
1390
  });
1446
- const s = r.getElementById("btn-footer-del");
1447
- if (s) {
1448
- let f = null;
1449
- const p = "Excluir selecionados";
1450
- s.addEventListener("click", () => {
1451
- const m = Array.from(e.selectedFeatureIds);
1452
- if (m.length === 0) return;
1453
- if (!s.classList.contains("confirming")) {
1454
- s.classList.add("confirming"), P(s, `Clique novamente para excluir ${m.length} selecionado(s)`), f = setTimeout(() => {
1455
- s.classList.remove("confirming"), P(s, p);
1391
+ const o = r.getElementById("btn-footer-del");
1392
+ if (o) {
1393
+ let n = null;
1394
+ const l = "Excluir selecionados";
1395
+ o.addEventListener("click", () => {
1396
+ const c = Array.from(e.selectedFeatureIds);
1397
+ if (c.length === 0) return;
1398
+ if (!o.classList.contains("confirming")) {
1399
+ o.classList.add("confirming"), D(o, `Clique novamente para excluir ${c.length} selecionado(s)`), n = setTimeout(() => {
1400
+ o.classList.remove("confirming"), D(o, l);
1456
1401
  }, 3500);
1457
1402
  return;
1458
1403
  }
1459
- f && clearTimeout(f);
1460
- const d = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
1461
- e.feicoes = e.feicoes.filter((g) => !e.selectedFeatureIds.has(g.id)), e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.dispararEvento("ui-acao-massa", {
1404
+ n && clearTimeout(n);
1405
+ const s = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id));
1406
+ e.feicoes = e.feicoes.filter((d) => !e.selectedFeatureIds.has(d.id)), e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.dispararEvento("ui-acao-massa", {
1462
1407
  acao: "excluir",
1463
- feicoesIds: m,
1464
- feicoes: d
1408
+ feicoesIds: c,
1409
+ feicoes: s
1465
1410
  }), e.notificarMudancaSelecao(), e.solicitarRenderizacao();
1466
1411
  });
1467
1412
  }
1468
- const u = r.getElementById("btn-footer-clear");
1469
- u && u.addEventListener("click", () => e.limparSelecao(!0));
1470
1413
  }
1471
1414
  const Ta = [
1472
1415
  { tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
@@ -1514,9 +1457,9 @@ function Ie(e, r, a = !1) {
1514
1457
  })
1515
1458
  );
1516
1459
  }
1517
- let q = null;
1460
+ let B = null;
1518
1461
  function ja(e) {
1519
- (q == null ? void 0 : q.host) === e && q.cancelar();
1462
+ (B == null ? void 0 : B.host) === e && B.cancelar();
1520
1463
  }
1521
1464
  function Na(e, r) {
1522
1465
  Object.keys(me).forEach((a) => {
@@ -1527,65 +1470,57 @@ function Na(e, r) {
1527
1470
  }
1528
1471
  function Ha(e, r, a, i, t) {
1529
1472
  if (t.pointerType === "mouse" && t.button !== 0 || e.editingLayerId || e.editingFeatureId || pe(e, i) === null) return;
1530
- q == null || q.cancelar();
1473
+ B == null || B.cancelar();
1531
1474
  const o = me[a], n = t.ctrlKey || t.metaKey, l = t.shiftKey;
1532
- let c = !1, s = !1, u = t.clientY;
1533
- const f = /* @__PURE__ */ new Set([i]), p = (h) => {
1534
- h.preventDefault(), h.stopImmediatePropagation();
1535
- }, m = (h) => {
1536
- h.stopPropagation(), h.preventDefault();
1537
- }, d = (h) => h.preventDefault(), g = (h) => {
1538
- f.has(h) || (f.add(h), pe(e, h) !== s && Ie(h, a === "selecao"));
1475
+ let c = !1, s = !1, d = t.clientY;
1476
+ const f = /* @__PURE__ */ new Set([i]), p = (x) => {
1477
+ x.preventDefault(), x.stopImmediatePropagation();
1478
+ }, m = (x) => {
1479
+ x.stopPropagation(), x.preventDefault();
1480
+ }, u = (x) => x.preventDefault(), g = (x) => {
1481
+ f.has(x) || (f.add(x), pe(e, x) !== s && Ie(x, a === "selecao"));
1539
1482
  }, v = () => {
1540
- c = !0, Ie(i, n, l), s = pe(e, i) === !0, r.addEventListener("selectstart", d), document.body.style.userSelect = "none";
1541
- }, x = (h) => {
1542
- var S, w;
1483
+ c = !0, Ie(i, n, l), s = pe(e, i) === !0, r.addEventListener("selectstart", u), document.body.style.userSelect = "none";
1484
+ }, h = (x) => {
1485
+ var $, w;
1543
1486
  if (!c) {
1544
- if (Math.hypot(h.clientX - t.clientX, h.clientY - t.clientY) < Ra) return;
1545
- const M = (S = r.elementFromPoint(h.clientX, h.clientY)) == null ? void 0 : S.closest(o);
1546
- if (!M || M === i) return;
1487
+ if (Math.hypot(x.clientX - t.clientX, x.clientY - t.clientY) < Ra) return;
1488
+ const S = ($ = r.elementFromPoint(x.clientX, x.clientY)) == null ? void 0 : $.closest(o);
1489
+ if (!S || S === i) return;
1547
1490
  v();
1548
1491
  }
1549
- h.preventDefault();
1550
- const E = Math.min(u, h.clientY), k = Math.max(u, h.clientY);
1551
- r.querySelectorAll(o).forEach((M) => {
1552
- const D = M.getBoundingClientRect();
1553
- if (D.height === 0) return;
1554
- const H = D.top + D.height / 2;
1555
- H >= E && H <= k && g(M);
1492
+ x.preventDefault();
1493
+ const I = Math.min(d, x.clientY), L = Math.max(d, x.clientY);
1494
+ r.querySelectorAll(o).forEach((S) => {
1495
+ const q = S.getBoundingClientRect();
1496
+ if (q.height === 0) return;
1497
+ const N = q.top + q.height / 2;
1498
+ N >= I && N <= L && g(S);
1556
1499
  });
1557
- const z = (w = r.elementFromPoint(h.clientX, h.clientY)) == null ? void 0 : w.closest(o);
1558
- z && g(z), u = h.clientY;
1559
- }, L = (h = !1) => {
1560
- (q == null ? void 0 : q.cancelar) === y && (q = null), window.removeEventListener("pointermove", x), window.removeEventListener("pointerup", $), window.removeEventListener("pointercancel", $), window.removeEventListener("dragstart", p, !0), r.removeEventListener("selectstart", d), c && (document.body.style.userSelect = "", h || (window.addEventListener("click", m, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", m, !0), 0)));
1561
- }, $ = () => L(), y = () => L(!0);
1562
- q = { host: e, cancelar: y }, window.addEventListener("dragstart", p, !0), window.addEventListener("pointermove", x, { passive: !1 }), window.addEventListener("pointerup", $), window.addEventListener("pointercancel", $);
1500
+ const P = (w = r.elementFromPoint(x.clientX, x.clientY)) == null ? void 0 : w.closest(o);
1501
+ P && g(P), d = x.clientY;
1502
+ }, k = (x = !1) => {
1503
+ (B == null ? void 0 : B.cancelar) === F && (B = null), window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", C), window.removeEventListener("pointercancel", C), window.removeEventListener("dragstart", p, !0), r.removeEventListener("selectstart", u), c && (document.body.style.userSelect = "", x || (window.addEventListener("click", m, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", m, !0), 0)));
1504
+ }, C = () => k(), F = () => k(!0);
1505
+ B = { host: e, cancelar: F }, window.addEventListener("dragstart", p, !0), window.addEventListener("pointermove", h, { passive: !1 }), window.addEventListener("pointerup", C), window.addEventListener("pointercancel", C);
1563
1506
  }
1564
1507
  function Ga(e, r) {
1565
1508
  const a = r.getElementById("btn-toggle-all-vis");
1566
1509
  a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
1567
1510
  const i = r.getElementById("btn-toggle-all-expand");
1568
- i && i.addEventListener("click", (l) => {
1569
- l.stopPropagation(), e.camadas.length > 0 && e.camadas.every((s) => e.expandedLayers.has(s.id)) ? e.colapsarTodas() : e.expandirTodas();
1570
- });
1571
- const t = r.getElementById("btn-add-layer");
1572
- t && t.addEventListener("click", () => {
1573
- e.dispararEvento("ui-camada-adicionar", {});
1511
+ i && i.addEventListener("click", (o) => {
1512
+ o.stopPropagation(), e.camadas.length > 0 && e.camadas.every((l) => e.expandedLayers.has(l.id)) ? e.colapsarTodas() : e.expandirTodas();
1574
1513
  });
1575
- const o = r.getElementById("btn-add-group");
1576
- o && o.addEventListener("click", () => {
1577
- e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
1578
- });
1579
- const n = r.getElementById("btn-colapsar");
1580
- n && n.addEventListener("click", () => e.colapsar(!0)), Va(e, r);
1514
+ const t = r.getElementById("btn-colapsar");
1515
+ t && t.addEventListener("click", () => e.colapsar(!0)), Ua(e, r);
1581
1516
  }
1582
- function Va(e, r) {
1517
+ function Ua(e, r) {
1583
1518
  const a = r.getElementById("input-layer-search"), i = r.getElementById("btn-clear-layer-search"), t = () => {
1584
1519
  var o;
1585
1520
  e.searchQuery = "", e.solicitarRenderizacao(), (o = r.getElementById("input-layer-search")) == null || o.focus();
1586
1521
  };
1587
1522
  if (a) {
1588
- const o = Fe(() => e.solicitarRenderizacao(), 75);
1523
+ const o = Se(() => e.solicitarRenderizacao(), 75);
1589
1524
  a.addEventListener("input", (n) => {
1590
1525
  e.searchQuery = n.target.value, o();
1591
1526
  }), a.addEventListener("keydown", (n) => {
@@ -1594,7 +1529,7 @@ function Va(e, r) {
1594
1529
  }
1595
1530
  i && i.addEventListener("click", t);
1596
1531
  }
1597
- function Ua(e, r) {
1532
+ function Va(e, r) {
1598
1533
  r.querySelectorAll("[data-feat-select]").forEach((a) => {
1599
1534
  a.addEventListener("click", (i) => {
1600
1535
  if (e.editingFeatureId) return;
@@ -1619,7 +1554,7 @@ function Ua(e, r) {
1619
1554
  if (o) {
1620
1555
  o.visible = o.visible === !1;
1621
1556
  const n = o.visible !== !1;
1622
- a.innerHTML = n ? b.olhoAberto : b.olhoFechado, P(a, n ? "Ocultar Feição" : "Exibir Feição");
1557
+ a.innerHTML = n ? b.olhoAberto : b.olhoFechado, D(a, n ? "Ocultar Feição" : "Exibir Feição");
1623
1558
  const l = a.closest(".ui-feat-row");
1624
1559
  l && l.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
1625
1560
  feicaoId: o.id,
@@ -1631,7 +1566,7 @@ function Ua(e, r) {
1631
1566
  a.addEventListener("click", (i) => {
1632
1567
  if (i.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
1633
1568
  const t = a.getAttribute("data-feat-lock"), o = e.feicoes.find((n) => n.id === t);
1634
- o && (o.locked = !o.locked, a.innerHTML = o.locked ? b.cadeadoTrancado : b.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), P(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1569
+ o && (o.locked = !o.locked, a.innerHTML = o.locked ? b.cadeadoTrancado : b.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), D(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1635
1570
  feicaoId: o.id,
1636
1571
  bloqueado: o.locked
1637
1572
  }));
@@ -1665,7 +1600,7 @@ function Ya(e, r) {
1665
1600
  });
1666
1601
  }
1667
1602
  function Ka(e, r) {
1668
- Ga(e, r), za(e, r), Ua(e, r), Ya(e, r), Pa(e, r), Na(e, r);
1603
+ Ga(e, r), za(e, r), Va(e, r), Ya(e, r), Pa(e, r), Na(e, r);
1669
1604
  }
1670
1605
  function _a(e, r, a, i) {
1671
1606
  var g, v;
@@ -1683,28 +1618,28 @@ function _a(e, r, a, i) {
1683
1618
  mostrarBusca: e.mostrarBusca,
1684
1619
  limitesPorCamada: e.expandedFeatureLimits,
1685
1620
  mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false"
1686
- }), o = e.mostrarMapasBase ? la(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? ua(e.camadas, e.feicoes, e.selectedFeatureIds) : "", l = r.getElementById("ui-layer-tree-mount"), c = a.scrollTop, s = l ? l.scrollTop : 0, u = r.activeElement, f = u && a.contains(u) ? u.id : "", p = u && !f && a.contains(u) ? Array.from(u.attributes).find((x) => x.name.startsWith("data-") && x.value !== "") : void 0, m = u && "selectionStart" in u ? u.selectionStart : null;
1621
+ }), o = e.mostrarMapasBase ? la(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? ua(e.camadas, e.feicoes, e.selectedFeatureIds) : "", l = r.getElementById("ui-layer-tree-mount"), c = a.scrollTop, s = l ? l.scrollTop : 0, d = r.activeElement, f = d && a.contains(d) ? d.id : "", p = d && !f && a.contains(d) ? Array.from(d.attributes).find((h) => h.name.startsWith("data-") && h.value !== "") : void 0, m = d && "selectionStart" in d ? d.selectionStart : null;
1687
1622
  a.innerHTML = `
1688
1623
  ${t}
1689
1624
  ${n}
1690
1625
  ${o}
1691
1626
  `, a.scrollTop = c;
1692
- const d = r.getElementById("ui-layer-tree-mount");
1693
- if (d && (d.scrollTop = s), f) {
1694
- const x = r.getElementById(f);
1695
- if (x && (x.focus({ preventScroll: !0 }), m !== null && typeof x.setSelectionRange == "function"))
1627
+ const u = r.getElementById("ui-layer-tree-mount");
1628
+ if (u && (u.scrollTop = s), f) {
1629
+ const h = r.getElementById(f);
1630
+ if (h && (h.focus({ preventScroll: !0 }), m !== null && typeof h.setSelectionRange == "function"))
1696
1631
  try {
1697
- x.setSelectionRange(m, m);
1632
+ h.setSelectionRange(m, m);
1698
1633
  } catch {
1699
1634
  }
1700
1635
  }
1701
1636
  !f && p && ((g = T(a, p.name, p.value)) == null || g.focus({ preventScroll: !0 })), (v = r.querySelector("[data-layer-row], [data-feat-row]")) == null || v.setAttribute("tabindex", "0"), Ka(e, r), i.bindAll();
1702
1637
  }
1703
1638
  const Xa = '[role="button"][tabindex]', Y = "[data-layer-row], [data-feat-row]", Qa = ["color", "range", "checkbox", "radio", "button"];
1704
- function Oe(e) {
1705
- return !e || !(e instanceof Element) || e instanceof HTMLInputElement && Qa.includes(e.type) ? !1 : ia({ composedPath: () => [e] });
1639
+ function Re(e) {
1640
+ return !e || !(e instanceof Element) || e instanceof HTMLInputElement && Qa.includes(e.type) ? !1 : ta({ composedPath: () => [e] });
1706
1641
  }
1707
- function Wa(e) {
1642
+ function Ja(e) {
1708
1643
  return Array.from(e.querySelectorAll(Y)).filter((r) => {
1709
1644
  const a = r.closest(".ui-children-container");
1710
1645
  return !(a && a.style.display === "none") && !r.classList.contains("ui-search-hidden");
@@ -1713,7 +1648,7 @@ function Wa(e) {
1713
1648
  function ee(e, r) {
1714
1649
  r && (e.querySelectorAll(Y).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
1715
1650
  }
1716
- function Ja(e, r) {
1651
+ function Wa(e, r) {
1717
1652
  e.dispatchEvent(
1718
1653
  new MouseEvent("click", {
1719
1654
  bubbles: !0,
@@ -1724,7 +1659,7 @@ function Ja(e, r) {
1724
1659
  }
1725
1660
  function Za(e, r, a) {
1726
1661
  var t;
1727
- if (Oe(a.composedPath()[0])) return;
1662
+ if (Re(a.composedPath()[0])) return;
1728
1663
  const i = r.querySelector(".confirming");
1729
1664
  if (i) {
1730
1665
  a.preventDefault(), i.classList.remove("confirming");
@@ -1741,22 +1676,22 @@ function Za(e, r, a) {
1741
1676
  function er(e, r, a, i) {
1742
1677
  var l;
1743
1678
  const t = i.composedPath()[0];
1744
- if (!(t instanceof HTMLElement) || Oe(t)) return;
1679
+ if (!(t instanceof HTMLElement) || Re(t)) return;
1745
1680
  if ((i.key === "Enter" || i.key === " ") && t.matches(Xa)) {
1746
1681
  i.preventDefault(), t.click();
1747
1682
  return;
1748
1683
  }
1749
1684
  if (!t.matches(Y)) return;
1750
- const o = Wa(r), n = o.indexOf(t);
1685
+ const o = Ja(r), n = o.indexOf(t);
1751
1686
  if (i.key === "F2") {
1752
1687
  i.preventDefault();
1753
- const c = t.getAttribute("data-layer-row"), s = t.getAttribute("data-feat-row"), u = c ? T(t, "data-layer-name-trigger", c) : s ? T(t, "data-feat-name-trigger", s) : null;
1754
- u && u.dispatchEvent(new MouseEvent("dblclick", { bubbles: !0 }));
1688
+ const c = t.getAttribute("data-layer-row"), s = t.getAttribute("data-feat-row"), d = c ? T(t, "data-layer-name-trigger", c) : s ? T(t, "data-feat-name-trigger", s) : null;
1689
+ d && d.dispatchEvent(new MouseEvent("dblclick", { bubbles: !0 }));
1755
1690
  return;
1756
1691
  }
1757
1692
  if ((i.ctrlKey || i.metaKey) && (i.key === "a" || i.key === "A")) {
1758
1693
  i.preventDefault();
1759
- const c = Te(
1694
+ const c = Pe(
1760
1695
  e.camadas,
1761
1696
  e.feicoes,
1762
1697
  e.expandedLayers,
@@ -1791,13 +1726,13 @@ function er(e, r, a, i) {
1791
1726
  case "ArrowLeft": {
1792
1727
  const c = t.getAttribute("data-layer-row");
1793
1728
  if (!c) return;
1794
- const s = t.closest(".ui-layer-group"), u = (s == null ? void 0 : s.getAttribute("aria-expanded")) === "true";
1795
- i.key === "ArrowRight" !== u && (i.preventDefault(), (l = T(a, "data-layer-expand", c)) == null || l.click());
1729
+ const s = t.closest(".ui-layer-group"), d = (s == null ? void 0 : s.getAttribute("aria-expanded")) === "true";
1730
+ i.key === "ArrowRight" !== d && (i.preventDefault(), (l = T(a, "data-layer-expand", c)) == null || l.click());
1796
1731
  break;
1797
1732
  }
1798
1733
  case "Enter":
1799
1734
  case " ":
1800
- i.preventDefault(), Ja(t, i);
1735
+ i.preventDefault(), Wa(t, i);
1801
1736
  break;
1802
1737
  }
1803
1738
  }
@@ -1816,49 +1751,39 @@ function rr(e, r) {
1816
1751
  });
1817
1752
  }
1818
1753
  function tr(e, r) {
1819
- var L, $;
1820
- r.querySelectorAll(".ui-feat-row").forEach((y) => {
1821
- const h = y.getAttribute("data-feat-row"), E = h ? e.selectedFeatureIds.has(h) : !1;
1822
- y.classList.toggle("selected-row", E), Le(y, "feicao-selecionada", E), y.setAttribute("aria-selected", String(E));
1823
- const k = y.querySelector(".ui-target-circle");
1824
- k && k.classList.toggle("selected", E);
1825
- }), r.querySelectorAll(".ui-layer-group").forEach((y) => {
1826
- const h = y.getAttribute("data-layer-id"), E = re(e.camadas, e.feicoes, h ?? ""), k = y.querySelector(".ui-layer-row .ui-target-circle");
1827
- if (k && E.length > 0) {
1828
- const z = E.every((w) => e.selectedFeatureIds.has(w.id)), S = !z && E.some((w) => e.selectedFeatureIds.has(w.id));
1829
- k.classList.toggle("selected", z), k.classList.toggle("partial", S);
1830
- } else k && k.classList.remove("selected", "partial");
1754
+ r.querySelectorAll(".ui-feat-row").forEach((f) => {
1755
+ const p = f.getAttribute("data-feat-row"), m = p ? e.selectedFeatureIds.has(p) : !1;
1756
+ f.classList.toggle("selected-row", m), Le(f, "feicao-selecionada", m), f.setAttribute("aria-selected", String(m));
1757
+ const u = f.querySelector(".ui-target-circle");
1758
+ u && u.classList.toggle("selected", m);
1759
+ }), r.querySelectorAll(".ui-layer-group").forEach((f) => {
1760
+ const p = f.getAttribute("data-layer-id"), m = re(e.camadas, e.feicoes, p ?? ""), u = f.querySelector(".ui-layer-row .ui-target-circle");
1761
+ if (u && m.length > 0) {
1762
+ const g = m.every((h) => e.selectedFeatureIds.has(h.id)), v = !g && m.some((h) => e.selectedFeatureIds.has(h.id));
1763
+ u.classList.toggle("selected", g), u.classList.toggle("partial", v);
1764
+ } else u && u.classList.remove("selected", "partial");
1831
1765
  });
1832
- const a = e.feicoes.filter((y) => e.selectedFeatureIds.has(y.id)), i = a.length > 0, t = r.getElementById("footer-count"), o = r.getElementById("footer-label");
1833
- t && (t.textContent = String(i ? a.length : e.camadas.length)), o && (o.textContent = i ? a.length > 1 ? "selecionados" : "selecionado" : e.camadas.length > 1 ? "camadas" : "camada");
1834
- const n = r.querySelector(".ui-footer-metric"), l = Se(a);
1835
- n && (l ? (n.innerHTML = `${b.reguaMetrica} ${l}`, n.style.display = "inline-flex") : n.style.display = "none");
1836
- const c = r.querySelector(".ui-tree-footer");
1837
- c && (c.classList.toggle("tem-selecao", i), c.classList.toggle("sem-selecao", !i));
1838
- const s = r.querySelector(".ui-footer-actions-gerais");
1839
- s && (s.style.display = i ? "none" : "flex");
1840
- const u = r.querySelector(".ui-footer-bulk-actions");
1841
- u && (u.style.display = i ? "flex" : "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((y) => {
1842
- const h = r.getElementById(y);
1843
- h && (h.disabled = !i, h.classList.toggle("disabled", !i));
1766
+ const a = e.feicoes.filter((f) => e.selectedFeatureIds.has(f.id)), i = a.length > 0, t = r.getElementById("footer-count"), o = r.getElementById("footer-label");
1767
+ if (t && (t.textContent = String(i ? a.length : e.camadas.length)), o) {
1768
+ const f = ze(e.camadas.length, a.length);
1769
+ o.innerHTML = f.icone, o.title = f.texto, o.setAttribute("aria-label", f.texto);
1770
+ }
1771
+ const n = r.querySelector(".ui-tree-footer");
1772
+ n && (n.classList.toggle("tem-selecao", i), n.classList.toggle("sem-selecao", !i));
1773
+ const l = r.querySelector(".ui-footer-actions-gerais");
1774
+ l && (l.style.display = i ? "none" : "flex");
1775
+ const c = r.querySelector(".ui-footer-bulk-actions");
1776
+ c && (c.style.display = i ? "flex" : "none"), ["btn-footer-del"].forEach((f) => {
1777
+ const p = r.getElementById(f);
1778
+ p && (p.disabled = !i, p.classList.toggle("disabled", !i));
1844
1779
  });
1845
- const f = r.querySelector(".ui-footer-move-wrapper");
1846
- f && f.classList.toggle("disabled", !i);
1847
- const p = r.getElementById("select-footer-move");
1848
- p && (p.disabled = !i);
1849
- const m = r.querySelector(".ui-footer-color-wrapper");
1850
- m && m.classList.toggle("disabled", !i);
1851
- const d = r.getElementById("input-footer-color"), g = r.getElementById("preview-footer-color");
1852
- if (d && (d.disabled = !i, i)) {
1853
- const y = a[0], h = ((L = y == null ? void 0 : y.properties) == null ? void 0 : L.color) || (($ = y == null ? void 0 : y.properties) == null ? void 0 : $.cor) || "#3b82f6";
1854
- d.value = h.startsWith("#") && h.length === 7 ? h : "#3b82f6", g && (g.style.backgroundColor = d.value);
1855
- }
1856
- let v = r.getElementById("btn-footer-clear");
1857
- const x = r.querySelector(".ui-footer-right");
1858
- i && !v && x ? (v = document.createElement("button"), v.id = "btn-footer-clear", v.className = "ui-footer-btn btn-clear-footer", v.title = "Limpar seleção", v.innerHTML = b.fechar, v.addEventListener("click", () => e.limparSelecao(!0)), x.appendChild(v)) : !i && v && v.remove();
1780
+ const s = r.querySelector(".ui-footer-move-wrapper");
1781
+ s && s.classList.toggle("disabled", !i);
1782
+ const d = r.getElementById("select-footer-move");
1783
+ d && (d.disabled = !i);
1859
1784
  }
1860
1785
  function ir(e, r, a, i, t) {
1861
- const o = Te(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !i && !o.includes(r) && e.feicoes.some((c) => c.id === r), l = ma(
1786
+ const o = Pe(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !i && !o.includes(r) && e.feicoes.some((c) => c.id === r), l = ma(
1862
1787
  n ? [...o, r] : o,
1863
1788
  e.selectedFeatureIds,
1864
1789
  e.lastClickedFeatureId,
@@ -1884,9 +1809,9 @@ function sr(e) {
1884
1809
  }
1885
1810
  class lr {
1886
1811
  constructor(r) {
1887
- A(this, "origens", /* @__PURE__ */ new Map());
1888
- A(this, "removidas", /* @__PURE__ */ new Set());
1889
- A(this, "salvarComDebounce", Fe(() => this.salvar(), 200));
1812
+ y(this, "origens", /* @__PURE__ */ new Map());
1813
+ y(this, "removidas", /* @__PURE__ */ new Set());
1814
+ y(this, "salvarComDebounce", Se(() => this.salvar(), 200));
1890
1815
  this.instantaneo = r;
1891
1816
  }
1892
1817
  chaveAtual() {
@@ -1925,7 +1850,7 @@ class lr {
1925
1850
  this.origens.clear();
1926
1851
  }
1927
1852
  registrarOrigem(r) {
1928
- this.origens.set(r.id, Re(r));
1853
+ this.origens.set(r.id, Te(r));
1929
1854
  }
1930
1855
  esquecerCamada(r) {
1931
1856
  this.origens.delete(r), this.removidas.add(r);
@@ -1935,7 +1860,7 @@ class lr {
1935
1860
  Sa(r, a, i, this.origens);
1936
1861
  }
1937
1862
  }
1938
- function je(e, r = null, a = /* @__PURE__ */ new Set()) {
1863
+ function Oe(e, r = null, a = /* @__PURE__ */ new Set()) {
1939
1864
  const i = [];
1940
1865
  if (!Array.isArray(e)) return i;
1941
1866
  for (const t of e) {
@@ -1944,11 +1869,11 @@ function je(e, r = null, a = /* @__PURE__ */ new Set()) {
1944
1869
  if (a.has(o)) continue;
1945
1870
  a.add(o);
1946
1871
  const n = { ...t, id: o };
1947
- delete n.children, r && n.parentId === void 0 && (n.parentId = r), i.push(n), Array.isArray(t.children) && t.children.length > 0 && i.push(...je(t.children, o, a));
1872
+ delete n.children, r && n.parentId === void 0 && (n.parentId = r), i.push(n), Array.isArray(t.children) && t.children.length > 0 && i.push(...Oe(t.children, o, a));
1948
1873
  }
1949
1874
  return i;
1950
1875
  }
1951
- function Ne(e) {
1876
+ function je(e) {
1952
1877
  if (!Array.isArray(e)) return [];
1953
1878
  const r = /* @__PURE__ */ new Set(), a = [];
1954
1879
  for (const i of e) {
@@ -1959,7 +1884,7 @@ function Ne(e) {
1959
1884
  return a;
1960
1885
  }
1961
1886
  function cr(e, r, a) {
1962
- if (e.camadas = Array.isArray(r) ? je(r) : [], e.lembranca.limparOrigens(), e.persistir) {
1887
+ if (e.camadas = Array.isArray(r) ? Oe(r) : [], e.lembranca.limparOrigens(), e.persistir) {
1963
1888
  const t = e.lembranca.carregar();
1964
1889
  e.lembranca.reidratar(e.camadas, t, e.expandedLayers), t != null && t.camadaAtivaId && e.camadas.some((o) => o.id === t.camadaAtivaId) && (e.camadaAtivaId = t.camadaAtivaId);
1965
1890
  } else
@@ -1967,7 +1892,7 @@ function cr(e, r, a) {
1967
1892
  e.lembranca.registrarOrigem(t), e.expandedLayers.has(t.id) || e.expandedLayers.add(t.id);
1968
1893
  });
1969
1894
  if (Array.isArray(a)) {
1970
- e.feicoes = Ne(a);
1895
+ e.feicoes = je(a);
1971
1896
  const t = new Set(e.camadas.map((n) => n.id)), o = e.feicoes.filter((n) => n.layerId && !t.has(n.layerId));
1972
1897
  o.length > 0 && console.warn(
1973
1898
  `[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
@@ -1978,7 +1903,7 @@ function cr(e, r, a) {
1978
1903
  e.camadas.length > 0 && (!i || !e.camadas.some((t) => t.id === i)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
1979
1904
  }
1980
1905
  function dr(e, r) {
1981
- e.feicoes = Ne(r), be(e.selectedFeatureIds, e.feicoes), e.solicitarRenderizacao();
1906
+ e.feicoes = je(r), be(e.selectedFeatureIds, e.feicoes), e.solicitarRenderizacao();
1982
1907
  }
1983
1908
  function ur(e, r) {
1984
1909
  if (!r || !r.id) return;
@@ -2019,9 +1944,9 @@ function vr(e) {
2019
1944
  function t() {
2020
1945
  return e.getMaxAltura ? e.getMaxAltura() : 1600;
2021
1946
  }
2022
- function o(s, u = !1) {
1947
+ function o(s, d = !1) {
2023
1948
  if (s == null || s === "") {
2024
- e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"), u && e.hostElement.dispatchEvent(
1949
+ e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"), d && e.hostElement.dispatchEvent(
2025
1950
  new CustomEvent("ui-redimensionar-altura", {
2026
1951
  bubbles: !0,
2027
1952
  composed: !0,
@@ -2033,7 +1958,7 @@ function vr(e) {
2033
1958
  const f = typeof s == "number" ? s : parseFloat(String(s));
2034
1959
  if (isNaN(f)) return;
2035
1960
  const p = Math.max(i(), Math.min(t(), Math.round(f)));
2036
- e.hostElement.style.height = `${p}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${p}px`), u && e.hostElement.dispatchEvent(
1961
+ e.hostElement.style.height = `${p}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${p}px`), d && e.hostElement.dispatchEvent(
2037
1962
  new CustomEvent("ui-redimensionar-altura", {
2038
1963
  bubbles: !0,
2039
1964
  composed: !0,
@@ -2044,48 +1969,48 @@ function vr(e) {
2044
1969
  let n = null;
2045
1970
  function l() {
2046
1971
  if (!e.resizerElement) return;
2047
- let s = !1, u = 0, f = 0;
2048
- const p = (d) => {
2049
- if (d.button !== 0) return;
2050
- d.preventDefault(), d.stopPropagation(), s = !0, u = d.clientY, f = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
1972
+ let s = !1, d = 0, f = 0;
1973
+ const p = (u) => {
1974
+ if (u.button !== 0) return;
1975
+ u.preventDefault(), u.stopPropagation(), s = !0, d = u.clientY, f = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
2051
1976
  try {
2052
- e.resizerElement.setPointerCapture(d.pointerId);
1977
+ e.resizerElement.setPointerCapture(u.pointerId);
2053
1978
  } catch {
2054
1979
  }
2055
- const g = (L) => {
1980
+ const g = (k) => {
2056
1981
  if (!s) return;
2057
- L.preventDefault();
2058
- const $ = L.clientY - u, y = Math.max(i(), Math.min(t(), Math.round(f + $)));
2059
- e.hostElement.style.height = `${y}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${y}px`), e.onRedimensionando && e.onRedimensionando(y), e.hostElement.dispatchEvent(
1982
+ k.preventDefault();
1983
+ const C = k.clientY - d, F = Math.max(i(), Math.min(t(), Math.round(f + C)));
1984
+ e.hostElement.style.height = `${F}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${F}px`), e.onRedimensionando && e.onRedimensionando(F), e.hostElement.dispatchEvent(
2060
1985
  new CustomEvent("ui-redimensionando-altura", {
2061
1986
  bubbles: !0,
2062
1987
  composed: !0,
2063
- detail: { altura: y }
1988
+ detail: { altura: F }
2064
1989
  })
2065
1990
  );
2066
1991
  }, v = () => {
2067
- var L;
2068
- s = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x), (L = e.resizerElement) == null || L.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2069
- }, x = (L) => {
1992
+ var k;
1993
+ s = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", h), window.removeEventListener("pointercancel", h), (k = e.resizerElement) == null || k.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1994
+ }, h = (k) => {
2070
1995
  if (!s) return;
2071
1996
  s = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2072
1997
  try {
2073
- e.resizerElement.hasPointerCapture(L.pointerId) && e.resizerElement.releasePointerCapture(L.pointerId);
1998
+ e.resizerElement.hasPointerCapture(k.pointerId) && e.resizerElement.releasePointerCapture(k.pointerId);
2074
1999
  } catch {
2075
2000
  }
2076
- window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x);
2077
- const $ = e.hostElement.getBoundingClientRect().height, y = Math.round($);
2078
- e.onAlturaAlterada && e.onAlturaAlterada(y), e.hostElement.dispatchEvent(
2001
+ window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", h), window.removeEventListener("pointercancel", h);
2002
+ const C = e.hostElement.getBoundingClientRect().height, F = Math.round(C);
2003
+ e.onAlturaAlterada && e.onAlturaAlterada(F), e.hostElement.dispatchEvent(
2079
2004
  new CustomEvent("ui-redimensionar-altura", {
2080
2005
  bubbles: !0,
2081
2006
  composed: !0,
2082
- detail: { altura: y }
2007
+ detail: { altura: F }
2083
2008
  })
2084
2009
  );
2085
2010
  };
2086
- n = v, window.addEventListener("pointermove", g), window.addEventListener("pointerup", x), window.addEventListener("pointercancel", x);
2087
- }, m = (d) => {
2088
- d.preventDefault(), d.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
2011
+ n = v, window.addEventListener("pointermove", g), window.addEventListener("pointerup", h), window.addEventListener("pointercancel", h);
2012
+ }, m = (u) => {
2013
+ u.preventDefault(), u.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
2089
2014
  };
2090
2015
  e.listeners.add(e.resizerElement, "pointerdown", p), e.listeners.add(e.resizerElement, "dblclick", m);
2091
2016
  }
@@ -2098,19 +2023,19 @@ function vr(e) {
2098
2023
  destruir: c
2099
2024
  };
2100
2025
  }
2101
- const j = class j extends aa {
2026
+ const j = class j extends ea {
2102
2027
  constructor() {
2103
2028
  super();
2104
- A(this, "shadow");
2105
- A(this, "listeners", new ra());
2106
- A(this, "dragDropManager");
2107
- A(this, "resizerController");
2108
- A(this, "alturaCustomizada", null);
2109
- A(this, "conectado", !1);
2110
- A(this, "profundidadeLote", 0);
2111
- A(this, "renderPendente", !1);
2029
+ y(this, "shadow");
2030
+ y(this, "listeners", new aa());
2031
+ y(this, "dragDropManager");
2032
+ y(this, "resizerController");
2033
+ y(this, "alturaCustomizada", null);
2034
+ y(this, "conectado", !1);
2035
+ y(this, "profundidadeLote", 0);
2036
+ y(this, "renderPendente", !1);
2112
2037
  /** @internal */
2113
- A(this, "lembranca", new lr(() => ({
2038
+ y(this, "lembranca", new lr(() => ({
2114
2039
  persistir: this.persistir,
2115
2040
  conectado: this.conectado,
2116
2041
  storageKey: this.storageKey,
@@ -2124,19 +2049,19 @@ const j = class j extends aa {
2124
2049
  altura: this.alturaCustomizada
2125
2050
  })));
2126
2051
  // Estado interno
2127
- A(this, "camadas", []);
2128
- A(this, "feicoes", []);
2129
- A(this, "mapasBase", [...ze]);
2130
- A(this, "expandedLayers", /* @__PURE__ */ new Set());
2131
- A(this, "expandedFeatureLimits", /* @__PURE__ */ new Map());
2132
- A(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
2133
- A(this, "lastClickedFeatureId", null);
2134
- A(this, "activeSettingsLayerId", null);
2135
- A(this, "editingLayerId", null);
2136
- A(this, "editingFeatureId", null);
2137
- A(this, "searchQuery", "");
2138
- A(this, "corpoElement");
2139
- A(this, "btnExpandirFlutuante");
2052
+ y(this, "camadas", []);
2053
+ y(this, "feicoes", []);
2054
+ y(this, "mapasBase", [...Me]);
2055
+ y(this, "expandedLayers", /* @__PURE__ */ new Set());
2056
+ y(this, "expandedFeatureLimits", /* @__PURE__ */ new Map());
2057
+ y(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
2058
+ y(this, "lastClickedFeatureId", null);
2059
+ y(this, "activeSettingsLayerId", null);
2060
+ y(this, "editingLayerId", null);
2061
+ y(this, "editingFeatureId", null);
2062
+ y(this, "searchQuery", "");
2063
+ y(this, "corpoElement");
2064
+ y(this, "btnExpandirFlutuante");
2140
2065
  this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
2141
2066
  <style>${Fa}</style>
2142
2067
  <div class="ui-camadas-container" id="panel-container" part="base" role="region" aria-label="Painel de Camadas">
@@ -2236,7 +2161,7 @@ const j = class j extends aa {
2236
2161
  t.classList.toggle("active", o), t.setAttribute("aria-pressed", String(o));
2237
2162
  });
2238
2163
  const i = this.shadow.querySelector("[data-basemap-atual]");
2239
- i && (i.textContent = Be(this.mapasBase, a));
2164
+ i && (i.textContent = Fe(this.mapasBase, a));
2240
2165
  }
2241
2166
  /** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
2242
2167
  get mapasBaseRecolhido() {
@@ -2501,7 +2426,7 @@ const j = class j extends aa {
2501
2426
  }
2502
2427
  };
2503
2428
  /** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
2504
- A(j, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2429
+ y(j, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2505
2430
  let K = j;
2506
2431
  class br extends K {
2507
2432
  }
@@ -2510,7 +2435,7 @@ class hr extends K {
2510
2435
  ge("ui-camadas", K);
2511
2436
  ge("ui-painel-camadas", br);
2512
2437
  ge("ui-layer-panel", hr);
2513
- function Lr(e) {
2438
+ function Cr(e) {
2514
2439
  var r;
2515
2440
  return {
2516
2441
  id: e.id,
@@ -2527,7 +2452,7 @@ function Lr(e) {
2527
2452
  dados: e.dados
2528
2453
  };
2529
2454
  }
2530
- function Cr(e, r = "levantamento", a = "feicoes") {
2455
+ function $r(e, r = "levantamento", a = "feicoes") {
2531
2456
  return {
2532
2457
  id: e.id,
2533
2458
  nome: e.name,
@@ -2546,7 +2471,7 @@ function Cr(e, r = "levantamento", a = "feicoes") {
2546
2471
  dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
2547
2472
  };
2548
2473
  }
2549
- function $r(e, r = "") {
2474
+ function Sr(e, r = "") {
2550
2475
  var o, n, l, c;
2551
2476
  const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", i = ((l = e.geometria) == null ? void 0 : l.coordenadas) || ((c = e.geometria) == null ? void 0 : c.coordinates) || e.coordinates, t = e.cor || e.color;
2552
2477
  return {
@@ -2567,39 +2492,40 @@ function $r(e, r = "") {
2567
2492
  export {
2568
2493
  ka as CamadasDragDropManager,
2569
2494
  b as ICONES,
2570
- De as LIMITE_FEICOES_POR_CAMADA,
2571
- ze as MAPAS_BASE_PADRAO,
2495
+ qe as LIMITE_FEICOES_POR_CAMADA,
2496
+ Me as MAPAS_BASE_PADRAO,
2572
2497
  K as UICamadas,
2573
2498
  hr as UILayerPanel,
2574
- Fr as UIMapaBase,
2499
+ zr as UIMapaBase,
2575
2500
  br as UIPainelCamadas,
2576
- zr as UISeletorMapaBase,
2501
+ Br as UISeletorMapaBase,
2577
2502
  ce as calcularAreaAnelSimples,
2578
2503
  $e as calcularAreaPoligono,
2579
2504
  Ce as calcularComprimentoLinha,
2580
- oa as calcularDistanciaPontos,
2505
+ ia as calcularDistanciaPontos,
2581
2506
  ma as calcularSelecaoFeicao,
2582
2507
  fe as carregarEstadoPersistido,
2583
2508
  ve as construirHierarquiaCamadas,
2584
- Cr as converterCamadaItemParaCanvasLayer,
2585
- Lr as converterCanvasLayerParaCamadaItem,
2586
- $r as converterFeicaoParaItem,
2587
- F as escapeHtml,
2588
- Pe as filtrarCamadasPorBusca,
2509
+ $r as converterCamadaItemParaCanvasLayer,
2510
+ Cr as converterCanvasLayerParaCamadaItem,
2511
+ Sr as converterFeicaoParaItem,
2512
+ M as escapeHtml,
2513
+ De as filtrarCamadasPorBusca,
2589
2514
  ae as filtrarFeicoesPorBusca,
2590
- Se as formatarMetricaFeicoes,
2515
+ Lr as formatarMetricaFeicoes,
2591
2516
  da as formatarOpcoesCamadasHierarquicas,
2592
2517
  La as gerarChaveStorage,
2593
2518
  $a as limparEstadoPersistido,
2594
2519
  Ma as montarEstadoPersistido,
2595
- Be as nomeDoMapaBase,
2596
- Te as obterIdsVisiveisFeicoes,
2520
+ Fe as nomeDoMapaBase,
2521
+ Pe as obterIdsVisiveisFeicoes,
2597
2522
  Sa as reidratarCamadasComOverrides,
2598
2523
  be as removerSelecoesInvalidas,
2599
2524
  ya as renderizarArvoreCamadas,
2600
2525
  la as renderizarGridMapasBase,
2601
2526
  ua as renderizarRodapeAcoes,
2602
2527
  fa as renderizarThumbGeometria,
2528
+ ze as rotuloRodape,
2603
2529
  Ca as salvarEstadoPersistido,
2604
- Re as snapshotCamada
2530
+ Te as snapshotCamada
2605
2531
  };