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