@thibezer/ui-components-kit 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/camadas.js CHANGED
@@ -1,10 +1,10 @@
1
- var Le = Object.defineProperty;
2
- var Ce = (e, o, a) => o in e ? Le(e, o, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[o] = a;
3
- var y = (e, o, a) => Ce(e, typeof o != "symbol" ? o + "" : o, a);
1
+ var Be = Object.defineProperty;
2
+ var qe = (e, o, a) => o in e ? Be(e, o, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[o] = a;
3
+ var I = (e, o, a) => qe(e, typeof o != "symbol" ? o + "" : o, a);
4
4
  /* empty css */
5
- import { d as ee, S as $e } from "./ssr-safe-5cWfJP-s.js";
6
- import { L as Se } from "./listener-bag-DQgv7OON.js";
7
- import { UIMapaBase as $a, UISeletorMapaBase as Sa } from "./seletor-mapa-base.js";
5
+ import { d as oe, S as De } from "./ssr-safe-5cWfJP-s.js";
6
+ import { L as Te } from "./listener-bag-DQgv7OON.js";
7
+ import { UIMapaBase as Na, UISeletorMapaBase as Ha } from "./seletor-mapa-base.js";
8
8
  const g = {
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>
@@ -103,60 +103,60 @@ const g = {
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
- }, X = 6378137;
107
- function ze(e, o) {
106
+ }, te = 6378137;
107
+ function Pe(e, o) {
108
108
  if (!e || !o) return 0;
109
- const a = e[0] * Math.PI / 180, t = e[1] * Math.PI / 180, i = o[0] * Math.PI / 180, r = o[1] * Math.PI / 180, s = i - a, n = r - t, l = Math.sin(s / 2) * Math.sin(s / 2) + Math.cos(a) * Math.cos(i) * Math.sin(n / 2) * Math.sin(n / 2);
110
- return X * 2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l));
109
+ const a = e[0] * Math.PI / 180, t = e[1] * Math.PI / 180, i = o[0] * Math.PI / 180, r = o[1] * Math.PI / 180, n = i - a, s = r - t, l = Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(i) * Math.sin(s / 2) * Math.sin(s / 2);
110
+ return te * 2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l));
111
111
  }
112
- function de(e) {
112
+ function ge(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, t) => a + de(t), 0);
115
+ return e.reduce((a, t) => a + ge(t), 0);
116
116
  let o = 0;
117
117
  for (let a = 0; a < e.length - 1; a++) {
118
118
  const t = e[a], i = e[a + 1];
119
- Array.isArray(t) && Array.isArray(i) && t.length >= 2 && i.length >= 2 && (o += ze([t[0], t[1]], [i[0], i[1]]));
119
+ Array.isArray(t) && Array.isArray(i) && t.length >= 2 && i.length >= 2 && (o += Pe([t[0], t[1]], [i[0], i[1]]));
120
120
  }
121
121
  return o;
122
122
  }
123
- function Q(e) {
123
+ function J(e) {
124
124
  if (!Array.isArray(e)) return 0;
125
125
  const o = e.length;
126
126
  if (o < 3) return 0;
127
127
  let a = 0;
128
128
  for (let i = 0; i < o; i++) {
129
- const r = e[i], s = e[(i + 1) % o], n = e[(i + 2) % o];
130
- if (!Array.isArray(r) || !Array.isArray(s) || !Array.isArray(n)) continue;
131
- const l = (s[1] - r[1]) * (Math.PI / 180), c = (s[0] - r[0]) * (Math.PI / 180), f = (n[1] - s[1]) * (Math.PI / 180), u = (n[0] - s[0]) * (Math.PI / 180);
129
+ const r = e[i], n = e[(i + 1) % o], s = e[(i + 2) % o];
130
+ if (!Array.isArray(r) || !Array.isArray(n) || !Array.isArray(s)) continue;
131
+ const l = (n[1] - r[1]) * (Math.PI / 180), c = (n[0] - r[0]) * (Math.PI / 180), f = (s[1] - n[1]) * (Math.PI / 180), u = (s[0] - n[0]) * (Math.PI / 180);
132
132
  a += l * u - c * f;
133
133
  }
134
- const t = Math.abs(a * (X * X) / 2);
134
+ const t = Math.abs(a * (te * te) / 2);
135
135
  return isNaN(t) ? 0 : t;
136
136
  }
137
- function ue(e) {
137
+ function ve(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 Q(e);
140
+ return J(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((t, i) => t + ue(i), 0);
144
- const o = Q(e[0]);
143
+ return e.reduce((t, i) => t + ve(i), 0);
144
+ const o = J(e[0]);
145
145
  let a = 0;
146
146
  for (let t = 1; t < e.length; t++)
147
- a += Q(e[t]);
147
+ a += J(e[t]);
148
148
  return Math.max(0, o - a);
149
149
  }
150
150
  return 0;
151
151
  }
152
- function pe(e) {
152
+ function be(e) {
153
153
  if (!e || e.length === 0) return "";
154
154
  const o = e.filter(
155
155
  (t) => t.type === "Polygon" || t.type === "MultiPolygon" || t.geometryType === "Polygon"
156
156
  );
157
157
  if (o.length > 0) {
158
158
  const t = o.reduce(
159
- (i, r) => i + (ue(r.coordinates) || 0),
159
+ (i, r) => i + (ve(r.coordinates) || 0),
160
160
  0
161
161
  );
162
162
  return t >= 1e4 ? `${(t / 1e4).toLocaleString("pt-BR", {
@@ -169,7 +169,7 @@ function pe(e) {
169
169
  );
170
170
  if (a.length > 0) {
171
171
  const t = a.reduce(
172
- (i, r) => i + (de(r.coordinates) || 0),
172
+ (i, r) => i + (ge(r.coordinates) || 0),
173
173
  0
174
174
  );
175
175
  return t >= 1e3 ? `${(t / 1e3).toLocaleString("pt-BR", {
@@ -179,23 +179,23 @@ function pe(e) {
179
179
  }
180
180
  return "";
181
181
  }
182
- function L(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 Me = /^(#(?:[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 G(e, o = "#00E08A") {
185
+ const Oe = /^(#(?:[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 V(e, o = "#00E08A") {
187
187
  if (!e || typeof e != "string") return o;
188
188
  const a = e.trim();
189
- return Me.test(a) ? a : o;
189
+ return Oe.test(a) ? a : o;
190
190
  }
191
- function J(e) {
191
+ function W(e) {
192
192
  return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
193
193
  }
194
- function Fe(e, o, a) {
195
- const t = o / 100, i = a / 100, r = (l) => (l + e / 30) % 12, s = t * Math.min(i, 1 - i), n = (l) => i - s * Math.max(-1, Math.min(r(l) - 3, Math.min(9 - r(l), 1)));
196
- return [n(0) * 255, n(8) * 255, n(4) * 255];
194
+ function je(e, o, a) {
195
+ const t = o / 100, i = a / 100, r = (l) => (l + e / 30) % 12, n = t * Math.min(i, 1 - i), s = (l) => i - n * Math.max(-1, Math.min(r(l) - 3, Math.min(9 - r(l), 1)));
196
+ return [s(0) * 255, s(8) * 255, s(4) * 255];
197
197
  }
198
- function Be(e, o = "#000000") {
198
+ function Re(e, o = "#000000") {
199
199
  if (!e || typeof e != "string") return o;
200
200
  const a = e.trim().toLowerCase(), t = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
201
201
  if (t) {
@@ -204,21 +204,21 @@ function Be(e, o = "#000000") {
204
204
  }
205
205
  const i = /^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);
206
206
  if (i) {
207
- const r = i[2].split(/[\s,/]+/).filter(Boolean).map((s) => parseFloat(s));
208
- if (r.length >= 3 && r.slice(0, 3).every((s) => !isNaN(s))) {
209
- const [s, n, l] = r, [c, f, u] = i[1] === "rgb" ? [s, n, l] : Fe(s, n, l);
210
- return `#${J(c)}${J(f)}${J(u)}`;
207
+ const r = i[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
208
+ if (r.length >= 3 && r.slice(0, 3).every((n) => !isNaN(n))) {
209
+ const [n, s, l] = r, [c, f, u] = i[1] === "rgb" ? [n, s, l] : je(n, s, l);
210
+ return `#${W(c)}${W(f)}${W(u)}`;
211
211
  }
212
212
  }
213
213
  return o;
214
214
  }
215
- function M(e, o, a) {
215
+ function B(e, o, a) {
216
216
  const t = e.querySelectorAll(`[${o}]`);
217
217
  for (let i = 0; i < t.length; i++)
218
218
  if (t[i].getAttribute(o) === a) return t[i];
219
219
  return null;
220
220
  }
221
- function fe(e, o = 80) {
221
+ function xe(e, o = 80) {
222
222
  let a = null;
223
223
  return (...t) => {
224
224
  a && clearTimeout(a), a = setTimeout(() => {
@@ -226,10 +226,10 @@ function fe(e, o = 80) {
226
226
  }, o);
227
227
  };
228
228
  }
229
- function F(e, o) {
229
+ function q(e, o) {
230
230
  e.setAttribute("title", o), e.setAttribute("aria-label", o);
231
231
  }
232
- const me = [
232
+ const ye = [
233
233
  {
234
234
  id: "none",
235
235
  nome: "Sem Mapa",
@@ -272,18 +272,18 @@ const me = [
272
272
  thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
273
273
  }
274
274
  ];
275
- function qe(e = me, o = "satelite") {
275
+ function Ne(e = ye, o = "satelite") {
276
276
  return !e || e.length === 0 ? "" : `
277
277
  <div class="ui-basemap-section">
278
278
  <div class="ui-basemap-title">Mapa Base</div>
279
279
  <div class="ui-basemap-grid">
280
280
  ${e.map((t) => {
281
- const i = o === t.id, r = L(t.id), s = L(t.nome), n = L(t.descricao || t.nome);
281
+ const i = o === t.id, r = S(t.id), n = S(t.nome), s = S(t.descricao || t.nome);
282
282
  let l = "";
283
- return t.thumbnailUrl ? l = `<img class="ui-basemap-preview" src="${L(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : l = `<div class="ui-basemap-preview-none">${g.gradeCad}</div>`, `
284
- <div class="ui-basemap-card ${i ? "active" : ""}" data-basemap-id="${r}" role="button" tabindex="0" aria-pressed="${i}" title="${n}">
283
+ return t.thumbnailUrl ? l = `<img class="ui-basemap-preview" src="${S(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : l = `<div class="ui-basemap-preview-none">${g.gradeCad}</div>`, `
284
+ <div class="ui-basemap-card ${i ? "active" : ""}" data-basemap-id="${r}" role="button" tabindex="0" aria-pressed="${i}" title="${s}">
285
285
  ${l}
286
- <span>${s}</span>
286
+ <span>${n}</span>
287
287
  </div>
288
288
  `;
289
289
  }).join("")}
@@ -291,26 +291,26 @@ function qe(e = me, o = "satelite") {
291
291
  </div>
292
292
  `;
293
293
  }
294
- function De(e) {
294
+ function He(e) {
295
295
  const o = /* @__PURE__ */ new Map();
296
296
  e.forEach((r) => o.set(r.id, r));
297
297
  const a = /* @__PURE__ */ new Map(), t = [];
298
298
  e.forEach((r) => {
299
299
  r.parentId && o.has(r.parentId) ? (a.has(r.parentId) || a.set(r.parentId, []), a.get(r.parentId).push(r)) : t.push(r);
300
300
  });
301
- const i = (r, s) => {
302
- const n = a.get(r.id) || (Array.isArray(r.children) ? r.children : []), l = s > 0 ? "&nbsp;&nbsp;".repeat(s) + "↳ " : n.length > 0 || r.isGroup ? "📁 " : "", c = `<option value="${L(r.id)}">${l}${L(r.name)}</option>`, f = n.map((u) => i(u, s + 1)).join("");
301
+ const i = (r, n) => {
302
+ const s = a.get(r.id) || (Array.isArray(r.children) ? r.children : []), l = n > 0 ? "&nbsp;&nbsp;".repeat(n) + "↳ " : s.length > 0 || r.isGroup ? "📁 " : "", c = `<option value="${S(r.id)}">${l}${S(r.name)}</option>`, f = s.map((u) => i(u, n + 1)).join("");
303
303
  return c + f;
304
304
  };
305
305
  return t.map((r) => i(r, 0)).join("");
306
306
  }
307
- function Te(e, o, a) {
308
- const t = o.filter((c) => a.has(c.id)), i = t.length > 0, r = pe(t), s = i ? t.length : e.length, n = i ? t.length > 1 ? "selecionados" : "selecionado" : e.length > 1 ? "camadas" : "camada", l = De(e);
307
+ function Ge(e, o, a) {
308
+ const t = o.filter((c) => a.has(c.id)), i = t.length > 0, r = be(t), n = i ? t.length : e.length, s = i ? t.length > 1 ? "selecionados" : "selecionado" : e.length > 1 ? "camadas" : "camada", l = He(e);
309
309
  return `
310
310
  <div class="ui-tree-footer ${i ? "tem-selecao" : "sem-selecao"}">
311
311
  <div class="ui-footer-left">
312
- <span class="ui-footer-count" id="footer-count">${s}</span>
313
- <span class="ui-footer-label" id="footer-label">${n}</span>
312
+ <span class="ui-footer-count" id="footer-count">${n}</span>
313
+ <span class="ui-footer-label" id="footer-label">${s}</span>
314
314
  <span class="ui-footer-metric" id="footer-metric" style="display: ${r ? "inline-flex" : "none"};">${r ? `${g.reguaMetrica} ${r}` : ""}</span>
315
315
  </div>
316
316
 
@@ -357,87 +357,122 @@ function Te(e, o, a) {
357
357
  </div>
358
358
  `;
359
359
  }
360
- const he = 80;
361
- function ae(e, o) {
360
+ const we = 80;
361
+ function U(e, o) {
362
362
  const a = (o || "").trim().toLowerCase();
363
363
  return a ? e.filter(
364
364
  (t) => (t.name || "").toLowerCase().includes(a) || (t.category || "").toLowerCase().includes(a) || (t.type || "").toLowerCase().includes(a)
365
365
  ) : e;
366
366
  }
367
- function Pe(e, o, a, t = "", i = he) {
368
- const r = (t || "").trim() !== "", s = [], n = /* @__PURE__ */ new Map();
367
+ function Ve(e, o, a, t = "", i = we) {
368
+ const r = (t || "").trim() !== "", n = [], s = /* @__PURE__ */ new Map();
369
369
  for (let l = 0; l < o.length; l++) {
370
370
  const c = o[l], f = c.layerId || "";
371
- n.has(f) || n.set(f, []), n.get(f).push(c);
371
+ s.has(f) || s.set(f, []), s.get(f).push(c);
372
372
  }
373
373
  for (let l = 0; l < e.length; l++) {
374
374
  const c = e[l];
375
375
  if (r || a.has(c.id)) {
376
- const f = ae(n.get(c.id) || [], t).slice(0, i);
376
+ const f = U(s.get(c.id) || [], t).slice(0, i);
377
377
  for (let u = 0; u < f.length; u++)
378
- s.push(f[u].id);
378
+ n.push(f[u].id);
379
379
  }
380
380
  }
381
- return s;
381
+ return n;
382
382
  }
383
- function Oe(e, o, a, t, i, r) {
383
+ function Ue(e, o, a, t, i, r) {
384
384
  if (!e.includes(t)) return null;
385
- const s = new Set(o);
386
- let n = a;
385
+ const n = new Set(o);
386
+ let s = a;
387
387
  if (r && a && e.includes(a)) {
388
388
  const l = e.indexOf(a), c = e.indexOf(t), f = Math.min(l, c), u = Math.max(l, c);
389
- i || s.clear();
389
+ i || n.clear();
390
390
  for (let p = f; p <= u; p++)
391
- s.add(e[p]);
392
- } else i ? (s.has(t) ? s.delete(t) : s.add(t), n = t) : (s.clear(), s.add(t), n = t);
393
- return { selecionados: s, ultimoClicadoId: n };
391
+ n.add(e[p]);
392
+ } else i ? (n.has(t) ? n.delete(t) : n.add(t), s = t) : (n.clear(), n.add(t), s = t);
393
+ return { selecionados: n, ultimoClicadoId: s };
394
394
  }
395
- function je(e, o) {
395
+ function Ye(e, o) {
396
396
  if (e.size === 0) return;
397
397
  const a = new Set(o.map((t) => t.id));
398
398
  for (const t of e)
399
399
  a.has(t) || e.delete(t);
400
400
  }
401
- function Re(e, o) {
402
- const a = G(o, "#00E08A"), t = (e || "").toLowerCase();
403
- return 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="${a}" fill-opacity="0.45" stroke="${a}" 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="${a}" 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="${a}" 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="${a}" stroke="#ffffff" stroke-width="1.2"/></svg>`;
401
+ const Z = 64;
402
+ function fe(e) {
403
+ return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
404
+ }
405
+ function Ee(e) {
406
+ return !Array.isArray(e) || e.length === 0 ? [] : fe(e[0]) ? [e.filter(fe)] : e.flatMap(Ee);
407
+ }
408
+ function me(e) {
409
+ if (e.length <= Z) return e;
410
+ const o = e.length / Z, a = [];
411
+ for (let t = 0; t < Z; t++) a.push(e[Math.floor(t * o)]);
412
+ return a.push(e[e.length - 1]), a;
413
+ }
414
+ function _e(e, o, a) {
415
+ const t = Ee(o).filter((E) => E.length > 0);
416
+ if (t.length === 0) return "";
417
+ let i = 1 / 0, r = -1 / 0, n = 1 / 0, s = -1 / 0;
418
+ for (const E of t)
419
+ for (const [A, $] of E)
420
+ $ < i && (i = $), $ > r && (r = $), -A < n && (n = -A), -A > s && (s = -A);
421
+ const l = 16, c = 2, f = l - c * 2, u = r - i, p = s - n, d = Math.max(u, p), m = d > 0 ? f / d : 0, h = c + (f - u * m) / 2, L = c + (f - p * m) / 2, v = (E) => Math.round(E * 100) / 100, x = ([E, A]) => `${v(h + (A - i) * m)},${v(L + (-E - n) * m)}`, b = e === "polygon" || e === "multipolygon", y = e === "linestring" || e === "multilinestring", w = (E) => `<svg viewBox="0 0 ${l} ${l}" width="100%" height="100%" aria-hidden="true">${E}</svg>`;
422
+ if (b) {
423
+ const E = t.filter((A) => A.length >= 3).map((A) => `M${me(A).map(x).join("L")}Z`).join("");
424
+ return E ? w(
425
+ `<path d="${E}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
426
+ ) : "";
427
+ }
428
+ if (y) {
429
+ const E = t.filter((A) => A.length >= 2).map((A) => `M${me(A).map(x).join("L")}`).join("");
430
+ return E ? w(
431
+ `<path d="${E}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
432
+ ) : "";
433
+ }
434
+ return "";
435
+ }
436
+ function Ke(e, o, a) {
437
+ const t = V(o, "#00E08A"), i = (e || "").toLowerCase(), r = a !== void 0 ? _e(i, a, t) : "";
438
+ return r || (i === "polygon" || i === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${t}" fill-opacity="0.45" stroke="${t}" stroke-width="1.5"/></svg>` : i === "linestring" || i === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${t}" stroke-width="2"/></svg>` : i === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${t}" text-anchor="middle" font-family="sans-serif">T</text></svg>` : `<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${t}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
404
439
  }
405
- function Ne(e) {
440
+ function Xe(e) {
406
441
  const o = /* @__PURE__ */ new Map();
407
442
  e.forEach((r) => o.set(r.id, r));
408
443
  const a = /* @__PURE__ */ new Map(), t = [];
409
444
  e.forEach((r) => {
410
445
  r.parentId && o.has(r.parentId) && r.parentId !== r.id ? (a.has(r.parentId) || a.set(r.parentId, []), a.get(r.parentId).push(r)) : t.push(r);
411
446
  });
412
- function i(r, s) {
413
- const n = a.get(r.id) || (Array.isArray(r.children) ? r.children : []);
447
+ function i(r, n) {
448
+ const s = a.get(r.id) || (Array.isArray(r.children) ? r.children : []);
414
449
  return {
415
450
  camada: r,
416
- depth: s,
417
- subcamadas: n.map((l) => i(l, s + 1))
451
+ depth: n,
452
+ subcamadas: s.map((l) => i(l, n + 1))
418
453
  };
419
454
  }
420
455
  return t.map((r) => i(r, 0));
421
456
  }
422
- function He(e) {
457
+ function Qe(e) {
423
458
  const {
424
459
  camadas: o,
425
460
  feicoes: a,
426
461
  camadaAtivaId: t,
427
462
  expandedLayers: i,
428
463
  selectedFeatureIds: r,
429
- activeSettingsLayerId: s,
430
- editingLayerId: n,
464
+ activeSettingsLayerId: n,
465
+ editingLayerId: s,
431
466
  editingFeatureId: l,
432
467
  searchQuery: c,
433
- limiteFeicoesPorCamada: f = he,
468
+ limiteFeicoesPorCamada: f = we,
434
469
  mostrarBotaoColapsar: u = !1
435
470
  } = e, p = (c || "").trim().toLowerCase(), d = /* @__PURE__ */ new Map();
436
- for (let x = 0; x < a.length; x++) {
437
- const w = a[x], $ = w.layerId || "";
438
- d.has($) || d.set($, []), d.get($).push(w);
471
+ for (let y = 0; y < a.length; y++) {
472
+ const w = a[y], E = w.layerId || "";
473
+ d.has(E) || d.set(E, []), d.get(E).push(w);
439
474
  }
440
- const m = o.every((x) => x.visible !== !1), h = o.length > 0 && o.every((x) => i.has(x.id)), k = `
475
+ const m = o.every((y) => y.visible !== !1), h = o.length > 0 && o.every((y) => i.has(y.id)), L = `
441
476
  <div class="ui-tree-toolbar">
442
477
  <div class="ui-tree-title-group">
443
478
  <span class="ui-tree-section-title">CAMADAS</span>
@@ -462,54 +497,54 @@ function He(e) {
462
497
 
463
498
  <div class="ui-tree-search-wrapper">
464
499
  <span class="ui-tree-search-icon">${g.busca}</span>
465
- <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="${L(
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="${S(
466
501
  c
467
502
  )}" />
468
503
  ${c ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${g.fechar}</button>` : ""}
469
504
  </div>
470
- `, v = (x) => {
471
- const w = x.camada, $ = x.depth, C = x.subcamadas, D = !!(w.isGroup || C.length > 0), A = L(w.id), te = L(w.name || (D ? "Novo Grupo" : "Camada")), B = G(w.color, "#00E08A"), j = w.visible !== !1, T = w.locked === !0, R = p ? !0 : i.has(w.id), V = s === w.id, re = t === w.id, S = ae(d.get(w.id) || [], p), ie = S.length > 0 && S.every((E) => r.has(E.id)), ve = !ie && S.some((E) => r.has(E.id)), be = S.slice(0, f), xe = S.length > f, ye = be.map((E) => {
472
- const z = L(E.id), se = L(E.name || "Feição"), ne = G(E.color, B), N = E.visible !== !1, U = T, _ = E.locked === !0 || U, le = U ? "Bloqueada pela camada" : _ ? "Desbloquear Feição" : "Bloquear Feição", K = r.has(E.id), ce = E.status;
473
- let Y = "";
474
- return ce === "oficial" ? Y = '<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>' : ce === "previa" && (Y = '<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'), `
475
- <div class="ui-feat-row ${K ? "selected-row" : ""} ${N ? "" : "hidden-row"}" data-feat-row="${z}" data-feat-select="${z}" data-feat-layer="${A}" role="treeitem" aria-selected="${K}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
476
- <div class="ui-col ui-col-eye" data-feat-eye="${z}" role="button" tabindex="0" aria-label="${N ? "Ocultar Feição" : "Exibir Feição"}" title="${N ? "Ocultar Feição" : "Exibir Feição"}">
477
- ${N ? g.olhoAberto : g.olhoFechado}
505
+ `, v = (y) => {
506
+ const w = y.camada, E = y.depth, A = y.subcamadas, $ = !!(w.isGroup || A.length > 0), k = S(w.id), D = S(w.name || ($ ? "Novo Grupo" : "Camada")), z = V(w.color, "#00E08A"), R = w.visible !== !1, P = w.locked === !0, N = p ? !0 : i.has(w.id), Y = n === w.id, ne = t === w.id, M = U(d.get(w.id) || [], p), se = M.length > 0 && M.every((C) => r.has(C.id)), ke = !se && M.some((C) => r.has(C.id)), Ie = M.slice(0, f), Le = M.length > f, Ce = Ie.map((C) => {
507
+ const F = S(C.id), ce = S(C.name || "Feição"), de = V(C.color, z), H = C.visible !== !1, _ = P, K = C.locked === !0 || _, ue = _ ? "Bloqueada pela camada" : K ? "Desbloquear Feição" : "Bloquear Feição", X = r.has(C.id), pe = C.status;
508
+ let Q = "";
509
+ return pe === "oficial" ? Q = '<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>' : pe === "previa" && (Q = '<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'), `
510
+ <div class="ui-feat-row ${X ? "selected-row" : ""} ${H ? "" : "hidden-row"}" data-feat-row="${F}" data-feat-select="${F}" data-feat-layer="${k}" role="treeitem" aria-selected="${X}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
511
+ <div class="ui-col ui-col-eye" data-feat-eye="${F}" role="button" tabindex="0" aria-label="${H ? "Ocultar Feição" : "Exibir Feição"}" title="${H ? "Ocultar Feição" : "Exibir Feição"}">
512
+ ${H ? g.olhoAberto : g.olhoFechado}
478
513
  </div>
479
514
 
480
- <div class="ui-col ui-col-lock ${_ ? "" : "ui-lock-open"}" data-feat-lock="${z}" ${U ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${le}" title="${le}">
481
- ${_ ? g.cadeadoTrancado : g.cadeadoAberto}
515
+ <div class="ui-col ui-col-lock ${K ? "" : "ui-lock-open"}" data-feat-lock="${F}" ${_ ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${ue}" title="${ue}">
516
+ ${K ? g.cadeadoTrancado : g.cadeadoAberto}
482
517
  </div>
483
518
 
484
- <div class="ui-col ui-col-colorbar" style="background: ${ne};"></div>
519
+ <div class="ui-col ui-col-colorbar" style="background: ${de};"></div>
485
520
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
486
521
  <div class="ui-col ui-col-thumb">
487
- <div class="ui-thumb-box">${Re(E.type || E.geometryType, ne)}</div>
522
+ <div class="ui-thumb-box">${Ke(C.type || C.geometryType, de, C.coordinates)}</div>
488
523
  </div>
489
524
 
490
- <div class="ui-col ui-col-name" data-feat-name-trigger="${z}" title="Duplo clique para renomear">
491
- ${l === E.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${z}" value="${se}" />` : `<span class="ui-name-text">${se}</span>${Y}`}
525
+ <div class="ui-col ui-col-name" data-feat-name-trigger="${F}" title="Duplo clique para renomear">
526
+ ${l === C.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${F}" value="${ce}" />` : `<span class="ui-name-text">${ce}</span>${Q}`}
492
527
  </div>
493
528
 
494
529
  <div class="ui-col ui-col-actions">
495
- <button class="ui-micro-btn" data-feat-fit="${z}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${g.alvoEnquadrar}</button>
530
+ <button class="ui-micro-btn" data-feat-fit="${F}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${g.alvoEnquadrar}</button>
496
531
  </div>
497
532
 
498
- <div class="ui-col ui-col-target" data-feat-target="${z}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
499
- <div class="ui-target-circle ${K ? "selected" : ""}"></div>
533
+ <div class="ui-col ui-col-target" data-feat-target="${F}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
534
+ <div class="ui-target-circle ${X ? "selected" : ""}"></div>
500
535
  </div>
501
536
  </div>
502
537
  `;
503
- }).join(""), we = xe ? `<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 ${f} de ${S.length} feições. Use a busca acima para filtrar.</div>` : "", oe = w.opacity !== void 0 ? w.opacity : 1, Ee = Math.round(oe * 100), Ae = o.filter((E) => E.id !== w.id).map(
504
- (E) => `<option value="${L(E.id)}" ${w.parentId === E.id ? "selected" : ""}>${E.isGroup ? "📁 " : ""}${L(E.name)}</option>`
505
- ).join(""), ke = V ? `
506
- <div class="ui-layer-settings-drawer" id="settings-drawer-${A}" style="--drawer-cor-camada: ${B};">
538
+ }).join(""), $e = Le ? `<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 ${f} de ${M.length} feições. Use a busca acima para filtrar.</div>` : "", le = w.opacity !== void 0 ? w.opacity : 1, Se = Math.round(le * 100), Me = o.filter((C) => C.id !== w.id).map(
539
+ (C) => `<option value="${S(C.id)}" ${w.parentId === C.id ? "selected" : ""}>${C.isGroup ? "📁 " : ""}${S(C.name)}</option>`
540
+ ).join(""), ze = Y ? `
541
+ <div class="ui-layer-settings-drawer" id="settings-drawer-${k}" style="--drawer-cor-camada: ${z};">
507
542
  <div class="ui-drawer-header">
508
543
  <div class="ui-drawer-header-left">
509
544
  <span class="ui-drawer-icon">${g.engrenagem}</span>
510
545
  <span class="ui-drawer-title">Configurações da Camada</span>
511
546
  </div>
512
- <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${A}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
547
+ <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${k}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
513
548
  ${g.fechar}
514
549
  </button>
515
550
  </div>
@@ -522,9 +557,9 @@ function He(e) {
522
557
  </div>
523
558
  <div class="ui-drawer-color-group">
524
559
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
525
- <span class="ui-drawer-color-sample" id="sample-color-${A}" style="background-color: ${B};"></span>
526
- <span class="ui-drawer-color-hex" id="hex-color-${A}">${B.toUpperCase()}</span>
527
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${A}" value="${Be(B, "#00e08a")}" class="ui-drawer-color-native" />
560
+ <span class="ui-drawer-color-sample" id="sample-color-${k}" style="background-color: ${z};"></span>
561
+ <span class="ui-drawer-color-hex" id="hex-color-${k}">${z.toUpperCase()}</span>
562
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${k}" value="${Re(z, "#00e08a")}" class="ui-drawer-color-native" />
528
563
  </label>
529
564
  </div>
530
565
  </div>
@@ -533,10 +568,10 @@ function He(e) {
533
568
  <div class="ui-drawer-row">
534
569
  <div class="ui-drawer-row-label">
535
570
  <span>Opacidade</span>
536
- <span class="ui-drawer-badge" id="badge-op-${A}">${Ee}%</span>
571
+ <span class="ui-drawer-badge" id="badge-op-${k}">${Se}%</span>
537
572
  </div>
538
573
  <div class="ui-drawer-slider-container">
539
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(oe) || 0}" data-layer-opacity-slider="${A}" class="ui-drawer-slider" />
574
+ <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(le) || 0}" data-layer-opacity-slider="${k}" class="ui-drawer-slider" />
540
575
  </div>
541
576
  </div>
542
577
 
@@ -546,9 +581,9 @@ function He(e) {
546
581
  <span>Pertence ao Grupo</span>
547
582
  </div>
548
583
  <div class="ui-drawer-select-wrapper">
549
- <select class="ui-drawer-select" data-layer-parent-select="${A}" aria-label="Grupo pai da camada">
584
+ <select class="ui-drawer-select" data-layer-parent-select="${k}" aria-label="Grupo pai da camada">
550
585
  <option value="" ${w.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
551
- ${Ae}
586
+ ${Me}
552
587
  </select>
553
588
  </div>
554
589
  </div>
@@ -556,78 +591,78 @@ function He(e) {
556
591
 
557
592
  <div class="ui-drawer-footer">
558
593
  <div class="ui-drawer-meta-info">
559
- <span>${C.length > 0 ? `${C.length} subcamadas · ` : ""}${S.length} ${S.length === 1 ? "feição" : "feições"}</span>
594
+ <span>${A.length > 0 ? `${A.length} subcamadas · ` : ""}${M.length} ${M.length === 1 ? "feição" : "feições"}</span>
560
595
  </div>
561
596
  <div class="ui-drawer-actions">
562
- <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${A}" title="Adicionar nova camada dentro desta">
597
+ <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${k}" title="Adicionar nova camada dentro desta">
563
598
  ${g.mais} Subcamada
564
599
  </button>
565
- <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${A}" title="Excluir esta camada e suas feições">
600
+ <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${k}" title="Excluir esta camada e suas feições">
566
601
  ${g.lixeira}
567
602
  <span class="ui-btn-label">Excluir</span>
568
603
  </button>
569
604
  </div>
570
605
  </div>
571
606
  </div>
572
- ` : "", Ie = C.map((E) => v(E)).join("");
607
+ ` : "", Fe = A.map((C) => v(C)).join("");
573
608
  return `
574
- <div class="ui-layer-group ${$ > 0 ? "is-sublayer-group" : ""}" data-layer-id="${A}" data-layer-depth="${$}" role="treeitem" aria-expanded="${R}">
575
- <div class="ui-layer-row ${j ? "" : "hidden-layer"} ${re ? "active-drawing-layer" : ""} ${$ > 0 ? "is-sublayer" : ""} ${D ? "is-group-row" : ""}" data-layer-row="${A}" data-layer-id="${A}" tabindex="-1" draggable="true" style="--layer-depth: ${$}; --layer-active-color: ${B};">
609
+ <div class="ui-layer-group ${E > 0 ? "is-sublayer-group" : ""}" data-layer-id="${k}" data-layer-depth="${E}" role="treeitem" aria-expanded="${N}">
610
+ <div class="ui-layer-row ${R ? "" : "hidden-layer"} ${ne ? "active-drawing-layer" : ""} ${E > 0 ? "is-sublayer" : ""} ${$ ? "is-group-row" : ""}" data-layer-row="${k}" data-layer-id="${k}" tabindex="-1" draggable="true" style="--layer-depth: ${E}; --layer-active-color: ${z};">
576
611
  <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${g.dragHandle}</div>
577
612
 
578
- <div class="ui-col ui-col-eye" data-layer-eye="${A}" role="button" tabindex="0" aria-label="${j ? "Ocultar Camada" : "Exibir Camada"}" title="${j ? "Ocultar Camada" : "Exibir Camada"}">
579
- ${j ? g.olhoAberto : g.olhoFechado}
613
+ <div class="ui-col ui-col-eye" data-layer-eye="${k}" role="button" tabindex="0" aria-label="${R ? "Ocultar Camada" : "Exibir Camada"}" title="${R ? "Ocultar Camada" : "Exibir Camada"}">
614
+ ${R ? g.olhoAberto : g.olhoFechado}
580
615
  </div>
581
616
 
582
- <div class="ui-col ui-col-lock ${T ? "" : "ui-lock-open"}" data-layer-lock="${A}" role="button" tabindex="0" aria-label="${T ? "Desbloquear Camada" : "Bloquear Camada"}" title="${T ? "Desbloquear Camada" : "Bloquear Camada"}">
583
- ${T ? g.cadeadoTrancado : g.cadeadoAberto}
617
+ <div class="ui-col ui-col-lock ${P ? "" : "ui-lock-open"}" data-layer-lock="${k}" role="button" tabindex="0" aria-label="${P ? "Desbloquear Camada" : "Bloquear Camada"}" title="${P ? "Desbloquear Camada" : "Bloquear Camada"}">
618
+ ${P ? g.cadeadoTrancado : g.cadeadoAberto}
584
619
  </div>
585
620
 
586
- <div class="ui-col ui-col-colorbar" style="background: ${B};"></div>
621
+ <div class="ui-col ui-col-colorbar" style="background: ${z};"></div>
587
622
 
588
- <div class="ui-col ui-col-chevron" data-layer-expand="${A}" role="button" tabindex="0" aria-label="${R ? "Recolher grupo" : "Expandir grupo"}">
589
- <span class="ui-chevron-icon ${R ? "open" : ""}">${g.chevronDir}</span>
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" : ""}">${g.chevronDir}</span>
590
625
  </div>
591
626
 
592
- <div class="ui-col ui-col-name" data-layer-name-trigger="${A}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
593
- ${n === w.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${A}" value="${te}" />` : `${D ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${g.moverPasta}</span>` : ""}
594
- <span class="ui-name-text">${te}</span>
595
- ${re ? '<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>' : ""}
596
- ${C.length > 0 ? `<span class="ui-group-badge" title="${C.length} subcamadas">${C.length} sub</span>` : ""}
597
- ${S.length > 0 || !D ? `<span class="ui-count-chip">${S.length}</span>` : ""}`}
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 === w.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${k}" value="${D}" />` : `${$ ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${g.moverPasta}</span>` : ""}
629
+ <span class="ui-name-text">${D}</span>
630
+ ${ne ? '<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>' : ""}
631
+ ${A.length > 0 ? `<span class="ui-group-badge" title="${A.length} subcamadas">${A.length} sub</span>` : ""}
632
+ ${M.length > 0 || !$ ? `<span class="ui-count-chip">${M.length}</span>` : ""}`}
598
633
  </div>
599
634
 
600
635
  <div class="ui-col ui-col-actions">
601
- <button class="ui-micro-btn" data-layer-fit="${A}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${g.alvoEnquadrar}</button>
602
- <button class="ui-micro-btn ${V ? "active" : ""}" data-layer-settings="${A}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${V}">${g.engrenagem}</button>
636
+ <button class="ui-micro-btn" data-layer-fit="${k}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${g.alvoEnquadrar}</button>
637
+ <button class="ui-micro-btn ${Y ? "active" : ""}" data-layer-settings="${k}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${Y}">${g.engrenagem}</button>
603
638
  </div>
604
639
 
605
- <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">
606
- <div class="ui-target-circle ${ie ? "selected" : ve ? "partial" : ""}"></div>
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 ${se ? "selected" : ke ? "partial" : ""}"></div>
607
642
  </div>
608
643
  </div>
609
644
 
610
- ${ke}
645
+ ${ze}
611
646
 
612
- <div class="ui-children-container ${$ > 0 ? "is-subchildren" : ""}" role="group" style="display: ${R ? "block" : "none"};">
613
- ${Ie}
614
- ${ye}
615
- ${we}
616
- ${C.length === 0 && S.length === 0 ? `<div class="ui-empty-row"><span>${p ? "Nenhum item correspondente" : D ? "Grupo vazio (adicione subcamadas ou feições)" : "Nenhum elemento neste grupo"}</span></div>` : ""}
647
+ <div class="ui-children-container ${E > 0 ? "is-subchildren" : ""}" role="group" style="display: ${N ? "block" : "none"};">
648
+ ${Fe}
649
+ ${Ce}
650
+ ${$e}
651
+ ${A.length === 0 && M.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>` : ""}
617
652
  </div>
618
653
  </div>
619
654
  `;
620
- }, I = Ne(o).map((x) => v(x)).join("");
655
+ }, b = Xe(o).map((y) => v(y)).join("");
621
656
  return `
622
- ${k}
657
+ ${L}
623
658
  <div class="ui-panel-box">
624
659
  <div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true">
625
- ${I}
660
+ ${b}
626
661
  </div>
627
662
  </div>
628
663
  `;
629
664
  }
630
- function Ge(e, o, a) {
665
+ function Je(e, o, a) {
631
666
  let t = e.find((i) => i.id === o);
632
667
  for (; t && t.parentId; ) {
633
668
  if (t.parentId === a) return !0;
@@ -635,10 +670,10 @@ function Ge(e, o, a) {
635
670
  }
636
671
  return !1;
637
672
  }
638
- class Ve {
673
+ class We {
639
674
  constructor(o, a) {
640
- y(this, "host");
641
- y(this, "shadow");
675
+ I(this, "host");
676
+ I(this, "shadow");
642
677
  this.host = o, this.shadow = a;
643
678
  }
644
679
  bindAll() {
@@ -651,7 +686,7 @@ class Ve {
651
686
  const t = o.getAttribute("data-layer-name-trigger");
652
687
  if (!t) return;
653
688
  this.host.editingLayerId = t, this.host.solicitarRenderizacao();
654
- const i = M(
689
+ const i = B(
655
690
  this.shadow,
656
691
  "data-inline-layer-input",
657
692
  t
@@ -659,10 +694,10 @@ class Ve {
659
694
  if (i) {
660
695
  i.focus(), i.select();
661
696
  let r = !1;
662
- const s = (n) => {
697
+ const n = (s) => {
663
698
  var l, c;
664
699
  if (!r) {
665
- if (r = !0, this.host.editingLayerId = null, n) {
700
+ if (r = !0, this.host.editingLayerId = null, s) {
666
701
  const f = i.value.trim(), u = this.host.camadas.find((p) => p.id === t);
667
702
  f && u && u.name !== f && (u.name = f, (c = (l = this.host).salvarLembrancaEstado) == null || c.call(l), this.host.dispararEvento("ui-camada-renomeada", {
668
703
  camadaId: t,
@@ -673,9 +708,9 @@ class Ve {
673
708
  this.host.solicitarRenderizacao();
674
709
  }
675
710
  };
676
- i.addEventListener("keydown", (n) => {
677
- n.key === "Enter" ? (n.preventDefault(), s(!0)) : n.key === "Escape" && (n.preventDefault(), s(!1));
678
- }), i.addEventListener("blur", () => s(!0));
711
+ i.addEventListener("keydown", (s) => {
712
+ s.key === "Enter" ? (s.preventDefault(), n(!0)) : s.key === "Escape" && (s.preventDefault(), n(!1));
713
+ }), i.addEventListener("blur", () => n(!0));
679
714
  }
680
715
  });
681
716
  }), this.shadow.querySelectorAll("[data-feat-name-trigger]").forEach((o) => {
@@ -684,7 +719,7 @@ class Ve {
684
719
  const t = o.getAttribute("data-feat-name-trigger");
685
720
  if (!t) return;
686
721
  this.host.editingFeatureId = t, this.host.solicitarRenderizacao();
687
- const i = M(
722
+ const i = B(
688
723
  this.shadow,
689
724
  "data-inline-feat-input",
690
725
  t
@@ -692,9 +727,9 @@ class Ve {
692
727
  if (i) {
693
728
  i.focus(), i.select();
694
729
  let r = !1;
695
- const s = (n) => {
730
+ const n = (s) => {
696
731
  if (!r) {
697
- if (r = !0, this.host.editingFeatureId = null, n) {
732
+ if (r = !0, this.host.editingFeatureId = null, s) {
698
733
  const l = i.value.trim(), c = this.host.feicoes.find((f) => f.id === t);
699
734
  l && c && c.name !== l && (c.name = l, this.host.dispararEvento("ui-feicao-renomeada", {
700
735
  feicaoId: t,
@@ -705,9 +740,9 @@ class Ve {
705
740
  this.host.solicitarRenderizacao();
706
741
  }
707
742
  };
708
- i.addEventListener("keydown", (n) => {
709
- n.key === "Enter" ? (n.preventDefault(), s(!0)) : n.key === "Escape" && (n.preventDefault(), s(!1));
710
- }), i.addEventListener("blur", () => s(!0));
743
+ i.addEventListener("keydown", (s) => {
744
+ s.key === "Enter" ? (s.preventDefault(), n(!0)) : s.key === "Escape" && (s.preventDefault(), n(!1));
745
+ }), i.addEventListener("blur", () => n(!0));
711
746
  }
712
747
  });
713
748
  });
@@ -720,35 +755,35 @@ class Ve {
720
755
  });
721
756
  };
722
757
  this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((r) => {
723
- const s = r.getAttribute("data-layer-id");
724
- s && (r.addEventListener("dragstart", (n) => {
725
- const l = n;
758
+ const n = r.getAttribute("data-layer-id");
759
+ n && (r.addEventListener("dragstart", (s) => {
760
+ const l = s;
726
761
  if (l.target.closest("input, button, select") || this.host.editingLayerId || this.host.editingFeatureId) {
727
762
  l.preventDefault();
728
763
  return;
729
764
  }
730
- o = "layer", a = s, l.dataTransfer && (l.dataTransfer.setData("text/plain", JSON.stringify({ type: "layer", id: s })), l.dataTransfer.effectAllowed = "move"), r.classList.add("dragging");
731
- }), r.addEventListener("dragover", (n) => {
732
- const l = n;
765
+ o = "layer", a = n, l.dataTransfer && (l.dataTransfer.setData("text/plain", JSON.stringify({ type: "layer", id: n })), l.dataTransfer.effectAllowed = "move"), r.classList.add("dragging");
766
+ }), r.addEventListener("dragover", (s) => {
767
+ const l = s;
733
768
  if (l.preventDefault(), l.stopPropagation(), l.dataTransfer && (l.dataTransfer.dropEffect = "move"), o === "layer") {
734
- if (a === s) return;
769
+ if (a === n) return;
735
770
  const c = r.getBoundingClientRect(), f = (l.clientY - c.top) / c.height;
736
771
  f < 0.25 ? (r.classList.add("drop-above"), r.classList.remove("drop-below", "drop-into")) : f > 0.75 ? (r.classList.add("drop-below"), r.classList.remove("drop-above", "drop-into")) : (r.classList.add("drop-into"), r.classList.remove("drop-above", "drop-below"));
737
772
  } else o === "feature" && r.classList.add("drop-into");
738
- }), r.addEventListener("dragleave", (n) => {
739
- const l = n.relatedTarget;
773
+ }), r.addEventListener("dragleave", (s) => {
774
+ const l = s.relatedTarget;
740
775
  l && r.contains(l) || r.classList.remove("drop-above", "drop-below", "drop-into");
741
- }), r.addEventListener("drop", (n) => {
776
+ }), r.addEventListener("drop", (s) => {
742
777
  var u, p;
743
- const l = n;
778
+ const l = s;
744
779
  l.preventDefault(), l.stopPropagation();
745
780
  const c = r.classList.contains("drop-above"), f = r.classList.contains("drop-into");
746
781
  if (i(), o === "layer") {
747
- if (!a || a === s) return;
748
- const d = this.host.camadas.find((h) => h.id === a), m = this.host.camadas.find((h) => h.id === s);
782
+ if (!a || a === n) return;
783
+ const d = this.host.camadas.find((h) => h.id === a), m = this.host.camadas.find((h) => h.id === n);
749
784
  if (!d || !m) return;
750
785
  if (f)
751
- Ge(this.host.camadas, m.id, d.id) || (d.parentId = m.id, "expandedLayers" in this.host && this.host.expandedLayers && this.host.expandedLayers.add(m.id), this.host.dispararEvento("ui-camada-mover-hierarquia", {
786
+ Je(this.host.camadas, m.id, d.id) || (d.parentId = m.id, "expandedLayers" in this.host && this.host.expandedLayers && this.host.expandedLayers.add(m.id), this.host.dispararEvento("ui-camada-mover-hierarquia", {
752
787
  camadaId: d.id,
753
788
  novoParentId: m.id,
754
789
  camada: d
@@ -757,21 +792,21 @@ class Ve {
757
792
  const h = this.host.camadas.findIndex((v) => v.id === a);
758
793
  if (h === -1) return;
759
794
  this.host.camadas.splice(h, 1);
760
- const k = this.host.camadas.findIndex((v) => v.id === s);
761
- k === -1 ? this.host.camadas.push(d) : this.host.camadas.splice(c ? k : k + 1, 0, d), d.parentId = m.parentId ?? null;
795
+ const L = this.host.camadas.findIndex((v) => v.id === n);
796
+ L === -1 ? this.host.camadas.push(d) : this.host.camadas.splice(c ? L : L + 1, 0, d), d.parentId = m.parentId ?? null;
762
797
  }
763
798
  (p = (u = this.host).salvarLembrancaEstado) == null || p.call(u), this.host.dispararEvento("ui-camadas-reordenadas", {
764
799
  camadas: [...this.host.camadas]
765
800
  }), this.host.solicitarRenderizacao();
766
801
  } else if (o === "feature") {
767
802
  if (!t) return;
768
- const d = this.host.feicoes.find((h) => h.id === t), m = this.host.camadas.find((h) => h.id === s);
769
- if (d && m && d.layerId !== s) {
803
+ const d = this.host.feicoes.find((h) => h.id === t), m = this.host.camadas.find((h) => h.id === n);
804
+ if (d && m && d.layerId !== n) {
770
805
  const h = d.layerId;
771
- d.layerId = s, this.host.dispararEvento("ui-feicao-movida", {
806
+ d.layerId = n, this.host.dispararEvento("ui-feicao-movida", {
772
807
  feicaoId: d.id,
773
808
  camadaOrigemId: h,
774
- camadaDestinoId: s,
809
+ camadaDestinoId: n,
775
810
  feicao: d
776
811
  }), this.host.solicitarRenderizacao();
777
812
  }
@@ -780,20 +815,20 @@ class Ve {
780
815
  o = null, a = null, t = null, i();
781
816
  }));
782
817
  }), this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach((r) => {
783
- const s = r.getAttribute("data-feat-row"), n = r.getAttribute("data-feat-layer");
784
- s && (r.addEventListener("dragstart", (l) => {
818
+ const n = r.getAttribute("data-feat-row"), s = r.getAttribute("data-feat-layer");
819
+ n && (r.addEventListener("dragstart", (l) => {
785
820
  const c = l;
786
821
  if (c.target.closest("input, button, select") || this.host.editingLayerId || this.host.editingFeatureId) {
787
822
  c.preventDefault();
788
823
  return;
789
824
  }
790
- c.stopPropagation(), o = "feature", t = s, a = n, c.dataTransfer && (c.dataTransfer.setData(
825
+ c.stopPropagation(), o = "feature", t = n, a = s, c.dataTransfer && (c.dataTransfer.setData(
791
826
  "text/plain",
792
- JSON.stringify({ type: "feature", id: s, layerId: n })
827
+ JSON.stringify({ type: "feature", id: n, layerId: s })
793
828
  ), c.dataTransfer.effectAllowed = "move"), r.classList.add("dragging");
794
829
  }), r.addEventListener("dragover", (l) => {
795
830
  const c = l;
796
- if (o !== "feature" || t === s) return;
831
+ if (o !== "feature" || t === n) return;
797
832
  c.preventDefault(), c.stopPropagation(), c.dataTransfer && (c.dataTransfer.dropEffect = "move");
798
833
  const f = r.getBoundingClientRect(), u = c.clientY - f.top < f.height / 2;
799
834
  r.classList.toggle("drop-above", u), r.classList.toggle("drop-below", !u);
@@ -802,18 +837,18 @@ class Ve {
802
837
  c && r.contains(c) || r.classList.remove("drop-above", "drop-below");
803
838
  }), r.addEventListener("drop", (l) => {
804
839
  const c = l;
805
- if (o !== "feature" || !t || t === s) return;
840
+ if (o !== "feature" || !t || t === n) return;
806
841
  c.preventDefault(), c.stopPropagation();
807
842
  const f = r.classList.contains("drop-above");
808
843
  i();
809
- const u = this.host.feicoes.findIndex((b) => b.id === t);
844
+ const u = this.host.feicoes.findIndex((x) => x.id === t);
810
845
  if (u === -1) return;
811
- const p = this.host.feicoes.find((b) => b.id === s);
846
+ const p = this.host.feicoes.find((x) => x.id === n);
812
847
  if (!p) return;
813
- const [d] = this.host.feicoes.splice(u, 1), m = d.layerId, h = p.layerId, k = m !== h;
814
- k && (d.layerId = h);
815
- const v = this.host.feicoes.findIndex((b) => b.id === s);
816
- v === -1 ? this.host.feicoes.push(d) : this.host.feicoes.splice(f ? v : v + 1, 0, d), k && this.host.dispararEvento("ui-feicao-movida", {
848
+ const [d] = this.host.feicoes.splice(u, 1), m = d.layerId, h = p.layerId, L = m !== h;
849
+ L && (d.layerId = h);
850
+ const v = this.host.feicoes.findIndex((x) => x.id === n);
851
+ v === -1 ? this.host.feicoes.push(d) : this.host.feicoes.splice(f ? v : v + 1, 0, d), L && this.host.dispararEvento("ui-feicao-movida", {
817
852
  feicaoId: d.id,
818
853
  camadaOrigemId: m,
819
854
  camadaDestinoId: h,
@@ -837,27 +872,27 @@ class Ve {
837
872
  t && o.addEventListener("pointerdown", (i) => {
838
873
  const r = i;
839
874
  if (r.pointerType === "mouse" && r.button !== 0 || this.host.editingLayerId || this.host.editingFeatureId) return;
840
- let s = null, n = !1;
875
+ let n = null, s = !1;
841
876
  const l = t, c = () => {
842
877
  this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((p) => p.classList.remove("dragging", "drop-above", "drop-below"));
843
878
  }, f = (p) => {
844
879
  p.preventDefault(), a.classList.add("dragging");
845
880
  const d = this.shadow.elementFromPoint(p.clientX, p.clientY), m = d ? d.closest(".ui-layer-row") : null;
846
- if (s && s !== m && s.classList.remove("drop-above", "drop-below"), m && m !== a) {
847
- s = m;
881
+ if (n && n !== m && n.classList.remove("drop-above", "drop-below"), m && m !== a) {
882
+ n = m;
848
883
  const h = m.getBoundingClientRect();
849
- n = p.clientY - h.top < h.height / 2, m.classList.toggle("drop-above", n), m.classList.toggle("drop-below", !n);
884
+ s = p.clientY - h.top < h.height / 2, m.classList.toggle("drop-above", s), m.classList.toggle("drop-below", !s);
850
885
  } else
851
- s = null;
886
+ n = null;
852
887
  }, u = () => {
853
888
  var p, d;
854
- if (window.removeEventListener("pointermove", f), window.removeEventListener("pointerup", u), window.removeEventListener("pointercancel", u), s) {
855
- const m = s.getAttribute("data-layer-id");
889
+ if (window.removeEventListener("pointermove", f), window.removeEventListener("pointerup", u), window.removeEventListener("pointercancel", u), n) {
890
+ const m = n.getAttribute("data-layer-id");
856
891
  if (c(), m && l && m !== l) {
857
- const h = this.host.camadas.findIndex((k) => k.id === l);
892
+ const h = this.host.camadas.findIndex((L) => L.id === l);
858
893
  if (h !== -1) {
859
- const [k] = this.host.camadas.splice(h, 1), v = this.host.camadas.findIndex((b) => b.id === m);
860
- v === -1 ? this.host.camadas.push(k) : this.host.camadas.splice(n ? v : v + 1, 0, k), (d = (p = this.host).salvarLembrancaEstado) == null || d.call(p), this.host.dispararEvento("ui-camadas-reordenadas", {
894
+ const [L] = this.host.camadas.splice(h, 1), v = this.host.camadas.findIndex((x) => x.id === m);
895
+ v === -1 ? this.host.camadas.push(L) : this.host.camadas.splice(s ? v : v + 1, 0, L), (d = (p = this.host).salvarLembrancaEstado) == null || d.call(p), this.host.dispararEvento("ui-camadas-reordenadas", {
861
896
  camadas: [...this.host.camadas]
862
897
  }), this.host.solicitarRenderizacao();
863
898
  }
@@ -870,12 +905,12 @@ class Ve {
870
905
  });
871
906
  }
872
907
  }
873
- const Ue = "ui_camadas_estado_";
874
- function _e(e, o) {
908
+ const Ze = "ui_camadas_estado_";
909
+ function ea(e, o) {
875
910
  const a = (e || o || "default").trim();
876
- return `${Ue}${a}`;
911
+ return `${Ze}${a}`;
877
912
  }
878
- function W(e) {
913
+ function ee(e) {
879
914
  if (typeof window > "u" || typeof localStorage > "u")
880
915
  return null;
881
916
  try {
@@ -889,7 +924,7 @@ function W(e) {
889
924
  }
890
925
  return null;
891
926
  }
892
- function Ke(e, o) {
927
+ function aa(e, o) {
893
928
  if (!(typeof window > "u" || typeof localStorage > "u"))
894
929
  try {
895
930
  localStorage.setItem(e, JSON.stringify(o));
@@ -897,14 +932,14 @@ function Ke(e, o) {
897
932
  console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
898
933
  }
899
934
  }
900
- function Ye(e) {
935
+ function ta(e) {
901
936
  if (!(typeof window > "u" || typeof localStorage > "u"))
902
937
  try {
903
938
  localStorage.removeItem(e);
904
939
  } catch {
905
940
  }
906
941
  }
907
- function Z(e) {
942
+ function re(e) {
908
943
  return {
909
944
  name: e.name,
910
945
  visible: e.visible !== !1,
@@ -914,20 +949,20 @@ function Z(e) {
914
949
  parentId: e.parentId !== void 0 ? e.parentId : null
915
950
  };
916
951
  }
917
- function Qe(e, o, a, t) {
952
+ function ra(e, o, a, t) {
918
953
  if (!Array.isArray(e)) return;
919
- const i = (o == null ? void 0 : o.camadasOverrides) || {}, r = new Set((o == null ? void 0 : o.expandedLayerIds) || []), s = new Set((o == null ? void 0 : o.collapsedLayerIds) || []), n = r.size > 0 || s.size > 0;
954
+ const i = (o == null ? void 0 : o.camadasOverrides) || {}, r = new Set((o == null ? void 0 : o.expandedLayerIds) || []), n = new Set((o == null ? void 0 : o.collapsedLayerIds) || []), s = r.size > 0 || n.size > 0;
920
955
  for (let u = 0; u < e.length; u++) {
921
956
  const p = e[u], d = i[p.id];
922
- if (t == null || t.set(p.id, Z(p)), d) {
923
- const m = d.origem, h = (k) => {
924
- var b;
925
- const v = (b = t == null ? void 0 : t.get(p.id)) == null ? void 0 : b[k];
926
- return m !== void 0 && m[k] !== v;
957
+ if (t == null || t.set(p.id, re(p)), d) {
958
+ const m = d.origem, h = (L) => {
959
+ var x;
960
+ const v = (x = t == null ? void 0 : t.get(p.id)) == null ? void 0 : x[L];
961
+ return m !== void 0 && m[L] !== v;
927
962
  };
928
963
  typeof d.name == "string" && d.name.trim() && !h("name") && (p.name = d.name), typeof d.visible == "boolean" && !h("visible") && (p.visible = d.visible), typeof d.locked == "boolean" && !h("locked") && (p.locked = d.locked), typeof d.opacity == "number" && !h("opacity") && (p.opacity = d.opacity), typeof d.color == "string" && !h("color") && (p.color = d.color), d.parentId !== void 0 && !h("parentId") && (p.parentId = d.parentId);
929
964
  }
930
- n ? r.has(p.id) ? a.add(p.id) : s.has(p.id) ? a.delete(p.id) : a.add(p.id) : a.add(p.id);
965
+ s ? r.has(p.id) ? a.add(p.id) : n.has(p.id) ? a.delete(p.id) : a.add(p.id) : a.add(p.id);
931
966
  }
932
967
  const l = new Set(e.map((u) => u.id)), c = o == null ? void 0 : o.ordemOrigemIds;
933
968
  if (!(Array.isArray(c) && (() => {
@@ -941,13 +976,13 @@ function Qe(e, o, a, t) {
941
976
  });
942
977
  }
943
978
  }
944
- function Je(e) {
979
+ function ia(e) {
945
980
  const { estadoAnterior: o, camadas: a, expandedLayers: t } = e;
946
- let i = (o == null ? void 0 : o.expandedLayerIds) || [], r = (o == null ? void 0 : o.collapsedLayerIds) || [], s = (o == null ? void 0 : o.ordemCamadasIds) || [], n = o == null ? void 0 : o.ordemOrigemIds;
981
+ let i = (o == null ? void 0 : o.expandedLayerIds) || [], r = (o == null ? void 0 : o.collapsedLayerIds) || [], n = (o == null ? void 0 : o.ordemCamadasIds) || [], s = o == null ? void 0 : o.ordemOrigemIds;
947
982
  const l = {
948
983
  ...(o == null ? void 0 : o.camadasOverrides) || {}
949
984
  };
950
- a.length > 0 && (i = [], r = [], s = a.map((c) => c.id), n = e.origensCamadas ? [...e.origensCamadas.keys()] : s, a.forEach((c) => {
985
+ a.length > 0 && (i = [], r = [], n = a.map((c) => c.id), s = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((c) => {
951
986
  var f, u;
952
987
  t.has(c.id) ? i.push(c.id) : r.push(c.id), l[c.id] = {
953
988
  name: c.name,
@@ -965,8 +1000,8 @@ function Je(e) {
965
1000
  collapsedLayerIds: r,
966
1001
  camadaAtivaId: e.camadaAtivaId,
967
1002
  painelColapsado: e.painelColapsado,
968
- ordemCamadasIds: s,
969
- ordemOrigemIds: n,
1003
+ ordemCamadasIds: n,
1004
+ ordemOrigemIds: s,
970
1005
  mapaBaseAtivo: e.mapaBaseAtivo,
971
1006
  densidade: e.densidade,
972
1007
  altura: e.altura,
@@ -974,26 +1009,26 @@ function Je(e) {
974
1009
  ultimaAtualizacao: Date.now()
975
1010
  };
976
1011
  }
977
- const We = ':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: 15px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 13px;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:18px;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:2.5px;background:var(--ui-cor-fundo, #0d0d10);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}';
978
- function Xe(e, o) {
1012
+ const oa = ':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}';
1013
+ function na(e, o) {
979
1014
  o.querySelectorAll("[data-layer-row]").forEach((i) => {
980
1015
  i.addEventListener("click", (r) => {
981
1016
  if (r.target.closest(
982
1017
  "[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], input, button"
983
1018
  ))
984
1019
  return;
985
- const n = i.getAttribute("data-layer-row");
986
- n && e.definirCamadaAtiva(n, !0);
1020
+ const s = i.getAttribute("data-layer-row");
1021
+ s && e.definirCamadaAtiva(s, !0);
987
1022
  });
988
1023
  }), o.querySelectorAll("[data-layer-expand]").forEach((i) => {
989
1024
  i.addEventListener("click", (r) => {
990
1025
  r.stopPropagation();
991
- const s = i.getAttribute("data-layer-expand");
992
- if (!s) return;
993
- e.expandedLayers.has(s) ? e.expandedLayers.delete(s) : e.expandedLayers.add(s);
994
- const n = i.closest(".ui-layer-group"), l = i.querySelector(".ui-chevron-icon"), c = e.expandedLayers.has(s);
995
- if (l && l.classList.toggle("open", c), n) {
996
- const f = n.querySelector(".ui-children-container");
1026
+ const n = i.getAttribute("data-layer-expand");
1027
+ if (!n) return;
1028
+ e.expandedLayers.has(n) ? e.expandedLayers.delete(n) : e.expandedLayers.add(n);
1029
+ const s = i.closest(".ui-layer-group"), l = i.querySelector(".ui-chevron-icon"), c = e.expandedLayers.has(n);
1030
+ if (l && l.classList.toggle("open", c), s) {
1031
+ const f = s.querySelector(".ui-children-container");
997
1032
  f && (f.style.display = c ? "block" : "none");
998
1033
  }
999
1034
  e.salvarLembrancaEstado();
@@ -1001,14 +1036,14 @@ function Xe(e, o) {
1001
1036
  }), o.querySelectorAll("[data-layer-eye]").forEach((i) => {
1002
1037
  i.addEventListener("click", (r) => {
1003
1038
  r.stopPropagation();
1004
- const s = i.getAttribute("data-layer-eye"), n = e.camadas.find((l) => l.id === s);
1005
- if (n) {
1006
- n.visible = n.visible === !1;
1007
- const l = n.visible !== !1;
1008
- i.innerHTML = l ? g.olhoAberto : g.olhoFechado, F(i, l ? "Ocultar Camada" : "Exibir Camada");
1039
+ const n = i.getAttribute("data-layer-eye"), s = e.camadas.find((l) => l.id === n);
1040
+ if (s) {
1041
+ s.visible = s.visible === !1;
1042
+ const l = s.visible !== !1;
1043
+ i.innerHTML = l ? g.olhoAberto : g.olhoFechado, q(i, l ? "Ocultar Camada" : "Exibir Camada");
1009
1044
  const c = i.closest(".ui-layer-row");
1010
- c && c.classList.toggle("hidden-layer", !l), Ze(e, o), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1011
- camadaId: n.id,
1045
+ c && c.classList.toggle("hidden-layer", !l), sa(e, o), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1046
+ camadaId: s.id,
1012
1047
  visivel: l
1013
1048
  });
1014
1049
  }
@@ -1016,85 +1051,85 @@ function Xe(e, o) {
1016
1051
  }), o.querySelectorAll("[data-layer-lock]").forEach((i) => {
1017
1052
  i.addEventListener("click", (r) => {
1018
1053
  r.stopPropagation();
1019
- const s = i.getAttribute("data-layer-lock"), n = e.camadas.find((l) => l.id === s);
1020
- n && (n.locked = !n.locked, i.innerHTML = n.locked ? g.cadeadoTrancado : g.cadeadoAberto, i.classList.toggle("ui-lock-open", !n.locked), F(i, n.locked ? "Desbloquear Camada" : "Bloquear Camada"), ea(e, o, n.id, n.locked === !0), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1021
- camadaId: n.id,
1022
- bloqueado: n.locked
1054
+ const n = i.getAttribute("data-layer-lock"), s = e.camadas.find((l) => l.id === n);
1055
+ s && (s.locked = !s.locked, i.innerHTML = s.locked ? g.cadeadoTrancado : g.cadeadoAberto, i.classList.toggle("ui-lock-open", !s.locked), q(i, s.locked ? "Desbloquear Camada" : "Bloquear Camada"), la(e, o, s.id, s.locked === !0), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1056
+ camadaId: s.id,
1057
+ bloqueado: s.locked
1023
1058
  }));
1024
1059
  });
1025
1060
  }), o.querySelectorAll("[data-layer-fit]").forEach((i) => {
1026
1061
  i.addEventListener("click", (r) => {
1027
1062
  r.stopPropagation();
1028
- const s = i.getAttribute("data-layer-fit");
1029
- s && e.dispararEvento("ui-camada-enquadrar", { camadaId: s });
1063
+ const n = i.getAttribute("data-layer-fit");
1064
+ n && e.dispararEvento("ui-camada-enquadrar", { camadaId: n });
1030
1065
  });
1031
1066
  }), o.querySelectorAll("[data-layer-settings]").forEach((i) => {
1032
1067
  i.addEventListener("click", (r) => {
1033
1068
  r.stopPropagation();
1034
- const s = i.getAttribute("data-layer-settings");
1035
- e.activeSettingsLayerId = e.activeSettingsLayerId === s ? null : s, e.solicitarRenderizacao();
1069
+ const n = i.getAttribute("data-layer-settings");
1070
+ e.activeSettingsLayerId = e.activeSettingsLayerId === n ? null : n, e.solicitarRenderizacao();
1036
1071
  });
1037
1072
  }), o.querySelectorAll("[data-layer-settings-close]").forEach((i) => {
1038
1073
  i.addEventListener("click", (r) => {
1039
1074
  r.stopPropagation(), e.activeSettingsLayerId = null, e.solicitarRenderizacao();
1040
1075
  });
1041
1076
  });
1042
- const a = (i, r, s) => {
1043
- const n = e.camadas.find((d) => d.id === i);
1044
- if (!n) return;
1045
- const l = G(r, n.color || "#00E08A");
1046
- n.color = l;
1077
+ const a = (i, r, n) => {
1078
+ const s = e.camadas.find((d) => d.id === i);
1079
+ if (!s) return;
1080
+ const l = V(r, s.color || "#00E08A");
1081
+ s.color = l;
1047
1082
  const c = o.getElementById(`sample-color-${i}`);
1048
1083
  c && (c.style.backgroundColor = l);
1049
1084
  const f = o.getElementById(`hex-color-${i}`);
1050
1085
  f && (f.textContent = l.toUpperCase());
1051
1086
  const u = o.getElementById(`settings-drawer-${i}`);
1052
1087
  u && u.style.setProperty("--drawer-cor-camada", l);
1053
- const p = M(o, "data-layer-row", i);
1088
+ const p = B(o, "data-layer-row", i);
1054
1089
  if (p) {
1055
1090
  p.style.setProperty("--layer-active-color", l);
1056
1091
  const d = p.querySelector(".ui-col-colorbar");
1057
1092
  d && (d.style.backgroundColor = l);
1058
1093
  }
1059
- s ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: n.id, cor: l });
1094
+ n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: s.id, cor: l });
1060
1095
  };
1061
1096
  o.querySelectorAll("[data-layer-color-picker]").forEach((i) => {
1062
- const r = i, s = (n) => (l) => {
1097
+ const r = i, n = (s) => (l) => {
1063
1098
  const c = r.getAttribute("data-layer-color-picker");
1064
1099
  if (!c) return;
1065
1100
  const f = l.target.value;
1066
- a(c, f, n);
1101
+ a(c, f, s);
1067
1102
  };
1068
- r.addEventListener("input", s(!1)), r.addEventListener("change", s(!0));
1103
+ r.addEventListener("input", n(!1)), r.addEventListener("change", n(!0));
1069
1104
  });
1070
1105
  const t = (i, r) => {
1071
- const s = e.camadas.find((c) => c.id === i);
1072
- if (!s) return;
1073
- s.opacity = r;
1074
- const n = o.getElementById(`badge-op-${i}`);
1075
- n && (n.textContent = `${Math.round(r * 100)}%`);
1076
- const l = M(o, "data-layer-opacity-slider", i);
1077
- l && parseFloat(l.value) !== r && (l.value = String(r)), e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-opacidade", { camadaId: s.id, opacidade: r });
1106
+ const n = e.camadas.find((c) => c.id === i);
1107
+ if (!n) return;
1108
+ n.opacity = r;
1109
+ const s = o.getElementById(`badge-op-${i}`);
1110
+ s && (s.textContent = `${Math.round(r * 100)}%`);
1111
+ const l = B(o, "data-layer-opacity-slider", i);
1112
+ l && parseFloat(l.value) !== r && (l.value = String(r)), e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-opacidade", { camadaId: n.id, opacidade: r });
1078
1113
  };
1079
1114
  o.querySelectorAll("[data-layer-opacity-slider]").forEach((i) => {
1080
1115
  i.addEventListener("input", (r) => {
1081
- const s = i.getAttribute("data-layer-opacity-slider");
1082
- if (!s) return;
1083
- const n = parseFloat(r.target.value);
1084
- t(s, n);
1116
+ const n = i.getAttribute("data-layer-opacity-slider");
1117
+ if (!n) return;
1118
+ const s = parseFloat(r.target.value);
1119
+ t(n, s);
1085
1120
  });
1086
1121
  }), o.querySelectorAll("[data-delete-layer]").forEach((i) => {
1087
1122
  let r = null;
1088
- i.addEventListener("click", (s) => {
1089
- s.stopPropagation();
1090
- const n = i.getAttribute("data-delete-layer");
1091
- if (!n) return;
1123
+ i.addEventListener("click", (n) => {
1124
+ n.stopPropagation();
1125
+ const s = i.getAttribute("data-delete-layer");
1126
+ if (!s) return;
1092
1127
  if (i.classList.contains("confirming")) {
1093
- r && clearTimeout(r), e.dispararEvento("ui-camada-excluida", { camadaId: n });
1128
+ r && clearTimeout(r), e.dispararEvento("ui-camada-excluida", { camadaId: s });
1094
1129
  const c = e.selectedFeatureIds.size;
1095
1130
  e.camadas.forEach((f) => {
1096
- f.parentId === n && (f.parentId = null);
1097
- }), e.removerCamada(n), e.selectedFeatureIds.size !== c && e.notificarMudancaSelecao();
1131
+ f.parentId === s && (f.parentId = null);
1132
+ }), e.removerCamada(s), e.selectedFeatureIds.size !== c && e.notificarMudancaSelecao();
1098
1133
  } else {
1099
1134
  i.classList.add("confirming");
1100
1135
  const c = i.querySelector(".ui-btn-label");
@@ -1105,7 +1140,7 @@ function Xe(e, o) {
1105
1140
  });
1106
1141
  }), o.querySelectorAll("[data-layer-parent-select]").forEach((i) => {
1107
1142
  i.addEventListener("change", (r) => {
1108
- const s = r.target, n = s.getAttribute("data-layer-parent-select"), l = s.value || null, c = e.camadas.find((f) => f.id === n);
1143
+ const n = r.target, s = n.getAttribute("data-layer-parent-select"), l = n.value || null, c = e.camadas.find((f) => f.id === s);
1109
1144
  c && (c.parentId = l, e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-mover-hierarquia", {
1110
1145
  camadaId: c.id,
1111
1146
  novoParentId: l,
@@ -1115,39 +1150,39 @@ function Xe(e, o) {
1115
1150
  }), o.querySelectorAll("[data-add-sublayer]").forEach((i) => {
1116
1151
  i.addEventListener("click", (r) => {
1117
1152
  r.stopPropagation();
1118
- const s = i.getAttribute("data-add-sublayer");
1119
- e.dispararEvento("ui-camada-adicionar", { parentId: s });
1153
+ const n = i.getAttribute("data-add-sublayer");
1154
+ e.dispararEvento("ui-camada-adicionar", { parentId: n });
1120
1155
  });
1121
1156
  }), o.querySelectorAll("[data-layer-target]").forEach((i) => {
1122
1157
  i.addEventListener("click", (r) => {
1123
1158
  r.stopPropagation();
1124
- const s = r, n = i.getAttribute("data-layer-target"), l = ae(
1125
- e.feicoes.filter((f) => f.layerId === n),
1159
+ const n = r, s = i.getAttribute("data-layer-target"), l = U(
1160
+ e.feicoes.filter((f) => f.layerId === s),
1126
1161
  e.searchQuery
1127
1162
  );
1128
1163
  if (l.length === 0) return;
1129
- l.every((f) => e.selectedFeatureIds.has(f.id)) ? l.forEach((f) => e.selectedFeatureIds.delete(f.id)) : (!s.ctrlKey && !s.metaKey && e.selectedFeatureIds.clear(), l.forEach((f) => e.selectedFeatureIds.add(f.id))), e.lastClickedFeatureId = l[l.length - 1].id, e.sincronizarSelecaoDOM(), e.notificarMudancaSelecao();
1164
+ l.every((f) => e.selectedFeatureIds.has(f.id)) ? l.forEach((f) => e.selectedFeatureIds.delete(f.id)) : (!n.ctrlKey && !n.metaKey && e.selectedFeatureIds.clear(), l.forEach((f) => e.selectedFeatureIds.add(f.id))), e.lastClickedFeatureId = l[l.length - 1].id, e.sincronizarSelecaoDOM(), e.notificarMudancaSelecao();
1130
1165
  });
1131
1166
  });
1132
1167
  }
1133
- function Ze(e, o) {
1168
+ function sa(e, o) {
1134
1169
  const a = o.getElementById("btn-toggle-all-vis");
1135
1170
  if (!a) return;
1136
1171
  const t = e.camadas.every((i) => i.visible !== !1);
1137
- a.innerHTML = t ? g.olhoAberto : g.olhoFechado, F(a, t ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1172
+ a.innerHTML = t ? g.olhoAberto : g.olhoFechado, q(a, t ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1138
1173
  }
1139
- function ea(e, o, a, t) {
1174
+ function la(e, o, a, t) {
1140
1175
  e.feicoes.filter((i) => i.layerId === a).forEach((i) => {
1141
- const r = M(o, "data-feat-lock", i.id);
1176
+ const r = B(o, "data-feat-lock", i.id);
1142
1177
  if (!r) return;
1143
- const s = i.locked === !0 || t;
1144
- r.innerHTML = s ? g.cadeadoTrancado : g.cadeadoAberto, r.classList.toggle("ui-lock-open", !s), t ? r.setAttribute("data-locked-by-layer", "true") : r.removeAttribute("data-locked-by-layer"), F(
1178
+ const n = i.locked === !0 || t;
1179
+ r.innerHTML = n ? g.cadeadoTrancado : g.cadeadoAberto, r.classList.toggle("ui-lock-open", !n), t ? r.setAttribute("data-locked-by-layer", "true") : r.removeAttribute("data-locked-by-layer"), q(
1145
1180
  r,
1146
- t ? "Bloqueada pela camada" : s ? "Desbloquear Feição" : "Bloquear Feição"
1181
+ t ? "Bloqueada pela camada" : n ? "Desbloquear Feição" : "Bloquear Feição"
1147
1182
  );
1148
1183
  });
1149
1184
  }
1150
- function aa(e, o) {
1185
+ function ca(e, o) {
1151
1186
  const a = o.getElementById("btn-footer-vis");
1152
1187
  a && a.addEventListener("click", () => {
1153
1188
  const u = e.feicoes.filter((m) => e.selectedFeatureIds.has(m.id));
@@ -1189,8 +1224,8 @@ function aa(e, o) {
1189
1224
  valor: p
1190
1225
  }), e.solicitarRenderizacao());
1191
1226
  }));
1192
- const s = o.getElementById("select-footer-move");
1193
- s && s.addEventListener("change", (u) => {
1227
+ const n = o.getElementById("select-footer-move");
1228
+ n && n.addEventListener("change", (u) => {
1194
1229
  const p = u.target.value;
1195
1230
  if (!p) return;
1196
1231
  const d = e.feicoes.filter((h) => e.selectedFeatureIds.has(h.id));
@@ -1210,8 +1245,8 @@ function aa(e, o) {
1210
1245
  valor: p
1211
1246
  }), e.solicitarRenderizacao();
1212
1247
  });
1213
- const n = o.getElementById("btn-footer-new-layer");
1214
- n && n.addEventListener("click", () => {
1248
+ const s = o.getElementById("btn-footer-new-layer");
1249
+ s && s.addEventListener("click", () => {
1215
1250
  e.dispararEvento("ui-camada-adicionar", {});
1216
1251
  });
1217
1252
  const l = o.getElementById("btn-footer-new-group");
@@ -1226,8 +1261,8 @@ function aa(e, o) {
1226
1261
  const d = Array.from(e.selectedFeatureIds);
1227
1262
  if (d.length === 0) return;
1228
1263
  if (!c.classList.contains("confirming")) {
1229
- c.classList.add("confirming"), F(c, `Clique novamente para excluir ${d.length} selecionado(s)`), u = setTimeout(() => {
1230
- c.classList.remove("confirming"), F(c, p);
1264
+ c.classList.add("confirming"), q(c, `Clique novamente para excluir ${d.length} selecionado(s)`), u = setTimeout(() => {
1265
+ c.classList.remove("confirming"), q(c, p);
1231
1266
  }, 3500);
1232
1267
  return;
1233
1268
  }
@@ -1243,12 +1278,100 @@ function aa(e, o) {
1243
1278
  const f = o.getElementById("btn-footer-clear");
1244
1279
  f && f.addEventListener("click", () => e.limparSelecao(!0));
1245
1280
  }
1246
- function ta(e, o) {
1281
+ const da = [
1282
+ { tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
1283
+ { tipo: "olho", atributo: "data-feat-eye", entidade: "feicao" },
1284
+ { tipo: "cadeado", atributo: "data-layer-lock", entidade: "camada" },
1285
+ { tipo: "cadeado", atributo: "data-feat-lock", entidade: "feicao" },
1286
+ { tipo: "selecao", atributo: "data-layer-target", entidade: "camada" },
1287
+ { tipo: "selecao", atributo: "data-feat-target", entidade: "feicao" }
1288
+ ], ie = {
1289
+ olho: "[data-layer-eye], [data-feat-eye]",
1290
+ cadeado: "[data-layer-lock], [data-feat-lock]",
1291
+ selecao: "[data-layer-target], [data-feat-target]"
1292
+ }, ua = 3;
1293
+ function pa(e) {
1294
+ return da.find((o) => e.hasAttribute(o.atributo)) ?? null;
1295
+ }
1296
+ function ae(e, o) {
1297
+ const a = pa(o);
1298
+ if (!a) return null;
1299
+ const t = o.getAttribute(a.atributo);
1300
+ if (!t) return null;
1301
+ if (a.tipo === "olho") {
1302
+ const r = a.entidade === "camada" ? e.camadas.find((n) => n.id === t) : e.feicoes.find((n) => n.id === t);
1303
+ return r ? r.visible !== !1 : null;
1304
+ }
1305
+ if (a.tipo === "cadeado") {
1306
+ if (o.hasAttribute("data-locked-by-layer")) return null;
1307
+ const r = a.entidade === "camada" ? e.camadas.find((n) => n.id === t) : e.feicoes.find((n) => n.id === t);
1308
+ return r ? r.locked === !0 : null;
1309
+ }
1310
+ if (a.entidade === "feicao") return e.selectedFeatureIds.has(t);
1311
+ const i = U(
1312
+ e.feicoes.filter((r) => r.layerId === t),
1313
+ e.searchQuery
1314
+ );
1315
+ return i.length === 0 ? null : i.every((r) => e.selectedFeatureIds.has(r.id));
1316
+ }
1317
+ function he(e, o, a = !1) {
1318
+ e.dispatchEvent(
1319
+ new MouseEvent("click", {
1320
+ bubbles: !0,
1321
+ cancelable: !0,
1322
+ ctrlKey: o,
1323
+ shiftKey: a
1324
+ })
1325
+ );
1326
+ }
1327
+ function fa(e, o) {
1328
+ Object.keys(ie).forEach((a) => {
1329
+ o.querySelectorAll(ie[a]).forEach((t) => {
1330
+ t.addEventListener("pointerdown", (i) => ma(e, o, a, t, i));
1331
+ });
1332
+ });
1333
+ }
1334
+ function ma(e, o, a, t, i) {
1335
+ if (i.pointerType === "mouse" && i.button !== 0 || e.editingLayerId || e.editingFeatureId || ae(e, t) === null) return;
1336
+ const r = ie[a], n = i.ctrlKey || i.metaKey, s = i.shiftKey;
1337
+ let l = !1, c = !1, f = i.clientY;
1338
+ const u = /* @__PURE__ */ new Set([t]), p = (b) => {
1339
+ b.preventDefault(), b.stopImmediatePropagation();
1340
+ }, d = (b) => {
1341
+ b.stopPropagation(), b.preventDefault();
1342
+ }, m = (b) => b.preventDefault(), h = (b) => {
1343
+ u.has(b) || (u.add(b), ae(e, b) !== c && he(b, a === "selecao"));
1344
+ }, L = () => {
1345
+ l = !0, he(t, n, s), c = ae(e, t) === !0, o.addEventListener("selectstart", m), document.body.style.userSelect = "none";
1346
+ }, v = (b) => {
1347
+ var A, $;
1348
+ if (!l) {
1349
+ if (Math.hypot(b.clientX - i.clientX, b.clientY - i.clientY) < ua) return;
1350
+ const k = (A = o.elementFromPoint(b.clientX, b.clientY)) == null ? void 0 : A.closest(r);
1351
+ if (!k || k === t) return;
1352
+ L();
1353
+ }
1354
+ b.preventDefault();
1355
+ const y = Math.min(f, b.clientY), w = Math.max(f, b.clientY);
1356
+ o.querySelectorAll(r).forEach((k) => {
1357
+ const D = k.getBoundingClientRect();
1358
+ if (D.height === 0) return;
1359
+ const z = D.top + D.height / 2;
1360
+ z >= y && z <= w && h(k);
1361
+ });
1362
+ const E = ($ = o.elementFromPoint(b.clientX, b.clientY)) == null ? void 0 : $.closest(r);
1363
+ E && h(E), f = b.clientY;
1364
+ }, x = () => {
1365
+ window.removeEventListener("pointermove", v), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x), window.removeEventListener("dragstart", p, !0), o.removeEventListener("selectstart", m), l && (document.body.style.userSelect = "", window.addEventListener("click", d, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", d, !0), 0));
1366
+ };
1367
+ window.addEventListener("dragstart", p, !0), window.addEventListener("pointermove", v, { passive: !1 }), window.addEventListener("pointerup", x), window.addEventListener("pointercancel", x);
1368
+ }
1369
+ function ha(e, o) {
1247
1370
  const a = o.getElementById("btn-toggle-all-vis");
1248
1371
  a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
1249
1372
  const t = o.getElementById("btn-toggle-all-expand");
1250
- t && t.addEventListener("click", (n) => {
1251
- n.stopPropagation(), e.camadas.length > 0 && e.camadas.every((c) => e.expandedLayers.has(c.id)) ? e.colapsarTodas() : e.expandirTodas();
1373
+ t && t.addEventListener("click", (s) => {
1374
+ s.stopPropagation(), e.camadas.length > 0 && e.camadas.every((c) => e.expandedLayers.has(c.id)) ? e.colapsarTodas() : e.expandirTodas();
1252
1375
  });
1253
1376
  const i = o.getElementById("btn-add-layer");
1254
1377
  i && i.addEventListener("click", () => {
@@ -1258,25 +1381,25 @@ function ta(e, o) {
1258
1381
  r && r.addEventListener("click", () => {
1259
1382
  e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
1260
1383
  });
1261
- const s = o.getElementById("btn-colapsar");
1262
- s && s.addEventListener("click", () => e.colapsar(!0)), ra(e, o);
1384
+ const n = o.getElementById("btn-colapsar");
1385
+ n && n.addEventListener("click", () => e.colapsar(!0)), ga(e, o);
1263
1386
  }
1264
- function ra(e, o) {
1387
+ function ga(e, o) {
1265
1388
  const a = o.getElementById("input-layer-search"), t = o.getElementById("btn-clear-layer-search"), i = () => {
1266
1389
  var r;
1267
1390
  e.searchQuery = "", e.solicitarRenderizacao(), (r = o.getElementById("input-layer-search")) == null || r.focus();
1268
1391
  };
1269
1392
  if (a) {
1270
- const r = fe(() => e.solicitarRenderizacao(), 75);
1271
- a.addEventListener("input", (s) => {
1272
- e.searchQuery = s.target.value, r();
1273
- }), a.addEventListener("keydown", (s) => {
1274
- s.key === "Escape" && e.searchQuery && (s.preventDefault(), i());
1393
+ const r = xe(() => e.solicitarRenderizacao(), 75);
1394
+ a.addEventListener("input", (n) => {
1395
+ e.searchQuery = n.target.value, r();
1396
+ }), a.addEventListener("keydown", (n) => {
1397
+ n.key === "Escape" && e.searchQuery && (n.preventDefault(), i());
1275
1398
  });
1276
1399
  }
1277
1400
  t && t.addEventListener("click", i);
1278
1401
  }
1279
- function ia(e, o) {
1402
+ function va(e, o) {
1280
1403
  o.querySelectorAll("[data-feat-select]").forEach((a) => {
1281
1404
  a.addEventListener("click", (t) => {
1282
1405
  if (e.editingFeatureId) return;
@@ -1285,8 +1408,8 @@ function ia(e, o) {
1285
1408
  "[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"
1286
1409
  ))
1287
1410
  return;
1288
- const s = a.getAttribute("data-feat-select");
1289
- s && e.selecionarFeicao(s, i.ctrlKey || i.metaKey, i.shiftKey, !0);
1411
+ const n = a.getAttribute("data-feat-select");
1412
+ n && e.selecionarFeicao(n, i.ctrlKey || i.metaKey, i.shiftKey, !0);
1290
1413
  });
1291
1414
  }), o.querySelectorAll("[data-feat-target]").forEach((a) => {
1292
1415
  a.addEventListener("click", (t) => {
@@ -1297,23 +1420,23 @@ function ia(e, o) {
1297
1420
  }), o.querySelectorAll("[data-feat-eye]").forEach((a) => {
1298
1421
  a.addEventListener("click", (t) => {
1299
1422
  t.stopPropagation();
1300
- const i = a.getAttribute("data-feat-eye"), r = e.feicoes.find((s) => s.id === i);
1423
+ const i = a.getAttribute("data-feat-eye"), r = e.feicoes.find((n) => n.id === i);
1301
1424
  if (r) {
1302
1425
  r.visible = r.visible === !1;
1303
- const s = r.visible !== !1;
1304
- a.innerHTML = s ? g.olhoAberto : g.olhoFechado, F(a, s ? "Ocultar Feição" : "Exibir Feição");
1305
- const n = a.closest(".ui-feat-row");
1306
- n && n.classList.toggle("hidden-row", !s), e.dispararEvento("ui-feicao-visibilidade", {
1426
+ const n = r.visible !== !1;
1427
+ a.innerHTML = n ? g.olhoAberto : g.olhoFechado, q(a, n ? "Ocultar Feição" : "Exibir Feição");
1428
+ const s = a.closest(".ui-feat-row");
1429
+ s && s.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
1307
1430
  feicaoId: r.id,
1308
- visivel: s
1431
+ visivel: n
1309
1432
  });
1310
1433
  }
1311
1434
  });
1312
1435
  }), o.querySelectorAll("[data-feat-lock]").forEach((a) => {
1313
1436
  a.addEventListener("click", (t) => {
1314
1437
  if (t.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
1315
- const i = a.getAttribute("data-feat-lock"), r = e.feicoes.find((s) => s.id === i);
1316
- r && (r.locked = !r.locked, a.innerHTML = r.locked ? g.cadeadoTrancado : g.cadeadoAberto, a.classList.toggle("ui-lock-open", !r.locked), F(a, r.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1438
+ const i = a.getAttribute("data-feat-lock"), r = e.feicoes.find((n) => n.id === i);
1439
+ r && (r.locked = !r.locked, a.innerHTML = r.locked ? g.cadeadoTrancado : g.cadeadoAberto, a.classList.toggle("ui-lock-open", !r.locked), q(a, r.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1317
1440
  feicaoId: r.id,
1318
1441
  bloqueado: r.locked
1319
1442
  }));
@@ -1326,7 +1449,7 @@ function ia(e, o) {
1326
1449
  });
1327
1450
  });
1328
1451
  }
1329
- function oa(e, o) {
1452
+ function ba(e, o) {
1330
1453
  o.querySelectorAll("[data-basemap-thumb]").forEach((a) => {
1331
1454
  a.addEventListener(
1332
1455
  "error",
@@ -1343,23 +1466,23 @@ function oa(e, o) {
1343
1466
  });
1344
1467
  });
1345
1468
  }
1346
- function sa(e, o) {
1347
- ta(e, o), Xe(e, o), ia(e, o), oa(e, o), aa(e, o);
1469
+ function xa(e, o) {
1470
+ ha(e, o), na(e, o), va(e, o), ba(e, o), ca(e, o), fa(e, o);
1348
1471
  }
1349
- const na = '[role="button"][tabindex]', P = "[data-layer-row], [data-feat-row]", la = ["color", "range", "checkbox", "radio", "button"];
1350
- function ge(e) {
1351
- return e instanceof HTMLSelectElement || e instanceof HTMLTextAreaElement ? !0 : e instanceof HTMLInputElement && !la.includes(e.type);
1472
+ const ya = '[role="button"][tabindex]', O = "[data-layer-row], [data-feat-row]", wa = ["color", "range", "checkbox", "radio", "button"];
1473
+ function Ae(e) {
1474
+ return e instanceof HTMLSelectElement || e instanceof HTMLTextAreaElement ? !0 : e instanceof HTMLInputElement && !wa.includes(e.type);
1352
1475
  }
1353
- function ca(e) {
1354
- return Array.from(e.querySelectorAll(P)).filter((o) => {
1476
+ function Ea(e) {
1477
+ return Array.from(e.querySelectorAll(O)).filter((o) => {
1355
1478
  const a = o.closest(".ui-children-container");
1356
1479
  return !(a && a.style.display === "none") && !o.classList.contains("ui-search-hidden");
1357
1480
  });
1358
1481
  }
1359
- function H(e, o) {
1360
- o && (e.querySelectorAll(P).forEach((a) => a.setAttribute("tabindex", "-1")), o.setAttribute("tabindex", "0"), o.focus());
1482
+ function G(e, o) {
1483
+ o && (e.querySelectorAll(O).forEach((a) => a.setAttribute("tabindex", "-1")), o.setAttribute("tabindex", "0"), o.focus());
1361
1484
  }
1362
- function da(e, o) {
1485
+ function Aa(e, o) {
1363
1486
  e.dispatchEvent(
1364
1487
  new MouseEvent("click", {
1365
1488
  bubbles: !0,
@@ -1368,103 +1491,103 @@ function da(e, o) {
1368
1491
  })
1369
1492
  );
1370
1493
  }
1371
- function ua(e, o, a) {
1494
+ function ka(e, o, a) {
1372
1495
  var t;
1373
- if (!ge(a.composedPath()[0])) {
1496
+ if (!Ae(a.composedPath()[0])) {
1374
1497
  if (e.activeSettingsLayerId) {
1375
1498
  a.preventDefault();
1376
1499
  const i = e.activeSettingsLayerId;
1377
- e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (t = M(o, "data-layer-settings", i)) == null || t.focus();
1500
+ e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (t = B(o, "data-layer-settings", i)) == null || t.focus();
1378
1501
  return;
1379
1502
  }
1380
1503
  e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
1381
1504
  }
1382
1505
  }
1383
- function pa(e, o, a) {
1384
- var s;
1506
+ function Ia(e, o, a) {
1507
+ var n;
1385
1508
  const t = a.composedPath()[0];
1386
- if (!(t instanceof HTMLElement) || ge(t)) return;
1387
- if ((a.key === "Enter" || a.key === " ") && t.matches(na)) {
1509
+ if (!(t instanceof HTMLElement) || Ae(t)) return;
1510
+ if ((a.key === "Enter" || a.key === " ") && t.matches(ya)) {
1388
1511
  a.preventDefault(), t.click();
1389
1512
  return;
1390
1513
  }
1391
- if (!t.matches(P)) return;
1392
- const i = ca(e), r = i.indexOf(t);
1514
+ if (!t.matches(O)) return;
1515
+ const i = Ea(e), r = i.indexOf(t);
1393
1516
  switch (a.key) {
1394
1517
  case "ArrowDown":
1395
- a.preventDefault(), H(e, i[Math.min(i.length - 1, r + 1)]);
1518
+ a.preventDefault(), G(e, i[Math.min(i.length - 1, r + 1)]);
1396
1519
  break;
1397
1520
  case "ArrowUp":
1398
- a.preventDefault(), H(e, i[Math.max(0, r - 1)]);
1521
+ a.preventDefault(), G(e, i[Math.max(0, r - 1)]);
1399
1522
  break;
1400
1523
  case "Home":
1401
- a.preventDefault(), H(e, i[0]);
1524
+ a.preventDefault(), G(e, i[0]);
1402
1525
  break;
1403
1526
  case "End":
1404
- a.preventDefault(), H(e, i[i.length - 1]);
1527
+ a.preventDefault(), G(e, i[i.length - 1]);
1405
1528
  break;
1406
1529
  case "ArrowRight":
1407
1530
  case "ArrowLeft": {
1408
- const n = t.getAttribute("data-layer-row");
1409
- if (!n) return;
1531
+ const s = t.getAttribute("data-layer-row");
1532
+ if (!s) return;
1410
1533
  const l = t.closest(".ui-layer-group"), c = (l == null ? void 0 : l.getAttribute("aria-expanded")) === "true";
1411
- a.key === "ArrowRight" !== c && (a.preventDefault(), (s = M(o, "data-layer-expand", n)) == null || s.click());
1534
+ a.key === "ArrowRight" !== c && (a.preventDefault(), (n = B(o, "data-layer-expand", s)) == null || n.click());
1412
1535
  break;
1413
1536
  }
1414
1537
  case "Enter":
1415
1538
  case " ":
1416
- a.preventDefault(), da(t, a);
1539
+ a.preventDefault(), Aa(t, a);
1417
1540
  break;
1418
1541
  }
1419
1542
  }
1420
- function fa(e, o, a, t, i) {
1543
+ function La(e, o, a, t, i) {
1421
1544
  i.add(o, "keydown", (r) => {
1422
- r.key === "Escape" && ua(e, a, r);
1423
- }), i.add(t, "keydown", (r) => pa(t, a, r)), i.add(t, "focusin", (r) => {
1424
- const s = r.composedPath()[0];
1425
- s instanceof HTMLElement && s.matches(P) && (t.querySelectorAll(P).forEach((n) => n.setAttribute("tabindex", "-1")), s.setAttribute("tabindex", "0"));
1545
+ r.key === "Escape" && ka(e, a, r);
1546
+ }), i.add(t, "keydown", (r) => Ia(t, a, r)), i.add(t, "focusin", (r) => {
1547
+ const n = r.composedPath()[0];
1548
+ n instanceof HTMLElement && n.matches(O) && (t.querySelectorAll(O).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
1426
1549
  });
1427
1550
  }
1428
- function ma(e, o) {
1551
+ function Ca(e, o) {
1429
1552
  o.querySelectorAll("[data-layer-row]").forEach((t) => {
1430
1553
  const r = t.getAttribute("data-layer-row") === e.camadaAtivaId;
1431
1554
  t.classList.toggle("active-drawing-layer", r);
1432
- const s = t.querySelector(".ui-col-name");
1433
- if (s) {
1434
- let n = s.querySelector(".ui-active-badge");
1435
- if (r && !n) {
1436
- n = document.createElement("span"), n.className = "ui-active-badge", n.textContent = "✓ Ativa";
1437
- const l = s.querySelector(".ui-count-chip");
1438
- l ? s.insertBefore(n, l) : s.appendChild(n);
1439
- } else !r && n && n.remove();
1555
+ const n = t.querySelector(".ui-col-name");
1556
+ if (n) {
1557
+ let s = n.querySelector(".ui-active-badge");
1558
+ if (r && !s) {
1559
+ s = document.createElement("span"), s.className = "ui-active-badge", s.textContent = "✓ Ativa";
1560
+ const l = n.querySelector(".ui-count-chip");
1561
+ l ? n.insertBefore(s, l) : n.appendChild(s);
1562
+ } else !r && s && s.remove();
1440
1563
  }
1441
1564
  });
1442
1565
  }
1443
- function ha(e, o) {
1566
+ function $a(e, o) {
1444
1567
  o.querySelectorAll(".ui-feat-row").forEach((v) => {
1445
- const b = v.getAttribute("data-feat-row"), I = b ? e.selectedFeatureIds.has(b) : !1;
1446
- v.classList.toggle("selected-row", I), v.setAttribute("aria-selected", String(I));
1447
- const x = v.querySelector(".ui-target-circle");
1448
- x && x.classList.toggle("selected", I);
1568
+ const x = v.getAttribute("data-feat-row"), b = x ? e.selectedFeatureIds.has(x) : !1;
1569
+ v.classList.toggle("selected-row", b), v.setAttribute("aria-selected", String(b));
1570
+ const y = v.querySelector(".ui-target-circle");
1571
+ y && y.classList.toggle("selected", b);
1449
1572
  }), o.querySelectorAll(".ui-layer-group").forEach((v) => {
1450
- const b = v.getAttribute("data-layer-id"), I = e.feicoes.filter((w) => w.layerId === b), x = v.querySelector(".ui-layer-row .ui-target-circle");
1451
- if (x && I.length > 0) {
1452
- const w = I.every((C) => e.selectedFeatureIds.has(C.id)), $ = !w && I.some((C) => e.selectedFeatureIds.has(C.id));
1453
- x.classList.toggle("selected", w), x.classList.toggle("partial", $);
1454
- } else x && x.classList.remove("selected", "partial");
1573
+ const x = v.getAttribute("data-layer-id"), b = e.feicoes.filter((w) => w.layerId === x), y = v.querySelector(".ui-layer-row .ui-target-circle");
1574
+ if (y && b.length > 0) {
1575
+ const w = b.every((A) => e.selectedFeatureIds.has(A.id)), E = !w && b.some((A) => e.selectedFeatureIds.has(A.id));
1576
+ y.classList.toggle("selected", w), y.classList.toggle("partial", E);
1577
+ } else y && y.classList.remove("selected", "partial");
1455
1578
  });
1456
1579
  const a = e.feicoes.filter((v) => e.selectedFeatureIds.has(v.id)), t = a.length > 0, i = o.getElementById("footer-count"), r = o.getElementById("footer-label");
1457
1580
  i && (i.textContent = String(t ? a.length : e.camadas.length)), r && (r.textContent = t ? a.length > 1 ? "selecionados" : "selecionado" : e.camadas.length > 1 ? "camadas" : "camada");
1458
- const s = o.querySelector(".ui-footer-metric"), n = pe(a);
1459
- s && (n ? (s.innerHTML = `${g.reguaMetrica} ${n}`, s.style.display = "inline-flex") : s.style.display = "none");
1581
+ const n = o.querySelector(".ui-footer-metric"), s = be(a);
1582
+ n && (s ? (n.innerHTML = `${g.reguaMetrica} ${s}`, n.style.display = "inline-flex") : n.style.display = "none");
1460
1583
  const l = o.querySelector(".ui-tree-footer");
1461
1584
  l && (l.classList.toggle("tem-selecao", t), l.classList.toggle("sem-selecao", !t));
1462
1585
  const c = o.querySelector(".ui-footer-actions-gerais");
1463
1586
  c && (c.style.display = t ? "none" : "flex");
1464
1587
  const f = o.querySelector(".ui-footer-bulk-actions");
1465
1588
  f && (f.style.display = t ? "flex" : "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((v) => {
1466
- const b = o.getElementById(v);
1467
- b && (b.disabled = !t, b.classList.toggle("disabled", !t));
1589
+ const x = o.getElementById(v);
1590
+ x && (x.disabled = !t, x.classList.toggle("disabled", !t));
1468
1591
  });
1469
1592
  const u = o.querySelector(".ui-footer-move-wrapper");
1470
1593
  u && u.classList.toggle("disabled", !t);
@@ -1475,10 +1598,10 @@ function ha(e, o) {
1475
1598
  const m = o.getElementById("input-footer-color");
1476
1599
  m && (m.disabled = !t);
1477
1600
  let h = o.getElementById("btn-footer-clear");
1478
- const k = o.querySelector(".ui-footer-right");
1479
- t && !h && k ? (h = document.createElement("button"), h.id = "btn-footer-clear", h.className = "ui-footer-btn btn-clear-footer", h.title = "Limpar seleção", h.innerHTML = g.fechar, h.addEventListener("click", () => e.limparSelecao(!0)), k.appendChild(h)) : !t && h && h.remove();
1601
+ const L = o.querySelector(".ui-footer-right");
1602
+ t && !h && L ? (h = document.createElement("button"), h.id = "btn-footer-clear", h.className = "ui-footer-btn btn-clear-footer", h.title = "Limpar seleção", h.innerHTML = g.fechar, h.addEventListener("click", () => e.limparSelecao(!0)), L.appendChild(h)) : !t && h && h.remove();
1480
1603
  }
1481
- function ga(e) {
1604
+ function Sa(e) {
1482
1605
  function t() {
1483
1606
  return e.getMinAltura ? e.getMinAltura() : 140;
1484
1607
  }
@@ -1507,8 +1630,8 @@ function ga(e) {
1507
1630
  })
1508
1631
  );
1509
1632
  }
1510
- let s = null;
1511
- function n() {
1633
+ let n = null;
1634
+ function s() {
1512
1635
  if (!e.resizerElement) return;
1513
1636
  let c = !1, f = 0, u = 0;
1514
1637
  const p = (m) => {
@@ -1518,81 +1641,81 @@ function ga(e) {
1518
1641
  e.resizerElement.setPointerCapture(m.pointerId);
1519
1642
  } catch {
1520
1643
  }
1521
- const h = (b) => {
1644
+ const h = (x) => {
1522
1645
  if (!c) return;
1523
- b.preventDefault();
1524
- const I = b.clientY - f, x = Math.max(t(), Math.min(i(), Math.round(u + I)));
1525
- e.hostElement.style.height = `${x}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${x}px`), e.onRedimensionando && e.onRedimensionando(x), e.hostElement.dispatchEvent(
1646
+ x.preventDefault();
1647
+ const b = x.clientY - f, y = Math.max(t(), Math.min(i(), Math.round(u + b)));
1648
+ e.hostElement.style.height = `${y}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${y}px`), e.onRedimensionando && e.onRedimensionando(y), e.hostElement.dispatchEvent(
1526
1649
  new CustomEvent("ui-redimensionando-altura", {
1527
1650
  bubbles: !0,
1528
1651
  composed: !0,
1529
- detail: { altura: x }
1652
+ detail: { altura: y }
1530
1653
  })
1531
1654
  );
1532
- }, k = () => {
1533
- var b;
1534
- c = !1, s = null, window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", v), window.removeEventListener("pointercancel", v), (b = e.resizerElement) == null || b.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1535
- }, v = (b) => {
1655
+ }, L = () => {
1656
+ var x;
1657
+ c = !1, n = null, window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", v), window.removeEventListener("pointercancel", v), (x = e.resizerElement) == null || x.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1658
+ }, v = (x) => {
1536
1659
  if (!c) return;
1537
1660
  c = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
1538
1661
  try {
1539
- e.resizerElement.hasPointerCapture(b.pointerId) && e.resizerElement.releasePointerCapture(b.pointerId);
1662
+ e.resizerElement.hasPointerCapture(x.pointerId) && e.resizerElement.releasePointerCapture(x.pointerId);
1540
1663
  } catch {
1541
1664
  }
1542
1665
  window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", v), window.removeEventListener("pointercancel", v);
1543
- const I = e.hostElement.getBoundingClientRect().height, x = Math.round(I);
1544
- e.onAlturaAlterada && e.onAlturaAlterada(x), e.hostElement.dispatchEvent(
1666
+ const b = e.hostElement.getBoundingClientRect().height, y = Math.round(b);
1667
+ e.onAlturaAlterada && e.onAlturaAlterada(y), e.hostElement.dispatchEvent(
1545
1668
  new CustomEvent("ui-redimensionar-altura", {
1546
1669
  bubbles: !0,
1547
1670
  composed: !0,
1548
- detail: { altura: x }
1671
+ detail: { altura: y }
1549
1672
  })
1550
1673
  );
1551
1674
  };
1552
- s = k, window.addEventListener("pointermove", h), window.addEventListener("pointerup", v), window.addEventListener("pointercancel", v);
1675
+ n = L, window.addEventListener("pointermove", h), window.addEventListener("pointerup", v), window.addEventListener("pointercancel", v);
1553
1676
  }, d = (m) => {
1554
1677
  m.preventDefault(), m.stopPropagation(), r(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
1555
1678
  };
1556
1679
  e.listeners.add(e.resizerElement, "pointerdown", p), e.listeners.add(e.resizerElement, "dblclick", d);
1557
1680
  }
1558
1681
  function l() {
1559
- s == null || s(), e.listeners.cleanup();
1682
+ n == null || n(), e.listeners.cleanup();
1560
1683
  }
1561
1684
  return {
1562
- init: n,
1685
+ init: s,
1563
1686
  definirAltura: r,
1564
1687
  destruir: l
1565
1688
  };
1566
1689
  }
1567
- const q = class q extends $e {
1690
+ const T = class T extends De {
1568
1691
  constructor() {
1569
1692
  super();
1570
- y(this, "shadow");
1571
- y(this, "listeners", new Se());
1572
- y(this, "dragDropManager");
1573
- y(this, "resizerController");
1574
- y(this, "alturaCustomizada", null);
1575
- y(this, "conectado", !1);
1576
- y(this, "profundidadeLote", 0);
1577
- y(this, "renderPendente", !1);
1578
- y(this, "camadasRemovidas", /* @__PURE__ */ new Set());
1579
- y(this, "origensCamadas", /* @__PURE__ */ new Map());
1580
- y(this, "salvarLembrancaDebounced", fe(() => this.salvarLembrancaEstado(), 200));
1693
+ I(this, "shadow");
1694
+ I(this, "listeners", new Te());
1695
+ I(this, "dragDropManager");
1696
+ I(this, "resizerController");
1697
+ I(this, "alturaCustomizada", null);
1698
+ I(this, "conectado", !1);
1699
+ I(this, "profundidadeLote", 0);
1700
+ I(this, "renderPendente", !1);
1701
+ I(this, "camadasRemovidas", /* @__PURE__ */ new Set());
1702
+ I(this, "origensCamadas", /* @__PURE__ */ new Map());
1703
+ I(this, "salvarLembrancaDebounced", xe(() => this.salvarLembrancaEstado(), 200));
1581
1704
  // Estado interno
1582
- y(this, "camadas", []);
1583
- y(this, "feicoes", []);
1584
- y(this, "mapasBase", [...me]);
1585
- y(this, "expandedLayers", /* @__PURE__ */ new Set());
1586
- y(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
1587
- y(this, "lastClickedFeatureId", null);
1588
- y(this, "activeSettingsLayerId", null);
1589
- y(this, "editingLayerId", null);
1590
- y(this, "editingFeatureId", null);
1591
- y(this, "searchQuery", "");
1592
- y(this, "corpoElement");
1593
- y(this, "btnExpandirFlutuante");
1705
+ I(this, "camadas", []);
1706
+ I(this, "feicoes", []);
1707
+ I(this, "mapasBase", [...ye]);
1708
+ I(this, "expandedLayers", /* @__PURE__ */ new Set());
1709
+ I(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
1710
+ I(this, "lastClickedFeatureId", null);
1711
+ I(this, "activeSettingsLayerId", null);
1712
+ I(this, "editingLayerId", null);
1713
+ I(this, "editingFeatureId", null);
1714
+ I(this, "searchQuery", "");
1715
+ I(this, "corpoElement");
1716
+ I(this, "btnExpandirFlutuante");
1594
1717
  this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
1595
- <style>${We}</style>
1718
+ <style>${oa}</style>
1596
1719
  <div class="ui-camadas-container" id="panel-container" role="region" aria-label="Painel de Camadas">
1597
1720
  <div class="ui-camadas-corpo" id="painel-corpo"></div>
1598
1721
  <div class="ui-camadas-resizer-altura" id="resizer-altura" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
@@ -1602,9 +1725,9 @@ const q = class q extends $e {
1602
1725
  <button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
1603
1726
  ${g.camadas}
1604
1727
  </button>
1605
- `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new Ve(this, this.shadow);
1728
+ `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new We(this, this.shadow);
1606
1729
  const a = this.shadow.getElementById("resizer-altura");
1607
- this.resizerController = ga({
1730
+ this.resizerController = Sa({
1608
1731
  hostElement: this,
1609
1732
  resizerElement: a,
1610
1733
  listeners: this.listeners,
@@ -1645,16 +1768,16 @@ const q = class q extends $e {
1645
1768
  }
1646
1769
  connectedCallback() {
1647
1770
  if (this.persistir) {
1648
- const a = W(this.obterChaveStorageAtual());
1771
+ const a = ee(this.obterChaveStorageAtual());
1649
1772
  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));
1650
1773
  }
1651
- this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (q.instanciasChavePadrao.size > 0 && console.warn(
1774
+ this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (T.instanciasChavePadrao.size > 0 && console.warn(
1652
1775
  "[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."
1653
- ), q.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), fa(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
1776
+ ), T.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), La(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
1654
1777
  }
1655
1778
  disconnectedCallback() {
1656
1779
  var a;
1657
- this.conectado = !1, q.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), this.listeners.cleanup();
1780
+ this.conectado = !1, T.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), this.listeners.cleanup();
1658
1781
  }
1659
1782
  attributeChangedCallback(a, t, i) {
1660
1783
  var r;
@@ -1769,7 +1892,7 @@ const q = class q extends $e {
1769
1892
  }
1770
1893
  // --- Gerenciamento de Persistência / Lembrança ---
1771
1894
  obterChaveStorageAtual() {
1772
- return _e(this.storageKey, this.id);
1895
+ return ea(this.storageKey, this.id);
1773
1896
  }
1774
1897
  /** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
1775
1898
  agendarSalvarLembranca() {
@@ -1777,8 +1900,8 @@ const q = class q extends $e {
1777
1900
  }
1778
1901
  salvarLembrancaEstado() {
1779
1902
  if (!this.persistir || !this.conectado) return;
1780
- const a = this.obterChaveStorageAtual(), t = Je({
1781
- estadoAnterior: W(a),
1903
+ const a = this.obterChaveStorageAtual(), t = ia({
1904
+ estadoAnterior: ee(a),
1782
1905
  origensCamadas: this.origensCamadas,
1783
1906
  camadas: this.camadas,
1784
1907
  expandedLayers: this.expandedLayers,
@@ -1789,10 +1912,10 @@ const q = class q extends $e {
1789
1912
  altura: this.alturaCustomizada,
1790
1913
  camadasRemovidas: this.camadasRemovidas
1791
1914
  });
1792
- this.camadasRemovidas.clear(), Ke(a, t);
1915
+ this.camadasRemovidas.clear(), aa(a, t);
1793
1916
  }
1794
1917
  limparLembranca() {
1795
- Ye(this.obterChaveStorageAtual());
1918
+ ta(this.obterChaveStorageAtual());
1796
1919
  }
1797
1920
  // --- API Pública de Alta Ergonomia ---
1798
1921
  //
@@ -1825,25 +1948,25 @@ const q = class q extends $e {
1825
1948
  achatarCamadas(a, t = null) {
1826
1949
  const i = [];
1827
1950
  for (const r of a) {
1828
- const s = { ...r };
1829
- t && s.parentId === void 0 && (s.parentId = t), i.push(s), Array.isArray(r.children) && r.children.length > 0 && i.push(...this.achatarCamadas(r.children, r.id));
1951
+ const n = { ...r };
1952
+ t && n.parentId === void 0 && (n.parentId = t), i.push(n), Array.isArray(r.children) && r.children.length > 0 && i.push(...this.achatarCamadas(r.children, r.id));
1830
1953
  }
1831
1954
  return i;
1832
1955
  }
1833
1956
  definirCamadas(a, t) {
1834
1957
  if (this.camadas = Array.isArray(a) ? this.achatarCamadas(a) : [], this.origensCamadas.clear(), this.persistir) {
1835
- const r = W(this.obterChaveStorageAtual());
1836
- Qe(this.camadas, r, this.expandedLayers, this.origensCamadas), r != null && r.camadaAtivaId && this.camadas.some((s) => s.id === r.camadaAtivaId) && (this.camadaAtivaId = r.camadaAtivaId);
1958
+ const r = ee(this.obterChaveStorageAtual());
1959
+ ra(this.camadas, r, this.expandedLayers, this.origensCamadas), r != null && r.camadaAtivaId && this.camadas.some((n) => n.id === r.camadaAtivaId) && (this.camadaAtivaId = r.camadaAtivaId);
1837
1960
  } else
1838
1961
  this.camadas.forEach((r) => {
1839
- this.origensCamadas.set(r.id, Z(r)), this.expandedLayers.has(r.id) || this.expandedLayers.add(r.id);
1962
+ this.origensCamadas.set(r.id, re(r)), this.expandedLayers.has(r.id) || this.expandedLayers.add(r.id);
1840
1963
  });
1841
1964
  if (Array.isArray(t)) {
1842
- this.feicoes = t.map((n) => ({ ...n }));
1843
- const r = new Set(this.camadas.map((n) => n.id)), s = this.feicoes.filter((n) => n.layerId && !r.has(n.layerId));
1844
- s.length > 0 && console.warn(
1845
- `[UI-Camadas] ${s.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
1846
- s.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
1965
+ this.feicoes = t.map((s) => ({ ...s }));
1966
+ const r = new Set(this.camadas.map((s) => s.id)), n = this.feicoes.filter((s) => s.layerId && !r.has(s.layerId));
1967
+ n.length > 0 && console.warn(
1968
+ `[UI-Camadas] ${n.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
1969
+ n.map((s) => ({ id: s.id, nome: s.name, layerId: s.layerId }))
1847
1970
  ), this.sincronizarSelecoesComFeicoesValidas();
1848
1971
  }
1849
1972
  const i = this.getAttribute("camada-ativa");
@@ -1880,7 +2003,7 @@ const q = class q extends $e {
1880
2003
  return;
1881
2004
  }
1882
2005
  const t = { ...a };
1883
- this.camadas.push(t), this.origensCamadas.set(t.id, Z(t)), this.expandedLayers.add(t.id), t.parentId && this.expandedLayers.add(t.parentId), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
2006
+ this.camadas.push(t), this.origensCamadas.set(t.id, re(t)), this.expandedLayers.add(t.id), t.parentId && this.expandedLayers.add(t.parentId), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1884
2007
  }
1885
2008
  removerCamada(a) {
1886
2009
  var t;
@@ -1905,8 +2028,8 @@ const q = class q extends $e {
1905
2028
  this.feicoes = this.feicoes.filter((t) => t.id !== a), this.selectedFeatureIds.delete(a), this.solicitarRenderizacao();
1906
2029
  }
1907
2030
  selecionarFeicao(a, t = !1, i = !1, r = !1) {
1908
- const s = Pe(this.camadas, this.feicoes, this.expandedLayers, this.searchQuery), n = !i && !s.includes(a) && this.feicoes.some((c) => c.id === a), l = Oe(
1909
- n ? [...s, a] : s,
2031
+ const n = Ve(this.camadas, this.feicoes, this.expandedLayers, this.searchQuery), s = !i && !n.includes(a) && this.feicoes.some((c) => c.id === a), l = Ue(
2032
+ s ? [...n, a] : n,
1910
2033
  this.selectedFeatureIds,
1911
2034
  this.lastClickedFeatureId,
1912
2035
  a,
@@ -1917,7 +2040,7 @@ const q = class q extends $e {
1917
2040
  }
1918
2041
  selecionarFeicoes(a, t = !1) {
1919
2042
  const i = a || [];
1920
- i.length === this.selectedFeatureIds.size && i.every((n) => this.selectedFeatureIds.has(n)) || (this.selectedFeatureIds.clear(), i.forEach((n) => this.selectedFeatureIds.add(n)), this.lastClickedFeatureId = i.length > 0 ? i[i.length - 1] : null, this.sincronizarSelecaoDOM(), t && this.notificarMudancaSelecao());
2043
+ i.length === this.selectedFeatureIds.size && i.every((s) => this.selectedFeatureIds.has(s)) || (this.selectedFeatureIds.clear(), i.forEach((s) => this.selectedFeatureIds.add(s)), this.lastClickedFeatureId = i.length > 0 ? i[i.length - 1] : null, this.sincronizarSelecaoDOM(), t && this.notificarMudancaSelecao());
1921
2044
  }
1922
2045
  limparSelecao(a = !1) {
1923
2046
  this.selectedFeatureIds.size !== 0 && (this.selectedFeatureIds.clear(), this.lastClickedFeatureId = null, this.sincronizarSelecaoDOM(), a && this.notificarMudancaSelecao());
@@ -1978,7 +2101,7 @@ const q = class q extends $e {
1978
2101
  render() {
1979
2102
  var d, m;
1980
2103
  if (!this.corpoElement) return;
1981
- const a = He({
2104
+ const a = Qe({
1982
2105
  camadas: this.camadas,
1983
2106
  feicoes: this.feicoes,
1984
2107
  camadaAtivaId: this.camadaAtivaId,
@@ -1989,14 +2112,14 @@ const q = class q extends $e {
1989
2112
  editingFeatureId: this.editingFeatureId,
1990
2113
  searchQuery: this.searchQuery,
1991
2114
  mostrarBotaoColapsar: this.flutuante && this.getAttribute("colapsavel") !== "false"
1992
- }), t = this.mostrarMapasBase ? qe(this.mapasBase, this.mapaBaseAtivo) : "", i = this.mostrarRodape ? Te(this.camadas, this.feicoes, this.selectedFeatureIds) : "", r = this.shadow.getElementById("ui-layer-tree-mount"), s = this.corpoElement.scrollTop, n = r ? r.scrollTop : 0, l = this.shadow.activeElement, c = l && this.corpoElement.contains(l) ? l.id : "", f = l && !c && this.corpoElement.contains(l) ? Array.from(l.attributes).find((h) => h.name.startsWith("data-") && h.value !== "") : void 0, u = l && "selectionStart" in l ? l.selectionStart : null;
2115
+ }), t = this.mostrarMapasBase ? Ne(this.mapasBase, this.mapaBaseAtivo) : "", i = this.mostrarRodape ? Ge(this.camadas, this.feicoes, this.selectedFeatureIds) : "", r = this.shadow.getElementById("ui-layer-tree-mount"), n = this.corpoElement.scrollTop, s = r ? r.scrollTop : 0, l = this.shadow.activeElement, c = l && this.corpoElement.contains(l) ? l.id : "", f = l && !c && this.corpoElement.contains(l) ? Array.from(l.attributes).find((h) => h.name.startsWith("data-") && h.value !== "") : void 0, u = l && "selectionStart" in l ? l.selectionStart : null;
1993
2116
  this.corpoElement.innerHTML = `
1994
2117
  ${a}
1995
2118
  ${i}
1996
2119
  ${t}
1997
- `, this.corpoElement.scrollTop = s;
2120
+ `, this.corpoElement.scrollTop = n;
1998
2121
  const p = this.shadow.getElementById("ui-layer-tree-mount");
1999
- if (p && (p.scrollTop = n), c) {
2122
+ if (p && (p.scrollTop = s), c) {
2000
2123
  const h = this.shadow.getElementById(c);
2001
2124
  if (h && (h.focus({ preventScroll: !0 }), u !== null && typeof h.setSelectionRange == "function"))
2002
2125
  try {
@@ -2004,7 +2127,7 @@ const q = class q extends $e {
2004
2127
  } catch {
2005
2128
  }
2006
2129
  }
2007
- !c && f && ((d = M(this.corpoElement, f.name, f.value)) == null || d.focus({ preventScroll: !0 })), (m = this.shadow.querySelector("[data-layer-row], [data-feat-row]")) == null || m.setAttribute("tabindex", "0"), sa(this, this.shadow), this.dragDropManager.bindAll();
2130
+ !c && f && ((d = B(this.corpoElement, f.name, f.value)) == null || d.focus({ preventScroll: !0 })), (m = this.shadow.querySelector("[data-layer-row], [data-feat-row]")) == null || m.setAttribute("tabindex", "0"), xa(this, this.shadow), this.dragDropManager.bindAll();
2008
2131
  }
2009
2132
  // --- Conexão de Eventos ---
2010
2133
  conectarEventosGerais() {
@@ -2012,14 +2135,14 @@ const q = class q extends $e {
2012
2135
  }
2013
2136
  // --- Sincronização de DOM (delegada) ---
2014
2137
  sincronizarCamadaAtivaDOM() {
2015
- ma(this, this.shadow);
2138
+ Ca(this, this.shadow);
2016
2139
  }
2017
2140
  sincronizarSelecaoDOM() {
2018
- ha(this, this.shadow);
2141
+ $a(this, this.shadow);
2019
2142
  }
2020
2143
  // --- Auxiliares Internos ---
2021
2144
  sincronizarSelecoesComFeicoesValidas() {
2022
- je(this.selectedFeatureIds, this.feicoes);
2145
+ Ye(this.selectedFeatureIds, this.feicoes);
2023
2146
  }
2024
2147
  notificarMudancaSelecao() {
2025
2148
  const a = this.feicoes.filter((t) => this.selectedFeatureIds.has(t.id));
@@ -2036,16 +2159,16 @@ const q = class q extends $e {
2036
2159
  }
2037
2160
  };
2038
2161
  /** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
2039
- y(q, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2040
- let O = q;
2041
- class va extends O {
2162
+ I(T, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2163
+ let j = T;
2164
+ class Ma extends j {
2042
2165
  }
2043
- class ba extends O {
2166
+ class za extends j {
2044
2167
  }
2045
- ee("ui-camadas", O);
2046
- ee("ui-painel-camadas", va);
2047
- ee("ui-layer-panel", ba);
2048
- function Aa(e) {
2168
+ oe("ui-camadas", j);
2169
+ oe("ui-painel-camadas", Ma);
2170
+ oe("ui-layer-panel", za);
2171
+ function Ta(e) {
2049
2172
  var o;
2050
2173
  return {
2051
2174
  id: e.id,
@@ -2062,7 +2185,7 @@ function Aa(e) {
2062
2185
  dados: e.dados
2063
2186
  };
2064
2187
  }
2065
- function ka(e, o = "levantamento", a = "feicoes") {
2188
+ function Pa(e, o = "levantamento", a = "feicoes") {
2066
2189
  return {
2067
2190
  id: e.id,
2068
2191
  nome: e.name,
@@ -2081,9 +2204,9 @@ function ka(e, o = "levantamento", a = "feicoes") {
2081
2204
  dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
2082
2205
  };
2083
2206
  }
2084
- function Ia(e, o = "") {
2085
- var r, s, n, l;
2086
- const a = ((r = e.geometria) == null ? void 0 : r.tipo) || ((s = e.geometria) == null ? void 0 : s.type) || e.tipo || e.type || "Polygon", t = ((n = e.geometria) == null ? void 0 : n.coordenadas) || ((l = e.geometria) == null ? void 0 : l.coordinates) || e.coordinates, i = e.cor || e.color;
2207
+ function Oa(e, o = "") {
2208
+ var r, n, s, l;
2209
+ const a = ((r = e.geometria) == null ? void 0 : r.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", t = ((s = e.geometria) == null ? void 0 : s.coordenadas) || ((l = e.geometria) == null ? void 0 : l.coordinates) || e.coordinates, i = e.cor || e.color;
2087
2210
  return {
2088
2211
  id: String(e.id),
2089
2212
  name: e.nome || e.name || `Feição ${e.id}`,
@@ -2100,39 +2223,39 @@ function Ia(e, o = "") {
2100
2223
  };
2101
2224
  }
2102
2225
  export {
2103
- Ve as CamadasDragDropManager,
2226
+ We as CamadasDragDropManager,
2104
2227
  g as ICONES,
2105
- he as LIMITE_FEICOES_POR_CAMADA,
2106
- me as MAPAS_BASE_PADRAO,
2107
- O as UICamadas,
2108
- ba as UILayerPanel,
2109
- $a as UIMapaBase,
2110
- va as UIPainelCamadas,
2111
- Sa as UISeletorMapaBase,
2112
- Q as calcularAreaAnelSimples,
2113
- ue as calcularAreaPoligono,
2114
- de as calcularComprimentoLinha,
2115
- ze as calcularDistanciaPontos,
2116
- Oe as calcularSelecaoFeicao,
2117
- W as carregarEstadoPersistido,
2118
- Ne as construirHierarquiaCamadas,
2119
- ka as converterCamadaItemParaCanvasLayer,
2120
- Aa as converterCanvasLayerParaCamadaItem,
2121
- Ia as converterFeicaoParaItem,
2122
- L as escapeHtml,
2123
- ae as filtrarFeicoesPorBusca,
2124
- pe as formatarMetricaFeicoes,
2125
- De as formatarOpcoesCamadasHierarquicas,
2126
- _e as gerarChaveStorage,
2127
- Ye as limparEstadoPersistido,
2128
- Je as montarEstadoPersistido,
2129
- Pe as obterIdsVisiveisFeicoes,
2130
- Qe as reidratarCamadasComOverrides,
2131
- je as removerSelecoesInvalidas,
2132
- He as renderizarArvoreCamadas,
2133
- qe as renderizarGridMapasBase,
2134
- Te as renderizarRodapeAcoes,
2135
- Re as renderizarThumbGeometria,
2136
- Ke as salvarEstadoPersistido,
2137
- Z as snapshotCamada
2228
+ we as LIMITE_FEICOES_POR_CAMADA,
2229
+ ye as MAPAS_BASE_PADRAO,
2230
+ j as UICamadas,
2231
+ za as UILayerPanel,
2232
+ Na as UIMapaBase,
2233
+ Ma as UIPainelCamadas,
2234
+ Ha as UISeletorMapaBase,
2235
+ J as calcularAreaAnelSimples,
2236
+ ve as calcularAreaPoligono,
2237
+ ge as calcularComprimentoLinha,
2238
+ Pe as calcularDistanciaPontos,
2239
+ Ue as calcularSelecaoFeicao,
2240
+ ee as carregarEstadoPersistido,
2241
+ Xe as construirHierarquiaCamadas,
2242
+ Pa as converterCamadaItemParaCanvasLayer,
2243
+ Ta as converterCanvasLayerParaCamadaItem,
2244
+ Oa as converterFeicaoParaItem,
2245
+ S as escapeHtml,
2246
+ U as filtrarFeicoesPorBusca,
2247
+ be as formatarMetricaFeicoes,
2248
+ He as formatarOpcoesCamadasHierarquicas,
2249
+ ea as gerarChaveStorage,
2250
+ ta as limparEstadoPersistido,
2251
+ ia as montarEstadoPersistido,
2252
+ Ve as obterIdsVisiveisFeicoes,
2253
+ ra as reidratarCamadasComOverrides,
2254
+ Ye as removerSelecoesInvalidas,
2255
+ Qe as renderizarArvoreCamadas,
2256
+ Ne as renderizarGridMapasBase,
2257
+ Ge as renderizarRodapeAcoes,
2258
+ Ke as renderizarThumbGeometria,
2259
+ aa as salvarEstadoPersistido,
2260
+ re as snapshotCamada
2138
2261
  };