@thibezer/ui-components-kit 2.8.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/camadas.js CHANGED
@@ -1,11 +1,11 @@
1
- var Te = Object.defineProperty;
2
- var Pe = (e, r, a) => r in e ? Te(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
3
- var E = (e, r, a) => Pe(e, typeof r != "symbol" ? r + "" : r, a);
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);
4
4
  /* empty css */
5
- import { d as oe, S as Re } from "./ssr-safe-5cWfJP-s.js";
6
- import { L as Oe } from "./listener-bag-DQgv7OON.js";
7
- import { UIMapaBase as ur, UISeletorMapaBase as pr } from "./seletor-mapa-base.js";
8
- const b = {
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";
8
+ const v = {
9
9
  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
10
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
11
11
  <polyline points="2 17 12 22 22 17"></polyline>
@@ -103,24 +103,24 @@ const b = {
103
103
  <line x1="9" y1="3" x2="9" y2="21"></line>
104
104
  <line x1="15" y1="3" x2="15" y2="21"></line>
105
105
  </svg>`
106
- }, re = 6378137;
107
- function je(e, r) {
106
+ }, ie = 6378137;
107
+ function Ve(e, r) {
108
108
  if (!e || !r) return 0;
109
109
  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 re * 2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l));
110
+ return ie * 2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l));
111
111
  }
112
- function be(e) {
112
+ function xe(e) {
113
113
  if (!Array.isArray(e) || e.length < 2) return 0;
114
114
  if (Array.isArray(e[0]) && Array.isArray(e[0][0]))
115
- return e.reduce((a, i) => a + be(i), 0);
115
+ return e.reduce((a, i) => a + xe(i), 0);
116
116
  let r = 0;
117
117
  for (let a = 0; a < e.length - 1; a++) {
118
118
  const i = e[a], t = e[a + 1];
119
- Array.isArray(i) && Array.isArray(t) && i.length >= 2 && t.length >= 2 && (r += je([i[0], i[1]], [t[0], t[1]]));
119
+ Array.isArray(i) && Array.isArray(t) && i.length >= 2 && t.length >= 2 && (r += Ve([i[0], i[1]], [t[0], t[1]]));
120
120
  }
121
121
  return r;
122
122
  }
123
- function W(e) {
123
+ function ee(e) {
124
124
  if (!Array.isArray(e)) return 0;
125
125
  const r = e.length;
126
126
  if (r < 3) return 0;
@@ -128,35 +128,35 @@ function W(e) {
128
128
  for (let t = 0; t < r; t++) {
129
129
  const o = e[t], n = e[(t + 1) % r], s = e[(t + 2) % r];
130
130
  if (!Array.isArray(o) || !Array.isArray(n) || !Array.isArray(s)) continue;
131
- 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), u = (s[0] - n[0]) * (Math.PI / 180);
132
- a += l * u - c * d;
131
+ 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
+ a += l * p - c * d;
133
133
  }
134
- const i = Math.abs(a * (re * re) / 2);
134
+ const i = Math.abs(a * (ie * ie) / 2);
135
135
  return isNaN(i) ? 0 : i;
136
136
  }
137
- function he(e) {
137
+ function ye(e) {
138
138
  if (!Array.isArray(e) || e.length === 0) return 0;
139
139
  if (Array.isArray(e[0]) && typeof e[0][0] == "number")
140
- return W(e);
140
+ return ee(e);
141
141
  if (Array.isArray(e[0]) && Array.isArray(e[0][0])) {
142
142
  if (Array.isArray(e[0][0][0]))
143
- return e.reduce((i, t) => i + he(t), 0);
144
- const r = W(e[0]);
143
+ return e.reduce((i, t) => i + ye(t), 0);
144
+ const r = ee(e[0]);
145
145
  let a = 0;
146
146
  for (let i = 1; i < e.length; i++)
147
- a += W(e[i]);
147
+ a += ee(e[i]);
148
148
  return Math.max(0, r - a);
149
149
  }
150
150
  return 0;
151
151
  }
152
- function xe(e) {
152
+ function we(e) {
153
153
  if (!e || e.length === 0) return "";
154
154
  const r = e.filter(
155
155
  (i) => i.type === "Polygon" || i.type === "MultiPolygon" || i.geometryType === "Polygon"
156
156
  );
157
157
  if (r.length > 0) {
158
158
  const i = r.reduce(
159
- (t, o) => t + (he(o.coordinates) || 0),
159
+ (t, o) => t + (ye(o.coordinates) || 0),
160
160
  0
161
161
  );
162
162
  return i >= 1e4 ? `${(i / 1e4).toLocaleString("pt-BR", {
@@ -169,7 +169,7 @@ function xe(e) {
169
169
  );
170
170
  if (a.length > 0) {
171
171
  const i = a.reduce(
172
- (t, o) => t + (be(o.coordinates) || 0),
172
+ (t, o) => t + (xe(o.coordinates) || 0),
173
173
  0
174
174
  );
175
175
  return i >= 1e3 ? `${(i / 1e3).toLocaleString("pt-BR", {
@@ -179,23 +179,23 @@ function xe(e) {
179
179
  }
180
180
  return "";
181
181
  }
182
- function M(e) {
182
+ function S(e) {
183
183
  return e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
184
184
  }
185
- const He = /^(#(?:[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 Y(e, r = "#00E08A") {
185
+ 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
187
  if (!e || typeof e != "string") return r;
188
188
  const a = e.trim();
189
- return He.test(a) ? a : r;
189
+ return Ue.test(a) ? a : r;
190
190
  }
191
- function Z(e) {
191
+ function ae(e) {
192
192
  return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
193
193
  }
194
- function Ne(e, r, a) {
194
+ function Ye(e, r, a) {
195
195
  const i = r / 100, t = a / 100, o = (l) => (l + e / 30) % 12, n = i * Math.min(t, 1 - t), s = (l) => t - n * Math.max(-1, Math.min(o(l) - 3, Math.min(9 - o(l), 1)));
196
196
  return [s(0) * 255, s(8) * 255, s(4) * 255];
197
197
  }
198
- function Ge(e, r = "#000000") {
198
+ function _e(e, r = "#000000") {
199
199
  if (!e || typeof e != "string") return r;
200
200
  const a = e.trim().toLowerCase(), i = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
201
201
  if (i) {
@@ -206,8 +206,8 @@ function Ge(e, r = "#000000") {
206
206
  if (t) {
207
207
  const o = t[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
208
208
  if (o.length >= 3 && o.slice(0, 3).every((n) => !isNaN(n))) {
209
- const [n, s, l] = o, [c, d, u] = t[1] === "rgb" ? [n, s, l] : Ne(n, s, l);
210
- return `#${Z(c)}${Z(d)}${Z(u)}`;
209
+ 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
211
  }
212
212
  }
213
213
  return r;
@@ -218,7 +218,7 @@ function P(e, r, a) {
218
218
  if (i[t].getAttribute(r) === a) return i[t];
219
219
  return null;
220
220
  }
221
- function ye(e, r = 80) {
221
+ function Ee(e, r = 80) {
222
222
  let a = null;
223
223
  return (...i) => {
224
224
  a && clearTimeout(a), a = setTimeout(() => {
@@ -226,10 +226,10 @@ function ye(e, r = 80) {
226
226
  }, r);
227
227
  };
228
228
  }
229
- function T(e, r) {
229
+ function D(e, r) {
230
230
  e.setAttribute("title", r), e.setAttribute("aria-label", r);
231
231
  }
232
- const we = [
232
+ const Ae = [
233
233
  {
234
234
  id: "none",
235
235
  nome: "Sem Mapa",
@@ -272,26 +272,36 @@ const we = [
272
272
  thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
273
273
  }
274
274
  ];
275
- function Ue(e = we, r = "satelite") {
276
- return !e || e.length === 0 ? "" : `
277
- <div class="ui-basemap-section">
278
- <div class="ui-basemap-title">Mapa Base</div>
279
- <div class="ui-basemap-grid">
280
- ${e.map((i) => {
281
- const t = r === i.id, o = M(i.id), n = M(i.nome), s = M(i.descricao || i.nome);
282
- let l = "";
283
- return i.thumbnailUrl ? l = `<img class="ui-basemap-preview" src="${M(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : l = `<div class="ui-basemap-preview-none">${b.gradeCad}</div>`, `
284
- <div class="ui-basemap-card ${t ? "active" : ""}" data-basemap-id="${o}" role="button" tabindex="0" aria-pressed="${t}" title="${s}">
285
- ${l}
286
- <span>${n}</span>
275
+ function ke(e, r) {
276
+ const a = Array.isArray(e) ? e.find((i) => i.id === r) : void 0;
277
+ return a && typeof a.nome == "string" ? a.nome : "";
278
+ }
279
+ function Ke(e = Ae, r = "satelite", a = !1) {
280
+ if (!e || e.length === 0) return "";
281
+ const i = e.map((t) => {
282
+ const o = r === t.id, n = S(t.id), s = S(t.nome), l = S(t.descricao || t.nome);
283
+ let c = "";
284
+ return t.thumbnailUrl ? c = `<img class="ui-basemap-preview" src="${S(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : c = `<div class="ui-basemap-preview-none">${v.gradeCad}</div>`, `
285
+ <div class="ui-basemap-card ${o ? "active" : ""}" data-basemap-id="${n}" role="button" tabindex="0" aria-pressed="${o}" title="${l}">
286
+ ${c}
287
+ <span>${s}</span>
287
288
  </div>
288
289
  `;
289
- }).join("")}
290
- </div>
290
+ }).join("");
291
+ return `
292
+ <div class="ui-basemap-section ${a ? "recolhido" : ""}">
293
+ <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
+ <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-chevron-icon ${a ? "" : "open"}">${v.chevronDir}</span>
297
+ </button>
298
+ ${a ? "" : `<div class="ui-basemap-grid" id="ui-basemap-grid">
299
+ ${i}
300
+ </div>`}
291
301
  </div>
292
302
  `;
293
303
  }
294
- function Ye(e) {
304
+ function Xe(e) {
295
305
  const r = /* @__PURE__ */ new Map();
296
306
  e.forEach((o) => r.set(o.id, o));
297
307
  const a = /* @__PURE__ */ new Map(), i = [];
@@ -299,29 +309,29 @@ function Ye(e) {
299
309
  o.parentId && r.has(o.parentId) ? (a.has(o.parentId) || a.set(o.parentId, []), a.get(o.parentId).push(o)) : i.push(o);
300
310
  });
301
311
  const t = (o, n) => {
302
- const s = a.get(o.id) || (Array.isArray(o.children) ? o.children : []), l = n > 0 ? "&nbsp;&nbsp;".repeat(n) + "↳ " : s.length > 0 || o.isGroup ? "📁 " : "", c = `<option value="${M(o.id)}">${l}${M(o.name)}</option>`, d = s.map((u) => t(u, n + 1)).join("");
312
+ const s = a.get(o.id) || (Array.isArray(o.children) ? o.children : []), l = n > 0 ? "&nbsp;&nbsp;".repeat(n) + "↳ " : s.length > 0 || o.isGroup ? "📁 " : "", c = `<option value="${S(o.id)}">${l}${S(o.name)}</option>`, d = s.map((p) => t(p, n + 1)).join("");
303
313
  return c + d;
304
314
  };
305
315
  return i.map((o) => t(o, 0)).join("");
306
316
  }
307
- function _e(e, r, a) {
308
- 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 = Ye(e);
317
+ 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);
309
319
  return `
310
320
  <div class="ui-tree-footer ${t ? "tem-selecao" : "sem-selecao"}">
311
321
  <div class="ui-footer-left">
312
322
  <span class="ui-footer-count" id="footer-count">${n}</span>
313
323
  <span class="ui-footer-label" id="footer-label">${s}</span>
314
- <span class="ui-footer-metric" id="footer-metric" style="display: ${o ? "inline-flex" : "none"};">${o ? `${b.reguaMetrica} ${o}` : ""}</span>
324
+ <span class="ui-footer-metric" id="footer-metric" style="display: ${o ? "inline-flex" : "none"};">${o ? `${v.reguaMetrica} ${o}` : ""}</span>
315
325
  </div>
316
326
 
317
327
  <!-- Ações de topo/gerais quando não há nada selecionado -->
318
328
  <div class="ui-footer-actions-gerais" style="display: ${t ? "none" : "flex"};">
319
329
  <button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
320
- ${b.moverPasta}
330
+ ${v.moverPasta}
321
331
  <span>+ Grupo</span>
322
332
  </button>
323
333
  <button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
324
- ${b.mais}
334
+ ${v.mais}
325
335
  <span>+ Camada</span>
326
336
  </button>
327
337
  </div>
@@ -329,11 +339,11 @@ function _e(e, r, a) {
329
339
  <!-- Ações em massa ativadas quando há seleção -->
330
340
  <div class="ui-footer-right ui-footer-bulk-actions" style="display: ${t ? "flex" : "none"};">
331
341
  <button class="ui-footer-btn ${t ? "" : "disabled"}" id="btn-footer-vis" title="Alternar visibilidade coletiva" aria-label="Alternar visibilidade coletiva" ${t ? "" : "disabled"}>
332
- ${b.olhoAberto}
342
+ ${v.olhoAberto}
333
343
  </button>
334
344
 
335
345
  <button class="ui-footer-btn ${t ? "" : "disabled"}" id="btn-footer-lock" title="Alternar bloqueio coletivo" aria-label="Alternar bloqueio coletivo" ${t ? "" : "disabled"}>
336
- ${b.cadeadoTrancado}
346
+ ${v.cadeadoTrancado}
337
347
  </button>
338
348
 
339
349
  <div class="ui-footer-color-wrapper ${t ? "" : "disabled"}" title="Alterar cor dos selecionados">
@@ -349,54 +359,54 @@ function _e(e, r, a) {
349
359
  </div>
350
360
 
351
361
  <button class="ui-footer-btn btn-danger-footer ${t ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${t ? "" : "disabled"}>
352
- ${b.lixeira}
362
+ ${v.lixeira}
353
363
  </button>
354
364
 
355
- ${t ? `<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${b.fechar}</button>` : ""}
365
+ ${t ? `<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${v.fechar}</button>` : ""}
356
366
  </div>
357
367
  </div>
358
368
  `;
359
369
  }
360
- const ee = 64;
361
- function me(e) {
370
+ const re = 64;
371
+ function ve(e) {
362
372
  return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
363
373
  }
364
- function Ee(e) {
365
- return !Array.isArray(e) || e.length === 0 ? [] : me(e[0]) ? [e.filter(me)] : e.flatMap(Ee);
374
+ function Ie(e) {
375
+ return !Array.isArray(e) || e.length === 0 ? [] : ve(e[0]) ? [e.filter(ve)] : e.flatMap(Ie);
366
376
  }
367
- function ge(e) {
368
- if (e.length <= ee) return e;
369
- const r = e.length / ee, a = [];
370
- for (let i = 0; i < ee; i++) a.push(e[Math.floor(i * r)]);
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)]);
371
381
  return a.push(e[e.length - 1]), a;
372
382
  }
373
- function Ve(e, r, a) {
374
- const i = Ee(r).filter((y) => y.length > 0);
383
+ function Je(e, r, a) {
384
+ const i = Ie(r).filter((h) => h.length > 0);
375
385
  if (i.length === 0) return "";
376
386
  let t = 1 / 0, o = -1 / 0, n = 1 / 0, s = -1 / 0;
377
- for (const y of i)
378
- for (const [w, $] of y)
387
+ for (const h of i)
388
+ for (const [w, $] of h)
379
389
  $ < t && (t = $), $ > o && (o = $), -w < n && (n = -w), -w > s && (s = -w);
380
- const l = 16, c = 2, d = l - c * 2, u = o - t, p = s - n, f = Math.max(u, p), m = f > 0 ? d / f : 0, g = c + (d - u * m) / 2, C = c + (d - p * m) / 2, h = (y) => Math.round(y * 100) / 100, A = ([y, w]) => `${h(g + (w - t) * m)},${h(C + (-y - n) * m)}`, L = e === "polygon" || e === "multipolygon", x = e === "linestring" || e === "multilinestring", v = (y) => `<svg viewBox="0 0 ${l} ${l}" width="100%" height="100%" aria-hidden="true">${y}</svg>`;
381
- if (L) {
382
- const y = i.filter((w) => w.length >= 3).map((w) => `M${ge(w).map(A).join("L")}Z`).join("");
383
- return y ? v(
384
- `<path d="${y}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
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>`;
391
+ if (C) {
392
+ const h = i.filter((w) => w.length >= 3).map((w) => `M${be(w).map(y).join("L")}Z`).join("");
393
+ return h ? b(
394
+ `<path d="${h}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
385
395
  ) : "";
386
396
  }
387
- if (x) {
388
- const y = i.filter((w) => w.length >= 2).map((w) => `M${ge(w).map(A).join("L")}`).join("");
389
- return y ? v(
390
- `<path d="${y}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
397
+ if (L) {
398
+ const h = i.filter((w) => w.length >= 2).map((w) => `M${be(w).map(y).join("L")}`).join("");
399
+ return h ? b(
400
+ `<path d="${h}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
391
401
  ) : "";
392
402
  }
393
403
  return "";
394
404
  }
395
- function Ke(e, r, a) {
396
- const i = Y(r, "#00E08A"), t = (e || "").toLowerCase(), o = a !== void 0 ? Ve(t, a, i) : "";
405
+ function We(e, r, a) {
406
+ const i = _(r, "#00E08A"), t = (e || "").toLowerCase(), o = a !== void 0 ? Je(t, a, i) : "";
397
407
  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>`);
398
408
  }
399
- function Xe(e) {
409
+ function Ze(e) {
400
410
  const r = /* @__PURE__ */ new Map();
401
411
  e.forEach((o) => r.set(o.id, o));
402
412
  const a = /* @__PURE__ */ new Map(), i = [];
@@ -413,48 +423,89 @@ function Xe(e) {
413
423
  }
414
424
  return i.map((o) => t(o, 0));
415
425
  }
416
- const Ae = 80;
417
- function _(e, r) {
426
+ const Le = 80;
427
+ function K(e, r) {
418
428
  const a = (r || "").trim().toLowerCase();
419
429
  return a ? e.filter(
420
430
  (i) => (i.name || "").toLowerCase().includes(a) || (i.category || "").toLowerCase().includes(a) || (i.type || "").toLowerCase().includes(a)
421
431
  ) : e;
422
432
  }
423
- function Qe(e, r, a, i = "", t = Ae) {
424
- const o = (i || "").trim() !== "", n = [], s = /* @__PURE__ */ new Map();
433
+ function Ce(e, r, a) {
434
+ var f, m;
435
+ const i = (a || "").trim().toLowerCase();
436
+ if (!i) return null;
437
+ const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
438
+ for (const u of e)
439
+ t.set(u.id, u), u.parentId && u.parentId !== u.id && (o.has(u.parentId) || o.set(u.parentId, []), o.get(u.parentId).push(u.id));
440
+ const n = /* @__PURE__ */ new Map();
441
+ for (const u of r) {
442
+ const g = u.layerId || "";
443
+ n.has(g) || n.set(g, []), n.get(g).push(u);
444
+ }
445
+ const s = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set();
446
+ for (const u of e)
447
+ (typeof u.name == "string" ? u.name.toLowerCase() : "").includes(i) ? (s.add(u.id), l.add(u.id)) : K(n.get(u.id) || [], i).length > 0 && l.add(u.id);
448
+ const c = new Set(l);
449
+ for (const u of l) {
450
+ const g = /* @__PURE__ */ new Set([u]);
451
+ let k = (f = t.get(u)) == null ? void 0 : f.parentId;
452
+ for (; k && t.has(k) && !g.has(k); )
453
+ g.add(k), c.add(k), k = (m = t.get(k)) == null ? void 0 : m.parentId;
454
+ }
455
+ const d = [...s];
456
+ for (; d.length > 0; ) {
457
+ const u = d.pop();
458
+ for (const g of o.get(u) || [])
459
+ c.has(g) || (c.add(g), d.push(g));
460
+ }
461
+ const p = /* @__PURE__ */ new Map();
462
+ for (const u of c) {
463
+ const g = n.get(u) || [];
464
+ p.set(u, s.has(u) ? g : K(g, i));
465
+ }
466
+ return { camadasVisiveis: c, feicoesPorCamada: p };
467
+ }
468
+ function ea(e, r, a, i = "", t = Le) {
469
+ const o = Ce(e, r, i), n = [], s = /* @__PURE__ */ new Map();
425
470
  for (let l = 0; l < r.length; l++) {
426
471
  const c = r[l], d = c.layerId || "";
427
472
  s.has(d) || s.set(d, []), s.get(d).push(c);
428
473
  }
429
474
  for (let l = 0; l < e.length; l++) {
430
475
  const c = e[l];
431
- if (o || a.has(c.id)) {
432
- const d = _(s.get(c.id) || [], i).slice(0, t);
433
- for (let u = 0; u < d.length; u++)
434
- n.push(d[u].id);
435
- }
476
+ let d;
477
+ if (o) {
478
+ if (!o.camadasVisiveis.has(c.id)) continue;
479
+ d = o.feicoesPorCamada.get(c.id) || [];
480
+ } else if (a.has(c.id))
481
+ d = s.get(c.id) || [];
482
+ else
483
+ continue;
484
+ const p = d.slice(0, t);
485
+ for (let f = 0; f < p.length; f++)
486
+ n.push(p[f].id);
436
487
  }
437
488
  return n;
438
489
  }
439
- function Je(e, r, a, i, t, o) {
490
+ function aa(e, r, a, i, t, o) {
440
491
  if (!e.includes(i)) return null;
441
492
  const n = new Set(r);
442
493
  let s = a;
443
494
  if (o && a && e.includes(a)) {
444
- const l = e.indexOf(a), c = e.indexOf(i), d = Math.min(l, c), u = Math.max(l, c);
495
+ const l = e.indexOf(a), c = e.indexOf(i), d = Math.min(l, c), p = Math.max(l, c);
445
496
  t || n.clear();
446
- for (let p = d; p <= u; p++)
447
- n.add(e[p]);
497
+ for (let f = d; f <= p; f++)
498
+ n.add(e[f]);
448
499
  } else t ? (n.has(i) ? n.delete(i) : n.add(i), s = i) : (n.clear(), n.add(i), s = i);
449
500
  return { selecionados: n, ultimoClicadoId: s };
450
501
  }
451
- function ne(e, r) {
502
+ function le(e, r) {
452
503
  if (e.size === 0) return;
453
504
  const a = new Set(r.map((i) => i.id));
454
505
  for (const i of e)
455
506
  a.has(i) || e.delete(i);
456
507
  }
457
- function We(e) {
508
+ function ra(e) {
458
509
  const {
459
510
  camadas: r,
460
511
  feicoes: a,
@@ -465,87 +516,89 @@ function We(e) {
465
516
  editingLayerId: s,
466
517
  editingFeatureId: l,
467
518
  searchQuery: c,
468
- limiteFeicoesPorCamada: d = Ae,
469
- mostrarBotaoColapsar: u = !1
470
- } = e, p = (c || "").trim().toLowerCase(), f = /* @__PURE__ */ new Map();
471
- for (let x = 0; x < a.length; x++) {
472
- const v = a[x], y = v.layerId || "";
473
- f.has(y) || f.set(y, []), f.get(y).push(v);
474
- }
475
- const m = r.every((x) => x.visible !== !1), g = r.length > 0 && r.every((x) => t.has(x.id)), C = `
519
+ limiteFeicoesPorCamada: d = Le,
520
+ mostrarBotaoColapsar: p = !1
521
+ } = e, f = (c || "").trim().toLowerCase(), m = Ce(r, a, f), u = /* @__PURE__ */ new Map();
522
+ 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);
525
+ }
526
+ const g = r.every((b) => b.visible !== !1), k = r.length > 0 && r.every((b) => t.has(b.id)), x = `
476
527
  <div class="ui-tree-toolbar">
477
528
  <div class="ui-tree-title-group">
478
529
  <span class="ui-tree-section-title">CAMADAS</span>
479
530
  <span class="ui-tree-count-badge">${r.length}</span>
480
531
  </div>
481
532
  <div class="ui-tree-actions">
482
- <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${m ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${m ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
483
- ${m ? b.olhoAberto : b.olhoFechado}
533
+ <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${g ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${g ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
534
+ ${g ? v.olhoAberto : v.olhoFechado}
484
535
  </button>
485
- <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${g ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${g ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
486
- <span class="ui-chevron-icon ${g ? "open" : ""}">${b.chevronDir}</span>
536
+ <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${k ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${k ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
537
+ <span class="ui-chevron-icon ${k ? "open" : ""}">${v.chevronDir}</span>
487
538
  </button>
488
539
  <button id="btn-add-group" class="ui-tree-btn-group" title="Criar grupo / pasta de camadas" aria-label="Criar grupo de camadas">
489
- ${b.moverPasta} Grupo
540
+ ${v.moverPasta} Grupo
490
541
  </button>
491
542
  <button id="btn-add-layer" class="ui-tree-btn-new" title="Adicionar nova camada vetorial">
492
- ${b.mais} Camada
543
+ ${v.mais} Camada
493
544
  </button>
494
- ${u ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>` : ""}
545
+ ${p ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${v.recolherPainel}</button>` : ""}
495
546
  </div>
496
547
  </div>
497
548
 
498
549
  <div class="ui-tree-search-wrapper">
499
- <span class="ui-tree-search-icon">${b.busca}</span>
500
- <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${M(
550
+ <span class="ui-tree-search-icon">${v.busca}</span>
551
+ <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${S(
501
552
  c
502
553
  )}" />
503
- ${c ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${b.fechar}</button>` : ""}
554
+ ${c ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${v.fechar}</button>` : ""}
504
555
  </div>
505
- `, h = (x) => {
506
- const v = x.camada, y = x.depth, w = x.subcamadas, $ = !!(v.isGroup || w.length > 0), k = M(v.id), O = M(v.name || ($ ? "Novo Grupo" : "Camada")), S = Y(v.color, "#00E08A"), B = v.visible !== !1, q = v.locked === !0, N = p ? !0 : t.has(v.id), V = n === v.id, se = i === v.id, F = _(f.get(v.id) || [], p), le = F.length > 0 && F.every((I) => o.has(I.id)), Ce = !le && F.some((I) => o.has(I.id)), $e = F.slice(0, d), Se = F.length > d, Me = $e.map((I) => {
507
- const D = M(I.id), de = M(I.name || "Feição"), ue = Y(I.color, S), G = I.visible !== !1, K = q, X = I.locked === !0 || K, pe = K ? "Bloqueada pela camada" : X ? "Desbloquear Feição" : "Bloquear Feição", Q = o.has(I.id), fe = I.status;
508
- let J = "";
509
- return fe === "oficial" ? J = '<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>' : fe === "previa" && (J = '<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'), `
510
- <div class="ui-feat-row ${Q ? "selected-row" : ""} ${G ? "" : "hidden-row"}" data-feat-row="${D}" data-feat-select="${D}" data-feat-layer="${k}" role="treeitem" aria-selected="${Q}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
511
- <div class="ui-col ui-col-eye" data-feat-eye="${D}" role="button" tabindex="0" aria-label="${G ? "Ocultar Feição" : "Exibir Feição"}" title="${G ? "Ocultar Feição" : "Exibir Feição"}">
512
- ${G ? b.olhoAberto : b.olhoFechado}
556
+ `, y = (b) => {
557
+ const h = b.camada;
558
+ 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}
513
566
  </div>
514
567
 
515
- <div class="ui-col ui-col-lock ${X ? "" : "ui-lock-open"}" data-feat-lock="${D}" ${K ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${pe}" title="${pe}">
516
- ${X ? b.cadeadoTrancado : b.cadeadoAberto}
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}">
569
+ ${J ? v.cadeadoTrancado : v.cadeadoAberto}
517
570
  </div>
518
571
 
519
- <div class="ui-col ui-col-colorbar" style="background: ${ue};"></div>
572
+ <div class="ui-col ui-col-colorbar" style="background: ${fe};"></div>
520
573
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
521
574
  <div class="ui-col ui-col-thumb">
522
- <div class="ui-thumb-box">${Ke(I.type || I.geometryType, ue, I.coordinates)}</div>
575
+ <div class="ui-thumb-box">${We(I.type || I.geometryType, fe, I.coordinates)}</div>
523
576
  </div>
524
577
 
525
- <div class="ui-col ui-col-name" data-feat-name-trigger="${D}" title="Duplo clique para renomear">
526
- ${l === I.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${D}" value="${de}" />` : `<span class="ui-name-text">${de}</span>${J}`}
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}`}
527
580
  </div>
528
581
 
529
582
  <div class="ui-col ui-col-actions">
530
- <button class="ui-micro-btn" data-feat-fit="${D}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${b.alvoEnquadrar}</button>
583
+ <button class="ui-micro-btn" data-feat-fit="${q}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${v.alvoEnquadrar}</button>
531
584
  </div>
532
585
 
533
- <div class="ui-col ui-col-target" data-feat-target="${D}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
534
- <div class="ui-target-circle ${Q ? "selected" : ""}"></div>
586
+ <div class="ui-col ui-col-target" data-feat-target="${q}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
587
+ <div class="ui-target-circle ${W ? "selected" : ""}"></div>
535
588
  </div>
536
589
  </div>
537
590
  `;
538
- }).join(""), ze = Se ? `<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 ${F.length} feições. Use a busca acima para filtrar.</div>` : "", ce = v.opacity !== void 0 ? v.opacity : 1, Fe = Math.round(ce * 100), Be = r.filter((I) => I.id !== v.id).map(
539
- (I) => `<option value="${M(I.id)}" ${v.parentId === I.id ? "selected" : ""}>${I.isGroup ? "📁 " : ""}${M(I.name)}</option>`
540
- ).join(""), qe = V ? `
541
- <div class="ui-layer-settings-drawer" id="settings-drawer-${k}" style="--drawer-cor-camada: ${S};">
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(
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};">
542
595
  <div class="ui-drawer-header">
543
596
  <div class="ui-drawer-header-left">
544
- <span class="ui-drawer-icon">${b.engrenagem}</span>
597
+ <span class="ui-drawer-icon">${v.engrenagem}</span>
545
598
  <span class="ui-drawer-title">Configurações da Camada</span>
546
599
  </div>
547
- <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${k}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
548
- ${b.fechar}
600
+ <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${A}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
601
+ ${v.fechar}
549
602
  </button>
550
603
  </div>
551
604
 
@@ -557,9 +610,9 @@ function We(e) {
557
610
  </div>
558
611
  <div class="ui-drawer-color-group">
559
612
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
560
- <span class="ui-drawer-color-sample" id="sample-color-${k}" style="background-color: ${S};"></span>
561
- <span class="ui-drawer-color-hex" id="hex-color-${k}">${S.toUpperCase()}</span>
562
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${k}" value="${Ge(S, "#00e08a")}" class="ui-drawer-color-native" />
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" />
563
616
  </label>
564
617
  </div>
565
618
  </div>
@@ -568,10 +621,10 @@ function We(e) {
568
621
  <div class="ui-drawer-row">
569
622
  <div class="ui-drawer-row-label">
570
623
  <span>Opacidade</span>
571
- <span class="ui-drawer-badge" id="badge-op-${k}">${Fe}%</span>
624
+ <span class="ui-drawer-badge" id="badge-op-${A}">${Pe}%</span>
572
625
  </div>
573
626
  <div class="ui-drawer-slider-container">
574
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(ce) || 0}" data-layer-opacity-slider="${k}" class="ui-drawer-slider" />
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" />
575
628
  </div>
576
629
  </div>
577
630
 
@@ -581,9 +634,9 @@ function We(e) {
581
634
  <span>Pertence ao Grupo</span>
582
635
  </div>
583
636
  <div class="ui-drawer-select-wrapper">
584
- <select class="ui-drawer-select" data-layer-parent-select="${k}" aria-label="Grupo pai da camada">
585
- <option value="" ${v.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
586
- ${Be}
637
+ <select class="ui-drawer-select" data-layer-parent-select="${A}" aria-label="Grupo pai da camada">
638
+ <option value="" ${h.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
639
+ ${Te}
587
640
  </select>
588
641
  </div>
589
642
  </div>
@@ -591,70 +644,70 @@ function We(e) {
591
644
 
592
645
  <div class="ui-drawer-footer">
593
646
  <div class="ui-drawer-meta-info">
594
- <span>${w.length > 0 ? `${w.length} subcamadas · ` : ""}${F.length} ${F.length === 1 ? "feição" : "feições"}</span>
647
+ <span>${$.length > 0 ? `${$.length} subcamadas · ` : ""}${z.length} ${z.length === 1 ? "feição" : "feições"}</span>
595
648
  </div>
596
649
  <div class="ui-drawer-actions">
597
- <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${k}" title="Adicionar nova camada dentro desta">
598
- ${b.mais} Subcamada
650
+ <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${A}" title="Adicionar nova camada dentro desta">
651
+ ${v.mais} Subcamada
599
652
  </button>
600
- <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${k}" title="Excluir esta camada e suas feições">
601
- ${b.lixeira}
653
+ <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${A}" title="Excluir esta camada e suas feições">
654
+ ${v.lixeira}
602
655
  <span class="ui-btn-label">Excluir</span>
603
656
  </button>
604
657
  </div>
605
658
  </div>
606
659
  </div>
607
- ` : "", De = w.map((I) => h(I)).join("");
660
+ ` : "", Oe = O.map((I) => y(I)).join("");
608
661
  return `
609
- <div class="ui-layer-group ${y > 0 ? "is-sublayer-group" : ""}" data-layer-id="${k}" data-layer-depth="${y}" role="treeitem" aria-expanded="${N}">
610
- <div class="ui-layer-row ${B ? "" : "hidden-layer"} ${se ? "active-drawing-layer" : ""} ${y > 0 ? "is-sublayer" : ""} ${$ ? "is-group-row" : ""}" data-layer-row="${k}" data-layer-id="${k}" tabindex="-1" draggable="true" style="--layer-depth: ${y}; --layer-active-color: ${S};">
611
- <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${b.dragHandle}</div>
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};">
664
+ <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${v.dragHandle}</div>
612
665
 
613
- <div class="ui-col ui-col-eye" data-layer-eye="${k}" role="button" tabindex="0" aria-label="${B ? "Ocultar Camada" : "Exibir Camada"}" title="${B ? "Ocultar Camada" : "Exibir Camada"}">
614
- ${B ? b.olhoAberto : b.olhoFechado}
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}
615
668
  </div>
616
669
 
617
- <div class="ui-col ui-col-lock ${q ? "" : "ui-lock-open"}" data-layer-lock="${k}" role="button" tabindex="0" aria-label="${q ? "Desbloquear Camada" : "Bloquear Camada"}" title="${q ? "Desbloquear Camada" : "Bloquear Camada"}">
618
- ${q ? b.cadeadoTrancado : b.cadeadoAberto}
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"}">
671
+ ${j ? v.cadeadoTrancado : v.cadeadoAberto}
619
672
  </div>
620
673
 
621
- <div class="ui-col ui-col-colorbar" style="background: ${S};"></div>
674
+ <div class="ui-col ui-col-colorbar" style="background: ${F};"></div>
622
675
 
623
- <div class="ui-col ui-col-chevron" data-layer-expand="${k}" role="button" tabindex="0" aria-label="${N ? "Recolher grupo" : "Expandir grupo"}">
624
- <span class="ui-chevron-icon ${N ? "open" : ""}">${b.chevronDir}</span>
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>
625
678
  </div>
626
679
 
627
- <div class="ui-col ui-col-name" data-layer-name-trigger="${k}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
628
- ${s === v.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${k}" value="${O}" />` : `${$ ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${b.moverPasta}</span>` : ""}
629
- <span class="ui-name-text">${O}</span>
630
- ${se ? '<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>' : ""}
631
- ${w.length > 0 ? `<span class="ui-group-badge" title="${w.length} subcamadas">${w.length} sub</span>` : ""}
632
- ${F.length > 0 || !$ ? `<span class="ui-count-chip">${F.length}</span>` : ""}`}
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>` : ""}
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>` : ""}`}
633
686
  </div>
634
687
 
635
688
  <div class="ui-col ui-col-actions">
636
- <button class="ui-micro-btn" data-layer-fit="${k}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
637
- <button class="ui-micro-btn ${V ? "active" : ""}" data-layer-settings="${k}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${V}">${b.engrenagem}</button>
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>
638
691
  </div>
639
692
 
640
- <div class="ui-col ui-col-target" data-layer-target="${k}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
641
- <div class="ui-target-circle ${le ? "selected" : Ce ? "partial" : ""}"></div>
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>
642
695
  </div>
643
696
  </div>
644
697
 
645
- ${qe}
698
+ ${Re}
646
699
 
647
- <div class="ui-children-container ${y > 0 ? "is-subchildren" : ""}" role="group" style="display: ${N ? "block" : "none"};">
700
+ <div class="ui-children-container ${w > 0 ? "is-subchildren" : ""}" role="group" style="display: ${V ? "block" : "none"};">
701
+ ${Oe}
702
+ ${qe}
648
703
  ${De}
649
- ${Me}
650
- ${ze}
651
- ${w.length === 0 && F.length === 0 ? `<div class="ui-empty-row"><span>${p ? "Nenhum item correspondente" : $ ? "Grupo vazio (adicione subcamadas ou feições)" : "Nenhum elemento neste grupo"}</span></div>` : ""}
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>` : ""}
652
705
  </div>
653
706
  </div>
654
707
  `;
655
- }, L = Xe(r).map((x) => h(x)).join("");
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("");
656
709
  return `
657
- ${C}
710
+ ${x}
658
711
  <div class="ui-panel-box">
659
712
  <div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true">
660
713
  ${L}
@@ -662,7 +715,7 @@ function We(e) {
662
715
  </div>
663
716
  `;
664
717
  }
665
- function Ze(e) {
718
+ function ta(e) {
666
719
  return [
667
720
  {
668
721
  gatilho: "data-layer-name-trigger",
@@ -690,8 +743,8 @@ function Ze(e) {
690
743
  }
691
744
  ];
692
745
  }
693
- function ea(e, r) {
694
- for (const a of Ze(e))
746
+ function ia(e, r) {
747
+ for (const a of ta(e))
695
748
  r.querySelectorAll(`[${a.gatilho}]`).forEach((i) => {
696
749
  i.addEventListener("dblclick", (t) => {
697
750
  t.stopPropagation();
@@ -706,8 +759,8 @@ function ea(e, r) {
706
759
  var d;
707
760
  if (!s) {
708
761
  if (s = !0, a.marcarEditando(null), c) {
709
- const u = a.aplicar(o, n.value.trim());
710
- u && (u.salvar && ((d = e.salvarLembrancaEstado) == null || d.call(e)), a.emitir(u.detalhe));
762
+ const p = a.aplicar(o, n.value.trim());
763
+ p && (p.salvar && ((d = e.salvarLembrancaEstado) == null || d.call(e)), a.emitir(p.detalhe));
711
764
  }
712
765
  e.solicitarRenderizacao();
713
766
  }
@@ -718,7 +771,7 @@ function ea(e, r) {
718
771
  });
719
772
  });
720
773
  }
721
- function aa(e, r, a) {
774
+ function oa(e, r, a) {
722
775
  const i = /* @__PURE__ */ new Set();
723
776
  let t = e.find((o) => o.id === r);
724
777
  for (; t && t.parentId; ) {
@@ -727,46 +780,46 @@ function aa(e, r, a) {
727
780
  }
728
781
  return !1;
729
782
  }
730
- function ra(e) {
783
+ function na(e) {
731
784
  return Number.isFinite(e) ? e < 0.25 ? "acima" : e > 0.75 ? "abaixo" : "dentro" : "dentro";
732
785
  }
733
- function ta(e, r, a, i) {
786
+ function sa(e, r, a, i) {
734
787
  if (!r || !a || r === a) return null;
735
788
  const t = e.find((l) => l.id === r), o = e.find((l) => l.id === a);
736
789
  if (!t || !o) return null;
737
790
  if (i === "dentro")
738
- return aa(e, o.id, t.id) ? null : (t.parentId = o.id, { tipo: "hierarquia", camada: t, novoParentId: o.id });
791
+ return oa(e, o.id, t.id) ? null : (t.parentId = o.id, { tipo: "hierarquia", camada: t, novoParentId: o.id });
739
792
  const n = e.findIndex((l) => l.id === r);
740
793
  e.splice(n, 1);
741
794
  const s = e.findIndex((l) => l.id === a);
742
795
  return s === -1 ? e.push(t) : e.splice(i === "acima" ? s : s + 1, 0, t), t.parentId = o.parentId ?? null, { tipo: "ordem", camada: t };
743
796
  }
744
- function ia(e, r, a, i) {
797
+ function la(e, r, a, i) {
745
798
  if (!r || !a || r === a) return !1;
746
799
  const t = e.findIndex((s) => s.id === r);
747
800
  if (t === -1) return !1;
748
801
  const [o] = e.splice(t, 1), n = e.findIndex((s) => s.id === a);
749
802
  return n === -1 ? e.push(o) : e.splice(i ? n : n + 1, 0, o), !0;
750
803
  }
751
- function oa(e, r, a, i) {
804
+ function ca(e, r, a, i) {
752
805
  const t = e.find((s) => s.id === a), o = r.find((s) => s.id === i);
753
806
  if (!t || !o || t.layerId === i) return null;
754
807
  const n = t.layerId;
755
808
  return t.layerId = i, { feicao: t, camadaOrigemId: n, camadaDestinoId: i, mudouDeCamada: !0 };
756
809
  }
757
- function na(e, r, a, i) {
810
+ function da(e, r, a, i) {
758
811
  if (!r || !a || r === a) return null;
759
- const t = e.findIndex((u) => u.id === r);
812
+ const t = e.findIndex((p) => p.id === r);
760
813
  if (t === -1) return null;
761
- const o = e.find((u) => u.id === a);
814
+ const o = e.find((p) => p.id === a);
762
815
  if (!o) return null;
763
816
  const [n] = e.splice(t, 1), s = n.layerId, l = o.layerId, c = s !== l;
764
817
  c && (n.layerId = l);
765
- const d = e.findIndex((u) => u.id === a);
818
+ const d = e.findIndex((p) => p.id === a);
766
819
  return d === -1 ? e.push(n) : e.splice(i ? d : d + 1, 0, n), { feicao: n, camadaOrigemId: s, camadaDestinoId: l, mudouDeCamada: c };
767
820
  }
768
- const sa = ["dragging", "drop-above", "drop-below", "drop-into"];
769
- class la {
821
+ const ua = ["dragging", "drop-above", "drop-below", "drop-into"];
822
+ class pa {
770
823
  constructor(r, a) {
771
824
  E(this, "host");
772
825
  E(this, "shadow");
@@ -783,11 +836,11 @@ class la {
783
836
  (r = this.cancelarToque) == null || r.call(this), this.cancelarToque = null;
784
837
  }
785
838
  bindInlineRename() {
786
- ea(this.host, this.shadow);
839
+ ia(this.host, this.shadow);
787
840
  }
788
841
  limparClassesDeArraste() {
789
842
  this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((r) => {
790
- r.classList.remove(...sa);
843
+ r.classList.remove(...ua);
791
844
  });
792
845
  }
793
846
  /** Depois de qualquer mudança na ordem/hierarquia de camadas. */
@@ -821,7 +874,7 @@ class la {
821
874
  const s = n;
822
875
  if (s.preventDefault(), s.stopPropagation(), s.dataTransfer && (s.dataTransfer.dropEffect = "move"), r === "layer") {
823
876
  if (a === o) return;
824
- const l = t.getBoundingClientRect(), c = ra((s.clientY - l.top) / l.height);
877
+ const l = t.getBoundingClientRect(), c = na((s.clientY - l.top) / l.height);
825
878
  t.classList.toggle("drop-above", c === "acima"), t.classList.toggle("drop-below", c === "abaixo"), t.classList.toggle("drop-into", c === "dentro");
826
879
  } else r === "feature" && t.classList.add("drop-into");
827
880
  }), t.addEventListener("dragleave", (n) => {
@@ -833,8 +886,8 @@ class la {
833
886
  s.preventDefault(), s.stopPropagation();
834
887
  const l = t.classList.contains("drop-into") ? "dentro" : t.classList.contains("drop-above") ? "acima" : "abaixo";
835
888
  if (this.limparClassesDeArraste(), r === "layer") {
836
- if (!a || a === o || !this.host.camadas.some((u) => u.id === a) || !this.host.camadas.some((u) => u.id === o)) return;
837
- const d = ta(this.host.camadas, a, o, l);
889
+ if (!a || a === o || !this.host.camadas.some((p) => p.id === a) || !this.host.camadas.some((p) => p.id === o)) return;
890
+ const d = sa(this.host.camadas, a, o, l);
838
891
  (d == null ? void 0 : d.tipo) === "hierarquia" && ((c = this.host.expandedLayers) == null || c.add(d.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
839
892
  camadaId: d.camada.id,
840
893
  novoParentId: d.novoParentId,
@@ -842,7 +895,7 @@ class la {
842
895
  })), this.aposReordenarCamadas();
843
896
  } else if (r === "feature") {
844
897
  if (!i) return;
845
- const d = oa(this.host.feicoes, this.host.camadas, i, o);
898
+ const d = ca(this.host.feicoes, this.host.camadas, i, o);
846
899
  d && (this.emitirFeicaoMovida(d), this.host.solicitarRenderizacao());
847
900
  }
848
901
  }), t.addEventListener("dragend", () => {
@@ -872,7 +925,7 @@ class la {
872
925
  l.preventDefault(), l.stopPropagation();
873
926
  const c = t.classList.contains("drop-above");
874
927
  this.limparClassesDeArraste();
875
- const d = na(this.host.feicoes, i, o, c);
928
+ const d = da(this.host.feicoes, i, o, c);
876
929
  d && (d.mudouDeCamada && this.emitirFeicaoMovida(d), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
877
930
  }), t.addEventListener("dragend", (s) => {
878
931
  s.stopPropagation(), r = null, i = null, a = null, this.limparClassesDeArraste();
@@ -889,26 +942,26 @@ class la {
889
942
  if (!a) return;
890
943
  const i = a.getAttribute("data-layer-id");
891
944
  i && r.addEventListener("pointerdown", (t) => {
892
- var u;
945
+ var p;
893
946
  const o = t;
894
947
  if (o.pointerType === "mouse" && o.button !== 0 || this.host.editingLayerId || this.host.editingFeatureId) return;
895
- (u = this.cancelarToque) == null || u.call(this);
948
+ (p = this.cancelarToque) == null || p.call(this);
896
949
  let n = null, s = !1;
897
- const l = (p) => {
898
- p.preventDefault(), a.classList.add("dragging");
899
- const f = this.shadow.elementFromPoint(p.clientX, p.clientY), m = f ? f.closest(".ui-layer-row") : null;
900
- if (n && n !== m && n.classList.remove("drop-above", "drop-below"), m && m !== a) {
901
- n = m;
902
- const g = m.getBoundingClientRect();
903
- s = p.clientY - g.top < g.height / 2, m.classList.toggle("drop-above", s), m.classList.toggle("drop-below", !s);
950
+ const l = (f) => {
951
+ f.preventDefault(), a.classList.add("dragging");
952
+ const m = this.shadow.elementFromPoint(f.clientX, f.clientY), u = m ? m.closest(".ui-layer-row") : null;
953
+ if (n && n !== u && n.classList.remove("drop-above", "drop-below"), u && u !== a) {
954
+ n = u;
955
+ const g = u.getBoundingClientRect();
956
+ s = f.clientY - g.top < g.height / 2, u.classList.toggle("drop-above", s), u.classList.toggle("drop-below", !s);
904
957
  } else
905
958
  n = null;
906
959
  }, c = () => {
907
960
  window.removeEventListener("pointermove", l), window.removeEventListener("pointerup", d), window.removeEventListener("pointercancel", d), this.cancelarToque = null;
908
961
  }, d = () => {
909
962
  c();
910
- const p = n == null ? void 0 : n.getAttribute("data-layer-id");
911
- this.limparClassesDeArraste(), p && ia(this.host.camadas, i, p, s) && this.aposReordenarCamadas();
963
+ const f = n == null ? void 0 : n.getAttribute("data-layer-id");
964
+ this.limparClassesDeArraste(), f && la(this.host.camadas, i, f, s) && this.aposReordenarCamadas();
912
965
  };
913
966
  this.cancelarToque = () => {
914
967
  c(), this.limparClassesDeArraste();
@@ -917,12 +970,12 @@ class la {
917
970
  });
918
971
  }
919
972
  }
920
- const ca = "ui_camadas_estado_";
921
- function da(e, r) {
973
+ const fa = "ui_camadas_estado_";
974
+ function ma(e, r) {
922
975
  const a = (e || r || "default").trim();
923
- return `${ca}${a}`;
976
+ return `${fa}${a}`;
924
977
  }
925
- function te(e) {
978
+ function oe(e) {
926
979
  if (typeof window > "u" || typeof localStorage > "u")
927
980
  return null;
928
981
  try {
@@ -936,7 +989,7 @@ function te(e) {
936
989
  }
937
990
  return null;
938
991
  }
939
- function ua(e, r) {
992
+ function ga(e, r) {
940
993
  if (!(typeof window > "u" || typeof localStorage > "u"))
941
994
  try {
942
995
  localStorage.setItem(e, JSON.stringify(r));
@@ -944,14 +997,14 @@ function ua(e, r) {
944
997
  console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
945
998
  }
946
999
  }
947
- function pa(e) {
1000
+ function va(e) {
948
1001
  if (!(typeof window > "u" || typeof localStorage > "u"))
949
1002
  try {
950
1003
  localStorage.removeItem(e);
951
1004
  } catch {
952
1005
  }
953
1006
  }
954
- function ke(e) {
1007
+ function $e(e) {
955
1008
  return {
956
1009
  name: e.name,
957
1010
  visible: e.visible !== !1,
@@ -961,48 +1014,48 @@ function ke(e) {
961
1014
  parentId: e.parentId !== void 0 ? e.parentId : null
962
1015
  };
963
1016
  }
964
- function fa(e, r, a, i) {
1017
+ function ba(e, r, a, i) {
965
1018
  if (!Array.isArray(e)) return;
966
1019
  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;
967
- for (let u = 0; u < e.length; u++) {
968
- const p = e[u], f = t[p.id];
969
- if (i == null || i.set(p.id, ke(p)), f) {
970
- const m = f.origem, g = (C) => {
971
- var A;
972
- const h = (A = i == null ? void 0 : i.get(p.id)) == null ? void 0 : A[C];
973
- return m !== void 0 && m[C] !== h;
1020
+ for (let p = 0; p < e.length; p++) {
1021
+ const f = e[p], m = t[f.id];
1022
+ if (i == null || i.set(f.id, $e(f)), m) {
1023
+ 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];
1026
+ return u !== void 0 && u[k] !== x;
974
1027
  };
975
- typeof f.name == "string" && f.name.trim() && !g("name") && (p.name = f.name), typeof f.visible == "boolean" && !g("visible") && (p.visible = f.visible), typeof f.locked == "boolean" && !g("locked") && (p.locked = f.locked), typeof f.opacity == "number" && !g("opacity") && (p.opacity = f.opacity), typeof f.color == "string" && !g("color") && (p.color = f.color), f.parentId !== void 0 && !g("parentId") && (p.parentId = f.parentId);
1028
+ 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);
976
1029
  }
977
- s ? o.has(p.id) ? a.add(p.id) : n.has(p.id) ? a.delete(p.id) : a.add(p.id) : a.add(p.id);
1030
+ s ? o.has(f.id) ? a.add(f.id) : n.has(f.id) ? a.delete(f.id) : a.add(f.id) : a.add(f.id);
978
1031
  }
979
- const l = new Set(e.map((u) => u.id)), c = r == null ? void 0 : r.ordemOrigemIds;
1032
+ const l = new Set(e.map((p) => p.id)), c = r == null ? void 0 : r.ordemOrigemIds;
980
1033
  if (!(Array.isArray(c) && (() => {
981
- const u = new Set(c), p = (f) => f.filter((m) => l.has(m) && u.has(m)).join("|");
982
- return p(c) !== p(e.map((f) => f.id));
1034
+ const p = new Set(c), f = (m) => m.filter((u) => l.has(u) && p.has(u)).join("|");
1035
+ return f(c) !== f(e.map((m) => m.id));
983
1036
  })()) && Array.isArray(r == null ? void 0 : r.ordemCamadasIds) && r.ordemCamadasIds.length > 0) {
984
- const u = /* @__PURE__ */ new Map();
985
- r.ordemCamadasIds.forEach((p, f) => u.set(p, f)), e.sort((p, f) => {
986
- const m = u.has(p.id) ? u.get(p.id) : 9999, g = u.has(f.id) ? u.get(f.id) : 9999;
987
- return m - g;
1037
+ const p = /* @__PURE__ */ new Map();
1038
+ r.ordemCamadasIds.forEach((f, m) => p.set(f, m)), e.sort((f, m) => {
1039
+ const u = p.has(f.id) ? p.get(f.id) : 9999, g = p.has(m.id) ? p.get(m.id) : 9999;
1040
+ return u - g;
988
1041
  });
989
1042
  }
990
1043
  }
991
- function ma(e) {
1044
+ function ha(e) {
992
1045
  const { estadoAnterior: r, camadas: a, expandedLayers: i } = e;
993
1046
  let t = (r == null ? void 0 : r.expandedLayerIds) || [], o = (r == null ? void 0 : r.collapsedLayerIds) || [], n = (r == null ? void 0 : r.ordemCamadasIds) || [], s = r == null ? void 0 : r.ordemOrigemIds;
994
1047
  const l = {
995
1048
  ...(r == null ? void 0 : r.camadasOverrides) || {}
996
1049
  };
997
1050
  a.length > 0 && (t = [], o = [], n = a.map((c) => c.id), s = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((c) => {
998
- var d, u;
1051
+ var d, p;
999
1052
  i.has(c.id) ? t.push(c.id) : o.push(c.id), l[c.id] = {
1000
1053
  name: c.name,
1001
1054
  visible: c.visible !== !1,
1002
1055
  locked: !!c.locked,
1003
1056
  opacity: typeof c.opacity == "number" ? c.opacity : 1,
1004
1057
  color: c.color || "#00E08A",
1005
- origem: ((d = e.origensCamadas) == null ? void 0 : d.get(c.id)) ?? ((u = l[c.id]) == null ? void 0 : u.origem)
1058
+ origem: ((d = e.origensCamadas) == null ? void 0 : d.get(c.id)) ?? ((p = l[c.id]) == null ? void 0 : p.origem)
1006
1059
  };
1007
1060
  }));
1008
1061
  for (const c of e.camadasRemovidas ?? []) delete l[c];
@@ -1021,8 +1074,8 @@ function ma(e) {
1021
1074
  ultimaAtualizacao: Date.now()
1022
1075
  };
1023
1076
  }
1024
- const ga = ':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:80px}.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-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}';
1025
- function va(e, r) {
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}';
1078
+ function ya(e, r) {
1026
1079
  r.querySelectorAll("[data-layer-row]").forEach((t) => {
1027
1080
  t.addEventListener("click", (o) => {
1028
1081
  if (o.target.closest(
@@ -1052,9 +1105,9 @@ function va(e, r) {
1052
1105
  if (s) {
1053
1106
  s.visible = s.visible === !1;
1054
1107
  const l = s.visible !== !1;
1055
- t.innerHTML = l ? b.olhoAberto : b.olhoFechado, T(t, l ? "Ocultar Camada" : "Exibir Camada");
1108
+ t.innerHTML = l ? v.olhoAberto : v.olhoFechado, D(t, l ? "Ocultar Camada" : "Exibir Camada");
1056
1109
  const c = t.closest(".ui-layer-row");
1057
- c && c.classList.toggle("hidden-layer", !l), ba(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1110
+ c && c.classList.toggle("hidden-layer", !l), wa(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1058
1111
  camadaId: s.id,
1059
1112
  visivel: l
1060
1113
  });
@@ -1064,7 +1117,7 @@ function va(e, r) {
1064
1117
  t.addEventListener("click", (o) => {
1065
1118
  o.stopPropagation();
1066
1119
  const n = t.getAttribute("data-layer-lock"), s = e.camadas.find((l) => l.id === n);
1067
- s && (s.locked = !s.locked, t.innerHTML = s.locked ? b.cadeadoTrancado : b.cadeadoAberto, t.classList.toggle("ui-lock-open", !s.locked), T(t, s.locked ? "Desbloquear Camada" : "Bloquear Camada"), ha(e, r, s.id, s.locked === !0), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1120
+ s && (s.locked = !s.locked, t.innerHTML = s.locked ? v.cadeadoTrancado : v.cadeadoAberto, t.classList.toggle("ui-lock-open", !s.locked), D(t, s.locked ? "Desbloquear Camada" : "Bloquear Camada"), Ea(e, r, s.id, s.locked === !0), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1068
1121
  camadaId: s.id,
1069
1122
  bloqueado: s.locked
1070
1123
  }));
@@ -1087,21 +1140,21 @@ function va(e, r) {
1087
1140
  });
1088
1141
  });
1089
1142
  const a = (t, o, n) => {
1090
- const s = e.camadas.find((f) => f.id === t);
1143
+ const s = e.camadas.find((m) => m.id === t);
1091
1144
  if (!s) return;
1092
- const l = Y(o, s.color || "#00E08A");
1145
+ const l = _(o, s.color || "#00E08A");
1093
1146
  s.color = l;
1094
1147
  const c = r.getElementById(`sample-color-${t}`);
1095
1148
  c && (c.style.backgroundColor = l);
1096
1149
  const d = r.getElementById(`hex-color-${t}`);
1097
1150
  d && (d.textContent = l.toUpperCase());
1098
- const u = r.getElementById(`settings-drawer-${t}`);
1099
- u && u.style.setProperty("--drawer-cor-camada", l);
1100
- const p = P(r, "data-layer-row", t);
1101
- if (p) {
1102
- p.style.setProperty("--layer-active-color", l);
1103
- const f = p.querySelector(".ui-col-colorbar");
1104
- f && (f.style.backgroundColor = l);
1151
+ const p = r.getElementById(`settings-drawer-${t}`);
1152
+ p && p.style.setProperty("--drawer-cor-camada", l);
1153
+ const f = P(r, "data-layer-row", t);
1154
+ if (f) {
1155
+ f.style.setProperty("--layer-active-color", l);
1156
+ const m = f.querySelector(".ui-col-colorbar");
1157
+ m && (m.style.backgroundColor = l);
1105
1158
  }
1106
1159
  n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: s.id, cor: l });
1107
1160
  };
@@ -1168,7 +1221,7 @@ function va(e, r) {
1168
1221
  }), r.querySelectorAll("[data-layer-target]").forEach((t) => {
1169
1222
  t.addEventListener("click", (o) => {
1170
1223
  o.stopPropagation();
1171
- const n = o, s = t.getAttribute("data-layer-target"), l = _(
1224
+ const n = o, s = t.getAttribute("data-layer-target"), l = K(
1172
1225
  e.feicoes.filter((d) => d.layerId === s),
1173
1226
  e.searchQuery
1174
1227
  );
@@ -1177,84 +1230,84 @@ function va(e, r) {
1177
1230
  });
1178
1231
  });
1179
1232
  }
1180
- function ba(e, r) {
1233
+ function wa(e, r) {
1181
1234
  const a = r.getElementById("btn-toggle-all-vis");
1182
1235
  if (!a) return;
1183
1236
  const i = e.camadas.every((t) => t.visible !== !1);
1184
- a.innerHTML = i ? b.olhoAberto : b.olhoFechado, T(a, i ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1237
+ a.innerHTML = i ? v.olhoAberto : v.olhoFechado, D(a, i ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1185
1238
  }
1186
- function ha(e, r, a, i) {
1239
+ function Ea(e, r, a, i) {
1187
1240
  e.feicoes.filter((t) => t.layerId === a).forEach((t) => {
1188
1241
  const o = P(r, "data-feat-lock", t.id);
1189
1242
  if (!o) return;
1190
1243
  const n = t.locked === !0 || i;
1191
- o.innerHTML = n ? b.cadeadoTrancado : b.cadeadoAberto, o.classList.toggle("ui-lock-open", !n), i ? o.setAttribute("data-locked-by-layer", "true") : o.removeAttribute("data-locked-by-layer"), T(
1244
+ o.innerHTML = n ? v.cadeadoTrancado : v.cadeadoAberto, o.classList.toggle("ui-lock-open", !n), i ? o.setAttribute("data-locked-by-layer", "true") : o.removeAttribute("data-locked-by-layer"), D(
1192
1245
  o,
1193
1246
  i ? "Bloqueada pela camada" : n ? "Desbloquear Feição" : "Bloquear Feição"
1194
1247
  );
1195
1248
  });
1196
1249
  }
1197
- function xa(e, r) {
1250
+ function Aa(e, r) {
1198
1251
  const a = r.getElementById("btn-footer-vis");
1199
1252
  a && a.addEventListener("click", () => {
1200
- const u = e.feicoes.filter((m) => e.selectedFeatureIds.has(m.id));
1201
- if (u.length === 0) return;
1202
- const f = !u.some((m) => m.visible !== !1);
1203
- u.forEach((m) => m.visible = f), e.dispararEvento("ui-acao-massa", {
1253
+ const p = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id));
1254
+ if (p.length === 0) return;
1255
+ const m = !p.some((u) => u.visible !== !1);
1256
+ p.forEach((u) => u.visible = m), e.dispararEvento("ui-acao-massa", {
1204
1257
  acao: "visibilidade",
1205
- feicoesIds: u.map((m) => m.id),
1206
- feicoes: u,
1207
- valor: f
1258
+ feicoesIds: p.map((u) => u.id),
1259
+ feicoes: p,
1260
+ valor: m
1208
1261
  }), e.solicitarRenderizacao();
1209
1262
  });
1210
1263
  const i = r.getElementById("btn-footer-lock");
1211
1264
  i && i.addEventListener("click", () => {
1212
- const u = e.feicoes.filter((m) => e.selectedFeatureIds.has(m.id));
1213
- if (u.length === 0) return;
1214
- const f = !u.some((m) => m.locked === !0);
1215
- u.forEach((m) => m.locked = f), e.dispararEvento("ui-acao-massa", {
1265
+ const p = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id));
1266
+ if (p.length === 0) return;
1267
+ const m = !p.some((u) => u.locked === !0);
1268
+ p.forEach((u) => u.locked = m), e.dispararEvento("ui-acao-massa", {
1216
1269
  acao: "bloqueio",
1217
- feicoesIds: u.map((m) => m.id),
1218
- feicoes: u,
1219
- valor: f
1270
+ feicoesIds: p.map((u) => u.id),
1271
+ feicoes: p,
1272
+ valor: m
1220
1273
  }), e.solicitarRenderizacao();
1221
1274
  });
1222
1275
  const t = r.getElementById("input-footer-color"), o = r.getElementById("preview-footer-color");
1223
- t && (t.addEventListener("input", (u) => {
1224
- const p = u.target.value;
1225
- o && (o.style.backgroundColor = p);
1226
- }), t.addEventListener("change", (u) => {
1227
- const p = u.target.value;
1228
- o && (o.style.backgroundColor = p);
1229
- const f = e.feicoes.filter((m) => e.selectedFeatureIds.has(m.id));
1230
- f.length !== 0 && (f.forEach((m) => {
1231
- m.color = p, m.style = { ...m.style || {}, fillColor: p, strokeColor: p };
1276
+ t && (t.addEventListener("input", (p) => {
1277
+ const f = p.target.value;
1278
+ o && (o.style.backgroundColor = f);
1279
+ }), t.addEventListener("change", (p) => {
1280
+ const f = p.target.value;
1281
+ o && (o.style.backgroundColor = f);
1282
+ const m = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id));
1283
+ m.length !== 0 && (m.forEach((u) => {
1284
+ u.color = f, u.style = { ...u.style || {}, fillColor: f, strokeColor: f };
1232
1285
  }), e.dispararEvento("ui-acao-massa", {
1233
1286
  acao: "cor",
1234
- feicoesIds: f.map((m) => m.id),
1235
- feicoes: f,
1236
- valor: p
1287
+ feicoesIds: m.map((u) => u.id),
1288
+ feicoes: m,
1289
+ valor: f
1237
1290
  }), e.solicitarRenderizacao());
1238
1291
  }));
1239
1292
  const n = r.getElementById("select-footer-move");
1240
- n && n.addEventListener("change", (u) => {
1241
- const p = u.target.value;
1242
- if (!p) return;
1243
- const f = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
1244
- if (f.length === 0) return;
1245
- const m = new Map(f.map((g) => [g.id, g.layerId]));
1246
- f.forEach((g) => g.layerId = p), f.forEach((g) => {
1247
- m.get(g.id) !== p && e.dispararEvento("ui-feicao-movida", {
1293
+ n && n.addEventListener("change", (p) => {
1294
+ const f = p.target.value;
1295
+ if (!f) return;
1296
+ const m = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
1297
+ if (m.length === 0) return;
1298
+ const u = new Map(m.map((g) => [g.id, g.layerId]));
1299
+ m.forEach((g) => g.layerId = f), m.forEach((g) => {
1300
+ u.get(g.id) !== f && e.dispararEvento("ui-feicao-movida", {
1248
1301
  feicaoId: g.id,
1249
- camadaOrigemId: m.get(g.id),
1250
- camadaDestinoId: p,
1302
+ camadaOrigemId: u.get(g.id),
1303
+ camadaDestinoId: f,
1251
1304
  feicao: g
1252
1305
  });
1253
1306
  }), e.dispararEvento("ui-acao-massa", {
1254
1307
  acao: "mover",
1255
- feicoesIds: f.map((g) => g.id),
1256
- feicoes: f,
1257
- valor: p
1308
+ feicoesIds: m.map((g) => g.id),
1309
+ feicoes: m,
1310
+ valor: f
1258
1311
  }), e.solicitarRenderizacao();
1259
1312
  });
1260
1313
  const s = r.getElementById("btn-footer-new-layer");
@@ -1267,46 +1320,46 @@ function xa(e, r) {
1267
1320
  });
1268
1321
  const c = r.getElementById("btn-footer-del");
1269
1322
  if (c) {
1270
- let u = null;
1271
- const p = "Excluir selecionados";
1323
+ let p = null;
1324
+ const f = "Excluir selecionados";
1272
1325
  c.addEventListener("click", () => {
1273
- const f = Array.from(e.selectedFeatureIds);
1274
- if (f.length === 0) return;
1326
+ const m = Array.from(e.selectedFeatureIds);
1327
+ if (m.length === 0) return;
1275
1328
  if (!c.classList.contains("confirming")) {
1276
- c.classList.add("confirming"), T(c, `Clique novamente para excluir ${f.length} selecionado(s)`), u = setTimeout(() => {
1277
- c.classList.remove("confirming"), T(c, p);
1329
+ c.classList.add("confirming"), D(c, `Clique novamente para excluir ${m.length} selecionado(s)`), p = setTimeout(() => {
1330
+ c.classList.remove("confirming"), D(c, f);
1278
1331
  }, 3500);
1279
1332
  return;
1280
1333
  }
1281
- u && clearTimeout(u);
1282
- const m = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
1334
+ p && clearTimeout(p);
1335
+ const u = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
1283
1336
  e.feicoes = e.feicoes.filter((g) => !e.selectedFeatureIds.has(g.id)), e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.dispararEvento("ui-acao-massa", {
1284
1337
  acao: "excluir",
1285
- feicoesIds: f,
1286
- feicoes: m
1338
+ feicoesIds: m,
1339
+ feicoes: u
1287
1340
  }), e.notificarMudancaSelecao(), e.solicitarRenderizacao();
1288
1341
  });
1289
1342
  }
1290
1343
  const d = r.getElementById("btn-footer-clear");
1291
1344
  d && d.addEventListener("click", () => e.limparSelecao(!0));
1292
1345
  }
1293
- const ya = [
1346
+ const ka = [
1294
1347
  { tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
1295
1348
  { tipo: "olho", atributo: "data-feat-eye", entidade: "feicao" },
1296
1349
  { tipo: "cadeado", atributo: "data-layer-lock", entidade: "camada" },
1297
1350
  { tipo: "cadeado", atributo: "data-feat-lock", entidade: "feicao" },
1298
1351
  { tipo: "selecao", atributo: "data-layer-target", entidade: "camada" },
1299
1352
  { tipo: "selecao", atributo: "data-feat-target", entidade: "feicao" }
1300
- ], ie = {
1353
+ ], ne = {
1301
1354
  olho: "[data-layer-eye], [data-feat-eye]",
1302
1355
  cadeado: "[data-layer-lock], [data-feat-lock]",
1303
1356
  selecao: "[data-layer-target], [data-feat-target]"
1304
- }, wa = 3;
1305
- function Ea(e) {
1306
- return ya.find((r) => e.hasAttribute(r.atributo)) ?? null;
1357
+ }, Ia = 3;
1358
+ function La(e) {
1359
+ return ka.find((r) => e.hasAttribute(r.atributo)) ?? null;
1307
1360
  }
1308
- function ae(e, r) {
1309
- const a = Ea(r);
1361
+ function te(e, r) {
1362
+ const a = La(r);
1310
1363
  if (!a) return null;
1311
1364
  const i = r.getAttribute(a.atributo);
1312
1365
  if (!i) return null;
@@ -1320,13 +1373,13 @@ function ae(e, r) {
1320
1373
  return o ? o.locked === !0 : null;
1321
1374
  }
1322
1375
  if (a.entidade === "feicao") return e.selectedFeatureIds.has(i);
1323
- const t = _(
1376
+ const t = K(
1324
1377
  e.feicoes.filter((o) => o.layerId === i),
1325
1378
  e.searchQuery
1326
1379
  );
1327
1380
  return t.length === 0 ? null : t.every((o) => e.selectedFeatureIds.has(o.id));
1328
1381
  }
1329
- function ve(e, r, a = !1) {
1382
+ function he(e, r, a = !1) {
1330
1383
  e.dispatchEvent(
1331
1384
  new MouseEvent("click", {
1332
1385
  bubbles: !0,
@@ -1336,54 +1389,54 @@ function ve(e, r, a = !1) {
1336
1389
  })
1337
1390
  );
1338
1391
  }
1339
- let z = null;
1340
- function Aa(e) {
1341
- (z == null ? void 0 : z.host) === e && z.cancelar();
1392
+ let M = null;
1393
+ function Ca(e) {
1394
+ (M == null ? void 0 : M.host) === e && M.cancelar();
1342
1395
  }
1343
- function ka(e, r) {
1344
- Object.keys(ie).forEach((a) => {
1345
- r.querySelectorAll(ie[a]).forEach((i) => {
1346
- i.addEventListener("pointerdown", (t) => Ia(e, r, a, i, t));
1396
+ function $a(e, r) {
1397
+ Object.keys(ne).forEach((a) => {
1398
+ r.querySelectorAll(ne[a]).forEach((i) => {
1399
+ i.addEventListener("pointerdown", (t) => Sa(e, r, a, i, t));
1347
1400
  });
1348
1401
  });
1349
1402
  }
1350
- function Ia(e, r, a, i, t) {
1351
- if (t.pointerType === "mouse" && t.button !== 0 || e.editingLayerId || e.editingFeatureId || ae(e, i) === null) return;
1352
- z == null || z.cancelar();
1353
- const o = ie[a], n = t.ctrlKey || t.metaKey, s = t.shiftKey;
1403
+ 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;
1354
1407
  let l = !1, c = !1, d = t.clientY;
1355
- const u = /* @__PURE__ */ new Set([i]), p = (v) => {
1356
- v.preventDefault(), v.stopImmediatePropagation();
1357
- }, f = (v) => {
1358
- v.stopPropagation(), v.preventDefault();
1359
- }, m = (v) => v.preventDefault(), g = (v) => {
1360
- u.has(v) || (u.add(v), ae(e, v) !== c && ve(v, a === "selecao"));
1361
- }, C = () => {
1362
- l = !0, ve(i, n, s), c = ae(e, i) === !0, r.addEventListener("selectstart", m), document.body.style.userSelect = "none";
1363
- }, h = (v) => {
1364
- var k, O;
1408
+ const p = /* @__PURE__ */ new Set([i]), f = (b) => {
1409
+ b.preventDefault(), b.stopImmediatePropagation();
1410
+ }, m = (b) => {
1411
+ b.stopPropagation(), b.preventDefault();
1412
+ }, u = (b) => b.preventDefault(), g = (b) => {
1413
+ p.has(b) || (p.add(b), te(e, b) !== c && he(b, a === "selecao"));
1414
+ }, k = () => {
1415
+ l = !0, he(i, n, s), c = te(e, i) === !0, r.addEventListener("selectstart", u), document.body.style.userSelect = "none";
1416
+ }, x = (b) => {
1417
+ var O, B;
1365
1418
  if (!l) {
1366
- if (Math.hypot(v.clientX - t.clientX, v.clientY - t.clientY) < wa) return;
1367
- const S = (k = r.elementFromPoint(v.clientX, v.clientY)) == null ? void 0 : k.closest(o);
1368
- if (!S || S === i) return;
1369
- C();
1419
+ 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;
1422
+ k();
1370
1423
  }
1371
- v.preventDefault();
1372
- const y = Math.min(d, v.clientY), w = Math.max(d, v.clientY);
1373
- r.querySelectorAll(o).forEach((S) => {
1374
- const B = S.getBoundingClientRect();
1375
- if (B.height === 0) return;
1376
- const q = B.top + B.height / 2;
1377
- q >= y && q <= w && g(S);
1424
+ 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();
1428
+ if (T.height === 0) return;
1429
+ const F = T.top + T.height / 2;
1430
+ F >= h && F <= w && g(A);
1378
1431
  });
1379
- const $ = (O = r.elementFromPoint(v.clientX, v.clientY)) == null ? void 0 : O.closest(o);
1380
- $ && g($), d = v.clientY;
1381
- }, A = (v = !1) => {
1382
- (z == null ? void 0 : z.cancelar) === x && (z = null), window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", L), window.removeEventListener("pointercancel", L), window.removeEventListener("dragstart", p, !0), r.removeEventListener("selectstart", m), l && (document.body.style.userSelect = "", v || (window.addEventListener("click", f, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", f, !0), 0)));
1383
- }, L = () => A(), x = () => A(!0);
1384
- z = { host: e, cancelar: x }, window.addEventListener("dragstart", p, !0), window.addEventListener("pointermove", h, { passive: !1 }), window.addEventListener("pointerup", L), window.addEventListener("pointercancel", L);
1385
- }
1386
- function La(e, r) {
1432
+ const $ = (B = r.elementFromPoint(b.clientX, b.clientY)) == null ? void 0 : B.closest(o);
1433
+ $ && 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);
1438
+ }
1439
+ function Ma(e, r) {
1387
1440
  const a = r.getElementById("btn-toggle-all-vis");
1388
1441
  a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
1389
1442
  const i = r.getElementById("btn-toggle-all-expand");
@@ -1399,15 +1452,15 @@ function La(e, r) {
1399
1452
  e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
1400
1453
  });
1401
1454
  const n = r.getElementById("btn-colapsar");
1402
- n && n.addEventListener("click", () => e.colapsar(!0)), Ca(e, r);
1455
+ n && n.addEventListener("click", () => e.colapsar(!0)), za(e, r);
1403
1456
  }
1404
- function Ca(e, r) {
1457
+ function za(e, r) {
1405
1458
  const a = r.getElementById("input-layer-search"), i = r.getElementById("btn-clear-layer-search"), t = () => {
1406
1459
  var o;
1407
1460
  e.searchQuery = "", e.solicitarRenderizacao(), (o = r.getElementById("input-layer-search")) == null || o.focus();
1408
1461
  };
1409
1462
  if (a) {
1410
- const o = ye(() => e.solicitarRenderizacao(), 75);
1463
+ const o = Ee(() => e.solicitarRenderizacao(), 75);
1411
1464
  a.addEventListener("input", (n) => {
1412
1465
  e.searchQuery = n.target.value, o();
1413
1466
  }), a.addEventListener("keydown", (n) => {
@@ -1416,7 +1469,7 @@ function Ca(e, r) {
1416
1469
  }
1417
1470
  i && i.addEventListener("click", t);
1418
1471
  }
1419
- function $a(e, r) {
1472
+ function Fa(e, r) {
1420
1473
  r.querySelectorAll("[data-feat-select]").forEach((a) => {
1421
1474
  a.addEventListener("click", (i) => {
1422
1475
  if (e.editingFeatureId) return;
@@ -1441,7 +1494,7 @@ function $a(e, r) {
1441
1494
  if (o) {
1442
1495
  o.visible = o.visible === !1;
1443
1496
  const n = o.visible !== !1;
1444
- a.innerHTML = n ? b.olhoAberto : b.olhoFechado, T(a, n ? "Ocultar Feição" : "Exibir Feição");
1497
+ a.innerHTML = n ? v.olhoAberto : v.olhoFechado, D(a, n ? "Ocultar Feição" : "Exibir Feição");
1445
1498
  const s = a.closest(".ui-feat-row");
1446
1499
  s && s.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
1447
1500
  feicaoId: o.id,
@@ -1453,7 +1506,7 @@ function $a(e, r) {
1453
1506
  a.addEventListener("click", (i) => {
1454
1507
  if (i.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
1455
1508
  const t = a.getAttribute("data-feat-lock"), o = e.feicoes.find((n) => n.id === t);
1456
- o && (o.locked = !o.locked, a.innerHTML = o.locked ? b.cadeadoTrancado : b.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), T(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1509
+ o && (o.locked = !o.locked, a.innerHTML = o.locked ? v.cadeadoTrancado : v.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), D(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1457
1510
  feicaoId: o.id,
1458
1511
  bloqueado: o.locked
1459
1512
  }));
@@ -1466,29 +1519,32 @@ function $a(e, r) {
1466
1519
  });
1467
1520
  });
1468
1521
  }
1469
- function Sa(e, r) {
1470
- r.querySelectorAll("[data-basemap-thumb]").forEach((a) => {
1471
- a.addEventListener(
1522
+ function Ba(e, r) {
1523
+ var a;
1524
+ r.querySelectorAll("[data-basemap-thumb]").forEach((i) => {
1525
+ i.addEventListener(
1472
1526
  "error",
1473
1527
  () => {
1474
- const i = document.createElement("div");
1475
- i.className = "ui-basemap-preview-none", i.innerHTML = b.mapa, a.replaceWith(i);
1528
+ const t = document.createElement("div");
1529
+ t.className = "ui-basemap-preview-none", t.innerHTML = v.mapa, i.replaceWith(t);
1476
1530
  },
1477
1531
  { once: !0 }
1478
1532
  );
1479
- }), r.querySelectorAll("[data-basemap-id]").forEach((a) => {
1480
- a.addEventListener("click", () => {
1481
- const i = a.getAttribute("data-basemap-id");
1482
- i && e.selecionarMapaBase(i, !0);
1533
+ }), (a = r.querySelector("[data-basemap-toggle]")) == null || a.addEventListener("click", () => {
1534
+ e.alternarMapasBaseRecolhido(!0);
1535
+ }), r.querySelectorAll("[data-basemap-id]").forEach((i) => {
1536
+ i.addEventListener("click", () => {
1537
+ const t = i.getAttribute("data-basemap-id");
1538
+ t && e.selecionarMapaBase(t, !0);
1483
1539
  });
1484
1540
  });
1485
1541
  }
1486
- function Ma(e, r) {
1487
- La(e, r), va(e, r), $a(e, r), Sa(e, r), xa(e, r), ka(e, r);
1542
+ function qa(e, r) {
1543
+ Ma(e, r), ya(e, r), Fa(e, r), Ba(e, r), Aa(e, r), $a(e, r);
1488
1544
  }
1489
- function za(e, r, a, i) {
1490
- var g, C;
1491
- const t = We({
1545
+ function Da(e, r, a, i) {
1546
+ var g, k;
1547
+ const t = ra({
1492
1548
  camadas: e.camadas,
1493
1549
  feicoes: e.feicoes,
1494
1550
  camadaAtivaId: e.camadaAtivaId,
@@ -1499,37 +1555,37 @@ function za(e, r, a, i) {
1499
1555
  editingFeatureId: e.editingFeatureId,
1500
1556
  searchQuery: e.searchQuery,
1501
1557
  mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false"
1502
- }), o = e.mostrarMapasBase ? Ue(e.mapasBase, e.mapaBaseAtivo) : "", n = e.mostrarRodape ? _e(e.camadas, e.feicoes, e.selectedFeatureIds) : "", s = r.getElementById("ui-layer-tree-mount"), l = a.scrollTop, c = s ? s.scrollTop : 0, d = r.activeElement, u = d && a.contains(d) ? d.id : "", p = d && !u && a.contains(d) ? Array.from(d.attributes).find((h) => h.name.startsWith("data-") && h.value !== "") : void 0, f = d && "selectionStart" in d ? d.selectionStart : null;
1558
+ }), o = e.mostrarMapasBase ? Ke(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? Qe(e.camadas, e.feicoes, e.selectedFeatureIds) : "", s = r.getElementById("ui-layer-tree-mount"), l = a.scrollTop, c = s ? s.scrollTop : 0, d = r.activeElement, p = d && a.contains(d) ? d.id : "", f = d && !p && a.contains(d) ? Array.from(d.attributes).find((x) => x.name.startsWith("data-") && x.value !== "") : void 0, m = d && "selectionStart" in d ? d.selectionStart : null;
1503
1559
  a.innerHTML = `
1504
1560
  ${t}
1505
1561
  ${n}
1506
1562
  ${o}
1507
1563
  `, a.scrollTop = l;
1508
- const m = r.getElementById("ui-layer-tree-mount");
1509
- if (m && (m.scrollTop = c), u) {
1510
- const h = r.getElementById(u);
1511
- if (h && (h.focus({ preventScroll: !0 }), f !== null && typeof h.setSelectionRange == "function"))
1564
+ const u = r.getElementById("ui-layer-tree-mount");
1565
+ if (u && (u.scrollTop = c), p) {
1566
+ const x = r.getElementById(p);
1567
+ if (x && (x.focus({ preventScroll: !0 }), m !== null && typeof x.setSelectionRange == "function"))
1512
1568
  try {
1513
- h.setSelectionRange(f, f);
1569
+ x.setSelectionRange(m, m);
1514
1570
  } catch {
1515
1571
  }
1516
1572
  }
1517
- !u && p && ((g = P(a, p.name, p.value)) == null || g.focus({ preventScroll: !0 })), (C = r.querySelector("[data-layer-row], [data-feat-row]")) == null || C.setAttribute("tabindex", "0"), Ma(e, r), i.bindAll();
1573
+ !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();
1518
1574
  }
1519
- const Fa = '[role="button"][tabindex]', j = "[data-layer-row], [data-feat-row]", Ba = ["color", "range", "checkbox", "radio", "button"];
1520
- function Ie(e) {
1521
- return e instanceof HTMLSelectElement || e instanceof HTMLTextAreaElement ? !0 : e instanceof HTMLInputElement && !Ba.includes(e.type);
1575
+ const Pa = '[role="button"][tabindex]', H = "[data-layer-row], [data-feat-row]", Ta = ["color", "range", "checkbox", "radio", "button"];
1576
+ function Se(e) {
1577
+ return e instanceof HTMLSelectElement || e instanceof HTMLTextAreaElement ? !0 : e instanceof HTMLInputElement && !Ta.includes(e.type);
1522
1578
  }
1523
- function qa(e) {
1524
- return Array.from(e.querySelectorAll(j)).filter((r) => {
1579
+ function Ra(e) {
1580
+ return Array.from(e.querySelectorAll(H)).filter((r) => {
1525
1581
  const a = r.closest(".ui-children-container");
1526
1582
  return !(a && a.style.display === "none") && !r.classList.contains("ui-search-hidden");
1527
1583
  });
1528
1584
  }
1529
- function U(e, r) {
1530
- r && (e.querySelectorAll(j).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
1585
+ function Y(e, r) {
1586
+ r && (e.querySelectorAll(H).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
1531
1587
  }
1532
- function Da(e, r) {
1588
+ function Oa(e, r) {
1533
1589
  e.dispatchEvent(
1534
1590
  new MouseEvent("click", {
1535
1591
  bubbles: !0,
@@ -1538,9 +1594,9 @@ function Da(e, r) {
1538
1594
  })
1539
1595
  );
1540
1596
  }
1541
- function Ta(e, r, a) {
1597
+ function ja(e, r, a) {
1542
1598
  var i;
1543
- if (!Ie(a.composedPath()[0])) {
1599
+ if (!Se(a.composedPath()[0])) {
1544
1600
  if (e.activeSettingsLayerId) {
1545
1601
  a.preventDefault();
1546
1602
  const t = e.activeSettingsLayerId;
@@ -1550,28 +1606,28 @@ function Ta(e, r, a) {
1550
1606
  e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
1551
1607
  }
1552
1608
  }
1553
- function Pa(e, r, a) {
1609
+ function Ha(e, r, a) {
1554
1610
  var n;
1555
1611
  const i = a.composedPath()[0];
1556
- if (!(i instanceof HTMLElement) || Ie(i)) return;
1557
- if ((a.key === "Enter" || a.key === " ") && i.matches(Fa)) {
1612
+ if (!(i instanceof HTMLElement) || Se(i)) return;
1613
+ if ((a.key === "Enter" || a.key === " ") && i.matches(Pa)) {
1558
1614
  a.preventDefault(), i.click();
1559
1615
  return;
1560
1616
  }
1561
- if (!i.matches(j)) return;
1562
- const t = qa(e), o = t.indexOf(i);
1617
+ if (!i.matches(H)) return;
1618
+ const t = Ra(e), o = t.indexOf(i);
1563
1619
  switch (a.key) {
1564
1620
  case "ArrowDown":
1565
- a.preventDefault(), U(e, t[Math.min(t.length - 1, o + 1)]);
1621
+ a.preventDefault(), Y(e, t[Math.min(t.length - 1, o + 1)]);
1566
1622
  break;
1567
1623
  case "ArrowUp":
1568
- a.preventDefault(), U(e, t[Math.max(0, o - 1)]);
1624
+ a.preventDefault(), Y(e, t[Math.max(0, o - 1)]);
1569
1625
  break;
1570
1626
  case "Home":
1571
- a.preventDefault(), U(e, t[0]);
1627
+ a.preventDefault(), Y(e, t[0]);
1572
1628
  break;
1573
1629
  case "End":
1574
- a.preventDefault(), U(e, t[t.length - 1]);
1630
+ a.preventDefault(), Y(e, t[t.length - 1]);
1575
1631
  break;
1576
1632
  case "ArrowRight":
1577
1633
  case "ArrowLeft": {
@@ -1583,19 +1639,19 @@ function Pa(e, r, a) {
1583
1639
  }
1584
1640
  case "Enter":
1585
1641
  case " ":
1586
- a.preventDefault(), Da(i, a);
1642
+ a.preventDefault(), Oa(i, a);
1587
1643
  break;
1588
1644
  }
1589
1645
  }
1590
- function Ra(e, r, a, i, t) {
1646
+ function Na(e, r, a, i, t) {
1591
1647
  t.add(r, "keydown", (o) => {
1592
- o.key === "Escape" && Ta(e, a, o);
1593
- }), t.add(i, "keydown", (o) => Pa(i, a, o)), t.add(i, "focusin", (o) => {
1648
+ o.key === "Escape" && ja(e, a, o);
1649
+ }), t.add(i, "keydown", (o) => Ha(i, a, o)), t.add(i, "focusin", (o) => {
1594
1650
  const n = o.composedPath()[0];
1595
- n instanceof HTMLElement && n.matches(j) && (i.querySelectorAll(j).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
1651
+ n instanceof HTMLElement && n.matches(H) && (i.querySelectorAll(H).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
1596
1652
  });
1597
1653
  }
1598
- function Oa(e, r) {
1654
+ function Ga(e, r) {
1599
1655
  r.querySelectorAll("[data-layer-row]").forEach((i) => {
1600
1656
  const o = i.getAttribute("data-layer-row") === e.camadaAtivaId;
1601
1657
  i.classList.toggle("active-drawing-layer", o);
@@ -1610,46 +1666,46 @@ function Oa(e, r) {
1610
1666
  }
1611
1667
  });
1612
1668
  }
1613
- function ja(e, r) {
1614
- r.querySelectorAll(".ui-feat-row").forEach((h) => {
1615
- const A = h.getAttribute("data-feat-row"), L = A ? e.selectedFeatureIds.has(A) : !1;
1616
- h.classList.toggle("selected-row", L), h.setAttribute("aria-selected", String(L));
1617
- const x = h.querySelector(".ui-target-circle");
1618
- x && x.classList.toggle("selected", L);
1619
- }), r.querySelectorAll(".ui-layer-group").forEach((h) => {
1620
- const A = h.getAttribute("data-layer-id"), L = e.feicoes.filter((v) => v.layerId === A), x = h.querySelector(".ui-layer-row .ui-target-circle");
1621
- if (x && L.length > 0) {
1622
- const v = L.every((w) => e.selectedFeatureIds.has(w.id)), y = !v && L.some((w) => e.selectedFeatureIds.has(w.id));
1623
- x.classList.toggle("selected", v), x.classList.toggle("partial", y);
1624
- } else x && x.classList.remove("selected", "partial");
1669
+ function Va(e, r) {
1670
+ r.querySelectorAll(".ui-feat-row").forEach((x) => {
1671
+ const y = x.getAttribute("data-feat-row"), C = y ? e.selectedFeatureIds.has(y) : !1;
1672
+ x.classList.toggle("selected-row", C), x.setAttribute("aria-selected", String(C));
1673
+ const L = x.querySelector(".ui-target-circle");
1674
+ L && L.classList.toggle("selected", C);
1675
+ }), 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");
1677
+ 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));
1679
+ L.classList.toggle("selected", b), L.classList.toggle("partial", h);
1680
+ } else L && L.classList.remove("selected", "partial");
1625
1681
  });
1626
- const a = e.feicoes.filter((h) => e.selectedFeatureIds.has(h.id)), i = a.length > 0, t = r.getElementById("footer-count"), o = r.getElementById("footer-label");
1682
+ 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");
1627
1683
  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");
1628
- const n = r.querySelector(".ui-footer-metric"), s = xe(a);
1629
- n && (s ? (n.innerHTML = `${b.reguaMetrica} ${s}`, n.style.display = "inline-flex") : n.style.display = "none");
1684
+ const n = r.querySelector(".ui-footer-metric"), s = we(a);
1685
+ n && (s ? (n.innerHTML = `${v.reguaMetrica} ${s}`, n.style.display = "inline-flex") : n.style.display = "none");
1630
1686
  const l = r.querySelector(".ui-tree-footer");
1631
1687
  l && (l.classList.toggle("tem-selecao", i), l.classList.toggle("sem-selecao", !i));
1632
1688
  const c = r.querySelector(".ui-footer-actions-gerais");
1633
1689
  c && (c.style.display = i ? "none" : "flex");
1634
1690
  const d = r.querySelector(".ui-footer-bulk-actions");
1635
- d && (d.style.display = i ? "flex" : "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((h) => {
1636
- const A = r.getElementById(h);
1637
- A && (A.disabled = !i, A.classList.toggle("disabled", !i));
1691
+ 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));
1638
1694
  });
1639
- const u = r.querySelector(".ui-footer-move-wrapper");
1640
- u && u.classList.toggle("disabled", !i);
1641
- const p = r.getElementById("select-footer-move");
1642
- p && (p.disabled = !i);
1643
- const f = r.querySelector(".ui-footer-color-wrapper");
1644
- f && f.classList.toggle("disabled", !i);
1645
- const m = r.getElementById("input-footer-color");
1646
- m && (m.disabled = !i);
1695
+ const p = r.querySelector(".ui-footer-move-wrapper");
1696
+ p && p.classList.toggle("disabled", !i);
1697
+ const f = r.getElementById("select-footer-move");
1698
+ f && (f.disabled = !i);
1699
+ const m = r.querySelector(".ui-footer-color-wrapper");
1700
+ m && m.classList.toggle("disabled", !i);
1701
+ const u = r.getElementById("input-footer-color");
1702
+ u && (u.disabled = !i);
1647
1703
  let g = r.getElementById("btn-footer-clear");
1648
- const C = r.querySelector(".ui-footer-right");
1649
- i && !g && C ? (g = document.createElement("button"), g.id = "btn-footer-clear", g.className = "ui-footer-btn btn-clear-footer", g.title = "Limpar seleção", g.innerHTML = b.fechar, g.addEventListener("click", () => e.limparSelecao(!0)), C.appendChild(g)) : !i && g && g.remove();
1704
+ const k = r.querySelector(".ui-footer-right");
1705
+ i && !g && k ? (g = document.createElement("button"), g.id = "btn-footer-clear", g.className = "ui-footer-btn btn-clear-footer", g.title = "Limpar seleção", g.innerHTML = v.fechar, g.addEventListener("click", () => e.limparSelecao(!0)), k.appendChild(g)) : !i && g && g.remove();
1650
1706
  }
1651
- function Ha(e, r, a, i, t) {
1652
- const o = Qe(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !i && !o.includes(r) && e.feicoes.some((l) => l.id === r), s = Je(
1707
+ function Ua(e, r, a, i, t) {
1708
+ const o = ea(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !i && !o.includes(r) && e.feicoes.some((l) => l.id === r), s = aa(
1653
1709
  n ? [...o, r] : o,
1654
1710
  e.selectedFeatureIds,
1655
1711
  e.lastClickedFeatureId,
@@ -1659,33 +1715,33 @@ function Ha(e, r, a, i, t) {
1659
1715
  );
1660
1716
  s && (e.selectedFeatureIds = s.selecionados, e.lastClickedFeatureId = s.ultimoClicadoId, e.sincronizarSelecaoDOM(), t && e.notificarMudancaSelecao());
1661
1717
  }
1662
- function Na(e, r, a) {
1718
+ function Ya(e, r, a) {
1663
1719
  const i = r || [];
1664
1720
  i.length === e.selectedFeatureIds.size && i.every((n) => e.selectedFeatureIds.has(n)) || (e.selectedFeatureIds.clear(), i.forEach((n) => e.selectedFeatureIds.add(n)), e.lastClickedFeatureId = i.length > 0 ? i[i.length - 1] : null, e.sincronizarSelecaoDOM(), a && e.notificarMudancaSelecao());
1665
1721
  }
1666
- function Ga(e, r) {
1722
+ function _a(e, r) {
1667
1723
  e.selectedFeatureIds.size !== 0 && (e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.sincronizarSelecaoDOM(), r && e.notificarMudancaSelecao());
1668
1724
  }
1669
- function Ua(e) {
1725
+ function Ka(e) {
1670
1726
  const r = e.feicoes.filter((a) => e.selectedFeatureIds.has(a.id));
1671
1727
  e.dispararEvento("ui-feicoes-selecionadas", {
1672
1728
  feicoesIds: Array.from(e.selectedFeatureIds),
1673
1729
  feicoes: r
1674
1730
  }), r.length === 1 ? e.dispararEvento("ui-feicao-selecionada", { feicaoId: r[0].id, feicao: r[0] }) : r.length === 0 && e.dispararEvento("ui-feicao-selecionada", { feicaoId: null, feicao: null });
1675
1731
  }
1676
- class Ya {
1732
+ class Xa {
1677
1733
  constructor(r) {
1678
1734
  E(this, "origens", /* @__PURE__ */ new Map());
1679
1735
  E(this, "removidas", /* @__PURE__ */ new Set());
1680
- E(this, "salvarComDebounce", ye(() => this.salvar(), 200));
1736
+ E(this, "salvarComDebounce", Ee(() => this.salvar(), 200));
1681
1737
  this.instantaneo = r;
1682
1738
  }
1683
1739
  chaveAtual() {
1684
1740
  const r = this.instantaneo();
1685
- return da(r.storageKey, r.id);
1741
+ return ma(r.storageKey, r.id);
1686
1742
  }
1687
1743
  carregar() {
1688
- return te(this.chaveAtual());
1744
+ return oe(this.chaveAtual());
1689
1745
  }
1690
1746
  /** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
1691
1747
  agendar() {
@@ -1694,8 +1750,8 @@ class Ya {
1694
1750
  salvar() {
1695
1751
  const r = this.instantaneo();
1696
1752
  if (!r.persistir || !r.conectado) return;
1697
- const a = this.chaveAtual(), i = ma({
1698
- estadoAnterior: te(a),
1753
+ const a = this.chaveAtual(), i = ha({
1754
+ estadoAnterior: oe(a),
1699
1755
  origensCamadas: this.origens,
1700
1756
  camadas: r.camadas,
1701
1757
  expandedLayers: r.expandedLayers,
@@ -1706,36 +1762,36 @@ class Ya {
1706
1762
  altura: r.altura,
1707
1763
  camadasRemovidas: this.removidas
1708
1764
  });
1709
- this.removidas.clear(), ua(a, i);
1765
+ this.removidas.clear(), ga(a, i);
1710
1766
  }
1711
1767
  limpar() {
1712
- pa(this.chaveAtual());
1768
+ va(this.chaveAtual());
1713
1769
  }
1714
1770
  // --- Origens (como a camada chegou do consumidor) e remoções ---
1715
1771
  limparOrigens() {
1716
1772
  this.origens.clear();
1717
1773
  }
1718
1774
  registrarOrigem(r) {
1719
- this.origens.set(r.id, ke(r));
1775
+ this.origens.set(r.id, $e(r));
1720
1776
  }
1721
1777
  esquecerCamada(r) {
1722
1778
  this.origens.delete(r), this.removidas.add(r);
1723
1779
  }
1724
1780
  /** Aplica por cima de `camadas` o que foi lembrado (expansão, visibilidade, travas, opacidade, cor, ordem). */
1725
1781
  reidratar(r, a, i) {
1726
- fa(r, a, i, this.origens);
1782
+ ba(r, a, i, this.origens);
1727
1783
  }
1728
1784
  }
1729
- function Le(e, r = null) {
1785
+ function Me(e, r = null) {
1730
1786
  const a = [];
1731
1787
  for (const i of e) {
1732
1788
  const t = { ...i };
1733
- r && t.parentId === void 0 && (t.parentId = r), a.push(t), Array.isArray(i.children) && i.children.length > 0 && a.push(...Le(i.children, i.id));
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));
1734
1790
  }
1735
1791
  return a;
1736
1792
  }
1737
- function _a(e, r, a) {
1738
- if (e.camadas = Array.isArray(r) ? Le(r) : [], e.lembranca.limparOrigens(), e.persistir) {
1793
+ function Qa(e, r, a) {
1794
+ if (e.camadas = Array.isArray(r) ? Me(r) : [], e.lembranca.limparOrigens(), e.persistir) {
1739
1795
  const t = e.lembranca.carregar();
1740
1796
  e.lembranca.reidratar(e.camadas, t, e.expandedLayers), t != null && t.camadaAtivaId && e.camadas.some((o) => o.id === t.camadaAtivaId) && (e.camadaAtivaId = t.camadaAtivaId);
1741
1797
  } else
@@ -1748,15 +1804,15 @@ function _a(e, r, a) {
1748
1804
  o.length > 0 && console.warn(
1749
1805
  `[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
1750
1806
  o.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
1751
- ), ne(e.selectedFeatureIds, e.feicoes);
1807
+ ), le(e.selectedFeatureIds, e.feicoes);
1752
1808
  }
1753
1809
  const i = e.getAttribute("camada-ativa");
1754
1810
  e.camadas.length > 0 && (!i || !e.camadas.some((t) => t.id === i)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
1755
1811
  }
1756
- function Va(e, r) {
1757
- e.feicoes = Array.isArray(r) ? r.map((a) => ({ ...a })) : [], ne(e.selectedFeatureIds, e.feicoes), e.solicitarRenderizacao();
1812
+ function Ja(e, r) {
1813
+ e.feicoes = Array.isArray(r) ? r.map((a) => ({ ...a })) : [], le(e.selectedFeatureIds, e.feicoes), e.solicitarRenderizacao();
1758
1814
  }
1759
- function Ka(e, r) {
1815
+ function Wa(e, r) {
1760
1816
  if (!r || !r.id) return;
1761
1817
  if (e.camadas.some((i) => i.id === r.id)) {
1762
1818
  console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);
@@ -1765,13 +1821,13 @@ function Ka(e, r) {
1765
1821
  const a = { ...r };
1766
1822
  e.camadas.push(a), e.lembranca.registrarOrigem(a), e.expandedLayers.add(a.id), a.parentId && e.expandedLayers.add(a.parentId), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
1767
1823
  }
1768
- function Xa(e, r) {
1824
+ function Za(e, r) {
1769
1825
  var a;
1770
1826
  e.camadas.forEach((i) => {
1771
1827
  i.parentId === r && (i.parentId = null);
1772
- }), 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), ne(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();
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();
1773
1829
  }
1774
- function Qa(e, r) {
1830
+ function er(e, r) {
1775
1831
  if (!(!r || !r.id)) {
1776
1832
  if (e.feicoes.some((a) => a.id === r.id)) {
1777
1833
  console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);
@@ -1780,14 +1836,14 @@ function Qa(e, r) {
1780
1836
  e.feicoes.push({ ...r }), e.solicitarRenderizacao();
1781
1837
  }
1782
1838
  }
1783
- function Ja(e, r) {
1839
+ function ar(e, r) {
1784
1840
  const a = e.feicoes.findIndex((i) => i.id === r.id);
1785
1841
  a !== -1 && (e.feicoes[a] = { ...e.feicoes[a], ...r }, e.solicitarRenderizacao());
1786
1842
  }
1787
- function Wa(e, r) {
1843
+ function rr(e, r) {
1788
1844
  e.feicoes = e.feicoes.filter((a) => a.id !== r), e.selectedFeatureIds.delete(r), e.solicitarRenderizacao();
1789
1845
  }
1790
- function Za(e) {
1846
+ function tr(e) {
1791
1847
  function i() {
1792
1848
  return e.getMinAltura ? e.getMinAltura() : 140;
1793
1849
  }
@@ -1805,64 +1861,64 @@ function Za(e) {
1805
1861
  );
1806
1862
  return;
1807
1863
  }
1808
- const u = typeof c == "number" ? c : parseFloat(String(c));
1809
- if (isNaN(u)) return;
1810
- const p = Math.max(i(), Math.min(t(), Math.round(u)));
1811
- e.hostElement.style.height = `${p}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${p}px`), d && e.hostElement.dispatchEvent(
1864
+ const p = typeof c == "number" ? c : parseFloat(String(c));
1865
+ if (isNaN(p)) return;
1866
+ const f = Math.max(i(), Math.min(t(), Math.round(p)));
1867
+ e.hostElement.style.height = `${f}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${f}px`), d && e.hostElement.dispatchEvent(
1812
1868
  new CustomEvent("ui-redimensionar-altura", {
1813
1869
  bubbles: !0,
1814
1870
  composed: !0,
1815
- detail: { altura: p }
1871
+ detail: { altura: f }
1816
1872
  })
1817
1873
  );
1818
1874
  }
1819
1875
  let n = null;
1820
1876
  function s() {
1821
1877
  if (!e.resizerElement) return;
1822
- let c = !1, d = 0, u = 0;
1823
- const p = (m) => {
1824
- if (m.button !== 0) return;
1825
- m.preventDefault(), m.stopPropagation(), c = !0, d = m.clientY, u = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
1878
+ let c = !1, d = 0, p = 0;
1879
+ const f = (u) => {
1880
+ if (u.button !== 0) return;
1881
+ u.preventDefault(), u.stopPropagation(), c = !0, d = u.clientY, p = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
1826
1882
  try {
1827
- e.resizerElement.setPointerCapture(m.pointerId);
1883
+ e.resizerElement.setPointerCapture(u.pointerId);
1828
1884
  } catch {
1829
1885
  }
1830
- const g = (A) => {
1886
+ const g = (y) => {
1831
1887
  if (!c) return;
1832
- A.preventDefault();
1833
- const L = A.clientY - d, x = Math.max(i(), Math.min(t(), Math.round(u + L)));
1834
- e.hostElement.style.height = `${x}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${x}px`), e.onRedimensionando && e.onRedimensionando(x), e.hostElement.dispatchEvent(
1888
+ y.preventDefault();
1889
+ const C = y.clientY - d, L = Math.max(i(), Math.min(t(), Math.round(p + C)));
1890
+ e.hostElement.style.height = `${L}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${L}px`), e.onRedimensionando && e.onRedimensionando(L), e.hostElement.dispatchEvent(
1835
1891
  new CustomEvent("ui-redimensionando-altura", {
1836
1892
  bubbles: !0,
1837
1893
  composed: !0,
1838
- detail: { altura: x }
1894
+ detail: { altura: L }
1839
1895
  })
1840
1896
  );
1841
- }, C = () => {
1842
- var A;
1843
- c = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", h), window.removeEventListener("pointercancel", h), (A = e.resizerElement) == null || A.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1844
- }, h = (A) => {
1897
+ }, 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) => {
1845
1901
  if (!c) return;
1846
1902
  c = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1847
1903
  try {
1848
- e.resizerElement.hasPointerCapture(A.pointerId) && e.resizerElement.releasePointerCapture(A.pointerId);
1904
+ e.resizerElement.hasPointerCapture(y.pointerId) && e.resizerElement.releasePointerCapture(y.pointerId);
1849
1905
  } catch {
1850
1906
  }
1851
- window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", h), window.removeEventListener("pointercancel", h);
1852
- const L = e.hostElement.getBoundingClientRect().height, x = Math.round(L);
1853
- e.onAlturaAlterada && e.onAlturaAlterada(x), e.hostElement.dispatchEvent(
1907
+ window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x);
1908
+ const C = e.hostElement.getBoundingClientRect().height, L = Math.round(C);
1909
+ e.onAlturaAlterada && e.onAlturaAlterada(L), e.hostElement.dispatchEvent(
1854
1910
  new CustomEvent("ui-redimensionar-altura", {
1855
1911
  bubbles: !0,
1856
1912
  composed: !0,
1857
- detail: { altura: x }
1913
+ detail: { altura: L }
1858
1914
  })
1859
1915
  );
1860
1916
  };
1861
- n = C, window.addEventListener("pointermove", g), window.addEventListener("pointerup", h), window.addEventListener("pointercancel", h);
1862
- }, f = (m) => {
1863
- m.preventDefault(), m.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
1917
+ n = k, window.addEventListener("pointermove", g), window.addEventListener("pointerup", x), window.addEventListener("pointercancel", x);
1918
+ }, m = (u) => {
1919
+ u.preventDefault(), u.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
1864
1920
  };
1865
- e.listeners.add(e.resizerElement, "pointerdown", p), e.listeners.add(e.resizerElement, "dblclick", f);
1921
+ e.listeners.add(e.resizerElement, "pointerdown", f), e.listeners.add(e.resizerElement, "dblclick", m);
1866
1922
  }
1867
1923
  function l() {
1868
1924
  n == null || n(), e.listeners.cleanup();
@@ -1873,11 +1929,11 @@ function Za(e) {
1873
1929
  destruir: l
1874
1930
  };
1875
1931
  }
1876
- const R = class R extends Re {
1932
+ const R = class R extends Ne {
1877
1933
  constructor() {
1878
1934
  super();
1879
1935
  E(this, "shadow");
1880
- E(this, "listeners", new Oe());
1936
+ E(this, "listeners", new Ge());
1881
1937
  E(this, "dragDropManager");
1882
1938
  E(this, "resizerController");
1883
1939
  E(this, "alturaCustomizada", null);
@@ -1885,7 +1941,7 @@ const R = class R extends Re {
1885
1941
  E(this, "profundidadeLote", 0);
1886
1942
  E(this, "renderPendente", !1);
1887
1943
  /** @internal */
1888
- E(this, "lembranca", new Ya(() => ({
1944
+ E(this, "lembranca", new Xa(() => ({
1889
1945
  persistir: this.persistir,
1890
1946
  conectado: this.conectado,
1891
1947
  storageKey: this.storageKey,
@@ -1901,7 +1957,7 @@ const R = class R extends Re {
1901
1957
  // Estado interno
1902
1958
  E(this, "camadas", []);
1903
1959
  E(this, "feicoes", []);
1904
- E(this, "mapasBase", [...we]);
1960
+ E(this, "mapasBase", [...Ae]);
1905
1961
  E(this, "expandedLayers", /* @__PURE__ */ new Set());
1906
1962
  E(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
1907
1963
  E(this, "lastClickedFeatureId", null);
@@ -1912,7 +1968,7 @@ const R = class R extends Re {
1912
1968
  E(this, "corpoElement");
1913
1969
  E(this, "btnExpandirFlutuante");
1914
1970
  this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
1915
- <style>${ga}</style>
1971
+ <style>${xa}</style>
1916
1972
  <div class="ui-camadas-container" id="panel-container" role="region" aria-label="Painel de Camadas">
1917
1973
  <div class="ui-camadas-corpo" id="painel-corpo"></div>
1918
1974
  <div class="ui-camadas-resizer-altura" id="resizer-altura" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
@@ -1920,11 +1976,11 @@ const R = class R extends Re {
1920
1976
  </div>
1921
1977
  </div>
1922
1978
  <button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
1923
- ${b.camadas}
1979
+ ${v.camadas}
1924
1980
  </button>
1925
- `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new la(this, this.shadow);
1981
+ `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new pa(this, this.shadow);
1926
1982
  const a = this.shadow.getElementById("resizer-altura");
1927
- this.resizerController = Za({
1983
+ this.resizerController = tr({
1928
1984
  hostElement: this,
1929
1985
  resizerElement: a,
1930
1986
  listeners: this.listeners,
@@ -1951,6 +2007,7 @@ const R = class R extends Re {
1951
2007
  "colapsado",
1952
2008
  "flutuante",
1953
2009
  "mostrar-mapas-base",
2010
+ "mapas-base-recolhido",
1954
2011
  "mostrar-rodape",
1955
2012
  "mostrar-busca",
1956
2013
  "densidade",
@@ -1965,20 +2022,20 @@ const R = class R extends Re {
1965
2022
  }
1966
2023
  connectedCallback() {
1967
2024
  if (this.persistir) {
1968
- const a = te(this.obterChaveStorageAtual());
2025
+ const a = oe(this.obterChaveStorageAtual());
1969
2026
  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));
1970
2027
  }
1971
2028
  this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (R.instanciasChavePadrao.size > 0 && console.warn(
1972
2029
  "[UI-Camadas] Mais de um painel sem 'id' nem 'storage-key' divide a mesma chave de persistência e um sobrescreve o estado do outro. Defina 'storage-key' (ou 'id') em cada um."
1973
- ), R.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), Ra(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
2030
+ ), R.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), Na(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
1974
2031
  }
1975
2032
  disconnectedCallback() {
1976
2033
  var a, i;
1977
- this.conectado = !1, R.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (i = this.dragDropManager) == null || i.destruir(), Aa(this), this.listeners.cleanup();
2034
+ this.conectado = !1, R.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (i = this.dragDropManager) == null || i.destruir(), Ca(this), this.listeners.cleanup();
1978
2035
  }
1979
2036
  attributeChangedCallback(a, i, t) {
1980
2037
  var o;
1981
- i !== t && (a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "mapa-base-ativo" ? t && this.marcarMapaBaseAtivoNoDOM(t) : a === "mostrar-mapas-base" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" && ((o = this.resizerController) == null || o.definirAltura(t, !1)));
2038
+ i !== t && (a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "mapa-base-ativo" ? t && this.marcarMapaBaseAtivoNoDOM(t) : a === "mostrar-mapas-base" || a === "mapas-base-recolhido" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" && ((o = this.resizerController) == null || o.definirAltura(t, !1)));
1982
2039
  }
1983
2040
  // --- Getters e Setters de Propriedades Reativas ---
1984
2041
  get titulo() {
@@ -2004,10 +2061,23 @@ const R = class R extends Re {
2004
2061
  !a || this.mapaBaseAtivo === a || (this.mapaBaseAtivo = a, this.marcarMapaBaseAtivoNoDOM(a), this.salvarLembrancaEstado(), i && this.dispararEvento("ui-mapa-base-alterado", { mapaBaseId: a }));
2005
2062
  }
2006
2063
  marcarMapaBaseAtivoNoDOM(a) {
2007
- this.shadow.querySelectorAll("[data-basemap-id]").forEach((i) => {
2008
- const t = i.getAttribute("data-basemap-id") === a;
2009
- i.classList.toggle("active", t), i.setAttribute("aria-pressed", String(t));
2064
+ this.shadow.querySelectorAll("[data-basemap-id]").forEach((t) => {
2065
+ const o = t.getAttribute("data-basemap-id") === a;
2066
+ t.classList.toggle("active", o), t.setAttribute("aria-pressed", String(o));
2010
2067
  });
2068
+ const i = this.shadow.querySelector("[data-basemap-atual]");
2069
+ i && (i.textContent = ke(this.mapasBase, a));
2070
+ }
2071
+ /** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
2072
+ get mapasBaseRecolhido() {
2073
+ return this.hasAttribute("mapas-base-recolhido");
2074
+ }
2075
+ set mapasBaseRecolhido(a) {
2076
+ a ? this.setAttribute("mapas-base-recolhido", "") : this.removeAttribute("mapas-base-recolhido");
2077
+ }
2078
+ /** Alterna a seção de mapas base; com `emitirEvento`, dispara `ui-mapas-base-recolhimento`. */
2079
+ alternarMapasBaseRecolhido(a = !1) {
2080
+ this.mapasBaseRecolhido = !this.mapasBaseRecolhido, a && this.dispararEvento("ui-mapas-base-recolhimento", { recolhido: this.mapasBaseRecolhido });
2011
2081
  }
2012
2082
  get abaAtiva() {
2013
2083
  return this.getAttribute("aba-ativa") || "camadas";
@@ -2130,10 +2200,10 @@ const R = class R extends Re {
2130
2200
  this.definirMapasBase(a);
2131
2201
  }
2132
2202
  definirCamadas(a, i) {
2133
- _a(this, a, i);
2203
+ Qa(this, a, i);
2134
2204
  }
2135
2205
  definirFeicoes(a) {
2136
- Va(this, a);
2206
+ Ja(this, a);
2137
2207
  }
2138
2208
  definirMapasBase(a) {
2139
2209
  this.mapasBase = Array.isArray(a) ? [...a] : [], this.solicitarRenderizacao();
@@ -2157,28 +2227,28 @@ const R = class R extends Re {
2157
2227
  return this.feicoes.filter((a) => this.selectedFeatureIds.has(a.id));
2158
2228
  }
2159
2229
  adicionarCamada(a) {
2160
- Ka(this, a);
2230
+ Wa(this, a);
2161
2231
  }
2162
2232
  removerCamada(a) {
2163
- Xa(this, a);
2233
+ Za(this, a);
2164
2234
  }
2165
2235
  adicionarFeicao(a) {
2166
- Qa(this, a);
2236
+ er(this, a);
2167
2237
  }
2168
2238
  atualizarFeicao(a) {
2169
- Ja(this, a);
2239
+ ar(this, a);
2170
2240
  }
2171
2241
  removerFeicao(a) {
2172
- Wa(this, a);
2242
+ rr(this, a);
2173
2243
  }
2174
2244
  selecionarFeicao(a, i = !1, t = !1, o = !1) {
2175
- Ha(this, a, i, t, o);
2245
+ Ua(this, a, i, t, o);
2176
2246
  }
2177
2247
  selecionarFeicoes(a, i = !1) {
2178
- Na(this, a, i);
2248
+ Ya(this, a, i);
2179
2249
  }
2180
2250
  limparSelecao(a = !1) {
2181
- Ga(this, a);
2251
+ _a(this, a);
2182
2252
  }
2183
2253
  expandirTodas() {
2184
2254
  this.expandedLayers = new Set(this.camadas.map((a) => a.id)), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
@@ -2234,7 +2304,7 @@ const R = class R extends Re {
2234
2304
  );
2235
2305
  }
2236
2306
  render() {
2237
- this.corpoElement && za(this, this.shadow, this.corpoElement, this.dragDropManager);
2307
+ this.corpoElement && Da(this, this.shadow, this.corpoElement, this.dragDropManager);
2238
2308
  }
2239
2309
  // --- Conexão de Eventos ---
2240
2310
  conectarEventosGerais() {
@@ -2242,27 +2312,27 @@ const R = class R extends Re {
2242
2312
  }
2243
2313
  // --- Sincronização de DOM (delegada) ---
2244
2314
  sincronizarCamadaAtivaDOM() {
2245
- Oa(this, this.shadow);
2315
+ Ga(this, this.shadow);
2246
2316
  }
2247
2317
  sincronizarSelecaoDOM() {
2248
- ja(this, this.shadow);
2318
+ Va(this, this.shadow);
2249
2319
  }
2250
2320
  // --- Auxiliares Internos ---
2251
2321
  notificarMudancaSelecao() {
2252
- Ua(this);
2322
+ Ka(this);
2253
2323
  }
2254
2324
  };
2255
2325
  /** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
2256
2326
  E(R, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2257
- let H = R;
2258
- class er extends H {
2327
+ let N = R;
2328
+ class ir extends N {
2259
2329
  }
2260
- class ar extends H {
2330
+ class or extends N {
2261
2331
  }
2262
- oe("ui-camadas", H);
2263
- oe("ui-painel-camadas", er);
2264
- oe("ui-layer-panel", ar);
2265
- function nr(e) {
2332
+ se("ui-camadas", N);
2333
+ se("ui-painel-camadas", ir);
2334
+ se("ui-layer-panel", or);
2335
+ function dr(e) {
2266
2336
  var r;
2267
2337
  return {
2268
2338
  id: e.id,
@@ -2279,7 +2349,7 @@ function nr(e) {
2279
2349
  dados: e.dados
2280
2350
  };
2281
2351
  }
2282
- function sr(e, r = "levantamento", a = "feicoes") {
2352
+ function ur(e, r = "levantamento", a = "feicoes") {
2283
2353
  return {
2284
2354
  id: e.id,
2285
2355
  nome: e.name,
@@ -2298,7 +2368,7 @@ function sr(e, r = "levantamento", a = "feicoes") {
2298
2368
  dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
2299
2369
  };
2300
2370
  }
2301
- function lr(e, r = "") {
2371
+ function pr(e, r = "") {
2302
2372
  var o, n, s, l;
2303
2373
  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;
2304
2374
  return {
@@ -2317,39 +2387,41 @@ function lr(e, r = "") {
2317
2387
  };
2318
2388
  }
2319
2389
  export {
2320
- la as CamadasDragDropManager,
2321
- b as ICONES,
2322
- Ae as LIMITE_FEICOES_POR_CAMADA,
2323
- we as MAPAS_BASE_PADRAO,
2324
- H as UICamadas,
2325
- ar as UILayerPanel,
2326
- ur as UIMapaBase,
2327
- er as UIPainelCamadas,
2328
- pr as UISeletorMapaBase,
2329
- W as calcularAreaAnelSimples,
2330
- he as calcularAreaPoligono,
2331
- be as calcularComprimentoLinha,
2332
- je as calcularDistanciaPontos,
2333
- Je as calcularSelecaoFeicao,
2334
- te as carregarEstadoPersistido,
2335
- Xe as construirHierarquiaCamadas,
2336
- sr as converterCamadaItemParaCanvasLayer,
2337
- nr as converterCanvasLayerParaCamadaItem,
2338
- lr as converterFeicaoParaItem,
2339
- M as escapeHtml,
2340
- _ as filtrarFeicoesPorBusca,
2341
- xe as formatarMetricaFeicoes,
2342
- Ye as formatarOpcoesCamadasHierarquicas,
2343
- da as gerarChaveStorage,
2344
- pa as limparEstadoPersistido,
2345
- ma as montarEstadoPersistido,
2346
- Qe as obterIdsVisiveisFeicoes,
2347
- fa as reidratarCamadasComOverrides,
2348
- ne as removerSelecoesInvalidas,
2349
- We as renderizarArvoreCamadas,
2350
- Ue as renderizarGridMapasBase,
2351
- _e as renderizarRodapeAcoes,
2352
- Ke as renderizarThumbGeometria,
2353
- ua as salvarEstadoPersistido,
2354
- ke as snapshotCamada
2390
+ pa as CamadasDragDropManager,
2391
+ v as ICONES,
2392
+ Le as LIMITE_FEICOES_POR_CAMADA,
2393
+ Ae as MAPAS_BASE_PADRAO,
2394
+ N as UICamadas,
2395
+ or as UILayerPanel,
2396
+ gr as UIMapaBase,
2397
+ ir as UIPainelCamadas,
2398
+ vr as UISeletorMapaBase,
2399
+ ee as calcularAreaAnelSimples,
2400
+ ye as calcularAreaPoligono,
2401
+ xe as calcularComprimentoLinha,
2402
+ Ve as calcularDistanciaPontos,
2403
+ aa as calcularSelecaoFeicao,
2404
+ oe as carregarEstadoPersistido,
2405
+ Ze as construirHierarquiaCamadas,
2406
+ ur as converterCamadaItemParaCanvasLayer,
2407
+ dr as converterCanvasLayerParaCamadaItem,
2408
+ pr as converterFeicaoParaItem,
2409
+ S as escapeHtml,
2410
+ Ce as filtrarCamadasPorBusca,
2411
+ K as filtrarFeicoesPorBusca,
2412
+ we as formatarMetricaFeicoes,
2413
+ Xe as formatarOpcoesCamadasHierarquicas,
2414
+ ma as gerarChaveStorage,
2415
+ va as limparEstadoPersistido,
2416
+ ha as montarEstadoPersistido,
2417
+ ke as nomeDoMapaBase,
2418
+ ea as obterIdsVisiveisFeicoes,
2419
+ ba as reidratarCamadasComOverrides,
2420
+ le as removerSelecoesInvalidas,
2421
+ ra as renderizarArvoreCamadas,
2422
+ Ke as renderizarGridMapasBase,
2423
+ Qe as renderizarRodapeAcoes,
2424
+ We as renderizarThumbGeometria,
2425
+ ga as salvarEstadoPersistido,
2426
+ $e as snapshotCamada
2355
2427
  };