@thibezer/ui-components-kit 2.9.0 → 2.10.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 (74) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/README.md +6 -3
  3. package/dist/camadas.cjs +53 -55
  4. package/dist/camadas.js +254 -242
  5. package/dist/campo-texto.cjs +1 -1
  6. package/dist/campo-texto.js +1 -1
  7. package/dist/canvas.cjs +54 -53
  8. package/dist/canvas.js +2074 -1907
  9. package/dist/card.cjs +1 -1
  10. package/dist/card.js +1 -1
  11. package/dist/components/ui-area-texto/area-texto-altura.d.ts +16 -0
  12. package/dist/components/ui-area-texto/area-texto-contador.d.ts +6 -0
  13. package/dist/components/ui-area-texto/area-texto-template.d.ts +2 -0
  14. package/dist/components/ui-area-texto/index.d.ts +3 -0
  15. package/dist/components/ui-area-texto/tipos.d.ts +19 -0
  16. package/dist/components/ui-area-texto/ui-area-texto.d.ts +100 -0
  17. package/dist/components/ui-campo-texto/campo-texto-estados.d.ts +5 -1
  18. package/dist/components/ui-campo-texto/ui-campo-texto.d.ts +1 -0
  19. package/dist/components/ui-canvas-cad/cad-acessibilidade.d.ts +7 -1
  20. package/dist/components/ui-canvas-cad/cad-recusas.d.ts +6 -0
  21. package/dist/components/ui-card/card-interacao.d.ts +17 -0
  22. package/dist/components/ui-card/card-secoes.d.ts +10 -0
  23. package/dist/components/ui-card/ui-card.d.ts +23 -0
  24. package/dist/components/ui-texto/ui-texto.d.ts +16 -0
  25. package/dist/core/alvo-digitavel.d.ts +5 -0
  26. package/dist/core/opcoes.d.ts +7 -0
  27. package/dist/cores.cjs +1 -1
  28. package/dist/cores.js +9 -8
  29. package/dist/custom-elements.json +18133 -15664
  30. package/dist/data.cjs +1 -1
  31. package/dist/data.js +1 -1
  32. package/dist/forms.cjs +1 -1
  33. package/dist/forms.d.ts +4 -0
  34. package/dist/forms.js +15 -12
  35. package/dist/gerencigeo-canvas/canvas_interacao.d.ts +2 -0
  36. package/dist/gerencigeo-canvas/feature_desenho.d.ts +13 -1
  37. package/dist/gerencigeo-canvas/feature_desenho_controle.d.ts +3 -0
  38. package/dist/gerencigeo-canvas/feature_edicao_ops.d.ts +9 -0
  39. package/dist/gerencigeo-canvas/feature_editor_vertices.d.ts +13 -2
  40. package/dist/gerencigeo-canvas/mapa_core.d.ts +4 -0
  41. package/dist/gerencigeo-canvas/popup_residual.d.ts +5 -0
  42. package/dist/index.cjs +1 -1
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.js +195 -191
  45. package/dist/opcoes-CupvWVIm.js +24 -0
  46. package/dist/opcoes-vdAUY5OI.cjs +1 -0
  47. package/dist/register.cjs +1 -1
  48. package/dist/register.js +9 -8
  49. package/dist/tipos-elementos.d.ts +74 -0
  50. package/dist/tipos-react.d.ts +4 -0
  51. package/dist/tipos-vue.d.ts +74 -0
  52. package/dist/{ui-badge-BWhoGgo9.js → ui-badge-B5J_c5P5.js} +1 -1
  53. package/dist/{ui-badge-SIR81R9l.cjs → ui-badge-DC4y6Dik.cjs} +1 -1
  54. package/dist/{ui-campo-texto-B_OHVGiN.js → ui-campo-texto-19tIrmBK.js} +91 -93
  55. package/dist/ui-campo-texto-CH8mzX61.cjs +16 -0
  56. package/dist/ui-card-0wu4rjEX.cjs +20 -0
  57. package/dist/ui-card-DRtpOo3l.js +143 -0
  58. package/dist/ui-controle-cores-BEUKOq4n.js +275 -0
  59. package/dist/ui-controle-cores-BLhrZHMh.cjs +32 -0
  60. package/dist/{ui-linha-BYAX4W6x.cjs → ui-linha-C306zxWG.cjs} +6 -6
  61. package/dist/{ui-linha-aqLlaYi7.js → ui-linha-C_azWkcG.js} +103 -99
  62. package/dist/ui-seletor-cor-2yGryC_Z.cjs +86 -0
  63. package/dist/ui-seletor-cor-BuyhoDZz.js +345 -0
  64. package/dist/{ui-switch-DO1R0Ce7.js → ui-switch-BL-x_-SM.js} +460 -173
  65. package/dist/ui-switch-C0i_3QXu.cjs +66 -0
  66. package/package.json +1 -1
  67. package/dist/opcoes-CJYLi6kd.js +0 -12
  68. package/dist/opcoes-CkyDxBuQ.cjs +0 -1
  69. package/dist/ui-campo-texto-DauJCde3.cjs +0 -16
  70. package/dist/ui-card-BNYCQ7g-.js +0 -119
  71. package/dist/ui-card-BrjBL-yo.cjs +0 -20
  72. package/dist/ui-controle-cores-DgEza3wF.js +0 -612
  73. package/dist/ui-controle-cores-uY__TgwW.cjs +0 -117
  74. package/dist/ui-switch-D9a8XlVX.cjs +0 -53
package/dist/camadas.js CHANGED
@@ -1,10 +1,11 @@
1
- var je = Object.defineProperty;
2
- var He = (e, r, a) => r in e ? je(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
3
- var E = (e, r, a) => He(e, typeof r != "symbol" ? r + "" : r, a);
1
+ var Oe = Object.defineProperty;
2
+ var je = (e, r, a) => r in e ? Oe(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
3
+ var A = (e, r, a) => je(e, typeof r != "symbol" ? r + "" : r, a);
4
4
  /* empty css */
5
- import { d as se, S as Ne } from "./ssr-safe-5cWfJP-s.js";
6
- import { L as Ge } from "./listener-bag-DQgv7OON.js";
7
- import { UIMapaBase as gr, UISeletorMapaBase as vr } from "./seletor-mapa-base.js";
5
+ import { d as ne, S as He } from "./ssr-safe-5cWfJP-s.js";
6
+ import { L as Ne } from "./listener-bag-DQgv7OON.js";
7
+ import { a as Ge } from "./ui-seletor-cor-BuyhoDZz.js";
8
+ import { UIMapaBase as vr, UISeletorMapaBase as br } from "./seletor-mapa-base.js";
8
9
  const v = {
9
10
  camadas: `<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
10
11
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
@@ -40,7 +41,7 @@ const v = {
40
41
  chevronDir: `<svg viewBox="0 0 24 24" width="10" height="10" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
41
42
  <polyline points="9 18 15 12 9 6"></polyline>
42
43
  </svg>`,
43
- dragHandle: `<svg viewBox="0 0 24 24" width="10" height="10" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round">
44
+ dragHandle: `<svg viewBox="5 3 14 18" width="7" height="9" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round">
44
45
  <line x1="8" y1="6" x2="8" y2="6.01"></line>
45
46
  <line x1="16" y1="6" x2="16" y2="6.01"></line>
46
47
  <line x1="8" y1="12" x2="8" y2="12.01"></line>
@@ -103,16 +104,16 @@ const v = {
103
104
  <line x1="9" y1="3" x2="9" y2="21"></line>
104
105
  <line x1="15" y1="3" x2="15" y2="21"></line>
105
106
  </svg>`
106
- }, ie = 6378137;
107
+ }, te = 6378137;
107
108
  function Ve(e, r) {
108
109
  if (!e || !r) return 0;
109
110
  const a = e[0] * Math.PI / 180, i = e[1] * Math.PI / 180, t = r[0] * Math.PI / 180, o = r[1] * Math.PI / 180, n = t - a, s = o - i, l = Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(t) * Math.sin(s / 2) * Math.sin(s / 2);
110
- return ie * 2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l));
111
+ return te * 2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l));
111
112
  }
112
- function xe(e) {
113
+ function be(e) {
113
114
  if (!Array.isArray(e) || e.length < 2) return 0;
114
115
  if (Array.isArray(e[0]) && Array.isArray(e[0][0]))
115
- return e.reduce((a, i) => a + xe(i), 0);
116
+ return e.reduce((a, i) => a + be(i), 0);
116
117
  let r = 0;
117
118
  for (let a = 0; a < e.length - 1; a++) {
118
119
  const i = e[a], t = e[a + 1];
@@ -120,7 +121,7 @@ function xe(e) {
120
121
  }
121
122
  return r;
122
123
  }
123
- function ee(e) {
124
+ function Z(e) {
124
125
  if (!Array.isArray(e)) return 0;
125
126
  const r = e.length;
126
127
  if (r < 3) return 0;
@@ -131,32 +132,32 @@ function ee(e) {
131
132
  const l = (n[1] - o[1]) * (Math.PI / 180), c = (n[0] - o[0]) * (Math.PI / 180), d = (s[1] - n[1]) * (Math.PI / 180), p = (s[0] - n[0]) * (Math.PI / 180);
132
133
  a += l * p - c * d;
133
134
  }
134
- const i = Math.abs(a * (ie * ie) / 2);
135
+ const i = Math.abs(a * (te * te) / 2);
135
136
  return isNaN(i) ? 0 : i;
136
137
  }
137
- function ye(e) {
138
+ function he(e) {
138
139
  if (!Array.isArray(e) || e.length === 0) return 0;
139
140
  if (Array.isArray(e[0]) && typeof e[0][0] == "number")
140
- return ee(e);
141
+ return Z(e);
141
142
  if (Array.isArray(e[0]) && Array.isArray(e[0][0])) {
142
143
  if (Array.isArray(e[0][0][0]))
143
- return e.reduce((i, t) => i + ye(t), 0);
144
- const r = ee(e[0]);
144
+ return e.reduce((i, t) => i + he(t), 0);
145
+ const r = Z(e[0]);
145
146
  let a = 0;
146
147
  for (let i = 1; i < e.length; i++)
147
- a += ee(e[i]);
148
+ a += Z(e[i]);
148
149
  return Math.max(0, r - a);
149
150
  }
150
151
  return 0;
151
152
  }
152
- function we(e) {
153
+ function xe(e) {
153
154
  if (!e || e.length === 0) return "";
154
155
  const r = e.filter(
155
156
  (i) => i.type === "Polygon" || i.type === "MultiPolygon" || i.geometryType === "Polygon"
156
157
  );
157
158
  if (r.length > 0) {
158
159
  const i = r.reduce(
159
- (t, o) => t + (ye(o.coordinates) || 0),
160
+ (t, o) => t + (he(o.coordinates) || 0),
160
161
  0
161
162
  );
162
163
  return i >= 1e4 ? `${(i / 1e4).toLocaleString("pt-BR", {
@@ -169,7 +170,7 @@ function we(e) {
169
170
  );
170
171
  if (a.length > 0) {
171
172
  const i = a.reduce(
172
- (t, o) => t + (xe(o.coordinates) || 0),
173
+ (t, o) => t + (be(o.coordinates) || 0),
173
174
  0
174
175
  );
175
176
  return i >= 1e3 ? `${(i / 1e3).toLocaleString("pt-BR", {
@@ -183,12 +184,12 @@ function S(e) {
183
184
  return e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
184
185
  }
185
186
  const Ue = /^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;
186
- function _(e, r = "#00E08A") {
187
+ function H(e, r = "#00E08A") {
187
188
  if (!e || typeof e != "string") return r;
188
189
  const a = e.trim();
189
190
  return Ue.test(a) ? a : r;
190
191
  }
191
- function ae(e) {
192
+ function ee(e) {
192
193
  return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
193
194
  }
194
195
  function Ye(e, r, a) {
@@ -207,7 +208,7 @@ function _e(e, r = "#000000") {
207
208
  const o = t[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
208
209
  if (o.length >= 3 && o.slice(0, 3).every((n) => !isNaN(n))) {
209
210
  const [n, s, l] = o, [c, d, p] = t[1] === "rgb" ? [n, s, l] : Ye(n, s, l);
210
- return `#${ae(c)}${ae(d)}${ae(p)}`;
211
+ return `#${ee(c)}${ee(d)}${ee(p)}`;
211
212
  }
212
213
  }
213
214
  return r;
@@ -218,7 +219,7 @@ function P(e, r, a) {
218
219
  if (i[t].getAttribute(r) === a) return i[t];
219
220
  return null;
220
221
  }
221
- function Ee(e, r = 80) {
222
+ function ye(e, r = 80) {
222
223
  let a = null;
223
224
  return (...i) => {
224
225
  a && clearTimeout(a), a = setTimeout(() => {
@@ -229,7 +230,7 @@ function Ee(e, r = 80) {
229
230
  function D(e, r) {
230
231
  e.setAttribute("title", r), e.setAttribute("aria-label", r);
231
232
  }
232
- const Ae = [
233
+ const we = [
233
234
  {
234
235
  id: "none",
235
236
  nome: "Sem Mapa",
@@ -272,11 +273,11 @@ const Ae = [
272
273
  thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
273
274
  }
274
275
  ];
275
- function ke(e, r) {
276
+ function Ee(e, r) {
276
277
  const a = Array.isArray(e) ? e.find((i) => i.id === r) : void 0;
277
278
  return a && typeof a.nome == "string" ? a.nome : "";
278
279
  }
279
- function Ke(e = Ae, r = "satelite", a = !1) {
280
+ function Ke(e = we, r = "satelite", a = !1) {
280
281
  if (!e || e.length === 0) return "";
281
282
  const i = e.map((t) => {
282
283
  const o = r === t.id, n = S(t.id), s = S(t.nome), l = S(t.descricao || t.nome);
@@ -292,7 +293,7 @@ function Ke(e = Ae, r = "satelite", a = !1) {
292
293
  <div class="ui-basemap-section ${a ? "recolhido" : ""}">
293
294
  <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"}">
294
295
  <span class="ui-basemap-title">Mapa Base</span>
295
- <span class="ui-basemap-atual" data-basemap-atual>${S(ke(e, r))}</span>
296
+ <span class="ui-basemap-atual" data-basemap-atual>${S(Ee(e, r))}</span>
296
297
  <span class="ui-chevron-icon ${a ? "" : "open"}">${v.chevronDir}</span>
297
298
  </button>
298
299
  ${a ? "" : `<div class="ui-basemap-grid" id="ui-basemap-grid">
@@ -315,7 +316,7 @@ function Xe(e) {
315
316
  return i.map((o) => t(o, 0)).join("");
316
317
  }
317
318
  function Qe(e, r, a) {
318
- const i = r.filter((c) => a.has(c.id)), t = i.length > 0, o = we(i), n = t ? i.length : e.length, s = t ? i.length > 1 ? "selecionados" : "selecionado" : e.length > 1 ? "camadas" : "camada", l = Xe(e);
319
+ const i = r.filter((c) => a.has(c.id)), t = i.length > 0, o = xe(i), n = t ? i.length : e.length, s = t ? i.length > 1 ? "selecionados" : "selecionado" : e.length > 1 ? "camadas" : "camada", l = Xe(e);
319
320
  return `
320
321
  <div class="ui-tree-footer ${t ? "tem-selecao" : "sem-selecao"}">
321
322
  <div class="ui-footer-left">
@@ -367,35 +368,35 @@ function Qe(e, r, a) {
367
368
  </div>
368
369
  `;
369
370
  }
370
- const re = 64;
371
- function ve(e) {
371
+ const ae = 64;
372
+ function me(e) {
372
373
  return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
373
374
  }
374
- function Ie(e) {
375
- return !Array.isArray(e) || e.length === 0 ? [] : ve(e[0]) ? [e.filter(ve)] : e.flatMap(Ie);
375
+ function Ae(e) {
376
+ return !Array.isArray(e) || e.length === 0 ? [] : me(e[0]) ? [e.filter(me)] : e.flatMap(Ae);
376
377
  }
377
- function be(e) {
378
- if (e.length <= re) return e;
379
- const r = e.length / re, a = [];
380
- for (let i = 0; i < re; i++) a.push(e[Math.floor(i * r)]);
378
+ function ge(e) {
379
+ if (e.length <= ae) return e;
380
+ const r = e.length / ae, a = [];
381
+ for (let i = 0; i < ae; i++) a.push(e[Math.floor(i * r)]);
381
382
  return a.push(e[e.length - 1]), a;
382
383
  }
383
384
  function Je(e, r, a) {
384
- const i = Ie(r).filter((h) => h.length > 0);
385
+ const i = Ae(r).filter((h) => h.length > 0);
385
386
  if (i.length === 0) return "";
386
387
  let t = 1 / 0, o = -1 / 0, n = 1 / 0, s = -1 / 0;
387
388
  for (const h of i)
388
- for (const [w, $] of h)
389
- $ < t && (t = $), $ > o && (o = $), -w < n && (n = -w), -w > s && (s = -w);
390
- const l = 16, c = 2, d = l - c * 2, p = o - t, f = s - n, m = Math.max(p, f), u = m > 0 ? d / m : 0, g = c + (d - p * u) / 2, k = c + (d - f * u) / 2, x = (h) => Math.round(h * 100) / 100, y = ([h, w]) => `${x(g + (w - t) * u)},${x(k + (-h - n) * u)}`, C = e === "polygon" || e === "multipolygon", L = e === "linestring" || e === "multilinestring", b = (h) => `<svg viewBox="0 0 ${l} ${l}" width="100%" height="100%" aria-hidden="true">${h}</svg>`;
389
+ for (const [y, $] of h)
390
+ $ < t && (t = $), $ > o && (o = $), -y < n && (n = -y), -y > s && (s = -y);
391
+ const l = 16, c = 2, d = l - c * 2, p = o - t, f = s - n, m = Math.max(p, f), u = m > 0 ? d / m : 0, g = c + (d - p * u) / 2, k = c + (d - f * u) / 2, x = (h) => Math.round(h * 100) / 100, w = ([h, y]) => `${x(g + (y - t) * u)},${x(k + (-h - n) * u)}`, C = e === "polygon" || e === "multipolygon", L = e === "linestring" || e === "multilinestring", b = (h) => `<svg viewBox="0 0 ${l} ${l}" width="100%" height="100%" aria-hidden="true">${h}</svg>`;
391
392
  if (C) {
392
- const h = i.filter((w) => w.length >= 3).map((w) => `M${be(w).map(y).join("L")}Z`).join("");
393
+ const h = i.filter((y) => y.length >= 3).map((y) => `M${ge(y).map(w).join("L")}Z`).join("");
393
394
  return h ? b(
394
395
  `<path d="${h}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
395
396
  ) : "";
396
397
  }
397
398
  if (L) {
398
- const h = i.filter((w) => w.length >= 2).map((w) => `M${be(w).map(y).join("L")}`).join("");
399
+ const h = i.filter((y) => y.length >= 2).map((y) => `M${ge(y).map(w).join("L")}`).join("");
399
400
  return h ? b(
400
401
  `<path d="${h}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
401
402
  ) : "";
@@ -403,7 +404,7 @@ function Je(e, r, a) {
403
404
  return "";
404
405
  }
405
406
  function We(e, r, a) {
406
- const i = _(r, "#00E08A"), t = (e || "").toLowerCase(), o = a !== void 0 ? Je(t, a, i) : "";
407
+ const i = H(r, "#00E08A"), t = (e || "").toLowerCase(), o = a !== void 0 ? Je(t, a, i) : "";
407
408
  return o || (t === "polygon" || t === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${i}" fill-opacity="0.45" stroke="${i}" stroke-width="1.5"/></svg>` : t === "linestring" || t === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${i}" stroke-width="2"/></svg>` : t === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${i}" text-anchor="middle" font-family="sans-serif">T</text></svg>` : `<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${i}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
408
409
  }
409
410
  function Ze(e) {
@@ -423,14 +424,14 @@ function Ze(e) {
423
424
  }
424
425
  return i.map((o) => t(o, 0));
425
426
  }
426
- const Le = 80;
427
+ const ke = 80;
427
428
  function K(e, r) {
428
429
  const a = (r || "").trim().toLowerCase();
429
430
  return a ? e.filter(
430
431
  (i) => (i.name || "").toLowerCase().includes(a) || (i.category || "").toLowerCase().includes(a) || (i.type || "").toLowerCase().includes(a)
431
432
  ) : e;
432
433
  }
433
- function Ce(e, r, a) {
434
+ function Ie(e, r, a) {
434
435
  var f, m;
435
436
  const i = (a || "").trim().toLowerCase();
436
437
  if (!i) return null;
@@ -465,8 +466,8 @@ function Ce(e, r, a) {
465
466
  }
466
467
  return { camadasVisiveis: c, feicoesPorCamada: p };
467
468
  }
468
- function ea(e, r, a, i = "", t = Le) {
469
- const o = Ce(e, r, i), n = [], s = /* @__PURE__ */ new Map();
469
+ function ea(e, r, a, i = "", t = ke) {
470
+ const o = Ie(e, r, i), n = [], s = /* @__PURE__ */ new Map();
470
471
  for (let l = 0; l < r.length; l++) {
471
472
  const c = r[l], d = c.layerId || "";
472
473
  s.has(d) || s.set(d, []), s.get(d).push(c);
@@ -499,7 +500,7 @@ function aa(e, r, a, i, t, o) {
499
500
  } else t ? (n.has(i) ? n.delete(i) : n.add(i), s = i) : (n.clear(), n.add(i), s = i);
500
501
  return { selecionados: n, ultimoClicadoId: s };
501
502
  }
502
- function le(e, r) {
503
+ function se(e, r) {
503
504
  if (e.size === 0) return;
504
505
  const a = new Set(r.map((i) => i.id));
505
506
  for (const i of e)
@@ -516,12 +517,12 @@ function ra(e) {
516
517
  editingLayerId: s,
517
518
  editingFeatureId: l,
518
519
  searchQuery: c,
519
- limiteFeicoesPorCamada: d = Le,
520
+ limiteFeicoesPorCamada: d = ke,
520
521
  mostrarBotaoColapsar: p = !1
521
- } = e, f = (c || "").trim().toLowerCase(), m = Ce(r, a, f), u = /* @__PURE__ */ new Map();
522
+ } = e, f = (c || "").trim().toLowerCase(), m = Ie(r, a, f), u = /* @__PURE__ */ new Map();
522
523
  for (let b = 0; b < a.length; b++) {
523
- const h = a[b], w = h.layerId || "";
524
- u.has(w) || u.set(w, []), u.get(w).push(h);
524
+ const h = a[b], y = h.layerId || "";
525
+ u.has(y) || u.set(y, []), u.get(y).push(h);
525
526
  }
526
527
  const g = r.every((b) => b.visible !== !1), k = r.length > 0 && r.every((b) => t.has(b.id)), x = `
527
528
  <div class="ui-tree-toolbar">
@@ -553,30 +554,29 @@ function ra(e) {
553
554
  )}" />
554
555
  ${c ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${v.fechar}</button>` : ""}
555
556
  </div>
556
- `, y = (b) => {
557
+ `, w = (b) => {
557
558
  const h = b.camada;
558
559
  if (m && !m.camadasVisiveis.has(h.id)) return "";
559
- const w = b.depth, $ = b.subcamadas, O = m ? $.filter((I) => m.camadasVisiveis.has(I.camada.id)) : $, B = !!(h.isGroup || $.length > 0), A = S(h.id), T = S(h.name || (B ? "Novo Grupo" : "Camada")), F = _(h.color, "#00E08A"), G = h.visible !== !1, j = h.locked === !0, V = f ? !0 : t.has(h.id), X = n === h.id, ce = i === h.id, z = m ? m.feicoesPorCamada.get(h.id) || [] : u.get(h.id) || [], de = z.length > 0 && z.every((I) => o.has(I.id)), ze = !de && z.some((I) => o.has(I.id)), Fe = z.slice(0, d), Be = z.length > d, qe = Fe.map((I) => {
560
- const q = S(I.id), pe = S(I.name || "Feição"), fe = _(I.color, F), U = I.visible !== !1, Q = j, J = I.locked === !0 || Q, me = Q ? "Bloqueada pela camada" : J ? "Desbloquear Feição" : "Bloquear Feição", W = o.has(I.id), ge = I.status;
561
- let Z = "";
562
- return ge === "oficial" ? Z = '<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>' : ge === "previa" && (Z = '<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'), `
563
- <div class="ui-feat-row ${W ? "selected-row" : ""} ${U ? "" : "hidden-row"}" data-feat-row="${q}" data-feat-select="${q}" data-feat-layer="${A}" role="treeitem" aria-selected="${W}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
564
- <div class="ui-col ui-col-eye" data-feat-eye="${q}" role="button" tabindex="0" aria-label="${U ? "Ocultar Feição" : "Exibir Feição"}" title="${U ? "Ocultar Feição" : "Exibir Feição"}">
565
- ${U ? v.olhoAberto : v.olhoFechado}
560
+ const y = b.depth, $ = b.subcamadas, O = m ? $.filter((I) => m.camadasVisiveis.has(I.camada.id)) : $, B = !!(h.isGroup || $.length > 0), E = S(h.id), T = S(h.name || (B ? "Novo Grupo" : "Camada")), F = H(h.color, "#00E08A"), V = h.visible !== !1, j = h.locked === !0, U = f ? !0 : t.has(h.id), X = n === h.id, le = i === h.id, M = m ? m.feicoesPorCamada.get(h.id) || [] : u.get(h.id) || [], ce = M.length > 0 && M.every((I) => o.has(I.id)), Se = !ce && M.some((I) => o.has(I.id)), Me = M.slice(0, d), ze = M.length > d, Fe = Me.map((I) => {
561
+ const q = S(I.id), ue = S(I.name || "Feição"), pe = H(I.color, F), Y = I.visible !== !1, Q = j, J = I.locked === !0 || Q, fe = Q ? "Bloqueada pela camada" : J ? "Desbloquear Feição" : "Bloquear Feição", W = o.has(I.id), Re = I.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
562
+ return `
563
+ <div class="ui-feat-row ${W ? "selected-row" : ""} ${Y ? "" : "hidden-row"}" data-feat-row="${q}" data-feat-select="${q}" data-feat-layer="${E}" role="treeitem" aria-selected="${W}" tabindex="-1" draggable="true" style="--layer-depth: ${y + 1};" title="Clique para selecionar | Arraste para reordenar">
564
+ <div class="ui-col ui-col-eye" data-feat-eye="${q}" role="button" tabindex="0" aria-label="${Y ? "Ocultar Feição" : "Exibir Feição"}" title="${Y ? "Ocultar Feição" : "Exibir Feição"}">
565
+ ${Y ? v.olhoAberto : v.olhoFechado}
566
566
  </div>
567
567
 
568
- <div class="ui-col ui-col-lock ${J ? "" : "ui-lock-open"}" data-feat-lock="${q}" ${Q ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${me}" title="${me}">
568
+ <div class="ui-col ui-col-lock ${J ? "" : "ui-lock-open"}" data-feat-lock="${q}" ${Q ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${fe}" title="${fe}">
569
569
  ${J ? v.cadeadoTrancado : v.cadeadoAberto}
570
570
  </div>
571
571
 
572
- <div class="ui-col ui-col-colorbar" style="background: ${fe};"></div>
572
+ <div class="ui-col ui-col-colorbar" style="background: ${pe};"></div>
573
573
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
574
574
  <div class="ui-col ui-col-thumb">
575
- <div class="ui-thumb-box">${We(I.type || I.geometryType, fe, I.coordinates)}</div>
575
+ <div class="ui-thumb-box">${We(I.type || I.geometryType, pe, I.coordinates)}</div>
576
576
  </div>
577
577
 
578
578
  <div class="ui-col ui-col-name" data-feat-name-trigger="${q}" title="Duplo clique para renomear">
579
- ${l === I.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${q}" value="${pe}" />` : `<span class="ui-name-text">${pe}</span>${Z}`}
579
+ ${l === I.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${q}" value="${ue}" />` : `<span class="ui-name-text">${ue}</span>${Re}`}
580
580
  </div>
581
581
 
582
582
  <div class="ui-col ui-col-actions">
@@ -588,16 +588,16 @@ function ra(e) {
588
588
  </div>
589
589
  </div>
590
590
  `;
591
- }).join(""), De = Be ? `<div style="padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: rgba(0,0,0,0.2);">Exibindo ${d} de ${z.length} feições. Use a busca acima para filtrar.</div>` : "", ue = h.opacity !== void 0 ? h.opacity : 1, Pe = Math.round(ue * 100), Te = r.filter((I) => I.id !== h.id).map(
591
+ }).join(""), Be = ze ? `<div style="padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: rgba(0,0,0,0.2);">Exibindo ${d} de ${M.length} feições. Use a busca acima para filtrar.</div>` : "", de = h.opacity !== void 0 ? h.opacity : 1, qe = Math.round(de * 100), De = r.filter((I) => I.id !== h.id).map(
592
592
  (I) => `<option value="${S(I.id)}" ${h.parentId === I.id ? "selected" : ""}>${I.isGroup ? "📁 " : ""}${S(I.name)}</option>`
593
- ).join(""), Re = X ? `
594
- <div class="ui-layer-settings-drawer" id="settings-drawer-${A}" style="--drawer-cor-camada: ${F};">
593
+ ).join(""), Pe = X ? `
594
+ <div class="ui-layer-settings-drawer" id="settings-drawer-${E}" style="--drawer-cor-camada: ${F};">
595
595
  <div class="ui-drawer-header">
596
596
  <div class="ui-drawer-header-left">
597
597
  <span class="ui-drawer-icon">${v.engrenagem}</span>
598
598
  <span class="ui-drawer-title">Configurações da Camada</span>
599
599
  </div>
600
- <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${A}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
600
+ <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${E}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
601
601
  ${v.fechar}
602
602
  </button>
603
603
  </div>
@@ -610,9 +610,9 @@ function ra(e) {
610
610
  </div>
611
611
  <div class="ui-drawer-color-group">
612
612
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
613
- <span class="ui-drawer-color-sample" id="sample-color-${A}" style="background-color: ${F};"></span>
614
- <span class="ui-drawer-color-hex" id="hex-color-${A}">${F.toUpperCase()}</span>
615
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${A}" value="${_e(F, "#00e08a")}" class="ui-drawer-color-native" />
613
+ <span class="ui-drawer-color-sample" id="sample-color-${E}" style="background-color: ${F};"></span>
614
+ <span class="ui-drawer-color-hex" id="hex-color-${E}">${F.toUpperCase()}</span>
615
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${E}" value="${_e(F, "#00e08a")}" class="ui-drawer-color-native" />
616
616
  </label>
617
617
  </div>
618
618
  </div>
@@ -621,10 +621,10 @@ function ra(e) {
621
621
  <div class="ui-drawer-row">
622
622
  <div class="ui-drawer-row-label">
623
623
  <span>Opacidade</span>
624
- <span class="ui-drawer-badge" id="badge-op-${A}">${Pe}%</span>
624
+ <span class="ui-drawer-badge" id="badge-op-${E}">${qe}%</span>
625
625
  </div>
626
626
  <div class="ui-drawer-slider-container">
627
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(ue) || 0}" data-layer-opacity-slider="${A}" class="ui-drawer-slider" />
627
+ <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(de) || 0}" data-layer-opacity-slider="${E}" class="ui-drawer-slider" />
628
628
  </div>
629
629
  </div>
630
630
 
@@ -634,9 +634,9 @@ function ra(e) {
634
634
  <span>Pertence ao Grupo</span>
635
635
  </div>
636
636
  <div class="ui-drawer-select-wrapper">
637
- <select class="ui-drawer-select" data-layer-parent-select="${A}" aria-label="Grupo pai da camada">
637
+ <select class="ui-drawer-select" data-layer-parent-select="${E}" aria-label="Grupo pai da camada">
638
638
  <option value="" ${h.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
639
- ${Te}
639
+ ${De}
640
640
  </select>
641
641
  </div>
642
642
  </div>
@@ -644,68 +644,66 @@ function ra(e) {
644
644
 
645
645
  <div class="ui-drawer-footer">
646
646
  <div class="ui-drawer-meta-info">
647
- <span>${$.length > 0 ? `${$.length} subcamadas · ` : ""}${z.length} ${z.length === 1 ? "feição" : "feições"}</span>
647
+ <span>${$.length > 0 ? `${$.length} subcamadas · ` : ""}${M.length} ${M.length === 1 ? "feição" : "feições"}</span>
648
648
  </div>
649
649
  <div class="ui-drawer-actions">
650
- <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${A}" title="Adicionar nova camada dentro desta">
650
+ <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${E}" title="Adicionar nova camada dentro desta">
651
651
  ${v.mais} Subcamada
652
652
  </button>
653
- <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${A}" title="Excluir esta camada e suas feições">
653
+ <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${E}" title="Excluir esta camada e suas feições">
654
654
  ${v.lixeira}
655
655
  <span class="ui-btn-label">Excluir</span>
656
656
  </button>
657
657
  </div>
658
658
  </div>
659
659
  </div>
660
- ` : "", Oe = O.map((I) => y(I)).join("");
660
+ ` : "", Te = O.map((I) => w(I)).join("");
661
661
  return `
662
- <div class="ui-layer-group ${w > 0 ? "is-sublayer-group" : ""}" data-layer-id="${A}" data-layer-depth="${w}" role="treeitem" aria-expanded="${V}">
663
- <div class="ui-layer-row ${G ? "" : "hidden-layer"} ${ce ? "active-drawing-layer" : ""} ${w > 0 ? "is-sublayer" : ""} ${B ? "is-group-row" : ""}" data-layer-row="${A}" data-layer-id="${A}" tabindex="-1" draggable="true" style="--layer-depth: ${w}; --layer-active-color: ${F};">
662
+ <div class="ui-layer-group ${y > 0 ? "is-sublayer-group" : ""}" data-layer-id="${E}" data-layer-depth="${y}" role="treeitem" aria-expanded="${U}" style="--layer-active-color: ${F};">
663
+ <div class="ui-layer-row ${V ? "" : "hidden-layer"} ${le ? "active-drawing-layer" : ""} ${y > 0 ? "is-sublayer" : ""} ${B ? "is-group-row" : ""}" data-layer-row="${E}" data-layer-id="${E}" tabindex="-1" draggable="true" ${le ? 'aria-current="true"' : ""} style="--layer-depth: ${y};">
664
664
  <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${v.dragHandle}</div>
665
665
 
666
- <div class="ui-col ui-col-eye" data-layer-eye="${A}" role="button" tabindex="0" aria-label="${G ? "Ocultar Camada" : "Exibir Camada"}" title="${G ? "Ocultar Camada" : "Exibir Camada"}">
667
- ${G ? v.olhoAberto : v.olhoFechado}
666
+ <div class="ui-col ui-col-eye" data-layer-eye="${E}" role="button" tabindex="0" aria-label="${V ? "Ocultar Camada" : "Exibir Camada"}" title="${V ? "Ocultar Camada" : "Exibir Camada"}">
667
+ ${V ? v.olhoAberto : v.olhoFechado}
668
668
  </div>
669
669
 
670
- <div class="ui-col ui-col-lock ${j ? "" : "ui-lock-open"}" data-layer-lock="${A}" role="button" tabindex="0" aria-label="${j ? "Desbloquear Camada" : "Bloquear Camada"}" title="${j ? "Desbloquear Camada" : "Bloquear Camada"}">
670
+ <div class="ui-col ui-col-lock ${j ? "" : "ui-lock-open"}" data-layer-lock="${E}" role="button" tabindex="0" aria-label="${j ? "Desbloquear Camada" : "Bloquear Camada"}" title="${j ? "Desbloquear Camada" : "Bloquear Camada"}">
671
671
  ${j ? v.cadeadoTrancado : v.cadeadoAberto}
672
672
  </div>
673
673
 
674
- <div class="ui-col ui-col-colorbar" style="background: ${F};"></div>
674
+ <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${E}" role="button" tabindex="0" style="background: ${F};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
675
675
 
676
- <div class="ui-col ui-col-chevron" data-layer-expand="${A}" role="button" tabindex="0" aria-label="${V ? "Recolher grupo" : "Expandir grupo"}">
677
- <span class="ui-chevron-icon ${V ? "open" : ""}">${v.chevronDir}</span>
676
+ <div class="ui-col ui-col-chevron" data-layer-expand="${E}" role="button" tabindex="0" aria-label="${U ? "Recolher grupo" : "Expandir grupo"}">
677
+ <span class="ui-chevron-icon ${U ? "open" : ""}">${v.chevronDir}</span>
678
678
  </div>
679
679
 
680
- <div class="ui-col ui-col-name" data-layer-name-trigger="${A}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
681
- ${s === h.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${A}" value="${T}" />` : `${B ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${v.moverPasta}</span>` : ""}
680
+ <div class="ui-col ui-col-name" data-layer-name-trigger="${E}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
681
+ ${s === h.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${E}" value="${T}" />` : `${B ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${v.moverPasta}</span>` : ""}
682
682
  <span class="ui-name-text">${T}</span>
683
- ${ce ? '<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>' : ""}
684
- ${$.length > 0 ? `<span class="ui-group-badge" title="${$.length} subcamadas">${$.length} sub</span>` : ""}
685
- ${z.length > 0 || !B ? `<span class="ui-count-chip">${z.length}</span>` : ""}`}
683
+ ${M.length > 0 || !B ? `<span class="ui-count-chip" title="${M.length} ${M.length === 1 ? "feição" : "feições"}${$.length > 0 ? ` · ${$.length} subcamadas` : ""}">${M.length}</span>` : ""}`}
686
684
  </div>
687
685
 
688
686
  <div class="ui-col ui-col-actions">
689
- <button class="ui-micro-btn" data-layer-fit="${A}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${v.alvoEnquadrar}</button>
690
- <button class="ui-micro-btn ${X ? "active" : ""}" data-layer-settings="${A}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${X}">${v.engrenagem}</button>
687
+ <button class="ui-micro-btn" data-layer-fit="${E}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${v.alvoEnquadrar}</button>
688
+ <button class="ui-micro-btn ${X ? "active" : ""}" data-layer-settings="${E}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${X}">${v.engrenagem}</button>
691
689
  </div>
692
690
 
693
- <div class="ui-col ui-col-target" data-layer-target="${A}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
694
- <div class="ui-target-circle ${de ? "selected" : ze ? "partial" : ""}"></div>
691
+ <div class="ui-col ui-col-target" data-layer-target="${E}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
692
+ <div class="ui-target-circle ${ce ? "selected" : Se ? "partial" : ""}"></div>
695
693
  </div>
696
694
  </div>
697
695
 
698
- ${Re}
696
+ ${Pe}
699
697
 
700
- <div class="ui-children-container ${w > 0 ? "is-subchildren" : ""}" role="group" style="display: ${V ? "block" : "none"};">
701
- ${Oe}
702
- ${qe}
703
- ${De}
704
- ${O.length === 0 && z.length === 0 ? `<div class="ui-empty-row"><span>${B ? "Grupo vazio (adicione subcamadas ou feições)" : "Nenhum elemento neste grupo"}</span></div>` : ""}
698
+ <div class="ui-children-container ${y > 0 ? "is-subchildren" : ""}" role="group" style="display: ${U ? "block" : "none"};">
699
+ ${Te}
700
+ ${Fe}
701
+ ${Be}
702
+ ${O.length === 0 && M.length === 0 ? `<div class="ui-empty-row"><span>${B ? "Grupo vazio (adicione subcamadas ou feições)" : "Nenhum elemento neste grupo"}</span></div>` : ""}
705
703
  </div>
706
704
  </div>
707
705
  `;
708
- }, C = Ze(r), L = m && m.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${S((c || "").trim())}”</div>` : C.map((b) => y(b)).join("");
706
+ }, C = Ze(r), L = m && m.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${S((c || "").trim())}”</div>` : C.map((b) => w(b)).join("");
709
707
  return `
710
708
  ${x}
711
709
  <div class="ui-panel-box">
@@ -821,10 +819,10 @@ function da(e, r, a, i) {
821
819
  const ua = ["dragging", "drop-above", "drop-below", "drop-into"];
822
820
  class pa {
823
821
  constructor(r, a) {
824
- E(this, "host");
825
- E(this, "shadow");
822
+ A(this, "host");
823
+ A(this, "shadow");
826
824
  /** Cancela um arraste por toque em andamento (remove os ouvintes de `window`). */
827
- E(this, "cancelarToque", null);
825
+ A(this, "cancelarToque", null);
828
826
  this.host = r, this.shadow = a;
829
827
  }
830
828
  bindAll() {
@@ -975,7 +973,7 @@ function ma(e, r) {
975
973
  const a = (e || r || "default").trim();
976
974
  return `${fa}${a}`;
977
975
  }
978
- function oe(e) {
976
+ function ie(e) {
979
977
  if (typeof window > "u" || typeof localStorage > "u")
980
978
  return null;
981
979
  try {
@@ -1004,7 +1002,7 @@ function va(e) {
1004
1002
  } catch {
1005
1003
  }
1006
1004
  }
1007
- function $e(e) {
1005
+ function Le(e) {
1008
1006
  return {
1009
1007
  name: e.name,
1010
1008
  visible: e.visible !== !1,
@@ -1019,10 +1017,10 @@ function ba(e, r, a, i) {
1019
1017
  const t = (r == null ? void 0 : r.camadasOverrides) || {}, o = new Set((r == null ? void 0 : r.expandedLayerIds) || []), n = new Set((r == null ? void 0 : r.collapsedLayerIds) || []), s = o.size > 0 || n.size > 0;
1020
1018
  for (let p = 0; p < e.length; p++) {
1021
1019
  const f = e[p], m = t[f.id];
1022
- if (i == null || i.set(f.id, $e(f)), m) {
1020
+ if (i == null || i.set(f.id, Le(f)), m) {
1023
1021
  const u = m.origem, g = (k) => {
1024
- var y;
1025
- const x = (y = i == null ? void 0 : i.get(f.id)) == null ? void 0 : y[k];
1022
+ var w;
1023
+ const x = (w = i == null ? void 0 : i.get(f.id)) == null ? void 0 : w[k];
1026
1024
  return u !== void 0 && u[k] !== x;
1027
1025
  };
1028
1026
  typeof m.name == "string" && m.name.trim() && !g("name") && (f.name = m.name), typeof m.visible == "boolean" && !g("visible") && (f.visible = m.visible), typeof m.locked == "boolean" && !g("locked") && (f.locked = m.locked), typeof m.opacity == "number" && !g("opacity") && (f.opacity = m.opacity), typeof m.color == "string" && !g("color") && (f.color = m.color), m.parentId !== void 0 && !g("parentId") && (f.parentId = m.parentId);
@@ -1074,12 +1072,12 @@ function ha(e) {
1074
1072
  ultimaAtualizacao: Date.now()
1075
1073
  };
1076
1074
  }
1077
- const xa = ':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent)!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(--ui-cor-primaria, #00E08A) 7%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{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(--ui-cor-texto-info, #33b5ff) 18%,transparent)!important;outline:1px solid color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 50%,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{padding-left:calc(6px + var(--layer-depth, 1) * 16px);background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent);border-left:2px solid color-mix(in srgb,var(--layer-active-color, #00E08A) 40%,transparent)}.ui-children-container.is-subchildren{position:relative;margin-left:calc(var(--layer-depth, 0) * 8px);border-left:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .1))}.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-group-badge{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 4px;border-radius:3px;background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 15%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 30%,transparent);margin-left: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:14px;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-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-active-badge{font-size:8px;font-weight:700;color:var(--ui-cor-texto-sobre-primaria, #000000);background:var(--ui-cor-primaria, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent);padding:1px 4px;border-radius:3px;display:inline-flex;align-items:center;gap:2px;white-space:nowrap;flex-shrink:0;animation:pulseBadge 2.8s infinite}@keyframes pulseBadge{0%{opacity:.85}50%{opacity:1;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 50%,transparent))}to{opacity:.85}}.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, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);padding:0 4px;border-radius:8px}.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(--ui-cor-texto-info, #33b5ff);background: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(--ui-cor-texto-info, #33b5ff);background:color-mix(in srgb,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-geom-tag{font-size:8px;font-weight:700;letter-spacing:.4px;padding:1px 4px;border-radius:3px;margin-left:4px;text-transform:uppercase;flex-shrink:0}.ui-geom-tag.oficial{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 16%,transparent);color:var(--ui-cor-texto-sucesso, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 35%,transparent)}.ui-geom-tag.previa{background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 16%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 35%,transparent)}.ui-tree-footer{height:32px;min-height:32px;background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 8px;gap:6px;box-sizing:border-box;overflow:hidden;position:relative}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);padding:1px 5px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 24%,transparent);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 7px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#fff3}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border-color:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 32%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 22%,transparent);border-color:var(--ui-cor-primaria, #00E08A);color:#fff}.ui-footer-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-btn.btn-clear-footer{color:var(--ui-cor-texto-secundario, #888899);margin-left:2px}.ui-footer-btn.btn-clear-footer:hover{color:#fff;background:#ffffff1f}.ui-footer-color-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;flex-shrink:0}.ui-footer-color-preview{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 0 4px #0006;pointer-events:none;transition:transform .15s ease,border-color .15s ease}.ui-footer-color-wrapper:hover .ui-footer-color-preview{transform:scale(1.15);border-color:#fff}.ui-footer-color{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0;border:none}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;max-width:95px;flex-shrink:0}.ui-footer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10px;height:22px;padding:0 4px;cursor:pointer;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){border-color:#ffffff40}.ui-footer-select:focus{outline:none;border-color:var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#ffffff40}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';
1075
+ const xa = ':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:32px;min-height:32px;background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 8px;gap:6px;box-sizing:border-box;overflow:hidden;position:relative}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);padding:1px 5px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 24%,transparent);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 7px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#fff3}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border-color:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 32%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 22%,transparent);border-color:var(--ui-cor-primaria, #00E08A);color:#fff}.ui-footer-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-btn.btn-clear-footer{color:var(--ui-cor-texto-secundario, #888899);margin-left:2px}.ui-footer-btn.btn-clear-footer:hover{color:#fff;background:#ffffff1f}.ui-footer-color-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;flex-shrink:0}.ui-footer-color-preview{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 0 4px #0006;pointer-events:none;transition:transform .15s ease,border-color .15s ease}.ui-footer-color-wrapper:hover .ui-footer-color-preview{transform:scale(1.15);border-color:#fff}.ui-footer-color{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0;border:none}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;max-width:95px;flex-shrink:0}.ui-footer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10px;height:22px;padding:0 4px;cursor:pointer;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){border-color:#ffffff40}.ui-footer-select:focus{outline:none;border-color:var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#ffffff40}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';
1078
1076
  function ya(e, r) {
1079
1077
  r.querySelectorAll("[data-layer-row]").forEach((t) => {
1080
1078
  t.addEventListener("click", (o) => {
1081
1079
  if (o.target.closest(
1082
- "[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], input, button"
1080
+ "[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], [data-layer-color], input, button"
1083
1081
  ))
1084
1082
  return;
1085
1083
  const s = t.getAttribute("data-layer-row");
@@ -1140,9 +1138,10 @@ function ya(e, r) {
1140
1138
  });
1141
1139
  });
1142
1140
  const a = (t, o, n) => {
1143
- const s = e.camadas.find((m) => m.id === t);
1141
+ var m;
1142
+ const s = e.camadas.find((u) => u.id === t);
1144
1143
  if (!s) return;
1145
- const l = _(o, s.color || "#00E08A");
1144
+ const l = H(o, s.color || "#00E08A");
1146
1145
  s.color = l;
1147
1146
  const c = r.getElementById(`sample-color-${t}`);
1148
1147
  c && (c.style.backgroundColor = l);
@@ -1152,9 +1151,9 @@ function ya(e, r) {
1152
1151
  p && p.style.setProperty("--drawer-cor-camada", l);
1153
1152
  const f = P(r, "data-layer-row", t);
1154
1153
  if (f) {
1155
- f.style.setProperty("--layer-active-color", l);
1156
- const m = f.querySelector(".ui-col-colorbar");
1157
- m && (m.style.backgroundColor = l);
1154
+ (m = f.closest(".ui-layer-group")) == null || m.style.setProperty("--layer-active-color", l);
1155
+ const u = f.querySelector(".ui-col-colorbar");
1156
+ u && (u.style.backgroundColor = l);
1158
1157
  }
1159
1158
  n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: s.id, cor: l });
1160
1159
  };
@@ -1166,6 +1165,28 @@ function ya(e, r) {
1166
1165
  a(c, d, s);
1167
1166
  };
1168
1167
  o.addEventListener("input", n(!1)), o.addEventListener("change", n(!0));
1168
+ }), r.querySelectorAll("[data-layer-color]").forEach((t) => {
1169
+ const o = (n) => {
1170
+ n.stopPropagation();
1171
+ const s = t.getAttribute("data-layer-color"), l = e.camadas.find((d) => d.id === s);
1172
+ if (!s || !l) return;
1173
+ const c = e.camadas.filter((d) => d.id !== s && d.color).map((d) => d.color);
1174
+ Ge({
1175
+ ancora: t,
1176
+ titulo: `Cor · ${l.name || "Camada"}`,
1177
+ modo: "simples",
1178
+ cor: H(l.color, "#00E08A"),
1179
+ mostrarOpacidade: !1,
1180
+ coresProjeto: c,
1181
+ aoAlterar: (d) => a(s, d.cor, !1),
1182
+ aoConfirmar: (d) => a(s, d.cor, !0),
1183
+ aoCancelar: (d) => a(s, d.cor, !0)
1184
+ });
1185
+ };
1186
+ t.addEventListener("click", o), t.addEventListener("keydown", (n) => {
1187
+ const s = n.key;
1188
+ (s === "Enter" || s === " ") && (n.preventDefault(), o(n));
1189
+ });
1169
1190
  });
1170
1191
  const i = (t, o) => {
1171
1192
  const n = e.camadas.find((c) => c.id === t);
@@ -1350,7 +1371,7 @@ const ka = [
1350
1371
  { tipo: "cadeado", atributo: "data-feat-lock", entidade: "feicao" },
1351
1372
  { tipo: "selecao", atributo: "data-layer-target", entidade: "camada" },
1352
1373
  { tipo: "selecao", atributo: "data-feat-target", entidade: "feicao" }
1353
- ], ne = {
1374
+ ], oe = {
1354
1375
  olho: "[data-layer-eye], [data-feat-eye]",
1355
1376
  cadeado: "[data-layer-lock], [data-feat-lock]",
1356
1377
  selecao: "[data-layer-target], [data-feat-target]"
@@ -1358,7 +1379,7 @@ const ka = [
1358
1379
  function La(e) {
1359
1380
  return ka.find((r) => e.hasAttribute(r.atributo)) ?? null;
1360
1381
  }
1361
- function te(e, r) {
1382
+ function re(e, r) {
1362
1383
  const a = La(r);
1363
1384
  if (!a) return null;
1364
1385
  const i = r.getAttribute(a.atributo);
@@ -1379,7 +1400,7 @@ function te(e, r) {
1379
1400
  );
1380
1401
  return t.length === 0 ? null : t.every((o) => e.selectedFeatureIds.has(o.id));
1381
1402
  }
1382
- function he(e, r, a = !1) {
1403
+ function ve(e, r, a = !1) {
1383
1404
  e.dispatchEvent(
1384
1405
  new MouseEvent("click", {
1385
1406
  bubbles: !0,
@@ -1389,52 +1410,52 @@ function he(e, r, a = !1) {
1389
1410
  })
1390
1411
  );
1391
1412
  }
1392
- let M = null;
1413
+ let z = null;
1393
1414
  function Ca(e) {
1394
- (M == null ? void 0 : M.host) === e && M.cancelar();
1415
+ (z == null ? void 0 : z.host) === e && z.cancelar();
1395
1416
  }
1396
1417
  function $a(e, r) {
1397
- Object.keys(ne).forEach((a) => {
1398
- r.querySelectorAll(ne[a]).forEach((i) => {
1418
+ Object.keys(oe).forEach((a) => {
1419
+ r.querySelectorAll(oe[a]).forEach((i) => {
1399
1420
  i.addEventListener("pointerdown", (t) => Sa(e, r, a, i, t));
1400
1421
  });
1401
1422
  });
1402
1423
  }
1403
1424
  function Sa(e, r, a, i, t) {
1404
- if (t.pointerType === "mouse" && t.button !== 0 || e.editingLayerId || e.editingFeatureId || te(e, i) === null) return;
1405
- M == null || M.cancelar();
1406
- const o = ne[a], n = t.ctrlKey || t.metaKey, s = t.shiftKey;
1425
+ if (t.pointerType === "mouse" && t.button !== 0 || e.editingLayerId || e.editingFeatureId || re(e, i) === null) return;
1426
+ z == null || z.cancelar();
1427
+ const o = oe[a], n = t.ctrlKey || t.metaKey, s = t.shiftKey;
1407
1428
  let l = !1, c = !1, d = t.clientY;
1408
1429
  const p = /* @__PURE__ */ new Set([i]), f = (b) => {
1409
1430
  b.preventDefault(), b.stopImmediatePropagation();
1410
1431
  }, m = (b) => {
1411
1432
  b.stopPropagation(), b.preventDefault();
1412
1433
  }, u = (b) => b.preventDefault(), g = (b) => {
1413
- p.has(b) || (p.add(b), te(e, b) !== c && he(b, a === "selecao"));
1434
+ p.has(b) || (p.add(b), re(e, b) !== c && ve(b, a === "selecao"));
1414
1435
  }, k = () => {
1415
- l = !0, he(i, n, s), c = te(e, i) === !0, r.addEventListener("selectstart", u), document.body.style.userSelect = "none";
1436
+ l = !0, ve(i, n, s), c = re(e, i) === !0, r.addEventListener("selectstart", u), document.body.style.userSelect = "none";
1416
1437
  }, x = (b) => {
1417
1438
  var O, B;
1418
1439
  if (!l) {
1419
1440
  if (Math.hypot(b.clientX - t.clientX, b.clientY - t.clientY) < Ia) return;
1420
- const A = (O = r.elementFromPoint(b.clientX, b.clientY)) == null ? void 0 : O.closest(o);
1421
- if (!A || A === i) return;
1441
+ const E = (O = r.elementFromPoint(b.clientX, b.clientY)) == null ? void 0 : O.closest(o);
1442
+ if (!E || E === i) return;
1422
1443
  k();
1423
1444
  }
1424
1445
  b.preventDefault();
1425
- const h = Math.min(d, b.clientY), w = Math.max(d, b.clientY);
1426
- r.querySelectorAll(o).forEach((A) => {
1427
- const T = A.getBoundingClientRect();
1446
+ const h = Math.min(d, b.clientY), y = Math.max(d, b.clientY);
1447
+ r.querySelectorAll(o).forEach((E) => {
1448
+ const T = E.getBoundingClientRect();
1428
1449
  if (T.height === 0) return;
1429
1450
  const F = T.top + T.height / 2;
1430
- F >= h && F <= w && g(A);
1451
+ F >= h && F <= y && g(E);
1431
1452
  });
1432
1453
  const $ = (B = r.elementFromPoint(b.clientX, b.clientY)) == null ? void 0 : B.closest(o);
1433
1454
  $ && g($), d = b.clientY;
1434
- }, y = (b = !1) => {
1435
- (M == null ? void 0 : M.cancelar) === L && (M = null), window.removeEventListener("pointermove", x), window.removeEventListener("pointerup", C), window.removeEventListener("pointercancel", C), window.removeEventListener("dragstart", f, !0), r.removeEventListener("selectstart", u), l && (document.body.style.userSelect = "", b || (window.addEventListener("click", m, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", m, !0), 0)));
1436
- }, C = () => y(), L = () => y(!0);
1437
- M = { host: e, cancelar: L }, window.addEventListener("dragstart", f, !0), window.addEventListener("pointermove", x, { passive: !1 }), window.addEventListener("pointerup", C), window.addEventListener("pointercancel", C);
1455
+ }, w = (b = !1) => {
1456
+ (z == null ? void 0 : z.cancelar) === L && (z = null), window.removeEventListener("pointermove", x), window.removeEventListener("pointerup", C), window.removeEventListener("pointercancel", C), window.removeEventListener("dragstart", f, !0), r.removeEventListener("selectstart", u), l && (document.body.style.userSelect = "", b || (window.addEventListener("click", m, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", m, !0), 0)));
1457
+ }, C = () => w(), L = () => w(!0);
1458
+ z = { host: e, cancelar: L }, window.addEventListener("dragstart", f, !0), window.addEventListener("pointermove", x, { passive: !1 }), window.addEventListener("pointerup", C), window.addEventListener("pointercancel", C);
1438
1459
  }
1439
1460
  function Ma(e, r) {
1440
1461
  const a = r.getElementById("btn-toggle-all-vis");
@@ -1460,7 +1481,7 @@ function za(e, r) {
1460
1481
  e.searchQuery = "", e.solicitarRenderizacao(), (o = r.getElementById("input-layer-search")) == null || o.focus();
1461
1482
  };
1462
1483
  if (a) {
1463
- const o = Ee(() => e.solicitarRenderizacao(), 75);
1484
+ const o = ye(() => e.solicitarRenderizacao(), 75);
1464
1485
  a.addEventListener("input", (n) => {
1465
1486
  e.searchQuery = n.target.value, o();
1466
1487
  }), a.addEventListener("keydown", (n) => {
@@ -1572,18 +1593,18 @@ function Da(e, r, a, i) {
1572
1593
  }
1573
1594
  !p && f && ((g = P(a, f.name, f.value)) == null || g.focus({ preventScroll: !0 })), (k = r.querySelector("[data-layer-row], [data-feat-row]")) == null || k.setAttribute("tabindex", "0"), qa(e, r), i.bindAll();
1574
1595
  }
1575
- const Pa = '[role="button"][tabindex]', H = "[data-layer-row], [data-feat-row]", Ta = ["color", "range", "checkbox", "radio", "button"];
1576
- function Se(e) {
1596
+ const Pa = '[role="button"][tabindex]', N = "[data-layer-row], [data-feat-row]", Ta = ["color", "range", "checkbox", "radio", "button"];
1597
+ function Ce(e) {
1577
1598
  return e instanceof HTMLSelectElement || e instanceof HTMLTextAreaElement ? !0 : e instanceof HTMLInputElement && !Ta.includes(e.type);
1578
1599
  }
1579
1600
  function Ra(e) {
1580
- return Array.from(e.querySelectorAll(H)).filter((r) => {
1601
+ return Array.from(e.querySelectorAll(N)).filter((r) => {
1581
1602
  const a = r.closest(".ui-children-container");
1582
1603
  return !(a && a.style.display === "none") && !r.classList.contains("ui-search-hidden");
1583
1604
  });
1584
1605
  }
1585
- function Y(e, r) {
1586
- r && (e.querySelectorAll(H).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
1606
+ function _(e, r) {
1607
+ r && (e.querySelectorAll(N).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
1587
1608
  }
1588
1609
  function Oa(e, r) {
1589
1610
  e.dispatchEvent(
@@ -1596,7 +1617,7 @@ function Oa(e, r) {
1596
1617
  }
1597
1618
  function ja(e, r, a) {
1598
1619
  var i;
1599
- if (!Se(a.composedPath()[0])) {
1620
+ if (!Ce(a.composedPath()[0])) {
1600
1621
  if (e.activeSettingsLayerId) {
1601
1622
  a.preventDefault();
1602
1623
  const t = e.activeSettingsLayerId;
@@ -1609,25 +1630,25 @@ function ja(e, r, a) {
1609
1630
  function Ha(e, r, a) {
1610
1631
  var n;
1611
1632
  const i = a.composedPath()[0];
1612
- if (!(i instanceof HTMLElement) || Se(i)) return;
1633
+ if (!(i instanceof HTMLElement) || Ce(i)) return;
1613
1634
  if ((a.key === "Enter" || a.key === " ") && i.matches(Pa)) {
1614
1635
  a.preventDefault(), i.click();
1615
1636
  return;
1616
1637
  }
1617
- if (!i.matches(H)) return;
1638
+ if (!i.matches(N)) return;
1618
1639
  const t = Ra(e), o = t.indexOf(i);
1619
1640
  switch (a.key) {
1620
1641
  case "ArrowDown":
1621
- a.preventDefault(), Y(e, t[Math.min(t.length - 1, o + 1)]);
1642
+ a.preventDefault(), _(e, t[Math.min(t.length - 1, o + 1)]);
1622
1643
  break;
1623
1644
  case "ArrowUp":
1624
- a.preventDefault(), Y(e, t[Math.max(0, o - 1)]);
1645
+ a.preventDefault(), _(e, t[Math.max(0, o - 1)]);
1625
1646
  break;
1626
1647
  case "Home":
1627
- a.preventDefault(), Y(e, t[0]);
1648
+ a.preventDefault(), _(e, t[0]);
1628
1649
  break;
1629
1650
  case "End":
1630
- a.preventDefault(), Y(e, t[t.length - 1]);
1651
+ a.preventDefault(), _(e, t[t.length - 1]);
1631
1652
  break;
1632
1653
  case "ArrowRight":
1633
1654
  case "ArrowLeft": {
@@ -1648,40 +1669,31 @@ function Na(e, r, a, i, t) {
1648
1669
  o.key === "Escape" && ja(e, a, o);
1649
1670
  }), t.add(i, "keydown", (o) => Ha(i, a, o)), t.add(i, "focusin", (o) => {
1650
1671
  const n = o.composedPath()[0];
1651
- n instanceof HTMLElement && n.matches(H) && (i.querySelectorAll(H).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
1672
+ n instanceof HTMLElement && n.matches(N) && (i.querySelectorAll(N).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
1652
1673
  });
1653
1674
  }
1654
1675
  function Ga(e, r) {
1655
1676
  r.querySelectorAll("[data-layer-row]").forEach((i) => {
1656
1677
  const o = i.getAttribute("data-layer-row") === e.camadaAtivaId;
1657
- i.classList.toggle("active-drawing-layer", o);
1658
- const n = i.querySelector(".ui-col-name");
1659
- if (n) {
1660
- let s = n.querySelector(".ui-active-badge");
1661
- if (o && !s) {
1662
- s = document.createElement("span"), s.className = "ui-active-badge", s.textContent = "✓ Ativa";
1663
- const l = n.querySelector(".ui-count-chip");
1664
- l ? n.insertBefore(s, l) : n.appendChild(s);
1665
- } else !o && s && s.remove();
1666
- }
1678
+ i.classList.toggle("active-drawing-layer", o), o ? i.setAttribute("aria-current", "true") : i.removeAttribute("aria-current");
1667
1679
  });
1668
1680
  }
1669
1681
  function Va(e, r) {
1670
1682
  r.querySelectorAll(".ui-feat-row").forEach((x) => {
1671
- const y = x.getAttribute("data-feat-row"), C = y ? e.selectedFeatureIds.has(y) : !1;
1683
+ const w = x.getAttribute("data-feat-row"), C = w ? e.selectedFeatureIds.has(w) : !1;
1672
1684
  x.classList.toggle("selected-row", C), x.setAttribute("aria-selected", String(C));
1673
1685
  const L = x.querySelector(".ui-target-circle");
1674
1686
  L && L.classList.toggle("selected", C);
1675
1687
  }), r.querySelectorAll(".ui-layer-group").forEach((x) => {
1676
- const y = x.getAttribute("data-layer-id"), C = e.feicoes.filter((b) => b.layerId === y), L = x.querySelector(".ui-layer-row .ui-target-circle");
1688
+ const w = x.getAttribute("data-layer-id"), C = e.feicoes.filter((b) => b.layerId === w), L = x.querySelector(".ui-layer-row .ui-target-circle");
1677
1689
  if (L && C.length > 0) {
1678
- const b = C.every((w) => e.selectedFeatureIds.has(w.id)), h = !b && C.some((w) => e.selectedFeatureIds.has(w.id));
1690
+ const b = C.every((y) => e.selectedFeatureIds.has(y.id)), h = !b && C.some((y) => e.selectedFeatureIds.has(y.id));
1679
1691
  L.classList.toggle("selected", b), L.classList.toggle("partial", h);
1680
1692
  } else L && L.classList.remove("selected", "partial");
1681
1693
  });
1682
1694
  const a = e.feicoes.filter((x) => e.selectedFeatureIds.has(x.id)), i = a.length > 0, t = r.getElementById("footer-count"), o = r.getElementById("footer-label");
1683
1695
  t && (t.textContent = String(i ? a.length : e.camadas.length)), o && (o.textContent = i ? a.length > 1 ? "selecionados" : "selecionado" : e.camadas.length > 1 ? "camadas" : "camada");
1684
- const n = r.querySelector(".ui-footer-metric"), s = we(a);
1696
+ const n = r.querySelector(".ui-footer-metric"), s = xe(a);
1685
1697
  n && (s ? (n.innerHTML = `${v.reguaMetrica} ${s}`, n.style.display = "inline-flex") : n.style.display = "none");
1686
1698
  const l = r.querySelector(".ui-tree-footer");
1687
1699
  l && (l.classList.toggle("tem-selecao", i), l.classList.toggle("sem-selecao", !i));
@@ -1689,8 +1701,8 @@ function Va(e, r) {
1689
1701
  c && (c.style.display = i ? "none" : "flex");
1690
1702
  const d = r.querySelector(".ui-footer-bulk-actions");
1691
1703
  d && (d.style.display = i ? "flex" : "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((x) => {
1692
- const y = r.getElementById(x);
1693
- y && (y.disabled = !i, y.classList.toggle("disabled", !i));
1704
+ const w = r.getElementById(x);
1705
+ w && (w.disabled = !i, w.classList.toggle("disabled", !i));
1694
1706
  });
1695
1707
  const p = r.querySelector(".ui-footer-move-wrapper");
1696
1708
  p && p.classList.toggle("disabled", !i);
@@ -1731,9 +1743,9 @@ function Ka(e) {
1731
1743
  }
1732
1744
  class Xa {
1733
1745
  constructor(r) {
1734
- E(this, "origens", /* @__PURE__ */ new Map());
1735
- E(this, "removidas", /* @__PURE__ */ new Set());
1736
- E(this, "salvarComDebounce", Ee(() => this.salvar(), 200));
1746
+ A(this, "origens", /* @__PURE__ */ new Map());
1747
+ A(this, "removidas", /* @__PURE__ */ new Set());
1748
+ A(this, "salvarComDebounce", ye(() => this.salvar(), 200));
1737
1749
  this.instantaneo = r;
1738
1750
  }
1739
1751
  chaveAtual() {
@@ -1741,7 +1753,7 @@ class Xa {
1741
1753
  return ma(r.storageKey, r.id);
1742
1754
  }
1743
1755
  carregar() {
1744
- return oe(this.chaveAtual());
1756
+ return ie(this.chaveAtual());
1745
1757
  }
1746
1758
  /** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
1747
1759
  agendar() {
@@ -1751,7 +1763,7 @@ class Xa {
1751
1763
  const r = this.instantaneo();
1752
1764
  if (!r.persistir || !r.conectado) return;
1753
1765
  const a = this.chaveAtual(), i = ha({
1754
- estadoAnterior: oe(a),
1766
+ estadoAnterior: ie(a),
1755
1767
  origensCamadas: this.origens,
1756
1768
  camadas: r.camadas,
1757
1769
  expandedLayers: r.expandedLayers,
@@ -1772,7 +1784,7 @@ class Xa {
1772
1784
  this.origens.clear();
1773
1785
  }
1774
1786
  registrarOrigem(r) {
1775
- this.origens.set(r.id, $e(r));
1787
+ this.origens.set(r.id, Le(r));
1776
1788
  }
1777
1789
  esquecerCamada(r) {
1778
1790
  this.origens.delete(r), this.removidas.add(r);
@@ -1782,16 +1794,16 @@ class Xa {
1782
1794
  ba(r, a, i, this.origens);
1783
1795
  }
1784
1796
  }
1785
- function Me(e, r = null) {
1797
+ function $e(e, r = null) {
1786
1798
  const a = [];
1787
1799
  for (const i of e) {
1788
1800
  const t = { ...i };
1789
- r && t.parentId === void 0 && (t.parentId = r), a.push(t), Array.isArray(i.children) && i.children.length > 0 && a.push(...Me(i.children, i.id));
1801
+ r && t.parentId === void 0 && (t.parentId = r), a.push(t), Array.isArray(i.children) && i.children.length > 0 && a.push(...$e(i.children, i.id));
1790
1802
  }
1791
1803
  return a;
1792
1804
  }
1793
1805
  function Qa(e, r, a) {
1794
- if (e.camadas = Array.isArray(r) ? Me(r) : [], e.lembranca.limparOrigens(), e.persistir) {
1806
+ if (e.camadas = Array.isArray(r) ? $e(r) : [], e.lembranca.limparOrigens(), e.persistir) {
1795
1807
  const t = e.lembranca.carregar();
1796
1808
  e.lembranca.reidratar(e.camadas, t, e.expandedLayers), t != null && t.camadaAtivaId && e.camadas.some((o) => o.id === t.camadaAtivaId) && (e.camadaAtivaId = t.camadaAtivaId);
1797
1809
  } else
@@ -1804,13 +1816,13 @@ function Qa(e, r, a) {
1804
1816
  o.length > 0 && console.warn(
1805
1817
  `[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
1806
1818
  o.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
1807
- ), le(e.selectedFeatureIds, e.feicoes);
1819
+ ), se(e.selectedFeatureIds, e.feicoes);
1808
1820
  }
1809
1821
  const i = e.getAttribute("camada-ativa");
1810
1822
  e.camadas.length > 0 && (!i || !e.camadas.some((t) => t.id === i)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
1811
1823
  }
1812
1824
  function Ja(e, r) {
1813
- e.feicoes = Array.isArray(r) ? r.map((a) => ({ ...a })) : [], le(e.selectedFeatureIds, e.feicoes), e.solicitarRenderizacao();
1825
+ e.feicoes = Array.isArray(r) ? r.map((a) => ({ ...a })) : [], se(e.selectedFeatureIds, e.feicoes), e.solicitarRenderizacao();
1814
1826
  }
1815
1827
  function Wa(e, r) {
1816
1828
  if (!r || !r.id) return;
@@ -1825,7 +1837,7 @@ function Za(e, r) {
1825
1837
  var a;
1826
1838
  e.camadas.forEach((i) => {
1827
1839
  i.parentId === r && (i.parentId = null);
1828
- }), e.camadas = e.camadas.filter((i) => i.id !== r), e.feicoes = e.feicoes.filter((i) => i.layerId !== r), e.lembranca.esquecerCamada(r), e.expandedLayers.delete(r), e.activeSettingsLayerId === r && (e.activeSettingsLayerId = null), le(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();
1840
+ }), e.camadas = e.camadas.filter((i) => i.id !== r), e.feicoes = e.feicoes.filter((i) => i.layerId !== r), e.lembranca.esquecerCamada(r), e.expandedLayers.delete(r), e.activeSettingsLayerId === r && (e.activeSettingsLayerId = null), se(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();
1829
1841
  }
1830
1842
  function er(e, r) {
1831
1843
  if (!(!r || !r.id)) {
@@ -1883,10 +1895,10 @@ function tr(e) {
1883
1895
  e.resizerElement.setPointerCapture(u.pointerId);
1884
1896
  } catch {
1885
1897
  }
1886
- const g = (y) => {
1898
+ const g = (w) => {
1887
1899
  if (!c) return;
1888
- y.preventDefault();
1889
- const C = y.clientY - d, L = Math.max(i(), Math.min(t(), Math.round(p + C)));
1900
+ w.preventDefault();
1901
+ const C = w.clientY - d, L = Math.max(i(), Math.min(t(), Math.round(p + C)));
1890
1902
  e.hostElement.style.height = `${L}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${L}px`), e.onRedimensionando && e.onRedimensionando(L), e.hostElement.dispatchEvent(
1891
1903
  new CustomEvent("ui-redimensionando-altura", {
1892
1904
  bubbles: !0,
@@ -1895,13 +1907,13 @@ function tr(e) {
1895
1907
  })
1896
1908
  );
1897
1909
  }, k = () => {
1898
- var y;
1899
- c = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x), (y = e.resizerElement) == null || y.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1900
- }, x = (y) => {
1910
+ var w;
1911
+ c = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x), (w = e.resizerElement) == null || w.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1912
+ }, x = (w) => {
1901
1913
  if (!c) return;
1902
1914
  c = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1903
1915
  try {
1904
- e.resizerElement.hasPointerCapture(y.pointerId) && e.resizerElement.releasePointerCapture(y.pointerId);
1916
+ e.resizerElement.hasPointerCapture(w.pointerId) && e.resizerElement.releasePointerCapture(w.pointerId);
1905
1917
  } catch {
1906
1918
  }
1907
1919
  window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x);
@@ -1929,19 +1941,19 @@ function tr(e) {
1929
1941
  destruir: l
1930
1942
  };
1931
1943
  }
1932
- const R = class R extends Ne {
1944
+ const R = class R extends He {
1933
1945
  constructor() {
1934
1946
  super();
1935
- E(this, "shadow");
1936
- E(this, "listeners", new Ge());
1937
- E(this, "dragDropManager");
1938
- E(this, "resizerController");
1939
- E(this, "alturaCustomizada", null);
1940
- E(this, "conectado", !1);
1941
- E(this, "profundidadeLote", 0);
1942
- E(this, "renderPendente", !1);
1947
+ A(this, "shadow");
1948
+ A(this, "listeners", new Ne());
1949
+ A(this, "dragDropManager");
1950
+ A(this, "resizerController");
1951
+ A(this, "alturaCustomizada", null);
1952
+ A(this, "conectado", !1);
1953
+ A(this, "profundidadeLote", 0);
1954
+ A(this, "renderPendente", !1);
1943
1955
  /** @internal */
1944
- E(this, "lembranca", new Xa(() => ({
1956
+ A(this, "lembranca", new Xa(() => ({
1945
1957
  persistir: this.persistir,
1946
1958
  conectado: this.conectado,
1947
1959
  storageKey: this.storageKey,
@@ -1955,18 +1967,18 @@ const R = class R extends Ne {
1955
1967
  altura: this.alturaCustomizada
1956
1968
  })));
1957
1969
  // Estado interno
1958
- E(this, "camadas", []);
1959
- E(this, "feicoes", []);
1960
- E(this, "mapasBase", [...Ae]);
1961
- E(this, "expandedLayers", /* @__PURE__ */ new Set());
1962
- E(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
1963
- E(this, "lastClickedFeatureId", null);
1964
- E(this, "activeSettingsLayerId", null);
1965
- E(this, "editingLayerId", null);
1966
- E(this, "editingFeatureId", null);
1967
- E(this, "searchQuery", "");
1968
- E(this, "corpoElement");
1969
- E(this, "btnExpandirFlutuante");
1970
+ A(this, "camadas", []);
1971
+ A(this, "feicoes", []);
1972
+ A(this, "mapasBase", [...we]);
1973
+ A(this, "expandedLayers", /* @__PURE__ */ new Set());
1974
+ A(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
1975
+ A(this, "lastClickedFeatureId", null);
1976
+ A(this, "activeSettingsLayerId", null);
1977
+ A(this, "editingLayerId", null);
1978
+ A(this, "editingFeatureId", null);
1979
+ A(this, "searchQuery", "");
1980
+ A(this, "corpoElement");
1981
+ A(this, "btnExpandirFlutuante");
1970
1982
  this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
1971
1983
  <style>${xa}</style>
1972
1984
  <div class="ui-camadas-container" id="panel-container" role="region" aria-label="Painel de Camadas">
@@ -2022,7 +2034,7 @@ const R = class R extends Ne {
2022
2034
  }
2023
2035
  connectedCallback() {
2024
2036
  if (this.persistir) {
2025
- const a = oe(this.obterChaveStorageAtual());
2037
+ const a = ie(this.obterChaveStorageAtual());
2026
2038
  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));
2027
2039
  }
2028
2040
  this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (R.instanciasChavePadrao.size > 0 && console.warn(
@@ -2066,7 +2078,7 @@ const R = class R extends Ne {
2066
2078
  t.classList.toggle("active", o), t.setAttribute("aria-pressed", String(o));
2067
2079
  });
2068
2080
  const i = this.shadow.querySelector("[data-basemap-atual]");
2069
- i && (i.textContent = ke(this.mapasBase, a));
2081
+ i && (i.textContent = Ee(this.mapasBase, a));
2070
2082
  }
2071
2083
  /** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
2072
2084
  get mapasBaseRecolhido() {
@@ -2323,16 +2335,16 @@ const R = class R extends Ne {
2323
2335
  }
2324
2336
  };
2325
2337
  /** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
2326
- E(R, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2327
- let N = R;
2328
- class ir extends N {
2338
+ A(R, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2339
+ let G = R;
2340
+ class ir extends G {
2329
2341
  }
2330
- class or extends N {
2342
+ class or extends G {
2331
2343
  }
2332
- se("ui-camadas", N);
2333
- se("ui-painel-camadas", ir);
2334
- se("ui-layer-panel", or);
2335
- function dr(e) {
2344
+ ne("ui-camadas", G);
2345
+ ne("ui-painel-camadas", ir);
2346
+ ne("ui-layer-panel", or);
2347
+ function ur(e) {
2336
2348
  var r;
2337
2349
  return {
2338
2350
  id: e.id,
@@ -2349,7 +2361,7 @@ function dr(e) {
2349
2361
  dados: e.dados
2350
2362
  };
2351
2363
  }
2352
- function ur(e, r = "levantamento", a = "feicoes") {
2364
+ function pr(e, r = "levantamento", a = "feicoes") {
2353
2365
  return {
2354
2366
  id: e.id,
2355
2367
  nome: e.name,
@@ -2368,7 +2380,7 @@ function ur(e, r = "levantamento", a = "feicoes") {
2368
2380
  dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
2369
2381
  };
2370
2382
  }
2371
- function pr(e, r = "") {
2383
+ function fr(e, r = "") {
2372
2384
  var o, n, s, l;
2373
2385
  const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", i = ((s = e.geometria) == null ? void 0 : s.coordenadas) || ((l = e.geometria) == null ? void 0 : l.coordinates) || e.coordinates, t = e.cor || e.color;
2374
2386
  return {
@@ -2389,39 +2401,39 @@ function pr(e, r = "") {
2389
2401
  export {
2390
2402
  pa as CamadasDragDropManager,
2391
2403
  v as ICONES,
2392
- Le as LIMITE_FEICOES_POR_CAMADA,
2393
- Ae as MAPAS_BASE_PADRAO,
2394
- N as UICamadas,
2404
+ ke as LIMITE_FEICOES_POR_CAMADA,
2405
+ we as MAPAS_BASE_PADRAO,
2406
+ G as UICamadas,
2395
2407
  or as UILayerPanel,
2396
- gr as UIMapaBase,
2408
+ vr as UIMapaBase,
2397
2409
  ir as UIPainelCamadas,
2398
- vr as UISeletorMapaBase,
2399
- ee as calcularAreaAnelSimples,
2400
- ye as calcularAreaPoligono,
2401
- xe as calcularComprimentoLinha,
2410
+ br as UISeletorMapaBase,
2411
+ Z as calcularAreaAnelSimples,
2412
+ he as calcularAreaPoligono,
2413
+ be as calcularComprimentoLinha,
2402
2414
  Ve as calcularDistanciaPontos,
2403
2415
  aa as calcularSelecaoFeicao,
2404
- oe as carregarEstadoPersistido,
2416
+ ie as carregarEstadoPersistido,
2405
2417
  Ze as construirHierarquiaCamadas,
2406
- ur as converterCamadaItemParaCanvasLayer,
2407
- dr as converterCanvasLayerParaCamadaItem,
2408
- pr as converterFeicaoParaItem,
2418
+ pr as converterCamadaItemParaCanvasLayer,
2419
+ ur as converterCanvasLayerParaCamadaItem,
2420
+ fr as converterFeicaoParaItem,
2409
2421
  S as escapeHtml,
2410
- Ce as filtrarCamadasPorBusca,
2422
+ Ie as filtrarCamadasPorBusca,
2411
2423
  K as filtrarFeicoesPorBusca,
2412
- we as formatarMetricaFeicoes,
2424
+ xe as formatarMetricaFeicoes,
2413
2425
  Xe as formatarOpcoesCamadasHierarquicas,
2414
2426
  ma as gerarChaveStorage,
2415
2427
  va as limparEstadoPersistido,
2416
2428
  ha as montarEstadoPersistido,
2417
- ke as nomeDoMapaBase,
2429
+ Ee as nomeDoMapaBase,
2418
2430
  ea as obterIdsVisiveisFeicoes,
2419
2431
  ba as reidratarCamadasComOverrides,
2420
- le as removerSelecoesInvalidas,
2432
+ se as removerSelecoesInvalidas,
2421
2433
  ra as renderizarArvoreCamadas,
2422
2434
  Ke as renderizarGridMapasBase,
2423
2435
  Qe as renderizarRodapeAcoes,
2424
2436
  We as renderizarThumbGeometria,
2425
2437
  ga as salvarEstadoPersistido,
2426
- $e as snapshotCamada
2438
+ Le as snapshotCamada
2427
2439
  };