@thibezer/ui-components-kit 2.11.1 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +62 -1
- package/dist/alvo-digitavel-CzCvNVQ3.js +23 -0
- package/dist/alvo-digitavel-DbH0hYFf.cjs +1 -0
- package/dist/camadas.cjs +111 -106
- package/dist/camadas.js +1061 -892
- 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-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/custom-elements.json +28508 -25795
- package/dist/data.cjs +1 -1
- package/dist/data.js +79 -72
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +163 -156
- package/dist/register.cjs +1 -1
- package/dist/register.js +1 -1
- package/dist/tabela.cjs +1 -1
- package/dist/tabela.js +71 -64
- package/dist/tipos-elementos.d.ts +111 -6
- package/dist/tipos-react.d.ts +4 -0
- package/dist/tipos-vue.d.ts +100 -6
- 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 A = (e, r, a) =>
|
|
1
|
+
var Ze = Object.defineProperty;
|
|
2
|
+
var ea = (e, r, a) => r in e ? Ze(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
|
|
3
|
+
var A = (e, r, a) => ea(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 aa } from "./ssr-safe-5cWfJP-s.js";
|
|
6
|
+
import { L as ra } from "./listener-bag-DQgv7OON.js";
|
|
7
|
+
import { a as ta } from "./ui-seletor-cor-D2_C6Aor.js";
|
|
8
|
+
import { f as ia } from "./alvo-digitavel-CzCvNVQ3.js";
|
|
9
|
+
import { a as Le } from "./parts-CaoQiCfI.js";
|
|
10
|
+
import { UIMapaBase as Fr, UISeletorMapaBase as zr } 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 oa(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 += oa([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], d = (p[1] - c) * n * U * o, g = (p[0] - l) * n * U, v = (m[1] - c) * n * U * o, x = (m[0] - l) * n * U;
|
|
150
|
+
s += d * x - v * g;
|
|
151
|
+
}
|
|
152
|
+
const u = Math.abs(s) / 2;
|
|
153
|
+
return Number.isFinite(u) ? u : 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 Se(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 F(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 na = /^(#(?:[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 N(e, r = "#00E08A") {
|
|
188
205
|
if (!e || typeof e != "string") return r;
|
|
189
206
|
const a = e.trim();
|
|
190
|
-
return
|
|
207
|
+
return na.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 sa(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 Me(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, u, f] = t[1] === "rgb" ? [n, l, c] : sa(n, l, c);
|
|
228
|
+
return `#${de(s)}${de(u)}${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 Fe(e, r = 80) {
|
|
223
240
|
let a = null;
|
|
224
241
|
return (...i) => {
|
|
225
242
|
a && clearTimeout(a), a = setTimeout(() => {
|
|
@@ -227,10 +244,10 @@ function ye(e, r = 80) {
|
|
|
227
244
|
}, r);
|
|
228
245
|
};
|
|
229
246
|
}
|
|
230
|
-
function
|
|
247
|
+
function P(e, r) {
|
|
231
248
|
e.setAttribute("title", r), e.setAttribute("aria-label", r);
|
|
232
249
|
}
|
|
233
|
-
const
|
|
250
|
+
const ze = [
|
|
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 Be(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 = ze, 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 = F(t.id), l = F(t.nome), c = F(t.descricao || t.nome);
|
|
301
|
+
let s = "";
|
|
302
|
+
return t.thumbnailUrl ? s = `<img class="ui-basemap-preview" src="${F(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>${F(Be(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,37 +319,98 @@ 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, u) => {
|
|
326
|
+
a.set(s.id, s), i.set(s.id, u);
|
|
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 u = [], 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), d = u.slice(m);
|
|
336
|
+
let g = d[0];
|
|
337
|
+
for (const v of d)
|
|
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, u.length), u.push(p.id), p = a.get(p.parentId);
|
|
344
|
+
}
|
|
345
|
+
for (const m of u) 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, u, f) {
|
|
352
|
+
const p = new Set(f);
|
|
353
|
+
p.add(s.id);
|
|
354
|
+
const d = (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: u,
|
|
360
|
+
subcamadas: d.map((g) => c(g, u + 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="${F(t.id)}">${l}${F(t.name)}</option>`, s = n.map((u) => a(u)).join("");
|
|
391
|
+
return c + s;
|
|
315
392
|
};
|
|
316
|
-
return
|
|
393
|
+
return r.map((i) => a(i)).join("");
|
|
317
394
|
}
|
|
318
|
-
function
|
|
319
|
-
|
|
395
|
+
function ua(e, r, a) {
|
|
396
|
+
var f;
|
|
397
|
+
const i = r.filter((p) => a.has(p.id)), t = i.length > 0, o = Se(i), n = N((f = i[0]) == null ? void 0 : f.color, "#00E08A"), l = Me(n, "#00E08A"), c = t ? i.length : e.length, s = t ? i.length > 1 ? "selecionados" : "selecionado" : e.length > 1 ? "camadas" : "camada", u = da(e);
|
|
320
398
|
return `
|
|
321
|
-
<div class="ui-tree-footer ${t ? "tem-selecao" : "sem-selecao"}">
|
|
399
|
+
<div class="ui-tree-footer ${t ? "tem-selecao" : "sem-selecao"}" part="rodape">
|
|
322
400
|
<div class="ui-footer-left">
|
|
323
|
-
<span class="ui-footer-count" id="footer-count">${
|
|
401
|
+
<span class="ui-footer-count" id="footer-count">${c}</span>
|
|
324
402
|
<span class="ui-footer-label" id="footer-label">${s}</span>
|
|
325
|
-
<span class="ui-footer-metric" id="footer-metric" style="display: ${o ? "inline-flex" : "none"};">${o ? `${
|
|
403
|
+
<span class="ui-footer-metric" id="footer-metric" style="display: ${o ? "inline-flex" : "none"};">${o ? `${b.reguaMetrica} ${o}` : ""}</span>
|
|
326
404
|
</div>
|
|
327
405
|
|
|
328
406
|
<!-- Ações de topo/gerais quando não há nada selecionado -->
|
|
329
407
|
<div class="ui-footer-actions-gerais" style="display: ${t ? "none" : "flex"};">
|
|
330
408
|
<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
|
-
${
|
|
409
|
+
${b.moverPasta}
|
|
332
410
|
<span>+ Grupo</span>
|
|
333
411
|
</button>
|
|
334
412
|
<button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
|
|
335
|
-
${
|
|
413
|
+
${b.mais}
|
|
336
414
|
<span>+ Camada</span>
|
|
337
415
|
</button>
|
|
338
416
|
</div>
|
|
@@ -340,173 +418,204 @@ function Qe(e, r, a) {
|
|
|
340
418
|
<!-- Ações em massa ativadas quando há seleção -->
|
|
341
419
|
<div class="ui-footer-right ui-footer-bulk-actions" style="display: ${t ? "flex" : "none"};">
|
|
342
420
|
<button class="ui-footer-btn ${t ? "" : "disabled"}" id="btn-footer-vis" title="Alternar visibilidade coletiva" aria-label="Alternar visibilidade coletiva" ${t ? "" : "disabled"}>
|
|
343
|
-
${
|
|
421
|
+
${b.olhoAberto}
|
|
344
422
|
</button>
|
|
345
423
|
|
|
346
424
|
<button class="ui-footer-btn ${t ? "" : "disabled"}" id="btn-footer-lock" title="Alternar bloqueio coletivo" aria-label="Alternar bloqueio coletivo" ${t ? "" : "disabled"}>
|
|
347
|
-
${
|
|
425
|
+
${b.cadeadoTrancado}
|
|
348
426
|
</button>
|
|
349
427
|
|
|
350
428
|
<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:
|
|
352
|
-
<input type="color" id="input-footer-color" aria-label="Cor dos selecionados" value="
|
|
429
|
+
<span class="ui-footer-color-preview" id="preview-footer-color" style="background-color: ${n};"></span>
|
|
430
|
+
<input type="color" id="input-footer-color" aria-label="Cor dos selecionados" value="${l}" class="ui-footer-color" ${t ? "" : "disabled"} />
|
|
353
431
|
</div>
|
|
354
432
|
|
|
355
433
|
<div class="ui-footer-move-wrapper ${t ? "" : "disabled"}" title="Mover selecionados para outra camada">
|
|
356
434
|
<select id="select-footer-move" aria-label="Mover selecionados para outra camada" class="ui-footer-select" ${t ? "" : "disabled"}>
|
|
357
435
|
<option value="" disabled selected>📂 Mover para...</option>
|
|
358
|
-
${
|
|
436
|
+
${u}
|
|
359
437
|
</select>
|
|
360
438
|
</div>
|
|
361
439
|
|
|
362
440
|
<button class="ui-footer-btn btn-danger-footer ${t ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${t ? "" : "disabled"}>
|
|
363
|
-
${
|
|
441
|
+
${b.lixeira}
|
|
364
442
|
</button>
|
|
365
443
|
|
|
366
|
-
${t ? `<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${
|
|
444
|
+
${t ? `<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${b.fechar}</button>` : ""}
|
|
367
445
|
</div>
|
|
368
446
|
</div>
|
|
369
447
|
`;
|
|
370
448
|
}
|
|
371
|
-
const
|
|
372
|
-
function
|
|
449
|
+
const ue = 64;
|
|
450
|
+
function Ee(e) {
|
|
373
451
|
return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
|
|
374
452
|
}
|
|
375
|
-
function
|
|
376
|
-
return !Array.isArray(e) || e.length === 0 ? [] :
|
|
453
|
+
function qe(e) {
|
|
454
|
+
return !Array.isArray(e) || e.length === 0 ? [] : Ee(e[0]) ? [e.filter(Ee)] : e.flatMap(qe);
|
|
377
455
|
}
|
|
378
|
-
function
|
|
379
|
-
if (e.length <=
|
|
380
|
-
const r = e.length /
|
|
381
|
-
for (let i = 0; i <
|
|
456
|
+
function ke(e) {
|
|
457
|
+
if (e.length <= ue) return e;
|
|
458
|
+
const r = e.length / ue, a = [];
|
|
459
|
+
for (let i = 0; i < ue; i++) a.push(e[Math.floor(i * r)]);
|
|
382
460
|
return a.push(e[e.length - 1]), a;
|
|
383
461
|
}
|
|
384
|
-
function
|
|
385
|
-
const i =
|
|
462
|
+
function pa(e, r, a) {
|
|
463
|
+
const i = qe(r).filter((E) => E.length > 0);
|
|
386
464
|
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
|
|
392
|
-
if (
|
|
393
|
-
const
|
|
394
|
-
return
|
|
395
|
-
`<path d="${
|
|
465
|
+
let t = 1 / 0, o = -1 / 0, n = 1 / 0, l = -1 / 0;
|
|
466
|
+
for (const E of i)
|
|
467
|
+
for (const [k, z] of E)
|
|
468
|
+
z < t && (t = z), z > o && (o = z), -k < n && (n = -k), -k > l && (l = -k);
|
|
469
|
+
const c = 16, s = 2, u = c - s * 2, f = o - t, p = l - n, m = Math.max(f, p), d = m > 0 ? u / m : 0, g = s + (u - f * d) / 2, v = s + (u - p * d) / 2, x = (E) => Math.round(E * 100) / 100, L = ([E, k]) => `${x(g + (k - t) * d)},${x(v + (-E - n) * d)}`, $ = e === "polygon" || e === "multipolygon", y = e === "linestring" || e === "multilinestring", h = (E) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${E}</svg>`;
|
|
470
|
+
if ($) {
|
|
471
|
+
const E = i.filter((k) => k.length >= 3).map((k) => `M${ke(k).map(L).join("L")}Z`).join("");
|
|
472
|
+
return E ? h(
|
|
473
|
+
`<path d="${E}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
|
|
396
474
|
) : "";
|
|
397
475
|
}
|
|
398
|
-
if (
|
|
399
|
-
const
|
|
400
|
-
return
|
|
401
|
-
`<path d="${
|
|
476
|
+
if (y) {
|
|
477
|
+
const E = i.filter((k) => k.length >= 2).map((k) => `M${ke(k).map(L).join("L")}`).join("");
|
|
478
|
+
return E ? h(
|
|
479
|
+
`<path d="${E}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
|
|
402
480
|
) : "";
|
|
403
481
|
}
|
|
404
482
|
return "";
|
|
405
483
|
}
|
|
406
|
-
function
|
|
407
|
-
const i =
|
|
484
|
+
function fa(e, r, a) {
|
|
485
|
+
const i = N(r, "#00E08A"), t = (e || "").toLowerCase(), o = a !== void 0 ? pa(t, a, i) : "";
|
|
408
486
|
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
487
|
}
|
|
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) {
|
|
488
|
+
const De = 80;
|
|
489
|
+
function ae(e, r) {
|
|
429
490
|
const a = (r || "").trim().toLowerCase();
|
|
430
491
|
return a ? e.filter(
|
|
431
492
|
(i) => (i.name || "").toLowerCase().includes(a) || (i.category || "").toLowerCase().includes(a) || (i.type || "").toLowerCase().includes(a)
|
|
432
493
|
) : e;
|
|
433
494
|
}
|
|
434
|
-
function
|
|
435
|
-
var
|
|
495
|
+
function Pe(e, r, a) {
|
|
496
|
+
var p, m;
|
|
436
497
|
const i = (a || "").trim().toLowerCase();
|
|
437
498
|
if (!i) return null;
|
|
438
499
|
const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
|
|
439
|
-
for (const
|
|
440
|
-
t.set(
|
|
500
|
+
for (const d of e)
|
|
501
|
+
t.set(d.id, d), d.parentId && d.parentId !== d.id && (o.has(d.parentId) || o.set(d.parentId, []), o.get(d.parentId).push(d.id));
|
|
441
502
|
const n = /* @__PURE__ */ new Map();
|
|
442
|
-
for (const
|
|
443
|
-
const g =
|
|
444
|
-
n.has(g) || n.set(g, []), n.get(g).push(
|
|
445
|
-
}
|
|
446
|
-
const
|
|
447
|
-
for (const
|
|
448
|
-
(typeof
|
|
449
|
-
const
|
|
450
|
-
for (const
|
|
451
|
-
const g = /* @__PURE__ */ new Set([
|
|
452
|
-
let
|
|
453
|
-
for (;
|
|
454
|
-
g.add(
|
|
455
|
-
}
|
|
456
|
-
const
|
|
457
|
-
for (;
|
|
458
|
-
const
|
|
459
|
-
for (const g of o.get(
|
|
460
|
-
|
|
461
|
-
}
|
|
462
|
-
const
|
|
463
|
-
for (const
|
|
464
|
-
const g = n.get(
|
|
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
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
return
|
|
490
|
-
}
|
|
491
|
-
function
|
|
503
|
+
for (const d of r) {
|
|
504
|
+
const g = d.layerId || "";
|
|
505
|
+
n.has(g) || n.set(g, []), n.get(g).push(d);
|
|
506
|
+
}
|
|
507
|
+
const l = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set();
|
|
508
|
+
for (const d of e)
|
|
509
|
+
(typeof d.name == "string" ? d.name.toLowerCase() : "").includes(i) ? (l.add(d.id), c.add(d.id)) : ae(n.get(d.id) || [], i).length > 0 && c.add(d.id);
|
|
510
|
+
const s = new Set(c);
|
|
511
|
+
for (const d of c) {
|
|
512
|
+
const g = /* @__PURE__ */ new Set([d]);
|
|
513
|
+
let v = (p = t.get(d)) == null ? void 0 : p.parentId;
|
|
514
|
+
for (; v && t.has(v) && !g.has(v); )
|
|
515
|
+
g.add(v), s.add(v), v = (m = t.get(v)) == null ? void 0 : m.parentId;
|
|
516
|
+
}
|
|
517
|
+
const u = [...l];
|
|
518
|
+
for (; u.length > 0; ) {
|
|
519
|
+
const d = u.pop();
|
|
520
|
+
for (const g of o.get(d) || [])
|
|
521
|
+
s.has(g) || (s.add(g), u.push(g));
|
|
522
|
+
}
|
|
523
|
+
const f = /* @__PURE__ */ new Map();
|
|
524
|
+
for (const d of s) {
|
|
525
|
+
const g = n.get(d) || [];
|
|
526
|
+
f.set(d, l.has(d) ? g : ae(g, i));
|
|
527
|
+
}
|
|
528
|
+
return { camadasVisiveis: s, feicoesPorCamada: f };
|
|
529
|
+
}
|
|
530
|
+
function Te(e, r, a, i = "", t = De, o) {
|
|
531
|
+
const n = Pe(e, r, i), l = [], c = /* @__PURE__ */ new Map();
|
|
532
|
+
for (let f = 0; f < r.length; f++) {
|
|
533
|
+
const p = r[f];
|
|
534
|
+
if (!p || !p.id) continue;
|
|
535
|
+
const m = p.layerId || "";
|
|
536
|
+
c.has(m) || c.set(m, []), c.get(m).push(p);
|
|
537
|
+
}
|
|
538
|
+
const s = ve(e);
|
|
539
|
+
function u(f) {
|
|
540
|
+
const p = f.camada;
|
|
541
|
+
if (n && !n.camadasVisiveis.has(p.id) || !(n ? !0 : a.has(p.id))) return;
|
|
542
|
+
for (const x of f.subcamadas)
|
|
543
|
+
u(x);
|
|
544
|
+
const d = n ? n.feicoesPorCamada.get(p.id) || [] : c.get(p.id) || [], g = (o == null ? void 0 : o.get(p.id)) ?? t, v = d.slice(0, g);
|
|
545
|
+
for (let x = 0; x < v.length; x++)
|
|
546
|
+
l.push(v[x].id);
|
|
547
|
+
}
|
|
548
|
+
for (const f of s)
|
|
549
|
+
u(f);
|
|
550
|
+
return l;
|
|
551
|
+
}
|
|
552
|
+
function ma(e, r, a, i, t, o) {
|
|
492
553
|
if (!e.includes(i)) return null;
|
|
493
554
|
const n = new Set(r);
|
|
494
|
-
let
|
|
555
|
+
let l = a;
|
|
495
556
|
if (o && a && e.includes(a)) {
|
|
496
|
-
const
|
|
557
|
+
const c = e.indexOf(a), s = e.indexOf(i), u = Math.min(c, s), f = Math.max(c, s);
|
|
497
558
|
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:
|
|
559
|
+
for (let p = u; p <= f; p++)
|
|
560
|
+
n.add(e[p]);
|
|
561
|
+
} else t ? (n.has(i) ? n.delete(i) : n.add(i), l = i) : (n.clear(), n.add(i), l = i);
|
|
562
|
+
return { selecionados: n, ultimoClicadoId: l };
|
|
502
563
|
}
|
|
503
|
-
function
|
|
564
|
+
function be(e, r) {
|
|
504
565
|
if (e.size === 0) return;
|
|
505
566
|
const a = new Set(r.map((i) => i.id));
|
|
506
567
|
for (const i of e)
|
|
507
568
|
a.has(i) || e.delete(i);
|
|
508
569
|
}
|
|
509
|
-
function
|
|
570
|
+
function te(e, r, a) {
|
|
571
|
+
const i = /* @__PURE__ */ new Set();
|
|
572
|
+
let t = e.find((o) => o.id === r);
|
|
573
|
+
for (; t && t.parentId; ) {
|
|
574
|
+
if (i.has(t.id) || (i.add(t.id), t.parentId === a)) return !0;
|
|
575
|
+
t = e.find((o) => o.id === (t == null ? void 0 : t.parentId));
|
|
576
|
+
}
|
|
577
|
+
return !1;
|
|
578
|
+
}
|
|
579
|
+
function ga(e) {
|
|
580
|
+
return Number.isFinite(e) ? e < 0.25 ? "acima" : e > 0.75 ? "abaixo" : "dentro" : "dentro";
|
|
581
|
+
}
|
|
582
|
+
function va(e, r, a, i) {
|
|
583
|
+
if (!r || !a || r === a) return null;
|
|
584
|
+
const t = e.find((s) => s.id === r), o = e.find((s) => s.id === a);
|
|
585
|
+
if (!t || !o) return null;
|
|
586
|
+
const n = t.parentId !== void 0 ? t.parentId : null;
|
|
587
|
+
if (i === "dentro")
|
|
588
|
+
return te(e, o.id, t.id) ? null : (t.parentId = o.id, { tipo: "hierarquia", camada: t, novoParentId: o.id, parentAnteriorId: n });
|
|
589
|
+
const l = e.findIndex((s) => s.id === r);
|
|
590
|
+
e.splice(l, 1);
|
|
591
|
+
const c = e.findIndex((s) => s.id === a);
|
|
592
|
+
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 };
|
|
593
|
+
}
|
|
594
|
+
function ba(e, r, a, i) {
|
|
595
|
+
if (!r || !a || r === a) return !1;
|
|
596
|
+
const t = e.findIndex((l) => l.id === r);
|
|
597
|
+
if (t === -1) return !1;
|
|
598
|
+
const [o] = e.splice(t, 1), n = e.findIndex((l) => l.id === a);
|
|
599
|
+
return n === -1 ? e.push(o) : e.splice(i ? n : n + 1, 0, o), !0;
|
|
600
|
+
}
|
|
601
|
+
function ha(e, r, a, i) {
|
|
602
|
+
const t = e.find((l) => l.id === a), o = r.find((l) => l.id === i);
|
|
603
|
+
if (!t || !o || t.layerId === i) return null;
|
|
604
|
+
const n = t.layerId;
|
|
605
|
+
return t.layerId = i, { feicao: t, camadaOrigemId: n, camadaDestinoId: i, mudouDeCamada: !0 };
|
|
606
|
+
}
|
|
607
|
+
function xa(e, r, a, i) {
|
|
608
|
+
if (!r || !a || r === a) return null;
|
|
609
|
+
const t = e.findIndex((f) => f.id === r);
|
|
610
|
+
if (t === -1) return null;
|
|
611
|
+
const o = e.find((f) => f.id === a);
|
|
612
|
+
if (!o) return null;
|
|
613
|
+
const [n] = e.splice(t, 1), l = n.layerId, c = o.layerId, s = l !== c;
|
|
614
|
+
s && (n.layerId = c);
|
|
615
|
+
const u = e.findIndex((f) => f.id === a);
|
|
616
|
+
return u === -1 ? e.push(n) : e.splice(i ? u : u + 1, 0, n), { feicao: n, camadaOrigemId: l, camadaDestinoId: c, mudouDeCamada: s };
|
|
617
|
+
}
|
|
618
|
+
function ya(e) {
|
|
510
619
|
const {
|
|
511
620
|
camadas: r,
|
|
512
621
|
feicoes: a,
|
|
@@ -514,91 +623,101 @@ function ra(e) {
|
|
|
514
623
|
expandedLayers: t,
|
|
515
624
|
selectedFeatureIds: o,
|
|
516
625
|
activeSettingsLayerId: n,
|
|
517
|
-
editingLayerId:
|
|
518
|
-
editingFeatureId:
|
|
519
|
-
searchQuery:
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
626
|
+
editingLayerId: l,
|
|
627
|
+
editingFeatureId: c,
|
|
628
|
+
searchQuery: s,
|
|
629
|
+
titulo: u = "CAMADAS",
|
|
630
|
+
mostrarBusca: f = !0,
|
|
631
|
+
limitesPorCamada: p,
|
|
632
|
+
limiteFeicoesPorCamada: m = De,
|
|
633
|
+
mostrarBotaoColapsar: d = !1
|
|
634
|
+
} = e, g = (s || "").trim().toLowerCase(), v = Pe(r, a, g), x = /* @__PURE__ */ new Map();
|
|
635
|
+
for (let S = 0; S < a.length; S++) {
|
|
636
|
+
const w = a[S];
|
|
637
|
+
if (!w || !w.id) continue;
|
|
638
|
+
const M = w.layerId || "";
|
|
639
|
+
x.has(M) || x.set(M, []), x.get(M).push(w);
|
|
640
|
+
}
|
|
641
|
+
const L = r.every((S) => S.visible !== !1), $ = r.length > 0 && r.every((S) => t.has(S.id)), y = f ? `
|
|
642
|
+
<div class="ui-tree-search-wrapper" part="busca">
|
|
643
|
+
<span class="ui-tree-search-icon">${b.busca}</span>
|
|
644
|
+
<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="${F(
|
|
645
|
+
s
|
|
646
|
+
)}" />
|
|
647
|
+
${s ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${b.fechar}</button>` : ""}
|
|
648
|
+
</div>
|
|
649
|
+
` : "", h = `
|
|
650
|
+
<div class="ui-tree-toolbar" part="toolbar">
|
|
529
651
|
<div class="ui-tree-title-group">
|
|
530
|
-
<span class="ui-tree-section-title"
|
|
652
|
+
<span class="ui-tree-section-title">${F(u || "CAMADAS")}</span>
|
|
531
653
|
<span class="ui-tree-count-badge">${r.length}</span>
|
|
532
654
|
</div>
|
|
533
655
|
<div class="ui-tree-actions">
|
|
534
|
-
<button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${
|
|
535
|
-
${
|
|
656
|
+
<button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${L ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${L ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
|
|
657
|
+
${L ? b.olhoAberto : b.olhoFechado}
|
|
536
658
|
</button>
|
|
537
|
-
<button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${
|
|
538
|
-
<span class="ui-chevron-icon ${
|
|
659
|
+
<button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${$ ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${$ ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
|
|
660
|
+
<span class="ui-chevron-icon ${$ ? "open" : ""}">${b.chevronDir}</span>
|
|
539
661
|
</button>
|
|
540
662
|
<button id="btn-add-group" class="ui-tree-btn-group" title="Criar grupo / pasta de camadas" aria-label="Criar grupo de camadas">
|
|
541
|
-
${
|
|
663
|
+
${b.moverPasta} Grupo
|
|
542
664
|
</button>
|
|
543
665
|
<button id="btn-add-layer" class="ui-tree-btn-new" title="Adicionar nova camada vetorial">
|
|
544
|
-
${
|
|
666
|
+
${b.mais} Camada
|
|
545
667
|
</button>
|
|
546
|
-
${
|
|
668
|
+
${d ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>` : ""}
|
|
547
669
|
</div>
|
|
548
670
|
</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>' : "";
|
|
671
|
+
${y}
|
|
672
|
+
`, E = (S) => {
|
|
673
|
+
const w = S.camada;
|
|
674
|
+
if (v && !v.camadasVisiveis.has(w.id)) return "";
|
|
675
|
+
const M = S.depth, D = S.subcamadas, H = v ? D.filter((I) => v.camadasVisiveis.has(I.camada.id)) : D, G = !!(w.isGroup || D.length > 0), C = F(w.id), _ = F(w.name || (G ? "Novo Grupo" : "Camada")), O = N(w.color, "#00E08A"), X = w.visible !== !1, V = w.locked === !0, Q = g ? !0 : t.has(w.id), ie = n === w.id, oe = i === w.id, B = v ? v.feicoesPorCamada.get(w.id) || [] : x.get(w.id) || [], ne = v ? B : re(r, a, w.id), he = ne.length > 0 && ne.every((I) => o.has(I.id)), He = !he && ne.some((I) => o.has(I.id)), W = (p == null ? void 0 : p.get(w.id)) ?? m, Ge = B.slice(0, W), Ve = B.length > W, Ue = B.length - W, Ye = Ge.map((I) => {
|
|
676
|
+
const R = F(I.id), ye = F(I.name || "Feição"), we = N(I.color, O), J = I.visible !== !1, se = V, le = I.locked === !0 || se, Ae = se ? "Bloqueada pela camada" : le ? "Desbloquear Feição" : "Bloquear Feição", Z = o.has(I.id), Je = I.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
|
|
562
677
|
return `
|
|
563
|
-
<div class="ui-feat-row ${
|
|
564
|
-
<div class="ui-col ui-col-eye" data-feat-eye="${
|
|
565
|
-
${
|
|
678
|
+
<div class="ui-feat-row ${Z ? "selected-row" : ""} ${J ? "" : "hidden-row"}" data-feat-row="${R}" data-feat-select="${R}" data-feat-layer="${C}" role="treeitem" aria-selected="${Z}" tabindex="-1" draggable="true" part="${Z ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${M + 1};" title="Clique para selecionar | Arraste para reordenar">
|
|
679
|
+
<div class="ui-col ui-col-eye" data-feat-eye="${R}" role="button" tabindex="0" aria-label="${J ? "Ocultar Feição" : "Exibir Feição"}" title="${J ? "Ocultar Feição" : "Exibir Feição"}">
|
|
680
|
+
${J ? b.olhoAberto : b.olhoFechado}
|
|
566
681
|
</div>
|
|
567
682
|
|
|
568
|
-
<div class="ui-col ui-col-lock ${
|
|
569
|
-
${
|
|
683
|
+
<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}">
|
|
684
|
+
${le ? b.cadeadoTrancado : b.cadeadoAberto}
|
|
570
685
|
</div>
|
|
571
686
|
|
|
572
|
-
<div class="ui-col ui-col-colorbar" style="background: ${
|
|
687
|
+
<div class="ui-col ui-col-colorbar" style="background: ${we};"></div>
|
|
573
688
|
<div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
|
|
574
689
|
<div class="ui-col ui-col-thumb">
|
|
575
|
-
<div class="ui-thumb-box">${
|
|
690
|
+
<div class="ui-thumb-box">${fa(I.type || I.geometryType, we, I.coordinates)}</div>
|
|
576
691
|
</div>
|
|
577
692
|
|
|
578
|
-
<div class="ui-col ui-col-name" data-feat-name-trigger="${
|
|
579
|
-
${
|
|
693
|
+
<div class="ui-col ui-col-name" data-feat-name-trigger="${R}" title="Duplo clique para renomear">
|
|
694
|
+
${c === I.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
695
|
</div>
|
|
581
696
|
|
|
582
697
|
<div class="ui-col ui-col-actions">
|
|
583
|
-
<button class="ui-micro-btn" data-feat-fit="${
|
|
698
|
+
<button class="ui-micro-btn" data-feat-fit="${R}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${b.alvoEnquadrar}</button>
|
|
584
699
|
</div>
|
|
585
700
|
|
|
586
|
-
<div class="ui-col ui-col-target" data-feat-target="${
|
|
587
|
-
<div class="ui-target-circle ${
|
|
701
|
+
<div class="ui-col ui-col-target" data-feat-target="${R}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
|
|
702
|
+
<div class="ui-target-circle ${Z ? "selected" : ""}"></div>
|
|
588
703
|
</div>
|
|
589
704
|
</div>
|
|
590
705
|
`;
|
|
591
|
-
}).join(""),
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
706
|
+
}).join(""), Ke = Ve ? `<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));">
|
|
707
|
+
<span>Exibindo ${W} de ${B.length} feições. Use a busca acima para filtrar.</span>
|
|
708
|
+
<button type="button" class="ui-truncate-more-btn" data-layer-show-more="${C}" 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>
|
|
709
|
+
</div>` : "", xe = w.opacity !== void 0 ? w.opacity : 1, _e = Math.round(xe * 100), Xe = r.filter((I) => I.id !== w.id && !te(r, I.id, w.id)).map(
|
|
710
|
+
(I) => `<option value="${F(I.id)}" ${w.parentId === I.id ? "selected" : ""}>${I.isGroup ? "📁 " : ""}${F(I.name)}</option>`
|
|
711
|
+
).join(""), Qe = ie ? `
|
|
712
|
+
<div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${O};">
|
|
595
713
|
<div class="ui-drawer-header">
|
|
596
714
|
<div class="ui-drawer-header-left">
|
|
597
|
-
<span class="ui-drawer-icon">${
|
|
715
|
+
<span class="ui-drawer-icon">${b.engrenagem}</span>
|
|
598
716
|
<span class="ui-drawer-title">Configurações da Camada</span>
|
|
717
|
+
<span class="ui-drawer-layer-chip" title="${_}">${_}</span>
|
|
599
718
|
</div>
|
|
600
|
-
<button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${
|
|
601
|
-
${
|
|
719
|
+
<button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${C}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
|
|
720
|
+
${b.fechar}
|
|
602
721
|
</button>
|
|
603
722
|
</div>
|
|
604
723
|
|
|
@@ -610,9 +729,9 @@ function ra(e) {
|
|
|
610
729
|
</div>
|
|
611
730
|
<div class="ui-drawer-color-group">
|
|
612
731
|
<label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
|
|
613
|
-
<span class="ui-drawer-color-sample" id="sample-color-${
|
|
614
|
-
<span class="ui-drawer-color-hex" id="hex-color-${
|
|
615
|
-
<input type="color" aria-label="Cor da camada" data-layer-color-picker="${
|
|
732
|
+
<span class="ui-drawer-color-sample" id="sample-color-${C}" style="background-color: ${O};"></span>
|
|
733
|
+
<span class="ui-drawer-color-hex" id="hex-color-${C}">${O.toUpperCase()}</span>
|
|
734
|
+
<input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Me(O, "#00e08a")}" class="ui-drawer-color-native" />
|
|
616
735
|
</label>
|
|
617
736
|
</div>
|
|
618
737
|
</div>
|
|
@@ -621,10 +740,10 @@ function ra(e) {
|
|
|
621
740
|
<div class="ui-drawer-row">
|
|
622
741
|
<div class="ui-drawer-row-label">
|
|
623
742
|
<span>Opacidade</span>
|
|
624
|
-
<span class="ui-drawer-badge" id="badge-op-${
|
|
743
|
+
<span class="ui-drawer-badge" id="badge-op-${C}">${_e}%</span>
|
|
625
744
|
</div>
|
|
626
745
|
<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(
|
|
746
|
+
<input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(xe) || 0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
|
|
628
747
|
</div>
|
|
629
748
|
</div>
|
|
630
749
|
|
|
@@ -634,9 +753,9 @@ function ra(e) {
|
|
|
634
753
|
<span>Pertence ao Grupo</span>
|
|
635
754
|
</div>
|
|
636
755
|
<div class="ui-drawer-select-wrapper">
|
|
637
|
-
<select class="ui-drawer-select" data-layer-parent-select="${
|
|
638
|
-
<option value="" ${
|
|
639
|
-
${
|
|
756
|
+
<select class="ui-drawer-select" data-layer-parent-select="${C}" aria-label="Grupo pai da camada">
|
|
757
|
+
<option value="" ${w.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
|
|
758
|
+
${Xe}
|
|
640
759
|
</select>
|
|
641
760
|
</div>
|
|
642
761
|
</div>
|
|
@@ -644,76 +763,76 @@ function ra(e) {
|
|
|
644
763
|
|
|
645
764
|
<div class="ui-drawer-footer">
|
|
646
765
|
<div class="ui-drawer-meta-info">
|
|
647
|
-
<span>${
|
|
766
|
+
<span>${D.length > 0 ? `${D.length} subcamadas · ` : ""}${B.length} ${B.length === 1 ? "feição" : "feições"}</span>
|
|
648
767
|
</div>
|
|
649
768
|
<div class="ui-drawer-actions">
|
|
650
|
-
<button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${
|
|
651
|
-
${
|
|
769
|
+
<button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${C}" title="Adicionar nova camada dentro desta">
|
|
770
|
+
${b.mais} Subcamada
|
|
652
771
|
</button>
|
|
653
|
-
<button type="button" class="ui-drawer-btn-danger" data-delete-layer="${
|
|
654
|
-
${
|
|
772
|
+
<button type="button" class="ui-drawer-btn-danger" data-delete-layer="${C}" title="Excluir esta camada e suas feições">
|
|
773
|
+
${b.lixeira}
|
|
655
774
|
<span class="ui-btn-label">Excluir</span>
|
|
656
775
|
</button>
|
|
657
776
|
</div>
|
|
658
777
|
</div>
|
|
659
778
|
</div>
|
|
660
|
-
` : "",
|
|
779
|
+
` : "", We = H.map((I) => E(I)).join("");
|
|
661
780
|
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">${
|
|
781
|
+
<div class="ui-layer-group ${M > 0 ? "is-sublayer-group" : ""}" data-layer-id="${C}" data-layer-depth="${M}" role="treeitem" aria-expanded="${Q}" part="grupo" style="--layer-active-color: ${O};">
|
|
782
|
+
<div class="ui-layer-row ${X ? "" : "hidden-layer"} ${oe ? "active-drawing-layer" : ""} ${M > 0 ? "is-sublayer" : ""} ${G ? "is-group-row" : ""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${oe ? "camada camada-ativa" : "camada"}" ${oe ? 'aria-current="true"' : ""} style="--layer-depth: ${M};">
|
|
783
|
+
<div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${b.dragHandle}</div>
|
|
665
784
|
|
|
666
|
-
<div class="ui-col ui-col-eye" data-layer-eye="${
|
|
667
|
-
${
|
|
785
|
+
<div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${X ? "Ocultar Camada" : "Exibir Camada"}" title="${X ? "Ocultar Camada" : "Exibir Camada"}">
|
|
786
|
+
${X ? b.olhoAberto : b.olhoFechado}
|
|
668
787
|
</div>
|
|
669
788
|
|
|
670
|
-
<div class="ui-col ui-col-lock ${
|
|
671
|
-
${
|
|
789
|
+
<div class="ui-col ui-col-lock ${V ? "" : "ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${V ? "Desbloquear Camada" : "Bloquear Camada"}" title="${V ? "Desbloquear Camada" : "Bloquear Camada"}">
|
|
790
|
+
${V ? b.cadeadoTrancado : b.cadeadoAberto}
|
|
672
791
|
</div>
|
|
673
792
|
|
|
674
|
-
<div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${
|
|
793
|
+
<div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" 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
794
|
|
|
676
|
-
<div class="ui-col ui-col-chevron" data-layer-expand="${
|
|
677
|
-
<span class="ui-chevron-icon ${
|
|
795
|
+
<div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${Q ? "Recolher grupo" : "Expandir grupo"}">
|
|
796
|
+
<span class="ui-chevron-icon ${Q ? "open" : ""}">${b.chevronDir}</span>
|
|
678
797
|
</div>
|
|
679
798
|
|
|
680
|
-
<div class="ui-col ui-col-name" data-layer-name-trigger="${
|
|
681
|
-
${
|
|
682
|
-
<span class="ui-name-text">${
|
|
683
|
-
${
|
|
799
|
+
<div class="ui-col ui-col-name" data-layer-name-trigger="${C}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
|
|
800
|
+
${l === w.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${_}" />` : `${G ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${b.moverPasta}</span>` : ""}
|
|
801
|
+
<span class="ui-name-text">${_}</span>
|
|
802
|
+
${B.length > 0 || !G ? `<span class="ui-count-chip" title="${B.length} ${B.length === 1 ? "feição" : "feições"}${D.length > 0 ? ` · ${D.length} subcamadas` : ""}">${B.length}</span>` : ""}`}
|
|
684
803
|
</div>
|
|
685
804
|
|
|
686
805
|
<div class="ui-col ui-col-actions">
|
|
687
|
-
<button class="ui-micro-btn" data-layer-fit="${
|
|
688
|
-
<button class="ui-micro-btn ${
|
|
806
|
+
<button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
|
|
807
|
+
<button class="ui-micro-btn ${ie ? "active" : ""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${ie}">${b.engrenagem}</button>
|
|
689
808
|
</div>
|
|
690
809
|
|
|
691
|
-
<div class="ui-col ui-col-target" data-layer-target="${
|
|
692
|
-
<div class="ui-target-circle ${
|
|
810
|
+
<div class="ui-col ui-col-target" data-layer-target="${C}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
|
|
811
|
+
<div class="ui-target-circle ${he ? "selected" : He ? "partial" : ""}"></div>
|
|
693
812
|
</div>
|
|
694
813
|
</div>
|
|
695
814
|
|
|
696
|
-
${
|
|
815
|
+
${Qe}
|
|
697
816
|
|
|
698
|
-
<div class="ui-children-container ${
|
|
699
|
-
${
|
|
700
|
-
${
|
|
701
|
-
${
|
|
702
|
-
${
|
|
817
|
+
<div class="ui-children-container ${M > 0 ? "is-subchildren" : ""}" role="group" style="display: ${Q ? "block" : "none"};">
|
|
818
|
+
${We}
|
|
819
|
+
${Ye}
|
|
820
|
+
${Ke}
|
|
821
|
+
${H.length === 0 && B.length === 0 ? `<div class="ui-empty-row"><span>${G ? "Grupo vazio (adicione subcamadas ou feições)" : "Nenhum elemento neste grupo"}</span></div>` : ""}
|
|
703
822
|
</div>
|
|
704
823
|
</div>
|
|
705
824
|
`;
|
|
706
|
-
},
|
|
825
|
+
}, k = ve(r), z = v && v.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${F((s || "").trim())}”</div>` : k.map((S) => E(S)).join("");
|
|
707
826
|
return `
|
|
708
|
-
${
|
|
827
|
+
${h}
|
|
709
828
|
<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
|
-
${
|
|
829
|
+
<div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true" part="arvore">
|
|
830
|
+
${z}
|
|
712
831
|
</div>
|
|
713
832
|
</div>
|
|
714
833
|
`;
|
|
715
834
|
}
|
|
716
|
-
function
|
|
835
|
+
function wa(e) {
|
|
717
836
|
return [
|
|
718
837
|
{
|
|
719
838
|
gatilho: "data-layer-name-trigger",
|
|
@@ -741,83 +860,36 @@ function ta(e) {
|
|
|
741
860
|
}
|
|
742
861
|
];
|
|
743
862
|
}
|
|
744
|
-
function
|
|
745
|
-
for (const a of
|
|
863
|
+
function Aa(e, r) {
|
|
864
|
+
for (const a of wa(e))
|
|
746
865
|
r.querySelectorAll(`[${a.gatilho}]`).forEach((i) => {
|
|
747
866
|
i.addEventListener("dblclick", (t) => {
|
|
748
867
|
t.stopPropagation();
|
|
749
868
|
const o = i.getAttribute(a.gatilho);
|
|
750
869
|
if (!o) return;
|
|
751
870
|
a.marcarEditando(o), e.solicitarRenderizacao();
|
|
752
|
-
const n =
|
|
871
|
+
const n = T(r, a.input, o);
|
|
753
872
|
if (!n) return;
|
|
754
873
|
n.focus(), n.select();
|
|
755
|
-
let
|
|
756
|
-
const
|
|
757
|
-
var
|
|
758
|
-
if (!
|
|
759
|
-
if (
|
|
760
|
-
const
|
|
761
|
-
|
|
874
|
+
let l = !1;
|
|
875
|
+
const c = (s) => {
|
|
876
|
+
var u;
|
|
877
|
+
if (!l) {
|
|
878
|
+
if (l = !0, a.marcarEditando(null), s) {
|
|
879
|
+
const f = a.aplicar(o, n.value.trim());
|
|
880
|
+
f && (f.salvar && ((u = e.salvarLembrancaEstado) == null || u.call(e)), a.emitir(f.detalhe));
|
|
762
881
|
}
|
|
763
882
|
e.solicitarRenderizacao();
|
|
764
883
|
}
|
|
765
884
|
};
|
|
766
|
-
n.addEventListener("keydown", (
|
|
767
|
-
|
|
768
|
-
}), n.addEventListener("blur", () =>
|
|
885
|
+
n.addEventListener("keydown", (s) => {
|
|
886
|
+
s.key === "Enter" ? (s.preventDefault(), c(!0)) : s.key === "Escape" && (s.preventDefault(), c(!1));
|
|
887
|
+
}), n.addEventListener("blur", () => c(!0));
|
|
769
888
|
});
|
|
770
889
|
});
|
|
771
890
|
}
|
|
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 {
|
|
891
|
+
const Ea = ["dragging", "drop-above", "drop-below", "drop-into"];
|
|
892
|
+
class ka {
|
|
821
893
|
constructor(r, a) {
|
|
822
894
|
A(this, "host");
|
|
823
895
|
A(this, "shadow");
|
|
@@ -834,11 +906,11 @@ class pa {
|
|
|
834
906
|
(r = this.cancelarToque) == null || r.call(this), this.cancelarToque = null;
|
|
835
907
|
}
|
|
836
908
|
bindInlineRename() {
|
|
837
|
-
|
|
909
|
+
Aa(this.host, this.shadow);
|
|
838
910
|
}
|
|
839
911
|
limparClassesDeArraste() {
|
|
840
912
|
this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((r) => {
|
|
841
|
-
r.classList.remove(...
|
|
913
|
+
r.classList.remove(...Ea);
|
|
842
914
|
});
|
|
843
915
|
}
|
|
844
916
|
/** Depois de qualquer mudança na ordem/hierarquia de camadas. */
|
|
@@ -862,71 +934,77 @@ class pa {
|
|
|
862
934
|
this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((t) => {
|
|
863
935
|
const o = t.getAttribute("data-layer-id");
|
|
864
936
|
o && (t.addEventListener("dragstart", (n) => {
|
|
865
|
-
const
|
|
866
|
-
if (this.arrasteBloqueado(
|
|
867
|
-
|
|
937
|
+
const l = n;
|
|
938
|
+
if (this.arrasteBloqueado(l.target)) {
|
|
939
|
+
l.preventDefault();
|
|
868
940
|
return;
|
|
869
941
|
}
|
|
870
|
-
r = "layer", a = o,
|
|
942
|
+
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
943
|
}), t.addEventListener("dragover", (n) => {
|
|
872
|
-
const
|
|
873
|
-
if (
|
|
944
|
+
const l = n;
|
|
945
|
+
if (l.preventDefault(), l.stopPropagation(), l.dataTransfer && (l.dataTransfer.dropEffect = "move"), r === "layer") {
|
|
874
946
|
if (a === o) return;
|
|
875
|
-
const
|
|
876
|
-
t.classList.toggle("drop-above",
|
|
947
|
+
const c = t.getBoundingClientRect(), s = ga((l.clientY - c.top) / c.height);
|
|
948
|
+
t.classList.toggle("drop-above", s === "acima"), t.classList.toggle("drop-below", s === "abaixo"), t.classList.toggle("drop-into", s === "dentro");
|
|
877
949
|
} else r === "feature" && t.classList.add("drop-into");
|
|
878
950
|
}), t.addEventListener("dragleave", (n) => {
|
|
879
|
-
const
|
|
880
|
-
|
|
951
|
+
const l = n.relatedTarget;
|
|
952
|
+
l && t.contains(l) || t.classList.remove("drop-above", "drop-below", "drop-into");
|
|
881
953
|
}), t.addEventListener("drop", (n) => {
|
|
882
|
-
var
|
|
883
|
-
const
|
|
884
|
-
|
|
885
|
-
const
|
|
954
|
+
var s;
|
|
955
|
+
const l = n;
|
|
956
|
+
l.preventDefault(), l.stopPropagation();
|
|
957
|
+
const c = t.classList.contains("drop-into") ? "dentro" : t.classList.contains("drop-above") ? "acima" : "abaixo";
|
|
886
958
|
if (this.limparClassesDeArraste(), r === "layer") {
|
|
887
|
-
if (!a || a === o || !this.host.camadas.some((
|
|
888
|
-
const
|
|
889
|
-
(
|
|
890
|
-
camadaId:
|
|
891
|
-
novoParentId:
|
|
892
|
-
|
|
893
|
-
|
|
959
|
+
if (!a || a === o || !this.host.camadas.some((f) => f.id === a) || !this.host.camadas.some((f) => f.id === o)) return;
|
|
960
|
+
const u = va(this.host.camadas, a, o, c);
|
|
961
|
+
(u == null ? void 0 : u.tipo) === "hierarquia" ? ((s = this.host.expandedLayers) == null || s.add(u.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
|
|
962
|
+
camadaId: u.camada.id,
|
|
963
|
+
novoParentId: u.novoParentId,
|
|
964
|
+
parentAnteriorId: u.parentAnteriorId,
|
|
965
|
+
camada: u.camada
|
|
966
|
+
})) : u && u.parentAnteriorId !== u.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
|
|
967
|
+
camadaId: u.camada.id,
|
|
968
|
+
novoParentId: u.novoParentId,
|
|
969
|
+
parentAnteriorId: u.parentAnteriorId,
|
|
970
|
+
camada: u.camada
|
|
971
|
+
}), this.aposReordenarCamadas();
|
|
894
972
|
} else if (r === "feature") {
|
|
895
973
|
if (!i) return;
|
|
896
|
-
const
|
|
897
|
-
|
|
974
|
+
const u = ha(this.host.feicoes, this.host.camadas, i, o);
|
|
975
|
+
u && (this.emitirFeicaoMovida(u), this.host.solicitarRenderizacao());
|
|
898
976
|
}
|
|
899
977
|
}), t.addEventListener("dragend", () => {
|
|
900
978
|
r = null, a = null, i = null, this.limparClassesDeArraste();
|
|
901
979
|
}));
|
|
902
980
|
}), this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach((t) => {
|
|
903
981
|
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
|
-
|
|
982
|
+
o && (t.addEventListener("dragstart", (l) => {
|
|
983
|
+
const c = l;
|
|
984
|
+
if (this.arrasteBloqueado(c.target)) {
|
|
985
|
+
c.preventDefault();
|
|
908
986
|
return;
|
|
909
987
|
}
|
|
910
|
-
|
|
911
|
-
}), t.addEventListener("dragover", (
|
|
912
|
-
const
|
|
988
|
+
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");
|
|
989
|
+
}), t.addEventListener("dragover", (l) => {
|
|
990
|
+
const c = l;
|
|
913
991
|
if (r !== "feature" || i === o) return;
|
|
914
|
-
|
|
915
|
-
const
|
|
916
|
-
t.classList.toggle("drop-above",
|
|
917
|
-
}), t.addEventListener("dragleave", (
|
|
918
|
-
const
|
|
919
|
-
|
|
920
|
-
}), t.addEventListener("drop", (
|
|
921
|
-
const
|
|
992
|
+
c.preventDefault(), c.stopPropagation(), c.dataTransfer && (c.dataTransfer.dropEffect = "move");
|
|
993
|
+
const s = t.getBoundingClientRect(), u = c.clientY - s.top < s.height / 2;
|
|
994
|
+
t.classList.toggle("drop-above", u), t.classList.toggle("drop-below", !u);
|
|
995
|
+
}), t.addEventListener("dragleave", (l) => {
|
|
996
|
+
const c = l.relatedTarget;
|
|
997
|
+
c && t.contains(c) || t.classList.remove("drop-above", "drop-below");
|
|
998
|
+
}), t.addEventListener("drop", (l) => {
|
|
999
|
+
const c = l;
|
|
922
1000
|
if (r !== "feature" || !i || i === o) return;
|
|
923
|
-
|
|
924
|
-
const
|
|
1001
|
+
c.preventDefault(), c.stopPropagation();
|
|
1002
|
+
const s = t.classList.contains("drop-above");
|
|
925
1003
|
this.limparClassesDeArraste();
|
|
926
|
-
const
|
|
927
|
-
|
|
928
|
-
}), t.addEventListener("dragend", (
|
|
929
|
-
|
|
1004
|
+
const u = xa(this.host.feicoes, i, o, s);
|
|
1005
|
+
u && (u.mudouDeCamada && this.emitirFeicaoMovida(u), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
|
|
1006
|
+
}), t.addEventListener("dragend", (l) => {
|
|
1007
|
+
l.stopPropagation(), r = null, i = null, a = null, this.limparClassesDeArraste();
|
|
930
1008
|
}));
|
|
931
1009
|
});
|
|
932
1010
|
}
|
|
@@ -940,40 +1018,40 @@ class pa {
|
|
|
940
1018
|
if (!a) return;
|
|
941
1019
|
const i = a.getAttribute("data-layer-id");
|
|
942
1020
|
i && r.addEventListener("pointerdown", (t) => {
|
|
943
|
-
var
|
|
1021
|
+
var f;
|
|
944
1022
|
const o = t;
|
|
945
1023
|
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(
|
|
951
|
-
if (n && n !==
|
|
952
|
-
n =
|
|
953
|
-
const g =
|
|
954
|
-
|
|
1024
|
+
(f = this.cancelarToque) == null || f.call(this);
|
|
1025
|
+
let n = null, l = !1;
|
|
1026
|
+
const c = (p) => {
|
|
1027
|
+
p.preventDefault(), a.classList.add("dragging");
|
|
1028
|
+
const m = this.shadow.elementFromPoint(p.clientX, p.clientY), d = m ? m.closest(".ui-layer-row") : null;
|
|
1029
|
+
if (n && n !== d && n.classList.remove("drop-above", "drop-below"), d && d !== a) {
|
|
1030
|
+
n = d;
|
|
1031
|
+
const g = d.getBoundingClientRect();
|
|
1032
|
+
l = p.clientY - g.top < g.height / 2, d.classList.toggle("drop-above", l), d.classList.toggle("drop-below", !l);
|
|
955
1033
|
} else
|
|
956
1034
|
n = null;
|
|
957
|
-
},
|
|
958
|
-
window.removeEventListener("pointermove",
|
|
959
|
-
},
|
|
960
|
-
|
|
961
|
-
const
|
|
962
|
-
this.limparClassesDeArraste(),
|
|
1035
|
+
}, s = () => {
|
|
1036
|
+
window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", u), window.removeEventListener("pointercancel", u), this.cancelarToque = null;
|
|
1037
|
+
}, u = () => {
|
|
1038
|
+
s();
|
|
1039
|
+
const p = n == null ? void 0 : n.getAttribute("data-layer-id");
|
|
1040
|
+
this.limparClassesDeArraste(), p && ba(this.host.camadas, i, p, l) && this.aposReordenarCamadas();
|
|
963
1041
|
};
|
|
964
1042
|
this.cancelarToque = () => {
|
|
965
|
-
|
|
966
|
-
}, window.addEventListener("pointermove",
|
|
1043
|
+
s(), this.limparClassesDeArraste();
|
|
1044
|
+
}, window.addEventListener("pointermove", c, { passive: !1 }), window.addEventListener("pointerup", u), window.addEventListener("pointercancel", u);
|
|
967
1045
|
});
|
|
968
1046
|
});
|
|
969
1047
|
}
|
|
970
1048
|
}
|
|
971
|
-
const
|
|
972
|
-
function
|
|
1049
|
+
const Ia = "ui_camadas_estado_";
|
|
1050
|
+
function La(e, r) {
|
|
973
1051
|
const a = (e || r || "default").trim();
|
|
974
|
-
return `${
|
|
1052
|
+
return `${Ia}${a}`;
|
|
975
1053
|
}
|
|
976
|
-
function
|
|
1054
|
+
function fe(e) {
|
|
977
1055
|
if (typeof window > "u" || typeof localStorage > "u")
|
|
978
1056
|
return null;
|
|
979
1057
|
try {
|
|
@@ -987,7 +1065,7 @@ function ie(e) {
|
|
|
987
1065
|
}
|
|
988
1066
|
return null;
|
|
989
1067
|
}
|
|
990
|
-
function
|
|
1068
|
+
function Ca(e, r) {
|
|
991
1069
|
if (!(typeof window > "u" || typeof localStorage > "u"))
|
|
992
1070
|
try {
|
|
993
1071
|
localStorage.setItem(e, JSON.stringify(r));
|
|
@@ -995,14 +1073,14 @@ function ga(e, r) {
|
|
|
995
1073
|
console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
|
|
996
1074
|
}
|
|
997
1075
|
}
|
|
998
|
-
function
|
|
1076
|
+
function $a(e) {
|
|
999
1077
|
if (!(typeof window > "u" || typeof localStorage > "u"))
|
|
1000
1078
|
try {
|
|
1001
1079
|
localStorage.removeItem(e);
|
|
1002
1080
|
} catch {
|
|
1003
1081
|
}
|
|
1004
1082
|
}
|
|
1005
|
-
function
|
|
1083
|
+
function Re(e) {
|
|
1006
1084
|
return {
|
|
1007
1085
|
name: e.name,
|
|
1008
1086
|
visible: e.visible !== !1,
|
|
@@ -1012,51 +1090,57 @@ function Le(e) {
|
|
|
1012
1090
|
parentId: e.parentId !== void 0 ? e.parentId : null
|
|
1013
1091
|
};
|
|
1014
1092
|
}
|
|
1015
|
-
function
|
|
1093
|
+
function Sa(e, r, a, i) {
|
|
1094
|
+
var f;
|
|
1016
1095
|
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) || []),
|
|
1096
|
+
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
1097
|
for (let p = 0; p < e.length; p++) {
|
|
1019
|
-
const
|
|
1020
|
-
if (i == null || i.set(
|
|
1021
|
-
const
|
|
1022
|
-
var
|
|
1023
|
-
const
|
|
1024
|
-
return
|
|
1098
|
+
const m = e[p], d = t[m.id];
|
|
1099
|
+
if (i == null || i.set(m.id, Re(m)), d) {
|
|
1100
|
+
const g = d.origem, v = (x) => {
|
|
1101
|
+
var $;
|
|
1102
|
+
const L = ($ = i == null ? void 0 : i.get(m.id)) == null ? void 0 : $[x];
|
|
1103
|
+
return g !== void 0 && g[x] !== L;
|
|
1025
1104
|
};
|
|
1026
|
-
typeof
|
|
1105
|
+
typeof d.name == "string" && d.name.trim() && !v("name") && (m.name = d.name), typeof d.visible == "boolean" && !v("visible") && (m.visible = d.visible), typeof d.locked == "boolean" && !v("locked") && (m.locked = d.locked), typeof d.opacity == "number" && !v("opacity") && (m.opacity = d.opacity), typeof d.color == "string" && !v("color") && (m.color = d.color), d.parentId !== void 0 && !v("parentId") && (m.parentId = d.parentId);
|
|
1027
1106
|
}
|
|
1028
|
-
|
|
1107
|
+
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
1108
|
}
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1109
|
+
for (let p = 0; p < e.length; p++) {
|
|
1110
|
+
const m = e[p];
|
|
1111
|
+
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);
|
|
1112
|
+
}
|
|
1113
|
+
const c = new Set(e.map((p) => p.id)), s = r == null ? void 0 : r.ordemOrigemIds;
|
|
1114
|
+
if (!(Array.isArray(s) && (() => {
|
|
1115
|
+
const p = new Set(s), m = (d) => d.filter((g) => c.has(g) && p.has(g)).join("|");
|
|
1116
|
+
return m(s) !== m(e.map((d) => d.id));
|
|
1034
1117
|
})()) && Array.isArray(r == null ? void 0 : r.ordemCamadasIds) && r.ordemCamadasIds.length > 0) {
|
|
1035
1118
|
const p = /* @__PURE__ */ new Map();
|
|
1036
|
-
r.ordemCamadasIds.forEach((
|
|
1037
|
-
const
|
|
1038
|
-
return
|
|
1119
|
+
r.ordemCamadasIds.forEach((m, d) => p.set(m, d)), e.sort((m, d) => {
|
|
1120
|
+
const g = p.has(m.id) ? p.get(m.id) : 9999, v = p.has(d.id) ? p.get(d.id) : 9999;
|
|
1121
|
+
return g - v;
|
|
1039
1122
|
});
|
|
1040
1123
|
}
|
|
1041
1124
|
}
|
|
1042
|
-
function
|
|
1125
|
+
function Ma(e) {
|
|
1043
1126
|
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
|
|
1127
|
+
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;
|
|
1128
|
+
const c = {
|
|
1046
1129
|
...(r == null ? void 0 : r.camadasOverrides) || {}
|
|
1047
1130
|
};
|
|
1048
|
-
a.length > 0 && (t = [], o = [], n = a.map((
|
|
1049
|
-
var
|
|
1050
|
-
i.has(
|
|
1051
|
-
name:
|
|
1052
|
-
visible:
|
|
1053
|
-
locked: !!
|
|
1054
|
-
opacity: typeof
|
|
1055
|
-
color:
|
|
1056
|
-
|
|
1131
|
+
a.length > 0 && (t = [], o = [], n = a.map((s) => s.id), l = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((s) => {
|
|
1132
|
+
var u, f;
|
|
1133
|
+
i.has(s.id) ? t.push(s.id) : o.push(s.id), c[s.id] = {
|
|
1134
|
+
name: s.name,
|
|
1135
|
+
visible: s.visible !== !1,
|
|
1136
|
+
locked: !!s.locked,
|
|
1137
|
+
opacity: typeof s.opacity == "number" ? s.opacity : 1,
|
|
1138
|
+
color: s.color || "#00E08A",
|
|
1139
|
+
parentId: s.parentId !== void 0 ? s.parentId : null,
|
|
1140
|
+
origem: ((u = e.origensCamadas) == null ? void 0 : u.get(s.id)) ?? ((f = c[s.id]) == null ? void 0 : f.origem)
|
|
1057
1141
|
};
|
|
1058
1142
|
}));
|
|
1059
|
-
for (const
|
|
1143
|
+
for (const s of e.camadasRemovidas ?? []) delete c[s];
|
|
1060
1144
|
return {
|
|
1061
1145
|
versao: 1,
|
|
1062
1146
|
expandedLayerIds: t,
|
|
@@ -1064,24 +1148,24 @@ function ha(e) {
|
|
|
1064
1148
|
camadaAtivaId: e.camadaAtivaId,
|
|
1065
1149
|
painelColapsado: e.painelColapsado,
|
|
1066
1150
|
ordemCamadasIds: n,
|
|
1067
|
-
ordemOrigemIds:
|
|
1151
|
+
ordemOrigemIds: l,
|
|
1068
1152
|
mapaBaseAtivo: e.mapaBaseAtivo,
|
|
1069
1153
|
densidade: e.densidade,
|
|
1070
1154
|
altura: e.altura,
|
|
1071
|
-
camadasOverrides:
|
|
1155
|
+
camadasOverrides: c,
|
|
1072
1156
|
ultimaAtualizacao: Date.now()
|
|
1073
1157
|
};
|
|
1074
1158
|
}
|
|
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
|
|
1159
|
+
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-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}.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}';
|
|
1160
|
+
function za(e, r) {
|
|
1077
1161
|
r.querySelectorAll("[data-layer-row]").forEach((t) => {
|
|
1078
1162
|
t.addEventListener("click", (o) => {
|
|
1079
1163
|
if (o.target.closest(
|
|
1080
1164
|
"[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], [data-layer-color], input, button"
|
|
1081
1165
|
))
|
|
1082
1166
|
return;
|
|
1083
|
-
const
|
|
1084
|
-
|
|
1167
|
+
const l = t.getAttribute("data-layer-row");
|
|
1168
|
+
l && e.definirCamadaAtiva(l, !0);
|
|
1085
1169
|
});
|
|
1086
1170
|
}), r.querySelectorAll("[data-layer-expand]").forEach((t) => {
|
|
1087
1171
|
t.addEventListener("click", (o) => {
|
|
@@ -1089,35 +1173,36 @@ function ya(e, r) {
|
|
|
1089
1173
|
const n = t.getAttribute("data-layer-expand");
|
|
1090
1174
|
if (!n) return;
|
|
1091
1175
|
e.expandedLayers.has(n) ? e.expandedLayers.delete(n) : e.expandedLayers.add(n);
|
|
1092
|
-
const
|
|
1093
|
-
if (
|
|
1094
|
-
|
|
1095
|
-
|
|
1176
|
+
const l = t.closest(".ui-layer-group"), c = t.querySelector(".ui-chevron-icon"), s = e.expandedLayers.has(n);
|
|
1177
|
+
if (c && c.classList.toggle("open", s), l) {
|
|
1178
|
+
l.setAttribute("aria-expanded", String(s));
|
|
1179
|
+
const u = l.querySelector(".ui-children-container");
|
|
1180
|
+
u && (u.style.display = s ? "block" : "none");
|
|
1096
1181
|
}
|
|
1097
|
-
e.salvarLembrancaEstado();
|
|
1182
|
+
P(t, s ? "Recolher grupo" : "Expandir grupo"), Ba(e, r), e.salvarLembrancaEstado();
|
|
1098
1183
|
});
|
|
1099
1184
|
}), r.querySelectorAll("[data-layer-eye]").forEach((t) => {
|
|
1100
1185
|
t.addEventListener("click", (o) => {
|
|
1101
1186
|
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:
|
|
1187
|
+
const n = t.getAttribute("data-layer-eye"), l = e.camadas.find((c) => c.id === n);
|
|
1188
|
+
if (l) {
|
|
1189
|
+
l.visible = l.visible === !1;
|
|
1190
|
+
const c = l.visible !== !1;
|
|
1191
|
+
t.innerHTML = c ? b.olhoAberto : b.olhoFechado, P(t, c ? "Ocultar Camada" : "Exibir Camada");
|
|
1192
|
+
const s = t.closest(".ui-layer-row");
|
|
1193
|
+
s && s.classList.toggle("hidden-layer", !c), qa(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
|
|
1194
|
+
camadaId: l.id,
|
|
1195
|
+
visivel: c
|
|
1111
1196
|
});
|
|
1112
1197
|
}
|
|
1113
1198
|
});
|
|
1114
1199
|
}), r.querySelectorAll("[data-layer-lock]").forEach((t) => {
|
|
1115
1200
|
t.addEventListener("click", (o) => {
|
|
1116
1201
|
o.stopPropagation();
|
|
1117
|
-
const n = t.getAttribute("data-layer-lock"),
|
|
1118
|
-
|
|
1119
|
-
camadaId:
|
|
1120
|
-
bloqueado:
|
|
1202
|
+
const n = t.getAttribute("data-layer-lock"), l = e.camadas.find((c) => c.id === n);
|
|
1203
|
+
l && (l.locked = !l.locked, t.innerHTML = l.locked ? b.cadeadoTrancado : b.cadeadoAberto, t.classList.toggle("ui-lock-open", !l.locked), P(t, l.locked ? "Desbloquear Camada" : "Bloquear Camada"), Da(e, r, l.id, l.locked === !0), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
|
|
1204
|
+
camadaId: l.id,
|
|
1205
|
+
bloqueado: l.locked
|
|
1121
1206
|
}));
|
|
1122
1207
|
});
|
|
1123
1208
|
}), r.querySelectorAll("[data-layer-fit]").forEach((t) => {
|
|
@@ -1139,96 +1224,104 @@ function ya(e, r) {
|
|
|
1139
1224
|
});
|
|
1140
1225
|
const a = (t, o, n) => {
|
|
1141
1226
|
var m;
|
|
1142
|
-
const
|
|
1143
|
-
if (!
|
|
1144
|
-
const
|
|
1145
|
-
|
|
1146
|
-
const
|
|
1147
|
-
|
|
1148
|
-
const
|
|
1149
|
-
|
|
1150
|
-
const
|
|
1151
|
-
|
|
1152
|
-
const
|
|
1153
|
-
if (
|
|
1154
|
-
(m =
|
|
1155
|
-
const
|
|
1156
|
-
|
|
1227
|
+
const l = e.camadas.find((d) => d.id === t);
|
|
1228
|
+
if (!l) return;
|
|
1229
|
+
const c = N(o, l.color || "#00E08A");
|
|
1230
|
+
l.color = c;
|
|
1231
|
+
const s = r.getElementById(`sample-color-${t}`);
|
|
1232
|
+
s && (s.style.backgroundColor = c);
|
|
1233
|
+
const u = r.getElementById(`hex-color-${t}`);
|
|
1234
|
+
u && (u.textContent = c.toUpperCase());
|
|
1235
|
+
const f = r.getElementById(`settings-drawer-${t}`);
|
|
1236
|
+
f && f.style.setProperty("--drawer-cor-camada", c);
|
|
1237
|
+
const p = T(r, "data-layer-row", t);
|
|
1238
|
+
if (p) {
|
|
1239
|
+
(m = p.closest(".ui-layer-group")) == null || m.style.setProperty("--layer-active-color", c);
|
|
1240
|
+
const d = p.querySelector(".ui-col-colorbar");
|
|
1241
|
+
d && (d.style.backgroundColor = c);
|
|
1157
1242
|
}
|
|
1158
|
-
n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId:
|
|
1243
|
+
n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: l.id, cor: c });
|
|
1159
1244
|
};
|
|
1160
1245
|
r.querySelectorAll("[data-layer-color-picker]").forEach((t) => {
|
|
1161
|
-
const o = t, n = (
|
|
1162
|
-
const
|
|
1163
|
-
if (!
|
|
1164
|
-
const
|
|
1165
|
-
a(
|
|
1246
|
+
const o = t, n = (l) => (c) => {
|
|
1247
|
+
const s = o.getAttribute("data-layer-color-picker");
|
|
1248
|
+
if (!s) return;
|
|
1249
|
+
const u = c.target.value;
|
|
1250
|
+
a(s, u, l);
|
|
1166
1251
|
};
|
|
1167
1252
|
o.addEventListener("input", n(!1)), o.addEventListener("change", n(!0));
|
|
1168
1253
|
}), r.querySelectorAll("[data-layer-color]").forEach((t) => {
|
|
1169
1254
|
const o = (n) => {
|
|
1170
1255
|
n.stopPropagation();
|
|
1171
|
-
const
|
|
1172
|
-
!
|
|
1256
|
+
const l = t.getAttribute("data-layer-color"), c = e.camadas.find((s) => s.id === l);
|
|
1257
|
+
!l || !c || ta({
|
|
1173
1258
|
ancora: t,
|
|
1174
|
-
titulo: `Cor · ${
|
|
1259
|
+
titulo: `Cor · ${c.name || "Camada"}`,
|
|
1175
1260
|
modo: "simples",
|
|
1176
|
-
cor:
|
|
1261
|
+
cor: N(c.color, "#00E08A"),
|
|
1177
1262
|
mostrarOpacidade: !1,
|
|
1178
|
-
aoAlterar: (
|
|
1179
|
-
aoConfirmar: (
|
|
1180
|
-
aoCancelar: (
|
|
1263
|
+
aoAlterar: (s) => a(l, s.cor, !1),
|
|
1264
|
+
aoConfirmar: (s) => a(l, s.cor, !0),
|
|
1265
|
+
aoCancelar: (s) => a(l, s.cor, !0)
|
|
1181
1266
|
});
|
|
1182
1267
|
};
|
|
1183
1268
|
t.addEventListener("click", o), t.addEventListener("keydown", (n) => {
|
|
1184
|
-
const
|
|
1185
|
-
(
|
|
1269
|
+
const l = n.key;
|
|
1270
|
+
(l === "Enter" || l === " ") && (n.preventDefault(), o(n));
|
|
1186
1271
|
});
|
|
1187
1272
|
});
|
|
1188
1273
|
const i = (t, o) => {
|
|
1189
|
-
const n = e.camadas.find((
|
|
1274
|
+
const n = e.camadas.find((s) => s.id === t);
|
|
1190
1275
|
if (!n) return;
|
|
1191
1276
|
n.opacity = o;
|
|
1192
|
-
const
|
|
1193
|
-
|
|
1194
|
-
const
|
|
1195
|
-
|
|
1277
|
+
const l = r.getElementById(`badge-op-${t}`);
|
|
1278
|
+
l && (l.textContent = `${Math.round(o * 100)}%`);
|
|
1279
|
+
const c = T(r, "data-layer-opacity-slider", t);
|
|
1280
|
+
c && parseFloat(c.value) !== o && (c.value = String(o)), e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-opacidade", { camadaId: n.id, opacidade: o });
|
|
1196
1281
|
};
|
|
1197
1282
|
r.querySelectorAll("[data-layer-opacity-slider]").forEach((t) => {
|
|
1198
1283
|
t.addEventListener("input", (o) => {
|
|
1199
1284
|
const n = t.getAttribute("data-layer-opacity-slider");
|
|
1200
1285
|
if (!n) return;
|
|
1201
|
-
const
|
|
1202
|
-
i(n,
|
|
1286
|
+
const l = parseFloat(o.target.value);
|
|
1287
|
+
i(n, l);
|
|
1203
1288
|
});
|
|
1204
1289
|
}), r.querySelectorAll("[data-delete-layer]").forEach((t) => {
|
|
1205
1290
|
let o = null;
|
|
1206
1291
|
t.addEventListener("click", (n) => {
|
|
1207
1292
|
n.stopPropagation();
|
|
1208
|
-
const
|
|
1209
|
-
if (!
|
|
1293
|
+
const l = t.getAttribute("data-delete-layer");
|
|
1294
|
+
if (!l) return;
|
|
1210
1295
|
if (t.classList.contains("confirming")) {
|
|
1211
|
-
o && clearTimeout(o), e.dispararEvento("ui-camada-excluida", { camadaId:
|
|
1212
|
-
const
|
|
1213
|
-
e.camadas.forEach((
|
|
1214
|
-
|
|
1215
|
-
}), e.removerCamada(
|
|
1296
|
+
o && clearTimeout(o), e.dispararEvento("ui-camada-excluida", { camadaId: l });
|
|
1297
|
+
const s = e.selectedFeatureIds.size;
|
|
1298
|
+
e.camadas.forEach((u) => {
|
|
1299
|
+
u.parentId === l && (u.parentId = null);
|
|
1300
|
+
}), e.removerCamada(l), e.selectedFeatureIds.size !== s && e.notificarMudancaSelecao();
|
|
1216
1301
|
} else {
|
|
1217
1302
|
t.classList.add("confirming");
|
|
1218
|
-
const
|
|
1219
|
-
|
|
1220
|
-
t.classList.remove("confirming"),
|
|
1303
|
+
const s = t.querySelector(".ui-btn-label");
|
|
1304
|
+
s && (s.textContent = "Confirmar Exclusão?"), o = setTimeout(() => {
|
|
1305
|
+
t.classList.remove("confirming"), s && (s.textContent = "Excluir Camada");
|
|
1221
1306
|
}, 3500);
|
|
1222
1307
|
}
|
|
1223
1308
|
});
|
|
1224
1309
|
}), r.querySelectorAll("[data-layer-parent-select]").forEach((t) => {
|
|
1225
1310
|
t.addEventListener("change", (o) => {
|
|
1226
|
-
const n = o.target,
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1311
|
+
const n = o.target, l = n.getAttribute("data-layer-parent-select"), c = n.value || null, s = e.camadas.find((u) => u.id === l);
|
|
1312
|
+
if (s) {
|
|
1313
|
+
if (c && (c === s.id || te(e.camadas, c, s.id))) {
|
|
1314
|
+
n.value = s.parentId || "";
|
|
1315
|
+
return;
|
|
1316
|
+
}
|
|
1317
|
+
const u = s.parentId ?? null;
|
|
1318
|
+
s.parentId = c, c && e.expandedLayers.add(c), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-mover-hierarquia", {
|
|
1319
|
+
camadaId: s.id,
|
|
1320
|
+
novoParentId: c,
|
|
1321
|
+
parentAnteriorId: u,
|
|
1322
|
+
camada: s
|
|
1323
|
+
}), e.solicitarRenderizacao();
|
|
1324
|
+
}
|
|
1232
1325
|
});
|
|
1233
1326
|
}), r.querySelectorAll("[data-add-sublayer]").forEach((t) => {
|
|
1234
1327
|
t.addEventListener("click", (o) => {
|
|
@@ -1236,148 +1329,162 @@ function ya(e, r) {
|
|
|
1236
1329
|
const n = t.getAttribute("data-add-sublayer");
|
|
1237
1330
|
e.dispararEvento("ui-camada-adicionar", { parentId: n });
|
|
1238
1331
|
});
|
|
1332
|
+
}), r.querySelectorAll("[data-layer-show-more]").forEach((t) => {
|
|
1333
|
+
t.addEventListener("click", (o) => {
|
|
1334
|
+
o.stopPropagation();
|
|
1335
|
+
const n = t.getAttribute("data-layer-show-more");
|
|
1336
|
+
n && e.incrementarLimiteFeicoes(n);
|
|
1337
|
+
});
|
|
1239
1338
|
}), r.querySelectorAll("[data-layer-target]").forEach((t) => {
|
|
1240
1339
|
t.addEventListener("click", (o) => {
|
|
1241
1340
|
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();
|
|
1341
|
+
const n = o, l = t.getAttribute("data-layer-target");
|
|
1342
|
+
if (!l) return;
|
|
1343
|
+
const c = re(e.camadas, e.feicoes, l), s = ae(c, e.searchQuery);
|
|
1344
|
+
if (s.length === 0) return;
|
|
1345
|
+
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
1346
|
});
|
|
1249
1347
|
});
|
|
1250
1348
|
}
|
|
1251
|
-
function
|
|
1349
|
+
function Ba(e, r) {
|
|
1350
|
+
const a = r.getElementById("btn-toggle-all-expand");
|
|
1351
|
+
if (!a) return;
|
|
1352
|
+
const i = e.camadas.length > 0 && e.camadas.every((o) => e.expandedLayers.has(o.id)), t = a.querySelector(".ui-chevron-icon");
|
|
1353
|
+
t && t.classList.toggle("open", i), P(
|
|
1354
|
+
a,
|
|
1355
|
+
i ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"
|
|
1356
|
+
);
|
|
1357
|
+
}
|
|
1358
|
+
function qa(e, r) {
|
|
1252
1359
|
const a = r.getElementById("btn-toggle-all-vis");
|
|
1253
1360
|
if (!a) return;
|
|
1254
1361
|
const i = e.camadas.every((t) => t.visible !== !1);
|
|
1255
|
-
a.innerHTML = i ?
|
|
1362
|
+
a.innerHTML = i ? b.olhoAberto : b.olhoFechado, P(a, i ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
|
|
1256
1363
|
}
|
|
1257
|
-
function
|
|
1364
|
+
function Da(e, r, a, i) {
|
|
1258
1365
|
e.feicoes.filter((t) => t.layerId === a).forEach((t) => {
|
|
1259
|
-
const o =
|
|
1366
|
+
const o = T(r, "data-feat-lock", t.id);
|
|
1260
1367
|
if (!o) return;
|
|
1261
1368
|
const n = t.locked === !0 || i;
|
|
1262
|
-
o.innerHTML = n ?
|
|
1369
|
+
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"), P(
|
|
1263
1370
|
o,
|
|
1264
1371
|
i ? "Bloqueada pela camada" : n ? "Desbloquear Feição" : "Bloquear Feição"
|
|
1265
1372
|
);
|
|
1266
1373
|
});
|
|
1267
1374
|
}
|
|
1268
|
-
function
|
|
1375
|
+
function Pa(e, r) {
|
|
1269
1376
|
const a = r.getElementById("btn-footer-vis");
|
|
1270
1377
|
a && a.addEventListener("click", () => {
|
|
1271
|
-
const
|
|
1272
|
-
if (
|
|
1273
|
-
const m = !
|
|
1274
|
-
|
|
1378
|
+
const f = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id));
|
|
1379
|
+
if (f.length === 0) return;
|
|
1380
|
+
const m = !f.some((d) => d.visible !== !1);
|
|
1381
|
+
f.forEach((d) => d.visible = m), e.dispararEvento("ui-acao-massa", {
|
|
1275
1382
|
acao: "visibilidade",
|
|
1276
|
-
feicoesIds:
|
|
1277
|
-
feicoes:
|
|
1383
|
+
feicoesIds: f.map((d) => d.id),
|
|
1384
|
+
feicoes: f,
|
|
1278
1385
|
valor: m
|
|
1279
1386
|
}), e.solicitarRenderizacao();
|
|
1280
1387
|
});
|
|
1281
1388
|
const i = r.getElementById("btn-footer-lock");
|
|
1282
1389
|
i && i.addEventListener("click", () => {
|
|
1283
|
-
const
|
|
1284
|
-
if (
|
|
1285
|
-
const m = !
|
|
1286
|
-
|
|
1390
|
+
const f = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id));
|
|
1391
|
+
if (f.length === 0) return;
|
|
1392
|
+
const m = !f.some((d) => d.locked === !0);
|
|
1393
|
+
f.forEach((d) => d.locked = m), e.dispararEvento("ui-acao-massa", {
|
|
1287
1394
|
acao: "bloqueio",
|
|
1288
|
-
feicoesIds:
|
|
1289
|
-
feicoes:
|
|
1395
|
+
feicoesIds: f.map((d) => d.id),
|
|
1396
|
+
feicoes: f,
|
|
1290
1397
|
valor: m
|
|
1291
1398
|
}), e.solicitarRenderizacao();
|
|
1292
1399
|
});
|
|
1293
1400
|
const t = r.getElementById("input-footer-color"), o = r.getElementById("preview-footer-color");
|
|
1294
|
-
t && (t.addEventListener("input", (
|
|
1295
|
-
const
|
|
1296
|
-
o && (o.style.backgroundColor =
|
|
1297
|
-
}), t.addEventListener("change", (
|
|
1298
|
-
const
|
|
1299
|
-
o && (o.style.backgroundColor =
|
|
1300
|
-
const m = e.feicoes.filter((
|
|
1301
|
-
m.length !== 0 && (m.forEach((
|
|
1302
|
-
|
|
1401
|
+
t && (t.addEventListener("input", (f) => {
|
|
1402
|
+
const p = f.target.value;
|
|
1403
|
+
o && (o.style.backgroundColor = p);
|
|
1404
|
+
}), t.addEventListener("change", (f) => {
|
|
1405
|
+
const p = f.target.value;
|
|
1406
|
+
o && (o.style.backgroundColor = p);
|
|
1407
|
+
const m = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id));
|
|
1408
|
+
m.length !== 0 && (m.forEach((d) => {
|
|
1409
|
+
d.color = p, d.style = { ...d.style || {}, fillColor: p, strokeColor: p };
|
|
1303
1410
|
}), e.dispararEvento("ui-acao-massa", {
|
|
1304
1411
|
acao: "cor",
|
|
1305
|
-
feicoesIds: m.map((
|
|
1412
|
+
feicoesIds: m.map((d) => d.id),
|
|
1306
1413
|
feicoes: m,
|
|
1307
|
-
valor:
|
|
1414
|
+
valor: p
|
|
1308
1415
|
}), e.solicitarRenderizacao());
|
|
1309
1416
|
}));
|
|
1310
1417
|
const n = r.getElementById("select-footer-move");
|
|
1311
|
-
n && n.addEventListener("change", (
|
|
1312
|
-
const
|
|
1313
|
-
if (!
|
|
1418
|
+
n && n.addEventListener("change", (f) => {
|
|
1419
|
+
const p = f.target.value;
|
|
1420
|
+
if (!p) return;
|
|
1314
1421
|
const m = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
|
|
1315
1422
|
if (m.length === 0) return;
|
|
1316
|
-
const
|
|
1317
|
-
m.forEach((g) => g.layerId =
|
|
1318
|
-
|
|
1423
|
+
const d = new Map(m.map((g) => [g.id, g.layerId]));
|
|
1424
|
+
m.forEach((g) => g.layerId = p), m.forEach((g) => {
|
|
1425
|
+
d.get(g.id) !== p && e.dispararEvento("ui-feicao-movida", {
|
|
1319
1426
|
feicaoId: g.id,
|
|
1320
|
-
camadaOrigemId:
|
|
1321
|
-
camadaDestinoId:
|
|
1427
|
+
camadaOrigemId: d.get(g.id),
|
|
1428
|
+
camadaDestinoId: p,
|
|
1322
1429
|
feicao: g
|
|
1323
1430
|
});
|
|
1324
1431
|
}), e.dispararEvento("ui-acao-massa", {
|
|
1325
1432
|
acao: "mover",
|
|
1326
1433
|
feicoesIds: m.map((g) => g.id),
|
|
1327
1434
|
feicoes: m,
|
|
1328
|
-
valor:
|
|
1435
|
+
valor: p
|
|
1329
1436
|
}), e.solicitarRenderizacao();
|
|
1330
1437
|
});
|
|
1331
|
-
const
|
|
1332
|
-
|
|
1438
|
+
const l = r.getElementById("btn-footer-new-layer");
|
|
1439
|
+
l && l.addEventListener("click", () => {
|
|
1333
1440
|
e.dispararEvento("ui-camada-adicionar", {});
|
|
1334
1441
|
});
|
|
1335
|
-
const
|
|
1336
|
-
|
|
1442
|
+
const c = r.getElementById("btn-footer-new-group");
|
|
1443
|
+
c && c.addEventListener("click", () => {
|
|
1337
1444
|
e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
|
|
1338
1445
|
});
|
|
1339
|
-
const
|
|
1340
|
-
if (
|
|
1341
|
-
let
|
|
1342
|
-
const
|
|
1343
|
-
|
|
1446
|
+
const s = r.getElementById("btn-footer-del");
|
|
1447
|
+
if (s) {
|
|
1448
|
+
let f = null;
|
|
1449
|
+
const p = "Excluir selecionados";
|
|
1450
|
+
s.addEventListener("click", () => {
|
|
1344
1451
|
const m = Array.from(e.selectedFeatureIds);
|
|
1345
1452
|
if (m.length === 0) return;
|
|
1346
|
-
if (!
|
|
1347
|
-
|
|
1348
|
-
|
|
1453
|
+
if (!s.classList.contains("confirming")) {
|
|
1454
|
+
s.classList.add("confirming"), P(s, `Clique novamente para excluir ${m.length} selecionado(s)`), f = setTimeout(() => {
|
|
1455
|
+
s.classList.remove("confirming"), P(s, p);
|
|
1349
1456
|
}, 3500);
|
|
1350
1457
|
return;
|
|
1351
1458
|
}
|
|
1352
|
-
|
|
1353
|
-
const
|
|
1459
|
+
f && clearTimeout(f);
|
|
1460
|
+
const d = e.feicoes.filter((g) => e.selectedFeatureIds.has(g.id));
|
|
1354
1461
|
e.feicoes = e.feicoes.filter((g) => !e.selectedFeatureIds.has(g.id)), e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.dispararEvento("ui-acao-massa", {
|
|
1355
1462
|
acao: "excluir",
|
|
1356
1463
|
feicoesIds: m,
|
|
1357
|
-
feicoes:
|
|
1464
|
+
feicoes: d
|
|
1358
1465
|
}), e.notificarMudancaSelecao(), e.solicitarRenderizacao();
|
|
1359
1466
|
});
|
|
1360
1467
|
}
|
|
1361
|
-
const
|
|
1362
|
-
|
|
1468
|
+
const u = r.getElementById("btn-footer-clear");
|
|
1469
|
+
u && u.addEventListener("click", () => e.limparSelecao(!0));
|
|
1363
1470
|
}
|
|
1364
|
-
const
|
|
1471
|
+
const Ta = [
|
|
1365
1472
|
{ tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
|
|
1366
1473
|
{ tipo: "olho", atributo: "data-feat-eye", entidade: "feicao" },
|
|
1367
1474
|
{ tipo: "cadeado", atributo: "data-layer-lock", entidade: "camada" },
|
|
1368
1475
|
{ tipo: "cadeado", atributo: "data-feat-lock", entidade: "feicao" },
|
|
1369
1476
|
{ tipo: "selecao", atributo: "data-layer-target", entidade: "camada" },
|
|
1370
1477
|
{ tipo: "selecao", atributo: "data-feat-target", entidade: "feicao" }
|
|
1371
|
-
],
|
|
1478
|
+
], me = {
|
|
1372
1479
|
olho: "[data-layer-eye], [data-feat-eye]",
|
|
1373
1480
|
cadeado: "[data-layer-lock], [data-feat-lock]",
|
|
1374
1481
|
selecao: "[data-layer-target], [data-feat-target]"
|
|
1375
|
-
},
|
|
1376
|
-
function
|
|
1377
|
-
return
|
|
1482
|
+
}, Ra = 3;
|
|
1483
|
+
function Oa(e) {
|
|
1484
|
+
return Ta.find((r) => e.hasAttribute(r.atributo)) ?? null;
|
|
1378
1485
|
}
|
|
1379
|
-
function
|
|
1380
|
-
const a =
|
|
1486
|
+
function pe(e, r) {
|
|
1487
|
+
const a = Oa(r);
|
|
1381
1488
|
if (!a) return null;
|
|
1382
1489
|
const i = r.getAttribute(a.atributo);
|
|
1383
1490
|
if (!i) return null;
|
|
@@ -1391,13 +1498,13 @@ function re(e, r) {
|
|
|
1391
1498
|
return o ? o.locked === !0 : null;
|
|
1392
1499
|
}
|
|
1393
1500
|
if (a.entidade === "feicao") return e.selectedFeatureIds.has(i);
|
|
1394
|
-
const t =
|
|
1395
|
-
e.
|
|
1501
|
+
const t = ae(
|
|
1502
|
+
re(e.camadas, e.feicoes, i),
|
|
1396
1503
|
e.searchQuery
|
|
1397
1504
|
);
|
|
1398
1505
|
return t.length === 0 ? null : t.every((o) => e.selectedFeatureIds.has(o.id));
|
|
1399
1506
|
}
|
|
1400
|
-
function
|
|
1507
|
+
function Ie(e, r, a = !1) {
|
|
1401
1508
|
e.dispatchEvent(
|
|
1402
1509
|
new MouseEvent("click", {
|
|
1403
1510
|
bubbles: !0,
|
|
@@ -1407,59 +1514,59 @@ function ve(e, r, a = !1) {
|
|
|
1407
1514
|
})
|
|
1408
1515
|
);
|
|
1409
1516
|
}
|
|
1410
|
-
let
|
|
1411
|
-
function
|
|
1412
|
-
(
|
|
1517
|
+
let q = null;
|
|
1518
|
+
function ja(e) {
|
|
1519
|
+
(q == null ? void 0 : q.host) === e && q.cancelar();
|
|
1413
1520
|
}
|
|
1414
|
-
function
|
|
1415
|
-
Object.keys(
|
|
1416
|
-
r.querySelectorAll(
|
|
1417
|
-
i.addEventListener("pointerdown", (t) =>
|
|
1521
|
+
function Na(e, r) {
|
|
1522
|
+
Object.keys(me).forEach((a) => {
|
|
1523
|
+
r.querySelectorAll(me[a]).forEach((i) => {
|
|
1524
|
+
i.addEventListener("pointerdown", (t) => Ha(e, r, a, i, t));
|
|
1418
1525
|
});
|
|
1419
1526
|
});
|
|
1420
1527
|
}
|
|
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
|
-
},
|
|
1431
|
-
|
|
1432
|
-
},
|
|
1433
|
-
|
|
1434
|
-
}, x = (
|
|
1435
|
-
var
|
|
1436
|
-
if (!
|
|
1437
|
-
if (Math.hypot(
|
|
1438
|
-
const
|
|
1439
|
-
if (!
|
|
1440
|
-
|
|
1528
|
+
function Ha(e, r, a, i, t) {
|
|
1529
|
+
if (t.pointerType === "mouse" && t.button !== 0 || e.editingLayerId || e.editingFeatureId || pe(e, i) === null) return;
|
|
1530
|
+
q == null || q.cancelar();
|
|
1531
|
+
const o = me[a], n = t.ctrlKey || t.metaKey, l = t.shiftKey;
|
|
1532
|
+
let c = !1, s = !1, u = t.clientY;
|
|
1533
|
+
const f = /* @__PURE__ */ new Set([i]), p = (h) => {
|
|
1534
|
+
h.preventDefault(), h.stopImmediatePropagation();
|
|
1535
|
+
}, m = (h) => {
|
|
1536
|
+
h.stopPropagation(), h.preventDefault();
|
|
1537
|
+
}, d = (h) => h.preventDefault(), g = (h) => {
|
|
1538
|
+
f.has(h) || (f.add(h), pe(e, h) !== s && Ie(h, a === "selecao"));
|
|
1539
|
+
}, v = () => {
|
|
1540
|
+
c = !0, Ie(i, n, l), s = pe(e, i) === !0, r.addEventListener("selectstart", d), document.body.style.userSelect = "none";
|
|
1541
|
+
}, x = (h) => {
|
|
1542
|
+
var S, w;
|
|
1543
|
+
if (!c) {
|
|
1544
|
+
if (Math.hypot(h.clientX - t.clientX, h.clientY - t.clientY) < Ra) return;
|
|
1545
|
+
const M = (S = r.elementFromPoint(h.clientX, h.clientY)) == null ? void 0 : S.closest(o);
|
|
1546
|
+
if (!M || M === i) return;
|
|
1547
|
+
v();
|
|
1441
1548
|
}
|
|
1442
|
-
|
|
1443
|
-
const
|
|
1444
|
-
r.querySelectorAll(o).forEach((
|
|
1445
|
-
const
|
|
1446
|
-
if (
|
|
1447
|
-
const
|
|
1448
|
-
|
|
1549
|
+
h.preventDefault();
|
|
1550
|
+
const E = Math.min(u, h.clientY), k = Math.max(u, h.clientY);
|
|
1551
|
+
r.querySelectorAll(o).forEach((M) => {
|
|
1552
|
+
const D = M.getBoundingClientRect();
|
|
1553
|
+
if (D.height === 0) return;
|
|
1554
|
+
const H = D.top + D.height / 2;
|
|
1555
|
+
H >= E && H <= k && g(M);
|
|
1449
1556
|
});
|
|
1450
|
-
const
|
|
1451
|
-
|
|
1452
|
-
},
|
|
1453
|
-
(
|
|
1454
|
-
},
|
|
1455
|
-
|
|
1456
|
-
}
|
|
1457
|
-
function
|
|
1557
|
+
const z = (w = r.elementFromPoint(h.clientX, h.clientY)) == null ? void 0 : w.closest(o);
|
|
1558
|
+
z && g(z), u = h.clientY;
|
|
1559
|
+
}, L = (h = !1) => {
|
|
1560
|
+
(q == null ? void 0 : q.cancelar) === y && (q = null), window.removeEventListener("pointermove", x), window.removeEventListener("pointerup", $), window.removeEventListener("pointercancel", $), window.removeEventListener("dragstart", p, !0), r.removeEventListener("selectstart", d), c && (document.body.style.userSelect = "", h || (window.addEventListener("click", m, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", m, !0), 0)));
|
|
1561
|
+
}, $ = () => L(), y = () => L(!0);
|
|
1562
|
+
q = { host: e, cancelar: y }, window.addEventListener("dragstart", p, !0), window.addEventListener("pointermove", x, { passive: !1 }), window.addEventListener("pointerup", $), window.addEventListener("pointercancel", $);
|
|
1563
|
+
}
|
|
1564
|
+
function Ga(e, r) {
|
|
1458
1565
|
const a = r.getElementById("btn-toggle-all-vis");
|
|
1459
1566
|
a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
|
|
1460
1567
|
const i = r.getElementById("btn-toggle-all-expand");
|
|
1461
|
-
i && i.addEventListener("click", (
|
|
1462
|
-
|
|
1568
|
+
i && i.addEventListener("click", (l) => {
|
|
1569
|
+
l.stopPropagation(), e.camadas.length > 0 && e.camadas.every((s) => e.expandedLayers.has(s.id)) ? e.colapsarTodas() : e.expandirTodas();
|
|
1463
1570
|
});
|
|
1464
1571
|
const t = r.getElementById("btn-add-layer");
|
|
1465
1572
|
t && t.addEventListener("click", () => {
|
|
@@ -1470,15 +1577,15 @@ function Ma(e, r) {
|
|
|
1470
1577
|
e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
|
|
1471
1578
|
});
|
|
1472
1579
|
const n = r.getElementById("btn-colapsar");
|
|
1473
|
-
n && n.addEventListener("click", () => e.colapsar(!0)),
|
|
1580
|
+
n && n.addEventListener("click", () => e.colapsar(!0)), Va(e, r);
|
|
1474
1581
|
}
|
|
1475
|
-
function
|
|
1582
|
+
function Va(e, r) {
|
|
1476
1583
|
const a = r.getElementById("input-layer-search"), i = r.getElementById("btn-clear-layer-search"), t = () => {
|
|
1477
1584
|
var o;
|
|
1478
1585
|
e.searchQuery = "", e.solicitarRenderizacao(), (o = r.getElementById("input-layer-search")) == null || o.focus();
|
|
1479
1586
|
};
|
|
1480
1587
|
if (a) {
|
|
1481
|
-
const o =
|
|
1588
|
+
const o = Fe(() => e.solicitarRenderizacao(), 75);
|
|
1482
1589
|
a.addEventListener("input", (n) => {
|
|
1483
1590
|
e.searchQuery = n.target.value, o();
|
|
1484
1591
|
}), a.addEventListener("keydown", (n) => {
|
|
@@ -1487,7 +1594,7 @@ function za(e, r) {
|
|
|
1487
1594
|
}
|
|
1488
1595
|
i && i.addEventListener("click", t);
|
|
1489
1596
|
}
|
|
1490
|
-
function
|
|
1597
|
+
function Ua(e, r) {
|
|
1491
1598
|
r.querySelectorAll("[data-feat-select]").forEach((a) => {
|
|
1492
1599
|
a.addEventListener("click", (i) => {
|
|
1493
1600
|
if (e.editingFeatureId) return;
|
|
@@ -1512,9 +1619,9 @@ function Fa(e, r) {
|
|
|
1512
1619
|
if (o) {
|
|
1513
1620
|
o.visible = o.visible === !1;
|
|
1514
1621
|
const n = o.visible !== !1;
|
|
1515
|
-
a.innerHTML = n ?
|
|
1516
|
-
const
|
|
1517
|
-
|
|
1622
|
+
a.innerHTML = n ? b.olhoAberto : b.olhoFechado, P(a, n ? "Ocultar Feição" : "Exibir Feição");
|
|
1623
|
+
const l = a.closest(".ui-feat-row");
|
|
1624
|
+
l && l.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
|
|
1518
1625
|
feicaoId: o.id,
|
|
1519
1626
|
visivel: n
|
|
1520
1627
|
});
|
|
@@ -1524,7 +1631,7 @@ function Fa(e, r) {
|
|
|
1524
1631
|
a.addEventListener("click", (i) => {
|
|
1525
1632
|
if (i.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
|
|
1526
1633
|
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 ?
|
|
1634
|
+
o && (o.locked = !o.locked, a.innerHTML = o.locked ? b.cadeadoTrancado : b.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), P(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
|
|
1528
1635
|
feicaoId: o.id,
|
|
1529
1636
|
bloqueado: o.locked
|
|
1530
1637
|
}));
|
|
@@ -1537,14 +1644,14 @@ function Fa(e, r) {
|
|
|
1537
1644
|
});
|
|
1538
1645
|
});
|
|
1539
1646
|
}
|
|
1540
|
-
function
|
|
1647
|
+
function Ya(e, r) {
|
|
1541
1648
|
var a;
|
|
1542
1649
|
r.querySelectorAll("[data-basemap-thumb]").forEach((i) => {
|
|
1543
1650
|
i.addEventListener(
|
|
1544
1651
|
"error",
|
|
1545
1652
|
() => {
|
|
1546
1653
|
const t = document.createElement("div");
|
|
1547
|
-
t.className = "ui-basemap-preview-none", t.innerHTML =
|
|
1654
|
+
t.className = "ui-basemap-preview-none", t.innerHTML = b.mapa, i.replaceWith(t);
|
|
1548
1655
|
},
|
|
1549
1656
|
{ once: !0 }
|
|
1550
1657
|
);
|
|
@@ -1557,12 +1664,12 @@ function Ba(e, r) {
|
|
|
1557
1664
|
});
|
|
1558
1665
|
});
|
|
1559
1666
|
}
|
|
1560
|
-
function
|
|
1561
|
-
|
|
1667
|
+
function Ka(e, r) {
|
|
1668
|
+
Ga(e, r), za(e, r), Ua(e, r), Ya(e, r), Pa(e, r), Na(e, r);
|
|
1562
1669
|
}
|
|
1563
|
-
function
|
|
1564
|
-
var g,
|
|
1565
|
-
const t =
|
|
1670
|
+
function _a(e, r, a, i) {
|
|
1671
|
+
var g, v;
|
|
1672
|
+
const t = ya({
|
|
1566
1673
|
camadas: e.camadas,
|
|
1567
1674
|
feicoes: e.feicoes,
|
|
1568
1675
|
camadaAtivaId: e.camadaAtivaId,
|
|
@@ -1572,38 +1679,41 @@ function Da(e, r, a, i) {
|
|
|
1572
1679
|
editingLayerId: e.editingLayerId,
|
|
1573
1680
|
editingFeatureId: e.editingFeatureId,
|
|
1574
1681
|
searchQuery: e.searchQuery,
|
|
1682
|
+
titulo: e.titulo,
|
|
1683
|
+
mostrarBusca: e.mostrarBusca,
|
|
1684
|
+
limitesPorCamada: e.expandedFeatureLimits,
|
|
1575
1685
|
mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false"
|
|
1576
|
-
}), o = e.mostrarMapasBase ?
|
|
1686
|
+
}), 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, u = r.activeElement, f = u && a.contains(u) ? u.id : "", p = u && !f && a.contains(u) ? Array.from(u.attributes).find((x) => x.name.startsWith("data-") && x.value !== "") : void 0, m = u && "selectionStart" in u ? u.selectionStart : null;
|
|
1577
1687
|
a.innerHTML = `
|
|
1578
1688
|
${t}
|
|
1579
1689
|
${n}
|
|
1580
1690
|
${o}
|
|
1581
|
-
`, a.scrollTop =
|
|
1582
|
-
const
|
|
1583
|
-
if (
|
|
1584
|
-
const x = r.getElementById(
|
|
1691
|
+
`, a.scrollTop = c;
|
|
1692
|
+
const d = r.getElementById("ui-layer-tree-mount");
|
|
1693
|
+
if (d && (d.scrollTop = s), f) {
|
|
1694
|
+
const x = r.getElementById(f);
|
|
1585
1695
|
if (x && (x.focus({ preventScroll: !0 }), m !== null && typeof x.setSelectionRange == "function"))
|
|
1586
1696
|
try {
|
|
1587
1697
|
x.setSelectionRange(m, m);
|
|
1588
1698
|
} catch {
|
|
1589
1699
|
}
|
|
1590
1700
|
}
|
|
1591
|
-
!
|
|
1701
|
+
!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
1702
|
}
|
|
1593
|
-
const
|
|
1594
|
-
function
|
|
1595
|
-
return e
|
|
1703
|
+
const Xa = '[role="button"][tabindex]', Y = "[data-layer-row], [data-feat-row]", Qa = ["color", "range", "checkbox", "radio", "button"];
|
|
1704
|
+
function Oe(e) {
|
|
1705
|
+
return !e || !(e instanceof Element) || e instanceof HTMLInputElement && Qa.includes(e.type) ? !1 : ia({ composedPath: () => [e] });
|
|
1596
1706
|
}
|
|
1597
|
-
function
|
|
1598
|
-
return Array.from(e.querySelectorAll(
|
|
1707
|
+
function Wa(e) {
|
|
1708
|
+
return Array.from(e.querySelectorAll(Y)).filter((r) => {
|
|
1599
1709
|
const a = r.closest(".ui-children-container");
|
|
1600
1710
|
return !(a && a.style.display === "none") && !r.classList.contains("ui-search-hidden");
|
|
1601
1711
|
});
|
|
1602
1712
|
}
|
|
1603
|
-
function
|
|
1604
|
-
r && (e.querySelectorAll(
|
|
1713
|
+
function ee(e, r) {
|
|
1714
|
+
r && (e.querySelectorAll(Y).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
|
|
1605
1715
|
}
|
|
1606
|
-
function
|
|
1716
|
+
function Ja(e, r) {
|
|
1607
1717
|
e.dispatchEvent(
|
|
1608
1718
|
new MouseEvent("click", {
|
|
1609
1719
|
bubbles: !0,
|
|
@@ -1612,109 +1722,143 @@ function Oa(e, r) {
|
|
|
1612
1722
|
})
|
|
1613
1723
|
);
|
|
1614
1724
|
}
|
|
1615
|
-
function
|
|
1616
|
-
var
|
|
1617
|
-
if (
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1725
|
+
function Za(e, r, a) {
|
|
1726
|
+
var t;
|
|
1727
|
+
if (Oe(a.composedPath()[0])) return;
|
|
1728
|
+
const i = r.querySelector(".confirming");
|
|
1729
|
+
if (i) {
|
|
1730
|
+
a.preventDefault(), i.classList.remove("confirming");
|
|
1731
|
+
return;
|
|
1732
|
+
}
|
|
1733
|
+
if (e.activeSettingsLayerId) {
|
|
1734
|
+
a.preventDefault();
|
|
1735
|
+
const o = e.activeSettingsLayerId;
|
|
1736
|
+
e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (t = T(r, "data-layer-settings", o)) == null || t.focus();
|
|
1737
|
+
return;
|
|
1625
1738
|
}
|
|
1739
|
+
e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
|
|
1626
1740
|
}
|
|
1627
|
-
function
|
|
1628
|
-
var
|
|
1629
|
-
const
|
|
1630
|
-
if (!(
|
|
1631
|
-
if ((
|
|
1632
|
-
|
|
1741
|
+
function er(e, r, a, i) {
|
|
1742
|
+
var l;
|
|
1743
|
+
const t = i.composedPath()[0];
|
|
1744
|
+
if (!(t instanceof HTMLElement) || Oe(t)) return;
|
|
1745
|
+
if ((i.key === "Enter" || i.key === " ") && t.matches(Xa)) {
|
|
1746
|
+
i.preventDefault(), t.click();
|
|
1747
|
+
return;
|
|
1748
|
+
}
|
|
1749
|
+
if (!t.matches(Y)) return;
|
|
1750
|
+
const o = Wa(r), n = o.indexOf(t);
|
|
1751
|
+
if (i.key === "F2") {
|
|
1752
|
+
i.preventDefault();
|
|
1753
|
+
const c = t.getAttribute("data-layer-row"), s = t.getAttribute("data-feat-row"), u = c ? T(t, "data-layer-name-trigger", c) : s ? T(t, "data-feat-name-trigger", s) : null;
|
|
1754
|
+
u && u.dispatchEvent(new MouseEvent("dblclick", { bubbles: !0 }));
|
|
1633
1755
|
return;
|
|
1634
1756
|
}
|
|
1635
|
-
if (
|
|
1636
|
-
|
|
1637
|
-
|
|
1757
|
+
if ((i.ctrlKey || i.metaKey) && (i.key === "a" || i.key === "A")) {
|
|
1758
|
+
i.preventDefault();
|
|
1759
|
+
const c = Te(
|
|
1760
|
+
e.camadas,
|
|
1761
|
+
e.feicoes,
|
|
1762
|
+
e.expandedLayers,
|
|
1763
|
+
e.searchQuery,
|
|
1764
|
+
void 0,
|
|
1765
|
+
e.expandedFeatureLimits
|
|
1766
|
+
);
|
|
1767
|
+
c.length > 0 && e.selecionarFeicoes(c, !0);
|
|
1768
|
+
return;
|
|
1769
|
+
}
|
|
1770
|
+
if (i.key === "Delete") {
|
|
1771
|
+
const c = a.getElementById("btn-footer-del");
|
|
1772
|
+
if (c && !c.hasAttribute("disabled") && e.selectedFeatureIds.size > 0) {
|
|
1773
|
+
i.preventDefault(), c.click();
|
|
1774
|
+
return;
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1777
|
+
switch (i.key) {
|
|
1638
1778
|
case "ArrowDown":
|
|
1639
|
-
|
|
1779
|
+
i.preventDefault(), ee(r, o[Math.min(o.length - 1, n + 1)]);
|
|
1640
1780
|
break;
|
|
1641
1781
|
case "ArrowUp":
|
|
1642
|
-
|
|
1782
|
+
i.preventDefault(), ee(r, o[Math.max(0, n - 1)]);
|
|
1643
1783
|
break;
|
|
1644
1784
|
case "Home":
|
|
1645
|
-
|
|
1785
|
+
i.preventDefault(), ee(r, o[0]);
|
|
1646
1786
|
break;
|
|
1647
1787
|
case "End":
|
|
1648
|
-
|
|
1788
|
+
i.preventDefault(), ee(r, o[o.length - 1]);
|
|
1649
1789
|
break;
|
|
1650
1790
|
case "ArrowRight":
|
|
1651
1791
|
case "ArrowLeft": {
|
|
1652
|
-
const
|
|
1653
|
-
if (!
|
|
1654
|
-
const
|
|
1655
|
-
|
|
1792
|
+
const c = t.getAttribute("data-layer-row");
|
|
1793
|
+
if (!c) return;
|
|
1794
|
+
const s = t.closest(".ui-layer-group"), u = (s == null ? void 0 : s.getAttribute("aria-expanded")) === "true";
|
|
1795
|
+
i.key === "ArrowRight" !== u && (i.preventDefault(), (l = T(a, "data-layer-expand", c)) == null || l.click());
|
|
1656
1796
|
break;
|
|
1657
1797
|
}
|
|
1658
1798
|
case "Enter":
|
|
1659
1799
|
case " ":
|
|
1660
|
-
|
|
1800
|
+
i.preventDefault(), Ja(t, i);
|
|
1661
1801
|
break;
|
|
1662
1802
|
}
|
|
1663
1803
|
}
|
|
1664
|
-
function
|
|
1804
|
+
function ar(e, r, a, i, t) {
|
|
1665
1805
|
t.add(r, "keydown", (o) => {
|
|
1666
|
-
o.key === "Escape" &&
|
|
1667
|
-
}), t.add(i, "keydown", (o) =>
|
|
1806
|
+
o.key === "Escape" && Za(e, a, o);
|
|
1807
|
+
}), t.add(i, "keydown", (o) => er(e, i, a, o)), t.add(i, "focusin", (o) => {
|
|
1668
1808
|
const n = o.composedPath()[0];
|
|
1669
|
-
n instanceof HTMLElement && n.matches(
|
|
1809
|
+
n instanceof HTMLElement && n.matches(Y) && (i.querySelectorAll(Y).forEach((l) => l.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
|
|
1670
1810
|
});
|
|
1671
1811
|
}
|
|
1672
|
-
function
|
|
1812
|
+
function rr(e, r) {
|
|
1673
1813
|
r.querySelectorAll("[data-layer-row]").forEach((i) => {
|
|
1674
1814
|
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");
|
|
1815
|
+
i.classList.toggle("active-drawing-layer", o), Le(i, "camada-ativa", o), o ? i.setAttribute("aria-current", "true") : i.removeAttribute("aria-current");
|
|
1676
1816
|
});
|
|
1677
1817
|
}
|
|
1678
|
-
function
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1818
|
+
function tr(e, r) {
|
|
1819
|
+
var L, $;
|
|
1820
|
+
r.querySelectorAll(".ui-feat-row").forEach((y) => {
|
|
1821
|
+
const h = y.getAttribute("data-feat-row"), E = h ? e.selectedFeatureIds.has(h) : !1;
|
|
1822
|
+
y.classList.toggle("selected-row", E), Le(y, "feicao-selecionada", E), y.setAttribute("aria-selected", String(E));
|
|
1823
|
+
const k = y.querySelector(".ui-target-circle");
|
|
1824
|
+
k && k.classList.toggle("selected", E);
|
|
1825
|
+
}), r.querySelectorAll(".ui-layer-group").forEach((y) => {
|
|
1826
|
+
const h = y.getAttribute("data-layer-id"), E = re(e.camadas, e.feicoes, h ?? ""), k = y.querySelector(".ui-layer-row .ui-target-circle");
|
|
1827
|
+
if (k && E.length > 0) {
|
|
1828
|
+
const z = E.every((w) => e.selectedFeatureIds.has(w.id)), S = !z && E.some((w) => e.selectedFeatureIds.has(w.id));
|
|
1829
|
+
k.classList.toggle("selected", z), k.classList.toggle("partial", S);
|
|
1830
|
+
} else k && k.classList.remove("selected", "partial");
|
|
1690
1831
|
});
|
|
1691
|
-
const a = e.feicoes.filter((
|
|
1832
|
+
const a = e.feicoes.filter((y) => e.selectedFeatureIds.has(y.id)), i = a.length > 0, t = r.getElementById("footer-count"), o = r.getElementById("footer-label");
|
|
1692
1833
|
t && (t.textContent = String(i ? a.length : e.camadas.length)), o && (o.textContent = i ? a.length > 1 ? "selecionados" : "selecionado" : e.camadas.length > 1 ? "camadas" : "camada");
|
|
1693
|
-
const n = r.querySelector(".ui-footer-metric"),
|
|
1694
|
-
n && (
|
|
1695
|
-
const
|
|
1696
|
-
|
|
1697
|
-
const
|
|
1698
|
-
|
|
1699
|
-
const
|
|
1700
|
-
|
|
1701
|
-
const
|
|
1702
|
-
|
|
1834
|
+
const n = r.querySelector(".ui-footer-metric"), l = Se(a);
|
|
1835
|
+
n && (l ? (n.innerHTML = `${b.reguaMetrica} ${l}`, n.style.display = "inline-flex") : n.style.display = "none");
|
|
1836
|
+
const c = r.querySelector(".ui-tree-footer");
|
|
1837
|
+
c && (c.classList.toggle("tem-selecao", i), c.classList.toggle("sem-selecao", !i));
|
|
1838
|
+
const s = r.querySelector(".ui-footer-actions-gerais");
|
|
1839
|
+
s && (s.style.display = i ? "none" : "flex");
|
|
1840
|
+
const u = r.querySelector(".ui-footer-bulk-actions");
|
|
1841
|
+
u && (u.style.display = i ? "flex" : "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((y) => {
|
|
1842
|
+
const h = r.getElementById(y);
|
|
1843
|
+
h && (h.disabled = !i, h.classList.toggle("disabled", !i));
|
|
1703
1844
|
});
|
|
1704
|
-
const
|
|
1705
|
-
|
|
1706
|
-
const
|
|
1707
|
-
|
|
1845
|
+
const f = r.querySelector(".ui-footer-move-wrapper");
|
|
1846
|
+
f && f.classList.toggle("disabled", !i);
|
|
1847
|
+
const p = r.getElementById("select-footer-move");
|
|
1848
|
+
p && (p.disabled = !i);
|
|
1708
1849
|
const m = r.querySelector(".ui-footer-color-wrapper");
|
|
1709
1850
|
m && m.classList.toggle("disabled", !i);
|
|
1710
|
-
const
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1851
|
+
const d = r.getElementById("input-footer-color"), g = r.getElementById("preview-footer-color");
|
|
1852
|
+
if (d && (d.disabled = !i, i)) {
|
|
1853
|
+
const y = a[0], h = ((L = y == null ? void 0 : y.properties) == null ? void 0 : L.color) || (($ = y == null ? void 0 : y.properties) == null ? void 0 : $.cor) || "#3b82f6";
|
|
1854
|
+
d.value = h.startsWith("#") && h.length === 7 ? h : "#3b82f6", g && (g.style.backgroundColor = d.value);
|
|
1855
|
+
}
|
|
1856
|
+
let v = r.getElementById("btn-footer-clear");
|
|
1857
|
+
const x = r.querySelector(".ui-footer-right");
|
|
1858
|
+
i && !v && x ? (v = document.createElement("button"), v.id = "btn-footer-clear", v.className = "ui-footer-btn btn-clear-footer", v.title = "Limpar seleção", v.innerHTML = b.fechar, v.addEventListener("click", () => e.limparSelecao(!0)), x.appendChild(v)) : !i && v && v.remove();
|
|
1859
|
+
}
|
|
1860
|
+
function ir(e, r, a, i, t) {
|
|
1861
|
+
const o = Te(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !i && !o.includes(r) && e.feicoes.some((c) => c.id === r), l = ma(
|
|
1718
1862
|
n ? [...o, r] : o,
|
|
1719
1863
|
e.selectedFeatureIds,
|
|
1720
1864
|
e.lastClickedFeatureId,
|
|
@@ -1722,35 +1866,35 @@ function Ua(e, r, a, i, t) {
|
|
|
1722
1866
|
a,
|
|
1723
1867
|
i
|
|
1724
1868
|
);
|
|
1725
|
-
|
|
1869
|
+
l && (e.selectedFeatureIds = l.selecionados, e.lastClickedFeatureId = l.ultimoClicadoId, e.sincronizarSelecaoDOM(), t && e.notificarMudancaSelecao());
|
|
1726
1870
|
}
|
|
1727
|
-
function
|
|
1871
|
+
function or(e, r, a) {
|
|
1728
1872
|
const i = r || [];
|
|
1729
1873
|
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
1874
|
}
|
|
1731
|
-
function
|
|
1875
|
+
function nr(e, r) {
|
|
1732
1876
|
e.selectedFeatureIds.size !== 0 && (e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.sincronizarSelecaoDOM(), r && e.notificarMudancaSelecao());
|
|
1733
1877
|
}
|
|
1734
|
-
function
|
|
1878
|
+
function sr(e) {
|
|
1735
1879
|
const r = e.feicoes.filter((a) => e.selectedFeatureIds.has(a.id));
|
|
1736
1880
|
e.dispararEvento("ui-feicoes-selecionadas", {
|
|
1737
1881
|
feicoesIds: Array.from(e.selectedFeatureIds),
|
|
1738
1882
|
feicoes: r
|
|
1739
1883
|
}), 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
1884
|
}
|
|
1741
|
-
class
|
|
1885
|
+
class lr {
|
|
1742
1886
|
constructor(r) {
|
|
1743
1887
|
A(this, "origens", /* @__PURE__ */ new Map());
|
|
1744
1888
|
A(this, "removidas", /* @__PURE__ */ new Set());
|
|
1745
|
-
A(this, "salvarComDebounce",
|
|
1889
|
+
A(this, "salvarComDebounce", Fe(() => this.salvar(), 200));
|
|
1746
1890
|
this.instantaneo = r;
|
|
1747
1891
|
}
|
|
1748
1892
|
chaveAtual() {
|
|
1749
1893
|
const r = this.instantaneo();
|
|
1750
|
-
return
|
|
1894
|
+
return La(r.storageKey, r.id);
|
|
1751
1895
|
}
|
|
1752
1896
|
carregar() {
|
|
1753
|
-
return
|
|
1897
|
+
return fe(this.chaveAtual());
|
|
1754
1898
|
}
|
|
1755
1899
|
/** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
|
|
1756
1900
|
agendar() {
|
|
@@ -1759,8 +1903,8 @@ class Xa {
|
|
|
1759
1903
|
salvar() {
|
|
1760
1904
|
const r = this.instantaneo();
|
|
1761
1905
|
if (!r.persistir || !r.conectado) return;
|
|
1762
|
-
const a = this.chaveAtual(), i =
|
|
1763
|
-
estadoAnterior:
|
|
1906
|
+
const a = this.chaveAtual(), i = Ma({
|
|
1907
|
+
estadoAnterior: fe(a),
|
|
1764
1908
|
origensCamadas: this.origens,
|
|
1765
1909
|
camadas: r.camadas,
|
|
1766
1910
|
expandedLayers: r.expandedLayers,
|
|
@@ -1771,36 +1915,51 @@ class Xa {
|
|
|
1771
1915
|
altura: r.altura,
|
|
1772
1916
|
camadasRemovidas: this.removidas
|
|
1773
1917
|
});
|
|
1774
|
-
this.removidas.clear(),
|
|
1918
|
+
this.removidas.clear(), Ca(a, i);
|
|
1775
1919
|
}
|
|
1776
1920
|
limpar() {
|
|
1777
|
-
|
|
1921
|
+
$a(this.chaveAtual());
|
|
1778
1922
|
}
|
|
1779
1923
|
// --- Origens (como a camada chegou do consumidor) e remoções ---
|
|
1780
1924
|
limparOrigens() {
|
|
1781
1925
|
this.origens.clear();
|
|
1782
1926
|
}
|
|
1783
1927
|
registrarOrigem(r) {
|
|
1784
|
-
this.origens.set(r.id,
|
|
1928
|
+
this.origens.set(r.id, Re(r));
|
|
1785
1929
|
}
|
|
1786
1930
|
esquecerCamada(r) {
|
|
1787
1931
|
this.origens.delete(r), this.removidas.add(r);
|
|
1788
1932
|
}
|
|
1789
1933
|
/** Aplica por cima de `camadas` o que foi lembrado (expansão, visibilidade, travas, opacidade, cor, ordem). */
|
|
1790
1934
|
reidratar(r, a, i) {
|
|
1791
|
-
|
|
1935
|
+
Sa(r, a, i, this.origens);
|
|
1792
1936
|
}
|
|
1793
1937
|
}
|
|
1794
|
-
function
|
|
1795
|
-
const
|
|
1938
|
+
function je(e, r = null, a = /* @__PURE__ */ new Set()) {
|
|
1939
|
+
const i = [];
|
|
1940
|
+
if (!Array.isArray(e)) return i;
|
|
1941
|
+
for (const t of e) {
|
|
1942
|
+
if (!t || typeof t != "object" || !t.id) continue;
|
|
1943
|
+
const o = String(t.id);
|
|
1944
|
+
if (a.has(o)) continue;
|
|
1945
|
+
a.add(o);
|
|
1946
|
+
const n = { ...t, id: o };
|
|
1947
|
+
delete n.children, r && n.parentId === void 0 && (n.parentId = r), i.push(n), Array.isArray(t.children) && t.children.length > 0 && i.push(...je(t.children, o, a));
|
|
1948
|
+
}
|
|
1949
|
+
return i;
|
|
1950
|
+
}
|
|
1951
|
+
function Ne(e) {
|
|
1952
|
+
if (!Array.isArray(e)) return [];
|
|
1953
|
+
const r = /* @__PURE__ */ new Set(), a = [];
|
|
1796
1954
|
for (const i of e) {
|
|
1797
|
-
|
|
1798
|
-
|
|
1955
|
+
if (!i || typeof i != "object" || !i.id) continue;
|
|
1956
|
+
const t = String(i.id);
|
|
1957
|
+
r.has(t) || (r.add(t), a.push({ ...i, id: t }));
|
|
1799
1958
|
}
|
|
1800
1959
|
return a;
|
|
1801
1960
|
}
|
|
1802
|
-
function
|
|
1803
|
-
if (e.camadas = Array.isArray(r) ?
|
|
1961
|
+
function cr(e, r, a) {
|
|
1962
|
+
if (e.camadas = Array.isArray(r) ? je(r) : [], e.lembranca.limparOrigens(), e.persistir) {
|
|
1804
1963
|
const t = e.lembranca.carregar();
|
|
1805
1964
|
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
1965
|
} else
|
|
@@ -1808,20 +1967,20 @@ function Qa(e, r, a) {
|
|
|
1808
1967
|
e.lembranca.registrarOrigem(t), e.expandedLayers.has(t.id) || e.expandedLayers.add(t.id);
|
|
1809
1968
|
});
|
|
1810
1969
|
if (Array.isArray(a)) {
|
|
1811
|
-
e.feicoes = a
|
|
1970
|
+
e.feicoes = Ne(a);
|
|
1812
1971
|
const t = new Set(e.camadas.map((n) => n.id)), o = e.feicoes.filter((n) => n.layerId && !t.has(n.layerId));
|
|
1813
1972
|
o.length > 0 && console.warn(
|
|
1814
1973
|
`[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
|
|
1815
1974
|
o.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
|
|
1816
|
-
),
|
|
1975
|
+
), be(e.selectedFeatureIds, e.feicoes);
|
|
1817
1976
|
}
|
|
1818
1977
|
const i = e.getAttribute("camada-ativa");
|
|
1819
1978
|
e.camadas.length > 0 && (!i || !e.camadas.some((t) => t.id === i)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
|
|
1820
1979
|
}
|
|
1821
|
-
function
|
|
1822
|
-
e.feicoes =
|
|
1980
|
+
function dr(e, r) {
|
|
1981
|
+
e.feicoes = Ne(r), be(e.selectedFeatureIds, e.feicoes), e.solicitarRenderizacao();
|
|
1823
1982
|
}
|
|
1824
|
-
function
|
|
1983
|
+
function ur(e, r) {
|
|
1825
1984
|
if (!r || !r.id) return;
|
|
1826
1985
|
if (e.camadas.some((i) => i.id === r.id)) {
|
|
1827
1986
|
console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);
|
|
@@ -1830,13 +1989,13 @@ function Wa(e, r) {
|
|
|
1830
1989
|
const a = { ...r };
|
|
1831
1990
|
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
1991
|
}
|
|
1833
|
-
function
|
|
1992
|
+
function pr(e, r) {
|
|
1834
1993
|
var a;
|
|
1835
1994
|
e.camadas.forEach((i) => {
|
|
1836
1995
|
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),
|
|
1996
|
+
}), 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
1997
|
}
|
|
1839
|
-
function
|
|
1998
|
+
function fr(e, r) {
|
|
1840
1999
|
if (!(!r || !r.id)) {
|
|
1841
2000
|
if (e.feicoes.some((a) => a.id === r.id)) {
|
|
1842
2001
|
console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);
|
|
@@ -1845,23 +2004,24 @@ function er(e, r) {
|
|
|
1845
2004
|
e.feicoes.push({ ...r }), e.solicitarRenderizacao();
|
|
1846
2005
|
}
|
|
1847
2006
|
}
|
|
1848
|
-
function
|
|
2007
|
+
function mr(e, r) {
|
|
2008
|
+
if (!r || typeof r != "object" || !r.id) return;
|
|
1849
2009
|
const a = e.feicoes.findIndex((i) => i.id === r.id);
|
|
1850
2010
|
a !== -1 && (e.feicoes[a] = { ...e.feicoes[a], ...r }, e.solicitarRenderizacao());
|
|
1851
2011
|
}
|
|
1852
|
-
function
|
|
2012
|
+
function gr(e, r) {
|
|
1853
2013
|
e.feicoes = e.feicoes.filter((a) => a.id !== r), e.selectedFeatureIds.delete(r), e.solicitarRenderizacao();
|
|
1854
2014
|
}
|
|
1855
|
-
function
|
|
2015
|
+
function vr(e) {
|
|
1856
2016
|
function i() {
|
|
1857
2017
|
return e.getMinAltura ? e.getMinAltura() : 140;
|
|
1858
2018
|
}
|
|
1859
2019
|
function t() {
|
|
1860
2020
|
return e.getMaxAltura ? e.getMaxAltura() : 1600;
|
|
1861
2021
|
}
|
|
1862
|
-
function o(
|
|
1863
|
-
if (
|
|
1864
|
-
e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"),
|
|
2022
|
+
function o(s, u = !1) {
|
|
2023
|
+
if (s == null || s === "") {
|
|
2024
|
+
e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"), u && e.hostElement.dispatchEvent(
|
|
1865
2025
|
new CustomEvent("ui-redimensionar-altura", {
|
|
1866
2026
|
bubbles: !0,
|
|
1867
2027
|
composed: !0,
|
|
@@ -1870,79 +2030,79 @@ function tr(e) {
|
|
|
1870
2030
|
);
|
|
1871
2031
|
return;
|
|
1872
2032
|
}
|
|
1873
|
-
const
|
|
1874
|
-
if (isNaN(
|
|
1875
|
-
const
|
|
1876
|
-
e.hostElement.style.height = `${
|
|
2033
|
+
const f = typeof s == "number" ? s : parseFloat(String(s));
|
|
2034
|
+
if (isNaN(f)) return;
|
|
2035
|
+
const p = Math.max(i(), Math.min(t(), Math.round(f)));
|
|
2036
|
+
e.hostElement.style.height = `${p}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${p}px`), u && e.hostElement.dispatchEvent(
|
|
1877
2037
|
new CustomEvent("ui-redimensionar-altura", {
|
|
1878
2038
|
bubbles: !0,
|
|
1879
2039
|
composed: !0,
|
|
1880
|
-
detail: { altura:
|
|
2040
|
+
detail: { altura: p }
|
|
1881
2041
|
})
|
|
1882
2042
|
);
|
|
1883
2043
|
}
|
|
1884
2044
|
let n = null;
|
|
1885
|
-
function
|
|
2045
|
+
function l() {
|
|
1886
2046
|
if (!e.resizerElement) return;
|
|
1887
|
-
let
|
|
1888
|
-
const
|
|
1889
|
-
if (
|
|
1890
|
-
|
|
2047
|
+
let s = !1, u = 0, f = 0;
|
|
2048
|
+
const p = (d) => {
|
|
2049
|
+
if (d.button !== 0) return;
|
|
2050
|
+
d.preventDefault(), d.stopPropagation(), s = !0, u = d.clientY, f = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
|
|
1891
2051
|
try {
|
|
1892
|
-
e.resizerElement.setPointerCapture(
|
|
2052
|
+
e.resizerElement.setPointerCapture(d.pointerId);
|
|
1893
2053
|
} catch {
|
|
1894
2054
|
}
|
|
1895
|
-
const g = (
|
|
1896
|
-
if (!
|
|
1897
|
-
|
|
1898
|
-
const
|
|
1899
|
-
e.hostElement.style.height = `${
|
|
2055
|
+
const g = (L) => {
|
|
2056
|
+
if (!s) return;
|
|
2057
|
+
L.preventDefault();
|
|
2058
|
+
const $ = L.clientY - u, y = Math.max(i(), Math.min(t(), Math.round(f + $)));
|
|
2059
|
+
e.hostElement.style.height = `${y}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${y}px`), e.onRedimensionando && e.onRedimensionando(y), e.hostElement.dispatchEvent(
|
|
1900
2060
|
new CustomEvent("ui-redimensionando-altura", {
|
|
1901
2061
|
bubbles: !0,
|
|
1902
2062
|
composed: !0,
|
|
1903
|
-
detail: { altura:
|
|
2063
|
+
detail: { altura: y }
|
|
1904
2064
|
})
|
|
1905
2065
|
);
|
|
1906
|
-
},
|
|
1907
|
-
var
|
|
1908
|
-
|
|
1909
|
-
}, x = (
|
|
1910
|
-
if (!
|
|
1911
|
-
|
|
2066
|
+
}, v = () => {
|
|
2067
|
+
var L;
|
|
2068
|
+
s = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x), (L = e.resizerElement) == null || L.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
|
|
2069
|
+
}, x = (L) => {
|
|
2070
|
+
if (!s) return;
|
|
2071
|
+
s = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
|
|
1912
2072
|
try {
|
|
1913
|
-
e.resizerElement.hasPointerCapture(
|
|
2073
|
+
e.resizerElement.hasPointerCapture(L.pointerId) && e.resizerElement.releasePointerCapture(L.pointerId);
|
|
1914
2074
|
} catch {
|
|
1915
2075
|
}
|
|
1916
2076
|
window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x);
|
|
1917
|
-
const
|
|
1918
|
-
e.onAlturaAlterada && e.onAlturaAlterada(
|
|
2077
|
+
const $ = e.hostElement.getBoundingClientRect().height, y = Math.round($);
|
|
2078
|
+
e.onAlturaAlterada && e.onAlturaAlterada(y), e.hostElement.dispatchEvent(
|
|
1919
2079
|
new CustomEvent("ui-redimensionar-altura", {
|
|
1920
2080
|
bubbles: !0,
|
|
1921
2081
|
composed: !0,
|
|
1922
|
-
detail: { altura:
|
|
2082
|
+
detail: { altura: y }
|
|
1923
2083
|
})
|
|
1924
2084
|
);
|
|
1925
2085
|
};
|
|
1926
|
-
n =
|
|
1927
|
-
}, m = (
|
|
1928
|
-
|
|
2086
|
+
n = v, window.addEventListener("pointermove", g), window.addEventListener("pointerup", x), window.addEventListener("pointercancel", x);
|
|
2087
|
+
}, m = (d) => {
|
|
2088
|
+
d.preventDefault(), d.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
|
|
1929
2089
|
};
|
|
1930
|
-
e.listeners.add(e.resizerElement, "pointerdown",
|
|
2090
|
+
e.listeners.add(e.resizerElement, "pointerdown", p), e.listeners.add(e.resizerElement, "dblclick", m);
|
|
1931
2091
|
}
|
|
1932
|
-
function
|
|
2092
|
+
function c() {
|
|
1933
2093
|
n == null || n(), e.listeners.cleanup();
|
|
1934
2094
|
}
|
|
1935
2095
|
return {
|
|
1936
|
-
init:
|
|
2096
|
+
init: l,
|
|
1937
2097
|
definirAltura: o,
|
|
1938
|
-
destruir:
|
|
2098
|
+
destruir: c
|
|
1939
2099
|
};
|
|
1940
2100
|
}
|
|
1941
|
-
const
|
|
2101
|
+
const j = class j extends aa {
|
|
1942
2102
|
constructor() {
|
|
1943
2103
|
super();
|
|
1944
2104
|
A(this, "shadow");
|
|
1945
|
-
A(this, "listeners", new
|
|
2105
|
+
A(this, "listeners", new ra());
|
|
1946
2106
|
A(this, "dragDropManager");
|
|
1947
2107
|
A(this, "resizerController");
|
|
1948
2108
|
A(this, "alturaCustomizada", null);
|
|
@@ -1950,7 +2110,7 @@ const R = class R extends He {
|
|
|
1950
2110
|
A(this, "profundidadeLote", 0);
|
|
1951
2111
|
A(this, "renderPendente", !1);
|
|
1952
2112
|
/** @internal */
|
|
1953
|
-
A(this, "lembranca", new
|
|
2113
|
+
A(this, "lembranca", new lr(() => ({
|
|
1954
2114
|
persistir: this.persistir,
|
|
1955
2115
|
conectado: this.conectado,
|
|
1956
2116
|
storageKey: this.storageKey,
|
|
@@ -1966,8 +2126,9 @@ const R = class R extends He {
|
|
|
1966
2126
|
// Estado interno
|
|
1967
2127
|
A(this, "camadas", []);
|
|
1968
2128
|
A(this, "feicoes", []);
|
|
1969
|
-
A(this, "mapasBase", [...
|
|
2129
|
+
A(this, "mapasBase", [...ze]);
|
|
1970
2130
|
A(this, "expandedLayers", /* @__PURE__ */ new Set());
|
|
2131
|
+
A(this, "expandedFeatureLimits", /* @__PURE__ */ new Map());
|
|
1971
2132
|
A(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
|
|
1972
2133
|
A(this, "lastClickedFeatureId", null);
|
|
1973
2134
|
A(this, "activeSettingsLayerId", null);
|
|
@@ -1977,19 +2138,19 @@ const R = class R extends He {
|
|
|
1977
2138
|
A(this, "corpoElement");
|
|
1978
2139
|
A(this, "btnExpandirFlutuante");
|
|
1979
2140
|
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">
|
|
2141
|
+
<style>${Fa}</style>
|
|
2142
|
+
<div class="ui-camadas-container" id="panel-container" part="base" role="region" aria-label="Painel de Camadas">
|
|
2143
|
+
<div class="ui-camadas-corpo" id="painel-corpo" part="corpo"></div>
|
|
2144
|
+
<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
2145
|
<span class="ui-camadas-resizer-grip"></span>
|
|
1985
2146
|
</div>
|
|
1986
2147
|
</div>
|
|
1987
|
-
<button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
|
|
1988
|
-
${
|
|
2148
|
+
<button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" part="botao-expandir" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
|
|
2149
|
+
${b.camadas}
|
|
1989
2150
|
</button>
|
|
1990
|
-
`, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new
|
|
2151
|
+
`, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new ka(this, this.shadow);
|
|
1991
2152
|
const a = this.shadow.getElementById("resizer-altura");
|
|
1992
|
-
this.resizerController =
|
|
2153
|
+
this.resizerController = vr({
|
|
1993
2154
|
hostElement: this,
|
|
1994
2155
|
resizerElement: a,
|
|
1995
2156
|
listeners: this.listeners,
|
|
@@ -2031,20 +2192,20 @@ const R = class R extends He {
|
|
|
2031
2192
|
}
|
|
2032
2193
|
connectedCallback() {
|
|
2033
2194
|
if (this.persistir) {
|
|
2034
|
-
const a =
|
|
2195
|
+
const a = fe(this.obterChaveStorageAtual());
|
|
2035
2196
|
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
2197
|
}
|
|
2037
|
-
this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (
|
|
2198
|
+
this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (j.instanciasChavePadrao.size > 0 && console.warn(
|
|
2038
2199
|
"[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
|
-
),
|
|
2200
|
+
), 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
2201
|
}
|
|
2041
2202
|
disconnectedCallback() {
|
|
2042
2203
|
var a, i;
|
|
2043
|
-
this.conectado = !1,
|
|
2204
|
+
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
2205
|
}
|
|
2045
2206
|
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"
|
|
2207
|
+
var o, n;
|
|
2208
|
+
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
2209
|
}
|
|
2049
2210
|
// --- Getters e Setters de Propriedades Reativas ---
|
|
2050
2211
|
get titulo() {
|
|
@@ -2075,7 +2236,7 @@ const R = class R extends He {
|
|
|
2075
2236
|
t.classList.toggle("active", o), t.setAttribute("aria-pressed", String(o));
|
|
2076
2237
|
});
|
|
2077
2238
|
const i = this.shadow.querySelector("[data-basemap-atual]");
|
|
2078
|
-
i && (i.textContent =
|
|
2239
|
+
i && (i.textContent = Be(this.mapasBase, a));
|
|
2079
2240
|
}
|
|
2080
2241
|
/** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
|
|
2081
2242
|
get mapasBaseRecolhido() {
|
|
@@ -2178,7 +2339,7 @@ const R = class R extends He {
|
|
|
2178
2339
|
this.lembranca.salvar();
|
|
2179
2340
|
}
|
|
2180
2341
|
limparLembranca() {
|
|
2181
|
-
this.lembranca.limpar();
|
|
2342
|
+
this.expandedFeatureLimits.clear(), this.lembranca.limpar();
|
|
2182
2343
|
}
|
|
2183
2344
|
// --- API Pública de Alta Ergonomia ---
|
|
2184
2345
|
//
|
|
@@ -2209,10 +2370,10 @@ const R = class R extends He {
|
|
|
2209
2370
|
this.definirMapasBase(a);
|
|
2210
2371
|
}
|
|
2211
2372
|
definirCamadas(a, i) {
|
|
2212
|
-
|
|
2373
|
+
cr(this, a, i);
|
|
2213
2374
|
}
|
|
2214
2375
|
definirFeicoes(a) {
|
|
2215
|
-
|
|
2376
|
+
dr(this, a);
|
|
2216
2377
|
}
|
|
2217
2378
|
definirMapasBase(a) {
|
|
2218
2379
|
this.mapasBase = Array.isArray(a) ? [...a] : [], this.solicitarRenderizacao();
|
|
@@ -2236,28 +2397,28 @@ const R = class R extends He {
|
|
|
2236
2397
|
return this.feicoes.filter((a) => this.selectedFeatureIds.has(a.id));
|
|
2237
2398
|
}
|
|
2238
2399
|
adicionarCamada(a) {
|
|
2239
|
-
|
|
2400
|
+
ur(this, a);
|
|
2240
2401
|
}
|
|
2241
2402
|
removerCamada(a) {
|
|
2242
|
-
|
|
2403
|
+
pr(this, a);
|
|
2243
2404
|
}
|
|
2244
2405
|
adicionarFeicao(a) {
|
|
2245
|
-
|
|
2406
|
+
fr(this, a);
|
|
2246
2407
|
}
|
|
2247
2408
|
atualizarFeicao(a) {
|
|
2248
|
-
|
|
2409
|
+
mr(this, a);
|
|
2249
2410
|
}
|
|
2250
2411
|
removerFeicao(a) {
|
|
2251
|
-
|
|
2412
|
+
gr(this, a);
|
|
2252
2413
|
}
|
|
2253
2414
|
selecionarFeicao(a, i = !1, t = !1, o = !1) {
|
|
2254
|
-
|
|
2415
|
+
ir(this, a, i, t, o);
|
|
2255
2416
|
}
|
|
2256
2417
|
selecionarFeicoes(a, i = !1) {
|
|
2257
|
-
|
|
2418
|
+
or(this, a, i);
|
|
2258
2419
|
}
|
|
2259
2420
|
limparSelecao(a = !1) {
|
|
2260
|
-
|
|
2421
|
+
nr(this, a);
|
|
2261
2422
|
}
|
|
2262
2423
|
expandirTodas() {
|
|
2263
2424
|
this.expandedLayers = new Set(this.camadas.map((a) => a.id)), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
|
|
@@ -2265,6 +2426,14 @@ const R = class R extends He {
|
|
|
2265
2426
|
colapsarTodas() {
|
|
2266
2427
|
this.expandedLayers.clear(), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
|
|
2267
2428
|
}
|
|
2429
|
+
alternarExpansao(a) {
|
|
2430
|
+
a && (this.expandedLayers.has(a) ? this.expandedLayers.delete(a) : this.expandedLayers.add(a), this.salvarLembrancaEstado(), this.solicitarRenderizacao());
|
|
2431
|
+
}
|
|
2432
|
+
incrementarLimiteFeicoes(a) {
|
|
2433
|
+
if (!a) return;
|
|
2434
|
+
const i = this.expandedFeatureLimits.get(a) ?? 80;
|
|
2435
|
+
this.expandedFeatureLimits.set(a, i + 80), this.solicitarRenderizacao();
|
|
2436
|
+
}
|
|
2268
2437
|
alternarVisibilidadeTodas(a = !1) {
|
|
2269
2438
|
const t = !this.camadas.some((o) => o.visible !== !1);
|
|
2270
2439
|
this.camadas.forEach((o) => {
|
|
@@ -2313,7 +2482,7 @@ const R = class R extends He {
|
|
|
2313
2482
|
);
|
|
2314
2483
|
}
|
|
2315
2484
|
render() {
|
|
2316
|
-
this.corpoElement &&
|
|
2485
|
+
this.corpoElement && _a(this, this.shadow, this.corpoElement, this.dragDropManager);
|
|
2317
2486
|
}
|
|
2318
2487
|
// --- Conexão de Eventos ---
|
|
2319
2488
|
conectarEventosGerais() {
|
|
@@ -2321,27 +2490,27 @@ const R = class R extends He {
|
|
|
2321
2490
|
}
|
|
2322
2491
|
// --- Sincronização de DOM (delegada) ---
|
|
2323
2492
|
sincronizarCamadaAtivaDOM() {
|
|
2324
|
-
|
|
2493
|
+
rr(this, this.shadow);
|
|
2325
2494
|
}
|
|
2326
2495
|
sincronizarSelecaoDOM() {
|
|
2327
|
-
|
|
2496
|
+
tr(this, this.shadow);
|
|
2328
2497
|
}
|
|
2329
2498
|
// --- Auxiliares Internos ---
|
|
2330
2499
|
notificarMudancaSelecao() {
|
|
2331
|
-
|
|
2500
|
+
sr(this);
|
|
2332
2501
|
}
|
|
2333
2502
|
};
|
|
2334
2503
|
/** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
|
|
2335
|
-
A(
|
|
2336
|
-
let
|
|
2337
|
-
class
|
|
2504
|
+
A(j, "instanciasChavePadrao", /* @__PURE__ */ new Set());
|
|
2505
|
+
let K = j;
|
|
2506
|
+
class br extends K {
|
|
2338
2507
|
}
|
|
2339
|
-
class
|
|
2508
|
+
class hr extends K {
|
|
2340
2509
|
}
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
function
|
|
2510
|
+
ge("ui-camadas", K);
|
|
2511
|
+
ge("ui-painel-camadas", br);
|
|
2512
|
+
ge("ui-layer-panel", hr);
|
|
2513
|
+
function Lr(e) {
|
|
2345
2514
|
var r;
|
|
2346
2515
|
return {
|
|
2347
2516
|
id: e.id,
|
|
@@ -2358,7 +2527,7 @@ function ur(e) {
|
|
|
2358
2527
|
dados: e.dados
|
|
2359
2528
|
};
|
|
2360
2529
|
}
|
|
2361
|
-
function
|
|
2530
|
+
function Cr(e, r = "levantamento", a = "feicoes") {
|
|
2362
2531
|
return {
|
|
2363
2532
|
id: e.id,
|
|
2364
2533
|
nome: e.name,
|
|
@@ -2377,9 +2546,9 @@ function pr(e, r = "levantamento", a = "feicoes") {
|
|
|
2377
2546
|
dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
|
|
2378
2547
|
};
|
|
2379
2548
|
}
|
|
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 = ((
|
|
2549
|
+
function $r(e, r = "") {
|
|
2550
|
+
var o, n, l, c;
|
|
2551
|
+
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
2552
|
return {
|
|
2384
2553
|
id: String(e.id),
|
|
2385
2554
|
name: e.nome || e.name || `Feição ${e.id}`,
|
|
@@ -2396,41 +2565,41 @@ function fr(e, r = "") {
|
|
|
2396
2565
|
};
|
|
2397
2566
|
}
|
|
2398
2567
|
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
|
-
|
|
2568
|
+
ka as CamadasDragDropManager,
|
|
2569
|
+
b as ICONES,
|
|
2570
|
+
De as LIMITE_FEICOES_POR_CAMADA,
|
|
2571
|
+
ze as MAPAS_BASE_PADRAO,
|
|
2572
|
+
K as UICamadas,
|
|
2573
|
+
hr as UILayerPanel,
|
|
2574
|
+
Fr as UIMapaBase,
|
|
2575
|
+
br as UIPainelCamadas,
|
|
2576
|
+
zr as UISeletorMapaBase,
|
|
2577
|
+
ce as calcularAreaAnelSimples,
|
|
2578
|
+
$e as calcularAreaPoligono,
|
|
2579
|
+
Ce as calcularComprimentoLinha,
|
|
2580
|
+
oa as calcularDistanciaPontos,
|
|
2581
|
+
ma as calcularSelecaoFeicao,
|
|
2582
|
+
fe as carregarEstadoPersistido,
|
|
2583
|
+
ve as construirHierarquiaCamadas,
|
|
2584
|
+
Cr as converterCamadaItemParaCanvasLayer,
|
|
2585
|
+
Lr as converterCanvasLayerParaCamadaItem,
|
|
2586
|
+
$r as converterFeicaoParaItem,
|
|
2587
|
+
F as escapeHtml,
|
|
2588
|
+
Pe as filtrarCamadasPorBusca,
|
|
2589
|
+
ae as filtrarFeicoesPorBusca,
|
|
2590
|
+
Se as formatarMetricaFeicoes,
|
|
2591
|
+
da as formatarOpcoesCamadasHierarquicas,
|
|
2592
|
+
La as gerarChaveStorage,
|
|
2593
|
+
$a as limparEstadoPersistido,
|
|
2594
|
+
Ma as montarEstadoPersistido,
|
|
2595
|
+
Be as nomeDoMapaBase,
|
|
2596
|
+
Te as obterIdsVisiveisFeicoes,
|
|
2597
|
+
Sa as reidratarCamadasComOverrides,
|
|
2598
|
+
be as removerSelecoesInvalidas,
|
|
2599
|
+
ya as renderizarArvoreCamadas,
|
|
2600
|
+
la as renderizarGridMapasBase,
|
|
2601
|
+
ua as renderizarRodapeAcoes,
|
|
2602
|
+
fa as renderizarThumbGeometria,
|
|
2603
|
+
Ca as salvarEstadoPersistido,
|
|
2604
|
+
Re as snapshotCamada
|
|
2436
2605
|
};
|