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