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