@thibezer/ui-components-kit 2.8.0 → 2.8.1
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 +284 -265
- package/README.md +815 -815
- package/dist/camadas.cjs +98 -94
- package/dist/camadas.js +646 -574
- package/dist/canvas.cjs +28 -28
- package/dist/canvas.js +1110 -980
- package/dist/components/ui-camadas/camadas-host.d.ts +1 -0
- package/dist/components/ui-camadas/camadas-mapas-base.d.ts +3 -1
- package/dist/components/ui-camadas/camadas-render.d.ts +1 -0
- package/dist/components/ui-camadas/camadas-selecao.d.ts +12 -0
- package/dist/components/ui-camadas/ui-camadas.d.ts +5 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-ponteiro.d.ts +4 -0
- package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +13 -0
- package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +11 -0
- package/dist/custom-elements.json +15439 -15122
- package/dist/gerencigeo-canvas/canvas_interacao.d.ts +0 -1
- package/dist/gerencigeo-canvas/feature_popup.d.ts +2 -0
- package/dist/gerencigeo-canvas/mapa_core.d.ts +6 -0
- package/dist/gerencigeo-canvas/popup_gate.d.ts +30 -0
- package/dist/gerencigeo-canvas/zoom_opcoes.d.ts +10 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +44 -42
- package/dist/tipos-elementos.d.ts +13 -3
- package/dist/tipos-vue.d.ts +10 -3
- package/package.json +1 -1
package/dist/camadas.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var E = (e, r, a) =>
|
|
1
|
+
var je = Object.defineProperty;
|
|
2
|
+
var He = (e, r, a) => r in e ? je(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
|
|
3
|
+
var E = (e, r, a) => He(e, typeof r != "symbol" ? r + "" : r, a);
|
|
4
4
|
/* empty css */
|
|
5
|
-
import { d as
|
|
6
|
-
import { L as
|
|
7
|
-
import { UIMapaBase as
|
|
8
|
-
const
|
|
5
|
+
import { d as se, S as Ne } from "./ssr-safe-5cWfJP-s.js";
|
|
6
|
+
import { L as Ge } from "./listener-bag-DQgv7OON.js";
|
|
7
|
+
import { UIMapaBase as gr, UISeletorMapaBase as vr } from "./seletor-mapa-base.js";
|
|
8
|
+
const v = {
|
|
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>
|
|
11
11
|
<polyline points="2 17 12 22 22 17"></polyline>
|
|
@@ -103,24 +103,24 @@ const b = {
|
|
|
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
|
+
}, ie = 6378137;
|
|
107
|
+
function Ve(e, r) {
|
|
108
108
|
if (!e || !r) return 0;
|
|
109
109
|
const a = e[0] * Math.PI / 180, i = e[1] * Math.PI / 180, t = r[0] * Math.PI / 180, o = r[1] * Math.PI / 180, n = t - a, s = o - i, l = Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(t) * Math.sin(s / 2) * Math.sin(s / 2);
|
|
110
|
-
return
|
|
110
|
+
return ie * 2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l));
|
|
111
111
|
}
|
|
112
|
-
function
|
|
112
|
+
function xe(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, i) => a +
|
|
115
|
+
return e.reduce((a, i) => a + xe(i), 0);
|
|
116
116
|
let r = 0;
|
|
117
117
|
for (let a = 0; a < e.length - 1; a++) {
|
|
118
118
|
const i = e[a], t = e[a + 1];
|
|
119
|
-
Array.isArray(i) && Array.isArray(t) && i.length >= 2 && t.length >= 2 && (r +=
|
|
119
|
+
Array.isArray(i) && Array.isArray(t) && i.length >= 2 && t.length >= 2 && (r += Ve([i[0], i[1]], [t[0], t[1]]));
|
|
120
120
|
}
|
|
121
121
|
return r;
|
|
122
122
|
}
|
|
123
|
-
function
|
|
123
|
+
function ee(e) {
|
|
124
124
|
if (!Array.isArray(e)) return 0;
|
|
125
125
|
const r = e.length;
|
|
126
126
|
if (r < 3) return 0;
|
|
@@ -128,35 +128,35 @@ function W(e) {
|
|
|
128
128
|
for (let t = 0; t < r; t++) {
|
|
129
129
|
const o = e[t], n = e[(t + 1) % r], s = e[(t + 2) % r];
|
|
130
130
|
if (!Array.isArray(o) || !Array.isArray(n) || !Array.isArray(s)) continue;
|
|
131
|
-
const l = (n[1] - o[1]) * (Math.PI / 180), c = (n[0] - o[0]) * (Math.PI / 180), d = (s[1] - n[1]) * (Math.PI / 180),
|
|
132
|
-
a += l *
|
|
131
|
+
const l = (n[1] - o[1]) * (Math.PI / 180), c = (n[0] - o[0]) * (Math.PI / 180), d = (s[1] - n[1]) * (Math.PI / 180), p = (s[0] - n[0]) * (Math.PI / 180);
|
|
132
|
+
a += l * p - c * d;
|
|
133
133
|
}
|
|
134
|
-
const i = Math.abs(a * (
|
|
134
|
+
const i = Math.abs(a * (ie * ie) / 2);
|
|
135
135
|
return isNaN(i) ? 0 : i;
|
|
136
136
|
}
|
|
137
|
-
function
|
|
137
|
+
function ye(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 ee(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((i, t) => i +
|
|
144
|
-
const r =
|
|
143
|
+
return e.reduce((i, t) => i + ye(t), 0);
|
|
144
|
+
const r = ee(e[0]);
|
|
145
145
|
let a = 0;
|
|
146
146
|
for (let i = 1; i < e.length; i++)
|
|
147
|
-
a +=
|
|
147
|
+
a += ee(e[i]);
|
|
148
148
|
return Math.max(0, r - a);
|
|
149
149
|
}
|
|
150
150
|
return 0;
|
|
151
151
|
}
|
|
152
|
-
function
|
|
152
|
+
function we(e) {
|
|
153
153
|
if (!e || e.length === 0) return "";
|
|
154
154
|
const r = e.filter(
|
|
155
155
|
(i) => i.type === "Polygon" || i.type === "MultiPolygon" || i.geometryType === "Polygon"
|
|
156
156
|
);
|
|
157
157
|
if (r.length > 0) {
|
|
158
158
|
const i = r.reduce(
|
|
159
|
-
(t, o) => t + (
|
|
159
|
+
(t, o) => t + (ye(o.coordinates) || 0),
|
|
160
160
|
0
|
|
161
161
|
);
|
|
162
162
|
return i >= 1e4 ? `${(i / 1e4).toLocaleString("pt-BR", {
|
|
@@ -169,7 +169,7 @@ function xe(e) {
|
|
|
169
169
|
);
|
|
170
170
|
if (a.length > 0) {
|
|
171
171
|
const i = a.reduce(
|
|
172
|
-
(t, o) => t + (
|
|
172
|
+
(t, o) => t + (xe(o.coordinates) || 0),
|
|
173
173
|
0
|
|
174
174
|
);
|
|
175
175
|
return i >= 1e3 ? `${(i / 1e3).toLocaleString("pt-BR", {
|
|
@@ -179,23 +179,23 @@ function xe(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 Ue = /^(#(?:[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 _(e, r = "#00E08A") {
|
|
187
187
|
if (!e || typeof e != "string") return r;
|
|
188
188
|
const a = e.trim();
|
|
189
|
-
return
|
|
189
|
+
return Ue.test(a) ? a : r;
|
|
190
190
|
}
|
|
191
|
-
function
|
|
191
|
+
function ae(e) {
|
|
192
192
|
return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
|
|
193
193
|
}
|
|
194
|
-
function
|
|
194
|
+
function Ye(e, r, a) {
|
|
195
195
|
const i = r / 100, t = a / 100, o = (l) => (l + e / 30) % 12, n = i * Math.min(t, 1 - t), s = (l) => t - n * Math.max(-1, Math.min(o(l) - 3, Math.min(9 - o(l), 1)));
|
|
196
196
|
return [s(0) * 255, s(8) * 255, s(4) * 255];
|
|
197
197
|
}
|
|
198
|
-
function
|
|
198
|
+
function _e(e, r = "#000000") {
|
|
199
199
|
if (!e || typeof e != "string") return r;
|
|
200
200
|
const a = e.trim().toLowerCase(), i = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
|
|
201
201
|
if (i) {
|
|
@@ -206,8 +206,8 @@ function Ge(e, r = "#000000") {
|
|
|
206
206
|
if (t) {
|
|
207
207
|
const o = t[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
|
|
208
208
|
if (o.length >= 3 && o.slice(0, 3).every((n) => !isNaN(n))) {
|
|
209
|
-
const [n, s, l] = o, [c, d,
|
|
210
|
-
return `#${
|
|
209
|
+
const [n, s, l] = o, [c, d, p] = t[1] === "rgb" ? [n, s, l] : Ye(n, s, l);
|
|
210
|
+
return `#${ae(c)}${ae(d)}${ae(p)}`;
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
return r;
|
|
@@ -218,7 +218,7 @@ function P(e, r, a) {
|
|
|
218
218
|
if (i[t].getAttribute(r) === a) return i[t];
|
|
219
219
|
return null;
|
|
220
220
|
}
|
|
221
|
-
function
|
|
221
|
+
function Ee(e, r = 80) {
|
|
222
222
|
let a = null;
|
|
223
223
|
return (...i) => {
|
|
224
224
|
a && clearTimeout(a), a = setTimeout(() => {
|
|
@@ -226,10 +226,10 @@ function ye(e, r = 80) {
|
|
|
226
226
|
}, r);
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
|
-
function
|
|
229
|
+
function D(e, r) {
|
|
230
230
|
e.setAttribute("title", r), e.setAttribute("aria-label", r);
|
|
231
231
|
}
|
|
232
|
-
const
|
|
232
|
+
const Ae = [
|
|
233
233
|
{
|
|
234
234
|
id: "none",
|
|
235
235
|
nome: "Sem Mapa",
|
|
@@ -272,26 +272,36 @@ const we = [
|
|
|
272
272
|
thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
|
|
273
273
|
}
|
|
274
274
|
];
|
|
275
|
-
function
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
275
|
+
function ke(e, r) {
|
|
276
|
+
const a = Array.isArray(e) ? e.find((i) => i.id === r) : void 0;
|
|
277
|
+
return a && typeof a.nome == "string" ? a.nome : "";
|
|
278
|
+
}
|
|
279
|
+
function Ke(e = Ae, r = "satelite", a = !1) {
|
|
280
|
+
if (!e || e.length === 0) return "";
|
|
281
|
+
const i = e.map((t) => {
|
|
282
|
+
const o = r === t.id, n = S(t.id), s = S(t.nome), l = S(t.descricao || t.nome);
|
|
283
|
+
let c = "";
|
|
284
|
+
return t.thumbnailUrl ? c = `<img class="ui-basemap-preview" src="${S(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : c = `<div class="ui-basemap-preview-none">${v.gradeCad}</div>`, `
|
|
285
|
+
<div class="ui-basemap-card ${o ? "active" : ""}" data-basemap-id="${n}" role="button" tabindex="0" aria-pressed="${o}" title="${l}">
|
|
286
|
+
${c}
|
|
287
|
+
<span>${s}</span>
|
|
287
288
|
</div>
|
|
288
289
|
`;
|
|
289
|
-
}).join("")
|
|
290
|
-
|
|
290
|
+
}).join("");
|
|
291
|
+
return `
|
|
292
|
+
<div class="ui-basemap-section ${a ? "recolhido" : ""}">
|
|
293
|
+
<button type="button" class="ui-basemap-toggle" data-basemap-toggle="alternar" aria-expanded="${!a}" aria-controls="ui-basemap-grid" title="${a ? "Mostrar mapas base" : "Recolher mapas base"}">
|
|
294
|
+
<span class="ui-basemap-title">Mapa Base</span>
|
|
295
|
+
<span class="ui-basemap-atual" data-basemap-atual>${S(ke(e, r))}</span>
|
|
296
|
+
<span class="ui-chevron-icon ${a ? "" : "open"}">${v.chevronDir}</span>
|
|
297
|
+
</button>
|
|
298
|
+
${a ? "" : `<div class="ui-basemap-grid" id="ui-basemap-grid">
|
|
299
|
+
${i}
|
|
300
|
+
</div>`}
|
|
291
301
|
</div>
|
|
292
302
|
`;
|
|
293
303
|
}
|
|
294
|
-
function
|
|
304
|
+
function Xe(e) {
|
|
295
305
|
const r = /* @__PURE__ */ new Map();
|
|
296
306
|
e.forEach((o) => r.set(o.id, o));
|
|
297
307
|
const a = /* @__PURE__ */ new Map(), i = [];
|
|
@@ -299,29 +309,29 @@ function Ye(e) {
|
|
|
299
309
|
o.parentId && r.has(o.parentId) ? (a.has(o.parentId) || a.set(o.parentId, []), a.get(o.parentId).push(o)) : i.push(o);
|
|
300
310
|
});
|
|
301
311
|
const t = (o, n) => {
|
|
302
|
-
const s = a.get(o.id) || (Array.isArray(o.children) ? o.children : []), l = n > 0 ? " ".repeat(n) + "↳ " : s.length > 0 || o.isGroup ? "📁 " : "", c = `<option value="${
|
|
312
|
+
const s = a.get(o.id) || (Array.isArray(o.children) ? o.children : []), l = n > 0 ? " ".repeat(n) + "↳ " : s.length > 0 || o.isGroup ? "📁 " : "", c = `<option value="${S(o.id)}">${l}${S(o.name)}</option>`, d = s.map((p) => t(p, n + 1)).join("");
|
|
303
313
|
return c + d;
|
|
304
314
|
};
|
|
305
315
|
return i.map((o) => t(o, 0)).join("");
|
|
306
316
|
}
|
|
307
|
-
function
|
|
308
|
-
const i = r.filter((c) => a.has(c.id)), t = i.length > 0, o =
|
|
317
|
+
function Qe(e, r, a) {
|
|
318
|
+
const i = r.filter((c) => a.has(c.id)), t = i.length > 0, o = we(i), n = t ? i.length : e.length, s = t ? i.length > 1 ? "selecionados" : "selecionado" : e.length > 1 ? "camadas" : "camada", l = Xe(e);
|
|
309
319
|
return `
|
|
310
320
|
<div class="ui-tree-footer ${t ? "tem-selecao" : "sem-selecao"}">
|
|
311
321
|
<div class="ui-footer-left">
|
|
312
322
|
<span class="ui-footer-count" id="footer-count">${n}</span>
|
|
313
323
|
<span class="ui-footer-label" id="footer-label">${s}</span>
|
|
314
|
-
<span class="ui-footer-metric" id="footer-metric" style="display: ${o ? "inline-flex" : "none"};">${o ? `${
|
|
324
|
+
<span class="ui-footer-metric" id="footer-metric" style="display: ${o ? "inline-flex" : "none"};">${o ? `${v.reguaMetrica} ${o}` : ""}</span>
|
|
315
325
|
</div>
|
|
316
326
|
|
|
317
327
|
<!-- Ações de topo/gerais quando não há nada selecionado -->
|
|
318
328
|
<div class="ui-footer-actions-gerais" style="display: ${t ? "none" : "flex"};">
|
|
319
329
|
<button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
|
|
320
|
-
${
|
|
330
|
+
${v.moverPasta}
|
|
321
331
|
<span>+ Grupo</span>
|
|
322
332
|
</button>
|
|
323
333
|
<button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
|
|
324
|
-
${
|
|
334
|
+
${v.mais}
|
|
325
335
|
<span>+ Camada</span>
|
|
326
336
|
</button>
|
|
327
337
|
</div>
|
|
@@ -329,11 +339,11 @@ function _e(e, r, a) {
|
|
|
329
339
|
<!-- Ações em massa ativadas quando há seleção -->
|
|
330
340
|
<div class="ui-footer-right ui-footer-bulk-actions" style="display: ${t ? "flex" : "none"};">
|
|
331
341
|
<button class="ui-footer-btn ${t ? "" : "disabled"}" id="btn-footer-vis" title="Alternar visibilidade coletiva" aria-label="Alternar visibilidade coletiva" ${t ? "" : "disabled"}>
|
|
332
|
-
${
|
|
342
|
+
${v.olhoAberto}
|
|
333
343
|
</button>
|
|
334
344
|
|
|
335
345
|
<button class="ui-footer-btn ${t ? "" : "disabled"}" id="btn-footer-lock" title="Alternar bloqueio coletivo" aria-label="Alternar bloqueio coletivo" ${t ? "" : "disabled"}>
|
|
336
|
-
${
|
|
346
|
+
${v.cadeadoTrancado}
|
|
337
347
|
</button>
|
|
338
348
|
|
|
339
349
|
<div class="ui-footer-color-wrapper ${t ? "" : "disabled"}" title="Alterar cor dos selecionados">
|
|
@@ -349,54 +359,54 @@ function _e(e, r, a) {
|
|
|
349
359
|
</div>
|
|
350
360
|
|
|
351
361
|
<button class="ui-footer-btn btn-danger-footer ${t ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${t ? "" : "disabled"}>
|
|
352
|
-
${
|
|
362
|
+
${v.lixeira}
|
|
353
363
|
</button>
|
|
354
364
|
|
|
355
|
-
${t ? `<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${
|
|
365
|
+
${t ? `<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${v.fechar}</button>` : ""}
|
|
356
366
|
</div>
|
|
357
367
|
</div>
|
|
358
368
|
`;
|
|
359
369
|
}
|
|
360
|
-
const
|
|
361
|
-
function
|
|
370
|
+
const re = 64;
|
|
371
|
+
function ve(e) {
|
|
362
372
|
return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
|
|
363
373
|
}
|
|
364
|
-
function
|
|
365
|
-
return !Array.isArray(e) || e.length === 0 ? [] :
|
|
374
|
+
function Ie(e) {
|
|
375
|
+
return !Array.isArray(e) || e.length === 0 ? [] : ve(e[0]) ? [e.filter(ve)] : e.flatMap(Ie);
|
|
366
376
|
}
|
|
367
|
-
function
|
|
368
|
-
if (e.length <=
|
|
369
|
-
const r = e.length /
|
|
370
|
-
for (let i = 0; i <
|
|
377
|
+
function be(e) {
|
|
378
|
+
if (e.length <= re) return e;
|
|
379
|
+
const r = e.length / re, a = [];
|
|
380
|
+
for (let i = 0; i < re; i++) a.push(e[Math.floor(i * r)]);
|
|
371
381
|
return a.push(e[e.length - 1]), a;
|
|
372
382
|
}
|
|
373
|
-
function
|
|
374
|
-
const i =
|
|
383
|
+
function Je(e, r, a) {
|
|
384
|
+
const i = Ie(r).filter((h) => h.length > 0);
|
|
375
385
|
if (i.length === 0) return "";
|
|
376
386
|
let t = 1 / 0, o = -1 / 0, n = 1 / 0, s = -1 / 0;
|
|
377
|
-
for (const
|
|
378
|
-
for (const [w, $] of
|
|
387
|
+
for (const h of i)
|
|
388
|
+
for (const [w, $] of h)
|
|
379
389
|
$ < t && (t = $), $ > o && (o = $), -w < n && (n = -w), -w > s && (s = -w);
|
|
380
|
-
const l = 16, c = 2, d = l - c * 2,
|
|
381
|
-
if (
|
|
382
|
-
const
|
|
383
|
-
return
|
|
384
|
-
`<path d="${
|
|
390
|
+
const l = 16, c = 2, d = l - c * 2, p = o - t, f = s - n, m = Math.max(p, f), u = m > 0 ? d / m : 0, g = c + (d - p * u) / 2, k = c + (d - f * u) / 2, x = (h) => Math.round(h * 100) / 100, y = ([h, w]) => `${x(g + (w - t) * u)},${x(k + (-h - n) * u)}`, C = e === "polygon" || e === "multipolygon", L = e === "linestring" || e === "multilinestring", b = (h) => `<svg viewBox="0 0 ${l} ${l}" width="100%" height="100%" aria-hidden="true">${h}</svg>`;
|
|
391
|
+
if (C) {
|
|
392
|
+
const h = i.filter((w) => w.length >= 3).map((w) => `M${be(w).map(y).join("L")}Z`).join("");
|
|
393
|
+
return h ? b(
|
|
394
|
+
`<path d="${h}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
|
|
385
395
|
) : "";
|
|
386
396
|
}
|
|
387
|
-
if (
|
|
388
|
-
const
|
|
389
|
-
return
|
|
390
|
-
`<path d="${
|
|
397
|
+
if (L) {
|
|
398
|
+
const h = i.filter((w) => w.length >= 2).map((w) => `M${be(w).map(y).join("L")}`).join("");
|
|
399
|
+
return h ? b(
|
|
400
|
+
`<path d="${h}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
|
|
391
401
|
) : "";
|
|
392
402
|
}
|
|
393
403
|
return "";
|
|
394
404
|
}
|
|
395
|
-
function
|
|
396
|
-
const i =
|
|
405
|
+
function We(e, r, a) {
|
|
406
|
+
const i = _(r, "#00E08A"), t = (e || "").toLowerCase(), o = a !== void 0 ? Je(t, a, i) : "";
|
|
397
407
|
return o || (t === "polygon" || t === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${i}" fill-opacity="0.45" stroke="${i}" stroke-width="1.5"/></svg>` : t === "linestring" || t === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${i}" stroke-width="2"/></svg>` : t === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${i}" text-anchor="middle" font-family="sans-serif">T</text></svg>` : `<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${i}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
|
|
398
408
|
}
|
|
399
|
-
function
|
|
409
|
+
function Ze(e) {
|
|
400
410
|
const r = /* @__PURE__ */ new Map();
|
|
401
411
|
e.forEach((o) => r.set(o.id, o));
|
|
402
412
|
const a = /* @__PURE__ */ new Map(), i = [];
|
|
@@ -413,48 +423,89 @@ function Xe(e) {
|
|
|
413
423
|
}
|
|
414
424
|
return i.map((o) => t(o, 0));
|
|
415
425
|
}
|
|
416
|
-
const
|
|
417
|
-
function
|
|
426
|
+
const Le = 80;
|
|
427
|
+
function K(e, r) {
|
|
418
428
|
const a = (r || "").trim().toLowerCase();
|
|
419
429
|
return a ? e.filter(
|
|
420
430
|
(i) => (i.name || "").toLowerCase().includes(a) || (i.category || "").toLowerCase().includes(a) || (i.type || "").toLowerCase().includes(a)
|
|
421
431
|
) : e;
|
|
422
432
|
}
|
|
423
|
-
function
|
|
424
|
-
|
|
433
|
+
function Ce(e, r, a) {
|
|
434
|
+
var f, m;
|
|
435
|
+
const i = (a || "").trim().toLowerCase();
|
|
436
|
+
if (!i) return null;
|
|
437
|
+
const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
|
|
438
|
+
for (const u of e)
|
|
439
|
+
t.set(u.id, u), u.parentId && u.parentId !== u.id && (o.has(u.parentId) || o.set(u.parentId, []), o.get(u.parentId).push(u.id));
|
|
440
|
+
const n = /* @__PURE__ */ new Map();
|
|
441
|
+
for (const u of r) {
|
|
442
|
+
const g = u.layerId || "";
|
|
443
|
+
n.has(g) || n.set(g, []), n.get(g).push(u);
|
|
444
|
+
}
|
|
445
|
+
const s = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set();
|
|
446
|
+
for (const u of e)
|
|
447
|
+
(typeof u.name == "string" ? u.name.toLowerCase() : "").includes(i) ? (s.add(u.id), l.add(u.id)) : K(n.get(u.id) || [], i).length > 0 && l.add(u.id);
|
|
448
|
+
const c = new Set(l);
|
|
449
|
+
for (const u of l) {
|
|
450
|
+
const g = /* @__PURE__ */ new Set([u]);
|
|
451
|
+
let k = (f = t.get(u)) == null ? void 0 : f.parentId;
|
|
452
|
+
for (; k && t.has(k) && !g.has(k); )
|
|
453
|
+
g.add(k), c.add(k), k = (m = t.get(k)) == null ? void 0 : m.parentId;
|
|
454
|
+
}
|
|
455
|
+
const d = [...s];
|
|
456
|
+
for (; d.length > 0; ) {
|
|
457
|
+
const u = d.pop();
|
|
458
|
+
for (const g of o.get(u) || [])
|
|
459
|
+
c.has(g) || (c.add(g), d.push(g));
|
|
460
|
+
}
|
|
461
|
+
const p = /* @__PURE__ */ new Map();
|
|
462
|
+
for (const u of c) {
|
|
463
|
+
const g = n.get(u) || [];
|
|
464
|
+
p.set(u, s.has(u) ? g : K(g, i));
|
|
465
|
+
}
|
|
466
|
+
return { camadasVisiveis: c, feicoesPorCamada: p };
|
|
467
|
+
}
|
|
468
|
+
function ea(e, r, a, i = "", t = Le) {
|
|
469
|
+
const o = Ce(e, r, i), n = [], s = /* @__PURE__ */ new Map();
|
|
425
470
|
for (let l = 0; l < r.length; l++) {
|
|
426
471
|
const c = r[l], d = c.layerId || "";
|
|
427
472
|
s.has(d) || s.set(d, []), s.get(d).push(c);
|
|
428
473
|
}
|
|
429
474
|
for (let l = 0; l < e.length; l++) {
|
|
430
475
|
const c = e[l];
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
}
|
|
476
|
+
let d;
|
|
477
|
+
if (o) {
|
|
478
|
+
if (!o.camadasVisiveis.has(c.id)) continue;
|
|
479
|
+
d = o.feicoesPorCamada.get(c.id) || [];
|
|
480
|
+
} else if (a.has(c.id))
|
|
481
|
+
d = s.get(c.id) || [];
|
|
482
|
+
else
|
|
483
|
+
continue;
|
|
484
|
+
const p = d.slice(0, t);
|
|
485
|
+
for (let f = 0; f < p.length; f++)
|
|
486
|
+
n.push(p[f].id);
|
|
436
487
|
}
|
|
437
488
|
return n;
|
|
438
489
|
}
|
|
439
|
-
function
|
|
490
|
+
function aa(e, r, a, i, t, o) {
|
|
440
491
|
if (!e.includes(i)) return null;
|
|
441
492
|
const n = new Set(r);
|
|
442
493
|
let s = a;
|
|
443
494
|
if (o && a && e.includes(a)) {
|
|
444
|
-
const l = e.indexOf(a), c = e.indexOf(i), d = Math.min(l, c),
|
|
495
|
+
const l = e.indexOf(a), c = e.indexOf(i), d = Math.min(l, c), p = Math.max(l, c);
|
|
445
496
|
t || n.clear();
|
|
446
|
-
for (let
|
|
447
|
-
n.add(e[
|
|
497
|
+
for (let f = d; f <= p; f++)
|
|
498
|
+
n.add(e[f]);
|
|
448
499
|
} else t ? (n.has(i) ? n.delete(i) : n.add(i), s = i) : (n.clear(), n.add(i), s = i);
|
|
449
500
|
return { selecionados: n, ultimoClicadoId: s };
|
|
450
501
|
}
|
|
451
|
-
function
|
|
502
|
+
function le(e, r) {
|
|
452
503
|
if (e.size === 0) return;
|
|
453
504
|
const a = new Set(r.map((i) => i.id));
|
|
454
505
|
for (const i of e)
|
|
455
506
|
a.has(i) || e.delete(i);
|
|
456
507
|
}
|
|
457
|
-
function
|
|
508
|
+
function ra(e) {
|
|
458
509
|
const {
|
|
459
510
|
camadas: r,
|
|
460
511
|
feicoes: a,
|
|
@@ -465,87 +516,89 @@ function We(e) {
|
|
|
465
516
|
editingLayerId: s,
|
|
466
517
|
editingFeatureId: l,
|
|
467
518
|
searchQuery: c,
|
|
468
|
-
limiteFeicoesPorCamada: d =
|
|
469
|
-
mostrarBotaoColapsar:
|
|
470
|
-
} = e,
|
|
471
|
-
for (let
|
|
472
|
-
const
|
|
473
|
-
|
|
474
|
-
}
|
|
475
|
-
const
|
|
519
|
+
limiteFeicoesPorCamada: d = Le,
|
|
520
|
+
mostrarBotaoColapsar: p = !1
|
|
521
|
+
} = e, f = (c || "").trim().toLowerCase(), m = Ce(r, a, f), u = /* @__PURE__ */ new Map();
|
|
522
|
+
for (let b = 0; b < a.length; b++) {
|
|
523
|
+
const h = a[b], w = h.layerId || "";
|
|
524
|
+
u.has(w) || u.set(w, []), u.get(w).push(h);
|
|
525
|
+
}
|
|
526
|
+
const g = r.every((b) => b.visible !== !1), k = r.length > 0 && r.every((b) => t.has(b.id)), x = `
|
|
476
527
|
<div class="ui-tree-toolbar">
|
|
477
528
|
<div class="ui-tree-title-group">
|
|
478
529
|
<span class="ui-tree-section-title">CAMADAS</span>
|
|
479
530
|
<span class="ui-tree-count-badge">${r.length}</span>
|
|
480
531
|
</div>
|
|
481
532
|
<div class="ui-tree-actions">
|
|
482
|
-
<button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${
|
|
483
|
-
${
|
|
533
|
+
<button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${g ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${g ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
|
|
534
|
+
${g ? v.olhoAberto : v.olhoFechado}
|
|
484
535
|
</button>
|
|
485
|
-
<button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${
|
|
486
|
-
<span class="ui-chevron-icon ${
|
|
536
|
+
<button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${k ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${k ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
|
|
537
|
+
<span class="ui-chevron-icon ${k ? "open" : ""}">${v.chevronDir}</span>
|
|
487
538
|
</button>
|
|
488
539
|
<button id="btn-add-group" class="ui-tree-btn-group" title="Criar grupo / pasta de camadas" aria-label="Criar grupo de camadas">
|
|
489
|
-
${
|
|
540
|
+
${v.moverPasta} Grupo
|
|
490
541
|
</button>
|
|
491
542
|
<button id="btn-add-layer" class="ui-tree-btn-new" title="Adicionar nova camada vetorial">
|
|
492
|
-
${
|
|
543
|
+
${v.mais} Camada
|
|
493
544
|
</button>
|
|
494
|
-
${
|
|
545
|
+
${p ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${v.recolherPainel}</button>` : ""}
|
|
495
546
|
</div>
|
|
496
547
|
</div>
|
|
497
548
|
|
|
498
549
|
<div class="ui-tree-search-wrapper">
|
|
499
|
-
<span class="ui-tree-search-icon">${
|
|
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="${
|
|
550
|
+
<span class="ui-tree-search-icon">${v.busca}</span>
|
|
551
|
+
<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
552
|
c
|
|
502
553
|
)}" />
|
|
503
|
-
${c ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${
|
|
554
|
+
${c ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${v.fechar}</button>` : ""}
|
|
504
555
|
</div>
|
|
505
|
-
`,
|
|
506
|
-
const
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
556
|
+
`, y = (b) => {
|
|
557
|
+
const h = b.camada;
|
|
558
|
+
if (m && !m.camadasVisiveis.has(h.id)) return "";
|
|
559
|
+
const w = b.depth, $ = b.subcamadas, O = m ? $.filter((I) => m.camadasVisiveis.has(I.camada.id)) : $, B = !!(h.isGroup || $.length > 0), A = S(h.id), T = S(h.name || (B ? "Novo Grupo" : "Camada")), F = _(h.color, "#00E08A"), G = h.visible !== !1, j = h.locked === !0, V = f ? !0 : t.has(h.id), X = n === h.id, ce = i === h.id, z = m ? m.feicoesPorCamada.get(h.id) || [] : u.get(h.id) || [], de = z.length > 0 && z.every((I) => o.has(I.id)), ze = !de && z.some((I) => o.has(I.id)), Fe = z.slice(0, d), Be = z.length > d, qe = Fe.map((I) => {
|
|
560
|
+
const q = S(I.id), pe = S(I.name || "Feição"), fe = _(I.color, F), U = I.visible !== !1, Q = j, J = I.locked === !0 || Q, me = Q ? "Bloqueada pela camada" : J ? "Desbloquear Feição" : "Bloquear Feição", W = o.has(I.id), ge = I.status;
|
|
561
|
+
let Z = "";
|
|
562
|
+
return ge === "oficial" ? Z = '<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>' : ge === "previa" && (Z = '<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'), `
|
|
563
|
+
<div class="ui-feat-row ${W ? "selected-row" : ""} ${U ? "" : "hidden-row"}" data-feat-row="${q}" data-feat-select="${q}" data-feat-layer="${A}" role="treeitem" aria-selected="${W}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
|
|
564
|
+
<div class="ui-col ui-col-eye" data-feat-eye="${q}" role="button" tabindex="0" aria-label="${U ? "Ocultar Feição" : "Exibir Feição"}" title="${U ? "Ocultar Feição" : "Exibir Feição"}">
|
|
565
|
+
${U ? v.olhoAberto : v.olhoFechado}
|
|
513
566
|
</div>
|
|
514
567
|
|
|
515
|
-
<div class="ui-col ui-col-lock ${
|
|
516
|
-
${
|
|
568
|
+
<div class="ui-col ui-col-lock ${J ? "" : "ui-lock-open"}" data-feat-lock="${q}" ${Q ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${me}" title="${me}">
|
|
569
|
+
${J ? v.cadeadoTrancado : v.cadeadoAberto}
|
|
517
570
|
</div>
|
|
518
571
|
|
|
519
|
-
<div class="ui-col ui-col-colorbar" style="background: ${
|
|
572
|
+
<div class="ui-col ui-col-colorbar" style="background: ${fe};"></div>
|
|
520
573
|
<div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
|
|
521
574
|
<div class="ui-col ui-col-thumb">
|
|
522
|
-
<div class="ui-thumb-box">${
|
|
575
|
+
<div class="ui-thumb-box">${We(I.type || I.geometryType, fe, I.coordinates)}</div>
|
|
523
576
|
</div>
|
|
524
577
|
|
|
525
|
-
<div class="ui-col ui-col-name" data-feat-name-trigger="${
|
|
526
|
-
${l === I.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${
|
|
578
|
+
<div class="ui-col ui-col-name" data-feat-name-trigger="${q}" title="Duplo clique para renomear">
|
|
579
|
+
${l === I.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${q}" value="${pe}" />` : `<span class="ui-name-text">${pe}</span>${Z}`}
|
|
527
580
|
</div>
|
|
528
581
|
|
|
529
582
|
<div class="ui-col ui-col-actions">
|
|
530
|
-
<button class="ui-micro-btn" data-feat-fit="${
|
|
583
|
+
<button class="ui-micro-btn" data-feat-fit="${q}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${v.alvoEnquadrar}</button>
|
|
531
584
|
</div>
|
|
532
585
|
|
|
533
|
-
<div class="ui-col ui-col-target" data-feat-target="${
|
|
534
|
-
<div class="ui-target-circle ${
|
|
586
|
+
<div class="ui-col ui-col-target" data-feat-target="${q}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
|
|
587
|
+
<div class="ui-target-circle ${W ? "selected" : ""}"></div>
|
|
535
588
|
</div>
|
|
536
589
|
</div>
|
|
537
590
|
`;
|
|
538
|
-
}).join(""),
|
|
539
|
-
(I) => `<option value="${
|
|
540
|
-
).join(""),
|
|
541
|
-
<div class="ui-layer-settings-drawer" id="settings-drawer-${
|
|
591
|
+
}).join(""), De = Be ? `<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 ${d} de ${z.length} feições. Use a busca acima para filtrar.</div>` : "", ue = h.opacity !== void 0 ? h.opacity : 1, Pe = Math.round(ue * 100), Te = r.filter((I) => I.id !== h.id).map(
|
|
592
|
+
(I) => `<option value="${S(I.id)}" ${h.parentId === I.id ? "selected" : ""}>${I.isGroup ? "📁 " : ""}${S(I.name)}</option>`
|
|
593
|
+
).join(""), Re = X ? `
|
|
594
|
+
<div class="ui-layer-settings-drawer" id="settings-drawer-${A}" style="--drawer-cor-camada: ${F};">
|
|
542
595
|
<div class="ui-drawer-header">
|
|
543
596
|
<div class="ui-drawer-header-left">
|
|
544
|
-
<span class="ui-drawer-icon">${
|
|
597
|
+
<span class="ui-drawer-icon">${v.engrenagem}</span>
|
|
545
598
|
<span class="ui-drawer-title">Configurações da Camada</span>
|
|
546
599
|
</div>
|
|
547
|
-
<button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${
|
|
548
|
-
${
|
|
600
|
+
<button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${A}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
|
|
601
|
+
${v.fechar}
|
|
549
602
|
</button>
|
|
550
603
|
</div>
|
|
551
604
|
|
|
@@ -557,9 +610,9 @@ function We(e) {
|
|
|
557
610
|
</div>
|
|
558
611
|
<div class="ui-drawer-color-group">
|
|
559
612
|
<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="${
|
|
613
|
+
<span class="ui-drawer-color-sample" id="sample-color-${A}" style="background-color: ${F};"></span>
|
|
614
|
+
<span class="ui-drawer-color-hex" id="hex-color-${A}">${F.toUpperCase()}</span>
|
|
615
|
+
<input type="color" aria-label="Cor da camada" data-layer-color-picker="${A}" value="${_e(F, "#00e08a")}" class="ui-drawer-color-native" />
|
|
563
616
|
</label>
|
|
564
617
|
</div>
|
|
565
618
|
</div>
|
|
@@ -568,10 +621,10 @@ function We(e) {
|
|
|
568
621
|
<div class="ui-drawer-row">
|
|
569
622
|
<div class="ui-drawer-row-label">
|
|
570
623
|
<span>Opacidade</span>
|
|
571
|
-
<span class="ui-drawer-badge" id="badge-op-${
|
|
624
|
+
<span class="ui-drawer-badge" id="badge-op-${A}">${Pe}%</span>
|
|
572
625
|
</div>
|
|
573
626
|
<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(
|
|
627
|
+
<input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(ue) || 0}" data-layer-opacity-slider="${A}" class="ui-drawer-slider" />
|
|
575
628
|
</div>
|
|
576
629
|
</div>
|
|
577
630
|
|
|
@@ -581,9 +634,9 @@ function We(e) {
|
|
|
581
634
|
<span>Pertence ao Grupo</span>
|
|
582
635
|
</div>
|
|
583
636
|
<div class="ui-drawer-select-wrapper">
|
|
584
|
-
<select class="ui-drawer-select" data-layer-parent-select="${
|
|
585
|
-
<option value="" ${
|
|
586
|
-
${
|
|
637
|
+
<select class="ui-drawer-select" data-layer-parent-select="${A}" aria-label="Grupo pai da camada">
|
|
638
|
+
<option value="" ${h.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
|
|
639
|
+
${Te}
|
|
587
640
|
</select>
|
|
588
641
|
</div>
|
|
589
642
|
</div>
|
|
@@ -591,70 +644,70 @@ function We(e) {
|
|
|
591
644
|
|
|
592
645
|
<div class="ui-drawer-footer">
|
|
593
646
|
<div class="ui-drawer-meta-info">
|
|
594
|
-
<span>${
|
|
647
|
+
<span>${$.length > 0 ? `${$.length} subcamadas · ` : ""}${z.length} ${z.length === 1 ? "feição" : "feições"}</span>
|
|
595
648
|
</div>
|
|
596
649
|
<div class="ui-drawer-actions">
|
|
597
|
-
<button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${
|
|
598
|
-
${
|
|
650
|
+
<button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${A}" title="Adicionar nova camada dentro desta">
|
|
651
|
+
${v.mais} Subcamada
|
|
599
652
|
</button>
|
|
600
|
-
<button type="button" class="ui-drawer-btn-danger" data-delete-layer="${
|
|
601
|
-
${
|
|
653
|
+
<button type="button" class="ui-drawer-btn-danger" data-delete-layer="${A}" title="Excluir esta camada e suas feições">
|
|
654
|
+
${v.lixeira}
|
|
602
655
|
<span class="ui-btn-label">Excluir</span>
|
|
603
656
|
</button>
|
|
604
657
|
</div>
|
|
605
658
|
</div>
|
|
606
659
|
</div>
|
|
607
|
-
` : "",
|
|
660
|
+
` : "", Oe = O.map((I) => y(I)).join("");
|
|
608
661
|
return `
|
|
609
|
-
<div class="ui-layer-group ${
|
|
610
|
-
<div class="ui-layer-row ${
|
|
611
|
-
<div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${
|
|
662
|
+
<div class="ui-layer-group ${w > 0 ? "is-sublayer-group" : ""}" data-layer-id="${A}" data-layer-depth="${w}" role="treeitem" aria-expanded="${V}">
|
|
663
|
+
<div class="ui-layer-row ${G ? "" : "hidden-layer"} ${ce ? "active-drawing-layer" : ""} ${w > 0 ? "is-sublayer" : ""} ${B ? "is-group-row" : ""}" data-layer-row="${A}" data-layer-id="${A}" tabindex="-1" draggable="true" style="--layer-depth: ${w}; --layer-active-color: ${F};">
|
|
664
|
+
<div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${v.dragHandle}</div>
|
|
612
665
|
|
|
613
|
-
<div class="ui-col ui-col-eye" data-layer-eye="${
|
|
614
|
-
${
|
|
666
|
+
<div class="ui-col ui-col-eye" data-layer-eye="${A}" role="button" tabindex="0" aria-label="${G ? "Ocultar Camada" : "Exibir Camada"}" title="${G ? "Ocultar Camada" : "Exibir Camada"}">
|
|
667
|
+
${G ? v.olhoAberto : v.olhoFechado}
|
|
615
668
|
</div>
|
|
616
669
|
|
|
617
|
-
<div class="ui-col ui-col-lock ${
|
|
618
|
-
${
|
|
670
|
+
<div class="ui-col ui-col-lock ${j ? "" : "ui-lock-open"}" data-layer-lock="${A}" role="button" tabindex="0" aria-label="${j ? "Desbloquear Camada" : "Bloquear Camada"}" title="${j ? "Desbloquear Camada" : "Bloquear Camada"}">
|
|
671
|
+
${j ? v.cadeadoTrancado : v.cadeadoAberto}
|
|
619
672
|
</div>
|
|
620
673
|
|
|
621
|
-
<div class="ui-col ui-col-colorbar" style="background: ${
|
|
674
|
+
<div class="ui-col ui-col-colorbar" style="background: ${F};"></div>
|
|
622
675
|
|
|
623
|
-
<div class="ui-col ui-col-chevron" data-layer-expand="${
|
|
624
|
-
<span class="ui-chevron-icon ${
|
|
676
|
+
<div class="ui-col ui-col-chevron" data-layer-expand="${A}" role="button" tabindex="0" aria-label="${V ? "Recolher grupo" : "Expandir grupo"}">
|
|
677
|
+
<span class="ui-chevron-icon ${V ? "open" : ""}">${v.chevronDir}</span>
|
|
625
678
|
</div>
|
|
626
679
|
|
|
627
|
-
<div class="ui-col ui-col-name" data-layer-name-trigger="${
|
|
628
|
-
${s ===
|
|
629
|
-
<span class="ui-name-text">${
|
|
630
|
-
${
|
|
631
|
-
${
|
|
632
|
-
${
|
|
680
|
+
<div class="ui-col ui-col-name" data-layer-name-trigger="${A}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
|
|
681
|
+
${s === h.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${A}" value="${T}" />` : `${B ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${v.moverPasta}</span>` : ""}
|
|
682
|
+
<span class="ui-name-text">${T}</span>
|
|
683
|
+
${ce ? '<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>' : ""}
|
|
684
|
+
${$.length > 0 ? `<span class="ui-group-badge" title="${$.length} subcamadas">${$.length} sub</span>` : ""}
|
|
685
|
+
${z.length > 0 || !B ? `<span class="ui-count-chip">${z.length}</span>` : ""}`}
|
|
633
686
|
</div>
|
|
634
687
|
|
|
635
688
|
<div class="ui-col ui-col-actions">
|
|
636
|
-
<button class="ui-micro-btn" data-layer-fit="${
|
|
637
|
-
<button class="ui-micro-btn ${
|
|
689
|
+
<button class="ui-micro-btn" data-layer-fit="${A}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${v.alvoEnquadrar}</button>
|
|
690
|
+
<button class="ui-micro-btn ${X ? "active" : ""}" data-layer-settings="${A}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${X}">${v.engrenagem}</button>
|
|
638
691
|
</div>
|
|
639
692
|
|
|
640
|
-
<div class="ui-col ui-col-target" data-layer-target="${
|
|
641
|
-
<div class="ui-target-circle ${
|
|
693
|
+
<div class="ui-col ui-col-target" data-layer-target="${A}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
|
|
694
|
+
<div class="ui-target-circle ${de ? "selected" : ze ? "partial" : ""}"></div>
|
|
642
695
|
</div>
|
|
643
696
|
</div>
|
|
644
697
|
|
|
645
|
-
${
|
|
698
|
+
${Re}
|
|
646
699
|
|
|
647
|
-
<div class="ui-children-container ${
|
|
700
|
+
<div class="ui-children-container ${w > 0 ? "is-subchildren" : ""}" role="group" style="display: ${V ? "block" : "none"};">
|
|
701
|
+
${Oe}
|
|
702
|
+
${qe}
|
|
648
703
|
${De}
|
|
649
|
-
${
|
|
650
|
-
${ze}
|
|
651
|
-
${w.length === 0 && F.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>` : ""}
|
|
704
|
+
${O.length === 0 && z.length === 0 ? `<div class="ui-empty-row"><span>${B ? "Grupo vazio (adicione subcamadas ou feições)" : "Nenhum elemento neste grupo"}</span></div>` : ""}
|
|
652
705
|
</div>
|
|
653
706
|
</div>
|
|
654
707
|
`;
|
|
655
|
-
},
|
|
708
|
+
}, C = Ze(r), L = m && m.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${S((c || "").trim())}”</div>` : C.map((b) => y(b)).join("");
|
|
656
709
|
return `
|
|
657
|
-
${
|
|
710
|
+
${x}
|
|
658
711
|
<div class="ui-panel-box">
|
|
659
712
|
<div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true">
|
|
660
713
|
${L}
|
|
@@ -662,7 +715,7 @@ function We(e) {
|
|
|
662
715
|
</div>
|
|
663
716
|
`;
|
|
664
717
|
}
|
|
665
|
-
function
|
|
718
|
+
function ta(e) {
|
|
666
719
|
return [
|
|
667
720
|
{
|
|
668
721
|
gatilho: "data-layer-name-trigger",
|
|
@@ -690,8 +743,8 @@ function Ze(e) {
|
|
|
690
743
|
}
|
|
691
744
|
];
|
|
692
745
|
}
|
|
693
|
-
function
|
|
694
|
-
for (const a of
|
|
746
|
+
function ia(e, r) {
|
|
747
|
+
for (const a of ta(e))
|
|
695
748
|
r.querySelectorAll(`[${a.gatilho}]`).forEach((i) => {
|
|
696
749
|
i.addEventListener("dblclick", (t) => {
|
|
697
750
|
t.stopPropagation();
|
|
@@ -706,8 +759,8 @@ function ea(e, r) {
|
|
|
706
759
|
var d;
|
|
707
760
|
if (!s) {
|
|
708
761
|
if (s = !0, a.marcarEditando(null), c) {
|
|
709
|
-
const
|
|
710
|
-
|
|
762
|
+
const p = a.aplicar(o, n.value.trim());
|
|
763
|
+
p && (p.salvar && ((d = e.salvarLembrancaEstado) == null || d.call(e)), a.emitir(p.detalhe));
|
|
711
764
|
}
|
|
712
765
|
e.solicitarRenderizacao();
|
|
713
766
|
}
|
|
@@ -718,7 +771,7 @@ function ea(e, r) {
|
|
|
718
771
|
});
|
|
719
772
|
});
|
|
720
773
|
}
|
|
721
|
-
function
|
|
774
|
+
function oa(e, r, a) {
|
|
722
775
|
const i = /* @__PURE__ */ new Set();
|
|
723
776
|
let t = e.find((o) => o.id === r);
|
|
724
777
|
for (; t && t.parentId; ) {
|
|
@@ -727,46 +780,46 @@ function aa(e, r, a) {
|
|
|
727
780
|
}
|
|
728
781
|
return !1;
|
|
729
782
|
}
|
|
730
|
-
function
|
|
783
|
+
function na(e) {
|
|
731
784
|
return Number.isFinite(e) ? e < 0.25 ? "acima" : e > 0.75 ? "abaixo" : "dentro" : "dentro";
|
|
732
785
|
}
|
|
733
|
-
function
|
|
786
|
+
function sa(e, r, a, i) {
|
|
734
787
|
if (!r || !a || r === a) return null;
|
|
735
788
|
const t = e.find((l) => l.id === r), o = e.find((l) => l.id === a);
|
|
736
789
|
if (!t || !o) return null;
|
|
737
790
|
if (i === "dentro")
|
|
738
|
-
return
|
|
791
|
+
return oa(e, o.id, t.id) ? null : (t.parentId = o.id, { tipo: "hierarquia", camada: t, novoParentId: o.id });
|
|
739
792
|
const n = e.findIndex((l) => l.id === r);
|
|
740
793
|
e.splice(n, 1);
|
|
741
794
|
const s = e.findIndex((l) => l.id === a);
|
|
742
795
|
return s === -1 ? e.push(t) : e.splice(i === "acima" ? s : s + 1, 0, t), t.parentId = o.parentId ?? null, { tipo: "ordem", camada: t };
|
|
743
796
|
}
|
|
744
|
-
function
|
|
797
|
+
function la(e, r, a, i) {
|
|
745
798
|
if (!r || !a || r === a) return !1;
|
|
746
799
|
const t = e.findIndex((s) => s.id === r);
|
|
747
800
|
if (t === -1) return !1;
|
|
748
801
|
const [o] = e.splice(t, 1), n = e.findIndex((s) => s.id === a);
|
|
749
802
|
return n === -1 ? e.push(o) : e.splice(i ? n : n + 1, 0, o), !0;
|
|
750
803
|
}
|
|
751
|
-
function
|
|
804
|
+
function ca(e, r, a, i) {
|
|
752
805
|
const t = e.find((s) => s.id === a), o = r.find((s) => s.id === i);
|
|
753
806
|
if (!t || !o || t.layerId === i) return null;
|
|
754
807
|
const n = t.layerId;
|
|
755
808
|
return t.layerId = i, { feicao: t, camadaOrigemId: n, camadaDestinoId: i, mudouDeCamada: !0 };
|
|
756
809
|
}
|
|
757
|
-
function
|
|
810
|
+
function da(e, r, a, i) {
|
|
758
811
|
if (!r || !a || r === a) return null;
|
|
759
|
-
const t = e.findIndex((
|
|
812
|
+
const t = e.findIndex((p) => p.id === r);
|
|
760
813
|
if (t === -1) return null;
|
|
761
|
-
const o = e.find((
|
|
814
|
+
const o = e.find((p) => p.id === a);
|
|
762
815
|
if (!o) return null;
|
|
763
816
|
const [n] = e.splice(t, 1), s = n.layerId, l = o.layerId, c = s !== l;
|
|
764
817
|
c && (n.layerId = l);
|
|
765
|
-
const d = e.findIndex((
|
|
818
|
+
const d = e.findIndex((p) => p.id === a);
|
|
766
819
|
return d === -1 ? e.push(n) : e.splice(i ? d : d + 1, 0, n), { feicao: n, camadaOrigemId: s, camadaDestinoId: l, mudouDeCamada: c };
|
|
767
820
|
}
|
|
768
|
-
const
|
|
769
|
-
class
|
|
821
|
+
const ua = ["dragging", "drop-above", "drop-below", "drop-into"];
|
|
822
|
+
class pa {
|
|
770
823
|
constructor(r, a) {
|
|
771
824
|
E(this, "host");
|
|
772
825
|
E(this, "shadow");
|
|
@@ -783,11 +836,11 @@ class la {
|
|
|
783
836
|
(r = this.cancelarToque) == null || r.call(this), this.cancelarToque = null;
|
|
784
837
|
}
|
|
785
838
|
bindInlineRename() {
|
|
786
|
-
|
|
839
|
+
ia(this.host, this.shadow);
|
|
787
840
|
}
|
|
788
841
|
limparClassesDeArraste() {
|
|
789
842
|
this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((r) => {
|
|
790
|
-
r.classList.remove(...
|
|
843
|
+
r.classList.remove(...ua);
|
|
791
844
|
});
|
|
792
845
|
}
|
|
793
846
|
/** Depois de qualquer mudança na ordem/hierarquia de camadas. */
|
|
@@ -821,7 +874,7 @@ class la {
|
|
|
821
874
|
const s = n;
|
|
822
875
|
if (s.preventDefault(), s.stopPropagation(), s.dataTransfer && (s.dataTransfer.dropEffect = "move"), r === "layer") {
|
|
823
876
|
if (a === o) return;
|
|
824
|
-
const l = t.getBoundingClientRect(), c =
|
|
877
|
+
const l = t.getBoundingClientRect(), c = na((s.clientY - l.top) / l.height);
|
|
825
878
|
t.classList.toggle("drop-above", c === "acima"), t.classList.toggle("drop-below", c === "abaixo"), t.classList.toggle("drop-into", c === "dentro");
|
|
826
879
|
} else r === "feature" && t.classList.add("drop-into");
|
|
827
880
|
}), t.addEventListener("dragleave", (n) => {
|
|
@@ -833,8 +886,8 @@ class la {
|
|
|
833
886
|
s.preventDefault(), s.stopPropagation();
|
|
834
887
|
const l = t.classList.contains("drop-into") ? "dentro" : t.classList.contains("drop-above") ? "acima" : "abaixo";
|
|
835
888
|
if (this.limparClassesDeArraste(), r === "layer") {
|
|
836
|
-
if (!a || a === o || !this.host.camadas.some((
|
|
837
|
-
const d =
|
|
889
|
+
if (!a || a === o || !this.host.camadas.some((p) => p.id === a) || !this.host.camadas.some((p) => p.id === o)) return;
|
|
890
|
+
const d = sa(this.host.camadas, a, o, l);
|
|
838
891
|
(d == null ? void 0 : d.tipo) === "hierarquia" && ((c = this.host.expandedLayers) == null || c.add(d.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
|
|
839
892
|
camadaId: d.camada.id,
|
|
840
893
|
novoParentId: d.novoParentId,
|
|
@@ -842,7 +895,7 @@ class la {
|
|
|
842
895
|
})), this.aposReordenarCamadas();
|
|
843
896
|
} else if (r === "feature") {
|
|
844
897
|
if (!i) return;
|
|
845
|
-
const d =
|
|
898
|
+
const d = ca(this.host.feicoes, this.host.camadas, i, o);
|
|
846
899
|
d && (this.emitirFeicaoMovida(d), this.host.solicitarRenderizacao());
|
|
847
900
|
}
|
|
848
901
|
}), t.addEventListener("dragend", () => {
|
|
@@ -872,7 +925,7 @@ class la {
|
|
|
872
925
|
l.preventDefault(), l.stopPropagation();
|
|
873
926
|
const c = t.classList.contains("drop-above");
|
|
874
927
|
this.limparClassesDeArraste();
|
|
875
|
-
const d =
|
|
928
|
+
const d = da(this.host.feicoes, i, o, c);
|
|
876
929
|
d && (d.mudouDeCamada && this.emitirFeicaoMovida(d), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
|
|
877
930
|
}), t.addEventListener("dragend", (s) => {
|
|
878
931
|
s.stopPropagation(), r = null, i = null, a = null, this.limparClassesDeArraste();
|
|
@@ -889,26 +942,26 @@ class la {
|
|
|
889
942
|
if (!a) return;
|
|
890
943
|
const i = a.getAttribute("data-layer-id");
|
|
891
944
|
i && r.addEventListener("pointerdown", (t) => {
|
|
892
|
-
var
|
|
945
|
+
var p;
|
|
893
946
|
const o = t;
|
|
894
947
|
if (o.pointerType === "mouse" && o.button !== 0 || this.host.editingLayerId || this.host.editingFeatureId) return;
|
|
895
|
-
(
|
|
948
|
+
(p = this.cancelarToque) == null || p.call(this);
|
|
896
949
|
let n = null, s = !1;
|
|
897
|
-
const l = (
|
|
898
|
-
|
|
899
|
-
const
|
|
900
|
-
if (n && n !==
|
|
901
|
-
n =
|
|
902
|
-
const g =
|
|
903
|
-
s =
|
|
950
|
+
const l = (f) => {
|
|
951
|
+
f.preventDefault(), a.classList.add("dragging");
|
|
952
|
+
const m = this.shadow.elementFromPoint(f.clientX, f.clientY), u = m ? m.closest(".ui-layer-row") : null;
|
|
953
|
+
if (n && n !== u && n.classList.remove("drop-above", "drop-below"), u && u !== a) {
|
|
954
|
+
n = u;
|
|
955
|
+
const g = u.getBoundingClientRect();
|
|
956
|
+
s = f.clientY - g.top < g.height / 2, u.classList.toggle("drop-above", s), u.classList.toggle("drop-below", !s);
|
|
904
957
|
} else
|
|
905
958
|
n = null;
|
|
906
959
|
}, c = () => {
|
|
907
960
|
window.removeEventListener("pointermove", l), window.removeEventListener("pointerup", d), window.removeEventListener("pointercancel", d), this.cancelarToque = null;
|
|
908
961
|
}, d = () => {
|
|
909
962
|
c();
|
|
910
|
-
const
|
|
911
|
-
this.limparClassesDeArraste(),
|
|
963
|
+
const f = n == null ? void 0 : n.getAttribute("data-layer-id");
|
|
964
|
+
this.limparClassesDeArraste(), f && la(this.host.camadas, i, f, s) && this.aposReordenarCamadas();
|
|
912
965
|
};
|
|
913
966
|
this.cancelarToque = () => {
|
|
914
967
|
c(), this.limparClassesDeArraste();
|
|
@@ -917,12 +970,12 @@ class la {
|
|
|
917
970
|
});
|
|
918
971
|
}
|
|
919
972
|
}
|
|
920
|
-
const
|
|
921
|
-
function
|
|
973
|
+
const fa = "ui_camadas_estado_";
|
|
974
|
+
function ma(e, r) {
|
|
922
975
|
const a = (e || r || "default").trim();
|
|
923
|
-
return `${
|
|
976
|
+
return `${fa}${a}`;
|
|
924
977
|
}
|
|
925
|
-
function
|
|
978
|
+
function oe(e) {
|
|
926
979
|
if (typeof window > "u" || typeof localStorage > "u")
|
|
927
980
|
return null;
|
|
928
981
|
try {
|
|
@@ -936,7 +989,7 @@ function te(e) {
|
|
|
936
989
|
}
|
|
937
990
|
return null;
|
|
938
991
|
}
|
|
939
|
-
function
|
|
992
|
+
function ga(e, r) {
|
|
940
993
|
if (!(typeof window > "u" || typeof localStorage > "u"))
|
|
941
994
|
try {
|
|
942
995
|
localStorage.setItem(e, JSON.stringify(r));
|
|
@@ -944,14 +997,14 @@ function ua(e, r) {
|
|
|
944
997
|
console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
|
|
945
998
|
}
|
|
946
999
|
}
|
|
947
|
-
function
|
|
1000
|
+
function va(e) {
|
|
948
1001
|
if (!(typeof window > "u" || typeof localStorage > "u"))
|
|
949
1002
|
try {
|
|
950
1003
|
localStorage.removeItem(e);
|
|
951
1004
|
} catch {
|
|
952
1005
|
}
|
|
953
1006
|
}
|
|
954
|
-
function
|
|
1007
|
+
function $e(e) {
|
|
955
1008
|
return {
|
|
956
1009
|
name: e.name,
|
|
957
1010
|
visible: e.visible !== !1,
|
|
@@ -961,48 +1014,48 @@ function ke(e) {
|
|
|
961
1014
|
parentId: e.parentId !== void 0 ? e.parentId : null
|
|
962
1015
|
};
|
|
963
1016
|
}
|
|
964
|
-
function
|
|
1017
|
+
function ba(e, r, a, i) {
|
|
965
1018
|
if (!Array.isArray(e)) return;
|
|
966
1019
|
const t = (r == null ? void 0 : r.camadasOverrides) || {}, o = new Set((r == null ? void 0 : r.expandedLayerIds) || []), n = new Set((r == null ? void 0 : r.collapsedLayerIds) || []), s = o.size > 0 || n.size > 0;
|
|
967
|
-
for (let
|
|
968
|
-
const
|
|
969
|
-
if (i == null || i.set(
|
|
970
|
-
const
|
|
971
|
-
var
|
|
972
|
-
const
|
|
973
|
-
return
|
|
1020
|
+
for (let p = 0; p < e.length; p++) {
|
|
1021
|
+
const f = e[p], m = t[f.id];
|
|
1022
|
+
if (i == null || i.set(f.id, $e(f)), m) {
|
|
1023
|
+
const u = m.origem, g = (k) => {
|
|
1024
|
+
var y;
|
|
1025
|
+
const x = (y = i == null ? void 0 : i.get(f.id)) == null ? void 0 : y[k];
|
|
1026
|
+
return u !== void 0 && u[k] !== x;
|
|
974
1027
|
};
|
|
975
|
-
typeof
|
|
1028
|
+
typeof m.name == "string" && m.name.trim() && !g("name") && (f.name = m.name), typeof m.visible == "boolean" && !g("visible") && (f.visible = m.visible), typeof m.locked == "boolean" && !g("locked") && (f.locked = m.locked), typeof m.opacity == "number" && !g("opacity") && (f.opacity = m.opacity), typeof m.color == "string" && !g("color") && (f.color = m.color), m.parentId !== void 0 && !g("parentId") && (f.parentId = m.parentId);
|
|
976
1029
|
}
|
|
977
|
-
s ? o.has(
|
|
1030
|
+
s ? o.has(f.id) ? a.add(f.id) : n.has(f.id) ? a.delete(f.id) : a.add(f.id) : a.add(f.id);
|
|
978
1031
|
}
|
|
979
|
-
const l = new Set(e.map((
|
|
1032
|
+
const l = new Set(e.map((p) => p.id)), c = r == null ? void 0 : r.ordemOrigemIds;
|
|
980
1033
|
if (!(Array.isArray(c) && (() => {
|
|
981
|
-
const
|
|
982
|
-
return
|
|
1034
|
+
const p = new Set(c), f = (m) => m.filter((u) => l.has(u) && p.has(u)).join("|");
|
|
1035
|
+
return f(c) !== f(e.map((m) => m.id));
|
|
983
1036
|
})()) && Array.isArray(r == null ? void 0 : r.ordemCamadasIds) && r.ordemCamadasIds.length > 0) {
|
|
984
|
-
const
|
|
985
|
-
r.ordemCamadasIds.forEach((
|
|
986
|
-
const
|
|
987
|
-
return
|
|
1037
|
+
const p = /* @__PURE__ */ new Map();
|
|
1038
|
+
r.ordemCamadasIds.forEach((f, m) => p.set(f, m)), e.sort((f, m) => {
|
|
1039
|
+
const u = p.has(f.id) ? p.get(f.id) : 9999, g = p.has(m.id) ? p.get(m.id) : 9999;
|
|
1040
|
+
return u - g;
|
|
988
1041
|
});
|
|
989
1042
|
}
|
|
990
1043
|
}
|
|
991
|
-
function
|
|
1044
|
+
function ha(e) {
|
|
992
1045
|
const { estadoAnterior: r, camadas: a, expandedLayers: i } = e;
|
|
993
1046
|
let t = (r == null ? void 0 : r.expandedLayerIds) || [], o = (r == null ? void 0 : r.collapsedLayerIds) || [], n = (r == null ? void 0 : r.ordemCamadasIds) || [], s = r == null ? void 0 : r.ordemOrigemIds;
|
|
994
1047
|
const l = {
|
|
995
1048
|
...(r == null ? void 0 : r.camadasOverrides) || {}
|
|
996
1049
|
};
|
|
997
1050
|
a.length > 0 && (t = [], o = [], n = a.map((c) => c.id), s = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((c) => {
|
|
998
|
-
var d,
|
|
1051
|
+
var d, p;
|
|
999
1052
|
i.has(c.id) ? t.push(c.id) : o.push(c.id), l[c.id] = {
|
|
1000
1053
|
name: c.name,
|
|
1001
1054
|
visible: c.visible !== !1,
|
|
1002
1055
|
locked: !!c.locked,
|
|
1003
1056
|
opacity: typeof c.opacity == "number" ? c.opacity : 1,
|
|
1004
1057
|
color: c.color || "#00E08A",
|
|
1005
|
-
origem: ((d = e.origensCamadas) == null ? void 0 : d.get(c.id)) ?? ((
|
|
1058
|
+
origem: ((d = e.origensCamadas) == null ? void 0 : d.get(c.id)) ?? ((p = l[c.id]) == null ? void 0 : p.origem)
|
|
1006
1059
|
};
|
|
1007
1060
|
}));
|
|
1008
1061
|
for (const c of e.camadasRemovidas ?? []) delete l[c];
|
|
@@ -1021,8 +1074,8 @@ function ma(e) {
|
|
|
1021
1074
|
ultimaAtualizacao: Date.now()
|
|
1022
1075
|
};
|
|
1023
1076
|
}
|
|
1024
|
-
const ga = ':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}';
|
|
1025
|
-
function
|
|
1077
|
+
const xa = ':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--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-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';
|
|
1078
|
+
function ya(e, r) {
|
|
1026
1079
|
r.querySelectorAll("[data-layer-row]").forEach((t) => {
|
|
1027
1080
|
t.addEventListener("click", (o) => {
|
|
1028
1081
|
if (o.target.closest(
|
|
@@ -1052,9 +1105,9 @@ function va(e, r) {
|
|
|
1052
1105
|
if (s) {
|
|
1053
1106
|
s.visible = s.visible === !1;
|
|
1054
1107
|
const l = s.visible !== !1;
|
|
1055
|
-
t.innerHTML = l ?
|
|
1108
|
+
t.innerHTML = l ? v.olhoAberto : v.olhoFechado, D(t, l ? "Ocultar Camada" : "Exibir Camada");
|
|
1056
1109
|
const c = t.closest(".ui-layer-row");
|
|
1057
|
-
c && c.classList.toggle("hidden-layer", !l),
|
|
1110
|
+
c && c.classList.toggle("hidden-layer", !l), wa(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
|
|
1058
1111
|
camadaId: s.id,
|
|
1059
1112
|
visivel: l
|
|
1060
1113
|
});
|
|
@@ -1064,7 +1117,7 @@ function va(e, r) {
|
|
|
1064
1117
|
t.addEventListener("click", (o) => {
|
|
1065
1118
|
o.stopPropagation();
|
|
1066
1119
|
const n = t.getAttribute("data-layer-lock"), s = e.camadas.find((l) => l.id === n);
|
|
1067
|
-
s && (s.locked = !s.locked, t.innerHTML = s.locked ?
|
|
1120
|
+
s && (s.locked = !s.locked, t.innerHTML = s.locked ? v.cadeadoTrancado : v.cadeadoAberto, t.classList.toggle("ui-lock-open", !s.locked), D(t, s.locked ? "Desbloquear Camada" : "Bloquear Camada"), Ea(e, r, s.id, s.locked === !0), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
|
|
1068
1121
|
camadaId: s.id,
|
|
1069
1122
|
bloqueado: s.locked
|
|
1070
1123
|
}));
|
|
@@ -1087,21 +1140,21 @@ function va(e, r) {
|
|
|
1087
1140
|
});
|
|
1088
1141
|
});
|
|
1089
1142
|
const a = (t, o, n) => {
|
|
1090
|
-
const s = e.camadas.find((
|
|
1143
|
+
const s = e.camadas.find((m) => m.id === t);
|
|
1091
1144
|
if (!s) return;
|
|
1092
|
-
const l =
|
|
1145
|
+
const l = _(o, s.color || "#00E08A");
|
|
1093
1146
|
s.color = l;
|
|
1094
1147
|
const c = r.getElementById(`sample-color-${t}`);
|
|
1095
1148
|
c && (c.style.backgroundColor = l);
|
|
1096
1149
|
const d = r.getElementById(`hex-color-${t}`);
|
|
1097
1150
|
d && (d.textContent = l.toUpperCase());
|
|
1098
|
-
const
|
|
1099
|
-
|
|
1100
|
-
const
|
|
1101
|
-
if (
|
|
1102
|
-
|
|
1103
|
-
const
|
|
1104
|
-
|
|
1151
|
+
const p = r.getElementById(`settings-drawer-${t}`);
|
|
1152
|
+
p && p.style.setProperty("--drawer-cor-camada", l);
|
|
1153
|
+
const f = P(r, "data-layer-row", t);
|
|
1154
|
+
if (f) {
|
|
1155
|
+
f.style.setProperty("--layer-active-color", l);
|
|
1156
|
+
const m = f.querySelector(".ui-col-colorbar");
|
|
1157
|
+
m && (m.style.backgroundColor = l);
|
|
1105
1158
|
}
|
|
1106
1159
|
n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: s.id, cor: l });
|
|
1107
1160
|
};
|
|
@@ -1168,7 +1221,7 @@ function va(e, r) {
|
|
|
1168
1221
|
}), r.querySelectorAll("[data-layer-target]").forEach((t) => {
|
|
1169
1222
|
t.addEventListener("click", (o) => {
|
|
1170
1223
|
o.stopPropagation();
|
|
1171
|
-
const n = o, s = t.getAttribute("data-layer-target"), l =
|
|
1224
|
+
const n = o, s = t.getAttribute("data-layer-target"), l = K(
|
|
1172
1225
|
e.feicoes.filter((d) => d.layerId === s),
|
|
1173
1226
|
e.searchQuery
|
|
1174
1227
|
);
|
|
@@ -1177,84 +1230,84 @@ function va(e, r) {
|
|
|
1177
1230
|
});
|
|
1178
1231
|
});
|
|
1179
1232
|
}
|
|
1180
|
-
function
|
|
1233
|
+
function wa(e, r) {
|
|
1181
1234
|
const a = r.getElementById("btn-toggle-all-vis");
|
|
1182
1235
|
if (!a) return;
|
|
1183
1236
|
const i = e.camadas.every((t) => t.visible !== !1);
|
|
1184
|
-
a.innerHTML = i ?
|
|
1237
|
+
a.innerHTML = i ? v.olhoAberto : v.olhoFechado, D(a, i ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
|
|
1185
1238
|
}
|
|
1186
|
-
function
|
|
1239
|
+
function Ea(e, r, a, i) {
|
|
1187
1240
|
e.feicoes.filter((t) => t.layerId === a).forEach((t) => {
|
|
1188
1241
|
const o = P(r, "data-feat-lock", t.id);
|
|
1189
1242
|
if (!o) return;
|
|
1190
1243
|
const n = t.locked === !0 || i;
|
|
1191
|
-
o.innerHTML = n ?
|
|
1244
|
+
o.innerHTML = n ? v.cadeadoTrancado : v.cadeadoAberto, o.classList.toggle("ui-lock-open", !n), i ? o.setAttribute("data-locked-by-layer", "true") : o.removeAttribute("data-locked-by-layer"), D(
|
|
1192
1245
|
o,
|
|
1193
1246
|
i ? "Bloqueada pela camada" : n ? "Desbloquear Feição" : "Bloquear Feição"
|
|
1194
1247
|
);
|
|
1195
1248
|
});
|
|
1196
1249
|
}
|
|
1197
|
-
function
|
|
1250
|
+
function Aa(e, r) {
|
|
1198
1251
|
const a = r.getElementById("btn-footer-vis");
|
|
1199
1252
|
a && a.addEventListener("click", () => {
|
|
1200
|
-
const
|
|
1201
|
-
if (
|
|
1202
|
-
const
|
|
1203
|
-
|
|
1253
|
+
const p = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id));
|
|
1254
|
+
if (p.length === 0) return;
|
|
1255
|
+
const m = !p.some((u) => u.visible !== !1);
|
|
1256
|
+
p.forEach((u) => u.visible = m), e.dispararEvento("ui-acao-massa", {
|
|
1204
1257
|
acao: "visibilidade",
|
|
1205
|
-
feicoesIds:
|
|
1206
|
-
feicoes:
|
|
1207
|
-
valor:
|
|
1258
|
+
feicoesIds: p.map((u) => u.id),
|
|
1259
|
+
feicoes: p,
|
|
1260
|
+
valor: m
|
|
1208
1261
|
}), e.solicitarRenderizacao();
|
|
1209
1262
|
});
|
|
1210
1263
|
const i = r.getElementById("btn-footer-lock");
|
|
1211
1264
|
i && i.addEventListener("click", () => {
|
|
1212
|
-
const
|
|
1213
|
-
if (
|
|
1214
|
-
const
|
|
1215
|
-
|
|
1265
|
+
const p = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id));
|
|
1266
|
+
if (p.length === 0) return;
|
|
1267
|
+
const m = !p.some((u) => u.locked === !0);
|
|
1268
|
+
p.forEach((u) => u.locked = m), e.dispararEvento("ui-acao-massa", {
|
|
1216
1269
|
acao: "bloqueio",
|
|
1217
|
-
feicoesIds:
|
|
1218
|
-
feicoes:
|
|
1219
|
-
valor:
|
|
1270
|
+
feicoesIds: p.map((u) => u.id),
|
|
1271
|
+
feicoes: p,
|
|
1272
|
+
valor: m
|
|
1220
1273
|
}), e.solicitarRenderizacao();
|
|
1221
1274
|
});
|
|
1222
1275
|
const t = r.getElementById("input-footer-color"), o = r.getElementById("preview-footer-color");
|
|
1223
|
-
t && (t.addEventListener("input", (
|
|
1224
|
-
const
|
|
1225
|
-
o && (o.style.backgroundColor =
|
|
1226
|
-
}), t.addEventListener("change", (
|
|
1227
|
-
const
|
|
1228
|
-
o && (o.style.backgroundColor =
|
|
1229
|
-
const
|
|
1230
|
-
|
|
1231
|
-
|
|
1276
|
+
t && (t.addEventListener("input", (p) => {
|
|
1277
|
+
const f = p.target.value;
|
|
1278
|
+
o && (o.style.backgroundColor = f);
|
|
1279
|
+
}), t.addEventListener("change", (p) => {
|
|
1280
|
+
const f = p.target.value;
|
|
1281
|
+
o && (o.style.backgroundColor = f);
|
|
1282
|
+
const m = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id));
|
|
1283
|
+
m.length !== 0 && (m.forEach((u) => {
|
|
1284
|
+
u.color = f, u.style = { ...u.style || {}, fillColor: f, strokeColor: f };
|
|
1232
1285
|
}), e.dispararEvento("ui-acao-massa", {
|
|
1233
1286
|
acao: "cor",
|
|
1234
|
-
feicoesIds:
|
|
1235
|
-
feicoes:
|
|
1236
|
-
valor:
|
|
1287
|
+
feicoesIds: m.map((u) => u.id),
|
|
1288
|
+
feicoes: m,
|
|
1289
|
+
valor: f
|
|
1237
1290
|
}), e.solicitarRenderizacao());
|
|
1238
1291
|
}));
|
|
1239
1292
|
const n = r.getElementById("select-footer-move");
|
|
1240
|
-
n && n.addEventListener("change", (
|
|
1241
|
-
const
|
|
1242
|
-
if (!
|
|
1243
|
-
const
|
|
1244
|
-
if (
|
|
1245
|
-
const
|
|
1246
|
-
|
|
1247
|
-
|
|
1293
|
+
n && n.addEventListener("change", (p) => {
|
|
1294
|
+
const f = p.target.value;
|
|
1295
|
+
if (!f) return;
|
|
1296
|
+
const m = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
|
|
1297
|
+
if (m.length === 0) return;
|
|
1298
|
+
const u = new Map(m.map((g) => [g.id, g.layerId]));
|
|
1299
|
+
m.forEach((g) => g.layerId = f), m.forEach((g) => {
|
|
1300
|
+
u.get(g.id) !== f && e.dispararEvento("ui-feicao-movida", {
|
|
1248
1301
|
feicaoId: g.id,
|
|
1249
|
-
camadaOrigemId:
|
|
1250
|
-
camadaDestinoId:
|
|
1302
|
+
camadaOrigemId: u.get(g.id),
|
|
1303
|
+
camadaDestinoId: f,
|
|
1251
1304
|
feicao: g
|
|
1252
1305
|
});
|
|
1253
1306
|
}), e.dispararEvento("ui-acao-massa", {
|
|
1254
1307
|
acao: "mover",
|
|
1255
|
-
feicoesIds:
|
|
1256
|
-
feicoes:
|
|
1257
|
-
valor:
|
|
1308
|
+
feicoesIds: m.map((g) => g.id),
|
|
1309
|
+
feicoes: m,
|
|
1310
|
+
valor: f
|
|
1258
1311
|
}), e.solicitarRenderizacao();
|
|
1259
1312
|
});
|
|
1260
1313
|
const s = r.getElementById("btn-footer-new-layer");
|
|
@@ -1267,46 +1320,46 @@ function xa(e, r) {
|
|
|
1267
1320
|
});
|
|
1268
1321
|
const c = r.getElementById("btn-footer-del");
|
|
1269
1322
|
if (c) {
|
|
1270
|
-
let
|
|
1271
|
-
const
|
|
1323
|
+
let p = null;
|
|
1324
|
+
const f = "Excluir selecionados";
|
|
1272
1325
|
c.addEventListener("click", () => {
|
|
1273
|
-
const
|
|
1274
|
-
if (
|
|
1326
|
+
const m = Array.from(e.selectedFeatureIds);
|
|
1327
|
+
if (m.length === 0) return;
|
|
1275
1328
|
if (!c.classList.contains("confirming")) {
|
|
1276
|
-
c.classList.add("confirming"),
|
|
1277
|
-
c.classList.remove("confirming"),
|
|
1329
|
+
c.classList.add("confirming"), D(c, `Clique novamente para excluir ${m.length} selecionado(s)`), p = setTimeout(() => {
|
|
1330
|
+
c.classList.remove("confirming"), D(c, f);
|
|
1278
1331
|
}, 3500);
|
|
1279
1332
|
return;
|
|
1280
1333
|
}
|
|
1281
|
-
|
|
1282
|
-
const
|
|
1334
|
+
p && clearTimeout(p);
|
|
1335
|
+
const u = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
|
|
1283
1336
|
e.feicoes = e.feicoes.filter((g) => !e.selectedFeatureIds.has(g.id)), e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.dispararEvento("ui-acao-massa", {
|
|
1284
1337
|
acao: "excluir",
|
|
1285
|
-
feicoesIds:
|
|
1286
|
-
feicoes:
|
|
1338
|
+
feicoesIds: m,
|
|
1339
|
+
feicoes: u
|
|
1287
1340
|
}), e.notificarMudancaSelecao(), e.solicitarRenderizacao();
|
|
1288
1341
|
});
|
|
1289
1342
|
}
|
|
1290
1343
|
const d = r.getElementById("btn-footer-clear");
|
|
1291
1344
|
d && d.addEventListener("click", () => e.limparSelecao(!0));
|
|
1292
1345
|
}
|
|
1293
|
-
const
|
|
1346
|
+
const ka = [
|
|
1294
1347
|
{ tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
|
|
1295
1348
|
{ tipo: "olho", atributo: "data-feat-eye", entidade: "feicao" },
|
|
1296
1349
|
{ tipo: "cadeado", atributo: "data-layer-lock", entidade: "camada" },
|
|
1297
1350
|
{ tipo: "cadeado", atributo: "data-feat-lock", entidade: "feicao" },
|
|
1298
1351
|
{ tipo: "selecao", atributo: "data-layer-target", entidade: "camada" },
|
|
1299
1352
|
{ tipo: "selecao", atributo: "data-feat-target", entidade: "feicao" }
|
|
1300
|
-
],
|
|
1353
|
+
], ne = {
|
|
1301
1354
|
olho: "[data-layer-eye], [data-feat-eye]",
|
|
1302
1355
|
cadeado: "[data-layer-lock], [data-feat-lock]",
|
|
1303
1356
|
selecao: "[data-layer-target], [data-feat-target]"
|
|
1304
|
-
},
|
|
1305
|
-
function
|
|
1306
|
-
return
|
|
1357
|
+
}, Ia = 3;
|
|
1358
|
+
function La(e) {
|
|
1359
|
+
return ka.find((r) => e.hasAttribute(r.atributo)) ?? null;
|
|
1307
1360
|
}
|
|
1308
|
-
function
|
|
1309
|
-
const a =
|
|
1361
|
+
function te(e, r) {
|
|
1362
|
+
const a = La(r);
|
|
1310
1363
|
if (!a) return null;
|
|
1311
1364
|
const i = r.getAttribute(a.atributo);
|
|
1312
1365
|
if (!i) return null;
|
|
@@ -1320,13 +1373,13 @@ function ae(e, r) {
|
|
|
1320
1373
|
return o ? o.locked === !0 : null;
|
|
1321
1374
|
}
|
|
1322
1375
|
if (a.entidade === "feicao") return e.selectedFeatureIds.has(i);
|
|
1323
|
-
const t =
|
|
1376
|
+
const t = K(
|
|
1324
1377
|
e.feicoes.filter((o) => o.layerId === i),
|
|
1325
1378
|
e.searchQuery
|
|
1326
1379
|
);
|
|
1327
1380
|
return t.length === 0 ? null : t.every((o) => e.selectedFeatureIds.has(o.id));
|
|
1328
1381
|
}
|
|
1329
|
-
function
|
|
1382
|
+
function he(e, r, a = !1) {
|
|
1330
1383
|
e.dispatchEvent(
|
|
1331
1384
|
new MouseEvent("click", {
|
|
1332
1385
|
bubbles: !0,
|
|
@@ -1336,54 +1389,54 @@ function ve(e, r, a = !1) {
|
|
|
1336
1389
|
})
|
|
1337
1390
|
);
|
|
1338
1391
|
}
|
|
1339
|
-
let
|
|
1340
|
-
function
|
|
1341
|
-
(
|
|
1392
|
+
let M = null;
|
|
1393
|
+
function Ca(e) {
|
|
1394
|
+
(M == null ? void 0 : M.host) === e && M.cancelar();
|
|
1342
1395
|
}
|
|
1343
|
-
function
|
|
1344
|
-
Object.keys(
|
|
1345
|
-
r.querySelectorAll(
|
|
1346
|
-
i.addEventListener("pointerdown", (t) =>
|
|
1396
|
+
function $a(e, r) {
|
|
1397
|
+
Object.keys(ne).forEach((a) => {
|
|
1398
|
+
r.querySelectorAll(ne[a]).forEach((i) => {
|
|
1399
|
+
i.addEventListener("pointerdown", (t) => Sa(e, r, a, i, t));
|
|
1347
1400
|
});
|
|
1348
1401
|
});
|
|
1349
1402
|
}
|
|
1350
|
-
function
|
|
1351
|
-
if (t.pointerType === "mouse" && t.button !== 0 || e.editingLayerId || e.editingFeatureId ||
|
|
1352
|
-
|
|
1353
|
-
const o =
|
|
1403
|
+
function Sa(e, r, a, i, t) {
|
|
1404
|
+
if (t.pointerType === "mouse" && t.button !== 0 || e.editingLayerId || e.editingFeatureId || te(e, i) === null) return;
|
|
1405
|
+
M == null || M.cancelar();
|
|
1406
|
+
const o = ne[a], n = t.ctrlKey || t.metaKey, s = t.shiftKey;
|
|
1354
1407
|
let l = !1, c = !1, d = t.clientY;
|
|
1355
|
-
const
|
|
1356
|
-
|
|
1357
|
-
},
|
|
1358
|
-
|
|
1359
|
-
},
|
|
1360
|
-
|
|
1361
|
-
},
|
|
1362
|
-
l = !0,
|
|
1363
|
-
},
|
|
1364
|
-
var
|
|
1408
|
+
const p = /* @__PURE__ */ new Set([i]), f = (b) => {
|
|
1409
|
+
b.preventDefault(), b.stopImmediatePropagation();
|
|
1410
|
+
}, m = (b) => {
|
|
1411
|
+
b.stopPropagation(), b.preventDefault();
|
|
1412
|
+
}, u = (b) => b.preventDefault(), g = (b) => {
|
|
1413
|
+
p.has(b) || (p.add(b), te(e, b) !== c && he(b, a === "selecao"));
|
|
1414
|
+
}, k = () => {
|
|
1415
|
+
l = !0, he(i, n, s), c = te(e, i) === !0, r.addEventListener("selectstart", u), document.body.style.userSelect = "none";
|
|
1416
|
+
}, x = (b) => {
|
|
1417
|
+
var O, B;
|
|
1365
1418
|
if (!l) {
|
|
1366
|
-
if (Math.hypot(
|
|
1367
|
-
const
|
|
1368
|
-
if (!
|
|
1369
|
-
|
|
1419
|
+
if (Math.hypot(b.clientX - t.clientX, b.clientY - t.clientY) < Ia) return;
|
|
1420
|
+
const A = (O = r.elementFromPoint(b.clientX, b.clientY)) == null ? void 0 : O.closest(o);
|
|
1421
|
+
if (!A || A === i) return;
|
|
1422
|
+
k();
|
|
1370
1423
|
}
|
|
1371
|
-
|
|
1372
|
-
const
|
|
1373
|
-
r.querySelectorAll(o).forEach((
|
|
1374
|
-
const
|
|
1375
|
-
if (
|
|
1376
|
-
const
|
|
1377
|
-
|
|
1424
|
+
b.preventDefault();
|
|
1425
|
+
const h = Math.min(d, b.clientY), w = Math.max(d, b.clientY);
|
|
1426
|
+
r.querySelectorAll(o).forEach((A) => {
|
|
1427
|
+
const T = A.getBoundingClientRect();
|
|
1428
|
+
if (T.height === 0) return;
|
|
1429
|
+
const F = T.top + T.height / 2;
|
|
1430
|
+
F >= h && F <= w && g(A);
|
|
1378
1431
|
});
|
|
1379
|
-
const $ = (
|
|
1380
|
-
$ && g($), d =
|
|
1381
|
-
},
|
|
1382
|
-
(
|
|
1383
|
-
},
|
|
1384
|
-
|
|
1385
|
-
}
|
|
1386
|
-
function
|
|
1432
|
+
const $ = (B = r.elementFromPoint(b.clientX, b.clientY)) == null ? void 0 : B.closest(o);
|
|
1433
|
+
$ && g($), d = b.clientY;
|
|
1434
|
+
}, y = (b = !1) => {
|
|
1435
|
+
(M == null ? void 0 : M.cancelar) === L && (M = null), window.removeEventListener("pointermove", x), window.removeEventListener("pointerup", C), window.removeEventListener("pointercancel", C), window.removeEventListener("dragstart", f, !0), r.removeEventListener("selectstart", u), l && (document.body.style.userSelect = "", b || (window.addEventListener("click", m, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", m, !0), 0)));
|
|
1436
|
+
}, C = () => y(), L = () => y(!0);
|
|
1437
|
+
M = { host: e, cancelar: L }, window.addEventListener("dragstart", f, !0), window.addEventListener("pointermove", x, { passive: !1 }), window.addEventListener("pointerup", C), window.addEventListener("pointercancel", C);
|
|
1438
|
+
}
|
|
1439
|
+
function Ma(e, r) {
|
|
1387
1440
|
const a = r.getElementById("btn-toggle-all-vis");
|
|
1388
1441
|
a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
|
|
1389
1442
|
const i = r.getElementById("btn-toggle-all-expand");
|
|
@@ -1399,15 +1452,15 @@ function La(e, r) {
|
|
|
1399
1452
|
e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
|
|
1400
1453
|
});
|
|
1401
1454
|
const n = r.getElementById("btn-colapsar");
|
|
1402
|
-
n && n.addEventListener("click", () => e.colapsar(!0)),
|
|
1455
|
+
n && n.addEventListener("click", () => e.colapsar(!0)), za(e, r);
|
|
1403
1456
|
}
|
|
1404
|
-
function
|
|
1457
|
+
function za(e, r) {
|
|
1405
1458
|
const a = r.getElementById("input-layer-search"), i = r.getElementById("btn-clear-layer-search"), t = () => {
|
|
1406
1459
|
var o;
|
|
1407
1460
|
e.searchQuery = "", e.solicitarRenderizacao(), (o = r.getElementById("input-layer-search")) == null || o.focus();
|
|
1408
1461
|
};
|
|
1409
1462
|
if (a) {
|
|
1410
|
-
const o =
|
|
1463
|
+
const o = Ee(() => e.solicitarRenderizacao(), 75);
|
|
1411
1464
|
a.addEventListener("input", (n) => {
|
|
1412
1465
|
e.searchQuery = n.target.value, o();
|
|
1413
1466
|
}), a.addEventListener("keydown", (n) => {
|
|
@@ -1416,7 +1469,7 @@ function Ca(e, r) {
|
|
|
1416
1469
|
}
|
|
1417
1470
|
i && i.addEventListener("click", t);
|
|
1418
1471
|
}
|
|
1419
|
-
function
|
|
1472
|
+
function Fa(e, r) {
|
|
1420
1473
|
r.querySelectorAll("[data-feat-select]").forEach((a) => {
|
|
1421
1474
|
a.addEventListener("click", (i) => {
|
|
1422
1475
|
if (e.editingFeatureId) return;
|
|
@@ -1441,7 +1494,7 @@ function $a(e, r) {
|
|
|
1441
1494
|
if (o) {
|
|
1442
1495
|
o.visible = o.visible === !1;
|
|
1443
1496
|
const n = o.visible !== !1;
|
|
1444
|
-
a.innerHTML = n ?
|
|
1497
|
+
a.innerHTML = n ? v.olhoAberto : v.olhoFechado, D(a, n ? "Ocultar Feição" : "Exibir Feição");
|
|
1445
1498
|
const s = a.closest(".ui-feat-row");
|
|
1446
1499
|
s && s.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
|
|
1447
1500
|
feicaoId: o.id,
|
|
@@ -1453,7 +1506,7 @@ function $a(e, r) {
|
|
|
1453
1506
|
a.addEventListener("click", (i) => {
|
|
1454
1507
|
if (i.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
|
|
1455
1508
|
const t = a.getAttribute("data-feat-lock"), o = e.feicoes.find((n) => n.id === t);
|
|
1456
|
-
o && (o.locked = !o.locked, a.innerHTML = o.locked ?
|
|
1509
|
+
o && (o.locked = !o.locked, a.innerHTML = o.locked ? v.cadeadoTrancado : v.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), D(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
|
|
1457
1510
|
feicaoId: o.id,
|
|
1458
1511
|
bloqueado: o.locked
|
|
1459
1512
|
}));
|
|
@@ -1466,29 +1519,32 @@ function $a(e, r) {
|
|
|
1466
1519
|
});
|
|
1467
1520
|
});
|
|
1468
1521
|
}
|
|
1469
|
-
function
|
|
1470
|
-
|
|
1471
|
-
|
|
1522
|
+
function Ba(e, r) {
|
|
1523
|
+
var a;
|
|
1524
|
+
r.querySelectorAll("[data-basemap-thumb]").forEach((i) => {
|
|
1525
|
+
i.addEventListener(
|
|
1472
1526
|
"error",
|
|
1473
1527
|
() => {
|
|
1474
|
-
const
|
|
1475
|
-
|
|
1528
|
+
const t = document.createElement("div");
|
|
1529
|
+
t.className = "ui-basemap-preview-none", t.innerHTML = v.mapa, i.replaceWith(t);
|
|
1476
1530
|
},
|
|
1477
1531
|
{ once: !0 }
|
|
1478
1532
|
);
|
|
1479
|
-
}), r.
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1533
|
+
}), (a = r.querySelector("[data-basemap-toggle]")) == null || a.addEventListener("click", () => {
|
|
1534
|
+
e.alternarMapasBaseRecolhido(!0);
|
|
1535
|
+
}), r.querySelectorAll("[data-basemap-id]").forEach((i) => {
|
|
1536
|
+
i.addEventListener("click", () => {
|
|
1537
|
+
const t = i.getAttribute("data-basemap-id");
|
|
1538
|
+
t && e.selecionarMapaBase(t, !0);
|
|
1483
1539
|
});
|
|
1484
1540
|
});
|
|
1485
1541
|
}
|
|
1486
|
-
function
|
|
1487
|
-
|
|
1542
|
+
function qa(e, r) {
|
|
1543
|
+
Ma(e, r), ya(e, r), Fa(e, r), Ba(e, r), Aa(e, r), $a(e, r);
|
|
1488
1544
|
}
|
|
1489
|
-
function
|
|
1490
|
-
var g,
|
|
1491
|
-
const t =
|
|
1545
|
+
function Da(e, r, a, i) {
|
|
1546
|
+
var g, k;
|
|
1547
|
+
const t = ra({
|
|
1492
1548
|
camadas: e.camadas,
|
|
1493
1549
|
feicoes: e.feicoes,
|
|
1494
1550
|
camadaAtivaId: e.camadaAtivaId,
|
|
@@ -1499,37 +1555,37 @@ function za(e, r, a, i) {
|
|
|
1499
1555
|
editingFeatureId: e.editingFeatureId,
|
|
1500
1556
|
searchQuery: e.searchQuery,
|
|
1501
1557
|
mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false"
|
|
1502
|
-
}), o = e.mostrarMapasBase ?
|
|
1558
|
+
}), o = e.mostrarMapasBase ? Ke(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? Qe(e.camadas, e.feicoes, e.selectedFeatureIds) : "", s = r.getElementById("ui-layer-tree-mount"), l = a.scrollTop, c = s ? s.scrollTop : 0, d = r.activeElement, p = d && a.contains(d) ? d.id : "", f = d && !p && a.contains(d) ? Array.from(d.attributes).find((x) => x.name.startsWith("data-") && x.value !== "") : void 0, m = d && "selectionStart" in d ? d.selectionStart : null;
|
|
1503
1559
|
a.innerHTML = `
|
|
1504
1560
|
${t}
|
|
1505
1561
|
${n}
|
|
1506
1562
|
${o}
|
|
1507
1563
|
`, a.scrollTop = l;
|
|
1508
|
-
const
|
|
1509
|
-
if (
|
|
1510
|
-
const
|
|
1511
|
-
if (
|
|
1564
|
+
const u = r.getElementById("ui-layer-tree-mount");
|
|
1565
|
+
if (u && (u.scrollTop = c), p) {
|
|
1566
|
+
const x = r.getElementById(p);
|
|
1567
|
+
if (x && (x.focus({ preventScroll: !0 }), m !== null && typeof x.setSelectionRange == "function"))
|
|
1512
1568
|
try {
|
|
1513
|
-
|
|
1569
|
+
x.setSelectionRange(m, m);
|
|
1514
1570
|
} catch {
|
|
1515
1571
|
}
|
|
1516
1572
|
}
|
|
1517
|
-
!
|
|
1573
|
+
!p && f && ((g = P(a, f.name, f.value)) == null || g.focus({ preventScroll: !0 })), (k = r.querySelector("[data-layer-row], [data-feat-row]")) == null || k.setAttribute("tabindex", "0"), qa(e, r), i.bindAll();
|
|
1518
1574
|
}
|
|
1519
|
-
const
|
|
1520
|
-
function
|
|
1521
|
-
return e instanceof HTMLSelectElement || e instanceof HTMLTextAreaElement ? !0 : e instanceof HTMLInputElement && !
|
|
1575
|
+
const Pa = '[role="button"][tabindex]', H = "[data-layer-row], [data-feat-row]", Ta = ["color", "range", "checkbox", "radio", "button"];
|
|
1576
|
+
function Se(e) {
|
|
1577
|
+
return e instanceof HTMLSelectElement || e instanceof HTMLTextAreaElement ? !0 : e instanceof HTMLInputElement && !Ta.includes(e.type);
|
|
1522
1578
|
}
|
|
1523
|
-
function
|
|
1524
|
-
return Array.from(e.querySelectorAll(
|
|
1579
|
+
function Ra(e) {
|
|
1580
|
+
return Array.from(e.querySelectorAll(H)).filter((r) => {
|
|
1525
1581
|
const a = r.closest(".ui-children-container");
|
|
1526
1582
|
return !(a && a.style.display === "none") && !r.classList.contains("ui-search-hidden");
|
|
1527
1583
|
});
|
|
1528
1584
|
}
|
|
1529
|
-
function
|
|
1530
|
-
r && (e.querySelectorAll(
|
|
1585
|
+
function Y(e, r) {
|
|
1586
|
+
r && (e.querySelectorAll(H).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
|
|
1531
1587
|
}
|
|
1532
|
-
function
|
|
1588
|
+
function Oa(e, r) {
|
|
1533
1589
|
e.dispatchEvent(
|
|
1534
1590
|
new MouseEvent("click", {
|
|
1535
1591
|
bubbles: !0,
|
|
@@ -1538,9 +1594,9 @@ function Da(e, r) {
|
|
|
1538
1594
|
})
|
|
1539
1595
|
);
|
|
1540
1596
|
}
|
|
1541
|
-
function
|
|
1597
|
+
function ja(e, r, a) {
|
|
1542
1598
|
var i;
|
|
1543
|
-
if (!
|
|
1599
|
+
if (!Se(a.composedPath()[0])) {
|
|
1544
1600
|
if (e.activeSettingsLayerId) {
|
|
1545
1601
|
a.preventDefault();
|
|
1546
1602
|
const t = e.activeSettingsLayerId;
|
|
@@ -1550,28 +1606,28 @@ function Ta(e, r, a) {
|
|
|
1550
1606
|
e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
|
|
1551
1607
|
}
|
|
1552
1608
|
}
|
|
1553
|
-
function
|
|
1609
|
+
function Ha(e, r, a) {
|
|
1554
1610
|
var n;
|
|
1555
1611
|
const i = a.composedPath()[0];
|
|
1556
|
-
if (!(i instanceof HTMLElement) ||
|
|
1557
|
-
if ((a.key === "Enter" || a.key === " ") && i.matches(
|
|
1612
|
+
if (!(i instanceof HTMLElement) || Se(i)) return;
|
|
1613
|
+
if ((a.key === "Enter" || a.key === " ") && i.matches(Pa)) {
|
|
1558
1614
|
a.preventDefault(), i.click();
|
|
1559
1615
|
return;
|
|
1560
1616
|
}
|
|
1561
|
-
if (!i.matches(
|
|
1562
|
-
const t =
|
|
1617
|
+
if (!i.matches(H)) return;
|
|
1618
|
+
const t = Ra(e), o = t.indexOf(i);
|
|
1563
1619
|
switch (a.key) {
|
|
1564
1620
|
case "ArrowDown":
|
|
1565
|
-
a.preventDefault(),
|
|
1621
|
+
a.preventDefault(), Y(e, t[Math.min(t.length - 1, o + 1)]);
|
|
1566
1622
|
break;
|
|
1567
1623
|
case "ArrowUp":
|
|
1568
|
-
a.preventDefault(),
|
|
1624
|
+
a.preventDefault(), Y(e, t[Math.max(0, o - 1)]);
|
|
1569
1625
|
break;
|
|
1570
1626
|
case "Home":
|
|
1571
|
-
a.preventDefault(),
|
|
1627
|
+
a.preventDefault(), Y(e, t[0]);
|
|
1572
1628
|
break;
|
|
1573
1629
|
case "End":
|
|
1574
|
-
a.preventDefault(),
|
|
1630
|
+
a.preventDefault(), Y(e, t[t.length - 1]);
|
|
1575
1631
|
break;
|
|
1576
1632
|
case "ArrowRight":
|
|
1577
1633
|
case "ArrowLeft": {
|
|
@@ -1583,19 +1639,19 @@ function Pa(e, r, a) {
|
|
|
1583
1639
|
}
|
|
1584
1640
|
case "Enter":
|
|
1585
1641
|
case " ":
|
|
1586
|
-
a.preventDefault(),
|
|
1642
|
+
a.preventDefault(), Oa(i, a);
|
|
1587
1643
|
break;
|
|
1588
1644
|
}
|
|
1589
1645
|
}
|
|
1590
|
-
function
|
|
1646
|
+
function Na(e, r, a, i, t) {
|
|
1591
1647
|
t.add(r, "keydown", (o) => {
|
|
1592
|
-
o.key === "Escape" &&
|
|
1593
|
-
}), t.add(i, "keydown", (o) =>
|
|
1648
|
+
o.key === "Escape" && ja(e, a, o);
|
|
1649
|
+
}), t.add(i, "keydown", (o) => Ha(i, a, o)), t.add(i, "focusin", (o) => {
|
|
1594
1650
|
const n = o.composedPath()[0];
|
|
1595
|
-
n instanceof HTMLElement && n.matches(
|
|
1651
|
+
n instanceof HTMLElement && n.matches(H) && (i.querySelectorAll(H).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
|
|
1596
1652
|
});
|
|
1597
1653
|
}
|
|
1598
|
-
function
|
|
1654
|
+
function Ga(e, r) {
|
|
1599
1655
|
r.querySelectorAll("[data-layer-row]").forEach((i) => {
|
|
1600
1656
|
const o = i.getAttribute("data-layer-row") === e.camadaAtivaId;
|
|
1601
1657
|
i.classList.toggle("active-drawing-layer", o);
|
|
@@ -1610,46 +1666,46 @@ function Oa(e, r) {
|
|
|
1610
1666
|
}
|
|
1611
1667
|
});
|
|
1612
1668
|
}
|
|
1613
|
-
function
|
|
1614
|
-
r.querySelectorAll(".ui-feat-row").forEach((
|
|
1615
|
-
const
|
|
1616
|
-
|
|
1617
|
-
const
|
|
1618
|
-
|
|
1619
|
-
}), r.querySelectorAll(".ui-layer-group").forEach((
|
|
1620
|
-
const
|
|
1621
|
-
if (
|
|
1622
|
-
const
|
|
1623
|
-
|
|
1624
|
-
} else
|
|
1669
|
+
function Va(e, r) {
|
|
1670
|
+
r.querySelectorAll(".ui-feat-row").forEach((x) => {
|
|
1671
|
+
const y = x.getAttribute("data-feat-row"), C = y ? e.selectedFeatureIds.has(y) : !1;
|
|
1672
|
+
x.classList.toggle("selected-row", C), x.setAttribute("aria-selected", String(C));
|
|
1673
|
+
const L = x.querySelector(".ui-target-circle");
|
|
1674
|
+
L && L.classList.toggle("selected", C);
|
|
1675
|
+
}), r.querySelectorAll(".ui-layer-group").forEach((x) => {
|
|
1676
|
+
const y = x.getAttribute("data-layer-id"), C = e.feicoes.filter((b) => b.layerId === y), L = x.querySelector(".ui-layer-row .ui-target-circle");
|
|
1677
|
+
if (L && C.length > 0) {
|
|
1678
|
+
const b = C.every((w) => e.selectedFeatureIds.has(w.id)), h = !b && C.some((w) => e.selectedFeatureIds.has(w.id));
|
|
1679
|
+
L.classList.toggle("selected", b), L.classList.toggle("partial", h);
|
|
1680
|
+
} else L && L.classList.remove("selected", "partial");
|
|
1625
1681
|
});
|
|
1626
|
-
const a = e.feicoes.filter((
|
|
1682
|
+
const a = e.feicoes.filter((x) => e.selectedFeatureIds.has(x.id)), i = a.length > 0, t = r.getElementById("footer-count"), o = r.getElementById("footer-label");
|
|
1627
1683
|
t && (t.textContent = String(i ? a.length : e.camadas.length)), o && (o.textContent = i ? a.length > 1 ? "selecionados" : "selecionado" : e.camadas.length > 1 ? "camadas" : "camada");
|
|
1628
|
-
const n = r.querySelector(".ui-footer-metric"), s =
|
|
1629
|
-
n && (s ? (n.innerHTML = `${
|
|
1684
|
+
const n = r.querySelector(".ui-footer-metric"), s = we(a);
|
|
1685
|
+
n && (s ? (n.innerHTML = `${v.reguaMetrica} ${s}`, n.style.display = "inline-flex") : n.style.display = "none");
|
|
1630
1686
|
const l = r.querySelector(".ui-tree-footer");
|
|
1631
1687
|
l && (l.classList.toggle("tem-selecao", i), l.classList.toggle("sem-selecao", !i));
|
|
1632
1688
|
const c = r.querySelector(".ui-footer-actions-gerais");
|
|
1633
1689
|
c && (c.style.display = i ? "none" : "flex");
|
|
1634
1690
|
const d = r.querySelector(".ui-footer-bulk-actions");
|
|
1635
|
-
d && (d.style.display = i ? "flex" : "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((
|
|
1636
|
-
const
|
|
1637
|
-
|
|
1691
|
+
d && (d.style.display = i ? "flex" : "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((x) => {
|
|
1692
|
+
const y = r.getElementById(x);
|
|
1693
|
+
y && (y.disabled = !i, y.classList.toggle("disabled", !i));
|
|
1638
1694
|
});
|
|
1639
|
-
const
|
|
1640
|
-
|
|
1641
|
-
const
|
|
1642
|
-
|
|
1643
|
-
const
|
|
1644
|
-
|
|
1645
|
-
const
|
|
1646
|
-
|
|
1695
|
+
const p = r.querySelector(".ui-footer-move-wrapper");
|
|
1696
|
+
p && p.classList.toggle("disabled", !i);
|
|
1697
|
+
const f = r.getElementById("select-footer-move");
|
|
1698
|
+
f && (f.disabled = !i);
|
|
1699
|
+
const m = r.querySelector(".ui-footer-color-wrapper");
|
|
1700
|
+
m && m.classList.toggle("disabled", !i);
|
|
1701
|
+
const u = r.getElementById("input-footer-color");
|
|
1702
|
+
u && (u.disabled = !i);
|
|
1647
1703
|
let g = r.getElementById("btn-footer-clear");
|
|
1648
|
-
const
|
|
1649
|
-
i && !g &&
|
|
1704
|
+
const k = r.querySelector(".ui-footer-right");
|
|
1705
|
+
i && !g && k ? (g = document.createElement("button"), g.id = "btn-footer-clear", g.className = "ui-footer-btn btn-clear-footer", g.title = "Limpar seleção", g.innerHTML = v.fechar, g.addEventListener("click", () => e.limparSelecao(!0)), k.appendChild(g)) : !i && g && g.remove();
|
|
1650
1706
|
}
|
|
1651
|
-
function
|
|
1652
|
-
const o =
|
|
1707
|
+
function Ua(e, r, a, i, t) {
|
|
1708
|
+
const o = ea(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !i && !o.includes(r) && e.feicoes.some((l) => l.id === r), s = aa(
|
|
1653
1709
|
n ? [...o, r] : o,
|
|
1654
1710
|
e.selectedFeatureIds,
|
|
1655
1711
|
e.lastClickedFeatureId,
|
|
@@ -1659,33 +1715,33 @@ function Ha(e, r, a, i, t) {
|
|
|
1659
1715
|
);
|
|
1660
1716
|
s && (e.selectedFeatureIds = s.selecionados, e.lastClickedFeatureId = s.ultimoClicadoId, e.sincronizarSelecaoDOM(), t && e.notificarMudancaSelecao());
|
|
1661
1717
|
}
|
|
1662
|
-
function
|
|
1718
|
+
function Ya(e, r, a) {
|
|
1663
1719
|
const i = r || [];
|
|
1664
1720
|
i.length === e.selectedFeatureIds.size && i.every((n) => e.selectedFeatureIds.has(n)) || (e.selectedFeatureIds.clear(), i.forEach((n) => e.selectedFeatureIds.add(n)), e.lastClickedFeatureId = i.length > 0 ? i[i.length - 1] : null, e.sincronizarSelecaoDOM(), a && e.notificarMudancaSelecao());
|
|
1665
1721
|
}
|
|
1666
|
-
function
|
|
1722
|
+
function _a(e, r) {
|
|
1667
1723
|
e.selectedFeatureIds.size !== 0 && (e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.sincronizarSelecaoDOM(), r && e.notificarMudancaSelecao());
|
|
1668
1724
|
}
|
|
1669
|
-
function
|
|
1725
|
+
function Ka(e) {
|
|
1670
1726
|
const r = e.feicoes.filter((a) => e.selectedFeatureIds.has(a.id));
|
|
1671
1727
|
e.dispararEvento("ui-feicoes-selecionadas", {
|
|
1672
1728
|
feicoesIds: Array.from(e.selectedFeatureIds),
|
|
1673
1729
|
feicoes: r
|
|
1674
1730
|
}), r.length === 1 ? e.dispararEvento("ui-feicao-selecionada", { feicaoId: r[0].id, feicao: r[0] }) : r.length === 0 && e.dispararEvento("ui-feicao-selecionada", { feicaoId: null, feicao: null });
|
|
1675
1731
|
}
|
|
1676
|
-
class
|
|
1732
|
+
class Xa {
|
|
1677
1733
|
constructor(r) {
|
|
1678
1734
|
E(this, "origens", /* @__PURE__ */ new Map());
|
|
1679
1735
|
E(this, "removidas", /* @__PURE__ */ new Set());
|
|
1680
|
-
E(this, "salvarComDebounce",
|
|
1736
|
+
E(this, "salvarComDebounce", Ee(() => this.salvar(), 200));
|
|
1681
1737
|
this.instantaneo = r;
|
|
1682
1738
|
}
|
|
1683
1739
|
chaveAtual() {
|
|
1684
1740
|
const r = this.instantaneo();
|
|
1685
|
-
return
|
|
1741
|
+
return ma(r.storageKey, r.id);
|
|
1686
1742
|
}
|
|
1687
1743
|
carregar() {
|
|
1688
|
-
return
|
|
1744
|
+
return oe(this.chaveAtual());
|
|
1689
1745
|
}
|
|
1690
1746
|
/** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
|
|
1691
1747
|
agendar() {
|
|
@@ -1694,8 +1750,8 @@ class Ya {
|
|
|
1694
1750
|
salvar() {
|
|
1695
1751
|
const r = this.instantaneo();
|
|
1696
1752
|
if (!r.persistir || !r.conectado) return;
|
|
1697
|
-
const a = this.chaveAtual(), i =
|
|
1698
|
-
estadoAnterior:
|
|
1753
|
+
const a = this.chaveAtual(), i = ha({
|
|
1754
|
+
estadoAnterior: oe(a),
|
|
1699
1755
|
origensCamadas: this.origens,
|
|
1700
1756
|
camadas: r.camadas,
|
|
1701
1757
|
expandedLayers: r.expandedLayers,
|
|
@@ -1706,36 +1762,36 @@ class Ya {
|
|
|
1706
1762
|
altura: r.altura,
|
|
1707
1763
|
camadasRemovidas: this.removidas
|
|
1708
1764
|
});
|
|
1709
|
-
this.removidas.clear(),
|
|
1765
|
+
this.removidas.clear(), ga(a, i);
|
|
1710
1766
|
}
|
|
1711
1767
|
limpar() {
|
|
1712
|
-
|
|
1768
|
+
va(this.chaveAtual());
|
|
1713
1769
|
}
|
|
1714
1770
|
// --- Origens (como a camada chegou do consumidor) e remoções ---
|
|
1715
1771
|
limparOrigens() {
|
|
1716
1772
|
this.origens.clear();
|
|
1717
1773
|
}
|
|
1718
1774
|
registrarOrigem(r) {
|
|
1719
|
-
this.origens.set(r.id,
|
|
1775
|
+
this.origens.set(r.id, $e(r));
|
|
1720
1776
|
}
|
|
1721
1777
|
esquecerCamada(r) {
|
|
1722
1778
|
this.origens.delete(r), this.removidas.add(r);
|
|
1723
1779
|
}
|
|
1724
1780
|
/** Aplica por cima de `camadas` o que foi lembrado (expansão, visibilidade, travas, opacidade, cor, ordem). */
|
|
1725
1781
|
reidratar(r, a, i) {
|
|
1726
|
-
|
|
1782
|
+
ba(r, a, i, this.origens);
|
|
1727
1783
|
}
|
|
1728
1784
|
}
|
|
1729
|
-
function
|
|
1785
|
+
function Me(e, r = null) {
|
|
1730
1786
|
const a = [];
|
|
1731
1787
|
for (const i of e) {
|
|
1732
1788
|
const t = { ...i };
|
|
1733
|
-
r && t.parentId === void 0 && (t.parentId = r), a.push(t), Array.isArray(i.children) && i.children.length > 0 && a.push(...
|
|
1789
|
+
r && t.parentId === void 0 && (t.parentId = r), a.push(t), Array.isArray(i.children) && i.children.length > 0 && a.push(...Me(i.children, i.id));
|
|
1734
1790
|
}
|
|
1735
1791
|
return a;
|
|
1736
1792
|
}
|
|
1737
|
-
function
|
|
1738
|
-
if (e.camadas = Array.isArray(r) ?
|
|
1793
|
+
function Qa(e, r, a) {
|
|
1794
|
+
if (e.camadas = Array.isArray(r) ? Me(r) : [], e.lembranca.limparOrigens(), e.persistir) {
|
|
1739
1795
|
const t = e.lembranca.carregar();
|
|
1740
1796
|
e.lembranca.reidratar(e.camadas, t, e.expandedLayers), t != null && t.camadaAtivaId && e.camadas.some((o) => o.id === t.camadaAtivaId) && (e.camadaAtivaId = t.camadaAtivaId);
|
|
1741
1797
|
} else
|
|
@@ -1748,15 +1804,15 @@ function _a(e, r, a) {
|
|
|
1748
1804
|
o.length > 0 && console.warn(
|
|
1749
1805
|
`[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
|
|
1750
1806
|
o.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
|
|
1751
|
-
),
|
|
1807
|
+
), le(e.selectedFeatureIds, e.feicoes);
|
|
1752
1808
|
}
|
|
1753
1809
|
const i = e.getAttribute("camada-ativa");
|
|
1754
1810
|
e.camadas.length > 0 && (!i || !e.camadas.some((t) => t.id === i)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
|
|
1755
1811
|
}
|
|
1756
|
-
function
|
|
1757
|
-
e.feicoes = Array.isArray(r) ? r.map((a) => ({ ...a })) : [],
|
|
1812
|
+
function Ja(e, r) {
|
|
1813
|
+
e.feicoes = Array.isArray(r) ? r.map((a) => ({ ...a })) : [], le(e.selectedFeatureIds, e.feicoes), e.solicitarRenderizacao();
|
|
1758
1814
|
}
|
|
1759
|
-
function
|
|
1815
|
+
function Wa(e, r) {
|
|
1760
1816
|
if (!r || !r.id) return;
|
|
1761
1817
|
if (e.camadas.some((i) => i.id === r.id)) {
|
|
1762
1818
|
console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);
|
|
@@ -1765,13 +1821,13 @@ function Ka(e, r) {
|
|
|
1765
1821
|
const a = { ...r };
|
|
1766
1822
|
e.camadas.push(a), e.lembranca.registrarOrigem(a), e.expandedLayers.add(a.id), a.parentId && e.expandedLayers.add(a.parentId), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
|
|
1767
1823
|
}
|
|
1768
|
-
function
|
|
1824
|
+
function Za(e, r) {
|
|
1769
1825
|
var a;
|
|
1770
1826
|
e.camadas.forEach((i) => {
|
|
1771
1827
|
i.parentId === r && (i.parentId = null);
|
|
1772
|
-
}), e.camadas = e.camadas.filter((i) => i.id !== r), e.feicoes = e.feicoes.filter((i) => i.layerId !== r), e.lembranca.esquecerCamada(r), e.expandedLayers.delete(r), e.activeSettingsLayerId === r && (e.activeSettingsLayerId = null),
|
|
1828
|
+
}), e.camadas = e.camadas.filter((i) => i.id !== r), e.feicoes = e.feicoes.filter((i) => i.layerId !== r), e.lembranca.esquecerCamada(r), e.expandedLayers.delete(r), e.activeSettingsLayerId === r && (e.activeSettingsLayerId = null), le(e.selectedFeatureIds, e.feicoes), e.selectedFeatureIds.size === 0 && (e.lastClickedFeatureId = null), e.camadaAtivaId === r && (e.camadaAtivaId = ((a = e.camadas[0]) == null ? void 0 : a.id) ?? null), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
|
|
1773
1829
|
}
|
|
1774
|
-
function
|
|
1830
|
+
function er(e, r) {
|
|
1775
1831
|
if (!(!r || !r.id)) {
|
|
1776
1832
|
if (e.feicoes.some((a) => a.id === r.id)) {
|
|
1777
1833
|
console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);
|
|
@@ -1780,14 +1836,14 @@ function Qa(e, r) {
|
|
|
1780
1836
|
e.feicoes.push({ ...r }), e.solicitarRenderizacao();
|
|
1781
1837
|
}
|
|
1782
1838
|
}
|
|
1783
|
-
function
|
|
1839
|
+
function ar(e, r) {
|
|
1784
1840
|
const a = e.feicoes.findIndex((i) => i.id === r.id);
|
|
1785
1841
|
a !== -1 && (e.feicoes[a] = { ...e.feicoes[a], ...r }, e.solicitarRenderizacao());
|
|
1786
1842
|
}
|
|
1787
|
-
function
|
|
1843
|
+
function rr(e, r) {
|
|
1788
1844
|
e.feicoes = e.feicoes.filter((a) => a.id !== r), e.selectedFeatureIds.delete(r), e.solicitarRenderizacao();
|
|
1789
1845
|
}
|
|
1790
|
-
function
|
|
1846
|
+
function tr(e) {
|
|
1791
1847
|
function i() {
|
|
1792
1848
|
return e.getMinAltura ? e.getMinAltura() : 140;
|
|
1793
1849
|
}
|
|
@@ -1805,64 +1861,64 @@ function Za(e) {
|
|
|
1805
1861
|
);
|
|
1806
1862
|
return;
|
|
1807
1863
|
}
|
|
1808
|
-
const
|
|
1809
|
-
if (isNaN(
|
|
1810
|
-
const
|
|
1811
|
-
e.hostElement.style.height = `${
|
|
1864
|
+
const p = typeof c == "number" ? c : parseFloat(String(c));
|
|
1865
|
+
if (isNaN(p)) return;
|
|
1866
|
+
const f = Math.max(i(), Math.min(t(), Math.round(p)));
|
|
1867
|
+
e.hostElement.style.height = `${f}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${f}px`), d && e.hostElement.dispatchEvent(
|
|
1812
1868
|
new CustomEvent("ui-redimensionar-altura", {
|
|
1813
1869
|
bubbles: !0,
|
|
1814
1870
|
composed: !0,
|
|
1815
|
-
detail: { altura:
|
|
1871
|
+
detail: { altura: f }
|
|
1816
1872
|
})
|
|
1817
1873
|
);
|
|
1818
1874
|
}
|
|
1819
1875
|
let n = null;
|
|
1820
1876
|
function s() {
|
|
1821
1877
|
if (!e.resizerElement) return;
|
|
1822
|
-
let c = !1, d = 0,
|
|
1823
|
-
const
|
|
1824
|
-
if (
|
|
1825
|
-
|
|
1878
|
+
let c = !1, d = 0, p = 0;
|
|
1879
|
+
const f = (u) => {
|
|
1880
|
+
if (u.button !== 0) return;
|
|
1881
|
+
u.preventDefault(), u.stopPropagation(), c = !0, d = u.clientY, p = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
|
|
1826
1882
|
try {
|
|
1827
|
-
e.resizerElement.setPointerCapture(
|
|
1883
|
+
e.resizerElement.setPointerCapture(u.pointerId);
|
|
1828
1884
|
} catch {
|
|
1829
1885
|
}
|
|
1830
|
-
const g = (
|
|
1886
|
+
const g = (y) => {
|
|
1831
1887
|
if (!c) return;
|
|
1832
|
-
|
|
1833
|
-
const
|
|
1834
|
-
e.hostElement.style.height = `${
|
|
1888
|
+
y.preventDefault();
|
|
1889
|
+
const C = y.clientY - d, L = Math.max(i(), Math.min(t(), Math.round(p + C)));
|
|
1890
|
+
e.hostElement.style.height = `${L}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${L}px`), e.onRedimensionando && e.onRedimensionando(L), e.hostElement.dispatchEvent(
|
|
1835
1891
|
new CustomEvent("ui-redimensionando-altura", {
|
|
1836
1892
|
bubbles: !0,
|
|
1837
1893
|
composed: !0,
|
|
1838
|
-
detail: { altura:
|
|
1894
|
+
detail: { altura: L }
|
|
1839
1895
|
})
|
|
1840
1896
|
);
|
|
1841
|
-
},
|
|
1842
|
-
var
|
|
1843
|
-
c = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup",
|
|
1844
|
-
},
|
|
1897
|
+
}, k = () => {
|
|
1898
|
+
var y;
|
|
1899
|
+
c = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x), (y = e.resizerElement) == null || y.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
|
|
1900
|
+
}, x = (y) => {
|
|
1845
1901
|
if (!c) return;
|
|
1846
1902
|
c = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
|
|
1847
1903
|
try {
|
|
1848
|
-
e.resizerElement.hasPointerCapture(
|
|
1904
|
+
e.resizerElement.hasPointerCapture(y.pointerId) && e.resizerElement.releasePointerCapture(y.pointerId);
|
|
1849
1905
|
} catch {
|
|
1850
1906
|
}
|
|
1851
|
-
window.removeEventListener("pointermove", g), window.removeEventListener("pointerup",
|
|
1852
|
-
const
|
|
1853
|
-
e.onAlturaAlterada && e.onAlturaAlterada(
|
|
1907
|
+
window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x);
|
|
1908
|
+
const C = e.hostElement.getBoundingClientRect().height, L = Math.round(C);
|
|
1909
|
+
e.onAlturaAlterada && e.onAlturaAlterada(L), e.hostElement.dispatchEvent(
|
|
1854
1910
|
new CustomEvent("ui-redimensionar-altura", {
|
|
1855
1911
|
bubbles: !0,
|
|
1856
1912
|
composed: !0,
|
|
1857
|
-
detail: { altura:
|
|
1913
|
+
detail: { altura: L }
|
|
1858
1914
|
})
|
|
1859
1915
|
);
|
|
1860
1916
|
};
|
|
1861
|
-
n =
|
|
1862
|
-
},
|
|
1863
|
-
|
|
1917
|
+
n = k, window.addEventListener("pointermove", g), window.addEventListener("pointerup", x), window.addEventListener("pointercancel", x);
|
|
1918
|
+
}, m = (u) => {
|
|
1919
|
+
u.preventDefault(), u.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
|
|
1864
1920
|
};
|
|
1865
|
-
e.listeners.add(e.resizerElement, "pointerdown",
|
|
1921
|
+
e.listeners.add(e.resizerElement, "pointerdown", f), e.listeners.add(e.resizerElement, "dblclick", m);
|
|
1866
1922
|
}
|
|
1867
1923
|
function l() {
|
|
1868
1924
|
n == null || n(), e.listeners.cleanup();
|
|
@@ -1873,11 +1929,11 @@ function Za(e) {
|
|
|
1873
1929
|
destruir: l
|
|
1874
1930
|
};
|
|
1875
1931
|
}
|
|
1876
|
-
const R = class R extends
|
|
1932
|
+
const R = class R extends Ne {
|
|
1877
1933
|
constructor() {
|
|
1878
1934
|
super();
|
|
1879
1935
|
E(this, "shadow");
|
|
1880
|
-
E(this, "listeners", new
|
|
1936
|
+
E(this, "listeners", new Ge());
|
|
1881
1937
|
E(this, "dragDropManager");
|
|
1882
1938
|
E(this, "resizerController");
|
|
1883
1939
|
E(this, "alturaCustomizada", null);
|
|
@@ -1885,7 +1941,7 @@ const R = class R extends Re {
|
|
|
1885
1941
|
E(this, "profundidadeLote", 0);
|
|
1886
1942
|
E(this, "renderPendente", !1);
|
|
1887
1943
|
/** @internal */
|
|
1888
|
-
E(this, "lembranca", new
|
|
1944
|
+
E(this, "lembranca", new Xa(() => ({
|
|
1889
1945
|
persistir: this.persistir,
|
|
1890
1946
|
conectado: this.conectado,
|
|
1891
1947
|
storageKey: this.storageKey,
|
|
@@ -1901,7 +1957,7 @@ const R = class R extends Re {
|
|
|
1901
1957
|
// Estado interno
|
|
1902
1958
|
E(this, "camadas", []);
|
|
1903
1959
|
E(this, "feicoes", []);
|
|
1904
|
-
E(this, "mapasBase", [...
|
|
1960
|
+
E(this, "mapasBase", [...Ae]);
|
|
1905
1961
|
E(this, "expandedLayers", /* @__PURE__ */ new Set());
|
|
1906
1962
|
E(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
|
|
1907
1963
|
E(this, "lastClickedFeatureId", null);
|
|
@@ -1912,7 +1968,7 @@ const R = class R extends Re {
|
|
|
1912
1968
|
E(this, "corpoElement");
|
|
1913
1969
|
E(this, "btnExpandirFlutuante");
|
|
1914
1970
|
this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
|
|
1915
|
-
<style>${
|
|
1971
|
+
<style>${xa}</style>
|
|
1916
1972
|
<div class="ui-camadas-container" id="panel-container" role="region" aria-label="Painel de Camadas">
|
|
1917
1973
|
<div class="ui-camadas-corpo" id="painel-corpo"></div>
|
|
1918
1974
|
<div class="ui-camadas-resizer-altura" id="resizer-altura" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
|
|
@@ -1920,11 +1976,11 @@ const R = class R extends Re {
|
|
|
1920
1976
|
</div>
|
|
1921
1977
|
</div>
|
|
1922
1978
|
<button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
|
|
1923
|
-
${
|
|
1979
|
+
${v.camadas}
|
|
1924
1980
|
</button>
|
|
1925
|
-
`, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new
|
|
1981
|
+
`, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new pa(this, this.shadow);
|
|
1926
1982
|
const a = this.shadow.getElementById("resizer-altura");
|
|
1927
|
-
this.resizerController =
|
|
1983
|
+
this.resizerController = tr({
|
|
1928
1984
|
hostElement: this,
|
|
1929
1985
|
resizerElement: a,
|
|
1930
1986
|
listeners: this.listeners,
|
|
@@ -1951,6 +2007,7 @@ const R = class R extends Re {
|
|
|
1951
2007
|
"colapsado",
|
|
1952
2008
|
"flutuante",
|
|
1953
2009
|
"mostrar-mapas-base",
|
|
2010
|
+
"mapas-base-recolhido",
|
|
1954
2011
|
"mostrar-rodape",
|
|
1955
2012
|
"mostrar-busca",
|
|
1956
2013
|
"densidade",
|
|
@@ -1965,20 +2022,20 @@ const R = class R extends Re {
|
|
|
1965
2022
|
}
|
|
1966
2023
|
connectedCallback() {
|
|
1967
2024
|
if (this.persistir) {
|
|
1968
|
-
const a =
|
|
2025
|
+
const a = oe(this.obterChaveStorageAtual());
|
|
1969
2026
|
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));
|
|
1970
2027
|
}
|
|
1971
2028
|
this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (R.instanciasChavePadrao.size > 0 && console.warn(
|
|
1972
2029
|
"[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."
|
|
1973
|
-
), R.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(),
|
|
2030
|
+
), R.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), Na(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
|
|
1974
2031
|
}
|
|
1975
2032
|
disconnectedCallback() {
|
|
1976
2033
|
var a, i;
|
|
1977
|
-
this.conectado = !1, R.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (i = this.dragDropManager) == null || i.destruir(),
|
|
2034
|
+
this.conectado = !1, R.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (i = this.dragDropManager) == null || i.destruir(), Ca(this), this.listeners.cleanup();
|
|
1978
2035
|
}
|
|
1979
2036
|
attributeChangedCallback(a, i, t) {
|
|
1980
2037
|
var o;
|
|
1981
|
-
i !== t && (a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "mapa-base-ativo" ? t && this.marcarMapaBaseAtivoNoDOM(t) : a === "mostrar-mapas-base" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" && ((o = this.resizerController) == null || o.definirAltura(t, !1)));
|
|
2038
|
+
i !== t && (a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "mapa-base-ativo" ? t && this.marcarMapaBaseAtivoNoDOM(t) : a === "mostrar-mapas-base" || a === "mapas-base-recolhido" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" && ((o = this.resizerController) == null || o.definirAltura(t, !1)));
|
|
1982
2039
|
}
|
|
1983
2040
|
// --- Getters e Setters de Propriedades Reativas ---
|
|
1984
2041
|
get titulo() {
|
|
@@ -2004,10 +2061,23 @@ const R = class R extends Re {
|
|
|
2004
2061
|
!a || this.mapaBaseAtivo === a || (this.mapaBaseAtivo = a, this.marcarMapaBaseAtivoNoDOM(a), this.salvarLembrancaEstado(), i && this.dispararEvento("ui-mapa-base-alterado", { mapaBaseId: a }));
|
|
2005
2062
|
}
|
|
2006
2063
|
marcarMapaBaseAtivoNoDOM(a) {
|
|
2007
|
-
this.shadow.querySelectorAll("[data-basemap-id]").forEach((
|
|
2008
|
-
const
|
|
2009
|
-
|
|
2064
|
+
this.shadow.querySelectorAll("[data-basemap-id]").forEach((t) => {
|
|
2065
|
+
const o = t.getAttribute("data-basemap-id") === a;
|
|
2066
|
+
t.classList.toggle("active", o), t.setAttribute("aria-pressed", String(o));
|
|
2010
2067
|
});
|
|
2068
|
+
const i = this.shadow.querySelector("[data-basemap-atual]");
|
|
2069
|
+
i && (i.textContent = ke(this.mapasBase, a));
|
|
2070
|
+
}
|
|
2071
|
+
/** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
|
|
2072
|
+
get mapasBaseRecolhido() {
|
|
2073
|
+
return this.hasAttribute("mapas-base-recolhido");
|
|
2074
|
+
}
|
|
2075
|
+
set mapasBaseRecolhido(a) {
|
|
2076
|
+
a ? this.setAttribute("mapas-base-recolhido", "") : this.removeAttribute("mapas-base-recolhido");
|
|
2077
|
+
}
|
|
2078
|
+
/** Alterna a seção de mapas base; com `emitirEvento`, dispara `ui-mapas-base-recolhimento`. */
|
|
2079
|
+
alternarMapasBaseRecolhido(a = !1) {
|
|
2080
|
+
this.mapasBaseRecolhido = !this.mapasBaseRecolhido, a && this.dispararEvento("ui-mapas-base-recolhimento", { recolhido: this.mapasBaseRecolhido });
|
|
2011
2081
|
}
|
|
2012
2082
|
get abaAtiva() {
|
|
2013
2083
|
return this.getAttribute("aba-ativa") || "camadas";
|
|
@@ -2130,10 +2200,10 @@ const R = class R extends Re {
|
|
|
2130
2200
|
this.definirMapasBase(a);
|
|
2131
2201
|
}
|
|
2132
2202
|
definirCamadas(a, i) {
|
|
2133
|
-
|
|
2203
|
+
Qa(this, a, i);
|
|
2134
2204
|
}
|
|
2135
2205
|
definirFeicoes(a) {
|
|
2136
|
-
|
|
2206
|
+
Ja(this, a);
|
|
2137
2207
|
}
|
|
2138
2208
|
definirMapasBase(a) {
|
|
2139
2209
|
this.mapasBase = Array.isArray(a) ? [...a] : [], this.solicitarRenderizacao();
|
|
@@ -2157,28 +2227,28 @@ const R = class R extends Re {
|
|
|
2157
2227
|
return this.feicoes.filter((a) => this.selectedFeatureIds.has(a.id));
|
|
2158
2228
|
}
|
|
2159
2229
|
adicionarCamada(a) {
|
|
2160
|
-
|
|
2230
|
+
Wa(this, a);
|
|
2161
2231
|
}
|
|
2162
2232
|
removerCamada(a) {
|
|
2163
|
-
|
|
2233
|
+
Za(this, a);
|
|
2164
2234
|
}
|
|
2165
2235
|
adicionarFeicao(a) {
|
|
2166
|
-
|
|
2236
|
+
er(this, a);
|
|
2167
2237
|
}
|
|
2168
2238
|
atualizarFeicao(a) {
|
|
2169
|
-
|
|
2239
|
+
ar(this, a);
|
|
2170
2240
|
}
|
|
2171
2241
|
removerFeicao(a) {
|
|
2172
|
-
|
|
2242
|
+
rr(this, a);
|
|
2173
2243
|
}
|
|
2174
2244
|
selecionarFeicao(a, i = !1, t = !1, o = !1) {
|
|
2175
|
-
|
|
2245
|
+
Ua(this, a, i, t, o);
|
|
2176
2246
|
}
|
|
2177
2247
|
selecionarFeicoes(a, i = !1) {
|
|
2178
|
-
|
|
2248
|
+
Ya(this, a, i);
|
|
2179
2249
|
}
|
|
2180
2250
|
limparSelecao(a = !1) {
|
|
2181
|
-
|
|
2251
|
+
_a(this, a);
|
|
2182
2252
|
}
|
|
2183
2253
|
expandirTodas() {
|
|
2184
2254
|
this.expandedLayers = new Set(this.camadas.map((a) => a.id)), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
|
|
@@ -2234,7 +2304,7 @@ const R = class R extends Re {
|
|
|
2234
2304
|
);
|
|
2235
2305
|
}
|
|
2236
2306
|
render() {
|
|
2237
|
-
this.corpoElement &&
|
|
2307
|
+
this.corpoElement && Da(this, this.shadow, this.corpoElement, this.dragDropManager);
|
|
2238
2308
|
}
|
|
2239
2309
|
// --- Conexão de Eventos ---
|
|
2240
2310
|
conectarEventosGerais() {
|
|
@@ -2242,27 +2312,27 @@ const R = class R extends Re {
|
|
|
2242
2312
|
}
|
|
2243
2313
|
// --- Sincronização de DOM (delegada) ---
|
|
2244
2314
|
sincronizarCamadaAtivaDOM() {
|
|
2245
|
-
|
|
2315
|
+
Ga(this, this.shadow);
|
|
2246
2316
|
}
|
|
2247
2317
|
sincronizarSelecaoDOM() {
|
|
2248
|
-
|
|
2318
|
+
Va(this, this.shadow);
|
|
2249
2319
|
}
|
|
2250
2320
|
// --- Auxiliares Internos ---
|
|
2251
2321
|
notificarMudancaSelecao() {
|
|
2252
|
-
|
|
2322
|
+
Ka(this);
|
|
2253
2323
|
}
|
|
2254
2324
|
};
|
|
2255
2325
|
/** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
|
|
2256
2326
|
E(R, "instanciasChavePadrao", /* @__PURE__ */ new Set());
|
|
2257
|
-
let
|
|
2258
|
-
class
|
|
2327
|
+
let N = R;
|
|
2328
|
+
class ir extends N {
|
|
2259
2329
|
}
|
|
2260
|
-
class
|
|
2330
|
+
class or extends N {
|
|
2261
2331
|
}
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
function
|
|
2332
|
+
se("ui-camadas", N);
|
|
2333
|
+
se("ui-painel-camadas", ir);
|
|
2334
|
+
se("ui-layer-panel", or);
|
|
2335
|
+
function dr(e) {
|
|
2266
2336
|
var r;
|
|
2267
2337
|
return {
|
|
2268
2338
|
id: e.id,
|
|
@@ -2279,7 +2349,7 @@ function nr(e) {
|
|
|
2279
2349
|
dados: e.dados
|
|
2280
2350
|
};
|
|
2281
2351
|
}
|
|
2282
|
-
function
|
|
2352
|
+
function ur(e, r = "levantamento", a = "feicoes") {
|
|
2283
2353
|
return {
|
|
2284
2354
|
id: e.id,
|
|
2285
2355
|
nome: e.name,
|
|
@@ -2298,7 +2368,7 @@ function sr(e, r = "levantamento", a = "feicoes") {
|
|
|
2298
2368
|
dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
|
|
2299
2369
|
};
|
|
2300
2370
|
}
|
|
2301
|
-
function
|
|
2371
|
+
function pr(e, r = "") {
|
|
2302
2372
|
var o, n, s, l;
|
|
2303
2373
|
const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", i = ((s = e.geometria) == null ? void 0 : s.coordenadas) || ((l = e.geometria) == null ? void 0 : l.coordinates) || e.coordinates, t = e.cor || e.color;
|
|
2304
2374
|
return {
|
|
@@ -2317,39 +2387,41 @@ function lr(e, r = "") {
|
|
|
2317
2387
|
};
|
|
2318
2388
|
}
|
|
2319
2389
|
export {
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
Ke as
|
|
2353
|
-
|
|
2354
|
-
|
|
2390
|
+
pa as CamadasDragDropManager,
|
|
2391
|
+
v as ICONES,
|
|
2392
|
+
Le as LIMITE_FEICOES_POR_CAMADA,
|
|
2393
|
+
Ae as MAPAS_BASE_PADRAO,
|
|
2394
|
+
N as UICamadas,
|
|
2395
|
+
or as UILayerPanel,
|
|
2396
|
+
gr as UIMapaBase,
|
|
2397
|
+
ir as UIPainelCamadas,
|
|
2398
|
+
vr as UISeletorMapaBase,
|
|
2399
|
+
ee as calcularAreaAnelSimples,
|
|
2400
|
+
ye as calcularAreaPoligono,
|
|
2401
|
+
xe as calcularComprimentoLinha,
|
|
2402
|
+
Ve as calcularDistanciaPontos,
|
|
2403
|
+
aa as calcularSelecaoFeicao,
|
|
2404
|
+
oe as carregarEstadoPersistido,
|
|
2405
|
+
Ze as construirHierarquiaCamadas,
|
|
2406
|
+
ur as converterCamadaItemParaCanvasLayer,
|
|
2407
|
+
dr as converterCanvasLayerParaCamadaItem,
|
|
2408
|
+
pr as converterFeicaoParaItem,
|
|
2409
|
+
S as escapeHtml,
|
|
2410
|
+
Ce as filtrarCamadasPorBusca,
|
|
2411
|
+
K as filtrarFeicoesPorBusca,
|
|
2412
|
+
we as formatarMetricaFeicoes,
|
|
2413
|
+
Xe as formatarOpcoesCamadasHierarquicas,
|
|
2414
|
+
ma as gerarChaveStorage,
|
|
2415
|
+
va as limparEstadoPersistido,
|
|
2416
|
+
ha as montarEstadoPersistido,
|
|
2417
|
+
ke as nomeDoMapaBase,
|
|
2418
|
+
ea as obterIdsVisiveisFeicoes,
|
|
2419
|
+
ba as reidratarCamadasComOverrides,
|
|
2420
|
+
le as removerSelecoesInvalidas,
|
|
2421
|
+
ra as renderizarArvoreCamadas,
|
|
2422
|
+
Ke as renderizarGridMapasBase,
|
|
2423
|
+
Qe as renderizarRodapeAcoes,
|
|
2424
|
+
We as renderizarThumbGeometria,
|
|
2425
|
+
ga as salvarEstadoPersistido,
|
|
2426
|
+
$e as snapshotCamada
|
|
2355
2427
|
};
|