@thibezer/ui-components-kit 2.2.1 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +143 -123
- package/README.md +762 -760
- package/dist/camadas.cjs +67 -67
- package/dist/camadas.js +433 -345
- 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-cores/cores-utils.d.ts +13 -0
- package/dist/components/ui-cores/index.d.ts +4 -0
- package/dist/components/ui-cores/tipos.d.ts +79 -0
- package/dist/components/ui-cores/ui-controle-cores.d.ts +93 -0
- package/dist/components/ui-cores/ui-seletor-cor.d.ts +65 -0
- package/dist/cores.cjs +1 -0
- package/dist/cores.d.ts +8 -0
- package/dist/cores.js +13 -0
- package/dist/custom-elements.json +16543 -15561
- package/dist/gerencigeo-canvas/feature_edicao_ops.d.ts +5 -1
- package/dist/gerencigeo-canvas/feature_editor_vertices.d.ts +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +99 -89
- package/dist/register.cjs +1 -1
- package/dist/register.js +3 -2
- package/dist/tipos-elementos.d.ts +28 -0
- package/dist/tipos-react.d.ts +4 -0
- package/dist/tipos-vue.d.ts +28 -0
- package/dist/ui-controle-cores-BS0WYPdi.js +572 -0
- package/dist/ui-controle-cores-Er6ZcQ7U.cjs +111 -0
- package/package.json +174 -169
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,24 +103,24 @@ 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
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
|
|
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;
|
|
@@ -131,32 +131,32 @@ function Q(e) {
|
|
|
131
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 he(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 he(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
|
|
194
|
+
function je(e, o, a) {
|
|
195
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
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) {
|
|
@@ -206,19 +206,19 @@ function Pe(e, o = "#000000") {
|
|
|
206
206
|
if (i) {
|
|
207
207
|
const r = i[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
|
|
208
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] :
|
|
210
|
-
return `#${
|
|
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 ge(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,15 +272,15 @@ const ve = [
|
|
|
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="${
|
|
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
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
286
|
<span>${n}</span>
|
|
@@ -291,7 +291,7 @@ function je(e = ve, 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 = [];
|
|
@@ -299,13 +299,13 @@ function Oe(e) {
|
|
|
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
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="${
|
|
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">
|
|
@@ -357,14 +357,14 @@ function Re(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
|
|
367
|
+
function Ve(e, o, a, t = "", i = we) {
|
|
368
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 || "";
|
|
@@ -373,14 +373,14 @@ function Ne(e, o, a, t = "", i = be) {
|
|
|
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
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
385
|
const n = new Set(o);
|
|
386
386
|
let s = a;
|
|
@@ -392,52 +392,52 @@ function He(e, o, a, t, i, r) {
|
|
|
392
392
|
} else i ? (n.has(t) ? n.delete(t) : n.add(t), s = t) : (n.clear(), n.add(t), s = t);
|
|
393
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
|
-
const
|
|
402
|
-
function
|
|
401
|
+
const Z = 64;
|
|
402
|
+
function fe(e) {
|
|
403
403
|
return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
|
|
404
404
|
}
|
|
405
|
-
function
|
|
406
|
-
return !Array.isArray(e) || e.length === 0 ? [] :
|
|
405
|
+
function Ee(e) {
|
|
406
|
+
return !Array.isArray(e) || e.length === 0 ? [] : fe(e[0]) ? [e.filter(fe)] : e.flatMap(Ee);
|
|
407
407
|
}
|
|
408
|
-
function
|
|
409
|
-
if (e.length <=
|
|
410
|
-
const o = e.length /
|
|
411
|
-
for (let t = 0; t <
|
|
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
412
|
return a.push(e[e.length - 1]), a;
|
|
413
413
|
}
|
|
414
|
-
function
|
|
415
|
-
const t =
|
|
414
|
+
function _e(e, o, a) {
|
|
415
|
+
const t = Ee(o).filter((E) => E.length > 0);
|
|
416
416
|
if (t.length === 0) return "";
|
|
417
417
|
let i = 1 / 0, r = -1 / 0, n = 1 / 0, s = -1 / 0;
|
|
418
|
-
for (const
|
|
419
|
-
for (const [
|
|
420
|
-
|
|
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,
|
|
422
|
-
if (
|
|
423
|
-
const
|
|
424
|
-
return
|
|
425
|
-
`<path d="${
|
|
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
426
|
) : "";
|
|
427
427
|
}
|
|
428
|
-
if (
|
|
429
|
-
const
|
|
430
|
-
return
|
|
431
|
-
`<path d="${
|
|
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
432
|
) : "";
|
|
433
433
|
}
|
|
434
434
|
return "";
|
|
435
435
|
}
|
|
436
|
-
function
|
|
437
|
-
const t =
|
|
436
|
+
function Ke(e, o, a) {
|
|
437
|
+
const t = V(o, "#00E08A"), i = (e || "").toLowerCase(), r = a !== void 0 ? _e(i, a, t) : "";
|
|
438
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>`);
|
|
439
439
|
}
|
|
440
|
-
function
|
|
440
|
+
function Xe(e) {
|
|
441
441
|
const o = /* @__PURE__ */ new Map();
|
|
442
442
|
e.forEach((r) => o.set(r.id, r));
|
|
443
443
|
const a = /* @__PURE__ */ new Map(), t = [];
|
|
@@ -454,7 +454,7 @@ function _e(e) {
|
|
|
454
454
|
}
|
|
455
455
|
return t.map((r) => i(r, 0));
|
|
456
456
|
}
|
|
457
|
-
function
|
|
457
|
+
function Qe(e) {
|
|
458
458
|
const {
|
|
459
459
|
camadas: o,
|
|
460
460
|
feicoes: a,
|
|
@@ -465,14 +465,14 @@ function Ke(e) {
|
|
|
465
465
|
editingLayerId: s,
|
|
466
466
|
editingFeatureId: l,
|
|
467
467
|
searchQuery: c,
|
|
468
|
-
limiteFeicoesPorCamada: f =
|
|
468
|
+
limiteFeicoesPorCamada: f = we,
|
|
469
469
|
mostrarBotaoColapsar: u = !1
|
|
470
470
|
} = e, p = (c || "").trim().toLowerCase(), d = /* @__PURE__ */ new Map();
|
|
471
|
-
for (let
|
|
472
|
-
const
|
|
473
|
-
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);
|
|
474
474
|
}
|
|
475
|
-
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 = `
|
|
476
476
|
<div class="ui-tree-toolbar">
|
|
477
477
|
<div class="ui-tree-title-group">
|
|
478
478
|
<span class="ui-tree-section-title">CAMADAS</span>
|
|
@@ -497,54 +497,54 @@ function Ke(e) {
|
|
|
497
497
|
|
|
498
498
|
<div class="ui-tree-search-wrapper">
|
|
499
499
|
<span class="ui-tree-search-icon">${g.busca}</span>
|
|
500
|
-
<input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${
|
|
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(
|
|
501
501
|
c
|
|
502
502
|
)}" />
|
|
503
503
|
${c ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${g.fechar}</button>` : ""}
|
|
504
504
|
</div>
|
|
505
|
-
`, v = (
|
|
506
|
-
const
|
|
507
|
-
const
|
|
508
|
-
let
|
|
509
|
-
return
|
|
510
|
-
<div class="ui-feat-row ${
|
|
511
|
-
<div class="ui-col ui-col-eye" data-feat-eye="${
|
|
512
|
-
${
|
|
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}
|
|
513
513
|
</div>
|
|
514
514
|
|
|
515
|
-
<div class="ui-col ui-col-lock ${
|
|
516
|
-
${
|
|
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}
|
|
517
517
|
</div>
|
|
518
518
|
|
|
519
|
-
<div class="ui-col ui-col-colorbar" style="background: ${
|
|
519
|
+
<div class="ui-col ui-col-colorbar" style="background: ${de};"></div>
|
|
520
520
|
<div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
|
|
521
521
|
<div class="ui-col ui-col-thumb">
|
|
522
|
-
<div class="ui-thumb-box">${
|
|
522
|
+
<div class="ui-thumb-box">${Ke(C.type || C.geometryType, de, C.coordinates)}</div>
|
|
523
523
|
</div>
|
|
524
524
|
|
|
525
|
-
<div class="ui-col ui-col-name" data-feat-name-trigger="${
|
|
526
|
-
${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}`}
|
|
527
527
|
</div>
|
|
528
528
|
|
|
529
529
|
<div class="ui-col ui-col-actions">
|
|
530
|
-
<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>
|
|
531
531
|
</div>
|
|
532
532
|
|
|
533
|
-
<div class="ui-col ui-col-target" data-feat-target="${
|
|
534
|
-
<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>
|
|
535
535
|
</div>
|
|
536
536
|
</div>
|
|
537
537
|
`;
|
|
538
|
-
}).join(""),
|
|
539
|
-
(
|
|
540
|
-
).join(""),
|
|
541
|
-
<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};">
|
|
542
542
|
<div class="ui-drawer-header">
|
|
543
543
|
<div class="ui-drawer-header-left">
|
|
544
544
|
<span class="ui-drawer-icon">${g.engrenagem}</span>
|
|
545
545
|
<span class="ui-drawer-title">Configurações da Camada</span>
|
|
546
546
|
</div>
|
|
547
|
-
<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">
|
|
548
548
|
${g.fechar}
|
|
549
549
|
</button>
|
|
550
550
|
</div>
|
|
@@ -557,9 +557,9 @@ function Ke(e) {
|
|
|
557
557
|
</div>
|
|
558
558
|
<div class="ui-drawer-color-group">
|
|
559
559
|
<label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
|
|
560
|
-
<span class="ui-drawer-color-sample" id="sample-color-${
|
|
561
|
-
<span class="ui-drawer-color-hex" id="hex-color-${
|
|
562
|
-
<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" />
|
|
563
563
|
</label>
|
|
564
564
|
</div>
|
|
565
565
|
</div>
|
|
@@ -568,10 +568,10 @@ function Ke(e) {
|
|
|
568
568
|
<div class="ui-drawer-row">
|
|
569
569
|
<div class="ui-drawer-row-label">
|
|
570
570
|
<span>Opacidade</span>
|
|
571
|
-
<span class="ui-drawer-badge" id="badge-op-${
|
|
571
|
+
<span class="ui-drawer-badge" id="badge-op-${k}">${Se}%</span>
|
|
572
572
|
</div>
|
|
573
573
|
<div class="ui-drawer-slider-container">
|
|
574
|
-
<input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(
|
|
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" />
|
|
575
575
|
</div>
|
|
576
576
|
</div>
|
|
577
577
|
|
|
@@ -581,9 +581,9 @@ function Ke(e) {
|
|
|
581
581
|
<span>Pertence ao Grupo</span>
|
|
582
582
|
</div>
|
|
583
583
|
<div class="ui-drawer-select-wrapper">
|
|
584
|
-
<select class="ui-drawer-select" data-layer-parent-select="${
|
|
585
|
-
<option value="" ${
|
|
586
|
-
${
|
|
584
|
+
<select class="ui-drawer-select" data-layer-parent-select="${k}" aria-label="Grupo pai da camada">
|
|
585
|
+
<option value="" ${w.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
|
|
586
|
+
${Me}
|
|
587
587
|
</select>
|
|
588
588
|
</div>
|
|
589
589
|
</div>
|
|
@@ -591,78 +591,78 @@ function Ke(e) {
|
|
|
591
591
|
|
|
592
592
|
<div class="ui-drawer-footer">
|
|
593
593
|
<div class="ui-drawer-meta-info">
|
|
594
|
-
<span>${
|
|
594
|
+
<span>${A.length > 0 ? `${A.length} subcamadas · ` : ""}${M.length} ${M.length === 1 ? "feição" : "feições"}</span>
|
|
595
595
|
</div>
|
|
596
596
|
<div class="ui-drawer-actions">
|
|
597
|
-
<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">
|
|
598
598
|
${g.mais} Subcamada
|
|
599
599
|
</button>
|
|
600
|
-
<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">
|
|
601
601
|
${g.lixeira}
|
|
602
602
|
<span class="ui-btn-label">Excluir</span>
|
|
603
603
|
</button>
|
|
604
604
|
</div>
|
|
605
605
|
</div>
|
|
606
606
|
</div>
|
|
607
|
-
` : "",
|
|
607
|
+
` : "", Fe = A.map((C) => v(C)).join("");
|
|
608
608
|
return `
|
|
609
|
-
<div class="ui-layer-group ${
|
|
610
|
-
<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};">
|
|
611
611
|
<div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${g.dragHandle}</div>
|
|
612
612
|
|
|
613
|
-
<div class="ui-col ui-col-eye" data-layer-eye="${
|
|
614
|
-
${
|
|
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}
|
|
615
615
|
</div>
|
|
616
616
|
|
|
617
|
-
<div class="ui-col ui-col-lock ${
|
|
618
|
-
${
|
|
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}
|
|
619
619
|
</div>
|
|
620
620
|
|
|
621
|
-
<div class="ui-col ui-col-colorbar" style="background: ${
|
|
621
|
+
<div class="ui-col ui-col-colorbar" style="background: ${z};"></div>
|
|
622
622
|
|
|
623
|
-
<div class="ui-col ui-col-chevron" data-layer-expand="${
|
|
624
|
-
<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>
|
|
625
625
|
</div>
|
|
626
626
|
|
|
627
|
-
<div class="ui-col ui-col-name" data-layer-name-trigger="${
|
|
628
|
-
${s ===
|
|
629
|
-
<span class="ui-name-text">${
|
|
630
|
-
${
|
|
631
|
-
${
|
|
632
|
-
${
|
|
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>` : ""}`}
|
|
633
633
|
</div>
|
|
634
634
|
|
|
635
635
|
<div class="ui-col ui-col-actions">
|
|
636
|
-
<button class="ui-micro-btn" data-layer-fit="${
|
|
637
|
-
<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>
|
|
638
638
|
</div>
|
|
639
639
|
|
|
640
|
-
<div class="ui-col ui-col-target" data-layer-target="${
|
|
641
|
-
<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>
|
|
642
642
|
</div>
|
|
643
643
|
</div>
|
|
644
644
|
|
|
645
|
-
${
|
|
645
|
+
${ze}
|
|
646
646
|
|
|
647
|
-
<div class="ui-children-container ${
|
|
648
|
-
${
|
|
649
|
-
${
|
|
650
|
-
${
|
|
651
|
-
${
|
|
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>` : ""}
|
|
652
652
|
</div>
|
|
653
653
|
</div>
|
|
654
654
|
`;
|
|
655
|
-
},
|
|
655
|
+
}, b = Xe(o).map((y) => v(y)).join("");
|
|
656
656
|
return `
|
|
657
|
-
${
|
|
657
|
+
${L}
|
|
658
658
|
<div class="ui-panel-box">
|
|
659
659
|
<div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true">
|
|
660
|
-
${
|
|
660
|
+
${b}
|
|
661
661
|
</div>
|
|
662
662
|
</div>
|
|
663
663
|
`;
|
|
664
664
|
}
|
|
665
|
-
function
|
|
665
|
+
function Je(e, o, a) {
|
|
666
666
|
let t = e.find((i) => i.id === o);
|
|
667
667
|
for (; t && t.parentId; ) {
|
|
668
668
|
if (t.parentId === a) return !0;
|
|
@@ -670,10 +670,10 @@ function Ye(e, o, a) {
|
|
|
670
670
|
}
|
|
671
671
|
return !1;
|
|
672
672
|
}
|
|
673
|
-
class
|
|
673
|
+
class We {
|
|
674
674
|
constructor(o, a) {
|
|
675
|
-
|
|
676
|
-
|
|
675
|
+
I(this, "host");
|
|
676
|
+
I(this, "shadow");
|
|
677
677
|
this.host = o, this.shadow = a;
|
|
678
678
|
}
|
|
679
679
|
bindAll() {
|
|
@@ -686,7 +686,7 @@ class Qe {
|
|
|
686
686
|
const t = o.getAttribute("data-layer-name-trigger");
|
|
687
687
|
if (!t) return;
|
|
688
688
|
this.host.editingLayerId = t, this.host.solicitarRenderizacao();
|
|
689
|
-
const i =
|
|
689
|
+
const i = B(
|
|
690
690
|
this.shadow,
|
|
691
691
|
"data-inline-layer-input",
|
|
692
692
|
t
|
|
@@ -719,7 +719,7 @@ class Qe {
|
|
|
719
719
|
const t = o.getAttribute("data-feat-name-trigger");
|
|
720
720
|
if (!t) return;
|
|
721
721
|
this.host.editingFeatureId = t, this.host.solicitarRenderizacao();
|
|
722
|
-
const i =
|
|
722
|
+
const i = B(
|
|
723
723
|
this.shadow,
|
|
724
724
|
"data-inline-feat-input",
|
|
725
725
|
t
|
|
@@ -783,7 +783,7 @@ class Qe {
|
|
|
783
783
|
const d = this.host.camadas.find((h) => h.id === a), m = this.host.camadas.find((h) => h.id === n);
|
|
784
784
|
if (!d || !m) return;
|
|
785
785
|
if (f)
|
|
786
|
-
|
|
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", {
|
|
787
787
|
camadaId: d.id,
|
|
788
788
|
novoParentId: m.id,
|
|
789
789
|
camada: d
|
|
@@ -792,8 +792,8 @@ class Qe {
|
|
|
792
792
|
const h = this.host.camadas.findIndex((v) => v.id === a);
|
|
793
793
|
if (h === -1) return;
|
|
794
794
|
this.host.camadas.splice(h, 1);
|
|
795
|
-
const
|
|
796
|
-
|
|
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;
|
|
797
797
|
}
|
|
798
798
|
(p = (u = this.host).salvarLembrancaEstado) == null || p.call(u), this.host.dispararEvento("ui-camadas-reordenadas", {
|
|
799
799
|
camadas: [...this.host.camadas]
|
|
@@ -841,14 +841,14 @@ class Qe {
|
|
|
841
841
|
c.preventDefault(), c.stopPropagation();
|
|
842
842
|
const f = r.classList.contains("drop-above");
|
|
843
843
|
i();
|
|
844
|
-
const u = this.host.feicoes.findIndex((
|
|
844
|
+
const u = this.host.feicoes.findIndex((x) => x.id === t);
|
|
845
845
|
if (u === -1) return;
|
|
846
|
-
const p = this.host.feicoes.find((
|
|
846
|
+
const p = this.host.feicoes.find((x) => x.id === n);
|
|
847
847
|
if (!p) return;
|
|
848
|
-
const [d] = this.host.feicoes.splice(u, 1), m = d.layerId, h = p.layerId,
|
|
849
|
-
|
|
850
|
-
const v = this.host.feicoes.findIndex((
|
|
851
|
-
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", {
|
|
852
852
|
feicaoId: d.id,
|
|
853
853
|
camadaOrigemId: m,
|
|
854
854
|
camadaDestinoId: h,
|
|
@@ -889,10 +889,10 @@ class Qe {
|
|
|
889
889
|
if (window.removeEventListener("pointermove", f), window.removeEventListener("pointerup", u), window.removeEventListener("pointercancel", u), n) {
|
|
890
890
|
const m = n.getAttribute("data-layer-id");
|
|
891
891
|
if (c(), m && l && m !== l) {
|
|
892
|
-
const h = this.host.camadas.findIndex((
|
|
892
|
+
const h = this.host.camadas.findIndex((L) => L.id === l);
|
|
893
893
|
if (h !== -1) {
|
|
894
|
-
const [
|
|
895
|
-
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", {
|
|
896
896
|
camadas: [...this.host.camadas]
|
|
897
897
|
}), this.host.solicitarRenderizacao();
|
|
898
898
|
}
|
|
@@ -905,12 +905,12 @@ class Qe {
|
|
|
905
905
|
});
|
|
906
906
|
}
|
|
907
907
|
}
|
|
908
|
-
const
|
|
909
|
-
function
|
|
908
|
+
const Ze = "ui_camadas_estado_";
|
|
909
|
+
function ea(e, o) {
|
|
910
910
|
const a = (e || o || "default").trim();
|
|
911
|
-
return `${
|
|
911
|
+
return `${Ze}${a}`;
|
|
912
912
|
}
|
|
913
|
-
function
|
|
913
|
+
function ee(e) {
|
|
914
914
|
if (typeof window > "u" || typeof localStorage > "u")
|
|
915
915
|
return null;
|
|
916
916
|
try {
|
|
@@ -924,7 +924,7 @@ function W(e) {
|
|
|
924
924
|
}
|
|
925
925
|
return null;
|
|
926
926
|
}
|
|
927
|
-
function
|
|
927
|
+
function aa(e, o) {
|
|
928
928
|
if (!(typeof window > "u" || typeof localStorage > "u"))
|
|
929
929
|
try {
|
|
930
930
|
localStorage.setItem(e, JSON.stringify(o));
|
|
@@ -932,14 +932,14 @@ function We(e, o) {
|
|
|
932
932
|
console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
|
|
933
933
|
}
|
|
934
934
|
}
|
|
935
|
-
function
|
|
935
|
+
function ta(e) {
|
|
936
936
|
if (!(typeof window > "u" || typeof localStorage > "u"))
|
|
937
937
|
try {
|
|
938
938
|
localStorage.removeItem(e);
|
|
939
939
|
} catch {
|
|
940
940
|
}
|
|
941
941
|
}
|
|
942
|
-
function
|
|
942
|
+
function re(e) {
|
|
943
943
|
return {
|
|
944
944
|
name: e.name,
|
|
945
945
|
visible: e.visible !== !1,
|
|
@@ -949,16 +949,16 @@ function ee(e) {
|
|
|
949
949
|
parentId: e.parentId !== void 0 ? e.parentId : null
|
|
950
950
|
};
|
|
951
951
|
}
|
|
952
|
-
function
|
|
952
|
+
function ra(e, o, a, t) {
|
|
953
953
|
if (!Array.isArray(e)) return;
|
|
954
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;
|
|
955
955
|
for (let u = 0; u < e.length; u++) {
|
|
956
956
|
const p = e[u], d = i[p.id];
|
|
957
|
-
if (t == null || t.set(p.id,
|
|
958
|
-
const m = d.origem, h = (
|
|
959
|
-
var
|
|
960
|
-
const v = (
|
|
961
|
-
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;
|
|
962
962
|
};
|
|
963
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);
|
|
964
964
|
}
|
|
@@ -976,7 +976,7 @@ function ea(e, o, a, t) {
|
|
|
976
976
|
});
|
|
977
977
|
}
|
|
978
978
|
}
|
|
979
|
-
function
|
|
979
|
+
function ia(e) {
|
|
980
980
|
const { estadoAnterior: o, camadas: a, expandedLayers: t } = e;
|
|
981
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;
|
|
982
982
|
const l = {
|
|
@@ -1009,8 +1009,8 @@ function aa(e) {
|
|
|
1009
1009
|
ultimaAtualizacao: Date.now()
|
|
1010
1010
|
};
|
|
1011
1011
|
}
|
|
1012
|
-
const ta = ':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
|
|
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) {
|
|
1014
1014
|
o.querySelectorAll("[data-layer-row]").forEach((i) => {
|
|
1015
1015
|
i.addEventListener("click", (r) => {
|
|
1016
1016
|
if (r.target.closest(
|
|
@@ -1040,9 +1040,9 @@ function ra(e, o) {
|
|
|
1040
1040
|
if (s) {
|
|
1041
1041
|
s.visible = s.visible === !1;
|
|
1042
1042
|
const l = s.visible !== !1;
|
|
1043
|
-
i.innerHTML = l ? g.olhoAberto : g.olhoFechado,
|
|
1043
|
+
i.innerHTML = l ? g.olhoAberto : g.olhoFechado, q(i, l ? "Ocultar Camada" : "Exibir Camada");
|
|
1044
1044
|
const c = i.closest(".ui-layer-row");
|
|
1045
|
-
c && c.classList.toggle("hidden-layer", !l),
|
|
1045
|
+
c && c.classList.toggle("hidden-layer", !l), sa(e, o), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
|
|
1046
1046
|
camadaId: s.id,
|
|
1047
1047
|
visivel: l
|
|
1048
1048
|
});
|
|
@@ -1052,7 +1052,7 @@ function ra(e, o) {
|
|
|
1052
1052
|
i.addEventListener("click", (r) => {
|
|
1053
1053
|
r.stopPropagation();
|
|
1054
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),
|
|
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
1056
|
camadaId: s.id,
|
|
1057
1057
|
bloqueado: s.locked
|
|
1058
1058
|
}));
|
|
@@ -1077,7 +1077,7 @@ function ra(e, o) {
|
|
|
1077
1077
|
const a = (i, r, n) => {
|
|
1078
1078
|
const s = e.camadas.find((d) => d.id === i);
|
|
1079
1079
|
if (!s) return;
|
|
1080
|
-
const l =
|
|
1080
|
+
const l = V(r, s.color || "#00E08A");
|
|
1081
1081
|
s.color = l;
|
|
1082
1082
|
const c = o.getElementById(`sample-color-${i}`);
|
|
1083
1083
|
c && (c.style.backgroundColor = l);
|
|
@@ -1085,7 +1085,7 @@ function ra(e, o) {
|
|
|
1085
1085
|
f && (f.textContent = l.toUpperCase());
|
|
1086
1086
|
const u = o.getElementById(`settings-drawer-${i}`);
|
|
1087
1087
|
u && u.style.setProperty("--drawer-cor-camada", l);
|
|
1088
|
-
const p =
|
|
1088
|
+
const p = B(o, "data-layer-row", i);
|
|
1089
1089
|
if (p) {
|
|
1090
1090
|
p.style.setProperty("--layer-active-color", l);
|
|
1091
1091
|
const d = p.querySelector(".ui-col-colorbar");
|
|
@@ -1108,7 +1108,7 @@ function ra(e, o) {
|
|
|
1108
1108
|
n.opacity = r;
|
|
1109
1109
|
const s = o.getElementById(`badge-op-${i}`);
|
|
1110
1110
|
s && (s.textContent = `${Math.round(r * 100)}%`);
|
|
1111
|
-
const l =
|
|
1111
|
+
const l = B(o, "data-layer-opacity-slider", i);
|
|
1112
1112
|
l && parseFloat(l.value) !== r && (l.value = String(r)), e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-opacidade", { camadaId: n.id, opacidade: r });
|
|
1113
1113
|
};
|
|
1114
1114
|
o.querySelectorAll("[data-layer-opacity-slider]").forEach((i) => {
|
|
@@ -1156,7 +1156,7 @@ function ra(e, o) {
|
|
|
1156
1156
|
}), o.querySelectorAll("[data-layer-target]").forEach((i) => {
|
|
1157
1157
|
i.addEventListener("click", (r) => {
|
|
1158
1158
|
r.stopPropagation();
|
|
1159
|
-
const n = r, s = i.getAttribute("data-layer-target"), l =
|
|
1159
|
+
const n = r, s = i.getAttribute("data-layer-target"), l = U(
|
|
1160
1160
|
e.feicoes.filter((f) => f.layerId === s),
|
|
1161
1161
|
e.searchQuery
|
|
1162
1162
|
);
|
|
@@ -1165,24 +1165,24 @@ function ra(e, o) {
|
|
|
1165
1165
|
});
|
|
1166
1166
|
});
|
|
1167
1167
|
}
|
|
1168
|
-
function
|
|
1168
|
+
function sa(e, o) {
|
|
1169
1169
|
const a = o.getElementById("btn-toggle-all-vis");
|
|
1170
1170
|
if (!a) return;
|
|
1171
1171
|
const t = e.camadas.every((i) => i.visible !== !1);
|
|
1172
|
-
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");
|
|
1173
1173
|
}
|
|
1174
|
-
function
|
|
1174
|
+
function la(e, o, a, t) {
|
|
1175
1175
|
e.feicoes.filter((i) => i.layerId === a).forEach((i) => {
|
|
1176
|
-
const r =
|
|
1176
|
+
const r = B(o, "data-feat-lock", i.id);
|
|
1177
1177
|
if (!r) return;
|
|
1178
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"),
|
|
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(
|
|
1180
1180
|
r,
|
|
1181
1181
|
t ? "Bloqueada pela camada" : n ? "Desbloquear Feição" : "Bloquear Feição"
|
|
1182
1182
|
);
|
|
1183
1183
|
});
|
|
1184
1184
|
}
|
|
1185
|
-
function
|
|
1185
|
+
function ca(e, o) {
|
|
1186
1186
|
const a = o.getElementById("btn-footer-vis");
|
|
1187
1187
|
a && a.addEventListener("click", () => {
|
|
1188
1188
|
const u = e.feicoes.filter((m) => e.selectedFeatureIds.has(m.id));
|
|
@@ -1261,8 +1261,8 @@ function na(e, o) {
|
|
|
1261
1261
|
const d = Array.from(e.selectedFeatureIds);
|
|
1262
1262
|
if (d.length === 0) return;
|
|
1263
1263
|
if (!c.classList.contains("confirming")) {
|
|
1264
|
-
c.classList.add("confirming"),
|
|
1265
|
-
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);
|
|
1266
1266
|
}, 3500);
|
|
1267
1267
|
return;
|
|
1268
1268
|
}
|
|
@@ -1278,7 +1278,95 @@ function na(e, o) {
|
|
|
1278
1278
|
const f = o.getElementById("btn-footer-clear");
|
|
1279
1279
|
f && f.addEventListener("click", () => e.limparSelecao(!0));
|
|
1280
1280
|
}
|
|
1281
|
-
|
|
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) {
|
|
1282
1370
|
const a = o.getElementById("btn-toggle-all-vis");
|
|
1283
1371
|
a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
|
|
1284
1372
|
const t = o.getElementById("btn-toggle-all-expand");
|
|
@@ -1294,15 +1382,15 @@ function sa(e, o) {
|
|
|
1294
1382
|
e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
|
|
1295
1383
|
});
|
|
1296
1384
|
const n = o.getElementById("btn-colapsar");
|
|
1297
|
-
n && n.addEventListener("click", () => e.colapsar(!0)),
|
|
1385
|
+
n && n.addEventListener("click", () => e.colapsar(!0)), ga(e, o);
|
|
1298
1386
|
}
|
|
1299
|
-
function
|
|
1387
|
+
function ga(e, o) {
|
|
1300
1388
|
const a = o.getElementById("input-layer-search"), t = o.getElementById("btn-clear-layer-search"), i = () => {
|
|
1301
1389
|
var r;
|
|
1302
1390
|
e.searchQuery = "", e.solicitarRenderizacao(), (r = o.getElementById("input-layer-search")) == null || r.focus();
|
|
1303
1391
|
};
|
|
1304
1392
|
if (a) {
|
|
1305
|
-
const r =
|
|
1393
|
+
const r = xe(() => e.solicitarRenderizacao(), 75);
|
|
1306
1394
|
a.addEventListener("input", (n) => {
|
|
1307
1395
|
e.searchQuery = n.target.value, r();
|
|
1308
1396
|
}), a.addEventListener("keydown", (n) => {
|
|
@@ -1311,7 +1399,7 @@ function la(e, o) {
|
|
|
1311
1399
|
}
|
|
1312
1400
|
t && t.addEventListener("click", i);
|
|
1313
1401
|
}
|
|
1314
|
-
function
|
|
1402
|
+
function va(e, o) {
|
|
1315
1403
|
o.querySelectorAll("[data-feat-select]").forEach((a) => {
|
|
1316
1404
|
a.addEventListener("click", (t) => {
|
|
1317
1405
|
if (e.editingFeatureId) return;
|
|
@@ -1336,7 +1424,7 @@ function ca(e, o) {
|
|
|
1336
1424
|
if (r) {
|
|
1337
1425
|
r.visible = r.visible === !1;
|
|
1338
1426
|
const n = r.visible !== !1;
|
|
1339
|
-
a.innerHTML = n ? g.olhoAberto : g.olhoFechado,
|
|
1427
|
+
a.innerHTML = n ? g.olhoAberto : g.olhoFechado, q(a, n ? "Ocultar Feição" : "Exibir Feição");
|
|
1340
1428
|
const s = a.closest(".ui-feat-row");
|
|
1341
1429
|
s && s.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
|
|
1342
1430
|
feicaoId: r.id,
|
|
@@ -1348,7 +1436,7 @@ function ca(e, o) {
|
|
|
1348
1436
|
a.addEventListener("click", (t) => {
|
|
1349
1437
|
if (t.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
|
|
1350
1438
|
const i = a.getAttribute("data-feat-lock"), r = e.feicoes.find((n) => n.id === i);
|
|
1351
|
-
r && (r.locked = !r.locked, a.innerHTML = r.locked ? g.cadeadoTrancado : g.cadeadoAberto, a.classList.toggle("ui-lock-open", !r.locked),
|
|
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", {
|
|
1352
1440
|
feicaoId: r.id,
|
|
1353
1441
|
bloqueado: r.locked
|
|
1354
1442
|
}));
|
|
@@ -1361,7 +1449,7 @@ function ca(e, o) {
|
|
|
1361
1449
|
});
|
|
1362
1450
|
});
|
|
1363
1451
|
}
|
|
1364
|
-
function
|
|
1452
|
+
function ba(e, o) {
|
|
1365
1453
|
o.querySelectorAll("[data-basemap-thumb]").forEach((a) => {
|
|
1366
1454
|
a.addEventListener(
|
|
1367
1455
|
"error",
|
|
@@ -1378,23 +1466,23 @@ function da(e, o) {
|
|
|
1378
1466
|
});
|
|
1379
1467
|
});
|
|
1380
1468
|
}
|
|
1381
|
-
function
|
|
1382
|
-
|
|
1469
|
+
function xa(e, o) {
|
|
1470
|
+
ha(e, o), na(e, o), va(e, o), ba(e, o), ca(e, o), fa(e, o);
|
|
1383
1471
|
}
|
|
1384
|
-
const
|
|
1385
|
-
function
|
|
1386
|
-
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);
|
|
1387
1475
|
}
|
|
1388
|
-
function
|
|
1389
|
-
return Array.from(e.querySelectorAll(
|
|
1476
|
+
function Ea(e) {
|
|
1477
|
+
return Array.from(e.querySelectorAll(O)).filter((o) => {
|
|
1390
1478
|
const a = o.closest(".ui-children-container");
|
|
1391
1479
|
return !(a && a.style.display === "none") && !o.classList.contains("ui-search-hidden");
|
|
1392
1480
|
});
|
|
1393
1481
|
}
|
|
1394
|
-
function
|
|
1395
|
-
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());
|
|
1396
1484
|
}
|
|
1397
|
-
function
|
|
1485
|
+
function Aa(e, o) {
|
|
1398
1486
|
e.dispatchEvent(
|
|
1399
1487
|
new MouseEvent("click", {
|
|
1400
1488
|
bubbles: !0,
|
|
@@ -1403,64 +1491,64 @@ function ha(e, o) {
|
|
|
1403
1491
|
})
|
|
1404
1492
|
);
|
|
1405
1493
|
}
|
|
1406
|
-
function
|
|
1494
|
+
function ka(e, o, a) {
|
|
1407
1495
|
var t;
|
|
1408
|
-
if (!
|
|
1496
|
+
if (!Ae(a.composedPath()[0])) {
|
|
1409
1497
|
if (e.activeSettingsLayerId) {
|
|
1410
1498
|
a.preventDefault();
|
|
1411
1499
|
const i = e.activeSettingsLayerId;
|
|
1412
|
-
e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (t =
|
|
1500
|
+
e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (t = B(o, "data-layer-settings", i)) == null || t.focus();
|
|
1413
1501
|
return;
|
|
1414
1502
|
}
|
|
1415
1503
|
e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
|
|
1416
1504
|
}
|
|
1417
1505
|
}
|
|
1418
|
-
function
|
|
1506
|
+
function Ia(e, o, a) {
|
|
1419
1507
|
var n;
|
|
1420
1508
|
const t = a.composedPath()[0];
|
|
1421
|
-
if (!(t instanceof HTMLElement) ||
|
|
1422
|
-
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)) {
|
|
1423
1511
|
a.preventDefault(), t.click();
|
|
1424
1512
|
return;
|
|
1425
1513
|
}
|
|
1426
|
-
if (!t.matches(
|
|
1427
|
-
const i =
|
|
1514
|
+
if (!t.matches(O)) return;
|
|
1515
|
+
const i = Ea(e), r = i.indexOf(t);
|
|
1428
1516
|
switch (a.key) {
|
|
1429
1517
|
case "ArrowDown":
|
|
1430
|
-
a.preventDefault(),
|
|
1518
|
+
a.preventDefault(), G(e, i[Math.min(i.length - 1, r + 1)]);
|
|
1431
1519
|
break;
|
|
1432
1520
|
case "ArrowUp":
|
|
1433
|
-
a.preventDefault(),
|
|
1521
|
+
a.preventDefault(), G(e, i[Math.max(0, r - 1)]);
|
|
1434
1522
|
break;
|
|
1435
1523
|
case "Home":
|
|
1436
|
-
a.preventDefault(),
|
|
1524
|
+
a.preventDefault(), G(e, i[0]);
|
|
1437
1525
|
break;
|
|
1438
1526
|
case "End":
|
|
1439
|
-
a.preventDefault(),
|
|
1527
|
+
a.preventDefault(), G(e, i[i.length - 1]);
|
|
1440
1528
|
break;
|
|
1441
1529
|
case "ArrowRight":
|
|
1442
1530
|
case "ArrowLeft": {
|
|
1443
1531
|
const s = t.getAttribute("data-layer-row");
|
|
1444
1532
|
if (!s) return;
|
|
1445
1533
|
const l = t.closest(".ui-layer-group"), c = (l == null ? void 0 : l.getAttribute("aria-expanded")) === "true";
|
|
1446
|
-
a.key === "ArrowRight" !== c && (a.preventDefault(), (n =
|
|
1534
|
+
a.key === "ArrowRight" !== c && (a.preventDefault(), (n = B(o, "data-layer-expand", s)) == null || n.click());
|
|
1447
1535
|
break;
|
|
1448
1536
|
}
|
|
1449
1537
|
case "Enter":
|
|
1450
1538
|
case " ":
|
|
1451
|
-
a.preventDefault(),
|
|
1539
|
+
a.preventDefault(), Aa(t, a);
|
|
1452
1540
|
break;
|
|
1453
1541
|
}
|
|
1454
1542
|
}
|
|
1455
|
-
function
|
|
1543
|
+
function La(e, o, a, t, i) {
|
|
1456
1544
|
i.add(o, "keydown", (r) => {
|
|
1457
|
-
r.key === "Escape" &&
|
|
1458
|
-
}), i.add(t, "keydown", (r) =>
|
|
1545
|
+
r.key === "Escape" && ka(e, a, r);
|
|
1546
|
+
}), i.add(t, "keydown", (r) => Ia(t, a, r)), i.add(t, "focusin", (r) => {
|
|
1459
1547
|
const n = r.composedPath()[0];
|
|
1460
|
-
n instanceof HTMLElement && n.matches(
|
|
1548
|
+
n instanceof HTMLElement && n.matches(O) && (t.querySelectorAll(O).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
|
|
1461
1549
|
});
|
|
1462
1550
|
}
|
|
1463
|
-
function
|
|
1551
|
+
function Ca(e, o) {
|
|
1464
1552
|
o.querySelectorAll("[data-layer-row]").forEach((t) => {
|
|
1465
1553
|
const r = t.getAttribute("data-layer-row") === e.camadaAtivaId;
|
|
1466
1554
|
t.classList.toggle("active-drawing-layer", r);
|
|
@@ -1475,22 +1563,22 @@ function xa(e, o) {
|
|
|
1475
1563
|
}
|
|
1476
1564
|
});
|
|
1477
1565
|
}
|
|
1478
|
-
function
|
|
1566
|
+
function $a(e, o) {
|
|
1479
1567
|
o.querySelectorAll(".ui-feat-row").forEach((v) => {
|
|
1480
|
-
const
|
|
1481
|
-
v.classList.toggle("selected-row",
|
|
1482
|
-
const
|
|
1483
|
-
|
|
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);
|
|
1484
1572
|
}), o.querySelectorAll(".ui-layer-group").forEach((v) => {
|
|
1485
|
-
const
|
|
1486
|
-
if (
|
|
1487
|
-
const
|
|
1488
|
-
|
|
1489
|
-
} 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");
|
|
1490
1578
|
});
|
|
1491
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");
|
|
1492
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");
|
|
1493
|
-
const n = o.querySelector(".ui-footer-metric"), s =
|
|
1581
|
+
const n = o.querySelector(".ui-footer-metric"), s = be(a);
|
|
1494
1582
|
n && (s ? (n.innerHTML = `${g.reguaMetrica} ${s}`, n.style.display = "inline-flex") : n.style.display = "none");
|
|
1495
1583
|
const l = o.querySelector(".ui-tree-footer");
|
|
1496
1584
|
l && (l.classList.toggle("tem-selecao", t), l.classList.toggle("sem-selecao", !t));
|
|
@@ -1498,8 +1586,8 @@ function ya(e, o) {
|
|
|
1498
1586
|
c && (c.style.display = t ? "none" : "flex");
|
|
1499
1587
|
const f = o.querySelector(".ui-footer-bulk-actions");
|
|
1500
1588
|
f && (f.style.display = t ? "flex" : "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((v) => {
|
|
1501
|
-
const
|
|
1502
|
-
|
|
1589
|
+
const x = o.getElementById(v);
|
|
1590
|
+
x && (x.disabled = !t, x.classList.toggle("disabled", !t));
|
|
1503
1591
|
});
|
|
1504
1592
|
const u = o.querySelector(".ui-footer-move-wrapper");
|
|
1505
1593
|
u && u.classList.toggle("disabled", !t);
|
|
@@ -1510,10 +1598,10 @@ function ya(e, o) {
|
|
|
1510
1598
|
const m = o.getElementById("input-footer-color");
|
|
1511
1599
|
m && (m.disabled = !t);
|
|
1512
1600
|
let h = o.getElementById("btn-footer-clear");
|
|
1513
|
-
const
|
|
1514
|
-
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();
|
|
1515
1603
|
}
|
|
1516
|
-
function
|
|
1604
|
+
function Sa(e) {
|
|
1517
1605
|
function t() {
|
|
1518
1606
|
return e.getMinAltura ? e.getMinAltura() : 140;
|
|
1519
1607
|
}
|
|
@@ -1553,38 +1641,38 @@ function wa(e) {
|
|
|
1553
1641
|
e.resizerElement.setPointerCapture(m.pointerId);
|
|
1554
1642
|
} catch {
|
|
1555
1643
|
}
|
|
1556
|
-
const h = (
|
|
1644
|
+
const h = (x) => {
|
|
1557
1645
|
if (!c) return;
|
|
1558
|
-
|
|
1559
|
-
const
|
|
1560
|
-
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(
|
|
1561
1649
|
new CustomEvent("ui-redimensionando-altura", {
|
|
1562
1650
|
bubbles: !0,
|
|
1563
1651
|
composed: !0,
|
|
1564
|
-
detail: { altura:
|
|
1652
|
+
detail: { altura: y }
|
|
1565
1653
|
})
|
|
1566
1654
|
);
|
|
1567
|
-
},
|
|
1568
|
-
var
|
|
1569
|
-
c = !1, n = null, window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", v), window.removeEventListener("pointercancel", v), (
|
|
1570
|
-
}, 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) => {
|
|
1571
1659
|
if (!c) return;
|
|
1572
1660
|
c = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
|
|
1573
1661
|
try {
|
|
1574
|
-
e.resizerElement.hasPointerCapture(
|
|
1662
|
+
e.resizerElement.hasPointerCapture(x.pointerId) && e.resizerElement.releasePointerCapture(x.pointerId);
|
|
1575
1663
|
} catch {
|
|
1576
1664
|
}
|
|
1577
1665
|
window.removeEventListener("pointermove", h), window.removeEventListener("pointerup", v), window.removeEventListener("pointercancel", v);
|
|
1578
|
-
const
|
|
1579
|
-
e.onAlturaAlterada && e.onAlturaAlterada(
|
|
1666
|
+
const b = e.hostElement.getBoundingClientRect().height, y = Math.round(b);
|
|
1667
|
+
e.onAlturaAlterada && e.onAlturaAlterada(y), e.hostElement.dispatchEvent(
|
|
1580
1668
|
new CustomEvent("ui-redimensionar-altura", {
|
|
1581
1669
|
bubbles: !0,
|
|
1582
1670
|
composed: !0,
|
|
1583
|
-
detail: { altura:
|
|
1671
|
+
detail: { altura: y }
|
|
1584
1672
|
})
|
|
1585
1673
|
);
|
|
1586
1674
|
};
|
|
1587
|
-
n =
|
|
1675
|
+
n = L, window.addEventListener("pointermove", h), window.addEventListener("pointerup", v), window.addEventListener("pointercancel", v);
|
|
1588
1676
|
}, d = (m) => {
|
|
1589
1677
|
m.preventDefault(), m.stopPropagation(), r(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
|
|
1590
1678
|
};
|
|
@@ -1599,35 +1687,35 @@ function wa(e) {
|
|
|
1599
1687
|
destruir: l
|
|
1600
1688
|
};
|
|
1601
1689
|
}
|
|
1602
|
-
const T = class T extends
|
|
1690
|
+
const T = class T extends De {
|
|
1603
1691
|
constructor() {
|
|
1604
1692
|
super();
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
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));
|
|
1616
1704
|
// Estado interno
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
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");
|
|
1629
1717
|
this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
|
|
1630
|
-
<style>${
|
|
1718
|
+
<style>${oa}</style>
|
|
1631
1719
|
<div class="ui-camadas-container" id="panel-container" role="region" aria-label="Painel de Camadas">
|
|
1632
1720
|
<div class="ui-camadas-corpo" id="painel-corpo"></div>
|
|
1633
1721
|
<div class="ui-camadas-resizer-altura" id="resizer-altura" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
|
|
@@ -1637,9 +1725,9 @@ const T = class T extends Fe {
|
|
|
1637
1725
|
<button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
|
|
1638
1726
|
${g.camadas}
|
|
1639
1727
|
</button>
|
|
1640
|
-
`, 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);
|
|
1641
1729
|
const a = this.shadow.getElementById("resizer-altura");
|
|
1642
|
-
this.resizerController =
|
|
1730
|
+
this.resizerController = Sa({
|
|
1643
1731
|
hostElement: this,
|
|
1644
1732
|
resizerElement: a,
|
|
1645
1733
|
listeners: this.listeners,
|
|
@@ -1680,12 +1768,12 @@ const T = class T extends Fe {
|
|
|
1680
1768
|
}
|
|
1681
1769
|
connectedCallback() {
|
|
1682
1770
|
if (this.persistir) {
|
|
1683
|
-
const a =
|
|
1771
|
+
const a = ee(this.obterChaveStorageAtual());
|
|
1684
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));
|
|
1685
1773
|
}
|
|
1686
1774
|
this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (T.instanciasChavePadrao.size > 0 && console.warn(
|
|
1687
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."
|
|
1688
|
-
), T.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(),
|
|
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();
|
|
1689
1777
|
}
|
|
1690
1778
|
disconnectedCallback() {
|
|
1691
1779
|
var a;
|
|
@@ -1804,7 +1892,7 @@ const T = class T extends Fe {
|
|
|
1804
1892
|
}
|
|
1805
1893
|
// --- Gerenciamento de Persistência / Lembrança ---
|
|
1806
1894
|
obterChaveStorageAtual() {
|
|
1807
|
-
return
|
|
1895
|
+
return ea(this.storageKey, this.id);
|
|
1808
1896
|
}
|
|
1809
1897
|
/** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
|
|
1810
1898
|
agendarSalvarLembranca() {
|
|
@@ -1812,8 +1900,8 @@ const T = class T extends Fe {
|
|
|
1812
1900
|
}
|
|
1813
1901
|
salvarLembrancaEstado() {
|
|
1814
1902
|
if (!this.persistir || !this.conectado) return;
|
|
1815
|
-
const a = this.obterChaveStorageAtual(), t =
|
|
1816
|
-
estadoAnterior:
|
|
1903
|
+
const a = this.obterChaveStorageAtual(), t = ia({
|
|
1904
|
+
estadoAnterior: ee(a),
|
|
1817
1905
|
origensCamadas: this.origensCamadas,
|
|
1818
1906
|
camadas: this.camadas,
|
|
1819
1907
|
expandedLayers: this.expandedLayers,
|
|
@@ -1824,10 +1912,10 @@ const T = class T extends Fe {
|
|
|
1824
1912
|
altura: this.alturaCustomizada,
|
|
1825
1913
|
camadasRemovidas: this.camadasRemovidas
|
|
1826
1914
|
});
|
|
1827
|
-
this.camadasRemovidas.clear(),
|
|
1915
|
+
this.camadasRemovidas.clear(), aa(a, t);
|
|
1828
1916
|
}
|
|
1829
1917
|
limparLembranca() {
|
|
1830
|
-
|
|
1918
|
+
ta(this.obterChaveStorageAtual());
|
|
1831
1919
|
}
|
|
1832
1920
|
// --- API Pública de Alta Ergonomia ---
|
|
1833
1921
|
//
|
|
@@ -1867,11 +1955,11 @@ const T = class T extends Fe {
|
|
|
1867
1955
|
}
|
|
1868
1956
|
definirCamadas(a, t) {
|
|
1869
1957
|
if (this.camadas = Array.isArray(a) ? this.achatarCamadas(a) : [], this.origensCamadas.clear(), this.persistir) {
|
|
1870
|
-
const r =
|
|
1871
|
-
|
|
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);
|
|
1872
1960
|
} else
|
|
1873
1961
|
this.camadas.forEach((r) => {
|
|
1874
|
-
this.origensCamadas.set(r.id,
|
|
1962
|
+
this.origensCamadas.set(r.id, re(r)), this.expandedLayers.has(r.id) || this.expandedLayers.add(r.id);
|
|
1875
1963
|
});
|
|
1876
1964
|
if (Array.isArray(t)) {
|
|
1877
1965
|
this.feicoes = t.map((s) => ({ ...s }));
|
|
@@ -1915,7 +2003,7 @@ const T = class T extends Fe {
|
|
|
1915
2003
|
return;
|
|
1916
2004
|
}
|
|
1917
2005
|
const t = { ...a };
|
|
1918
|
-
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();
|
|
1919
2007
|
}
|
|
1920
2008
|
removerCamada(a) {
|
|
1921
2009
|
var t;
|
|
@@ -1940,7 +2028,7 @@ const T = class T extends Fe {
|
|
|
1940
2028
|
this.feicoes = this.feicoes.filter((t) => t.id !== a), this.selectedFeatureIds.delete(a), this.solicitarRenderizacao();
|
|
1941
2029
|
}
|
|
1942
2030
|
selecionarFeicao(a, t = !1, i = !1, r = !1) {
|
|
1943
|
-
const n =
|
|
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(
|
|
1944
2032
|
s ? [...n, a] : n,
|
|
1945
2033
|
this.selectedFeatureIds,
|
|
1946
2034
|
this.lastClickedFeatureId,
|
|
@@ -2013,7 +2101,7 @@ const T = class T extends Fe {
|
|
|
2013
2101
|
render() {
|
|
2014
2102
|
var d, m;
|
|
2015
2103
|
if (!this.corpoElement) return;
|
|
2016
|
-
const a =
|
|
2104
|
+
const a = Qe({
|
|
2017
2105
|
camadas: this.camadas,
|
|
2018
2106
|
feicoes: this.feicoes,
|
|
2019
2107
|
camadaAtivaId: this.camadaAtivaId,
|
|
@@ -2024,7 +2112,7 @@ const T = class T extends Fe {
|
|
|
2024
2112
|
editingFeatureId: this.editingFeatureId,
|
|
2025
2113
|
searchQuery: this.searchQuery,
|
|
2026
2114
|
mostrarBotaoColapsar: this.flutuante && this.getAttribute("colapsavel") !== "false"
|
|
2027
|
-
}), 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;
|
|
2028
2116
|
this.corpoElement.innerHTML = `
|
|
2029
2117
|
${a}
|
|
2030
2118
|
${i}
|
|
@@ -2039,7 +2127,7 @@ const T = class T extends Fe {
|
|
|
2039
2127
|
} catch {
|
|
2040
2128
|
}
|
|
2041
2129
|
}
|
|
2042
|
-
!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();
|
|
2043
2131
|
}
|
|
2044
2132
|
// --- Conexão de Eventos ---
|
|
2045
2133
|
conectarEventosGerais() {
|
|
@@ -2047,14 +2135,14 @@ const T = class T extends Fe {
|
|
|
2047
2135
|
}
|
|
2048
2136
|
// --- Sincronização de DOM (delegada) ---
|
|
2049
2137
|
sincronizarCamadaAtivaDOM() {
|
|
2050
|
-
|
|
2138
|
+
Ca(this, this.shadow);
|
|
2051
2139
|
}
|
|
2052
2140
|
sincronizarSelecaoDOM() {
|
|
2053
|
-
|
|
2141
|
+
$a(this, this.shadow);
|
|
2054
2142
|
}
|
|
2055
2143
|
// --- Auxiliares Internos ---
|
|
2056
2144
|
sincronizarSelecoesComFeicoesValidas() {
|
|
2057
|
-
|
|
2145
|
+
Ye(this.selectedFeatureIds, this.feicoes);
|
|
2058
2146
|
}
|
|
2059
2147
|
notificarMudancaSelecao() {
|
|
2060
2148
|
const a = this.feicoes.filter((t) => this.selectedFeatureIds.has(t.id));
|
|
@@ -2071,16 +2159,16 @@ const T = class T extends Fe {
|
|
|
2071
2159
|
}
|
|
2072
2160
|
};
|
|
2073
2161
|
/** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
|
|
2074
|
-
|
|
2162
|
+
I(T, "instanciasChavePadrao", /* @__PURE__ */ new Set());
|
|
2075
2163
|
let j = T;
|
|
2076
|
-
class
|
|
2164
|
+
class Ma extends j {
|
|
2077
2165
|
}
|
|
2078
|
-
class
|
|
2166
|
+
class za extends j {
|
|
2079
2167
|
}
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
function
|
|
2168
|
+
oe("ui-camadas", j);
|
|
2169
|
+
oe("ui-painel-camadas", Ma);
|
|
2170
|
+
oe("ui-layer-panel", za);
|
|
2171
|
+
function Ta(e) {
|
|
2084
2172
|
var o;
|
|
2085
2173
|
return {
|
|
2086
2174
|
id: e.id,
|
|
@@ -2097,7 +2185,7 @@ function $a(e) {
|
|
|
2097
2185
|
dados: e.dados
|
|
2098
2186
|
};
|
|
2099
2187
|
}
|
|
2100
|
-
function
|
|
2188
|
+
function Pa(e, o = "levantamento", a = "feicoes") {
|
|
2101
2189
|
return {
|
|
2102
2190
|
id: e.id,
|
|
2103
2191
|
nome: e.name,
|
|
@@ -2116,7 +2204,7 @@ function Sa(e, o = "levantamento", a = "feicoes") {
|
|
|
2116
2204
|
dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
|
|
2117
2205
|
};
|
|
2118
2206
|
}
|
|
2119
|
-
function
|
|
2207
|
+
function Oa(e, o = "") {
|
|
2120
2208
|
var r, n, s, l;
|
|
2121
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;
|
|
2122
2210
|
return {
|
|
@@ -2135,39 +2223,39 @@ function Ma(e, o = "") {
|
|
|
2135
2223
|
};
|
|
2136
2224
|
}
|
|
2137
2225
|
export {
|
|
2138
|
-
|
|
2226
|
+
We as CamadasDragDropManager,
|
|
2139
2227
|
g as ICONES,
|
|
2140
|
-
|
|
2141
|
-
|
|
2228
|
+
we as LIMITE_FEICOES_POR_CAMADA,
|
|
2229
|
+
ye as MAPAS_BASE_PADRAO,
|
|
2142
2230
|
j as UICamadas,
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
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
|
|
2173
2261
|
};
|