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