@thibezer/ui-components-kit 2.15.0 → 2.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +1 -1
  3. package/dist/botao.cjs +1 -1
  4. package/dist/botao.js +1 -1
  5. package/dist/camadas.cjs +89 -89
  6. package/dist/camadas.js +1376 -1320
  7. package/dist/campo-texto.cjs +1 -1
  8. package/dist/campo-texto.js +1 -1
  9. package/dist/canvas.cjs +24 -24
  10. package/dist/canvas.js +757 -751
  11. package/dist/card.cjs +1 -1
  12. package/dist/card.js +1 -1
  13. package/dist/components/ui-avatar/ui-avatar.d.ts +7 -0
  14. package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +2 -0
  15. package/dist/components/ui-camadas/camadas-colecao.d.ts +3 -0
  16. package/dist/components/ui-camadas/camadas-drag-drop.d.ts +3 -1
  17. package/dist/components/ui-camadas/camadas-selecao-api.d.ts +1 -0
  18. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +7 -0
  19. package/dist/components/ui-mapa/ui-mapa.d.ts +1 -0
  20. package/dist/components/ui-seletor-mapa-base/ui-seletor-mapa-base.d.ts +6 -0
  21. package/dist/components/ui-skeleton/ui-skeleton.d.ts +9 -0
  22. package/dist/components/ui-stat/ui-stat.d.ts +12 -0
  23. package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +2 -1
  24. package/dist/components/ui-tabela-propriedades/propriedades-persistencia.d.ts +63 -0
  25. package/dist/components/ui-tabela-propriedades/propriedades-render-arvore.d.ts +1 -0
  26. package/dist/components/ui-tabela-propriedades/tipos.d.ts +16 -0
  27. package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +40 -1
  28. package/dist/core/degrade.d.ts +34 -0
  29. package/dist/core/index.d.ts +1 -0
  30. package/dist/core.cjs +1 -1
  31. package/dist/core.js +33 -24
  32. package/dist/cores.cjs +1 -1
  33. package/dist/cores.js +2 -2
  34. package/dist/custom-elements.json +6896 -5351
  35. package/dist/data.cjs +1 -1
  36. package/dist/data.js +89 -79
  37. package/dist/degrade-CIxvOTUv.cjs +1 -0
  38. package/dist/degrade-gDa5sW__.js +119 -0
  39. package/dist/feedback.cjs +1 -1
  40. package/dist/feedback.js +2 -2
  41. package/dist/forms.cjs +1 -1
  42. package/dist/forms.js +2 -2
  43. package/dist/index.cjs +1 -1
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.js +215 -196
  46. package/dist/mapa.cjs +1 -1
  47. package/dist/mapa.js +1 -1
  48. package/dist/modal.cjs +1 -1
  49. package/dist/modal.js +1 -1
  50. package/dist/register.cjs +1 -1
  51. package/dist/register.js +12 -12
  52. package/dist/seletor-mapa-base.cjs +10 -10
  53. package/dist/seletor-mapa-base.js +34 -28
  54. package/dist/tabela.cjs +1 -1
  55. package/dist/tabela.js +83 -73
  56. package/dist/tipos-elementos.d.ts +33 -3
  57. package/dist/tipos-vue.d.ts +30 -3
  58. package/dist/tools.cjs +1 -1
  59. package/dist/tools.js +1 -1
  60. package/dist/ui-badge-1UU8vT-b.js +198 -0
  61. package/dist/ui-badge-CKKKPdt8.cjs +28 -0
  62. package/dist/ui-badge-DE58YSBY.cjs +28 -0
  63. package/dist/ui-badge-KgmI3jOD.js +201 -0
  64. package/dist/ui-botao-Dz8YvmiA.cjs +12 -0
  65. package/dist/ui-botao-bU_bf6SU.js +166 -0
  66. package/dist/ui-botao-xTbH5mpH.cjs +12 -0
  67. package/dist/ui-botao-zLkcMMyP.js +168 -0
  68. package/dist/ui-campo-texto-DVU_sWV1.cjs +16 -0
  69. package/dist/ui-campo-texto-Dliyt9qr.cjs +16 -0
  70. package/dist/ui-campo-texto-W5M0gNE4.js +377 -0
  71. package/dist/ui-campo-texto-btevggO3.js +379 -0
  72. package/dist/ui-card-BYyYxxY1.cjs +20 -0
  73. package/dist/ui-card-CojoGXaT.js +144 -0
  74. package/dist/ui-card-DFnRp9bl.js +146 -0
  75. package/dist/ui-card-DrWVJQKw.cjs +20 -0
  76. package/dist/ui-controle-cores-B1w_Yl69.cjs +32 -0
  77. package/dist/ui-controle-cores-BRjMvmMn.js +291 -0
  78. package/dist/ui-controle-cores-Bq_XUrIQ.cjs +32 -0
  79. package/dist/ui-controle-cores-BtA6yzu3.js +291 -0
  80. package/dist/ui-kit.css +1 -1
  81. package/dist/ui-linha-2kY7TNUJ.cjs +38 -0
  82. package/dist/ui-linha-DAz6DBcl.cjs +38 -0
  83. package/dist/ui-linha-DkxwMhD-.js +749 -0
  84. package/dist/ui-linha-KFF86FW5.js +752 -0
  85. package/dist/ui-modal-4nU-tXjO.cjs +18 -0
  86. package/dist/ui-modal-BrXzVZ65.js +216 -0
  87. package/dist/ui-modal-BwB9fksp.js +214 -0
  88. package/dist/ui-modal-lARKzEVZ.cjs +18 -0
  89. package/dist/ui-paleta-ferramentas-Bu6JaT0s.js +1245 -0
  90. package/dist/ui-paleta-ferramentas-D3Jhwt26.cjs +21 -0
  91. package/dist/ui-seletor-cor-CMuuW-Ym.cjs +83 -0
  92. package/dist/ui-seletor-cor-DFIQ1sin.js +405 -0
  93. package/dist/ui-skeleton-BLEV6h3k.js +653 -0
  94. package/dist/ui-skeleton-B_XTaGrX.cjs +52 -0
  95. package/dist/ui-skeleton-DEHwpDqa.js +648 -0
  96. package/dist/ui-skeleton-sIphhOSx.cjs +52 -0
  97. package/dist/ui-switch-BXIDwC-Y.cjs +66 -0
  98. package/dist/ui-switch-Ctxk-jKS.js +1212 -0
  99. package/dist/ui-switch-DAIgOhqr.cjs +66 -0
  100. package/dist/ui-switch-_F8yubdX.js +1203 -0
  101. package/dist/ui-tabela-propriedades-2bq2nX-b.js +3202 -0
  102. package/dist/ui-tabela-propriedades-CJyo568n.js +3517 -0
  103. package/dist/ui-tabela-propriedades-CnfW9DZG.cjs +142 -0
  104. package/dist/ui-tabela-propriedades-Wa34hfIr.cjs +142 -0
  105. package/package.json +187 -187
package/dist/camadas.js CHANGED
@@ -1,14 +1,15 @@
1
- var ya = Object.defineProperty;
2
- var xa = (e, r, a) => r in e ? ya(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a;
3
- var A = (e, r, a) => xa(e, typeof r != "symbol" ? r + "" : r, a);
1
+ var Ia = Object.defineProperty;
2
+ var ka = (e, t, a) => t in e ? Ia(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;
3
+ var A = (e, t, a) => ka(e, typeof t != "symbol" ? t + "" : t, a);
4
4
  /* empty css */
5
- import { d as ye, S as wa } from "./ssr-safe-5cWfJP-s.js";
6
- import { L as Aa } from "./listener-bag-DQgv7OON.js";
7
- import { a as qe } from "./parts-CaoQiCfI.js";
8
- import { a as Ea } from "./ui-seletor-cor-FYtRccnK.js";
9
- import { f as ka } from "./alvo-digitavel-CzCvNVQ3.js";
10
- import { UIMapaBase as ut, UISeletorMapaBase as pt } from "./seletor-mapa-base.js";
11
- const h = {
5
+ import { d as xe, S as La } from "./ssr-safe-5cWfJP-s.js";
6
+ import { A as Ca, a as Se, e as Sa } from "./degrade-gDa5sW__.js";
7
+ import { L as $a } from "./listener-bag-DQgv7OON.js";
8
+ import { a as Te } from "./parts-CaoQiCfI.js";
9
+ import { a as Fa } from "./ui-seletor-cor-DFIQ1sin.js";
10
+ import { f as Ma } from "./alvo-digitavel-CzCvNVQ3.js";
11
+ import { UIMapaBase as mr, UISeletorMapaBase as gr } from "./seletor-mapa-base.js";
12
+ const y = {
12
13
  camadas: `<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
13
14
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
14
15
  <polyline points="2 17 12 22 22 17"></polyline>
@@ -106,148 +107,148 @@ const h = {
106
107
  <line x1="9" y1="3" x2="9" y2="21"></line>
107
108
  <line x1="15" y1="3" x2="15" y2="21"></line>
108
109
  </svg>`
109
- }, V = 6378137;
110
- function Ia(e, r) {
111
- if (!Array.isArray(e) || !Array.isArray(r) || e.length < 2 || r.length < 2 || !Number.isFinite(e[0]) || !Number.isFinite(e[1]) || !Number.isFinite(r[0]) || !Number.isFinite(r[1]))
110
+ }, U = 6378137;
111
+ function za(e, t) {
112
+ if (!Array.isArray(e) || !Array.isArray(t) || e.length < 2 || t.length < 2 || !Number.isFinite(e[0]) || !Number.isFinite(e[1]) || !Number.isFinite(t[0]) || !Number.isFinite(t[1]))
112
113
  return 0;
113
- const a = e[0] * Math.PI / 180, t = e[1] * Math.PI / 180, i = r[0] * Math.PI / 180, o = r[1] * Math.PI / 180, n = i - a, l = o - t, c = Math.min(
114
+ const a = e[0] * Math.PI / 180, r = e[1] * Math.PI / 180, i = t[0] * Math.PI / 180, o = t[1] * Math.PI / 180, n = i - a, s = o - r, c = Math.min(
114
115
  1,
115
116
  Math.max(
116
117
  0,
117
- Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(i) * Math.sin(l / 2) * Math.sin(l / 2)
118
+ Math.sin(n / 2) * Math.sin(n / 2) + Math.cos(a) * Math.cos(i) * Math.sin(s / 2) * Math.sin(s / 2)
118
119
  )
119
- ), s = V * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
120
- return Number.isFinite(s) ? s : 0;
120
+ ), l = U * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
121
+ return Number.isFinite(l) ? l : 0;
121
122
  }
122
- function Pe(e) {
123
+ function Re(e) {
123
124
  if (!Array.isArray(e) || e.length < 2) return 0;
124
125
  if (Array.isArray(e[0]) && Array.isArray(e[0][0]))
125
- return e.reduce((a, t) => a + Pe(t), 0);
126
- let r = 0;
126
+ return e.reduce((a, r) => a + Re(r), 0);
127
+ let t = 0;
127
128
  for (let a = 0; a < e.length - 1; a++) {
128
- const t = e[a], i = e[a + 1];
129
- Array.isArray(t) && Array.isArray(i) && t.length >= 2 && i.length >= 2 && (r += Ia([t[0], t[1]], [i[0], i[1]]));
129
+ const r = e[a], i = e[a + 1];
130
+ Array.isArray(r) && Array.isArray(i) && r.length >= 2 && i.length >= 2 && (t += za([r[0], r[1]], [i[0], i[1]]));
130
131
  }
131
- return r;
132
+ return t;
132
133
  }
133
- function ue(e) {
134
+ function pe(e) {
134
135
  if (!Array.isArray(e)) return 0;
135
- const r = [];
136
- for (let u = 0; u < e.length; u++) {
137
- const d = e[u];
138
- Array.isArray(d) && d.length >= 2 && Number.isFinite(d[0]) && Number.isFinite(d[1]) && r.push([d[0], d[1]]);
136
+ const t = [];
137
+ for (let d = 0; d < e.length; d++) {
138
+ const u = e[d];
139
+ Array.isArray(u) && u.length >= 2 && Number.isFinite(u[0]) && Number.isFinite(u[1]) && t.push([u[0], u[1]]);
139
140
  }
140
- r.length > 3 && r[0][0] === r[r.length - 1][0] && r[0][1] === r[r.length - 1][1] && r.pop();
141
- const a = r.length;
141
+ t.length > 3 && t[0][0] === t[t.length - 1][0] && t[0][1] === t[t.length - 1][1] && t.pop();
142
+ const a = t.length;
142
143
  if (a < 3) return 0;
143
- let t = 0;
144
- for (let u = 0; u < a; u++)
145
- t += r[u][0];
146
- const i = t / a * Math.PI / 180, o = Math.cos(i), n = Math.PI / 180, l = r[0][0], c = r[0][1];
147
- let s = 0;
148
- for (let u = 0; u < a; u++) {
149
- const d = r[u], m = r[(u + 1) % a], f = (d[1] - c) * n * V * o, g = (d[0] - l) * n * V, v = (m[1] - c) * n * V * o, y = (m[0] - l) * n * V;
150
- s += f * y - v * g;
151
- }
152
- const p = Math.abs(s) / 2;
144
+ let r = 0;
145
+ for (let d = 0; d < a; d++)
146
+ r += t[d][0];
147
+ const i = r / a * Math.PI / 180, o = Math.cos(i), n = Math.PI / 180, s = t[0][0], c = t[0][1];
148
+ let l = 0;
149
+ for (let d = 0; d < a; d++) {
150
+ const u = t[d], f = t[(d + 1) % a], m = (u[1] - c) * n * U * o, g = (u[0] - s) * n * U, v = (f[1] - c) * n * U * o, b = (f[0] - s) * n * U;
151
+ l += m * b - v * g;
152
+ }
153
+ const p = Math.abs(l) / 2;
153
154
  return Number.isFinite(p) ? p : 0;
154
155
  }
155
- function De(e) {
156
+ function Oe(e) {
156
157
  if (!Array.isArray(e) || e.length === 0) return 0;
157
158
  if (Array.isArray(e[0]) && typeof e[0][0] == "number")
158
- return ue(e);
159
+ return pe(e);
159
160
  if (Array.isArray(e[0]) && Array.isArray(e[0][0])) {
160
161
  if (Array.isArray(e[0][0][0]))
161
- return e.reduce((t, i) => t + De(i), 0);
162
- const r = ue(e[0]);
162
+ return e.reduce((r, i) => r + Oe(i), 0);
163
+ const t = pe(e[0]);
163
164
  let a = 0;
164
- for (let t = 1; t < e.length; t++)
165
- a += ue(e[t]);
166
- return Math.max(0, r - a);
165
+ for (let r = 1; r < e.length; r++)
166
+ a += pe(e[r]);
167
+ return Math.max(0, t - a);
167
168
  }
168
169
  return 0;
169
170
  }
170
- function ot(e) {
171
+ function lr(e) {
171
172
  if (!e || e.length === 0) return "";
172
- const r = e.filter(
173
- (t) => t.type === "Polygon" || t.type === "MultiPolygon" || t.geometryType === "Polygon"
173
+ const t = e.filter(
174
+ (r) => r.type === "Polygon" || r.type === "MultiPolygon" || r.geometryType === "Polygon"
174
175
  );
175
- if (r.length > 0) {
176
- const t = r.reduce(
177
- (i, o) => i + (De(o.coordinates) || 0),
176
+ if (t.length > 0) {
177
+ const r = t.reduce(
178
+ (i, o) => i + (Oe(o.coordinates) || 0),
178
179
  0
179
180
  );
180
- return t >= 1e4 ? `${(t / 1e4).toLocaleString("pt-BR", {
181
+ return r >= 1e4 ? `${(r / 1e4).toLocaleString("pt-BR", {
181
182
  minimumFractionDigits: 1,
182
183
  maximumFractionDigits: 2
183
- })} ha` : `${Math.round(t).toLocaleString("pt-BR")} m²`;
184
+ })} ha` : `${Math.round(r).toLocaleString("pt-BR")} m²`;
184
185
  }
185
186
  const a = e.filter(
186
- (t) => t.type === "LineString" || t.type === "MultiLineString" || t.geometryType === "LineString"
187
+ (r) => r.type === "LineString" || r.type === "MultiLineString" || r.geometryType === "LineString"
187
188
  );
188
189
  if (a.length > 0) {
189
- const t = a.reduce(
190
- (i, o) => i + (Pe(o.coordinates) || 0),
190
+ const r = a.reduce(
191
+ (i, o) => i + (Re(o.coordinates) || 0),
191
192
  0
192
193
  );
193
- return t >= 1e3 ? `${(t / 1e3).toLocaleString("pt-BR", {
194
+ return r >= 1e3 ? `${(r / 1e3).toLocaleString("pt-BR", {
194
195
  minimumFractionDigits: 1,
195
196
  maximumFractionDigits: 2
196
- })} km` : `${Math.round(t).toLocaleString("pt-BR")} m`;
197
+ })} km` : `${Math.round(r).toLocaleString("pt-BR")} m`;
197
198
  }
198
199
  return "";
199
200
  }
200
201
  function z(e) {
201
202
  return e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
202
203
  }
203
- const Ca = /^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;
204
- function H(e, r = "#00E08A") {
205
- if (!e || typeof e != "string") return r;
204
+ const Ba = /^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;
205
+ function G(e, t = "#00E08A") {
206
+ if (!e || typeof e != "string") return t;
206
207
  const a = e.trim();
207
- return Ca.test(a) ? a : r;
208
+ return Ba.test(a) ? a : t;
208
209
  }
209
- function pe(e) {
210
+ function fe(e) {
210
211
  return Math.max(0, Math.min(255, Math.round(e))).toString(16).padStart(2, "0");
211
212
  }
212
- function La(e, r, a) {
213
- const t = r / 100, i = a / 100, o = (c) => (c + e / 30) % 12, n = t * Math.min(i, 1 - i), l = (c) => i - n * Math.max(-1, Math.min(o(c) - 3, Math.min(9 - o(c), 1)));
214
- return [l(0) * 255, l(8) * 255, l(4) * 255];
213
+ function qa(e, t, a) {
214
+ const r = t / 100, i = a / 100, o = (c) => (c + e / 30) % 12, n = r * Math.min(i, 1 - i), s = (c) => i - n * Math.max(-1, Math.min(o(c) - 3, Math.min(9 - o(c), 1)));
215
+ return [s(0) * 255, s(8) * 255, s(4) * 255];
215
216
  }
216
- function Sa(e, r = "#000000") {
217
- if (!e || typeof e != "string") return r;
218
- const a = e.trim().toLowerCase(), t = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
219
- if (t) {
220
- const o = t[1];
217
+ function Pa(e, t = "#000000") {
218
+ if (!e || typeof e != "string") return t;
219
+ const a = e.trim().toLowerCase(), r = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);
220
+ if (r) {
221
+ const o = r[1];
221
222
  return o.length <= 4 ? `#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}` : `#${o.slice(0, 6)}`;
222
223
  }
223
224
  const i = /^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);
224
225
  if (i) {
225
226
  const o = i[2].split(/[\s,/]+/).filter(Boolean).map((n) => parseFloat(n));
226
227
  if (o.length >= 3 && o.slice(0, 3).every((n) => !isNaN(n))) {
227
- const [n, l, c] = o, [s, p, u] = i[1] === "rgb" ? [n, l, c] : La(n, l, c);
228
- return `#${pe(s)}${pe(p)}${pe(u)}`;
228
+ const [n, s, c] = o, [l, p, d] = i[1] === "rgb" ? [n, s, c] : qa(n, s, c);
229
+ return `#${fe(l)}${fe(p)}${fe(d)}`;
229
230
  }
230
231
  }
231
- return r;
232
+ return t;
232
233
  }
233
- function T(e, r, a) {
234
- const t = e.querySelectorAll(`[${r}]`);
235
- for (let i = 0; i < t.length; i++)
236
- if (t[i].getAttribute(r) === a) return t[i];
234
+ function P(e, t, a) {
235
+ const r = e.querySelectorAll(`[${t}]`);
236
+ for (let i = 0; i < r.length; i++)
237
+ if (r[i].getAttribute(t) === a) return r[i];
237
238
  return null;
238
239
  }
239
- function Te(e, r = 80) {
240
+ function je(e, t = 80) {
240
241
  let a = null;
241
- return (...t) => {
242
+ return (...r) => {
242
243
  a && clearTimeout(a), a = setTimeout(() => {
243
- e(...t), a = null;
244
- }, r);
244
+ e(...r), a = null;
245
+ }, t);
245
246
  };
246
247
  }
247
- function P(e, r) {
248
- e.setAttribute("title", r), e.setAttribute("aria-label", r);
248
+ function D(e, t) {
249
+ e.setAttribute("title", t), e.setAttribute("aria-label", t);
249
250
  }
250
- const Re = [
251
+ const Ne = [
251
252
  {
252
253
  id: "none",
253
254
  nome: "Sem Mapa",
@@ -290,19 +291,19 @@ const Re = [
290
291
  thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
291
292
  }
292
293
  ];
293
- function Oe(e, r) {
294
- const a = Array.isArray(e) ? e.find((t) => t.id === r) : void 0;
294
+ function He(e, t) {
295
+ const a = Array.isArray(e) ? e.find((r) => r.id === t) : void 0;
295
296
  return a && typeof a.nome == "string" ? a.nome : "";
296
297
  }
297
- function $a(e = Re, r = "satelite", a = !1) {
298
+ function Da(e = Ne, t = "satelite", a = !1) {
298
299
  if (!e || e.length === 0) return "";
299
- const t = e.map((i) => {
300
- const o = r === i.id, n = z(i.id), l = z(i.nome), c = z(i.descricao || i.nome);
301
- let s = "";
302
- return i.thumbnailUrl ? s = `<img class="ui-basemap-preview" src="${z(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : s = `<div class="ui-basemap-preview-none">${h.gradeCad}</div>`, `
300
+ const r = e.map((i) => {
301
+ const o = t === i.id, n = z(i.id), s = z(i.nome), c = z(i.descricao || i.nome);
302
+ let l = "";
303
+ return i.thumbnailUrl ? l = `<img class="ui-basemap-preview" src="${z(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : l = `<div class="ui-basemap-preview-none">${y.gradeCad}</div>`, `
303
304
  <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>
305
+ ${l}
306
+ <span>${s}</span>
306
307
  </div>
307
308
  `;
308
309
  }).join("");
@@ -310,122 +311,122 @@ function $a(e = Re, r = "satelite", a = !1) {
310
311
  <div class="ui-basemap-section ${a ? "recolhido" : ""}" part="mapas-base">
311
312
  <button type="button" class="ui-basemap-toggle" data-basemap-toggle="alternar" aria-expanded="${!a}" aria-controls="ui-basemap-grid" title="${a ? "Mostrar mapas base" : "Recolher mapas base"}">
312
313
  <span class="ui-basemap-title">Mapa Base</span>
313
- <span class="ui-basemap-atual" data-basemap-atual>${z(Oe(e, r))}</span>
314
- <span class="ui-chevron-icon ${a ? "" : "open"}">${h.chevronDir}</span>
314
+ <span class="ui-basemap-atual" data-basemap-atual>${z(He(e, t))}</span>
315
+ <span class="ui-chevron-icon ${a ? "" : "open"}">${y.chevronDir}</span>
315
316
  </button>
316
317
  ${a ? "" : `<div class="ui-basemap-grid" id="ui-basemap-grid">
317
- ${t}
318
+ ${r}
318
319
  </div>`}
319
320
  </div>
320
321
  `;
321
322
  }
322
- function ne(e) {
323
+ function se(e) {
323
324
  if (!Array.isArray(e) || e.length === 0) return [];
324
- const r = e.filter((s) => !!(s && typeof s == "object" && s.id)), a = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
325
- r.forEach((s, p) => {
326
- a.set(s.id, s), t.set(s.id, p);
325
+ const t = e.filter((l) => !!(l && typeof l == "object" && l.id)), a = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
326
+ t.forEach((l, p) => {
327
+ a.set(l.id, l), r.set(l.id, p);
327
328
  });
328
329
  const i = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
329
- for (const s of r) {
330
- if (o.has(s.id)) continue;
331
- const p = [], u = /* @__PURE__ */ new Map();
332
- let d = s;
333
- for (; d && d.parentId && a.has(d.parentId) && d.parentId !== d.id; ) {
334
- if (u.has(d.id)) {
335
- const m = u.get(d.id), f = p.slice(m);
336
- let g = f[0];
337
- for (const v of f)
338
- (t.get(v) ?? 1 / 0) < (t.get(g) ?? 1 / 0) && (g = v);
330
+ for (const l of t) {
331
+ if (o.has(l.id)) continue;
332
+ const p = [], d = /* @__PURE__ */ new Map();
333
+ let u = l;
334
+ for (; u && u.parentId && a.has(u.parentId) && u.parentId !== u.id; ) {
335
+ if (d.has(u.id)) {
336
+ const f = d.get(u.id), m = p.slice(f);
337
+ let g = m[0];
338
+ for (const v of m)
339
+ (r.get(v) ?? 1 / 0) < (r.get(g) ?? 1 / 0) && (g = v);
339
340
  i.add(g);
340
341
  break;
341
342
  }
342
- if (o.has(d.id)) break;
343
- u.set(d.id, p.length), p.push(d.id), d = a.get(d.parentId);
343
+ if (o.has(u.id)) break;
344
+ d.set(u.id, p.length), p.push(u.id), u = a.get(u.parentId);
344
345
  }
345
- for (const m of p) o.add(m);
346
+ for (const f of p) o.add(f);
346
347
  }
347
- const n = /* @__PURE__ */ new Map(), l = [];
348
- r.forEach((s) => {
349
- !i.has(s.id) && !!(s.parentId && a.has(s.parentId) && s.parentId !== s.id) && s.parentId ? (n.has(s.parentId) || n.set(s.parentId, []), n.get(s.parentId).push(s)) : l.push(s);
348
+ const n = /* @__PURE__ */ new Map(), s = [];
349
+ t.forEach((l) => {
350
+ !i.has(l.id) && !!(l.parentId && a.has(l.parentId) && l.parentId !== l.id) && l.parentId ? (n.has(l.parentId) || n.set(l.parentId, []), n.get(l.parentId).push(l)) : s.push(l);
350
351
  });
351
- function c(s, p, u) {
352
- const d = new Set(u);
353
- d.add(s.id);
354
- const f = (n.get(s.id) || (Array.isArray(s.children) ? s.children : [])).filter(
355
- (g) => !!(g && typeof g == "object" && g.id && !d.has(g.id))
352
+ function c(l, p, d) {
353
+ const u = new Set(d);
354
+ u.add(l.id);
355
+ const m = (n.get(l.id) || (Array.isArray(l.children) ? l.children : [])).filter(
356
+ (g) => !!(g && typeof g == "object" && g.id && !u.has(g.id))
356
357
  );
357
358
  return {
358
- camada: s,
359
+ camada: l,
359
360
  depth: p,
360
- subcamadas: f.map((g) => c(g, p + 1, d))
361
+ subcamadas: m.map((g) => c(g, p + 1, u))
361
362
  };
362
363
  }
363
- return l.map((s) => c(s, 0, /* @__PURE__ */ new Set()));
364
+ return s.map((l) => c(l, 0, /* @__PURE__ */ new Set()));
364
365
  }
365
- function Ma(e, r) {
366
+ function Ta(e, t) {
366
367
  const a = /* @__PURE__ */ new Set();
367
- if (!r || !Array.isArray(e)) return a;
368
- const t = /* @__PURE__ */ new Map();
368
+ if (!t || !Array.isArray(e)) return a;
369
+ const r = /* @__PURE__ */ new Map();
369
370
  for (const o of e)
370
- !o || typeof o != "object" || !o.id || o.parentId && o.parentId !== o.id && (t.has(o.parentId) || t.set(o.parentId, []), t.get(o.parentId).push(o.id));
371
- const i = [r];
371
+ !o || typeof o != "object" || !o.id || o.parentId && o.parentId !== o.id && (r.has(o.parentId) || r.set(o.parentId, []), r.get(o.parentId).push(o.id));
372
+ const i = [t];
372
373
  for (; i.length > 0; ) {
373
374
  const o = i.pop();
374
375
  if (a.has(o)) continue;
375
376
  a.add(o);
376
- const n = t.get(o);
377
+ const n = r.get(o);
377
378
  if (n)
378
- for (const l of n)
379
- a.has(l) || i.push(l);
379
+ for (const s of n)
380
+ a.has(s) || i.push(s);
380
381
  }
381
382
  return a;
382
383
  }
383
- function Q(e, r, a) {
384
- if (!a || !Array.isArray(r) || r.length === 0) return [];
385
- const t = Ma(e, a);
386
- return r.filter((i) => !!(i && i.layerId && t.has(i.layerId)));
384
+ function W(e, t, a) {
385
+ if (!a || !Array.isArray(t) || t.length === 0) return [];
386
+ const r = Ta(e, a);
387
+ return t.filter((i) => !!(i && i.layerId && r.has(i.layerId)));
387
388
  }
388
- function se(e) {
389
- const r = /* @__PURE__ */ new Map();
390
- e.forEach((t) => t && t.id && r.set(t.id, t));
389
+ function le(e) {
390
+ const t = /* @__PURE__ */ new Map();
391
+ e.forEach((r) => r && r.id && t.set(r.id, r));
391
392
  const a = /* @__PURE__ */ new Map();
392
- for (const t of r.values()) {
393
+ for (const r of t.values()) {
393
394
  let i = !1, o = !1;
394
- const n = /* @__PURE__ */ new Set([t.id]);
395
- let l = t.parentId ? r.get(t.parentId) : void 0;
396
- for (; l && !n.has(l.id); )
397
- n.add(l.id), l.visible === !1 && (i = !0), l.locked === !0 && (o = !0), l = l.parentId ? r.get(l.parentId) : void 0;
398
- a.set(t.id, { ocultaPorAncestral: i, travadaPorAncestral: o });
395
+ const n = /* @__PURE__ */ new Set([r.id]);
396
+ let s = r.parentId ? t.get(r.parentId) : void 0;
397
+ for (; s && !n.has(s.id); )
398
+ n.add(s.id), s.visible === !1 && (i = !0), s.locked === !0 && (o = !0), s = s.parentId ? t.get(s.parentId) : void 0;
399
+ a.set(r.id, { ocultaPorAncestral: i, travadaPorAncestral: o });
399
400
  }
400
401
  return a;
401
402
  }
402
- function xe(e) {
403
- const r = se(e);
403
+ function ie(e) {
404
+ const t = le(e);
404
405
  return new Set(
405
406
  e.filter((a) => {
406
- var t;
407
- return a && (a.locked === !0 || ((t = r.get(a.id)) == null ? void 0 : t.travadaPorAncestral) === !0);
407
+ var r;
408
+ return a && (a.locked === !0 || ((r = t.get(a.id)) == null ? void 0 : r.travadaPorAncestral) === !0);
408
409
  }).map((a) => a.id)
409
410
  );
410
411
  }
411
- function Fa(e) {
412
- const r = ne(e), a = xe(e), t = (i) => {
413
- const o = i.camada, n = i.depth, l = i.subcamadas, c = n > 0 ? "&nbsp;&nbsp;".repeat(n) + "↳ " : l.length > 0 || o.isGroup ? "📁 " : "", s = a.has(o.id), p = `<option value="${z(o.id)}"${s ? " disabled" : ""}>${c}${z(o.name)}${s ? " 🔒" : ""}</option>`, u = l.map((d) => t(d)).join("");
414
- return p + u;
412
+ function Ge(e) {
413
+ const t = se(e), a = ie(e), r = (i) => {
414
+ const o = i.camada, n = i.depth, s = i.subcamadas, c = n > 0 ? "&nbsp;&nbsp;".repeat(n) + "↳ " : s.length > 0 || o.isGroup ? "📁 " : "", l = a.has(o.id), p = `<option value="${z(o.id)}"${l ? " disabled" : ""}>${c}${z(o.name)}${l ? " 🔒" : ""}</option>`, d = s.map((u) => r(u)).join("");
415
+ return p + d;
415
416
  };
416
- return r.map((i) => t(i)).join("");
417
+ return t.map((i) => r(i)).join("");
417
418
  }
418
- function je(e, r) {
419
- return r > 0 ? {
420
- icone: h.alvoEnquadrar,
421
- texto: `${r} ${r > 1 ? "selecionados" : "selecionado"}`
419
+ function _e(e, t) {
420
+ return t > 0 ? {
421
+ icone: y.alvoEnquadrar,
422
+ texto: `${t} ${t > 1 ? "selecionados" : "selecionado"}`
422
423
  } : {
423
- icone: h.camadas,
424
+ icone: y.camadas,
424
425
  texto: `${e} ${e > 1 ? "camadas" : "camada"}`
425
426
  };
426
427
  }
427
- function za(e, r, a) {
428
- const t = r.filter((c) => a.has(c.id)), i = t.length > 0, o = i ? t.length : e.length, n = je(e.length, t.length), l = Fa(e);
428
+ function Ra(e, t, a) {
429
+ const r = t.filter((c) => a.has(c.id)), i = r.length > 0, o = i ? r.length : e.length, n = _e(e.length, r.length), s = Ge(e);
429
430
  return `
430
431
  <div class="ui-tree-footer ${i ? "tem-selecao" : "sem-selecao"}" part="rodape">
431
432
  <div class="ui-footer-left">
@@ -436,11 +437,11 @@ function za(e, r, a) {
436
437
  <!-- Criação de camadas/grupos quando não há nada selecionado -->
437
438
  <div class="ui-footer-actions-gerais" style="display: ${i ? "none" : "flex"};">
438
439
  <button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
439
- ${h.moverPasta}
440
+ ${y.moverPasta}
440
441
  <span>Grupo</span>
441
442
  </button>
442
443
  <button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
443
- ${h.mais}
444
+ ${y.mais}
444
445
  <span>Camada</span>
445
446
  </button>
446
447
  </div>
@@ -450,321 +451,314 @@ function za(e, r, a) {
450
451
  <div class="ui-footer-move-wrapper ${i ? "" : "disabled"}" title="Mover selecionados para outra camada">
451
452
  <select id="select-footer-move" aria-label="Mover selecionados para outra camada" class="ui-footer-select" ${i ? "" : "disabled"}>
452
453
  <option value="" disabled selected>Mover para...</option>
453
- ${l}
454
+ ${s}
454
455
  </select>
455
456
  </div>
456
457
 
457
458
  <button class="ui-footer-btn btn-danger-footer ${i ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${i ? "" : "disabled"}>
458
- ${h.lixeira}
459
+ ${y.lixeira}
459
460
  </button>
460
461
  </div>
461
462
  </div>
462
463
  `;
463
464
  }
464
- const fe = 64;
465
- function Se(e) {
465
+ const me = 64;
466
+ function $e(e) {
466
467
  return Array.isArray(e) && e.length >= 2 && Number.isFinite(e[0]) && Number.isFinite(e[1]);
467
468
  }
468
- function Ne(e) {
469
- return !Array.isArray(e) || e.length === 0 ? [] : Se(e[0]) ? [e.filter(Se)] : e.flatMap(Ne);
469
+ function Ue(e) {
470
+ return !Array.isArray(e) || e.length === 0 ? [] : $e(e[0]) ? [e.filter($e)] : e.flatMap(Ue);
470
471
  }
471
- function $e(e) {
472
- if (e.length <= fe) return e;
473
- const r = e.length / fe, a = [];
474
- for (let t = 0; t < fe; t++) a.push(e[Math.floor(t * r)]);
472
+ function Fe(e) {
473
+ if (e.length <= me) return e;
474
+ const t = e.length / me, a = [];
475
+ for (let r = 0; r < me; r++) a.push(e[Math.floor(r * t)]);
475
476
  return a.push(e[e.length - 1]), a;
476
477
  }
477
- function Ba(e, r, a) {
478
- const t = Ne(r).filter((L) => L.length > 0);
479
- if (t.length === 0) return "";
480
- let i = 1 / 0, o = -1 / 0, n = 1 / 0, l = -1 / 0;
481
- for (const L of t)
482
- for (const [b, $] of L)
483
- $ < i && (i = $), $ > o && (o = $), -b < n && (n = -b), -b > l && (l = -b);
484
- const c = 16, s = 2, p = c - s * 2, u = o - i, d = l - n, m = Math.max(u, d), f = m > 0 ? p / m : 0, g = s + (p - u * f) / 2, v = s + (p - d * f) / 2, y = (L) => Math.round(L * 100) / 100, k = ([L, b]) => `${y(g + (b - i) * f)},${y(v + (-L - n) * f)}`, M = e === "polygon" || e === "multipolygon", S = e === "linestring" || e === "multilinestring", w = (L) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${L}</svg>`;
485
- if (M) {
486
- const L = t.filter((b) => b.length >= 3).map((b) => `M${$e(b).map(k).join("L")}Z`).join("");
487
- return L ? w(
488
- `<path d="${L}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
478
+ function Oa(e, t, a) {
479
+ const r = Ue(t).filter((S) => S.length > 0);
480
+ if (r.length === 0) return "";
481
+ let i = 1 / 0, o = -1 / 0, n = 1 / 0, s = -1 / 0;
482
+ for (const S of r)
483
+ for (const [h, F] of S)
484
+ F < i && (i = F), F > o && (o = F), -h < n && (n = -h), -h > s && (s = -h);
485
+ const c = 16, l = 2, p = c - l * 2, d = o - i, u = s - n, f = Math.max(d, u), m = f > 0 ? p / f : 0, g = l + (p - d * m) / 2, v = l + (p - u * m) / 2, b = (S) => Math.round(S * 100) / 100, E = ([S, h]) => `${b(g + (h - i) * m)},${b(v + (-S - n) * m)}`, L = e === "polygon" || e === "multipolygon", $ = e === "linestring" || e === "multilinestring", w = (S) => `<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${S}</svg>`;
486
+ if (L) {
487
+ const S = r.filter((h) => h.length >= 3).map((h) => `M${Fe(h).map(E).join("L")}Z`).join("");
488
+ return S ? w(
489
+ `<path d="${S}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`
489
490
  ) : "";
490
491
  }
491
- if (S) {
492
- const L = t.filter((b) => b.length >= 2).map((b) => `M${$e(b).map(k).join("L")}`).join("");
493
- return L ? w(
494
- `<path d="${L}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
492
+ if ($) {
493
+ const S = r.filter((h) => h.length >= 2).map((h) => `M${Fe(h).map(E).join("L")}`).join("");
494
+ return S ? w(
495
+ `<path d="${S}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`
495
496
  ) : "";
496
497
  }
497
498
  return "";
498
499
  }
499
- function qa(e, r, a) {
500
- const t = H(r, "#00E08A"), i = (e || "").toLowerCase(), o = a !== void 0 ? Ba(i, a, t) : "";
501
- return o || (i === "polygon" || i === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${t}" fill-opacity="0.45" stroke="${t}" stroke-width="1.5"/></svg>` : i === "linestring" || i === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${t}" stroke-width="2"/></svg>` : i === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${t}" text-anchor="middle" font-family="sans-serif">T</text></svg>` : `<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${t}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
500
+ function Ve(e, t, a) {
501
+ const r = G(t, "#00E08A"), i = (e || "").toLowerCase(), o = a !== void 0 ? Oa(i, a, r) : "";
502
+ return o || (i === "polygon" || i === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${r}" fill-opacity="0.45" stroke="${r}" stroke-width="1.5"/></svg>` : i === "linestring" || i === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${r}" stroke-width="2"/></svg>` : i === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${r}" 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="${r}" stroke="#ffffff" stroke-width="1.2"/></svg>`);
502
503
  }
503
- function He(e, r, a) {
504
+ function Ye(e, t, a) {
504
505
  return {
505
506
  camadaIdSeguro: z(e.id),
506
- corCamada: H(e.color, "#00E08A"),
507
- profundidade: r,
507
+ corCamada: G(e.color, "#00E08A"),
508
+ profundidade: t,
508
509
  esmaecida: e.visible === !1 || (a == null ? void 0 : a.ocultaPorAncestral) === !0,
509
510
  travadaPelaCamada: e.locked === !0 || (a == null ? void 0 : a.travadaPorAncestral) === !0
510
511
  };
511
512
  }
512
- const me = (e, r, a) => `${e} ${e === 1 ? r : a}`;
513
- function Ge(e, r, a) {
514
- return a === 0 ? me(e, "feição", "feições") : `${me(e, "feição", "feições")} no grupo (${r} nesta camada) · ${me(a, "subcamada", "subcamadas")}`;
513
+ const ge = (e, t, a) => `${e} ${e === 1 ? t : a}`;
514
+ function Ke(e, t, a) {
515
+ return a === 0 ? ge(e, "feição", "feições") : `${ge(e, "feição", "feições")} no grupo (${t} nesta camada) · ${ge(a, "subcamada", "subcamadas")}`;
515
516
  }
516
- function Ve(e, r, a, t) {
517
- return e === 0 && t ? "" : `<span class="ui-count-chip" title="${Ge(e, r, a)}">${e}</span>`;
517
+ function Qe(e, t, a, r) {
518
+ return e === 0 && r ? "" : `<span class="ui-count-chip" title="${Ke(e, t, a)}">${e}</span>`;
518
519
  }
519
- function Ue(e, r) {
520
- const a = r - e;
520
+ function Xe(e, t) {
521
+ const a = t - e;
521
522
  return {
522
- resumo: `Exibindo ${e} de ${r} feições. Use a busca acima para filtrar.`,
523
+ resumo: `Exibindo ${e} de ${t} feições. Use a busca acima para filtrar.`,
523
524
  botao: `Mostrar mais (+${Math.min(80, a)})`
524
525
  };
525
526
  }
526
- function _e(e, r, a) {
527
- const t = Ue(r, a);
527
+ function We(e, t, a) {
528
+ const r = Xe(t, a);
528
529
  return `<div class="ui-truncate-notice" role="note">
529
- <span>${t.resumo}</span>
530
- <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${e}">${t.botao}</button>
530
+ <span>${r.resumo}</span>
531
+ <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${e}">${r.botao}</button>
531
532
  </div>`;
532
533
  }
533
- function Ye(e) {
534
+ function Je(e) {
534
535
  return `<div class="ui-empty-row"><span>${e ? "Grupo vazio (adicione subcamadas ou feições)" : "Camada vazia"}</span></div>`;
535
536
  }
536
- const Pa = ["name", "color", "visible", "locked", "status", "type", "geometryType", "coordinates", "layerId"];
537
- function Da(e, r) {
538
- return Pa.every((a) => e[a] === r[a]);
537
+ const ja = ["name", "color", "visible", "locked", "status", "type", "geometryType", "coordinates", "layerId"];
538
+ function Na(e, t) {
539
+ return ja.every((a) => e[a] === t[a]);
539
540
  }
540
- function Ke(e, r, a, t) {
541
- const { camadaIdSeguro: i, corCamada: o, profundidade: n } = r, l = z(e.id), c = z(e.name || "Feição"), s = H(e.color, o), p = e.visible !== !1, u = r.travadaPelaCamada, d = e.locked === !0 || u, m = u ? "Bloqueada pela camada" : d ? "Desbloquear Feição" : "Bloquear Feição", f = e.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
541
+ function Ze(e, t, a, r) {
542
+ const { camadaIdSeguro: i, corCamada: o, profundidade: n } = t, s = z(e.id), c = z(e.name || "Feição"), l = G(e.color, o), p = e.visible !== !1, d = t.travadaPelaCamada, u = e.locked === !0 || d, f = d ? "Bloqueada pela camada" : u ? "Desbloquear Feição" : "Bloquear Feição", m = e.status === "previa" ? '<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>' : "";
542
543
  return `
543
- <div class="ui-feat-row ${a ? "selected-row" : ""} ${p ? "" : "hidden-row"} ${r.esmaecida ? "herdado-oculto" : ""}" data-feat-row="${l}" data-feat-select="${l}" data-feat-layer="${i}" role="treeitem" aria-level="${n + 2}" aria-selected="${a}" tabindex="-1" draggable="true" part="${a ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${n + 1};" title="Clique para selecionar | Arraste para reordenar">
544
- <div class="ui-col ui-col-eye" data-feat-eye="${l}" role="button" tabindex="0" aria-label="${p ? "Ocultar Feição" : "Exibir Feição"}" title="${p ? "Ocultar Feição" : "Exibir Feição"}">
545
- ${p ? h.olhoAberto : h.olhoFechado}
544
+ <div class="ui-feat-row ${a ? "selected-row" : ""} ${p ? "" : "hidden-row"} ${t.esmaecida ? "herdado-oculto" : ""}" data-feat-row="${s}" data-feat-select="${s}" data-feat-layer="${i}" role="treeitem" aria-level="${n + 2}" aria-selected="${a}" tabindex="-1" draggable="true" part="${a ? "feicao feicao-selecionada" : "feicao"}" style="--layer-depth: ${n + 1};" title="Clique para selecionar | Arraste para reordenar">
545
+ <div class="ui-col ui-col-eye" data-feat-eye="${s}" role="button" tabindex="0" aria-label="${p ? "Ocultar Feição" : "Exibir Feição"}" title="${p ? "Ocultar Feição" : "Exibir Feição"}">
546
+ ${p ? y.olhoAberto : y.olhoFechado}
546
547
  </div>
547
548
 
548
- <div class="ui-col ui-col-lock ${d ? "" : "ui-lock-open"}" data-feat-lock="${l}" ${u ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${m}" title="${m}">
549
- ${d ? h.cadeadoTrancado : h.cadeadoAberto}
549
+ <div class="ui-col ui-col-lock ${u ? "" : "ui-lock-open"}" data-feat-lock="${s}" ${d ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${f}" title="${f}">
550
+ ${u ? y.cadeadoTrancado : y.cadeadoAberto}
550
551
  </div>
551
552
 
552
- <div class="ui-col ui-col-colorbar" style="background: ${s};"></div>
553
+ <div class="ui-col ui-col-colorbar" style="background: ${l};"></div>
553
554
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
554
555
  <div class="ui-col ui-col-thumb">
555
- <div class="ui-thumb-box">${qa(e.type || e.geometryType, s, e.coordinates)}</div>
556
+ <div class="ui-thumb-box">${Ve(e.type || e.geometryType, l, e.coordinates)}</div>
556
557
  </div>
557
558
 
558
- <div class="ui-col ui-col-name" data-feat-name-trigger="${l}" title="Duplo clique para renomear">
559
- ${t ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${l}" value="${c}" />` : `<span class="ui-name-text">${c}</span>${f}`}
559
+ <div class="ui-col ui-col-name" data-feat-name-trigger="${s}" title="Duplo clique para renomear">
560
+ ${r ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${s}" value="${c}" />` : `<span class="ui-name-text">${c}</span>${m}`}
560
561
  </div>
561
562
 
562
563
  <div class="ui-col ui-col-actions">
563
- <button class="ui-micro-btn" data-feat-fit="${l}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${h.alvoEnquadrar}</button>
564
+ <button class="ui-micro-btn" data-feat-fit="${s}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${y.alvoEnquadrar}</button>
564
565
  </div>
565
566
 
566
- <div class="ui-col ui-col-target" data-feat-target="${l}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
567
+ <div class="ui-col ui-col-target" data-feat-target="${s}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
567
568
  <div class="ui-target-circle ${a ? "selected" : ""}"></div>
568
569
  </div>
569
570
  </div>
570
571
  `;
571
572
  }
572
573
  const we = 80;
573
- function te(e, r) {
574
- const a = (r || "").trim().toLowerCase();
574
+ function V(e, t) {
575
+ const a = (t || "").trim().toLowerCase();
575
576
  return a ? e.filter(
576
- (t) => (t.name || "").toLowerCase().includes(a) || (t.category || "").toLowerCase().includes(a) || (t.type || "").toLowerCase().includes(a)
577
+ (r) => (r.name || "").toLowerCase().includes(a) || (r.category || "").toLowerCase().includes(a) || (r.type || "").toLowerCase().includes(a)
577
578
  ) : e;
578
579
  }
579
- function Qe(e, r, a) {
580
- var d, m;
581
- const t = (a || "").trim().toLowerCase();
582
- if (!t) return null;
580
+ function ea(e, t, a) {
581
+ var u, f;
582
+ const r = (a || "").trim().toLowerCase();
583
+ if (!r) return null;
583
584
  const i = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
584
- for (const f of e)
585
- i.set(f.id, f), f.parentId && f.parentId !== f.id && (o.has(f.parentId) || o.set(f.parentId, []), o.get(f.parentId).push(f.id));
585
+ for (const m of e)
586
+ i.set(m.id, m), m.parentId && m.parentId !== m.id && (o.has(m.parentId) || o.set(m.parentId, []), o.get(m.parentId).push(m.id));
586
587
  const n = /* @__PURE__ */ new Map();
587
- for (const f of r) {
588
- const g = f.layerId || "";
589
- n.has(g) || n.set(g, []), n.get(g).push(f);
590
- }
591
- const l = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set();
592
- for (const f of e)
593
- (typeof f.name == "string" ? f.name.toLowerCase() : "").includes(t) ? (l.add(f.id), c.add(f.id)) : te(n.get(f.id) || [], t).length > 0 && c.add(f.id);
594
- const s = new Set(c);
595
- for (const f of c) {
596
- const g = /* @__PURE__ */ new Set([f]);
597
- let v = (d = i.get(f)) == null ? void 0 : d.parentId;
588
+ for (const m of t) {
589
+ const g = m.layerId || "";
590
+ n.has(g) || n.set(g, []), n.get(g).push(m);
591
+ }
592
+ const s = /* @__PURE__ */ new Set(), c = /* @__PURE__ */ new Set();
593
+ for (const m of e)
594
+ (typeof m.name == "string" ? m.name.toLowerCase() : "").includes(r) ? (s.add(m.id), c.add(m.id)) : V(n.get(m.id) || [], r).length > 0 && c.add(m.id);
595
+ const l = new Set(c);
596
+ for (const m of c) {
597
+ const g = /* @__PURE__ */ new Set([m]);
598
+ let v = (u = i.get(m)) == null ? void 0 : u.parentId;
598
599
  for (; v && i.has(v) && !g.has(v); )
599
- g.add(v), s.add(v), v = (m = i.get(v)) == null ? void 0 : m.parentId;
600
+ g.add(v), l.add(v), v = (f = i.get(v)) == null ? void 0 : f.parentId;
600
601
  }
601
- const p = [...l];
602
+ const p = [...s];
602
603
  for (; p.length > 0; ) {
603
- const f = p.pop();
604
- for (const g of o.get(f) || [])
605
- s.has(g) || (s.add(g), p.push(g));
606
- }
607
- const u = /* @__PURE__ */ new Map();
608
- for (const f of s) {
609
- const g = n.get(f) || [];
610
- u.set(f, l.has(f) ? g : te(g, t));
611
- }
612
- return { camadasVisiveis: s, feicoesPorCamada: u };
613
- }
614
- function Xe(e, r, a, t = "", i = we, o) {
615
- const n = Qe(e, r, t), l = [], c = /* @__PURE__ */ new Map();
616
- for (let u = 0; u < r.length; u++) {
617
- const d = r[u];
618
- if (!d || !d.id) continue;
619
- const m = d.layerId || "";
620
- c.has(m) || c.set(m, []), c.get(m).push(d);
621
- }
622
- const s = ne(e);
623
- function p(u) {
624
- const d = u.camada;
625
- if (n && !n.camadasVisiveis.has(d.id) || !(n ? !0 : a.has(d.id))) return;
626
- for (const y of u.subcamadas)
627
- p(y);
628
- const f = n ? n.feicoesPorCamada.get(d.id) || [] : c.get(d.id) || [], g = (o == null ? void 0 : o.get(d.id)) ?? i, v = f.slice(0, g);
629
- for (let y = 0; y < v.length; y++)
630
- l.push(v[y].id);
631
- }
632
- for (const u of s)
633
- p(u);
634
- return l;
635
- }
636
- function Ta(e, r, a, t, i, o) {
637
- if (!e.includes(t)) return null;
638
- const n = new Set(r);
639
- let l = a;
604
+ const m = p.pop();
605
+ for (const g of o.get(m) || [])
606
+ l.has(g) || (l.add(g), p.push(g));
607
+ }
608
+ const d = /* @__PURE__ */ new Map();
609
+ for (const m of l) {
610
+ const g = n.get(m) || [];
611
+ d.set(m, s.has(m) ? g : V(g, r));
612
+ }
613
+ return { camadasVisiveis: l, feicoesPorCamada: d };
614
+ }
615
+ function aa(e, t, a, r = "", i = we, o) {
616
+ const n = ea(e, t, r), s = [], c = /* @__PURE__ */ new Map();
617
+ for (let d = 0; d < t.length; d++) {
618
+ const u = t[d];
619
+ if (!u || !u.id) continue;
620
+ const f = u.layerId || "";
621
+ c.has(f) || c.set(f, []), c.get(f).push(u);
622
+ }
623
+ const l = se(e);
624
+ function p(d) {
625
+ const u = d.camada;
626
+ if (n && !n.camadasVisiveis.has(u.id) || !(n ? !0 : a.has(u.id))) return;
627
+ for (const b of d.subcamadas)
628
+ p(b);
629
+ const m = n ? n.feicoesPorCamada.get(u.id) || [] : c.get(u.id) || [], g = (o == null ? void 0 : o.get(u.id)) ?? i, v = m.slice(0, g);
630
+ for (let b = 0; b < v.length; b++)
631
+ s.push(v[b].id);
632
+ }
633
+ for (const d of l)
634
+ p(d);
635
+ return s;
636
+ }
637
+ function Ha(e, t, a, r, i, o) {
638
+ if (!e.includes(r)) return null;
639
+ const n = new Set(t);
640
+ let s = a;
640
641
  if (o && a && e.includes(a)) {
641
- const c = e.indexOf(a), s = e.indexOf(t), p = Math.min(c, s), u = Math.max(c, s);
642
+ const c = e.indexOf(a), l = e.indexOf(r), p = Math.min(c, l), d = Math.max(c, l);
642
643
  i || n.clear();
643
- for (let d = p; d <= u; d++)
644
- n.add(e[d]);
645
- } else i ? (n.has(t) ? n.delete(t) : n.add(t), l = t) : (n.clear(), n.add(t), l = t);
646
- return { selecionados: n, ultimoClicadoId: l };
644
+ for (let u = p; u <= d; u++)
645
+ n.add(e[u]);
646
+ } else i ? (n.has(r) ? n.delete(r) : n.add(r), s = r) : (n.clear(), n.add(r), s = r);
647
+ return { selecionados: n, ultimoClicadoId: s };
647
648
  }
648
- function Ae(e, r) {
649
+ function Ae(e, t) {
649
650
  if (e.size === 0) return;
650
- const a = new Set(r.map((t) => t.id));
651
- for (const t of e)
652
- a.has(t) || e.delete(t);
651
+ const a = new Set(t.map((r) => r.id));
652
+ for (const r of e)
653
+ a.has(r) || e.delete(r);
653
654
  }
654
- function U(e, r, a) {
655
- const t = /* @__PURE__ */ new Set();
656
- let i = e.find((o) => o.id === r);
655
+ function Y(e, t, a) {
656
+ const r = /* @__PURE__ */ new Set();
657
+ let i = e.find((o) => o.id === t);
657
658
  for (; i && i.parentId; ) {
658
- if (t.has(i.id) || (t.add(i.id), i.parentId === a)) return !0;
659
+ if (r.has(i.id) || (r.add(i.id), i.parentId === a)) return !0;
659
660
  i = e.find((o) => o.id === (i == null ? void 0 : i.parentId));
660
661
  }
661
662
  return !1;
662
663
  }
663
- function Ra(e) {
664
+ function Me(e) {
664
665
  return Number.isFinite(e) ? e < 0.25 ? "acima" : e > 0.75 ? "abaixo" : "dentro" : "dentro";
665
666
  }
666
- function Oa(e, r, a, t) {
667
- if (!r || !a || r === a) return null;
668
- const i = e.find((s) => s.id === r), o = e.find((s) => s.id === a);
667
+ function ze(e, t, a, r) {
668
+ if (!t || !a || t === a) return null;
669
+ const i = e.find((l) => l.id === t), o = e.find((l) => l.id === a);
669
670
  if (!i || !o) return null;
670
671
  const n = i.parentId !== void 0 ? i.parentId : null;
671
- if (t === "dentro")
672
- return U(e, o.id, i.id) ? null : (i.parentId = o.id, { tipo: "hierarquia", camada: i, novoParentId: o.id, parentAnteriorId: n });
673
- if (U(e, o.id, i.id)) return null;
674
- const l = e.findIndex((s) => s.id === r);
675
- e.splice(l, 1);
676
- const c = e.findIndex((s) => s.id === a);
677
- return c === -1 ? e.push(i) : e.splice(t === "acima" ? c : c + 1, 0, i), i.parentId = o.parentId ?? null, { tipo: "ordem", camada: i, parentAnteriorId: n, novoParentId: i.parentId };
678
- }
679
- function ja(e, r, a, t) {
680
- if (!r || !a || r === a) return !1;
681
- const i = e.findIndex((l) => l.id === r);
682
- if (i === -1) return !1;
683
- const [o] = e.splice(i, 1), n = e.findIndex((l) => l.id === a);
684
- return n === -1 ? e.push(o) : e.splice(t ? n : n + 1, 0, o), !0;
685
- }
686
- function Na(e, r, a, t) {
687
- const i = e.find((l) => l.id === a), o = r.find((l) => l.id === t);
688
- if (!i || !o || i.layerId === t) return null;
672
+ if (r === "dentro")
673
+ return Y(e, o.id, i.id) ? null : (i.parentId = o.id, { tipo: "hierarquia", camada: i, novoParentId: o.id, parentAnteriorId: n });
674
+ if (Y(e, o.id, i.id)) return null;
675
+ const s = e.findIndex((l) => l.id === t);
676
+ e.splice(s, 1);
677
+ const c = e.findIndex((l) => l.id === a);
678
+ return c === -1 ? e.push(i) : e.splice(r === "acima" ? c : c + 1, 0, i), i.parentId = o.parentId ?? null, { tipo: "ordem", camada: i, parentAnteriorId: n, novoParentId: i.parentId };
679
+ }
680
+ function Ga(e, t, a, r) {
681
+ const i = e.find((s) => s.id === a), o = t.find((s) => s.id === r);
682
+ if (!i || !o || i.layerId === r) return null;
689
683
  const n = i.layerId;
690
- return i.layerId = t, { feicao: i, camadaOrigemId: n, camadaDestinoId: t, mudouDeCamada: !0 };
684
+ return i.layerId = r, { feicao: i, camadaOrigemId: n, camadaDestinoId: r, mudouDeCamada: !0 };
691
685
  }
692
- function Ha(e, r, a, t) {
693
- if (!r || !a || r === a) return null;
694
- const i = e.findIndex((u) => u.id === r);
686
+ function _a(e, t, a, r) {
687
+ if (!t || !a || t === a) return null;
688
+ const i = e.findIndex((d) => d.id === t);
695
689
  if (i === -1) return null;
696
- const o = e.find((u) => u.id === a);
690
+ const o = e.find((d) => d.id === a);
697
691
  if (!o) return null;
698
- const [n] = e.splice(i, 1), l = n.layerId, c = o.layerId, s = l !== c;
699
- s && (n.layerId = c);
700
- const p = e.findIndex((u) => u.id === a);
701
- return p === -1 ? e.push(n) : e.splice(t ? p : p + 1, 0, n), { feicao: n, camadaOrigemId: l, camadaDestinoId: c, mudouDeCamada: s };
692
+ const [n] = e.splice(i, 1), s = n.layerId, c = o.layerId, l = s !== c;
693
+ l && (n.layerId = c);
694
+ const p = e.findIndex((d) => d.id === a);
695
+ return p === -1 ? e.push(n) : e.splice(r ? p : p + 1, 0, n), { feicao: n, camadaOrigemId: s, camadaDestinoId: c, mudouDeCamada: l };
702
696
  }
703
- function Ga(e) {
697
+ function Ua(e) {
704
698
  const {
705
- camadas: r,
699
+ camadas: t,
706
700
  feicoes: a,
707
- camadaAtivaId: t,
701
+ camadaAtivaId: r,
708
702
  expandedLayers: i,
709
703
  selectedFeatureIds: o,
710
704
  activeSettingsLayerId: n,
711
- editingLayerId: l,
705
+ editingLayerId: s,
712
706
  editingFeatureId: c,
713
- searchQuery: s,
707
+ searchQuery: l,
714
708
  titulo: p = "CAMADAS",
715
- mostrarBusca: u = !0,
716
- limitesPorCamada: d,
717
- limiteFeicoesPorCamada: m = we,
718
- mostrarBotaoColapsar: f = !1
719
- } = e, g = (s || "").trim().toLowerCase(), v = Qe(r, a, g), y = /* @__PURE__ */ new Map();
720
- for (let E = 0; E < a.length; E++) {
721
- const x = a[E];
709
+ mostrarBusca: d = !0,
710
+ limitesPorCamada: u,
711
+ limiteFeicoesPorCamada: f = we,
712
+ mostrarBotaoColapsar: m = !1
713
+ } = e, g = (l || "").trim().toLowerCase(), v = ea(t, a, g), b = /* @__PURE__ */ new Map();
714
+ for (let I = 0; I < a.length; I++) {
715
+ const x = a[I];
722
716
  if (!x || !x.id) continue;
723
717
  const B = x.layerId || "";
724
- y.has(B) || y.set(B, []), y.get(B).push(x);
718
+ b.has(B) || b.set(B, []), b.get(B).push(x);
725
719
  }
726
- const k = se(r), M = r.every((E) => E.visible !== !1), S = r.length > 0 && r.every((E) => i.has(E.id)), w = u ? `
720
+ const E = le(t), L = t.every((I) => I.visible !== !1), $ = t.length > 0 && t.every((I) => i.has(I.id)), w = d ? `
727
721
  <div class="ui-tree-search-wrapper" part="busca">
728
- <span class="ui-tree-search-icon">${h.busca}</span>
722
+ <span class="ui-tree-search-icon">${y.busca}</span>
729
723
  <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${z(
730
- s
724
+ l
731
725
  )}" />
732
- ${s ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${h.fechar}</button>` : ""}
726
+ ${l ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${y.fechar}</button>` : ""}
733
727
  </div>
734
- ` : "", L = `
728
+ ` : "", S = `
735
729
  <div class="ui-tree-toolbar" part="toolbar">
736
730
  <div class="ui-tree-title-group">
737
731
  <span class="ui-tree-section-title">${z(p || "CAMADAS")}</span>
738
- <span class="ui-tree-count-badge">${r.length}</span>
732
+ <span class="ui-tree-count-badge">${t.length}</span>
739
733
  </div>
740
734
  <div class="ui-tree-actions">
741
- <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${M ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${M ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
742
- ${M ? h.olhoAberto : h.olhoFechado}
735
+ <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"}">
736
+ ${L ? y.olhoAberto : y.olhoFechado}
743
737
  </button>
744
- <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${S ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${S ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
745
- <span class="ui-chevron-icon ${S ? "open" : ""}">${h.chevronDir}</span>
738
+ <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"}">
739
+ <span class="ui-chevron-icon ${$ ? "open" : ""}">${y.chevronDir}</span>
746
740
  </button>
747
- ${f ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${h.recolherPainel}</button>` : ""}
741
+ ${m ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${y.recolherPainel}</button>` : ""}
748
742
  </div>
749
743
  </div>
750
744
  ${w}
751
- `, b = (E) => {
752
- const x = E.camada;
745
+ `, h = (I) => {
746
+ const x = I.camada;
753
747
  if (v && !v.camadasVisiveis.has(x.id)) return "";
754
- const B = E.depth, D = E.subcamadas, ke = v ? D.filter((F) => v.camadasVisiveis.has(F.camada.id)) : D, G = !!(x.isGroup || D.length > 0), C = z(x.id), X = z(x.name || (G ? "Novo Grupo" : "Camada")), j = H(x.color, "#00E08A"), W = x.visible !== !1, J = x.locked === !0, Z = g ? !0 : i.has(x.id), le = n === x.id, ce = t === x.id, O = k.get(x.id), sa = (O == null ? void 0 : O.ocultaPorAncestral) === !0, la = (O == null ? void 0 : O.travadaPorAncestral) === !0, R = v ? v.feicoesPorCamada.get(x.id) || [] : y.get(x.id) || [], ee = v ? R : Q(r, a, x.id), Ie = ee.length > 0 && ee.every((F) => o.has(F.id)), ca = !Ie && ee.some((F) => o.has(F.id)), de = (d == null ? void 0 : d.get(x.id)) ?? m, da = R.slice(0, de), ua = R.length > de, pa = He(x, B, O), fa = da.map(
755
- (F) => Ke(F, pa, o.has(F.id), c === F.id)
756
- ).join(""), ma = ua ? _e(C, de, R.length) : "", Ce = Number(x.opacity ?? 1), Le = Number.isFinite(Ce) ? Math.min(1, Math.max(0, Ce)) : 1, ga = Math.round(Le * 100), va = r.filter((F) => F.id !== x.id && !U(r, F.id, x.id)).map(
757
- (F) => `<option value="${z(F.id)}" ${x.parentId === F.id ? "selected" : ""}>${F.isGroup ? "📁 " : ""}${z(F.name)}</option>`
758
- ).join(""), ba = le ? `
759
- <div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${j};">
748
+ const B = I.depth, T = I.subcamadas, Ie = v ? T.filter((M) => v.camadasVisiveis.has(M.camada.id)) : T, _ = !!(x.isGroup || T.length > 0), C = z(x.id), J = z(x.name || (_ ? "Novo Grupo" : "Camada")), N = G(x.color, "#00E08A"), Z = x.visible !== !1, ee = x.locked === !0, ae = g ? !0 : i.has(x.id), ce = n === x.id, de = r === x.id, O = E.get(x.id), pa = (O == null ? void 0 : O.ocultaPorAncestral) === !0, fa = (O == null ? void 0 : O.travadaPorAncestral) === !0, R = v ? v.feicoesPorCamada.get(x.id) || [] : b.get(x.id) || [], te = v ? R : W(t, a, x.id), ke = te.length > 0 && te.every((M) => o.has(M.id)), ma = !ke && te.some((M) => o.has(M.id)), ue = (u == null ? void 0 : u.get(x.id)) ?? f, ga = R.slice(0, ue), va = R.length > ue, ba = Ye(x, B, O), ha = ga.map(
749
+ (M) => Ze(M, ba, o.has(M.id), c === M.id)
750
+ ).join(""), ya = va ? We(C, ue, R.length) : "", Le = Number(x.opacity ?? 1), Ce = Number.isFinite(Le) ? Math.min(1, Math.max(0, Le)) : 1, xa = Math.round(Ce * 100), wa = t.filter((M) => M.id !== x.id && !Y(t, M.id, x.id)).map(
751
+ (M) => `<option value="${z(M.id)}" ${x.parentId === M.id ? "selected" : ""}>${M.isGroup ? "📁 " : ""}${z(M.name)}</option>`
752
+ ).join(""), Aa = ce ? `
753
+ <div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${N};">
760
754
  <div class="ui-drawer-header">
761
755
  <div class="ui-drawer-header-left">
762
- <span class="ui-drawer-icon">${h.engrenagem}</span>
756
+ <span class="ui-drawer-icon">${y.engrenagem}</span>
763
757
  <span class="ui-drawer-title">Configurações da Camada</span>
764
- <span class="ui-drawer-layer-chip" title="${X}">${X}</span>
758
+ <span class="ui-drawer-layer-chip" title="${J}">${J}</span>
765
759
  </div>
766
760
  <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${C}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
767
- ${h.fechar}
761
+ ${y.fechar}
768
762
  </button>
769
763
  </div>
770
764
 
@@ -776,9 +770,9 @@ function Ga(e) {
776
770
  </div>
777
771
  <div class="ui-drawer-color-group">
778
772
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
779
- <span class="ui-drawer-color-sample" id="sample-color-${C}" style="background-color: ${j};"></span>
780
- <span class="ui-drawer-color-hex" id="hex-color-${C}">${j.toUpperCase()}</span>
781
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Sa(j, "#00e08a")}" class="ui-drawer-color-native" />
773
+ <span class="ui-drawer-color-sample" id="sample-color-${C}" style="background-color: ${N};"></span>
774
+ <span class="ui-drawer-color-hex" id="hex-color-${C}">${N.toUpperCase()}</span>
775
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Pa(N, "#00e08a")}" class="ui-drawer-color-native" />
782
776
  </label>
783
777
  </div>
784
778
  </div>
@@ -787,10 +781,10 @@ function Ga(e) {
787
781
  <div class="ui-drawer-row">
788
782
  <div class="ui-drawer-row-label">
789
783
  <span>Opacidade</span>
790
- <span class="ui-drawer-badge" id="badge-op-${C}">${ga}%</span>
784
+ <span class="ui-drawer-badge" id="badge-op-${C}">${xa}%</span>
791
785
  </div>
792
786
  <div class="ui-drawer-slider-container">
793
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(Le) || 0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
787
+ <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(Ce) || 0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
794
788
  </div>
795
789
  </div>
796
790
 
@@ -802,7 +796,7 @@ function Ga(e) {
802
796
  <div class="ui-drawer-select-wrapper">
803
797
  <select class="ui-drawer-select" data-layer-parent-select="${C}" aria-label="Grupo pai da camada">
804
798
  <option value="" ${x.parentId ? "" : "selected"}>(Nenhum - Nível Principal)</option>
805
- ${va}
799
+ ${wa}
806
800
  </select>
807
801
  </div>
808
802
  </div>
@@ -810,71 +804,71 @@ function Ga(e) {
810
804
 
811
805
  <div class="ui-drawer-footer">
812
806
  <div class="ui-drawer-meta-info">
813
- <span>${D.length > 0 ? `${D.length} subcamadas · ` : ""}${R.length} ${R.length === 1 ? "feição" : "feições"}</span>
807
+ <span>${T.length > 0 ? `${T.length} subcamadas · ` : ""}${R.length} ${R.length === 1 ? "feição" : "feições"}</span>
814
808
  </div>
815
809
  <div class="ui-drawer-actions">
816
810
  <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${C}" title="Adicionar nova camada dentro desta">
817
- ${h.mais} Subcamada
811
+ ${y.mais} Subcamada
818
812
  </button>
819
813
  <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${C}" title="Excluir esta camada e suas feições">
820
- ${h.lixeira}
814
+ ${y.lixeira}
821
815
  <span class="ui-btn-label">Excluir</span>
822
816
  </button>
823
817
  </div>
824
818
  </div>
825
819
  </div>
826
- ` : "", ha = ke.map((F) => b(F)).join("");
820
+ ` : "", Ea = Ie.map((M) => h(M)).join("");
827
821
  return `
828
- <div class="ui-layer-group ${B > 0 ? "is-sublayer-group" : ""}" data-layer-id="${C}" data-layer-depth="${B}" role="treeitem" aria-level="${B + 1}" aria-expanded="${Z}" part="grupo" style="--layer-active-color: ${j};">
829
- <div class="ui-layer-row ${W ? "" : "hidden-layer"} ${ce ? "active-drawing-layer" : ""} ${B > 0 ? "is-sublayer" : ""} ${G ? "is-group-row" : ""} ${sa ? "herdado-oculto" : ""} ${la ? "herdado-travado" : ""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${ce ? "camada camada-ativa" : "camada"}" ${ce ? 'aria-current="true"' : ""} style="--layer-depth: ${B};">
830
- <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${h.dragHandle}</div>
822
+ <div class="ui-layer-group ${B > 0 ? "is-sublayer-group" : ""}" data-layer-id="${C}" data-layer-depth="${B}" role="treeitem" aria-level="${B + 1}" aria-expanded="${ae}" part="grupo" style="--layer-active-color: ${N};">
823
+ <div class="ui-layer-row ${Z ? "" : "hidden-layer"} ${de ? "active-drawing-layer" : ""} ${B > 0 ? "is-sublayer" : ""} ${_ ? "is-group-row" : ""} ${pa ? "herdado-oculto" : ""} ${fa ? "herdado-travado" : ""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${de ? "camada camada-ativa" : "camada"}" ${de ? 'aria-current="true"' : ""} style="--layer-depth: ${B};">
824
+ <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${y.dragHandle}</div>
831
825
 
832
- <div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${W ? "Ocultar Camada" : "Exibir Camada"}" title="${W ? "Ocultar Camada" : "Exibir Camada"}">
833
- ${W ? h.olhoAberto : h.olhoFechado}
826
+ <div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${Z ? "Ocultar Camada" : "Exibir Camada"}" title="${Z ? "Ocultar Camada" : "Exibir Camada"}">
827
+ ${Z ? y.olhoAberto : y.olhoFechado}
834
828
  </div>
835
829
 
836
- <div class="ui-col ui-col-lock ${J ? "" : "ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${J ? "Desbloquear Camada" : "Bloquear Camada"}" title="${J ? "Desbloquear Camada" : "Bloquear Camada"}">
837
- ${J ? h.cadeadoTrancado : h.cadeadoAberto}
830
+ <div class="ui-col ui-col-lock ${ee ? "" : "ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${ee ? "Desbloquear Camada" : "Bloquear Camada"}" title="${ee ? "Desbloquear Camada" : "Bloquear Camada"}">
831
+ ${ee ? y.cadeadoTrancado : y.cadeadoAberto}
838
832
  </div>
839
833
 
840
- <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" role="button" tabindex="0" style="background: ${j};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
834
+ <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" role="button" tabindex="0" style="background: ${N};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
841
835
 
842
- <div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${Z ? "Recolher grupo" : "Expandir grupo"}">
843
- <span class="ui-chevron-icon ${Z ? "open" : ""}">${h.chevronDir}</span>
836
+ <div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${ae ? "Recolher grupo" : "Expandir grupo"}">
837
+ <span class="ui-chevron-icon ${ae ? "open" : ""}">${y.chevronDir}</span>
844
838
  </div>
845
839
 
846
840
  <div class="ui-col ui-col-name" data-layer-name-trigger="${C}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
847
- ${l === x.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${X}" />` : `${G ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${h.moverPasta}</span>` : ""}
848
- <span class="ui-name-text">${X}</span>
849
- ${Ve(ee.length, R.length, D.length, G)}`}
841
+ ${s === x.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${J}" />` : `${_ ? `<span class="ui-group-folder-icon" title="Grupo/Pasta">${y.moverPasta}</span>` : ""}
842
+ <span class="ui-name-text">${J}</span>
843
+ ${Qe(te.length, R.length, T.length, _)}`}
850
844
  </div>
851
845
 
852
846
  <div class="ui-col ui-col-actions">
853
- <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${h.alvoEnquadrar}</button>
854
- <button class="ui-micro-btn ${le ? "active" : ""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${le}">${h.engrenagem}</button>
847
+ <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${y.alvoEnquadrar}</button>
848
+ <button class="ui-micro-btn ${ce ? "active" : ""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${ce}">${y.engrenagem}</button>
855
849
  </div>
856
850
 
857
851
  <div class="ui-col ui-col-target" data-layer-target="${C}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
858
- <div class="ui-target-circle ${Ie ? "selected" : ca ? "partial" : ""}"></div>
852
+ <div class="ui-target-circle ${ke ? "selected" : ma ? "partial" : ""}"></div>
859
853
  </div>
860
854
  </div>
861
855
 
862
- ${ba}
856
+ ${Aa}
863
857
 
864
- <div class="ui-children-container ${B > 0 ? "is-subchildren" : ""}" role="group" style="display: ${Z ? "block" : "none"};">
858
+ <div class="ui-children-container ${B > 0 ? "is-subchildren" : ""}" role="group" style="display: ${ae ? "block" : "none"};">
859
+ ${Ea}
865
860
  ${ha}
866
- ${fa}
867
- ${ma}
868
- ${ke.length === 0 && R.length === 0 ? Ye(G) : ""}
861
+ ${ya}
862
+ ${Ie.length === 0 && R.length === 0 ? Je(_) : ""}
869
863
  </div>
870
864
  </div>
871
865
  `;
872
- }, $ = ne(r), I = v && v.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${z((s || "").trim())}”</div>` : $.map((E) => b(E)).join("");
866
+ }, F = se(t), k = v && v.camadasVisiveis.size === 0 ? `<div class="ui-search-empty" role="status">Nenhum resultado para “${z((l || "").trim())}”</div>` : F.map((I) => h(I)).join("");
873
867
  return `
874
- ${L}
868
+ ${S}
875
869
  <div class="ui-panel-box">
876
870
  <div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true" part="arvore">
877
- ${I}
871
+ ${k}
878
872
  </div>
879
873
  </div>
880
874
  `;
@@ -885,61 +879,61 @@ function Va(e) {
885
879
  gatilho: "data-layer-name-trigger",
886
880
  input: "data-inline-layer-input",
887
881
  linha: "data-layer-row",
888
- marcarEditando: (r) => {
889
- e.editingLayerId = r;
882
+ marcarEditando: (t) => {
883
+ e.editingLayerId = t;
890
884
  },
891
- aplicar: (r, a) => {
892
- const t = e.camadas.find((i) => i.id === r);
893
- return !a || !t || t.name === a ? null : (t.name = a, { detalhe: { camadaId: r, novoNome: a, camada: t }, salvar: !0 });
885
+ aplicar: (t, a) => {
886
+ const r = e.camadas.find((i) => i.id === t);
887
+ return !a || !r || r.name === a ? null : (r.name = a, { detalhe: { camadaId: t, novoNome: a, camada: r }, salvar: !0 });
894
888
  },
895
- emitir: (r) => e.dispararEvento("ui-camada-renomeada", r)
889
+ emitir: (t) => e.dispararEvento("ui-camada-renomeada", t)
896
890
  },
897
891
  {
898
892
  gatilho: "data-feat-name-trigger",
899
893
  input: "data-inline-feat-input",
900
894
  linha: "data-feat-row",
901
- marcarEditando: (r) => {
902
- e.editingFeatureId = r;
895
+ marcarEditando: (t) => {
896
+ e.editingFeatureId = t;
903
897
  },
904
- aplicar: (r, a) => {
905
- const t = e.feicoes.find((i) => i.id === r);
906
- return !a || !t || t.name === a ? null : (t.name = a, { detalhe: { feicaoId: r, novoNome: a, feicao: t }, salvar: !1 });
898
+ aplicar: (t, a) => {
899
+ const r = e.feicoes.find((i) => i.id === t);
900
+ return !a || !r || r.name === a ? null : (r.name = a, { detalhe: { feicaoId: t, novoNome: a, feicao: r }, salvar: !1 });
907
901
  },
908
- emitir: (r) => e.dispararEvento("ui-feicao-renomeada", r)
902
+ emitir: (t) => e.dispararEvento("ui-feicao-renomeada", t)
909
903
  }
910
904
  ];
911
905
  }
912
- function Me(e, r, a = r) {
913
- for (const t of Va(e))
914
- a.querySelectorAll(`[${t.gatilho}]`).forEach((i) => {
906
+ function Be(e, t, a = t) {
907
+ for (const r of Va(e))
908
+ a.querySelectorAll(`[${r.gatilho}]`).forEach((i) => {
915
909
  i.addEventListener("dblclick", (o) => {
916
910
  o.stopPropagation();
917
- const n = i.getAttribute(t.gatilho);
911
+ const n = i.getAttribute(r.gatilho);
918
912
  if (!n) return;
919
- t.marcarEditando(n), e.solicitarRenderizacao();
920
- const l = T(r, t.input, n);
921
- if (!l) return;
922
- l.focus(), l.select();
913
+ r.marcarEditando(n), e.solicitarRenderizacao();
914
+ const s = P(t, r.input, n);
915
+ if (!s) return;
916
+ s.focus(), s.select();
923
917
  let c = !1;
924
- const s = (p, u = !1) => {
925
- var d, m;
918
+ const l = (p, d = !1) => {
919
+ var u, f;
926
920
  if (!c) {
927
- if (c = !0, t.marcarEditando(null), p) {
928
- const f = t.aplicar(n, l.value.trim());
929
- f && (f.salvar && ((d = e.salvarLembrancaEstado) == null || d.call(e)), t.emitir(f.detalhe));
921
+ if (c = !0, r.marcarEditando(null), p) {
922
+ const m = r.aplicar(n, s.value.trim());
923
+ m && (m.salvar && ((u = e.salvarLembrancaEstado) == null || u.call(e)), r.emitir(m.detalhe));
930
924
  }
931
- e.solicitarRenderizacao(), u && ((m = T(r, t.linha, n)) == null || m.focus());
925
+ e.solicitarRenderizacao(), d && ((f = P(t, r.linha, n)) == null || f.focus());
932
926
  }
933
927
  };
934
- l.addEventListener("keydown", (p) => {
935
- p.key === "Enter" ? (p.preventDefault(), s(!0, !0)) : p.key === "Escape" && (p.preventDefault(), s(!1, !0));
936
- }), l.addEventListener("blur", () => s(!0));
928
+ s.addEventListener("keydown", (p) => {
929
+ p.key === "Enter" ? (p.preventDefault(), l(!0, !0)) : p.key === "Escape" && (p.preventDefault(), l(!1, !0));
930
+ }), s.addEventListener("blur", () => l(!0));
937
931
  });
938
932
  });
939
933
  }
940
- const Ua = ["dragging", "drop-above", "drop-below", "drop-into"];
941
- class _a {
942
- constructor(r, a) {
934
+ const Ya = ["dragging", "drop-above", "drop-below", "drop-into"];
935
+ class Ka {
936
+ constructor(t, a) {
943
937
  A(this, "host");
944
938
  A(this, "shadow");
945
939
  /** Cancela um arraste por toque em andamento (remove os ouvintes de `window`). */
@@ -953,85 +947,85 @@ class _a {
953
947
  camadaId: null,
954
948
  feicaoId: null
955
949
  });
956
- this.host = r, this.shadow = a;
950
+ this.host = t, this.shadow = a;
957
951
  }
958
952
  bindAll() {
959
953
  this.bindInlineRename(), this.bindDragAndDrop(), this.bindTouchDragAndDrop();
960
954
  }
961
955
  /** Solta o que ficou em `window` (arraste por toque interrompido pela desconexão do componente). */
962
956
  destruir() {
963
- var r;
964
- (r = this.cancelarToque) == null || r.call(this), this.cancelarToque = null;
957
+ var t;
958
+ (t = this.cancelarToque) == null || t.call(this), this.cancelarToque = null;
965
959
  }
966
960
  bindInlineRename() {
967
- Me(this.host, this.shadow);
961
+ Be(this.host, this.shadow);
968
962
  }
969
963
  limparClassesDeArraste() {
970
- this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((r) => {
971
- r.classList.remove(...Ua);
964
+ this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((t) => {
965
+ t.classList.remove(...Ya);
972
966
  });
973
967
  }
974
968
  /** Depois de qualquer mudança na ordem/hierarquia de camadas. */
975
969
  aposReordenarCamadas() {
976
- var r, a;
977
- (a = (r = this.host).salvarLembrancaEstado) == null || a.call(r), this.host.dispararEvento("ui-camadas-reordenadas", { camadas: [...this.host.camadas] }), this.host.solicitarRenderizacao();
970
+ var t, a;
971
+ (a = (t = this.host).salvarLembrancaEstado) == null || a.call(t), this.host.dispararEvento("ui-camadas-reordenadas", { camadas: [...this.host.camadas] }), this.host.solicitarRenderizacao();
978
972
  }
979
- emitirFeicaoMovida(r) {
973
+ emitirFeicaoMovida(t) {
980
974
  this.host.dispararEvento("ui-feicao-movida", {
981
- feicaoId: r.feicao.id,
982
- camadaOrigemId: r.camadaOrigemId,
983
- camadaDestinoId: r.camadaDestinoId,
984
- feicao: r.feicao
975
+ feicaoId: t.feicao.id,
976
+ camadaOrigemId: t.camadaOrigemId,
977
+ camadaDestinoId: t.camadaDestinoId,
978
+ feicao: t.feicao
985
979
  });
986
980
  }
987
- /** Camada travada (ou sob grupo travado) não recebe nem perde feições pelo arraste. */
988
- trocaEntreCamadasTravada(r, a) {
989
- var o;
990
- const t = (o = this.host.feicoes.find((n) => n.id === r)) == null ? void 0 : o.layerId;
991
- if (!a || t === a) return !1;
992
- const i = xe(this.host.camadas);
993
- return i.has(a) || !!t && i.has(t);
981
+ /** Camada travada (ou sob grupo travado) ou feição individualmente travada não pode ser movida entre camadas. */
982
+ trocaEntreCamadasTravada(t, a) {
983
+ const r = this.host.feicoes.find((n) => n.id === t), i = r == null ? void 0 : r.layerId;
984
+ if (!a || i === a) return !1;
985
+ if ((r == null ? void 0 : r.locked) === !0) return !0;
986
+ const o = ie(this.host.camadas);
987
+ return o.has(a) || !!i && o.has(i);
994
988
  }
995
- arrasteBloqueado(r) {
996
- return !!r.closest("input, button, select") || !!this.host.editingLayerId || !!this.host.editingFeatureId;
989
+ arrasteBloqueado(t) {
990
+ return !!t.closest("input, button, select") || !!this.host.editingLayerId || !!this.host.editingFeatureId;
997
991
  }
998
992
  /** Render completo: zera o arraste e liga camadas e feições do painel todo. */
999
993
  bindDragAndDrop() {
1000
994
  this.arraste = { tipo: null, camadaId: null, feicaoId: null }, this.vincularArrasteCamadas(this.shadow), this.vincularArrasteFeicoes(this.shadow);
1001
995
  }
1002
996
  /** Atualização incremental: liga renomear e arraste só nas linhas de feição novas dentro de `raiz`. */
1003
- bindLinhasFeicao(r) {
1004
- Me(this.host, this.shadow, r), this.vincularArrasteFeicoes(r);
997
+ bindLinhasFeicao(t) {
998
+ Be(this.host, this.shadow, t), this.vincularArrasteFeicoes(t);
1005
999
  }
1006
- vincularArrasteCamadas(r) {
1007
- r.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((a) => {
1008
- const t = a.getAttribute("data-layer-id");
1009
- t && (a.addEventListener("dragstart", (i) => {
1000
+ vincularArrasteCamadas(t) {
1001
+ t.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((a) => {
1002
+ const r = a.getAttribute("data-layer-id");
1003
+ r && (a.addEventListener("dragstart", (i) => {
1010
1004
  const o = i;
1011
1005
  if (this.arrasteBloqueado(o.target)) {
1012
1006
  o.preventDefault();
1013
1007
  return;
1014
1008
  }
1015
- this.arraste.tipo = "layer", this.arraste.camadaId = t, o.dataTransfer && (o.dataTransfer.setData("text/plain", JSON.stringify({ type: "layer", id: t })), o.dataTransfer.effectAllowed = "move"), a.classList.add("dragging");
1009
+ this.arraste.tipo = "layer", this.arraste.camadaId = r, o.dataTransfer && (o.dataTransfer.setData("text/plain", JSON.stringify({ type: "layer", id: r })), o.dataTransfer.effectAllowed = "move"), a.classList.add("dragging");
1016
1010
  }), a.addEventListener("dragover", (i) => {
1017
1011
  const o = i;
1018
1012
  if (o.preventDefault(), o.stopPropagation(), o.dataTransfer && (o.dataTransfer.dropEffect = "move"), this.arraste.tipo === "layer") {
1019
- if (this.arraste.camadaId === t) return;
1020
- const n = a.getBoundingClientRect(), l = Ra((o.clientY - n.top) / n.height);
1021
- a.classList.toggle("drop-above", l === "acima"), a.classList.toggle("drop-below", l === "abaixo"), a.classList.toggle("drop-into", l === "dentro");
1013
+ if (this.arraste.camadaId === r) return;
1014
+ const n = a.getBoundingClientRect(), s = Me((o.clientY - n.top) / n.height);
1015
+ a.classList.toggle("drop-above", s === "acima"), a.classList.toggle("drop-below", s === "abaixo"), a.classList.toggle("drop-into", s === "dentro");
1022
1016
  } else this.arraste.tipo === "feature" && a.classList.add("drop-into");
1023
1017
  }), a.addEventListener("dragleave", (i) => {
1024
1018
  const o = i.relatedTarget;
1025
1019
  o && a.contains(o) || a.classList.remove("drop-above", "drop-below", "drop-into");
1026
1020
  }), a.addEventListener("drop", (i) => {
1027
- var l;
1021
+ var s;
1028
1022
  const o = i;
1029
1023
  o.preventDefault(), o.stopPropagation();
1030
1024
  const n = a.classList.contains("drop-into") ? "dentro" : a.classList.contains("drop-above") ? "acima" : "abaixo";
1031
1025
  if (this.limparClassesDeArraste(), this.arraste.tipo === "layer") {
1032
- if (!this.arraste.camadaId || this.arraste.camadaId === t || !this.host.camadas.some((s) => s.id === this.arraste.camadaId) || !this.host.camadas.some((s) => s.id === t)) return;
1033
- const c = Oa(this.host.camadas, this.arraste.camadaId, t, n);
1034
- (c == null ? void 0 : c.tipo) === "hierarquia" ? ((l = this.host.expandedLayers) == null || l.add(c.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1026
+ if (!this.arraste.camadaId || this.arraste.camadaId === r || !this.host.camadas.some((l) => l.id === this.arraste.camadaId) || !this.host.camadas.some((l) => l.id === r)) return;
1027
+ const c = ze(this.host.camadas, this.arraste.camadaId, r, n);
1028
+ (c == null ? void 0 : c.tipo) === "hierarquia" ? ((s = this.host.expandedLayers) == null || s.add(c.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1035
1029
  camadaId: c.camada.id,
1036
1030
  novoParentId: c.novoParentId,
1037
1031
  parentAnteriorId: c.parentAnteriorId,
@@ -1043,8 +1037,8 @@ class _a {
1043
1037
  camada: c.camada
1044
1038
  }), this.aposReordenarCamadas();
1045
1039
  } else if (this.arraste.tipo === "feature") {
1046
- if (!this.arraste.feicaoId || this.trocaEntreCamadasTravada(this.arraste.feicaoId, t)) return;
1047
- const c = Na(this.host.feicoes, this.host.camadas, this.arraste.feicaoId, t);
1040
+ if (!this.arraste.feicaoId || this.trocaEntreCamadasTravada(this.arraste.feicaoId, r)) return;
1041
+ const c = Ga(this.host.feicoes, this.host.camadas, this.arraste.feicaoId, r);
1048
1042
  c && (this.emitirFeicaoMovida(c), this.host.solicitarRenderizacao());
1049
1043
  }
1050
1044
  }), a.addEventListener("dragend", () => {
@@ -1052,32 +1046,32 @@ class _a {
1052
1046
  }));
1053
1047
  });
1054
1048
  }
1055
- vincularArrasteFeicoes(r) {
1056
- r.querySelectorAll('.ui-feat-row[draggable="true"]').forEach((a) => {
1057
- const t = a.getAttribute("data-feat-row"), i = a.getAttribute("data-feat-layer");
1058
- t && (a.addEventListener("dragstart", (o) => {
1049
+ vincularArrasteFeicoes(t) {
1050
+ t.querySelectorAll('.ui-feat-row[draggable="true"]').forEach((a) => {
1051
+ const r = a.getAttribute("data-feat-row"), i = a.getAttribute("data-feat-layer");
1052
+ r && (a.addEventListener("dragstart", (o) => {
1059
1053
  const n = o;
1060
1054
  if (this.arrasteBloqueado(n.target)) {
1061
1055
  n.preventDefault();
1062
1056
  return;
1063
1057
  }
1064
- n.stopPropagation(), this.arraste.tipo = "feature", this.arraste.feicaoId = t, this.arraste.camadaId = i, n.dataTransfer && (n.dataTransfer.setData("text/plain", JSON.stringify({ type: "feature", id: t, layerId: i })), n.dataTransfer.effectAllowed = "move"), a.classList.add("dragging");
1058
+ n.stopPropagation(), this.arraste.tipo = "feature", this.arraste.feicaoId = r, this.arraste.camadaId = i, n.dataTransfer && (n.dataTransfer.setData("text/plain", JSON.stringify({ type: "feature", id: r, layerId: i })), n.dataTransfer.effectAllowed = "move"), a.classList.add("dragging");
1065
1059
  }), a.addEventListener("dragover", (o) => {
1066
1060
  const n = o;
1067
- if (this.arraste.tipo !== "feature" || this.arraste.feicaoId === t) return;
1061
+ if (this.arraste.tipo !== "feature" || this.arraste.feicaoId === r) return;
1068
1062
  n.preventDefault(), n.stopPropagation(), n.dataTransfer && (n.dataTransfer.dropEffect = "move");
1069
- const l = a.getBoundingClientRect(), c = n.clientY - l.top < l.height / 2;
1063
+ const s = a.getBoundingClientRect(), c = n.clientY - s.top < s.height / 2;
1070
1064
  a.classList.toggle("drop-above", c), a.classList.toggle("drop-below", !c);
1071
1065
  }), a.addEventListener("dragleave", (o) => {
1072
1066
  const n = o.relatedTarget;
1073
1067
  n && a.contains(n) || a.classList.remove("drop-above", "drop-below");
1074
1068
  }), a.addEventListener("drop", (o) => {
1075
1069
  const n = o;
1076
- if (this.arraste.tipo !== "feature" || !this.arraste.feicaoId || this.arraste.feicaoId === t) return;
1070
+ if (this.arraste.tipo !== "feature" || !this.arraste.feicaoId || this.arraste.feicaoId === r) return;
1077
1071
  n.preventDefault(), n.stopPropagation();
1078
- const l = a.classList.contains("drop-above");
1072
+ const s = a.classList.contains("drop-above");
1079
1073
  if (this.limparClassesDeArraste(), this.trocaEntreCamadasTravada(this.arraste.feicaoId, i)) return;
1080
- const c = Ha(this.host.feicoes, this.arraste.feicaoId, t, l);
1074
+ const c = _a(this.host.feicoes, this.arraste.feicaoId, r, s);
1081
1075
  c && (c.mudouDeCamada && this.emitirFeicaoMovida(c), this.host.dispararEvento("ui-feicoes-reordenadas", { feicoes: [...this.host.feicoes] }), this.host.solicitarRenderizacao());
1082
1076
  }), a.addEventListener("dragend", (o) => {
1083
1077
  o.stopPropagation(), this.arraste.tipo = null, this.arraste.feicaoId = null, this.arraste.camadaId = null, this.limparClassesDeArraste();
@@ -1086,111 +1080,126 @@ class _a {
1086
1080
  }
1087
1081
  /**
1088
1082
  * Suporte a arraste por toque e ponteiro no handle (.ui-col-drag) para tablets e mobile.
1083
+ * Suporta tanto reordenação (acima/abaixo) quanto aninhamento hierárquico (drop-into),
1084
+ * mantendo paridade total com o Drag & Drop HTML5.
1089
1085
  * Os ouvintes de `window` existem só durante o gesto e são soltos em `destruir()`.
1090
1086
  */
1091
1087
  bindTouchDragAndDrop() {
1092
- this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach((r) => {
1093
- const a = r.closest(".ui-layer-row");
1088
+ this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach((t) => {
1089
+ const a = t.closest(".ui-layer-row");
1094
1090
  if (!a) return;
1095
- const t = a.getAttribute("data-layer-id");
1096
- t && r.addEventListener("pointerdown", (i) => {
1097
- var u;
1091
+ const r = a.getAttribute("data-layer-id");
1092
+ r && t.addEventListener("pointerdown", (i) => {
1093
+ var d;
1098
1094
  const o = i;
1099
1095
  if (o.pointerType === "mouse" && o.button !== 0 || this.host.editingLayerId || this.host.editingFeatureId) return;
1100
- (u = this.cancelarToque) == null || u.call(this);
1101
- let n = null, l = !1;
1102
- const c = (d) => {
1103
- d.preventDefault(), a.classList.add("dragging");
1104
- const m = this.shadow.elementFromPoint(d.clientX, d.clientY), f = m ? m.closest(".ui-layer-row") : null;
1105
- if (n && n !== f && n.classList.remove("drop-above", "drop-below"), f && f !== a) {
1106
- n = f;
1107
- const g = f.getBoundingClientRect();
1108
- l = d.clientY - g.top < g.height / 2, f.classList.toggle("drop-above", l), f.classList.toggle("drop-below", !l);
1096
+ (d = this.cancelarToque) == null || d.call(this);
1097
+ let n = null, s = "abaixo";
1098
+ const c = (u) => {
1099
+ u.preventDefault(), a.classList.add("dragging");
1100
+ const f = this.shadow.elementFromPoint(u.clientX, u.clientY), m = f ? f.closest(".ui-layer-row") : null;
1101
+ if (n && n !== m && n.classList.remove("drop-above", "drop-below", "drop-into"), m && m !== a) {
1102
+ n = m;
1103
+ const g = m.getBoundingClientRect();
1104
+ s = g.height > 0 ? Me((u.clientY - g.top) / g.height) : "abaixo", m.classList.toggle("drop-above", s === "acima"), m.classList.toggle("drop-below", s === "abaixo"), m.classList.toggle("drop-into", s === "dentro");
1109
1105
  } else
1110
1106
  n = null;
1111
- }, s = () => {
1107
+ }, l = () => {
1112
1108
  window.removeEventListener("pointermove", c), window.removeEventListener("pointerup", p), window.removeEventListener("pointercancel", p), this.cancelarToque = null;
1113
1109
  }, p = () => {
1114
- s();
1115
- const d = n == null ? void 0 : n.getAttribute("data-layer-id");
1116
- this.limparClassesDeArraste(), d && ja(this.host.camadas, t, d, l) && this.aposReordenarCamadas();
1110
+ var m;
1111
+ l();
1112
+ const u = n == null ? void 0 : n.getAttribute("data-layer-id");
1113
+ if (this.limparClassesDeArraste(), !u || u === r) return;
1114
+ const f = ze(this.host.camadas, r, u, s);
1115
+ f && (f.tipo === "hierarquia" ? ((m = this.host.expandedLayers) == null || m.add(f.novoParentId), this.host.dispararEvento("ui-camada-mover-hierarquia", {
1116
+ camadaId: f.camada.id,
1117
+ novoParentId: f.novoParentId,
1118
+ parentAnteriorId: f.parentAnteriorId,
1119
+ camada: f.camada
1120
+ })) : f.parentAnteriorId !== f.novoParentId && this.host.dispararEvento("ui-camada-mover-hierarquia", {
1121
+ camadaId: f.camada.id,
1122
+ novoParentId: f.novoParentId,
1123
+ parentAnteriorId: f.parentAnteriorId,
1124
+ camada: f.camada
1125
+ }), this.aposReordenarCamadas());
1117
1126
  };
1118
1127
  this.cancelarToque = () => {
1119
- s(), this.limparClassesDeArraste();
1128
+ l(), this.limparClassesDeArraste();
1120
1129
  }, window.addEventListener("pointermove", c, { passive: !1 }), window.addEventListener("pointerup", p), window.addEventListener("pointercancel", p);
1121
1130
  });
1122
1131
  });
1123
1132
  }
1124
1133
  }
1125
- const Ya = "ui_camadas_estado_";
1126
- function Ka(e, r) {
1127
- const a = (e || r || "default").trim();
1128
- return `${Ya}${a}`;
1134
+ const Qa = "ui_camadas_estado_";
1135
+ function Xa(e, t) {
1136
+ const a = (e || t || "default").trim();
1137
+ return `${Qa}${a}`;
1129
1138
  }
1130
- function ve(e) {
1139
+ function be(e) {
1131
1140
  return !!e && typeof e == "object" && !Array.isArray(e);
1132
1141
  }
1133
- function ae(e) {
1134
- return Array.isArray(e) ? e.filter((r) => typeof r == "string") : [];
1142
+ function re(e) {
1143
+ return Array.isArray(e) ? e.filter((t) => typeof t == "string") : [];
1135
1144
  }
1136
- function Fe(e) {
1137
- if (!ve(e)) return;
1138
- const r = {};
1139
- return typeof e.name == "string" && (r.name = e.name), typeof e.visible == "boolean" && (r.visible = e.visible), typeof e.locked == "boolean" && (r.locked = e.locked), typeof e.opacity == "number" && Number.isFinite(e.opacity) && e.opacity >= 0 && e.opacity <= 1 && (r.opacity = e.opacity), typeof e.color == "string" && (r.color = e.color), (typeof e.parentId == "string" || e.parentId === null) && (r.parentId = e.parentId), r;
1140
- }
1141
- function Qa(e) {
1142
- if (!ve(e)) return null;
1143
- const r = {};
1144
- if (ve(e.camadasOverrides))
1145
- for (const [t, i] of Object.entries(e.camadasOverrides)) {
1146
- const o = Fe(i);
1145
+ function qe(e) {
1146
+ if (!be(e)) return;
1147
+ const t = {};
1148
+ return typeof e.name == "string" && (t.name = e.name), typeof e.visible == "boolean" && (t.visible = e.visible), typeof e.locked == "boolean" && (t.locked = e.locked), typeof e.opacity == "number" && Number.isFinite(e.opacity) && e.opacity >= 0 && e.opacity <= 1 && (t.opacity = e.opacity), typeof e.color == "string" && (t.color = e.color), (typeof e.parentId == "string" || e.parentId === null) && (t.parentId = e.parentId), t;
1149
+ }
1150
+ function Wa(e) {
1151
+ if (!be(e)) return null;
1152
+ const t = {};
1153
+ if (be(e.camadasOverrides))
1154
+ for (const [r, i] of Object.entries(e.camadasOverrides)) {
1155
+ const o = qe(i);
1147
1156
  if (!o) continue;
1148
- const n = Fe(i.origem);
1149
- r[t] = n ? { ...o, origem: n } : o;
1157
+ const n = qe(i.origem);
1158
+ t[r] = n ? { ...o, origem: n } : o;
1150
1159
  }
1151
1160
  const a = e.altura;
1152
1161
  return {
1153
1162
  versao: typeof e.versao == "number" ? e.versao : 1,
1154
- expandedLayerIds: ae(e.expandedLayerIds),
1155
- collapsedLayerIds: ae(e.collapsedLayerIds),
1163
+ expandedLayerIds: re(e.expandedLayerIds),
1164
+ collapsedLayerIds: re(e.collapsedLayerIds),
1156
1165
  camadaAtivaId: typeof e.camadaAtivaId == "string" ? e.camadaAtivaId : null,
1157
1166
  painelColapsado: typeof e.painelColapsado == "boolean" ? e.painelColapsado : void 0,
1158
- ordemCamadasIds: ae(e.ordemCamadasIds),
1159
- ordemOrigemIds: Array.isArray(e.ordemOrigemIds) ? ae(e.ordemOrigemIds) : void 0,
1167
+ ordemCamadasIds: re(e.ordemCamadasIds),
1168
+ ordemOrigemIds: Array.isArray(e.ordemOrigemIds) ? re(e.ordemOrigemIds) : void 0,
1160
1169
  mapaBaseAtivo: typeof e.mapaBaseAtivo == "string" ? e.mapaBaseAtivo : void 0,
1161
1170
  densidade: e.densidade === "compacto" || e.densidade === "normal" ? e.densidade : void 0,
1162
1171
  altura: typeof a == "number" && Number.isFinite(a) && a > 0 ? a : null,
1163
- camadasOverrides: r,
1172
+ camadasOverrides: t,
1164
1173
  ultimaAtualizacao: typeof e.ultimaAtualizacao == "number" ? e.ultimaAtualizacao : void 0
1165
1174
  };
1166
1175
  }
1167
- function be(e) {
1176
+ function he(e) {
1168
1177
  if (typeof window > "u" || typeof localStorage > "u")
1169
1178
  return null;
1170
1179
  try {
1171
- const r = localStorage.getItem(e);
1172
- return r ? Qa(JSON.parse(r)) : null;
1173
- } catch (r) {
1174
- console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`, r);
1180
+ const t = localStorage.getItem(e);
1181
+ return t ? Wa(JSON.parse(t)) : null;
1182
+ } catch (t) {
1183
+ console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`, t);
1175
1184
  }
1176
1185
  return null;
1177
1186
  }
1178
- function Xa(e, r) {
1187
+ function Ja(e, t) {
1179
1188
  if (!(typeof window > "u" || typeof localStorage > "u"))
1180
1189
  try {
1181
- localStorage.setItem(e, JSON.stringify(r));
1190
+ localStorage.setItem(e, JSON.stringify(t));
1182
1191
  } catch (a) {
1183
1192
  console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`, a);
1184
1193
  }
1185
1194
  }
1186
- function Wa(e) {
1195
+ function Za(e) {
1187
1196
  if (!(typeof window > "u" || typeof localStorage > "u"))
1188
1197
  try {
1189
1198
  localStorage.removeItem(e);
1190
1199
  } catch {
1191
1200
  }
1192
1201
  }
1193
- function We(e) {
1202
+ function ta(e) {
1194
1203
  return {
1195
1204
  name: e.name,
1196
1205
  visible: e.visible !== !1,
@@ -1200,57 +1209,57 @@ function We(e) {
1200
1209
  parentId: e.parentId !== void 0 ? e.parentId : null
1201
1210
  };
1202
1211
  }
1203
- function Ja(e, r, a, t) {
1204
- var u;
1212
+ function et(e, t, a, r) {
1213
+ var d;
1205
1214
  if (!Array.isArray(e)) return;
1206
- const i = (r == null ? void 0 : r.camadasOverrides) || {}, o = new Set((r == null ? void 0 : r.expandedLayerIds) || []), n = new Set((r == null ? void 0 : r.collapsedLayerIds) || []), l = o.size > 0 || n.size > 0;
1207
- for (let d = 0; d < e.length; d++) {
1208
- const m = e[d], f = i[m.id];
1209
- if (t == null || t.set(m.id, We(m)), f) {
1210
- const g = f.origem, v = (y) => {
1211
- var M;
1212
- const k = (M = t == null ? void 0 : t.get(m.id)) == null ? void 0 : M[y];
1213
- return g !== void 0 && g[y] !== k;
1215
+ const i = (t == null ? void 0 : t.camadasOverrides) || {}, o = new Set((t == null ? void 0 : t.expandedLayerIds) || []), n = new Set((t == null ? void 0 : t.collapsedLayerIds) || []), s = o.size > 0 || n.size > 0;
1216
+ for (let u = 0; u < e.length; u++) {
1217
+ const f = e[u], m = i[f.id];
1218
+ if (r == null || r.set(f.id, ta(f)), m) {
1219
+ const g = m.origem, v = (b) => {
1220
+ var L;
1221
+ const E = (L = r == null ? void 0 : r.get(f.id)) == null ? void 0 : L[b];
1222
+ return g !== void 0 && g[b] !== E;
1214
1223
  };
1215
- typeof f.name == "string" && f.name.trim() && !v("name") && (m.name = f.name), typeof f.visible == "boolean" && !v("visible") && (m.visible = f.visible), typeof f.locked == "boolean" && !v("locked") && (m.locked = f.locked), typeof f.opacity == "number" && !v("opacity") && (m.opacity = f.opacity), typeof f.color == "string" && !v("color") && (m.color = f.color), f.parentId !== void 0 && !v("parentId") && (m.parentId = f.parentId);
1224
+ typeof m.name == "string" && m.name.trim() && !v("name") && (f.name = m.name), typeof m.visible == "boolean" && !v("visible") && (f.visible = m.visible), typeof m.locked == "boolean" && !v("locked") && (f.locked = m.locked), typeof m.opacity == "number" && !v("opacity") && (f.opacity = m.opacity), typeof m.color == "string" && !v("color") && (f.color = m.color), m.parentId !== void 0 && !v("parentId") && (f.parentId = m.parentId);
1216
1225
  }
1217
- l ? o.has(m.id) ? a.add(m.id) : n.has(m.id) ? a.delete(m.id) : a.add(m.id) : a.add(m.id);
1226
+ s ? o.has(f.id) ? a.add(f.id) : n.has(f.id) ? a.delete(f.id) : a.add(f.id) : a.add(f.id);
1218
1227
  }
1219
- for (let d = 0; d < e.length; d++) {
1220
- const m = e[d];
1221
- m.parentId && (m.parentId === m.id || U(e, m.parentId, m.id)) && (m.parentId = ((u = t == null ? void 0 : t.get(m.id)) == null ? void 0 : u.parentId) ?? null);
1222
- }
1223
- const c = new Set(e.map((d) => d.id)), s = r == null ? void 0 : r.ordemOrigemIds;
1224
- if (!(Array.isArray(s) && (() => {
1225
- const d = new Set(s), m = (f) => f.filter((g) => c.has(g) && d.has(g)).join("|");
1226
- return m(s) !== m(e.map((f) => f.id));
1227
- })()) && Array.isArray(r == null ? void 0 : r.ordemCamadasIds) && r.ordemCamadasIds.length > 0) {
1228
- const d = /* @__PURE__ */ new Map();
1229
- r.ordemCamadasIds.forEach((m, f) => d.set(m, f)), e.sort((m, f) => {
1230
- const g = d.has(m.id) ? d.get(m.id) : 9999, v = d.has(f.id) ? d.get(f.id) : 9999;
1228
+ for (let u = 0; u < e.length; u++) {
1229
+ const f = e[u];
1230
+ f.parentId && (f.parentId === f.id || Y(e, f.parentId, f.id)) && (f.parentId = ((d = r == null ? void 0 : r.get(f.id)) == null ? void 0 : d.parentId) ?? null);
1231
+ }
1232
+ const c = new Set(e.map((u) => u.id)), l = t == null ? void 0 : t.ordemOrigemIds;
1233
+ if (!(Array.isArray(l) && (() => {
1234
+ const u = new Set(l), f = (m) => m.filter((g) => c.has(g) && u.has(g)).join("|");
1235
+ return f(l) !== f(e.map((m) => m.id));
1236
+ })()) && Array.isArray(t == null ? void 0 : t.ordemCamadasIds) && t.ordemCamadasIds.length > 0) {
1237
+ const u = /* @__PURE__ */ new Map();
1238
+ t.ordemCamadasIds.forEach((f, m) => u.set(f, m)), e.sort((f, m) => {
1239
+ const g = u.has(f.id) ? u.get(f.id) : 9999, v = u.has(m.id) ? u.get(m.id) : 9999;
1231
1240
  return g - v;
1232
1241
  });
1233
1242
  }
1234
1243
  }
1235
- function Za(e) {
1236
- const { estadoAnterior: r, camadas: a, expandedLayers: t } = e;
1237
- let i = (r == null ? void 0 : r.expandedLayerIds) || [], o = (r == null ? void 0 : r.collapsedLayerIds) || [], n = (r == null ? void 0 : r.ordemCamadasIds) || [], l = r == null ? void 0 : r.ordemOrigemIds;
1244
+ function at(e) {
1245
+ const { estadoAnterior: t, camadas: a, expandedLayers: r } = e;
1246
+ let i = (t == null ? void 0 : t.expandedLayerIds) || [], o = (t == null ? void 0 : t.collapsedLayerIds) || [], n = (t == null ? void 0 : t.ordemCamadasIds) || [], s = t == null ? void 0 : t.ordemOrigemIds;
1238
1247
  const c = {
1239
- ...(r == null ? void 0 : r.camadasOverrides) || {}
1248
+ ...(t == null ? void 0 : t.camadasOverrides) || {}
1240
1249
  };
1241
- a.length > 0 && (i = [], o = [], n = a.map((s) => s.id), l = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((s) => {
1242
- var p, u;
1243
- t.has(s.id) ? i.push(s.id) : o.push(s.id), c[s.id] = {
1244
- name: s.name,
1245
- visible: s.visible !== !1,
1246
- locked: !!s.locked,
1247
- opacity: typeof s.opacity == "number" ? s.opacity : 1,
1248
- color: s.color || "#00E08A",
1249
- parentId: s.parentId !== void 0 ? s.parentId : null,
1250
- origem: ((p = e.origensCamadas) == null ? void 0 : p.get(s.id)) ?? ((u = c[s.id]) == null ? void 0 : u.origem)
1250
+ a.length > 0 && (i = [], o = [], n = a.map((l) => l.id), s = e.origensCamadas ? [...e.origensCamadas.keys()] : n, a.forEach((l) => {
1251
+ var p, d;
1252
+ r.has(l.id) ? i.push(l.id) : o.push(l.id), c[l.id] = {
1253
+ name: l.name,
1254
+ visible: l.visible !== !1,
1255
+ locked: !!l.locked,
1256
+ opacity: typeof l.opacity == "number" ? l.opacity : 1,
1257
+ color: l.color || "#00E08A",
1258
+ parentId: l.parentId !== void 0 ? l.parentId : null,
1259
+ origem: ((p = e.origensCamadas) == null ? void 0 : p.get(l.id)) ?? ((d = c[l.id]) == null ? void 0 : d.origem)
1251
1260
  };
1252
1261
  }));
1253
- for (const s of e.camadasRemovidas ?? []) delete c[s];
1262
+ for (const l of e.camadasRemovidas ?? []) delete c[l];
1254
1263
  return {
1255
1264
  versao: 1,
1256
1265
  expandedLayerIds: i,
@@ -1258,7 +1267,7 @@ function Za(e) {
1258
1267
  camadaAtivaId: e.camadaAtivaId,
1259
1268
  painelColapsado: e.painelColapsado,
1260
1269
  ordemCamadasIds: n,
1261
- ordemOrigemIds: l,
1270
+ ordemOrigemIds: s,
1262
1271
  mapaBaseAtivo: e.mapaBaseAtivo,
1263
1272
  densidade: e.densidade,
1264
1273
  altura: e.altura,
@@ -1266,460 +1275,483 @@ function Za(e) {
1266
1275
  ultimaAtualizacao: Date.now()
1267
1276
  };
1268
1277
  }
1269
- const er = `:host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-respiro: 8px;--camada-barra-altura: 28px;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);max-height:var(--camada-barra-altura);display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 var(--camada-respiro) var(--camada-respiro);display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro));padding:0 var(--camada-respiro);gap:8px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:24px;height:24px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);border:none;color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 var(--camada-respiro);gap:6px;box-sizing:border-box;overflow:hidden;position:relative;flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro))}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{display:inline-flex;align-items:center;color:var(--ui-cor-texto-secundario, #888899);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 8px;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-footer-right{display:flex;align-items:center;gap:4px;flex:1 1 auto;min-width:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0}.ui-footer-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;background-size:10px;border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background-color:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.ui-truncate-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;margin:4px 8px 6px;background:color-mix(in srgb,var(--ui-cor-superficie-elevada, #1c1c21) 70%,transparent);border:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 4px);font-size:10px;color:var(--ui-cor-texto-secundario, #9ca3af)}.ui-truncate-notice span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-truncate-more-btn{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--ui-cor-superficie, #27272a);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 4px);color:var(--ui-cor-primaria, #00E08A);font-size:10px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--camada-transicao)}.ui-truncate-more-btn:hover{background:var(--ui-cor-superficie-hover, #3f3f46);border-color:var(--ui-cor-primaria, #00E08A)}.ui-truncate-more-btn:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}`;
1270
- function ar(e, r) {
1271
- r.querySelectorAll("[data-layer-row]").forEach((t) => {
1272
- const o = t.getAttribute("data-layer-row") === e.camadaAtivaId;
1273
- t.classList.toggle("active-drawing-layer", o), qe(t, "camada-ativa", o), o ? t.setAttribute("aria-current", "true") : t.removeAttribute("aria-current");
1278
+ const tt = `:host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-respiro: 8px;--camada-barra-altura: 28px;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-degrade-interno, var(--ui-camadas-fundo, var(--ui-fundo-superficie, 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-camadas-toggle-fundo, var(--ui-fundo-superficie, 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-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 var(--camada-respiro) var(--camada-respiro);display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro));padding:0 var(--camada-respiro);gap:8px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:24px;height:24px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);border:none;color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions,.ui-layer-row:focus-within .ui-col-actions,.ui-feat-row:focus-within .ui-col-actions,.ui-col-actions:has(.ui-micro-btn.active){opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 var(--camada-respiro);gap:6px;box-sizing:border-box;overflow:hidden;position:relative;flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro))}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{display:inline-flex;align-items:center;color:var(--ui-cor-texto-secundario, #888899);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 8px;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-footer-right{display:flex;align-items:center;gap:4px;flex:1 1 auto;min-width:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:var(--ui-cor-texto-erro, #ff5555);background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 15%,transparent)}.ui-footer-btn.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c)!important;color:var(--ui-cor-botao-destrutivo-texto, #ffffff)!important}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0}.ui-footer-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;--_chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background:var(--_chevron) right 6px center / 10px no-repeat,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background:var(--_chevron) right 6px center / 10px no-repeat,var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-drawer-btn-sublayer{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);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:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.ui-truncate-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;margin:4px 8px 6px;background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #1a1a1e) 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, #9696a6)}.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, #141417);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-hover-menu, rgba(255, 255, 255, .08));border-color:var(--ui-cor-primaria, #00E08A)}.ui-truncate-more-btn:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}:host(.degrade),:host(.gradiente),:host([data-degrade]:not([data-degrade="false"])),.ui-camadas-container[data-degrade]:not([data-degrade=false]){--ui-camadas-fundo: var(--ui-gradiente-superficie);--ui-camadas-toggle-fundo: var(--ui-gradiente-superficie)}`;
1279
+ function rt(e, t) {
1280
+ t.querySelectorAll("[data-layer-row]").forEach((r) => {
1281
+ const o = r.getAttribute("data-layer-row") === e.camadaAtivaId;
1282
+ r.classList.toggle("active-drawing-layer", o), Te(r, "camada-ativa", o), o ? r.setAttribute("aria-current", "true") : r.removeAttribute("aria-current");
1274
1283
  });
1275
1284
  }
1276
- function rr(e, r) {
1277
- r.querySelectorAll(".ui-feat-row").forEach((a) => {
1278
- const t = a.getAttribute("data-feat-row"), i = t ? e.selectedFeatureIds.has(t) : !1;
1279
- a.classList.toggle("selected-row", i), qe(a, "feicao-selecionada", i), a.setAttribute("aria-selected", String(i));
1285
+ function it(e, t) {
1286
+ t.querySelectorAll(".ui-feat-row").forEach((a) => {
1287
+ const r = a.getAttribute("data-feat-row"), i = r ? e.selectedFeatureIds.has(r) : !1;
1288
+ a.classList.toggle("selected-row", i), Te(a, "feicao-selecionada", i), a.setAttribute("aria-selected", String(i));
1280
1289
  const o = a.querySelector(".ui-target-circle");
1281
1290
  o && o.classList.toggle("selected", i);
1282
- }), r.querySelectorAll(".ui-layer-group").forEach((a) => {
1283
- const t = a.getAttribute("data-layer-id"), i = Q(e.camadas, e.feicoes, t ?? "");
1284
- Je(a.querySelector(".ui-layer-row .ui-target-circle"), i, e.selectedFeatureIds);
1285
- }), Ze(e, r);
1291
+ }), t.querySelectorAll(".ui-layer-group").forEach((a) => {
1292
+ const r = a.getAttribute("data-layer-id"), i = W(e.camadas, e.feicoes, r ?? ""), o = V(i, e.searchQuery);
1293
+ ra(a.querySelector(".ui-layer-row .ui-target-circle"), o, e.selectedFeatureIds);
1294
+ }), ia(e, t);
1286
1295
  }
1287
- function Je(e, r, a) {
1296
+ function ra(e, t, a) {
1288
1297
  if (!e) return;
1289
- if (r.length === 0) {
1298
+ if (t.length === 0) {
1290
1299
  e.classList.remove("selected", "partial");
1291
1300
  return;
1292
1301
  }
1293
- const t = r.every((o) => a.has(o.id)), i = !t && r.some((o) => a.has(o.id));
1294
- e.classList.toggle("selected", t), e.classList.toggle("partial", i);
1295
- }
1296
- function Ze(e, r) {
1297
- const a = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id)), t = a.length > 0, i = r.getElementById("footer-count"), o = r.getElementById("footer-label");
1298
- if (i && (i.textContent = String(t ? a.length : e.camadas.length)), o) {
1299
- const u = je(e.camadas.length, a.length);
1300
- o.innerHTML = u.icone, o.title = u.texto, o.setAttribute("aria-label", u.texto);
1301
- }
1302
- const n = r.querySelector(".ui-tree-footer");
1303
- n && (n.classList.toggle("tem-selecao", t), n.classList.toggle("sem-selecao", !t));
1304
- const l = r.querySelector(".ui-footer-actions-gerais");
1305
- l && (l.style.display = t ? "none" : "flex");
1306
- const c = r.querySelector(".ui-footer-bulk-actions");
1307
- c && (c.style.display = t ? "flex" : "none"), ["btn-footer-del"].forEach((u) => {
1308
- const d = r.getElementById(u);
1309
- d && (d.disabled = !t, d.classList.toggle("disabled", !t));
1302
+ const r = t.every((o) => a.has(o.id)), i = !r && t.some((o) => a.has(o.id));
1303
+ e.classList.toggle("selected", r), e.classList.toggle("partial", i);
1304
+ }
1305
+ function ia(e, t) {
1306
+ const a = e.feicoes.filter((d) => e.selectedFeatureIds.has(d.id)), r = a.length > 0, i = t.getElementById("footer-count"), o = t.getElementById("footer-label");
1307
+ if (i && (i.textContent = String(r ? a.length : e.camadas.length)), o) {
1308
+ const d = _e(e.camadas.length, a.length);
1309
+ o.innerHTML = d.icone, o.title = d.texto, o.setAttribute("aria-label", d.texto);
1310
+ }
1311
+ const n = t.querySelector(".ui-tree-footer");
1312
+ n && (n.classList.toggle("tem-selecao", r), n.classList.toggle("sem-selecao", !r));
1313
+ const s = t.querySelector(".ui-footer-actions-gerais");
1314
+ s && (s.style.display = r ? "none" : "flex");
1315
+ const c = t.querySelector(".ui-footer-bulk-actions");
1316
+ c && (c.style.display = r ? "flex" : "none"), ["btn-footer-del"].forEach((d) => {
1317
+ const u = t.getElementById(d);
1318
+ u && (u.disabled = !r, u.classList.toggle("disabled", !r));
1310
1319
  });
1311
- const s = r.querySelector(".ui-footer-move-wrapper");
1312
- s && s.classList.toggle("disabled", !t);
1313
- const p = r.getElementById("select-footer-move");
1314
- p && (p.disabled = !t);
1315
- }
1316
- function ze(e, r) {
1317
- const a = se(e.camadas), t = new Map(e.camadas.map((o) => [o.id, o]));
1318
- r.querySelectorAll(".ui-layer-row").forEach((o) => {
1319
- const n = a.get(o.getAttribute("data-layer-row") || "");
1320
- o.classList.toggle("herdado-oculto", (n == null ? void 0 : n.ocultaPorAncestral) === !0), o.classList.toggle("herdado-travado", (n == null ? void 0 : n.travadaPorAncestral) === !0);
1320
+ const l = t.querySelector(".ui-footer-move-wrapper");
1321
+ l && l.classList.toggle("disabled", !r);
1322
+ const p = t.getElementById("select-footer-move");
1323
+ p && (p.disabled = !r);
1324
+ }
1325
+ function Pe(e, t) {
1326
+ const a = le(e.camadas), r = new Map(e.camadas.map((n) => [n.id, n]));
1327
+ t.querySelectorAll(".ui-layer-row").forEach((n) => {
1328
+ const s = a.get(n.getAttribute("data-layer-row") || "");
1329
+ n.classList.toggle("herdado-oculto", (s == null ? void 0 : s.ocultaPorAncestral) === !0), n.classList.toggle("herdado-travado", (s == null ? void 0 : s.travadaPorAncestral) === !0);
1321
1330
  });
1322
- const i = new Map(e.feicoes.map((o) => [o.id, o]));
1323
- r.querySelectorAll(".ui-feat-row").forEach((o) => {
1324
- const n = o.getAttribute("data-feat-layer") || "", l = t.get(n), c = a.get(n);
1325
- o.classList.toggle("herdado-oculto", (l == null ? void 0 : l.visible) === !1 || (c == null ? void 0 : c.ocultaPorAncestral) === !0);
1326
- const s = o.querySelector("[data-feat-lock]"), p = i.get(o.getAttribute("data-feat-row") || "");
1327
- if (!s || !p) return;
1328
- const u = (l == null ? void 0 : l.locked) === !0 || (c == null ? void 0 : c.travadaPorAncestral) === !0, d = p.locked === !0 || u;
1329
- s.innerHTML = d ? h.cadeadoTrancado : h.cadeadoAberto, s.classList.toggle("ui-lock-open", !d), u ? s.setAttribute("data-locked-by-layer", "true") : s.removeAttribute("data-locked-by-layer"), P(
1330
- s,
1331
- u ? "Bloqueada pela camada" : d ? "Desbloquear Feição" : "Bloquear Feição"
1331
+ const i = new Map(e.feicoes.map((n) => [n.id, n]));
1332
+ t.querySelectorAll(".ui-feat-row").forEach((n) => {
1333
+ const s = n.getAttribute("data-feat-layer") || "", c = r.get(s), l = a.get(s);
1334
+ n.classList.toggle("herdado-oculto", (c == null ? void 0 : c.visible) === !1 || (l == null ? void 0 : l.ocultaPorAncestral) === !0);
1335
+ const p = n.querySelector("[data-feat-lock]"), d = i.get(n.getAttribute("data-feat-row") || "");
1336
+ if (!p || !d) return;
1337
+ const u = (c == null ? void 0 : c.locked) === !0 || (l == null ? void 0 : l.travadaPorAncestral) === !0, f = d.locked === !0 || u;
1338
+ p.innerHTML = f ? y.cadeadoTrancado : y.cadeadoAberto, p.classList.toggle("ui-lock-open", !f), u ? p.setAttribute("data-locked-by-layer", "true") : p.removeAttribute("data-locked-by-layer"), D(
1339
+ p,
1340
+ u ? "Bloqueada pela camada" : f ? "Desbloquear Feição" : "Bloquear Feição"
1332
1341
  );
1333
1342
  });
1343
+ const o = t.getElementById("select-footer-move");
1344
+ o && (o.innerHTML = `<option value="" disabled selected>Mover para...</option>${Ge(e.camadas)}`);
1334
1345
  }
1335
- function tr(e, r) {
1336
- r.querySelectorAll("[data-layer-row]").forEach((i) => {
1346
+ function ot(e, t) {
1347
+ t.querySelectorAll("[data-layer-row]").forEach((i) => {
1337
1348
  i.addEventListener("click", (o) => {
1338
1349
  if (o.target.closest(
1339
1350
  "[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], [data-layer-color], input, button"
1340
1351
  ))
1341
1352
  return;
1342
- const l = i.getAttribute("data-layer-row");
1343
- l && e.definirCamadaAtiva(l, !0);
1353
+ const s = i.getAttribute("data-layer-row");
1354
+ s && e.definirCamadaAtiva(s, !0);
1344
1355
  });
1345
- }), r.querySelectorAll("[data-layer-expand]").forEach((i) => {
1356
+ }), t.querySelectorAll("[data-layer-expand]").forEach((i) => {
1346
1357
  i.addEventListener("click", (o) => {
1347
1358
  o.stopPropagation();
1348
1359
  const n = i.getAttribute("data-layer-expand");
1349
1360
  if (!n) return;
1350
1361
  e.expandedLayers.has(n) ? e.expandedLayers.delete(n) : e.expandedLayers.add(n);
1351
- const l = i.closest(".ui-layer-group"), c = i.querySelector(".ui-chevron-icon"), s = e.expandedLayers.has(n);
1352
- if (c && c.classList.toggle("open", s), l) {
1353
- l.setAttribute("aria-expanded", String(s));
1354
- const p = l.querySelector(".ui-children-container");
1355
- p && (p.style.display = s ? "block" : "none");
1362
+ const s = i.closest(".ui-layer-group"), c = i.querySelector(".ui-chevron-icon"), l = e.expandedLayers.has(n);
1363
+ if (c && c.classList.toggle("open", l), s) {
1364
+ s.setAttribute("aria-expanded", String(l));
1365
+ const p = s.querySelector(".ui-children-container");
1366
+ p && (p.style.display = l ? "block" : "none");
1356
1367
  }
1357
- P(i, s ? "Recolher grupo" : "Expandir grupo"), ir(e, r), e.salvarLembrancaEstado();
1368
+ D(i, l ? "Recolher grupo" : "Expandir grupo"), nt(e, t), e.salvarLembrancaEstado();
1358
1369
  });
1359
- }), r.querySelectorAll("[data-layer-eye]").forEach((i) => {
1370
+ }), t.querySelectorAll("[data-layer-eye]").forEach((i) => {
1360
1371
  i.addEventListener("click", (o) => {
1361
1372
  o.stopPropagation();
1362
- const n = i.getAttribute("data-layer-eye"), l = e.camadas.find((c) => c.id === n);
1363
- if (l) {
1364
- l.visible = l.visible === !1;
1365
- const c = l.visible !== !1;
1366
- i.innerHTML = c ? h.olhoAberto : h.olhoFechado, P(i, c ? "Ocultar Camada" : "Exibir Camada");
1367
- const s = i.closest(".ui-layer-row");
1368
- s && s.classList.toggle("hidden-layer", !c), or(e, r), ze(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1369
- camadaId: l.id,
1373
+ const n = i.getAttribute("data-layer-eye"), s = e.camadas.find((c) => c.id === n);
1374
+ if (s) {
1375
+ s.visible = s.visible === !1;
1376
+ const c = s.visible !== !1;
1377
+ i.innerHTML = c ? y.olhoAberto : y.olhoFechado, D(i, c ? "Ocultar Camada" : "Exibir Camada");
1378
+ const l = i.closest(".ui-layer-row");
1379
+ l && l.classList.toggle("hidden-layer", !c), st(e, t), Pe(e, t), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-visibilidade", {
1380
+ camadaId: s.id,
1370
1381
  visivel: c
1371
1382
  });
1372
1383
  }
1373
1384
  });
1374
- }), r.querySelectorAll("[data-layer-lock]").forEach((i) => {
1385
+ }), t.querySelectorAll("[data-layer-lock]").forEach((i) => {
1375
1386
  i.addEventListener("click", (o) => {
1376
1387
  o.stopPropagation();
1377
- const n = i.getAttribute("data-layer-lock"), l = e.camadas.find((c) => c.id === n);
1378
- l && (l.locked = !l.locked, i.innerHTML = l.locked ? h.cadeadoTrancado : h.cadeadoAberto, i.classList.toggle("ui-lock-open", !l.locked), P(i, l.locked ? "Desbloquear Camada" : "Bloquear Camada"), ze(e, r), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1379
- camadaId: l.id,
1380
- bloqueado: l.locked
1388
+ const n = i.getAttribute("data-layer-lock"), s = e.camadas.find((c) => c.id === n);
1389
+ s && (s.locked = !s.locked, i.innerHTML = s.locked ? y.cadeadoTrancado : y.cadeadoAberto, i.classList.toggle("ui-lock-open", !s.locked), D(i, s.locked ? "Desbloquear Camada" : "Bloquear Camada"), Pe(e, t), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-bloqueio", {
1390
+ camadaId: s.id,
1391
+ bloqueado: s.locked
1381
1392
  }));
1382
1393
  });
1383
- }), r.querySelectorAll("[data-layer-fit]").forEach((i) => {
1394
+ }), t.querySelectorAll("[data-layer-fit]").forEach((i) => {
1384
1395
  i.addEventListener("click", (o) => {
1385
1396
  o.stopPropagation();
1386
1397
  const n = i.getAttribute("data-layer-fit");
1387
1398
  n && e.dispararEvento("ui-camada-enquadrar", { camadaId: n });
1388
1399
  });
1389
- }), r.querySelectorAll("[data-layer-settings]").forEach((i) => {
1400
+ }), t.querySelectorAll("[data-layer-settings]").forEach((i) => {
1390
1401
  i.addEventListener("click", (o) => {
1391
1402
  o.stopPropagation();
1392
1403
  const n = i.getAttribute("data-layer-settings");
1393
1404
  e.activeSettingsLayerId = e.activeSettingsLayerId === n ? null : n, e.solicitarRenderizacao();
1394
1405
  });
1395
- }), r.querySelectorAll("[data-layer-settings-close]").forEach((i) => {
1406
+ }), t.querySelectorAll("[data-layer-settings-close]").forEach((i) => {
1396
1407
  i.addEventListener("click", (o) => {
1397
1408
  o.stopPropagation(), e.activeSettingsLayerId = null, e.solicitarRenderizacao();
1398
1409
  });
1399
1410
  });
1400
1411
  const a = (i, o, n) => {
1401
- var m;
1402
- const l = e.camadas.find((f) => f.id === i);
1403
- if (!l) return;
1404
- const c = H(o, l.color || "#00E08A");
1405
- l.color = c;
1406
- const s = r.getElementById(`sample-color-${i}`);
1407
- s && (s.style.backgroundColor = c);
1408
- const p = r.getElementById(`hex-color-${i}`);
1412
+ const s = e.camadas.find((f) => f.id === i);
1413
+ if (!s) return;
1414
+ const c = G(o, s.color || "#00E08A");
1415
+ s.color = c;
1416
+ const l = t.getElementById(`sample-color-${i}`);
1417
+ l && (l.style.backgroundColor = c);
1418
+ const p = t.getElementById(`hex-color-${i}`);
1409
1419
  p && (p.textContent = c.toUpperCase());
1410
- const u = r.getElementById(`settings-drawer-${i}`);
1411
- u && u.style.setProperty("--drawer-cor-camada", c);
1412
- const d = T(r, "data-layer-row", i);
1413
- if (d) {
1414
- (m = d.closest(".ui-layer-group")) == null || m.style.setProperty("--layer-active-color", c);
1415
- const f = d.querySelector(".ui-col-colorbar");
1416
- f && (f.style.backgroundColor = c);
1420
+ const d = t.getElementById(`settings-drawer-${i}`);
1421
+ d && d.style.setProperty("--drawer-cor-camada", c);
1422
+ const u = P(t, "data-layer-row", i);
1423
+ if (u) {
1424
+ const f = u.closest(".ui-layer-group");
1425
+ f == null || f.style.setProperty("--layer-active-color", c);
1426
+ const m = u.querySelector(".ui-col-colorbar");
1427
+ m && (m.style.backgroundColor = c);
1428
+ const g = new Map(e.feicoes.map((v) => [v.id, v]));
1429
+ f == null || f.querySelectorAll(".ui-feat-row").forEach((v) => {
1430
+ if (v.getAttribute("data-feat-layer") !== i) return;
1431
+ const b = g.get(v.getAttribute("data-feat-row") || "");
1432
+ if (!b || b.color) return;
1433
+ const E = v.querySelector(".ui-col-colorbar");
1434
+ E && (E.style.backgroundColor = c);
1435
+ const L = v.querySelector(".ui-thumb-box");
1436
+ L && (L.innerHTML = Ve(b.type || b.geometryType, c, b.coordinates));
1437
+ });
1417
1438
  }
1418
- n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: l.id, cor: c });
1439
+ n ? e.salvarLembrancaEstado() : e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-cor", { camadaId: s.id, cor: c });
1419
1440
  };
1420
- r.querySelectorAll("[data-layer-color-picker]").forEach((i) => {
1421
- const o = i, n = (l) => (c) => {
1422
- const s = o.getAttribute("data-layer-color-picker");
1423
- if (!s) return;
1441
+ t.querySelectorAll("[data-layer-color-picker]").forEach((i) => {
1442
+ const o = i, n = (s) => (c) => {
1443
+ const l = o.getAttribute("data-layer-color-picker");
1444
+ if (!l) return;
1424
1445
  const p = c.target.value;
1425
- a(s, p, l);
1446
+ a(l, p, s);
1426
1447
  };
1427
1448
  o.addEventListener("input", n(!1)), o.addEventListener("change", n(!0));
1428
- }), r.querySelectorAll("[data-layer-color]").forEach((i) => {
1449
+ }), t.querySelectorAll("[data-layer-color]").forEach((i) => {
1429
1450
  const o = (n) => {
1430
1451
  n.stopPropagation();
1431
- const l = i.getAttribute("data-layer-color"), c = e.camadas.find((s) => s.id === l);
1432
- !l || !c || Ea({
1452
+ const s = i.getAttribute("data-layer-color"), c = e.camadas.find((l) => l.id === s);
1453
+ !s || !c || Fa({
1433
1454
  ancora: i,
1434
1455
  titulo: `Cor · ${c.name || "Camada"}`,
1435
1456
  modo: "simples",
1436
- cor: H(c.color, "#00E08A"),
1457
+ cor: G(c.color, "#00E08A"),
1437
1458
  mostrarOpacidade: !1,
1438
- aoAlterar: (s) => a(l, s.cor, !1),
1439
- aoConfirmar: (s) => a(l, s.cor, !0),
1440
- aoCancelar: (s) => a(l, s.cor, !0)
1459
+ aoAlterar: (l) => a(s, l.cor, !1),
1460
+ aoConfirmar: (l) => a(s, l.cor, !0),
1461
+ aoCancelar: (l) => a(s, l.cor, !0)
1441
1462
  });
1442
1463
  };
1443
1464
  i.addEventListener("click", o), i.addEventListener("keydown", (n) => {
1444
- const l = n.key;
1445
- (l === "Enter" || l === " ") && (n.preventDefault(), o(n));
1465
+ const s = n.key;
1466
+ (s === "Enter" || s === " ") && (n.preventDefault(), o(n));
1446
1467
  });
1447
1468
  });
1448
- const t = (i, o) => {
1449
- const n = e.camadas.find((s) => s.id === i);
1469
+ const r = (i, o) => {
1470
+ const n = e.camadas.find((l) => l.id === i);
1450
1471
  if (!n) return;
1451
1472
  n.opacity = o;
1452
- const l = r.getElementById(`badge-op-${i}`);
1453
- l && (l.textContent = `${Math.round(o * 100)}%`);
1454
- const c = T(r, "data-layer-opacity-slider", i);
1473
+ const s = t.getElementById(`badge-op-${i}`);
1474
+ s && (s.textContent = `${Math.round(o * 100)}%`);
1475
+ const c = P(t, "data-layer-opacity-slider", i);
1455
1476
  c && parseFloat(c.value) !== o && (c.value = String(o)), e.agendarSalvarLembranca(), e.dispararEvento("ui-camada-opacidade", { camadaId: n.id, opacidade: o });
1456
1477
  };
1457
- r.querySelectorAll("[data-layer-opacity-slider]").forEach((i) => {
1478
+ t.querySelectorAll("[data-layer-opacity-slider]").forEach((i) => {
1458
1479
  i.addEventListener("input", (o) => {
1459
1480
  const n = i.getAttribute("data-layer-opacity-slider");
1460
1481
  if (!n) return;
1461
- const l = parseFloat(o.target.value);
1462
- Number.isFinite(l) && t(n, Math.min(1, Math.max(0, l)));
1482
+ const s = parseFloat(o.target.value);
1483
+ Number.isFinite(s) && r(n, Math.min(1, Math.max(0, s)));
1463
1484
  });
1464
- }), r.querySelectorAll("[data-delete-layer]").forEach((i) => {
1485
+ }), t.querySelectorAll("[data-delete-layer]").forEach((i) => {
1465
1486
  let o = null;
1466
- i.addEventListener("click", (n) => {
1467
- n.stopPropagation();
1468
- const l = i.getAttribute("data-delete-layer");
1469
- if (!l) return;
1487
+ const n = () => {
1488
+ o && (clearTimeout(o), o = null), i.classList.remove("confirming");
1489
+ const s = i.querySelector(".ui-btn-label");
1490
+ s && (s.textContent = "Excluir");
1491
+ };
1492
+ i.addEventListener("ui-cancelar-confirmacao", n), i.addEventListener("click", (s) => {
1493
+ s.stopPropagation();
1494
+ const c = i.getAttribute("data-delete-layer");
1495
+ if (!c) return;
1470
1496
  if (i.classList.contains("confirming")) {
1471
- o && clearTimeout(o), e.dispararEvento("ui-camada-excluida", { camadaId: l });
1472
- const s = e.selectedFeatureIds.size;
1473
- e.camadas.forEach((p) => {
1474
- p.parentId === l && (p.parentId = null);
1475
- }), e.removerCamada(l), e.selectedFeatureIds.size !== s && e.notificarMudancaSelecao();
1497
+ n(), e.dispararEvento("ui-camada-excluida", { camadaId: c });
1498
+ const p = e.selectedFeatureIds.size;
1499
+ e.camadas.forEach((d) => {
1500
+ d.parentId === c && (d.parentId = null);
1501
+ }), e.removerCamada(c), e.selectedFeatureIds.size !== p && e.notificarMudancaSelecao();
1476
1502
  } else {
1477
1503
  i.classList.add("confirming");
1478
- const s = i.querySelector(".ui-btn-label");
1479
- s && (s.textContent = "Confirmar Exclusão?"), o = setTimeout(() => {
1480
- i.classList.remove("confirming"), s && (s.textContent = "Excluir");
1481
- }, 3500);
1504
+ const p = i.querySelector(".ui-btn-label");
1505
+ p && (p.textContent = "Confirmar Exclusão?"), o = setTimeout(n, 3500);
1482
1506
  }
1483
1507
  });
1484
- }), r.querySelectorAll("[data-layer-parent-select]").forEach((i) => {
1508
+ }), t.querySelectorAll("[data-layer-parent-select]").forEach((i) => {
1485
1509
  i.addEventListener("change", (o) => {
1486
- const n = o.target, l = n.getAttribute("data-layer-parent-select"), c = n.value || null, s = e.camadas.find((p) => p.id === l);
1487
- if (s) {
1488
- if (c && (c === s.id || U(e.camadas, c, s.id))) {
1489
- n.value = s.parentId || "";
1510
+ const n = o.target, s = n.getAttribute("data-layer-parent-select"), c = n.value || null, l = e.camadas.find((p) => p.id === s);
1511
+ if (l) {
1512
+ if (c && (c === l.id || Y(e.camadas, c, l.id))) {
1513
+ n.value = l.parentId || "";
1490
1514
  return;
1491
1515
  }
1492
- const p = s.parentId ?? null;
1493
- s.parentId = c, c && e.expandedLayers.add(c), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-mover-hierarquia", {
1494
- camadaId: s.id,
1516
+ const p = l.parentId ?? null;
1517
+ l.parentId = c, c && e.expandedLayers.add(c), e.salvarLembrancaEstado(), e.dispararEvento("ui-camada-mover-hierarquia", {
1518
+ camadaId: l.id,
1495
1519
  novoParentId: c,
1496
1520
  parentAnteriorId: p,
1497
- camada: s
1521
+ camada: l
1498
1522
  }), e.solicitarRenderizacao();
1499
1523
  }
1500
1524
  });
1501
- }), r.querySelectorAll("[data-add-sublayer]").forEach((i) => {
1525
+ }), t.querySelectorAll("[data-add-sublayer]").forEach((i) => {
1502
1526
  i.addEventListener("click", (o) => {
1503
1527
  o.stopPropagation();
1504
1528
  const n = i.getAttribute("data-add-sublayer");
1505
1529
  e.dispararEvento("ui-camada-adicionar", { parentId: n });
1506
1530
  });
1507
- }), ea(e, r), r.querySelectorAll("[data-layer-target]").forEach((i) => {
1531
+ }), oa(e, t), t.querySelectorAll("[data-layer-target]").forEach((i) => {
1508
1532
  i.addEventListener("click", (o) => {
1509
1533
  o.stopPropagation();
1510
- const n = o, l = i.getAttribute("data-layer-target");
1511
- if (!l) return;
1512
- const c = Q(e.camadas, e.feicoes, l), s = te(c, e.searchQuery);
1513
- if (s.length === 0) return;
1514
- s.every((u) => e.selectedFeatureIds.has(u.id)) ? s.forEach((u) => e.selectedFeatureIds.delete(u.id)) : (!n.ctrlKey && !n.metaKey && e.selectedFeatureIds.clear(), s.forEach((u) => e.selectedFeatureIds.add(u.id))), e.lastClickedFeatureId = s[s.length - 1].id, e.sincronizarSelecaoDOM(), e.notificarMudancaSelecao();
1534
+ const n = o, s = i.getAttribute("data-layer-target");
1535
+ if (!s) return;
1536
+ const c = W(e.camadas, e.feicoes, s), l = V(c, e.searchQuery);
1537
+ if (l.length === 0) return;
1538
+ 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();
1515
1539
  });
1516
1540
  });
1517
1541
  }
1518
- function ea(e, r) {
1519
- r.querySelectorAll("[data-layer-show-more]").forEach((a) => {
1520
- a.addEventListener("click", (t) => {
1521
- t.stopPropagation();
1542
+ function oa(e, t) {
1543
+ t.querySelectorAll("[data-layer-show-more]").forEach((a) => {
1544
+ a.addEventListener("click", (r) => {
1545
+ r.stopPropagation();
1522
1546
  const i = a.getAttribute("data-layer-show-more");
1523
1547
  i && e.incrementarLimiteFeicoes(i);
1524
1548
  });
1525
1549
  });
1526
1550
  }
1527
- function ir(e, r) {
1528
- const a = r.getElementById("btn-toggle-all-expand");
1551
+ function nt(e, t) {
1552
+ const a = t.getElementById("btn-toggle-all-expand");
1529
1553
  if (!a) return;
1530
- const t = e.camadas.length > 0 && e.camadas.every((o) => e.expandedLayers.has(o.id)), i = a.querySelector(".ui-chevron-icon");
1531
- i && i.classList.toggle("open", t), P(
1554
+ const r = e.camadas.length > 0 && e.camadas.every((o) => e.expandedLayers.has(o.id)), i = a.querySelector(".ui-chevron-icon");
1555
+ i && i.classList.toggle("open", r), D(
1532
1556
  a,
1533
- t ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"
1557
+ r ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"
1534
1558
  );
1535
1559
  }
1536
- function or(e, r) {
1537
- const a = r.getElementById("btn-toggle-all-vis");
1560
+ function st(e, t) {
1561
+ const a = t.getElementById("btn-toggle-all-vis");
1538
1562
  if (!a) return;
1539
- const t = e.camadas.every((i) => i.visible !== !1);
1540
- a.innerHTML = t ? h.olhoAberto : h.olhoFechado, P(a, t ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1563
+ const r = e.camadas.every((i) => i.visible !== !1);
1564
+ a.innerHTML = r ? y.olhoAberto : y.olhoFechado, D(a, r ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
1541
1565
  }
1542
- function nr(e, r) {
1543
- const a = r.getElementById("select-footer-move");
1566
+ function lt(e, t) {
1567
+ const a = t.getElementById("select-footer-move");
1544
1568
  a && a.addEventListener("change", (n) => {
1545
- const l = n.target.value;
1546
- if (!l) return;
1547
- const c = xe(e.camadas);
1548
- if (c.has(l)) {
1569
+ const s = n.target.value;
1570
+ if (!s) return;
1571
+ const c = ie(e.camadas);
1572
+ if (c.has(s)) {
1549
1573
  a.value = "";
1550
1574
  return;
1551
1575
  }
1552
- const s = e.feicoes.filter((u) => e.selectedFeatureIds.has(u.id) && !c.has(u.layerId));
1553
- if (s.length === 0) return;
1554
- const p = new Map(s.map((u) => [u.id, u.layerId]));
1555
- s.forEach((u) => u.layerId = l), s.forEach((u) => {
1556
- p.get(u.id) !== l && e.dispararEvento("ui-feicao-movida", {
1557
- feicaoId: u.id,
1558
- camadaOrigemId: p.get(u.id),
1559
- camadaDestinoId: l,
1560
- feicao: u
1576
+ const l = e.feicoes.filter(
1577
+ (d) => e.selectedFeatureIds.has(d.id) && !c.has(d.layerId) && d.locked !== !0
1578
+ );
1579
+ if (l.length === 0) {
1580
+ a.value = "";
1581
+ return;
1582
+ }
1583
+ const p = new Map(l.map((d) => [d.id, d.layerId]));
1584
+ l.forEach((d) => d.layerId = s), l.forEach((d) => {
1585
+ p.get(d.id) !== s && e.dispararEvento("ui-feicao-movida", {
1586
+ feicaoId: d.id,
1587
+ camadaOrigemId: p.get(d.id),
1588
+ camadaDestinoId: s,
1589
+ feicao: d
1561
1590
  });
1562
1591
  }), e.dispararEvento("ui-acao-massa", {
1563
1592
  acao: "mover",
1564
- feicoesIds: s.map((u) => u.id),
1565
- feicoes: s,
1566
- valor: l
1593
+ feicoesIds: l.map((d) => d.id),
1594
+ feicoes: l,
1595
+ valor: s
1567
1596
  }), e.solicitarRenderizacao();
1568
1597
  });
1569
- const t = r.getElementById("btn-footer-new-layer");
1570
- t && t.addEventListener("click", () => {
1598
+ const r = t.getElementById("btn-footer-new-layer");
1599
+ r && r.addEventListener("click", () => {
1571
1600
  e.dispararEvento("ui-camada-adicionar", {});
1572
1601
  });
1573
- const i = r.getElementById("btn-footer-new-group");
1602
+ const i = t.getElementById("btn-footer-new-group");
1574
1603
  i && i.addEventListener("click", () => {
1575
1604
  e.dispararEvento("ui-camada-grupo-adicionar", { isGroup: !0 });
1576
1605
  });
1577
- const o = r.getElementById("btn-footer-del");
1606
+ const o = t.getElementById("btn-footer-del");
1578
1607
  if (o) {
1579
1608
  let n = null;
1580
- const l = "Excluir selecionados";
1581
- o.addEventListener("click", () => {
1582
- const c = Array.from(e.selectedFeatureIds);
1583
- if (c.length === 0) return;
1609
+ const s = "Excluir selecionados", c = () => {
1610
+ n && (clearTimeout(n), n = null), o.classList.remove("confirming"), D(o, s);
1611
+ };
1612
+ o.addEventListener("ui-cancelar-confirmacao", c), o.addEventListener("click", () => {
1613
+ const l = ie(e.camadas), p = e.feicoes.filter(
1614
+ (f) => e.selectedFeatureIds.has(f.id) && !l.has(f.layerId) && f.locked !== !0
1615
+ );
1616
+ if (p.length === 0) return;
1617
+ const d = p.map((f) => f.id);
1584
1618
  if (!o.classList.contains("confirming")) {
1585
- o.classList.add("confirming"), P(o, `Clique novamente para excluir ${c.length} selecionado(s)`), n = setTimeout(() => {
1586
- o.classList.remove("confirming"), P(o, l);
1587
- }, 3500);
1619
+ o.classList.add("confirming"), D(o, `Clique novamente para excluir ${d.length} selecionado(s)`), n = setTimeout(c, 3500);
1588
1620
  return;
1589
1621
  }
1590
- n && clearTimeout(n);
1591
- const s = e.feicoes.filter((p) => e.selectedFeatureIds.has(p.id));
1592
- e.feicoes = e.feicoes.filter((p) => !e.selectedFeatureIds.has(p.id)), e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.dispararEvento("ui-acao-massa", {
1622
+ c();
1623
+ const u = new Set(d);
1624
+ e.feicoes = e.feicoes.filter((f) => !u.has(f.id)), d.forEach((f) => e.selectedFeatureIds.delete(f)), e.lastClickedFeatureId && u.has(e.lastClickedFeatureId) && (e.lastClickedFeatureId = null), e.dispararEvento("ui-acao-massa", {
1593
1625
  acao: "excluir",
1594
- feicoesIds: c,
1595
- feicoes: s
1626
+ feicoesIds: d,
1627
+ feicoes: p
1596
1628
  }), e.notificarMudancaSelecao(), e.solicitarRenderizacao();
1597
1629
  });
1598
1630
  }
1599
1631
  }
1600
- const sr = [
1632
+ const ct = [
1601
1633
  { tipo: "olho", atributo: "data-layer-eye", entidade: "camada" },
1602
1634
  { tipo: "olho", atributo: "data-feat-eye", entidade: "feicao" },
1603
1635
  { tipo: "cadeado", atributo: "data-layer-lock", entidade: "camada" },
1604
1636
  { tipo: "cadeado", atributo: "data-feat-lock", entidade: "feicao" },
1605
1637
  { tipo: "selecao", atributo: "data-layer-target", entidade: "camada" },
1606
1638
  { tipo: "selecao", atributo: "data-feat-target", entidade: "feicao" }
1607
- ], he = {
1639
+ ], ye = {
1608
1640
  olho: "[data-layer-eye], [data-feat-eye]",
1609
1641
  cadeado: "[data-layer-lock], [data-feat-lock]",
1610
1642
  selecao: "[data-layer-target], [data-feat-target]"
1611
- }, lr = 3;
1612
- function cr(e) {
1613
- return sr.find((r) => e.hasAttribute(r.atributo)) ?? null;
1643
+ }, dt = 3;
1644
+ function ut(e) {
1645
+ return ct.find((t) => e.hasAttribute(t.atributo)) ?? null;
1614
1646
  }
1615
- function ge(e, r) {
1616
- const a = cr(r);
1647
+ function ve(e, t) {
1648
+ const a = ut(t);
1617
1649
  if (!a) return null;
1618
- const t = r.getAttribute(a.atributo);
1619
- if (!t) return null;
1650
+ const r = t.getAttribute(a.atributo);
1651
+ if (!r) return null;
1620
1652
  if (a.tipo === "olho") {
1621
- const o = a.entidade === "camada" ? e.camadas.find((n) => n.id === t) : e.feicoes.find((n) => n.id === t);
1653
+ const o = a.entidade === "camada" ? e.camadas.find((n) => n.id === r) : e.feicoes.find((n) => n.id === r);
1622
1654
  return o ? o.visible !== !1 : null;
1623
1655
  }
1624
1656
  if (a.tipo === "cadeado") {
1625
- if (r.hasAttribute("data-locked-by-layer")) return null;
1626
- const o = a.entidade === "camada" ? e.camadas.find((n) => n.id === t) : e.feicoes.find((n) => n.id === t);
1657
+ if (t.hasAttribute("data-locked-by-layer")) return null;
1658
+ const o = a.entidade === "camada" ? e.camadas.find((n) => n.id === r) : e.feicoes.find((n) => n.id === r);
1627
1659
  return o ? o.locked === !0 : null;
1628
1660
  }
1629
- if (a.entidade === "feicao") return e.selectedFeatureIds.has(t);
1630
- const i = te(
1631
- Q(e.camadas, e.feicoes, t),
1661
+ if (a.entidade === "feicao") return e.selectedFeatureIds.has(r);
1662
+ const i = V(
1663
+ W(e.camadas, e.feicoes, r),
1632
1664
  e.searchQuery
1633
1665
  );
1634
1666
  return i.length === 0 ? null : i.every((o) => e.selectedFeatureIds.has(o.id));
1635
1667
  }
1636
- function Be(e, r, a = !1) {
1668
+ function De(e, t, a = !1) {
1637
1669
  e.dispatchEvent(
1638
1670
  new MouseEvent("click", {
1639
1671
  bubbles: !0,
1640
1672
  cancelable: !0,
1641
- ctrlKey: r,
1673
+ ctrlKey: t,
1642
1674
  shiftKey: a
1643
1675
  })
1644
1676
  );
1645
1677
  }
1646
1678
  let q = null;
1647
- function dr(e) {
1679
+ function pt(e) {
1648
1680
  (q == null ? void 0 : q.host) === e && q.cancelar();
1649
1681
  }
1650
- function aa(e, r, a = r) {
1651
- Object.keys(he).forEach((t) => {
1652
- a.querySelectorAll(he[t]).forEach((i) => {
1653
- i.addEventListener("pointerdown", (o) => ur(e, r, t, i, o));
1682
+ function na(e, t, a = t) {
1683
+ Object.keys(ye).forEach((r) => {
1684
+ a.querySelectorAll(ye[r]).forEach((i) => {
1685
+ i.addEventListener("pointerdown", (o) => ft(e, t, r, i, o));
1654
1686
  });
1655
1687
  });
1656
1688
  }
1657
- function ur(e, r, a, t, i) {
1658
- if (i.pointerType === "mouse" && i.button !== 0 || e.editingLayerId || e.editingFeatureId || ge(e, t) === null) return;
1689
+ function ft(e, t, a, r, i) {
1690
+ if (i.pointerType === "mouse" && i.button !== 0 || e.editingLayerId || e.editingFeatureId || ve(e, r) === null) return;
1659
1691
  q == null || q.cancelar();
1660
- const o = he[a], n = i.ctrlKey || i.metaKey, l = i.shiftKey;
1661
- let c = !1, s = !1, p = i.clientY;
1662
- const u = /* @__PURE__ */ new Set([t]), d = (w) => {
1692
+ const o = ye[a], n = i.ctrlKey || i.metaKey, s = i.shiftKey;
1693
+ let c = !1, l = !1, p = i.clientY;
1694
+ const d = /* @__PURE__ */ new Set([r]), u = (w) => {
1663
1695
  w.preventDefault(), w.stopImmediatePropagation();
1664
- }, m = (w) => {
1696
+ }, f = (w) => {
1665
1697
  w.stopPropagation(), w.preventDefault();
1666
- }, f = (w) => w.preventDefault(), g = (w) => {
1667
- u.has(w) || (u.add(w), ge(e, w) !== s && Be(w, a === "selecao"));
1698
+ }, m = (w) => w.preventDefault(), g = (w) => {
1699
+ d.has(w) || (d.add(w), ve(e, w) !== l && De(w, a === "selecao"));
1668
1700
  }, v = () => {
1669
- c = !0, Be(t, n, l), s = ge(e, t) === !0, r.addEventListener("selectstart", f), document.body.style.userSelect = "none";
1670
- }, y = (w) => {
1671
- var I, E;
1701
+ c = !0, De(r, n, s), l = ve(e, r) === !0, t.addEventListener("selectstart", m), document.body.style.userSelect = "none";
1702
+ }, b = (w) => {
1703
+ var k, I;
1672
1704
  if (!c) {
1673
- if (Math.hypot(w.clientX - i.clientX, w.clientY - i.clientY) < lr) return;
1674
- const x = (I = r.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : I.closest(o);
1675
- if (!x || x === t) return;
1705
+ if (Math.hypot(w.clientX - i.clientX, w.clientY - i.clientY) < dt) return;
1706
+ const x = (k = t.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : k.closest(o);
1707
+ if (!x || x === r) return;
1676
1708
  v();
1677
1709
  }
1678
1710
  w.preventDefault();
1679
- const L = Math.min(p, w.clientY), b = Math.max(p, w.clientY);
1680
- r.querySelectorAll(o).forEach((x) => {
1711
+ const S = Math.min(p, w.clientY), h = Math.max(p, w.clientY);
1712
+ t.querySelectorAll(o).forEach((x) => {
1681
1713
  const B = x.getBoundingClientRect();
1682
1714
  if (B.height === 0) return;
1683
- const D = B.top + B.height / 2;
1684
- D >= L && D <= b && g(x);
1715
+ const T = B.top + B.height / 2;
1716
+ T >= S && T <= h && g(x);
1685
1717
  });
1686
- const $ = (E = r.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : E.closest(o);
1687
- $ && g($), p = w.clientY;
1688
- }, k = (w = !1) => {
1689
- (q == null ? void 0 : q.cancelar) === S && (q = null), window.removeEventListener("pointermove", y), window.removeEventListener("pointerup", M), window.removeEventListener("pointercancel", M), window.removeEventListener("dragstart", d, !0), r.removeEventListener("selectstart", f), c && (document.body.style.userSelect = "", w || (window.addEventListener("click", m, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", m, !0), 0)));
1690
- }, M = () => k(), S = () => k(!0);
1691
- q = { host: e, cancelar: S }, window.addEventListener("dragstart", d, !0), window.addEventListener("pointermove", y, { passive: !1 }), window.addEventListener("pointerup", M), window.addEventListener("pointercancel", M);
1692
- }
1693
- function pr(e, r) {
1694
- const a = r.getElementById("btn-toggle-all-vis");
1718
+ const F = (I = t.elementFromPoint(w.clientX, w.clientY)) == null ? void 0 : I.closest(o);
1719
+ F && g(F), p = w.clientY;
1720
+ }, E = (w = !1) => {
1721
+ (q == null ? void 0 : q.cancelar) === $ && (q = null), window.removeEventListener("pointermove", b), window.removeEventListener("pointerup", L), window.removeEventListener("pointercancel", L), window.removeEventListener("dragstart", u, !0), t.removeEventListener("selectstart", m), c && (document.body.style.userSelect = "", w || (window.addEventListener("click", f, { capture: !0, once: !0 }), setTimeout(() => window.removeEventListener("click", f, !0), 0)));
1722
+ }, L = () => E(), $ = () => E(!0);
1723
+ q = { host: e, cancelar: $ }, window.addEventListener("dragstart", u, !0), window.addEventListener("pointermove", b, { passive: !1 }), window.addEventListener("pointerup", L), window.addEventListener("pointercancel", L);
1724
+ }
1725
+ function mt(e, t) {
1726
+ const a = t.getElementById("btn-toggle-all-vis");
1695
1727
  a && a.addEventListener("click", () => e.alternarVisibilidadeTodas(!0));
1696
- const t = r.getElementById("btn-toggle-all-expand");
1697
- t && t.addEventListener("click", (o) => {
1698
- o.stopPropagation(), e.camadas.length > 0 && e.camadas.every((l) => e.expandedLayers.has(l.id)) ? e.colapsarTodas() : e.expandirTodas();
1728
+ const r = t.getElementById("btn-toggle-all-expand");
1729
+ r && r.addEventListener("click", (o) => {
1730
+ o.stopPropagation(), e.camadas.length > 0 && e.camadas.every((s) => e.expandedLayers.has(s.id)) ? e.colapsarTodas() : e.expandirTodas();
1699
1731
  });
1700
- const i = r.getElementById("btn-colapsar");
1701
- i && i.addEventListener("click", () => e.colapsar(!0)), fr(e, r);
1732
+ const i = t.getElementById("btn-colapsar");
1733
+ i && i.addEventListener("click", () => e.colapsar(!0)), gt(e, t);
1702
1734
  }
1703
- function fr(e, r) {
1704
- const a = r.getElementById("input-layer-search"), t = r.getElementById("btn-clear-layer-search"), i = () => {
1735
+ function gt(e, t) {
1736
+ const a = t.getElementById("input-layer-search"), r = t.getElementById("btn-clear-layer-search"), i = () => {
1705
1737
  var o;
1706
- e.searchQuery = "", e.solicitarRenderizacao(), (o = r.getElementById("input-layer-search")) == null || o.focus();
1738
+ e.searchQuery = "", e.solicitarRenderizacao(), (o = t.getElementById("input-layer-search")) == null || o.focus();
1707
1739
  };
1708
1740
  if (a) {
1709
- const o = Te(() => e.solicitarRenderizacao(), 75);
1741
+ const o = je(() => e.solicitarRenderizacao(), 75);
1710
1742
  a.addEventListener("input", (n) => {
1711
1743
  e.searchQuery = n.target.value, o();
1712
1744
  }), a.addEventListener("keydown", (n) => {
1713
1745
  n.key === "Escape" && e.searchQuery && (n.preventDefault(), i());
1714
1746
  });
1715
1747
  }
1716
- t && t.addEventListener("click", i);
1748
+ r && r.addEventListener("click", i);
1717
1749
  }
1718
- function ra(e, r) {
1719
- r.querySelectorAll("[data-feat-select]").forEach((a) => {
1720
- a.addEventListener("click", (t) => {
1750
+ function sa(e, t) {
1751
+ t.querySelectorAll("[data-feat-select]").forEach((a) => {
1752
+ a.addEventListener("click", (r) => {
1721
1753
  if (e.editingFeatureId) return;
1722
- const i = t;
1754
+ const i = r;
1723
1755
  if (i.target.closest(
1724
1756
  "[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"
1725
1757
  ))
@@ -1727,264 +1759,255 @@ function ra(e, r) {
1727
1759
  const n = a.getAttribute("data-feat-select");
1728
1760
  n && e.selecionarFeicao(n, i.ctrlKey || i.metaKey, i.shiftKey, !0);
1729
1761
  });
1730
- }), r.querySelectorAll("[data-feat-target]").forEach((a) => {
1731
- a.addEventListener("click", (t) => {
1732
- t.stopPropagation();
1733
- const i = t, o = a.getAttribute("data-feat-target");
1762
+ }), t.querySelectorAll("[data-feat-target]").forEach((a) => {
1763
+ a.addEventListener("click", (r) => {
1764
+ r.stopPropagation();
1765
+ const i = r, o = a.getAttribute("data-feat-target");
1734
1766
  o && e.selecionarFeicao(o, i.ctrlKey || i.metaKey, i.shiftKey, !0);
1735
1767
  });
1736
- }), r.querySelectorAll("[data-feat-eye]").forEach((a) => {
1737
- a.addEventListener("click", (t) => {
1738
- t.stopPropagation();
1768
+ }), t.querySelectorAll("[data-feat-eye]").forEach((a) => {
1769
+ a.addEventListener("click", (r) => {
1770
+ r.stopPropagation();
1739
1771
  const i = a.getAttribute("data-feat-eye"), o = e.feicoes.find((n) => n.id === i);
1740
1772
  if (o) {
1741
1773
  o.visible = o.visible === !1;
1742
1774
  const n = o.visible !== !1;
1743
- a.innerHTML = n ? h.olhoAberto : h.olhoFechado, P(a, n ? "Ocultar Feição" : "Exibir Feição");
1744
- const l = a.closest(".ui-feat-row");
1745
- l && l.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
1775
+ a.innerHTML = n ? y.olhoAberto : y.olhoFechado, D(a, n ? "Ocultar Feição" : "Exibir Feição");
1776
+ const s = a.closest(".ui-feat-row");
1777
+ s && s.classList.toggle("hidden-row", !n), e.dispararEvento("ui-feicao-visibilidade", {
1746
1778
  feicaoId: o.id,
1747
1779
  visivel: n
1748
1780
  });
1749
1781
  }
1750
1782
  });
1751
- }), r.querySelectorAll("[data-feat-lock]").forEach((a) => {
1752
- a.addEventListener("click", (t) => {
1753
- if (t.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
1783
+ }), t.querySelectorAll("[data-feat-lock]").forEach((a) => {
1784
+ a.addEventListener("click", (r) => {
1785
+ if (r.stopPropagation(), a.hasAttribute("data-locked-by-layer")) return;
1754
1786
  const i = a.getAttribute("data-feat-lock"), o = e.feicoes.find((n) => n.id === i);
1755
- o && (o.locked = !o.locked, a.innerHTML = o.locked ? h.cadeadoTrancado : h.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), P(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1787
+ o && (o.locked = !o.locked, a.innerHTML = o.locked ? y.cadeadoTrancado : y.cadeadoAberto, a.classList.toggle("ui-lock-open", !o.locked), D(a, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), e.dispararEvento("ui-feicao-bloqueio", {
1756
1788
  feicaoId: o.id,
1757
1789
  bloqueado: o.locked
1758
1790
  }));
1759
1791
  });
1760
- }), r.querySelectorAll("[data-feat-fit]").forEach((a) => {
1761
- a.addEventListener("click", (t) => {
1762
- t.stopPropagation();
1792
+ }), t.querySelectorAll("[data-feat-fit]").forEach((a) => {
1793
+ a.addEventListener("click", (r) => {
1794
+ r.stopPropagation();
1763
1795
  const i = a.getAttribute("data-feat-fit");
1764
1796
  i && e.dispararEvento("ui-feicao-enquadrar", { feicaoId: i });
1765
1797
  });
1766
1798
  });
1767
1799
  }
1768
- function mr(e, r) {
1800
+ function vt(e, t) {
1769
1801
  var a;
1770
- r.querySelectorAll("[data-basemap-thumb]").forEach((t) => {
1771
- t.addEventListener(
1772
- "error",
1773
- () => {
1774
- const i = document.createElement("div");
1775
- i.className = "ui-basemap-preview-none", i.innerHTML = h.mapa, t.replaceWith(i);
1776
- },
1777
- { once: !0 }
1778
- );
1779
- }), (a = r.querySelector("[data-basemap-toggle]")) == null || a.addEventListener("click", () => {
1802
+ (a = t.querySelector("[data-basemap-toggle]")) == null || a.addEventListener("click", () => {
1780
1803
  e.alternarMapasBaseRecolhido(!0);
1781
- }), r.querySelectorAll("[data-basemap-id]").forEach((t) => {
1782
- t.addEventListener("click", () => {
1783
- const i = t.getAttribute("data-basemap-id");
1804
+ }), t.querySelectorAll("[data-basemap-id]").forEach((r) => {
1805
+ r.addEventListener("click", () => {
1806
+ const i = r.getAttribute("data-basemap-id");
1784
1807
  i && e.selecionarMapaBase(i, !0);
1785
1808
  });
1786
1809
  });
1787
1810
  }
1788
- function gr(e, r) {
1789
- pr(e, r), tr(e, r), ra(e, r), mr(e, r), nr(e, r), aa(e, r);
1811
+ function bt(e, t) {
1812
+ mt(e, t), ot(e, t), sa(e, t), vt(e, t), lt(e, t), na(e, t);
1790
1813
  }
1791
- function vr(e) {
1814
+ function ht(e) {
1792
1815
  if (!e.arvoreRenderizada) return { incremental: !1, motivo: "arvore-nao-renderizada" };
1793
1816
  if (e.buscaAtiva) return { incremental: !1, motivo: "busca-ativa" };
1794
1817
  if (e.editandoCamada || e.editandoFeicao) return { incremental: !1, motivo: "edicao-inline" };
1795
- for (const r of e.camadasAfetadas) {
1796
- if (!r.existeNoModelo) return { incremental: !1, motivo: "camada-orfa" };
1797
- if (!r.renderizadaNoDom) return { incremental: !1, motivo: "camada-fora-do-dom" };
1798
- if (r.drawerAberto) return { incremental: !1, motivo: "drawer-aberto" };
1818
+ for (const t of e.camadasAfetadas) {
1819
+ if (!t.existeNoModelo) return { incremental: !1, motivo: "camada-orfa" };
1820
+ if (!t.renderizadaNoDom) return { incremental: !1, motivo: "camada-fora-do-dom" };
1821
+ if (t.drawerAberto) return { incremental: !1, motivo: "drawer-aberto" };
1799
1822
  }
1800
1823
  return e.idsDuplicados ? { incremental: !1, motivo: "ids-duplicados" } : { incremental: !0 };
1801
1824
  }
1802
- function ta(e, r = /* @__PURE__ */ new Map()) {
1825
+ function la(e, t = /* @__PURE__ */ new Map()) {
1803
1826
  for (const a of e)
1804
- r.set(a.camada.id, a), ta(a.subcamadas, r);
1805
- return r;
1827
+ t.set(a.camada.id, a), la(a.subcamadas, t);
1828
+ return t;
1806
1829
  }
1807
- function br(e) {
1808
- const r = /* @__PURE__ */ new Map();
1830
+ function yt(e) {
1831
+ const t = /* @__PURE__ */ new Map();
1809
1832
  for (let a = 0; a < e.length; a++) {
1810
- const t = e[a];
1811
- if (!t || !t.id) continue;
1812
- const i = t.layerId || "", o = r.get(i);
1813
- o ? o.push(t) : r.set(i, [t]);
1833
+ const r = e[a];
1834
+ if (!r || !r.id) continue;
1835
+ const i = r.layerId || "", o = t.get(i);
1836
+ o ? o.push(r) : t.set(i, [r]);
1814
1837
  }
1815
- return r;
1838
+ return t;
1816
1839
  }
1817
- function _(e, r) {
1840
+ function K(e, t) {
1818
1841
  for (let a = e.firstElementChild; a; a = a.nextElementSibling)
1819
- if (a.classList.contains(r)) return a;
1842
+ if (a.classList.contains(t)) return a;
1820
1843
  return null;
1821
1844
  }
1822
- function hr(e) {
1823
- const r = /* @__PURE__ */ new Map(), a = (t) => {
1824
- for (let i = t.firstElementChild; i && i.classList.contains("ui-layer-group"); i = i.nextElementSibling) {
1845
+ function xt(e) {
1846
+ const t = /* @__PURE__ */ new Map(), a = (r) => {
1847
+ for (let i = r.firstElementChild; i && i.classList.contains("ui-layer-group"); i = i.nextElementSibling) {
1825
1848
  const o = i.getAttribute("data-layer-id");
1826
- o !== null && r.set(o, i);
1827
- const n = _(i, "ui-children-container");
1849
+ o !== null && t.set(o, i);
1850
+ const n = K(i, "ui-children-container");
1828
1851
  n && a(n);
1829
1852
  }
1830
1853
  };
1831
- return a(e), r;
1854
+ return a(e), t;
1832
1855
  }
1833
- function yr(e) {
1856
+ function wt(e) {
1834
1857
  if (!e || e.length < 2) return !1;
1835
- const r = /* @__PURE__ */ new Set();
1858
+ const t = /* @__PURE__ */ new Set();
1836
1859
  for (const a of e) {
1837
- if (r.has(a.id)) return !0;
1838
- r.add(a.id);
1860
+ if (t.has(a.id)) return !0;
1861
+ t.add(a.id);
1839
1862
  }
1840
1863
  return !1;
1841
1864
  }
1842
- function xr(e, r) {
1865
+ function At(e, t) {
1843
1866
  var i;
1844
- const a = new Map(r.map((o) => [o.id, o])), t = /* @__PURE__ */ new Set();
1867
+ const a = new Map(t.map((o) => [o.id, o])), r = /* @__PURE__ */ new Set();
1845
1868
  for (const o of e) {
1846
1869
  let n = o;
1847
- for (; n && a.has(n) && !t.has(n); )
1848
- t.add(n), n = (i = a.get(n)) == null ? void 0 : i.parentId;
1870
+ for (; n && a.has(n) && !r.has(n); )
1871
+ r.add(n), n = (i = a.get(n)) == null ? void 0 : i.parentId;
1849
1872
  }
1850
- return t;
1851
- }
1852
- function ie(e) {
1853
- const r = document.createElement("template");
1854
- return r.innerHTML = e, { modelo: r, elementos: Array.from(r.content.children) };
1873
+ return r;
1855
1874
  }
1856
1875
  function oe(e) {
1876
+ const t = document.createElement("template");
1877
+ return t.innerHTML = e, { modelo: t, elementos: Array.from(t.content.children) };
1878
+ }
1879
+ function ne(e) {
1857
1880
  var a;
1858
- const r = e.nextSibling;
1859
- r && r.nodeType === 3 && !(r.textContent ?? "").trim() && ((a = r.parentNode) == null || a.removeChild(r)), e.remove();
1881
+ const t = e.nextSibling;
1882
+ t && t.nodeType === 3 && !(t.textContent ?? "").trim() && ((a = t.parentNode) == null || a.removeChild(t)), e.remove();
1860
1883
  }
1861
- function wr(e, r) {
1862
- if (!e || !r.contains(e)) return null;
1863
- const a = Array.from(e.attributes).find((t) => t.name.startsWith("data-") && t.value !== "");
1884
+ function Et(e, t) {
1885
+ if (!e || !t.contains(e)) return null;
1886
+ const a = Array.from(e.attributes).find((r) => r.name.startsWith("data-") && r.value !== "");
1864
1887
  return a ? { nome: a.name, valor: a.value } : null;
1865
1888
  }
1866
- function Ar(e, r) {
1867
- const { host: a, shadow: t, mudanca: i } = e, o = e.grupos.get(r), n = e.nodos.get(r), l = o ? _(o, "ui-children-container") : null;
1868
- if (!o || !n || !l) return !1;
1869
- const c = n.camada, s = e.porCamada.get(r) ?? [], p = a.expandedFeatureLimits.get(r) ?? we, u = s.slice(0, p), d = new Set(u.map((b) => b.id)), m = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), g = t.activeElement;
1889
+ function It(e, t) {
1890
+ const { host: a, shadow: r, mudanca: i } = e, o = e.grupos.get(t), n = e.nodos.get(t), s = o ? K(o, "ui-children-container") : null;
1891
+ if (!o || !n || !s) return !1;
1892
+ const c = n.camada, l = e.porCamada.get(t) ?? [], p = a.expandedFeatureLimits.get(t) ?? we, d = l.slice(0, p), u = new Set(d.map((h) => h.id)), f = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), g = r.activeElement;
1870
1893
  let v = null;
1871
- for (let b = l.firstElementChild, $; b; b = $) {
1872
- $ = b.nextElementSibling;
1873
- const I = b.getAttribute("data-feat-row");
1874
- if (I === null) {
1875
- !v && !b.classList.contains("ui-layer-group") && (v = b);
1894
+ for (let h = s.firstElementChild, F; h; h = F) {
1895
+ F = h.nextElementSibling;
1896
+ const k = h.getAttribute("data-feat-row");
1897
+ if (k === null) {
1898
+ !v && !h.classList.contains("ui-layer-group") && (v = h);
1876
1899
  continue;
1877
1900
  }
1878
- const E = i.idsAlterados.has(I) && d.has(I) && !m.has(I);
1879
- !d.has(I) || m.has(I) || E ? (E && f.set(I, { tabindex: b.getAttribute("tabindex"), foco: wr(g, b) }), oe(b)) : (m.set(I, b), v || (v = b));
1880
- }
1881
- const y = He(c, n.depth, e.herdado.get(r)), k = u.filter((b) => !m.has(b.id));
1882
- let M = [];
1883
- if (k.length > 0) {
1884
- const b = k.map(
1885
- (E) => Ke(E, y, a.selectedFeatureIds.has(E.id), a.editingFeatureId === E.id)
1886
- ).join(""), { modelo: $, elementos: I } = ie(b);
1887
- if (I.length !== k.length) return !1;
1888
- e.ligar($.content), M = I;
1889
- }
1890
- let S = v, w = 0;
1891
- const L = /* @__PURE__ */ new Map();
1892
- for (const b of u) {
1893
- const $ = m.get(b.id);
1894
- if ($)
1895
- $ === S ? S = $.nextElementSibling : l.insertBefore($, S);
1901
+ const I = i.idsAlterados.has(k) && u.has(k) && !f.has(k);
1902
+ !u.has(k) || f.has(k) || I ? (I && m.set(k, { tabindex: h.getAttribute("tabindex"), foco: Et(g, h) }), ne(h)) : (f.set(k, h), v || (v = h));
1903
+ }
1904
+ const b = Ye(c, n.depth, e.herdado.get(t)), E = d.filter((h) => !f.has(h.id));
1905
+ let L = [];
1906
+ if (E.length > 0) {
1907
+ const h = E.map(
1908
+ (I) => Ze(I, b, a.selectedFeatureIds.has(I.id), a.editingFeatureId === I.id)
1909
+ ).join(""), { modelo: F, elementos: k } = oe(h);
1910
+ if (k.length !== E.length) return !1;
1911
+ e.ligar(F.content), L = k;
1912
+ }
1913
+ let $ = v, w = 0;
1914
+ const S = /* @__PURE__ */ new Map();
1915
+ for (const h of d) {
1916
+ const F = f.get(h.id);
1917
+ if (F)
1918
+ F === $ ? $ = F.nextElementSibling : s.insertBefore(F, $);
1896
1919
  else {
1897
- const I = M[w++];
1898
- l.insertBefore(I, S), L.set(b.id, I);
1920
+ const k = L[w++];
1921
+ s.insertBefore(k, $), S.set(h.id, k);
1899
1922
  }
1900
1923
  }
1901
- return f.forEach((b, $) => {
1902
- const I = L.get($);
1903
- if (!I || (b.tabindex !== null && I.setAttribute("tabindex", b.tabindex), !b.foco)) return;
1904
- const E = I.getAttribute(b.foco.nome) === b.foco.valor ? I : Array.from(I.querySelectorAll(`[${b.foco.nome}]`)).find(
1905
- (x) => x.getAttribute(b.foco.nome) === b.foco.valor
1924
+ return m.forEach((h, F) => {
1925
+ const k = S.get(F);
1926
+ if (!k || (h.tabindex !== null && k.setAttribute("tabindex", h.tabindex), !h.foco)) return;
1927
+ const I = k.getAttribute(h.foco.nome) === h.foco.valor ? k : Array.from(k.querySelectorAll(`[${h.foco.nome}]`)).find(
1928
+ (x) => x.getAttribute(h.foco.nome) === h.foco.valor
1906
1929
  );
1907
- E == null || E.focus({ preventScroll: !0 });
1908
- }), Er(e, l, n, p, s.length);
1909
- }
1910
- function Er(e, r, a, t, i) {
1911
- const o = z(a.camada.id), n = !!(a.camada.isGroup || a.subcamadas.length > 0), l = i > t, c = a.subcamadas.length === 0 && i === 0, s = _(r, "ui-truncate-notice"), p = _(r, "ui-empty-row");
1912
- if (p && !c && oe(p), s && !l && oe(s), l)
1913
- if (s) {
1914
- const u = Ue(t, i), d = s.querySelector("span"), m = s.querySelector(".ui-truncate-more-btn");
1915
- if (!d || !m) return !1;
1916
- d.textContent !== u.resumo && (d.textContent = u.resumo), m.textContent !== u.botao && (m.textContent = u.botao);
1930
+ I == null || I.focus({ preventScroll: !0 });
1931
+ }), kt(e, s, n, p, l.length);
1932
+ }
1933
+ function kt(e, t, a, r, i) {
1934
+ const o = z(a.camada.id), n = !!(a.camada.isGroup || a.subcamadas.length > 0), s = i > r, c = a.subcamadas.length === 0 && i === 0, l = K(t, "ui-truncate-notice"), p = K(t, "ui-empty-row");
1935
+ if (p && !c && ne(p), l && !s && ne(l), s)
1936
+ if (l) {
1937
+ const d = Xe(r, i), u = l.querySelector("span"), f = l.querySelector(".ui-truncate-more-btn");
1938
+ if (!u || !f) return !1;
1939
+ u.textContent !== d.resumo && (u.textContent = d.resumo), f.textContent !== d.botao && (f.textContent = d.botao);
1917
1940
  } else {
1918
- const { modelo: u, elementos: d } = ie(_e(o, t, i));
1919
- if (d.length !== 1) return !1;
1920
- e.ligar(u.content), r.appendChild(d[0]);
1941
+ const { modelo: d, elementos: u } = oe(We(o, r, i));
1942
+ if (u.length !== 1) return !1;
1943
+ e.ligar(d.content), t.appendChild(u[0]);
1921
1944
  }
1922
1945
  if (c && !p) {
1923
- const { elementos: u } = ie(Ye(n));
1924
- if (u.length !== 1) return !1;
1925
- r.appendChild(u[0]);
1946
+ const { elementos: d } = oe(Je(n));
1947
+ if (d.length !== 1) return !1;
1948
+ t.appendChild(d[0]);
1926
1949
  }
1927
1950
  return !0;
1928
1951
  }
1929
- function kr(e, r) {
1930
- const a = e.grupos.get(r), t = e.nodos.get(r), i = a ? _(a, "ui-layer-row") : null, o = i == null ? void 0 : i.querySelector(".ui-col-name");
1931
- if (!a || !t || !i || !o) return !1;
1932
- const { host: n } = e, l = Q(n.camadas, n.feicoes, r), c = (e.porCamada.get(r) ?? []).length, s = t.subcamadas.length, p = !!(t.camada.isGroup || s > 0), u = o.querySelector(".ui-count-chip");
1933
- if (u)
1934
- if (l.length === 0 && p)
1935
- oe(u);
1952
+ function Lt(e, t) {
1953
+ const a = e.grupos.get(t), r = e.nodos.get(t), i = a ? K(a, "ui-layer-row") : null, o = i == null ? void 0 : i.querySelector(".ui-col-name");
1954
+ if (!a || !r || !i || !o) return !1;
1955
+ const { host: n } = e, s = W(n.camadas, n.feicoes, t), c = (e.porCamada.get(t) ?? []).length, l = r.subcamadas.length, p = !!(r.camada.isGroup || l > 0), d = o.querySelector(".ui-count-chip");
1956
+ if (d)
1957
+ if (s.length === 0 && p)
1958
+ ne(d);
1936
1959
  else {
1937
- const d = String(l.length), m = Ge(l.length, c, s);
1938
- u.textContent !== d && (u.textContent = d), u.getAttribute("title") !== m && u.setAttribute("title", m);
1960
+ const u = String(s.length), f = Ke(s.length, c, l);
1961
+ d.textContent !== u && (d.textContent = u), d.getAttribute("title") !== f && d.setAttribute("title", f);
1939
1962
  }
1940
1963
  else {
1941
- const d = Ve(l.length, c, s, p);
1942
- if (d) {
1943
- const { elementos: m } = ie(d);
1944
- if (m.length !== 1) return !1;
1945
- o.appendChild(m[0]);
1964
+ const u = Qe(s.length, c, l, p);
1965
+ if (u) {
1966
+ const { elementos: f } = oe(u);
1967
+ if (f.length !== 1) return !1;
1968
+ o.appendChild(f[0]);
1946
1969
  }
1947
1970
  }
1948
- return Je(i.querySelector(".ui-target-circle"), l, n.selectedFeatureIds), !0;
1971
+ return ra(i.querySelector(".ui-target-circle"), s, n.selectedFeatureIds), !0;
1949
1972
  }
1950
- function Ir(e, r, a, t) {
1951
- const i = r.getElementById("ui-layer-tree-mount"), o = ta(ne(e.camadas)), n = i ? hr(i) : /* @__PURE__ */ new Map(), l = br(e.feicoes), c = a.camadas === "todas" ? Array.from(o.keys()) : Array.from(a.camadas), s = c.map((d) => ({
1952
- existeNoModelo: o.has(d),
1953
- renderizadaNoDom: n.has(d),
1954
- drawerAberto: e.activeSettingsLayerId === d
1973
+ function Ct(e, t, a, r) {
1974
+ const i = t.getElementById("ui-layer-tree-mount"), o = la(se(e.camadas)), n = i ? xt(i) : /* @__PURE__ */ new Map(), s = yt(e.feicoes), c = a.camadas === "todas" ? Array.from(o.keys()) : Array.from(a.camadas), l = c.map((u) => ({
1975
+ existeNoModelo: o.has(u),
1976
+ renderizadaNoDom: n.has(u),
1977
+ drawerAberto: e.activeSettingsLayerId === u
1955
1978
  }));
1956
- if (!vr({
1979
+ if (!ht({
1957
1980
  arvoreRenderizada: i !== null,
1958
1981
  buscaAtiva: (e.searchQuery || "").trim() !== "",
1959
1982
  editandoCamada: e.editingLayerId !== null,
1960
1983
  editandoFeicao: e.editingFeatureId !== null,
1961
- idsDuplicados: c.some((d) => yr(l.get(d))),
1962
- camadasAfetadas: s
1984
+ idsDuplicados: c.some((u) => wt(s.get(u))),
1985
+ camadasAfetadas: l
1963
1986
  }).incremental) return !1;
1964
- const u = {
1987
+ const d = {
1965
1988
  host: e,
1966
- shadow: r,
1989
+ shadow: t,
1967
1990
  mudanca: a,
1968
- porCamada: l,
1991
+ porCamada: s,
1969
1992
  nodos: o,
1970
1993
  grupos: n,
1971
- herdado: se(e.camadas),
1972
- ligar: t
1994
+ herdado: le(e.camadas),
1995
+ ligar: r
1973
1996
  };
1974
- for (const d of c)
1975
- if (!Ar(u, d)) return !1;
1976
- for (const d of xr(c, e.camadas))
1977
- if (!kr(u, d)) return !1;
1978
- return (a.selecaoAfetada || e.selectedFeatureIds.size > 0) && Ze(e, r), !0;
1997
+ for (const u of c)
1998
+ if (!It(d, u)) return !1;
1999
+ for (const u of At(c, e.camadas))
2000
+ if (!Lt(d, u)) return !1;
2001
+ return (a.selecaoAfetada || e.selectedFeatureIds.size > 0) && ia(e, t), !0;
1979
2002
  }
1980
- function Cr(e) {
2003
+ function St(e) {
1981
2004
  if (!e.isConnected) return;
1982
- const r = document.createElement("div");
1983
- r.className = "ui-basemap-preview-none", r.innerHTML = h.gradeCad, e.replaceWith(r);
2005
+ const t = document.createElement("div");
2006
+ t.className = "ui-basemap-preview-none", t.innerHTML = y.gradeCad, e.replaceWith(t);
1984
2007
  }
1985
- function Lr(e, r, a, t) {
2008
+ function $t(e, t, a, r) {
1986
2009
  var g, v;
1987
- const i = Ga({
2010
+ const i = Ua({
1988
2011
  camadas: e.camadas,
1989
2012
  feicoes: e.feicoes,
1990
2013
  camadaAtivaId: e.camadaAtivaId,
@@ -1998,92 +2021,92 @@ function Lr(e, r, a, t) {
1998
2021
  mostrarBusca: e.mostrarBusca,
1999
2022
  limitesPorCamada: e.expandedFeatureLimits,
2000
2023
  mostrarBotaoColapsar: e.flutuante && e.getAttribute("colapsavel") !== "false"
2001
- }), o = e.mostrarMapasBase ? $a(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? za(e.camadas, e.feicoes, e.selectedFeatureIds) : "", l = r.getElementById("ui-layer-tree-mount"), c = a.scrollTop, s = l ? l.scrollTop : 0, p = r.activeElement, u = p && a.contains(p) ? p.id : "", d = p && !u && a.contains(p) ? Array.from(p.attributes).find((y) => y.name.startsWith("data-") && y.value !== "") : void 0, m = p && "selectionStart" in p ? p.selectionStart : null;
2024
+ }), o = e.mostrarMapasBase ? Da(e.mapasBase, e.mapaBaseAtivo, e.mapasBaseRecolhido) : "", n = e.mostrarRodape ? Ra(e.camadas, e.feicoes, e.selectedFeatureIds) : "", s = t.getElementById("ui-layer-tree-mount"), c = a.scrollTop, l = s ? s.scrollTop : 0, p = t.activeElement, d = p && a.contains(p) ? p.id : "", u = p && !d && a.contains(p) ? Array.from(p.attributes).find((b) => b.name.startsWith("data-") && b.value !== "") : void 0, f = p && "selectionStart" in p ? p.selectionStart : null;
2002
2025
  a.innerHTML = `
2003
2026
  ${i}
2004
2027
  ${n}
2005
2028
  ${o}
2006
2029
  `, a.scrollTop = c;
2007
- const f = r.getElementById("ui-layer-tree-mount");
2008
- if (f && (f.scrollTop = s), u) {
2009
- const y = r.getElementById(u);
2010
- if (y && (y.focus({ preventScroll: !0 }), m !== null && typeof y.setSelectionRange == "function"))
2030
+ const m = t.getElementById("ui-layer-tree-mount");
2031
+ if (m && (m.scrollTop = l), d) {
2032
+ const b = t.getElementById(d);
2033
+ if (b && (b.focus({ preventScroll: !0 }), f !== null && typeof b.setSelectionRange == "function"))
2011
2034
  try {
2012
- y.setSelectionRange(m, m);
2035
+ b.setSelectionRange(f, f);
2013
2036
  } catch {
2014
2037
  }
2015
2038
  }
2016
- !u && d && ((g = T(a, d.name, d.value)) == null || g.focus({ preventScroll: !0 })), (v = r.querySelector("[data-layer-row], [data-feat-row]")) == null || v.setAttribute("tabindex", "0"), a.querySelectorAll("img[data-basemap-thumb]").forEach((y) => {
2017
- const k = () => Cr(y);
2018
- y.addEventListener("error", k, { once: !0 }), y.complete && y.naturalWidth === 0 && y.getAttribute("src") && k();
2019
- }), gr(e, r), t.bindAll();
2039
+ !d && u && ((g = P(a, u.name, u.value)) == null || g.focus({ preventScroll: !0 })), (v = t.querySelector("[data-layer-row], [data-feat-row]")) == null || v.setAttribute("tabindex", "0"), a.querySelectorAll("img[data-basemap-thumb]").forEach((b) => {
2040
+ const E = () => St(b);
2041
+ b.addEventListener("error", E, { once: !0 }), b.complete && b.naturalWidth === 0 && b.getAttribute("src") && E();
2042
+ }), bt(e, t), r.bindAll();
2020
2043
  }
2021
- function Sr(e, r, a, t) {
2044
+ function Ft(e, t, a, r) {
2022
2045
  try {
2023
- return Ir(e, r, t, (i) => {
2024
- ra(e, i), ea(e, i), aa(e, r, i), a.bindLinhasFeicao(i);
2046
+ return Ct(e, t, r, (i) => {
2047
+ sa(e, i), oa(e, i), na(e, t, i), a.bindLinhasFeicao(i);
2025
2048
  });
2026
2049
  } catch (i) {
2027
2050
  return console.warn("[UI-Camadas] atualização incremental falhou; redesenhando o painel.", i), !1;
2028
2051
  }
2029
2052
  }
2030
- const $r = '[role="button"][tabindex]', Y = "[data-layer-row], [data-feat-row]", Mr = ["color", "range", "checkbox", "radio", "button"];
2031
- function ia(e) {
2032
- return !e || !(e instanceof Element) || e instanceof HTMLInputElement && Mr.includes(e.type) ? !1 : ka({ composedPath: () => [e] });
2053
+ const Mt = '[role="button"][tabindex]', Q = "[data-layer-row], [data-feat-row]", zt = ["color", "range", "checkbox", "radio", "button"];
2054
+ function ca(e) {
2055
+ return !e || !(e instanceof Element) || e instanceof HTMLInputElement && zt.includes(e.type) ? !1 : Ma({ composedPath: () => [e] });
2033
2056
  }
2034
- function Fr(e) {
2035
- return Array.from(e.querySelectorAll(Y)).filter((r) => {
2036
- const a = r.closest(".ui-children-container");
2037
- return !(a && a.style.display === "none") && !r.classList.contains("ui-search-hidden");
2057
+ function Bt(e) {
2058
+ return Array.from(e.querySelectorAll(Q)).filter((t) => {
2059
+ const a = t.closest(".ui-children-container");
2060
+ return !(a && a.style.display === "none") && !t.classList.contains("ui-search-hidden");
2038
2061
  });
2039
2062
  }
2040
- function re(e, r) {
2041
- r && (e.querySelectorAll(Y).forEach((a) => a.setAttribute("tabindex", "-1")), r.setAttribute("tabindex", "0"), r.focus());
2063
+ function j(e, t) {
2064
+ t && (e.querySelectorAll(Q).forEach((a) => a.setAttribute("tabindex", "-1")), t.setAttribute("tabindex", "0"), t.focus());
2042
2065
  }
2043
- function zr(e, r) {
2066
+ function qt(e, t) {
2044
2067
  e.dispatchEvent(
2045
2068
  new MouseEvent("click", {
2046
2069
  bubbles: !0,
2047
- ctrlKey: r.ctrlKey || r.metaKey,
2048
- shiftKey: r.shiftKey
2070
+ ctrlKey: t.ctrlKey || t.metaKey,
2071
+ shiftKey: t.shiftKey
2049
2072
  })
2050
2073
  );
2051
2074
  }
2052
- function Br(e, r, a) {
2075
+ function Pt(e, t, a) {
2053
2076
  var i;
2054
- if (ia(a.composedPath()[0])) return;
2055
- const t = r.querySelector(".confirming");
2056
- if (t) {
2057
- a.preventDefault(), t.classList.remove("confirming");
2077
+ if (ca(a.composedPath()[0])) return;
2078
+ const r = t.querySelector(".confirming");
2079
+ if (r) {
2080
+ a.preventDefault(), r.dispatchEvent(new Event("ui-cancelar-confirmacao")), r.classList.remove("confirming");
2058
2081
  return;
2059
2082
  }
2060
2083
  if (e.activeSettingsLayerId) {
2061
2084
  a.preventDefault();
2062
2085
  const o = e.activeSettingsLayerId;
2063
- e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (i = T(r, "data-layer-settings", o)) == null || i.focus();
2086
+ e.activeSettingsLayerId = null, e.solicitarRenderizacao(), (i = P(t, "data-layer-settings", o)) == null || i.focus();
2064
2087
  return;
2065
2088
  }
2066
2089
  e.selectedFeatureIds.size > 0 && (a.preventDefault(), e.limparSelecao(!0));
2067
2090
  }
2068
- function qr(e, r, a, t) {
2069
- var l;
2070
- const i = t.composedPath()[0];
2071
- if (!(i instanceof HTMLElement) || ia(i)) return;
2072
- if ((t.key === "Enter" || t.key === " ") && i.matches($r)) {
2073
- t.preventDefault(), i.click();
2091
+ function Dt(e, t, a, r) {
2092
+ var s, c, l;
2093
+ const i = r.composedPath()[0];
2094
+ if (!(i instanceof HTMLElement) || ca(i)) return;
2095
+ if ((r.key === "Enter" || r.key === " ") && i.matches(Mt)) {
2096
+ r.preventDefault(), i.click();
2074
2097
  return;
2075
2098
  }
2076
- if (!i.matches(Y)) return;
2077
- const o = Fr(r), n = o.indexOf(i);
2078
- if (t.key === "F2") {
2079
- t.preventDefault();
2080
- const c = i.getAttribute("data-layer-row"), s = i.getAttribute("data-feat-row"), p = c ? T(i, "data-layer-name-trigger", c) : s ? T(i, "data-feat-name-trigger", s) : null;
2081
- p && p.dispatchEvent(new MouseEvent("dblclick", { bubbles: !0 }));
2099
+ if (!i.matches(Q)) return;
2100
+ const o = Bt(t), n = o.indexOf(i);
2101
+ if (r.key === "F2") {
2102
+ r.preventDefault();
2103
+ const p = i.getAttribute("data-layer-row"), d = i.getAttribute("data-feat-row"), u = p ? P(i, "data-layer-name-trigger", p) : d ? P(i, "data-feat-name-trigger", d) : null;
2104
+ u && u.dispatchEvent(new MouseEvent("dblclick", { bubbles: !0 }));
2082
2105
  return;
2083
2106
  }
2084
- if ((t.ctrlKey || t.metaKey) && (t.key === "a" || t.key === "A")) {
2085
- t.preventDefault();
2086
- const c = Xe(
2107
+ if ((r.ctrlKey || r.metaKey) && (r.key === "a" || r.key === "A")) {
2108
+ r.preventDefault();
2109
+ const p = aa(
2087
2110
  e.camadas,
2088
2111
  e.feicoes,
2089
2112
  e.expandedLayers,
@@ -2091,259 +2114,285 @@ function qr(e, r, a, t) {
2091
2114
  void 0,
2092
2115
  e.expandedFeatureLimits
2093
2116
  );
2094
- c.length > 0 && e.selecionarFeicoes(c, !0);
2117
+ p.length > 0 && e.selecionarFeicoes(p, !0);
2095
2118
  return;
2096
2119
  }
2097
- if (t.key === "Delete") {
2098
- const c = a.getElementById("btn-footer-del");
2099
- if (c && !c.hasAttribute("disabled") && e.selectedFeatureIds.size > 0) {
2100
- t.preventDefault(), c.click();
2120
+ if (r.key === "Delete") {
2121
+ const p = a.getElementById("btn-footer-del");
2122
+ if (p && !p.hasAttribute("disabled") && e.selectedFeatureIds.size > 0) {
2123
+ r.preventDefault(), p.click();
2101
2124
  return;
2102
2125
  }
2103
2126
  }
2104
- switch (t.key) {
2127
+ switch (r.key) {
2105
2128
  case "ArrowDown":
2106
- t.preventDefault(), re(r, o[Math.min(o.length - 1, n + 1)]);
2129
+ r.preventDefault(), j(t, o[Math.min(o.length - 1, n + 1)]);
2107
2130
  break;
2108
2131
  case "ArrowUp":
2109
- t.preventDefault(), re(r, o[Math.max(0, n - 1)]);
2132
+ r.preventDefault(), j(t, o[Math.max(0, n - 1)]);
2110
2133
  break;
2111
2134
  case "Home":
2112
- t.preventDefault(), re(r, o[0]);
2135
+ r.preventDefault(), j(t, o[0]);
2113
2136
  break;
2114
2137
  case "End":
2115
- t.preventDefault(), re(r, o[o.length - 1]);
2138
+ r.preventDefault(), j(t, o[o.length - 1]);
2116
2139
  break;
2117
- case "ArrowRight":
2140
+ case "ArrowRight": {
2141
+ const p = i.getAttribute("data-layer-row");
2142
+ if (!p) return;
2143
+ const d = i.closest(".ui-layer-group");
2144
+ (d == null ? void 0 : d.getAttribute("aria-expanded")) === "true" ? n + 1 < o.length && (d != null && d.contains(o[n + 1])) && (r.preventDefault(), j(t, o[n + 1])) : (r.preventDefault(), (s = P(a, "data-layer-expand", p)) == null || s.click());
2145
+ break;
2146
+ }
2118
2147
  case "ArrowLeft": {
2119
- const c = i.getAttribute("data-layer-row");
2120
- if (!c) return;
2121
- const s = i.closest(".ui-layer-group"), p = (s == null ? void 0 : s.getAttribute("aria-expanded")) === "true";
2122
- t.key === "ArrowRight" !== p && (t.preventDefault(), (l = T(a, "data-layer-expand", c)) == null || l.click());
2148
+ const p = i.getAttribute("data-layer-row");
2149
+ if (p) {
2150
+ const f = i.closest(".ui-layer-group");
2151
+ if ((f == null ? void 0 : f.getAttribute("aria-expanded")) === "true")
2152
+ r.preventDefault(), (c = P(a, "data-layer-expand", p)) == null || c.click();
2153
+ else {
2154
+ const g = (l = f == null ? void 0 : f.parentElement) == null ? void 0 : l.closest(".ui-layer-group"), v = g == null ? void 0 : g.getAttribute("data-layer-id"), b = v ? P(t, "data-layer-row", v) : null;
2155
+ b && (r.preventDefault(), j(t, b));
2156
+ }
2157
+ return;
2158
+ }
2159
+ const d = i.getAttribute("data-feat-layer"), u = d ? P(t, "data-layer-row", d) : null;
2160
+ u && (r.preventDefault(), j(t, u));
2123
2161
  break;
2124
2162
  }
2125
2163
  case "Enter":
2126
2164
  case " ":
2127
- t.preventDefault(), zr(i, t);
2165
+ r.preventDefault(), qt(i, r);
2128
2166
  break;
2129
2167
  }
2130
2168
  }
2131
- function Pr(e, r, a, t, i) {
2132
- i.add(r, "keydown", (o) => {
2133
- o.key === "Escape" && Br(e, a, o);
2134
- }), i.add(t, "keydown", (o) => qr(e, t, a, o)), i.add(t, "focusin", (o) => {
2169
+ function Tt(e, t, a, r, i) {
2170
+ i.add(t, "keydown", (o) => {
2171
+ o.key === "Escape" && Pt(e, a, o);
2172
+ }), i.add(r, "keydown", (o) => Dt(e, r, a, o)), i.add(r, "focusin", (o) => {
2135
2173
  const n = o.composedPath()[0];
2136
- n instanceof HTMLElement && n.matches(Y) && (t.querySelectorAll(Y).forEach((l) => l.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
2174
+ n instanceof HTMLElement && n.matches(Q) && (r.querySelectorAll(Q).forEach((s) => s.setAttribute("tabindex", "-1")), n.setAttribute("tabindex", "0"));
2137
2175
  });
2138
2176
  }
2139
- function Dr(e, r, a, t, i) {
2140
- const o = Xe(e.camadas, e.feicoes, e.expandedLayers, e.searchQuery), n = !t && !o.includes(r) && e.feicoes.some((c) => c.id === r), l = Ta(
2141
- n ? [...o, r] : o,
2177
+ function Rt(e, t, a, r, i) {
2178
+ const o = aa(
2179
+ e.camadas,
2180
+ e.feicoes,
2181
+ e.expandedLayers,
2182
+ e.searchQuery,
2183
+ void 0,
2184
+ e.expandedFeatureLimits
2185
+ ), n = !r && !o.includes(t) && e.feicoes.some((c) => c.id === t), s = Ha(
2186
+ n ? [...o, t] : o,
2142
2187
  e.selectedFeatureIds,
2143
2188
  e.lastClickedFeatureId,
2144
- r,
2189
+ t,
2145
2190
  a,
2146
- t
2191
+ r
2147
2192
  );
2148
- l && (e.selectedFeatureIds = l.selecionados, e.lastClickedFeatureId = l.ultimoClicadoId, e.sincronizarSelecaoDOM(), i && e.notificarMudancaSelecao());
2193
+ s && (e.selectedFeatureIds = s.selecionados, e.lastClickedFeatureId = s.ultimoClicadoId, e.sincronizarSelecaoDOM(), i && e.notificarMudancaSelecao());
2149
2194
  }
2150
- function Tr(e, r, a) {
2151
- const t = r || [];
2152
- t.length === e.selectedFeatureIds.size && t.every((n) => e.selectedFeatureIds.has(n)) || (e.selectedFeatureIds.clear(), t.forEach((n) => e.selectedFeatureIds.add(n)), e.lastClickedFeatureId = t.length > 0 ? t[t.length - 1] : null, e.sincronizarSelecaoDOM(), a && e.notificarMudancaSelecao());
2195
+ function Ot(e, t, a) {
2196
+ const r = t || [];
2197
+ r.length === e.selectedFeatureIds.size && r.every((n) => e.selectedFeatureIds.has(n)) || (e.selectedFeatureIds.clear(), r.forEach((n) => e.selectedFeatureIds.add(n)), e.lastClickedFeatureId = r.length > 0 ? r[r.length - 1] : null, e.sincronizarSelecaoDOM(), a && e.notificarMudancaSelecao());
2153
2198
  }
2154
- function Rr(e, r) {
2155
- e.selectedFeatureIds.size !== 0 && (e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.sincronizarSelecaoDOM(), r && e.notificarMudancaSelecao());
2199
+ function jt(e, t) {
2200
+ e.selectedFeatureIds.size !== 0 && (e.selectedFeatureIds.clear(), e.lastClickedFeatureId = null, e.sincronizarSelecaoDOM(), t && e.notificarMudancaSelecao());
2156
2201
  }
2157
- function Or(e) {
2158
- const r = e.feicoes.filter((a) => e.selectedFeatureIds.has(a.id));
2202
+ function Nt(e) {
2203
+ const t = e.feicoes.filter((a) => e.selectedFeatureIds.has(a.id));
2159
2204
  e.dispararEvento("ui-feicoes-selecionadas", {
2160
2205
  feicoesIds: Array.from(e.selectedFeatureIds),
2161
- feicoes: r
2162
- }), r.length === 1 ? e.dispararEvento("ui-feicao-selecionada", { feicaoId: r[0].id, feicao: r[0] }) : r.length === 0 && e.dispararEvento("ui-feicao-selecionada", { feicaoId: null, feicao: null });
2206
+ feicoes: t
2207
+ }), t.length === 1 ? e.dispararEvento("ui-feicao-selecionada", { feicaoId: t[0].id, feicao: t[0] }) : t.length === 0 && e.dispararEvento("ui-feicao-selecionada", { feicaoId: null, feicao: null });
2163
2208
  }
2164
- class jr {
2165
- constructor(r) {
2209
+ class Ht {
2210
+ constructor(t) {
2166
2211
  A(this, "origens", /* @__PURE__ */ new Map());
2167
2212
  A(this, "removidas", /* @__PURE__ */ new Set());
2168
- A(this, "salvarComDebounce", Te(() => this.salvar(), 200));
2169
- this.instantaneo = r;
2213
+ A(this, "salvarComDebounce", je(() => this.salvar(), 200));
2214
+ this.instantaneo = t;
2170
2215
  }
2171
2216
  chaveAtual() {
2172
- const r = this.instantaneo();
2173
- return Ka(r.storageKey, r.id);
2217
+ const t = this.instantaneo();
2218
+ return Xa(t.storageKey, t.id);
2174
2219
  }
2175
2220
  carregar() {
2176
- return be(this.chaveAtual());
2221
+ return he(this.chaveAtual());
2177
2222
  }
2178
2223
  /** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
2179
2224
  agendar() {
2180
2225
  this.salvarComDebounce();
2181
2226
  }
2182
2227
  salvar() {
2183
- const r = this.instantaneo();
2184
- if (!r.persistir || !r.conectado) return;
2185
- const a = this.chaveAtual(), t = Za({
2186
- estadoAnterior: be(a),
2228
+ const t = this.instantaneo();
2229
+ if (!t.persistir || !t.conectado) return;
2230
+ const a = this.chaveAtual(), r = at({
2231
+ estadoAnterior: he(a),
2187
2232
  origensCamadas: this.origens,
2188
- camadas: r.camadas,
2189
- expandedLayers: r.expandedLayers,
2190
- camadaAtivaId: r.camadaAtivaId,
2191
- painelColapsado: r.painelColapsado,
2192
- mapaBaseAtivo: r.mapaBaseAtivo,
2193
- densidade: r.densidade,
2194
- altura: r.altura,
2233
+ camadas: t.camadas,
2234
+ expandedLayers: t.expandedLayers,
2235
+ camadaAtivaId: t.camadaAtivaId,
2236
+ painelColapsado: t.painelColapsado,
2237
+ mapaBaseAtivo: t.mapaBaseAtivo,
2238
+ densidade: t.densidade,
2239
+ altura: t.altura,
2195
2240
  camadasRemovidas: this.removidas
2196
2241
  });
2197
- this.removidas.clear(), Xa(a, t);
2242
+ this.removidas.clear(), Ja(a, r);
2198
2243
  }
2199
2244
  limpar() {
2200
- Wa(this.chaveAtual());
2245
+ Za(this.chaveAtual());
2201
2246
  }
2202
2247
  // --- Origens (como a camada chegou do consumidor) e remoções ---
2203
2248
  limparOrigens() {
2204
2249
  this.origens.clear();
2205
2250
  }
2206
- registrarOrigem(r) {
2207
- this.origens.set(r.id, We(r));
2251
+ registrarOrigem(t) {
2252
+ this.origens.set(t.id, ta(t));
2208
2253
  }
2209
- esquecerCamada(r) {
2210
- this.origens.delete(r), this.removidas.add(r);
2254
+ esquecerCamada(t) {
2255
+ this.origens.delete(t), this.removidas.add(t);
2211
2256
  }
2212
2257
  /** Aplica por cima de `camadas` o que foi lembrado (expansão, visibilidade, travas, opacidade, cor, ordem). */
2213
- reidratar(r, a, t) {
2214
- Ja(r, a, t, this.origens);
2258
+ reidratar(t, a, r) {
2259
+ et(t, a, r, this.origens);
2215
2260
  }
2216
2261
  }
2217
- function Ee(e, r = null, a = /* @__PURE__ */ new Set()) {
2218
- const t = [];
2219
- if (!Array.isArray(e)) return t;
2262
+ function Ee(e, t = null, a = /* @__PURE__ */ new Set()) {
2263
+ const r = [];
2264
+ if (!Array.isArray(e)) return r;
2220
2265
  for (const i of e) {
2221
2266
  if (!i || typeof i != "object" || !i.id) continue;
2222
2267
  const o = String(i.id);
2223
2268
  if (a.has(o)) continue;
2224
2269
  a.add(o);
2225
2270
  const n = { ...i, id: o };
2226
- delete n.children, r && n.parentId === void 0 && (n.parentId = r), t.push(n), Array.isArray(i.children) && i.children.length > 0 && t.push(...Ee(i.children, o, a));
2271
+ delete n.children, t && n.parentId === void 0 && (n.parentId = t), r.push(n), Array.isArray(i.children) && i.children.length > 0 && r.push(...Ee(i.children, o, a));
2227
2272
  }
2228
- return t;
2273
+ return r;
2229
2274
  }
2230
- function oa(e) {
2231
- const r = e.lastClickedFeatureId;
2232
- r && !e.feicoes.some((a) => a.id === r) && (e.lastClickedFeatureId = null);
2275
+ function da(e) {
2276
+ const t = e.lastClickedFeatureId;
2277
+ t && !e.feicoes.some((a) => a.id === t) && (e.lastClickedFeatureId = null);
2233
2278
  }
2234
- function na(e) {
2279
+ function ua(e) {
2235
2280
  if (!Array.isArray(e)) return [];
2236
- const r = /* @__PURE__ */ new Set(), a = [];
2237
- for (const t of e) {
2238
- if (!t || typeof t != "object" || !t.id) continue;
2239
- const i = String(t.id);
2240
- r.has(i) || (r.add(i), a.push({ ...t, id: i }));
2281
+ const t = /* @__PURE__ */ new Set(), a = [];
2282
+ for (const r of e) {
2283
+ if (!r || typeof r != "object" || !r.id) continue;
2284
+ const i = String(r.id);
2285
+ t.has(i) || (t.add(i), a.push({ ...r, id: i }));
2241
2286
  }
2242
2287
  return a;
2243
2288
  }
2244
- function Nr(e, r, a) {
2245
- if (e.camadas = Array.isArray(r) ? Ee(r) : [], e.lembranca.limparOrigens(), e.persistir) {
2246
- const i = e.lembranca.carregar();
2247
- e.lembranca.reidratar(e.camadas, i, e.expandedLayers), i != null && i.camadaAtivaId && e.camadas.some((o) => o.id === i.camadaAtivaId) && (e.camadaAtivaId = i.camadaAtivaId);
2289
+ function Gt(e, t, a) {
2290
+ if (e.camadas = Array.isArray(t) ? Ee(t) : [], e.lembranca.limparOrigens(), e.persistir) {
2291
+ const o = e.lembranca.carregar();
2292
+ e.lembranca.reidratar(e.camadas, o, e.expandedLayers), o != null && o.camadaAtivaId && e.camadas.some((n) => n.id === o.camadaAtivaId) && (e.camadaAtivaId = o.camadaAtivaId);
2248
2293
  } else
2249
- e.camadas.forEach((i) => {
2250
- e.lembranca.registrarOrigem(i), e.expandedLayers.has(i.id) || e.expandedLayers.add(i.id);
2294
+ e.camadas.forEach((o) => {
2295
+ e.lembranca.registrarOrigem(o), e.expandedLayers.has(o.id) || e.expandedLayers.add(o.id);
2251
2296
  });
2252
2297
  if (Array.isArray(a)) {
2253
- e.feicoes = na(a);
2254
- const i = new Set(e.camadas.map((n) => n.id)), o = e.feicoes.filter((n) => n.layerId && !i.has(n.layerId));
2255
- o.length > 0 && console.warn(
2256
- `[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
2257
- o.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
2258
- ), Ae(e.selectedFeatureIds, e.feicoes), oa(e);
2259
- }
2260
- const t = e.getAttribute("camada-ativa");
2261
- e.camadas.length > 0 && (!t || !e.camadas.some((i) => i.id === t)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2262
- }
2263
- function Hr(e, r) {
2264
- const a = new Map(e.map((i) => [i.id, i])), t = /* @__PURE__ */ new Set();
2265
- for (const i of r) {
2298
+ e.feicoes = ua(a);
2299
+ const o = new Set(e.camadas.map((s) => s.id)), n = e.feicoes.filter((s) => s.layerId && !o.has(s.layerId));
2300
+ n.length > 0 && console.warn(
2301
+ `[UI-Camadas] ${n.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
2302
+ n.map((s) => ({ id: s.id, nome: s.name, layerId: s.layerId }))
2303
+ ), Ae(e.selectedFeatureIds, e.feicoes), da(e);
2304
+ }
2305
+ const r = new Set(e.camadas.map((o) => o.id));
2306
+ if (e.activeSettingsLayerId && !r.has(e.activeSettingsLayerId) && (e.activeSettingsLayerId = null), e.editingLayerId && !r.has(e.editingLayerId) && (e.editingLayerId = null), e.expandedFeatureLimits)
2307
+ for (const o of e.expandedFeatureLimits.keys())
2308
+ r.has(o) || e.expandedFeatureLimits.delete(o);
2309
+ const i = e.getAttribute("camada-ativa");
2310
+ e.camadas.length > 0 && (!i || !r.has(i)) && (e.camadaAtivaId = e.camadas[0].id), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2311
+ }
2312
+ function _t(e, t) {
2313
+ const a = new Map(e.map((i) => [i.id, i])), r = /* @__PURE__ */ new Set();
2314
+ for (const i of t) {
2266
2315
  const o = a.get(i.id);
2267
- (!o || !Da(o, i)) && t.add(i.id);
2316
+ (!o || !Na(o, i)) && r.add(i.id);
2268
2317
  }
2269
- return t;
2318
+ return r;
2270
2319
  }
2271
- function Gr(e, r) {
2320
+ function Ut(e, t) {
2272
2321
  const a = e.feicoes;
2273
- e.feicoes = na(r);
2274
- const t = e.selectedFeatureIds.size;
2275
- Ae(e.selectedFeatureIds, e.feicoes), oa(e), e.solicitarAtualizacaoFeicoes({
2322
+ e.feicoes = ua(t);
2323
+ const r = e.selectedFeatureIds.size;
2324
+ Ae(e.selectedFeatureIds, e.feicoes), da(e), e.editingFeatureId && !e.feicoes.some((i) => i.id === e.editingFeatureId) && (e.editingFeatureId = null), e.solicitarAtualizacaoFeicoes({
2276
2325
  camadas: "todas",
2277
- idsAlterados: Hr(a, e.feicoes),
2278
- selecaoAfetada: e.selectedFeatureIds.size !== t
2326
+ idsAlterados: _t(a, e.feicoes),
2327
+ selecaoAfetada: e.selectedFeatureIds.size !== r
2279
2328
  });
2280
2329
  }
2281
- function Vr(e, r) {
2282
- if (!r || !r.id) return;
2283
- if (e.camadas.some((t) => t.id === r.id)) {
2284
- console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);
2330
+ function Vt(e, t) {
2331
+ if (!t || !t.id) return;
2332
+ if (e.camadas.some((r) => r.id === t.id)) {
2333
+ console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${t.id}'.`);
2285
2334
  return;
2286
2335
  }
2287
- const a = new Set(e.camadas.map((t) => t.id));
2288
- for (const t of Ee([r])) {
2289
- if (a.has(t.id)) {
2290
- console.warn(`[UI-Camadas] adicionarCamada: subcamada '${t.id}' ignorada, o id já existe.`);
2336
+ const a = new Set(e.camadas.map((r) => r.id));
2337
+ for (const r of Ee([t])) {
2338
+ if (a.has(r.id)) {
2339
+ console.warn(`[UI-Camadas] adicionarCamada: subcamada '${r.id}' ignorada, o id já existe.`);
2291
2340
  continue;
2292
2341
  }
2293
- a.add(t.id), e.camadas.push(t), e.lembranca.registrarOrigem(t), e.expandedLayers.add(t.id), t.parentId && e.expandedLayers.add(t.parentId);
2342
+ a.add(r.id), e.camadas.push(r), e.lembranca.registrarOrigem(r), e.expandedLayers.add(r.id), r.parentId && e.expandedLayers.add(r.parentId);
2294
2343
  }
2295
2344
  e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2296
2345
  }
2297
- function Ur(e, r) {
2298
- var a;
2299
- e.camadas.forEach((t) => {
2300
- t.parentId === r && (t.parentId = null);
2301
- }), e.camadas = e.camadas.filter((t) => t.id !== r), e.feicoes = e.feicoes.filter((t) => t.layerId !== r), e.lembranca.esquecerCamada(r), e.expandedLayers.delete(r), e.activeSettingsLayerId === r && (e.activeSettingsLayerId = null), Ae(e.selectedFeatureIds, e.feicoes), e.selectedFeatureIds.size === 0 && (e.lastClickedFeatureId = null), e.camadaAtivaId === r && (e.camadaAtivaId = ((a = e.camadas[0]) == null ? void 0 : a.id) ?? null), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2302
- }
2303
- function _r(e, r) {
2304
- if (!(!r || !r.id)) {
2305
- if (e.feicoes.some((a) => a.id === r.id)) {
2306
- console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);
2346
+ function Yt(e, t) {
2347
+ var a, r;
2348
+ e.camadas.forEach((i) => {
2349
+ i.parentId === t && (i.parentId = null);
2350
+ }), e.camadas = e.camadas.filter((i) => i.id !== t), e.feicoes = e.feicoes.filter((i) => i.layerId !== t), e.lembranca.esquecerCamada(t), e.expandedLayers.delete(t), (a = e.expandedFeatureLimits) == null || a.delete(t), e.activeSettingsLayerId === t && (e.activeSettingsLayerId = null), e.editingLayerId === t && (e.editingLayerId = null), e.editingFeatureId && !e.feicoes.some((i) => i.id === e.editingFeatureId) && (e.editingFeatureId = null), Ae(e.selectedFeatureIds, e.feicoes), e.selectedFeatureIds.size === 0 && (e.lastClickedFeatureId = null), e.camadaAtivaId === t && (e.camadaAtivaId = ((r = e.camadas[0]) == null ? void 0 : r.id) ?? null), e.salvarLembrancaEstado(), e.solicitarRenderizacao();
2351
+ }
2352
+ function Kt(e, t) {
2353
+ if (!(!t || !t.id)) {
2354
+ if (e.feicoes.some((a) => a.id === t.id)) {
2355
+ console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${t.id}'.`);
2307
2356
  return;
2308
2357
  }
2309
- e.feicoes.push({ ...r }), e.solicitarAtualizacaoFeicoes({
2310
- camadas: /* @__PURE__ */ new Set([r.layerId || ""]),
2358
+ e.feicoes.push({ ...t }), e.solicitarAtualizacaoFeicoes({
2359
+ camadas: /* @__PURE__ */ new Set([t.layerId || ""]),
2311
2360
  idsAlterados: /* @__PURE__ */ new Set(),
2312
- selecaoAfetada: e.selectedFeatureIds.has(r.id)
2361
+ selecaoAfetada: e.selectedFeatureIds.has(t.id)
2313
2362
  });
2314
2363
  }
2315
2364
  }
2316
- function Yr(e, r) {
2317
- if (!r || typeof r != "object" || !r.id) return;
2318
- const a = e.feicoes.findIndex((t) => t.id === r.id);
2365
+ function Qt(e, t) {
2366
+ if (!t || typeof t != "object" || !t.id) return;
2367
+ const a = e.feicoes.findIndex((r) => r.id === t.id);
2319
2368
  if (a !== -1) {
2320
- const t = e.feicoes[a].layerId || "";
2321
- e.feicoes[a] = { ...e.feicoes[a], ...r }, e.solicitarAtualizacaoFeicoes({
2322
- camadas: /* @__PURE__ */ new Set([t, e.feicoes[a].layerId || ""]),
2323
- idsAlterados: /* @__PURE__ */ new Set([r.id]),
2369
+ const r = e.feicoes[a].layerId || "";
2370
+ e.feicoes[a] = { ...e.feicoes[a], ...t }, e.solicitarAtualizacaoFeicoes({
2371
+ camadas: /* @__PURE__ */ new Set([r, e.feicoes[a].layerId || ""]),
2372
+ idsAlterados: /* @__PURE__ */ new Set([t.id]),
2324
2373
  selecaoAfetada: !1
2325
2374
  });
2326
2375
  }
2327
2376
  }
2328
- function Kr(e, r) {
2329
- const a = e.feicoes.find((i) => i.id === r);
2330
- e.feicoes = e.feicoes.filter((i) => i.id !== r);
2331
- const t = e.selectedFeatureIds.delete(r);
2332
- e.lastClickedFeatureId === r && (e.lastClickedFeatureId = null), e.solicitarAtualizacaoFeicoes({
2377
+ function Xt(e, t) {
2378
+ const a = e.feicoes.find((i) => i.id === t);
2379
+ e.feicoes = e.feicoes.filter((i) => i.id !== t);
2380
+ const r = e.selectedFeatureIds.delete(t);
2381
+ e.lastClickedFeatureId === t && (e.lastClickedFeatureId = null), e.editingFeatureId === t && (e.editingFeatureId = null), e.solicitarAtualizacaoFeicoes({
2333
2382
  camadas: new Set(a ? [a.layerId || ""] : []),
2334
2383
  idsAlterados: /* @__PURE__ */ new Set(),
2335
- selecaoAfetada: t
2384
+ selecaoAfetada: r
2336
2385
  });
2337
2386
  }
2338
- function Qr(e) {
2339
- function t() {
2387
+ function Wt(e) {
2388
+ function r() {
2340
2389
  return e.getMinAltura ? e.getMinAltura() : 140;
2341
2390
  }
2342
2391
  function i() {
2343
2392
  return e.getMaxAltura ? e.getMaxAltura() : 1600;
2344
2393
  }
2345
- function o(s, p = !1) {
2346
- if (s == null || s === "") {
2394
+ function o(l, p = !1) {
2395
+ if (l == null || l === "") {
2347
2396
  e.hostElement.style.removeProperty("height"), e.hostElement.style.removeProperty("--ui-camadas-altura"), p && e.hostElement.dispatchEvent(
2348
2397
  new CustomEvent("ui-redimensionar-altura", {
2349
2398
  bubbles: !0,
@@ -2353,79 +2402,79 @@ function Qr(e) {
2353
2402
  );
2354
2403
  return;
2355
2404
  }
2356
- const u = typeof s == "number" ? s : parseFloat(String(s));
2357
- if (isNaN(u)) return;
2358
- const d = Math.max(t(), Math.min(i(), Math.round(u)));
2359
- e.hostElement.style.height = `${d}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${d}px`), p && e.hostElement.dispatchEvent(
2405
+ const d = typeof l == "number" ? l : parseFloat(String(l));
2406
+ if (isNaN(d)) return;
2407
+ const u = Math.max(r(), Math.min(i(), Math.round(d)));
2408
+ e.hostElement.style.height = `${u}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${u}px`), p && e.hostElement.dispatchEvent(
2360
2409
  new CustomEvent("ui-redimensionar-altura", {
2361
2410
  bubbles: !0,
2362
2411
  composed: !0,
2363
- detail: { altura: d }
2412
+ detail: { altura: u }
2364
2413
  })
2365
2414
  );
2366
2415
  }
2367
2416
  let n = null;
2368
- function l() {
2417
+ function s() {
2369
2418
  if (!e.resizerElement) return;
2370
- let s = !1, p = 0, u = 0;
2371
- const d = (f) => {
2372
- if (f.button !== 0) return;
2373
- f.preventDefault(), f.stopPropagation(), s = !0, p = f.clientY, u = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
2419
+ let l = !1, p = 0, d = 0;
2420
+ const u = (m) => {
2421
+ if (m.button !== 0) return;
2422
+ m.preventDefault(), m.stopPropagation(), l = !0, p = m.clientY, d = e.hostElement.getBoundingClientRect().height, e.resizerElement.classList.add("ui-camadas-resizer--ativo"), e.hostElement.classList.add("ui-camadas--redimensionando");
2374
2423
  try {
2375
- e.resizerElement.setPointerCapture(f.pointerId);
2424
+ e.resizerElement.setPointerCapture(m.pointerId);
2376
2425
  } catch {
2377
2426
  }
2378
- const g = (k) => {
2379
- if (!s) return;
2380
- k.preventDefault();
2381
- const M = k.clientY - p, S = Math.max(t(), Math.min(i(), Math.round(u + M)));
2382
- e.hostElement.style.height = `${S}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${S}px`), e.onRedimensionando && e.onRedimensionando(S), e.hostElement.dispatchEvent(
2427
+ const g = (E) => {
2428
+ if (!l) return;
2429
+ E.preventDefault();
2430
+ const L = E.clientY - p, $ = Math.max(r(), Math.min(i(), Math.round(d + L)));
2431
+ e.hostElement.style.height = `${$}px`, e.hostElement.style.setProperty("--ui-camadas-altura", `${$}px`), e.onRedimensionando && e.onRedimensionando($), e.hostElement.dispatchEvent(
2383
2432
  new CustomEvent("ui-redimensionando-altura", {
2384
2433
  bubbles: !0,
2385
2434
  composed: !0,
2386
- detail: { altura: S }
2435
+ detail: { altura: $ }
2387
2436
  })
2388
2437
  );
2389
2438
  }, v = () => {
2390
- var k;
2391
- s = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", y), (k = e.resizerElement) == null || k.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2392
- }, y = (k) => {
2393
- if (!s) return;
2394
- s = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2439
+ var E;
2440
+ l = !1, n = null, window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", b), window.removeEventListener("pointercancel", b), (E = e.resizerElement) == null || E.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2441
+ }, b = (E) => {
2442
+ if (!l) return;
2443
+ l = !1, e.resizerElement.classList.remove("ui-camadas-resizer--ativo"), e.hostElement.classList.remove("ui-camadas--redimensionando");
2395
2444
  try {
2396
- e.resizerElement.hasPointerCapture(k.pointerId) && e.resizerElement.releasePointerCapture(k.pointerId);
2445
+ e.resizerElement.hasPointerCapture(E.pointerId) && e.resizerElement.releasePointerCapture(E.pointerId);
2397
2446
  } catch {
2398
2447
  }
2399
- window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", y);
2400
- const M = e.hostElement.getBoundingClientRect().height, S = Math.round(M);
2401
- e.onAlturaAlterada && e.onAlturaAlterada(S), e.hostElement.dispatchEvent(
2448
+ window.removeEventListener("pointermove", g), window.removeEventListener("pointerup", b), window.removeEventListener("pointercancel", b);
2449
+ const L = e.hostElement.getBoundingClientRect().height, $ = Math.round(L);
2450
+ e.onAlturaAlterada && e.onAlturaAlterada($), e.hostElement.dispatchEvent(
2402
2451
  new CustomEvent("ui-redimensionar-altura", {
2403
2452
  bubbles: !0,
2404
2453
  composed: !0,
2405
- detail: { altura: S }
2454
+ detail: { altura: $ }
2406
2455
  })
2407
2456
  );
2408
2457
  };
2409
- n = v, window.addEventListener("pointermove", g), window.addEventListener("pointerup", y), window.addEventListener("pointercancel", y);
2410
- }, m = (f) => {
2411
- f.preventDefault(), f.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
2458
+ n = v, window.addEventListener("pointermove", g), window.addEventListener("pointerup", b), window.addEventListener("pointercancel", b);
2459
+ }, f = (m) => {
2460
+ m.preventDefault(), m.stopPropagation(), o(null, !0), e.onAlturaAlterada && e.onAlturaAlterada(null);
2412
2461
  };
2413
- e.listeners.add(e.resizerElement, "pointerdown", d), e.listeners.add(e.resizerElement, "dblclick", m);
2462
+ e.listeners.add(e.resizerElement, "pointerdown", u), e.listeners.add(e.resizerElement, "dblclick", f);
2414
2463
  }
2415
2464
  function c() {
2416
2465
  n == null || n(), e.listeners.cleanup();
2417
2466
  }
2418
2467
  return {
2419
- init: l,
2468
+ init: s,
2420
2469
  definirAltura: o,
2421
2470
  destruir: c
2422
2471
  };
2423
2472
  }
2424
- const N = class N extends wa {
2473
+ const H = class H extends La {
2425
2474
  constructor() {
2426
2475
  super();
2427
2476
  A(this, "shadow");
2428
- A(this, "listeners", new Aa());
2477
+ A(this, "listeners", new $a());
2429
2478
  A(this, "dragDropManager");
2430
2479
  A(this, "resizerController");
2431
2480
  A(this, "alturaCustomizada", null);
@@ -2435,7 +2484,7 @@ const N = class N extends wa {
2435
2484
  /** Mudança de feições à espera do `render()` (consumida nele): permite atualizar só as linhas afetadas. */
2436
2485
  A(this, "mudancaFeicoes", null);
2437
2486
  /** @internal */
2438
- A(this, "lembranca", new jr(() => ({
2487
+ A(this, "lembranca", new Ht(() => ({
2439
2488
  persistir: this.persistir,
2440
2489
  conectado: this.conectado,
2441
2490
  storageKey: this.storageKey,
@@ -2451,7 +2500,7 @@ const N = class N extends wa {
2451
2500
  // Estado interno
2452
2501
  A(this, "camadas", []);
2453
2502
  A(this, "feicoes", []);
2454
- A(this, "mapasBase", [...Re]);
2503
+ A(this, "mapasBase", [...Ne]);
2455
2504
  A(this, "expandedLayers", /* @__PURE__ */ new Set());
2456
2505
  A(this, "expandedFeatureLimits", /* @__PURE__ */ new Map());
2457
2506
  A(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
@@ -2463,7 +2512,7 @@ const N = class N extends wa {
2463
2512
  A(this, "corpoElement");
2464
2513
  A(this, "btnExpandirFlutuante");
2465
2514
  this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
2466
- <style>${er}</style>
2515
+ <style>${tt}</style>
2467
2516
  <div class="ui-camadas-container" id="panel-container" part="base" role="region" aria-label="Painel de Camadas">
2468
2517
  <div class="ui-camadas-corpo" id="painel-corpo" part="corpo"></div>
2469
2518
  <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">
@@ -2471,24 +2520,24 @@ const N = class N extends wa {
2471
2520
  </div>
2472
2521
  </div>
2473
2522
  <button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" part="botao-expandir" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
2474
- ${h.camadas}
2523
+ ${y.camadas}
2475
2524
  </button>
2476
- `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new _a(this, this.shadow);
2525
+ `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new Ka(this, this.shadow);
2477
2526
  const a = this.shadow.getElementById("resizer-altura");
2478
- this.resizerController = Qr({
2527
+ this.resizerController = Wt({
2479
2528
  hostElement: this,
2480
2529
  resizerElement: a,
2481
2530
  listeners: this.listeners,
2482
2531
  getMinAltura: () => {
2483
- const t = this.getAttribute("min-altura");
2484
- return t && parseFloat(t) || 140;
2532
+ const r = this.getAttribute("min-altura");
2533
+ return r && parseFloat(r) || 140;
2485
2534
  },
2486
2535
  getMaxAltura: () => {
2487
- const t = this.getAttribute("max-altura");
2488
- return t && parseFloat(t) || 1600;
2536
+ const r = this.getAttribute("max-altura");
2537
+ return r && parseFloat(r) || 1600;
2489
2538
  },
2490
- onAlturaAlterada: (t) => {
2491
- this.alturaCustomizada = t, this.salvarLembrancaEstado();
2539
+ onAlturaAlterada: (r) => {
2540
+ this.alturaCustomizada = r, this.salvarLembrancaEstado();
2492
2541
  }
2493
2542
  });
2494
2543
  }
@@ -2512,25 +2561,32 @@ const N = class N extends wa {
2512
2561
  "redimensionavel-altura",
2513
2562
  "altura",
2514
2563
  "min-altura",
2515
- "max-altura"
2564
+ "max-altura",
2565
+ ...Ca
2516
2566
  ];
2517
2567
  }
2518
2568
  connectedCallback() {
2519
2569
  if (this.persistir) {
2520
- const a = be(this.obterChaveStorageAtual());
2570
+ const a = he(this.obterChaveStorageAtual());
2521
2571
  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));
2522
2572
  }
2523
- this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (N.instanciasChavePadrao.size > 0 && console.warn(
2573
+ this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (H.instanciasChavePadrao.size > 0 && console.warn(
2524
2574
  "[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."
2525
- ), N.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), Pr(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
2575
+ ), H.instanciasChavePadrao.add(this)), this.resizerController.init(), Se(this, this.shadow.getElementById("panel-container")), this.render(), this.conectarEventosGerais(), Tt(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
2526
2576
  }
2527
2577
  disconnectedCallback() {
2528
- var a, t;
2529
- this.conectado = !1, N.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (t = this.dragDropManager) == null || t.destruir(), dr(this), this.listeners.cleanup();
2578
+ var a, r;
2579
+ this.conectado = !1, H.instanciasChavePadrao.delete(this), (a = this.resizerController) == null || a.destruir(), (r = this.dragDropManager) == null || r.destruir(), pt(this), this.listeners.cleanup();
2530
2580
  }
2531
- attributeChangedCallback(a, t, i) {
2581
+ attributeChangedCallback(a, r, i) {
2532
2582
  var o, n;
2533
- t !== i && (a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "densidade" ? this.salvarLembrancaEstado() : a === "mapa-base-ativo" ? i && this.marcarMapaBaseAtivoNoDOM(i) : a === "titulo" || a === "mostrar-mapas-base" || a === "mapas-base-recolhido" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" ? (o = this.resizerController) == null || o.definirAltura(i, !1) : (a === "min-altura" || a === "max-altura") && this.alturaCustomizada !== null && ((n = this.resizerController) == null || n.definirAltura(this.alturaCustomizada, !1)));
2583
+ if (r !== i) {
2584
+ if (Sa(a)) {
2585
+ Se(this, this.shadow.getElementById("panel-container"));
2586
+ return;
2587
+ }
2588
+ a === "colapsado" ? this.salvarLembrancaEstado() : a === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : a === "densidade" ? this.salvarLembrancaEstado() : a === "mapa-base-ativo" ? i && this.marcarMapaBaseAtivoNoDOM(i) : a === "titulo" || a === "mostrar-mapas-base" || a === "mapas-base-recolhido" || a === "mostrar-rodape" || a === "mostrar-busca" || a === "colapsavel" || a === "flutuante" ? this.solicitarRenderizacao() : a === "altura" ? (o = this.resizerController) == null || o.definirAltura(i, !1) : (a === "min-altura" || a === "max-altura") && this.alturaCustomizada !== null && ((n = this.resizerController) == null || n.definirAltura(this.alturaCustomizada, !1));
2589
+ }
2534
2590
  }
2535
2591
  // --- Getters e Setters de Propriedades Reativas ---
2536
2592
  get titulo() {
@@ -2552,16 +2608,16 @@ const N = class N extends wa {
2552
2608
  set mapaBaseAtivo(a) {
2553
2609
  this.setAttribute("mapa-base-ativo", a);
2554
2610
  }
2555
- selecionarMapaBase(a, t = !1) {
2556
- !a || this.mapaBaseAtivo === a || (this.mapaBaseAtivo = a, this.marcarMapaBaseAtivoNoDOM(a), this.salvarLembrancaEstado(), t && this.dispararEvento("ui-mapa-base-alterado", { mapaBaseId: a }));
2611
+ selecionarMapaBase(a, r = !1) {
2612
+ !a || this.mapaBaseAtivo === a || (this.mapaBaseAtivo = a, this.marcarMapaBaseAtivoNoDOM(a), this.salvarLembrancaEstado(), r && this.dispararEvento("ui-mapa-base-alterado", { mapaBaseId: a }));
2557
2613
  }
2558
2614
  marcarMapaBaseAtivoNoDOM(a) {
2559
2615
  this.shadow.querySelectorAll("[data-basemap-id]").forEach((i) => {
2560
2616
  const o = i.getAttribute("data-basemap-id") === a;
2561
2617
  i.classList.toggle("active", o), i.setAttribute("aria-pressed", String(o));
2562
2618
  });
2563
- const t = this.shadow.querySelector("[data-basemap-atual]");
2564
- t && (t.textContent = Oe(this.mapasBase, a));
2619
+ const r = this.shadow.querySelector("[data-basemap-atual]");
2620
+ r && (r.textContent = He(this.mapasBase, a));
2565
2621
  }
2566
2622
  /** Seção "Mapa Base" recolhida (só o cabeçalho com o mapa ativo). Atributo `mapas-base-recolhido`. */
2567
2623
  get mapasBaseRecolhido() {
@@ -2646,11 +2702,11 @@ const N = class N extends wa {
2646
2702
  set altura(a) {
2647
2703
  a != null ? (this.setAttribute("altura", String(a)), this.definirAltura(a)) : (this.removeAttribute("altura"), this.definirAltura(null));
2648
2704
  }
2649
- definirAltura(a, t = !0) {
2705
+ definirAltura(a, r = !0) {
2650
2706
  var o;
2651
2707
  (o = this.resizerController) == null || o.definirAltura(a, !1);
2652
2708
  const i = a !== null ? parseFloat(String(a)) : null;
2653
- this.alturaCustomizada = isNaN(i) ? null : i, t && this.salvarLembrancaEstado();
2709
+ this.alturaCustomizada = isNaN(i) ? null : i, r && this.salvarLembrancaEstado();
2654
2710
  }
2655
2711
  // --- Gerenciamento de Persistência / Lembrança ---
2656
2712
  obterChaveStorageAtual() {
@@ -2694,56 +2750,56 @@ const N = class N extends wa {
2694
2750
  set basemaps(a) {
2695
2751
  this.definirMapasBase(a);
2696
2752
  }
2697
- definirCamadas(a, t) {
2698
- Nr(this, a, t);
2753
+ definirCamadas(a, r) {
2754
+ Gt(this, a, r);
2699
2755
  }
2700
2756
  definirFeicoes(a) {
2701
- Gr(this, a);
2757
+ Ut(this, a);
2702
2758
  }
2703
2759
  definirMapasBase(a) {
2704
2760
  this.mapasBase = Array.isArray(a) ? [...a] : [], this.solicitarRenderizacao();
2705
2761
  }
2706
- definirCamadaAtiva(a, t = !1) {
2707
- !a || this.camadaAtivaId === a || (this.camadaAtivaId = a, this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado(), t && this.dispararEvento("ui-camada-selecionada", {
2762
+ definirCamadaAtiva(a, r = !1) {
2763
+ !a || this.camadaAtivaId === a || (this.camadaAtivaId = a, this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado(), r && this.dispararEvento("ui-camada-selecionada", {
2708
2764
  camadaId: a,
2709
2765
  camada: this.camadas.find((i) => i.id === a)
2710
2766
  }));
2711
2767
  }
2712
2768
  obterCamada(a) {
2713
- return this.camadas.find((t) => t.id === a);
2769
+ return this.camadas.find((r) => r.id === a);
2714
2770
  }
2715
2771
  obterCamadaAtiva() {
2716
2772
  return this.camadas.find((a) => a.id === this.camadaAtivaId);
2717
2773
  }
2718
2774
  obterFeicao(a) {
2719
- return this.feicoes.find((t) => t.id === a);
2775
+ return this.feicoes.find((r) => r.id === a);
2720
2776
  }
2721
2777
  obterFeicoesSelecionadas() {
2722
2778
  return this.feicoes.filter((a) => this.selectedFeatureIds.has(a.id));
2723
2779
  }
2724
2780
  adicionarCamada(a) {
2725
- Vr(this, a);
2781
+ Vt(this, a);
2726
2782
  }
2727
2783
  removerCamada(a) {
2728
- Ur(this, a);
2784
+ Yt(this, a);
2729
2785
  }
2730
2786
  adicionarFeicao(a) {
2731
- _r(this, a);
2787
+ Kt(this, a);
2732
2788
  }
2733
2789
  atualizarFeicao(a) {
2734
- Yr(this, a);
2790
+ Qt(this, a);
2735
2791
  }
2736
2792
  removerFeicao(a) {
2737
- Kr(this, a);
2793
+ Xt(this, a);
2738
2794
  }
2739
- selecionarFeicao(a, t = !1, i = !1, o = !1) {
2740
- Dr(this, a, t, i, o);
2795
+ selecionarFeicao(a, r = !1, i = !1, o = !1) {
2796
+ Rt(this, a, r, i, o);
2741
2797
  }
2742
- selecionarFeicoes(a, t = !1) {
2743
- Tr(this, a, t);
2798
+ selecionarFeicoes(a, r = !1) {
2799
+ Ot(this, a, r);
2744
2800
  }
2745
2801
  limparSelecao(a = !1) {
2746
- Rr(this, a);
2802
+ jt(this, a);
2747
2803
  }
2748
2804
  expandirTodas() {
2749
2805
  this.expandedLayers = new Set(this.camadas.map((a) => a.id)), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
@@ -2756,8 +2812,8 @@ const N = class N extends wa {
2756
2812
  }
2757
2813
  incrementarLimiteFeicoes(a) {
2758
2814
  if (!a) return;
2759
- const t = this.expandedFeatureLimits.get(a) ?? 80;
2760
- this.expandedFeatureLimits.set(a, t + 80), this.solicitarRenderizacao();
2815
+ const r = this.expandedFeatureLimits.get(a) ?? 80;
2816
+ this.expandedFeatureLimits.set(a, r + 80), this.solicitarRenderizacao();
2761
2817
  }
2762
2818
  alternarVisibilidadeTodas(a = !1) {
2763
2819
  const i = !this.camadas.some((o) => o.visible !== !1);
@@ -2774,8 +2830,8 @@ const N = class N extends wa {
2774
2830
  alternarColapso(a = !1) {
2775
2831
  this.definirColapso(!this.colapsado, a);
2776
2832
  }
2777
- definirColapso(a, t) {
2778
- this.colapsado !== a && (this.colapsado = a, t && this.dispararEvento("ui-colapso-alterado", { colapsado: a }));
2833
+ definirColapso(a, r) {
2834
+ this.colapsado !== a && (this.colapsado = a, r && this.dispararEvento("ui-colapso-alterado", { colapsado: a }));
2779
2835
  }
2780
2836
  // --- Renderização e Ciclo de Vida ---
2781
2837
  solicitarRenderizacao() {
@@ -2810,10 +2866,10 @@ const N = class N extends wa {
2810
2866
  this.profundidadeLote--, this.profundidadeLote === 0 && this.renderPendente && (this.renderPendente = !1, this.render());
2811
2867
  }
2812
2868
  }
2813
- dispararEvento(a, t) {
2869
+ dispararEvento(a, r) {
2814
2870
  this.dispatchEvent(
2815
2871
  new CustomEvent(a, {
2816
- detail: t,
2872
+ detail: r,
2817
2873
  bubbles: !0,
2818
2874
  composed: !0
2819
2875
  })
@@ -2821,7 +2877,7 @@ const N = class N extends wa {
2821
2877
  }
2822
2878
  render() {
2823
2879
  const a = this.mudancaFeicoes;
2824
- this.mudancaFeicoes = null, this.corpoElement && (a && Sr(this, this.shadow, this.dragDropManager, a) || Lr(this, this.shadow, this.corpoElement, this.dragDropManager));
2880
+ this.mudancaFeicoes = null, this.corpoElement && (a && Ft(this, this.shadow, this.dragDropManager, a) || $t(this, this.shadow, this.corpoElement, this.dragDropManager));
2825
2881
  }
2826
2882
  // --- Conexão de Eventos ---
2827
2883
  conectarEventosGerais() {
@@ -2829,32 +2885,32 @@ const N = class N extends wa {
2829
2885
  }
2830
2886
  // --- Sincronização de DOM (delegada) ---
2831
2887
  sincronizarCamadaAtivaDOM() {
2832
- ar(this, this.shadow);
2888
+ rt(this, this.shadow);
2833
2889
  }
2834
2890
  sincronizarSelecaoDOM() {
2835
- rr(this, this.shadow);
2891
+ it(this, this.shadow);
2836
2892
  }
2837
2893
  // --- Auxiliares Internos ---
2838
2894
  notificarMudancaSelecao() {
2839
- Or(this);
2895
+ Nt(this);
2840
2896
  }
2841
2897
  };
2842
2898
  /** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
2843
- A(N, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2844
- let K = N;
2845
- class Xr extends K {
2899
+ A(H, "instanciasChavePadrao", /* @__PURE__ */ new Set());
2900
+ let X = H;
2901
+ class Jt extends X {
2846
2902
  }
2847
- class Wr extends K {
2903
+ class Zt extends X {
2848
2904
  }
2849
- ye("ui-camadas", K);
2850
- ye("ui-painel-camadas", Xr);
2851
- ye("ui-layer-panel", Wr);
2852
- function nt(e) {
2853
- var r;
2905
+ xe("ui-camadas", X);
2906
+ xe("ui-painel-camadas", Jt);
2907
+ xe("ui-layer-panel", Zt);
2908
+ function cr(e) {
2909
+ var t;
2854
2910
  return {
2855
2911
  id: e.id,
2856
2912
  name: e.nome || e.id,
2857
- color: ((r = e.estilo) == null ? void 0 : r.corPrimaria) || "#00E08A",
2913
+ color: ((t = e.estilo) == null ? void 0 : t.corPrimaria) || "#00E08A",
2858
2914
  visible: e.visivel !== !1,
2859
2915
  locked: e.bloqueada === !0,
2860
2916
  opacity: typeof e.opacidade == "number" ? e.opacidade : 1,
@@ -2866,11 +2922,11 @@ function nt(e) {
2866
2922
  dados: e.dados
2867
2923
  };
2868
2924
  }
2869
- function st(e, r = "levantamento", a = "feicoes") {
2925
+ function dr(e, t = "levantamento", a = "feicoes") {
2870
2926
  return {
2871
2927
  id: e.id,
2872
2928
  nome: e.name,
2873
- categoria: e.categoria || r,
2929
+ categoria: e.categoria || t,
2874
2930
  tipo: e.tipo || a,
2875
2931
  visivel: e.visible !== !1,
2876
2932
  opacidade: typeof e.opacity == "number" ? e.opacity : 1,
@@ -2885,16 +2941,16 @@ function st(e, r = "levantamento", a = "feicoes") {
2885
2941
  dados: typeof e.dados == "object" && e.dados !== null ? e.dados : void 0
2886
2942
  };
2887
2943
  }
2888
- function lt(e, r = "") {
2889
- var o, n, l, c;
2890
- const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", t = ((l = e.geometria) == null ? void 0 : l.coordenadas) || ((c = e.geometria) == null ? void 0 : c.coordinates) || e.coordinates, i = e.cor || e.color;
2944
+ function ur(e, t = "") {
2945
+ var o, n, s, c;
2946
+ const a = ((o = e.geometria) == null ? void 0 : o.tipo) || ((n = e.geometria) == null ? void 0 : n.type) || e.tipo || e.type || "Polygon", r = ((s = e.geometria) == null ? void 0 : s.coordenadas) || ((c = e.geometria) == null ? void 0 : c.coordinates) || e.coordinates, i = e.cor || e.color;
2891
2947
  return {
2892
2948
  id: String(e.id),
2893
2949
  name: e.nome || e.name || `Feição ${e.id}`,
2894
- layerId: e.layerId || e.camadaId || r,
2950
+ layerId: e.layerId || e.camadaId || t,
2895
2951
  type: a,
2896
2952
  geometryType: a,
2897
- coordinates: t,
2953
+ coordinates: r,
2898
2954
  color: i,
2899
2955
  visible: e.visivel !== void 0 ? e.visivel : e.visible !== !1,
2900
2956
  locked: e.bloqueada !== void 0 ? e.bloqueada : e.locked === !0,
@@ -2904,43 +2960,43 @@ function lt(e, r = "") {
2904
2960
  };
2905
2961
  }
2906
2962
  export {
2907
- _a as CamadasDragDropManager,
2908
- h as ICONES,
2963
+ Ka as CamadasDragDropManager,
2964
+ y as ICONES,
2909
2965
  we as LIMITE_FEICOES_POR_CAMADA,
2910
- Re as MAPAS_BASE_PADRAO,
2911
- K as UICamadas,
2912
- Wr as UILayerPanel,
2913
- ut as UIMapaBase,
2914
- Xr as UIPainelCamadas,
2915
- pt as UISeletorMapaBase,
2916
- ue as calcularAreaAnelSimples,
2917
- De as calcularAreaPoligono,
2918
- Pe as calcularComprimentoLinha,
2919
- Ia as calcularDistanciaPontos,
2920
- Ta as calcularSelecaoFeicao,
2921
- be as carregarEstadoPersistido,
2922
- ne as construirHierarquiaCamadas,
2923
- st as converterCamadaItemParaCanvasLayer,
2924
- nt as converterCanvasLayerParaCamadaItem,
2925
- lt as converterFeicaoParaItem,
2966
+ Ne as MAPAS_BASE_PADRAO,
2967
+ X as UICamadas,
2968
+ Zt as UILayerPanel,
2969
+ mr as UIMapaBase,
2970
+ Jt as UIPainelCamadas,
2971
+ gr as UISeletorMapaBase,
2972
+ pe as calcularAreaAnelSimples,
2973
+ Oe as calcularAreaPoligono,
2974
+ Re as calcularComprimentoLinha,
2975
+ za as calcularDistanciaPontos,
2976
+ Ha as calcularSelecaoFeicao,
2977
+ he as carregarEstadoPersistido,
2978
+ se as construirHierarquiaCamadas,
2979
+ dr as converterCamadaItemParaCanvasLayer,
2980
+ cr as converterCanvasLayerParaCamadaItem,
2981
+ ur as converterFeicaoParaItem,
2926
2982
  z as escapeHtml,
2927
- Qe as filtrarCamadasPorBusca,
2928
- te as filtrarFeicoesPorBusca,
2929
- ot as formatarMetricaFeicoes,
2930
- Fa as formatarOpcoesCamadasHierarquicas,
2931
- Ka as gerarChaveStorage,
2932
- Wa as limparEstadoPersistido,
2933
- Za as montarEstadoPersistido,
2934
- Oe as nomeDoMapaBase,
2935
- Qa as normalizarEstadoPersistido,
2936
- Xe as obterIdsVisiveisFeicoes,
2937
- Ja as reidratarCamadasComOverrides,
2983
+ ea as filtrarCamadasPorBusca,
2984
+ V as filtrarFeicoesPorBusca,
2985
+ lr as formatarMetricaFeicoes,
2986
+ Ge as formatarOpcoesCamadasHierarquicas,
2987
+ Xa as gerarChaveStorage,
2988
+ Za as limparEstadoPersistido,
2989
+ at as montarEstadoPersistido,
2990
+ He as nomeDoMapaBase,
2991
+ Wa as normalizarEstadoPersistido,
2992
+ aa as obterIdsVisiveisFeicoes,
2993
+ et as reidratarCamadasComOverrides,
2938
2994
  Ae as removerSelecoesInvalidas,
2939
- Ga as renderizarArvoreCamadas,
2940
- $a as renderizarGridMapasBase,
2941
- za as renderizarRodapeAcoes,
2942
- qa as renderizarThumbGeometria,
2943
- je as rotuloRodape,
2944
- Xa as salvarEstadoPersistido,
2945
- We as snapshotCamada
2995
+ Ua as renderizarArvoreCamadas,
2996
+ Da as renderizarGridMapasBase,
2997
+ Ra as renderizarRodapeAcoes,
2998
+ Ve as renderizarThumbGeometria,
2999
+ _e as rotuloRodape,
3000
+ Ja as salvarEstadoPersistido,
3001
+ ta as snapshotCamada
2946
3002
  };