@thibezer/ui-components-kit 2.12.4 → 2.12.5
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 +658 -639
- package/dist/camadas.cjs +106 -106
- package/dist/camadas.js +1341 -1023
- package/dist/components/ui-camadas/camadas-arraste-controles.d.ts +2 -1
- package/dist/components/ui-camadas/camadas-atualizacao-incremental.d.ts +24 -0
- package/dist/components/ui-camadas/camadas-colecao.d.ts +3 -1
- package/dist/components/ui-camadas/camadas-drag-drop.d.ts +10 -0
- package/dist/components/ui-camadas/camadas-eventos-arvore.d.ts +5 -0
- package/dist/components/ui-camadas/camadas-eventos-camadas.d.ts +2 -0
- package/dist/components/ui-camadas/camadas-linha-feicao.d.ts +29 -0
- package/dist/components/ui-camadas/camadas-render.d.ts +8 -1
- package/dist/components/ui-camadas/camadas-renomear.d.ts +2 -1
- package/dist/components/ui-camadas/camadas-sincronizacao-dom.d.ts +5 -0
- package/dist/components/ui-camadas/tipos.d.ts +37 -0
- package/dist/components/ui-camadas/ui-camadas.d.ts +11 -2
- package/dist/custom-elements.json +7422 -6646
- package/package.json +1 -1
package/dist/camadas.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
1
|
+
var ya = Object.defineProperty;
|
|
2
|
+
var xa = (e, r, a) => r in e ? ya(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
|
|
3
|
+
var A = (e, r, a) => xa(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 { a as
|
|
9
|
-
import { f as
|
|
10
|
-
import { UIMapaBase as
|
|
11
|
-
const
|
|
5
|
+
import { d as ye, S as wa } from "./ssr-safe-5cWfJP-s.js";
|
|
6
|
+
import { L as Aa } from "./listener-bag-DQgv7OON.js";
|
|
7
|
+
import { a as qe } from "./parts-CaoQiCfI.js";
|
|
8
|
+
import { a as Ea } from "./ui-seletor-cor-FYtRccnK.js";
|
|
9
|
+
import { f as ka } from "./alvo-digitavel-CzCvNVQ3.js";
|
|
10
|
+
import { UIMapaBase as ut, UISeletorMapaBase as pt } from "./seletor-mapa-base.js";
|
|
11
|
+
const h = {
|
|
12
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">
|
|
13
13
|
<polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
|
|
14
14
|
<polyline points="2 17 12 22 22 17"></polyline>
|
|
@@ -106,27 +106,27 @@ const b = {
|
|
|
106
106
|
<line x1="9" y1="3" x2="9" y2="21"></line>
|
|
107
107
|
<line x1="15" y1="3" x2="15" y2="21"></line>
|
|
108
108
|
</svg>`
|
|
109
|
-
},
|
|
110
|
-
function
|
|
109
|
+
}, V = 6378137;
|
|
110
|
+
function Ia(e, r) {
|
|
111
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
112
|
return 0;
|
|
113
|
-
const a = e[0] * Math.PI / 180,
|
|
113
|
+
const a = e[0] * Math.PI / 180, t = e[1] * Math.PI / 180, i = r[0] * Math.PI / 180, o = r[1] * Math.PI / 180, n = i - a, l = o - t, c = Math.min(
|
|
114
114
|
1,
|
|
115
115
|
Math.max(
|
|
116
116
|
0,
|
|
117
|
-
Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(
|
|
117
|
+
Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(i) * Math.sin(l / 2) * Math.sin(l / 2)
|
|
118
118
|
)
|
|
119
|
-
), s =
|
|
119
|
+
), s = V * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
|
|
120
120
|
return Number.isFinite(s) ? s : 0;
|
|
121
121
|
}
|
|
122
|
-
function
|
|
122
|
+
function Pe(e) {
|
|
123
123
|
if (!Array.isArray(e) || e.length < 2) return 0;
|
|
124
124
|
if (Array.isArray(e[0]) && Array.isArray(e[0][0]))
|
|
125
|
-
return e.reduce((a,
|
|
125
|
+
return e.reduce((a, t) => a + Pe(t), 0);
|
|
126
126
|
let r = 0;
|
|
127
127
|
for (let a = 0; a < e.length - 1; a++) {
|
|
128
|
-
const
|
|
129
|
-
Array.isArray(
|
|
128
|
+
const t = e[a], i = e[a + 1];
|
|
129
|
+
Array.isArray(t) && Array.isArray(i) && t.length >= 2 && i.length >= 2 && (r += Ia([t[0], t[1]], [i[0], i[1]]));
|
|
130
130
|
}
|
|
131
131
|
return r;
|
|
132
132
|
}
|
|
@@ -134,120 +134,120 @@ function ue(e) {
|
|
|
134
134
|
if (!Array.isArray(e)) return 0;
|
|
135
135
|
const r = [];
|
|
136
136
|
for (let u = 0; u < e.length; u++) {
|
|
137
|
-
const
|
|
138
|
-
Array.isArray(
|
|
137
|
+
const d = e[u];
|
|
138
|
+
Array.isArray(d) && d.length >= 2 && Number.isFinite(d[0]) && Number.isFinite(d[1]) && r.push([d[0], d[1]]);
|
|
139
139
|
}
|
|
140
140
|
r.length > 3 && r[0][0] === r[r.length - 1][0] && r[0][1] === r[r.length - 1][1] && r.pop();
|
|
141
141
|
const a = r.length;
|
|
142
142
|
if (a < 3) return 0;
|
|
143
|
-
let
|
|
143
|
+
let t = 0;
|
|
144
144
|
for (let u = 0; u < a; u++)
|
|
145
|
-
|
|
146
|
-
const
|
|
145
|
+
t += r[u][0];
|
|
146
|
+
const i = t / a * Math.PI / 180, o = Math.cos(i), n = Math.PI / 180, l = r[0][0], c = r[0][1];
|
|
147
147
|
let s = 0;
|
|
148
148
|
for (let u = 0; u < a; u++) {
|
|
149
|
-
const
|
|
150
|
-
s += f *
|
|
149
|
+
const d = r[u], m = r[(u + 1) % a], f = (d[1] - c) * n * V * o, g = (d[0] - l) * n * V, v = (m[1] - c) * n * V * o, y = (m[0] - l) * n * V;
|
|
150
|
+
s += f * y - v * g;
|
|
151
151
|
}
|
|
152
|
-
const
|
|
153
|
-
return Number.isFinite(
|
|
152
|
+
const p = Math.abs(s) / 2;
|
|
153
|
+
return Number.isFinite(p) ? p : 0;
|
|
154
154
|
}
|
|
155
|
-
function
|
|
155
|
+
function De(e) {
|
|
156
156
|
if (!Array.isArray(e) || e.length === 0) return 0;
|
|
157
157
|
if (Array.isArray(e[0]) && typeof e[0][0] == "number")
|
|
158
158
|
return ue(e);
|
|
159
159
|
if (Array.isArray(e[0]) && Array.isArray(e[0][0])) {
|
|
160
160
|
if (Array.isArray(e[0][0][0]))
|
|
161
|
-
return e.reduce((
|
|
161
|
+
return e.reduce((t, i) => t + De(i), 0);
|
|
162
162
|
const r = ue(e[0]);
|
|
163
163
|
let a = 0;
|
|
164
|
-
for (let
|
|
165
|
-
a += ue(e[
|
|
164
|
+
for (let t = 1; t < e.length; t++)
|
|
165
|
+
a += ue(e[t]);
|
|
166
166
|
return Math.max(0, r - a);
|
|
167
167
|
}
|
|
168
168
|
return 0;
|
|
169
169
|
}
|
|
170
|
-
function
|
|
170
|
+
function ot(e) {
|
|
171
171
|
if (!e || e.length === 0) return "";
|
|
172
172
|
const r = e.filter(
|
|
173
|
-
(
|
|
173
|
+
(t) => t.type === "Polygon" || t.type === "MultiPolygon" || t.geometryType === "Polygon"
|
|
174
174
|
);
|
|
175
175
|
if (r.length > 0) {
|
|
176
|
-
const
|
|
177
|
-
(
|
|
176
|
+
const t = r.reduce(
|
|
177
|
+
(i, o) => i + (De(o.coordinates) || 0),
|
|
178
178
|
0
|
|
179
179
|
);
|
|
180
|
-
return
|
|
180
|
+
return t >= 1e4 ? `${(t / 1e4).toLocaleString("pt-BR", {
|
|
181
181
|
minimumFractionDigits: 1,
|
|
182
182
|
maximumFractionDigits: 2
|
|
183
|
-
})} ha` : `${Math.round(
|
|
183
|
+
})} ha` : `${Math.round(t).toLocaleString("pt-BR")} m²`;
|
|
184
184
|
}
|
|
185
185
|
const a = e.filter(
|
|
186
|
-
(
|
|
186
|
+
(t) => t.type === "LineString" || t.type === "MultiLineString" || t.geometryType === "LineString"
|
|
187
187
|
);
|
|
188
188
|
if (a.length > 0) {
|
|
189
|
-
const
|
|
190
|
-
(
|
|
189
|
+
const t = a.reduce(
|
|
190
|
+
(i, o) => i + (Pe(o.coordinates) || 0),
|
|
191
191
|
0
|
|
192
192
|
);
|
|
193
|
-
return
|
|
193
|
+
return t >= 1e3 ? `${(t / 1e3).toLocaleString("pt-BR", {
|
|
194
194
|
minimumFractionDigits: 1,
|
|
195
195
|
maximumFractionDigits: 2
|
|
196
|
-
})} km` : `${Math.round(
|
|
196
|
+
})} km` : `${Math.round(t).toLocaleString("pt-BR")} m`;
|
|
197
197
|
}
|
|
198
198
|
return "";
|
|
199
199
|
}
|
|
200
|
-
function
|
|
200
|
+
function z(e) {
|
|
201
201
|
return e == null ? "" : String(e).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
202
202
|
}
|
|
203
|
-
const
|
|
204
|
-
function
|
|
203
|
+
const Ca = /^(#(?:[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 H(e, r = "#00E08A") {
|
|
205
205
|
if (!e || typeof e != "string") return r;
|
|
206
206
|
const a = e.trim();
|
|
207
|
-
return
|
|
207
|
+
return Ca.test(a) ? a : r;
|
|
208
208
|
}
|
|
209
209
|
function pe(e) {
|
|
210
210
|
return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
|
|
211
211
|
}
|
|
212
|
-
function
|
|
213
|
-
const
|
|
212
|
+
function La(e, r, a) {
|
|
213
|
+
const t = r / 100, i = a / 100, o = (c) => (c + e / 30) % 12, n = t * Math.min(i, 1 - i), l = (c) => i - n * Math.max(-1, Math.min(o(c) - 3, Math.min(9 - o(c), 1)));
|
|
214
214
|
return [l(0) * 255, l(8) * 255, l(4) * 255];
|
|
215
215
|
}
|
|
216
|
-
function
|
|
216
|
+
function Sa(e, r = "#000000") {
|
|
217
217
|
if (!e || typeof e != "string") return r;
|
|
218
|
-
const a = e.trim().toLowerCase(),
|
|
219
|
-
if (
|
|
220
|
-
const o =
|
|
218
|
+
const a = e.trim().toLowerCase(), t = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
|
|
219
|
+
if (t) {
|
|
220
|
+
const o = t[1];
|
|
221
221
|
return o.length <= 4 ? `#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}` : `#${o.slice(0, 6)}`;
|
|
222
222
|
}
|
|
223
|
-
const
|
|
224
|
-
if (
|
|
225
|
-
const o =
|
|
223
|
+
const i = /^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);
|
|
224
|
+
if (i) {
|
|
225
|
+
const o = i[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
|
|
226
226
|
if (o.length >= 3 && o.slice(0, 3).every((n) => !isNaN(n))) {
|
|
227
|
-
const [n, l, c] = o, [s,
|
|
228
|
-
return `#${pe(s)}${pe(
|
|
227
|
+
const [n, l, c] = o, [s, p, u] = i[1] === "rgb" ? [n, l, c] : La(n, l, c);
|
|
228
|
+
return `#${pe(s)}${pe(p)}${pe(u)}`;
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
return r;
|
|
232
232
|
}
|
|
233
233
|
function T(e, r, a) {
|
|
234
|
-
const
|
|
235
|
-
for (let
|
|
236
|
-
if (i
|
|
234
|
+
const t = e.querySelectorAll(`[${r}]`);
|
|
235
|
+
for (let i = 0; i < t.length; i++)
|
|
236
|
+
if (t[i].getAttribute(r) === a) return t[i];
|
|
237
237
|
return null;
|
|
238
238
|
}
|
|
239
|
-
function
|
|
239
|
+
function Te(e, r = 80) {
|
|
240
240
|
let a = null;
|
|
241
|
-
return (...
|
|
241
|
+
return (...t) => {
|
|
242
242
|
a && clearTimeout(a), a = setTimeout(() => {
|
|
243
|
-
e(...
|
|
243
|
+
e(...t), a = null;
|
|
244
244
|
}, r);
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
|
-
function
|
|
247
|
+
function P(e, r) {
|
|
248
248
|
e.setAttribute("title", r), e.setAttribute("aria-label", r);
|
|
249
249
|
}
|
|
250
|
-
const
|
|
250
|
+
const Re = [
|
|
251
251
|
{
|
|
252
252
|
id: "none",
|
|
253
253
|
nome: "Sem Mapa",
|
|
@@ -290,16 +290,16 @@ const He = [
|
|
|
290
290
|
thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
|
|
291
291
|
}
|
|
292
292
|
];
|
|
293
|
-
function
|
|
294
|
-
const a = Array.isArray(e) ? e.find((
|
|
293
|
+
function Oe(e, r) {
|
|
294
|
+
const a = Array.isArray(e) ? e.find((t) => t.id === r) : void 0;
|
|
295
295
|
return a && typeof a.nome == "string" ? a.nome : "";
|
|
296
296
|
}
|
|
297
|
-
function
|
|
297
|
+
function $a(e = Re, r = "satelite", a = !1) {
|
|
298
298
|
if (!e || e.length === 0) return "";
|
|
299
|
-
const
|
|
300
|
-
const o = r ===
|
|
299
|
+
const t = e.map((i) => {
|
|
300
|
+
const o = r === i.id, n = z(i.id), l = z(i.nome), c = z(i.descricao || i.nome);
|
|
301
301
|
let s = "";
|
|
302
|
-
return
|
|
302
|
+
return i.thumbnailUrl ? s = `<img class="ui-basemap-preview" src="${z(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : s = `<div class="ui-basemap-preview-none">${h.gradeCad}</div>`, `
|
|
303
303
|
<div class="ui-basemap-card ${o ? "active" : ""}" data-basemap-id="${n}" role="button" tabindex="0" aria-pressed="${o}" title="${c}">
|
|
304
304
|
${s}
|
|
305
305
|
<span>${l}</span>
|
|
@@ -310,210 +310,279 @@ function ya(e = He, r = "satelite", a = !1) {
|
|
|
310
310
|
<div class="ui-basemap-section ${a ? "recolhido" : ""}" part="mapas-base">
|
|
311
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"}">
|
|
312
312
|
<span class="ui-basemap-title">Mapa Base</span>
|
|
313
|
-
<span class="ui-basemap-atual" data-basemap-atual>${
|
|
314
|
-
<span class="ui-chevron-icon ${a ? "" : "open"}">${
|
|
313
|
+
<span class="ui-basemap-atual" data-basemap-atual>${z(Oe(e, r))}</span>
|
|
314
|
+
<span class="ui-chevron-icon ${a ? "" : "open"}">${h.chevronDir}</span>
|
|
315
315
|
</button>
|
|
316
316
|
${a ? "" : `<div class="ui-basemap-grid" id="ui-basemap-grid">
|
|
317
|
-
${
|
|
317
|
+
${t}
|
|
318
318
|
</div>`}
|
|
319
319
|
</div>
|
|
320
320
|
`;
|
|
321
321
|
}
|
|
322
|
-
function
|
|
322
|
+
function ne(e) {
|
|
323
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(),
|
|
325
|
-
r.forEach((s,
|
|
326
|
-
a.set(s.id, s),
|
|
324
|
+
const r = e.filter((s) => !!(s && typeof s == "object" && s.id)), a = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
|
|
325
|
+
r.forEach((s, p) => {
|
|
326
|
+
a.set(s.id, s), t.set(s.id, p);
|
|
327
327
|
});
|
|
328
|
-
const
|
|
328
|
+
const i = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
|
|
329
329
|
for (const s of r) {
|
|
330
330
|
if (o.has(s.id)) continue;
|
|
331
|
-
const
|
|
332
|
-
let
|
|
333
|
-
for (;
|
|
334
|
-
if (u.has(
|
|
335
|
-
const m = u.get(
|
|
331
|
+
const p = [], u = /* @__PURE__ */ new Map();
|
|
332
|
+
let d = s;
|
|
333
|
+
for (; d && d.parentId && a.has(d.parentId) && d.parentId !== d.id; ) {
|
|
334
|
+
if (u.has(d.id)) {
|
|
335
|
+
const m = u.get(d.id), f = p.slice(m);
|
|
336
336
|
let g = f[0];
|
|
337
337
|
for (const v of f)
|
|
338
|
-
(
|
|
339
|
-
|
|
338
|
+
(t.get(v) ?? 1 / 0) < (t.get(g) ?? 1 / 0) && (g = v);
|
|
339
|
+
i.add(g);
|
|
340
340
|
break;
|
|
341
341
|
}
|
|
342
|
-
if (o.has(
|
|
343
|
-
u.set(
|
|
342
|
+
if (o.has(d.id)) break;
|
|
343
|
+
u.set(d.id, p.length), p.push(d.id), d = a.get(d.parentId);
|
|
344
344
|
}
|
|
345
|
-
for (const m of
|
|
345
|
+
for (const m of p) o.add(m);
|
|
346
346
|
}
|
|
347
347
|
const n = /* @__PURE__ */ new Map(), l = [];
|
|
348
348
|
r.forEach((s) => {
|
|
349
|
-
!
|
|
349
|
+
!i.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);
|
|
350
350
|
});
|
|
351
|
-
function c(s,
|
|
352
|
-
const
|
|
353
|
-
|
|
351
|
+
function c(s, p, u) {
|
|
352
|
+
const d = new Set(u);
|
|
353
|
+
d.add(s.id);
|
|
354
354
|
const f = (n.get(s.id) || (Array.isArray(s.children) ? s.children : [])).filter(
|
|
355
|
-
(g) => !!(g && typeof g == "object" && g.id && !
|
|
355
|
+
(g) => !!(g && typeof g == "object" && g.id && !d.has(g.id))
|
|
356
356
|
);
|
|
357
357
|
return {
|
|
358
358
|
camada: s,
|
|
359
|
-
depth:
|
|
360
|
-
subcamadas: f.map((g) => c(g,
|
|
359
|
+
depth: p,
|
|
360
|
+
subcamadas: f.map((g) => c(g, p + 1, d))
|
|
361
361
|
};
|
|
362
362
|
}
|
|
363
363
|
return l.map((s) => c(s, 0, /* @__PURE__ */ new Set()));
|
|
364
364
|
}
|
|
365
|
-
function
|
|
365
|
+
function Ma(e, r) {
|
|
366
366
|
const a = /* @__PURE__ */ new Set();
|
|
367
367
|
if (!r || !Array.isArray(e)) return a;
|
|
368
|
-
const
|
|
368
|
+
const t = /* @__PURE__ */ new Map();
|
|
369
369
|
for (const o of e)
|
|
370
|
-
!o || typeof o != "object" || !o.id || o.parentId && o.parentId !== o.id && (
|
|
371
|
-
const
|
|
372
|
-
for (;
|
|
373
|
-
const o =
|
|
370
|
+
!o || typeof o != "object" || !o.id || o.parentId && o.parentId !== o.id && (t.has(o.parentId) || t.set(o.parentId, []), t.get(o.parentId).push(o.id));
|
|
371
|
+
const i = [r];
|
|
372
|
+
for (; i.length > 0; ) {
|
|
373
|
+
const o = i.pop();
|
|
374
374
|
if (a.has(o)) continue;
|
|
375
375
|
a.add(o);
|
|
376
|
-
const n =
|
|
376
|
+
const n = t.get(o);
|
|
377
377
|
if (n)
|
|
378
378
|
for (const l of n)
|
|
379
|
-
a.has(l) ||
|
|
379
|
+
a.has(l) || i.push(l);
|
|
380
380
|
}
|
|
381
381
|
return a;
|
|
382
382
|
}
|
|
383
|
-
function
|
|
383
|
+
function Q(e, r, a) {
|
|
384
384
|
if (!a || !Array.isArray(r) || r.length === 0) return [];
|
|
385
|
-
const
|
|
386
|
-
return r.filter((
|
|
385
|
+
const t = Ma(e, a);
|
|
386
|
+
return r.filter((i) => !!(i && i.layerId && t.has(i.layerId)));
|
|
387
387
|
}
|
|
388
|
-
function
|
|
388
|
+
function se(e) {
|
|
389
389
|
const r = /* @__PURE__ */ new Map();
|
|
390
|
-
e.forEach((
|
|
390
|
+
e.forEach((t) => t && t.id && r.set(t.id, t));
|
|
391
391
|
const a = /* @__PURE__ */ new Map();
|
|
392
|
-
for (const
|
|
393
|
-
let
|
|
394
|
-
const n = /* @__PURE__ */ new Set([
|
|
395
|
-
let l =
|
|
392
|
+
for (const t of r.values()) {
|
|
393
|
+
let i = !1, o = !1;
|
|
394
|
+
const n = /* @__PURE__ */ new Set([t.id]);
|
|
395
|
+
let l = t.parentId ? r.get(t.parentId) : void 0;
|
|
396
396
|
for (; l && !n.has(l.id); )
|
|
397
|
-
n.add(l.id), l.visible === !1 && (
|
|
398
|
-
a.set(
|
|
397
|
+
n.add(l.id), l.visible === !1 && (i = !0), l.locked === !0 && (o = !0), l = l.parentId ? r.get(l.parentId) : void 0;
|
|
398
|
+
a.set(t.id, { ocultaPorAncestral: i, travadaPorAncestral: o });
|
|
399
399
|
}
|
|
400
400
|
return a;
|
|
401
401
|
}
|
|
402
|
-
function
|
|
403
|
-
const r =
|
|
402
|
+
function xe(e) {
|
|
403
|
+
const r = se(e);
|
|
404
404
|
return new Set(
|
|
405
405
|
e.filter((a) => {
|
|
406
|
-
var
|
|
407
|
-
return a && (a.locked === !0 || ((
|
|
406
|
+
var t;
|
|
407
|
+
return a && (a.locked === !0 || ((t = r.get(a.id)) == null ? void 0 : t.travadaPorAncestral) === !0);
|
|
408
408
|
}).map((a) => a.id)
|
|
409
409
|
);
|
|
410
410
|
}
|
|
411
|
-
function
|
|
412
|
-
const r =
|
|
413
|
-
const o =
|
|
414
|
-
return
|
|
411
|
+
function Fa(e) {
|
|
412
|
+
const r = ne(e), a = xe(e), t = (i) => {
|
|
413
|
+
const o = i.camada, n = i.depth, l = i.subcamadas, c = n > 0 ? " ".repeat(n) + "↳ " : l.length > 0 || o.isGroup ? "📁 " : "", s = a.has(o.id), p = `<option value="${z(o.id)}"${s ? " disabled" : ""}>${c}${z(o.name)}${s ? " 🔒" : ""}</option>`, u = l.map((d) => t(d)).join("");
|
|
414
|
+
return p + u;
|
|
415
415
|
};
|
|
416
|
-
return r.map((
|
|
416
|
+
return r.map((i) => t(i)).join("");
|
|
417
417
|
}
|
|
418
|
-
function
|
|
418
|
+
function je(e, r) {
|
|
419
419
|
return r > 0 ? {
|
|
420
|
-
icone:
|
|
420
|
+
icone: h.alvoEnquadrar,
|
|
421
421
|
texto: `${r} ${r > 1 ? "selecionados" : "selecionado"}`
|
|
422
422
|
} : {
|
|
423
|
-
icone:
|
|
423
|
+
icone: h.camadas,
|
|
424
424
|
texto: `${e} ${e > 1 ? "camadas" : "camada"}`
|
|
425
425
|
};
|
|
426
426
|
}
|
|
427
|
-
function
|
|
428
|
-
const
|
|
427
|
+
function za(e, r, a) {
|
|
428
|
+
const t = r.filter((c) => a.has(c.id)), i = t.length > 0, o = i ? t.length : e.length, n = je(e.length, t.length), l = Fa(e);
|
|
429
429
|
return `
|
|
430
|
-
<div class="ui-tree-footer ${
|
|
430
|
+
<div class="ui-tree-footer ${i ? "tem-selecao" : "sem-selecao"}" part="rodape">
|
|
431
431
|
<div class="ui-footer-left">
|
|
432
432
|
<span class="ui-footer-count" id="footer-count">${o}</span>
|
|
433
433
|
<span class="ui-footer-label" id="footer-label" role="img" title="${n.texto}" aria-label="${n.texto}">${n.icone}</span>
|
|
434
434
|
</div>
|
|
435
435
|
|
|
436
436
|
<!-- Criação de camadas/grupos quando não há nada selecionado -->
|
|
437
|
-
<div class="ui-footer-actions-gerais" style="display: ${
|
|
437
|
+
<div class="ui-footer-actions-gerais" style="display: ${i ? "none" : "flex"};">
|
|
438
438
|
<button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
|
|
439
|
-
${
|
|
439
|
+
${h.moverPasta}
|
|
440
440
|
<span>Grupo</span>
|
|
441
441
|
</button>
|
|
442
442
|
<button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
|
|
443
|
-
${
|
|
443
|
+
${h.mais}
|
|
444
444
|
<span>Camada</span>
|
|
445
445
|
</button>
|
|
446
446
|
</div>
|
|
447
447
|
|
|
448
448
|
<!-- Ações em massa ativadas quando há seleção -->
|
|
449
|
-
<div class="ui-footer-right ui-footer-bulk-actions" style="display: ${
|
|
450
|
-
<div class="ui-footer-move-wrapper ${
|
|
451
|
-
<select id="select-footer-move" aria-label="Mover selecionados para outra camada" class="ui-footer-select" ${
|
|
449
|
+
<div class="ui-footer-right ui-footer-bulk-actions" style="display: ${i ? "flex" : "none"};">
|
|
450
|
+
<div class="ui-footer-move-wrapper ${i ? "" : "disabled"}" title="Mover selecionados para outra camada">
|
|
451
|
+
<select id="select-footer-move" aria-label="Mover selecionados para outra camada" class="ui-footer-select" ${i ? "" : "disabled"}>
|
|
452
452
|
<option value="" disabled selected>Mover para...</option>
|
|
453
453
|
${l}
|
|
454
454
|
</select>
|
|
455
455
|
</div>
|
|
456
456
|
|
|
457
|
-
<button class="ui-footer-btn btn-danger-footer ${
|
|
458
|
-
${
|
|
457
|
+
<button class="ui-footer-btn btn-danger-footer ${i ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${i ? "" : "disabled"}>
|
|
458
|
+
${h.lixeira}
|
|
459
459
|
</button>
|
|
460
460
|
</div>
|
|
461
461
|
</div>
|
|
462
462
|
`;
|
|
463
463
|
}
|
|
464
464
|
const fe = 64;
|
|
465
|
-
function
|
|
465
|
+
function Se(e) {
|
|
466
466
|
return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
|
|
467
467
|
}
|
|
468
|
-
function
|
|
469
|
-
return !Array.isArray(e) || e.length === 0 ? [] :
|
|
468
|
+
function Ne(e) {
|
|
469
|
+
return !Array.isArray(e) || e.length === 0 ? [] : Se(e[0]) ? [e.filter(Se)] : e.flatMap(Ne);
|
|
470
470
|
}
|
|
471
|
-
function
|
|
471
|
+
function $e(e) {
|
|
472
472
|
if (e.length <= fe) return e;
|
|
473
473
|
const r = e.length / fe, a = [];
|
|
474
|
-
for (let
|
|
474
|
+
for (let t = 0; t < fe; t++) a.push(e[Math.floor(t * r)]);
|
|
475
475
|
return a.push(e[e.length - 1]), a;
|
|
476
476
|
}
|
|
477
|
-
function
|
|
478
|
-
const
|
|
479
|
-
if (
|
|
480
|
-
let
|
|
481
|
-
for (const
|
|
482
|
-
for (const [
|
|
483
|
-
|
|
484
|
-
const c = 16, s = 2,
|
|
485
|
-
if (
|
|
486
|
-
const
|
|
487
|
-
return
|
|
488
|
-
`<path d="${
|
|
477
|
+
function Ba(e, r, a) {
|
|
478
|
+
const t = Ne(r).filter((L) => L.length > 0);
|
|
479
|
+
if (t.length === 0) return "";
|
|
480
|
+
let i = 1 / 0, o = -1 / 0, n = 1 / 0, l = -1 / 0;
|
|
481
|
+
for (const L of t)
|
|
482
|
+
for (const [b, $] of L)
|
|
483
|
+
$ < i && (i = $), $ > o && (o = $), -b < n && (n = -b), -b > l && (l = -b);
|
|
484
|
+
const c = 16, s = 2, p = c - s * 2, u = o - i, d = l - n, m = Math.max(u, d), f = m > 0 ? p / m : 0, g = s + (p - u * f) / 2, v = s + (p - d * f) / 2, y = (L) => Math.round(L * 100) / 100, k = ([L, b]) => `${y(g + (b - i) * f)},${y(v + (-L - n) * f)}`, M = e === "polygon" || e === "multipolygon", S = e === "linestring" || e === "multilinestring", w = (L) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${L}</svg>`;
|
|
485
|
+
if (M) {
|
|
486
|
+
const L = t.filter((b) => b.length >= 3).map((b) => `M${$e(b).map(k).join("L")}Z`).join("");
|
|
487
|
+
return L ? w(
|
|
488
|
+
`<path d="${L}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
|
|
489
489
|
) : "";
|
|
490
490
|
}
|
|
491
|
-
if (
|
|
492
|
-
const
|
|
493
|
-
return
|
|
494
|
-
`<path d="${
|
|
491
|
+
if (S) {
|
|
492
|
+
const L = t.filter((b) => b.length >= 2).map((b) => `M${$e(b).map(k).join("L")}`).join("");
|
|
493
|
+
return L ? w(
|
|
494
|
+
`<path d="${L}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
|
|
495
495
|
) : "";
|
|
496
496
|
}
|
|
497
497
|
return "";
|
|
498
498
|
}
|
|
499
|
-
function
|
|
500
|
-
const
|
|
501
|
-
return o || (
|
|
499
|
+
function qa(e, r, a) {
|
|
500
|
+
const t = H(r, "#00E08A"), i = (e || "").toLowerCase(), o = a !== void 0 ? Ba(i, a, t) : "";
|
|
501
|
+
return o || (i === "polygon" || i === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${t}" fill-opacity="0.45" stroke="${t}" stroke-width="1.5"/></svg>` : i === "linestring" || i === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${t}" stroke-width="2"/></svg>` : i === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${t}" text-anchor="middle" font-family="sans-serif">T</text></svg>` : `<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${t}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
|
|
502
|
+
}
|
|
503
|
+
function He(e, r, a) {
|
|
504
|
+
return {
|
|
505
|
+
camadaIdSeguro: z(e.id),
|
|
506
|
+
corCamada: H(e.color, "#00E08A"),
|
|
507
|
+
profundidade: r,
|
|
508
|
+
esmaecida: e.visible === !1 || (a == null ? void 0 : a.ocultaPorAncestral) === !0,
|
|
509
|
+
travadaPelaCamada: e.locked === !0 || (a == null ? void 0 : a.travadaPorAncestral) === !0
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
const me = (e, r, a) => `${e} ${e === 1 ? r : a}`;
|
|
513
|
+
function Ge(e, r, a) {
|
|
514
|
+
return a === 0 ? me(e, "feição", "feições") : `${me(e, "feição", "feições")} no grupo (${r} nesta camada) · ${me(a, "subcamada", "subcamadas")}`;
|
|
515
|
+
}
|
|
516
|
+
function Ve(e, r, a, t) {
|
|
517
|
+
return e === 0 && t ? "" : `<span class="ui-count-chip" title="${Ge(e, r, a)}">${e}</span>`;
|
|
518
|
+
}
|
|
519
|
+
function Ue(e, r) {
|
|
520
|
+
const a = r - e;
|
|
521
|
+
return {
|
|
522
|
+
resumo: `Exibindo ${e} de ${r} feições. Use a busca acima para filtrar.`,
|
|
523
|
+
botao: `Mostrar mais (+${Math.min(80, a)})`
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
function _e(e, r, a) {
|
|
527
|
+
const t = Ue(r, a);
|
|
528
|
+
return `<div class="ui-truncate-notice" role="note">
|
|
529
|
+
<span>${t.resumo}</span>
|
|
530
|
+
<button type="button" class="ui-truncate-more-btn" data-layer-show-more="${e}">${t.botao}</button>
|
|
531
|
+
</div>`;
|
|
532
|
+
}
|
|
533
|
+
function Ye(e) {
|
|
534
|
+
return `<div class="ui-empty-row"><span>${e ? "Grupo vazio (adicione subcamadas ou feições)" : "Camada vazia"}</span></div>`;
|
|
535
|
+
}
|
|
536
|
+
const Pa = ["name", "color", "visible", "locked", "status", "type", "geometryType", "coordinates", "layerId"];
|
|
537
|
+
function Da(e, r) {
|
|
538
|
+
return Pa.every((a) => e[a] === r[a]);
|
|
502
539
|
}
|
|
503
|
-
|
|
504
|
-
|
|
540
|
+
function Ke(e, r, a, t) {
|
|
541
|
+
const { camadaIdSeguro: i, corCamada: o, profundidade: n } = r, l = z(e.id), c = z(e.name || "Feição"), s = H(e.color, o), p = e.visible !== !1, u = r.travadaPelaCamada, d = e.locked === !0 || u, m = u ? "Bloqueada pela camada" : d ? "Desbloquear Feição" : "Bloquear Feição", f = e.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
|
|
542
|
+
return `
|
|
543
|
+
<div class="ui-feat-row ${a ? "selected-row" : ""} ${p ? "" : "hidden-row"} ${r.esmaecida ? "herdado-oculto" : ""}" data-feat-row="${l}" data-feat-select="${l}" data-feat-layer="${i}" role="treeitem" aria-level="${n + 2}" aria-selected="${a}" tabindex="-1" draggable="true" part="${a ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${n + 1};" title="Clique para selecionar | Arraste para reordenar">
|
|
544
|
+
<div class="ui-col ui-col-eye" data-feat-eye="${l}" role="button" tabindex="0" aria-label="${p ? "Ocultar Feição" : "Exibir Feição"}" title="${p ? "Ocultar Feição" : "Exibir Feição"}">
|
|
545
|
+
${p ? h.olhoAberto : h.olhoFechado}
|
|
546
|
+
</div>
|
|
547
|
+
|
|
548
|
+
<div class="ui-col ui-col-lock ${d ? "" : "ui-lock-open"}" data-feat-lock="${l}" ${u ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${m}" title="${m}">
|
|
549
|
+
${d ? h.cadeadoTrancado : h.cadeadoAberto}
|
|
550
|
+
</div>
|
|
551
|
+
|
|
552
|
+
<div class="ui-col ui-col-colorbar" style="background: ${s};"></div>
|
|
553
|
+
<div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
|
|
554
|
+
<div class="ui-col ui-col-thumb">
|
|
555
|
+
<div class="ui-thumb-box">${qa(e.type || e.geometryType, s, e.coordinates)}</div>
|
|
556
|
+
</div>
|
|
557
|
+
|
|
558
|
+
<div class="ui-col ui-col-name" data-feat-name-trigger="${l}" title="Duplo clique para renomear">
|
|
559
|
+
${t ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${l}" value="${c}" />` : `<span class="ui-name-text">${c}</span>${f}`}
|
|
560
|
+
</div>
|
|
561
|
+
|
|
562
|
+
<div class="ui-col ui-col-actions">
|
|
563
|
+
<button class="ui-micro-btn" data-feat-fit="${l}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${h.alvoEnquadrar}</button>
|
|
564
|
+
</div>
|
|
565
|
+
|
|
566
|
+
<div class="ui-col ui-col-target" data-feat-target="${l}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
|
|
567
|
+
<div class="ui-target-circle ${a ? "selected" : ""}"></div>
|
|
568
|
+
</div>
|
|
569
|
+
</div>
|
|
570
|
+
`;
|
|
571
|
+
}
|
|
572
|
+
const we = 80;
|
|
573
|
+
function te(e, r) {
|
|
505
574
|
const a = (r || "").trim().toLowerCase();
|
|
506
575
|
return a ? e.filter(
|
|
507
|
-
(
|
|
576
|
+
(t) => (t.name || "").toLowerCase().includes(a) || (t.category || "").toLowerCase().includes(a) || (t.type || "").toLowerCase().includes(a)
|
|
508
577
|
) : e;
|
|
509
578
|
}
|
|
510
|
-
function
|
|
511
|
-
var
|
|
512
|
-
const
|
|
513
|
-
if (!
|
|
514
|
-
const
|
|
579
|
+
function Qe(e, r, a) {
|
|
580
|
+
var d, m;
|
|
581
|
+
const t = (a || "").trim().toLowerCase();
|
|
582
|
+
if (!t) return null;
|
|
583
|
+
const i = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
|
|
515
584
|
for (const f of e)
|
|
516
|
-
|
|
585
|
+
i.set(f.id, f), f.parentId && f.parentId !== f.id && (o.has(f.parentId) || o.set(f.parentId, []), o.get(f.parentId).push(f.id));
|
|
517
586
|
const n = /* @__PURE__ */ new Map();
|
|
518
587
|
for (const f of r) {
|
|
519
588
|
const g = f.layerId || "";
|
|
@@ -521,217 +590,181 @@ function Ke(e, r, a) {
|
|
|
521
590
|
}
|
|
522
591
|
const l = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set();
|
|
523
592
|
for (const f of e)
|
|
524
|
-
(typeof f.name == "string" ? f.name.toLowerCase() : "").includes(
|
|
593
|
+
(typeof f.name == "string" ? f.name.toLowerCase() : "").includes(t) ? (l.add(f.id), c.add(f.id)) : te(n.get(f.id) || [], t).length > 0 && c.add(f.id);
|
|
525
594
|
const s = new Set(c);
|
|
526
595
|
for (const f of c) {
|
|
527
596
|
const g = /* @__PURE__ */ new Set([f]);
|
|
528
|
-
let v = (
|
|
529
|
-
for (; v &&
|
|
530
|
-
g.add(v), s.add(v), v = (m =
|
|
597
|
+
let v = (d = i.get(f)) == null ? void 0 : d.parentId;
|
|
598
|
+
for (; v && i.has(v) && !g.has(v); )
|
|
599
|
+
g.add(v), s.add(v), v = (m = i.get(v)) == null ? void 0 : m.parentId;
|
|
531
600
|
}
|
|
532
|
-
const
|
|
533
|
-
for (;
|
|
534
|
-
const f =
|
|
601
|
+
const p = [...l];
|
|
602
|
+
for (; p.length > 0; ) {
|
|
603
|
+
const f = p.pop();
|
|
535
604
|
for (const g of o.get(f) || [])
|
|
536
|
-
s.has(g) || (s.add(g),
|
|
605
|
+
s.has(g) || (s.add(g), p.push(g));
|
|
537
606
|
}
|
|
538
607
|
const u = /* @__PURE__ */ new Map();
|
|
539
608
|
for (const f of s) {
|
|
540
609
|
const g = n.get(f) || [];
|
|
541
|
-
u.set(f, l.has(f) ? g :
|
|
610
|
+
u.set(f, l.has(f) ? g : te(g, t));
|
|
542
611
|
}
|
|
543
612
|
return { camadasVisiveis: s, feicoesPorCamada: u };
|
|
544
613
|
}
|
|
545
|
-
function
|
|
546
|
-
const n =
|
|
614
|
+
function Xe(e, r, a, t = "", i = we, o) {
|
|
615
|
+
const n = Qe(e, r, t), l = [], c = /* @__PURE__ */ new Map();
|
|
547
616
|
for (let u = 0; u < r.length; u++) {
|
|
548
|
-
const
|
|
549
|
-
if (!
|
|
550
|
-
const m =
|
|
551
|
-
c.has(m) || c.set(m, []), c.get(m).push(
|
|
552
|
-
}
|
|
553
|
-
const s =
|
|
554
|
-
function
|
|
555
|
-
const
|
|
556
|
-
if (n && !n.camadasVisiveis.has(
|
|
557
|
-
for (const
|
|
558
|
-
|
|
559
|
-
const f = n ? n.feicoesPorCamada.get(
|
|
560
|
-
for (let
|
|
561
|
-
l.push(v[
|
|
617
|
+
const d = r[u];
|
|
618
|
+
if (!d || !d.id) continue;
|
|
619
|
+
const m = d.layerId || "";
|
|
620
|
+
c.has(m) || c.set(m, []), c.get(m).push(d);
|
|
621
|
+
}
|
|
622
|
+
const s = ne(e);
|
|
623
|
+
function p(u) {
|
|
624
|
+
const d = u.camada;
|
|
625
|
+
if (n && !n.camadasVisiveis.has(d.id) || !(n ? !0 : a.has(d.id))) return;
|
|
626
|
+
for (const y of u.subcamadas)
|
|
627
|
+
p(y);
|
|
628
|
+
const f = n ? n.feicoesPorCamada.get(d.id) || [] : c.get(d.id) || [], g = (o == null ? void 0 : o.get(d.id)) ?? i, v = f.slice(0, g);
|
|
629
|
+
for (let y = 0; y < v.length; y++)
|
|
630
|
+
l.push(v[y].id);
|
|
562
631
|
}
|
|
563
632
|
for (const u of s)
|
|
564
|
-
|
|
633
|
+
p(u);
|
|
565
634
|
return l;
|
|
566
635
|
}
|
|
567
|
-
function
|
|
568
|
-
if (!e.includes(
|
|
636
|
+
function Ta(e, r, a, t, i, o) {
|
|
637
|
+
if (!e.includes(t)) return null;
|
|
569
638
|
const n = new Set(r);
|
|
570
639
|
let l = a;
|
|
571
640
|
if (o && a && e.includes(a)) {
|
|
572
|
-
const c = e.indexOf(a), s = e.indexOf(
|
|
573
|
-
|
|
574
|
-
for (let
|
|
575
|
-
n.add(e[
|
|
576
|
-
} else
|
|
641
|
+
const c = e.indexOf(a), s = e.indexOf(t), p = Math.min(c, s), u = Math.max(c, s);
|
|
642
|
+
i || n.clear();
|
|
643
|
+
for (let d = p; d <= u; d++)
|
|
644
|
+
n.add(e[d]);
|
|
645
|
+
} else i ? (n.has(t) ? n.delete(t) : n.add(t), l = t) : (n.clear(), n.add(t), l = t);
|
|
577
646
|
return { selecionados: n, ultimoClicadoId: l };
|
|
578
647
|
}
|
|
579
|
-
function
|
|
648
|
+
function Ae(e, r) {
|
|
580
649
|
if (e.size === 0) return;
|
|
581
|
-
const a = new Set(r.map((
|
|
582
|
-
for (const
|
|
583
|
-
a.has(
|
|
650
|
+
const a = new Set(r.map((t) => t.id));
|
|
651
|
+
for (const t of e)
|
|
652
|
+
a.has(t) || e.delete(t);
|
|
584
653
|
}
|
|
585
|
-
function
|
|
586
|
-
const
|
|
587
|
-
let
|
|
588
|
-
for (;
|
|
589
|
-
if (
|
|
590
|
-
|
|
654
|
+
function U(e, r, a) {
|
|
655
|
+
const t = /* @__PURE__ */ new Set();
|
|
656
|
+
let i = e.find((o) => o.id === r);
|
|
657
|
+
for (; i && i.parentId; ) {
|
|
658
|
+
if (t.has(i.id) || (t.add(i.id), i.parentId === a)) return !0;
|
|
659
|
+
i = e.find((o) => o.id === (i == null ? void 0 : i.parentId));
|
|
591
660
|
}
|
|
592
661
|
return !1;
|
|
593
662
|
}
|
|
594
|
-
function
|
|
663
|
+
function Ra(e) {
|
|
595
664
|
return Number.isFinite(e) ? e < 0.25 ? "acima" : e > 0.75 ? "abaixo" : "dentro" : "dentro";
|
|
596
665
|
}
|
|
597
|
-
function
|
|
666
|
+
function Oa(e, r, a, t) {
|
|
598
667
|
if (!r || !a || r === a) return null;
|
|
599
|
-
const
|
|
600
|
-
if (!
|
|
601
|
-
const n =
|
|
602
|
-
if (
|
|
603
|
-
return
|
|
604
|
-
if (
|
|
668
|
+
const i = e.find((s) => s.id === r), o = e.find((s) => s.id === a);
|
|
669
|
+
if (!i || !o) return null;
|
|
670
|
+
const n = i.parentId !== void 0 ? i.parentId : null;
|
|
671
|
+
if (t === "dentro")
|
|
672
|
+
return U(e, o.id, i.id) ? null : (i.parentId = o.id, { tipo: "hierarquia", camada: i, novoParentId: o.id, parentAnteriorId: n });
|
|
673
|
+
if (U(e, o.id, i.id)) return null;
|
|
605
674
|
const l = e.findIndex((s) => s.id === r);
|
|
606
675
|
e.splice(l, 1);
|
|
607
676
|
const c = e.findIndex((s) => s.id === a);
|
|
608
|
-
return c === -1 ? e.push(
|
|
677
|
+
return c === -1 ? e.push(i) : e.splice(t === "acima" ? c : c + 1, 0, i), i.parentId = o.parentId ?? null, { tipo: "ordem", camada: i, parentAnteriorId: n, novoParentId: i.parentId };
|
|
609
678
|
}
|
|
610
|
-
function
|
|
679
|
+
function ja(e, r, a, t) {
|
|
611
680
|
if (!r || !a || r === a) return !1;
|
|
612
|
-
const
|
|
613
|
-
if (
|
|
614
|
-
const [o] = e.splice(
|
|
615
|
-
return n === -1 ? e.push(o) : e.splice(
|
|
616
|
-
}
|
|
617
|
-
function
|
|
618
|
-
const
|
|
619
|
-
if (!
|
|
620
|
-
const n =
|
|
621
|
-
return
|
|
622
|
-
}
|
|
623
|
-
function
|
|
681
|
+
const i = e.findIndex((l) => l.id === r);
|
|
682
|
+
if (i === -1) return !1;
|
|
683
|
+
const [o] = e.splice(i, 1), n = e.findIndex((l) => l.id === a);
|
|
684
|
+
return n === -1 ? e.push(o) : e.splice(t ? n : n + 1, 0, o), !0;
|
|
685
|
+
}
|
|
686
|
+
function Na(e, r, a, t) {
|
|
687
|
+
const i = e.find((l) => l.id === a), o = r.find((l) => l.id === t);
|
|
688
|
+
if (!i || !o || i.layerId === t) return null;
|
|
689
|
+
const n = i.layerId;
|
|
690
|
+
return i.layerId = t, { feicao: i, camadaOrigemId: n, camadaDestinoId: t, mudouDeCamada: !0 };
|
|
691
|
+
}
|
|
692
|
+
function Ha(e, r, a, t) {
|
|
624
693
|
if (!r || !a || r === a) return null;
|
|
625
|
-
const
|
|
626
|
-
if (
|
|
694
|
+
const i = e.findIndex((u) => u.id === r);
|
|
695
|
+
if (i === -1) return null;
|
|
627
696
|
const o = e.find((u) => u.id === a);
|
|
628
697
|
if (!o) return null;
|
|
629
|
-
const [n] = e.splice(
|
|
698
|
+
const [n] = e.splice(i, 1), l = n.layerId, c = o.layerId, s = l !== c;
|
|
630
699
|
s && (n.layerId = c);
|
|
631
|
-
const
|
|
632
|
-
return
|
|
633
|
-
}
|
|
634
|
-
const me = (e, r, a) => `${e} ${e === 1 ? r : a}`;
|
|
635
|
-
function za(e, r, a) {
|
|
636
|
-
return a === 0 ? me(e, "feição", "feições") : `${me(e, "feição", "feições")} no grupo (${r} nesta camada) · ${me(a, "subcamada", "subcamadas")}`;
|
|
700
|
+
const p = e.findIndex((u) => u.id === a);
|
|
701
|
+
return p === -1 ? e.push(n) : e.splice(t ? p : p + 1, 0, n), { feicao: n, camadaOrigemId: l, camadaDestinoId: c, mudouDeCamada: s };
|
|
637
702
|
}
|
|
638
|
-
function
|
|
703
|
+
function Ga(e) {
|
|
639
704
|
const {
|
|
640
705
|
camadas: r,
|
|
641
706
|
feicoes: a,
|
|
642
|
-
camadaAtivaId:
|
|
643
|
-
expandedLayers:
|
|
707
|
+
camadaAtivaId: t,
|
|
708
|
+
expandedLayers: i,
|
|
644
709
|
selectedFeatureIds: o,
|
|
645
710
|
activeSettingsLayerId: n,
|
|
646
711
|
editingLayerId: l,
|
|
647
712
|
editingFeatureId: c,
|
|
648
713
|
searchQuery: s,
|
|
649
|
-
titulo:
|
|
714
|
+
titulo: p = "CAMADAS",
|
|
650
715
|
mostrarBusca: u = !0,
|
|
651
|
-
limitesPorCamada:
|
|
652
|
-
limiteFeicoesPorCamada: m =
|
|
716
|
+
limitesPorCamada: d,
|
|
717
|
+
limiteFeicoesPorCamada: m = we,
|
|
653
718
|
mostrarBotaoColapsar: f = !1
|
|
654
|
-
} = e, g = (s || "").trim().toLowerCase(), v =
|
|
655
|
-
for (let
|
|
656
|
-
const x = a[
|
|
719
|
+
} = e, g = (s || "").trim().toLowerCase(), v = Qe(r, a, g), y = /* @__PURE__ */ new Map();
|
|
720
|
+
for (let E = 0; E < a.length; E++) {
|
|
721
|
+
const x = a[E];
|
|
657
722
|
if (!x || !x.id) continue;
|
|
658
|
-
const
|
|
659
|
-
|
|
723
|
+
const B = x.layerId || "";
|
|
724
|
+
y.has(B) || y.set(B, []), y.get(B).push(x);
|
|
660
725
|
}
|
|
661
|
-
const k =
|
|
726
|
+
const k = se(r), M = r.every((E) => E.visible !== !1), S = r.length > 0 && r.every((E) => i.has(E.id)), w = u ? `
|
|
662
727
|
<div class="ui-tree-search-wrapper" part="busca">
|
|
663
|
-
<span class="ui-tree-search-icon">${
|
|
664
|
-
<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="${
|
|
728
|
+
<span class="ui-tree-search-icon">${h.busca}</span>
|
|
729
|
+
<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="${z(
|
|
665
730
|
s
|
|
666
731
|
)}" />
|
|
667
|
-
${s ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${
|
|
732
|
+
${s ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${h.fechar}</button>` : ""}
|
|
668
733
|
</div>
|
|
669
|
-
` : "",
|
|
734
|
+
` : "", L = `
|
|
670
735
|
<div class="ui-tree-toolbar" part="toolbar">
|
|
671
736
|
<div class="ui-tree-title-group">
|
|
672
|
-
<span class="ui-tree-section-title">${
|
|
737
|
+
<span class="ui-tree-section-title">${z(p || "CAMADAS")}</span>
|
|
673
738
|
<span class="ui-tree-count-badge">${r.length}</span>
|
|
674
739
|
</div>
|
|
675
740
|
<div class="ui-tree-actions">
|
|
676
|
-
<button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${
|
|
677
|
-
${
|
|
741
|
+
<button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${M ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${M ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
|
|
742
|
+
${M ? h.olhoAberto : h.olhoFechado}
|
|
678
743
|
</button>
|
|
679
|
-
<button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${
|
|
680
|
-
<span class="ui-chevron-icon ${
|
|
744
|
+
<button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${S ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${S ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
|
|
745
|
+
<span class="ui-chevron-icon ${S ? "open" : ""}">${h.chevronDir}</span>
|
|
681
746
|
</button>
|
|
682
|
-
${f ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${
|
|
747
|
+
${f ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${h.recolherPainel}</button>` : ""}
|
|
683
748
|
</div>
|
|
684
749
|
</div>
|
|
685
|
-
${
|
|
686
|
-
`,
|
|
687
|
-
const x =
|
|
750
|
+
${w}
|
|
751
|
+
`, b = (E) => {
|
|
752
|
+
const x = E.camada;
|
|
688
753
|
if (v && !v.camadasVisiveis.has(x.id)) return "";
|
|
689
|
-
const
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
</div>
|
|
696
|
-
|
|
697
|
-
<div class="ui-col ui-col-lock ${de ? "" : "ui-lock-open"}" data-feat-lock="${R}" ${ce ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${ze}" title="${ze}">
|
|
698
|
-
${de ? b.cadeadoTrancado : b.cadeadoAberto}
|
|
699
|
-
</div>
|
|
700
|
-
|
|
701
|
-
<div class="ui-col ui-col-colorbar" style="background: ${Fe};"></div>
|
|
702
|
-
<div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
|
|
703
|
-
<div class="ui-col ui-col-thumb">
|
|
704
|
-
<div class="ui-thumb-box">${Ia(A.type || A.geometryType, Fe, A.coordinates)}</div>
|
|
705
|
-
</div>
|
|
706
|
-
|
|
707
|
-
<div class="ui-col ui-col-name" data-feat-name-trigger="${R}" title="Duplo clique para renomear">
|
|
708
|
-
${c === A.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${R}" value="${Me}" />` : `<span class="ui-name-text">${Me}</span>${ca}`}
|
|
709
|
-
</div>
|
|
710
|
-
|
|
711
|
-
<div class="ui-col ui-col-actions">
|
|
712
|
-
<button class="ui-micro-btn" data-feat-fit="${R}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${b.alvoEnquadrar}</button>
|
|
713
|
-
</div>
|
|
714
|
-
|
|
715
|
-
<div class="ui-col ui-col-target" data-feat-target="${R}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
|
|
716
|
-
<div class="ui-target-circle ${re ? "selected" : ""}"></div>
|
|
717
|
-
</div>
|
|
718
|
-
</div>
|
|
719
|
-
`;
|
|
720
|
-
}).join(""), ia = aa ? `<div class="ui-truncate-notice" role="note">
|
|
721
|
-
<span>Exibindo ${ee} de ${D.length} feições. Use a busca acima para filtrar.</span>
|
|
722
|
-
<button type="button" class="ui-truncate-more-btn" data-layer-show-more="${E}">Mostrar mais (+${Math.min(80, ra)})</button>
|
|
723
|
-
</div>` : "", Se = x.opacity !== void 0 ? x.opacity : 1, oa = Math.round(Se * 100), na = r.filter((A) => A.id !== x.id && !_(r, A.id, x.id)).map(
|
|
724
|
-
(A) => `<option value="${F(A.id)}" ${x.parentId === A.id ? "selected" : ""}>${A.isGroup ? "📁 " : ""}${F(A.name)}</option>`
|
|
725
|
-
).join(""), sa = se ? `
|
|
726
|
-
<div class="ui-layer-settings-drawer" id="settings-drawer-${E}" part="drawer" style="--drawer-cor-camada: ${O};">
|
|
754
|
+
const B = E.depth, D = E.subcamadas, ke = v ? D.filter((F) => v.camadasVisiveis.has(F.camada.id)) : D, G = !!(x.isGroup || D.length > 0), C = z(x.id), X = z(x.name || (G ? "Novo Grupo" : "Camada")), j = H(x.color, "#00E08A"), W = x.visible !== !1, J = x.locked === !0, Z = g ? !0 : i.has(x.id), le = n === x.id, ce = t === x.id, O = k.get(x.id), sa = (O == null ? void 0 : O.ocultaPorAncestral) === !0, la = (O == null ? void 0 : O.travadaPorAncestral) === !0, R = v ? v.feicoesPorCamada.get(x.id) || [] : y.get(x.id) || [], ee = v ? R : Q(r, a, x.id), Ie = ee.length > 0 && ee.every((F) => o.has(F.id)), ca = !Ie && ee.some((F) => o.has(F.id)), de = (d == null ? void 0 : d.get(x.id)) ?? m, da = R.slice(0, de), ua = R.length > de, pa = He(x, B, O), fa = da.map(
|
|
755
|
+
(F) => Ke(F, pa, o.has(F.id), c === F.id)
|
|
756
|
+
).join(""), ma = ua ? _e(C, de, R.length) : "", Ce = Number(x.opacity ?? 1), Le = Number.isFinite(Ce) ? Math.min(1, Math.max(0, Ce)) : 1, ga = Math.round(Le * 100), va = r.filter((F) => F.id !== x.id && !U(r, F.id, x.id)).map(
|
|
757
|
+
(F) => `<option value="${z(F.id)}" ${x.parentId === F.id ? "selected" : ""}>${F.isGroup ? "📁 " : ""}${z(F.name)}</option>`
|
|
758
|
+
).join(""), ba = le ? `
|
|
759
|
+
<div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${j};">
|
|
727
760
|
<div class="ui-drawer-header">
|
|
728
761
|
<div class="ui-drawer-header-left">
|
|
729
|
-
<span class="ui-drawer-icon">${
|
|
762
|
+
<span class="ui-drawer-icon">${h.engrenagem}</span>
|
|
730
763
|
<span class="ui-drawer-title">Configurações da Camada</span>
|
|
731
|
-
<span class="ui-drawer-layer-chip" title="${
|
|
764
|
+
<span class="ui-drawer-layer-chip" title="${X}">${X}</span>
|
|
732
765
|
</div>
|
|
733
|
-
<button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${
|
|
734
|
-
${
|
|
766
|
+
<button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${C}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
|
|
767
|
+
${h.fechar}
|
|
735
768
|
</button>
|
|
736
769
|
</div>
|
|
737
770
|
|
|
@@ -743,9 +776,9 @@ function Ba(e) {
|
|
|
743
776
|
</div>
|
|
744
777
|
<div class="ui-drawer-color-group">
|
|
745
778
|
<label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
|
|
746
|
-
<span class="ui-drawer-color-sample" id="sample-color-${
|
|
747
|
-
<span class="ui-drawer-color-hex" id="hex-color-${
|
|
748
|
-
<input type="color" aria-label="Cor da camada" data-layer-color-picker="${
|
|
779
|
+
<span class="ui-drawer-color-sample" id="sample-color-${C}" style="background-color: ${j};"></span>
|
|
780
|
+
<span class="ui-drawer-color-hex" id="hex-color-${C}">${j.toUpperCase()}</span>
|
|
781
|
+
<input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Sa(j, "#00e08a")}" class="ui-drawer-color-native" />
|
|
749
782
|
</label>
|
|
750
783
|
</div>
|
|
751
784
|
</div>
|
|
@@ -754,10 +787,10 @@ function Ba(e) {
|
|
|
754
787
|
<div class="ui-drawer-row">
|
|
755
788
|
<div class="ui-drawer-row-label">
|
|
756
789
|
<span>Opacidade</span>
|
|
757
|
-
<span class="ui-drawer-badge" id="badge-op-${
|
|
790
|
+
<span class="ui-drawer-badge" id="badge-op-${C}">${ga}%</span>
|
|
758
791
|
</div>
|
|
759
792
|
<div class="ui-drawer-slider-container">
|
|
760
|
-
<input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(
|
|
793
|
+
<input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(Le) || 0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
|
|
761
794
|
</div>
|
|
762
795
|
</div>
|
|
763
796
|
|
|
@@ -767,9 +800,9 @@ function Ba(e) {
|
|
|
767
800
|
<span>Pertence ao Grupo</span>
|
|
768
801
|
</div>
|
|
769
802
|
<div class="ui-drawer-select-wrapper">
|
|
770
|
-
<select class="ui-drawer-select" data-layer-parent-select="${
|
|
803
|
+
<select class="ui-drawer-select" data-layer-parent-select="${C}" aria-label="Grupo pai da camada">
|
|
771
804
|
<option value="" ${x.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
|
|
772
|
-
${
|
|
805
|
+
${va}
|
|
773
806
|
</select>
|
|
774
807
|
</div>
|
|
775
808
|
</div>
|
|
@@ -777,76 +810,76 @@ function Ba(e) {
|
|
|
777
810
|
|
|
778
811
|
<div class="ui-drawer-footer">
|
|
779
812
|
<div class="ui-drawer-meta-info">
|
|
780
|
-
<span>${
|
|
813
|
+
<span>${D.length > 0 ? `${D.length} subcamadas · ` : ""}${R.length} ${R.length === 1 ? "feição" : "feições"}</span>
|
|
781
814
|
</div>
|
|
782
815
|
<div class="ui-drawer-actions">
|
|
783
|
-
<button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${
|
|
784
|
-
${
|
|
816
|
+
<button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${C}" title="Adicionar nova camada dentro desta">
|
|
817
|
+
${h.mais} Subcamada
|
|
785
818
|
</button>
|
|
786
|
-
<button type="button" class="ui-drawer-btn-danger" data-delete-layer="${
|
|
787
|
-
${
|
|
819
|
+
<button type="button" class="ui-drawer-btn-danger" data-delete-layer="${C}" title="Excluir esta camada e suas feições">
|
|
820
|
+
${h.lixeira}
|
|
788
821
|
<span class="ui-btn-label">Excluir</span>
|
|
789
822
|
</button>
|
|
790
823
|
</div>
|
|
791
824
|
</div>
|
|
792
825
|
</div>
|
|
793
|
-
` : "",
|
|
826
|
+
` : "", ha = ke.map((F) => b(F)).join("");
|
|
794
827
|
return `
|
|
795
|
-
<div class="ui-layer-group ${
|
|
796
|
-
<div class="ui-layer-row ${
|
|
797
|
-
<div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${
|
|
828
|
+
<div class="ui-layer-group ${B > 0 ? "is-sublayer-group" : ""}" data-layer-id="${C}" data-layer-depth="${B}" role="treeitem" aria-level="${B + 1}" aria-expanded="${Z}" part="grupo" style="--layer-active-color: ${j};">
|
|
829
|
+
<div class="ui-layer-row ${W ? "" : "hidden-layer"} ${ce ? "active-drawing-layer" : ""} ${B > 0 ? "is-sublayer" : ""} ${G ? "is-group-row" : ""} ${sa ? "herdado-oculto" : ""} ${la ? "herdado-travado" : ""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${ce ? "camada camada-ativa" : "camada"}" ${ce ? 'aria-current="true"' : ""} style="--layer-depth: ${B};">
|
|
830
|
+
<div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${h.dragHandle}</div>
|
|
798
831
|
|
|
799
|
-
<div class="ui-col ui-col-eye" data-layer-eye="${
|
|
800
|
-
${
|
|
832
|
+
<div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${W ? "Ocultar Camada" : "Exibir Camada"}" title="${W ? "Ocultar Camada" : "Exibir Camada"}">
|
|
833
|
+
${W ? h.olhoAberto : h.olhoFechado}
|
|
801
834
|
</div>
|
|
802
835
|
|
|
803
|
-
<div class="ui-col ui-col-lock ${
|
|
804
|
-
${
|
|
836
|
+
<div class="ui-col ui-col-lock ${J ? "" : "ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${J ? "Desbloquear Camada" : "Bloquear Camada"}" title="${J ? "Desbloquear Camada" : "Bloquear Camada"}">
|
|
837
|
+
${J ? h.cadeadoTrancado : h.cadeadoAberto}
|
|
805
838
|
</div>
|
|
806
839
|
|
|
807
|
-
<div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${
|
|
840
|
+
<div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" role="button" tabindex="0" style="background: ${j};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
|
|
808
841
|
|
|
809
|
-
<div class="ui-col ui-col-chevron" data-layer-expand="${
|
|
810
|
-
<span class="ui-chevron-icon ${Z ? "open" : ""}">${
|
|
842
|
+
<div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${Z ? "Recolher grupo" : "Expandir grupo"}">
|
|
843
|
+
<span class="ui-chevron-icon ${Z ? "open" : ""}">${h.chevronDir}</span>
|
|
811
844
|
</div>
|
|
812
845
|
|
|
813
|
-
<div class="ui-col ui-col-name" data-layer-name-trigger="${
|
|
814
|
-
${l === x.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${
|
|
815
|
-
<span class="ui-name-text">${
|
|
816
|
-
${
|
|
846
|
+
<div class="ui-col ui-col-name" data-layer-name-trigger="${C}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
|
|
847
|
+
${l === x.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${X}" />` : `${G ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${h.moverPasta}</span>` : ""}
|
|
848
|
+
<span class="ui-name-text">${X}</span>
|
|
849
|
+
${Ve(ee.length, R.length, D.length, G)}`}
|
|
817
850
|
</div>
|
|
818
851
|
|
|
819
852
|
<div class="ui-col ui-col-actions">
|
|
820
|
-
<button class="ui-micro-btn" data-layer-fit="${
|
|
821
|
-
<button class="ui-micro-btn ${
|
|
853
|
+
<button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${h.alvoEnquadrar}</button>
|
|
854
|
+
<button class="ui-micro-btn ${le ? "active" : ""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${le}">${h.engrenagem}</button>
|
|
822
855
|
</div>
|
|
823
856
|
|
|
824
|
-
<div class="ui-col ui-col-target" data-layer-target="${
|
|
825
|
-
<div class="ui-target-circle ${
|
|
857
|
+
<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">
|
|
858
|
+
<div class="ui-target-circle ${Ie ? "selected" : ca ? "partial" : ""}"></div>
|
|
826
859
|
</div>
|
|
827
860
|
</div>
|
|
828
861
|
|
|
829
|
-
${
|
|
862
|
+
${ba}
|
|
830
863
|
|
|
831
|
-
<div class="ui-children-container ${
|
|
832
|
-
${
|
|
833
|
-
${
|
|
834
|
-
${
|
|
835
|
-
${
|
|
864
|
+
<div class="ui-children-container ${B > 0 ? "is-subchildren" : ""}" role="group" style="display: ${Z ? "block" : "none"};">
|
|
865
|
+
${ha}
|
|
866
|
+
${fa}
|
|
867
|
+
${ma}
|
|
868
|
+
${ke.length === 0 && R.length === 0 ? Ye(G) : ""}
|
|
836
869
|
</div>
|
|
837
870
|
</div>
|
|
838
871
|
`;
|
|
839
|
-
},
|
|
872
|
+
}, $ = ne(r), I = v && v.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${z((s || "").trim())}”</div>` : $.map((E) => b(E)).join("");
|
|
840
873
|
return `
|
|
841
|
-
${
|
|
874
|
+
${L}
|
|
842
875
|
<div class="ui-panel-box">
|
|
843
876
|
<div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true" part="arvore">
|
|
844
|
-
${
|
|
877
|
+
${I}
|
|
845
878
|
</div>
|
|
846
879
|
</div>
|
|
847
880
|
`;
|
|
848
881
|
}
|
|
849
|
-
function
|
|
882
|
+
function Va(e) {
|
|
850
883
|
return [
|
|
851
884
|
{
|
|
852
885
|
gatilho: "data-layer-name-trigger",
|
|
@@ -856,8 +889,8 @@ function qa(e) {
|
|
|
856
889
|
e.editingLayerId = r;
|
|
857
890
|
},
|
|
858
891
|
aplicar: (r, a) => {
|
|
859
|
-
const
|
|
860
|
-
return !a || !
|
|
892
|
+
const t = e.camadas.find((i) => i.id === r);
|
|
893
|
+
return !a || !t || t.name === a ? null : (t.name = a, { detalhe: { camadaId: r, novoNome: a, camada: t }, salvar: !0 });
|
|
861
894
|
},
|
|
862
895
|
emitir: (r) => e.dispararEvento("ui-camada-renomeada", r)
|
|
863
896
|
},
|
|
@@ -869,48 +902,57 @@ function qa(e) {
|
|
|
869
902
|
e.editingFeatureId = r;
|
|
870
903
|
},
|
|
871
904
|
aplicar: (r, a) => {
|
|
872
|
-
const
|
|
873
|
-
return !a || !
|
|
905
|
+
const t = e.feicoes.find((i) => i.id === r);
|
|
906
|
+
return !a || !t || t.name === a ? null : (t.name = a, { detalhe: { feicaoId: r, novoNome: a, feicao: t }, salvar: !1 });
|
|
874
907
|
},
|
|
875
908
|
emitir: (r) => e.dispararEvento("ui-feicao-renomeada", r)
|
|
876
909
|
}
|
|
877
910
|
];
|
|
878
911
|
}
|
|
879
|
-
function
|
|
880
|
-
for (const
|
|
881
|
-
|
|
882
|
-
i.addEventListener("dblclick", (
|
|
883
|
-
|
|
884
|
-
const
|
|
885
|
-
if (!o) return;
|
|
886
|
-
a.marcarEditando(o), e.solicitarRenderizacao();
|
|
887
|
-
const n = T(r, a.input, o);
|
|
912
|
+
function Me(e, r, a = r) {
|
|
913
|
+
for (const t of Va(e))
|
|
914
|
+
a.querySelectorAll(`[${t.gatilho}]`).forEach((i) => {
|
|
915
|
+
i.addEventListener("dblclick", (o) => {
|
|
916
|
+
o.stopPropagation();
|
|
917
|
+
const n = i.getAttribute(t.gatilho);
|
|
888
918
|
if (!n) return;
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
919
|
+
t.marcarEditando(n), e.solicitarRenderizacao();
|
|
920
|
+
const l = T(r, t.input, n);
|
|
921
|
+
if (!l) return;
|
|
922
|
+
l.focus(), l.select();
|
|
923
|
+
let c = !1;
|
|
924
|
+
const s = (p, u = !1) => {
|
|
925
|
+
var d, m;
|
|
926
|
+
if (!c) {
|
|
927
|
+
if (c = !0, t.marcarEditando(null), p) {
|
|
928
|
+
const f = t.aplicar(n, l.value.trim());
|
|
929
|
+
f && (f.salvar && ((d = e.salvarLembrancaEstado) == null || d.call(e)), t.emitir(f.detalhe));
|
|
897
930
|
}
|
|
898
|
-
e.solicitarRenderizacao(),
|
|
931
|
+
e.solicitarRenderizacao(), u && ((m = T(r, t.linha, n)) == null || m.focus());
|
|
899
932
|
}
|
|
900
933
|
};
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
}),
|
|
934
|
+
l.addEventListener("keydown", (p) => {
|
|
935
|
+
p.key === "Enter" ? (p.preventDefault(), s(!0, !0)) : p.key === "Escape" && (p.preventDefault(), s(!1, !0));
|
|
936
|
+
}), l.addEventListener("blur", () => s(!0));
|
|
904
937
|
});
|
|
905
938
|
});
|
|
906
939
|
}
|
|
907
|
-
const
|
|
908
|
-
class
|
|
940
|
+
const Ua = ["dragging", "drop-above", "drop-below", "drop-into"];
|
|
941
|
+
class _a {
|
|
909
942
|
constructor(r, a) {
|
|
910
|
-
|
|
911
|
-
|
|
943
|
+
A(this, "host");
|
|
944
|
+
A(this, "shadow");
|
|
912
945
|
/** Cancela um arraste por toque em andamento (remove os ouvintes de `window`). */
|
|
913
|
-
|
|
946
|
+
A(this, "cancelarToque", null);
|
|
947
|
+
/**
|
|
948
|
+
* Arraste HTML5 em andamento. Fica no gerenciador (e não numa closure de `bindDragAndDrop`) para que linhas
|
|
949
|
+
* ligadas depois, na atualização incremental, enxerguem o arraste iniciado numa linha mais antiga.
|
|
950
|
+
*/
|
|
951
|
+
A(this, "arraste", {
|
|
952
|
+
tipo: null,
|
|
953
|
+
camadaId: null,
|
|
954
|
+
feicaoId: null
|
|
955
|
+
});
|
|
914
956
|
this.host = r, this.shadow = a;
|
|
915
957
|
}
|
|
916
958
|
bindAll() {
|
|
@@ -922,11 +964,11 @@ class Ta {
|
|
|
922
964
|
(r = this.cancelarToque) == null || r.call(this), this.cancelarToque = null;
|
|
923
965
|
}
|
|
924
966
|
bindInlineRename() {
|
|
925
|
-
|
|
967
|
+
Me(this.host, this.shadow);
|
|
926
968
|
}
|
|
927
969
|
limparClassesDeArraste() {
|
|
928
970
|
this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((r) => {
|
|
929
|
-
r.classList.remove(...
|
|
971
|
+
r.classList.remove(...Ua);
|
|
930
972
|
});
|
|
931
973
|
}
|
|
932
974
|
/** Depois de qualquer mudança na ordem/hierarquia de camadas. */
|
|
@@ -945,90 +987,100 @@ class Ta {
|
|
|
945
987
|
/** Camada travada (ou sob grupo travado) não recebe nem perde feições pelo arraste. */
|
|
946
988
|
trocaEntreCamadasTravada(r, a) {
|
|
947
989
|
var o;
|
|
948
|
-
const
|
|
949
|
-
if (!a ||
|
|
950
|
-
const
|
|
951
|
-
return
|
|
990
|
+
const t = (o = this.host.feicoes.find((n) => n.id === r)) == null ? void 0 : o.layerId;
|
|
991
|
+
if (!a || t === a) return !1;
|
|
992
|
+
const i = xe(this.host.camadas);
|
|
993
|
+
return i.has(a) || !!t && i.has(t);
|
|
952
994
|
}
|
|
953
995
|
arrasteBloqueado(r) {
|
|
954
996
|
return !!r.closest("input, button, select") || !!this.host.editingLayerId || !!this.host.editingFeatureId;
|
|
955
997
|
}
|
|
998
|
+
/** Render completo: zera o arraste e liga camadas e feições do painel todo. */
|
|
956
999
|
bindDragAndDrop() {
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
1000
|
+
this.arraste = { tipo: null, camadaId: null, feicaoId: null }, this.vincularArrasteCamadas(this.shadow), this.vincularArrasteFeicoes(this.shadow);
|
|
1001
|
+
}
|
|
1002
|
+
/** Atualização incremental: liga renomear e arraste só nas linhas de feição novas dentro de `raiz`. */
|
|
1003
|
+
bindLinhasFeicao(r) {
|
|
1004
|
+
Me(this.host, this.shadow, r), this.vincularArrasteFeicoes(r);
|
|
1005
|
+
}
|
|
1006
|
+
vincularArrasteCamadas(r) {
|
|
1007
|
+
r.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((a) => {
|
|
1008
|
+
const t = a.getAttribute("data-layer-id");
|
|
1009
|
+
t && (a.addEventListener("dragstart", (i) => {
|
|
1010
|
+
const o = i;
|
|
1011
|
+
if (this.arrasteBloqueado(o.target)) {
|
|
1012
|
+
o.preventDefault();
|
|
964
1013
|
return;
|
|
965
1014
|
}
|
|
966
|
-
|
|
967
|
-
}),
|
|
968
|
-
const
|
|
969
|
-
if (
|
|
970
|
-
if (
|
|
971
|
-
const
|
|
972
|
-
|
|
973
|
-
} else
|
|
974
|
-
}),
|
|
975
|
-
const
|
|
976
|
-
|
|
977
|
-
}),
|
|
978
|
-
var
|
|
979
|
-
const
|
|
980
|
-
|
|
981
|
-
const
|
|
982
|
-
if (this.limparClassesDeArraste(),
|
|
983
|
-
if (!
|
|
984
|
-
const
|
|
985
|
-
(
|
|
986
|
-
camadaId:
|
|
987
|
-
novoParentId:
|
|
988
|
-
parentAnteriorId:
|
|
989
|
-
camada:
|
|
990
|
-
})) :
|
|
991
|
-
camadaId:
|
|
992
|
-
novoParentId:
|
|
993
|
-
parentAnteriorId:
|
|
994
|
-
camada:
|
|
1015
|
+
this.arraste.tipo = "layer", this.arraste.camadaId = t, o.dataTransfer && (o.dataTransfer.setData("text/plain", JSON.stringify({ type: "layer", id: t })), o.dataTransfer.effectAllowed = "move"), a.classList.add("dragging");
|
|
1016
|
+
}), a.addEventListener("dragover", (i) => {
|
|
1017
|
+
const o = i;
|
|
1018
|
+
if (o.preventDefault(), o.stopPropagation(), o.dataTransfer && (o.dataTransfer.dropEffect = "move"), this.arraste.tipo === "layer") {
|
|
1019
|
+
if (this.arraste.camadaId === t) return;
|
|
1020
|
+
const n = a.getBoundingClientRect(), l = Ra((o.clientY - n.top) / n.height);
|
|
1021
|
+
a.classList.toggle("drop-above", l === "acima"), a.classList.toggle("drop-below", l === "abaixo"), a.classList.toggle("drop-into", l === "dentro");
|
|
1022
|
+
} else this.arraste.tipo === "feature" && a.classList.add("drop-into");
|
|
1023
|
+
}), a.addEventListener("dragleave", (i) => {
|
|
1024
|
+
const o = i.relatedTarget;
|
|
1025
|
+
o && a.contains(o) || a.classList.remove("drop-above", "drop-below", "drop-into");
|
|
1026
|
+
}), a.addEventListener("drop", (i) => {
|
|
1027
|
+
var l;
|
|
1028
|
+
const o = i;
|
|
1029
|
+
o.preventDefault(), o.stopPropagation();
|
|
1030
|
+
const n = a.classList.contains("drop-into") ? "dentro" : a.classList.contains("drop-above") ? "acima" : "abaixo";
|
|
1031
|
+
if (this.limparClassesDeArraste(), this.arraste.tipo === "layer") {
|
|
1032
|
+
if (!this.arraste.camadaId || this.arraste.camadaId === t || !this.host.camadas.some((s) => s.id === this.arraste.camadaId) || !this.host.camadas.some((s) => s.id === t)) return;
|
|
1033
|
+
const c = Oa(this.host.camadas, this.arraste.camadaId, t, n);
|
|
1034
|
+
(c == null ? void 0 : c.tipo) === "hierarquia" ? ((l = this.host.expandedLayers) == null || l.add(c.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
|
|
1035
|
+
camadaId: c.camada.id,
|
|
1036
|
+
novoParentId: c.novoParentId,
|
|
1037
|
+
parentAnteriorId: c.parentAnteriorId,
|
|
1038
|
+
camada: c.camada
|
|
1039
|
+
})) : c && c.parentAnteriorId !== c.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
|
|
1040
|
+
camadaId: c.camada.id,
|
|
1041
|
+
novoParentId: c.novoParentId,
|
|
1042
|
+
parentAnteriorId: c.parentAnteriorId,
|
|
1043
|
+
camada: c.camada
|
|
995
1044
|
}), this.aposReordenarCamadas();
|
|
996
|
-
} else if (
|
|
997
|
-
if (!
|
|
998
|
-
const
|
|
999
|
-
|
|
1045
|
+
} else if (this.arraste.tipo === "feature") {
|
|
1046
|
+
if (!this.arraste.feicaoId || this.trocaEntreCamadasTravada(this.arraste.feicaoId, t)) return;
|
|
1047
|
+
const c = Na(this.host.feicoes, this.host.camadas, this.arraste.feicaoId, t);
|
|
1048
|
+
c && (this.emitirFeicaoMovida(c), this.host.solicitarRenderizacao());
|
|
1000
1049
|
}
|
|
1001
|
-
}),
|
|
1002
|
-
|
|
1050
|
+
}), a.addEventListener("dragend", () => {
|
|
1051
|
+
this.arraste.tipo = null, this.arraste.camadaId = null, this.arraste.feicaoId = null, this.limparClassesDeArraste();
|
|
1003
1052
|
}));
|
|
1004
|
-
})
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1053
|
+
});
|
|
1054
|
+
}
|
|
1055
|
+
vincularArrasteFeicoes(r) {
|
|
1056
|
+
r.querySelectorAll('.ui-feat-row[draggable="true"]').forEach((a) => {
|
|
1057
|
+
const t = a.getAttribute("data-feat-row"), i = a.getAttribute("data-feat-layer");
|
|
1058
|
+
t && (a.addEventListener("dragstart", (o) => {
|
|
1059
|
+
const n = o;
|
|
1060
|
+
if (this.arrasteBloqueado(n.target)) {
|
|
1061
|
+
n.preventDefault();
|
|
1010
1062
|
return;
|
|
1011
1063
|
}
|
|
1012
|
-
|
|
1013
|
-
}),
|
|
1014
|
-
const
|
|
1015
|
-
if (
|
|
1016
|
-
|
|
1017
|
-
const
|
|
1018
|
-
|
|
1019
|
-
}),
|
|
1020
|
-
const
|
|
1021
|
-
|
|
1022
|
-
}),
|
|
1023
|
-
const
|
|
1024
|
-
if (
|
|
1025
|
-
|
|
1026
|
-
const
|
|
1027
|
-
if (this.limparClassesDeArraste(), this.trocaEntreCamadasTravada(
|
|
1028
|
-
const
|
|
1029
|
-
|
|
1030
|
-
}),
|
|
1031
|
-
|
|
1064
|
+
n.stopPropagation(), this.arraste.tipo = "feature", this.arraste.feicaoId = t, this.arraste.camadaId = i, n.dataTransfer && (n.dataTransfer.setData("text/plain", JSON.stringify({ type: "feature", id: t, layerId: i })), n.dataTransfer.effectAllowed = "move"), a.classList.add("dragging");
|
|
1065
|
+
}), a.addEventListener("dragover", (o) => {
|
|
1066
|
+
const n = o;
|
|
1067
|
+
if (this.arraste.tipo !== "feature" || this.arraste.feicaoId === t) return;
|
|
1068
|
+
n.preventDefault(), n.stopPropagation(), n.dataTransfer && (n.dataTransfer.dropEffect = "move");
|
|
1069
|
+
const l = a.getBoundingClientRect(), c = n.clientY - l.top < l.height / 2;
|
|
1070
|
+
a.classList.toggle("drop-above", c), a.classList.toggle("drop-below", !c);
|
|
1071
|
+
}), a.addEventListener("dragleave", (o) => {
|
|
1072
|
+
const n = o.relatedTarget;
|
|
1073
|
+
n && a.contains(n) || a.classList.remove("drop-above", "drop-below");
|
|
1074
|
+
}), a.addEventListener("drop", (o) => {
|
|
1075
|
+
const n = o;
|
|
1076
|
+
if (this.arraste.tipo !== "feature" || !this.arraste.feicaoId || this.arraste.feicaoId === t) return;
|
|
1077
|
+
n.preventDefault(), n.stopPropagation();
|
|
1078
|
+
const l = a.classList.contains("drop-above");
|
|
1079
|
+
if (this.limparClassesDeArraste(), this.trocaEntreCamadasTravada(this.arraste.feicaoId, i)) return;
|
|
1080
|
+
const c = Ha(this.host.feicoes, this.arraste.feicaoId, t, l);
|
|
1081
|
+
c && (c.mudouDeCamada && this.emitirFeicaoMovida(c), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
|
|
1082
|
+
}), a.addEventListener("dragend", (o) => {
|
|
1083
|
+
o.stopPropagation(), this.arraste.tipo = null, this.arraste.feicaoId = null, this.arraste.camadaId = null, this.limparClassesDeArraste();
|
|
1032
1084
|
}));
|
|
1033
1085
|
});
|
|
1034
1086
|
}
|
|
@@ -1040,71 +1092,71 @@ class Ta {
|
|
|
1040
1092
|
this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach((r) => {
|
|
1041
1093
|
const a = r.closest(".ui-layer-row");
|
|
1042
1094
|
if (!a) return;
|
|
1043
|
-
const
|
|
1044
|
-
|
|
1095
|
+
const t = a.getAttribute("data-layer-id");
|
|
1096
|
+
t && r.addEventListener("pointerdown", (i) => {
|
|
1045
1097
|
var u;
|
|
1046
|
-
const o =
|
|
1098
|
+
const o = i;
|
|
1047
1099
|
if (o.pointerType === "mouse" && o.button !== 0 || this.host.editingLayerId || this.host.editingFeatureId) return;
|
|
1048
1100
|
(u = this.cancelarToque) == null || u.call(this);
|
|
1049
1101
|
let n = null, l = !1;
|
|
1050
|
-
const c = (
|
|
1051
|
-
|
|
1052
|
-
const m = this.shadow.elementFromPoint(
|
|
1102
|
+
const c = (d) => {
|
|
1103
|
+
d.preventDefault(), a.classList.add("dragging");
|
|
1104
|
+
const m = this.shadow.elementFromPoint(d.clientX, d.clientY), f = m ? m.closest(".ui-layer-row") : null;
|
|
1053
1105
|
if (n && n !== f && n.classList.remove("drop-above", "drop-below"), f && f !== a) {
|
|
1054
1106
|
n = f;
|
|
1055
1107
|
const g = f.getBoundingClientRect();
|
|
1056
|
-
l =
|
|
1108
|
+
l = d.clientY - g.top < g.height / 2, f.classList.toggle("drop-above", l), f.classList.toggle("drop-below", !l);
|
|
1057
1109
|
} else
|
|
1058
1110
|
n = null;
|
|
1059
1111
|
}, s = () => {
|
|
1060
|
-
window.removeEventListener("pointermove", c), window.removeEventListener("pointerup",
|
|
1061
|
-
},
|
|
1112
|
+
window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", p), window.removeEventListener("pointercancel", p), this.cancelarToque = null;
|
|
1113
|
+
}, p = () => {
|
|
1062
1114
|
s();
|
|
1063
|
-
const
|
|
1064
|
-
this.limparClassesDeArraste(),
|
|
1115
|
+
const d = n == null ? void 0 : n.getAttribute("data-layer-id");
|
|
1116
|
+
this.limparClassesDeArraste(), d && ja(this.host.camadas, t, d, l) && this.aposReordenarCamadas();
|
|
1065
1117
|
};
|
|
1066
1118
|
this.cancelarToque = () => {
|
|
1067
1119
|
s(), this.limparClassesDeArraste();
|
|
1068
|
-
}, window.addEventListener("pointermove", c, { passive: !1 }), window.addEventListener("pointerup",
|
|
1120
|
+
}, window.addEventListener("pointermove", c, { passive: !1 }), window.addEventListener("pointerup", p), window.addEventListener("pointercancel", p);
|
|
1069
1121
|
});
|
|
1070
1122
|
});
|
|
1071
1123
|
}
|
|
1072
1124
|
}
|
|
1073
|
-
const
|
|
1074
|
-
function
|
|
1125
|
+
const Ya = "ui_camadas_estado_";
|
|
1126
|
+
function Ka(e, r) {
|
|
1075
1127
|
const a = (e || r || "default").trim();
|
|
1076
|
-
return `${
|
|
1128
|
+
return `${Ya}${a}`;
|
|
1077
1129
|
}
|
|
1078
1130
|
function ve(e) {
|
|
1079
1131
|
return !!e && typeof e == "object" && !Array.isArray(e);
|
|
1080
1132
|
}
|
|
1081
|
-
function
|
|
1133
|
+
function ae(e) {
|
|
1082
1134
|
return Array.isArray(e) ? e.filter((r) => typeof r == "string") : [];
|
|
1083
1135
|
}
|
|
1084
|
-
function
|
|
1136
|
+
function Fe(e) {
|
|
1085
1137
|
if (!ve(e)) return;
|
|
1086
1138
|
const r = {};
|
|
1087
1139
|
return typeof e.name == "string" && (r.name = e.name), typeof e.visible == "boolean" && (r.visible = e.visible), typeof e.locked == "boolean" && (r.locked = e.locked), typeof e.opacity == "number" && Number.isFinite(e.opacity) && e.opacity >= 0 && e.opacity <= 1 && (r.opacity = e.opacity), typeof e.color == "string" && (r.color = e.color), (typeof e.parentId == "string" || e.parentId === null) && (r.parentId = e.parentId), r;
|
|
1088
1140
|
}
|
|
1089
|
-
function
|
|
1141
|
+
function Qa(e) {
|
|
1090
1142
|
if (!ve(e)) return null;
|
|
1091
1143
|
const r = {};
|
|
1092
1144
|
if (ve(e.camadasOverrides))
|
|
1093
|
-
for (const [
|
|
1094
|
-
const o =
|
|
1145
|
+
for (const [t, i] of Object.entries(e.camadasOverrides)) {
|
|
1146
|
+
const o = Fe(i);
|
|
1095
1147
|
if (!o) continue;
|
|
1096
|
-
const n =
|
|
1097
|
-
r[
|
|
1148
|
+
const n = Fe(i.origem);
|
|
1149
|
+
r[t] = n ? { ...o, origem: n } : o;
|
|
1098
1150
|
}
|
|
1099
1151
|
const a = e.altura;
|
|
1100
1152
|
return {
|
|
1101
1153
|
versao: typeof e.versao == "number" ? e.versao : 1,
|
|
1102
|
-
expandedLayerIds:
|
|
1103
|
-
collapsedLayerIds:
|
|
1154
|
+
expandedLayerIds: ae(e.expandedLayerIds),
|
|
1155
|
+
collapsedLayerIds: ae(e.collapsedLayerIds),
|
|
1104
1156
|
camadaAtivaId: typeof e.camadaAtivaId == "string" ? e.camadaAtivaId : null,
|
|
1105
1157
|
painelColapsado: typeof e.painelColapsado == "boolean" ? e.painelColapsado : void 0,
|
|
1106
|
-
ordemCamadasIds:
|
|
1107
|
-
ordemOrigemIds: Array.isArray(e.ordemOrigemIds) ?
|
|
1158
|
+
ordemCamadasIds: ae(e.ordemCamadasIds),
|
|
1159
|
+
ordemOrigemIds: Array.isArray(e.ordemOrigemIds) ? ae(e.ordemOrigemIds) : void 0,
|
|
1108
1160
|
mapaBaseAtivo: typeof e.mapaBaseAtivo == "string" ? e.mapaBaseAtivo : void 0,
|
|
1109
1161
|
densidade: e.densidade === "compacto" || e.densidade === "normal" ? e.densidade : void 0,
|
|
1110
1162
|
altura: typeof a == "number" && Number.isFinite(a) && a > 0 ? a : null,
|
|
@@ -1117,13 +1169,13 @@ function be(e) {
|
|
|
1117
1169
|
return null;
|
|
1118
1170
|
try {
|
|
1119
1171
|
const r = localStorage.getItem(e);
|
|
1120
|
-
return r ?
|
|
1172
|
+
return r ? Qa(JSON.parse(r)) : null;
|
|
1121
1173
|
} catch (r) {
|
|
1122
1174
|
console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`, r);
|
|
1123
1175
|
}
|
|
1124
1176
|
return null;
|
|
1125
1177
|
}
|
|
1126
|
-
function
|
|
1178
|
+
function Xa(e, r) {
|
|
1127
1179
|
if (!(typeof window > "u" || typeof localStorage > "u"))
|
|
1128
1180
|
try {
|
|
1129
1181
|
localStorage.setItem(e, JSON.stringify(r));
|
|
@@ -1131,14 +1183,14 @@ function Na(e, r) {
|
|
|
1131
1183
|
console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
|
|
1132
1184
|
}
|
|
1133
1185
|
}
|
|
1134
|
-
function
|
|
1186
|
+
function Wa(e) {
|
|
1135
1187
|
if (!(typeof window > "u" || typeof localStorage > "u"))
|
|
1136
1188
|
try {
|
|
1137
1189
|
localStorage.removeItem(e);
|
|
1138
1190
|
} catch {
|
|
1139
1191
|
}
|
|
1140
1192
|
}
|
|
1141
|
-
function
|
|
1193
|
+
function We(e) {
|
|
1142
1194
|
return {
|
|
1143
1195
|
name: e.name,
|
|
1144
1196
|
visible: e.visible !== !1,
|
|
@@ -1148,60 +1200,60 @@ function Xe(e) {
|
|
|
1148
1200
|
parentId: e.parentId !== void 0 ? e.parentId : null
|
|
1149
1201
|
};
|
|
1150
1202
|
}
|
|
1151
|
-
function
|
|
1203
|
+
function Ja(e, r, a, t) {
|
|
1152
1204
|
var u;
|
|
1153
1205
|
if (!Array.isArray(e)) return;
|
|
1154
|
-
const
|
|
1155
|
-
for (let
|
|
1156
|
-
const m = e[
|
|
1157
|
-
if (
|
|
1158
|
-
const g = f.origem, v = (
|
|
1159
|
-
var
|
|
1160
|
-
const k = (
|
|
1161
|
-
return g !== void 0 && g[
|
|
1206
|
+
const i = (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;
|
|
1207
|
+
for (let d = 0; d < e.length; d++) {
|
|
1208
|
+
const m = e[d], f = i[m.id];
|
|
1209
|
+
if (t == null || t.set(m.id, We(m)), f) {
|
|
1210
|
+
const g = f.origem, v = (y) => {
|
|
1211
|
+
var M;
|
|
1212
|
+
const k = (M = t == null ? void 0 : t.get(m.id)) == null ? void 0 : M[y];
|
|
1213
|
+
return g !== void 0 && g[y] !== k;
|
|
1162
1214
|
};
|
|
1163
1215
|
typeof f.name == "string" && f.name.trim() && !v("name") && (m.name = f.name), typeof f.visible == "boolean" && !v("visible") && (m.visible = f.visible), typeof f.locked == "boolean" && !v("locked") && (m.locked = f.locked), typeof f.opacity == "number" && !v("opacity") && (m.opacity = f.opacity), typeof f.color == "string" && !v("color") && (m.color = f.color), f.parentId !== void 0 && !v("parentId") && (m.parentId = f.parentId);
|
|
1164
1216
|
}
|
|
1165
1217
|
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);
|
|
1166
1218
|
}
|
|
1167
|
-
for (let
|
|
1168
|
-
const m = e[
|
|
1169
|
-
m.parentId && (m.parentId === m.id ||
|
|
1219
|
+
for (let d = 0; d < e.length; d++) {
|
|
1220
|
+
const m = e[d];
|
|
1221
|
+
m.parentId && (m.parentId === m.id || U(e, m.parentId, m.id)) && (m.parentId = ((u = t == null ? void 0 : t.get(m.id)) == null ? void 0 : u.parentId) ?? null);
|
|
1170
1222
|
}
|
|
1171
|
-
const c = new Set(e.map((
|
|
1223
|
+
const c = new Set(e.map((d) => d.id)), s = r == null ? void 0 : r.ordemOrigemIds;
|
|
1172
1224
|
if (!(Array.isArray(s) && (() => {
|
|
1173
|
-
const
|
|
1225
|
+
const d = new Set(s), m = (f) => f.filter((g) => c.has(g) && d.has(g)).join("|");
|
|
1174
1226
|
return m(s) !== m(e.map((f) => f.id));
|
|
1175
1227
|
})()) && Array.isArray(r == null ? void 0 : r.ordemCamadasIds) && r.ordemCamadasIds.length > 0) {
|
|
1176
|
-
const
|
|
1177
|
-
r.ordemCamadasIds.forEach((m, f) =>
|
|
1178
|
-
const g =
|
|
1228
|
+
const d = /* @__PURE__ */ new Map();
|
|
1229
|
+
r.ordemCamadasIds.forEach((m, f) => d.set(m, f)), e.sort((m, f) => {
|
|
1230
|
+
const g = d.has(m.id) ? d.get(m.id) : 9999, v = d.has(f.id) ? d.get(f.id) : 9999;
|
|
1179
1231
|
return g - v;
|
|
1180
1232
|
});
|
|
1181
1233
|
}
|
|
1182
1234
|
}
|
|
1183
|
-
function
|
|
1184
|
-
const { estadoAnterior: r, camadas: a, expandedLayers:
|
|
1185
|
-
let
|
|
1235
|
+
function Za(e) {
|
|
1236
|
+
const { estadoAnterior: r, camadas: a, expandedLayers: t } = e;
|
|
1237
|
+
let i = (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;
|
|
1186
1238
|
const c = {
|
|
1187
1239
|
...(r == null ? void 0 : r.camadasOverrides) || {}
|
|
1188
1240
|
};
|
|
1189
|
-
a.length > 0 && (
|
|
1190
|
-
var
|
|
1191
|
-
|
|
1241
|
+
a.length > 0 && (i = [], o = [], n = a.map((s) => s.id), l = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((s) => {
|
|
1242
|
+
var p, u;
|
|
1243
|
+
t.has(s.id) ? i.push(s.id) : o.push(s.id), c[s.id] = {
|
|
1192
1244
|
name: s.name,
|
|
1193
1245
|
visible: s.visible !== !1,
|
|
1194
1246
|
locked: !!s.locked,
|
|
1195
1247
|
opacity: typeof s.opacity == "number" ? s.opacity : 1,
|
|
1196
1248
|
color: s.color || "#00E08A",
|
|
1197
1249
|
parentId: s.parentId !== void 0 ? s.parentId : null,
|
|
1198
|
-
origem: ((
|
|
1250
|
+
origem: ((p = e.origensCamadas) == null ? void 0 : p.get(s.id)) ?? ((u = c[s.id]) == null ? void 0 : u.origem)
|
|
1199
1251
|
};
|
|
1200
1252
|
}));
|
|
1201
1253
|
for (const s of e.camadasRemovidas ?? []) delete c[s];
|
|
1202
1254
|
return {
|
|
1203
1255
|
versao: 1,
|
|
1204
|
-
expandedLayerIds:
|
|
1256
|
+
expandedLayerIds: i,
|
|
1205
1257
|
collapsedLayerIds: o,
|
|
1206
1258
|
camadaAtivaId: e.camadaAtivaId,
|
|
1207
1259
|
painelColapsado: e.painelColapsado,
|
|
@@ -1214,285 +1266,296 @@ function Ua(e) {
|
|
|
1214
1266
|
ultimaAtualizacao: Date.now()
|
|
1215
1267
|
};
|
|
1216
1268
|
}
|
|
1217
|
-
const Va = `:host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-respiro: 8px;--camada-barra-altura: 28px;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);max-height:var(--camada-barra-altura);display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 var(--camada-respiro) var(--camada-respiro);display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro));padding:0 var(--camada-respiro);gap:8px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:24px;height:24px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);border:none;color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 var(--camada-respiro);gap:6px;box-sizing:border-box;overflow:hidden;position:relative;flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro))}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{display:inline-flex;align-items:center;color:var(--ui-cor-texto-secundario, #888899);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 8px;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-footer-right{display:flex;align-items:center;gap:4px;flex:1 1 auto;min-width:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0}.ui-footer-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;background-size:10px;border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background-color:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.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}`;
|
|
1218
|
-
function
|
|
1219
|
-
r.querySelectorAll("[data-layer-row]").forEach((
|
|
1220
|
-
const o =
|
|
1221
|
-
|
|
1269
|
+
const er = `:host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-respiro: 8px;--camada-barra-altura: 28px;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);max-height:var(--camada-barra-altura);display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 var(--camada-respiro) var(--camada-respiro);display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro));padding:0 var(--camada-respiro);gap:8px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:24px;height:24px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);border:none;color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 var(--camada-respiro);gap:6px;box-sizing:border-box;overflow:hidden;position:relative;flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro))}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{display:inline-flex;align-items:center;color:var(--ui-cor-texto-secundario, #888899);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 8px;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-footer-right{display:flex;align-items:center;gap:4px;flex:1 1 auto;min-width:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0}.ui-footer-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;background-size:10px;border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background-color:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.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-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.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}`;
|
|
1270
|
+
function ar(e, r) {
|
|
1271
|
+
r.querySelectorAll("[data-layer-row]").forEach((t) => {
|
|
1272
|
+
const o = t.getAttribute("data-layer-row") === e.camadaAtivaId;
|
|
1273
|
+
t.classList.toggle("active-drawing-layer", o), qe(t, "camada-ativa", o), o ? t.setAttribute("aria-current", "true") : t.removeAttribute("aria-current");
|
|
1222
1274
|
});
|
|
1223
1275
|
}
|
|
1224
|
-
function
|
|
1225
|
-
r.querySelectorAll(".ui-feat-row").forEach((
|
|
1226
|
-
const
|
|
1227
|
-
|
|
1228
|
-
const
|
|
1229
|
-
|
|
1230
|
-
}), r.querySelectorAll(".ui-layer-group").forEach((
|
|
1231
|
-
const
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1276
|
+
function rr(e, r) {
|
|
1277
|
+
r.querySelectorAll(".ui-feat-row").forEach((a) => {
|
|
1278
|
+
const t = a.getAttribute("data-feat-row"), i = t ? e.selectedFeatureIds.has(t) : !1;
|
|
1279
|
+
a.classList.toggle("selected-row", i), qe(a, "feicao-selecionada", i), a.setAttribute("aria-selected", String(i));
|
|
1280
|
+
const o = a.querySelector(".ui-target-circle");
|
|
1281
|
+
o && o.classList.toggle("selected", i);
|
|
1282
|
+
}), r.querySelectorAll(".ui-layer-group").forEach((a) => {
|
|
1283
|
+
const t = a.getAttribute("data-layer-id"), i = Q(e.camadas, e.feicoes, t ?? "");
|
|
1284
|
+
Je(a.querySelector(".ui-layer-row .ui-target-circle"), i, e.selectedFeatureIds);
|
|
1285
|
+
}), Ze(e, r);
|
|
1286
|
+
}
|
|
1287
|
+
function Je(e, r, a) {
|
|
1288
|
+
if (!e) return;
|
|
1289
|
+
if (r.length === 0) {
|
|
1290
|
+
e.classList.remove("selected", "partial");
|
|
1291
|
+
return;
|
|
1292
|
+
}
|
|
1293
|
+
const t = r.every((o) => a.has(o.id)), i = !t && r.some((o) => a.has(o.id));
|
|
1294
|
+
e.classList.toggle("selected", t), e.classList.toggle("partial", i);
|
|
1295
|
+
}
|
|
1296
|
+
function Ze(e, r) {
|
|
1297
|
+
const a = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id)), t = a.length > 0, i = r.getElementById("footer-count"), o = r.getElementById("footer-label");
|
|
1298
|
+
if (i && (i.textContent = String(t ? a.length : e.camadas.length)), o) {
|
|
1299
|
+
const u = je(e.camadas.length, a.length);
|
|
1240
1300
|
o.innerHTML = u.icone, o.title = u.texto, o.setAttribute("aria-label", u.texto);
|
|
1241
1301
|
}
|
|
1242
1302
|
const n = r.querySelector(".ui-tree-footer");
|
|
1243
|
-
n && (n.classList.toggle("tem-selecao",
|
|
1303
|
+
n && (n.classList.toggle("tem-selecao", t), n.classList.toggle("sem-selecao", !t));
|
|
1244
1304
|
const l = r.querySelector(".ui-footer-actions-gerais");
|
|
1245
|
-
l && (l.style.display =
|
|
1305
|
+
l && (l.style.display = t ? "none" : "flex");
|
|
1246
1306
|
const c = r.querySelector(".ui-footer-bulk-actions");
|
|
1247
|
-
c && (c.style.display =
|
|
1248
|
-
const
|
|
1249
|
-
|
|
1307
|
+
c && (c.style.display = t ? "flex" : "none"), ["btn-footer-del"].forEach((u) => {
|
|
1308
|
+
const d = r.getElementById(u);
|
|
1309
|
+
d && (d.disabled = !t, d.classList.toggle("disabled", !t));
|
|
1250
1310
|
});
|
|
1251
1311
|
const s = r.querySelector(".ui-footer-move-wrapper");
|
|
1252
|
-
s && s.classList.toggle("disabled", !
|
|
1253
|
-
const
|
|
1254
|
-
|
|
1312
|
+
s && s.classList.toggle("disabled", !t);
|
|
1313
|
+
const p = r.getElementById("select-footer-move");
|
|
1314
|
+
p && (p.disabled = !t);
|
|
1255
1315
|
}
|
|
1256
|
-
function
|
|
1257
|
-
const a =
|
|
1316
|
+
function ze(e, r) {
|
|
1317
|
+
const a = se(e.camadas), t = new Map(e.camadas.map((o) => [o.id, o]));
|
|
1258
1318
|
r.querySelectorAll(".ui-layer-row").forEach((o) => {
|
|
1259
1319
|
const n = a.get(o.getAttribute("data-layer-row") || "");
|
|
1260
1320
|
o.classList.toggle("herdado-oculto", (n == null ? void 0 : n.ocultaPorAncestral) === !0), o.classList.toggle("herdado-travado", (n == null ? void 0 : n.travadaPorAncestral) === !0);
|
|
1261
1321
|
});
|
|
1262
|
-
const
|
|
1322
|
+
const i = new Map(e.feicoes.map((o) => [o.id, o]));
|
|
1263
1323
|
r.querySelectorAll(".ui-feat-row").forEach((o) => {
|
|
1264
|
-
const n = o.getAttribute("data-feat-layer") || "", l =
|
|
1324
|
+
const n = o.getAttribute("data-feat-layer") || "", l = t.get(n), c = a.get(n);
|
|
1265
1325
|
o.classList.toggle("herdado-oculto", (l == null ? void 0 : l.visible) === !1 || (c == null ? void 0 : c.ocultaPorAncestral) === !0);
|
|
1266
|
-
const s = o.querySelector("[data-feat-lock]"),
|
|
1267
|
-
if (!s || !
|
|
1268
|
-
const u = (l == null ? void 0 : l.locked) === !0 || (c == null ? void 0 : c.travadaPorAncestral) === !0,
|
|
1269
|
-
s.innerHTML =
|
|
1326
|
+
const s = o.querySelector("[data-feat-lock]"), p = i.get(o.getAttribute("data-feat-row") || "");
|
|
1327
|
+
if (!s || !p) return;
|
|
1328
|
+
const u = (l == null ? void 0 : l.locked) === !0 || (c == null ? void 0 : c.travadaPorAncestral) === !0, d = p.locked === !0 || u;
|
|
1329
|
+
s.innerHTML = d ? h.cadeadoTrancado : h.cadeadoAberto, s.classList.toggle("ui-lock-open", !d), u ? s.setAttribute("data-locked-by-layer", "true") : s.removeAttribute("data-locked-by-layer"), P(
|
|
1270
1330
|
s,
|
|
1271
|
-
u ? "Bloqueada pela camada" :
|
|
1331
|
+
u ? "Bloqueada pela camada" : d ? "Desbloquear Feição" : "Bloquear Feição"
|
|
1272
1332
|
);
|
|
1273
1333
|
});
|
|
1274
1334
|
}
|
|
1275
|
-
function
|
|
1276
|
-
r.querySelectorAll("[data-layer-row]").forEach((
|
|
1277
|
-
|
|
1335
|
+
function tr(e, r) {
|
|
1336
|
+
r.querySelectorAll("[data-layer-row]").forEach((i) => {
|
|
1337
|
+
i.addEventListener("click", (o) => {
|
|
1278
1338
|
if (o.target.closest(
|
|
1279
1339
|
"[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], [data-layer-color], input, button"
|
|
1280
1340
|
))
|
|
1281
1341
|
return;
|
|
1282
|
-
const l =
|
|
1342
|
+
const l = i.getAttribute("data-layer-row");
|
|
1283
1343
|
l && e.definirCamadaAtiva(l, !0);
|
|
1284
1344
|
});
|
|
1285
|
-
}), r.querySelectorAll("[data-layer-expand]").forEach((
|
|
1286
|
-
|
|
1345
|
+
}), r.querySelectorAll("[data-layer-expand]").forEach((i) => {
|
|
1346
|
+
i.addEventListener("click", (o) => {
|
|
1287
1347
|
o.stopPropagation();
|
|
1288
|
-
const n =
|
|
1348
|
+
const n = i.getAttribute("data-layer-expand");
|
|
1289
1349
|
if (!n) return;
|
|
1290
1350
|
e.expandedLayers.has(n) ? e.expandedLayers.delete(n) : e.expandedLayers.add(n);
|
|
1291
|
-
const l =
|
|
1351
|
+
const l = i.closest(".ui-layer-group"), c = i.querySelector(".ui-chevron-icon"), s = e.expandedLayers.has(n);
|
|
1292
1352
|
if (c && c.classList.toggle("open", s), l) {
|
|
1293
1353
|
l.setAttribute("aria-expanded", String(s));
|
|
1294
|
-
const
|
|
1295
|
-
|
|
1354
|
+
const p = l.querySelector(".ui-children-container");
|
|
1355
|
+
p && (p.style.display = s ? "block" : "none");
|
|
1296
1356
|
}
|
|
1297
|
-
|
|
1357
|
+
P(i, s ? "Recolher grupo" : "Expandir grupo"), ir(e, r), e.salvarLembrancaEstado();
|
|
1298
1358
|
});
|
|
1299
|
-
}), r.querySelectorAll("[data-layer-eye]").forEach((
|
|
1300
|
-
|
|
1359
|
+
}), r.querySelectorAll("[data-layer-eye]").forEach((i) => {
|
|
1360
|
+
i.addEventListener("click", (o) => {
|
|
1301
1361
|
o.stopPropagation();
|
|
1302
|
-
const n =
|
|
1362
|
+
const n = i.getAttribute("data-layer-eye"), l = e.camadas.find((c) => c.id === n);
|
|
1303
1363
|
if (l) {
|
|
1304
1364
|
l.visible = l.visible === !1;
|
|
1305
1365
|
const c = l.visible !== !1;
|
|
1306
|
-
|
|
1307
|
-
const s =
|
|
1308
|
-
s && s.classList.toggle("hidden-layer", !c),
|
|
1366
|
+
i.innerHTML = c ? h.olhoAberto : h.olhoFechado, P(i, c ? "Ocultar Camada" : "Exibir Camada");
|
|
1367
|
+
const s = i.closest(".ui-layer-row");
|
|
1368
|
+
s && s.classList.toggle("hidden-layer", !c), or(e, r), ze(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
|
|
1309
1369
|
camadaId: l.id,
|
|
1310
1370
|
visivel: c
|
|
1311
1371
|
});
|
|
1312
1372
|
}
|
|
1313
1373
|
});
|
|
1314
|
-
}), r.querySelectorAll("[data-layer-lock]").forEach((
|
|
1315
|
-
|
|
1374
|
+
}), r.querySelectorAll("[data-layer-lock]").forEach((i) => {
|
|
1375
|
+
i.addEventListener("click", (o) => {
|
|
1316
1376
|
o.stopPropagation();
|
|
1317
|
-
const n =
|
|
1318
|
-
l && (l.locked = !l.locked,
|
|
1377
|
+
const n = i.getAttribute("data-layer-lock"), l = e.camadas.find((c) => c.id === n);
|
|
1378
|
+
l && (l.locked = !l.locked, i.innerHTML = l.locked ? h.cadeadoTrancado : h.cadeadoAberto, i.classList.toggle("ui-lock-open", !l.locked), P(i, l.locked ? "Desbloquear Camada" : "Bloquear Camada"), ze(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
|
|
1319
1379
|
camadaId: l.id,
|
|
1320
1380
|
bloqueado: l.locked
|
|
1321
1381
|
}));
|
|
1322
1382
|
});
|
|
1323
|
-
}), r.querySelectorAll("[data-layer-fit]").forEach((
|
|
1324
|
-
|
|
1383
|
+
}), r.querySelectorAll("[data-layer-fit]").forEach((i) => {
|
|
1384
|
+
i.addEventListener("click", (o) => {
|
|
1325
1385
|
o.stopPropagation();
|
|
1326
|
-
const n =
|
|
1386
|
+
const n = i.getAttribute("data-layer-fit");
|
|
1327
1387
|
n && e.dispararEvento("ui-camada-enquadrar", { camadaId: n });
|
|
1328
1388
|
});
|
|
1329
|
-
}), r.querySelectorAll("[data-layer-settings]").forEach((
|
|
1330
|
-
|
|
1389
|
+
}), r.querySelectorAll("[data-layer-settings]").forEach((i) => {
|
|
1390
|
+
i.addEventListener("click", (o) => {
|
|
1331
1391
|
o.stopPropagation();
|
|
1332
|
-
const n =
|
|
1392
|
+
const n = i.getAttribute("data-layer-settings");
|
|
1333
1393
|
e.activeSettingsLayerId = e.activeSettingsLayerId === n ? null : n, e.solicitarRenderizacao();
|
|
1334
1394
|
});
|
|
1335
|
-
}), r.querySelectorAll("[data-layer-settings-close]").forEach((
|
|
1336
|
-
|
|
1395
|
+
}), r.querySelectorAll("[data-layer-settings-close]").forEach((i) => {
|
|
1396
|
+
i.addEventListener("click", (o) => {
|
|
1337
1397
|
o.stopPropagation(), e.activeSettingsLayerId = null, e.solicitarRenderizacao();
|
|
1338
1398
|
});
|
|
1339
1399
|
});
|
|
1340
|
-
const a = (
|
|
1400
|
+
const a = (i, o, n) => {
|
|
1341
1401
|
var m;
|
|
1342
|
-
const l = e.camadas.find((f) => f.id ===
|
|
1402
|
+
const l = e.camadas.find((f) => f.id === i);
|
|
1343
1403
|
if (!l) return;
|
|
1344
|
-
const c =
|
|
1404
|
+
const c = H(o, l.color || "#00E08A");
|
|
1345
1405
|
l.color = c;
|
|
1346
|
-
const s = r.getElementById(`sample-color-${
|
|
1406
|
+
const s = r.getElementById(`sample-color-${i}`);
|
|
1347
1407
|
s && (s.style.backgroundColor = c);
|
|
1348
|
-
const
|
|
1349
|
-
|
|
1350
|
-
const u = r.getElementById(`settings-drawer-${
|
|
1408
|
+
const p = r.getElementById(`hex-color-${i}`);
|
|
1409
|
+
p && (p.textContent = c.toUpperCase());
|
|
1410
|
+
const u = r.getElementById(`settings-drawer-${i}`);
|
|
1351
1411
|
u && u.style.setProperty("--drawer-cor-camada", c);
|
|
1352
|
-
const
|
|
1353
|
-
if (
|
|
1354
|
-
(m =
|
|
1355
|
-
const f =
|
|
1412
|
+
const d = T(r, "data-layer-row", i);
|
|
1413
|
+
if (d) {
|
|
1414
|
+
(m = d.closest(".ui-layer-group")) == null || m.style.setProperty("--layer-active-color", c);
|
|
1415
|
+
const f = d.querySelector(".ui-col-colorbar");
|
|
1356
1416
|
f && (f.style.backgroundColor = c);
|
|
1357
1417
|
}
|
|
1358
1418
|
n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: l.id, cor: c });
|
|
1359
1419
|
};
|
|
1360
|
-
r.querySelectorAll("[data-layer-color-picker]").forEach((
|
|
1361
|
-
const o =
|
|
1420
|
+
r.querySelectorAll("[data-layer-color-picker]").forEach((i) => {
|
|
1421
|
+
const o = i, n = (l) => (c) => {
|
|
1362
1422
|
const s = o.getAttribute("data-layer-color-picker");
|
|
1363
1423
|
if (!s) return;
|
|
1364
|
-
const
|
|
1365
|
-
a(s,
|
|
1424
|
+
const p = c.target.value;
|
|
1425
|
+
a(s, p, l);
|
|
1366
1426
|
};
|
|
1367
1427
|
o.addEventListener("input", n(!1)), o.addEventListener("change", n(!0));
|
|
1368
|
-
}), r.querySelectorAll("[data-layer-color]").forEach((
|
|
1428
|
+
}), r.querySelectorAll("[data-layer-color]").forEach((i) => {
|
|
1369
1429
|
const o = (n) => {
|
|
1370
1430
|
n.stopPropagation();
|
|
1371
|
-
const l =
|
|
1372
|
-
!l || !c ||
|
|
1373
|
-
ancora:
|
|
1431
|
+
const l = i.getAttribute("data-layer-color"), c = e.camadas.find((s) => s.id === l);
|
|
1432
|
+
!l || !c || Ea({
|
|
1433
|
+
ancora: i,
|
|
1374
1434
|
titulo: `Cor · ${c.name || "Camada"}`,
|
|
1375
1435
|
modo: "simples",
|
|
1376
|
-
cor:
|
|
1436
|
+
cor: H(c.color, "#00E08A"),
|
|
1377
1437
|
mostrarOpacidade: !1,
|
|
1378
1438
|
aoAlterar: (s) => a(l, s.cor, !1),
|
|
1379
1439
|
aoConfirmar: (s) => a(l, s.cor, !0),
|
|
1380
1440
|
aoCancelar: (s) => a(l, s.cor, !0)
|
|
1381
1441
|
});
|
|
1382
1442
|
};
|
|
1383
|
-
|
|
1443
|
+
i.addEventListener("click", o), i.addEventListener("keydown", (n) => {
|
|
1384
1444
|
const l = n.key;
|
|
1385
1445
|
(l === "Enter" || l === " ") && (n.preventDefault(), o(n));
|
|
1386
1446
|
});
|
|
1387
1447
|
});
|
|
1388
|
-
const
|
|
1389
|
-
const n = e.camadas.find((s) => s.id ===
|
|
1448
|
+
const t = (i, o) => {
|
|
1449
|
+
const n = e.camadas.find((s) => s.id === i);
|
|
1390
1450
|
if (!n) return;
|
|
1391
1451
|
n.opacity = o;
|
|
1392
|
-
const l = r.getElementById(`badge-op-${
|
|
1452
|
+
const l = r.getElementById(`badge-op-${i}`);
|
|
1393
1453
|
l && (l.textContent = `${Math.round(o * 100)}%`);
|
|
1394
|
-
const c = T(r, "data-layer-opacity-slider",
|
|
1454
|
+
const c = T(r, "data-layer-opacity-slider", i);
|
|
1395
1455
|
c && parseFloat(c.value) !== o && (c.value = String(o)), e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-opacidade", { camadaId: n.id, opacidade: o });
|
|
1396
1456
|
};
|
|
1397
|
-
r.querySelectorAll("[data-layer-opacity-slider]").forEach((
|
|
1398
|
-
|
|
1399
|
-
const n =
|
|
1457
|
+
r.querySelectorAll("[data-layer-opacity-slider]").forEach((i) => {
|
|
1458
|
+
i.addEventListener("input", (o) => {
|
|
1459
|
+
const n = i.getAttribute("data-layer-opacity-slider");
|
|
1400
1460
|
if (!n) return;
|
|
1401
1461
|
const l = parseFloat(o.target.value);
|
|
1402
|
-
|
|
1462
|
+
Number.isFinite(l) && t(n, Math.min(1, Math.max(0, l)));
|
|
1403
1463
|
});
|
|
1404
|
-
}), r.querySelectorAll("[data-delete-layer]").forEach((
|
|
1464
|
+
}), r.querySelectorAll("[data-delete-layer]").forEach((i) => {
|
|
1405
1465
|
let o = null;
|
|
1406
|
-
|
|
1466
|
+
i.addEventListener("click", (n) => {
|
|
1407
1467
|
n.stopPropagation();
|
|
1408
|
-
const l =
|
|
1468
|
+
const l = i.getAttribute("data-delete-layer");
|
|
1409
1469
|
if (!l) return;
|
|
1410
|
-
if (
|
|
1470
|
+
if (i.classList.contains("confirming")) {
|
|
1411
1471
|
o && clearTimeout(o), e.dispararEvento("ui-camada-excluida", { camadaId: l });
|
|
1412
1472
|
const s = e.selectedFeatureIds.size;
|
|
1413
|
-
e.camadas.forEach((
|
|
1414
|
-
|
|
1473
|
+
e.camadas.forEach((p) => {
|
|
1474
|
+
p.parentId === l && (p.parentId = null);
|
|
1415
1475
|
}), e.removerCamada(l), e.selectedFeatureIds.size !== s && e.notificarMudancaSelecao();
|
|
1416
1476
|
} else {
|
|
1417
|
-
|
|
1418
|
-
const s =
|
|
1477
|
+
i.classList.add("confirming");
|
|
1478
|
+
const s = i.querySelector(".ui-btn-label");
|
|
1419
1479
|
s && (s.textContent = "Confirmar Exclusão?"), o = setTimeout(() => {
|
|
1420
|
-
|
|
1480
|
+
i.classList.remove("confirming"), s && (s.textContent = "Excluir");
|
|
1421
1481
|
}, 3500);
|
|
1422
1482
|
}
|
|
1423
1483
|
});
|
|
1424
|
-
}), r.querySelectorAll("[data-layer-parent-select]").forEach((
|
|
1425
|
-
|
|
1426
|
-
const n = o.target, l = n.getAttribute("data-layer-parent-select"), c = n.value || null, s = e.camadas.find((
|
|
1484
|
+
}), r.querySelectorAll("[data-layer-parent-select]").forEach((i) => {
|
|
1485
|
+
i.addEventListener("change", (o) => {
|
|
1486
|
+
const n = o.target, l = n.getAttribute("data-layer-parent-select"), c = n.value || null, s = e.camadas.find((p) => p.id === l);
|
|
1427
1487
|
if (s) {
|
|
1428
|
-
if (c && (c === s.id ||
|
|
1488
|
+
if (c && (c === s.id || U(e.camadas, c, s.id))) {
|
|
1429
1489
|
n.value = s.parentId || "";
|
|
1430
1490
|
return;
|
|
1431
1491
|
}
|
|
1432
|
-
const
|
|
1492
|
+
const p = s.parentId ?? null;
|
|
1433
1493
|
s.parentId = c, c && e.expandedLayers.add(c), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-mover-hierarquia", {
|
|
1434
1494
|
camadaId: s.id,
|
|
1435
1495
|
novoParentId: c,
|
|
1436
|
-
parentAnteriorId:
|
|
1496
|
+
parentAnteriorId: p,
|
|
1437
1497
|
camada: s
|
|
1438
1498
|
}), e.solicitarRenderizacao();
|
|
1439
1499
|
}
|
|
1440
1500
|
});
|
|
1441
|
-
}), r.querySelectorAll("[data-add-sublayer]").forEach((
|
|
1442
|
-
|
|
1501
|
+
}), r.querySelectorAll("[data-add-sublayer]").forEach((i) => {
|
|
1502
|
+
i.addEventListener("click", (o) => {
|
|
1443
1503
|
o.stopPropagation();
|
|
1444
|
-
const n =
|
|
1504
|
+
const n = i.getAttribute("data-add-sublayer");
|
|
1445
1505
|
e.dispararEvento("ui-camada-adicionar", { parentId: n });
|
|
1446
1506
|
});
|
|
1447
|
-
}), r.querySelectorAll("[data-layer-
|
|
1448
|
-
|
|
1449
|
-
o.stopPropagation();
|
|
1450
|
-
const n = t.getAttribute("data-layer-show-more");
|
|
1451
|
-
n && e.incrementarLimiteFeicoes(n);
|
|
1452
|
-
});
|
|
1453
|
-
}), r.querySelectorAll("[data-layer-target]").forEach((t) => {
|
|
1454
|
-
t.addEventListener("click", (o) => {
|
|
1507
|
+
}), ea(e, r), r.querySelectorAll("[data-layer-target]").forEach((i) => {
|
|
1508
|
+
i.addEventListener("click", (o) => {
|
|
1455
1509
|
o.stopPropagation();
|
|
1456
|
-
const n = o, l =
|
|
1510
|
+
const n = o, l = i.getAttribute("data-layer-target");
|
|
1457
1511
|
if (!l) return;
|
|
1458
|
-
const c =
|
|
1512
|
+
const c = Q(e.camadas, e.feicoes, l), s = te(c, e.searchQuery);
|
|
1459
1513
|
if (s.length === 0) return;
|
|
1460
1514
|
s.every((u) => e.selectedFeatureIds.has(u.id)) ? s.forEach((u) => e.selectedFeatureIds.delete(u.id)) : (!n.ctrlKey && !n.metaKey && e.selectedFeatureIds.clear(), s.forEach((u) => e.selectedFeatureIds.add(u.id))), e.lastClickedFeatureId = s[s.length - 1].id, e.sincronizarSelecaoDOM(), e.notificarMudancaSelecao();
|
|
1461
1515
|
});
|
|
1462
1516
|
});
|
|
1463
1517
|
}
|
|
1464
|
-
function
|
|
1518
|
+
function ea(e, r) {
|
|
1519
|
+
r.querySelectorAll("[data-layer-show-more]").forEach((a) => {
|
|
1520
|
+
a.addEventListener("click", (t) => {
|
|
1521
|
+
t.stopPropagation();
|
|
1522
|
+
const i = a.getAttribute("data-layer-show-more");
|
|
1523
|
+
i && e.incrementarLimiteFeicoes(i);
|
|
1524
|
+
});
|
|
1525
|
+
});
|
|
1526
|
+
}
|
|
1527
|
+
function ir(e, r) {
|
|
1465
1528
|
const a = r.getElementById("btn-toggle-all-expand");
|
|
1466
1529
|
if (!a) return;
|
|
1467
|
-
const
|
|
1468
|
-
|
|
1530
|
+
const t = e.camadas.length > 0 && e.camadas.every((o) => e.expandedLayers.has(o.id)), i = a.querySelector(".ui-chevron-icon");
|
|
1531
|
+
i && i.classList.toggle("open", t), P(
|
|
1469
1532
|
a,
|
|
1470
|
-
|
|
1533
|
+
t ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"
|
|
1471
1534
|
);
|
|
1472
1535
|
}
|
|
1473
|
-
function
|
|
1536
|
+
function or(e, r) {
|
|
1474
1537
|
const a = r.getElementById("btn-toggle-all-vis");
|
|
1475
1538
|
if (!a) return;
|
|
1476
|
-
const
|
|
1477
|
-
a.innerHTML =
|
|
1539
|
+
const t = e.camadas.every((i) => i.visible !== !1);
|
|
1540
|
+
a.innerHTML = t ? h.olhoAberto : h.olhoFechado, P(a, t ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
|
|
1478
1541
|
}
|
|
1479
|
-
function
|
|
1542
|
+
function nr(e, r) {
|
|
1480
1543
|
const a = r.getElementById("select-footer-move");
|
|
1481
1544
|
a && a.addEventListener("change", (n) => {
|
|
1482
1545
|
const l = n.target.value;
|
|
1483
1546
|
if (!l) return;
|
|
1484
|
-
const c =
|
|
1547
|
+
const c = xe(e.camadas);
|
|
1485
1548
|
if (c.has(l)) {
|
|
1486
1549
|
a.value = "";
|
|
1487
1550
|
return;
|
|
1488
1551
|
}
|
|
1489
1552
|
const s = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id) && !c.has(u.layerId));
|
|
1490
1553
|
if (s.length === 0) return;
|
|
1491
|
-
const
|
|
1554
|
+
const p = new Map(s.map((u) => [u.id, u.layerId]));
|
|
1492
1555
|
s.forEach((u) => u.layerId = l), s.forEach((u) => {
|
|
1493
|
-
|
|
1556
|
+
p.get(u.id) !== l && e.dispararEvento("ui-feicao-movida", {
|
|
1494
1557
|
feicaoId: u.id,
|
|
1495
|
-
camadaOrigemId:
|
|
1558
|
+
camadaOrigemId: p.get(u.id),
|
|
1496
1559
|
camadaDestinoId: l,
|
|
1497
1560
|
feicao: u
|
|
1498
1561
|
});
|
|
@@ -1503,12 +1566,12 @@ function Ja(e, r) {
|
|
|
1503
1566
|
valor: l
|
|
1504
1567
|
}), e.solicitarRenderizacao();
|
|
1505
1568
|
});
|
|
1506
|
-
const
|
|
1507
|
-
|
|
1569
|
+
const t = r.getElementById("btn-footer-new-layer");
|
|
1570
|
+
t && t.addEventListener("click", () => {
|
|
1508
1571
|
e.dispararEvento("ui-camada-adicionar", {});
|
|
1509
1572
|
});
|
|
1510
|
-
const
|
|
1511
|
-
|
|
1573
|
+
const i = r.getElementById("btn-footer-new-group");
|
|
1574
|
+
i && i.addEventListener("click", () => {
|
|
1512
1575
|
e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
|
|
1513
1576
|
});
|
|
1514
1577
|
const o = r.getElementById("btn-footer-del");
|
|
@@ -1519,14 +1582,14 @@ function Ja(e, r) {
|
|
|
1519
1582
|
const c = Array.from(e.selectedFeatureIds);
|
|
1520
1583
|
if (c.length === 0) return;
|
|
1521
1584
|
if (!o.classList.contains("confirming")) {
|
|
1522
|
-
o.classList.add("confirming"),
|
|
1523
|
-
o.classList.remove("confirming"),
|
|
1585
|
+
o.classList.add("confirming"), P(o, `Clique novamente para excluir ${c.length} selecionado(s)`), n = setTimeout(() => {
|
|
1586
|
+
o.classList.remove("confirming"), P(o, l);
|
|
1524
1587
|
}, 3500);
|
|
1525
1588
|
return;
|
|
1526
1589
|
}
|
|
1527
1590
|
n && clearTimeout(n);
|
|
1528
|
-
const s = e.feicoes.filter((
|
|
1529
|
-
e.feicoes = e.feicoes.filter((
|
|
1591
|
+
const s = e.feicoes.filter((p) => e.selectedFeatureIds.has(p.id));
|
|
1592
|
+
e.feicoes = e.feicoes.filter((p) => !e.selectedFeatureIds.has(p.id)), e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.dispararEvento("ui-acao-massa", {
|
|
1530
1593
|
acao: "excluir",
|
|
1531
1594
|
feicoesIds: c,
|
|
1532
1595
|
feicoes: s
|
|
@@ -1534,7 +1597,7 @@ function Ja(e, r) {
|
|
|
1534
1597
|
});
|
|
1535
1598
|
}
|
|
1536
1599
|
}
|
|
1537
|
-
const
|
|
1600
|
+
const sr = [
|
|
1538
1601
|
{ tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
|
|
1539
1602
|
{ tipo: "olho", atributo: "data-feat-eye", entidade: "feicao" },
|
|
1540
1603
|
{ tipo: "cadeado", atributo: "data-layer-lock", entidade: "camada" },
|
|
@@ -1545,32 +1608,32 @@ const Wa = [
|
|
|
1545
1608
|
olho: "[data-layer-eye], [data-feat-eye]",
|
|
1546
1609
|
cadeado: "[data-layer-lock], [data-feat-lock]",
|
|
1547
1610
|
selecao: "[data-layer-target], [data-feat-target]"
|
|
1548
|
-
},
|
|
1549
|
-
function
|
|
1550
|
-
return
|
|
1611
|
+
}, lr = 3;
|
|
1612
|
+
function cr(e) {
|
|
1613
|
+
return sr.find((r) => e.hasAttribute(r.atributo)) ?? null;
|
|
1551
1614
|
}
|
|
1552
1615
|
function ge(e, r) {
|
|
1553
|
-
const a =
|
|
1616
|
+
const a = cr(r);
|
|
1554
1617
|
if (!a) return null;
|
|
1555
|
-
const
|
|
1556
|
-
if (!
|
|
1618
|
+
const t = r.getAttribute(a.atributo);
|
|
1619
|
+
if (!t) return null;
|
|
1557
1620
|
if (a.tipo === "olho") {
|
|
1558
|
-
const o = a.entidade === "camada" ? e.camadas.find((n) => n.id ===
|
|
1621
|
+
const o = a.entidade === "camada" ? e.camadas.find((n) => n.id === t) : e.feicoes.find((n) => n.id === t);
|
|
1559
1622
|
return o ? o.visible !== !1 : null;
|
|
1560
1623
|
}
|
|
1561
1624
|
if (a.tipo === "cadeado") {
|
|
1562
1625
|
if (r.hasAttribute("data-locked-by-layer")) return null;
|
|
1563
|
-
const o = a.entidade === "camada" ? e.camadas.find((n) => n.id ===
|
|
1626
|
+
const o = a.entidade === "camada" ? e.camadas.find((n) => n.id === t) : e.feicoes.find((n) => n.id === t);
|
|
1564
1627
|
return o ? o.locked === !0 : null;
|
|
1565
1628
|
}
|
|
1566
|
-
if (a.entidade === "feicao") return e.selectedFeatureIds.has(
|
|
1567
|
-
const
|
|
1568
|
-
|
|
1629
|
+
if (a.entidade === "feicao") return e.selectedFeatureIds.has(t);
|
|
1630
|
+
const i = te(
|
|
1631
|
+
Q(e.camadas, e.feicoes, t),
|
|
1569
1632
|
e.searchQuery
|
|
1570
1633
|
);
|
|
1571
|
-
return
|
|
1634
|
+
return i.length === 0 ? null : i.every((o) => e.selectedFeatureIds.has(o.id));
|
|
1572
1635
|
}
|
|
1573
|
-
function
|
|
1636
|
+
function Be(e, r, a = !1) {
|
|
1574
1637
|
e.dispatchEvent(
|
|
1575
1638
|
new MouseEvent("click", {
|
|
1576
1639
|
bubbles: !0,
|
|
@@ -1580,104 +1643,104 @@ function Te(e, r, a = !1) {
|
|
|
1580
1643
|
})
|
|
1581
1644
|
);
|
|
1582
1645
|
}
|
|
1583
|
-
let
|
|
1584
|
-
function
|
|
1585
|
-
(
|
|
1646
|
+
let q = null;
|
|
1647
|
+
function dr(e) {
|
|
1648
|
+
(q == null ? void 0 : q.host) === e && q.cancelar();
|
|
1586
1649
|
}
|
|
1587
|
-
function
|
|
1588
|
-
Object.keys(he).forEach((
|
|
1589
|
-
|
|
1590
|
-
i.addEventListener("pointerdown", (
|
|
1650
|
+
function aa(e, r, a = r) {
|
|
1651
|
+
Object.keys(he).forEach((t) => {
|
|
1652
|
+
a.querySelectorAll(he[t]).forEach((i) => {
|
|
1653
|
+
i.addEventListener("pointerdown", (o) => ur(e, r, t, i, o));
|
|
1591
1654
|
});
|
|
1592
1655
|
});
|
|
1593
1656
|
}
|
|
1594
|
-
function
|
|
1595
|
-
if (
|
|
1596
|
-
|
|
1597
|
-
const o = he[a], n =
|
|
1598
|
-
let c = !1, s = !1,
|
|
1599
|
-
const u = /* @__PURE__ */ new Set([
|
|
1600
|
-
|
|
1601
|
-
}, m = (
|
|
1602
|
-
|
|
1603
|
-
}, f = (
|
|
1604
|
-
u.has(
|
|
1657
|
+
function ur(e, r, a, t, i) {
|
|
1658
|
+
if (i.pointerType === "mouse" && i.button !== 0 || e.editingLayerId || e.editingFeatureId || ge(e, t) === null) return;
|
|
1659
|
+
q == null || q.cancelar();
|
|
1660
|
+
const o = he[a], n = i.ctrlKey || i.metaKey, l = i.shiftKey;
|
|
1661
|
+
let c = !1, s = !1, p = i.clientY;
|
|
1662
|
+
const u = /* @__PURE__ */ new Set([t]), d = (w) => {
|
|
1663
|
+
w.preventDefault(), w.stopImmediatePropagation();
|
|
1664
|
+
}, m = (w) => {
|
|
1665
|
+
w.stopPropagation(), w.preventDefault();
|
|
1666
|
+
}, f = (w) => w.preventDefault(), g = (w) => {
|
|
1667
|
+
u.has(w) || (u.add(w), ge(e, w) !== s && Be(w, a === "selecao"));
|
|
1605
1668
|
}, v = () => {
|
|
1606
|
-
c = !0,
|
|
1607
|
-
},
|
|
1608
|
-
var
|
|
1669
|
+
c = !0, Be(t, n, l), s = ge(e, t) === !0, r.addEventListener("selectstart", f), document.body.style.userSelect = "none";
|
|
1670
|
+
}, y = (w) => {
|
|
1671
|
+
var I, E;
|
|
1609
1672
|
if (!c) {
|
|
1610
|
-
if (Math.hypot(
|
|
1611
|
-
const x = (
|
|
1612
|
-
if (!x || x ===
|
|
1673
|
+
if (Math.hypot(w.clientX - i.clientX, w.clientY - i.clientY) < lr) return;
|
|
1674
|
+
const x = (I = r.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : I.closest(o);
|
|
1675
|
+
if (!x || x === t) return;
|
|
1613
1676
|
v();
|
|
1614
1677
|
}
|
|
1615
|
-
|
|
1616
|
-
const
|
|
1678
|
+
w.preventDefault();
|
|
1679
|
+
const L = Math.min(p, w.clientY), b = Math.max(p, w.clientY);
|
|
1617
1680
|
r.querySelectorAll(o).forEach((x) => {
|
|
1618
|
-
const
|
|
1619
|
-
if (
|
|
1620
|
-
const
|
|
1621
|
-
|
|
1681
|
+
const B = x.getBoundingClientRect();
|
|
1682
|
+
if (B.height === 0) return;
|
|
1683
|
+
const D = B.top + B.height / 2;
|
|
1684
|
+
D >= L && D <= b && g(x);
|
|
1622
1685
|
});
|
|
1623
|
-
const
|
|
1624
|
-
|
|
1625
|
-
}, k = (
|
|
1626
|
-
(
|
|
1627
|
-
},
|
|
1628
|
-
|
|
1629
|
-
}
|
|
1630
|
-
function
|
|
1686
|
+
const $ = (E = r.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : E.closest(o);
|
|
1687
|
+
$ && g($), p = w.clientY;
|
|
1688
|
+
}, k = (w = !1) => {
|
|
1689
|
+
(q == null ? void 0 : q.cancelar) === S && (q = null), window.removeEventListener("pointermove", y), window.removeEventListener("pointerup", M), window.removeEventListener("pointercancel", M), window.removeEventListener("dragstart", d, !0), r.removeEventListener("selectstart", f), c && (document.body.style.userSelect = "", w || (window.addEventListener("click", m, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", m, !0), 0)));
|
|
1690
|
+
}, M = () => k(), S = () => k(!0);
|
|
1691
|
+
q = { host: e, cancelar: S }, window.addEventListener("dragstart", d, !0), window.addEventListener("pointermove", y, { passive: !1 }), window.addEventListener("pointerup", M), window.addEventListener("pointercancel", M);
|
|
1692
|
+
}
|
|
1693
|
+
function pr(e, r) {
|
|
1631
1694
|
const a = r.getElementById("btn-toggle-all-vis");
|
|
1632
1695
|
a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
|
|
1633
|
-
const
|
|
1634
|
-
|
|
1696
|
+
const t = r.getElementById("btn-toggle-all-expand");
|
|
1697
|
+
t && t.addEventListener("click", (o) => {
|
|
1635
1698
|
o.stopPropagation(), e.camadas.length > 0 && e.camadas.every((l) => e.expandedLayers.has(l.id)) ? e.colapsarTodas() : e.expandirTodas();
|
|
1636
1699
|
});
|
|
1637
|
-
const
|
|
1638
|
-
|
|
1700
|
+
const i = r.getElementById("btn-colapsar");
|
|
1701
|
+
i && i.addEventListener("click", () => e.colapsar(!0)), fr(e, r);
|
|
1639
1702
|
}
|
|
1640
|
-
function
|
|
1641
|
-
const a = r.getElementById("input-layer-search"),
|
|
1703
|
+
function fr(e, r) {
|
|
1704
|
+
const a = r.getElementById("input-layer-search"), t = r.getElementById("btn-clear-layer-search"), i = () => {
|
|
1642
1705
|
var o;
|
|
1643
1706
|
e.searchQuery = "", e.solicitarRenderizacao(), (o = r.getElementById("input-layer-search")) == null || o.focus();
|
|
1644
1707
|
};
|
|
1645
1708
|
if (a) {
|
|
1646
|
-
const o =
|
|
1709
|
+
const o = Te(() => e.solicitarRenderizacao(), 75);
|
|
1647
1710
|
a.addEventListener("input", (n) => {
|
|
1648
1711
|
e.searchQuery = n.target.value, o();
|
|
1649
1712
|
}), a.addEventListener("keydown", (n) => {
|
|
1650
|
-
n.key === "Escape" && e.searchQuery && (n.preventDefault(),
|
|
1713
|
+
n.key === "Escape" && e.searchQuery && (n.preventDefault(), i());
|
|
1651
1714
|
});
|
|
1652
1715
|
}
|
|
1653
|
-
|
|
1716
|
+
t && t.addEventListener("click", i);
|
|
1654
1717
|
}
|
|
1655
|
-
function
|
|
1718
|
+
function ra(e, r) {
|
|
1656
1719
|
r.querySelectorAll("[data-feat-select]").forEach((a) => {
|
|
1657
|
-
a.addEventListener("click", (
|
|
1720
|
+
a.addEventListener("click", (t) => {
|
|
1658
1721
|
if (e.editingFeatureId) return;
|
|
1659
|
-
const
|
|
1660
|
-
if (
|
|
1722
|
+
const i = t;
|
|
1723
|
+
if (i.target.closest(
|
|
1661
1724
|
"[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"
|
|
1662
1725
|
))
|
|
1663
1726
|
return;
|
|
1664
1727
|
const n = a.getAttribute("data-feat-select");
|
|
1665
|
-
n && e.selecionarFeicao(n,
|
|
1728
|
+
n && e.selecionarFeicao(n, i.ctrlKey || i.metaKey, i.shiftKey, !0);
|
|
1666
1729
|
});
|
|
1667
1730
|
}), r.querySelectorAll("[data-feat-target]").forEach((a) => {
|
|
1668
|
-
a.addEventListener("click", (
|
|
1669
|
-
|
|
1670
|
-
const
|
|
1671
|
-
o && e.selecionarFeicao(o,
|
|
1731
|
+
a.addEventListener("click", (t) => {
|
|
1732
|
+
t.stopPropagation();
|
|
1733
|
+
const i = t, o = a.getAttribute("data-feat-target");
|
|
1734
|
+
o && e.selecionarFeicao(o, i.ctrlKey || i.metaKey, i.shiftKey, !0);
|
|
1672
1735
|
});
|
|
1673
1736
|
}), r.querySelectorAll("[data-feat-eye]").forEach((a) => {
|
|
1674
|
-
a.addEventListener("click", (
|
|
1675
|
-
|
|
1676
|
-
const
|
|
1737
|
+
a.addEventListener("click", (t) => {
|
|
1738
|
+
t.stopPropagation();
|
|
1739
|
+
const i = a.getAttribute("data-feat-eye"), o = e.feicoes.find((n) => n.id === i);
|
|
1677
1740
|
if (o) {
|
|
1678
1741
|
o.visible = o.visible === !1;
|
|
1679
1742
|
const n = o.visible !== !1;
|
|
1680
|
-
a.innerHTML = n ?
|
|
1743
|
+
a.innerHTML = n ? h.olhoAberto : h.olhoFechado, P(a, n ? "Ocultar Feição" : "Exibir Feição");
|
|
1681
1744
|
const l = a.closest(".ui-feat-row");
|
|
1682
1745
|
l && l.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
|
|
1683
1746
|
feicaoId: o.id,
|
|
@@ -1686,48 +1749,242 @@ function nr(e, r) {
|
|
|
1686
1749
|
}
|
|
1687
1750
|
});
|
|
1688
1751
|
}), r.querySelectorAll("[data-feat-lock]").forEach((a) => {
|
|
1689
|
-
a.addEventListener("click", (
|
|
1690
|
-
if (
|
|
1691
|
-
const
|
|
1692
|
-
o && (o.locked = !o.locked, a.innerHTML = o.locked ?
|
|
1752
|
+
a.addEventListener("click", (t) => {
|
|
1753
|
+
if (t.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
|
|
1754
|
+
const i = a.getAttribute("data-feat-lock"), o = e.feicoes.find((n) => n.id === i);
|
|
1755
|
+
o && (o.locked = !o.locked, a.innerHTML = o.locked ? h.cadeadoTrancado : h.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), P(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
|
|
1693
1756
|
feicaoId: o.id,
|
|
1694
1757
|
bloqueado: o.locked
|
|
1695
1758
|
}));
|
|
1696
1759
|
});
|
|
1697
1760
|
}), r.querySelectorAll("[data-feat-fit]").forEach((a) => {
|
|
1698
|
-
a.addEventListener("click", (
|
|
1699
|
-
|
|
1700
|
-
const
|
|
1701
|
-
|
|
1761
|
+
a.addEventListener("click", (t) => {
|
|
1762
|
+
t.stopPropagation();
|
|
1763
|
+
const i = a.getAttribute("data-feat-fit");
|
|
1764
|
+
i && e.dispararEvento("ui-feicao-enquadrar", { feicaoId: i });
|
|
1702
1765
|
});
|
|
1703
1766
|
});
|
|
1704
1767
|
}
|
|
1705
|
-
function
|
|
1768
|
+
function mr(e, r) {
|
|
1706
1769
|
var a;
|
|
1707
|
-
r.querySelectorAll("[data-basemap-thumb]").forEach((
|
|
1708
|
-
|
|
1770
|
+
r.querySelectorAll("[data-basemap-thumb]").forEach((t) => {
|
|
1771
|
+
t.addEventListener(
|
|
1709
1772
|
"error",
|
|
1710
1773
|
() => {
|
|
1711
|
-
const
|
|
1712
|
-
|
|
1774
|
+
const i = document.createElement("div");
|
|
1775
|
+
i.className = "ui-basemap-preview-none", i.innerHTML = h.mapa, t.replaceWith(i);
|
|
1713
1776
|
},
|
|
1714
1777
|
{ once: !0 }
|
|
1715
1778
|
);
|
|
1716
1779
|
}), (a = r.querySelector("[data-basemap-toggle]")) == null || a.addEventListener("click", () => {
|
|
1717
1780
|
e.alternarMapasBaseRecolhido(!0);
|
|
1718
|
-
}), r.querySelectorAll("[data-basemap-id]").forEach((
|
|
1719
|
-
|
|
1720
|
-
const
|
|
1721
|
-
|
|
1781
|
+
}), r.querySelectorAll("[data-basemap-id]").forEach((t) => {
|
|
1782
|
+
t.addEventListener("click", () => {
|
|
1783
|
+
const i = t.getAttribute("data-basemap-id");
|
|
1784
|
+
i && e.selecionarMapaBase(i, !0);
|
|
1722
1785
|
});
|
|
1723
1786
|
});
|
|
1724
1787
|
}
|
|
1725
|
-
function
|
|
1726
|
-
|
|
1788
|
+
function gr(e, r) {
|
|
1789
|
+
pr(e, r), tr(e, r), ra(e, r), mr(e, r), nr(e, r), aa(e, r);
|
|
1790
|
+
}
|
|
1791
|
+
function vr(e) {
|
|
1792
|
+
if (!e.arvoreRenderizada) return { incremental: !1, motivo: "arvore-nao-renderizada" };
|
|
1793
|
+
if (e.buscaAtiva) return { incremental: !1, motivo: "busca-ativa" };
|
|
1794
|
+
if (e.editandoCamada || e.editandoFeicao) return { incremental: !1, motivo: "edicao-inline" };
|
|
1795
|
+
for (const r of e.camadasAfetadas) {
|
|
1796
|
+
if (!r.existeNoModelo) return { incremental: !1, motivo: "camada-orfa" };
|
|
1797
|
+
if (!r.renderizadaNoDom) return { incremental: !1, motivo: "camada-fora-do-dom" };
|
|
1798
|
+
if (r.drawerAberto) return { incremental: !1, motivo: "drawer-aberto" };
|
|
1799
|
+
}
|
|
1800
|
+
return e.idsDuplicados ? { incremental: !1, motivo: "ids-duplicados" } : { incremental: !0 };
|
|
1801
|
+
}
|
|
1802
|
+
function ta(e, r = /* @__PURE__ */ new Map()) {
|
|
1803
|
+
for (const a of e)
|
|
1804
|
+
r.set(a.camada.id, a), ta(a.subcamadas, r);
|
|
1805
|
+
return r;
|
|
1727
1806
|
}
|
|
1728
|
-
function
|
|
1807
|
+
function br(e) {
|
|
1808
|
+
const r = /* @__PURE__ */ new Map();
|
|
1809
|
+
for (let a = 0; a < e.length; a++) {
|
|
1810
|
+
const t = e[a];
|
|
1811
|
+
if (!t || !t.id) continue;
|
|
1812
|
+
const i = t.layerId || "", o = r.get(i);
|
|
1813
|
+
o ? o.push(t) : r.set(i, [t]);
|
|
1814
|
+
}
|
|
1815
|
+
return r;
|
|
1816
|
+
}
|
|
1817
|
+
function _(e, r) {
|
|
1818
|
+
for (let a = e.firstElementChild; a; a = a.nextElementSibling)
|
|
1819
|
+
if (a.classList.contains(r)) return a;
|
|
1820
|
+
return null;
|
|
1821
|
+
}
|
|
1822
|
+
function hr(e) {
|
|
1823
|
+
const r = /* @__PURE__ */ new Map(), a = (t) => {
|
|
1824
|
+
for (let i = t.firstElementChild; i && i.classList.contains("ui-layer-group"); i = i.nextElementSibling) {
|
|
1825
|
+
const o = i.getAttribute("data-layer-id");
|
|
1826
|
+
o !== null && r.set(o, i);
|
|
1827
|
+
const n = _(i, "ui-children-container");
|
|
1828
|
+
n && a(n);
|
|
1829
|
+
}
|
|
1830
|
+
};
|
|
1831
|
+
return a(e), r;
|
|
1832
|
+
}
|
|
1833
|
+
function yr(e) {
|
|
1834
|
+
if (!e || e.length < 2) return !1;
|
|
1835
|
+
const r = /* @__PURE__ */ new Set();
|
|
1836
|
+
for (const a of e) {
|
|
1837
|
+
if (r.has(a.id)) return !0;
|
|
1838
|
+
r.add(a.id);
|
|
1839
|
+
}
|
|
1840
|
+
return !1;
|
|
1841
|
+
}
|
|
1842
|
+
function xr(e, r) {
|
|
1843
|
+
var i;
|
|
1844
|
+
const a = new Map(r.map((o) => [o.id, o])), t = /* @__PURE__ */ new Set();
|
|
1845
|
+
for (const o of e) {
|
|
1846
|
+
let n = o;
|
|
1847
|
+
for (; n && a.has(n) && !t.has(n); )
|
|
1848
|
+
t.add(n), n = (i = a.get(n)) == null ? void 0 : i.parentId;
|
|
1849
|
+
}
|
|
1850
|
+
return t;
|
|
1851
|
+
}
|
|
1852
|
+
function ie(e) {
|
|
1853
|
+
const r = document.createElement("template");
|
|
1854
|
+
return r.innerHTML = e, { modelo: r, elementos: Array.from(r.content.children) };
|
|
1855
|
+
}
|
|
1856
|
+
function oe(e) {
|
|
1857
|
+
var a;
|
|
1858
|
+
const r = e.nextSibling;
|
|
1859
|
+
r && r.nodeType === 3 && !(r.textContent ?? "").trim() && ((a = r.parentNode) == null || a.removeChild(r)), e.remove();
|
|
1860
|
+
}
|
|
1861
|
+
function wr(e, r) {
|
|
1862
|
+
if (!e || !r.contains(e)) return null;
|
|
1863
|
+
const a = Array.from(e.attributes).find((t) => t.name.startsWith("data-") && t.value !== "");
|
|
1864
|
+
return a ? { nome: a.name, valor: a.value } : null;
|
|
1865
|
+
}
|
|
1866
|
+
function Ar(e, r) {
|
|
1867
|
+
const { host: a, shadow: t, mudanca: i } = e, o = e.grupos.get(r), n = e.nodos.get(r), l = o ? _(o, "ui-children-container") : null;
|
|
1868
|
+
if (!o || !n || !l) return !1;
|
|
1869
|
+
const c = n.camada, s = e.porCamada.get(r) ?? [], p = a.expandedFeatureLimits.get(r) ?? we, u = s.slice(0, p), d = new Set(u.map((b) => b.id)), m = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), g = t.activeElement;
|
|
1870
|
+
let v = null;
|
|
1871
|
+
for (let b = l.firstElementChild, $; b; b = $) {
|
|
1872
|
+
$ = b.nextElementSibling;
|
|
1873
|
+
const I = b.getAttribute("data-feat-row");
|
|
1874
|
+
if (I === null) {
|
|
1875
|
+
!v && !b.classList.contains("ui-layer-group") && (v = b);
|
|
1876
|
+
continue;
|
|
1877
|
+
}
|
|
1878
|
+
const E = i.idsAlterados.has(I) && d.has(I) && !m.has(I);
|
|
1879
|
+
!d.has(I) || m.has(I) || E ? (E && f.set(I, { tabindex: b.getAttribute("tabindex"), foco: wr(g, b) }), oe(b)) : (m.set(I, b), v || (v = b));
|
|
1880
|
+
}
|
|
1881
|
+
const y = He(c, n.depth, e.herdado.get(r)), k = u.filter((b) => !m.has(b.id));
|
|
1882
|
+
let M = [];
|
|
1883
|
+
if (k.length > 0) {
|
|
1884
|
+
const b = k.map(
|
|
1885
|
+
(E) => Ke(E, y, a.selectedFeatureIds.has(E.id), a.editingFeatureId === E.id)
|
|
1886
|
+
).join(""), { modelo: $, elementos: I } = ie(b);
|
|
1887
|
+
if (I.length !== k.length) return !1;
|
|
1888
|
+
e.ligar($.content), M = I;
|
|
1889
|
+
}
|
|
1890
|
+
let S = v, w = 0;
|
|
1891
|
+
const L = /* @__PURE__ */ new Map();
|
|
1892
|
+
for (const b of u) {
|
|
1893
|
+
const $ = m.get(b.id);
|
|
1894
|
+
if ($)
|
|
1895
|
+
$ === S ? S = $.nextElementSibling : l.insertBefore($, S);
|
|
1896
|
+
else {
|
|
1897
|
+
const I = M[w++];
|
|
1898
|
+
l.insertBefore(I, S), L.set(b.id, I);
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
return f.forEach((b, $) => {
|
|
1902
|
+
const I = L.get($);
|
|
1903
|
+
if (!I || (b.tabindex !== null && I.setAttribute("tabindex", b.tabindex), !b.foco)) return;
|
|
1904
|
+
const E = I.getAttribute(b.foco.nome) === b.foco.valor ? I : Array.from(I.querySelectorAll(`[${b.foco.nome}]`)).find(
|
|
1905
|
+
(x) => x.getAttribute(b.foco.nome) === b.foco.valor
|
|
1906
|
+
);
|
|
1907
|
+
E == null || E.focus({ preventScroll: !0 });
|
|
1908
|
+
}), Er(e, l, n, p, s.length);
|
|
1909
|
+
}
|
|
1910
|
+
function Er(e, r, a, t, i) {
|
|
1911
|
+
const o = z(a.camada.id), n = !!(a.camada.isGroup || a.subcamadas.length > 0), l = i > t, c = a.subcamadas.length === 0 && i === 0, s = _(r, "ui-truncate-notice"), p = _(r, "ui-empty-row");
|
|
1912
|
+
if (p && !c && oe(p), s && !l && oe(s), l)
|
|
1913
|
+
if (s) {
|
|
1914
|
+
const u = Ue(t, i), d = s.querySelector("span"), m = s.querySelector(".ui-truncate-more-btn");
|
|
1915
|
+
if (!d || !m) return !1;
|
|
1916
|
+
d.textContent !== u.resumo && (d.textContent = u.resumo), m.textContent !== u.botao && (m.textContent = u.botao);
|
|
1917
|
+
} else {
|
|
1918
|
+
const { modelo: u, elementos: d } = ie(_e(o, t, i));
|
|
1919
|
+
if (d.length !== 1) return !1;
|
|
1920
|
+
e.ligar(u.content), r.appendChild(d[0]);
|
|
1921
|
+
}
|
|
1922
|
+
if (c && !p) {
|
|
1923
|
+
const { elementos: u } = ie(Ye(n));
|
|
1924
|
+
if (u.length !== 1) return !1;
|
|
1925
|
+
r.appendChild(u[0]);
|
|
1926
|
+
}
|
|
1927
|
+
return !0;
|
|
1928
|
+
}
|
|
1929
|
+
function kr(e, r) {
|
|
1930
|
+
const a = e.grupos.get(r), t = e.nodos.get(r), i = a ? _(a, "ui-layer-row") : null, o = i == null ? void 0 : i.querySelector(".ui-col-name");
|
|
1931
|
+
if (!a || !t || !i || !o) return !1;
|
|
1932
|
+
const { host: n } = e, l = Q(n.camadas, n.feicoes, r), c = (e.porCamada.get(r) ?? []).length, s = t.subcamadas.length, p = !!(t.camada.isGroup || s > 0), u = o.querySelector(".ui-count-chip");
|
|
1933
|
+
if (u)
|
|
1934
|
+
if (l.length === 0 && p)
|
|
1935
|
+
oe(u);
|
|
1936
|
+
else {
|
|
1937
|
+
const d = String(l.length), m = Ge(l.length, c, s);
|
|
1938
|
+
u.textContent !== d && (u.textContent = d), u.getAttribute("title") !== m && u.setAttribute("title", m);
|
|
1939
|
+
}
|
|
1940
|
+
else {
|
|
1941
|
+
const d = Ve(l.length, c, s, p);
|
|
1942
|
+
if (d) {
|
|
1943
|
+
const { elementos: m } = ie(d);
|
|
1944
|
+
if (m.length !== 1) return !1;
|
|
1945
|
+
o.appendChild(m[0]);
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
return Je(i.querySelector(".ui-target-circle"), l, n.selectedFeatureIds), !0;
|
|
1949
|
+
}
|
|
1950
|
+
function Ir(e, r, a, t) {
|
|
1951
|
+
const i = r.getElementById("ui-layer-tree-mount"), o = ta(ne(e.camadas)), n = i ? hr(i) : /* @__PURE__ */ new Map(), l = br(e.feicoes), c = a.camadas === "todas" ? Array.from(o.keys()) : Array.from(a.camadas), s = c.map((d) => ({
|
|
1952
|
+
existeNoModelo: o.has(d),
|
|
1953
|
+
renderizadaNoDom: n.has(d),
|
|
1954
|
+
drawerAberto: e.activeSettingsLayerId === d
|
|
1955
|
+
}));
|
|
1956
|
+
if (!vr({
|
|
1957
|
+
arvoreRenderizada: i !== null,
|
|
1958
|
+
buscaAtiva: (e.searchQuery || "").trim() !== "",
|
|
1959
|
+
editandoCamada: e.editingLayerId !== null,
|
|
1960
|
+
editandoFeicao: e.editingFeatureId !== null,
|
|
1961
|
+
idsDuplicados: c.some((d) => yr(l.get(d))),
|
|
1962
|
+
camadasAfetadas: s
|
|
1963
|
+
}).incremental) return !1;
|
|
1964
|
+
const u = {
|
|
1965
|
+
host: e,
|
|
1966
|
+
shadow: r,
|
|
1967
|
+
mudanca: a,
|
|
1968
|
+
porCamada: l,
|
|
1969
|
+
nodos: o,
|
|
1970
|
+
grupos: n,
|
|
1971
|
+
herdado: se(e.camadas),
|
|
1972
|
+
ligar: t
|
|
1973
|
+
};
|
|
1974
|
+
for (const d of c)
|
|
1975
|
+
if (!Ar(u, d)) return !1;
|
|
1976
|
+
for (const d of xr(c, e.camadas))
|
|
1977
|
+
if (!kr(u, d)) return !1;
|
|
1978
|
+
return (a.selecaoAfetada || e.selectedFeatureIds.size > 0) && Ze(e, r), !0;
|
|
1979
|
+
}
|
|
1980
|
+
function Cr(e) {
|
|
1981
|
+
if (!e.isConnected) return;
|
|
1982
|
+
const r = document.createElement("div");
|
|
1983
|
+
r.className = "ui-basemap-preview-none", r.innerHTML = h.gradeCad, e.replaceWith(r);
|
|
1984
|
+
}
|
|
1985
|
+
function Lr(e, r, a, t) {
|
|
1729
1986
|
var g, v;
|
|
1730
|
-
const
|
|
1987
|
+
const i = Ga({
|
|
1731
1988
|
camadas: e.camadas,
|
|
1732
1989
|
feicoes: e.feicoes,
|
|
1733
1990
|
camadaAtivaId: e.camadaAtivaId,
|
|
@@ -1741,37 +1998,49 @@ function cr(e, r, a, i) {
|
|
|
1741
1998
|
mostrarBusca: e.mostrarBusca,
|
|
1742
1999
|
limitesPorCamada: e.expandedFeatureLimits,
|
|
1743
2000
|
mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false"
|
|
1744
|
-
}), o = e.mostrarMapasBase ?
|
|
2001
|
+
}), o = e.mostrarMapasBase ? $a(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? za(e.camadas, e.feicoes, e.selectedFeatureIds) : "", l = r.getElementById("ui-layer-tree-mount"), c = a.scrollTop, s = l ? l.scrollTop : 0, p = r.activeElement, u = p && a.contains(p) ? p.id : "", d = p && !u && a.contains(p) ? Array.from(p.attributes).find((y) => y.name.startsWith("data-") && y.value !== "") : void 0, m = p && "selectionStart" in p ? p.selectionStart : null;
|
|
1745
2002
|
a.innerHTML = `
|
|
1746
|
-
${
|
|
2003
|
+
${i}
|
|
1747
2004
|
${n}
|
|
1748
2005
|
${o}
|
|
1749
2006
|
`, a.scrollTop = c;
|
|
1750
2007
|
const f = r.getElementById("ui-layer-tree-mount");
|
|
1751
2008
|
if (f && (f.scrollTop = s), u) {
|
|
1752
|
-
const
|
|
1753
|
-
if (
|
|
2009
|
+
const y = r.getElementById(u);
|
|
2010
|
+
if (y && (y.focus({ preventScroll: !0 }), m !== null && typeof y.setSelectionRange == "function"))
|
|
1754
2011
|
try {
|
|
1755
|
-
|
|
2012
|
+
y.setSelectionRange(m, m);
|
|
1756
2013
|
} catch {
|
|
1757
2014
|
}
|
|
1758
2015
|
}
|
|
1759
|
-
!u &&
|
|
2016
|
+
!u && d && ((g = T(a, d.name, d.value)) == null || g.focus({ preventScroll: !0 })), (v = r.querySelector("[data-layer-row], [data-feat-row]")) == null || v.setAttribute("tabindex", "0"), a.querySelectorAll("img[data-basemap-thumb]").forEach((y) => {
|
|
2017
|
+
const k = () => Cr(y);
|
|
2018
|
+
y.addEventListener("error", k, { once: !0 }), y.complete && y.naturalWidth === 0 && y.getAttribute("src") && k();
|
|
2019
|
+
}), gr(e, r), t.bindAll();
|
|
1760
2020
|
}
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
2021
|
+
function Sr(e, r, a, t) {
|
|
2022
|
+
try {
|
|
2023
|
+
return Ir(e, r, t, (i) => {
|
|
2024
|
+
ra(e, i), ea(e, i), aa(e, r, i), a.bindLinhasFeicao(i);
|
|
2025
|
+
});
|
|
2026
|
+
} catch (i) {
|
|
2027
|
+
return console.warn("[UI-Camadas] atualização incremental falhou; redesenhando o painel.", i), !1;
|
|
2028
|
+
}
|
|
2029
|
+
}
|
|
2030
|
+
const $r = '[role="button"][tabindex]', Y = "[data-layer-row], [data-feat-row]", Mr = ["color", "range", "checkbox", "radio", "button"];
|
|
2031
|
+
function ia(e) {
|
|
2032
|
+
return !e || !(e instanceof Element) || e instanceof HTMLInputElement && Mr.includes(e.type) ? !1 : ka({ composedPath: () => [e] });
|
|
1764
2033
|
}
|
|
1765
|
-
function
|
|
1766
|
-
return Array.from(e.querySelectorAll(
|
|
2034
|
+
function Fr(e) {
|
|
2035
|
+
return Array.from(e.querySelectorAll(Y)).filter((r) => {
|
|
1767
2036
|
const a = r.closest(".ui-children-container");
|
|
1768
2037
|
return !(a && a.style.display === "none") && !r.classList.contains("ui-search-hidden");
|
|
1769
2038
|
});
|
|
1770
2039
|
}
|
|
1771
|
-
function
|
|
1772
|
-
r && (e.querySelectorAll(
|
|
2040
|
+
function re(e, r) {
|
|
2041
|
+
r && (e.querySelectorAll(Y).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
|
|
1773
2042
|
}
|
|
1774
|
-
function
|
|
2043
|
+
function zr(e, r) {
|
|
1775
2044
|
e.dispatchEvent(
|
|
1776
2045
|
new MouseEvent("click", {
|
|
1777
2046
|
bubbles: !0,
|
|
@@ -1780,41 +2049,41 @@ function fr(e, r) {
|
|
|
1780
2049
|
})
|
|
1781
2050
|
);
|
|
1782
2051
|
}
|
|
1783
|
-
function
|
|
1784
|
-
var
|
|
1785
|
-
if (
|
|
1786
|
-
const
|
|
1787
|
-
if (
|
|
1788
|
-
a.preventDefault(),
|
|
2052
|
+
function Br(e, r, a) {
|
|
2053
|
+
var i;
|
|
2054
|
+
if (ia(a.composedPath()[0])) return;
|
|
2055
|
+
const t = r.querySelector(".confirming");
|
|
2056
|
+
if (t) {
|
|
2057
|
+
a.preventDefault(), t.classList.remove("confirming");
|
|
1789
2058
|
return;
|
|
1790
2059
|
}
|
|
1791
2060
|
if (e.activeSettingsLayerId) {
|
|
1792
2061
|
a.preventDefault();
|
|
1793
2062
|
const o = e.activeSettingsLayerId;
|
|
1794
|
-
e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (
|
|
2063
|
+
e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (i = T(r, "data-layer-settings", o)) == null || i.focus();
|
|
1795
2064
|
return;
|
|
1796
2065
|
}
|
|
1797
2066
|
e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
|
|
1798
2067
|
}
|
|
1799
|
-
function
|
|
2068
|
+
function qr(e, r, a, t) {
|
|
1800
2069
|
var l;
|
|
1801
|
-
const
|
|
1802
|
-
if (!(
|
|
1803
|
-
if ((
|
|
1804
|
-
|
|
2070
|
+
const i = t.composedPath()[0];
|
|
2071
|
+
if (!(i instanceof HTMLElement) || ia(i)) return;
|
|
2072
|
+
if ((t.key === "Enter" || t.key === " ") && i.matches($r)) {
|
|
2073
|
+
t.preventDefault(), i.click();
|
|
1805
2074
|
return;
|
|
1806
2075
|
}
|
|
1807
|
-
if (!
|
|
1808
|
-
const o =
|
|
1809
|
-
if (
|
|
1810
|
-
|
|
1811
|
-
const c =
|
|
1812
|
-
|
|
2076
|
+
if (!i.matches(Y)) return;
|
|
2077
|
+
const o = Fr(r), n = o.indexOf(i);
|
|
2078
|
+
if (t.key === "F2") {
|
|
2079
|
+
t.preventDefault();
|
|
2080
|
+
const c = i.getAttribute("data-layer-row"), s = i.getAttribute("data-feat-row"), p = c ? T(i, "data-layer-name-trigger", c) : s ? T(i, "data-feat-name-trigger", s) : null;
|
|
2081
|
+
p && p.dispatchEvent(new MouseEvent("dblclick", { bubbles: !0 }));
|
|
1813
2082
|
return;
|
|
1814
2083
|
}
|
|
1815
|
-
if ((
|
|
1816
|
-
|
|
1817
|
-
const c =
|
|
2084
|
+
if ((t.ctrlKey || t.metaKey) && (t.key === "a" || t.key === "A")) {
|
|
2085
|
+
t.preventDefault();
|
|
2086
|
+
const c = Xe(
|
|
1818
2087
|
e.camadas,
|
|
1819
2088
|
e.feicoes,
|
|
1820
2089
|
e.expandedLayers,
|
|
@@ -1825,83 +2094,83 @@ function gr(e, r, a, i) {
|
|
|
1825
2094
|
c.length > 0 && e.selecionarFeicoes(c, !0);
|
|
1826
2095
|
return;
|
|
1827
2096
|
}
|
|
1828
|
-
if (
|
|
2097
|
+
if (t.key === "Delete") {
|
|
1829
2098
|
const c = a.getElementById("btn-footer-del");
|
|
1830
2099
|
if (c && !c.hasAttribute("disabled") && e.selectedFeatureIds.size > 0) {
|
|
1831
|
-
|
|
2100
|
+
t.preventDefault(), c.click();
|
|
1832
2101
|
return;
|
|
1833
2102
|
}
|
|
1834
2103
|
}
|
|
1835
|
-
switch (
|
|
2104
|
+
switch (t.key) {
|
|
1836
2105
|
case "ArrowDown":
|
|
1837
|
-
|
|
2106
|
+
t.preventDefault(), re(r, o[Math.min(o.length - 1, n + 1)]);
|
|
1838
2107
|
break;
|
|
1839
2108
|
case "ArrowUp":
|
|
1840
|
-
|
|
2109
|
+
t.preventDefault(), re(r, o[Math.max(0, n - 1)]);
|
|
1841
2110
|
break;
|
|
1842
2111
|
case "Home":
|
|
1843
|
-
|
|
2112
|
+
t.preventDefault(), re(r, o[0]);
|
|
1844
2113
|
break;
|
|
1845
2114
|
case "End":
|
|
1846
|
-
|
|
2115
|
+
t.preventDefault(), re(r, o[o.length - 1]);
|
|
1847
2116
|
break;
|
|
1848
2117
|
case "ArrowRight":
|
|
1849
2118
|
case "ArrowLeft": {
|
|
1850
|
-
const c =
|
|
2119
|
+
const c = i.getAttribute("data-layer-row");
|
|
1851
2120
|
if (!c) return;
|
|
1852
|
-
const s =
|
|
1853
|
-
|
|
2121
|
+
const s = i.closest(".ui-layer-group"), p = (s == null ? void 0 : s.getAttribute("aria-expanded")) === "true";
|
|
2122
|
+
t.key === "ArrowRight" !== p && (t.preventDefault(), (l = T(a, "data-layer-expand", c)) == null || l.click());
|
|
1854
2123
|
break;
|
|
1855
2124
|
}
|
|
1856
2125
|
case "Enter":
|
|
1857
2126
|
case " ":
|
|
1858
|
-
|
|
2127
|
+
t.preventDefault(), zr(i, t);
|
|
1859
2128
|
break;
|
|
1860
2129
|
}
|
|
1861
2130
|
}
|
|
1862
|
-
function
|
|
1863
|
-
|
|
1864
|
-
o.key === "Escape" &&
|
|
1865
|
-
}),
|
|
2131
|
+
function Pr(e, r, a, t, i) {
|
|
2132
|
+
i.add(r, "keydown", (o) => {
|
|
2133
|
+
o.key === "Escape" && Br(e, a, o);
|
|
2134
|
+
}), i.add(t, "keydown", (o) => qr(e, t, a, o)), i.add(t, "focusin", (o) => {
|
|
1866
2135
|
const n = o.composedPath()[0];
|
|
1867
|
-
n instanceof HTMLElement && n.matches(
|
|
2136
|
+
n instanceof HTMLElement && n.matches(Y) && (t.querySelectorAll(Y).forEach((l) => l.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
|
|
1868
2137
|
});
|
|
1869
2138
|
}
|
|
1870
|
-
function
|
|
1871
|
-
const o =
|
|
2139
|
+
function Dr(e, r, a, t, i) {
|
|
2140
|
+
const o = Xe(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !t && !o.includes(r) && e.feicoes.some((c) => c.id === r), l = Ta(
|
|
1872
2141
|
n ? [...o, r] : o,
|
|
1873
2142
|
e.selectedFeatureIds,
|
|
1874
2143
|
e.lastClickedFeatureId,
|
|
1875
2144
|
r,
|
|
1876
2145
|
a,
|
|
1877
|
-
|
|
2146
|
+
t
|
|
1878
2147
|
);
|
|
1879
|
-
l && (e.selectedFeatureIds = l.selecionados, e.lastClickedFeatureId = l.ultimoClicadoId, e.sincronizarSelecaoDOM(),
|
|
2148
|
+
l && (e.selectedFeatureIds = l.selecionados, e.lastClickedFeatureId = l.ultimoClicadoId, e.sincronizarSelecaoDOM(), i && e.notificarMudancaSelecao());
|
|
1880
2149
|
}
|
|
1881
|
-
function
|
|
1882
|
-
const
|
|
1883
|
-
|
|
2150
|
+
function Tr(e, r, a) {
|
|
2151
|
+
const t = r || [];
|
|
2152
|
+
t.length === e.selectedFeatureIds.size && t.every((n) => e.selectedFeatureIds.has(n)) || (e.selectedFeatureIds.clear(), t.forEach((n) => e.selectedFeatureIds.add(n)), e.lastClickedFeatureId = t.length > 0 ? t[t.length - 1] : null, e.sincronizarSelecaoDOM(), a && e.notificarMudancaSelecao());
|
|
1884
2153
|
}
|
|
1885
|
-
function
|
|
2154
|
+
function Rr(e, r) {
|
|
1886
2155
|
e.selectedFeatureIds.size !== 0 && (e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.sincronizarSelecaoDOM(), r && e.notificarMudancaSelecao());
|
|
1887
2156
|
}
|
|
1888
|
-
function
|
|
2157
|
+
function Or(e) {
|
|
1889
2158
|
const r = e.feicoes.filter((a) => e.selectedFeatureIds.has(a.id));
|
|
1890
2159
|
e.dispararEvento("ui-feicoes-selecionadas", {
|
|
1891
2160
|
feicoesIds: Array.from(e.selectedFeatureIds),
|
|
1892
2161
|
feicoes: r
|
|
1893
2162
|
}), 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 });
|
|
1894
2163
|
}
|
|
1895
|
-
class
|
|
2164
|
+
class jr {
|
|
1896
2165
|
constructor(r) {
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
2166
|
+
A(this, "origens", /* @__PURE__ */ new Map());
|
|
2167
|
+
A(this, "removidas", /* @__PURE__ */ new Set());
|
|
2168
|
+
A(this, "salvarComDebounce", Te(() => this.salvar(), 200));
|
|
1900
2169
|
this.instantaneo = r;
|
|
1901
2170
|
}
|
|
1902
2171
|
chaveAtual() {
|
|
1903
2172
|
const r = this.instantaneo();
|
|
1904
|
-
return
|
|
2173
|
+
return Ka(r.storageKey, r.id);
|
|
1905
2174
|
}
|
|
1906
2175
|
carregar() {
|
|
1907
2176
|
return be(this.chaveAtual());
|
|
@@ -1913,7 +2182,7 @@ class wr {
|
|
|
1913
2182
|
salvar() {
|
|
1914
2183
|
const r = this.instantaneo();
|
|
1915
2184
|
if (!r.persistir || !r.conectado) return;
|
|
1916
|
-
const a = this.chaveAtual(),
|
|
2185
|
+
const a = this.chaveAtual(), t = Za({
|
|
1917
2186
|
estadoAnterior: be(a),
|
|
1918
2187
|
origensCamadas: this.origens,
|
|
1919
2188
|
camadas: r.camadas,
|
|
@@ -1925,124 +2194,157 @@ class wr {
|
|
|
1925
2194
|
altura: r.altura,
|
|
1926
2195
|
camadasRemovidas: this.removidas
|
|
1927
2196
|
});
|
|
1928
|
-
this.removidas.clear(),
|
|
2197
|
+
this.removidas.clear(), Xa(a, t);
|
|
1929
2198
|
}
|
|
1930
2199
|
limpar() {
|
|
1931
|
-
|
|
2200
|
+
Wa(this.chaveAtual());
|
|
1932
2201
|
}
|
|
1933
2202
|
// --- Origens (como a camada chegou do consumidor) e remoções ---
|
|
1934
2203
|
limparOrigens() {
|
|
1935
2204
|
this.origens.clear();
|
|
1936
2205
|
}
|
|
1937
2206
|
registrarOrigem(r) {
|
|
1938
|
-
this.origens.set(r.id,
|
|
2207
|
+
this.origens.set(r.id, We(r));
|
|
1939
2208
|
}
|
|
1940
2209
|
esquecerCamada(r) {
|
|
1941
2210
|
this.origens.delete(r), this.removidas.add(r);
|
|
1942
2211
|
}
|
|
1943
2212
|
/** Aplica por cima de `camadas` o que foi lembrado (expansão, visibilidade, travas, opacidade, cor, ordem). */
|
|
1944
|
-
reidratar(r, a,
|
|
1945
|
-
|
|
2213
|
+
reidratar(r, a, t) {
|
|
2214
|
+
Ja(r, a, t, this.origens);
|
|
1946
2215
|
}
|
|
1947
2216
|
}
|
|
1948
|
-
function
|
|
1949
|
-
const
|
|
1950
|
-
if (!Array.isArray(e)) return
|
|
1951
|
-
for (const
|
|
1952
|
-
if (!
|
|
1953
|
-
const o = String(
|
|
2217
|
+
function Ee(e, r = null, a = /* @__PURE__ */ new Set()) {
|
|
2218
|
+
const t = [];
|
|
2219
|
+
if (!Array.isArray(e)) return t;
|
|
2220
|
+
for (const i of e) {
|
|
2221
|
+
if (!i || typeof i != "object" || !i.id) continue;
|
|
2222
|
+
const o = String(i.id);
|
|
1954
2223
|
if (a.has(o)) continue;
|
|
1955
2224
|
a.add(o);
|
|
1956
|
-
const n = { ...
|
|
1957
|
-
delete n.children, r && n.parentId === void 0 && (n.parentId = r),
|
|
2225
|
+
const n = { ...i, id: o };
|
|
2226
|
+
delete n.children, r && n.parentId === void 0 && (n.parentId = r), t.push(n), Array.isArray(i.children) && i.children.length > 0 && t.push(...Ee(i.children, o, a));
|
|
1958
2227
|
}
|
|
1959
|
-
return
|
|
2228
|
+
return t;
|
|
1960
2229
|
}
|
|
1961
|
-
function
|
|
2230
|
+
function oa(e) {
|
|
1962
2231
|
const r = e.lastClickedFeatureId;
|
|
1963
2232
|
r && !e.feicoes.some((a) => a.id === r) && (e.lastClickedFeatureId = null);
|
|
1964
2233
|
}
|
|
1965
|
-
function
|
|
2234
|
+
function na(e) {
|
|
1966
2235
|
if (!Array.isArray(e)) return [];
|
|
1967
2236
|
const r = /* @__PURE__ */ new Set(), a = [];
|
|
1968
|
-
for (const
|
|
1969
|
-
if (!
|
|
1970
|
-
const
|
|
1971
|
-
r.has(
|
|
2237
|
+
for (const t of e) {
|
|
2238
|
+
if (!t || typeof t != "object" || !t.id) continue;
|
|
2239
|
+
const i = String(t.id);
|
|
2240
|
+
r.has(i) || (r.add(i), a.push({ ...t, id: i }));
|
|
1972
2241
|
}
|
|
1973
2242
|
return a;
|
|
1974
2243
|
}
|
|
1975
|
-
function
|
|
1976
|
-
if (e.camadas = Array.isArray(r) ?
|
|
1977
|
-
const
|
|
1978
|
-
e.lembranca.reidratar(e.camadas,
|
|
2244
|
+
function Nr(e, r, a) {
|
|
2245
|
+
if (e.camadas = Array.isArray(r) ? Ee(r) : [], e.lembranca.limparOrigens(), e.persistir) {
|
|
2246
|
+
const i = e.lembranca.carregar();
|
|
2247
|
+
e.lembranca.reidratar(e.camadas, i, e.expandedLayers), i != null && i.camadaAtivaId && e.camadas.some((o) => o.id === i.camadaAtivaId) && (e.camadaAtivaId = i.camadaAtivaId);
|
|
1979
2248
|
} else
|
|
1980
|
-
e.camadas.forEach((
|
|
1981
|
-
e.lembranca.registrarOrigem(
|
|
2249
|
+
e.camadas.forEach((i) => {
|
|
2250
|
+
e.lembranca.registrarOrigem(i), e.expandedLayers.has(i.id) || e.expandedLayers.add(i.id);
|
|
1982
2251
|
});
|
|
1983
2252
|
if (Array.isArray(a)) {
|
|
1984
|
-
e.feicoes =
|
|
1985
|
-
const
|
|
2253
|
+
e.feicoes = na(a);
|
|
2254
|
+
const i = new Set(e.camadas.map((n) => n.id)), o = e.feicoes.filter((n) => n.layerId && !i.has(n.layerId));
|
|
1986
2255
|
o.length > 0 && console.warn(
|
|
1987
2256
|
`[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
|
|
1988
2257
|
o.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
|
|
1989
|
-
),
|
|
1990
|
-
}
|
|
1991
|
-
const
|
|
1992
|
-
e.camadas.length > 0 && (!
|
|
1993
|
-
}
|
|
1994
|
-
function
|
|
1995
|
-
|
|
2258
|
+
), Ae(e.selectedFeatureIds, e.feicoes), oa(e);
|
|
2259
|
+
}
|
|
2260
|
+
const t = e.getAttribute("camada-ativa");
|
|
2261
|
+
e.camadas.length > 0 && (!t || !e.camadas.some((i) => i.id === t)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
|
|
2262
|
+
}
|
|
2263
|
+
function Hr(e, r) {
|
|
2264
|
+
const a = new Map(e.map((i) => [i.id, i])), t = /* @__PURE__ */ new Set();
|
|
2265
|
+
for (const i of r) {
|
|
2266
|
+
const o = a.get(i.id);
|
|
2267
|
+
(!o || !Da(o, i)) && t.add(i.id);
|
|
2268
|
+
}
|
|
2269
|
+
return t;
|
|
2270
|
+
}
|
|
2271
|
+
function Gr(e, r) {
|
|
2272
|
+
const a = e.feicoes;
|
|
2273
|
+
e.feicoes = na(r);
|
|
2274
|
+
const t = e.selectedFeatureIds.size;
|
|
2275
|
+
Ae(e.selectedFeatureIds, e.feicoes), oa(e), e.solicitarAtualizacaoFeicoes({
|
|
2276
|
+
camadas: "todas",
|
|
2277
|
+
idsAlterados: Hr(a, e.feicoes),
|
|
2278
|
+
selecaoAfetada: e.selectedFeatureIds.size !== t
|
|
2279
|
+
});
|
|
1996
2280
|
}
|
|
1997
|
-
function
|
|
2281
|
+
function Vr(e, r) {
|
|
1998
2282
|
if (!r || !r.id) return;
|
|
1999
|
-
if (e.camadas.some((
|
|
2283
|
+
if (e.camadas.some((t) => t.id === r.id)) {
|
|
2000
2284
|
console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);
|
|
2001
2285
|
return;
|
|
2002
2286
|
}
|
|
2003
|
-
const a = new Set(e.camadas.map((
|
|
2004
|
-
for (const
|
|
2005
|
-
if (a.has(
|
|
2006
|
-
console.warn(`[UI-Camadas] adicionarCamada: subcamada '${
|
|
2287
|
+
const a = new Set(e.camadas.map((t) => t.id));
|
|
2288
|
+
for (const t of Ee([r])) {
|
|
2289
|
+
if (a.has(t.id)) {
|
|
2290
|
+
console.warn(`[UI-Camadas] adicionarCamada: subcamada '${t.id}' ignorada, o id já existe.`);
|
|
2007
2291
|
continue;
|
|
2008
2292
|
}
|
|
2009
|
-
a.add(
|
|
2293
|
+
a.add(t.id), e.camadas.push(t), e.lembranca.registrarOrigem(t), e.expandedLayers.add(t.id), t.parentId && e.expandedLayers.add(t.parentId);
|
|
2010
2294
|
}
|
|
2011
2295
|
e.salvarLembrancaEstado(), e.solicitarRenderizacao();
|
|
2012
2296
|
}
|
|
2013
|
-
function
|
|
2297
|
+
function Ur(e, r) {
|
|
2014
2298
|
var a;
|
|
2015
|
-
e.camadas.forEach((
|
|
2016
|
-
|
|
2017
|
-
}), e.camadas = e.camadas.filter((
|
|
2299
|
+
e.camadas.forEach((t) => {
|
|
2300
|
+
t.parentId === r && (t.parentId = null);
|
|
2301
|
+
}), e.camadas = e.camadas.filter((t) => t.id !== r), e.feicoes = e.feicoes.filter((t) => t.layerId !== r), e.lembranca.esquecerCamada(r), e.expandedLayers.delete(r), e.activeSettingsLayerId === r && (e.activeSettingsLayerId = null), Ae(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();
|
|
2018
2302
|
}
|
|
2019
|
-
function
|
|
2303
|
+
function _r(e, r) {
|
|
2020
2304
|
if (!(!r || !r.id)) {
|
|
2021
2305
|
if (e.feicoes.some((a) => a.id === r.id)) {
|
|
2022
2306
|
console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);
|
|
2023
2307
|
return;
|
|
2024
2308
|
}
|
|
2025
|
-
e.feicoes.push({ ...r }), e.
|
|
2309
|
+
e.feicoes.push({ ...r }), e.solicitarAtualizacaoFeicoes({
|
|
2310
|
+
camadas: /* @__PURE__ */ new Set([r.layerId || ""]),
|
|
2311
|
+
idsAlterados: /* @__PURE__ */ new Set(),
|
|
2312
|
+
selecaoAfetada: e.selectedFeatureIds.has(r.id)
|
|
2313
|
+
});
|
|
2026
2314
|
}
|
|
2027
2315
|
}
|
|
2028
|
-
function
|
|
2316
|
+
function Yr(e, r) {
|
|
2029
2317
|
if (!r || typeof r != "object" || !r.id) return;
|
|
2030
|
-
const a = e.feicoes.findIndex((
|
|
2031
|
-
a !== -1
|
|
2318
|
+
const a = e.feicoes.findIndex((t) => t.id === r.id);
|
|
2319
|
+
if (a !== -1) {
|
|
2320
|
+
const t = e.feicoes[a].layerId || "";
|
|
2321
|
+
e.feicoes[a] = { ...e.feicoes[a], ...r }, e.solicitarAtualizacaoFeicoes({
|
|
2322
|
+
camadas: /* @__PURE__ */ new Set([t, e.feicoes[a].layerId || ""]),
|
|
2323
|
+
idsAlterados: /* @__PURE__ */ new Set([r.id]),
|
|
2324
|
+
selecaoAfetada: !1
|
|
2325
|
+
});
|
|
2326
|
+
}
|
|
2032
2327
|
}
|
|
2033
|
-
function
|
|
2034
|
-
|
|
2328
|
+
function Kr(e, r) {
|
|
2329
|
+
const a = e.feicoes.find((i) => i.id === r);
|
|
2330
|
+
e.feicoes = e.feicoes.filter((i) => i.id !== r);
|
|
2331
|
+
const t = e.selectedFeatureIds.delete(r);
|
|
2332
|
+
e.lastClickedFeatureId === r && (e.lastClickedFeatureId = null), e.solicitarAtualizacaoFeicoes({
|
|
2333
|
+
camadas: new Set(a ? [a.layerId || ""] : []),
|
|
2334
|
+
idsAlterados: /* @__PURE__ */ new Set(),
|
|
2335
|
+
selecaoAfetada: t
|
|
2336
|
+
});
|
|
2035
2337
|
}
|
|
2036
|
-
function
|
|
2037
|
-
function
|
|
2338
|
+
function Qr(e) {
|
|
2339
|
+
function t() {
|
|
2038
2340
|
return e.getMinAltura ? e.getMinAltura() : 140;
|
|
2039
2341
|
}
|
|
2040
|
-
function
|
|
2342
|
+
function i() {
|
|
2041
2343
|
return e.getMaxAltura ? e.getMaxAltura() : 1600;
|
|
2042
2344
|
}
|
|
2043
|
-
function o(s,
|
|
2345
|
+
function o(s, p = !1) {
|
|
2044
2346
|
if (s == null || s === "") {
|
|
2045
|
-
e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"),
|
|
2347
|
+
e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"), p && e.hostElement.dispatchEvent(
|
|
2046
2348
|
new CustomEvent("ui-redimensionar-altura", {
|
|
2047
2349
|
bubbles: !0,
|
|
2048
2350
|
composed: !0,
|
|
@@ -2053,22 +2355,22 @@ function Sr(e) {
|
|
|
2053
2355
|
}
|
|
2054
2356
|
const u = typeof s == "number" ? s : parseFloat(String(s));
|
|
2055
2357
|
if (isNaN(u)) return;
|
|
2056
|
-
const
|
|
2057
|
-
e.hostElement.style.height = `${
|
|
2358
|
+
const d = Math.max(t(), Math.min(i(), Math.round(u)));
|
|
2359
|
+
e.hostElement.style.height = `${d}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${d}px`), p && e.hostElement.dispatchEvent(
|
|
2058
2360
|
new CustomEvent("ui-redimensionar-altura", {
|
|
2059
2361
|
bubbles: !0,
|
|
2060
2362
|
composed: !0,
|
|
2061
|
-
detail: { altura:
|
|
2363
|
+
detail: { altura: d }
|
|
2062
2364
|
})
|
|
2063
2365
|
);
|
|
2064
2366
|
}
|
|
2065
2367
|
let n = null;
|
|
2066
2368
|
function l() {
|
|
2067
2369
|
if (!e.resizerElement) return;
|
|
2068
|
-
let s = !1,
|
|
2069
|
-
const
|
|
2370
|
+
let s = !1, p = 0, u = 0;
|
|
2371
|
+
const d = (f) => {
|
|
2070
2372
|
if (f.button !== 0) return;
|
|
2071
|
-
f.preventDefault(), f.stopPropagation(), s = !0,
|
|
2373
|
+
f.preventDefault(), f.stopPropagation(), s = !0, p = f.clientY, u = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
|
|
2072
2374
|
try {
|
|
2073
2375
|
e.resizerElement.setPointerCapture(f.pointerId);
|
|
2074
2376
|
} catch {
|
|
@@ -2076,39 +2378,39 @@ function Sr(e) {
|
|
|
2076
2378
|
const g = (k) => {
|
|
2077
2379
|
if (!s) return;
|
|
2078
2380
|
k.preventDefault();
|
|
2079
|
-
const
|
|
2080
|
-
e.hostElement.style.height = `${
|
|
2381
|
+
const M = k.clientY - p, S = Math.max(t(), Math.min(i(), Math.round(u + M)));
|
|
2382
|
+
e.hostElement.style.height = `${S}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${S}px`), e.onRedimensionando && e.onRedimensionando(S), e.hostElement.dispatchEvent(
|
|
2081
2383
|
new CustomEvent("ui-redimensionando-altura", {
|
|
2082
2384
|
bubbles: !0,
|
|
2083
2385
|
composed: !0,
|
|
2084
|
-
detail: { altura:
|
|
2386
|
+
detail: { altura: S }
|
|
2085
2387
|
})
|
|
2086
2388
|
);
|
|
2087
2389
|
}, v = () => {
|
|
2088
2390
|
var k;
|
|
2089
|
-
s = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup",
|
|
2090
|
-
},
|
|
2391
|
+
s = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", y), (k = e.resizerElement) == null || k.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
|
|
2392
|
+
}, y = (k) => {
|
|
2091
2393
|
if (!s) return;
|
|
2092
2394
|
s = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
|
|
2093
2395
|
try {
|
|
2094
2396
|
e.resizerElement.hasPointerCapture(k.pointerId) && e.resizerElement.releasePointerCapture(k.pointerId);
|
|
2095
2397
|
} catch {
|
|
2096
2398
|
}
|
|
2097
|
-
window.removeEventListener("pointermove", g), window.removeEventListener("pointerup",
|
|
2098
|
-
const
|
|
2099
|
-
e.onAlturaAlterada && e.onAlturaAlterada(
|
|
2399
|
+
window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", y);
|
|
2400
|
+
const M = e.hostElement.getBoundingClientRect().height, S = Math.round(M);
|
|
2401
|
+
e.onAlturaAlterada && e.onAlturaAlterada(S), e.hostElement.dispatchEvent(
|
|
2100
2402
|
new CustomEvent("ui-redimensionar-altura", {
|
|
2101
2403
|
bubbles: !0,
|
|
2102
2404
|
composed: !0,
|
|
2103
|
-
detail: { altura:
|
|
2405
|
+
detail: { altura: S }
|
|
2104
2406
|
})
|
|
2105
2407
|
);
|
|
2106
2408
|
};
|
|
2107
|
-
n = v, window.addEventListener("pointermove", g), window.addEventListener("pointerup",
|
|
2409
|
+
n = v, window.addEventListener("pointermove", g), window.addEventListener("pointerup", y), window.addEventListener("pointercancel", y);
|
|
2108
2410
|
}, m = (f) => {
|
|
2109
2411
|
f.preventDefault(), f.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
|
|
2110
2412
|
};
|
|
2111
|
-
e.listeners.add(e.resizerElement, "pointerdown",
|
|
2413
|
+
e.listeners.add(e.resizerElement, "pointerdown", d), e.listeners.add(e.resizerElement, "dblclick", m);
|
|
2112
2414
|
}
|
|
2113
2415
|
function c() {
|
|
2114
2416
|
n == null || n(), e.listeners.cleanup();
|
|
@@ -2119,19 +2421,21 @@ function Sr(e) {
|
|
|
2119
2421
|
destruir: c
|
|
2120
2422
|
};
|
|
2121
2423
|
}
|
|
2122
|
-
const
|
|
2424
|
+
const N = class N extends wa {
|
|
2123
2425
|
constructor() {
|
|
2124
2426
|
super();
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2427
|
+
A(this, "shadow");
|
|
2428
|
+
A(this, "listeners", new Aa());
|
|
2429
|
+
A(this, "dragDropManager");
|
|
2430
|
+
A(this, "resizerController");
|
|
2431
|
+
A(this, "alturaCustomizada", null);
|
|
2432
|
+
A(this, "conectado", !1);
|
|
2433
|
+
A(this, "profundidadeLote", 0);
|
|
2434
|
+
A(this, "renderPendente", !1);
|
|
2435
|
+
/** Mudança de feições à espera do `render()` (consumida nele): permite atualizar só as linhas afetadas. */
|
|
2436
|
+
A(this, "mudancaFeicoes", null);
|
|
2133
2437
|
/** @internal */
|
|
2134
|
-
|
|
2438
|
+
A(this, "lembranca", new jr(() => ({
|
|
2135
2439
|
persistir: this.persistir,
|
|
2136
2440
|
conectado: this.conectado,
|
|
2137
2441
|
storageKey: this.storageKey,
|
|
@@ -2145,21 +2449,21 @@ const H = class H extends pa {
|
|
|
2145
2449
|
altura: this.alturaCustomizada
|
|
2146
2450
|
})));
|
|
2147
2451
|
// Estado interno
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2452
|
+
A(this, "camadas", []);
|
|
2453
|
+
A(this, "feicoes", []);
|
|
2454
|
+
A(this, "mapasBase", [...Re]);
|
|
2455
|
+
A(this, "expandedLayers", /* @__PURE__ */ new Set());
|
|
2456
|
+
A(this, "expandedFeatureLimits", /* @__PURE__ */ new Map());
|
|
2457
|
+
A(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
|
|
2458
|
+
A(this, "lastClickedFeatureId", null);
|
|
2459
|
+
A(this, "activeSettingsLayerId", null);
|
|
2460
|
+
A(this, "editingLayerId", null);
|
|
2461
|
+
A(this, "editingFeatureId", null);
|
|
2462
|
+
A(this, "searchQuery", "");
|
|
2463
|
+
A(this, "corpoElement");
|
|
2464
|
+
A(this, "btnExpandirFlutuante");
|
|
2161
2465
|
this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
|
|
2162
|
-
<style>${
|
|
2466
|
+
<style>${er}</style>
|
|
2163
2467
|
<div class="ui-camadas-container" id="panel-container" part="base" role="region" aria-label="Painel de Camadas">
|
|
2164
2468
|
<div class="ui-camadas-corpo" id="painel-corpo" part="corpo"></div>
|
|
2165
2469
|
<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">
|
|
@@ -2167,24 +2471,24 @@ const H = class H extends pa {
|
|
|
2167
2471
|
</div>
|
|
2168
2472
|
</div>
|
|
2169
2473
|
<button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" part="botao-expandir" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
|
|
2170
|
-
${
|
|
2474
|
+
${h.camadas}
|
|
2171
2475
|
</button>
|
|
2172
|
-
`, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new
|
|
2476
|
+
`, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new _a(this, this.shadow);
|
|
2173
2477
|
const a = this.shadow.getElementById("resizer-altura");
|
|
2174
|
-
this.resizerController =
|
|
2478
|
+
this.resizerController = Qr({
|
|
2175
2479
|
hostElement: this,
|
|
2176
2480
|
resizerElement: a,
|
|
2177
2481
|
listeners: this.listeners,
|
|
2178
2482
|
getMinAltura: () => {
|
|
2179
|
-
const
|
|
2180
|
-
return
|
|
2483
|
+
const t = this.getAttribute("min-altura");
|
|
2484
|
+
return t && parseFloat(t) || 140;
|
|
2181
2485
|
},
|
|
2182
2486
|
getMaxAltura: () => {
|
|
2183
|
-
const
|
|
2184
|
-
return
|
|
2487
|
+
const t = this.getAttribute("max-altura");
|
|
2488
|
+
return t && parseFloat(t) || 1600;
|
|
2185
2489
|
},
|
|
2186
|
-
onAlturaAlterada: (
|
|
2187
|
-
this.alturaCustomizada =
|
|
2490
|
+
onAlturaAlterada: (t) => {
|
|
2491
|
+
this.alturaCustomizada = t, this.salvarLembrancaEstado();
|
|
2188
2492
|
}
|
|
2189
2493
|
});
|
|
2190
2494
|
}
|
|
@@ -2216,17 +2520,17 @@ const H = class H extends pa {
|
|
|
2216
2520
|
const a = be(this.obterChaveStorageAtual());
|
|
2217
2521
|
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));
|
|
2218
2522
|
}
|
|
2219
|
-
this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (
|
|
2523
|
+
this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (N.instanciasChavePadrao.size > 0 && console.warn(
|
|
2220
2524
|
"[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."
|
|
2221
|
-
),
|
|
2525
|
+
), N.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), Pr(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
|
|
2222
2526
|
}
|
|
2223
2527
|
disconnectedCallback() {
|
|
2224
|
-
var a,
|
|
2225
|
-
this.conectado = !1,
|
|
2528
|
+
var a, t;
|
|
2529
|
+
this.conectado = !1, N.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (t = this.dragDropManager) == null || t.destruir(), dr(this), this.listeners.cleanup();
|
|
2226
2530
|
}
|
|
2227
|
-
attributeChangedCallback(a,
|
|
2531
|
+
attributeChangedCallback(a, t, i) {
|
|
2228
2532
|
var o, n;
|
|
2229
|
-
|
|
2533
|
+
t !== i && (a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "densidade" ? this.salvarLembrancaEstado() : a === "mapa-base-ativo" ? i && this.marcarMapaBaseAtivoNoDOM(i) : 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(i, !1) : (a === "min-altura" || a === "max-altura") && this.alturaCustomizada !== null && ((n = this.resizerController) == null || n.definirAltura(this.alturaCustomizada, !1)));
|
|
2230
2534
|
}
|
|
2231
2535
|
// --- Getters e Setters de Propriedades Reativas ---
|
|
2232
2536
|
get titulo() {
|
|
@@ -2248,16 +2552,16 @@ const H = class H extends pa {
|
|
|
2248
2552
|
set mapaBaseAtivo(a) {
|
|
2249
2553
|
this.setAttribute("mapa-base-ativo", a);
|
|
2250
2554
|
}
|
|
2251
|
-
selecionarMapaBase(a,
|
|
2252
|
-
!a || this.mapaBaseAtivo === a || (this.mapaBaseAtivo = a, this.marcarMapaBaseAtivoNoDOM(a), this.salvarLembrancaEstado(),
|
|
2555
|
+
selecionarMapaBase(a, t = !1) {
|
|
2556
|
+
!a || this.mapaBaseAtivo === a || (this.mapaBaseAtivo = a, this.marcarMapaBaseAtivoNoDOM(a), this.salvarLembrancaEstado(), t && this.dispararEvento("ui-mapa-base-alterado", { mapaBaseId: a }));
|
|
2253
2557
|
}
|
|
2254
2558
|
marcarMapaBaseAtivoNoDOM(a) {
|
|
2255
|
-
this.shadow.querySelectorAll("[data-basemap-id]").forEach((
|
|
2256
|
-
const o =
|
|
2257
|
-
|
|
2559
|
+
this.shadow.querySelectorAll("[data-basemap-id]").forEach((i) => {
|
|
2560
|
+
const o = i.getAttribute("data-basemap-id") === a;
|
|
2561
|
+
i.classList.toggle("active", o), i.setAttribute("aria-pressed", String(o));
|
|
2258
2562
|
});
|
|
2259
|
-
const
|
|
2260
|
-
|
|
2563
|
+
const t = this.shadow.querySelector("[data-basemap-atual]");
|
|
2564
|
+
t && (t.textContent = Oe(this.mapasBase, a));
|
|
2261
2565
|
}
|
|
2262
2566
|
/** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
|
|
2263
2567
|
get mapasBaseRecolhido() {
|
|
@@ -2342,11 +2646,11 @@ const H = class H extends pa {
|
|
|
2342
2646
|
set altura(a) {
|
|
2343
2647
|
a != null ? (this.setAttribute("altura", String(a)), this.definirAltura(a)) : (this.removeAttribute("altura"), this.definirAltura(null));
|
|
2344
2648
|
}
|
|
2345
|
-
definirAltura(a,
|
|
2649
|
+
definirAltura(a, t = !0) {
|
|
2346
2650
|
var o;
|
|
2347
2651
|
(o = this.resizerController) == null || o.definirAltura(a, !1);
|
|
2348
|
-
const
|
|
2349
|
-
this.alturaCustomizada = isNaN(
|
|
2652
|
+
const i = a !== null ? parseFloat(String(a)) : null;
|
|
2653
|
+
this.alturaCustomizada = isNaN(i) ? null : i, t && this.salvarLembrancaEstado();
|
|
2350
2654
|
}
|
|
2351
2655
|
// --- Gerenciamento de Persistência / Lembrança ---
|
|
2352
2656
|
obterChaveStorageAtual() {
|
|
@@ -2390,56 +2694,56 @@ const H = class H extends pa {
|
|
|
2390
2694
|
set basemaps(a) {
|
|
2391
2695
|
this.definirMapasBase(a);
|
|
2392
2696
|
}
|
|
2393
|
-
definirCamadas(a,
|
|
2394
|
-
|
|
2697
|
+
definirCamadas(a, t) {
|
|
2698
|
+
Nr(this, a, t);
|
|
2395
2699
|
}
|
|
2396
2700
|
definirFeicoes(a) {
|
|
2397
|
-
|
|
2701
|
+
Gr(this, a);
|
|
2398
2702
|
}
|
|
2399
2703
|
definirMapasBase(a) {
|
|
2400
2704
|
this.mapasBase = Array.isArray(a) ? [...a] : [], this.solicitarRenderizacao();
|
|
2401
2705
|
}
|
|
2402
|
-
definirCamadaAtiva(a,
|
|
2403
|
-
!a || this.camadaAtivaId === a || (this.camadaAtivaId = a, this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado(),
|
|
2706
|
+
definirCamadaAtiva(a, t = !1) {
|
|
2707
|
+
!a || this.camadaAtivaId === a || (this.camadaAtivaId = a, this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado(), t && this.dispararEvento("ui-camada-selecionada", {
|
|
2404
2708
|
camadaId: a,
|
|
2405
|
-
camada: this.camadas.find((
|
|
2709
|
+
camada: this.camadas.find((i) => i.id === a)
|
|
2406
2710
|
}));
|
|
2407
2711
|
}
|
|
2408
2712
|
obterCamada(a) {
|
|
2409
|
-
return this.camadas.find((
|
|
2713
|
+
return this.camadas.find((t) => t.id === a);
|
|
2410
2714
|
}
|
|
2411
2715
|
obterCamadaAtiva() {
|
|
2412
2716
|
return this.camadas.find((a) => a.id === this.camadaAtivaId);
|
|
2413
2717
|
}
|
|
2414
2718
|
obterFeicao(a) {
|
|
2415
|
-
return this.feicoes.find((
|
|
2719
|
+
return this.feicoes.find((t) => t.id === a);
|
|
2416
2720
|
}
|
|
2417
2721
|
obterFeicoesSelecionadas() {
|
|
2418
2722
|
return this.feicoes.filter((a) => this.selectedFeatureIds.has(a.id));
|
|
2419
2723
|
}
|
|
2420
2724
|
adicionarCamada(a) {
|
|
2421
|
-
|
|
2725
|
+
Vr(this, a);
|
|
2422
2726
|
}
|
|
2423
2727
|
removerCamada(a) {
|
|
2424
|
-
|
|
2728
|
+
Ur(this, a);
|
|
2425
2729
|
}
|
|
2426
2730
|
adicionarFeicao(a) {
|
|
2427
|
-
|
|
2731
|
+
_r(this, a);
|
|
2428
2732
|
}
|
|
2429
2733
|
atualizarFeicao(a) {
|
|
2430
|
-
|
|
2734
|
+
Yr(this, a);
|
|
2431
2735
|
}
|
|
2432
2736
|
removerFeicao(a) {
|
|
2433
|
-
|
|
2737
|
+
Kr(this, a);
|
|
2434
2738
|
}
|
|
2435
|
-
selecionarFeicao(a,
|
|
2436
|
-
|
|
2739
|
+
selecionarFeicao(a, t = !1, i = !1, o = !1) {
|
|
2740
|
+
Dr(this, a, t, i, o);
|
|
2437
2741
|
}
|
|
2438
|
-
selecionarFeicoes(a,
|
|
2439
|
-
|
|
2742
|
+
selecionarFeicoes(a, t = !1) {
|
|
2743
|
+
Tr(this, a, t);
|
|
2440
2744
|
}
|
|
2441
2745
|
limparSelecao(a = !1) {
|
|
2442
|
-
|
|
2746
|
+
Rr(this, a);
|
|
2443
2747
|
}
|
|
2444
2748
|
expandirTodas() {
|
|
2445
2749
|
this.expandedLayers = new Set(this.camadas.map((a) => a.id)), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
|
|
@@ -2452,13 +2756,13 @@ const H = class H extends pa {
|
|
|
2452
2756
|
}
|
|
2453
2757
|
incrementarLimiteFeicoes(a) {
|
|
2454
2758
|
if (!a) return;
|
|
2455
|
-
const
|
|
2456
|
-
this.expandedFeatureLimits.set(a,
|
|
2759
|
+
const t = this.expandedFeatureLimits.get(a) ?? 80;
|
|
2760
|
+
this.expandedFeatureLimits.set(a, t + 80), this.solicitarRenderizacao();
|
|
2457
2761
|
}
|
|
2458
2762
|
alternarVisibilidadeTodas(a = !1) {
|
|
2459
|
-
const
|
|
2763
|
+
const i = !this.camadas.some((o) => o.visible !== !1);
|
|
2460
2764
|
this.camadas.forEach((o) => {
|
|
2461
|
-
o.visible =
|
|
2765
|
+
o.visible = i, a && this.dispararEvento("ui-camada-visibilidade", { camadaId: o.id, visivel: i });
|
|
2462
2766
|
}), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
|
|
2463
2767
|
}
|
|
2464
2768
|
colapsar(a = !1) {
|
|
@@ -2470,8 +2774,8 @@ const H = class H extends pa {
|
|
|
2470
2774
|
alternarColapso(a = !1) {
|
|
2471
2775
|
this.definirColapso(!this.colapsado, a);
|
|
2472
2776
|
}
|
|
2473
|
-
definirColapso(a,
|
|
2474
|
-
this.colapsado !== a && (this.colapsado = a,
|
|
2777
|
+
definirColapso(a, t) {
|
|
2778
|
+
this.colapsado !== a && (this.colapsado = a, t && this.dispararEvento("ui-colapso-alterado", { colapsado: a }));
|
|
2475
2779
|
}
|
|
2476
2780
|
// --- Renderização e Ciclo de Vida ---
|
|
2477
2781
|
solicitarRenderizacao() {
|
|
@@ -2481,9 +2785,22 @@ const H = class H extends pa {
|
|
|
2481
2785
|
}
|
|
2482
2786
|
this.render();
|
|
2483
2787
|
}
|
|
2788
|
+
/**
|
|
2789
|
+
* Caminho das mutações de feição: o DOM fica atualizado na volta da chamada, mas só as linhas afetadas são
|
|
2790
|
+
* refeitas quando possível. Em `emLote` vale o adiamento de sempre (uma renderização completa no fim).
|
|
2791
|
+
* Qualquer caso que o caminho incremental não garanta (busca, edição inline, drawer, camada fora da árvore…)
|
|
2792
|
+
* cai no render completo.
|
|
2793
|
+
*/
|
|
2794
|
+
solicitarAtualizacaoFeicoes(a) {
|
|
2795
|
+
if (this.profundidadeLote > 0) {
|
|
2796
|
+
this.renderPendente = !0;
|
|
2797
|
+
return;
|
|
2798
|
+
}
|
|
2799
|
+
this.mudancaFeicoes = a, this.render();
|
|
2800
|
+
}
|
|
2484
2801
|
/**
|
|
2485
2802
|
* Agrupa várias mutações (`adicionarFeicao` em laço, por exemplo) em uma só renderização, ao fim de `fn`.
|
|
2486
|
-
*
|
|
2803
|
+
* Mesmo com a atualização incremental, é a forma ideal para cargas grandes: o DOM é refeito uma só vez.
|
|
2487
2804
|
*/
|
|
2488
2805
|
emLote(a) {
|
|
2489
2806
|
this.profundidadeLote++;
|
|
@@ -2493,17 +2810,18 @@ const H = class H extends pa {
|
|
|
2493
2810
|
this.profundidadeLote--, this.profundidadeLote === 0 && this.renderPendente && (this.renderPendente = !1, this.render());
|
|
2494
2811
|
}
|
|
2495
2812
|
}
|
|
2496
|
-
dispararEvento(a,
|
|
2813
|
+
dispararEvento(a, t) {
|
|
2497
2814
|
this.dispatchEvent(
|
|
2498
2815
|
new CustomEvent(a, {
|
|
2499
|
-
detail:
|
|
2816
|
+
detail: t,
|
|
2500
2817
|
bubbles: !0,
|
|
2501
2818
|
composed: !0
|
|
2502
2819
|
})
|
|
2503
2820
|
);
|
|
2504
2821
|
}
|
|
2505
2822
|
render() {
|
|
2506
|
-
|
|
2823
|
+
const a = this.mudancaFeicoes;
|
|
2824
|
+
this.mudancaFeicoes = null, this.corpoElement && (a && Sr(this, this.shadow, this.dragDropManager, a) || Lr(this, this.shadow, this.corpoElement, this.dragDropManager));
|
|
2507
2825
|
}
|
|
2508
2826
|
// --- Conexão de Eventos ---
|
|
2509
2827
|
conectarEventosGerais() {
|
|
@@ -2511,27 +2829,27 @@ const H = class H extends pa {
|
|
|
2511
2829
|
}
|
|
2512
2830
|
// --- Sincronização de DOM (delegada) ---
|
|
2513
2831
|
sincronizarCamadaAtivaDOM() {
|
|
2514
|
-
|
|
2832
|
+
ar(this, this.shadow);
|
|
2515
2833
|
}
|
|
2516
2834
|
sincronizarSelecaoDOM() {
|
|
2517
|
-
|
|
2835
|
+
rr(this, this.shadow);
|
|
2518
2836
|
}
|
|
2519
2837
|
// --- Auxiliares Internos ---
|
|
2520
2838
|
notificarMudancaSelecao() {
|
|
2521
|
-
|
|
2839
|
+
Or(this);
|
|
2522
2840
|
}
|
|
2523
2841
|
};
|
|
2524
2842
|
/** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
|
|
2525
|
-
|
|
2526
|
-
let
|
|
2527
|
-
class
|
|
2843
|
+
A(N, "instanciasChavePadrao", /* @__PURE__ */ new Set());
|
|
2844
|
+
let K = N;
|
|
2845
|
+
class Xr extends K {
|
|
2528
2846
|
}
|
|
2529
|
-
class
|
|
2847
|
+
class Wr extends K {
|
|
2530
2848
|
}
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
function
|
|
2849
|
+
ye("ui-camadas", K);
|
|
2850
|
+
ye("ui-painel-camadas", Xr);
|
|
2851
|
+
ye("ui-layer-panel", Wr);
|
|
2852
|
+
function nt(e) {
|
|
2535
2853
|
var r;
|
|
2536
2854
|
return {
|
|
2537
2855
|
id: e.id,
|
|
@@ -2548,7 +2866,7 @@ function jr(e) {
|
|
|
2548
2866
|
dados: e.dados
|
|
2549
2867
|
};
|
|
2550
2868
|
}
|
|
2551
|
-
function
|
|
2869
|
+
function st(e, r = "levantamento", a = "feicoes") {
|
|
2552
2870
|
return {
|
|
2553
2871
|
id: e.id,
|
|
2554
2872
|
nome: e.name,
|
|
@@ -2567,17 +2885,17 @@ function Nr(e, r = "levantamento", a = "feicoes") {
|
|
|
2567
2885
|
dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
|
|
2568
2886
|
};
|
|
2569
2887
|
}
|
|
2570
|
-
function
|
|
2888
|
+
function lt(e, r = "") {
|
|
2571
2889
|
var o, n, l, c;
|
|
2572
|
-
const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon",
|
|
2890
|
+
const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", t = ((l = e.geometria) == null ? void 0 : l.coordenadas) || ((c = e.geometria) == null ? void 0 : c.coordinates) || e.coordinates, i = e.cor || e.color;
|
|
2573
2891
|
return {
|
|
2574
2892
|
id: String(e.id),
|
|
2575
2893
|
name: e.nome || e.name || `Feição ${e.id}`,
|
|
2576
2894
|
layerId: e.layerId || e.camadaId || r,
|
|
2577
2895
|
type: a,
|
|
2578
2896
|
geometryType: a,
|
|
2579
|
-
coordinates:
|
|
2580
|
-
color:
|
|
2897
|
+
coordinates: t,
|
|
2898
|
+
color: i,
|
|
2581
2899
|
visible: e.visivel !== void 0 ? e.visivel : e.visible !== !1,
|
|
2582
2900
|
locked: e.bloqueada !== void 0 ? e.bloqueada : e.locked === !0,
|
|
2583
2901
|
status: e.status || "oficial",
|
|
@@ -2586,43 +2904,43 @@ function Hr(e, r = "") {
|
|
|
2586
2904
|
};
|
|
2587
2905
|
}
|
|
2588
2906
|
export {
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2907
|
+
_a as CamadasDragDropManager,
|
|
2908
|
+
h as ICONES,
|
|
2909
|
+
we as LIMITE_FEICOES_POR_CAMADA,
|
|
2910
|
+
Re as MAPAS_BASE_PADRAO,
|
|
2911
|
+
K as UICamadas,
|
|
2912
|
+
Wr as UILayerPanel,
|
|
2913
|
+
ut as UIMapaBase,
|
|
2914
|
+
Xr as UIPainelCamadas,
|
|
2915
|
+
pt as UISeletorMapaBase,
|
|
2598
2916
|
ue as calcularAreaAnelSimples,
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2917
|
+
De as calcularAreaPoligono,
|
|
2918
|
+
Pe as calcularComprimentoLinha,
|
|
2919
|
+
Ia as calcularDistanciaPontos,
|
|
2920
|
+
Ta as calcularSelecaoFeicao,
|
|
2603
2921
|
be as carregarEstadoPersistido,
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2922
|
+
ne as construirHierarquiaCamadas,
|
|
2923
|
+
st as converterCamadaItemParaCanvasLayer,
|
|
2924
|
+
nt as converterCanvasLayerParaCamadaItem,
|
|
2925
|
+
lt as converterFeicaoParaItem,
|
|
2926
|
+
z as escapeHtml,
|
|
2927
|
+
Qe as filtrarCamadasPorBusca,
|
|
2928
|
+
te as filtrarFeicoesPorBusca,
|
|
2929
|
+
ot as formatarMetricaFeicoes,
|
|
2930
|
+
Fa as formatarOpcoesCamadasHierarquicas,
|
|
2931
|
+
Ka as gerarChaveStorage,
|
|
2932
|
+
Wa as limparEstadoPersistido,
|
|
2933
|
+
Za as montarEstadoPersistido,
|
|
2934
|
+
Oe as nomeDoMapaBase,
|
|
2935
|
+
Qa as normalizarEstadoPersistido,
|
|
2936
|
+
Xe as obterIdsVisiveisFeicoes,
|
|
2937
|
+
Ja as reidratarCamadasComOverrides,
|
|
2938
|
+
Ae as removerSelecoesInvalidas,
|
|
2939
|
+
Ga as renderizarArvoreCamadas,
|
|
2940
|
+
$a as renderizarGridMapasBase,
|
|
2941
|
+
za as renderizarRodapeAcoes,
|
|
2942
|
+
qa as renderizarThumbGeometria,
|
|
2943
|
+
je as rotuloRodape,
|
|
2944
|
+
Xa as salvarEstadoPersistido,
|
|
2945
|
+
We as snapshotCamada
|
|
2628
2946
|
};
|