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