@thibezer/ui-components-kit 2.15.0 → 2.17.0

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.
Files changed (98) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +1 -1
  3. package/dist/botao.cjs +1 -1
  4. package/dist/botao.js +1 -1
  5. package/dist/camadas.cjs +50 -50
  6. package/dist/camadas.js +381 -373
  7. package/dist/campo-texto.cjs +1 -1
  8. package/dist/campo-texto.js +1 -1
  9. package/dist/canvas.cjs +24 -24
  10. package/dist/canvas.js +757 -751
  11. package/dist/card.cjs +1 -1
  12. package/dist/card.js +1 -1
  13. package/dist/components/ui-avatar/ui-avatar.d.ts +7 -0
  14. package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +2 -0
  15. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +7 -0
  16. package/dist/components/ui-mapa/ui-mapa.d.ts +1 -0
  17. package/dist/components/ui-seletor-mapa-base/ui-seletor-mapa-base.d.ts +6 -0
  18. package/dist/components/ui-skeleton/ui-skeleton.d.ts +9 -0
  19. package/dist/components/ui-stat/ui-stat.d.ts +12 -0
  20. package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +2 -1
  21. package/dist/components/ui-tabela-propriedades/propriedades-persistencia.d.ts +63 -0
  22. package/dist/components/ui-tabela-propriedades/propriedades-render-arvore.d.ts +1 -0
  23. package/dist/components/ui-tabela-propriedades/tipos.d.ts +16 -0
  24. package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +40 -1
  25. package/dist/core/degrade.d.ts +34 -0
  26. package/dist/core/index.d.ts +1 -0
  27. package/dist/core.cjs +1 -1
  28. package/dist/core.js +33 -24
  29. package/dist/cores.cjs +1 -1
  30. package/dist/cores.js +1 -1
  31. package/dist/custom-elements.json +20565 -19020
  32. package/dist/data.cjs +1 -1
  33. package/dist/data.js +89 -79
  34. package/dist/degrade-CIxvOTUv.cjs +1 -0
  35. package/dist/degrade-gDa5sW__.js +119 -0
  36. package/dist/feedback.cjs +1 -1
  37. package/dist/feedback.js +2 -2
  38. package/dist/forms.cjs +1 -1
  39. package/dist/forms.js +2 -2
  40. package/dist/index.cjs +1 -1
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.js +215 -196
  43. package/dist/mapa.cjs +1 -1
  44. package/dist/mapa.js +1 -1
  45. package/dist/modal.cjs +1 -1
  46. package/dist/modal.js +1 -1
  47. package/dist/register.cjs +1 -1
  48. package/dist/register.js +11 -11
  49. package/dist/seletor-mapa-base.cjs +10 -10
  50. package/dist/seletor-mapa-base.js +34 -28
  51. package/dist/tabela.cjs +1 -1
  52. package/dist/tabela.js +83 -73
  53. package/dist/tipos-elementos.d.ts +33 -3
  54. package/dist/tipos-vue.d.ts +30 -3
  55. package/dist/tools.cjs +1 -1
  56. package/dist/tools.js +1 -1
  57. package/dist/ui-badge-1UU8vT-b.js +198 -0
  58. package/dist/ui-badge-CKKKPdt8.cjs +28 -0
  59. package/dist/ui-badge-DE58YSBY.cjs +28 -0
  60. package/dist/ui-badge-KgmI3jOD.js +201 -0
  61. package/dist/ui-botao-Dz8YvmiA.cjs +12 -0
  62. package/dist/ui-botao-bU_bf6SU.js +166 -0
  63. package/dist/ui-botao-xTbH5mpH.cjs +12 -0
  64. package/dist/ui-botao-zLkcMMyP.js +168 -0
  65. package/dist/ui-campo-texto-DVU_sWV1.cjs +16 -0
  66. package/dist/ui-campo-texto-Dliyt9qr.cjs +16 -0
  67. package/dist/ui-campo-texto-W5M0gNE4.js +377 -0
  68. package/dist/ui-campo-texto-btevggO3.js +379 -0
  69. package/dist/ui-card-BYyYxxY1.cjs +20 -0
  70. package/dist/ui-card-CojoGXaT.js +144 -0
  71. package/dist/ui-card-DFnRp9bl.js +146 -0
  72. package/dist/ui-card-DrWVJQKw.cjs +20 -0
  73. package/dist/ui-controle-cores-Bq_XUrIQ.cjs +32 -0
  74. package/dist/ui-controle-cores-BtA6yzu3.js +291 -0
  75. package/dist/ui-kit.css +1 -1
  76. package/dist/ui-linha-2kY7TNUJ.cjs +38 -0
  77. package/dist/ui-linha-DAz6DBcl.cjs +38 -0
  78. package/dist/ui-linha-DkxwMhD-.js +749 -0
  79. package/dist/ui-linha-KFF86FW5.js +752 -0
  80. package/dist/ui-modal-4nU-tXjO.cjs +18 -0
  81. package/dist/ui-modal-BrXzVZ65.js +216 -0
  82. package/dist/ui-modal-BwB9fksp.js +214 -0
  83. package/dist/ui-modal-lARKzEVZ.cjs +18 -0
  84. package/dist/ui-paleta-ferramentas-Bu6JaT0s.js +1245 -0
  85. package/dist/ui-paleta-ferramentas-D3Jhwt26.cjs +21 -0
  86. package/dist/ui-skeleton-BLEV6h3k.js +653 -0
  87. package/dist/ui-skeleton-B_XTaGrX.cjs +52 -0
  88. package/dist/ui-skeleton-DEHwpDqa.js +648 -0
  89. package/dist/ui-skeleton-sIphhOSx.cjs +52 -0
  90. package/dist/ui-switch-BXIDwC-Y.cjs +66 -0
  91. package/dist/ui-switch-Ctxk-jKS.js +1212 -0
  92. package/dist/ui-switch-DAIgOhqr.cjs +66 -0
  93. package/dist/ui-switch-_F8yubdX.js +1203 -0
  94. package/dist/ui-tabela-propriedades-2bq2nX-b.js +3202 -0
  95. package/dist/ui-tabela-propriedades-CJyo568n.js +3517 -0
  96. package/dist/ui-tabela-propriedades-CnfW9DZG.cjs +142 -0
  97. package/dist/ui-tabela-propriedades-Wa34hfIr.cjs +142 -0
  98. package/package.json +187 -187
package/dist/camadas.js CHANGED
@@ -1,14 +1,15 @@
1
- var ya = Object.defineProperty;
2
- var xa = (e, r, a) => r in e ? ya(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
3
- var A = (e, r, a) => xa(e, typeof r != "symbol" ? r + "" : r, a);
1
+ var xa = Object.defineProperty;
2
+ var wa = (e, r, a) => r in e ? xa(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
3
+ var A = (e, r, a) => wa(e, typeof r != "symbol" ? r + "" : r, a);
4
4
  /* empty css */
5
- import { d as ye, S as wa } from "./ssr-safe-5cWfJP-s.js";
6
- import { L as Aa } from "./listener-bag-DQgv7OON.js";
7
- import { a as qe } from "./parts-CaoQiCfI.js";
8
- import { a as Ea } from "./ui-seletor-cor-FYtRccnK.js";
9
- import { f as ka } from "./alvo-digitavel-CzCvNVQ3.js";
10
- import { UIMapaBase as ut, UISeletorMapaBase as pt } from "./seletor-mapa-base.js";
11
- const h = {
5
+ import { d as ye, S as Aa } from "./ssr-safe-5cWfJP-s.js";
6
+ import { A as Ea, a as Se, e as ka } from "./degrade-gDa5sW__.js";
7
+ import { L as Ia } from "./listener-bag-DQgv7OON.js";
8
+ import { a as De } from "./parts-CaoQiCfI.js";
9
+ import { a as Ca } from "./ui-seletor-cor-FYtRccnK.js";
10
+ import { f as La } from "./alvo-digitavel-CzCvNVQ3.js";
11
+ import { UIMapaBase as gt, UISeletorMapaBase as vt } from "./seletor-mapa-base.js";
12
+ const b = {
12
13
  camadas: `<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
13
14
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
14
15
  <polyline points="2 17 12 22 22 17"></polyline>
@@ -106,8 +107,8 @@ const h = {
106
107
  <line x1="9" y1="3" x2="9" y2="21"></line>
107
108
  <line x1="15" y1="3" x2="15" y2="21"></line>
108
109
  </svg>`
109
- }, V = 6378137;
110
- function Ia(e, r) {
110
+ }, _ = 6378137;
111
+ function Sa(e, r) {
111
112
  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
113
  return 0;
113
114
  const a = e[0] * Math.PI / 180, t = e[1] * Math.PI / 180, i = r[0] * Math.PI / 180, o = r[1] * Math.PI / 180, n = i - a, l = o - t, c = Math.min(
@@ -116,7 +117,7 @@ function Ia(e, r) {
116
117
  0,
117
118
  Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(i) * Math.sin(l / 2) * Math.sin(l / 2)
118
119
  )
119
- ), s = V * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
120
+ ), s = _ * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
120
121
  return Number.isFinite(s) ? s : 0;
121
122
  }
122
123
  function Pe(e) {
@@ -126,7 +127,7 @@ function Pe(e) {
126
127
  let r = 0;
127
128
  for (let a = 0; a < e.length - 1; a++) {
128
129
  const t = e[a], i = e[a + 1];
129
- Array.isArray(t) && Array.isArray(i) && t.length >= 2 && i.length >= 2 && (r += Ia([t[0], t[1]], [i[0], i[1]]));
130
+ Array.isArray(t) && Array.isArray(i) && t.length >= 2 && i.length >= 2 && (r += Sa([t[0], t[1]], [i[0], i[1]]));
130
131
  }
131
132
  return r;
132
133
  }
@@ -146,19 +147,19 @@ function ue(e) {
146
147
  const i = t / a * Math.PI / 180, o = Math.cos(i), n = Math.PI / 180, l = r[0][0], c = r[0][1];
147
148
  let s = 0;
148
149
  for (let u = 0; u < a; u++) {
149
- const d = r[u], m = r[(u + 1) % a], f = (d[1] - c) * n * V * o, g = (d[0] - l) * n * V, v = (m[1] - c) * n * V * o, y = (m[0] - l) * n * V;
150
+ const d = r[u], m = r[(u + 1) % a], f = (d[1] - c) * n * _ * o, g = (d[0] - l) * n * _, v = (m[1] - c) * n * _ * o, y = (m[0] - l) * n * _;
150
151
  s += f * y - v * g;
151
152
  }
152
153
  const p = Math.abs(s) / 2;
153
154
  return Number.isFinite(p) ? p : 0;
154
155
  }
155
- function De(e) {
156
+ function Te(e) {
156
157
  if (!Array.isArray(e) || e.length === 0) return 0;
157
158
  if (Array.isArray(e[0]) && typeof e[0][0] == "number")
158
159
  return ue(e);
159
160
  if (Array.isArray(e[0]) && Array.isArray(e[0][0])) {
160
161
  if (Array.isArray(e[0][0][0]))
161
- return e.reduce((t, i) => t + De(i), 0);
162
+ return e.reduce((t, i) => t + Te(i), 0);
162
163
  const r = ue(e[0]);
163
164
  let a = 0;
164
165
  for (let t = 1; t < e.length; t++)
@@ -167,14 +168,14 @@ function De(e) {
167
168
  }
168
169
  return 0;
169
170
  }
170
- function ot(e) {
171
+ function ct(e) {
171
172
  if (!e || e.length === 0) return "";
172
173
  const r = e.filter(
173
174
  (t) => t.type === "Polygon" || t.type === "MultiPolygon" || t.geometryType === "Polygon"
174
175
  );
175
176
  if (r.length > 0) {
176
177
  const t = r.reduce(
177
- (i, o) => i + (De(o.coordinates) || 0),
178
+ (i, o) => i + (Te(o.coordinates) || 0),
178
179
  0
179
180
  );
180
181
  return t >= 1e4 ? `${(t / 1e4).toLocaleString("pt-BR", {
@@ -200,20 +201,20 @@ function ot(e) {
200
201
  function z(e) {
201
202
  return e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
202
203
  }
203
- const Ca = /^(#(?:[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
+ const $a = /^(#(?:[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
205
  function H(e, r = "#00E08A") {
205
206
  if (!e || typeof e != "string") return r;
206
207
  const a = e.trim();
207
- return Ca.test(a) ? a : r;
208
+ return $a.test(a) ? a : r;
208
209
  }
209
210
  function pe(e) {
210
211
  return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
211
212
  }
212
- function La(e, r, a) {
213
+ function Ma(e, r, a) {
213
214
  const t = r / 100, i = a / 100, o = (c) => (c + e / 30) % 12, n = t * Math.min(i, 1 - i), l = (c) => i - n * Math.max(-1, Math.min(o(c) - 3, Math.min(9 - o(c), 1)));
214
215
  return [l(0) * 255, l(8) * 255, l(4) * 255];
215
216
  }
216
- function Sa(e, r = "#000000") {
217
+ function Fa(e, r = "#000000") {
217
218
  if (!e || typeof e != "string") return r;
218
219
  const a = e.trim().toLowerCase(), t = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
219
220
  if (t) {
@@ -224,7 +225,7 @@ function Sa(e, r = "#000000") {
224
225
  if (i) {
225
226
  const o = i[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
226
227
  if (o.length >= 3 && o.slice(0, 3).every((n) => !isNaN(n))) {
227
- const [n, l, c] = o, [s, p, u] = i[1] === "rgb" ? [n, l, c] : La(n, l, c);
228
+ const [n, l, c] = o, [s, p, u] = i[1] === "rgb" ? [n, l, c] : Ma(n, l, c);
228
229
  return `#${pe(s)}${pe(p)}${pe(u)}`;
229
230
  }
230
231
  }
@@ -236,7 +237,7 @@ function T(e, r, a) {
236
237
  if (t[i].getAttribute(r) === a) return t[i];
237
238
  return null;
238
239
  }
239
- function Te(e, r = 80) {
240
+ function Re(e, r = 80) {
240
241
  let a = null;
241
242
  return (...t) => {
242
243
  a && clearTimeout(a), a = setTimeout(() => {
@@ -244,10 +245,10 @@ function Te(e, r = 80) {
244
245
  }, r);
245
246
  };
246
247
  }
247
- function P(e, r) {
248
+ function D(e, r) {
248
249
  e.setAttribute("title", r), e.setAttribute("aria-label", r);
249
250
  }
250
- const Re = [
251
+ const Oe = [
251
252
  {
252
253
  id: "none",
253
254
  nome: "Sem Mapa",
@@ -290,16 +291,16 @@ const Re = [
290
291
  thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
291
292
  }
292
293
  ];
293
- function Oe(e, r) {
294
+ function je(e, r) {
294
295
  const a = Array.isArray(e) ? e.find((t) => t.id === r) : void 0;
295
296
  return a && typeof a.nome == "string" ? a.nome : "";
296
297
  }
297
- function $a(e = Re, r = "satelite", a = !1) {
298
+ function za(e = Oe, r = "satelite", a = !1) {
298
299
  if (!e || e.length === 0) return "";
299
300
  const t = e.map((i) => {
300
301
  const o = r === i.id, n = z(i.id), l = z(i.nome), c = z(i.descricao || i.nome);
301
302
  let s = "";
302
- return i.thumbnailUrl ? s = `<img class="ui-basemap-preview" src="${z(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : s = `<div class="ui-basemap-preview-none">${h.gradeCad}</div>`, `
303
+ return i.thumbnailUrl ? s = `<img class="ui-basemap-preview" src="${z(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : s = `<div class="ui-basemap-preview-none">${b.gradeCad}</div>`, `
303
304
  <div class="ui-basemap-card ${o ? "active" : ""}" data-basemap-id="${n}" role="button" tabindex="0" aria-pressed="${o}" title="${c}">
304
305
  ${s}
305
306
  <span>${l}</span>
@@ -310,8 +311,8 @@ function $a(e = Re, r = "satelite", a = !1) {
310
311
  <div class="ui-basemap-section ${a ? "recolhido" : ""}" part="mapas-base">
311
312
  <button type="button" class="ui-basemap-toggle" data-basemap-toggle="alternar" aria-expanded="${!a}" aria-controls="ui-basemap-grid" title="${a ? "Mostrar mapas base" : "Recolher mapas base"}">
312
313
  <span class="ui-basemap-title">Mapa Base</span>
313
- <span class="ui-basemap-atual" data-basemap-atual>${z(Oe(e, r))}</span>
314
- <span class="ui-chevron-icon ${a ? "" : "open"}">${h.chevronDir}</span>
314
+ <span class="ui-basemap-atual" data-basemap-atual>${z(je(e, r))}</span>
315
+ <span class="ui-chevron-icon ${a ? "" : "open"}">${b.chevronDir}</span>
315
316
  </button>
316
317
  ${a ? "" : `<div class="ui-basemap-grid" id="ui-basemap-grid">
317
318
  ${t}
@@ -362,7 +363,7 @@ function ne(e) {
362
363
  }
363
364
  return l.map((s) => c(s, 0, /* @__PURE__ */ new Set()));
364
365
  }
365
- function Ma(e, r) {
366
+ function Ba(e, r) {
366
367
  const a = /* @__PURE__ */ new Set();
367
368
  if (!r || !Array.isArray(e)) return a;
368
369
  const t = /* @__PURE__ */ new Map();
@@ -382,7 +383,7 @@ function Ma(e, r) {
382
383
  }
383
384
  function Q(e, r, a) {
384
385
  if (!a || !Array.isArray(r) || r.length === 0) return [];
385
- const t = Ma(e, a);
386
+ const t = Ba(e, a);
386
387
  return r.filter((i) => !!(i && i.layerId && t.has(i.layerId)));
387
388
  }
388
389
  function se(e) {
@@ -408,24 +409,24 @@ function xe(e) {
408
409
  }).map((a) => a.id)
409
410
  );
410
411
  }
411
- function Fa(e) {
412
+ function qa(e) {
412
413
  const r = ne(e), a = xe(e), t = (i) => {
413
414
  const o = i.camada, n = i.depth, l = i.subcamadas, c = n > 0 ? "&nbsp;&nbsp;".repeat(n) + "↳ " : l.length > 0 || o.isGroup ? "📁 " : "", s = a.has(o.id), p = `<option value="${z(o.id)}"${s ? " disabled" : ""}>${c}${z(o.name)}${s ? " 🔒" : ""}</option>`, u = l.map((d) => t(d)).join("");
414
415
  return p + u;
415
416
  };
416
417
  return r.map((i) => t(i)).join("");
417
418
  }
418
- function je(e, r) {
419
+ function Ne(e, r) {
419
420
  return r > 0 ? {
420
- icone: h.alvoEnquadrar,
421
+ icone: b.alvoEnquadrar,
421
422
  texto: `${r} ${r > 1 ? "selecionados" : "selecionado"}`
422
423
  } : {
423
- icone: h.camadas,
424
+ icone: b.camadas,
424
425
  texto: `${e} ${e > 1 ? "camadas" : "camada"}`
425
426
  };
426
427
  }
427
- function za(e, r, a) {
428
- const t = r.filter((c) => a.has(c.id)), i = t.length > 0, o = i ? t.length : e.length, n = je(e.length, t.length), l = Fa(e);
428
+ function Da(e, r, a) {
429
+ const t = r.filter((c) => a.has(c.id)), i = t.length > 0, o = i ? t.length : e.length, n = Ne(e.length, t.length), l = qa(e);
429
430
  return `
430
431
  <div class="ui-tree-footer ${i ? "tem-selecao" : "sem-selecao"}" part="rodape">
431
432
  <div class="ui-footer-left">
@@ -436,11 +437,11 @@ function za(e, r, a) {
436
437
  <!-- Criação de camadas/grupos quando não há nada selecionado -->
437
438
  <div class="ui-footer-actions-gerais" style="display: ${i ? "none" : "flex"};">
438
439
  <button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
439
- ${h.moverPasta}
440
+ ${b.moverPasta}
440
441
  <span>Grupo</span>
441
442
  </button>
442
443
  <button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
443
- ${h.mais}
444
+ ${b.mais}
444
445
  <span>Camada</span>
445
446
  </button>
446
447
  </div>
@@ -455,52 +456,52 @@ function za(e, r, a) {
455
456
  </div>
456
457
 
457
458
  <button class="ui-footer-btn btn-danger-footer ${i ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${i ? "" : "disabled"}>
458
- ${h.lixeira}
459
+ ${b.lixeira}
459
460
  </button>
460
461
  </div>
461
462
  </div>
462
463
  `;
463
464
  }
464
465
  const fe = 64;
465
- function Se(e) {
466
+ function $e(e) {
466
467
  return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
467
468
  }
468
- function Ne(e) {
469
- return !Array.isArray(e) || e.length === 0 ? [] : Se(e[0]) ? [e.filter(Se)] : e.flatMap(Ne);
469
+ function He(e) {
470
+ return !Array.isArray(e) || e.length === 0 ? [] : $e(e[0]) ? [e.filter($e)] : e.flatMap(He);
470
471
  }
471
- function $e(e) {
472
+ function Me(e) {
472
473
  if (e.length <= fe) return e;
473
474
  const r = e.length / fe, a = [];
474
475
  for (let t = 0; t < fe; t++) a.push(e[Math.floor(t * r)]);
475
476
  return a.push(e[e.length - 1]), a;
476
477
  }
477
- function Ba(e, r, a) {
478
- const t = Ne(r).filter((L) => L.length > 0);
478
+ function Pa(e, r, a) {
479
+ const t = He(r).filter((L) => L.length > 0);
479
480
  if (t.length === 0) return "";
480
481
  let i = 1 / 0, o = -1 / 0, n = 1 / 0, l = -1 / 0;
481
482
  for (const L of t)
482
- for (const [b, $] of L)
483
- $ < i && (i = $), $ > o && (o = $), -b < n && (n = -b), -b > l && (l = -b);
484
- const c = 16, s = 2, p = c - s * 2, u = o - i, d = l - n, m = Math.max(u, d), f = m > 0 ? p / m : 0, g = s + (p - u * f) / 2, v = s + (p - d * f) / 2, y = (L) => Math.round(L * 100) / 100, k = ([L, b]) => `${y(g + (b - i) * f)},${y(v + (-L - n) * f)}`, M = e === "polygon" || e === "multipolygon", S = e === "linestring" || e === "multilinestring", w = (L) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${L}</svg>`;
483
+ for (const [h, $] of L)
484
+ $ < i && (i = $), $ > o && (o = $), -h < n && (n = -h), -h > l && (l = -h);
485
+ const c = 16, s = 2, p = c - s * 2, u = o - i, d = l - n, m = Math.max(u, d), f = m > 0 ? p / m : 0, g = s + (p - u * f) / 2, v = s + (p - d * f) / 2, y = (L) => Math.round(L * 100) / 100, k = ([L, h]) => `${y(g + (h - i) * f)},${y(v + (-L - n) * f)}`, M = e === "polygon" || e === "multipolygon", S = e === "linestring" || e === "multilinestring", w = (L) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${L}</svg>`;
485
486
  if (M) {
486
- const L = t.filter((b) => b.length >= 3).map((b) => `M${$e(b).map(k).join("L")}Z`).join("");
487
+ const L = t.filter((h) => h.length >= 3).map((h) => `M${Me(h).map(k).join("L")}Z`).join("");
487
488
  return L ? w(
488
489
  `<path d="${L}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
489
490
  ) : "";
490
491
  }
491
492
  if (S) {
492
- const L = t.filter((b) => b.length >= 2).map((b) => `M${$e(b).map(k).join("L")}`).join("");
493
+ const L = t.filter((h) => h.length >= 2).map((h) => `M${Me(h).map(k).join("L")}`).join("");
493
494
  return L ? w(
494
495
  `<path d="${L}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
495
496
  ) : "";
496
497
  }
497
498
  return "";
498
499
  }
499
- function qa(e, r, a) {
500
- const t = H(r, "#00E08A"), i = (e || "").toLowerCase(), o = a !== void 0 ? Ba(i, a, t) : "";
500
+ function Ta(e, r, a) {
501
+ const t = H(r, "#00E08A"), i = (e || "").toLowerCase(), o = a !== void 0 ? Pa(i, a, t) : "";
501
502
  return o || (i === "polygon" || i === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${t}" fill-opacity="0.45" stroke="${t}" stroke-width="1.5"/></svg>` : i === "linestring" || i === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${t}" stroke-width="2"/></svg>` : i === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${t}" 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="${t}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
502
503
  }
503
- function He(e, r, a) {
504
+ function Ge(e, r, a) {
504
505
  return {
505
506
  camadaIdSeguro: z(e.id),
506
507
  corCamada: H(e.color, "#00E08A"),
@@ -510,49 +511,49 @@ function He(e, r, a) {
510
511
  };
511
512
  }
512
513
  const me = (e, r, a) => `${e} ${e === 1 ? r : a}`;
513
- function Ge(e, r, a) {
514
+ function _e(e, r, a) {
514
515
  return a === 0 ? me(e, "feição", "feições") : `${me(e, "feição", "feições")} no grupo (${r} nesta camada) · ${me(a, "subcamada", "subcamadas")}`;
515
516
  }
516
- function Ve(e, r, a, t) {
517
- return e === 0 && t ? "" : `<span class="ui-count-chip" title="${Ge(e, r, a)}">${e}</span>`;
517
+ function Ue(e, r, a, t) {
518
+ return e === 0 && t ? "" : `<span class="ui-count-chip" title="${_e(e, r, a)}">${e}</span>`;
518
519
  }
519
- function Ue(e, r) {
520
+ function Ve(e, r) {
520
521
  const a = r - e;
521
522
  return {
522
523
  resumo: `Exibindo ${e} de ${r} feições. Use a busca acima para filtrar.`,
523
524
  botao: `Mostrar mais (+${Math.min(80, a)})`
524
525
  };
525
526
  }
526
- function _e(e, r, a) {
527
- const t = Ue(r, a);
527
+ function Ye(e, r, a) {
528
+ const t = Ve(r, a);
528
529
  return `<div class="ui-truncate-notice" role="note">
529
530
  <span>${t.resumo}</span>
530
531
  <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${e}">${t.botao}</button>
531
532
  </div>`;
532
533
  }
533
- function Ye(e) {
534
+ function Ke(e) {
534
535
  return `<div class="ui-empty-row"><span>${e ? "Grupo vazio (adicione subcamadas ou feições)" : "Camada vazia"}</span></div>`;
535
536
  }
536
- const Pa = ["name", "color", "visible", "locked", "status", "type", "geometryType", "coordinates", "layerId"];
537
- function Da(e, r) {
538
- return Pa.every((a) => e[a] === r[a]);
537
+ const Ra = ["name", "color", "visible", "locked", "status", "type", "geometryType", "coordinates", "layerId"];
538
+ function Oa(e, r) {
539
+ return Ra.every((a) => e[a] === r[a]);
539
540
  }
540
- function Ke(e, r, a, t) {
541
+ function Qe(e, r, a, t) {
541
542
  const { camadaIdSeguro: i, corCamada: o, profundidade: n } = r, l = z(e.id), c = z(e.name || "Feição"), s = H(e.color, o), p = e.visible !== !1, u = r.travadaPelaCamada, d = e.locked === !0 || u, m = u ? "Bloqueada pela camada" : d ? "Desbloquear Feição" : "Bloquear Feição", f = e.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
542
543
  return `
543
544
  <div class="ui-feat-row ${a ? "selected-row" : ""} ${p ? "" : "hidden-row"} ${r.esmaecida ? "herdado-oculto" : ""}" data-feat-row="${l}" data-feat-select="${l}" data-feat-layer="${i}" role="treeitem" aria-level="${n + 2}" aria-selected="${a}" tabindex="-1" draggable="true" part="${a ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${n + 1};" title="Clique para selecionar | Arraste para reordenar">
544
545
  <div class="ui-col ui-col-eye" data-feat-eye="${l}" role="button" tabindex="0" aria-label="${p ? "Ocultar Feição" : "Exibir Feição"}" title="${p ? "Ocultar Feição" : "Exibir Feição"}">
545
- ${p ? h.olhoAberto : h.olhoFechado}
546
+ ${p ? b.olhoAberto : b.olhoFechado}
546
547
  </div>
547
548
 
548
549
  <div class="ui-col ui-col-lock ${d ? "" : "ui-lock-open"}" data-feat-lock="${l}" ${u ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${m}" title="${m}">
549
- ${d ? h.cadeadoTrancado : h.cadeadoAberto}
550
+ ${d ? b.cadeadoTrancado : b.cadeadoAberto}
550
551
  </div>
551
552
 
552
553
  <div class="ui-col ui-col-colorbar" style="background: ${s};"></div>
553
554
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
554
555
  <div class="ui-col ui-col-thumb">
555
- <div class="ui-thumb-box">${qa(e.type || e.geometryType, s, e.coordinates)}</div>
556
+ <div class="ui-thumb-box">${Ta(e.type || e.geometryType, s, e.coordinates)}</div>
556
557
  </div>
557
558
 
558
559
  <div class="ui-col ui-col-name" data-feat-name-trigger="${l}" title="Duplo clique para renomear">
@@ -560,7 +561,7 @@ function Ke(e, r, a, t) {
560
561
  </div>
561
562
 
562
563
  <div class="ui-col ui-col-actions">
563
- <button class="ui-micro-btn" data-feat-fit="${l}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${h.alvoEnquadrar}</button>
564
+ <button class="ui-micro-btn" data-feat-fit="${l}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${b.alvoEnquadrar}</button>
564
565
  </div>
565
566
 
566
567
  <div class="ui-col ui-col-target" data-feat-target="${l}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
@@ -576,7 +577,7 @@ function te(e, r) {
576
577
  (t) => (t.name || "").toLowerCase().includes(a) || (t.category || "").toLowerCase().includes(a) || (t.type || "").toLowerCase().includes(a)
577
578
  ) : e;
578
579
  }
579
- function Qe(e, r, a) {
580
+ function Xe(e, r, a) {
580
581
  var d, m;
581
582
  const t = (a || "").trim().toLowerCase();
582
583
  if (!t) return null;
@@ -611,8 +612,8 @@ function Qe(e, r, a) {
611
612
  }
612
613
  return { camadasVisiveis: s, feicoesPorCamada: u };
613
614
  }
614
- function Xe(e, r, a, t = "", i = we, o) {
615
- const n = Qe(e, r, t), l = [], c = /* @__PURE__ */ new Map();
615
+ function We(e, r, a, t = "", i = we, o) {
616
+ const n = Xe(e, r, t), l = [], c = /* @__PURE__ */ new Map();
616
617
  for (let u = 0; u < r.length; u++) {
617
618
  const d = r[u];
618
619
  if (!d || !d.id) continue;
@@ -633,7 +634,7 @@ function Xe(e, r, a, t = "", i = we, o) {
633
634
  p(u);
634
635
  return l;
635
636
  }
636
- function Ta(e, r, a, t, i, o) {
637
+ function ja(e, r, a, t, i, o) {
637
638
  if (!e.includes(t)) return null;
638
639
  const n = new Set(r);
639
640
  let l = a;
@@ -660,10 +661,10 @@ function U(e, r, a) {
660
661
  }
661
662
  return !1;
662
663
  }
663
- function Ra(e) {
664
+ function Na(e) {
664
665
  return Number.isFinite(e) ? e < 0.25 ? "acima" : e > 0.75 ? "abaixo" : "dentro" : "dentro";
665
666
  }
666
- function Oa(e, r, a, t) {
667
+ function Ha(e, r, a, t) {
667
668
  if (!r || !a || r === a) return null;
668
669
  const i = e.find((s) => s.id === r), o = e.find((s) => s.id === a);
669
670
  if (!i || !o) return null;
@@ -676,20 +677,20 @@ function Oa(e, r, a, t) {
676
677
  const c = e.findIndex((s) => s.id === a);
677
678
  return c === -1 ? e.push(i) : e.splice(t === "acima" ? c : c + 1, 0, i), i.parentId = o.parentId ?? null, { tipo: "ordem", camada: i, parentAnteriorId: n, novoParentId: i.parentId };
678
679
  }
679
- function ja(e, r, a, t) {
680
+ function Ga(e, r, a, t) {
680
681
  if (!r || !a || r === a) return !1;
681
682
  const i = e.findIndex((l) => l.id === r);
682
683
  if (i === -1) return !1;
683
684
  const [o] = e.splice(i, 1), n = e.findIndex((l) => l.id === a);
684
685
  return n === -1 ? e.push(o) : e.splice(t ? n : n + 1, 0, o), !0;
685
686
  }
686
- function Na(e, r, a, t) {
687
+ function _a(e, r, a, t) {
687
688
  const i = e.find((l) => l.id === a), o = r.find((l) => l.id === t);
688
689
  if (!i || !o || i.layerId === t) return null;
689
690
  const n = i.layerId;
690
691
  return i.layerId = t, { feicao: i, camadaOrigemId: n, camadaDestinoId: t, mudouDeCamada: !0 };
691
692
  }
692
- function Ha(e, r, a, t) {
693
+ function Ua(e, r, a, t) {
693
694
  if (!r || !a || r === a) return null;
694
695
  const i = e.findIndex((u) => u.id === r);
695
696
  if (i === -1) return null;
@@ -700,7 +701,7 @@ function Ha(e, r, a, t) {
700
701
  const p = e.findIndex((u) => u.id === a);
701
702
  return p === -1 ? e.push(n) : e.splice(t ? p : p + 1, 0, n), { feicao: n, camadaOrigemId: l, camadaDestinoId: c, mudouDeCamada: s };
702
703
  }
703
- function Ga(e) {
704
+ function Va(e) {
704
705
  const {
705
706
  camadas: r,
706
707
  feicoes: a,
@@ -716,7 +717,7 @@ function Ga(e) {
716
717
  limitesPorCamada: d,
717
718
  limiteFeicoesPorCamada: m = we,
718
719
  mostrarBotaoColapsar: f = !1
719
- } = e, g = (s || "").trim().toLowerCase(), v = Qe(r, a, g), y = /* @__PURE__ */ new Map();
720
+ } = e, g = (s || "").trim().toLowerCase(), v = Xe(r, a, g), y = /* @__PURE__ */ new Map();
720
721
  for (let E = 0; E < a.length; E++) {
721
722
  const x = a[E];
722
723
  if (!x || !x.id) continue;
@@ -725,11 +726,11 @@ function Ga(e) {
725
726
  }
726
727
  const k = se(r), M = r.every((E) => E.visible !== !1), S = r.length > 0 && r.every((E) => i.has(E.id)), w = u ? `
727
728
  <div class="ui-tree-search-wrapper" part="busca">
728
- <span class="ui-tree-search-icon">${h.busca}</span>
729
+ <span class="ui-tree-search-icon">${b.busca}</span>
729
730
  <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${z(
730
731
  s
731
732
  )}" />
732
- ${s ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${h.fechar}</button>` : ""}
733
+ ${s ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${b.fechar}</button>` : ""}
733
734
  </div>
734
735
  ` : "", L = `
735
736
  <div class="ui-tree-toolbar" part="toolbar">
@@ -739,32 +740,32 @@ function Ga(e) {
739
740
  </div>
740
741
  <div class="ui-tree-actions">
741
742
  <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${M ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${M ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
742
- ${M ? h.olhoAberto : h.olhoFechado}
743
+ ${M ? b.olhoAberto : b.olhoFechado}
743
744
  </button>
744
745
  <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${S ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${S ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
745
- <span class="ui-chevron-icon ${S ? "open" : ""}">${h.chevronDir}</span>
746
+ <span class="ui-chevron-icon ${S ? "open" : ""}">${b.chevronDir}</span>
746
747
  </button>
747
- ${f ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${h.recolherPainel}</button>` : ""}
748
+ ${f ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>` : ""}
748
749
  </div>
749
750
  </div>
750
751
  ${w}
751
- `, b = (E) => {
752
+ `, h = (E) => {
752
753
  const x = E.camada;
753
754
  if (v && !v.camadasVisiveis.has(x.id)) return "";
754
- const B = E.depth, D = E.subcamadas, ke = v ? D.filter((F) => v.camadasVisiveis.has(F.camada.id)) : D, G = !!(x.isGroup || D.length > 0), C = z(x.id), X = z(x.name || (G ? "Novo Grupo" : "Camada")), j = H(x.color, "#00E08A"), W = x.visible !== !1, J = x.locked === !0, Z = g ? !0 : i.has(x.id), le = n === x.id, ce = t === x.id, O = k.get(x.id), sa = (O == null ? void 0 : O.ocultaPorAncestral) === !0, la = (O == null ? void 0 : O.travadaPorAncestral) === !0, R = v ? v.feicoesPorCamada.get(x.id) || [] : y.get(x.id) || [], ee = v ? R : Q(r, a, x.id), Ie = ee.length > 0 && ee.every((F) => o.has(F.id)), ca = !Ie && ee.some((F) => o.has(F.id)), de = (d == null ? void 0 : d.get(x.id)) ?? m, da = R.slice(0, de), ua = R.length > de, pa = He(x, B, O), fa = da.map(
755
- (F) => Ke(F, pa, o.has(F.id), c === F.id)
756
- ).join(""), ma = ua ? _e(C, de, R.length) : "", Ce = Number(x.opacity ?? 1), Le = Number.isFinite(Ce) ? Math.min(1, Math.max(0, Ce)) : 1, ga = Math.round(Le * 100), va = r.filter((F) => F.id !== x.id && !U(r, F.id, x.id)).map(
755
+ const B = E.depth, P = E.subcamadas, ke = v ? P.filter((F) => v.camadasVisiveis.has(F.camada.id)) : P, G = !!(x.isGroup || P.length > 0), C = z(x.id), X = z(x.name || (G ? "Novo Grupo" : "Camada")), j = H(x.color, "#00E08A"), W = x.visible !== !1, J = x.locked === !0, Z = g ? !0 : i.has(x.id), le = n === x.id, ce = t === x.id, O = k.get(x.id), la = (O == null ? void 0 : O.ocultaPorAncestral) === !0, ca = (O == null ? void 0 : O.travadaPorAncestral) === !0, R = v ? v.feicoesPorCamada.get(x.id) || [] : y.get(x.id) || [], ee = v ? R : Q(r, a, x.id), Ie = ee.length > 0 && ee.every((F) => o.has(F.id)), da = !Ie && ee.some((F) => o.has(F.id)), de = (d == null ? void 0 : d.get(x.id)) ?? m, ua = R.slice(0, de), pa = R.length > de, fa = Ge(x, B, O), ma = ua.map(
756
+ (F) => Qe(F, fa, o.has(F.id), c === F.id)
757
+ ).join(""), ga = pa ? Ye(C, de, R.length) : "", Ce = Number(x.opacity ?? 1), Le = Number.isFinite(Ce) ? Math.min(1, Math.max(0, Ce)) : 1, va = Math.round(Le * 100), ha = r.filter((F) => F.id !== x.id && !U(r, F.id, x.id)).map(
757
758
  (F) => `<option value="${z(F.id)}" ${x.parentId === F.id ? "selected" : ""}>${F.isGroup ? "📁 " : ""}${z(F.name)}</option>`
758
759
  ).join(""), ba = le ? `
759
760
  <div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${j};">
760
761
  <div class="ui-drawer-header">
761
762
  <div class="ui-drawer-header-left">
762
- <span class="ui-drawer-icon">${h.engrenagem}</span>
763
+ <span class="ui-drawer-icon">${b.engrenagem}</span>
763
764
  <span class="ui-drawer-title">Configurações da Camada</span>
764
765
  <span class="ui-drawer-layer-chip" title="${X}">${X}</span>
765
766
  </div>
766
767
  <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${C}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
767
- ${h.fechar}
768
+ ${b.fechar}
768
769
  </button>
769
770
  </div>
770
771
 
@@ -778,7 +779,7 @@ function Ga(e) {
778
779
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
779
780
  <span class="ui-drawer-color-sample" id="sample-color-${C}" style="background-color: ${j};"></span>
780
781
  <span class="ui-drawer-color-hex" id="hex-color-${C}">${j.toUpperCase()}</span>
781
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Sa(j, "#00e08a")}" class="ui-drawer-color-native" />
782
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Fa(j, "#00e08a")}" class="ui-drawer-color-native" />
782
783
  </label>
783
784
  </div>
784
785
  </div>
@@ -787,7 +788,7 @@ function Ga(e) {
787
788
  <div class="ui-drawer-row">
788
789
  <div class="ui-drawer-row-label">
789
790
  <span>Opacidade</span>
790
- <span class="ui-drawer-badge" id="badge-op-${C}">${ga}%</span>
791
+ <span class="ui-drawer-badge" id="badge-op-${C}">${va}%</span>
791
792
  </div>
792
793
  <div class="ui-drawer-slider-container">
793
794
  <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(Le) || 0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
@@ -802,7 +803,7 @@ function Ga(e) {
802
803
  <div class="ui-drawer-select-wrapper">
803
804
  <select class="ui-drawer-select" data-layer-parent-select="${C}" aria-label="Grupo pai da camada">
804
805
  <option value="" ${x.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
805
- ${va}
806
+ ${ha}
806
807
  </select>
807
808
  </div>
808
809
  </div>
@@ -810,66 +811,66 @@ function Ga(e) {
810
811
 
811
812
  <div class="ui-drawer-footer">
812
813
  <div class="ui-drawer-meta-info">
813
- <span>${D.length > 0 ? `${D.length} subcamadas · ` : ""}${R.length} ${R.length === 1 ? "feição" : "feições"}</span>
814
+ <span>${P.length > 0 ? `${P.length} subcamadas · ` : ""}${R.length} ${R.length === 1 ? "feição" : "feições"}</span>
814
815
  </div>
815
816
  <div class="ui-drawer-actions">
816
817
  <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${C}" title="Adicionar nova camada dentro desta">
817
- ${h.mais} Subcamada
818
+ ${b.mais} Subcamada
818
819
  </button>
819
820
  <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${C}" title="Excluir esta camada e suas feições">
820
- ${h.lixeira}
821
+ ${b.lixeira}
821
822
  <span class="ui-btn-label">Excluir</span>
822
823
  </button>
823
824
  </div>
824
825
  </div>
825
826
  </div>
826
- ` : "", ha = ke.map((F) => b(F)).join("");
827
+ ` : "", ya = ke.map((F) => h(F)).join("");
827
828
  return `
828
829
  <div class="ui-layer-group ${B > 0 ? "is-sublayer-group" : ""}" data-layer-id="${C}" data-layer-depth="${B}" role="treeitem" aria-level="${B + 1}" aria-expanded="${Z}" part="grupo" style="--layer-active-color: ${j};">
829
- <div class="ui-layer-row ${W ? "" : "hidden-layer"} ${ce ? "active-drawing-layer" : ""} ${B > 0 ? "is-sublayer" : ""} ${G ? "is-group-row" : ""} ${sa ? "herdado-oculto" : ""} ${la ? "herdado-travado" : ""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${ce ? "camada camada-ativa" : "camada"}" ${ce ? 'aria-current="true"' : ""} style="--layer-depth: ${B};">
830
- <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${h.dragHandle}</div>
830
+ <div class="ui-layer-row ${W ? "" : "hidden-layer"} ${ce ? "active-drawing-layer" : ""} ${B > 0 ? "is-sublayer" : ""} ${G ? "is-group-row" : ""} ${la ? "herdado-oculto" : ""} ${ca ? "herdado-travado" : ""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${ce ? "camada camada-ativa" : "camada"}" ${ce ? 'aria-current="true"' : ""} style="--layer-depth: ${B};">
831
+ <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${b.dragHandle}</div>
831
832
 
832
833
  <div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${W ? "Ocultar Camada" : "Exibir Camada"}" title="${W ? "Ocultar Camada" : "Exibir Camada"}">
833
- ${W ? h.olhoAberto : h.olhoFechado}
834
+ ${W ? b.olhoAberto : b.olhoFechado}
834
835
  </div>
835
836
 
836
837
  <div class="ui-col ui-col-lock ${J ? "" : "ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${J ? "Desbloquear Camada" : "Bloquear Camada"}" title="${J ? "Desbloquear Camada" : "Bloquear Camada"}">
837
- ${J ? h.cadeadoTrancado : h.cadeadoAberto}
838
+ ${J ? b.cadeadoTrancado : b.cadeadoAberto}
838
839
  </div>
839
840
 
840
841
  <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" role="button" tabindex="0" style="background: ${j};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
841
842
 
842
843
  <div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${Z ? "Recolher grupo" : "Expandir grupo"}">
843
- <span class="ui-chevron-icon ${Z ? "open" : ""}">${h.chevronDir}</span>
844
+ <span class="ui-chevron-icon ${Z ? "open" : ""}">${b.chevronDir}</span>
844
845
  </div>
845
846
 
846
847
  <div class="ui-col ui-col-name" data-layer-name-trigger="${C}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
847
- ${l === x.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${X}" />` : `${G ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${h.moverPasta}</span>` : ""}
848
+ ${l === x.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${X}" />` : `${G ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${b.moverPasta}</span>` : ""}
848
849
  <span class="ui-name-text">${X}</span>
849
- ${Ve(ee.length, R.length, D.length, G)}`}
850
+ ${Ue(ee.length, R.length, P.length, G)}`}
850
851
  </div>
851
852
 
852
853
  <div class="ui-col ui-col-actions">
853
- <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${h.alvoEnquadrar}</button>
854
- <button class="ui-micro-btn ${le ? "active" : ""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${le}">${h.engrenagem}</button>
854
+ <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
855
+ <button class="ui-micro-btn ${le ? "active" : ""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${le}">${b.engrenagem}</button>
855
856
  </div>
856
857
 
857
858
  <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">
858
- <div class="ui-target-circle ${Ie ? "selected" : ca ? "partial" : ""}"></div>
859
+ <div class="ui-target-circle ${Ie ? "selected" : da ? "partial" : ""}"></div>
859
860
  </div>
860
861
  </div>
861
862
 
862
863
  ${ba}
863
864
 
864
865
  <div class="ui-children-container ${B > 0 ? "is-subchildren" : ""}" role="group" style="display: ${Z ? "block" : "none"};">
865
- ${ha}
866
- ${fa}
866
+ ${ya}
867
867
  ${ma}
868
- ${ke.length === 0 && R.length === 0 ? Ye(G) : ""}
868
+ ${ga}
869
+ ${ke.length === 0 && R.length === 0 ? Ke(G) : ""}
869
870
  </div>
870
871
  </div>
871
872
  `;
872
- }, $ = ne(r), I = v && v.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${z((s || "").trim())}”</div>` : $.map((E) => b(E)).join("");
873
+ }, $ = ne(r), I = v && v.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${z((s || "").trim())}”</div>` : $.map((E) => h(E)).join("");
873
874
  return `
874
875
  ${L}
875
876
  <div class="ui-panel-box">
@@ -879,7 +880,7 @@ function Ga(e) {
879
880
  </div>
880
881
  `;
881
882
  }
882
- function Va(e) {
883
+ function Ya(e) {
883
884
  return [
884
885
  {
885
886
  gatilho: "data-layer-name-trigger",
@@ -909,8 +910,8 @@ function Va(e) {
909
910
  }
910
911
  ];
911
912
  }
912
- function Me(e, r, a = r) {
913
- for (const t of Va(e))
913
+ function Fe(e, r, a = r) {
914
+ for (const t of Ya(e))
914
915
  a.querySelectorAll(`[${t.gatilho}]`).forEach((i) => {
915
916
  i.addEventListener("dblclick", (o) => {
916
917
  o.stopPropagation();
@@ -937,8 +938,8 @@ function Me(e, r, a = r) {
937
938
  });
938
939
  });
939
940
  }
940
- const Ua = ["dragging", "drop-above", "drop-below", "drop-into"];
941
- class _a {
941
+ const Ka = ["dragging", "drop-above", "drop-below", "drop-into"];
942
+ class Qa {
942
943
  constructor(r, a) {
943
944
  A(this, "host");
944
945
  A(this, "shadow");
@@ -964,11 +965,11 @@ class _a {
964
965
  (r = this.cancelarToque) == null || r.call(this), this.cancelarToque = null;
965
966
  }
966
967
  bindInlineRename() {
967
- Me(this.host, this.shadow);
968
+ Fe(this.host, this.shadow);
968
969
  }
969
970
  limparClassesDeArraste() {
970
971
  this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((r) => {
971
- r.classList.remove(...Ua);
972
+ r.classList.remove(...Ka);
972
973
  });
973
974
  }
974
975
  /** Depois de qualquer mudança na ordem/hierarquia de camadas. */
@@ -1001,7 +1002,7 @@ class _a {
1001
1002
  }
1002
1003
  /** Atualização incremental: liga renomear e arraste só nas linhas de feição novas dentro de `raiz`. */
1003
1004
  bindLinhasFeicao(r) {
1004
- Me(this.host, this.shadow, r), this.vincularArrasteFeicoes(r);
1005
+ Fe(this.host, this.shadow, r), this.vincularArrasteFeicoes(r);
1005
1006
  }
1006
1007
  vincularArrasteCamadas(r) {
1007
1008
  r.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((a) => {
@@ -1017,7 +1018,7 @@ class _a {
1017
1018
  const o = i;
1018
1019
  if (o.preventDefault(), o.stopPropagation(), o.dataTransfer && (o.dataTransfer.dropEffect = "move"), this.arraste.tipo === "layer") {
1019
1020
  if (this.arraste.camadaId === t) return;
1020
- const n = a.getBoundingClientRect(), l = Ra((o.clientY - n.top) / n.height);
1021
+ const n = a.getBoundingClientRect(), l = Na((o.clientY - n.top) / n.height);
1021
1022
  a.classList.toggle("drop-above", l === "acima"), a.classList.toggle("drop-below", l === "abaixo"), a.classList.toggle("drop-into", l === "dentro");
1022
1023
  } else this.arraste.tipo === "feature" && a.classList.add("drop-into");
1023
1024
  }), a.addEventListener("dragleave", (i) => {
@@ -1030,7 +1031,7 @@ class _a {
1030
1031
  const n = a.classList.contains("drop-into") ? "dentro" : a.classList.contains("drop-above") ? "acima" : "abaixo";
1031
1032
  if (this.limparClassesDeArraste(), this.arraste.tipo === "layer") {
1032
1033
  if (!this.arraste.camadaId || this.arraste.camadaId === t || !this.host.camadas.some((s) => s.id === this.arraste.camadaId) || !this.host.camadas.some((s) => s.id === t)) return;
1033
- const c = Oa(this.host.camadas, this.arraste.camadaId, t, n);
1034
+ const c = Ha(this.host.camadas, this.arraste.camadaId, t, n);
1034
1035
  (c == null ? void 0 : c.tipo) === "hierarquia" ? ((l = this.host.expandedLayers) == null || l.add(c.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1035
1036
  camadaId: c.camada.id,
1036
1037
  novoParentId: c.novoParentId,
@@ -1044,7 +1045,7 @@ class _a {
1044
1045
  }), this.aposReordenarCamadas();
1045
1046
  } else if (this.arraste.tipo === "feature") {
1046
1047
  if (!this.arraste.feicaoId || this.trocaEntreCamadasTravada(this.arraste.feicaoId, t)) return;
1047
- const c = Na(this.host.feicoes, this.host.camadas, this.arraste.feicaoId, t);
1048
+ const c = _a(this.host.feicoes, this.host.camadas, this.arraste.feicaoId, t);
1048
1049
  c && (this.emitirFeicaoMovida(c), this.host.solicitarRenderizacao());
1049
1050
  }
1050
1051
  }), a.addEventListener("dragend", () => {
@@ -1077,7 +1078,7 @@ class _a {
1077
1078
  n.preventDefault(), n.stopPropagation();
1078
1079
  const l = a.classList.contains("drop-above");
1079
1080
  if (this.limparClassesDeArraste(), this.trocaEntreCamadasTravada(this.arraste.feicaoId, i)) return;
1080
- const c = Ha(this.host.feicoes, this.arraste.feicaoId, t, l);
1081
+ const c = Ua(this.host.feicoes, this.arraste.feicaoId, t, l);
1081
1082
  c && (c.mudouDeCamada && this.emitirFeicaoMovida(c), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
1082
1083
  }), a.addEventListener("dragend", (o) => {
1083
1084
  o.stopPropagation(), this.arraste.tipo = null, this.arraste.feicaoId = null, this.arraste.camadaId = null, this.limparClassesDeArraste();
@@ -1113,7 +1114,7 @@ class _a {
1113
1114
  }, p = () => {
1114
1115
  s();
1115
1116
  const d = n == null ? void 0 : n.getAttribute("data-layer-id");
1116
- this.limparClassesDeArraste(), d && ja(this.host.camadas, t, d, l) && this.aposReordenarCamadas();
1117
+ this.limparClassesDeArraste(), d && Ga(this.host.camadas, t, d, l) && this.aposReordenarCamadas();
1117
1118
  };
1118
1119
  this.cancelarToque = () => {
1119
1120
  s(), this.limparClassesDeArraste();
@@ -1122,10 +1123,10 @@ class _a {
1122
1123
  });
1123
1124
  }
1124
1125
  }
1125
- const Ya = "ui_camadas_estado_";
1126
- function Ka(e, r) {
1126
+ const Xa = "ui_camadas_estado_";
1127
+ function Wa(e, r) {
1127
1128
  const a = (e || r || "default").trim();
1128
- return `${Ya}${a}`;
1129
+ return `${Xa}${a}`;
1129
1130
  }
1130
1131
  function ve(e) {
1131
1132
  return !!e && typeof e == "object" && !Array.isArray(e);
@@ -1133,19 +1134,19 @@ function ve(e) {
1133
1134
  function ae(e) {
1134
1135
  return Array.isArray(e) ? e.filter((r) => typeof r == "string") : [];
1135
1136
  }
1136
- function Fe(e) {
1137
+ function ze(e) {
1137
1138
  if (!ve(e)) return;
1138
1139
  const r = {};
1139
1140
  return typeof e.name == "string" && (r.name = e.name), typeof e.visible == "boolean" && (r.visible = e.visible), typeof e.locked == "boolean" && (r.locked = e.locked), typeof e.opacity == "number" && Number.isFinite(e.opacity) && e.opacity >= 0 && e.opacity <= 1 && (r.opacity = e.opacity), typeof e.color == "string" && (r.color = e.color), (typeof e.parentId == "string" || e.parentId === null) && (r.parentId = e.parentId), r;
1140
1141
  }
1141
- function Qa(e) {
1142
+ function Ja(e) {
1142
1143
  if (!ve(e)) return null;
1143
1144
  const r = {};
1144
1145
  if (ve(e.camadasOverrides))
1145
1146
  for (const [t, i] of Object.entries(e.camadasOverrides)) {
1146
- const o = Fe(i);
1147
+ const o = ze(i);
1147
1148
  if (!o) continue;
1148
- const n = Fe(i.origem);
1149
+ const n = ze(i.origem);
1149
1150
  r[t] = n ? { ...o, origem: n } : o;
1150
1151
  }
1151
1152
  const a = e.altura;
@@ -1164,18 +1165,18 @@ function Qa(e) {
1164
1165
  ultimaAtualizacao: typeof e.ultimaAtualizacao == "number" ? e.ultimaAtualizacao : void 0
1165
1166
  };
1166
1167
  }
1167
- function be(e) {
1168
+ function he(e) {
1168
1169
  if (typeof window > "u" || typeof localStorage > "u")
1169
1170
  return null;
1170
1171
  try {
1171
1172
  const r = localStorage.getItem(e);
1172
- return r ? Qa(JSON.parse(r)) : null;
1173
+ return r ? Ja(JSON.parse(r)) : null;
1173
1174
  } catch (r) {
1174
1175
  console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`, r);
1175
1176
  }
1176
1177
  return null;
1177
1178
  }
1178
- function Xa(e, r) {
1179
+ function Za(e, r) {
1179
1180
  if (!(typeof window > "u" || typeof localStorage > "u"))
1180
1181
  try {
1181
1182
  localStorage.setItem(e, JSON.stringify(r));
@@ -1183,14 +1184,14 @@ function Xa(e, r) {
1183
1184
  console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
1184
1185
  }
1185
1186
  }
1186
- function Wa(e) {
1187
+ function er(e) {
1187
1188
  if (!(typeof window > "u" || typeof localStorage > "u"))
1188
1189
  try {
1189
1190
  localStorage.removeItem(e);
1190
1191
  } catch {
1191
1192
  }
1192
1193
  }
1193
- function We(e) {
1194
+ function Je(e) {
1194
1195
  return {
1195
1196
  name: e.name,
1196
1197
  visible: e.visible !== !1,
@@ -1200,13 +1201,13 @@ function We(e) {
1200
1201
  parentId: e.parentId !== void 0 ? e.parentId : null
1201
1202
  };
1202
1203
  }
1203
- function Ja(e, r, a, t) {
1204
+ function ar(e, r, a, t) {
1204
1205
  var u;
1205
1206
  if (!Array.isArray(e)) return;
1206
1207
  const i = (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;
1207
1208
  for (let d = 0; d < e.length; d++) {
1208
1209
  const m = e[d], f = i[m.id];
1209
- if (t == null || t.set(m.id, We(m)), f) {
1210
+ if (t == null || t.set(m.id, Je(m)), f) {
1210
1211
  const g = f.origem, v = (y) => {
1211
1212
  var M;
1212
1213
  const k = (M = t == null ? void 0 : t.get(m.id)) == null ? void 0 : M[y];
@@ -1232,7 +1233,7 @@ function Ja(e, r, a, t) {
1232
1233
  });
1233
1234
  }
1234
1235
  }
1235
- function Za(e) {
1236
+ function rr(e) {
1236
1237
  const { estadoAnterior: r, camadas: a, expandedLayers: t } = e;
1237
1238
  let i = (r == null ? void 0 : r.expandedLayerIds) || [], o = (r == null ? void 0 : r.collapsedLayerIds) || [], n = (r == null ? void 0 : r.ordemCamadasIds) || [], l = r == null ? void 0 : r.ordemOrigemIds;
1238
1239
  const c = {
@@ -1266,25 +1267,25 @@ function Za(e) {
1266
1267
  ultimaAtualizacao: Date.now()
1267
1268
  };
1268
1269
  }
1269
- const er = `: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-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.ui-truncate-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;margin:4px 8px 6px;background:color-mix(in srgb,var(--ui-cor-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}`;
1270
- function ar(e, r) {
1270
+ const tr = `: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-degrade-interno, var(--ui-camadas-fundo, var(--ui-fundo-superficie, var(--ui-cor-superficie, #141417))));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-camadas-toggle-fundo, var(--ui-fundo-superficie, var(--ui-cor-superficie, #141417)));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-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;--_chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background:var(--_chevron) right 6px center / 10px no-repeat,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background:var(--_chevron) right 6px center / 10px no-repeat,var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-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-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.ui-truncate-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;margin:4px 8px 6px;background:color-mix(in srgb,var(--ui-cor-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}:host(.degrade),:host(.gradiente),:host([data-degrade]:not([data-degrade="false"])),.ui-camadas-container[data-degrade]:not([data-degrade=false]){--ui-camadas-fundo: var(--ui-gradiente-superficie);--ui-camadas-toggle-fundo: var(--ui-gradiente-superficie)}`;
1271
+ function ir(e, r) {
1271
1272
  r.querySelectorAll("[data-layer-row]").forEach((t) => {
1272
1273
  const o = t.getAttribute("data-layer-row") === e.camadaAtivaId;
1273
- t.classList.toggle("active-drawing-layer", o), qe(t, "camada-ativa", o), o ? t.setAttribute("aria-current", "true") : t.removeAttribute("aria-current");
1274
+ t.classList.toggle("active-drawing-layer", o), De(t, "camada-ativa", o), o ? t.setAttribute("aria-current", "true") : t.removeAttribute("aria-current");
1274
1275
  });
1275
1276
  }
1276
- function rr(e, r) {
1277
+ function or(e, r) {
1277
1278
  r.querySelectorAll(".ui-feat-row").forEach((a) => {
1278
1279
  const t = a.getAttribute("data-feat-row"), i = t ? e.selectedFeatureIds.has(t) : !1;
1279
- a.classList.toggle("selected-row", i), qe(a, "feicao-selecionada", i), a.setAttribute("aria-selected", String(i));
1280
+ a.classList.toggle("selected-row", i), De(a, "feicao-selecionada", i), a.setAttribute("aria-selected", String(i));
1280
1281
  const o = a.querySelector(".ui-target-circle");
1281
1282
  o && o.classList.toggle("selected", i);
1282
1283
  }), r.querySelectorAll(".ui-layer-group").forEach((a) => {
1283
1284
  const t = a.getAttribute("data-layer-id"), i = Q(e.camadas, e.feicoes, t ?? "");
1284
- Je(a.querySelector(".ui-layer-row .ui-target-circle"), i, e.selectedFeatureIds);
1285
- }), Ze(e, r);
1285
+ Ze(a.querySelector(".ui-layer-row .ui-target-circle"), i, e.selectedFeatureIds);
1286
+ }), ea(e, r);
1286
1287
  }
1287
- function Je(e, r, a) {
1288
+ function Ze(e, r, a) {
1288
1289
  if (!e) return;
1289
1290
  if (r.length === 0) {
1290
1291
  e.classList.remove("selected", "partial");
@@ -1293,10 +1294,10 @@ function Je(e, r, a) {
1293
1294
  const t = r.every((o) => a.has(o.id)), i = !t && r.some((o) => a.has(o.id));
1294
1295
  e.classList.toggle("selected", t), e.classList.toggle("partial", i);
1295
1296
  }
1296
- function Ze(e, r) {
1297
+ function ea(e, r) {
1297
1298
  const a = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id)), t = a.length > 0, i = r.getElementById("footer-count"), o = r.getElementById("footer-label");
1298
1299
  if (i && (i.textContent = String(t ? a.length : e.camadas.length)), o) {
1299
- const u = je(e.camadas.length, a.length);
1300
+ const u = Ne(e.camadas.length, a.length);
1300
1301
  o.innerHTML = u.icone, o.title = u.texto, o.setAttribute("aria-label", u.texto);
1301
1302
  }
1302
1303
  const n = r.querySelector(".ui-tree-footer");
@@ -1313,7 +1314,7 @@ function Ze(e, r) {
1313
1314
  const p = r.getElementById("select-footer-move");
1314
1315
  p && (p.disabled = !t);
1315
1316
  }
1316
- function ze(e, r) {
1317
+ function Be(e, r) {
1317
1318
  const a = se(e.camadas), t = new Map(e.camadas.map((o) => [o.id, o]));
1318
1319
  r.querySelectorAll(".ui-layer-row").forEach((o) => {
1319
1320
  const n = a.get(o.getAttribute("data-layer-row") || "");
@@ -1326,13 +1327,13 @@ function ze(e, r) {
1326
1327
  const s = o.querySelector("[data-feat-lock]"), p = i.get(o.getAttribute("data-feat-row") || "");
1327
1328
  if (!s || !p) return;
1328
1329
  const u = (l == null ? void 0 : l.locked) === !0 || (c == null ? void 0 : c.travadaPorAncestral) === !0, d = p.locked === !0 || u;
1329
- s.innerHTML = d ? h.cadeadoTrancado : h.cadeadoAberto, s.classList.toggle("ui-lock-open", !d), u ? s.setAttribute("data-locked-by-layer", "true") : s.removeAttribute("data-locked-by-layer"), P(
1330
+ s.innerHTML = d ? b.cadeadoTrancado : b.cadeadoAberto, s.classList.toggle("ui-lock-open", !d), u ? s.setAttribute("data-locked-by-layer", "true") : s.removeAttribute("data-locked-by-layer"), D(
1330
1331
  s,
1331
1332
  u ? "Bloqueada pela camada" : d ? "Desbloquear Feição" : "Bloquear Feição"
1332
1333
  );
1333
1334
  });
1334
1335
  }
1335
- function tr(e, r) {
1336
+ function nr(e, r) {
1336
1337
  r.querySelectorAll("[data-layer-row]").forEach((i) => {
1337
1338
  i.addEventListener("click", (o) => {
1338
1339
  if (o.target.closest(
@@ -1354,7 +1355,7 @@ function tr(e, r) {
1354
1355
  const p = l.querySelector(".ui-children-container");
1355
1356
  p && (p.style.display = s ? "block" : "none");
1356
1357
  }
1357
- P(i, s ? "Recolher grupo" : "Expandir grupo"), ir(e, r), e.salvarLembrancaEstado();
1358
+ D(i, s ? "Recolher grupo" : "Expandir grupo"), sr(e, r), e.salvarLembrancaEstado();
1358
1359
  });
1359
1360
  }), r.querySelectorAll("[data-layer-eye]").forEach((i) => {
1360
1361
  i.addEventListener("click", (o) => {
@@ -1363,9 +1364,9 @@ function tr(e, r) {
1363
1364
  if (l) {
1364
1365
  l.visible = l.visible === !1;
1365
1366
  const c = l.visible !== !1;
1366
- i.innerHTML = c ? h.olhoAberto : h.olhoFechado, P(i, c ? "Ocultar Camada" : "Exibir Camada");
1367
+ i.innerHTML = c ? b.olhoAberto : b.olhoFechado, D(i, c ? "Ocultar Camada" : "Exibir Camada");
1367
1368
  const s = i.closest(".ui-layer-row");
1368
- s && s.classList.toggle("hidden-layer", !c), or(e, r), ze(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1369
+ s && s.classList.toggle("hidden-layer", !c), lr(e, r), Be(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1369
1370
  camadaId: l.id,
1370
1371
  visivel: c
1371
1372
  });
@@ -1375,7 +1376,7 @@ function tr(e, r) {
1375
1376
  i.addEventListener("click", (o) => {
1376
1377
  o.stopPropagation();
1377
1378
  const n = i.getAttribute("data-layer-lock"), l = e.camadas.find((c) => c.id === n);
1378
- l && (l.locked = !l.locked, i.innerHTML = l.locked ? h.cadeadoTrancado : h.cadeadoAberto, i.classList.toggle("ui-lock-open", !l.locked), P(i, l.locked ? "Desbloquear Camada" : "Bloquear Camada"), ze(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1379
+ l && (l.locked = !l.locked, i.innerHTML = l.locked ? b.cadeadoTrancado : b.cadeadoAberto, i.classList.toggle("ui-lock-open", !l.locked), D(i, l.locked ? "Desbloquear Camada" : "Bloquear Camada"), Be(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1379
1380
  camadaId: l.id,
1380
1381
  bloqueado: l.locked
1381
1382
  }));
@@ -1429,7 +1430,7 @@ function tr(e, r) {
1429
1430
  const o = (n) => {
1430
1431
  n.stopPropagation();
1431
1432
  const l = i.getAttribute("data-layer-color"), c = e.camadas.find((s) => s.id === l);
1432
- !l || !c || Ea({
1433
+ !l || !c || Ca({
1433
1434
  ancora: i,
1434
1435
  titulo: `Cor · ${c.name || "Camada"}`,
1435
1436
  modo: "simples",
@@ -1504,7 +1505,7 @@ function tr(e, r) {
1504
1505
  const n = i.getAttribute("data-add-sublayer");
1505
1506
  e.dispararEvento("ui-camada-adicionar", { parentId: n });
1506
1507
  });
1507
- }), ea(e, r), r.querySelectorAll("[data-layer-target]").forEach((i) => {
1508
+ }), aa(e, r), r.querySelectorAll("[data-layer-target]").forEach((i) => {
1508
1509
  i.addEventListener("click", (o) => {
1509
1510
  o.stopPropagation();
1510
1511
  const n = o, l = i.getAttribute("data-layer-target");
@@ -1515,7 +1516,7 @@ function tr(e, r) {
1515
1516
  });
1516
1517
  });
1517
1518
  }
1518
- function ea(e, r) {
1519
+ function aa(e, r) {
1519
1520
  r.querySelectorAll("[data-layer-show-more]").forEach((a) => {
1520
1521
  a.addEventListener("click", (t) => {
1521
1522
  t.stopPropagation();
@@ -1524,22 +1525,22 @@ function ea(e, r) {
1524
1525
  });
1525
1526
  });
1526
1527
  }
1527
- function ir(e, r) {
1528
+ function sr(e, r) {
1528
1529
  const a = r.getElementById("btn-toggle-all-expand");
1529
1530
  if (!a) return;
1530
1531
  const t = e.camadas.length > 0 && e.camadas.every((o) => e.expandedLayers.has(o.id)), i = a.querySelector(".ui-chevron-icon");
1531
- i && i.classList.toggle("open", t), P(
1532
+ i && i.classList.toggle("open", t), D(
1532
1533
  a,
1533
1534
  t ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"
1534
1535
  );
1535
1536
  }
1536
- function or(e, r) {
1537
+ function lr(e, r) {
1537
1538
  const a = r.getElementById("btn-toggle-all-vis");
1538
1539
  if (!a) return;
1539
1540
  const t = e.camadas.every((i) => i.visible !== !1);
1540
- a.innerHTML = t ? h.olhoAberto : h.olhoFechado, P(a, t ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1541
+ a.innerHTML = t ? b.olhoAberto : b.olhoFechado, D(a, t ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1541
1542
  }
1542
- function nr(e, r) {
1543
+ function cr(e, r) {
1543
1544
  const a = r.getElementById("select-footer-move");
1544
1545
  a && a.addEventListener("change", (n) => {
1545
1546
  const l = n.target.value;
@@ -1582,8 +1583,8 @@ function nr(e, r) {
1582
1583
  const c = Array.from(e.selectedFeatureIds);
1583
1584
  if (c.length === 0) return;
1584
1585
  if (!o.classList.contains("confirming")) {
1585
- o.classList.add("confirming"), P(o, `Clique novamente para excluir ${c.length} selecionado(s)`), n = setTimeout(() => {
1586
- o.classList.remove("confirming"), P(o, l);
1586
+ o.classList.add("confirming"), D(o, `Clique novamente para excluir ${c.length} selecionado(s)`), n = setTimeout(() => {
1587
+ o.classList.remove("confirming"), D(o, l);
1587
1588
  }, 3500);
1588
1589
  return;
1589
1590
  }
@@ -1597,23 +1598,23 @@ function nr(e, r) {
1597
1598
  });
1598
1599
  }
1599
1600
  }
1600
- const sr = [
1601
+ const dr = [
1601
1602
  { tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
1602
1603
  { tipo: "olho", atributo: "data-feat-eye", entidade: "feicao" },
1603
1604
  { tipo: "cadeado", atributo: "data-layer-lock", entidade: "camada" },
1604
1605
  { tipo: "cadeado", atributo: "data-feat-lock", entidade: "feicao" },
1605
1606
  { tipo: "selecao", atributo: "data-layer-target", entidade: "camada" },
1606
1607
  { tipo: "selecao", atributo: "data-feat-target", entidade: "feicao" }
1607
- ], he = {
1608
+ ], be = {
1608
1609
  olho: "[data-layer-eye], [data-feat-eye]",
1609
1610
  cadeado: "[data-layer-lock], [data-feat-lock]",
1610
1611
  selecao: "[data-layer-target], [data-feat-target]"
1611
- }, lr = 3;
1612
- function cr(e) {
1613
- return sr.find((r) => e.hasAttribute(r.atributo)) ?? null;
1612
+ }, ur = 3;
1613
+ function pr(e) {
1614
+ return dr.find((r) => e.hasAttribute(r.atributo)) ?? null;
1614
1615
  }
1615
1616
  function ge(e, r) {
1616
- const a = cr(r);
1617
+ const a = pr(r);
1617
1618
  if (!a) return null;
1618
1619
  const t = r.getAttribute(a.atributo);
1619
1620
  if (!t) return null;
@@ -1633,7 +1634,7 @@ function ge(e, r) {
1633
1634
  );
1634
1635
  return i.length === 0 ? null : i.every((o) => e.selectedFeatureIds.has(o.id));
1635
1636
  }
1636
- function Be(e, r, a = !1) {
1637
+ function qe(e, r, a = !1) {
1637
1638
  e.dispatchEvent(
1638
1639
  new MouseEvent("click", {
1639
1640
  bubbles: !0,
@@ -1644,44 +1645,44 @@ function Be(e, r, a = !1) {
1644
1645
  );
1645
1646
  }
1646
1647
  let q = null;
1647
- function dr(e) {
1648
+ function fr(e) {
1648
1649
  (q == null ? void 0 : q.host) === e && q.cancelar();
1649
1650
  }
1650
- function aa(e, r, a = r) {
1651
- Object.keys(he).forEach((t) => {
1652
- a.querySelectorAll(he[t]).forEach((i) => {
1653
- i.addEventListener("pointerdown", (o) => ur(e, r, t, i, o));
1651
+ function ra(e, r, a = r) {
1652
+ Object.keys(be).forEach((t) => {
1653
+ a.querySelectorAll(be[t]).forEach((i) => {
1654
+ i.addEventListener("pointerdown", (o) => mr(e, r, t, i, o));
1654
1655
  });
1655
1656
  });
1656
1657
  }
1657
- function ur(e, r, a, t, i) {
1658
+ function mr(e, r, a, t, i) {
1658
1659
  if (i.pointerType === "mouse" && i.button !== 0 || e.editingLayerId || e.editingFeatureId || ge(e, t) === null) return;
1659
1660
  q == null || q.cancelar();
1660
- const o = he[a], n = i.ctrlKey || i.metaKey, l = i.shiftKey;
1661
+ const o = be[a], n = i.ctrlKey || i.metaKey, l = i.shiftKey;
1661
1662
  let c = !1, s = !1, p = i.clientY;
1662
1663
  const u = /* @__PURE__ */ new Set([t]), d = (w) => {
1663
1664
  w.preventDefault(), w.stopImmediatePropagation();
1664
1665
  }, m = (w) => {
1665
1666
  w.stopPropagation(), w.preventDefault();
1666
1667
  }, f = (w) => w.preventDefault(), g = (w) => {
1667
- u.has(w) || (u.add(w), ge(e, w) !== s && Be(w, a === "selecao"));
1668
+ u.has(w) || (u.add(w), ge(e, w) !== s && qe(w, a === "selecao"));
1668
1669
  }, v = () => {
1669
- c = !0, Be(t, n, l), s = ge(e, t) === !0, r.addEventListener("selectstart", f), document.body.style.userSelect = "none";
1670
+ c = !0, qe(t, n, l), s = ge(e, t) === !0, r.addEventListener("selectstart", f), document.body.style.userSelect = "none";
1670
1671
  }, y = (w) => {
1671
1672
  var I, E;
1672
1673
  if (!c) {
1673
- if (Math.hypot(w.clientX - i.clientX, w.clientY - i.clientY) < lr) return;
1674
+ if (Math.hypot(w.clientX - i.clientX, w.clientY - i.clientY) < ur) return;
1674
1675
  const x = (I = r.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : I.closest(o);
1675
1676
  if (!x || x === t) return;
1676
1677
  v();
1677
1678
  }
1678
1679
  w.preventDefault();
1679
- const L = Math.min(p, w.clientY), b = Math.max(p, w.clientY);
1680
+ const L = Math.min(p, w.clientY), h = Math.max(p, w.clientY);
1680
1681
  r.querySelectorAll(o).forEach((x) => {
1681
1682
  const B = x.getBoundingClientRect();
1682
1683
  if (B.height === 0) return;
1683
- const D = B.top + B.height / 2;
1684
- D >= L && D <= b && g(x);
1684
+ const P = B.top + B.height / 2;
1685
+ P >= L && P <= h && g(x);
1685
1686
  });
1686
1687
  const $ = (E = r.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : E.closest(o);
1687
1688
  $ && g($), p = w.clientY;
@@ -1690,7 +1691,7 @@ function ur(e, r, a, t, i) {
1690
1691
  }, M = () => k(), S = () => k(!0);
1691
1692
  q = { host: e, cancelar: S }, window.addEventListener("dragstart", d, !0), window.addEventListener("pointermove", y, { passive: !1 }), window.addEventListener("pointerup", M), window.addEventListener("pointercancel", M);
1692
1693
  }
1693
- function pr(e, r) {
1694
+ function gr(e, r) {
1694
1695
  const a = r.getElementById("btn-toggle-all-vis");
1695
1696
  a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
1696
1697
  const t = r.getElementById("btn-toggle-all-expand");
@@ -1698,15 +1699,15 @@ function pr(e, r) {
1698
1699
  o.stopPropagation(), e.camadas.length > 0 && e.camadas.every((l) => e.expandedLayers.has(l.id)) ? e.colapsarTodas() : e.expandirTodas();
1699
1700
  });
1700
1701
  const i = r.getElementById("btn-colapsar");
1701
- i && i.addEventListener("click", () => e.colapsar(!0)), fr(e, r);
1702
+ i && i.addEventListener("click", () => e.colapsar(!0)), vr(e, r);
1702
1703
  }
1703
- function fr(e, r) {
1704
+ function vr(e, r) {
1704
1705
  const a = r.getElementById("input-layer-search"), t = r.getElementById("btn-clear-layer-search"), i = () => {
1705
1706
  var o;
1706
1707
  e.searchQuery = "", e.solicitarRenderizacao(), (o = r.getElementById("input-layer-search")) == null || o.focus();
1707
1708
  };
1708
1709
  if (a) {
1709
- const o = Te(() => e.solicitarRenderizacao(), 75);
1710
+ const o = Re(() => e.solicitarRenderizacao(), 75);
1710
1711
  a.addEventListener("input", (n) => {
1711
1712
  e.searchQuery = n.target.value, o();
1712
1713
  }), a.addEventListener("keydown", (n) => {
@@ -1715,7 +1716,7 @@ function fr(e, r) {
1715
1716
  }
1716
1717
  t && t.addEventListener("click", i);
1717
1718
  }
1718
- function ra(e, r) {
1719
+ function ta(e, r) {
1719
1720
  r.querySelectorAll("[data-feat-select]").forEach((a) => {
1720
1721
  a.addEventListener("click", (t) => {
1721
1722
  if (e.editingFeatureId) return;
@@ -1740,7 +1741,7 @@ function ra(e, r) {
1740
1741
  if (o) {
1741
1742
  o.visible = o.visible === !1;
1742
1743
  const n = o.visible !== !1;
1743
- a.innerHTML = n ? h.olhoAberto : h.olhoFechado, P(a, n ? "Ocultar Feição" : "Exibir Feição");
1744
+ a.innerHTML = n ? b.olhoAberto : b.olhoFechado, D(a, n ? "Ocultar Feição" : "Exibir Feição");
1744
1745
  const l = a.closest(".ui-feat-row");
1745
1746
  l && l.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
1746
1747
  feicaoId: o.id,
@@ -1752,7 +1753,7 @@ function ra(e, r) {
1752
1753
  a.addEventListener("click", (t) => {
1753
1754
  if (t.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
1754
1755
  const i = a.getAttribute("data-feat-lock"), o = e.feicoes.find((n) => n.id === i);
1755
- o && (o.locked = !o.locked, a.innerHTML = o.locked ? h.cadeadoTrancado : h.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), P(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1756
+ 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", {
1756
1757
  feicaoId: o.id,
1757
1758
  bloqueado: o.locked
1758
1759
  }));
@@ -1765,14 +1766,14 @@ function ra(e, r) {
1765
1766
  });
1766
1767
  });
1767
1768
  }
1768
- function mr(e, r) {
1769
+ function hr(e, r) {
1769
1770
  var a;
1770
1771
  r.querySelectorAll("[data-basemap-thumb]").forEach((t) => {
1771
1772
  t.addEventListener(
1772
1773
  "error",
1773
1774
  () => {
1774
1775
  const i = document.createElement("div");
1775
- i.className = "ui-basemap-preview-none", i.innerHTML = h.mapa, t.replaceWith(i);
1776
+ i.className = "ui-basemap-preview-none", i.innerHTML = b.mapa, t.replaceWith(i);
1776
1777
  },
1777
1778
  { once: !0 }
1778
1779
  );
@@ -1785,10 +1786,10 @@ function mr(e, r) {
1785
1786
  });
1786
1787
  });
1787
1788
  }
1788
- function gr(e, r) {
1789
- pr(e, r), tr(e, r), ra(e, r), mr(e, r), nr(e, r), aa(e, r);
1789
+ function br(e, r) {
1790
+ gr(e, r), nr(e, r), ta(e, r), hr(e, r), cr(e, r), ra(e, r);
1790
1791
  }
1791
- function vr(e) {
1792
+ function yr(e) {
1792
1793
  if (!e.arvoreRenderizada) return { incremental: !1, motivo: "arvore-nao-renderizada" };
1793
1794
  if (e.buscaAtiva) return { incremental: !1, motivo: "busca-ativa" };
1794
1795
  if (e.editandoCamada || e.editandoFeicao) return { incremental: !1, motivo: "edicao-inline" };
@@ -1799,12 +1800,12 @@ function vr(e) {
1799
1800
  }
1800
1801
  return e.idsDuplicados ? { incremental: !1, motivo: "ids-duplicados" } : { incremental: !0 };
1801
1802
  }
1802
- function ta(e, r = /* @__PURE__ */ new Map()) {
1803
+ function ia(e, r = /* @__PURE__ */ new Map()) {
1803
1804
  for (const a of e)
1804
- r.set(a.camada.id, a), ta(a.subcamadas, r);
1805
+ r.set(a.camada.id, a), ia(a.subcamadas, r);
1805
1806
  return r;
1806
1807
  }
1807
- function br(e) {
1808
+ function xr(e) {
1808
1809
  const r = /* @__PURE__ */ new Map();
1809
1810
  for (let a = 0; a < e.length; a++) {
1810
1811
  const t = e[a];
@@ -1814,23 +1815,23 @@ function br(e) {
1814
1815
  }
1815
1816
  return r;
1816
1817
  }
1817
- function _(e, r) {
1818
+ function V(e, r) {
1818
1819
  for (let a = e.firstElementChild; a; a = a.nextElementSibling)
1819
1820
  if (a.classList.contains(r)) return a;
1820
1821
  return null;
1821
1822
  }
1822
- function hr(e) {
1823
+ function wr(e) {
1823
1824
  const r = /* @__PURE__ */ new Map(), a = (t) => {
1824
1825
  for (let i = t.firstElementChild; i && i.classList.contains("ui-layer-group"); i = i.nextElementSibling) {
1825
1826
  const o = i.getAttribute("data-layer-id");
1826
1827
  o !== null && r.set(o, i);
1827
- const n = _(i, "ui-children-container");
1828
+ const n = V(i, "ui-children-container");
1828
1829
  n && a(n);
1829
1830
  }
1830
1831
  };
1831
1832
  return a(e), r;
1832
1833
  }
1833
- function yr(e) {
1834
+ function Ar(e) {
1834
1835
  if (!e || e.length < 2) return !1;
1835
1836
  const r = /* @__PURE__ */ new Set();
1836
1837
  for (const a of e) {
@@ -1839,7 +1840,7 @@ function yr(e) {
1839
1840
  }
1840
1841
  return !1;
1841
1842
  }
1842
- function xr(e, r) {
1843
+ function Er(e, r) {
1843
1844
  var i;
1844
1845
  const a = new Map(r.map((o) => [o.id, o])), t = /* @__PURE__ */ new Set();
1845
1846
  for (const o of e) {
@@ -1858,107 +1859,107 @@ function oe(e) {
1858
1859
  const r = e.nextSibling;
1859
1860
  r && r.nodeType === 3 && !(r.textContent ?? "").trim() && ((a = r.parentNode) == null || a.removeChild(r)), e.remove();
1860
1861
  }
1861
- function wr(e, r) {
1862
+ function kr(e, r) {
1862
1863
  if (!e || !r.contains(e)) return null;
1863
1864
  const a = Array.from(e.attributes).find((t) => t.name.startsWith("data-") && t.value !== "");
1864
1865
  return a ? { nome: a.name, valor: a.value } : null;
1865
1866
  }
1866
- function Ar(e, r) {
1867
- const { host: a, shadow: t, mudanca: i } = e, o = e.grupos.get(r), n = e.nodos.get(r), l = o ? _(o, "ui-children-container") : null;
1867
+ function Ir(e, r) {
1868
+ const { host: a, shadow: t, mudanca: i } = e, o = e.grupos.get(r), n = e.nodos.get(r), l = o ? V(o, "ui-children-container") : null;
1868
1869
  if (!o || !n || !l) return !1;
1869
- const c = n.camada, s = e.porCamada.get(r) ?? [], p = a.expandedFeatureLimits.get(r) ?? we, u = s.slice(0, p), d = new Set(u.map((b) => b.id)), m = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), g = t.activeElement;
1870
+ const c = n.camada, s = e.porCamada.get(r) ?? [], p = a.expandedFeatureLimits.get(r) ?? we, u = s.slice(0, p), d = new Set(u.map((h) => h.id)), m = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), g = t.activeElement;
1870
1871
  let v = null;
1871
- for (let b = l.firstElementChild, $; b; b = $) {
1872
- $ = b.nextElementSibling;
1873
- const I = b.getAttribute("data-feat-row");
1872
+ for (let h = l.firstElementChild, $; h; h = $) {
1873
+ $ = h.nextElementSibling;
1874
+ const I = h.getAttribute("data-feat-row");
1874
1875
  if (I === null) {
1875
- !v && !b.classList.contains("ui-layer-group") && (v = b);
1876
+ !v && !h.classList.contains("ui-layer-group") && (v = h);
1876
1877
  continue;
1877
1878
  }
1878
1879
  const E = i.idsAlterados.has(I) && d.has(I) && !m.has(I);
1879
- !d.has(I) || m.has(I) || E ? (E && f.set(I, { tabindex: b.getAttribute("tabindex"), foco: wr(g, b) }), oe(b)) : (m.set(I, b), v || (v = b));
1880
+ !d.has(I) || m.has(I) || E ? (E && f.set(I, { tabindex: h.getAttribute("tabindex"), foco: kr(g, h) }), oe(h)) : (m.set(I, h), v || (v = h));
1880
1881
  }
1881
- const y = He(c, n.depth, e.herdado.get(r)), k = u.filter((b) => !m.has(b.id));
1882
+ const y = Ge(c, n.depth, e.herdado.get(r)), k = u.filter((h) => !m.has(h.id));
1882
1883
  let M = [];
1883
1884
  if (k.length > 0) {
1884
- const b = k.map(
1885
- (E) => Ke(E, y, a.selectedFeatureIds.has(E.id), a.editingFeatureId === E.id)
1886
- ).join(""), { modelo: $, elementos: I } = ie(b);
1885
+ const h = k.map(
1886
+ (E) => Qe(E, y, a.selectedFeatureIds.has(E.id), a.editingFeatureId === E.id)
1887
+ ).join(""), { modelo: $, elementos: I } = ie(h);
1887
1888
  if (I.length !== k.length) return !1;
1888
1889
  e.ligar($.content), M = I;
1889
1890
  }
1890
1891
  let S = v, w = 0;
1891
1892
  const L = /* @__PURE__ */ new Map();
1892
- for (const b of u) {
1893
- const $ = m.get(b.id);
1893
+ for (const h of u) {
1894
+ const $ = m.get(h.id);
1894
1895
  if ($)
1895
1896
  $ === S ? S = $.nextElementSibling : l.insertBefore($, S);
1896
1897
  else {
1897
1898
  const I = M[w++];
1898
- l.insertBefore(I, S), L.set(b.id, I);
1899
+ l.insertBefore(I, S), L.set(h.id, I);
1899
1900
  }
1900
1901
  }
1901
- return f.forEach((b, $) => {
1902
+ return f.forEach((h, $) => {
1902
1903
  const I = L.get($);
1903
- if (!I || (b.tabindex !== null && I.setAttribute("tabindex", b.tabindex), !b.foco)) return;
1904
- const E = I.getAttribute(b.foco.nome) === b.foco.valor ? I : Array.from(I.querySelectorAll(`[${b.foco.nome}]`)).find(
1905
- (x) => x.getAttribute(b.foco.nome) === b.foco.valor
1904
+ if (!I || (h.tabindex !== null && I.setAttribute("tabindex", h.tabindex), !h.foco)) return;
1905
+ const E = I.getAttribute(h.foco.nome) === h.foco.valor ? I : Array.from(I.querySelectorAll(`[${h.foco.nome}]`)).find(
1906
+ (x) => x.getAttribute(h.foco.nome) === h.foco.valor
1906
1907
  );
1907
1908
  E == null || E.focus({ preventScroll: !0 });
1908
- }), Er(e, l, n, p, s.length);
1909
+ }), Cr(e, l, n, p, s.length);
1909
1910
  }
1910
- function Er(e, r, a, t, i) {
1911
- const o = z(a.camada.id), n = !!(a.camada.isGroup || a.subcamadas.length > 0), l = i > t, c = a.subcamadas.length === 0 && i === 0, s = _(r, "ui-truncate-notice"), p = _(r, "ui-empty-row");
1911
+ function Cr(e, r, a, t, i) {
1912
+ const o = z(a.camada.id), n = !!(a.camada.isGroup || a.subcamadas.length > 0), l = i > t, c = a.subcamadas.length === 0 && i === 0, s = V(r, "ui-truncate-notice"), p = V(r, "ui-empty-row");
1912
1913
  if (p && !c && oe(p), s && !l && oe(s), l)
1913
1914
  if (s) {
1914
- const u = Ue(t, i), d = s.querySelector("span"), m = s.querySelector(".ui-truncate-more-btn");
1915
+ const u = Ve(t, i), d = s.querySelector("span"), m = s.querySelector(".ui-truncate-more-btn");
1915
1916
  if (!d || !m) return !1;
1916
1917
  d.textContent !== u.resumo && (d.textContent = u.resumo), m.textContent !== u.botao && (m.textContent = u.botao);
1917
1918
  } else {
1918
- const { modelo: u, elementos: d } = ie(_e(o, t, i));
1919
+ const { modelo: u, elementos: d } = ie(Ye(o, t, i));
1919
1920
  if (d.length !== 1) return !1;
1920
1921
  e.ligar(u.content), r.appendChild(d[0]);
1921
1922
  }
1922
1923
  if (c && !p) {
1923
- const { elementos: u } = ie(Ye(n));
1924
+ const { elementos: u } = ie(Ke(n));
1924
1925
  if (u.length !== 1) return !1;
1925
1926
  r.appendChild(u[0]);
1926
1927
  }
1927
1928
  return !0;
1928
1929
  }
1929
- function kr(e, r) {
1930
- const a = e.grupos.get(r), t = e.nodos.get(r), i = a ? _(a, "ui-layer-row") : null, o = i == null ? void 0 : i.querySelector(".ui-col-name");
1930
+ function Lr(e, r) {
1931
+ const a = e.grupos.get(r), t = e.nodos.get(r), i = a ? V(a, "ui-layer-row") : null, o = i == null ? void 0 : i.querySelector(".ui-col-name");
1931
1932
  if (!a || !t || !i || !o) return !1;
1932
1933
  const { host: n } = e, l = Q(n.camadas, n.feicoes, r), c = (e.porCamada.get(r) ?? []).length, s = t.subcamadas.length, p = !!(t.camada.isGroup || s > 0), u = o.querySelector(".ui-count-chip");
1933
1934
  if (u)
1934
1935
  if (l.length === 0 && p)
1935
1936
  oe(u);
1936
1937
  else {
1937
- const d = String(l.length), m = Ge(l.length, c, s);
1938
+ const d = String(l.length), m = _e(l.length, c, s);
1938
1939
  u.textContent !== d && (u.textContent = d), u.getAttribute("title") !== m && u.setAttribute("title", m);
1939
1940
  }
1940
1941
  else {
1941
- const d = Ve(l.length, c, s, p);
1942
+ const d = Ue(l.length, c, s, p);
1942
1943
  if (d) {
1943
1944
  const { elementos: m } = ie(d);
1944
1945
  if (m.length !== 1) return !1;
1945
1946
  o.appendChild(m[0]);
1946
1947
  }
1947
1948
  }
1948
- return Je(i.querySelector(".ui-target-circle"), l, n.selectedFeatureIds), !0;
1949
+ return Ze(i.querySelector(".ui-target-circle"), l, n.selectedFeatureIds), !0;
1949
1950
  }
1950
- function Ir(e, r, a, t) {
1951
- const i = r.getElementById("ui-layer-tree-mount"), o = ta(ne(e.camadas)), n = i ? hr(i) : /* @__PURE__ */ new Map(), l = br(e.feicoes), c = a.camadas === "todas" ? Array.from(o.keys()) : Array.from(a.camadas), s = c.map((d) => ({
1951
+ function Sr(e, r, a, t) {
1952
+ const i = r.getElementById("ui-layer-tree-mount"), o = ia(ne(e.camadas)), n = i ? wr(i) : /* @__PURE__ */ new Map(), l = xr(e.feicoes), c = a.camadas === "todas" ? Array.from(o.keys()) : Array.from(a.camadas), s = c.map((d) => ({
1952
1953
  existeNoModelo: o.has(d),
1953
1954
  renderizadaNoDom: n.has(d),
1954
1955
  drawerAberto: e.activeSettingsLayerId === d
1955
1956
  }));
1956
- if (!vr({
1957
+ if (!yr({
1957
1958
  arvoreRenderizada: i !== null,
1958
1959
  buscaAtiva: (e.searchQuery || "").trim() !== "",
1959
1960
  editandoCamada: e.editingLayerId !== null,
1960
1961
  editandoFeicao: e.editingFeatureId !== null,
1961
- idsDuplicados: c.some((d) => yr(l.get(d))),
1962
+ idsDuplicados: c.some((d) => Ar(l.get(d))),
1962
1963
  camadasAfetadas: s
1963
1964
  }).incremental) return !1;
1964
1965
  const u = {
@@ -1972,19 +1973,19 @@ function Ir(e, r, a, t) {
1972
1973
  ligar: t
1973
1974
  };
1974
1975
  for (const d of c)
1975
- if (!Ar(u, d)) return !1;
1976
- for (const d of xr(c, e.camadas))
1977
- if (!kr(u, d)) return !1;
1978
- return (a.selecaoAfetada || e.selectedFeatureIds.size > 0) && Ze(e, r), !0;
1976
+ if (!Ir(u, d)) return !1;
1977
+ for (const d of Er(c, e.camadas))
1978
+ if (!Lr(u, d)) return !1;
1979
+ return (a.selecaoAfetada || e.selectedFeatureIds.size > 0) && ea(e, r), !0;
1979
1980
  }
1980
- function Cr(e) {
1981
+ function $r(e) {
1981
1982
  if (!e.isConnected) return;
1982
1983
  const r = document.createElement("div");
1983
- r.className = "ui-basemap-preview-none", r.innerHTML = h.gradeCad, e.replaceWith(r);
1984
+ r.className = "ui-basemap-preview-none", r.innerHTML = b.gradeCad, e.replaceWith(r);
1984
1985
  }
1985
- function Lr(e, r, a, t) {
1986
+ function Mr(e, r, a, t) {
1986
1987
  var g, v;
1987
- const i = Ga({
1988
+ const i = Va({
1988
1989
  camadas: e.camadas,
1989
1990
  feicoes: e.feicoes,
1990
1991
  camadaAtivaId: e.camadaAtivaId,
@@ -1998,7 +1999,7 @@ function Lr(e, r, a, t) {
1998
1999
  mostrarBusca: e.mostrarBusca,
1999
2000
  limitesPorCamada: e.expandedFeatureLimits,
2000
2001
  mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false"
2001
- }), o = e.mostrarMapasBase ? $a(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? za(e.camadas, e.feicoes, e.selectedFeatureIds) : "", l = r.getElementById("ui-layer-tree-mount"), c = a.scrollTop, s = l ? l.scrollTop : 0, p = r.activeElement, u = p && a.contains(p) ? p.id : "", d = p && !u && a.contains(p) ? Array.from(p.attributes).find((y) => y.name.startsWith("data-") && y.value !== "") : void 0, m = p && "selectionStart" in p ? p.selectionStart : null;
2002
+ }), o = e.mostrarMapasBase ? za(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? Da(e.camadas, e.feicoes, e.selectedFeatureIds) : "", l = r.getElementById("ui-layer-tree-mount"), c = a.scrollTop, s = l ? l.scrollTop : 0, p = r.activeElement, u = p && a.contains(p) ? p.id : "", d = p && !u && a.contains(p) ? Array.from(p.attributes).find((y) => y.name.startsWith("data-") && y.value !== "") : void 0, m = p && "selectionStart" in p ? p.selectionStart : null;
2002
2003
  a.innerHTML = `
2003
2004
  ${i}
2004
2005
  ${n}
@@ -2014,24 +2015,24 @@ function Lr(e, r, a, t) {
2014
2015
  }
2015
2016
  }
2016
2017
  !u && d && ((g = T(a, d.name, d.value)) == null || g.focus({ preventScroll: !0 })), (v = r.querySelector("[data-layer-row], [data-feat-row]")) == null || v.setAttribute("tabindex", "0"), a.querySelectorAll("img[data-basemap-thumb]").forEach((y) => {
2017
- const k = () => Cr(y);
2018
+ const k = () => $r(y);
2018
2019
  y.addEventListener("error", k, { once: !0 }), y.complete && y.naturalWidth === 0 && y.getAttribute("src") && k();
2019
- }), gr(e, r), t.bindAll();
2020
+ }), br(e, r), t.bindAll();
2020
2021
  }
2021
- function Sr(e, r, a, t) {
2022
+ function Fr(e, r, a, t) {
2022
2023
  try {
2023
- return Ir(e, r, t, (i) => {
2024
- ra(e, i), ea(e, i), aa(e, r, i), a.bindLinhasFeicao(i);
2024
+ return Sr(e, r, t, (i) => {
2025
+ ta(e, i), aa(e, i), ra(e, r, i), a.bindLinhasFeicao(i);
2025
2026
  });
2026
2027
  } catch (i) {
2027
2028
  return console.warn("[UI-Camadas] atualização incremental falhou; redesenhando o painel.", i), !1;
2028
2029
  }
2029
2030
  }
2030
- const $r = '[role="button"][tabindex]', Y = "[data-layer-row], [data-feat-row]", Mr = ["color", "range", "checkbox", "radio", "button"];
2031
- function ia(e) {
2032
- return !e || !(e instanceof Element) || e instanceof HTMLInputElement && Mr.includes(e.type) ? !1 : ka({ composedPath: () => [e] });
2031
+ const zr = '[role="button"][tabindex]', Y = "[data-layer-row], [data-feat-row]", Br = ["color", "range", "checkbox", "radio", "button"];
2032
+ function oa(e) {
2033
+ return !e || !(e instanceof Element) || e instanceof HTMLInputElement && Br.includes(e.type) ? !1 : La({ composedPath: () => [e] });
2033
2034
  }
2034
- function Fr(e) {
2035
+ function qr(e) {
2035
2036
  return Array.from(e.querySelectorAll(Y)).filter((r) => {
2036
2037
  const a = r.closest(".ui-children-container");
2037
2038
  return !(a && a.style.display === "none") && !r.classList.contains("ui-search-hidden");
@@ -2040,7 +2041,7 @@ function Fr(e) {
2040
2041
  function re(e, r) {
2041
2042
  r && (e.querySelectorAll(Y).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
2042
2043
  }
2043
- function zr(e, r) {
2044
+ function Dr(e, r) {
2044
2045
  e.dispatchEvent(
2045
2046
  new MouseEvent("click", {
2046
2047
  bubbles: !0,
@@ -2049,9 +2050,9 @@ function zr(e, r) {
2049
2050
  })
2050
2051
  );
2051
2052
  }
2052
- function Br(e, r, a) {
2053
+ function Pr(e, r, a) {
2053
2054
  var i;
2054
- if (ia(a.composedPath()[0])) return;
2055
+ if (oa(a.composedPath()[0])) return;
2055
2056
  const t = r.querySelector(".confirming");
2056
2057
  if (t) {
2057
2058
  a.preventDefault(), t.classList.remove("confirming");
@@ -2065,16 +2066,16 @@ function Br(e, r, a) {
2065
2066
  }
2066
2067
  e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
2067
2068
  }
2068
- function qr(e, r, a, t) {
2069
+ function Tr(e, r, a, t) {
2069
2070
  var l;
2070
2071
  const i = t.composedPath()[0];
2071
- if (!(i instanceof HTMLElement) || ia(i)) return;
2072
- if ((t.key === "Enter" || t.key === " ") && i.matches($r)) {
2072
+ if (!(i instanceof HTMLElement) || oa(i)) return;
2073
+ if ((t.key === "Enter" || t.key === " ") && i.matches(zr)) {
2073
2074
  t.preventDefault(), i.click();
2074
2075
  return;
2075
2076
  }
2076
2077
  if (!i.matches(Y)) return;
2077
- const o = Fr(r), n = o.indexOf(i);
2078
+ const o = qr(r), n = o.indexOf(i);
2078
2079
  if (t.key === "F2") {
2079
2080
  t.preventDefault();
2080
2081
  const c = i.getAttribute("data-layer-row"), s = i.getAttribute("data-feat-row"), p = c ? T(i, "data-layer-name-trigger", c) : s ? T(i, "data-feat-name-trigger", s) : null;
@@ -2083,7 +2084,7 @@ function qr(e, r, a, t) {
2083
2084
  }
2084
2085
  if ((t.ctrlKey || t.metaKey) && (t.key === "a" || t.key === "A")) {
2085
2086
  t.preventDefault();
2086
- const c = Xe(
2087
+ const c = We(
2087
2088
  e.camadas,
2088
2089
  e.feicoes,
2089
2090
  e.expandedLayers,
@@ -2124,20 +2125,20 @@ function qr(e, r, a, t) {
2124
2125
  }
2125
2126
  case "Enter":
2126
2127
  case " ":
2127
- t.preventDefault(), zr(i, t);
2128
+ t.preventDefault(), Dr(i, t);
2128
2129
  break;
2129
2130
  }
2130
2131
  }
2131
- function Pr(e, r, a, t, i) {
2132
+ function Rr(e, r, a, t, i) {
2132
2133
  i.add(r, "keydown", (o) => {
2133
- o.key === "Escape" && Br(e, a, o);
2134
- }), i.add(t, "keydown", (o) => qr(e, t, a, o)), i.add(t, "focusin", (o) => {
2134
+ o.key === "Escape" && Pr(e, a, o);
2135
+ }), i.add(t, "keydown", (o) => Tr(e, t, a, o)), i.add(t, "focusin", (o) => {
2135
2136
  const n = o.composedPath()[0];
2136
2137
  n instanceof HTMLElement && n.matches(Y) && (t.querySelectorAll(Y).forEach((l) => l.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
2137
2138
  });
2138
2139
  }
2139
- function Dr(e, r, a, t, i) {
2140
- const o = Xe(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !t && !o.includes(r) && e.feicoes.some((c) => c.id === r), l = Ta(
2140
+ function Or(e, r, a, t, i) {
2141
+ const o = We(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !t && !o.includes(r) && e.feicoes.some((c) => c.id === r), l = ja(
2141
2142
  n ? [...o, r] : o,
2142
2143
  e.selectedFeatureIds,
2143
2144
  e.lastClickedFeatureId,
@@ -2147,33 +2148,33 @@ function Dr(e, r, a, t, i) {
2147
2148
  );
2148
2149
  l && (e.selectedFeatureIds = l.selecionados, e.lastClickedFeatureId = l.ultimoClicadoId, e.sincronizarSelecaoDOM(), i && e.notificarMudancaSelecao());
2149
2150
  }
2150
- function Tr(e, r, a) {
2151
+ function jr(e, r, a) {
2151
2152
  const t = r || [];
2152
2153
  t.length === e.selectedFeatureIds.size && t.every((n) => e.selectedFeatureIds.has(n)) || (e.selectedFeatureIds.clear(), t.forEach((n) => e.selectedFeatureIds.add(n)), e.lastClickedFeatureId = t.length > 0 ? t[t.length - 1] : null, e.sincronizarSelecaoDOM(), a && e.notificarMudancaSelecao());
2153
2154
  }
2154
- function Rr(e, r) {
2155
+ function Nr(e, r) {
2155
2156
  e.selectedFeatureIds.size !== 0 && (e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.sincronizarSelecaoDOM(), r && e.notificarMudancaSelecao());
2156
2157
  }
2157
- function Or(e) {
2158
+ function Hr(e) {
2158
2159
  const r = e.feicoes.filter((a) => e.selectedFeatureIds.has(a.id));
2159
2160
  e.dispararEvento("ui-feicoes-selecionadas", {
2160
2161
  feicoesIds: Array.from(e.selectedFeatureIds),
2161
2162
  feicoes: r
2162
2163
  }), r.length === 1 ? e.dispararEvento("ui-feicao-selecionada", { feicaoId: r[0].id, feicao: r[0] }) : r.length === 0 && e.dispararEvento("ui-feicao-selecionada", { feicaoId: null, feicao: null });
2163
2164
  }
2164
- class jr {
2165
+ class Gr {
2165
2166
  constructor(r) {
2166
2167
  A(this, "origens", /* @__PURE__ */ new Map());
2167
2168
  A(this, "removidas", /* @__PURE__ */ new Set());
2168
- A(this, "salvarComDebounce", Te(() => this.salvar(), 200));
2169
+ A(this, "salvarComDebounce", Re(() => this.salvar(), 200));
2169
2170
  this.instantaneo = r;
2170
2171
  }
2171
2172
  chaveAtual() {
2172
2173
  const r = this.instantaneo();
2173
- return Ka(r.storageKey, r.id);
2174
+ return Wa(r.storageKey, r.id);
2174
2175
  }
2175
2176
  carregar() {
2176
- return be(this.chaveAtual());
2177
+ return he(this.chaveAtual());
2177
2178
  }
2178
2179
  /** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
2179
2180
  agendar() {
@@ -2182,8 +2183,8 @@ class jr {
2182
2183
  salvar() {
2183
2184
  const r = this.instantaneo();
2184
2185
  if (!r.persistir || !r.conectado) return;
2185
- const a = this.chaveAtual(), t = Za({
2186
- estadoAnterior: be(a),
2186
+ const a = this.chaveAtual(), t = rr({
2187
+ estadoAnterior: he(a),
2187
2188
  origensCamadas: this.origens,
2188
2189
  camadas: r.camadas,
2189
2190
  expandedLayers: r.expandedLayers,
@@ -2194,24 +2195,24 @@ class jr {
2194
2195
  altura: r.altura,
2195
2196
  camadasRemovidas: this.removidas
2196
2197
  });
2197
- this.removidas.clear(), Xa(a, t);
2198
+ this.removidas.clear(), Za(a, t);
2198
2199
  }
2199
2200
  limpar() {
2200
- Wa(this.chaveAtual());
2201
+ er(this.chaveAtual());
2201
2202
  }
2202
2203
  // --- Origens (como a camada chegou do consumidor) e remoções ---
2203
2204
  limparOrigens() {
2204
2205
  this.origens.clear();
2205
2206
  }
2206
2207
  registrarOrigem(r) {
2207
- this.origens.set(r.id, We(r));
2208
+ this.origens.set(r.id, Je(r));
2208
2209
  }
2209
2210
  esquecerCamada(r) {
2210
2211
  this.origens.delete(r), this.removidas.add(r);
2211
2212
  }
2212
2213
  /** Aplica por cima de `camadas` o que foi lembrado (expansão, visibilidade, travas, opacidade, cor, ordem). */
2213
2214
  reidratar(r, a, t) {
2214
- Ja(r, a, t, this.origens);
2215
+ ar(r, a, t, this.origens);
2215
2216
  }
2216
2217
  }
2217
2218
  function Ee(e, r = null, a = /* @__PURE__ */ new Set()) {
@@ -2227,11 +2228,11 @@ function Ee(e, r = null, a = /* @__PURE__ */ new Set()) {
2227
2228
  }
2228
2229
  return t;
2229
2230
  }
2230
- function oa(e) {
2231
+ function na(e) {
2231
2232
  const r = e.lastClickedFeatureId;
2232
2233
  r && !e.feicoes.some((a) => a.id === r) && (e.lastClickedFeatureId = null);
2233
2234
  }
2234
- function na(e) {
2235
+ function sa(e) {
2235
2236
  if (!Array.isArray(e)) return [];
2236
2237
  const r = /* @__PURE__ */ new Set(), a = [];
2237
2238
  for (const t of e) {
@@ -2241,7 +2242,7 @@ function na(e) {
2241
2242
  }
2242
2243
  return a;
2243
2244
  }
2244
- function Nr(e, r, a) {
2245
+ function _r(e, r, a) {
2245
2246
  if (e.camadas = Array.isArray(r) ? Ee(r) : [], e.lembranca.limparOrigens(), e.persistir) {
2246
2247
  const i = e.lembranca.carregar();
2247
2248
  e.lembranca.reidratar(e.camadas, i, e.expandedLayers), i != null && i.camadaAtivaId && e.camadas.some((o) => o.id === i.camadaAtivaId) && (e.camadaAtivaId = i.camadaAtivaId);
@@ -2250,35 +2251,35 @@ function Nr(e, r, a) {
2250
2251
  e.lembranca.registrarOrigem(i), e.expandedLayers.has(i.id) || e.expandedLayers.add(i.id);
2251
2252
  });
2252
2253
  if (Array.isArray(a)) {
2253
- e.feicoes = na(a);
2254
+ e.feicoes = sa(a);
2254
2255
  const i = new Set(e.camadas.map((n) => n.id)), o = e.feicoes.filter((n) => n.layerId && !i.has(n.layerId));
2255
2256
  o.length > 0 && console.warn(
2256
2257
  `[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
2257
2258
  o.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
2258
- ), Ae(e.selectedFeatureIds, e.feicoes), oa(e);
2259
+ ), Ae(e.selectedFeatureIds, e.feicoes), na(e);
2259
2260
  }
2260
2261
  const t = e.getAttribute("camada-ativa");
2261
2262
  e.camadas.length > 0 && (!t || !e.camadas.some((i) => i.id === t)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2262
2263
  }
2263
- function Hr(e, r) {
2264
+ function Ur(e, r) {
2264
2265
  const a = new Map(e.map((i) => [i.id, i])), t = /* @__PURE__ */ new Set();
2265
2266
  for (const i of r) {
2266
2267
  const o = a.get(i.id);
2267
- (!o || !Da(o, i)) && t.add(i.id);
2268
+ (!o || !Oa(o, i)) && t.add(i.id);
2268
2269
  }
2269
2270
  return t;
2270
2271
  }
2271
- function Gr(e, r) {
2272
+ function Vr(e, r) {
2272
2273
  const a = e.feicoes;
2273
- e.feicoes = na(r);
2274
+ e.feicoes = sa(r);
2274
2275
  const t = e.selectedFeatureIds.size;
2275
- Ae(e.selectedFeatureIds, e.feicoes), oa(e), e.solicitarAtualizacaoFeicoes({
2276
+ Ae(e.selectedFeatureIds, e.feicoes), na(e), e.solicitarAtualizacaoFeicoes({
2276
2277
  camadas: "todas",
2277
- idsAlterados: Hr(a, e.feicoes),
2278
+ idsAlterados: Ur(a, e.feicoes),
2278
2279
  selecaoAfetada: e.selectedFeatureIds.size !== t
2279
2280
  });
2280
2281
  }
2281
- function Vr(e, r) {
2282
+ function Yr(e, r) {
2282
2283
  if (!r || !r.id) return;
2283
2284
  if (e.camadas.some((t) => t.id === r.id)) {
2284
2285
  console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);
@@ -2294,13 +2295,13 @@ function Vr(e, r) {
2294
2295
  }
2295
2296
  e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2296
2297
  }
2297
- function Ur(e, r) {
2298
+ function Kr(e, r) {
2298
2299
  var a;
2299
2300
  e.camadas.forEach((t) => {
2300
2301
  t.parentId === r && (t.parentId = null);
2301
2302
  }), e.camadas = e.camadas.filter((t) => t.id !== r), e.feicoes = e.feicoes.filter((t) => t.layerId !== r), e.lembranca.esquecerCamada(r), e.expandedLayers.delete(r), e.activeSettingsLayerId === r && (e.activeSettingsLayerId = null), Ae(e.selectedFeatureIds, e.feicoes), e.selectedFeatureIds.size === 0 && (e.lastClickedFeatureId = null), e.camadaAtivaId === r && (e.camadaAtivaId = ((a = e.camadas[0]) == null ? void 0 : a.id) ?? null), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2302
2303
  }
2303
- function _r(e, r) {
2304
+ function Qr(e, r) {
2304
2305
  if (!(!r || !r.id)) {
2305
2306
  if (e.feicoes.some((a) => a.id === r.id)) {
2306
2307
  console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);
@@ -2313,7 +2314,7 @@ function _r(e, r) {
2313
2314
  });
2314
2315
  }
2315
2316
  }
2316
- function Yr(e, r) {
2317
+ function Xr(e, r) {
2317
2318
  if (!r || typeof r != "object" || !r.id) return;
2318
2319
  const a = e.feicoes.findIndex((t) => t.id === r.id);
2319
2320
  if (a !== -1) {
@@ -2325,7 +2326,7 @@ function Yr(e, r) {
2325
2326
  });
2326
2327
  }
2327
2328
  }
2328
- function Kr(e, r) {
2329
+ function Wr(e, r) {
2329
2330
  const a = e.feicoes.find((i) => i.id === r);
2330
2331
  e.feicoes = e.feicoes.filter((i) => i.id !== r);
2331
2332
  const t = e.selectedFeatureIds.delete(r);
@@ -2335,7 +2336,7 @@ function Kr(e, r) {
2335
2336
  selecaoAfetada: t
2336
2337
  });
2337
2338
  }
2338
- function Qr(e) {
2339
+ function Jr(e) {
2339
2340
  function t() {
2340
2341
  return e.getMinAltura ? e.getMinAltura() : 140;
2341
2342
  }
@@ -2421,11 +2422,11 @@ function Qr(e) {
2421
2422
  destruir: c
2422
2423
  };
2423
2424
  }
2424
- const N = class N extends wa {
2425
+ const N = class N extends Aa {
2425
2426
  constructor() {
2426
2427
  super();
2427
2428
  A(this, "shadow");
2428
- A(this, "listeners", new Aa());
2429
+ A(this, "listeners", new Ia());
2429
2430
  A(this, "dragDropManager");
2430
2431
  A(this, "resizerController");
2431
2432
  A(this, "alturaCustomizada", null);
@@ -2435,7 +2436,7 @@ const N = class N extends wa {
2435
2436
  /** Mudança de feições à espera do `render()` (consumida nele): permite atualizar só as linhas afetadas. */
2436
2437
  A(this, "mudancaFeicoes", null);
2437
2438
  /** @internal */
2438
- A(this, "lembranca", new jr(() => ({
2439
+ A(this, "lembranca", new Gr(() => ({
2439
2440
  persistir: this.persistir,
2440
2441
  conectado: this.conectado,
2441
2442
  storageKey: this.storageKey,
@@ -2451,7 +2452,7 @@ const N = class N extends wa {
2451
2452
  // Estado interno
2452
2453
  A(this, "camadas", []);
2453
2454
  A(this, "feicoes", []);
2454
- A(this, "mapasBase", [...Re]);
2455
+ A(this, "mapasBase", [...Oe]);
2455
2456
  A(this, "expandedLayers", /* @__PURE__ */ new Set());
2456
2457
  A(this, "expandedFeatureLimits", /* @__PURE__ */ new Map());
2457
2458
  A(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
@@ -2463,7 +2464,7 @@ const N = class N extends wa {
2463
2464
  A(this, "corpoElement");
2464
2465
  A(this, "btnExpandirFlutuante");
2465
2466
  this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
2466
- <style>${er}</style>
2467
+ <style>${tr}</style>
2467
2468
  <div class="ui-camadas-container" id="panel-container" part="base" role="region" aria-label="Painel de Camadas">
2468
2469
  <div class="ui-camadas-corpo" id="painel-corpo" part="corpo"></div>
2469
2470
  <div class="ui-camadas-resizer-altura" id="resizer-altura" part="resizer" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
@@ -2471,11 +2472,11 @@ const N = class N extends wa {
2471
2472
  </div>
2472
2473
  </div>
2473
2474
  <button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" part="botao-expandir" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
2474
- ${h.camadas}
2475
+ ${b.camadas}
2475
2476
  </button>
2476
- `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new _a(this, this.shadow);
2477
+ `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new Qa(this, this.shadow);
2477
2478
  const a = this.shadow.getElementById("resizer-altura");
2478
- this.resizerController = Qr({
2479
+ this.resizerController = Jr({
2479
2480
  hostElement: this,
2480
2481
  resizerElement: a,
2481
2482
  listeners: this.listeners,
@@ -2512,25 +2513,32 @@ const N = class N extends wa {
2512
2513
  "redimensionavel-altura",
2513
2514
  "altura",
2514
2515
  "min-altura",
2515
- "max-altura"
2516
+ "max-altura",
2517
+ ...Ea
2516
2518
  ];
2517
2519
  }
2518
2520
  connectedCallback() {
2519
2521
  if (this.persistir) {
2520
- const a = be(this.obterChaveStorageAtual());
2522
+ const a = he(this.obterChaveStorageAtual());
2521
2523
  a && (a.painelColapsado === !0 && !this.hasAttribute("colapsado") && (this.colapsado = !0), a.camadaAtivaId && !this.getAttribute("camada-ativa") && (this.camadaAtivaId = a.camadaAtivaId), a.mapaBaseAtivo && !this.getAttribute("mapa-base-ativo") && (this.mapaBaseAtivo = a.mapaBaseAtivo), a.densidade && !this.getAttribute("densidade") && (this.densidade = a.densidade), typeof a.altura == "number" && !this.getAttribute("altura") && !this.style.height && (this.resizerController.definirAltura(a.altura, !1), this.alturaCustomizada = a.altura));
2522
2524
  }
2523
2525
  this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (N.instanciasChavePadrao.size > 0 && console.warn(
2524
2526
  "[UI-Camadas] Mais de um painel sem 'id' nem 'storage-key' divide a mesma chave de persistência e um sobrescreve o estado do outro. Defina 'storage-key' (ou 'id') em cada um."
2525
- ), N.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), Pr(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
2527
+ ), N.instanciasChavePadrao.add(this)), this.resizerController.init(), Se(this, this.shadow.getElementById("panel-container")), this.render(), this.conectarEventosGerais(), Rr(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
2526
2528
  }
2527
2529
  disconnectedCallback() {
2528
2530
  var a, t;
2529
- this.conectado = !1, N.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (t = this.dragDropManager) == null || t.destruir(), dr(this), this.listeners.cleanup();
2531
+ this.conectado = !1, N.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (t = this.dragDropManager) == null || t.destruir(), fr(this), this.listeners.cleanup();
2530
2532
  }
2531
2533
  attributeChangedCallback(a, t, i) {
2532
2534
  var o, n;
2533
- t !== i && (a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "densidade" ? this.salvarLembrancaEstado() : a === "mapa-base-ativo" ? i && this.marcarMapaBaseAtivoNoDOM(i) : a === "titulo" || a === "mostrar-mapas-base" || a === "mapas-base-recolhido" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" ? (o = this.resizerController) == null || o.definirAltura(i, !1) : (a === "min-altura" || a === "max-altura") && this.alturaCustomizada !== null && ((n = this.resizerController) == null || n.definirAltura(this.alturaCustomizada, !1)));
2535
+ if (t !== i) {
2536
+ if (ka(a)) {
2537
+ Se(this, this.shadow.getElementById("panel-container"));
2538
+ return;
2539
+ }
2540
+ a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "densidade" ? this.salvarLembrancaEstado() : a === "mapa-base-ativo" ? i && this.marcarMapaBaseAtivoNoDOM(i) : a === "titulo" || a === "mostrar-mapas-base" || a === "mapas-base-recolhido" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" ? (o = this.resizerController) == null || o.definirAltura(i, !1) : (a === "min-altura" || a === "max-altura") && this.alturaCustomizada !== null && ((n = this.resizerController) == null || n.definirAltura(this.alturaCustomizada, !1));
2541
+ }
2534
2542
  }
2535
2543
  // --- Getters e Setters de Propriedades Reativas ---
2536
2544
  get titulo() {
@@ -2561,7 +2569,7 @@ const N = class N extends wa {
2561
2569
  i.classList.toggle("active", o), i.setAttribute("aria-pressed", String(o));
2562
2570
  });
2563
2571
  const t = this.shadow.querySelector("[data-basemap-atual]");
2564
- t && (t.textContent = Oe(this.mapasBase, a));
2572
+ t && (t.textContent = je(this.mapasBase, a));
2565
2573
  }
2566
2574
  /** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
2567
2575
  get mapasBaseRecolhido() {
@@ -2695,10 +2703,10 @@ const N = class N extends wa {
2695
2703
  this.definirMapasBase(a);
2696
2704
  }
2697
2705
  definirCamadas(a, t) {
2698
- Nr(this, a, t);
2706
+ _r(this, a, t);
2699
2707
  }
2700
2708
  definirFeicoes(a) {
2701
- Gr(this, a);
2709
+ Vr(this, a);
2702
2710
  }
2703
2711
  definirMapasBase(a) {
2704
2712
  this.mapasBase = Array.isArray(a) ? [...a] : [], this.solicitarRenderizacao();
@@ -2722,28 +2730,28 @@ const N = class N extends wa {
2722
2730
  return this.feicoes.filter((a) => this.selectedFeatureIds.has(a.id));
2723
2731
  }
2724
2732
  adicionarCamada(a) {
2725
- Vr(this, a);
2733
+ Yr(this, a);
2726
2734
  }
2727
2735
  removerCamada(a) {
2728
- Ur(this, a);
2736
+ Kr(this, a);
2729
2737
  }
2730
2738
  adicionarFeicao(a) {
2731
- _r(this, a);
2739
+ Qr(this, a);
2732
2740
  }
2733
2741
  atualizarFeicao(a) {
2734
- Yr(this, a);
2742
+ Xr(this, a);
2735
2743
  }
2736
2744
  removerFeicao(a) {
2737
- Kr(this, a);
2745
+ Wr(this, a);
2738
2746
  }
2739
2747
  selecionarFeicao(a, t = !1, i = !1, o = !1) {
2740
- Dr(this, a, t, i, o);
2748
+ Or(this, a, t, i, o);
2741
2749
  }
2742
2750
  selecionarFeicoes(a, t = !1) {
2743
- Tr(this, a, t);
2751
+ jr(this, a, t);
2744
2752
  }
2745
2753
  limparSelecao(a = !1) {
2746
- Rr(this, a);
2754
+ Nr(this, a);
2747
2755
  }
2748
2756
  expandirTodas() {
2749
2757
  this.expandedLayers = new Set(this.camadas.map((a) => a.id)), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
@@ -2821,7 +2829,7 @@ const N = class N extends wa {
2821
2829
  }
2822
2830
  render() {
2823
2831
  const a = this.mudancaFeicoes;
2824
- this.mudancaFeicoes = null, this.corpoElement && (a && Sr(this, this.shadow, this.dragDropManager, a) || Lr(this, this.shadow, this.corpoElement, this.dragDropManager));
2832
+ this.mudancaFeicoes = null, this.corpoElement && (a && Fr(this, this.shadow, this.dragDropManager, a) || Mr(this, this.shadow, this.corpoElement, this.dragDropManager));
2825
2833
  }
2826
2834
  // --- Conexão de Eventos ---
2827
2835
  conectarEventosGerais() {
@@ -2829,27 +2837,27 @@ const N = class N extends wa {
2829
2837
  }
2830
2838
  // --- Sincronização de DOM (delegada) ---
2831
2839
  sincronizarCamadaAtivaDOM() {
2832
- ar(this, this.shadow);
2840
+ ir(this, this.shadow);
2833
2841
  }
2834
2842
  sincronizarSelecaoDOM() {
2835
- rr(this, this.shadow);
2843
+ or(this, this.shadow);
2836
2844
  }
2837
2845
  // --- Auxiliares Internos ---
2838
2846
  notificarMudancaSelecao() {
2839
- Or(this);
2847
+ Hr(this);
2840
2848
  }
2841
2849
  };
2842
2850
  /** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
2843
2851
  A(N, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2844
2852
  let K = N;
2845
- class Xr extends K {
2853
+ class Zr extends K {
2846
2854
  }
2847
- class Wr extends K {
2855
+ class et extends K {
2848
2856
  }
2849
2857
  ye("ui-camadas", K);
2850
- ye("ui-painel-camadas", Xr);
2851
- ye("ui-layer-panel", Wr);
2852
- function nt(e) {
2858
+ ye("ui-painel-camadas", Zr);
2859
+ ye("ui-layer-panel", et);
2860
+ function dt(e) {
2853
2861
  var r;
2854
2862
  return {
2855
2863
  id: e.id,
@@ -2866,7 +2874,7 @@ function nt(e) {
2866
2874
  dados: e.dados
2867
2875
  };
2868
2876
  }
2869
- function st(e, r = "levantamento", a = "feicoes") {
2877
+ function ut(e, r = "levantamento", a = "feicoes") {
2870
2878
  return {
2871
2879
  id: e.id,
2872
2880
  nome: e.name,
@@ -2885,7 +2893,7 @@ function st(e, r = "levantamento", a = "feicoes") {
2885
2893
  dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
2886
2894
  };
2887
2895
  }
2888
- function lt(e, r = "") {
2896
+ function pt(e, r = "") {
2889
2897
  var o, n, l, c;
2890
2898
  const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", t = ((l = e.geometria) == null ? void 0 : l.coordenadas) || ((c = e.geometria) == null ? void 0 : c.coordinates) || e.coordinates, i = e.cor || e.color;
2891
2899
  return {
@@ -2904,43 +2912,43 @@ function lt(e, r = "") {
2904
2912
  };
2905
2913
  }
2906
2914
  export {
2907
- _a as CamadasDragDropManager,
2908
- h as ICONES,
2915
+ Qa as CamadasDragDropManager,
2916
+ b as ICONES,
2909
2917
  we as LIMITE_FEICOES_POR_CAMADA,
2910
- Re as MAPAS_BASE_PADRAO,
2918
+ Oe as MAPAS_BASE_PADRAO,
2911
2919
  K as UICamadas,
2912
- Wr as UILayerPanel,
2913
- ut as UIMapaBase,
2914
- Xr as UIPainelCamadas,
2915
- pt as UISeletorMapaBase,
2920
+ et as UILayerPanel,
2921
+ gt as UIMapaBase,
2922
+ Zr as UIPainelCamadas,
2923
+ vt as UISeletorMapaBase,
2916
2924
  ue as calcularAreaAnelSimples,
2917
- De as calcularAreaPoligono,
2925
+ Te as calcularAreaPoligono,
2918
2926
  Pe as calcularComprimentoLinha,
2919
- Ia as calcularDistanciaPontos,
2920
- Ta as calcularSelecaoFeicao,
2921
- be as carregarEstadoPersistido,
2927
+ Sa as calcularDistanciaPontos,
2928
+ ja as calcularSelecaoFeicao,
2929
+ he as carregarEstadoPersistido,
2922
2930
  ne as construirHierarquiaCamadas,
2923
- st as converterCamadaItemParaCanvasLayer,
2924
- nt as converterCanvasLayerParaCamadaItem,
2925
- lt as converterFeicaoParaItem,
2931
+ ut as converterCamadaItemParaCanvasLayer,
2932
+ dt as converterCanvasLayerParaCamadaItem,
2933
+ pt as converterFeicaoParaItem,
2926
2934
  z as escapeHtml,
2927
- Qe as filtrarCamadasPorBusca,
2935
+ Xe as filtrarCamadasPorBusca,
2928
2936
  te as filtrarFeicoesPorBusca,
2929
- ot as formatarMetricaFeicoes,
2930
- Fa as formatarOpcoesCamadasHierarquicas,
2931
- Ka as gerarChaveStorage,
2932
- Wa as limparEstadoPersistido,
2933
- Za as montarEstadoPersistido,
2934
- Oe as nomeDoMapaBase,
2935
- Qa as normalizarEstadoPersistido,
2936
- Xe as obterIdsVisiveisFeicoes,
2937
- Ja as reidratarCamadasComOverrides,
2937
+ ct as formatarMetricaFeicoes,
2938
+ qa as formatarOpcoesCamadasHierarquicas,
2939
+ Wa as gerarChaveStorage,
2940
+ er as limparEstadoPersistido,
2941
+ rr as montarEstadoPersistido,
2942
+ je as nomeDoMapaBase,
2943
+ Ja as normalizarEstadoPersistido,
2944
+ We as obterIdsVisiveisFeicoes,
2945
+ ar as reidratarCamadasComOverrides,
2938
2946
  Ae as removerSelecoesInvalidas,
2939
- Ga as renderizarArvoreCamadas,
2940
- $a as renderizarGridMapasBase,
2941
- za as renderizarRodapeAcoes,
2942
- qa as renderizarThumbGeometria,
2943
- je as rotuloRodape,
2944
- Xa as salvarEstadoPersistido,
2945
- We as snapshotCamada
2947
+ Va as renderizarArvoreCamadas,
2948
+ za as renderizarGridMapasBase,
2949
+ Da as renderizarRodapeAcoes,
2950
+ Ta as renderizarThumbGeometria,
2951
+ Ne as rotuloRodape,
2952
+ Za as salvarEstadoPersistido,
2953
+ Je as snapshotCamada
2946
2954
  };