@thibezer/ui-components-kit 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +760 -739
  3. package/dist/camadas.cjs +72 -72
  4. package/dist/camadas.js +700 -667
  5. package/dist/canvas.cjs +99 -140
  6. package/dist/canvas.js +5125 -1192
  7. package/dist/components/ui-camadas/camadas-persistencia.d.ts +4 -0
  8. package/dist/components/ui-camadas/ui-camadas.d.ts +10 -0
  9. package/dist/components/ui-canvas-cad/cad-estilos-externos.d.ts +16 -0
  10. package/dist/components/ui-canvas-cad/cad-eventos-canvas.d.ts +4 -0
  11. package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +262 -0
  12. package/dist/components/ui-canvas-cad/cad-ferramentas-barra.d.ts +15 -0
  13. package/dist/components/ui-canvas-cad/cad-snap.d.ts +32 -0
  14. package/dist/components/ui-canvas-cad/cad-toolbar-painel.d.ts +1 -0
  15. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +143 -0
  16. package/dist/components/ui-lista-flutuante/lista-flutuante-posicionamento.d.ts +2 -0
  17. package/dist/components/ui-lista-flutuante/ui-lista-flutuante.d.ts +1 -0
  18. package/dist/components/ui-seletor-mapa-base/ui-seletor-mapa-base.d.ts +3 -0
  19. package/dist/components/ui-tabela/tabela-atributos-sync.d.ts +3 -0
  20. package/dist/components/ui-tabela/tabela-localizador.d.ts +8 -1
  21. package/dist/components/ui-tabela/tabela-orquestrador-dados.d.ts +4 -0
  22. package/dist/components/ui-tabela/tabela-selecao.d.ts +19 -9
  23. package/dist/components/ui-tabela/tipos.d.ts +6 -0
  24. package/dist/components/ui-tabela/ui-tabela.d.ts +41 -2
  25. package/dist/components/ui-tabela-propriedades/avaliador-expressao.d.ts +0 -5
  26. package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +17 -1
  27. package/dist/components/ui-tabela-propriedades/propriedades-flutuante.d.ts +2 -0
  28. package/dist/components/ui-tabela-propriedades/propriedades-gerenciador-valores.d.ts +10 -1
  29. package/dist/components/ui-tabela-propriedades/propriedades-render-arvore.d.ts +3 -1
  30. package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +5 -1
  31. package/dist/core/alvo-digitavel.d.ts +1 -0
  32. package/dist/core/index.d.ts +1 -0
  33. package/dist/core/svg-seguro.d.ts +10 -0
  34. package/dist/core.cjs +1 -1
  35. package/dist/core.js +12 -10
  36. package/dist/custom-elements.json +14782 -10666
  37. package/dist/data.cjs +1 -1
  38. package/dist/data.js +51 -46
  39. package/dist/forms.cjs +1 -1
  40. package/dist/forms.js +1 -1
  41. package/dist/gerencigeo-canvas/canvas_interacao.d.ts +18 -0
  42. package/dist/gerencigeo-canvas/feature_adapters.d.ts +35 -0
  43. package/dist/gerencigeo-canvas/feature_algoritmos.d.ts +45 -0
  44. package/dist/gerencigeo-canvas/feature_amostra.d.ts +4 -0
  45. package/dist/gerencigeo-canvas/feature_caixa.d.ts +19 -0
  46. package/dist/gerencigeo-canvas/feature_cluster.d.ts +61 -0
  47. package/dist/gerencigeo-canvas/feature_cursores.d.ts +17 -0
  48. package/dist/gerencigeo-canvas/feature_desenho.d.ts +53 -0
  49. package/dist/gerencigeo-canvas/feature_desenho_controle.d.ts +91 -0
  50. package/dist/gerencigeo-canvas/feature_edicao_ops.d.ts +19 -0
  51. package/dist/gerencigeo-canvas/feature_editor_vertices.d.ts +62 -0
  52. package/dist/gerencigeo-canvas/feature_formas.d.ts +7 -0
  53. package/dist/gerencigeo-canvas/feature_hud.d.ts +23 -0
  54. package/dist/gerencigeo-canvas/feature_indice.d.ts +36 -0
  55. package/dist/gerencigeo-canvas/feature_metricas.d.ts +16 -0
  56. package/dist/gerencigeo-canvas/feature_popup.d.ts +31 -0
  57. package/dist/gerencigeo-canvas/feature_selecao.d.ts +38 -0
  58. package/dist/gerencigeo-canvas/feature_simplificacao.d.ts +14 -0
  59. package/dist/gerencigeo-canvas/feature_snap.d.ts +25 -0
  60. package/dist/gerencigeo-canvas/feature_types.d.ts +86 -0
  61. package/dist/gerencigeo-canvas/feature_versoes.d.ts +19 -0
  62. package/dist/gerencigeo-canvas/index.d.ts +21 -0
  63. package/dist/gerencigeo-canvas/layer_hit_test.d.ts +30 -0
  64. package/dist/gerencigeo-canvas/layer_manager.d.ts +11 -3
  65. package/dist/gerencigeo-canvas/layer_pane_ops.d.ts +9 -0
  66. package/dist/gerencigeo-canvas/mapa_controller.d.ts +1 -0
  67. package/dist/gerencigeo-canvas/mapa_pontos_shapes.d.ts +24 -5
  68. package/dist/gerencigeo-canvas/renderers/feicoes_renderer.d.ts +89 -0
  69. package/dist/gerencigeo-canvas/renderers/vector_points_renderer.d.ts +1 -0
  70. package/dist/gerencigeo-canvas/renderers/vector_polygons_renderer.d.ts +2 -2
  71. package/dist/gerencigeo-canvas/types.d.ts +12 -0
  72. package/dist/gerencigeo-canvas/utils.d.ts +3 -1
  73. package/dist/index.cjs +1 -1
  74. package/dist/index.js +111 -106
  75. package/dist/leaflet-DcO7uRC-.cjs +1 -0
  76. package/dist/{leaflet-DkaFZYc5.js → leaflet-PPDKB6Dd.js} +37 -37
  77. package/dist/mapa.cjs +1 -1
  78. package/dist/mapa.js +1 -1
  79. package/dist/register.cjs +1 -1
  80. package/dist/register.js +3 -3
  81. package/dist/seletor-mapa-base.cjs +13 -13
  82. package/dist/seletor-mapa-base.js +101 -51
  83. package/dist/svg-seguro-BsbNQqpd.js +50 -0
  84. package/dist/svg-seguro-C76iLlAZ.cjs +1 -0
  85. package/dist/tabela.cjs +1 -1
  86. package/dist/tabela.js +41 -36
  87. package/dist/tipos-elementos.d.ts +17 -4
  88. package/dist/tipos-vue.d.ts +15 -4
  89. package/dist/tools.cjs +1 -1
  90. package/dist/tools.js +1 -1
  91. package/dist/{ui-paleta-ferramentas-BIytXQLh.js → ui-paleta-ferramentas-CEZYcN4J.js} +18 -27
  92. package/dist/{ui-paleta-ferramentas-DqLY51qa.cjs → ui-paleta-ferramentas-Dbj1kBS9.cjs} +6 -6
  93. package/dist/{ui-switch-DWLgVVnT.js → ui-switch-BcOqOkiV.js} +124 -96
  94. package/dist/ui-switch-D7iPKDj-.cjs +53 -0
  95. package/dist/ui-tabela-propriedades-BBr5sqki.cjs +145 -0
  96. package/dist/{ui-tabela-propriedades-BNcE6VLX.js → ui-tabela-propriedades-Boy7I5yW.js} +1304 -1072
  97. package/package.json +169 -169
  98. package/dist/leaflet-Cw6tqYFh.cjs +0 -1
  99. package/dist/ui-switch-yZIn3IW0.cjs +0 -53
  100. package/dist/ui-tabela-propriedades-D3pyQvyy.cjs +0 -145
package/dist/camadas.js CHANGED
@@ -1,11 +1,11 @@
1
- var ge = Object.defineProperty;
2
- var ve = (a, i, e) => i in a ? ge(a, i, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[i] = e;
3
- var x = (a, i, e) => ve(a, typeof i != "symbol" ? i + "" : i, e);
1
+ var ve = Object.defineProperty;
2
+ var be = (a, o, e) => o in a ? ve(a, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[o] = e;
3
+ var x = (a, o, e) => be(a, typeof o != "symbol" ? o + "" : o, e);
4
4
  /* empty css */
5
- import { d as G, S as be } from "./ssr-safe-5cWfJP-s.js";
6
- import { L as xe } from "./listener-bag-DQgv7OON.js";
7
- import { UIMapaBase as pa, UISeletorMapaBase as fa } from "./seletor-mapa-base.js";
8
- const m = {
5
+ import { d as Q, S as xe } from "./ssr-safe-5cWfJP-s.js";
6
+ import { L as ye } from "./listener-bag-DQgv7OON.js";
7
+ import { UIMapaBase as fa, UISeletorMapaBase as ma } from "./seletor-mapa-base.js";
8
+ const h = {
9
9
  camadas: `<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
10
10
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
11
11
  <polyline points="2 17 12 22 22 17"></polyline>
@@ -103,47 +103,47 @@ const m = {
103
103
  <line x1="9" y1="3" x2="9" y2="21"></line>
104
104
  <line x1="15" y1="3" x2="15" y2="21"></line>
105
105
  </svg>`
106
- }, V = 6378137;
107
- function ye(a, i) {
108
- if (!a || !i) return 0;
109
- const e = a[0] * Math.PI / 180, t = a[1] * Math.PI / 180, r = i[0] * Math.PI / 180, o = i[1] * Math.PI / 180, s = r - e, c = o - t, n = Math.sin(s / 2) * Math.sin(s / 2) + Math.cos(e) * Math.cos(r) * Math.sin(c / 2) * Math.sin(c / 2);
110
- return V * 2 * Math.atan2(Math.sqrt(n), Math.sqrt(1 - n));
106
+ }, G = 6378137;
107
+ function we(a, o) {
108
+ if (!a || !o) return 0;
109
+ const e = a[0] * Math.PI / 180, t = a[1] * Math.PI / 180, r = o[0] * Math.PI / 180, i = o[1] * Math.PI / 180, s = r - e, n = i - t, c = Math.sin(s / 2) * Math.sin(s / 2) + Math.cos(e) * Math.cos(r) * Math.sin(n / 2) * Math.sin(n / 2);
110
+ return G * 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
111
111
  }
112
- function te(a) {
112
+ function re(a) {
113
113
  if (!Array.isArray(a) || a.length < 2) return 0;
114
114
  if (Array.isArray(a[0]) && Array.isArray(a[0][0]))
115
- return a.reduce((e, t) => e + te(t), 0);
116
- let i = 0;
115
+ return a.reduce((e, t) => e + re(t), 0);
116
+ let o = 0;
117
117
  for (let e = 0; e < a.length - 1; e++) {
118
118
  const t = a[e], r = a[e + 1];
119
- Array.isArray(t) && Array.isArray(r) && t.length >= 2 && r.length >= 2 && (i += ye([t[0], t[1]], [r[0], r[1]]));
119
+ Array.isArray(t) && Array.isArray(r) && t.length >= 2 && r.length >= 2 && (o += we([t[0], t[1]], [r[0], r[1]]));
120
120
  }
121
- return i;
121
+ return o;
122
122
  }
123
- function re(a) {
123
+ function ie(a) {
124
124
  if (!Array.isArray(a) || a.length === 0) return 0;
125
125
  if (Array.isArray(a[0]) && Array.isArray(a[0][0]))
126
- return a.reduce((r, o) => r + re(o), 0);
127
- const i = a.length;
128
- if (i < 3) return 0;
126
+ return a.reduce((r, i) => r + ie(i), 0);
127
+ const o = a.length;
128
+ if (o < 3) return 0;
129
129
  let e = 0;
130
- for (let r = 0; r < i; r++) {
131
- const o = a[r], s = a[(r + 1) % i], c = a[(r + 2) % i];
132
- if (!Array.isArray(o) || !Array.isArray(s) || !Array.isArray(c)) continue;
133
- const n = (s[1] - o[1]) * (Math.PI / 180), l = (s[0] - o[0]) * (Math.PI / 180), d = (c[1] - s[1]) * (Math.PI / 180), p = (c[0] - s[0]) * (Math.PI / 180);
134
- e += n * p - l * d;
130
+ for (let r = 0; r < o; r++) {
131
+ const i = a[r], s = a[(r + 1) % o], n = a[(r + 2) % o];
132
+ if (!Array.isArray(i) || !Array.isArray(s) || !Array.isArray(n)) continue;
133
+ const c = (s[1] - i[1]) * (Math.PI / 180), l = (s[0] - i[0]) * (Math.PI / 180), u = (n[1] - s[1]) * (Math.PI / 180), p = (n[0] - s[0]) * (Math.PI / 180);
134
+ e += c * p - l * u;
135
135
  }
136
- const t = Math.abs(e * (V * V) / 2);
136
+ const t = Math.abs(e * (G * G) / 2);
137
137
  return isNaN(t) ? 0 : t;
138
138
  }
139
- function ie(a) {
139
+ function oe(a) {
140
140
  if (!a || a.length === 0) return "";
141
- const i = a.filter(
141
+ const o = a.filter(
142
142
  (t) => t.type === "Polygon" || t.type === "MultiPolygon" || t.geometryType === "Polygon"
143
143
  );
144
- if (i.length > 0) {
145
- const t = i.reduce(
146
- (r, o) => r + (re(o.coordinates) || 0),
144
+ if (o.length > 0) {
145
+ const t = o.reduce(
146
+ (r, i) => r + (ie(i.coordinates) || 0),
147
147
  0
148
148
  );
149
149
  return t >= 1e4 ? `${(t / 1e4).toLocaleString("pt-BR", {
@@ -156,7 +156,7 @@ function ie(a) {
156
156
  );
157
157
  if (e.length > 0) {
158
158
  const t = e.reduce(
159
- (r, o) => r + (te(o.coordinates) || 0),
159
+ (r, i) => r + (re(i.coordinates) || 0),
160
160
  0
161
161
  );
162
162
  return t >= 1e3 ? `${(t / 1e3).toLocaleString("pt-BR", {
@@ -169,54 +169,54 @@ function ie(a) {
169
169
  function k(a) {
170
170
  return a == null ? "" : String(a).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
171
171
  }
172
- const we = /^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;
173
- function D(a, i = "#00E08A") {
174
- if (!a || typeof a != "string") return i;
172
+ const Ee = /^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;
173
+ function P(a, o = "#00E08A") {
174
+ if (!a || typeof a != "string") return o;
175
175
  const e = a.trim();
176
- return we.test(e) ? e : i;
176
+ return Ee.test(e) ? e : o;
177
177
  }
178
- function H(a) {
178
+ function U(a) {
179
179
  return Math.max(0, Math.min(255, Math.round(a))).toString(16).padStart(2, "0");
180
180
  }
181
- function Ee(a, i, e) {
182
- const t = i / 100, r = e / 100, o = (n) => (n + a / 30) % 12, s = t * Math.min(r, 1 - r), c = (n) => r - s * Math.max(-1, Math.min(o(n) - 3, Math.min(9 - o(n), 1)));
183
- return [c(0) * 255, c(8) * 255, c(4) * 255];
181
+ function Ae(a, o, e) {
182
+ const t = o / 100, r = e / 100, i = (c) => (c + a / 30) % 12, s = t * Math.min(r, 1 - r), n = (c) => r - s * Math.max(-1, Math.min(i(c) - 3, Math.min(9 - i(c), 1)));
183
+ return [n(0) * 255, n(8) * 255, n(4) * 255];
184
184
  }
185
- function Ae(a, i = "#000000") {
186
- if (!a || typeof a != "string") return i;
185
+ function ke(a, o = "#000000") {
186
+ if (!a || typeof a != "string") return o;
187
187
  const e = a.trim().toLowerCase(), t = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(e);
188
188
  if (t) {
189
- const o = t[1];
190
- return o.length <= 4 ? `#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}` : `#${o.slice(0, 6)}`;
189
+ const i = t[1];
190
+ return i.length <= 4 ? `#${i[0]}${i[0]}${i[1]}${i[1]}${i[2]}${i[2]}` : `#${i.slice(0, 6)}`;
191
191
  }
192
192
  const r = /^(rgb|hsl)a?\(([^)]+)\)$/.exec(e);
193
193
  if (r) {
194
- const o = r[2].split(/[\s,/]+/).filter(Boolean).map((s) => parseFloat(s));
195
- if (o.length >= 3 && o.slice(0, 3).every((s) => !isNaN(s))) {
196
- const [s, c, n] = o, [l, d, p] = r[1] === "rgb" ? [s, c, n] : Ee(s, c, n);
197
- return `#${H(l)}${H(d)}${H(p)}`;
194
+ const i = r[2].split(/[\s,/]+/).filter(Boolean).map((s) => parseFloat(s));
195
+ if (i.length >= 3 && i.slice(0, 3).every((s) => !isNaN(s))) {
196
+ const [s, n, c] = i, [l, u, p] = r[1] === "rgb" ? [s, n, c] : Ae(s, n, c);
197
+ return `#${U(l)}${U(u)}${U(p)}`;
198
198
  }
199
199
  }
200
- return i;
200
+ return o;
201
201
  }
202
- function S(a, i, e) {
203
- const t = a.querySelectorAll(`[${i}]`);
202
+ function S(a, o, e) {
203
+ const t = a.querySelectorAll(`[${o}]`);
204
204
  for (let r = 0; r < t.length; r++)
205
- if (t[r].getAttribute(i) === e) return t[r];
205
+ if (t[r].getAttribute(o) === e) return t[r];
206
206
  return null;
207
207
  }
208
- function oe(a, i = 80) {
208
+ function se(a, o = 80) {
209
209
  let e = null;
210
210
  return (...t) => {
211
211
  e && clearTimeout(e), e = setTimeout(() => {
212
212
  a(...t), e = null;
213
- }, i);
213
+ }, o);
214
214
  };
215
215
  }
216
- function $(a, i) {
217
- a.setAttribute("title", i), a.setAttribute("aria-label", i);
216
+ function $(a, o) {
217
+ a.setAttribute("title", o), a.setAttribute("aria-label", o);
218
218
  }
219
- const se = [
219
+ const ne = [
220
220
  {
221
221
  id: "none",
222
222
  nome: "Sem Mapa",
@@ -259,17 +259,17 @@ const se = [
259
259
  thumbnailUrl: "https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"
260
260
  }
261
261
  ];
262
- function ke(a = se, i = "satelite") {
262
+ function Ie(a = ne, o = "satelite") {
263
263
  return !a || a.length === 0 ? "" : `
264
264
  <div class="ui-basemap-section">
265
265
  <div class="ui-basemap-title">Mapa Base</div>
266
266
  <div class="ui-basemap-grid">
267
267
  ${a.map((t) => {
268
- const r = i === t.id, o = k(t.id), s = k(t.nome), c = k(t.descricao || t.nome);
269
- let n = "";
270
- return t.thumbnailUrl ? n = `<img class="ui-basemap-preview" src="${k(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : n = `<div class="ui-basemap-preview-none">${m.gradeCad}</div>`, `
271
- <div class="ui-basemap-card ${r ? "active" : ""}" data-basemap-id="${o}" role="button" tabindex="0" aria-pressed="${r}" title="${c}">
272
- ${n}
268
+ const r = o === t.id, i = k(t.id), s = k(t.nome), n = k(t.descricao || t.nome);
269
+ let c = "";
270
+ return t.thumbnailUrl ? c = `<img class="ui-basemap-preview" src="${k(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />` : c = `<div class="ui-basemap-preview-none">${h.gradeCad}</div>`, `
271
+ <div class="ui-basemap-card ${r ? "active" : ""}" data-basemap-id="${i}" role="button" tabindex="0" aria-pressed="${r}" title="${n}">
272
+ ${c}
273
273
  <span>${s}</span>
274
274
  </div>
275
275
  `;
@@ -278,22 +278,22 @@ function ke(a = se, i = "satelite") {
278
278
  </div>
279
279
  `;
280
280
  }
281
- function Ie(a, i, e) {
282
- const t = i.filter((l) => e.has(l.id)), r = t.length > 0, o = ie(t), s = r ? t.length : a.length, c = r ? t.length > 1 ? "selecionados" : "selecionado" : a.length > 1 ? "camadas" : "camada", n = a.map((l) => `<option value="${k(l.id)}">${k(l.name)}</option>`).join("");
281
+ function Le(a, o, e) {
282
+ const t = o.filter((l) => e.has(l.id)), r = t.length > 0, i = oe(t), s = r ? t.length : a.length, n = r ? t.length > 1 ? "selecionados" : "selecionado" : a.length > 1 ? "camadas" : "camada", c = a.map((l) => `<option value="${k(l.id)}">${k(l.name)}</option>`).join("");
283
283
  return `
284
284
  <div class="ui-tree-footer">
285
285
  <div class="ui-footer-left">
286
286
  <span class="ui-footer-count" id="footer-count">${s}</span>
287
- <span class="ui-footer-label" id="footer-label">${c}</span>
288
- <span class="ui-footer-metric" style="display: ${o ? "inline-flex" : "none"};">${o ? `${m.reguaMetrica} ${o}` : ""}</span>
287
+ <span class="ui-footer-label" id="footer-label">${n}</span>
288
+ <span class="ui-footer-metric" style="display: ${i ? "inline-flex" : "none"};">${i ? `${h.reguaMetrica} ${i}` : ""}</span>
289
289
  </div>
290
290
  <div class="ui-footer-right">
291
291
  <button class="ui-footer-btn ${r ? "" : "disabled"}" id="btn-footer-vis" title="Alternar visibilidade coletiva" aria-label="Alternar visibilidade coletiva" ${r ? "" : "disabled"}>
292
- ${m.olhoAberto}
292
+ ${h.olhoAberto}
293
293
  </button>
294
294
 
295
295
  <button class="ui-footer-btn ${r ? "" : "disabled"}" id="btn-footer-lock" title="Alternar bloqueio coletivo" aria-label="Alternar bloqueio coletivo" ${r ? "" : "disabled"}>
296
- ${m.cadeadoTrancado}
296
+ ${h.cadeadoTrancado}
297
297
  </button>
298
298
 
299
299
  <div class="ui-footer-color-wrapper ${r ? "" : "disabled"}" title="Alterar cor dos selecionados">
@@ -303,155 +303,155 @@ function Ie(a, i, e) {
303
303
  <div class="ui-footer-move-wrapper ${r ? "" : "disabled"}" title="Mover selecionados para outra camada">
304
304
  <select id="select-footer-move" aria-label="Mover selecionados para outra camada" class="ui-footer-select" ${r ? "" : "disabled"}>
305
305
  <option value="" disabled selected>📂</option>
306
- ${n}
306
+ ${c}
307
307
  </select>
308
308
  </div>
309
309
 
310
310
  <button class="ui-footer-btn" id="btn-footer-new-layer" title="Criar Nova Camada" aria-label="Criar Nova Camada">
311
- ${m.mais}
311
+ ${h.mais}
312
312
  </button>
313
313
 
314
314
  <button class="ui-footer-btn ${r ? "" : "disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${r ? "" : "disabled"}>
315
- ${m.lixeira}
315
+ ${h.lixeira}
316
316
  </button>
317
317
 
318
- ${r ? `<button class="ui-footer-btn" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${m.fechar}</button>` : ""}
318
+ ${r ? `<button class="ui-footer-btn" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${h.fechar}</button>` : ""}
319
319
  </div>
320
320
  </div>
321
321
  `;
322
322
  }
323
- const ne = 80;
324
- function K(a, i) {
325
- const e = (i || "").trim().toLowerCase();
323
+ const le = 80;
324
+ function Y(a, o) {
325
+ const e = (o || "").trim().toLowerCase();
326
326
  return e ? a.filter(
327
327
  (t) => (t.name || "").toLowerCase().includes(e) || (t.category || "").toLowerCase().includes(e) || (t.type || "").toLowerCase().includes(e)
328
328
  ) : a;
329
329
  }
330
- function Le(a, i, e, t = "", r = ne) {
331
- const o = (t || "").trim() !== "", s = [], c = /* @__PURE__ */ new Map();
332
- for (let n = 0; n < i.length; n++) {
333
- const l = i[n], d = l.layerId || "";
334
- c.has(d) || c.set(d, []), c.get(d).push(l);
335
- }
336
- for (let n = 0; n < a.length; n++) {
337
- const l = a[n];
338
- if (o || e.has(l.id)) {
339
- const d = K(c.get(l.id) || [], t).slice(0, r);
340
- for (let p = 0; p < d.length; p++)
341
- s.push(d[p].id);
330
+ function Ce(a, o, e, t = "", r = le) {
331
+ const i = (t || "").trim() !== "", s = [], n = /* @__PURE__ */ new Map();
332
+ for (let c = 0; c < o.length; c++) {
333
+ const l = o[c], u = l.layerId || "";
334
+ n.has(u) || n.set(u, []), n.get(u).push(l);
335
+ }
336
+ for (let c = 0; c < a.length; c++) {
337
+ const l = a[c];
338
+ if (i || e.has(l.id)) {
339
+ const u = Y(n.get(l.id) || [], t).slice(0, r);
340
+ for (let p = 0; p < u.length; p++)
341
+ s.push(u[p].id);
342
342
  }
343
343
  }
344
344
  return s;
345
345
  }
346
- function Ce(a, i, e, t, r, o) {
346
+ function Se(a, o, e, t, r, i) {
347
347
  if (!a.includes(t)) return null;
348
- const s = new Set(i);
349
- let c = e;
350
- if (o && e && a.includes(e)) {
351
- const n = a.indexOf(e), l = a.indexOf(t), d = Math.min(n, l), p = Math.max(n, l);
348
+ const s = new Set(o);
349
+ let n = e;
350
+ if (i && e && a.includes(e)) {
351
+ const c = a.indexOf(e), l = a.indexOf(t), u = Math.min(c, l), p = Math.max(c, l);
352
352
  r || s.clear();
353
- for (let u = d; u <= p; u++)
354
- s.add(a[u]);
355
- } else r ? (s.has(t) ? s.delete(t) : s.add(t), c = t) : (s.clear(), s.add(t), c = t);
356
- return { selecionados: s, ultimoClicadoId: c };
353
+ for (let d = u; d <= p; d++)
354
+ s.add(a[d]);
355
+ } else r ? (s.has(t) ? s.delete(t) : s.add(t), n = t) : (s.clear(), s.add(t), n = t);
356
+ return { selecionados: s, ultimoClicadoId: n };
357
357
  }
358
- function $e(a, i) {
358
+ function $e(a, o) {
359
359
  if (a.size === 0) return;
360
- const e = new Set(i.map((t) => t.id));
360
+ const e = new Set(o.map((t) => t.id));
361
361
  for (const t of a)
362
362
  e.has(t) || a.delete(t);
363
363
  }
364
- function Se(a, i) {
365
- const e = D(i, "#00E08A"), t = (a || "").toLowerCase();
364
+ function Me(a, o) {
365
+ const e = P(o, "#00E08A"), t = (a || "").toLowerCase();
366
366
  return t === "polygon" || t === "multipolygon" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${e}" fill-opacity="0.45" stroke="${e}" stroke-width="1.5"/></svg>` : t === "linestring" || t === "multilinestring" ? `<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${e}" stroke-width="2"/></svg>` : t === "text" ? `<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${e}" 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="${e}" stroke="#ffffff" stroke-width="1.2"/></svg>`;
367
367
  }
368
- function Me(a) {
368
+ function ze(a) {
369
369
  const {
370
- camadas: i,
370
+ camadas: o,
371
371
  feicoes: e,
372
372
  camadaAtivaId: t,
373
373
  expandedLayers: r,
374
- selectedFeatureIds: o,
374
+ selectedFeatureIds: i,
375
375
  activeSettingsLayerId: s,
376
- editingLayerId: c,
377
- editingFeatureId: n,
376
+ editingLayerId: n,
377
+ editingFeatureId: c,
378
378
  searchQuery: l,
379
- limiteFeicoesPorCamada: d = ne,
379
+ limiteFeicoesPorCamada: u = le,
380
380
  mostrarBotaoColapsar: p = !1
381
- } = a, u = (l || "").trim().toLowerCase(), f = /* @__PURE__ */ new Map();
382
- for (let h = 0; h < e.length; h++) {
383
- const v = e[h], w = v.layerId || "";
384
- f.has(w) || f.set(w, []), f.get(w).push(v);
381
+ } = a, d = (l || "").trim().toLowerCase(), f = /* @__PURE__ */ new Map();
382
+ for (let g = 0; g < e.length; g++) {
383
+ const b = e[g], w = b.layerId || "";
384
+ f.has(w) || f.set(w, []), f.get(w).push(b);
385
385
  }
386
- const g = i.every((h) => h.visible !== !1), b = i.length > 0 && i.every((h) => r.has(h.id)), E = `
386
+ const m = o.every((g) => g.visible !== !1), v = o.length > 0 && o.every((g) => r.has(g.id)), E = `
387
387
  <div class="ui-tree-toolbar">
388
388
  <div class="ui-tree-title-group">
389
389
  <span class="ui-tree-section-title">CAMADAS</span>
390
- <span class="ui-tree-count-badge">${i.length}</span>
390
+ <span class="ui-tree-count-badge">${o.length}</span>
391
391
  </div>
392
392
  <div class="ui-tree-actions">
393
- <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${g ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}" aria-label="${g ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas"}">
394
- ${g ? m.olhoAberto : m.olhoFechado}
393
+ <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"}">
394
+ ${m ? h.olhoAberto : h.olhoFechado}
395
395
  </button>
396
- <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${b ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${b ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
397
- <span class="ui-chevron-icon ${b ? "open" : ""}">${m.chevronDir}</span>
396
+ <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${v ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}" title="${v ? "Recolher Todos os Grupos" : "Expandir Todos os Grupos"}">
397
+ <span class="ui-chevron-icon ${v ? "open" : ""}">${h.chevronDir}</span>
398
398
  </button>
399
399
  <button id="btn-add-layer" class="ui-tree-btn-new" title="Adicionar nova camada vetorial">
400
- ${m.mais} Camada
400
+ ${h.mais} Camada
401
401
  </button>
402
- ${p ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${m.recolherPainel}</button>` : ""}
402
+ ${p ? `<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${h.recolherPainel}</button>` : ""}
403
403
  </div>
404
404
  </div>
405
405
 
406
406
  <div class="ui-tree-search-wrapper">
407
- <span class="ui-tree-search-icon">${m.busca}</span>
407
+ <span class="ui-tree-search-icon">${h.busca}</span>
408
408
  <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="${k(
409
409
  l
410
410
  )}" />
411
- ${l ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${m.fechar}</button>` : ""}
411
+ ${l ? `<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${h.fechar}</button>` : ""}
412
412
  </div>
413
- `, y = i.map((h) => {
414
- const v = k(h.id), w = k(h.name || "Camada"), L = D(h.color, "#00E08A"), F = h.visible !== !1, M = h.locked === !0, B = u ? !0 : r.has(h.id), O = s === h.id, Y = t === h.id, I = K(f.get(h.id) || [], u), J = I.length > 0 && I.every((A) => o.has(A.id)), ce = !J && I.some((A) => o.has(A.id)), de = I.slice(0, d), ue = I.length > d, pe = de.map((A) => {
415
- const C = k(A.id), X = k(A.name || "Feição"), Z = D(A.color, L), q = A.visible !== !1, P = M, j = A.locked === !0 || P, ee = P ? "Bloqueada pela camada" : j ? "Desbloquear Feição" : "Bloquear Feição", R = o.has(A.id), ae = A.status;
416
- let N = "";
417
- return ae === "oficial" ? N = '<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>' : ae === "previa" && (N = '<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'), `
418
- <div class="ui-feat-row ${R ? "selected-row" : ""} ${q ? "" : "hidden-row"}" data-feat-row="${C}" data-feat-select="${C}" data-feat-layer="${v}" role="treeitem" aria-selected="${R}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
419
- <div class="ui-col ui-col-eye" data-feat-eye="${C}" role="button" tabindex="0" aria-label="${q ? "Ocultar Feição" : "Exibir Feição"}" title="${q ? "Ocultar Feição" : "Exibir Feição"}">
420
- ${q ? m.olhoAberto : m.olhoFechado}
413
+ `, y = o.map((g) => {
414
+ const b = k(g.id), w = k(g.name || "Camada"), L = P(g.color, "#00E08A"), q = g.visible !== !1, z = g.locked === !0, D = d ? !0 : r.has(g.id), R = s === g.id, J = t === g.id, I = Y(f.get(g.id) || [], d), W = I.length > 0 && I.every((A) => i.has(A.id)), de = !W && I.some((A) => i.has(A.id)), ue = I.slice(0, u), pe = I.length > u, fe = ue.map((A) => {
415
+ const C = k(A.id), Z = k(A.name || "Feição"), ee = P(A.color, L), T = A.visible !== !1, j = z, N = A.locked === !0 || j, ae = j ? "Bloqueada pela camada" : N ? "Desbloquear Feição" : "Bloquear Feição", H = i.has(A.id), te = A.status;
416
+ let V = "";
417
+ return te === "oficial" ? V = '<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>' : te === "previa" && (V = '<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'), `
418
+ <div class="ui-feat-row ${H ? "selected-row" : ""} ${T ? "" : "hidden-row"}" data-feat-row="${C}" data-feat-select="${C}" data-feat-layer="${b}" role="treeitem" aria-selected="${H}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
419
+ <div class="ui-col ui-col-eye" data-feat-eye="${C}" role="button" tabindex="0" aria-label="${T ? "Ocultar Feição" : "Exibir Feição"}" title="${T ? "Ocultar Feição" : "Exibir Feição"}">
420
+ ${T ? h.olhoAberto : h.olhoFechado}
421
421
  </div>
422
422
 
423
- <div class="ui-col ui-col-lock ${j ? "" : "ui-lock-open"}" data-feat-lock="${C}" ${P ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${ee}" title="${ee}">
424
- ${j ? m.cadeadoTrancado : m.cadeadoAberto}
423
+ <div class="ui-col ui-col-lock ${N ? "" : "ui-lock-open"}" data-feat-lock="${C}" ${j ? 'data-locked-by-layer="true"' : ""} role="button" tabindex="0" aria-label="${ae}" title="${ae}">
424
+ ${N ? h.cadeadoTrancado : h.cadeadoAberto}
425
425
  </div>
426
426
 
427
- <div class="ui-col ui-col-colorbar" style="background: ${Z};"></div>
427
+ <div class="ui-col ui-col-colorbar" style="background: ${ee};"></div>
428
428
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
429
429
  <div class="ui-col ui-col-thumb">
430
- <div class="ui-thumb-box">${Se(A.type || A.geometryType, Z)}</div>
430
+ <div class="ui-thumb-box">${Me(A.type || A.geometryType, ee)}</div>
431
431
  </div>
432
432
 
433
433
  <div class="ui-col ui-col-name" data-feat-name-trigger="${C}" title="Duplo clique para renomear">
434
- ${n === A.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${C}" value="${X}" />` : `<span class="ui-name-text">${X}</span>${N}`}
434
+ ${c === A.id ? `<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${C}" value="${Z}" />` : `<span class="ui-name-text">${Z}</span>${V}`}
435
435
  </div>
436
436
 
437
437
  <div class="ui-col ui-col-actions">
438
- <button class="ui-micro-btn" data-feat-fit="${C}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${m.alvoEnquadrar}</button>
438
+ <button class="ui-micro-btn" data-feat-fit="${C}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${h.alvoEnquadrar}</button>
439
439
  </div>
440
440
 
441
441
  <div class="ui-col ui-col-target" data-feat-target="${C}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
442
- <div class="ui-target-circle ${R ? "selected" : ""}"></div>
442
+ <div class="ui-target-circle ${H ? "selected" : ""}"></div>
443
443
  </div>
444
444
  </div>
445
445
  `;
446
- }).join(""), fe = ue ? `<div style="padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: rgba(0,0,0,0.2);">Exibindo ${d} de ${I.length} feições. Use a busca acima para filtrar.</div>` : "", W = h.opacity !== void 0 ? h.opacity : 1, me = Math.round(W * 100), he = O ? `
447
- <div class="ui-layer-settings-drawer" id="settings-drawer-${v}" style="--drawer-cor-camada: ${L};">
446
+ }).join(""), me = pe ? `<div style="padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: rgba(0,0,0,0.2);">Exibindo ${u} de ${I.length} feições. Use a busca acima para filtrar.</div>` : "", X = g.opacity !== void 0 ? g.opacity : 1, he = Math.round(X * 100), ge = R ? `
447
+ <div class="ui-layer-settings-drawer" id="settings-drawer-${b}" style="--drawer-cor-camada: ${L};">
448
448
  <div class="ui-drawer-header">
449
449
  <div class="ui-drawer-header-left">
450
- <span class="ui-drawer-icon">${m.engrenagem}</span>
450
+ <span class="ui-drawer-icon">${h.engrenagem}</span>
451
451
  <span class="ui-drawer-title">Configurações da Camada</span>
452
452
  </div>
453
- <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${v}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
454
- ${m.fechar}
453
+ <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${b}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
454
+ ${h.fechar}
455
455
  </button>
456
456
  </div>
457
457
 
@@ -463,9 +463,9 @@ function Me(a) {
463
463
  </div>
464
464
  <div class="ui-drawer-color-group">
465
465
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
466
- <span class="ui-drawer-color-sample" id="sample-color-${v}" style="background-color: ${L};"></span>
467
- <span class="ui-drawer-color-hex" id="hex-color-${v}">${L.toUpperCase()}</span>
468
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${v}" value="${Ae(L, "#00e08a")}" class="ui-drawer-color-native" />
466
+ <span class="ui-drawer-color-sample" id="sample-color-${b}" style="background-color: ${L};"></span>
467
+ <span class="ui-drawer-color-hex" id="hex-color-${b}">${L.toUpperCase()}</span>
468
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${b}" value="${ke(L, "#00e08a")}" class="ui-drawer-color-native" />
469
469
  </label>
470
470
  </div>
471
471
  </div>
@@ -474,10 +474,10 @@ function Me(a) {
474
474
  <div class="ui-drawer-row">
475
475
  <div class="ui-drawer-row-label">
476
476
  <span>Opacidade</span>
477
- <span class="ui-drawer-badge" id="badge-op-${v}">${me}%</span>
477
+ <span class="ui-drawer-badge" id="badge-op-${b}">${he}%</span>
478
478
  </div>
479
479
  <div class="ui-drawer-slider-container">
480
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(W) || 0}" data-layer-opacity-slider="${v}" class="ui-drawer-slider" />
480
+ <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(X) || 0}" data-layer-opacity-slider="${b}" class="ui-drawer-slider" />
481
481
  </div>
482
482
  </div>
483
483
  </div>
@@ -487,8 +487,8 @@ function Me(a) {
487
487
  <span>${I.length} ${I.length === 1 ? "feição" : "feições"} nesta camada</span>
488
488
  </div>
489
489
  <div class="ui-drawer-actions">
490
- <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${v}" title="Excluir esta camada e todas as suas feições">
491
- ${m.lixeira}
490
+ <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${b}" title="Excluir esta camada e todas as suas feições">
491
+ ${h.lixeira}
492
492
  <span class="ui-btn-label">Excluir Camada</span>
493
493
  </button>
494
494
  </div>
@@ -496,46 +496,46 @@ function Me(a) {
496
496
  </div>
497
497
  ` : "";
498
498
  return `
499
- <div class="ui-layer-group" data-layer-id="${v}" role="treeitem" aria-expanded="${B}">
500
- <div class="ui-layer-row ${F ? "" : "hidden-layer"} ${Y ? "active-drawing-layer" : ""}" data-layer-row="${v}" data-layer-id="${v}" tabindex="-1" draggable="true" style="--layer-active-color: ${L};">
501
- <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${m.dragHandle}</div>
499
+ <div class="ui-layer-group" data-layer-id="${b}" role="treeitem" aria-expanded="${D}">
500
+ <div class="ui-layer-row ${q ? "" : "hidden-layer"} ${J ? "active-drawing-layer" : ""}" data-layer-row="${b}" data-layer-id="${b}" tabindex="-1" draggable="true" style="--layer-active-color: ${L};">
501
+ <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${h.dragHandle}</div>
502
502
 
503
- <div class="ui-col ui-col-eye" data-layer-eye="${v}" role="button" tabindex="0" aria-label="${F ? "Ocultar Camada" : "Exibir Camada"}" title="${F ? "Ocultar Camada" : "Exibir Camada"}">
504
- ${F ? m.olhoAberto : m.olhoFechado}
503
+ <div class="ui-col ui-col-eye" data-layer-eye="${b}" role="button" tabindex="0" aria-label="${q ? "Ocultar Camada" : "Exibir Camada"}" title="${q ? "Ocultar Camada" : "Exibir Camada"}">
504
+ ${q ? h.olhoAberto : h.olhoFechado}
505
505
  </div>
506
506
 
507
- <div class="ui-col ui-col-lock ${M ? "" : "ui-lock-open"}" data-layer-lock="${v}" role="button" tabindex="0" aria-label="${M ? "Desbloquear Camada" : "Bloquear Camada"}" title="${M ? "Desbloquear Camada" : "Bloquear Camada"}">
508
- ${M ? m.cadeadoTrancado : m.cadeadoAberto}
507
+ <div class="ui-col ui-col-lock ${z ? "" : "ui-lock-open"}" data-layer-lock="${b}" role="button" tabindex="0" aria-label="${z ? "Desbloquear Camada" : "Bloquear Camada"}" title="${z ? "Desbloquear Camada" : "Bloquear Camada"}">
508
+ ${z ? h.cadeadoTrancado : h.cadeadoAberto}
509
509
  </div>
510
510
 
511
511
  <div class="ui-col ui-col-colorbar" style="background: ${L};"></div>
512
512
 
513
- <div class="ui-col ui-col-chevron" data-layer-expand="${v}" role="button" tabindex="0" aria-label="${B ? "Recolher grupo" : "Expandir grupo"}">
514
- <span class="ui-chevron-icon ${B ? "open" : ""}">${m.chevronDir}</span>
513
+ <div class="ui-col ui-col-chevron" data-layer-expand="${b}" role="button" tabindex="0" aria-label="${D ? "Recolher grupo" : "Expandir grupo"}">
514
+ <span class="ui-chevron-icon ${D ? "open" : ""}">${h.chevronDir}</span>
515
515
  </div>
516
516
 
517
- <div class="ui-col ui-col-name" data-layer-name-trigger="${v}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
518
- ${c === h.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${v}" value="${w}" />` : `<span class="ui-name-text">${w}</span>
519
- ${Y ? '<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>' : ""}
517
+ <div class="ui-col ui-col-name" data-layer-name-trigger="${b}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
518
+ ${n === g.id ? `<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${b}" value="${w}" />` : `<span class="ui-name-text">${w}</span>
519
+ ${J ? '<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>' : ""}
520
520
  <span class="ui-count-chip">${I.length}</span>`}
521
521
  </div>
522
522
 
523
523
  <div class="ui-col ui-col-actions">
524
- <button class="ui-micro-btn" data-layer-fit="${v}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${m.alvoEnquadrar}</button>
525
- <button class="ui-micro-btn ${O ? "active" : ""}" data-layer-settings="${v}" title="Ajustar cor, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${O}">${m.engrenagem}</button>
524
+ <button class="ui-micro-btn" data-layer-fit="${b}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${h.alvoEnquadrar}</button>
525
+ <button class="ui-micro-btn ${R ? "active" : ""}" data-layer-settings="${b}" title="Ajustar cor, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${R}">${h.engrenagem}</button>
526
526
  </div>
527
527
 
528
- <div class="ui-col ui-col-target" data-layer-target="${v}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
529
- <div class="ui-target-circle ${J ? "selected" : ce ? "partial" : ""}"></div>
528
+ <div class="ui-col ui-col-target" data-layer-target="${b}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
529
+ <div class="ui-target-circle ${W ? "selected" : de ? "partial" : ""}"></div>
530
530
  </div>
531
531
  </div>
532
532
 
533
- ${he}
533
+ ${ge}
534
534
 
535
- <div class="ui-children-container" role="group" style="display: ${B ? "block" : "none"};">
536
- ${pe}
535
+ <div class="ui-children-container" role="group" style="display: ${D ? "block" : "none"};">
537
536
  ${fe}
538
- ${I.length === 0 ? `<div class="ui-empty-row"><span>${u ? "Nenhum item correspondente" : "Nenhum elemento neste grupo"}</span></div>` : ""}
537
+ ${me}
538
+ ${I.length === 0 ? `<div class="ui-empty-row"><span>${d ? "Nenhum item correspondente" : "Nenhum elemento neste grupo"}</span></div>` : ""}
539
539
  </div>
540
540
  </div>
541
541
  `;
@@ -549,20 +549,20 @@ function Me(a) {
549
549
  </div>
550
550
  `;
551
551
  }
552
- class ze {
553
- constructor(i, e) {
552
+ class Fe {
553
+ constructor(o, e) {
554
554
  x(this, "host");
555
555
  x(this, "shadow");
556
- this.host = i, this.shadow = e;
556
+ this.host = o, this.shadow = e;
557
557
  }
558
558
  bindAll() {
559
559
  this.bindInlineRename(), this.bindDragAndDrop();
560
560
  }
561
561
  bindInlineRename() {
562
- this.shadow.querySelectorAll("[data-layer-name-trigger]").forEach((i) => {
563
- i.addEventListener("dblclick", (e) => {
562
+ this.shadow.querySelectorAll("[data-layer-name-trigger]").forEach((o) => {
563
+ o.addEventListener("dblclick", (e) => {
564
564
  e.stopPropagation();
565
- const t = i.getAttribute("data-layer-name-trigger");
565
+ const t = o.getAttribute("data-layer-name-trigger");
566
566
  if (!t) return;
567
567
  this.host.editingLayerId = t, this.host.solicitarRenderizacao();
568
568
  const r = S(
@@ -572,30 +572,30 @@ class ze {
572
572
  );
573
573
  if (r) {
574
574
  r.focus(), r.select();
575
- let o = !1;
576
- const s = (c) => {
577
- var n, l;
578
- if (!o) {
579
- if (o = !0, this.host.editingLayerId = null, c) {
580
- const d = r.value.trim(), p = this.host.camadas.find((u) => u.id === t);
581
- d && p && p.name !== d && (p.name = d, (l = (n = this.host).salvarLembrancaEstado) == null || l.call(n), this.host.dispararEvento("ui-camada-renomeada", {
575
+ let i = !1;
576
+ const s = (n) => {
577
+ var c, l;
578
+ if (!i) {
579
+ if (i = !0, this.host.editingLayerId = null, n) {
580
+ const u = r.value.trim(), p = this.host.camadas.find((d) => d.id === t);
581
+ u && p && p.name !== u && (p.name = u, (l = (c = this.host).salvarLembrancaEstado) == null || l.call(c), this.host.dispararEvento("ui-camada-renomeada", {
582
582
  camadaId: t,
583
- novoNome: d,
583
+ novoNome: u,
584
584
  camada: p
585
585
  }));
586
586
  }
587
587
  this.host.solicitarRenderizacao();
588
588
  }
589
589
  };
590
- r.addEventListener("keydown", (c) => {
591
- c.key === "Enter" ? (c.preventDefault(), s(!0)) : c.key === "Escape" && (c.preventDefault(), s(!1));
590
+ r.addEventListener("keydown", (n) => {
591
+ n.key === "Enter" ? (n.preventDefault(), s(!0)) : n.key === "Escape" && (n.preventDefault(), s(!1));
592
592
  }), r.addEventListener("blur", () => s(!0));
593
593
  }
594
594
  });
595
- }), this.shadow.querySelectorAll("[data-feat-name-trigger]").forEach((i) => {
596
- i.addEventListener("dblclick", (e) => {
595
+ }), this.shadow.querySelectorAll("[data-feat-name-trigger]").forEach((o) => {
596
+ o.addEventListener("dblclick", (e) => {
597
597
  e.stopPropagation();
598
- const t = i.getAttribute("data-feat-name-trigger");
598
+ const t = o.getAttribute("data-feat-name-trigger");
599
599
  if (!t) return;
600
600
  this.host.editingFeatureId = t, this.host.solicitarRenderizacao();
601
601
  const r = S(
@@ -605,153 +605,153 @@ class ze {
605
605
  );
606
606
  if (r) {
607
607
  r.focus(), r.select();
608
- let o = !1;
609
- const s = (c) => {
610
- if (!o) {
611
- if (o = !0, this.host.editingFeatureId = null, c) {
612
- const n = r.value.trim(), l = this.host.feicoes.find((d) => d.id === t);
613
- n && l && l.name !== n && (l.name = n, this.host.dispararEvento("ui-feicao-renomeada", {
608
+ let i = !1;
609
+ const s = (n) => {
610
+ if (!i) {
611
+ if (i = !0, this.host.editingFeatureId = null, n) {
612
+ const c = r.value.trim(), l = this.host.feicoes.find((u) => u.id === t);
613
+ c && l && l.name !== c && (l.name = c, this.host.dispararEvento("ui-feicao-renomeada", {
614
614
  feicaoId: t,
615
- novoNome: n,
615
+ novoNome: c,
616
616
  feicao: l
617
617
  }));
618
618
  }
619
619
  this.host.solicitarRenderizacao();
620
620
  }
621
621
  };
622
- r.addEventListener("keydown", (c) => {
623
- c.key === "Enter" ? (c.preventDefault(), s(!0)) : c.key === "Escape" && (c.preventDefault(), s(!1));
622
+ r.addEventListener("keydown", (n) => {
623
+ n.key === "Enter" ? (n.preventDefault(), s(!0)) : n.key === "Escape" && (n.preventDefault(), s(!1));
624
624
  }), r.addEventListener("blur", () => s(!0));
625
625
  }
626
626
  });
627
627
  });
628
628
  }
629
629
  bindDragAndDrop() {
630
- let i = null, e = null, t = null;
630
+ let o = null, e = null, t = null;
631
631
  const r = () => {
632
- this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((o) => {
633
- o.classList.remove("dragging", "drop-above", "drop-below", "drop-into");
632
+ this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach((i) => {
633
+ i.classList.remove("dragging", "drop-above", "drop-below", "drop-into");
634
634
  });
635
635
  };
636
- this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((o) => {
637
- const s = o.getAttribute("data-layer-id");
638
- s && (o.addEventListener("dragstart", (c) => {
639
- const n = c;
640
- if (n.target.closest("input, button, select") || this.host.editingLayerId || this.host.editingFeatureId) {
641
- n.preventDefault();
636
+ this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach((i) => {
637
+ const s = i.getAttribute("data-layer-id");
638
+ s && (i.addEventListener("dragstart", (n) => {
639
+ const c = n;
640
+ if (c.target.closest("input, button, select") || this.host.editingLayerId || this.host.editingFeatureId) {
641
+ c.preventDefault();
642
642
  return;
643
643
  }
644
- i = "layer", e = s, n.dataTransfer && (n.dataTransfer.setData("text/plain", JSON.stringify({ type: "layer", id: s })), n.dataTransfer.effectAllowed = "move"), o.classList.add("dragging");
645
- }), o.addEventListener("dragover", (c) => {
646
- const n = c;
647
- if (n.preventDefault(), n.stopPropagation(), n.dataTransfer && (n.dataTransfer.dropEffect = "move"), i === "layer") {
644
+ o = "layer", e = s, c.dataTransfer && (c.dataTransfer.setData("text/plain", JSON.stringify({ type: "layer", id: s })), c.dataTransfer.effectAllowed = "move"), i.classList.add("dragging");
645
+ }), i.addEventListener("dragover", (n) => {
646
+ const c = n;
647
+ if (c.preventDefault(), c.stopPropagation(), c.dataTransfer && (c.dataTransfer.dropEffect = "move"), o === "layer") {
648
648
  if (e === s) return;
649
- const l = o.getBoundingClientRect(), d = n.clientY - l.top < l.height / 2;
650
- o.classList.toggle("drop-above", d), o.classList.toggle("drop-below", !d);
651
- } else i === "feature" && o.classList.add("drop-into");
652
- }), o.addEventListener("dragleave", (c) => {
653
- const n = c.relatedTarget;
654
- n && o.contains(n) || o.classList.remove("drop-above", "drop-below", "drop-into");
655
- }), o.addEventListener("drop", (c) => {
656
- var d, p;
657
- const n = c;
658
- n.preventDefault(), n.stopPropagation();
659
- const l = o.classList.contains("drop-above");
660
- if (r(), i === "layer") {
649
+ const l = i.getBoundingClientRect(), u = c.clientY - l.top < l.height / 2;
650
+ i.classList.toggle("drop-above", u), i.classList.toggle("drop-below", !u);
651
+ } else o === "feature" && i.classList.add("drop-into");
652
+ }), i.addEventListener("dragleave", (n) => {
653
+ const c = n.relatedTarget;
654
+ c && i.contains(c) || i.classList.remove("drop-above", "drop-below", "drop-into");
655
+ }), i.addEventListener("drop", (n) => {
656
+ var u, p;
657
+ const c = n;
658
+ c.preventDefault(), c.stopPropagation();
659
+ const l = i.classList.contains("drop-above");
660
+ if (r(), o === "layer") {
661
661
  if (!e || e === s) return;
662
- const u = this.host.camadas.findIndex((b) => b.id === e);
663
- if (u === -1) return;
664
- const [f] = this.host.camadas.splice(u, 1), g = this.host.camadas.findIndex((b) => b.id === s);
665
- g === -1 ? this.host.camadas.push(f) : this.host.camadas.splice(l ? g : g + 1, 0, f), (p = (d = this.host).salvarLembrancaEstado) == null || p.call(d), this.host.dispararEvento("ui-camadas-reordenadas", {
662
+ const d = this.host.camadas.findIndex((v) => v.id === e);
663
+ if (d === -1) return;
664
+ const [f] = this.host.camadas.splice(d, 1), m = this.host.camadas.findIndex((v) => v.id === s);
665
+ m === -1 ? this.host.camadas.push(f) : this.host.camadas.splice(l ? m : m + 1, 0, f), (p = (u = this.host).salvarLembrancaEstado) == null || p.call(u), this.host.dispararEvento("ui-camadas-reordenadas", {
666
666
  camadas: [...this.host.camadas]
667
667
  }), this.host.solicitarRenderizacao();
668
- } else if (i === "feature") {
668
+ } else if (o === "feature") {
669
669
  if (!t) return;
670
- const u = this.host.feicoes.find((g) => g.id === t), f = this.host.camadas.find((g) => g.id === s);
671
- if (u && f && u.layerId !== s) {
672
- const g = u.layerId;
673
- u.layerId = s, this.host.dispararEvento("ui-feicao-movida", {
674
- feicaoId: u.id,
675
- camadaOrigemId: g,
670
+ const d = this.host.feicoes.find((m) => m.id === t), f = this.host.camadas.find((m) => m.id === s);
671
+ if (d && f && d.layerId !== s) {
672
+ const m = d.layerId;
673
+ d.layerId = s, this.host.dispararEvento("ui-feicao-movida", {
674
+ feicaoId: d.id,
675
+ camadaOrigemId: m,
676
676
  camadaDestinoId: s,
677
- feicao: u
677
+ feicao: d
678
678
  }), this.host.solicitarRenderizacao();
679
679
  }
680
680
  }
681
- }), o.addEventListener("dragend", () => {
682
- i = null, e = null, t = null, r();
681
+ }), i.addEventListener("dragend", () => {
682
+ o = null, e = null, t = null, r();
683
683
  }));
684
- }), this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach((o) => {
685
- const s = o.getAttribute("data-feat-row"), c = o.getAttribute("data-feat-layer");
686
- s && (o.addEventListener("dragstart", (n) => {
687
- const l = n;
684
+ }), this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach((i) => {
685
+ const s = i.getAttribute("data-feat-row"), n = i.getAttribute("data-feat-layer");
686
+ s && (i.addEventListener("dragstart", (c) => {
687
+ const l = c;
688
688
  if (l.target.closest("input, button, select") || this.host.editingLayerId || this.host.editingFeatureId) {
689
689
  l.preventDefault();
690
690
  return;
691
691
  }
692
- l.stopPropagation(), i = "feature", t = s, e = c, l.dataTransfer && (l.dataTransfer.setData(
692
+ l.stopPropagation(), o = "feature", t = s, e = n, l.dataTransfer && (l.dataTransfer.setData(
693
693
  "text/plain",
694
- JSON.stringify({ type: "feature", id: s, layerId: c })
695
- ), l.dataTransfer.effectAllowed = "move"), o.classList.add("dragging");
696
- }), o.addEventListener("dragover", (n) => {
697
- const l = n;
698
- if (i !== "feature" || t === s) return;
694
+ JSON.stringify({ type: "feature", id: s, layerId: n })
695
+ ), l.dataTransfer.effectAllowed = "move"), i.classList.add("dragging");
696
+ }), i.addEventListener("dragover", (c) => {
697
+ const l = c;
698
+ if (o !== "feature" || t === s) return;
699
699
  l.preventDefault(), l.stopPropagation(), l.dataTransfer && (l.dataTransfer.dropEffect = "move");
700
- const d = o.getBoundingClientRect(), p = l.clientY - d.top < d.height / 2;
701
- o.classList.toggle("drop-above", p), o.classList.toggle("drop-below", !p);
702
- }), o.addEventListener("dragleave", (n) => {
703
- const l = n.relatedTarget;
704
- l && o.contains(l) || o.classList.remove("drop-above", "drop-below");
705
- }), o.addEventListener("drop", (n) => {
706
- const l = n;
707
- if (i !== "feature" || !t || t === s) return;
700
+ const u = i.getBoundingClientRect(), p = l.clientY - u.top < u.height / 2;
701
+ i.classList.toggle("drop-above", p), i.classList.toggle("drop-below", !p);
702
+ }), i.addEventListener("dragleave", (c) => {
703
+ const l = c.relatedTarget;
704
+ l && i.contains(l) || i.classList.remove("drop-above", "drop-below");
705
+ }), i.addEventListener("drop", (c) => {
706
+ const l = c;
707
+ if (o !== "feature" || !t || t === s) return;
708
708
  l.preventDefault(), l.stopPropagation();
709
- const d = o.classList.contains("drop-above");
709
+ const u = i.classList.contains("drop-above");
710
710
  r();
711
- const p = this.host.feicoes.findIndex((h) => h.id === t);
711
+ const p = this.host.feicoes.findIndex((g) => g.id === t);
712
712
  if (p === -1) return;
713
- const u = this.host.feicoes.find((h) => h.id === s);
714
- if (!u) return;
715
- const [f] = this.host.feicoes.splice(p, 1), g = f.layerId, b = u.layerId, E = g !== b;
716
- E && (f.layerId = b);
717
- const y = this.host.feicoes.findIndex((h) => h.id === s);
718
- y === -1 ? this.host.feicoes.push(f) : this.host.feicoes.splice(d ? y : y + 1, 0, f), E && this.host.dispararEvento("ui-feicao-movida", {
713
+ const d = this.host.feicoes.find((g) => g.id === s);
714
+ if (!d) return;
715
+ const [f] = this.host.feicoes.splice(p, 1), m = f.layerId, v = d.layerId, E = m !== v;
716
+ E && (f.layerId = v);
717
+ const y = this.host.feicoes.findIndex((g) => g.id === s);
718
+ y === -1 ? this.host.feicoes.push(f) : this.host.feicoes.splice(u ? y : y + 1, 0, f), E && this.host.dispararEvento("ui-feicao-movida", {
719
719
  feicaoId: f.id,
720
- camadaOrigemId: g,
721
- camadaDestinoId: b,
720
+ camadaOrigemId: m,
721
+ camadaDestinoId: v,
722
722
  feicao: f
723
723
  }), this.host.dispararEvento("ui-feicoes-reordenadas", {
724
724
  feicoes: [...this.host.feicoes]
725
725
  }), this.host.solicitarRenderizacao();
726
- }), o.addEventListener("dragend", (n) => {
727
- n.stopPropagation(), i = null, t = null, e = null, r();
726
+ }), i.addEventListener("dragend", (c) => {
727
+ c.stopPropagation(), o = null, t = null, e = null, r();
728
728
  }));
729
729
  });
730
730
  }
731
731
  }
732
- const Fe = "ui_camadas_estado_";
733
- function Be(a, i) {
734
- const e = (a || i || "default").trim();
735
- return `${Fe}${e}`;
732
+ const Be = "ui_camadas_estado_";
733
+ function qe(a, o) {
734
+ const e = (a || o || "default").trim();
735
+ return `${Be}${e}`;
736
736
  }
737
- function U(a) {
737
+ function _(a) {
738
738
  if (typeof window > "u" || typeof localStorage > "u")
739
739
  return null;
740
740
  try {
741
- const i = localStorage.getItem(a);
742
- if (!i) return null;
743
- const e = JSON.parse(i);
741
+ const o = localStorage.getItem(a);
742
+ if (!o) return null;
743
+ const e = JSON.parse(o);
744
744
  if (e && typeof e == "object")
745
745
  return e;
746
- } catch (i) {
747
- console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${a}):`, i);
746
+ } catch (o) {
747
+ console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${a}):`, o);
748
748
  }
749
749
  return null;
750
750
  }
751
- function qe(a, i) {
751
+ function De(a, o) {
752
752
  if (!(typeof window > "u" || typeof localStorage > "u"))
753
753
  try {
754
- localStorage.setItem(a, JSON.stringify(i));
754
+ localStorage.setItem(a, JSON.stringify(o));
755
755
  } catch (e) {
756
756
  console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${a}):`, e);
757
757
  }
@@ -763,7 +763,7 @@ function Te(a) {
763
763
  } catch {
764
764
  }
765
765
  }
766
- function _(a) {
766
+ function K(a) {
767
767
  return {
768
768
  name: a.name,
769
769
  visible: a.visible !== !1,
@@ -772,52 +772,59 @@ function _(a) {
772
772
  color: a.color || "#00E08A"
773
773
  };
774
774
  }
775
- function De(a, i, e, t) {
775
+ function Oe(a, o, e, t) {
776
776
  if (!Array.isArray(a)) return;
777
- const r = (i == null ? void 0 : i.camadasOverrides) || {}, o = new Set((i == null ? void 0 : i.expandedLayerIds) || []), s = new Set((i == null ? void 0 : i.collapsedLayerIds) || []), c = o.size > 0 || s.size > 0;
778
- for (let n = 0; n < a.length; n++) {
779
- const l = a[n], d = r[l.id];
780
- if (t == null || t.set(l.id, _(l)), d) {
781
- const p = d.origem, u = (f) => {
782
- var b;
783
- const g = (b = t == null ? void 0 : t.get(l.id)) == null ? void 0 : b[f];
784
- return p !== void 0 && p[f] !== g;
777
+ const r = (o == null ? void 0 : o.camadasOverrides) || {}, i = new Set((o == null ? void 0 : o.expandedLayerIds) || []), s = new Set((o == null ? void 0 : o.collapsedLayerIds) || []), n = i.size > 0 || s.size > 0;
778
+ for (let p = 0; p < a.length; p++) {
779
+ const d = a[p], f = r[d.id];
780
+ if (t == null || t.set(d.id, K(d)), f) {
781
+ const m = f.origem, v = (E) => {
782
+ var g;
783
+ const y = (g = t == null ? void 0 : t.get(d.id)) == null ? void 0 : g[E];
784
+ return m !== void 0 && m[E] !== y;
785
785
  };
786
- typeof d.name == "string" && d.name.trim() && !u("name") && (l.name = d.name), typeof d.visible == "boolean" && !u("visible") && (l.visible = d.visible), typeof d.locked == "boolean" && !u("locked") && (l.locked = d.locked), typeof d.opacity == "number" && !u("opacity") && (l.opacity = d.opacity), typeof d.color == "string" && !u("color") && (l.color = d.color);
786
+ typeof f.name == "string" && f.name.trim() && !v("name") && (d.name = f.name), typeof f.visible == "boolean" && !v("visible") && (d.visible = f.visible), typeof f.locked == "boolean" && !v("locked") && (d.locked = f.locked), typeof f.opacity == "number" && !v("opacity") && (d.opacity = f.opacity), typeof f.color == "string" && !v("color") && (d.color = f.color);
787
787
  }
788
- c ? o.has(l.id) ? e.add(l.id) : s.has(l.id) ? e.delete(l.id) : e.add(l.id) : e.add(l.id);
789
- }
790
- if (Array.isArray(i == null ? void 0 : i.ordemCamadasIds) && i.ordemCamadasIds.length > 0) {
791
- const n = /* @__PURE__ */ new Map();
792
- i.ordemCamadasIds.forEach((l, d) => n.set(l, d)), a.sort((l, d) => {
793
- const p = n.has(l.id) ? n.get(l.id) : 9999, u = n.has(d.id) ? n.get(d.id) : 9999;
794
- return p - u;
788
+ n ? i.has(d.id) ? e.add(d.id) : s.has(d.id) ? e.delete(d.id) : e.add(d.id) : e.add(d.id);
789
+ }
790
+ const c = new Set(a.map((p) => p.id)), l = o == null ? void 0 : o.ordemOrigemIds;
791
+ if (!(Array.isArray(l) && (() => {
792
+ const p = new Set(l), d = (f) => f.filter((m) => c.has(m) && p.has(m)).join("|");
793
+ return d(l) !== d(a.map((f) => f.id));
794
+ })()) && Array.isArray(o == null ? void 0 : o.ordemCamadasIds) && o.ordemCamadasIds.length > 0) {
795
+ const p = /* @__PURE__ */ new Map();
796
+ o.ordemCamadasIds.forEach((d, f) => p.set(d, f)), a.sort((d, f) => {
797
+ const m = p.has(d.id) ? p.get(d.id) : 9999, v = p.has(f.id) ? p.get(f.id) : 9999;
798
+ return m - v;
795
799
  });
796
800
  }
797
801
  }
798
- function Oe(a) {
799
- const { estadoAnterior: i, camadas: e, expandedLayers: t } = a;
800
- let r = (i == null ? void 0 : i.expandedLayerIds) || [], o = (i == null ? void 0 : i.collapsedLayerIds) || [], s = (i == null ? void 0 : i.ordemCamadasIds) || [];
802
+ function Pe(a) {
803
+ const { estadoAnterior: o, camadas: e, expandedLayers: t } = a;
804
+ let r = (o == null ? void 0 : o.expandedLayerIds) || [], i = (o == null ? void 0 : o.collapsedLayerIds) || [], s = (o == null ? void 0 : o.ordemCamadasIds) || [], n = o == null ? void 0 : o.ordemOrigemIds;
801
805
  const c = {
802
- ...(i == null ? void 0 : i.camadasOverrides) || {}
806
+ ...(o == null ? void 0 : o.camadasOverrides) || {}
803
807
  };
804
- return e.length > 0 && (r = [], o = [], s = e.map((n) => n.id), e.forEach((n) => {
805
- var l, d;
806
- t.has(n.id) ? r.push(n.id) : o.push(n.id), c[n.id] = {
807
- name: n.name,
808
- visible: n.visible !== !1,
809
- locked: !!n.locked,
810
- opacity: typeof n.opacity == "number" ? n.opacity : 1,
811
- color: n.color || "#00E08A",
812
- origem: ((l = a.origensCamadas) == null ? void 0 : l.get(n.id)) ?? ((d = c[n.id]) == null ? void 0 : d.origem)
808
+ e.length > 0 && (r = [], i = [], s = e.map((l) => l.id), n = a.origensCamadas ? [...a.origensCamadas.keys()] : s, e.forEach((l) => {
809
+ var u, p;
810
+ t.has(l.id) ? r.push(l.id) : i.push(l.id), c[l.id] = {
811
+ name: l.name,
812
+ visible: l.visible !== !1,
813
+ locked: !!l.locked,
814
+ opacity: typeof l.opacity == "number" ? l.opacity : 1,
815
+ color: l.color || "#00E08A",
816
+ origem: ((u = a.origensCamadas) == null ? void 0 : u.get(l.id)) ?? ((p = c[l.id]) == null ? void 0 : p.origem)
813
817
  };
814
- })), {
818
+ }));
819
+ for (const l of a.camadasRemovidas ?? []) delete c[l];
820
+ return {
815
821
  versao: 1,
816
822
  expandedLayerIds: r,
817
- collapsedLayerIds: o,
823
+ collapsedLayerIds: i,
818
824
  camadaAtivaId: a.camadaAtivaId,
819
825
  painelColapsado: a.painelColapsado,
820
826
  ordemCamadasIds: s,
827
+ ordemOrigemIds: n,
821
828
  mapaBaseAtivo: a.mapaBaseAtivo,
822
829
  densidade: a.densidade,
823
830
  altura: a.altura,
@@ -825,280 +832,280 @@ function Oe(a) {
825
832
  ultimaAtualizacao: Date.now()
826
833
  };
827
834
  }
828
- const Pe = ':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 15px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 13px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:80px}.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(--ui-cor-primaria, #00E08A) 12%,transparent)!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(--ui-cor-primaria, #00E08A) 7%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{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(--ui-cor-texto-info, #33b5ff) 18%,transparent)!important;outline:1px solid color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 50%,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-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:14px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;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-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:18px;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:2.5px;background:var(--ui-cor-fundo, #0d0d10);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-active-badge{font-size:8px;font-weight:700;color:var(--ui-cor-texto-sobre-primaria, #000000);background:var(--ui-cor-primaria, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent);padding:1px 4px;border-radius:3px;display:inline-flex;align-items:center;gap:2px;white-space:nowrap;flex-shrink:0;animation:pulseBadge 2.8s infinite}@keyframes pulseBadge{0%{opacity:.85}50%{opacity:1;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 50%,transparent))}to{opacity:.85}}.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, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);padding:0 4px;border-radius:8px}.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(--ui-cor-texto-info, #33b5ff);background: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(--ui-cor-texto-info, #33b5ff);background:color-mix(in srgb,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-geom-tag{font-size:8px;font-weight:700;letter-spacing:.4px;padding:1px 4px;border-radius:3px;margin-left:4px;text-transform:uppercase;flex-shrink:0}.ui-geom-tag.oficial{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 16%,transparent);color:var(--ui-cor-texto-sucesso, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 35%,transparent)}.ui-geom-tag.previa{background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 16%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 35%,transparent)}.ui-tree-footer{height:28px;min-height:28px;background:var(--ui-cor-fundo-elevado, #111115);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 6px;gap:4px}.ui-footer-left{display:flex;align-items:center;gap:4px;white-space:nowrap;min-width:0}.ui-footer-count{font-size:10.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-primaria, #00E08A)}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899)}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap}.ui-footer-right{display:flex;align-items:center;gap:2px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.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-color-wrapper,.ui-footer-move-wrapper{display:flex;align-items:center}.ui-footer-color{width:15px;height:15px;border:none;background:transparent;cursor:pointer;padding:0}.ui-footer-select{background:var(--ui-cor-fundo, #18181d);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:3px;font-size:9.5px;height:20px;padding:0 2px;cursor:pointer}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';
829
- function je(a, i) {
830
- i.querySelectorAll("[data-layer-row]").forEach((r) => {
831
- r.addEventListener("click", (o) => {
832
- if (o.target.closest(
835
+ const Re = ':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 15px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 13px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:80px}.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(--ui-cor-primaria, #00E08A) 12%,transparent)!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(--ui-cor-primaria, #00E08A) 7%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{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(--ui-cor-texto-info, #33b5ff) 18%,transparent)!important;outline:1px solid color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 50%,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-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:14px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;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-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:18px;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:2.5px;background:var(--ui-cor-fundo, #0d0d10);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-active-badge{font-size:8px;font-weight:700;color:var(--ui-cor-texto-sobre-primaria, #000000);background:var(--ui-cor-primaria, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent);padding:1px 4px;border-radius:3px;display:inline-flex;align-items:center;gap:2px;white-space:nowrap;flex-shrink:0;animation:pulseBadge 2.8s infinite}@keyframes pulseBadge{0%{opacity:.85}50%{opacity:1;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 50%,transparent))}to{opacity:.85}}.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, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);padding:0 4px;border-radius:8px}.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(--ui-cor-texto-info, #33b5ff);background: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(--ui-cor-texto-info, #33b5ff);background:color-mix(in srgb,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-geom-tag{font-size:8px;font-weight:700;letter-spacing:.4px;padding:1px 4px;border-radius:3px;margin-left:4px;text-transform:uppercase;flex-shrink:0}.ui-geom-tag.oficial{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 16%,transparent);color:var(--ui-cor-texto-sucesso, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 35%,transparent)}.ui-geom-tag.previa{background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 16%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 35%,transparent)}.ui-tree-footer{height:28px;min-height:28px;background:var(--ui-cor-fundo-elevado, #111115);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 6px;gap:4px}.ui-footer-left{display:flex;align-items:center;gap:4px;white-space:nowrap;min-width:0}.ui-footer-count{font-size:10.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-primaria, #00E08A)}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899)}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap}.ui-footer-right{display:flex;align-items:center;gap:2px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.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-color-wrapper,.ui-footer-move-wrapper{display:flex;align-items:center}.ui-footer-color{width:15px;height:15px;border:none;background:transparent;cursor:pointer;padding:0}.ui-footer-select{background:var(--ui-cor-fundo, #18181d);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:3px;font-size:9.5px;height:20px;padding:0 2px;cursor:pointer}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';
836
+ function je(a, o) {
837
+ o.querySelectorAll("[data-layer-row]").forEach((r) => {
838
+ r.addEventListener("click", (i) => {
839
+ if (i.target.closest(
833
840
  "[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], input, button"
834
841
  ))
835
842
  return;
836
- const c = r.getAttribute("data-layer-row");
837
- c && a.definirCamadaAtiva(c, !0);
843
+ const n = r.getAttribute("data-layer-row");
844
+ n && a.definirCamadaAtiva(n, !0);
838
845
  });
839
- }), i.querySelectorAll("[data-layer-expand]").forEach((r) => {
840
- r.addEventListener("click", (o) => {
841
- o.stopPropagation();
846
+ }), o.querySelectorAll("[data-layer-expand]").forEach((r) => {
847
+ r.addEventListener("click", (i) => {
848
+ i.stopPropagation();
842
849
  const s = r.getAttribute("data-layer-expand");
843
850
  if (!s) return;
844
851
  a.expandedLayers.has(s) ? a.expandedLayers.delete(s) : a.expandedLayers.add(s);
845
- const c = r.closest(".ui-layer-group"), n = r.querySelector(".ui-chevron-icon"), l = a.expandedLayers.has(s);
846
- if (n && n.classList.toggle("open", l), c) {
847
- const d = c.querySelector(".ui-children-container");
848
- d && (d.style.display = l ? "block" : "none");
852
+ const n = r.closest(".ui-layer-group"), c = r.querySelector(".ui-chevron-icon"), l = a.expandedLayers.has(s);
853
+ if (c && c.classList.toggle("open", l), n) {
854
+ const u = n.querySelector(".ui-children-container");
855
+ u && (u.style.display = l ? "block" : "none");
849
856
  }
850
857
  a.salvarLembrancaEstado();
851
858
  });
852
- }), i.querySelectorAll("[data-layer-eye]").forEach((r) => {
853
- r.addEventListener("click", (o) => {
854
- o.stopPropagation();
855
- const s = r.getAttribute("data-layer-eye"), c = a.camadas.find((n) => n.id === s);
856
- if (c) {
857
- c.visible = c.visible === !1;
858
- const n = c.visible !== !1;
859
- r.innerHTML = n ? m.olhoAberto : m.olhoFechado, $(r, n ? "Ocultar Camada" : "Exibir Camada");
859
+ }), o.querySelectorAll("[data-layer-eye]").forEach((r) => {
860
+ r.addEventListener("click", (i) => {
861
+ i.stopPropagation();
862
+ const s = r.getAttribute("data-layer-eye"), n = a.camadas.find((c) => c.id === s);
863
+ if (n) {
864
+ n.visible = n.visible === !1;
865
+ const c = n.visible !== !1;
866
+ r.innerHTML = c ? h.olhoAberto : h.olhoFechado, $(r, c ? "Ocultar Camada" : "Exibir Camada");
860
867
  const l = r.closest(".ui-layer-row");
861
- l && l.classList.toggle("hidden-layer", !n), Re(a, i), a.salvarLembrancaEstado(), a.dispararEvento("ui-camada-visibilidade", {
862
- camadaId: c.id,
863
- visivel: n
868
+ l && l.classList.toggle("hidden-layer", !c), Ne(a, o), a.salvarLembrancaEstado(), a.dispararEvento("ui-camada-visibilidade", {
869
+ camadaId: n.id,
870
+ visivel: c
864
871
  });
865
872
  }
866
873
  });
867
- }), i.querySelectorAll("[data-layer-lock]").forEach((r) => {
868
- r.addEventListener("click", (o) => {
869
- o.stopPropagation();
870
- const s = r.getAttribute("data-layer-lock"), c = a.camadas.find((n) => n.id === s);
871
- c && (c.locked = !c.locked, r.innerHTML = c.locked ? m.cadeadoTrancado : m.cadeadoAberto, r.classList.toggle("ui-lock-open", !c.locked), $(r, c.locked ? "Desbloquear Camada" : "Bloquear Camada"), Ne(a, i, c.id, c.locked === !0), a.salvarLembrancaEstado(), a.dispararEvento("ui-camada-bloqueio", {
872
- camadaId: c.id,
873
- bloqueado: c.locked
874
+ }), o.querySelectorAll("[data-layer-lock]").forEach((r) => {
875
+ r.addEventListener("click", (i) => {
876
+ i.stopPropagation();
877
+ const s = r.getAttribute("data-layer-lock"), n = a.camadas.find((c) => c.id === s);
878
+ n && (n.locked = !n.locked, r.innerHTML = n.locked ? h.cadeadoTrancado : h.cadeadoAberto, r.classList.toggle("ui-lock-open", !n.locked), $(r, n.locked ? "Desbloquear Camada" : "Bloquear Camada"), He(a, o, n.id, n.locked === !0), a.salvarLembrancaEstado(), a.dispararEvento("ui-camada-bloqueio", {
879
+ camadaId: n.id,
880
+ bloqueado: n.locked
874
881
  }));
875
882
  });
876
- }), i.querySelectorAll("[data-layer-fit]").forEach((r) => {
877
- r.addEventListener("click", (o) => {
878
- o.stopPropagation();
883
+ }), o.querySelectorAll("[data-layer-fit]").forEach((r) => {
884
+ r.addEventListener("click", (i) => {
885
+ i.stopPropagation();
879
886
  const s = r.getAttribute("data-layer-fit");
880
887
  s && a.dispararEvento("ui-camada-enquadrar", { camadaId: s });
881
888
  });
882
- }), i.querySelectorAll("[data-layer-settings]").forEach((r) => {
883
- r.addEventListener("click", (o) => {
884
- o.stopPropagation();
889
+ }), o.querySelectorAll("[data-layer-settings]").forEach((r) => {
890
+ r.addEventListener("click", (i) => {
891
+ i.stopPropagation();
885
892
  const s = r.getAttribute("data-layer-settings");
886
893
  a.activeSettingsLayerId = a.activeSettingsLayerId === s ? null : s, a.solicitarRenderizacao();
887
894
  });
888
- }), i.querySelectorAll("[data-layer-settings-close]").forEach((r) => {
889
- r.addEventListener("click", (o) => {
890
- o.stopPropagation(), a.activeSettingsLayerId = null, a.solicitarRenderizacao();
895
+ }), o.querySelectorAll("[data-layer-settings-close]").forEach((r) => {
896
+ r.addEventListener("click", (i) => {
897
+ i.stopPropagation(), a.activeSettingsLayerId = null, a.solicitarRenderizacao();
891
898
  });
892
899
  });
893
- const e = (r, o, s) => {
894
- const c = a.camadas.find((f) => f.id === r);
895
- if (!c) return;
896
- const n = D(o, c.color || "#00E08A");
897
- c.color = n;
898
- const l = i.getElementById(`sample-color-${r}`);
899
- l && (l.style.backgroundColor = n);
900
- const d = i.getElementById(`hex-color-${r}`);
901
- d && (d.textContent = n.toUpperCase());
902
- const p = i.getElementById(`settings-drawer-${r}`);
903
- p && p.style.setProperty("--drawer-cor-camada", n);
904
- const u = S(i, "data-layer-row", r);
905
- if (u) {
906
- u.style.setProperty("--layer-active-color", n);
907
- const f = u.querySelector(".ui-col-colorbar");
908
- f && (f.style.backgroundColor = n);
900
+ const e = (r, i, s) => {
901
+ const n = a.camadas.find((f) => f.id === r);
902
+ if (!n) return;
903
+ const c = P(i, n.color || "#00E08A");
904
+ n.color = c;
905
+ const l = o.getElementById(`sample-color-${r}`);
906
+ l && (l.style.backgroundColor = c);
907
+ const u = o.getElementById(`hex-color-${r}`);
908
+ u && (u.textContent = c.toUpperCase());
909
+ const p = o.getElementById(`settings-drawer-${r}`);
910
+ p && p.style.setProperty("--drawer-cor-camada", c);
911
+ const d = S(o, "data-layer-row", r);
912
+ if (d) {
913
+ d.style.setProperty("--layer-active-color", c);
914
+ const f = d.querySelector(".ui-col-colorbar");
915
+ f && (f.style.backgroundColor = c);
909
916
  }
910
- s ? a.salvarLembrancaEstado() : a.agendarSalvarLembranca(), a.dispararEvento("ui-camada-cor", { camadaId: c.id, cor: n });
917
+ s ? a.salvarLembrancaEstado() : a.agendarSalvarLembranca(), a.dispararEvento("ui-camada-cor", { camadaId: n.id, cor: c });
911
918
  };
912
- i.querySelectorAll("[data-layer-color-picker]").forEach((r) => {
913
- const o = r, s = (c) => (n) => {
914
- const l = o.getAttribute("data-layer-color-picker");
919
+ o.querySelectorAll("[data-layer-color-picker]").forEach((r) => {
920
+ const i = r, s = (n) => (c) => {
921
+ const l = i.getAttribute("data-layer-color-picker");
915
922
  if (!l) return;
916
- const d = n.target.value;
917
- e(l, d, c);
923
+ const u = c.target.value;
924
+ e(l, u, n);
918
925
  };
919
- o.addEventListener("input", s(!1)), o.addEventListener("change", s(!0));
926
+ i.addEventListener("input", s(!1)), i.addEventListener("change", s(!0));
920
927
  });
921
- const t = (r, o) => {
928
+ const t = (r, i) => {
922
929
  const s = a.camadas.find((l) => l.id === r);
923
930
  if (!s) return;
924
- s.opacity = o;
925
- const c = i.getElementById(`badge-op-${r}`);
926
- c && (c.textContent = `${Math.round(o * 100)}%`);
927
- const n = S(i, "data-layer-opacity-slider", r);
928
- n && parseFloat(n.value) !== o && (n.value = String(o)), a.agendarSalvarLembranca(), a.dispararEvento("ui-camada-opacidade", { camadaId: s.id, opacidade: o });
931
+ s.opacity = i;
932
+ const n = o.getElementById(`badge-op-${r}`);
933
+ n && (n.textContent = `${Math.round(i * 100)}%`);
934
+ const c = S(o, "data-layer-opacity-slider", r);
935
+ c && parseFloat(c.value) !== i && (c.value = String(i)), a.agendarSalvarLembranca(), a.dispararEvento("ui-camada-opacidade", { camadaId: s.id, opacidade: i });
929
936
  };
930
- i.querySelectorAll("[data-layer-opacity-slider]").forEach((r) => {
931
- r.addEventListener("input", (o) => {
937
+ o.querySelectorAll("[data-layer-opacity-slider]").forEach((r) => {
938
+ r.addEventListener("input", (i) => {
932
939
  const s = r.getAttribute("data-layer-opacity-slider");
933
940
  if (!s) return;
934
- const c = parseFloat(o.target.value);
935
- t(s, c);
941
+ const n = parseFloat(i.target.value);
942
+ t(s, n);
936
943
  });
937
- }), i.querySelectorAll("[data-delete-layer]").forEach((r) => {
938
- let o = null;
944
+ }), o.querySelectorAll("[data-delete-layer]").forEach((r) => {
945
+ let i = null;
939
946
  r.addEventListener("click", (s) => {
940
947
  s.stopPropagation();
941
- const c = r.getAttribute("data-delete-layer");
942
- if (!c) return;
948
+ const n = r.getAttribute("data-delete-layer");
949
+ if (!n) return;
943
950
  if (r.classList.contains("confirming")) {
944
- o && clearTimeout(o), a.dispararEvento("ui-camada-excluida", { camadaId: c });
951
+ i && clearTimeout(i), a.dispararEvento("ui-camada-excluida", { camadaId: n });
945
952
  const l = a.selectedFeatureIds.size;
946
- a.removerCamada(c), a.selectedFeatureIds.size !== l && a.notificarMudancaSelecao();
953
+ a.removerCamada(n), a.selectedFeatureIds.size !== l && a.notificarMudancaSelecao();
947
954
  } else {
948
955
  r.classList.add("confirming");
949
956
  const l = r.querySelector(".ui-btn-label");
950
- l && (l.textContent = "Confirmar Exclusão?"), o = setTimeout(() => {
957
+ l && (l.textContent = "Confirmar Exclusão?"), i = setTimeout(() => {
951
958
  r.classList.remove("confirming"), l && (l.textContent = "Excluir Camada");
952
959
  }, 3500);
953
960
  }
954
961
  });
955
- }), i.querySelectorAll("[data-layer-target]").forEach((r) => {
956
- r.addEventListener("click", (o) => {
957
- o.stopPropagation();
958
- const s = o, c = r.getAttribute("data-layer-target"), n = K(
959
- a.feicoes.filter((d) => d.layerId === c),
962
+ }), o.querySelectorAll("[data-layer-target]").forEach((r) => {
963
+ r.addEventListener("click", (i) => {
964
+ i.stopPropagation();
965
+ const s = i, n = r.getAttribute("data-layer-target"), c = Y(
966
+ a.feicoes.filter((u) => u.layerId === n),
960
967
  a.searchQuery
961
968
  );
962
- if (n.length === 0) return;
963
- n.every((d) => a.selectedFeatureIds.has(d.id)) ? n.forEach((d) => a.selectedFeatureIds.delete(d.id)) : (!s.ctrlKey && !s.metaKey && a.selectedFeatureIds.clear(), n.forEach((d) => a.selectedFeatureIds.add(d.id))), a.lastClickedFeatureId = n[n.length - 1].id, a.sincronizarSelecaoDOM(), a.notificarMudancaSelecao();
969
+ if (c.length === 0) return;
970
+ c.every((u) => a.selectedFeatureIds.has(u.id)) ? c.forEach((u) => a.selectedFeatureIds.delete(u.id)) : (!s.ctrlKey && !s.metaKey && a.selectedFeatureIds.clear(), c.forEach((u) => a.selectedFeatureIds.add(u.id))), a.lastClickedFeatureId = c[c.length - 1].id, a.sincronizarSelecaoDOM(), a.notificarMudancaSelecao();
964
971
  });
965
972
  });
966
973
  }
967
- function Re(a, i) {
968
- const e = i.getElementById("btn-toggle-all-vis");
974
+ function Ne(a, o) {
975
+ const e = o.getElementById("btn-toggle-all-vis");
969
976
  if (!e) return;
970
977
  const t = a.camadas.every((r) => r.visible !== !1);
971
- e.innerHTML = t ? m.olhoAberto : m.olhoFechado, $(e, t ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
978
+ e.innerHTML = t ? h.olhoAberto : h.olhoFechado, $(e, t ? "Ocultar Todas as Camadas" : "Exibir Todas as Camadas");
972
979
  }
973
- function Ne(a, i, e, t) {
980
+ function He(a, o, e, t) {
974
981
  a.feicoes.filter((r) => r.layerId === e).forEach((r) => {
975
- const o = S(i, "data-feat-lock", r.id);
976
- if (!o) return;
982
+ const i = S(o, "data-feat-lock", r.id);
983
+ if (!i) return;
977
984
  const s = r.locked === !0 || t;
978
- o.innerHTML = s ? m.cadeadoTrancado : m.cadeadoAberto, o.classList.toggle("ui-lock-open", !s), t ? o.setAttribute("data-locked-by-layer", "true") : o.removeAttribute("data-locked-by-layer"), $(
979
- o,
985
+ i.innerHTML = s ? h.cadeadoTrancado : h.cadeadoAberto, i.classList.toggle("ui-lock-open", !s), t ? i.setAttribute("data-locked-by-layer", "true") : i.removeAttribute("data-locked-by-layer"), $(
986
+ i,
980
987
  t ? "Bloqueada pela camada" : s ? "Desbloquear Feição" : "Bloquear Feição"
981
988
  );
982
989
  });
983
990
  }
984
- function He(a, i) {
985
- const e = i.getElementById("btn-footer-vis");
991
+ function Ve(a, o) {
992
+ const e = o.getElementById("btn-footer-vis");
986
993
  e && e.addEventListener("click", () => {
987
- const l = a.feicoes.filter((u) => a.selectedFeatureIds.has(u.id));
994
+ const l = a.feicoes.filter((d) => a.selectedFeatureIds.has(d.id));
988
995
  if (l.length === 0) return;
989
- const p = !l.some((u) => u.visible !== !1);
990
- l.forEach((u) => u.visible = p), a.dispararEvento("ui-acao-massa", {
996
+ const p = !l.some((d) => d.visible !== !1);
997
+ l.forEach((d) => d.visible = p), a.dispararEvento("ui-acao-massa", {
991
998
  acao: "visibilidade",
992
- feicoesIds: l.map((u) => u.id),
999
+ feicoesIds: l.map((d) => d.id),
993
1000
  feicoes: l,
994
1001
  valor: p
995
1002
  }), a.solicitarRenderizacao();
996
1003
  });
997
- const t = i.getElementById("btn-footer-lock");
1004
+ const t = o.getElementById("btn-footer-lock");
998
1005
  t && t.addEventListener("click", () => {
999
- const l = a.feicoes.filter((u) => a.selectedFeatureIds.has(u.id));
1006
+ const l = a.feicoes.filter((d) => a.selectedFeatureIds.has(d.id));
1000
1007
  if (l.length === 0) return;
1001
- const p = !l.some((u) => u.locked === !0);
1002
- l.forEach((u) => u.locked = p), a.dispararEvento("ui-acao-massa", {
1008
+ const p = !l.some((d) => d.locked === !0);
1009
+ l.forEach((d) => d.locked = p), a.dispararEvento("ui-acao-massa", {
1003
1010
  acao: "bloqueio",
1004
- feicoesIds: l.map((u) => u.id),
1011
+ feicoesIds: l.map((d) => d.id),
1005
1012
  feicoes: l,
1006
1013
  valor: p
1007
1014
  }), a.solicitarRenderizacao();
1008
1015
  });
1009
- const r = i.getElementById("input-footer-color");
1016
+ const r = o.getElementById("input-footer-color");
1010
1017
  r && r.addEventListener("change", (l) => {
1011
- const d = l.target.value, p = a.feicoes.filter((u) => a.selectedFeatureIds.has(u.id));
1012
- p.length !== 0 && (p.forEach((u) => {
1013
- u.color = d, u.style = { ...u.style || {}, fillColor: d, strokeColor: d };
1018
+ const u = l.target.value, p = a.feicoes.filter((d) => a.selectedFeatureIds.has(d.id));
1019
+ p.length !== 0 && (p.forEach((d) => {
1020
+ d.color = u, d.style = { ...d.style || {}, fillColor: u, strokeColor: u };
1014
1021
  }), a.dispararEvento("ui-acao-massa", {
1015
1022
  acao: "cor",
1016
- feicoesIds: p.map((u) => u.id),
1023
+ feicoesIds: p.map((d) => d.id),
1017
1024
  feicoes: p,
1018
- valor: d
1025
+ valor: u
1019
1026
  }), a.solicitarRenderizacao());
1020
1027
  });
1021
- const o = i.getElementById("select-footer-move");
1022
- o && o.addEventListener("change", (l) => {
1023
- const d = l.target.value;
1024
- if (!d) return;
1028
+ const i = o.getElementById("select-footer-move");
1029
+ i && i.addEventListener("change", (l) => {
1030
+ const u = l.target.value;
1031
+ if (!u) return;
1025
1032
  const p = a.feicoes.filter((f) => a.selectedFeatureIds.has(f.id));
1026
1033
  if (p.length === 0) return;
1027
- const u = new Map(p.map((f) => [f.id, f.layerId]));
1028
- p.forEach((f) => f.layerId = d), p.forEach((f) => {
1029
- u.get(f.id) !== d && a.dispararEvento("ui-feicao-movida", {
1034
+ const d = new Map(p.map((f) => [f.id, f.layerId]));
1035
+ p.forEach((f) => f.layerId = u), p.forEach((f) => {
1036
+ d.get(f.id) !== u && a.dispararEvento("ui-feicao-movida", {
1030
1037
  feicaoId: f.id,
1031
- camadaOrigemId: u.get(f.id),
1032
- camadaDestinoId: d,
1038
+ camadaOrigemId: d.get(f.id),
1039
+ camadaDestinoId: u,
1033
1040
  feicao: f
1034
1041
  });
1035
1042
  }), a.dispararEvento("ui-acao-massa", {
1036
1043
  acao: "mover",
1037
1044
  feicoesIds: p.map((f) => f.id),
1038
1045
  feicoes: p,
1039
- valor: d
1046
+ valor: u
1040
1047
  }), a.solicitarRenderizacao();
1041
1048
  });
1042
- const s = i.getElementById("btn-footer-new-layer");
1049
+ const s = o.getElementById("btn-footer-new-layer");
1043
1050
  s && s.addEventListener("click", () => {
1044
1051
  a.dispararEvento("ui-camada-adicionar", {});
1045
1052
  });
1046
- const c = i.getElementById("btn-footer-del");
1047
- if (c) {
1053
+ const n = o.getElementById("btn-footer-del");
1054
+ if (n) {
1048
1055
  let l = null;
1049
- const d = "Excluir selecionados";
1050
- c.addEventListener("click", () => {
1056
+ const u = "Excluir selecionados";
1057
+ n.addEventListener("click", () => {
1051
1058
  const p = Array.from(a.selectedFeatureIds);
1052
1059
  if (p.length === 0) return;
1053
- if (!c.classList.contains("confirming")) {
1054
- c.classList.add("confirming"), $(c, `Clique novamente para excluir ${p.length} selecionado(s)`), l = setTimeout(() => {
1055
- c.classList.remove("confirming"), $(c, d);
1060
+ if (!n.classList.contains("confirming")) {
1061
+ n.classList.add("confirming"), $(n, `Clique novamente para excluir ${p.length} selecionado(s)`), l = setTimeout(() => {
1062
+ n.classList.remove("confirming"), $(n, u);
1056
1063
  }, 3500);
1057
1064
  return;
1058
1065
  }
1059
1066
  l && clearTimeout(l);
1060
- const u = a.feicoes.filter((f) => a.selectedFeatureIds.has(f.id));
1067
+ const d = a.feicoes.filter((f) => a.selectedFeatureIds.has(f.id));
1061
1068
  a.feicoes = a.feicoes.filter((f) => !a.selectedFeatureIds.has(f.id)), a.selectedFeatureIds.clear(), a.lastClickedFeatureId = null, a.dispararEvento("ui-acao-massa", {
1062
1069
  acao: "excluir",
1063
1070
  feicoesIds: p,
1064
- feicoes: u
1071
+ feicoes: d
1065
1072
  }), a.notificarMudancaSelecao(), a.solicitarRenderizacao();
1066
1073
  });
1067
1074
  }
1068
- const n = i.getElementById("btn-footer-clear");
1069
- n && n.addEventListener("click", () => a.limparSelecao(!0));
1075
+ const c = o.getElementById("btn-footer-clear");
1076
+ c && c.addEventListener("click", () => a.limparSelecao(!0));
1070
1077
  }
1071
- function Ue(a, i) {
1072
- const e = i.getElementById("btn-toggle-all-vis");
1078
+ function Ue(a, o) {
1079
+ const e = o.getElementById("btn-toggle-all-vis");
1073
1080
  e && e.addEventListener("click", () => a.alternarVisibilidadeTodas(!0));
1074
- const t = i.getElementById("btn-toggle-all-expand");
1081
+ const t = o.getElementById("btn-toggle-all-expand");
1075
1082
  t && t.addEventListener("click", (s) => {
1076
- s.stopPropagation(), a.camadas.length > 0 && a.camadas.every((n) => a.expandedLayers.has(n.id)) ? a.colapsarTodas() : a.expandirTodas();
1083
+ s.stopPropagation(), a.camadas.length > 0 && a.camadas.every((c) => a.expandedLayers.has(c.id)) ? a.colapsarTodas() : a.expandirTodas();
1077
1084
  });
1078
- const r = i.getElementById("btn-add-layer");
1085
+ const r = o.getElementById("btn-add-layer");
1079
1086
  r && r.addEventListener("click", () => {
1080
1087
  a.dispararEvento("ui-camada-adicionar", {});
1081
1088
  });
1082
- const o = i.getElementById("btn-colapsar");
1083
- o && o.addEventListener("click", () => a.colapsar(!0)), Ve(a, i);
1089
+ const i = o.getElementById("btn-colapsar");
1090
+ i && i.addEventListener("click", () => a.colapsar(!0)), _e(a, o);
1084
1091
  }
1085
- function Ve(a, i) {
1086
- const e = i.getElementById("input-layer-search"), t = i.getElementById("btn-clear-layer-search"), r = () => {
1087
- var o;
1088
- a.searchQuery = "", a.solicitarRenderizacao(), (o = i.getElementById("input-layer-search")) == null || o.focus();
1092
+ function _e(a, o) {
1093
+ const e = o.getElementById("input-layer-search"), t = o.getElementById("btn-clear-layer-search"), r = () => {
1094
+ var i;
1095
+ a.searchQuery = "", a.solicitarRenderizacao(), (i = o.getElementById("input-layer-search")) == null || i.focus();
1089
1096
  };
1090
1097
  if (e) {
1091
- const o = oe(() => a.solicitarRenderizacao(), 75);
1098
+ const i = se(() => a.solicitarRenderizacao(), 75);
1092
1099
  e.addEventListener("input", (s) => {
1093
- a.searchQuery = s.target.value, o();
1100
+ a.searchQuery = s.target.value, i();
1094
1101
  }), e.addEventListener("keydown", (s) => {
1095
1102
  s.key === "Escape" && a.searchQuery && (s.preventDefault(), r());
1096
1103
  });
1097
1104
  }
1098
1105
  t && t.addEventListener("click", r);
1099
1106
  }
1100
- function _e(a, i) {
1101
- i.querySelectorAll("[data-feat-select]").forEach((e) => {
1107
+ function Ge(a, o) {
1108
+ o.querySelectorAll("[data-feat-select]").forEach((e) => {
1102
1109
  e.addEventListener("click", (t) => {
1103
1110
  if (a.editingFeatureId) return;
1104
1111
  const r = t;
@@ -1109,37 +1116,37 @@ function _e(a, i) {
1109
1116
  const s = e.getAttribute("data-feat-select");
1110
1117
  s && a.selecionarFeicao(s, r.ctrlKey || r.metaKey, r.shiftKey, !0);
1111
1118
  });
1112
- }), i.querySelectorAll("[data-feat-target]").forEach((e) => {
1119
+ }), o.querySelectorAll("[data-feat-target]").forEach((e) => {
1113
1120
  e.addEventListener("click", (t) => {
1114
1121
  t.stopPropagation();
1115
- const r = t, o = e.getAttribute("data-feat-target");
1116
- o && a.selecionarFeicao(o, r.ctrlKey || r.metaKey, r.shiftKey, !0);
1122
+ const r = t, i = e.getAttribute("data-feat-target");
1123
+ i && a.selecionarFeicao(i, r.ctrlKey || r.metaKey, r.shiftKey, !0);
1117
1124
  });
1118
- }), i.querySelectorAll("[data-feat-eye]").forEach((e) => {
1125
+ }), o.querySelectorAll("[data-feat-eye]").forEach((e) => {
1119
1126
  e.addEventListener("click", (t) => {
1120
1127
  t.stopPropagation();
1121
- const r = e.getAttribute("data-feat-eye"), o = a.feicoes.find((s) => s.id === r);
1122
- if (o) {
1123
- o.visible = o.visible === !1;
1124
- const s = o.visible !== !1;
1125
- e.innerHTML = s ? m.olhoAberto : m.olhoFechado, $(e, s ? "Ocultar Feição" : "Exibir Feição");
1126
- const c = e.closest(".ui-feat-row");
1127
- c && c.classList.toggle("hidden-row", !s), a.dispararEvento("ui-feicao-visibilidade", {
1128
- feicaoId: o.id,
1128
+ const r = e.getAttribute("data-feat-eye"), i = a.feicoes.find((s) => s.id === r);
1129
+ if (i) {
1130
+ i.visible = i.visible === !1;
1131
+ const s = i.visible !== !1;
1132
+ e.innerHTML = s ? h.olhoAberto : h.olhoFechado, $(e, s ? "Ocultar Feição" : "Exibir Feição");
1133
+ const n = e.closest(".ui-feat-row");
1134
+ n && n.classList.toggle("hidden-row", !s), a.dispararEvento("ui-feicao-visibilidade", {
1135
+ feicaoId: i.id,
1129
1136
  visivel: s
1130
1137
  });
1131
1138
  }
1132
1139
  });
1133
- }), i.querySelectorAll("[data-feat-lock]").forEach((e) => {
1140
+ }), o.querySelectorAll("[data-feat-lock]").forEach((e) => {
1134
1141
  e.addEventListener("click", (t) => {
1135
1142
  if (t.stopPropagation(), e.hasAttribute("data-locked-by-layer")) return;
1136
- const r = e.getAttribute("data-feat-lock"), o = a.feicoes.find((s) => s.id === r);
1137
- o && (o.locked = !o.locked, e.innerHTML = o.locked ? m.cadeadoTrancado : m.cadeadoAberto, e.classList.toggle("ui-lock-open", !o.locked), $(e, o.locked ? "Desbloquear Feição" : "Bloquear Feição"), a.dispararEvento("ui-feicao-bloqueio", {
1138
- feicaoId: o.id,
1139
- bloqueado: o.locked
1143
+ const r = e.getAttribute("data-feat-lock"), i = a.feicoes.find((s) => s.id === r);
1144
+ i && (i.locked = !i.locked, e.innerHTML = i.locked ? h.cadeadoTrancado : h.cadeadoAberto, e.classList.toggle("ui-lock-open", !i.locked), $(e, i.locked ? "Desbloquear Feição" : "Bloquear Feição"), a.dispararEvento("ui-feicao-bloqueio", {
1145
+ feicaoId: i.id,
1146
+ bloqueado: i.locked
1140
1147
  }));
1141
1148
  });
1142
- }), i.querySelectorAll("[data-feat-fit]").forEach((e) => {
1149
+ }), o.querySelectorAll("[data-feat-fit]").forEach((e) => {
1143
1150
  e.addEventListener("click", (t) => {
1144
1151
  t.stopPropagation();
1145
1152
  const r = e.getAttribute("data-feat-fit");
@@ -1147,162 +1154,162 @@ function _e(a, i) {
1147
1154
  });
1148
1155
  });
1149
1156
  }
1150
- function Ge(a, i) {
1151
- i.querySelectorAll("[data-basemap-thumb]").forEach((e) => {
1157
+ function Ke(a, o) {
1158
+ o.querySelectorAll("[data-basemap-thumb]").forEach((e) => {
1152
1159
  e.addEventListener(
1153
1160
  "error",
1154
1161
  () => {
1155
1162
  const t = document.createElement("div");
1156
- t.className = "ui-basemap-preview-none", t.innerHTML = m.mapa, e.replaceWith(t);
1163
+ t.className = "ui-basemap-preview-none", t.innerHTML = h.mapa, e.replaceWith(t);
1157
1164
  },
1158
1165
  { once: !0 }
1159
1166
  );
1160
- }), i.querySelectorAll("[data-basemap-id]").forEach((e) => {
1167
+ }), o.querySelectorAll("[data-basemap-id]").forEach((e) => {
1161
1168
  e.addEventListener("click", () => {
1162
1169
  const t = e.getAttribute("data-basemap-id");
1163
1170
  t && a.selecionarMapaBase(t, !0);
1164
1171
  });
1165
1172
  });
1166
1173
  }
1167
- function Ke(a, i) {
1168
- Ue(a, i), je(a, i), _e(a, i), Ge(a, i), He(a, i);
1174
+ function Qe(a, o) {
1175
+ Ue(a, o), je(a, o), Ge(a, o), Ke(a, o), Ve(a, o);
1169
1176
  }
1170
- const Qe = '[role="button"][tabindex]', z = "[data-layer-row], [data-feat-row]", Ye = ["color", "range", "checkbox", "radio", "button"];
1171
- function le(a) {
1172
- return a instanceof HTMLSelectElement || a instanceof HTMLTextAreaElement ? !0 : a instanceof HTMLInputElement && !Ye.includes(a.type);
1177
+ const Ye = '[role="button"][tabindex]', F = "[data-layer-row], [data-feat-row]", Je = ["color", "range", "checkbox", "radio", "button"];
1178
+ function ce(a) {
1179
+ return a instanceof HTMLSelectElement || a instanceof HTMLTextAreaElement ? !0 : a instanceof HTMLInputElement && !Je.includes(a.type);
1173
1180
  }
1174
- function Je(a) {
1175
- return Array.from(a.querySelectorAll(z)).filter((i) => {
1176
- const e = i.closest(".ui-children-container");
1177
- return !(e && e.style.display === "none") && !i.classList.contains("ui-search-hidden");
1181
+ function We(a) {
1182
+ return Array.from(a.querySelectorAll(F)).filter((o) => {
1183
+ const e = o.closest(".ui-children-container");
1184
+ return !(e && e.style.display === "none") && !o.classList.contains("ui-search-hidden");
1178
1185
  });
1179
1186
  }
1180
- function T(a, i) {
1181
- i && (a.querySelectorAll(z).forEach((e) => e.setAttribute("tabindex", "-1")), i.setAttribute("tabindex", "0"), i.focus());
1187
+ function O(a, o) {
1188
+ o && (a.querySelectorAll(F).forEach((e) => e.setAttribute("tabindex", "-1")), o.setAttribute("tabindex", "0"), o.focus());
1182
1189
  }
1183
- function We(a, i) {
1190
+ function Xe(a, o) {
1184
1191
  a.dispatchEvent(
1185
1192
  new MouseEvent("click", {
1186
1193
  bubbles: !0,
1187
- ctrlKey: i.ctrlKey || i.metaKey,
1188
- shiftKey: i.shiftKey
1194
+ ctrlKey: o.ctrlKey || o.metaKey,
1195
+ shiftKey: o.shiftKey
1189
1196
  })
1190
1197
  );
1191
1198
  }
1192
- function Xe(a, i, e) {
1199
+ function Ze(a, o, e) {
1193
1200
  var t;
1194
- if (!le(e.composedPath()[0])) {
1201
+ if (!ce(e.composedPath()[0])) {
1195
1202
  if (a.activeSettingsLayerId) {
1196
1203
  e.preventDefault();
1197
1204
  const r = a.activeSettingsLayerId;
1198
- a.activeSettingsLayerId = null, a.solicitarRenderizacao(), (t = S(i, "data-layer-settings", r)) == null || t.focus();
1205
+ a.activeSettingsLayerId = null, a.solicitarRenderizacao(), (t = S(o, "data-layer-settings", r)) == null || t.focus();
1199
1206
  return;
1200
1207
  }
1201
1208
  a.selectedFeatureIds.size > 0 && (e.preventDefault(), a.limparSelecao(!0));
1202
1209
  }
1203
1210
  }
1204
- function Ze(a, i, e) {
1211
+ function ea(a, o, e) {
1205
1212
  var s;
1206
1213
  const t = e.composedPath()[0];
1207
- if (!(t instanceof HTMLElement) || le(t)) return;
1208
- if ((e.key === "Enter" || e.key === " ") && t.matches(Qe)) {
1214
+ if (!(t instanceof HTMLElement) || ce(t)) return;
1215
+ if ((e.key === "Enter" || e.key === " ") && t.matches(Ye)) {
1209
1216
  e.preventDefault(), t.click();
1210
1217
  return;
1211
1218
  }
1212
- if (!t.matches(z)) return;
1213
- const r = Je(a), o = r.indexOf(t);
1219
+ if (!t.matches(F)) return;
1220
+ const r = We(a), i = r.indexOf(t);
1214
1221
  switch (e.key) {
1215
1222
  case "ArrowDown":
1216
- e.preventDefault(), T(a, r[Math.min(r.length - 1, o + 1)]);
1223
+ e.preventDefault(), O(a, r[Math.min(r.length - 1, i + 1)]);
1217
1224
  break;
1218
1225
  case "ArrowUp":
1219
- e.preventDefault(), T(a, r[Math.max(0, o - 1)]);
1226
+ e.preventDefault(), O(a, r[Math.max(0, i - 1)]);
1220
1227
  break;
1221
1228
  case "Home":
1222
- e.preventDefault(), T(a, r[0]);
1229
+ e.preventDefault(), O(a, r[0]);
1223
1230
  break;
1224
1231
  case "End":
1225
- e.preventDefault(), T(a, r[r.length - 1]);
1232
+ e.preventDefault(), O(a, r[r.length - 1]);
1226
1233
  break;
1227
1234
  case "ArrowRight":
1228
1235
  case "ArrowLeft": {
1229
- const c = t.getAttribute("data-layer-row");
1230
- if (!c) return;
1231
- const n = t.closest(".ui-layer-group"), l = (n == null ? void 0 : n.getAttribute("aria-expanded")) === "true";
1232
- e.key === "ArrowRight" !== l && (e.preventDefault(), (s = S(i, "data-layer-expand", c)) == null || s.click());
1236
+ const n = t.getAttribute("data-layer-row");
1237
+ if (!n) return;
1238
+ const c = t.closest(".ui-layer-group"), l = (c == null ? void 0 : c.getAttribute("aria-expanded")) === "true";
1239
+ e.key === "ArrowRight" !== l && (e.preventDefault(), (s = S(o, "data-layer-expand", n)) == null || s.click());
1233
1240
  break;
1234
1241
  }
1235
1242
  case "Enter":
1236
1243
  case " ":
1237
- e.preventDefault(), We(t, e);
1244
+ e.preventDefault(), Xe(t, e);
1238
1245
  break;
1239
1246
  }
1240
1247
  }
1241
- function ea(a, i, e, t, r) {
1242
- r.add(i, "keydown", (o) => {
1243
- o.key === "Escape" && Xe(a, e, o);
1244
- }), r.add(t, "keydown", (o) => Ze(t, e, o)), r.add(t, "focusin", (o) => {
1245
- const s = o.composedPath()[0];
1246
- s instanceof HTMLElement && s.matches(z) && (t.querySelectorAll(z).forEach((c) => c.setAttribute("tabindex", "-1")), s.setAttribute("tabindex", "0"));
1248
+ function aa(a, o, e, t, r) {
1249
+ r.add(o, "keydown", (i) => {
1250
+ i.key === "Escape" && Ze(a, e, i);
1251
+ }), r.add(t, "keydown", (i) => ea(t, e, i)), r.add(t, "focusin", (i) => {
1252
+ const s = i.composedPath()[0];
1253
+ s instanceof HTMLElement && s.matches(F) && (t.querySelectorAll(F).forEach((n) => n.setAttribute("tabindex", "-1")), s.setAttribute("tabindex", "0"));
1247
1254
  });
1248
1255
  }
1249
- function aa(a, i) {
1250
- i.querySelectorAll("[data-layer-row]").forEach((t) => {
1251
- const o = t.getAttribute("data-layer-row") === a.camadaAtivaId;
1252
- t.classList.toggle("active-drawing-layer", o);
1256
+ function ta(a, o) {
1257
+ o.querySelectorAll("[data-layer-row]").forEach((t) => {
1258
+ const i = t.getAttribute("data-layer-row") === a.camadaAtivaId;
1259
+ t.classList.toggle("active-drawing-layer", i);
1253
1260
  const s = t.querySelector(".ui-col-name");
1254
1261
  if (s) {
1255
- let c = s.querySelector(".ui-active-badge");
1256
- if (o && !c) {
1257
- c = document.createElement("span"), c.className = "ui-active-badge", c.textContent = "✓ Ativa";
1258
- const n = s.querySelector(".ui-count-chip");
1259
- n ? s.insertBefore(c, n) : s.appendChild(c);
1260
- } else !o && c && c.remove();
1262
+ let n = s.querySelector(".ui-active-badge");
1263
+ if (i && !n) {
1264
+ n = document.createElement("span"), n.className = "ui-active-badge", n.textContent = "✓ Ativa";
1265
+ const c = s.querySelector(".ui-count-chip");
1266
+ c ? s.insertBefore(n, c) : s.appendChild(n);
1267
+ } else !i && n && n.remove();
1261
1268
  }
1262
1269
  });
1263
1270
  }
1264
- function ta(a, i) {
1265
- i.querySelectorAll(".ui-feat-row").forEach((g) => {
1266
- const b = g.getAttribute("data-feat-row"), E = b ? a.selectedFeatureIds.has(b) : !1;
1267
- g.classList.toggle("selected-row", E), g.setAttribute("aria-selected", String(E));
1268
- const y = g.querySelector(".ui-target-circle");
1271
+ function ra(a, o) {
1272
+ o.querySelectorAll(".ui-feat-row").forEach((m) => {
1273
+ const v = m.getAttribute("data-feat-row"), E = v ? a.selectedFeatureIds.has(v) : !1;
1274
+ m.classList.toggle("selected-row", E), m.setAttribute("aria-selected", String(E));
1275
+ const y = m.querySelector(".ui-target-circle");
1269
1276
  y && y.classList.toggle("selected", E);
1270
- }), i.querySelectorAll(".ui-layer-group").forEach((g) => {
1271
- const b = g.getAttribute("data-layer-id"), E = a.feicoes.filter((h) => h.layerId === b), y = g.querySelector(".ui-layer-row .ui-target-circle");
1277
+ }), o.querySelectorAll(".ui-layer-group").forEach((m) => {
1278
+ const v = m.getAttribute("data-layer-id"), E = a.feicoes.filter((g) => g.layerId === v), y = m.querySelector(".ui-layer-row .ui-target-circle");
1272
1279
  if (y && E.length > 0) {
1273
- const h = E.every((w) => a.selectedFeatureIds.has(w.id)), v = !h && E.some((w) => a.selectedFeatureIds.has(w.id));
1274
- y.classList.toggle("selected", h), y.classList.toggle("partial", v);
1280
+ const g = E.every((w) => a.selectedFeatureIds.has(w.id)), b = !g && E.some((w) => a.selectedFeatureIds.has(w.id));
1281
+ y.classList.toggle("selected", g), y.classList.toggle("partial", b);
1275
1282
  } else y && y.classList.remove("selected", "partial");
1276
1283
  });
1277
- const e = a.feicoes.filter((g) => a.selectedFeatureIds.has(g.id)), t = e.length > 0, r = i.getElementById("footer-count"), o = i.getElementById("footer-label");
1278
- r && (r.textContent = String(t ? e.length : a.camadas.length)), o && (o.textContent = t ? e.length > 1 ? "selecionados" : "selecionado" : a.camadas.length > 1 ? "camadas" : "camada");
1279
- const s = i.querySelector(".ui-footer-metric"), c = ie(e);
1280
- s && (c ? (s.innerHTML = `${m.reguaMetrica} ${c}`, s.style.display = "inline-flex") : s.style.display = "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((g) => {
1281
- const b = i.getElementById(g);
1282
- b && (b.disabled = !t, b.classList.toggle("disabled", !t));
1284
+ const e = a.feicoes.filter((m) => a.selectedFeatureIds.has(m.id)), t = e.length > 0, r = o.getElementById("footer-count"), i = o.getElementById("footer-label");
1285
+ r && (r.textContent = String(t ? e.length : a.camadas.length)), i && (i.textContent = t ? e.length > 1 ? "selecionados" : "selecionado" : a.camadas.length > 1 ? "camadas" : "camada");
1286
+ const s = o.querySelector(".ui-footer-metric"), n = oe(e);
1287
+ s && (n ? (s.innerHTML = `${h.reguaMetrica} ${n}`, s.style.display = "inline-flex") : s.style.display = "none"), ["btn-footer-vis", "btn-footer-lock", "btn-footer-del"].forEach((m) => {
1288
+ const v = o.getElementById(m);
1289
+ v && (v.disabled = !t, v.classList.toggle("disabled", !t));
1283
1290
  });
1284
- const n = i.querySelector(".ui-footer-move-wrapper");
1285
- n && n.classList.toggle("disabled", !t);
1286
- const l = i.getElementById("select-footer-move");
1291
+ const c = o.querySelector(".ui-footer-move-wrapper");
1292
+ c && c.classList.toggle("disabled", !t);
1293
+ const l = o.getElementById("select-footer-move");
1287
1294
  l && (l.disabled = !t);
1288
- const d = i.querySelector(".ui-footer-color-wrapper");
1289
- d && d.classList.toggle("disabled", !t);
1290
- const p = i.getElementById("input-footer-color");
1295
+ const u = o.querySelector(".ui-footer-color-wrapper");
1296
+ u && u.classList.toggle("disabled", !t);
1297
+ const p = o.getElementById("input-footer-color");
1291
1298
  p && (p.disabled = !t);
1292
- let u = i.getElementById("btn-footer-clear");
1293
- const f = i.querySelector(".ui-footer-right");
1294
- t && !u && f ? (u = document.createElement("button"), u.id = "btn-footer-clear", u.className = "ui-footer-btn", u.title = "Limpar seleção", u.innerHTML = m.fechar, u.addEventListener("click", () => a.limparSelecao(!0)), f.appendChild(u)) : !t && u && u.remove();
1299
+ let d = o.getElementById("btn-footer-clear");
1300
+ const f = o.querySelector(".ui-footer-right");
1301
+ t && !d && f ? (d = document.createElement("button"), d.id = "btn-footer-clear", d.className = "ui-footer-btn", d.title = "Limpar seleção", d.innerHTML = h.fechar, d.addEventListener("click", () => a.limparSelecao(!0)), f.appendChild(d)) : !t && d && d.remove();
1295
1302
  }
1296
- function ra(a) {
1303
+ function ia(a) {
1297
1304
  function t() {
1298
1305
  return a.getMinAltura ? a.getMinAltura() : 140;
1299
1306
  }
1300
1307
  function r() {
1301
1308
  return a.getMaxAltura ? a.getMaxAltura() : 1600;
1302
1309
  }
1303
- function o(l, d = !1) {
1310
+ function i(l, u = !1) {
1304
1311
  if (l == null || l === "") {
1305
- a.hostElement.style.removeProperty("height"), a.hostElement.style.removeProperty("--ui-camadas-altura"), d && a.hostElement.dispatchEvent(
1312
+ a.hostElement.style.removeProperty("height"), a.hostElement.style.removeProperty("--ui-camadas-altura"), u && a.hostElement.dispatchEvent(
1306
1313
  new CustomEvent("ui-redimensionar-altura", {
1307
1314
  bubbles: !0,
1308
1315
  composed: !0,
@@ -1313,30 +1320,30 @@ function ra(a) {
1313
1320
  }
1314
1321
  const p = typeof l == "number" ? l : parseFloat(String(l));
1315
1322
  if (isNaN(p)) return;
1316
- const u = Math.max(t(), Math.min(r(), Math.round(p)));
1317
- a.hostElement.style.height = `${u}px`, a.hostElement.style.setProperty("--ui-camadas-altura", `${u}px`), d && a.hostElement.dispatchEvent(
1323
+ const d = Math.max(t(), Math.min(r(), Math.round(p)));
1324
+ a.hostElement.style.height = `${d}px`, a.hostElement.style.setProperty("--ui-camadas-altura", `${d}px`), u && a.hostElement.dispatchEvent(
1318
1325
  new CustomEvent("ui-redimensionar-altura", {
1319
1326
  bubbles: !0,
1320
1327
  composed: !0,
1321
- detail: { altura: u }
1328
+ detail: { altura: d }
1322
1329
  })
1323
1330
  );
1324
1331
  }
1325
1332
  let s = null;
1326
- function c() {
1333
+ function n() {
1327
1334
  if (!a.resizerElement) return;
1328
- let l = !1, d = 0, p = 0;
1329
- const u = (g) => {
1330
- if (g.button !== 0) return;
1331
- g.preventDefault(), g.stopPropagation(), l = !0, d = g.clientY, p = a.hostElement.getBoundingClientRect().height, a.resizerElement.classList.add("ui-camadas-resizer--ativo"), a.hostElement.classList.add("ui-camadas--redimensionando");
1335
+ let l = !1, u = 0, p = 0;
1336
+ const d = (m) => {
1337
+ if (m.button !== 0) return;
1338
+ m.preventDefault(), m.stopPropagation(), l = !0, u = m.clientY, p = a.hostElement.getBoundingClientRect().height, a.resizerElement.classList.add("ui-camadas-resizer--ativo"), a.hostElement.classList.add("ui-camadas--redimensionando");
1332
1339
  try {
1333
- a.resizerElement.setPointerCapture(g.pointerId);
1340
+ a.resizerElement.setPointerCapture(m.pointerId);
1334
1341
  } catch {
1335
1342
  }
1336
- const b = (h) => {
1343
+ const v = (g) => {
1337
1344
  if (!l) return;
1338
- h.preventDefault();
1339
- const v = h.clientY - d, w = Math.max(t(), Math.min(r(), Math.round(p + v)));
1345
+ g.preventDefault();
1346
+ const b = g.clientY - u, w = Math.max(t(), Math.min(r(), Math.round(p + b)));
1340
1347
  a.hostElement.style.height = `${w}px`, a.hostElement.style.setProperty("--ui-camadas-altura", `${w}px`), a.onRedimensionando && a.onRedimensionando(w), a.hostElement.dispatchEvent(
1341
1348
  new CustomEvent("ui-redimensionando-altura", {
1342
1349
  bubbles: !0,
@@ -1345,17 +1352,17 @@ function ra(a) {
1345
1352
  })
1346
1353
  );
1347
1354
  }, E = () => {
1348
- var h;
1349
- l = !1, s = null, window.removeEventListener("pointermove", b), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", y), (h = a.resizerElement) == null || h.classList.remove("ui-camadas-resizer--ativo"), a.hostElement.classList.remove("ui-camadas--redimensionando");
1350
- }, y = (h) => {
1355
+ var g;
1356
+ l = !1, s = null, window.removeEventListener("pointermove", v), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", y), (g = a.resizerElement) == null || g.classList.remove("ui-camadas-resizer--ativo"), a.hostElement.classList.remove("ui-camadas--redimensionando");
1357
+ }, y = (g) => {
1351
1358
  if (!l) return;
1352
1359
  l = !1, a.resizerElement.classList.remove("ui-camadas-resizer--ativo"), a.hostElement.classList.remove("ui-camadas--redimensionando");
1353
1360
  try {
1354
- a.resizerElement.hasPointerCapture(h.pointerId) && a.resizerElement.releasePointerCapture(h.pointerId);
1361
+ a.resizerElement.hasPointerCapture(g.pointerId) && a.resizerElement.releasePointerCapture(g.pointerId);
1355
1362
  } catch {
1356
1363
  }
1357
- window.removeEventListener("pointermove", b), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", y);
1358
- const v = a.hostElement.getBoundingClientRect().height, w = Math.round(v);
1364
+ window.removeEventListener("pointermove", v), window.removeEventListener("pointerup", y), window.removeEventListener("pointercancel", y);
1365
+ const b = a.hostElement.getBoundingClientRect().height, w = Math.round(b);
1359
1366
  a.onAlturaAlterada && a.onAlturaAlterada(w), a.hostElement.dispatchEvent(
1360
1367
  new CustomEvent("ui-redimensionar-altura", {
1361
1368
  bubbles: !0,
@@ -1364,36 +1371,39 @@ function ra(a) {
1364
1371
  })
1365
1372
  );
1366
1373
  };
1367
- s = E, window.addEventListener("pointermove", b), window.addEventListener("pointerup", y), window.addEventListener("pointercancel", y);
1368
- }, f = (g) => {
1369
- g.preventDefault(), g.stopPropagation(), o(null, !0), a.onAlturaAlterada && a.onAlturaAlterada(null);
1374
+ s = E, window.addEventListener("pointermove", v), window.addEventListener("pointerup", y), window.addEventListener("pointercancel", y);
1375
+ }, f = (m) => {
1376
+ m.preventDefault(), m.stopPropagation(), i(null, !0), a.onAlturaAlterada && a.onAlturaAlterada(null);
1370
1377
  };
1371
- a.listeners.add(a.resizerElement, "pointerdown", u), a.listeners.add(a.resizerElement, "dblclick", f);
1378
+ a.listeners.add(a.resizerElement, "pointerdown", d), a.listeners.add(a.resizerElement, "dblclick", f);
1372
1379
  }
1373
- function n() {
1380
+ function c() {
1374
1381
  s == null || s(), a.listeners.cleanup();
1375
1382
  }
1376
1383
  return {
1377
- init: c,
1378
- definirAltura: o,
1379
- destruir: n
1384
+ init: n,
1385
+ definirAltura: i,
1386
+ destruir: c
1380
1387
  };
1381
1388
  }
1382
- class Q extends be {
1389
+ const M = class M extends xe {
1383
1390
  constructor() {
1384
1391
  super();
1385
1392
  x(this, "shadow");
1386
- x(this, "listeners", new xe());
1393
+ x(this, "listeners", new ye());
1387
1394
  x(this, "dragDropManager");
1388
1395
  x(this, "resizerController");
1389
1396
  x(this, "alturaCustomizada", null);
1390
1397
  x(this, "conectado", !1);
1398
+ x(this, "profundidadeLote", 0);
1399
+ x(this, "renderPendente", !1);
1400
+ x(this, "camadasRemovidas", /* @__PURE__ */ new Set());
1391
1401
  x(this, "origensCamadas", /* @__PURE__ */ new Map());
1392
- x(this, "salvarLembrancaDebounced", oe(() => this.salvarLembrancaEstado(), 200));
1402
+ x(this, "salvarLembrancaDebounced", se(() => this.salvarLembrancaEstado(), 200));
1393
1403
  // Estado interno
1394
1404
  x(this, "camadas", []);
1395
1405
  x(this, "feicoes", []);
1396
- x(this, "mapasBase", [...se]);
1406
+ x(this, "mapasBase", [...ne]);
1397
1407
  x(this, "expandedLayers", /* @__PURE__ */ new Set());
1398
1408
  x(this, "selectedFeatureIds", /* @__PURE__ */ new Set());
1399
1409
  x(this, "lastClickedFeatureId", null);
@@ -1404,7 +1414,7 @@ class Q extends be {
1404
1414
  x(this, "corpoElement");
1405
1415
  x(this, "btnExpandirFlutuante");
1406
1416
  this.shadow = this.attachShadow({ mode: "open" }), this.shadow.innerHTML = `
1407
- <style>${Pe}</style>
1417
+ <style>${Re}</style>
1408
1418
  <div class="ui-camadas-container" id="panel-container" role="region" aria-label="Painel de Camadas">
1409
1419
  <div class="ui-camadas-corpo" id="painel-corpo"></div>
1410
1420
  <div class="ui-camadas-resizer-altura" id="resizer-altura" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
@@ -1412,11 +1422,11 @@ class Q extends be {
1412
1422
  </div>
1413
1423
  </div>
1414
1424
  <button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
1415
- ${m.camadas}
1425
+ ${h.camadas}
1416
1426
  </button>
1417
- `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new ze(this, this.shadow);
1427
+ `, this.corpoElement = this.shadow.getElementById("painel-corpo"), this.btnExpandirFlutuante = this.shadow.getElementById("btn-expandir-flutuante"), this.dragDropManager = new Fe(this, this.shadow);
1418
1428
  const e = this.shadow.getElementById("resizer-altura");
1419
- this.resizerController = ra({
1429
+ this.resizerController = ia({
1420
1430
  hostElement: this,
1421
1431
  resizerElement: e,
1422
1432
  listeners: this.listeners,
@@ -1457,18 +1467,20 @@ class Q extends be {
1457
1467
  }
1458
1468
  connectedCallback() {
1459
1469
  if (this.persistir) {
1460
- const e = U(this.obterChaveStorageAtual());
1470
+ const e = _(this.obterChaveStorageAtual());
1461
1471
  e && (e.painelColapsado === !0 && !this.hasAttribute("colapsado") && (this.colapsado = !0), e.camadaAtivaId && !this.getAttribute("camada-ativa") && (this.camadaAtivaId = e.camadaAtivaId), e.mapaBaseAtivo && !this.getAttribute("mapa-base-ativo") && (this.mapaBaseAtivo = e.mapaBaseAtivo), e.densidade && !this.getAttribute("densidade") && (this.densidade = e.densidade), typeof e.altura == "number" && !this.getAttribute("altura") && !this.style.height && (this.resizerController.definirAltura(e.altura, !1), this.alturaCustomizada = e.altura));
1462
1472
  }
1463
- this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.resizerController.init(), this.render(), this.conectarEventosGerais(), ea(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
1473
+ this.hasAttribute("altura") && this.resizerController.definirAltura(this.getAttribute("altura"), !1), this.persistir && !this.storageKey && !this.id && (M.instanciasChavePadrao.size > 0 && console.warn(
1474
+ "[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."
1475
+ ), M.instanciasChavePadrao.add(this)), this.resizerController.init(), this.render(), this.conectarEventosGerais(), aa(this, this, this.shadow, this.corpoElement, this.listeners), this.conectado = !0, this.camadas.length > 0 && this.salvarLembrancaEstado();
1464
1476
  }
1465
1477
  disconnectedCallback() {
1466
1478
  var e;
1467
- this.conectado = !1, (e = this.resizerController) == null || e.destruir(), this.listeners.cleanup();
1479
+ this.conectado = !1, M.instanciasChavePadrao.delete(this), (e = this.resizerController) == null || e.destruir(), this.listeners.cleanup();
1468
1480
  }
1469
1481
  attributeChangedCallback(e, t, r) {
1470
- var o;
1471
- t !== r && (e === "colapsado" ? this.salvarLembrancaEstado() : e === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : e === "mapa-base-ativo" ? r && this.marcarMapaBaseAtivoNoDOM(r) : e === "mostrar-mapas-base" || e === "mostrar-rodape" || e === "mostrar-busca" || e === "colapsavel" || e === "flutuante" ? this.solicitarRenderizacao() : e === "altura" && ((o = this.resizerController) == null || o.definirAltura(r, !1)));
1482
+ var i;
1483
+ t !== r && (e === "colapsado" ? this.salvarLembrancaEstado() : e === "camada-ativa" ? (this.sincronizarCamadaAtivaDOM(), this.salvarLembrancaEstado()) : e === "mapa-base-ativo" ? r && this.marcarMapaBaseAtivoNoDOM(r) : e === "mostrar-mapas-base" || e === "mostrar-rodape" || e === "mostrar-busca" || e === "colapsavel" || e === "flutuante" ? this.solicitarRenderizacao() : e === "altura" && ((i = this.resizerController) == null || i.definirAltura(r, !1)));
1472
1484
  }
1473
1485
  // --- Getters e Setters de Propriedades Reativas ---
1474
1486
  get titulo() {
@@ -1572,14 +1584,14 @@ class Q extends be {
1572
1584
  e != null ? (this.setAttribute("altura", String(e)), this.definirAltura(e)) : (this.removeAttribute("altura"), this.definirAltura(null));
1573
1585
  }
1574
1586
  definirAltura(e, t = !0) {
1575
- var o;
1576
- (o = this.resizerController) == null || o.definirAltura(e, !1);
1587
+ var i;
1588
+ (i = this.resizerController) == null || i.definirAltura(e, !1);
1577
1589
  const r = e !== null ? parseFloat(String(e)) : null;
1578
1590
  this.alturaCustomizada = isNaN(r) ? null : r, t && this.salvarLembrancaEstado();
1579
1591
  }
1580
1592
  // --- Gerenciamento de Persistência / Lembrança ---
1581
1593
  obterChaveStorageAtual() {
1582
- return Be(this.storageKey, this.id);
1594
+ return qe(this.storageKey, this.id);
1583
1595
  }
1584
1596
  /** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
1585
1597
  agendarSalvarLembranca() {
@@ -1587,8 +1599,8 @@ class Q extends be {
1587
1599
  }
1588
1600
  salvarLembrancaEstado() {
1589
1601
  if (!this.persistir || !this.conectado) return;
1590
- const e = this.obterChaveStorageAtual(), t = Oe({
1591
- estadoAnterior: U(e),
1602
+ const e = this.obterChaveStorageAtual(), t = Pe({
1603
+ estadoAnterior: _(e),
1592
1604
  origensCamadas: this.origensCamadas,
1593
1605
  camadas: this.camadas,
1594
1606
  expandedLayers: this.expandedLayers,
@@ -1596,9 +1608,10 @@ class Q extends be {
1596
1608
  painelColapsado: this.colapsado,
1597
1609
  mapaBaseAtivo: this.mapaBaseAtivo,
1598
1610
  densidade: this.densidade,
1599
- altura: this.alturaCustomizada
1611
+ altura: this.alturaCustomizada,
1612
+ camadasRemovidas: this.camadasRemovidas
1600
1613
  });
1601
- qe(e, t);
1614
+ this.camadasRemovidas.clear(), De(e, t);
1602
1615
  }
1603
1616
  limparLembranca() {
1604
1617
  Te(this.obterChaveStorageAtual());
@@ -1632,22 +1645,23 @@ class Q extends be {
1632
1645
  this.definirMapasBase(e);
1633
1646
  }
1634
1647
  definirCamadas(e, t) {
1635
- if (this.camadas = Array.isArray(e) ? e.map((r) => ({ ...r })) : [], this.origensCamadas.clear(), this.persistir) {
1636
- const r = U(this.obterChaveStorageAtual());
1637
- De(this.camadas, r, this.expandedLayers, this.origensCamadas), r != null && r.camadaAtivaId && this.camadas.some((o) => o.id === r.camadaAtivaId) && (this.camadaAtivaId = r.camadaAtivaId);
1648
+ if (this.camadas = Array.isArray(e) ? e.map((i) => ({ ...i })) : [], this.origensCamadas.clear(), this.persistir) {
1649
+ const i = _(this.obterChaveStorageAtual());
1650
+ Oe(this.camadas, i, this.expandedLayers, this.origensCamadas), i != null && i.camadaAtivaId && this.camadas.some((s) => s.id === i.camadaAtivaId) && (this.camadaAtivaId = i.camadaAtivaId);
1638
1651
  } else
1639
- this.camadas.forEach((r) => {
1640
- this.origensCamadas.set(r.id, _(r)), this.expandedLayers.has(r.id) || this.expandedLayers.add(r.id);
1652
+ this.camadas.forEach((i) => {
1653
+ this.origensCamadas.set(i.id, K(i)), this.expandedLayers.has(i.id) || this.expandedLayers.add(i.id);
1641
1654
  });
1642
1655
  if (Array.isArray(t)) {
1643
- this.feicoes = t.map((s) => ({ ...s }));
1644
- const r = new Set(this.camadas.map((s) => s.id)), o = this.feicoes.filter((s) => s.layerId && !r.has(s.layerId));
1645
- o.length > 0 && console.warn(
1646
- `[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
1647
- o.map((s) => ({ id: s.id, nome: s.name, layerId: s.layerId }))
1656
+ this.feicoes = t.map((n) => ({ ...n }));
1657
+ const i = new Set(this.camadas.map((n) => n.id)), s = this.feicoes.filter((n) => n.layerId && !i.has(n.layerId));
1658
+ s.length > 0 && console.warn(
1659
+ `[UI-Camadas] ${s.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,
1660
+ s.map((n) => ({ id: n.id, nome: n.name, layerId: n.layerId }))
1648
1661
  ), this.sincronizarSelecoesComFeicoesValidas();
1649
1662
  }
1650
- !this.getAttribute("camada-ativa") && this.camadas.length > 0 && (this.camadaAtivaId = this.camadas[0].id), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1663
+ const r = this.getAttribute("camada-ativa");
1664
+ this.camadas.length > 0 && (!r || !this.camadas.some((i) => i.id === r)) && (this.camadaAtivaId = this.camadas[0].id), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1651
1665
  }
1652
1666
  definirFeicoes(e) {
1653
1667
  this.feicoes = Array.isArray(e) ? e.map((t) => ({ ...t })) : [], this.sincronizarSelecoesComFeicoesValidas(), this.solicitarRenderizacao();
@@ -1680,11 +1694,11 @@ class Q extends be {
1680
1694
  return;
1681
1695
  }
1682
1696
  const t = { ...e };
1683
- this.camadas.push(t), this.origensCamadas.set(t.id, _(t)), this.expandedLayers.add(t.id), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1697
+ this.camadas.push(t), this.origensCamadas.set(t.id, K(t)), this.expandedLayers.add(t.id), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1684
1698
  }
1685
1699
  removerCamada(e) {
1686
1700
  var t;
1687
- this.camadas = this.camadas.filter((r) => r.id !== e), this.feicoes = this.feicoes.filter((r) => r.layerId !== e), this.origensCamadas.delete(e), this.expandedLayers.delete(e), this.activeSettingsLayerId === e && (this.activeSettingsLayerId = null), this.sincronizarSelecoesComFeicoesValidas(), this.selectedFeatureIds.size === 0 && (this.lastClickedFeatureId = null), this.camadaAtivaId === e && (this.camadaAtivaId = ((t = this.camadas[0]) == null ? void 0 : t.id) ?? null), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1701
+ this.camadas = this.camadas.filter((r) => r.id !== e), this.feicoes = this.feicoes.filter((r) => r.layerId !== e), this.origensCamadas.delete(e), this.camadasRemovidas.add(e), this.expandedLayers.delete(e), this.activeSettingsLayerId === e && (this.activeSettingsLayerId = null), this.sincronizarSelecoesComFeicoesValidas(), this.selectedFeatureIds.size === 0 && (this.lastClickedFeatureId = null), this.camadaAtivaId === e && (this.camadaAtivaId = ((t = this.camadas[0]) == null ? void 0 : t.id) ?? null), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1688
1702
  }
1689
1703
  adicionarFeicao(e) {
1690
1704
  if (!(!e || !e.id)) {
@@ -1702,20 +1716,20 @@ class Q extends be {
1702
1716
  removerFeicao(e) {
1703
1717
  this.feicoes = this.feicoes.filter((t) => t.id !== e), this.selectedFeatureIds.delete(e), this.solicitarRenderizacao();
1704
1718
  }
1705
- selecionarFeicao(e, t = !1, r = !1, o = !1) {
1706
- const s = Ce(
1707
- Le(this.camadas, this.feicoes, this.expandedLayers, this.searchQuery),
1719
+ selecionarFeicao(e, t = !1, r = !1, i = !1) {
1720
+ const s = Ce(this.camadas, this.feicoes, this.expandedLayers, this.searchQuery), n = !r && !s.includes(e) && this.feicoes.some((l) => l.id === e), c = Se(
1721
+ n ? [...s, e] : s,
1708
1722
  this.selectedFeatureIds,
1709
1723
  this.lastClickedFeatureId,
1710
1724
  e,
1711
1725
  t,
1712
1726
  r
1713
1727
  );
1714
- s && (this.selectedFeatureIds = s.selecionados, this.lastClickedFeatureId = s.ultimoClicadoId, this.sincronizarSelecaoDOM(), o && this.notificarMudancaSelecao());
1728
+ c && (this.selectedFeatureIds = c.selecionados, this.lastClickedFeatureId = c.ultimoClicadoId, this.sincronizarSelecaoDOM(), i && this.notificarMudancaSelecao());
1715
1729
  }
1716
1730
  selecionarFeicoes(e, t = !1) {
1717
1731
  const r = e || [];
1718
- r.length === this.selectedFeatureIds.size && r.every((c) => this.selectedFeatureIds.has(c)) || (this.selectedFeatureIds.clear(), r.forEach((c) => this.selectedFeatureIds.add(c)), this.sincronizarSelecaoDOM(), t && this.notificarMudancaSelecao());
1732
+ r.length === this.selectedFeatureIds.size && r.every((n) => this.selectedFeatureIds.has(n)) || (this.selectedFeatureIds.clear(), r.forEach((n) => this.selectedFeatureIds.add(n)), this.lastClickedFeatureId = r.length > 0 ? r[r.length - 1] : null, this.sincronizarSelecaoDOM(), t && this.notificarMudancaSelecao());
1719
1733
  }
1720
1734
  limparSelecao(e = !1) {
1721
1735
  this.selectedFeatureIds.size !== 0 && (this.selectedFeatureIds.clear(), this.lastClickedFeatureId = null, this.sincronizarSelecaoDOM(), e && this.notificarMudancaSelecao());
@@ -1727,9 +1741,9 @@ class Q extends be {
1727
1741
  this.expandedLayers.clear(), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1728
1742
  }
1729
1743
  alternarVisibilidadeTodas(e = !1) {
1730
- const r = !this.camadas.some((o) => o.visible !== !1);
1731
- this.camadas.forEach((o) => {
1732
- o.visible = r, e && this.dispararEvento("ui-camada-visibilidade", { camadaId: o.id, visivel: r });
1744
+ const r = !this.camadas.some((i) => i.visible !== !1);
1745
+ this.camadas.forEach((i) => {
1746
+ i.visible = r, e && this.dispararEvento("ui-camada-visibilidade", { camadaId: i.id, visivel: r });
1733
1747
  }), this.salvarLembrancaEstado(), this.solicitarRenderizacao();
1734
1748
  }
1735
1749
  colapsar(e = !1) {
@@ -1746,8 +1760,24 @@ class Q extends be {
1746
1760
  }
1747
1761
  // --- Renderização e Ciclo de Vida ---
1748
1762
  solicitarRenderizacao() {
1763
+ if (this.profundidadeLote > 0) {
1764
+ this.renderPendente = !0;
1765
+ return;
1766
+ }
1749
1767
  this.render();
1750
1768
  }
1769
+ /**
1770
+ * Agrupa várias mutações (`adicionarFeicao` em laço, por exemplo) em uma só renderização, ao fim de `fn`.
1771
+ * Sem isto, cada chamada redesenha a árvore inteira.
1772
+ */
1773
+ emLote(e) {
1774
+ this.profundidadeLote++;
1775
+ try {
1776
+ e();
1777
+ } finally {
1778
+ this.profundidadeLote--, this.profundidadeLote === 0 && this.renderPendente && (this.renderPendente = !1, this.render());
1779
+ }
1780
+ }
1751
1781
  dispararEvento(e, t) {
1752
1782
  this.dispatchEvent(
1753
1783
  new CustomEvent(e, {
@@ -1758,9 +1788,9 @@ class Q extends be {
1758
1788
  );
1759
1789
  }
1760
1790
  render() {
1761
- var u;
1791
+ var f, m;
1762
1792
  if (!this.corpoElement) return;
1763
- const e = Me({
1793
+ const e = ze({
1764
1794
  camadas: this.camadas,
1765
1795
  feicoes: this.feicoes,
1766
1796
  camadaAtivaId: this.camadaAtivaId,
@@ -1771,22 +1801,22 @@ class Q extends be {
1771
1801
  editingFeatureId: this.editingFeatureId,
1772
1802
  searchQuery: this.searchQuery,
1773
1803
  mostrarBotaoColapsar: this.flutuante && this.getAttribute("colapsavel") !== "false"
1774
- }), t = this.mostrarMapasBase ? ke(this.mapasBase, this.mapaBaseAtivo) : "", r = this.mostrarRodape ? Ie(this.camadas, this.feicoes, this.selectedFeatureIds) : "", o = this.shadow.getElementById("ui-layer-tree-mount"), s = this.corpoElement.scrollTop, c = o ? o.scrollTop : 0, n = this.shadow.activeElement, l = n && this.corpoElement.contains(n) ? n.id : "", d = n && "selectionStart" in n ? n.selectionStart : null;
1804
+ }), t = this.mostrarMapasBase ? Ie(this.mapasBase, this.mapaBaseAtivo) : "", r = this.mostrarRodape ? Le(this.camadas, this.feicoes, this.selectedFeatureIds) : "", i = this.shadow.getElementById("ui-layer-tree-mount"), s = this.corpoElement.scrollTop, n = i ? i.scrollTop : 0, c = this.shadow.activeElement, l = c && this.corpoElement.contains(c) ? c.id : "", u = c && !l && this.corpoElement.contains(c) ? Array.from(c.attributes).find((v) => v.name.startsWith("data-") && v.value !== "") : void 0, p = c && "selectionStart" in c ? c.selectionStart : null;
1775
1805
  this.corpoElement.innerHTML = `
1776
1806
  ${e}
1777
1807
  ${r}
1778
1808
  ${t}
1779
1809
  `, this.corpoElement.scrollTop = s;
1780
- const p = this.shadow.getElementById("ui-layer-tree-mount");
1781
- if (p && (p.scrollTop = c), l) {
1782
- const f = this.shadow.getElementById(l);
1783
- if (f && (f.focus({ preventScroll: !0 }), d !== null && typeof f.setSelectionRange == "function"))
1810
+ const d = this.shadow.getElementById("ui-layer-tree-mount");
1811
+ if (d && (d.scrollTop = n), l) {
1812
+ const v = this.shadow.getElementById(l);
1813
+ if (v && (v.focus({ preventScroll: !0 }), p !== null && typeof v.setSelectionRange == "function"))
1784
1814
  try {
1785
- f.setSelectionRange(d, d);
1815
+ v.setSelectionRange(p, p);
1786
1816
  } catch {
1787
1817
  }
1788
1818
  }
1789
- (u = this.shadow.querySelector("[data-layer-row], [data-feat-row]")) == null || u.setAttribute("tabindex", "0"), Ke(this, this.shadow), this.dragDropManager.bindAll();
1819
+ !l && u && ((f = S(this.corpoElement, u.name, u.value)) == null || f.focus({ preventScroll: !0 })), (m = this.shadow.querySelector("[data-layer-row], [data-feat-row]")) == null || m.setAttribute("tabindex", "0"), Qe(this, this.shadow), this.dragDropManager.bindAll();
1790
1820
  }
1791
1821
  // --- Conexão de Eventos ---
1792
1822
  conectarEventosGerais() {
@@ -1794,10 +1824,10 @@ class Q extends be {
1794
1824
  }
1795
1825
  // --- Sincronização de DOM (delegada) ---
1796
1826
  sincronizarCamadaAtivaDOM() {
1797
- aa(this, this.shadow);
1827
+ ta(this, this.shadow);
1798
1828
  }
1799
1829
  sincronizarSelecaoDOM() {
1800
- ta(this, this.shadow);
1830
+ ra(this, this.shadow);
1801
1831
  }
1802
1832
  // --- Auxiliares Internos ---
1803
1833
  sincronizarSelecoesComFeicoesValidas() {
@@ -1816,42 +1846,45 @@ class Q extends be {
1816
1846
  feicao: null
1817
1847
  });
1818
1848
  }
1849
+ };
1850
+ /** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
1851
+ x(M, "instanciasChavePadrao", /* @__PURE__ */ new Set());
1852
+ let B = M;
1853
+ class oa extends B {
1819
1854
  }
1820
- class ia extends Q {
1821
- }
1822
- class oa extends Q {
1855
+ class sa extends B {
1823
1856
  }
1824
- G("ui-camadas", Q);
1825
- G("ui-painel-camadas", ia);
1826
- G("ui-layer-panel", oa);
1857
+ Q("ui-camadas", B);
1858
+ Q("ui-painel-camadas", oa);
1859
+ Q("ui-layer-panel", sa);
1827
1860
  export {
1828
- ze as CamadasDragDropManager,
1829
- m as ICONES,
1830
- ne as LIMITE_FEICOES_POR_CAMADA,
1831
- se as MAPAS_BASE_PADRAO,
1832
- Q as UICamadas,
1833
- oa as UILayerPanel,
1834
- pa as UIMapaBase,
1835
- ia as UIPainelCamadas,
1836
- fa as UISeletorMapaBase,
1837
- re as calcularAreaPoligono,
1838
- te as calcularComprimentoLinha,
1839
- ye as calcularDistanciaPontos,
1840
- Ce as calcularSelecaoFeicao,
1841
- U as carregarEstadoPersistido,
1861
+ Fe as CamadasDragDropManager,
1862
+ h as ICONES,
1863
+ le as LIMITE_FEICOES_POR_CAMADA,
1864
+ ne as MAPAS_BASE_PADRAO,
1865
+ B as UICamadas,
1866
+ sa as UILayerPanel,
1867
+ fa as UIMapaBase,
1868
+ oa as UIPainelCamadas,
1869
+ ma as UISeletorMapaBase,
1870
+ ie as calcularAreaPoligono,
1871
+ re as calcularComprimentoLinha,
1872
+ we as calcularDistanciaPontos,
1873
+ Se as calcularSelecaoFeicao,
1874
+ _ as carregarEstadoPersistido,
1842
1875
  k as escapeHtml,
1843
- K as filtrarFeicoesPorBusca,
1844
- ie as formatarMetricaFeicoes,
1845
- Be as gerarChaveStorage,
1876
+ Y as filtrarFeicoesPorBusca,
1877
+ oe as formatarMetricaFeicoes,
1878
+ qe as gerarChaveStorage,
1846
1879
  Te as limparEstadoPersistido,
1847
- Oe as montarEstadoPersistido,
1848
- Le as obterIdsVisiveisFeicoes,
1849
- De as reidratarCamadasComOverrides,
1880
+ Pe as montarEstadoPersistido,
1881
+ Ce as obterIdsVisiveisFeicoes,
1882
+ Oe as reidratarCamadasComOverrides,
1850
1883
  $e as removerSelecoesInvalidas,
1851
- Me as renderizarArvoreCamadas,
1852
- ke as renderizarGridMapasBase,
1853
- Ie as renderizarRodapeAcoes,
1854
- Se as renderizarThumbGeometria,
1855
- qe as salvarEstadoPersistido,
1856
- _ as snapshotCamada
1884
+ ze as renderizarArvoreCamadas,
1885
+ Ie as renderizarGridMapasBase,
1886
+ Le as renderizarRodapeAcoes,
1887
+ Me as renderizarThumbGeometria,
1888
+ De as salvarEstadoPersistido,
1889
+ K as snapshotCamada
1857
1890
  };