@thibezer/ui-components-kit 2.17.1 → 2.17.3

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