@thibezer/ui-components-kit 2.7.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +28 -4
  3. package/dist/altura-controle-ukMRPckR.cjs +1 -0
  4. package/dist/altura-controle-vxQiXG4q.js +62 -0
  5. package/dist/botao.cjs +1 -1
  6. package/dist/botao.js +1 -1
  7. package/dist/camadas.cjs +98 -94
  8. package/dist/camadas.js +646 -574
  9. package/dist/campo-texto.cjs +1 -1
  10. package/dist/campo-texto.js +1 -1
  11. package/dist/canvas.cjs +28 -28
  12. package/dist/canvas.js +1110 -980
  13. package/dist/components/ui-camadas/camadas-host.d.ts +1 -0
  14. package/dist/components/ui-camadas/camadas-mapas-base.d.ts +3 -1
  15. package/dist/components/ui-camadas/camadas-render.d.ts +1 -0
  16. package/dist/components/ui-camadas/camadas-selecao.d.ts +12 -0
  17. package/dist/components/ui-camadas/ui-camadas.d.ts +5 -0
  18. package/dist/components/ui-canvas-cad/cad-feicoes-ponteiro.d.ts +4 -0
  19. package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +13 -0
  20. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +11 -0
  21. package/dist/components/ui-linha/index.d.ts +1 -0
  22. package/dist/components/ui-linha/ui-linha.d.ts +48 -0
  23. package/dist/core/altura-controle.d.ts +34 -0
  24. package/dist/core/index.d.ts +1 -0
  25. package/dist/core.cjs +1 -1
  26. package/dist/core.js +29 -20
  27. package/dist/custom-elements.json +22245 -21471
  28. package/dist/data.cjs +1 -1
  29. package/dist/data.js +1 -1
  30. package/dist/forms.cjs +1 -1
  31. package/dist/forms.js +2 -2
  32. package/dist/gerencigeo-canvas/canvas_interacao.d.ts +0 -1
  33. package/dist/gerencigeo-canvas/feature_popup.d.ts +2 -0
  34. package/dist/gerencigeo-canvas/mapa_core.d.ts +6 -0
  35. package/dist/gerencigeo-canvas/popup_gate.d.ts +30 -0
  36. package/dist/gerencigeo-canvas/zoom_opcoes.d.ts +10 -0
  37. package/dist/index.cjs +1 -1
  38. package/dist/index.d.ts +3 -0
  39. package/dist/index.js +179 -176
  40. package/dist/register.cjs +1 -1
  41. package/dist/register.js +5 -5
  42. package/dist/tipos-elementos.d.ts +38 -3
  43. package/dist/tipos-react.d.ts +2 -0
  44. package/dist/tipos-vue.d.ts +34 -3
  45. package/dist/{ui-badge-ChiiiO1r.js → ui-badge-BWhoGgo9.js} +4 -4
  46. package/dist/{ui-badge-DUCxyAG6.cjs → ui-badge-SIR81R9l.cjs} +3 -3
  47. package/dist/ui-botao-D24oXySA.cjs +12 -0
  48. package/dist/ui-botao-Dsj08jjw.js +165 -0
  49. package/dist/{ui-campo-texto-Uu2dJE_0.js → ui-campo-texto-B_OHVGiN.js} +51 -51
  50. package/dist/ui-campo-texto-DauJCde3.cjs +16 -0
  51. package/dist/ui-kit.css +1 -1
  52. package/dist/ui-linha-C6HBnsaw.cjs +19 -0
  53. package/dist/{ui-segmented-kbO1BLVs.js → ui-linha-nCDh2wPm.js} +162 -94
  54. package/dist/{ui-switch-BX6U5Ykm.cjs → ui-switch-D9a8XlVX.cjs} +9 -9
  55. package/dist/{ui-switch-DO5jR0hy.js → ui-switch-DO1R0Ce7.js} +55 -55
  56. package/package.json +2 -2
  57. package/dist/form-validacao-BIOXxt-1.js +0 -140
  58. package/dist/form-validacao-ytRYSF3E.cjs +0 -1
  59. package/dist/ui-badge-BxT-sDmV.cjs +0 -28
  60. package/dist/ui-badge-C0eKBI8E.js +0 -183
  61. package/dist/ui-botao-BOOnP8ds.cjs +0 -12
  62. package/dist/ui-botao-DfqSivHl.js +0 -165
  63. package/dist/ui-campo-texto-CHTfMO-H.cjs +0 -16
  64. package/dist/ui-campo-texto-Cnn2UAkS.cjs +0 -16
  65. package/dist/ui-campo-texto-gum_jDdI.js +0 -380
  66. package/dist/ui-card-B86lJXTP.cjs +0 -20
  67. package/dist/ui-card-C_o5_0cB.js +0 -111
  68. package/dist/ui-controle-cores-BS0WYPdi.js +0 -572
  69. package/dist/ui-controle-cores-Er6ZcQ7U.cjs +0 -111
  70. package/dist/ui-modal-CvGFGh1h.cjs +0 -18
  71. package/dist/ui-modal-DBOtSTbR.js +0 -238
  72. package/dist/ui-paleta-ferramentas-Ccmo-rB5.cjs +0 -21
  73. package/dist/ui-paleta-ferramentas-DNN5i6nL.js +0 -860
  74. package/dist/ui-segmented-BOaGRQw4.cjs +0 -19
  75. package/dist/ui-segmented-D6b6zxVs.cjs +0 -19
  76. package/dist/ui-segmented-wUraId2e.js +0 -412
  77. package/dist/ui-skeleton-BilwGdOm.js +0 -634
  78. package/dist/ui-skeleton-SPYqku8P.cjs +0 -52
  79. package/dist/ui-skeleton-W9uwIceA.js +0 -585
  80. package/dist/ui-skeleton-gZrJipCC.cjs +0 -52
  81. package/dist/ui-switch-BcOqOkiV.js +0 -856
  82. package/dist/ui-switch-D7iPKDj-.cjs +0 -53
  83. package/dist/ui-tabela-propriedades-BecPqC-e.cjs +0 -141
  84. package/dist/ui-tabela-propriedades-BokvDD3b.js +0 -2648
package/dist/camadas.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var ea=Object.defineProperty;var aa=(e,r,a)=>r in e?ea(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a;var E=(e,r,a)=>aa(e,typeof r!="symbol"?r+"":r,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const X=require("./ssr-safe-CiHD1adl.cjs"),ra=require("./listener-bag-D5omxZ9h.cjs"),Ae=require("./seletor-mapa-base.cjs"),b={camadas:`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1
+ "use strict";var ia=Object.defineProperty;var oa=(e,r,a)=>r in e?ia(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a;var E=(e,r,a)=>oa(e,typeof r!="symbol"?r+"":r,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const J=require("./ssr-safe-CiHD1adl.cjs"),na=require("./listener-bag-D5omxZ9h.cjs"),Le=require("./seletor-mapa-base.cjs"),v={camadas:`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
2
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
3
3
  <polyline points="2 17 12 22 22 17"></polyline>
4
4
  <polyline points="2 12 12 17 22 12"></polyline>
@@ -74,34 +74,38 @@
74
74
  <line x1="3" y1="15" x2="21" y2="15"></line>
75
75
  <line x1="9" y1="3" x2="9" y2="21"></line>
76
76
  <line x1="15" y1="3" x2="15" y2="21"></line>
77
- </svg>`},oe=6378137;function ke(e,r){if(!e||!r)return 0;const a=e[0]*Math.PI/180,i=e[1]*Math.PI/180,t=r[0]*Math.PI/180,o=r[1]*Math.PI/180,n=t-a,s=o-i,l=Math.sin(n/2)*Math.sin(n/2)+Math.cos(a)*Math.cos(t)*Math.sin(s/2)*Math.sin(s/2);return oe*2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))}function se(e){if(!Array.isArray(e)||e.length<2)return 0;if(Array.isArray(e[0])&&Array.isArray(e[0][0]))return e.reduce((a,i)=>a+se(i),0);let r=0;for(let a=0;a<e.length-1;a++){const i=e[a],t=e[a+1];Array.isArray(i)&&Array.isArray(t)&&i.length>=2&&t.length>=2&&(r+=ke([i[0],i[1]],[t[0],t[1]]))}return r}function Y(e){if(!Array.isArray(e))return 0;const r=e.length;if(r<3)return 0;let a=0;for(let t=0;t<r;t++){const o=e[t],n=e[(t+1)%r],s=e[(t+2)%r];if(!Array.isArray(o)||!Array.isArray(n)||!Array.isArray(s))continue;const l=(n[1]-o[1])*(Math.PI/180),c=(n[0]-o[0])*(Math.PI/180),d=(s[1]-n[1])*(Math.PI/180),u=(s[0]-n[0])*(Math.PI/180);a+=l*u-c*d}const i=Math.abs(a*(oe*oe)/2);return isNaN(i)?0:i}function le(e){if(!Array.isArray(e)||e.length===0)return 0;if(Array.isArray(e[0])&&typeof e[0][0]=="number")return Y(e);if(Array.isArray(e[0])&&Array.isArray(e[0][0])){if(Array.isArray(e[0][0][0]))return e.reduce((i,t)=>i+le(t),0);const r=Y(e[0]);let a=0;for(let i=1;i<e.length;i++)a+=Y(e[i]);return Math.max(0,r-a)}return 0}function ce(e){if(!e||e.length===0)return"";const r=e.filter(i=>i.type==="Polygon"||i.type==="MultiPolygon"||i.geometryType==="Polygon");if(r.length>0){const i=r.reduce((t,o)=>t+(le(o.coordinates)||0),0);return i>=1e4?`${(i/1e4).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} ha`:`${Math.round(i).toLocaleString("pt-BR")} m²`}const a=e.filter(i=>i.type==="LineString"||i.type==="MultiLineString"||i.geometryType==="LineString");if(a.length>0){const i=a.reduce((t,o)=>t+(se(o.coordinates)||0),0);return i>=1e3?`${(i/1e3).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} km`:`${Math.round(i).toLocaleString("pt-BR")} m`}return""}function $(e){return e==null?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}const ta=/^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;function V(e,r="#00E08A"){if(!e||typeof e!="string")return r;const a=e.trim();return ta.test(a)?a:r}function re(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function ia(e,r,a){const i=r/100,t=a/100,o=l=>(l+e/30)%12,n=i*Math.min(t,1-t),s=l=>t-n*Math.max(-1,Math.min(o(l)-3,Math.min(9-o(l),1)));return[s(0)*255,s(8)*255,s(4)*255]}function oa(e,r="#000000"){if(!e||typeof e!="string")return r;const a=e.trim().toLowerCase(),i=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);if(i){const o=i[1];return o.length<=4?`#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}`:`#${o.slice(0,6)}`}const t=/^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);if(t){const o=t[2].split(/[\s,/]+/).filter(Boolean).map(n=>parseFloat(n));if(o.length>=3&&o.slice(0,3).every(n=>!isNaN(n))){const[n,s,l]=o,[c,d,u]=t[1]==="rgb"?[n,s,l]:ia(n,s,l);return`#${re(c)}${re(d)}${re(u)}`}}return r}function T(e,r,a){const i=e.querySelectorAll(`[${r}]`);for(let t=0;t<i.length;t++)if(i[t].getAttribute(r)===a)return i[t];return null}function Ie(e,r=80){let a=null;return(...i)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(...i),a=null},r)}}function P(e,r){e.setAttribute("title",r),e.setAttribute("aria-label",r)}const de=[{id:"none",nome:"Sem Mapa",descricao:"Tela CAD neutra com grade quadriculada"},{id:"google_satelite_puro",nome:"Google Puro",descricao:"Satélite limpo sem ruas ou rótulos",thumbnailUrl:"https://images.unsplash.com/photo-1524661135-423995f22d0b?w=160&auto=format&fit=crop&q=80"},{id:"google_satelite",nome:"Google Híbrido",descricao:"Satélite com nomes de ruas e divisas",thumbnailUrl:"https://images.unsplash.com/photo-1524661135-423995f22d0b?w=160&auto=format&fit=crop&q=80"},{id:"satelite",nome:"Esri Satélite",descricao:"Imagens orbitais de alta resolução",thumbnailUrl:"https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=160&auto=format&fit=crop&q=80"},{id:"osm",nome:"OpenStreetMap",descricao:"Mapa viário e urbano colaborativo",thumbnailUrl:"https://images.unsplash.com/photo-1569336415962-a4bd9f69cd83?w=160&auto=format&fit=crop&q=80"},{id:"topografia",nome:"Topografia",descricao:"Curvas de nível e relevo sombreado",thumbnailUrl:"https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?w=160&auto=format&fit=crop&q=80"},{id:"dark",nome:"Dark Canvas",descricao:"Mapa escuro de alto contraste para CAD",thumbnailUrl:"https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"}];function Ce(e=de,r="satelite"){return!e||e.length===0?"":`
78
- <div class="ui-basemap-section">
79
- <div class="ui-basemap-title">Mapa Base</div>
80
- <div class="ui-basemap-grid">
81
- ${e.map(i=>{const t=r===i.id,o=$(i.id),n=$(i.nome),s=$(i.descricao||i.nome);let l="";return i.thumbnailUrl?l=`<img class="ui-basemap-preview" src="${$(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />`:l=`<div class="ui-basemap-preview-none">${b.gradeCad}</div>`,`
82
- <div class="ui-basemap-card ${t?"active":""}" data-basemap-id="${o}" role="button" tabindex="0" aria-pressed="${t}" title="${s}">
83
- ${l}
84
- <span>${n}</span>
77
+ </svg>`},se=6378137;function $e(e,r){if(!e||!r)return 0;const a=e[0]*Math.PI/180,i=e[1]*Math.PI/180,t=r[0]*Math.PI/180,o=r[1]*Math.PI/180,n=t-a,s=o-i,l=Math.sin(n/2)*Math.sin(n/2)+Math.cos(a)*Math.cos(t)*Math.sin(s/2)*Math.sin(s/2);return se*2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))}function ce(e){if(!Array.isArray(e)||e.length<2)return 0;if(Array.isArray(e[0])&&Array.isArray(e[0][0]))return e.reduce((a,i)=>a+ce(i),0);let r=0;for(let a=0;a<e.length-1;a++){const i=e[a],t=e[a+1];Array.isArray(i)&&Array.isArray(t)&&i.length>=2&&t.length>=2&&(r+=$e([i[0],i[1]],[t[0],t[1]]))}return r}function K(e){if(!Array.isArray(e))return 0;const r=e.length;if(r<3)return 0;let a=0;for(let t=0;t<r;t++){const o=e[t],n=e[(t+1)%r],s=e[(t+2)%r];if(!Array.isArray(o)||!Array.isArray(n)||!Array.isArray(s))continue;const l=(n[1]-o[1])*(Math.PI/180),c=(n[0]-o[0])*(Math.PI/180),d=(s[1]-n[1])*(Math.PI/180),p=(s[0]-n[0])*(Math.PI/180);a+=l*p-c*d}const i=Math.abs(a*(se*se)/2);return isNaN(i)?0:i}function de(e){if(!Array.isArray(e)||e.length===0)return 0;if(Array.isArray(e[0])&&typeof e[0][0]=="number")return K(e);if(Array.isArray(e[0])&&Array.isArray(e[0][0])){if(Array.isArray(e[0][0][0]))return e.reduce((i,t)=>i+de(t),0);const r=K(e[0]);let a=0;for(let i=1;i<e.length;i++)a+=K(e[i]);return Math.max(0,r-a)}return 0}function ue(e){if(!e||e.length===0)return"";const r=e.filter(i=>i.type==="Polygon"||i.type==="MultiPolygon"||i.geometryType==="Polygon");if(r.length>0){const i=r.reduce((t,o)=>t+(de(o.coordinates)||0),0);return i>=1e4?`${(i/1e4).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} ha`:`${Math.round(i).toLocaleString("pt-BR")} m²`}const a=e.filter(i=>i.type==="LineString"||i.type==="MultiLineString"||i.geometryType==="LineString");if(a.length>0){const i=a.reduce((t,o)=>t+(ce(o.coordinates)||0),0);return i>=1e3?`${(i/1e3).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} km`:`${Math.round(i).toLocaleString("pt-BR")} m`}return""}function S(e){return e==null?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}const sa=/^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;function X(e,r="#00E08A"){if(!e||typeof e!="string")return r;const a=e.trim();return sa.test(a)?a:r}function ie(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function la(e,r,a){const i=r/100,t=a/100,o=l=>(l+e/30)%12,n=i*Math.min(t,1-t),s=l=>t-n*Math.max(-1,Math.min(o(l)-3,Math.min(9-o(l),1)));return[s(0)*255,s(8)*255,s(4)*255]}function ca(e,r="#000000"){if(!e||typeof e!="string")return r;const a=e.trim().toLowerCase(),i=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);if(i){const o=i[1];return o.length<=4?`#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}`:`#${o.slice(0,6)}`}const t=/^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);if(t){const o=t[2].split(/[\s,/]+/).filter(Boolean).map(n=>parseFloat(n));if(o.length>=3&&o.slice(0,3).every(n=>!isNaN(n))){const[n,s,l]=o,[c,d,p]=t[1]==="rgb"?[n,s,l]:la(n,s,l);return`#${ie(c)}${ie(d)}${ie(p)}`}}return r}function D(e,r,a){const i=e.querySelectorAll(`[${r}]`);for(let t=0;t<i.length;t++)if(i[t].getAttribute(r)===a)return i[t];return null}function Se(e,r=80){let a=null;return(...i)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(...i),a=null},r)}}function P(e,r){e.setAttribute("title",r),e.setAttribute("aria-label",r)}const pe=[{id:"none",nome:"Sem Mapa",descricao:"Tela CAD neutra com grade quadriculada"},{id:"google_satelite_puro",nome:"Google Puro",descricao:"Satélite limpo sem ruas ou rótulos",thumbnailUrl:"https://images.unsplash.com/photo-1524661135-423995f22d0b?w=160&auto=format&fit=crop&q=80"},{id:"google_satelite",nome:"Google Híbrido",descricao:"Satélite com nomes de ruas e divisas",thumbnailUrl:"https://images.unsplash.com/photo-1524661135-423995f22d0b?w=160&auto=format&fit=crop&q=80"},{id:"satelite",nome:"Esri Satélite",descricao:"Imagens orbitais de alta resolução",thumbnailUrl:"https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=160&auto=format&fit=crop&q=80"},{id:"osm",nome:"OpenStreetMap",descricao:"Mapa viário e urbano colaborativo",thumbnailUrl:"https://images.unsplash.com/photo-1569336415962-a4bd9f69cd83?w=160&auto=format&fit=crop&q=80"},{id:"topografia",nome:"Topografia",descricao:"Curvas de nível e relevo sombreado",thumbnailUrl:"https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?w=160&auto=format&fit=crop&q=80"},{id:"dark",nome:"Dark Canvas",descricao:"Mapa escuro de alto contraste para CAD",thumbnailUrl:"https://images.unsplash.com/photo-1518709268805-4e9042af9f23?w=160&auto=format&fit=crop&q=80"}];function fe(e,r){const a=Array.isArray(e)?e.find(i=>i.id===r):void 0;return a&&typeof a.nome=="string"?a.nome:""}function Me(e=pe,r="satelite",a=!1){if(!e||e.length===0)return"";const i=e.map(t=>{const o=r===t.id,n=S(t.id),s=S(t.nome),l=S(t.descricao||t.nome);let c="";return t.thumbnailUrl?c=`<img class="ui-basemap-preview" src="${S(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />`:c=`<div class="ui-basemap-preview-none">${v.gradeCad}</div>`,`
78
+ <div class="ui-basemap-card ${o?"active":""}" data-basemap-id="${n}" role="button" tabindex="0" aria-pressed="${o}" title="${l}">
79
+ ${c}
80
+ <span>${s}</span>
85
81
  </div>
86
- `}).join("")}
87
- </div>
82
+ `}).join("");return`
83
+ <div class="ui-basemap-section ${a?"recolhido":""}">
84
+ <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"}">
85
+ <span class="ui-basemap-title">Mapa Base</span>
86
+ <span class="ui-basemap-atual" data-basemap-atual>${S(fe(e,r))}</span>
87
+ <span class="ui-chevron-icon ${a?"":"open"}">${v.chevronDir}</span>
88
+ </button>
89
+ ${a?"":`<div class="ui-basemap-grid" id="ui-basemap-grid">
90
+ ${i}
91
+ </div>`}
88
92
  </div>
89
- `}function Le(e){const r=new Map;e.forEach(o=>r.set(o.id,o));const a=new Map,i=[];e.forEach(o=>{o.parentId&&r.has(o.parentId)?(a.has(o.parentId)||a.set(o.parentId,[]),a.get(o.parentId).push(o)):i.push(o)});const t=(o,n)=>{const s=a.get(o.id)||(Array.isArray(o.children)?o.children:[]),l=n>0?"&nbsp;&nbsp;".repeat(n)+"↳ ":s.length>0||o.isGroup?"📁 ":"",c=`<option value="${$(o.id)}">${l}${$(o.name)}</option>`,d=s.map(u=>t(u,n+1)).join("");return c+d};return i.map(o=>t(o,0)).join("")}function $e(e,r,a){const i=r.filter(c=>a.has(c.id)),t=i.length>0,o=ce(i),n=t?i.length:e.length,s=t?i.length>1?"selecionados":"selecionado":e.length>1?"camadas":"camada",l=Le(e);return`
93
+ `}function ze(e){const r=new Map;e.forEach(o=>r.set(o.id,o));const a=new Map,i=[];e.forEach(o=>{o.parentId&&r.has(o.parentId)?(a.has(o.parentId)||a.set(o.parentId,[]),a.get(o.parentId).push(o)):i.push(o)});const t=(o,n)=>{const s=a.get(o.id)||(Array.isArray(o.children)?o.children:[]),l=n>0?"&nbsp;&nbsp;".repeat(n)+"↳ ":s.length>0||o.isGroup?"📁 ":"",c=`<option value="${S(o.id)}">${l}${S(o.name)}</option>`,d=s.map(p=>t(p,n+1)).join("");return c+d};return i.map(o=>t(o,0)).join("")}function Fe(e,r,a){const i=r.filter(c=>a.has(c.id)),t=i.length>0,o=ue(i),n=t?i.length:e.length,s=t?i.length>1?"selecionados":"selecionado":e.length>1?"camadas":"camada",l=ze(e);return`
90
94
  <div class="ui-tree-footer ${t?"tem-selecao":"sem-selecao"}">
91
95
  <div class="ui-footer-left">
92
96
  <span class="ui-footer-count" id="footer-count">${n}</span>
93
97
  <span class="ui-footer-label" id="footer-label">${s}</span>
94
- <span class="ui-footer-metric" id="footer-metric" style="display: ${o?"inline-flex":"none"};">${o?`${b.reguaMetrica} ${o}`:""}</span>
98
+ <span class="ui-footer-metric" id="footer-metric" style="display: ${o?"inline-flex":"none"};">${o?`${v.reguaMetrica} ${o}`:""}</span>
95
99
  </div>
96
100
 
97
101
  <!-- Ações de topo/gerais quando não há nada selecionado -->
98
102
  <div class="ui-footer-actions-gerais" style="display: ${t?"none":"flex"};">
99
103
  <button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
100
- ${b.moverPasta}
104
+ ${v.moverPasta}
101
105
  <span>+ Grupo</span>
102
106
  </button>
103
107
  <button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
104
- ${b.mais}
108
+ ${v.mais}
105
109
  <span>+ Camada</span>
106
110
  </button>
107
111
  </div>
@@ -109,11 +113,11 @@
109
113
  <!-- Ações em massa ativadas quando há seleção -->
110
114
  <div class="ui-footer-right ui-footer-bulk-actions" style="display: ${t?"flex":"none"};">
111
115
  <button class="ui-footer-btn ${t?"":"disabled"}" id="btn-footer-vis" title="Alternar visibilidade coletiva" aria-label="Alternar visibilidade coletiva" ${t?"":"disabled"}>
112
- ${b.olhoAberto}
116
+ ${v.olhoAberto}
113
117
  </button>
114
118
 
115
119
  <button class="ui-footer-btn ${t?"":"disabled"}" id="btn-footer-lock" title="Alternar bloqueio coletivo" aria-label="Alternar bloqueio coletivo" ${t?"":"disabled"}>
116
- ${b.cadeadoTrancado}
120
+ ${v.cadeadoTrancado}
117
121
  </button>
118
122
 
119
123
  <div class="ui-footer-color-wrapper ${t?"":"disabled"}" title="Alterar cor dos selecionados">
@@ -129,77 +133,77 @@
129
133
  </div>
130
134
 
131
135
  <button class="ui-footer-btn btn-danger-footer ${t?"":"disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${t?"":"disabled"}>
132
- ${b.lixeira}
136
+ ${v.lixeira}
133
137
  </button>
134
138
 
135
- ${t?`<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${b.fechar}</button>`:""}
139
+ ${t?`<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${v.fechar}</button>`:""}
136
140
  </div>
137
141
  </div>
138
- `}const te=64;function ye(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])}function Se(e){return!Array.isArray(e)||e.length===0?[]:ye(e[0])?[e.filter(ye)]:e.flatMap(Se)}function we(e){if(e.length<=te)return e;const r=e.length/te,a=[];for(let i=0;i<te;i++)a.push(e[Math.floor(i*r)]);return a.push(e[e.length-1]),a}function na(e,r,a){const i=Se(r).filter(y=>y.length>0);if(i.length===0)return"";let t=1/0,o=-1/0,n=1/0,s=-1/0;for(const y of i)for(const[w,S]of y)S<t&&(t=S),S>o&&(o=S),-w<n&&(n=-w),-w>s&&(s=-w);const l=16,c=2,d=l-c*2,u=o-t,p=s-n,f=Math.max(u,p),m=f>0?d/f:0,g=c+(d-u*m)/2,L=c+(d-p*m)/2,h=y=>Math.round(y*100)/100,A=([y,w])=>`${h(g+(w-t)*m)},${h(L+(-y-n)*m)}`,C=e==="polygon"||e==="multipolygon",x=e==="linestring"||e==="multilinestring",v=y=>`<svg viewBox="0 0 ${l} ${l}" width="100%" height="100%" aria-hidden="true">${y}</svg>`;if(C){const y=i.filter(w=>w.length>=3).map(w=>`M${we(w).map(A).join("L")}Z`).join("");return y?v(`<path d="${y}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`):""}if(x){const y=i.filter(w=>w.length>=2).map(w=>`M${we(w).map(A).join("L")}`).join("");return y?v(`<path d="${y}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`):""}return""}function Me(e,r,a){const i=V(r,"#00E08A"),t=(e||"").toLowerCase(),o=a!==void 0?na(t,a,i):"";return o||(t==="polygon"||t==="multipolygon"?`<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${i}" fill-opacity="0.45" stroke="${i}" stroke-width="1.5"/></svg>`:t==="linestring"||t==="multilinestring"?`<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${i}" stroke-width="2"/></svg>`:t==="text"?`<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${i}" text-anchor="middle" font-family="sans-serif">T</text></svg>`:`<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${i}" stroke="#ffffff" stroke-width="1.2"/></svg>`)}function ze(e){const r=new Map;e.forEach(o=>r.set(o.id,o));const a=new Map,i=[];e.forEach(o=>{o.parentId&&r.has(o.parentId)&&o.parentId!==o.id?(a.has(o.parentId)||a.set(o.parentId,[]),a.get(o.parentId).push(o)):i.push(o)});function t(o,n){const s=a.get(o.id)||(Array.isArray(o.children)?o.children:[]);return{camada:o,depth:n,subcamadas:s.map(l=>t(l,n+1))}}return i.map(o=>t(o,0))}const ue=80;function N(e,r){const a=(r||"").trim().toLowerCase();return a?e.filter(i=>(i.name||"").toLowerCase().includes(a)||(i.category||"").toLowerCase().includes(a)||(i.type||"").toLowerCase().includes(a)):e}function Fe(e,r,a,i="",t=ue){const o=(i||"").trim()!=="",n=[],s=new Map;for(let l=0;l<r.length;l++){const c=r[l],d=c.layerId||"";s.has(d)||s.set(d,[]),s.get(d).push(c)}for(let l=0;l<e.length;l++){const c=e[l];if(o||a.has(c.id)){const d=N(s.get(c.id)||[],i).slice(0,t);for(let u=0;u<d.length;u++)n.push(d[u].id)}}return n}function Be(e,r,a,i,t,o){if(!e.includes(i))return null;const n=new Set(r);let s=a;if(o&&a&&e.includes(a)){const l=e.indexOf(a),c=e.indexOf(i),d=Math.min(l,c),u=Math.max(l,c);t||n.clear();for(let p=d;p<=u;p++)n.add(e[p])}else t?(n.has(i)?n.delete(i):n.add(i),s=i):(n.clear(),n.add(i),s=i);return{selecionados:n,ultimoClicadoId:s}}function Q(e,r){if(e.size===0)return;const a=new Set(r.map(i=>i.id));for(const i of e)a.has(i)||e.delete(i)}function qe(e){const{camadas:r,feicoes:a,camadaAtivaId:i,expandedLayers:t,selectedFeatureIds:o,activeSettingsLayerId:n,editingLayerId:s,editingFeatureId:l,searchQuery:c,limiteFeicoesPorCamada:d=ue,mostrarBotaoColapsar:u=!1}=e,p=(c||"").trim().toLowerCase(),f=new Map;for(let x=0;x<a.length;x++){const v=a[x],y=v.layerId||"";f.has(y)||f.set(y,[]),f.get(y).push(v)}const m=r.every(x=>x.visible!==!1),g=r.length>0&&r.every(x=>t.has(x.id)),L=`
142
+ `}const oe=64;function ke(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])}function Be(e){return!Array.isArray(e)||e.length===0?[]:ke(e[0])?[e.filter(ke)]:e.flatMap(Be)}function Ie(e){if(e.length<=oe)return e;const r=e.length/oe,a=[];for(let i=0;i<oe;i++)a.push(e[Math.floor(i*r)]);return a.push(e[e.length-1]),a}function da(e,r,a){const i=Be(r).filter(h=>h.length>0);if(i.length===0)return"";let t=1/0,o=-1/0,n=1/0,s=-1/0;for(const h of i)for(const[w,$]of h)$<t&&(t=$),$>o&&(o=$),-w<n&&(n=-w),-w>s&&(s=-w);const l=16,c=2,d=l-c*2,p=o-t,f=s-n,m=Math.max(p,f),u=m>0?d/m:0,g=c+(d-p*u)/2,k=c+(d-f*u)/2,x=h=>Math.round(h*100)/100,y=([h,w])=>`${x(g+(w-t)*u)},${x(k+(-h-n)*u)}`,L=e==="polygon"||e==="multipolygon",C=e==="linestring"||e==="multilinestring",b=h=>`<svg viewBox="0 0 ${l} ${l}" width="100%" height="100%" aria-hidden="true">${h}</svg>`;if(L){const h=i.filter(w=>w.length>=3).map(w=>`M${Ie(w).map(y).join("L")}Z`).join("");return h?b(`<path d="${h}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`):""}if(C){const h=i.filter(w=>w.length>=2).map(w=>`M${Ie(w).map(y).join("L")}`).join("");return h?b(`<path d="${h}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`):""}return""}function qe(e,r,a){const i=X(r,"#00E08A"),t=(e||"").toLowerCase(),o=a!==void 0?da(t,a,i):"";return o||(t==="polygon"||t==="multipolygon"?`<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${i}" fill-opacity="0.45" stroke="${i}" stroke-width="1.5"/></svg>`:t==="linestring"||t==="multilinestring"?`<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${i}" stroke-width="2"/></svg>`:t==="text"?`<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${i}" text-anchor="middle" font-family="sans-serif">T</text></svg>`:`<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${i}" stroke="#ffffff" stroke-width="1.2"/></svg>`)}function Pe(e){const r=new Map;e.forEach(o=>r.set(o.id,o));const a=new Map,i=[];e.forEach(o=>{o.parentId&&r.has(o.parentId)&&o.parentId!==o.id?(a.has(o.parentId)||a.set(o.parentId,[]),a.get(o.parentId).push(o)):i.push(o)});function t(o,n){const s=a.get(o.id)||(Array.isArray(o.children)?o.children:[]);return{camada:o,depth:n,subcamadas:s.map(l=>t(l,n+1))}}return i.map(o=>t(o,0))}const me=80;function N(e,r){const a=(r||"").trim().toLowerCase();return a?e.filter(i=>(i.name||"").toLowerCase().includes(a)||(i.category||"").toLowerCase().includes(a)||(i.type||"").toLowerCase().includes(a)):e}function ge(e,r,a){var f,m;const i=(a||"").trim().toLowerCase();if(!i)return null;const t=new Map,o=new Map;for(const u of e)t.set(u.id,u),u.parentId&&u.parentId!==u.id&&(o.has(u.parentId)||o.set(u.parentId,[]),o.get(u.parentId).push(u.id));const n=new Map;for(const u of r){const g=u.layerId||"";n.has(g)||n.set(g,[]),n.get(g).push(u)}const s=new Set,l=new Set;for(const u of e)(typeof u.name=="string"?u.name.toLowerCase():"").includes(i)?(s.add(u.id),l.add(u.id)):N(n.get(u.id)||[],i).length>0&&l.add(u.id);const c=new Set(l);for(const u of l){const g=new Set([u]);let k=(f=t.get(u))==null?void 0:f.parentId;for(;k&&t.has(k)&&!g.has(k);)g.add(k),c.add(k),k=(m=t.get(k))==null?void 0:m.parentId}const d=[...s];for(;d.length>0;){const u=d.pop();for(const g of o.get(u)||[])c.has(g)||(c.add(g),d.push(g))}const p=new Map;for(const u of c){const g=n.get(u)||[];p.set(u,s.has(u)?g:N(g,i))}return{camadasVisiveis:c,feicoesPorCamada:p}}function De(e,r,a,i="",t=me){const o=ge(e,r,i),n=[],s=new Map;for(let l=0;l<r.length;l++){const c=r[l],d=c.layerId||"";s.has(d)||s.set(d,[]),s.get(d).push(c)}for(let l=0;l<e.length;l++){const c=e[l];let d;if(o){if(!o.camadasVisiveis.has(c.id))continue;d=o.feicoesPorCamada.get(c.id)||[]}else if(a.has(c.id))d=s.get(c.id)||[];else continue;const p=d.slice(0,t);for(let f=0;f<p.length;f++)n.push(p[f].id)}return n}function Te(e,r,a,i,t,o){if(!e.includes(i))return null;const n=new Set(r);let s=a;if(o&&a&&e.includes(a)){const l=e.indexOf(a),c=e.indexOf(i),d=Math.min(l,c),p=Math.max(l,c);t||n.clear();for(let f=d;f<=p;f++)n.add(e[f])}else t?(n.has(i)?n.delete(i):n.add(i),s=i):(n.clear(),n.add(i),s=i);return{selecionados:n,ultimoClicadoId:s}}function W(e,r){if(e.size===0)return;const a=new Set(r.map(i=>i.id));for(const i of e)a.has(i)||e.delete(i)}function Re(e){const{camadas:r,feicoes:a,camadaAtivaId:i,expandedLayers:t,selectedFeatureIds:o,activeSettingsLayerId:n,editingLayerId:s,editingFeatureId:l,searchQuery:c,limiteFeicoesPorCamada:d=me,mostrarBotaoColapsar:p=!1}=e,f=(c||"").trim().toLowerCase(),m=ge(r,a,f),u=new Map;for(let b=0;b<a.length;b++){const h=a[b],w=h.layerId||"";u.has(w)||u.set(w,[]),u.get(w).push(h)}const g=r.every(b=>b.visible!==!1),k=r.length>0&&r.every(b=>t.has(b.id)),x=`
139
143
  <div class="ui-tree-toolbar">
140
144
  <div class="ui-tree-title-group">
141
145
  <span class="ui-tree-section-title">CAMADAS</span>
142
146
  <span class="ui-tree-count-badge">${r.length}</span>
143
147
  </div>
144
148
  <div class="ui-tree-actions">
145
- <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${m?"Ocultar Todas as Camadas":"Exibir Todas as Camadas"}" aria-label="${m?"Ocultar Todas as Camadas":"Exibir Todas as Camadas"}">
146
- ${m?b.olhoAberto:b.olhoFechado}
149
+ <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${g?"Ocultar Todas as Camadas":"Exibir Todas as Camadas"}" aria-label="${g?"Ocultar Todas as Camadas":"Exibir Todas as Camadas"}">
150
+ ${g?v.olhoAberto:v.olhoFechado}
147
151
  </button>
148
- <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${g?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}" title="${g?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}">
149
- <span class="ui-chevron-icon ${g?"open":""}">${b.chevronDir}</span>
152
+ <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${k?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}" title="${k?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}">
153
+ <span class="ui-chevron-icon ${k?"open":""}">${v.chevronDir}</span>
150
154
  </button>
151
155
  <button id="btn-add-group" class="ui-tree-btn-group" title="Criar grupo / pasta de camadas" aria-label="Criar grupo de camadas">
152
- ${b.moverPasta} Grupo
156
+ ${v.moverPasta} Grupo
153
157
  </button>
154
158
  <button id="btn-add-layer" class="ui-tree-btn-new" title="Adicionar nova camada vetorial">
155
- ${b.mais} Camada
159
+ ${v.mais} Camada
156
160
  </button>
157
- ${u?`<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>`:""}
161
+ ${p?`<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${v.recolherPainel}</button>`:""}
158
162
  </div>
159
163
  </div>
160
164
 
161
165
  <div class="ui-tree-search-wrapper">
162
- <span class="ui-tree-search-icon">${b.busca}</span>
163
- <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="${$(c)}" />
164
- ${c?`<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${b.fechar}</button>`:""}
166
+ <span class="ui-tree-search-icon">${v.busca}</span>
167
+ <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="${S(c)}" />
168
+ ${c?`<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${v.fechar}</button>`:""}
165
169
  </div>
166
- `,h=x=>{const v=x.camada,y=x.depth,w=x.subcamadas,S=!!(v.isGroup||w.length>0),k=$(v.id),j=$(v.name||(S?"Novo Grupo":"Camada")),M=V(v.color,"#00E08A"),B=v.visible!==!1,q=v.locked===!0,G=p?!0:t.has(v.id),J=n===v.id,fe=i===v.id,F=N(f.get(v.id)||[],p),me=F.length>0&&F.every(I=>o.has(I.id)),_e=!me&&F.some(I=>o.has(I.id)),Ye=F.slice(0,d),Ve=F.length>d,Ke=Ye.map(I=>{const D=$(I.id),ve=$(I.name||"Feição"),be=V(I.color,M),U=I.visible!==!1,W=q,Z=I.locked===!0||W,he=W?"Bloqueada pela camada":Z?"Desbloquear Feição":"Bloquear Feição",ee=o.has(I.id),xe=I.status;let ae="";return xe==="oficial"?ae='<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>':xe==="previa"&&(ae='<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'),`
167
- <div class="ui-feat-row ${ee?"selected-row":""} ${U?"":"hidden-row"}" data-feat-row="${D}" data-feat-select="${D}" data-feat-layer="${k}" role="treeitem" aria-selected="${ee}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
168
- <div class="ui-col ui-col-eye" data-feat-eye="${D}" role="button" tabindex="0" aria-label="${U?"Ocultar Feição":"Exibir Feição"}" title="${U?"Ocultar Feição":"Exibir Feição"}">
169
- ${U?b.olhoAberto:b.olhoFechado}
170
+ `,y=b=>{const h=b.camada;if(m&&!m.camadasVisiveis.has(h.id))return"";const w=b.depth,$=b.subcamadas,j=m?$.filter(I=>m.camadasVisiveis.has(I.camada.id)):$,B=!!(h.isGroup||$.length>0),A=S(h.id),T=S(h.name||(B?"Novo Grupo":"Camada")),F=X(h.color,"#00E08A"),U=h.visible!==!1,H=h.locked===!0,V=f?!0:t.has(h.id),Z=n===h.id,be=i===h.id,z=m?m.feicoesPorCamada.get(h.id)||[]:u.get(h.id)||[],he=z.length>0&&z.every(I=>o.has(I.id)),Xe=!he&&z.some(I=>o.has(I.id)),Qe=z.slice(0,d),Je=z.length>d,We=Qe.map(I=>{const q=S(I.id),ye=S(I.name||"Feição"),we=X(I.color,F),_=I.visible!==!1,ee=H,ae=I.locked===!0||ee,Ee=ee?"Bloqueada pela camada":ae?"Desbloquear Feição":"Bloquear Feição",re=o.has(I.id),Ae=I.status;let te="";return Ae==="oficial"?te='<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>':Ae==="previa"&&(te='<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'),`
171
+ <div class="ui-feat-row ${re?"selected-row":""} ${_?"":"hidden-row"}" data-feat-row="${q}" data-feat-select="${q}" data-feat-layer="${A}" role="treeitem" aria-selected="${re}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
172
+ <div class="ui-col ui-col-eye" data-feat-eye="${q}" role="button" tabindex="0" aria-label="${_?"Ocultar Feição":"Exibir Feição"}" title="${_?"Ocultar Feição":"Exibir Feição"}">
173
+ ${_?v.olhoAberto:v.olhoFechado}
170
174
  </div>
171
175
 
172
- <div class="ui-col ui-col-lock ${Z?"":"ui-lock-open"}" data-feat-lock="${D}" ${W?'data-locked-by-layer="true"':""} role="button" tabindex="0" aria-label="${he}" title="${he}">
173
- ${Z?b.cadeadoTrancado:b.cadeadoAberto}
176
+ <div class="ui-col ui-col-lock ${ae?"":"ui-lock-open"}" data-feat-lock="${q}" ${ee?'data-locked-by-layer="true"':""} role="button" tabindex="0" aria-label="${Ee}" title="${Ee}">
177
+ ${ae?v.cadeadoTrancado:v.cadeadoAberto}
174
178
  </div>
175
179
 
176
- <div class="ui-col ui-col-colorbar" style="background: ${be};"></div>
180
+ <div class="ui-col ui-col-colorbar" style="background: ${we};"></div>
177
181
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
178
182
  <div class="ui-col ui-col-thumb">
179
- <div class="ui-thumb-box">${Me(I.type||I.geometryType,be,I.coordinates)}</div>
183
+ <div class="ui-thumb-box">${qe(I.type||I.geometryType,we,I.coordinates)}</div>
180
184
  </div>
181
185
 
182
- <div class="ui-col ui-col-name" data-feat-name-trigger="${D}" title="Duplo clique para renomear">
183
- ${l===I.id?`<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${D}" value="${ve}" />`:`<span class="ui-name-text">${ve}</span>${ae}`}
186
+ <div class="ui-col ui-col-name" data-feat-name-trigger="${q}" title="Duplo clique para renomear">
187
+ ${l===I.id?`<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${q}" value="${ye}" />`:`<span class="ui-name-text">${ye}</span>${te}`}
184
188
  </div>
185
189
 
186
190
  <div class="ui-col ui-col-actions">
187
- <button class="ui-micro-btn" data-feat-fit="${D}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${b.alvoEnquadrar}</button>
191
+ <button class="ui-micro-btn" data-feat-fit="${q}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${v.alvoEnquadrar}</button>
188
192
  </div>
189
193
 
190
- <div class="ui-col ui-col-target" data-feat-target="${D}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
191
- <div class="ui-target-circle ${ee?"selected":""}"></div>
194
+ <div class="ui-col ui-col-target" data-feat-target="${q}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
195
+ <div class="ui-target-circle ${re?"selected":""}"></div>
192
196
  </div>
193
197
  </div>
194
- `}).join(""),Xe=Ve?`<div style="padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: rgba(0,0,0,0.2);">Exibindo ${d} de ${F.length} feições. Use a busca acima para filtrar.</div>`:"",ge=v.opacity!==void 0?v.opacity:1,Qe=Math.round(ge*100),Je=r.filter(I=>I.id!==v.id).map(I=>`<option value="${$(I.id)}" ${v.parentId===I.id?"selected":""}>${I.isGroup?"📁 ":""}${$(I.name)}</option>`).join(""),We=J?`
195
- <div class="ui-layer-settings-drawer" id="settings-drawer-${k}" style="--drawer-cor-camada: ${M};">
198
+ `}).join(""),Ze=Je?`<div style="padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: rgba(0,0,0,0.2);">Exibindo ${d} de ${z.length} feições. Use a busca acima para filtrar.</div>`:"",xe=h.opacity!==void 0?h.opacity:1,ea=Math.round(xe*100),aa=r.filter(I=>I.id!==h.id).map(I=>`<option value="${S(I.id)}" ${h.parentId===I.id?"selected":""}>${I.isGroup?"📁 ":""}${S(I.name)}</option>`).join(""),ra=Z?`
199
+ <div class="ui-layer-settings-drawer" id="settings-drawer-${A}" style="--drawer-cor-camada: ${F};">
196
200
  <div class="ui-drawer-header">
197
201
  <div class="ui-drawer-header-left">
198
- <span class="ui-drawer-icon">${b.engrenagem}</span>
202
+ <span class="ui-drawer-icon">${v.engrenagem}</span>
199
203
  <span class="ui-drawer-title">Configurações da Camada</span>
200
204
  </div>
201
- <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${k}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
202
- ${b.fechar}
205
+ <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${A}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
206
+ ${v.fechar}
203
207
  </button>
204
208
  </div>
205
209
 
@@ -211,9 +215,9 @@
211
215
  </div>
212
216
  <div class="ui-drawer-color-group">
213
217
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
214
- <span class="ui-drawer-color-sample" id="sample-color-${k}" style="background-color: ${M};"></span>
215
- <span class="ui-drawer-color-hex" id="hex-color-${k}">${M.toUpperCase()}</span>
216
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${k}" value="${oa(M,"#00e08a")}" class="ui-drawer-color-native" />
218
+ <span class="ui-drawer-color-sample" id="sample-color-${A}" style="background-color: ${F};"></span>
219
+ <span class="ui-drawer-color-hex" id="hex-color-${A}">${F.toUpperCase()}</span>
220
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${A}" value="${ca(F,"#00e08a")}" class="ui-drawer-color-native" />
217
221
  </label>
218
222
  </div>
219
223
  </div>
@@ -222,10 +226,10 @@
222
226
  <div class="ui-drawer-row">
223
227
  <div class="ui-drawer-row-label">
224
228
  <span>Opacidade</span>
225
- <span class="ui-drawer-badge" id="badge-op-${k}">${Qe}%</span>
229
+ <span class="ui-drawer-badge" id="badge-op-${A}">${ea}%</span>
226
230
  </div>
227
231
  <div class="ui-drawer-slider-container">
228
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(ge)||0}" data-layer-opacity-slider="${k}" class="ui-drawer-slider" />
232
+ <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(xe)||0}" data-layer-opacity-slider="${A}" class="ui-drawer-slider" />
229
233
  </div>
230
234
  </div>
231
235
 
@@ -235,9 +239,9 @@
235
239
  <span>Pertence ao Grupo</span>
236
240
  </div>
237
241
  <div class="ui-drawer-select-wrapper">
238
- <select class="ui-drawer-select" data-layer-parent-select="${k}" aria-label="Grupo pai da camada">
239
- <option value="" ${v.parentId?"":"selected"}>(Nenhum - Nível Principal)</option>
240
- ${Je}
242
+ <select class="ui-drawer-select" data-layer-parent-select="${A}" aria-label="Grupo pai da camada">
243
+ <option value="" ${h.parentId?"":"selected"}>(Nenhum - Nível Principal)</option>
244
+ ${aa}
241
245
  </select>
242
246
  </div>
243
247
  </div>
@@ -245,78 +249,78 @@
245
249
 
246
250
  <div class="ui-drawer-footer">
247
251
  <div class="ui-drawer-meta-info">
248
- <span>${w.length>0?`${w.length} subcamadas · `:""}${F.length} ${F.length===1?"feição":"feições"}</span>
252
+ <span>${$.length>0?`${$.length} subcamadas · `:""}${z.length} ${z.length===1?"feição":"feições"}</span>
249
253
  </div>
250
254
  <div class="ui-drawer-actions">
251
- <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${k}" title="Adicionar nova camada dentro desta">
252
- ${b.mais} Subcamada
255
+ <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${A}" title="Adicionar nova camada dentro desta">
256
+ ${v.mais} Subcamada
253
257
  </button>
254
- <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${k}" title="Excluir esta camada e suas feições">
255
- ${b.lixeira}
258
+ <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${A}" title="Excluir esta camada e suas feições">
259
+ ${v.lixeira}
256
260
  <span class="ui-btn-label">Excluir</span>
257
261
  </button>
258
262
  </div>
259
263
  </div>
260
264
  </div>
261
- `:"",Ze=w.map(I=>h(I)).join("");return`
262
- <div class="ui-layer-group ${y>0?"is-sublayer-group":""}" data-layer-id="${k}" data-layer-depth="${y}" role="treeitem" aria-expanded="${G}">
263
- <div class="ui-layer-row ${B?"":"hidden-layer"} ${fe?"active-drawing-layer":""} ${y>0?"is-sublayer":""} ${S?"is-group-row":""}" data-layer-row="${k}" data-layer-id="${k}" tabindex="-1" draggable="true" style="--layer-depth: ${y}; --layer-active-color: ${M};">
264
- <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${b.dragHandle}</div>
265
+ `:"",ta=j.map(I=>y(I)).join("");return`
266
+ <div class="ui-layer-group ${w>0?"is-sublayer-group":""}" data-layer-id="${A}" data-layer-depth="${w}" role="treeitem" aria-expanded="${V}">
267
+ <div class="ui-layer-row ${U?"":"hidden-layer"} ${be?"active-drawing-layer":""} ${w>0?"is-sublayer":""} ${B?"is-group-row":""}" data-layer-row="${A}" data-layer-id="${A}" tabindex="-1" draggable="true" style="--layer-depth: ${w}; --layer-active-color: ${F};">
268
+ <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${v.dragHandle}</div>
265
269
 
266
- <div class="ui-col ui-col-eye" data-layer-eye="${k}" role="button" tabindex="0" aria-label="${B?"Ocultar Camada":"Exibir Camada"}" title="${B?"Ocultar Camada":"Exibir Camada"}">
267
- ${B?b.olhoAberto:b.olhoFechado}
270
+ <div class="ui-col ui-col-eye" data-layer-eye="${A}" role="button" tabindex="0" aria-label="${U?"Ocultar Camada":"Exibir Camada"}" title="${U?"Ocultar Camada":"Exibir Camada"}">
271
+ ${U?v.olhoAberto:v.olhoFechado}
268
272
  </div>
269
273
 
270
- <div class="ui-col ui-col-lock ${q?"":"ui-lock-open"}" data-layer-lock="${k}" role="button" tabindex="0" aria-label="${q?"Desbloquear Camada":"Bloquear Camada"}" title="${q?"Desbloquear Camada":"Bloquear Camada"}">
271
- ${q?b.cadeadoTrancado:b.cadeadoAberto}
274
+ <div class="ui-col ui-col-lock ${H?"":"ui-lock-open"}" data-layer-lock="${A}" role="button" tabindex="0" aria-label="${H?"Desbloquear Camada":"Bloquear Camada"}" title="${H?"Desbloquear Camada":"Bloquear Camada"}">
275
+ ${H?v.cadeadoTrancado:v.cadeadoAberto}
272
276
  </div>
273
277
 
274
- <div class="ui-col ui-col-colorbar" style="background: ${M};"></div>
278
+ <div class="ui-col ui-col-colorbar" style="background: ${F};"></div>
275
279
 
276
- <div class="ui-col ui-col-chevron" data-layer-expand="${k}" role="button" tabindex="0" aria-label="${G?"Recolher grupo":"Expandir grupo"}">
277
- <span class="ui-chevron-icon ${G?"open":""}">${b.chevronDir}</span>
280
+ <div class="ui-col ui-col-chevron" data-layer-expand="${A}" role="button" tabindex="0" aria-label="${V?"Recolher grupo":"Expandir grupo"}">
281
+ <span class="ui-chevron-icon ${V?"open":""}">${v.chevronDir}</span>
278
282
  </div>
279
283
 
280
- <div class="ui-col ui-col-name" data-layer-name-trigger="${k}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
281
- ${s===v.id?`<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${k}" value="${j}" />`:`${S?`<span class="ui-group-folder-icon" title="Grupo/Pasta">${b.moverPasta}</span>`:""}
282
- <span class="ui-name-text">${j}</span>
283
- ${fe?'<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>':""}
284
- ${w.length>0?`<span class="ui-group-badge" title="${w.length} subcamadas">${w.length} sub</span>`:""}
285
- ${F.length>0||!S?`<span class="ui-count-chip">${F.length}</span>`:""}`}
284
+ <div class="ui-col ui-col-name" data-layer-name-trigger="${A}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
285
+ ${s===h.id?`<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${A}" value="${T}" />`:`${B?`<span class="ui-group-folder-icon" title="Grupo/Pasta">${v.moverPasta}</span>`:""}
286
+ <span class="ui-name-text">${T}</span>
287
+ ${be?'<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>':""}
288
+ ${$.length>0?`<span class="ui-group-badge" title="${$.length} subcamadas">${$.length} sub</span>`:""}
289
+ ${z.length>0||!B?`<span class="ui-count-chip">${z.length}</span>`:""}`}
286
290
  </div>
287
291
 
288
292
  <div class="ui-col ui-col-actions">
289
- <button class="ui-micro-btn" data-layer-fit="${k}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
290
- <button class="ui-micro-btn ${J?"active":""}" data-layer-settings="${k}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${J}">${b.engrenagem}</button>
293
+ <button class="ui-micro-btn" data-layer-fit="${A}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${v.alvoEnquadrar}</button>
294
+ <button class="ui-micro-btn ${Z?"active":""}" data-layer-settings="${A}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${Z}">${v.engrenagem}</button>
291
295
  </div>
292
296
 
293
- <div class="ui-col ui-col-target" data-layer-target="${k}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
294
- <div class="ui-target-circle ${me?"selected":_e?"partial":""}"></div>
297
+ <div class="ui-col ui-col-target" data-layer-target="${A}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
298
+ <div class="ui-target-circle ${he?"selected":Xe?"partial":""}"></div>
295
299
  </div>
296
300
  </div>
297
301
 
298
- ${We}
302
+ ${ra}
299
303
 
300
- <div class="ui-children-container ${y>0?"is-subchildren":""}" role="group" style="display: ${G?"block":"none"};">
304
+ <div class="ui-children-container ${w>0?"is-subchildren":""}" role="group" style="display: ${V?"block":"none"};">
305
+ ${ta}
306
+ ${We}
301
307
  ${Ze}
302
- ${Ke}
303
- ${Xe}
304
- ${w.length===0&&F.length===0?`<div class="ui-empty-row"><span>${p?"Nenhum item correspondente":S?"Grupo vazio (adicione subcamadas ou feições)":"Nenhum elemento neste grupo"}</span></div>`:""}
308
+ ${j.length===0&&z.length===0?`<div class="ui-empty-row"><span>${B?"Grupo vazio (adicione subcamadas ou feições)":"Nenhum elemento neste grupo"}</span></div>`:""}
305
309
  </div>
306
310
  </div>
307
- `},C=ze(r).map(x=>h(x)).join("");return`
308
- ${L}
311
+ `},L=Pe(r),C=m&&m.camadasVisiveis.size===0?`<div class="ui-search-empty" role="status">Nenhum resultado para “${S((c||"").trim())}”</div>`:L.map(b=>y(b)).join("");return`
312
+ ${x}
309
313
  <div class="ui-panel-box">
310
314
  <div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true">
311
315
  ${C}
312
316
  </div>
313
317
  </div>
314
- `}function sa(e){return[{gatilho:"data-layer-name-trigger",input:"data-inline-layer-input",marcarEditando:r=>{e.editingLayerId=r},aplicar:(r,a)=>{const i=e.camadas.find(t=>t.id===r);return!a||!i||i.name===a?null:(i.name=a,{detalhe:{camadaId:r,novoNome:a,camada:i},salvar:!0})},emitir:r=>e.dispararEvento("ui-camada-renomeada",r)},{gatilho:"data-feat-name-trigger",input:"data-inline-feat-input",marcarEditando:r=>{e.editingFeatureId=r},aplicar:(r,a)=>{const i=e.feicoes.find(t=>t.id===r);return!a||!i||i.name===a?null:(i.name=a,{detalhe:{feicaoId:r,novoNome:a,feicao:i},salvar:!1})},emitir:r=>e.dispararEvento("ui-feicao-renomeada",r)}]}function la(e,r){for(const a of sa(e))r.querySelectorAll(`[${a.gatilho}]`).forEach(i=>{i.addEventListener("dblclick",t=>{t.stopPropagation();const o=i.getAttribute(a.gatilho);if(!o)return;a.marcarEditando(o),e.solicitarRenderizacao();const n=T(r,a.input,o);if(!n)return;n.focus(),n.select();let s=!1;const l=c=>{var d;if(!s){if(s=!0,a.marcarEditando(null),c){const u=a.aplicar(o,n.value.trim());u&&(u.salvar&&((d=e.salvarLembrancaEstado)==null||d.call(e)),a.emitir(u.detalhe))}e.solicitarRenderizacao()}};n.addEventListener("keydown",c=>{c.key==="Enter"?(c.preventDefault(),l(!0)):c.key==="Escape"&&(c.preventDefault(),l(!1))}),n.addEventListener("blur",()=>l(!0))})})}function ca(e,r,a){const i=new Set;let t=e.find(o=>o.id===r);for(;t&&t.parentId;){if(i.has(t.id)||(i.add(t.id),t.parentId===a))return!0;t=e.find(o=>o.id===(t==null?void 0:t.parentId))}return!1}function da(e){return Number.isFinite(e)?e<.25?"acima":e>.75?"abaixo":"dentro":"dentro"}function ua(e,r,a,i){if(!r||!a||r===a)return null;const t=e.find(l=>l.id===r),o=e.find(l=>l.id===a);if(!t||!o)return null;if(i==="dentro")return ca(e,o.id,t.id)?null:(t.parentId=o.id,{tipo:"hierarquia",camada:t,novoParentId:o.id});const n=e.findIndex(l=>l.id===r);e.splice(n,1);const s=e.findIndex(l=>l.id===a);return s===-1?e.push(t):e.splice(i==="acima"?s:s+1,0,t),t.parentId=o.parentId??null,{tipo:"ordem",camada:t}}function pa(e,r,a,i){if(!r||!a||r===a)return!1;const t=e.findIndex(s=>s.id===r);if(t===-1)return!1;const[o]=e.splice(t,1),n=e.findIndex(s=>s.id===a);return n===-1?e.push(o):e.splice(i?n:n+1,0,o),!0}function fa(e,r,a,i){const t=e.find(s=>s.id===a),o=r.find(s=>s.id===i);if(!t||!o||t.layerId===i)return null;const n=t.layerId;return t.layerId=i,{feicao:t,camadaOrigemId:n,camadaDestinoId:i,mudouDeCamada:!0}}function ma(e,r,a,i){if(!r||!a||r===a)return null;const t=e.findIndex(u=>u.id===r);if(t===-1)return null;const o=e.find(u=>u.id===a);if(!o)return null;const[n]=e.splice(t,1),s=n.layerId,l=o.layerId,c=s!==l;c&&(n.layerId=l);const d=e.findIndex(u=>u.id===a);return d===-1?e.push(n):e.splice(i?d:d+1,0,n),{feicao:n,camadaOrigemId:s,camadaDestinoId:l,mudouDeCamada:c}}const ga=["dragging","drop-above","drop-below","drop-into"];class De{constructor(r,a){E(this,"host");E(this,"shadow");E(this,"cancelarToque",null);this.host=r,this.shadow=a}bindAll(){this.bindInlineRename(),this.bindDragAndDrop(),this.bindTouchDragAndDrop()}destruir(){var r;(r=this.cancelarToque)==null||r.call(this),this.cancelarToque=null}bindInlineRename(){la(this.host,this.shadow)}limparClassesDeArraste(){this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(r=>{r.classList.remove(...ga)})}aposReordenarCamadas(){var r,a;(a=(r=this.host).salvarLembrancaEstado)==null||a.call(r),this.host.dispararEvento("ui-camadas-reordenadas",{camadas:[...this.host.camadas]}),this.host.solicitarRenderizacao()}emitirFeicaoMovida(r){this.host.dispararEvento("ui-feicao-movida",{feicaoId:r.feicao.id,camadaOrigemId:r.camadaOrigemId,camadaDestinoId:r.camadaDestinoId,feicao:r.feicao})}arrasteBloqueado(r){return!!r.closest("input, button, select")||!!this.host.editingLayerId||!!this.host.editingFeatureId}bindDragAndDrop(){let r=null,a=null,i=null;this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach(t=>{const o=t.getAttribute("data-layer-id");o&&(t.addEventListener("dragstart",n=>{const s=n;if(this.arrasteBloqueado(s.target)){s.preventDefault();return}r="layer",a=o,s.dataTransfer&&(s.dataTransfer.setData("text/plain",JSON.stringify({type:"layer",id:o})),s.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",n=>{const s=n;if(s.preventDefault(),s.stopPropagation(),s.dataTransfer&&(s.dataTransfer.dropEffect="move"),r==="layer"){if(a===o)return;const l=t.getBoundingClientRect(),c=da((s.clientY-l.top)/l.height);t.classList.toggle("drop-above",c==="acima"),t.classList.toggle("drop-below",c==="abaixo"),t.classList.toggle("drop-into",c==="dentro")}else r==="feature"&&t.classList.add("drop-into")}),t.addEventListener("dragleave",n=>{const s=n.relatedTarget;s&&t.contains(s)||t.classList.remove("drop-above","drop-below","drop-into")}),t.addEventListener("drop",n=>{var c;const s=n;s.preventDefault(),s.stopPropagation();const l=t.classList.contains("drop-into")?"dentro":t.classList.contains("drop-above")?"acima":"abaixo";if(this.limparClassesDeArraste(),r==="layer"){if(!a||a===o||!this.host.camadas.some(u=>u.id===a)||!this.host.camadas.some(u=>u.id===o))return;const d=ua(this.host.camadas,a,o,l);(d==null?void 0:d.tipo)==="hierarquia"&&((c=this.host.expandedLayers)==null||c.add(d.novoParentId),this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:d.camada.id,novoParentId:d.novoParentId,camada:d.camada})),this.aposReordenarCamadas()}else if(r==="feature"){if(!i)return;const d=fa(this.host.feicoes,this.host.camadas,i,o);d&&(this.emitirFeicaoMovida(d),this.host.solicitarRenderizacao())}}),t.addEventListener("dragend",()=>{r=null,a=null,i=null,this.limparClassesDeArraste()}))}),this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach(t=>{const o=t.getAttribute("data-feat-row"),n=t.getAttribute("data-feat-layer");o&&(t.addEventListener("dragstart",s=>{const l=s;if(this.arrasteBloqueado(l.target)){l.preventDefault();return}l.stopPropagation(),r="feature",i=o,a=n,l.dataTransfer&&(l.dataTransfer.setData("text/plain",JSON.stringify({type:"feature",id:o,layerId:n})),l.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",s=>{const l=s;if(r!=="feature"||i===o)return;l.preventDefault(),l.stopPropagation(),l.dataTransfer&&(l.dataTransfer.dropEffect="move");const c=t.getBoundingClientRect(),d=l.clientY-c.top<c.height/2;t.classList.toggle("drop-above",d),t.classList.toggle("drop-below",!d)}),t.addEventListener("dragleave",s=>{const l=s.relatedTarget;l&&t.contains(l)||t.classList.remove("drop-above","drop-below")}),t.addEventListener("drop",s=>{const l=s;if(r!=="feature"||!i||i===o)return;l.preventDefault(),l.stopPropagation();const c=t.classList.contains("drop-above");this.limparClassesDeArraste();const d=ma(this.host.feicoes,i,o,c);d&&(d.mudouDeCamada&&this.emitirFeicaoMovida(d),this.host.dispararEvento("ui-feicoes-reordenadas",{feicoes:[...this.host.feicoes]}),this.host.solicitarRenderizacao())}),t.addEventListener("dragend",s=>{s.stopPropagation(),r=null,i=null,a=null,this.limparClassesDeArraste()}))})}bindTouchDragAndDrop(){this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach(r=>{const a=r.closest(".ui-layer-row");if(!a)return;const i=a.getAttribute("data-layer-id");i&&r.addEventListener("pointerdown",t=>{var u;const o=t;if(o.pointerType==="mouse"&&o.button!==0||this.host.editingLayerId||this.host.editingFeatureId)return;(u=this.cancelarToque)==null||u.call(this);let n=null,s=!1;const l=p=>{p.preventDefault(),a.classList.add("dragging");const f=this.shadow.elementFromPoint(p.clientX,p.clientY),m=f?f.closest(".ui-layer-row"):null;if(n&&n!==m&&n.classList.remove("drop-above","drop-below"),m&&m!==a){n=m;const g=m.getBoundingClientRect();s=p.clientY-g.top<g.height/2,m.classList.toggle("drop-above",s),m.classList.toggle("drop-below",!s)}else n=null},c=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d),this.cancelarToque=null},d=()=>{c();const p=n==null?void 0:n.getAttribute("data-layer-id");this.limparClassesDeArraste(),p&&pa(this.host.camadas,i,p,s)&&this.aposReordenarCamadas()};this.cancelarToque=()=>{c(),this.limparClassesDeArraste()},window.addEventListener("pointermove",l,{passive:!1}),window.addEventListener("pointerup",d),window.addEventListener("pointercancel",d)})})}}const va="ui_camadas_estado_";function Pe(e,r){const a=(e||r||"default").trim();return`${va}${a}`}function K(e){if(typeof window>"u"||typeof localStorage>"u")return null;try{const r=localStorage.getItem(e);if(!r)return null;const a=JSON.parse(r);if(a&&typeof a=="object")return a}catch(r){console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`,r)}return null}function Te(e,r){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.setItem(e,JSON.stringify(r))}catch(a){console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`,a)}}function Re(e){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.removeItem(e)}catch{}}function pe(e){return{name:e.name,visible:e.visible!==!1,locked:!!e.locked,opacity:typeof e.opacity=="number"?e.opacity:1,color:e.color||"#00E08A",parentId:e.parentId!==void 0?e.parentId:null}}function Oe(e,r,a,i){if(!Array.isArray(e))return;const t=(r==null?void 0:r.camadasOverrides)||{},o=new Set((r==null?void 0:r.expandedLayerIds)||[]),n=new Set((r==null?void 0:r.collapsedLayerIds)||[]),s=o.size>0||n.size>0;for(let u=0;u<e.length;u++){const p=e[u],f=t[p.id];if(i==null||i.set(p.id,pe(p)),f){const m=f.origem,g=L=>{var A;const h=(A=i==null?void 0:i.get(p.id))==null?void 0:A[L];return m!==void 0&&m[L]!==h};typeof f.name=="string"&&f.name.trim()&&!g("name")&&(p.name=f.name),typeof f.visible=="boolean"&&!g("visible")&&(p.visible=f.visible),typeof f.locked=="boolean"&&!g("locked")&&(p.locked=f.locked),typeof f.opacity=="number"&&!g("opacity")&&(p.opacity=f.opacity),typeof f.color=="string"&&!g("color")&&(p.color=f.color),f.parentId!==void 0&&!g("parentId")&&(p.parentId=f.parentId)}s?o.has(p.id)?a.add(p.id):n.has(p.id)?a.delete(p.id):a.add(p.id):a.add(p.id)}const l=new Set(e.map(u=>u.id)),c=r==null?void 0:r.ordemOrigemIds;if(!(Array.isArray(c)&&(()=>{const u=new Set(c),p=f=>f.filter(m=>l.has(m)&&u.has(m)).join("|");return p(c)!==p(e.map(f=>f.id))})())&&Array.isArray(r==null?void 0:r.ordemCamadasIds)&&r.ordemCamadasIds.length>0){const u=new Map;r.ordemCamadasIds.forEach((p,f)=>u.set(p,f)),e.sort((p,f)=>{const m=u.has(p.id)?u.get(p.id):9999,g=u.has(f.id)?u.get(f.id):9999;return m-g})}}function je(e){const{estadoAnterior:r,camadas:a,expandedLayers:i}=e;let t=(r==null?void 0:r.expandedLayerIds)||[],o=(r==null?void 0:r.collapsedLayerIds)||[],n=(r==null?void 0:r.ordemCamadasIds)||[],s=r==null?void 0:r.ordemOrigemIds;const l={...(r==null?void 0:r.camadasOverrides)||{}};a.length>0&&(t=[],o=[],n=a.map(c=>c.id),s=e.origensCamadas?[...e.origensCamadas.keys()]:n,a.forEach(c=>{var d,u;i.has(c.id)?t.push(c.id):o.push(c.id),l[c.id]={name:c.name,visible:c.visible!==!1,locked:!!c.locked,opacity:typeof c.opacity=="number"?c.opacity:1,color:c.color||"#00E08A",origem:((d=e.origensCamadas)==null?void 0:d.get(c.id))??((u=l[c.id])==null?void 0:u.origem)}}));for(const c of e.camadasRemovidas??[])delete l[c];return{versao:1,expandedLayerIds:t,collapsedLayerIds:o,camadaAtivaId:e.camadaAtivaId,painelColapsado:e.painelColapsado,ordemCamadasIds:n,ordemOrigemIds:s,mapaBaseAtivo:e.mapaBaseAtivo,densidade:e.densidade,altura:e.altura,camadasOverrides:l,ultimaAtualizacao:Date.now()}}const ba=':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:80px}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent)!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 7%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 18%,transparent)!important;outline:1px solid color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 50%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-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{padding-left:calc(6px + var(--layer-depth, 1) * 16px);background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent);border-left:2px solid color-mix(in srgb,var(--layer-active-color, #00E08A) 40%,transparent)}.ui-children-container.is-subchildren{position:relative;margin-left:calc(var(--layer-depth, 0) * 8px);border-left:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .1))}.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-group-badge{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 4px;border-radius:3px;background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 15%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 30%,transparent);margin-left: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:14px;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-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-active-badge{font-size:8px;font-weight:700;color:var(--ui-cor-texto-sobre-primaria, #000000);background:var(--ui-cor-primaria, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent);padding:1px 4px;border-radius:3px;display:inline-flex;align-items:center;gap:2px;white-space:nowrap;flex-shrink:0;animation:pulseBadge 2.8s infinite}@keyframes pulseBadge{0%{opacity:.85}50%{opacity:1;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 50%,transparent))}to{opacity:.85}}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);padding:0 4px;border-radius:8px}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--ui-cor-texto-info, #33b5ff);background:var(--ui-cor-texto-info, #33b5ff);box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--ui-cor-texto-info, #33b5ff);background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-geom-tag{font-size:8px;font-weight:700;letter-spacing:.4px;padding:1px 4px;border-radius:3px;margin-left:4px;text-transform:uppercase;flex-shrink:0}.ui-geom-tag.oficial{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 16%,transparent);color:var(--ui-cor-texto-sucesso, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 35%,transparent)}.ui-geom-tag.previa{background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 16%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 35%,transparent)}.ui-tree-footer{height:32px;min-height:32px;background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 8px;gap:6px;box-sizing:border-box;overflow:hidden;position:relative}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);padding:1px 5px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 24%,transparent);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 7px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#fff3}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border-color:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 32%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 22%,transparent);border-color:var(--ui-cor-primaria, #00E08A);color:#fff}.ui-footer-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-btn.btn-clear-footer{color:var(--ui-cor-texto-secundario, #888899);margin-left:2px}.ui-footer-btn.btn-clear-footer:hover{color:#fff;background:#ffffff1f}.ui-footer-color-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;flex-shrink:0}.ui-footer-color-preview{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 0 4px #0006;pointer-events:none;transition:transform .15s ease,border-color .15s ease}.ui-footer-color-wrapper:hover .ui-footer-color-preview{transform:scale(1.15);border-color:#fff}.ui-footer-color{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0;border:none}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;max-width:95px;flex-shrink:0}.ui-footer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10px;height:22px;padding:0 4px;cursor:pointer;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){border-color:#ffffff40}.ui-footer-select:focus{outline:none;border-color:var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#ffffff40}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';function ha(e,r){r.querySelectorAll("[data-layer-row]").forEach(t=>{t.addEventListener("click",o=>{if(o.target.closest("[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], input, button"))return;const s=t.getAttribute("data-layer-row");s&&e.definirCamadaAtiva(s,!0)})}),r.querySelectorAll("[data-layer-expand]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-expand");if(!n)return;e.expandedLayers.has(n)?e.expandedLayers.delete(n):e.expandedLayers.add(n);const s=t.closest(".ui-layer-group"),l=t.querySelector(".ui-chevron-icon"),c=e.expandedLayers.has(n);if(l&&l.classList.toggle("open",c),s){const d=s.querySelector(".ui-children-container");d&&(d.style.display=c?"block":"none")}e.salvarLembrancaEstado()})}),r.querySelectorAll("[data-layer-eye]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-eye"),s=e.camadas.find(l=>l.id===n);if(s){s.visible=s.visible===!1;const l=s.visible!==!1;t.innerHTML=l?b.olhoAberto:b.olhoFechado,P(t,l?"Ocultar Camada":"Exibir Camada");const c=t.closest(".ui-layer-row");c&&c.classList.toggle("hidden-layer",!l),xa(e,r),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-visibilidade",{camadaId:s.id,visivel:l})}})}),r.querySelectorAll("[data-layer-lock]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-lock"),s=e.camadas.find(l=>l.id===n);s&&(s.locked=!s.locked,t.innerHTML=s.locked?b.cadeadoTrancado:b.cadeadoAberto,t.classList.toggle("ui-lock-open",!s.locked),P(t,s.locked?"Desbloquear Camada":"Bloquear Camada"),ya(e,r,s.id,s.locked===!0),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-bloqueio",{camadaId:s.id,bloqueado:s.locked}))})}),r.querySelectorAll("[data-layer-fit]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-fit");n&&e.dispararEvento("ui-camada-enquadrar",{camadaId:n})})}),r.querySelectorAll("[data-layer-settings]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-settings");e.activeSettingsLayerId=e.activeSettingsLayerId===n?null:n,e.solicitarRenderizacao()})}),r.querySelectorAll("[data-layer-settings-close]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation(),e.activeSettingsLayerId=null,e.solicitarRenderizacao()})});const a=(t,o,n)=>{const s=e.camadas.find(f=>f.id===t);if(!s)return;const l=V(o,s.color||"#00E08A");s.color=l;const c=r.getElementById(`sample-color-${t}`);c&&(c.style.backgroundColor=l);const d=r.getElementById(`hex-color-${t}`);d&&(d.textContent=l.toUpperCase());const u=r.getElementById(`settings-drawer-${t}`);u&&u.style.setProperty("--drawer-cor-camada",l);const p=T(r,"data-layer-row",t);if(p){p.style.setProperty("--layer-active-color",l);const f=p.querySelector(".ui-col-colorbar");f&&(f.style.backgroundColor=l)}n?e.salvarLembrancaEstado():e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-cor",{camadaId:s.id,cor:l})};r.querySelectorAll("[data-layer-color-picker]").forEach(t=>{const o=t,n=s=>l=>{const c=o.getAttribute("data-layer-color-picker");if(!c)return;const d=l.target.value;a(c,d,s)};o.addEventListener("input",n(!1)),o.addEventListener("change",n(!0))});const i=(t,o)=>{const n=e.camadas.find(c=>c.id===t);if(!n)return;n.opacity=o;const s=r.getElementById(`badge-op-${t}`);s&&(s.textContent=`${Math.round(o*100)}%`);const l=T(r,"data-layer-opacity-slider",t);l&&parseFloat(l.value)!==o&&(l.value=String(o)),e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-opacidade",{camadaId:n.id,opacidade:o})};r.querySelectorAll("[data-layer-opacity-slider]").forEach(t=>{t.addEventListener("input",o=>{const n=t.getAttribute("data-layer-opacity-slider");if(!n)return;const s=parseFloat(o.target.value);i(n,s)})}),r.querySelectorAll("[data-delete-layer]").forEach(t=>{let o=null;t.addEventListener("click",n=>{n.stopPropagation();const s=t.getAttribute("data-delete-layer");if(!s)return;if(t.classList.contains("confirming")){o&&clearTimeout(o),e.dispararEvento("ui-camada-excluida",{camadaId:s});const c=e.selectedFeatureIds.size;e.camadas.forEach(d=>{d.parentId===s&&(d.parentId=null)}),e.removerCamada(s),e.selectedFeatureIds.size!==c&&e.notificarMudancaSelecao()}else{t.classList.add("confirming");const c=t.querySelector(".ui-btn-label");c&&(c.textContent="Confirmar Exclusão?"),o=setTimeout(()=>{t.classList.remove("confirming"),c&&(c.textContent="Excluir Camada")},3500)}})}),r.querySelectorAll("[data-layer-parent-select]").forEach(t=>{t.addEventListener("change",o=>{const n=o.target,s=n.getAttribute("data-layer-parent-select"),l=n.value||null,c=e.camadas.find(d=>d.id===s);c&&(c.parentId=l,e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-mover-hierarquia",{camadaId:c.id,novoParentId:l,camada:c}),e.solicitarRenderizacao())})}),r.querySelectorAll("[data-add-sublayer]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-add-sublayer");e.dispararEvento("ui-camada-adicionar",{parentId:n})})}),r.querySelectorAll("[data-layer-target]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=o,s=t.getAttribute("data-layer-target"),l=N(e.feicoes.filter(d=>d.layerId===s),e.searchQuery);if(l.length===0)return;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()})})}function xa(e,r){const a=r.getElementById("btn-toggle-all-vis");if(!a)return;const i=e.camadas.every(t=>t.visible!==!1);a.innerHTML=i?b.olhoAberto:b.olhoFechado,P(a,i?"Ocultar Todas as Camadas":"Exibir Todas as Camadas")}function ya(e,r,a,i){e.feicoes.filter(t=>t.layerId===a).forEach(t=>{const o=T(r,"data-feat-lock",t.id);if(!o)return;const n=t.locked===!0||i;o.innerHTML=n?b.cadeadoTrancado:b.cadeadoAberto,o.classList.toggle("ui-lock-open",!n),i?o.setAttribute("data-locked-by-layer","true"):o.removeAttribute("data-locked-by-layer"),P(o,i?"Bloqueada pela camada":n?"Desbloquear Feição":"Bloquear Feição")})}function wa(e,r){const a=r.getElementById("btn-footer-vis");a&&a.addEventListener("click",()=>{const u=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));if(u.length===0)return;const f=!u.some(m=>m.visible!==!1);u.forEach(m=>m.visible=f),e.dispararEvento("ui-acao-massa",{acao:"visibilidade",feicoesIds:u.map(m=>m.id),feicoes:u,valor:f}),e.solicitarRenderizacao()});const i=r.getElementById("btn-footer-lock");i&&i.addEventListener("click",()=>{const u=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));if(u.length===0)return;const f=!u.some(m=>m.locked===!0);u.forEach(m=>m.locked=f),e.dispararEvento("ui-acao-massa",{acao:"bloqueio",feicoesIds:u.map(m=>m.id),feicoes:u,valor:f}),e.solicitarRenderizacao()});const t=r.getElementById("input-footer-color"),o=r.getElementById("preview-footer-color");t&&(t.addEventListener("input",u=>{const p=u.target.value;o&&(o.style.backgroundColor=p)}),t.addEventListener("change",u=>{const p=u.target.value;o&&(o.style.backgroundColor=p);const f=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));f.length!==0&&(f.forEach(m=>{m.color=p,m.style={...m.style||{},fillColor:p,strokeColor:p}}),e.dispararEvento("ui-acao-massa",{acao:"cor",feicoesIds:f.map(m=>m.id),feicoes:f,valor:p}),e.solicitarRenderizacao())}));const n=r.getElementById("select-footer-move");n&&n.addEventListener("change",u=>{const p=u.target.value;if(!p)return;const f=e.feicoes.filter(g=>e.selectedFeatureIds.has(g.id));if(f.length===0)return;const m=new Map(f.map(g=>[g.id,g.layerId]));f.forEach(g=>g.layerId=p),f.forEach(g=>{m.get(g.id)!==p&&e.dispararEvento("ui-feicao-movida",{feicaoId:g.id,camadaOrigemId:m.get(g.id),camadaDestinoId:p,feicao:g})}),e.dispararEvento("ui-acao-massa",{acao:"mover",feicoesIds:f.map(g=>g.id),feicoes:f,valor:p}),e.solicitarRenderizacao()});const s=r.getElementById("btn-footer-new-layer");s&&s.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const l=r.getElementById("btn-footer-new-group");l&&l.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const c=r.getElementById("btn-footer-del");if(c){let u=null;const p="Excluir selecionados";c.addEventListener("click",()=>{const f=Array.from(e.selectedFeatureIds);if(f.length===0)return;if(!c.classList.contains("confirming")){c.classList.add("confirming"),P(c,`Clique novamente para excluir ${f.length} selecionado(s)`),u=setTimeout(()=>{c.classList.remove("confirming"),P(c,p)},3500);return}u&&clearTimeout(u);const m=e.feicoes.filter(g=>e.selectedFeatureIds.has(g.id));e.feicoes=e.feicoes.filter(g=>!e.selectedFeatureIds.has(g.id)),e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.dispararEvento("ui-acao-massa",{acao:"excluir",feicoesIds:f,feicoes:m}),e.notificarMudancaSelecao(),e.solicitarRenderizacao()})}const d=r.getElementById("btn-footer-clear");d&&d.addEventListener("click",()=>e.limparSelecao(!0))}const Ea=[{tipo:"olho",atributo:"data-layer-eye",entidade:"camada"},{tipo:"olho",atributo:"data-feat-eye",entidade:"feicao"},{tipo:"cadeado",atributo:"data-layer-lock",entidade:"camada"},{tipo:"cadeado",atributo:"data-feat-lock",entidade:"feicao"},{tipo:"selecao",atributo:"data-layer-target",entidade:"camada"},{tipo:"selecao",atributo:"data-feat-target",entidade:"feicao"}],ne={olho:"[data-layer-eye], [data-feat-eye]",cadeado:"[data-layer-lock], [data-feat-lock]",selecao:"[data-layer-target], [data-feat-target]"},Aa=3;function ka(e){return Ea.find(r=>e.hasAttribute(r.atributo))??null}function ie(e,r){const a=ka(r);if(!a)return null;const i=r.getAttribute(a.atributo);if(!i)return null;if(a.tipo==="olho"){const o=a.entidade==="camada"?e.camadas.find(n=>n.id===i):e.feicoes.find(n=>n.id===i);return o?o.visible!==!1:null}if(a.tipo==="cadeado"){if(r.hasAttribute("data-locked-by-layer"))return null;const o=a.entidade==="camada"?e.camadas.find(n=>n.id===i):e.feicoes.find(n=>n.id===i);return o?o.locked===!0:null}if(a.entidade==="feicao")return e.selectedFeatureIds.has(i);const t=N(e.feicoes.filter(o=>o.layerId===i),e.searchQuery);return t.length===0?null:t.every(o=>e.selectedFeatureIds.has(o.id))}function Ee(e,r,a=!1){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,ctrlKey:r,shiftKey:a}))}let z=null;function Ia(e){(z==null?void 0:z.host)===e&&z.cancelar()}function Ca(e,r){Object.keys(ne).forEach(a=>{r.querySelectorAll(ne[a]).forEach(i=>{i.addEventListener("pointerdown",t=>La(e,r,a,i,t))})})}function La(e,r,a,i,t){if(t.pointerType==="mouse"&&t.button!==0||e.editingLayerId||e.editingFeatureId||ie(e,i)===null)return;z==null||z.cancelar();const o=ne[a],n=t.ctrlKey||t.metaKey,s=t.shiftKey;let l=!1,c=!1,d=t.clientY;const u=new Set([i]),p=v=>{v.preventDefault(),v.stopImmediatePropagation()},f=v=>{v.stopPropagation(),v.preventDefault()},m=v=>v.preventDefault(),g=v=>{u.has(v)||(u.add(v),ie(e,v)!==c&&Ee(v,a==="selecao"))},L=()=>{l=!0,Ee(i,n,s),c=ie(e,i)===!0,r.addEventListener("selectstart",m),document.body.style.userSelect="none"},h=v=>{var k,j;if(!l){if(Math.hypot(v.clientX-t.clientX,v.clientY-t.clientY)<Aa)return;const M=(k=r.elementFromPoint(v.clientX,v.clientY))==null?void 0:k.closest(o);if(!M||M===i)return;L()}v.preventDefault();const y=Math.min(d,v.clientY),w=Math.max(d,v.clientY);r.querySelectorAll(o).forEach(M=>{const B=M.getBoundingClientRect();if(B.height===0)return;const q=B.top+B.height/2;q>=y&&q<=w&&g(M)});const S=(j=r.elementFromPoint(v.clientX,v.clientY))==null?void 0:j.closest(o);S&&g(S),d=v.clientY},A=(v=!1)=>{(z==null?void 0:z.cancelar)===x&&(z=null),window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",C),window.removeEventListener("pointercancel",C),window.removeEventListener("dragstart",p,!0),r.removeEventListener("selectstart",m),l&&(document.body.style.userSelect="",v||(window.addEventListener("click",f,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",f,!0),0)))},C=()=>A(),x=()=>A(!0);z={host:e,cancelar:x},window.addEventListener("dragstart",p,!0),window.addEventListener("pointermove",h,{passive:!1}),window.addEventListener("pointerup",C),window.addEventListener("pointercancel",C)}function $a(e,r){const a=r.getElementById("btn-toggle-all-vis");a&&a.addEventListener("click",()=>e.alternarVisibilidadeTodas(!0));const i=r.getElementById("btn-toggle-all-expand");i&&i.addEventListener("click",s=>{s.stopPropagation(),e.camadas.length>0&&e.camadas.every(c=>e.expandedLayers.has(c.id))?e.colapsarTodas():e.expandirTodas()});const t=r.getElementById("btn-add-layer");t&&t.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const o=r.getElementById("btn-add-group");o&&o.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const n=r.getElementById("btn-colapsar");n&&n.addEventListener("click",()=>e.colapsar(!0)),Sa(e,r)}function Sa(e,r){const a=r.getElementById("input-layer-search"),i=r.getElementById("btn-clear-layer-search"),t=()=>{var o;e.searchQuery="",e.solicitarRenderizacao(),(o=r.getElementById("input-layer-search"))==null||o.focus()};if(a){const o=Ie(()=>e.solicitarRenderizacao(),75);a.addEventListener("input",n=>{e.searchQuery=n.target.value,o()}),a.addEventListener("keydown",n=>{n.key==="Escape"&&e.searchQuery&&(n.preventDefault(),t())})}i&&i.addEventListener("click",t)}function Ma(e,r){r.querySelectorAll("[data-feat-select]").forEach(a=>{a.addEventListener("click",i=>{if(e.editingFeatureId)return;const t=i;if(t.target.closest("[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"))return;const n=a.getAttribute("data-feat-select");n&&e.selecionarFeicao(n,t.ctrlKey||t.metaKey,t.shiftKey,!0)})}),r.querySelectorAll("[data-feat-target]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=i,o=a.getAttribute("data-feat-target");o&&e.selecionarFeicao(o,t.ctrlKey||t.metaKey,t.shiftKey,!0)})}),r.querySelectorAll("[data-feat-eye]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=a.getAttribute("data-feat-eye"),o=e.feicoes.find(n=>n.id===t);if(o){o.visible=o.visible===!1;const n=o.visible!==!1;a.innerHTML=n?b.olhoAberto:b.olhoFechado,P(a,n?"Ocultar Feição":"Exibir Feição");const s=a.closest(".ui-feat-row");s&&s.classList.toggle("hidden-row",!n),e.dispararEvento("ui-feicao-visibilidade",{feicaoId:o.id,visivel:n})}})}),r.querySelectorAll("[data-feat-lock]").forEach(a=>{a.addEventListener("click",i=>{if(i.stopPropagation(),a.hasAttribute("data-locked-by-layer"))return;const t=a.getAttribute("data-feat-lock"),o=e.feicoes.find(n=>n.id===t);o&&(o.locked=!o.locked,a.innerHTML=o.locked?b.cadeadoTrancado:b.cadeadoAberto,a.classList.toggle("ui-lock-open",!o.locked),P(a,o.locked?"Desbloquear Feição":"Bloquear Feição"),e.dispararEvento("ui-feicao-bloqueio",{feicaoId:o.id,bloqueado:o.locked}))})}),r.querySelectorAll("[data-feat-fit]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=a.getAttribute("data-feat-fit");t&&e.dispararEvento("ui-feicao-enquadrar",{feicaoId:t})})})}function za(e,r){r.querySelectorAll("[data-basemap-thumb]").forEach(a=>{a.addEventListener("error",()=>{const i=document.createElement("div");i.className="ui-basemap-preview-none",i.innerHTML=b.mapa,a.replaceWith(i)},{once:!0})}),r.querySelectorAll("[data-basemap-id]").forEach(a=>{a.addEventListener("click",()=>{const i=a.getAttribute("data-basemap-id");i&&e.selecionarMapaBase(i,!0)})})}function Fa(e,r){$a(e,r),ha(e,r),Ma(e,r),za(e,r),wa(e,r),Ca(e,r)}function Ba(e,r,a,i){var g,L;const t=qe({camadas:e.camadas,feicoes:e.feicoes,camadaAtivaId:e.camadaAtivaId,expandedLayers:e.expandedLayers,selectedFeatureIds:e.selectedFeatureIds,activeSettingsLayerId:e.activeSettingsLayerId,editingLayerId:e.editingLayerId,editingFeatureId:e.editingFeatureId,searchQuery:e.searchQuery,mostrarBotaoColapsar:e.flutuante&&e.getAttribute("colapsavel")!=="false"}),o=e.mostrarMapasBase?Ce(e.mapasBase,e.mapaBaseAtivo):"",n=e.mostrarRodape?$e(e.camadas,e.feicoes,e.selectedFeatureIds):"",s=r.getElementById("ui-layer-tree-mount"),l=a.scrollTop,c=s?s.scrollTop:0,d=r.activeElement,u=d&&a.contains(d)?d.id:"",p=d&&!u&&a.contains(d)?Array.from(d.attributes).find(h=>h.name.startsWith("data-")&&h.value!==""):void 0,f=d&&"selectionStart"in d?d.selectionStart:null;a.innerHTML=`
318
+ `}function ua(e){return[{gatilho:"data-layer-name-trigger",input:"data-inline-layer-input",marcarEditando:r=>{e.editingLayerId=r},aplicar:(r,a)=>{const i=e.camadas.find(t=>t.id===r);return!a||!i||i.name===a?null:(i.name=a,{detalhe:{camadaId:r,novoNome:a,camada:i},salvar:!0})},emitir:r=>e.dispararEvento("ui-camada-renomeada",r)},{gatilho:"data-feat-name-trigger",input:"data-inline-feat-input",marcarEditando:r=>{e.editingFeatureId=r},aplicar:(r,a)=>{const i=e.feicoes.find(t=>t.id===r);return!a||!i||i.name===a?null:(i.name=a,{detalhe:{feicaoId:r,novoNome:a,feicao:i},salvar:!1})},emitir:r=>e.dispararEvento("ui-feicao-renomeada",r)}]}function pa(e,r){for(const a of ua(e))r.querySelectorAll(`[${a.gatilho}]`).forEach(i=>{i.addEventListener("dblclick",t=>{t.stopPropagation();const o=i.getAttribute(a.gatilho);if(!o)return;a.marcarEditando(o),e.solicitarRenderizacao();const n=D(r,a.input,o);if(!n)return;n.focus(),n.select();let s=!1;const l=c=>{var d;if(!s){if(s=!0,a.marcarEditando(null),c){const p=a.aplicar(o,n.value.trim());p&&(p.salvar&&((d=e.salvarLembrancaEstado)==null||d.call(e)),a.emitir(p.detalhe))}e.solicitarRenderizacao()}};n.addEventListener("keydown",c=>{c.key==="Enter"?(c.preventDefault(),l(!0)):c.key==="Escape"&&(c.preventDefault(),l(!1))}),n.addEventListener("blur",()=>l(!0))})})}function fa(e,r,a){const i=new Set;let t=e.find(o=>o.id===r);for(;t&&t.parentId;){if(i.has(t.id)||(i.add(t.id),t.parentId===a))return!0;t=e.find(o=>o.id===(t==null?void 0:t.parentId))}return!1}function ma(e){return Number.isFinite(e)?e<.25?"acima":e>.75?"abaixo":"dentro":"dentro"}function ga(e,r,a,i){if(!r||!a||r===a)return null;const t=e.find(l=>l.id===r),o=e.find(l=>l.id===a);if(!t||!o)return null;if(i==="dentro")return fa(e,o.id,t.id)?null:(t.parentId=o.id,{tipo:"hierarquia",camada:t,novoParentId:o.id});const n=e.findIndex(l=>l.id===r);e.splice(n,1);const s=e.findIndex(l=>l.id===a);return s===-1?e.push(t):e.splice(i==="acima"?s:s+1,0,t),t.parentId=o.parentId??null,{tipo:"ordem",camada:t}}function va(e,r,a,i){if(!r||!a||r===a)return!1;const t=e.findIndex(s=>s.id===r);if(t===-1)return!1;const[o]=e.splice(t,1),n=e.findIndex(s=>s.id===a);return n===-1?e.push(o):e.splice(i?n:n+1,0,o),!0}function ba(e,r,a,i){const t=e.find(s=>s.id===a),o=r.find(s=>s.id===i);if(!t||!o||t.layerId===i)return null;const n=t.layerId;return t.layerId=i,{feicao:t,camadaOrigemId:n,camadaDestinoId:i,mudouDeCamada:!0}}function ha(e,r,a,i){if(!r||!a||r===a)return null;const t=e.findIndex(p=>p.id===r);if(t===-1)return null;const o=e.find(p=>p.id===a);if(!o)return null;const[n]=e.splice(t,1),s=n.layerId,l=o.layerId,c=s!==l;c&&(n.layerId=l);const d=e.findIndex(p=>p.id===a);return d===-1?e.push(n):e.splice(i?d:d+1,0,n),{feicao:n,camadaOrigemId:s,camadaDestinoId:l,mudouDeCamada:c}}const xa=["dragging","drop-above","drop-below","drop-into"];class Oe{constructor(r,a){E(this,"host");E(this,"shadow");E(this,"cancelarToque",null);this.host=r,this.shadow=a}bindAll(){this.bindInlineRename(),this.bindDragAndDrop(),this.bindTouchDragAndDrop()}destruir(){var r;(r=this.cancelarToque)==null||r.call(this),this.cancelarToque=null}bindInlineRename(){pa(this.host,this.shadow)}limparClassesDeArraste(){this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(r=>{r.classList.remove(...xa)})}aposReordenarCamadas(){var r,a;(a=(r=this.host).salvarLembrancaEstado)==null||a.call(r),this.host.dispararEvento("ui-camadas-reordenadas",{camadas:[...this.host.camadas]}),this.host.solicitarRenderizacao()}emitirFeicaoMovida(r){this.host.dispararEvento("ui-feicao-movida",{feicaoId:r.feicao.id,camadaOrigemId:r.camadaOrigemId,camadaDestinoId:r.camadaDestinoId,feicao:r.feicao})}arrasteBloqueado(r){return!!r.closest("input, button, select")||!!this.host.editingLayerId||!!this.host.editingFeatureId}bindDragAndDrop(){let r=null,a=null,i=null;this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach(t=>{const o=t.getAttribute("data-layer-id");o&&(t.addEventListener("dragstart",n=>{const s=n;if(this.arrasteBloqueado(s.target)){s.preventDefault();return}r="layer",a=o,s.dataTransfer&&(s.dataTransfer.setData("text/plain",JSON.stringify({type:"layer",id:o})),s.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",n=>{const s=n;if(s.preventDefault(),s.stopPropagation(),s.dataTransfer&&(s.dataTransfer.dropEffect="move"),r==="layer"){if(a===o)return;const l=t.getBoundingClientRect(),c=ma((s.clientY-l.top)/l.height);t.classList.toggle("drop-above",c==="acima"),t.classList.toggle("drop-below",c==="abaixo"),t.classList.toggle("drop-into",c==="dentro")}else r==="feature"&&t.classList.add("drop-into")}),t.addEventListener("dragleave",n=>{const s=n.relatedTarget;s&&t.contains(s)||t.classList.remove("drop-above","drop-below","drop-into")}),t.addEventListener("drop",n=>{var c;const s=n;s.preventDefault(),s.stopPropagation();const l=t.classList.contains("drop-into")?"dentro":t.classList.contains("drop-above")?"acima":"abaixo";if(this.limparClassesDeArraste(),r==="layer"){if(!a||a===o||!this.host.camadas.some(p=>p.id===a)||!this.host.camadas.some(p=>p.id===o))return;const d=ga(this.host.camadas,a,o,l);(d==null?void 0:d.tipo)==="hierarquia"&&((c=this.host.expandedLayers)==null||c.add(d.novoParentId),this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:d.camada.id,novoParentId:d.novoParentId,camada:d.camada})),this.aposReordenarCamadas()}else if(r==="feature"){if(!i)return;const d=ba(this.host.feicoes,this.host.camadas,i,o);d&&(this.emitirFeicaoMovida(d),this.host.solicitarRenderizacao())}}),t.addEventListener("dragend",()=>{r=null,a=null,i=null,this.limparClassesDeArraste()}))}),this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach(t=>{const o=t.getAttribute("data-feat-row"),n=t.getAttribute("data-feat-layer");o&&(t.addEventListener("dragstart",s=>{const l=s;if(this.arrasteBloqueado(l.target)){l.preventDefault();return}l.stopPropagation(),r="feature",i=o,a=n,l.dataTransfer&&(l.dataTransfer.setData("text/plain",JSON.stringify({type:"feature",id:o,layerId:n})),l.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",s=>{const l=s;if(r!=="feature"||i===o)return;l.preventDefault(),l.stopPropagation(),l.dataTransfer&&(l.dataTransfer.dropEffect="move");const c=t.getBoundingClientRect(),d=l.clientY-c.top<c.height/2;t.classList.toggle("drop-above",d),t.classList.toggle("drop-below",!d)}),t.addEventListener("dragleave",s=>{const l=s.relatedTarget;l&&t.contains(l)||t.classList.remove("drop-above","drop-below")}),t.addEventListener("drop",s=>{const l=s;if(r!=="feature"||!i||i===o)return;l.preventDefault(),l.stopPropagation();const c=t.classList.contains("drop-above");this.limparClassesDeArraste();const d=ha(this.host.feicoes,i,o,c);d&&(d.mudouDeCamada&&this.emitirFeicaoMovida(d),this.host.dispararEvento("ui-feicoes-reordenadas",{feicoes:[...this.host.feicoes]}),this.host.solicitarRenderizacao())}),t.addEventListener("dragend",s=>{s.stopPropagation(),r=null,i=null,a=null,this.limparClassesDeArraste()}))})}bindTouchDragAndDrop(){this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach(r=>{const a=r.closest(".ui-layer-row");if(!a)return;const i=a.getAttribute("data-layer-id");i&&r.addEventListener("pointerdown",t=>{var p;const o=t;if(o.pointerType==="mouse"&&o.button!==0||this.host.editingLayerId||this.host.editingFeatureId)return;(p=this.cancelarToque)==null||p.call(this);let n=null,s=!1;const l=f=>{f.preventDefault(),a.classList.add("dragging");const m=this.shadow.elementFromPoint(f.clientX,f.clientY),u=m?m.closest(".ui-layer-row"):null;if(n&&n!==u&&n.classList.remove("drop-above","drop-below"),u&&u!==a){n=u;const g=u.getBoundingClientRect();s=f.clientY-g.top<g.height/2,u.classList.toggle("drop-above",s),u.classList.toggle("drop-below",!s)}else n=null},c=()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d),this.cancelarToque=null},d=()=>{c();const f=n==null?void 0:n.getAttribute("data-layer-id");this.limparClassesDeArraste(),f&&va(this.host.camadas,i,f,s)&&this.aposReordenarCamadas()};this.cancelarToque=()=>{c(),this.limparClassesDeArraste()},window.addEventListener("pointermove",l,{passive:!1}),window.addEventListener("pointerup",d),window.addEventListener("pointercancel",d)})})}}const ya="ui_camadas_estado_";function je(e,r){const a=(e||r||"default").trim();return`${ya}${a}`}function Q(e){if(typeof window>"u"||typeof localStorage>"u")return null;try{const r=localStorage.getItem(e);if(!r)return null;const a=JSON.parse(r);if(a&&typeof a=="object")return a}catch(r){console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`,r)}return null}function He(e,r){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.setItem(e,JSON.stringify(r))}catch(a){console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`,a)}}function Ne(e){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.removeItem(e)}catch{}}function ve(e){return{name:e.name,visible:e.visible!==!1,locked:!!e.locked,opacity:typeof e.opacity=="number"?e.opacity:1,color:e.color||"#00E08A",parentId:e.parentId!==void 0?e.parentId:null}}function Ge(e,r,a,i){if(!Array.isArray(e))return;const t=(r==null?void 0:r.camadasOverrides)||{},o=new Set((r==null?void 0:r.expandedLayerIds)||[]),n=new Set((r==null?void 0:r.collapsedLayerIds)||[]),s=o.size>0||n.size>0;for(let p=0;p<e.length;p++){const f=e[p],m=t[f.id];if(i==null||i.set(f.id,ve(f)),m){const u=m.origem,g=k=>{var y;const x=(y=i==null?void 0:i.get(f.id))==null?void 0:y[k];return u!==void 0&&u[k]!==x};typeof m.name=="string"&&m.name.trim()&&!g("name")&&(f.name=m.name),typeof m.visible=="boolean"&&!g("visible")&&(f.visible=m.visible),typeof m.locked=="boolean"&&!g("locked")&&(f.locked=m.locked),typeof m.opacity=="number"&&!g("opacity")&&(f.opacity=m.opacity),typeof m.color=="string"&&!g("color")&&(f.color=m.color),m.parentId!==void 0&&!g("parentId")&&(f.parentId=m.parentId)}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)}const l=new Set(e.map(p=>p.id)),c=r==null?void 0:r.ordemOrigemIds;if(!(Array.isArray(c)&&(()=>{const p=new Set(c),f=m=>m.filter(u=>l.has(u)&&p.has(u)).join("|");return f(c)!==f(e.map(m=>m.id))})())&&Array.isArray(r==null?void 0:r.ordemCamadasIds)&&r.ordemCamadasIds.length>0){const p=new Map;r.ordemCamadasIds.forEach((f,m)=>p.set(f,m)),e.sort((f,m)=>{const u=p.has(f.id)?p.get(f.id):9999,g=p.has(m.id)?p.get(m.id):9999;return u-g})}}function Ue(e){const{estadoAnterior:r,camadas:a,expandedLayers:i}=e;let t=(r==null?void 0:r.expandedLayerIds)||[],o=(r==null?void 0:r.collapsedLayerIds)||[],n=(r==null?void 0:r.ordemCamadasIds)||[],s=r==null?void 0:r.ordemOrigemIds;const l={...(r==null?void 0:r.camadasOverrides)||{}};a.length>0&&(t=[],o=[],n=a.map(c=>c.id),s=e.origensCamadas?[...e.origensCamadas.keys()]:n,a.forEach(c=>{var d,p;i.has(c.id)?t.push(c.id):o.push(c.id),l[c.id]={name:c.name,visible:c.visible!==!1,locked:!!c.locked,opacity:typeof c.opacity=="number"?c.opacity:1,color:c.color||"#00E08A",origem:((d=e.origensCamadas)==null?void 0:d.get(c.id))??((p=l[c.id])==null?void 0:p.origem)}}));for(const c of e.camadasRemovidas??[])delete l[c];return{versao:1,expandedLayerIds:t,collapsedLayerIds:o,camadaAtivaId:e.camadaAtivaId,painelColapsado:e.painelColapsado,ordemCamadasIds:n,ordemOrigemIds:s,mapaBaseAtivo:e.mapaBaseAtivo,densidade:e.densidade,altura:e.altura,camadasOverrides:l,ultimaAtualizacao:Date.now()}}const wa=':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent)!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 7%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 18%,transparent)!important;outline:1px solid color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 50%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-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{padding-left:calc(6px + var(--layer-depth, 1) * 16px);background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent);border-left:2px solid color-mix(in srgb,var(--layer-active-color, #00E08A) 40%,transparent)}.ui-children-container.is-subchildren{position:relative;margin-left:calc(var(--layer-depth, 0) * 8px);border-left:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .1))}.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-group-badge{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 4px;border-radius:3px;background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 15%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 30%,transparent);margin-left: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:14px;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-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-active-badge{font-size:8px;font-weight:700;color:var(--ui-cor-texto-sobre-primaria, #000000);background:var(--ui-cor-primaria, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent);padding:1px 4px;border-radius:3px;display:inline-flex;align-items:center;gap:2px;white-space:nowrap;flex-shrink:0;animation:pulseBadge 2.8s infinite}@keyframes pulseBadge{0%{opacity:.85}50%{opacity:1;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 50%,transparent))}to{opacity:.85}}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);padding:0 4px;border-radius:8px}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--ui-cor-texto-info, #33b5ff);background:var(--ui-cor-texto-info, #33b5ff);box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--ui-cor-texto-info, #33b5ff);background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-geom-tag{font-size:8px;font-weight:700;letter-spacing:.4px;padding:1px 4px;border-radius:3px;margin-left:4px;text-transform:uppercase;flex-shrink:0}.ui-geom-tag.oficial{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 16%,transparent);color:var(--ui-cor-texto-sucesso, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 35%,transparent)}.ui-geom-tag.previa{background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 16%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 35%,transparent)}.ui-tree-footer{height:32px;min-height:32px;background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 8px;gap:6px;box-sizing:border-box;overflow:hidden;position:relative}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);padding:1px 5px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 24%,transparent);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 7px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#fff3}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border-color:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 32%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 22%,transparent);border-color:var(--ui-cor-primaria, #00E08A);color:#fff}.ui-footer-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-btn.btn-clear-footer{color:var(--ui-cor-texto-secundario, #888899);margin-left:2px}.ui-footer-btn.btn-clear-footer:hover{color:#fff;background:#ffffff1f}.ui-footer-color-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;flex-shrink:0}.ui-footer-color-preview{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 0 4px #0006;pointer-events:none;transition:transform .15s ease,border-color .15s ease}.ui-footer-color-wrapper:hover .ui-footer-color-preview{transform:scale(1.15);border-color:#fff}.ui-footer-color{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0;border:none}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;max-width:95px;flex-shrink:0}.ui-footer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10px;height:22px;padding:0 4px;cursor:pointer;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){border-color:#ffffff40}.ui-footer-select:focus{outline:none;border-color:var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#ffffff40}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';function Ea(e,r){r.querySelectorAll("[data-layer-row]").forEach(t=>{t.addEventListener("click",o=>{if(o.target.closest("[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], input, button"))return;const s=t.getAttribute("data-layer-row");s&&e.definirCamadaAtiva(s,!0)})}),r.querySelectorAll("[data-layer-expand]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-expand");if(!n)return;e.expandedLayers.has(n)?e.expandedLayers.delete(n):e.expandedLayers.add(n);const s=t.closest(".ui-layer-group"),l=t.querySelector(".ui-chevron-icon"),c=e.expandedLayers.has(n);if(l&&l.classList.toggle("open",c),s){const d=s.querySelector(".ui-children-container");d&&(d.style.display=c?"block":"none")}e.salvarLembrancaEstado()})}),r.querySelectorAll("[data-layer-eye]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-eye"),s=e.camadas.find(l=>l.id===n);if(s){s.visible=s.visible===!1;const l=s.visible!==!1;t.innerHTML=l?v.olhoAberto:v.olhoFechado,P(t,l?"Ocultar Camada":"Exibir Camada");const c=t.closest(".ui-layer-row");c&&c.classList.toggle("hidden-layer",!l),Aa(e,r),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-visibilidade",{camadaId:s.id,visivel:l})}})}),r.querySelectorAll("[data-layer-lock]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-lock"),s=e.camadas.find(l=>l.id===n);s&&(s.locked=!s.locked,t.innerHTML=s.locked?v.cadeadoTrancado:v.cadeadoAberto,t.classList.toggle("ui-lock-open",!s.locked),P(t,s.locked?"Desbloquear Camada":"Bloquear Camada"),ka(e,r,s.id,s.locked===!0),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-bloqueio",{camadaId:s.id,bloqueado:s.locked}))})}),r.querySelectorAll("[data-layer-fit]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-fit");n&&e.dispararEvento("ui-camada-enquadrar",{camadaId:n})})}),r.querySelectorAll("[data-layer-settings]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-settings");e.activeSettingsLayerId=e.activeSettingsLayerId===n?null:n,e.solicitarRenderizacao()})}),r.querySelectorAll("[data-layer-settings-close]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation(),e.activeSettingsLayerId=null,e.solicitarRenderizacao()})});const a=(t,o,n)=>{const s=e.camadas.find(m=>m.id===t);if(!s)return;const l=X(o,s.color||"#00E08A");s.color=l;const c=r.getElementById(`sample-color-${t}`);c&&(c.style.backgroundColor=l);const d=r.getElementById(`hex-color-${t}`);d&&(d.textContent=l.toUpperCase());const p=r.getElementById(`settings-drawer-${t}`);p&&p.style.setProperty("--drawer-cor-camada",l);const f=D(r,"data-layer-row",t);if(f){f.style.setProperty("--layer-active-color",l);const m=f.querySelector(".ui-col-colorbar");m&&(m.style.backgroundColor=l)}n?e.salvarLembrancaEstado():e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-cor",{camadaId:s.id,cor:l})};r.querySelectorAll("[data-layer-color-picker]").forEach(t=>{const o=t,n=s=>l=>{const c=o.getAttribute("data-layer-color-picker");if(!c)return;const d=l.target.value;a(c,d,s)};o.addEventListener("input",n(!1)),o.addEventListener("change",n(!0))});const i=(t,o)=>{const n=e.camadas.find(c=>c.id===t);if(!n)return;n.opacity=o;const s=r.getElementById(`badge-op-${t}`);s&&(s.textContent=`${Math.round(o*100)}%`);const l=D(r,"data-layer-opacity-slider",t);l&&parseFloat(l.value)!==o&&(l.value=String(o)),e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-opacidade",{camadaId:n.id,opacidade:o})};r.querySelectorAll("[data-layer-opacity-slider]").forEach(t=>{t.addEventListener("input",o=>{const n=t.getAttribute("data-layer-opacity-slider");if(!n)return;const s=parseFloat(o.target.value);i(n,s)})}),r.querySelectorAll("[data-delete-layer]").forEach(t=>{let o=null;t.addEventListener("click",n=>{n.stopPropagation();const s=t.getAttribute("data-delete-layer");if(!s)return;if(t.classList.contains("confirming")){o&&clearTimeout(o),e.dispararEvento("ui-camada-excluida",{camadaId:s});const c=e.selectedFeatureIds.size;e.camadas.forEach(d=>{d.parentId===s&&(d.parentId=null)}),e.removerCamada(s),e.selectedFeatureIds.size!==c&&e.notificarMudancaSelecao()}else{t.classList.add("confirming");const c=t.querySelector(".ui-btn-label");c&&(c.textContent="Confirmar Exclusão?"),o=setTimeout(()=>{t.classList.remove("confirming"),c&&(c.textContent="Excluir Camada")},3500)}})}),r.querySelectorAll("[data-layer-parent-select]").forEach(t=>{t.addEventListener("change",o=>{const n=o.target,s=n.getAttribute("data-layer-parent-select"),l=n.value||null,c=e.camadas.find(d=>d.id===s);c&&(c.parentId=l,e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-mover-hierarquia",{camadaId:c.id,novoParentId:l,camada:c}),e.solicitarRenderizacao())})}),r.querySelectorAll("[data-add-sublayer]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-add-sublayer");e.dispararEvento("ui-camada-adicionar",{parentId:n})})}),r.querySelectorAll("[data-layer-target]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=o,s=t.getAttribute("data-layer-target"),l=N(e.feicoes.filter(d=>d.layerId===s),e.searchQuery);if(l.length===0)return;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()})})}function Aa(e,r){const a=r.getElementById("btn-toggle-all-vis");if(!a)return;const i=e.camadas.every(t=>t.visible!==!1);a.innerHTML=i?v.olhoAberto:v.olhoFechado,P(a,i?"Ocultar Todas as Camadas":"Exibir Todas as Camadas")}function ka(e,r,a,i){e.feicoes.filter(t=>t.layerId===a).forEach(t=>{const o=D(r,"data-feat-lock",t.id);if(!o)return;const n=t.locked===!0||i;o.innerHTML=n?v.cadeadoTrancado:v.cadeadoAberto,o.classList.toggle("ui-lock-open",!n),i?o.setAttribute("data-locked-by-layer","true"):o.removeAttribute("data-locked-by-layer"),P(o,i?"Bloqueada pela camada":n?"Desbloquear Feição":"Bloquear Feição")})}function Ia(e,r){const a=r.getElementById("btn-footer-vis");a&&a.addEventListener("click",()=>{const p=e.feicoes.filter(u=>e.selectedFeatureIds.has(u.id));if(p.length===0)return;const m=!p.some(u=>u.visible!==!1);p.forEach(u=>u.visible=m),e.dispararEvento("ui-acao-massa",{acao:"visibilidade",feicoesIds:p.map(u=>u.id),feicoes:p,valor:m}),e.solicitarRenderizacao()});const i=r.getElementById("btn-footer-lock");i&&i.addEventListener("click",()=>{const p=e.feicoes.filter(u=>e.selectedFeatureIds.has(u.id));if(p.length===0)return;const m=!p.some(u=>u.locked===!0);p.forEach(u=>u.locked=m),e.dispararEvento("ui-acao-massa",{acao:"bloqueio",feicoesIds:p.map(u=>u.id),feicoes:p,valor:m}),e.solicitarRenderizacao()});const t=r.getElementById("input-footer-color"),o=r.getElementById("preview-footer-color");t&&(t.addEventListener("input",p=>{const f=p.target.value;o&&(o.style.backgroundColor=f)}),t.addEventListener("change",p=>{const f=p.target.value;o&&(o.style.backgroundColor=f);const m=e.feicoes.filter(u=>e.selectedFeatureIds.has(u.id));m.length!==0&&(m.forEach(u=>{u.color=f,u.style={...u.style||{},fillColor:f,strokeColor:f}}),e.dispararEvento("ui-acao-massa",{acao:"cor",feicoesIds:m.map(u=>u.id),feicoes:m,valor:f}),e.solicitarRenderizacao())}));const n=r.getElementById("select-footer-move");n&&n.addEventListener("change",p=>{const f=p.target.value;if(!f)return;const m=e.feicoes.filter(g=>e.selectedFeatureIds.has(g.id));if(m.length===0)return;const u=new Map(m.map(g=>[g.id,g.layerId]));m.forEach(g=>g.layerId=f),m.forEach(g=>{u.get(g.id)!==f&&e.dispararEvento("ui-feicao-movida",{feicaoId:g.id,camadaOrigemId:u.get(g.id),camadaDestinoId:f,feicao:g})}),e.dispararEvento("ui-acao-massa",{acao:"mover",feicoesIds:m.map(g=>g.id),feicoes:m,valor:f}),e.solicitarRenderizacao()});const s=r.getElementById("btn-footer-new-layer");s&&s.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const l=r.getElementById("btn-footer-new-group");l&&l.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const c=r.getElementById("btn-footer-del");if(c){let p=null;const f="Excluir selecionados";c.addEventListener("click",()=>{const m=Array.from(e.selectedFeatureIds);if(m.length===0)return;if(!c.classList.contains("confirming")){c.classList.add("confirming"),P(c,`Clique novamente para excluir ${m.length} selecionado(s)`),p=setTimeout(()=>{c.classList.remove("confirming"),P(c,f)},3500);return}p&&clearTimeout(p);const u=e.feicoes.filter(g=>e.selectedFeatureIds.has(g.id));e.feicoes=e.feicoes.filter(g=>!e.selectedFeatureIds.has(g.id)),e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.dispararEvento("ui-acao-massa",{acao:"excluir",feicoesIds:m,feicoes:u}),e.notificarMudancaSelecao(),e.solicitarRenderizacao()})}const d=r.getElementById("btn-footer-clear");d&&d.addEventListener("click",()=>e.limparSelecao(!0))}const Ca=[{tipo:"olho",atributo:"data-layer-eye",entidade:"camada"},{tipo:"olho",atributo:"data-feat-eye",entidade:"feicao"},{tipo:"cadeado",atributo:"data-layer-lock",entidade:"camada"},{tipo:"cadeado",atributo:"data-feat-lock",entidade:"feicao"},{tipo:"selecao",atributo:"data-layer-target",entidade:"camada"},{tipo:"selecao",atributo:"data-feat-target",entidade:"feicao"}],le={olho:"[data-layer-eye], [data-feat-eye]",cadeado:"[data-layer-lock], [data-feat-lock]",selecao:"[data-layer-target], [data-feat-target]"},La=3;function $a(e){return Ca.find(r=>e.hasAttribute(r.atributo))??null}function ne(e,r){const a=$a(r);if(!a)return null;const i=r.getAttribute(a.atributo);if(!i)return null;if(a.tipo==="olho"){const o=a.entidade==="camada"?e.camadas.find(n=>n.id===i):e.feicoes.find(n=>n.id===i);return o?o.visible!==!1:null}if(a.tipo==="cadeado"){if(r.hasAttribute("data-locked-by-layer"))return null;const o=a.entidade==="camada"?e.camadas.find(n=>n.id===i):e.feicoes.find(n=>n.id===i);return o?o.locked===!0:null}if(a.entidade==="feicao")return e.selectedFeatureIds.has(i);const t=N(e.feicoes.filter(o=>o.layerId===i),e.searchQuery);return t.length===0?null:t.every(o=>e.selectedFeatureIds.has(o.id))}function Ce(e,r,a=!1){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,ctrlKey:r,shiftKey:a}))}let M=null;function Sa(e){(M==null?void 0:M.host)===e&&M.cancelar()}function Ma(e,r){Object.keys(le).forEach(a=>{r.querySelectorAll(le[a]).forEach(i=>{i.addEventListener("pointerdown",t=>za(e,r,a,i,t))})})}function za(e,r,a,i,t){if(t.pointerType==="mouse"&&t.button!==0||e.editingLayerId||e.editingFeatureId||ne(e,i)===null)return;M==null||M.cancelar();const o=le[a],n=t.ctrlKey||t.metaKey,s=t.shiftKey;let l=!1,c=!1,d=t.clientY;const p=new Set([i]),f=b=>{b.preventDefault(),b.stopImmediatePropagation()},m=b=>{b.stopPropagation(),b.preventDefault()},u=b=>b.preventDefault(),g=b=>{p.has(b)||(p.add(b),ne(e,b)!==c&&Ce(b,a==="selecao"))},k=()=>{l=!0,Ce(i,n,s),c=ne(e,i)===!0,r.addEventListener("selectstart",u),document.body.style.userSelect="none"},x=b=>{var j,B;if(!l){if(Math.hypot(b.clientX-t.clientX,b.clientY-t.clientY)<La)return;const A=(j=r.elementFromPoint(b.clientX,b.clientY))==null?void 0:j.closest(o);if(!A||A===i)return;k()}b.preventDefault();const h=Math.min(d,b.clientY),w=Math.max(d,b.clientY);r.querySelectorAll(o).forEach(A=>{const T=A.getBoundingClientRect();if(T.height===0)return;const F=T.top+T.height/2;F>=h&&F<=w&&g(A)});const $=(B=r.elementFromPoint(b.clientX,b.clientY))==null?void 0:B.closest(o);$&&g($),d=b.clientY},y=(b=!1)=>{(M==null?void 0:M.cancelar)===C&&(M=null),window.removeEventListener("pointermove",x),window.removeEventListener("pointerup",L),window.removeEventListener("pointercancel",L),window.removeEventListener("dragstart",f,!0),r.removeEventListener("selectstart",u),l&&(document.body.style.userSelect="",b||(window.addEventListener("click",m,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",m,!0),0)))},L=()=>y(),C=()=>y(!0);M={host:e,cancelar:C},window.addEventListener("dragstart",f,!0),window.addEventListener("pointermove",x,{passive:!1}),window.addEventListener("pointerup",L),window.addEventListener("pointercancel",L)}function Fa(e,r){const a=r.getElementById("btn-toggle-all-vis");a&&a.addEventListener("click",()=>e.alternarVisibilidadeTodas(!0));const i=r.getElementById("btn-toggle-all-expand");i&&i.addEventListener("click",s=>{s.stopPropagation(),e.camadas.length>0&&e.camadas.every(c=>e.expandedLayers.has(c.id))?e.colapsarTodas():e.expandirTodas()});const t=r.getElementById("btn-add-layer");t&&t.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const o=r.getElementById("btn-add-group");o&&o.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const n=r.getElementById("btn-colapsar");n&&n.addEventListener("click",()=>e.colapsar(!0)),Ba(e,r)}function Ba(e,r){const a=r.getElementById("input-layer-search"),i=r.getElementById("btn-clear-layer-search"),t=()=>{var o;e.searchQuery="",e.solicitarRenderizacao(),(o=r.getElementById("input-layer-search"))==null||o.focus()};if(a){const o=Se(()=>e.solicitarRenderizacao(),75);a.addEventListener("input",n=>{e.searchQuery=n.target.value,o()}),a.addEventListener("keydown",n=>{n.key==="Escape"&&e.searchQuery&&(n.preventDefault(),t())})}i&&i.addEventListener("click",t)}function qa(e,r){r.querySelectorAll("[data-feat-select]").forEach(a=>{a.addEventListener("click",i=>{if(e.editingFeatureId)return;const t=i;if(t.target.closest("[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"))return;const n=a.getAttribute("data-feat-select");n&&e.selecionarFeicao(n,t.ctrlKey||t.metaKey,t.shiftKey,!0)})}),r.querySelectorAll("[data-feat-target]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=i,o=a.getAttribute("data-feat-target");o&&e.selecionarFeicao(o,t.ctrlKey||t.metaKey,t.shiftKey,!0)})}),r.querySelectorAll("[data-feat-eye]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=a.getAttribute("data-feat-eye"),o=e.feicoes.find(n=>n.id===t);if(o){o.visible=o.visible===!1;const n=o.visible!==!1;a.innerHTML=n?v.olhoAberto:v.olhoFechado,P(a,n?"Ocultar Feição":"Exibir Feição");const s=a.closest(".ui-feat-row");s&&s.classList.toggle("hidden-row",!n),e.dispararEvento("ui-feicao-visibilidade",{feicaoId:o.id,visivel:n})}})}),r.querySelectorAll("[data-feat-lock]").forEach(a=>{a.addEventListener("click",i=>{if(i.stopPropagation(),a.hasAttribute("data-locked-by-layer"))return;const t=a.getAttribute("data-feat-lock"),o=e.feicoes.find(n=>n.id===t);o&&(o.locked=!o.locked,a.innerHTML=o.locked?v.cadeadoTrancado:v.cadeadoAberto,a.classList.toggle("ui-lock-open",!o.locked),P(a,o.locked?"Desbloquear Feição":"Bloquear Feição"),e.dispararEvento("ui-feicao-bloqueio",{feicaoId:o.id,bloqueado:o.locked}))})}),r.querySelectorAll("[data-feat-fit]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=a.getAttribute("data-feat-fit");t&&e.dispararEvento("ui-feicao-enquadrar",{feicaoId:t})})})}function Pa(e,r){var a;r.querySelectorAll("[data-basemap-thumb]").forEach(i=>{i.addEventListener("error",()=>{const t=document.createElement("div");t.className="ui-basemap-preview-none",t.innerHTML=v.mapa,i.replaceWith(t)},{once:!0})}),(a=r.querySelector("[data-basemap-toggle]"))==null||a.addEventListener("click",()=>{e.alternarMapasBaseRecolhido(!0)}),r.querySelectorAll("[data-basemap-id]").forEach(i=>{i.addEventListener("click",()=>{const t=i.getAttribute("data-basemap-id");t&&e.selecionarMapaBase(t,!0)})})}function Da(e,r){Fa(e,r),Ea(e,r),qa(e,r),Pa(e,r),Ia(e,r),Ma(e,r)}function Ta(e,r,a,i){var g,k;const t=Re({camadas:e.camadas,feicoes:e.feicoes,camadaAtivaId:e.camadaAtivaId,expandedLayers:e.expandedLayers,selectedFeatureIds:e.selectedFeatureIds,activeSettingsLayerId:e.activeSettingsLayerId,editingLayerId:e.editingLayerId,editingFeatureId:e.editingFeatureId,searchQuery:e.searchQuery,mostrarBotaoColapsar:e.flutuante&&e.getAttribute("colapsavel")!=="false"}),o=e.mostrarMapasBase?Me(e.mapasBase,e.mapaBaseAtivo,e.mapasBaseRecolhido):"",n=e.mostrarRodape?Fe(e.camadas,e.feicoes,e.selectedFeatureIds):"",s=r.getElementById("ui-layer-tree-mount"),l=a.scrollTop,c=s?s.scrollTop:0,d=r.activeElement,p=d&&a.contains(d)?d.id:"",f=d&&!p&&a.contains(d)?Array.from(d.attributes).find(x=>x.name.startsWith("data-")&&x.value!==""):void 0,m=d&&"selectionStart"in d?d.selectionStart:null;a.innerHTML=`
315
319
  ${t}
316
320
  ${n}
317
321
  ${o}
318
- `,a.scrollTop=l;const m=r.getElementById("ui-layer-tree-mount");if(m&&(m.scrollTop=c),u){const h=r.getElementById(u);if(h&&(h.focus({preventScroll:!0}),f!==null&&typeof h.setSelectionRange=="function"))try{h.setSelectionRange(f,f)}catch{}}!u&&p&&((g=T(a,p.name,p.value))==null||g.focus({preventScroll:!0})),(L=r.querySelector("[data-layer-row], [data-feat-row]"))==null||L.setAttribute("tabindex","0"),Fa(e,r),i.bindAll()}const qa='[role="button"][tabindex]',H="[data-layer-row], [data-feat-row]",Da=["color","range","checkbox","radio","button"];function He(e){return e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?!0:e instanceof HTMLInputElement&&!Da.includes(e.type)}function Pa(e){return Array.from(e.querySelectorAll(H)).filter(r=>{const a=r.closest(".ui-children-container");return!(a&&a.style.display==="none")&&!r.classList.contains("ui-search-hidden")})}function _(e,r){r&&(e.querySelectorAll(H).forEach(a=>a.setAttribute("tabindex","-1")),r.setAttribute("tabindex","0"),r.focus())}function Ta(e,r){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,ctrlKey:r.ctrlKey||r.metaKey,shiftKey:r.shiftKey}))}function Ra(e,r,a){var i;if(!He(a.composedPath()[0])){if(e.activeSettingsLayerId){a.preventDefault();const t=e.activeSettingsLayerId;e.activeSettingsLayerId=null,e.solicitarRenderizacao(),(i=T(r,"data-layer-settings",t))==null||i.focus();return}e.selectedFeatureIds.size>0&&(a.preventDefault(),e.limparSelecao(!0))}}function Oa(e,r,a){var n;const i=a.composedPath()[0];if(!(i instanceof HTMLElement)||He(i))return;if((a.key==="Enter"||a.key===" ")&&i.matches(qa)){a.preventDefault(),i.click();return}if(!i.matches(H))return;const t=Pa(e),o=t.indexOf(i);switch(a.key){case"ArrowDown":a.preventDefault(),_(e,t[Math.min(t.length-1,o+1)]);break;case"ArrowUp":a.preventDefault(),_(e,t[Math.max(0,o-1)]);break;case"Home":a.preventDefault(),_(e,t[0]);break;case"End":a.preventDefault(),_(e,t[t.length-1]);break;case"ArrowRight":case"ArrowLeft":{const s=i.getAttribute("data-layer-row");if(!s)return;const l=i.closest(".ui-layer-group"),c=(l==null?void 0:l.getAttribute("aria-expanded"))==="true";a.key==="ArrowRight"!==c&&(a.preventDefault(),(n=T(r,"data-layer-expand",s))==null||n.click());break}case"Enter":case" ":a.preventDefault(),Ta(i,a);break}}function ja(e,r,a,i,t){t.add(r,"keydown",o=>{o.key==="Escape"&&Ra(e,a,o)}),t.add(i,"keydown",o=>Oa(i,a,o)),t.add(i,"focusin",o=>{const n=o.composedPath()[0];n instanceof HTMLElement&&n.matches(H)&&(i.querySelectorAll(H).forEach(s=>s.setAttribute("tabindex","-1")),n.setAttribute("tabindex","0"))})}function Ha(e,r){r.querySelectorAll("[data-layer-row]").forEach(i=>{const o=i.getAttribute("data-layer-row")===e.camadaAtivaId;i.classList.toggle("active-drawing-layer",o);const n=i.querySelector(".ui-col-name");if(n){let s=n.querySelector(".ui-active-badge");if(o&&!s){s=document.createElement("span"),s.className="ui-active-badge",s.textContent="✓ Ativa";const l=n.querySelector(".ui-count-chip");l?n.insertBefore(s,l):n.appendChild(s)}else!o&&s&&s.remove()}})}function Na(e,r){r.querySelectorAll(".ui-feat-row").forEach(h=>{const A=h.getAttribute("data-feat-row"),C=A?e.selectedFeatureIds.has(A):!1;h.classList.toggle("selected-row",C),h.setAttribute("aria-selected",String(C));const x=h.querySelector(".ui-target-circle");x&&x.classList.toggle("selected",C)}),r.querySelectorAll(".ui-layer-group").forEach(h=>{const A=h.getAttribute("data-layer-id"),C=e.feicoes.filter(v=>v.layerId===A),x=h.querySelector(".ui-layer-row .ui-target-circle");if(x&&C.length>0){const v=C.every(w=>e.selectedFeatureIds.has(w.id)),y=!v&&C.some(w=>e.selectedFeatureIds.has(w.id));x.classList.toggle("selected",v),x.classList.toggle("partial",y)}else x&&x.classList.remove("selected","partial")});const a=e.feicoes.filter(h=>e.selectedFeatureIds.has(h.id)),i=a.length>0,t=r.getElementById("footer-count"),o=r.getElementById("footer-label");t&&(t.textContent=String(i?a.length:e.camadas.length)),o&&(o.textContent=i?a.length>1?"selecionados":"selecionado":e.camadas.length>1?"camadas":"camada");const n=r.querySelector(".ui-footer-metric"),s=ce(a);n&&(s?(n.innerHTML=`${b.reguaMetrica} ${s}`,n.style.display="inline-flex"):n.style.display="none");const l=r.querySelector(".ui-tree-footer");l&&(l.classList.toggle("tem-selecao",i),l.classList.toggle("sem-selecao",!i));const c=r.querySelector(".ui-footer-actions-gerais");c&&(c.style.display=i?"none":"flex");const d=r.querySelector(".ui-footer-bulk-actions");d&&(d.style.display=i?"flex":"none"),["btn-footer-vis","btn-footer-lock","btn-footer-del"].forEach(h=>{const A=r.getElementById(h);A&&(A.disabled=!i,A.classList.toggle("disabled",!i))});const u=r.querySelector(".ui-footer-move-wrapper");u&&u.classList.toggle("disabled",!i);const p=r.getElementById("select-footer-move");p&&(p.disabled=!i);const f=r.querySelector(".ui-footer-color-wrapper");f&&f.classList.toggle("disabled",!i);const m=r.getElementById("input-footer-color");m&&(m.disabled=!i);let g=r.getElementById("btn-footer-clear");const L=r.querySelector(".ui-footer-right");i&&!g&&L?(g=document.createElement("button"),g.id="btn-footer-clear",g.className="ui-footer-btn btn-clear-footer",g.title="Limpar seleção",g.innerHTML=b.fechar,g.addEventListener("click",()=>e.limparSelecao(!0)),L.appendChild(g)):!i&&g&&g.remove()}function Ga(e,r,a,i,t){const o=Fe(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery),n=!i&&!o.includes(r)&&e.feicoes.some(l=>l.id===r),s=Be(n?[...o,r]:o,e.selectedFeatureIds,e.lastClickedFeatureId,r,a,i);s&&(e.selectedFeatureIds=s.selecionados,e.lastClickedFeatureId=s.ultimoClicadoId,e.sincronizarSelecaoDOM(),t&&e.notificarMudancaSelecao())}function Ua(e,r,a){const i=r||[];i.length===e.selectedFeatureIds.size&&i.every(n=>e.selectedFeatureIds.has(n))||(e.selectedFeatureIds.clear(),i.forEach(n=>e.selectedFeatureIds.add(n)),e.lastClickedFeatureId=i.length>0?i[i.length-1]:null,e.sincronizarSelecaoDOM(),a&&e.notificarMudancaSelecao())}function _a(e,r){e.selectedFeatureIds.size!==0&&(e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.sincronizarSelecaoDOM(),r&&e.notificarMudancaSelecao())}function Ya(e){const r=e.feicoes.filter(a=>e.selectedFeatureIds.has(a.id));e.dispararEvento("ui-feicoes-selecionadas",{feicoesIds:Array.from(e.selectedFeatureIds),feicoes:r}),r.length===1?e.dispararEvento("ui-feicao-selecionada",{feicaoId:r[0].id,feicao:r[0]}):r.length===0&&e.dispararEvento("ui-feicao-selecionada",{feicaoId:null,feicao:null})}class Va{constructor(r){E(this,"origens",new Map);E(this,"removidas",new Set);E(this,"salvarComDebounce",Ie(()=>this.salvar(),200));this.instantaneo=r}chaveAtual(){const r=this.instantaneo();return Pe(r.storageKey,r.id)}carregar(){return K(this.chaveAtual())}agendar(){this.salvarComDebounce()}salvar(){const r=this.instantaneo();if(!r.persistir||!r.conectado)return;const a=this.chaveAtual(),i=je({estadoAnterior:K(a),origensCamadas:this.origens,camadas:r.camadas,expandedLayers:r.expandedLayers,camadaAtivaId:r.camadaAtivaId,painelColapsado:r.painelColapsado,mapaBaseAtivo:r.mapaBaseAtivo,densidade:r.densidade,altura:r.altura,camadasRemovidas:this.removidas});this.removidas.clear(),Te(a,i)}limpar(){Re(this.chaveAtual())}limparOrigens(){this.origens.clear()}registrarOrigem(r){this.origens.set(r.id,pe(r))}esquecerCamada(r){this.origens.delete(r),this.removidas.add(r)}reidratar(r,a,i){Oe(r,a,i,this.origens)}}function Ne(e,r=null){const a=[];for(const i of e){const t={...i};r&&t.parentId===void 0&&(t.parentId=r),a.push(t),Array.isArray(i.children)&&i.children.length>0&&a.push(...Ne(i.children,i.id))}return a}function Ka(e,r,a){if(e.camadas=Array.isArray(r)?Ne(r):[],e.lembranca.limparOrigens(),e.persistir){const t=e.lembranca.carregar();e.lembranca.reidratar(e.camadas,t,e.expandedLayers),t!=null&&t.camadaAtivaId&&e.camadas.some(o=>o.id===t.camadaAtivaId)&&(e.camadaAtivaId=t.camadaAtivaId)}else e.camadas.forEach(t=>{e.lembranca.registrarOrigem(t),e.expandedLayers.has(t.id)||e.expandedLayers.add(t.id)});if(Array.isArray(a)){e.feicoes=a.map(n=>({...n}));const t=new Set(e.camadas.map(n=>n.id)),o=e.feicoes.filter(n=>n.layerId&&!t.has(n.layerId));o.length>0&&console.warn(`[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,o.map(n=>({id:n.id,nome:n.name,layerId:n.layerId}))),Q(e.selectedFeatureIds,e.feicoes)}const i=e.getAttribute("camada-ativa");e.camadas.length>0&&(!i||!e.camadas.some(t=>t.id===i))&&(e.camadaAtivaId=e.camadas[0].id),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function Xa(e,r){e.feicoes=Array.isArray(r)?r.map(a=>({...a})):[],Q(e.selectedFeatureIds,e.feicoes),e.solicitarRenderizacao()}function Qa(e,r){if(!r||!r.id)return;if(e.camadas.some(i=>i.id===r.id)){console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);return}const a={...r};e.camadas.push(a),e.lembranca.registrarOrigem(a),e.expandedLayers.add(a.id),a.parentId&&e.expandedLayers.add(a.parentId),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function Ja(e,r){var a;e.camadas.forEach(i=>{i.parentId===r&&(i.parentId=null)}),e.camadas=e.camadas.filter(i=>i.id!==r),e.feicoes=e.feicoes.filter(i=>i.layerId!==r),e.lembranca.esquecerCamada(r),e.expandedLayers.delete(r),e.activeSettingsLayerId===r&&(e.activeSettingsLayerId=null),Q(e.selectedFeatureIds,e.feicoes),e.selectedFeatureIds.size===0&&(e.lastClickedFeatureId=null),e.camadaAtivaId===r&&(e.camadaAtivaId=((a=e.camadas[0])==null?void 0:a.id)??null),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function Wa(e,r){if(!(!r||!r.id)){if(e.feicoes.some(a=>a.id===r.id)){console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);return}e.feicoes.push({...r}),e.solicitarRenderizacao()}}function Za(e,r){const a=e.feicoes.findIndex(i=>i.id===r.id);a!==-1&&(e.feicoes[a]={...e.feicoes[a],...r},e.solicitarRenderizacao())}function er(e,r){e.feicoes=e.feicoes.filter(a=>a.id!==r),e.selectedFeatureIds.delete(r),e.solicitarRenderizacao()}function ar(e){function i(){return e.getMinAltura?e.getMinAltura():140}function t(){return e.getMaxAltura?e.getMaxAltura():1600}function o(c,d=!1){if(c==null||c===""){e.hostElement.style.removeProperty("height"),e.hostElement.style.removeProperty("--ui-camadas-altura"),d&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:null}}));return}const u=typeof c=="number"?c:parseFloat(String(c));if(isNaN(u))return;const p=Math.max(i(),Math.min(t(),Math.round(u)));e.hostElement.style.height=`${p}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${p}px`),d&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:p}}))}let n=null;function s(){if(!e.resizerElement)return;let c=!1,d=0,u=0;const p=m=>{if(m.button!==0)return;m.preventDefault(),m.stopPropagation(),c=!0,d=m.clientY,u=e.hostElement.getBoundingClientRect().height,e.resizerElement.classList.add("ui-camadas-resizer--ativo"),e.hostElement.classList.add("ui-camadas--redimensionando");try{e.resizerElement.setPointerCapture(m.pointerId)}catch{}const g=A=>{if(!c)return;A.preventDefault();const C=A.clientY-d,x=Math.max(i(),Math.min(t(),Math.round(u+C)));e.hostElement.style.height=`${x}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${x}px`),e.onRedimensionando&&e.onRedimensionando(x),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionando-altura",{bubbles:!0,composed:!0,detail:{altura:x}}))},L=()=>{var A;c=!1,n=null,window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h),(A=e.resizerElement)==null||A.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando")},h=A=>{if(!c)return;c=!1,e.resizerElement.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando");try{e.resizerElement.hasPointerCapture(A.pointerId)&&e.resizerElement.releasePointerCapture(A.pointerId)}catch{}window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h);const C=e.hostElement.getBoundingClientRect().height,x=Math.round(C);e.onAlturaAlterada&&e.onAlturaAlterada(x),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:x}}))};n=L,window.addEventListener("pointermove",g),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h)},f=m=>{m.preventDefault(),m.stopPropagation(),o(null,!0),e.onAlturaAlterada&&e.onAlturaAlterada(null)};e.listeners.add(e.resizerElement,"pointerdown",p),e.listeners.add(e.resizerElement,"dblclick",f)}function l(){n==null||n(),e.listeners.cleanup()}return{init:s,definirAltura:o,destruir:l}}const R=class R extends X.SafeHTMLElement{constructor(){super();E(this,"shadow");E(this,"listeners",new ra.ListenerBag);E(this,"dragDropManager");E(this,"resizerController");E(this,"alturaCustomizada",null);E(this,"conectado",!1);E(this,"profundidadeLote",0);E(this,"renderPendente",!1);E(this,"lembranca",new Va(()=>({persistir:this.persistir,conectado:this.conectado,storageKey:this.storageKey,id:this.id,camadas:this.camadas,expandedLayers:this.expandedLayers,camadaAtivaId:this.camadaAtivaId,painelColapsado:this.colapsado,mapaBaseAtivo:this.mapaBaseAtivo,densidade:this.densidade,altura:this.alturaCustomizada})));E(this,"camadas",[]);E(this,"feicoes",[]);E(this,"mapasBase",[...de]);E(this,"expandedLayers",new Set);E(this,"selectedFeatureIds",new Set);E(this,"lastClickedFeatureId",null);E(this,"activeSettingsLayerId",null);E(this,"editingLayerId",null);E(this,"editingFeatureId",null);E(this,"searchQuery","");E(this,"corpoElement");E(this,"btnExpandirFlutuante");this.shadow=this.attachShadow({mode:"open"}),this.shadow.innerHTML=`
319
- <style>${ba}</style>
322
+ `,a.scrollTop=l;const u=r.getElementById("ui-layer-tree-mount");if(u&&(u.scrollTop=c),p){const x=r.getElementById(p);if(x&&(x.focus({preventScroll:!0}),m!==null&&typeof x.setSelectionRange=="function"))try{x.setSelectionRange(m,m)}catch{}}!p&&f&&((g=D(a,f.name,f.value))==null||g.focus({preventScroll:!0})),(k=r.querySelector("[data-layer-row], [data-feat-row]"))==null||k.setAttribute("tabindex","0"),Da(e,r),i.bindAll()}const Ra='[role="button"][tabindex]',G="[data-layer-row], [data-feat-row]",Oa=["color","range","checkbox","radio","button"];function Ve(e){return e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?!0:e instanceof HTMLInputElement&&!Oa.includes(e.type)}function ja(e){return Array.from(e.querySelectorAll(G)).filter(r=>{const a=r.closest(".ui-children-container");return!(a&&a.style.display==="none")&&!r.classList.contains("ui-search-hidden")})}function Y(e,r){r&&(e.querySelectorAll(G).forEach(a=>a.setAttribute("tabindex","-1")),r.setAttribute("tabindex","0"),r.focus())}function Ha(e,r){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,ctrlKey:r.ctrlKey||r.metaKey,shiftKey:r.shiftKey}))}function Na(e,r,a){var i;if(!Ve(a.composedPath()[0])){if(e.activeSettingsLayerId){a.preventDefault();const t=e.activeSettingsLayerId;e.activeSettingsLayerId=null,e.solicitarRenderizacao(),(i=D(r,"data-layer-settings",t))==null||i.focus();return}e.selectedFeatureIds.size>0&&(a.preventDefault(),e.limparSelecao(!0))}}function Ga(e,r,a){var n;const i=a.composedPath()[0];if(!(i instanceof HTMLElement)||Ve(i))return;if((a.key==="Enter"||a.key===" ")&&i.matches(Ra)){a.preventDefault(),i.click();return}if(!i.matches(G))return;const t=ja(e),o=t.indexOf(i);switch(a.key){case"ArrowDown":a.preventDefault(),Y(e,t[Math.min(t.length-1,o+1)]);break;case"ArrowUp":a.preventDefault(),Y(e,t[Math.max(0,o-1)]);break;case"Home":a.preventDefault(),Y(e,t[0]);break;case"End":a.preventDefault(),Y(e,t[t.length-1]);break;case"ArrowRight":case"ArrowLeft":{const s=i.getAttribute("data-layer-row");if(!s)return;const l=i.closest(".ui-layer-group"),c=(l==null?void 0:l.getAttribute("aria-expanded"))==="true";a.key==="ArrowRight"!==c&&(a.preventDefault(),(n=D(r,"data-layer-expand",s))==null||n.click());break}case"Enter":case" ":a.preventDefault(),Ha(i,a);break}}function Ua(e,r,a,i,t){t.add(r,"keydown",o=>{o.key==="Escape"&&Na(e,a,o)}),t.add(i,"keydown",o=>Ga(i,a,o)),t.add(i,"focusin",o=>{const n=o.composedPath()[0];n instanceof HTMLElement&&n.matches(G)&&(i.querySelectorAll(G).forEach(s=>s.setAttribute("tabindex","-1")),n.setAttribute("tabindex","0"))})}function Va(e,r){r.querySelectorAll("[data-layer-row]").forEach(i=>{const o=i.getAttribute("data-layer-row")===e.camadaAtivaId;i.classList.toggle("active-drawing-layer",o);const n=i.querySelector(".ui-col-name");if(n){let s=n.querySelector(".ui-active-badge");if(o&&!s){s=document.createElement("span"),s.className="ui-active-badge",s.textContent="✓ Ativa";const l=n.querySelector(".ui-count-chip");l?n.insertBefore(s,l):n.appendChild(s)}else!o&&s&&s.remove()}})}function _a(e,r){r.querySelectorAll(".ui-feat-row").forEach(x=>{const y=x.getAttribute("data-feat-row"),L=y?e.selectedFeatureIds.has(y):!1;x.classList.toggle("selected-row",L),x.setAttribute("aria-selected",String(L));const C=x.querySelector(".ui-target-circle");C&&C.classList.toggle("selected",L)}),r.querySelectorAll(".ui-layer-group").forEach(x=>{const y=x.getAttribute("data-layer-id"),L=e.feicoes.filter(b=>b.layerId===y),C=x.querySelector(".ui-layer-row .ui-target-circle");if(C&&L.length>0){const b=L.every(w=>e.selectedFeatureIds.has(w.id)),h=!b&&L.some(w=>e.selectedFeatureIds.has(w.id));C.classList.toggle("selected",b),C.classList.toggle("partial",h)}else C&&C.classList.remove("selected","partial")});const a=e.feicoes.filter(x=>e.selectedFeatureIds.has(x.id)),i=a.length>0,t=r.getElementById("footer-count"),o=r.getElementById("footer-label");t&&(t.textContent=String(i?a.length:e.camadas.length)),o&&(o.textContent=i?a.length>1?"selecionados":"selecionado":e.camadas.length>1?"camadas":"camada");const n=r.querySelector(".ui-footer-metric"),s=ue(a);n&&(s?(n.innerHTML=`${v.reguaMetrica} ${s}`,n.style.display="inline-flex"):n.style.display="none");const l=r.querySelector(".ui-tree-footer");l&&(l.classList.toggle("tem-selecao",i),l.classList.toggle("sem-selecao",!i));const c=r.querySelector(".ui-footer-actions-gerais");c&&(c.style.display=i?"none":"flex");const d=r.querySelector(".ui-footer-bulk-actions");d&&(d.style.display=i?"flex":"none"),["btn-footer-vis","btn-footer-lock","btn-footer-del"].forEach(x=>{const y=r.getElementById(x);y&&(y.disabled=!i,y.classList.toggle("disabled",!i))});const p=r.querySelector(".ui-footer-move-wrapper");p&&p.classList.toggle("disabled",!i);const f=r.getElementById("select-footer-move");f&&(f.disabled=!i);const m=r.querySelector(".ui-footer-color-wrapper");m&&m.classList.toggle("disabled",!i);const u=r.getElementById("input-footer-color");u&&(u.disabled=!i);let g=r.getElementById("btn-footer-clear");const k=r.querySelector(".ui-footer-right");i&&!g&&k?(g=document.createElement("button"),g.id="btn-footer-clear",g.className="ui-footer-btn btn-clear-footer",g.title="Limpar seleção",g.innerHTML=v.fechar,g.addEventListener("click",()=>e.limparSelecao(!0)),k.appendChild(g)):!i&&g&&g.remove()}function Ya(e,r,a,i,t){const o=De(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery),n=!i&&!o.includes(r)&&e.feicoes.some(l=>l.id===r),s=Te(n?[...o,r]:o,e.selectedFeatureIds,e.lastClickedFeatureId,r,a,i);s&&(e.selectedFeatureIds=s.selecionados,e.lastClickedFeatureId=s.ultimoClicadoId,e.sincronizarSelecaoDOM(),t&&e.notificarMudancaSelecao())}function Ka(e,r,a){const i=r||[];i.length===e.selectedFeatureIds.size&&i.every(n=>e.selectedFeatureIds.has(n))||(e.selectedFeatureIds.clear(),i.forEach(n=>e.selectedFeatureIds.add(n)),e.lastClickedFeatureId=i.length>0?i[i.length-1]:null,e.sincronizarSelecaoDOM(),a&&e.notificarMudancaSelecao())}function Xa(e,r){e.selectedFeatureIds.size!==0&&(e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.sincronizarSelecaoDOM(),r&&e.notificarMudancaSelecao())}function Qa(e){const r=e.feicoes.filter(a=>e.selectedFeatureIds.has(a.id));e.dispararEvento("ui-feicoes-selecionadas",{feicoesIds:Array.from(e.selectedFeatureIds),feicoes:r}),r.length===1?e.dispararEvento("ui-feicao-selecionada",{feicaoId:r[0].id,feicao:r[0]}):r.length===0&&e.dispararEvento("ui-feicao-selecionada",{feicaoId:null,feicao:null})}class Ja{constructor(r){E(this,"origens",new Map);E(this,"removidas",new Set);E(this,"salvarComDebounce",Se(()=>this.salvar(),200));this.instantaneo=r}chaveAtual(){const r=this.instantaneo();return je(r.storageKey,r.id)}carregar(){return Q(this.chaveAtual())}agendar(){this.salvarComDebounce()}salvar(){const r=this.instantaneo();if(!r.persistir||!r.conectado)return;const a=this.chaveAtual(),i=Ue({estadoAnterior:Q(a),origensCamadas:this.origens,camadas:r.camadas,expandedLayers:r.expandedLayers,camadaAtivaId:r.camadaAtivaId,painelColapsado:r.painelColapsado,mapaBaseAtivo:r.mapaBaseAtivo,densidade:r.densidade,altura:r.altura,camadasRemovidas:this.removidas});this.removidas.clear(),He(a,i)}limpar(){Ne(this.chaveAtual())}limparOrigens(){this.origens.clear()}registrarOrigem(r){this.origens.set(r.id,ve(r))}esquecerCamada(r){this.origens.delete(r),this.removidas.add(r)}reidratar(r,a,i){Ge(r,a,i,this.origens)}}function _e(e,r=null){const a=[];for(const i of e){const t={...i};r&&t.parentId===void 0&&(t.parentId=r),a.push(t),Array.isArray(i.children)&&i.children.length>0&&a.push(..._e(i.children,i.id))}return a}function Wa(e,r,a){if(e.camadas=Array.isArray(r)?_e(r):[],e.lembranca.limparOrigens(),e.persistir){const t=e.lembranca.carregar();e.lembranca.reidratar(e.camadas,t,e.expandedLayers),t!=null&&t.camadaAtivaId&&e.camadas.some(o=>o.id===t.camadaAtivaId)&&(e.camadaAtivaId=t.camadaAtivaId)}else e.camadas.forEach(t=>{e.lembranca.registrarOrigem(t),e.expandedLayers.has(t.id)||e.expandedLayers.add(t.id)});if(Array.isArray(a)){e.feicoes=a.map(n=>({...n}));const t=new Set(e.camadas.map(n=>n.id)),o=e.feicoes.filter(n=>n.layerId&&!t.has(n.layerId));o.length>0&&console.warn(`[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,o.map(n=>({id:n.id,nome:n.name,layerId:n.layerId}))),W(e.selectedFeatureIds,e.feicoes)}const i=e.getAttribute("camada-ativa");e.camadas.length>0&&(!i||!e.camadas.some(t=>t.id===i))&&(e.camadaAtivaId=e.camadas[0].id),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function Za(e,r){e.feicoes=Array.isArray(r)?r.map(a=>({...a})):[],W(e.selectedFeatureIds,e.feicoes),e.solicitarRenderizacao()}function er(e,r){if(!r||!r.id)return;if(e.camadas.some(i=>i.id===r.id)){console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);return}const a={...r};e.camadas.push(a),e.lembranca.registrarOrigem(a),e.expandedLayers.add(a.id),a.parentId&&e.expandedLayers.add(a.parentId),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function ar(e,r){var a;e.camadas.forEach(i=>{i.parentId===r&&(i.parentId=null)}),e.camadas=e.camadas.filter(i=>i.id!==r),e.feicoes=e.feicoes.filter(i=>i.layerId!==r),e.lembranca.esquecerCamada(r),e.expandedLayers.delete(r),e.activeSettingsLayerId===r&&(e.activeSettingsLayerId=null),W(e.selectedFeatureIds,e.feicoes),e.selectedFeatureIds.size===0&&(e.lastClickedFeatureId=null),e.camadaAtivaId===r&&(e.camadaAtivaId=((a=e.camadas[0])==null?void 0:a.id)??null),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function rr(e,r){if(!(!r||!r.id)){if(e.feicoes.some(a=>a.id===r.id)){console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);return}e.feicoes.push({...r}),e.solicitarRenderizacao()}}function tr(e,r){const a=e.feicoes.findIndex(i=>i.id===r.id);a!==-1&&(e.feicoes[a]={...e.feicoes[a],...r},e.solicitarRenderizacao())}function ir(e,r){e.feicoes=e.feicoes.filter(a=>a.id!==r),e.selectedFeatureIds.delete(r),e.solicitarRenderizacao()}function or(e){function i(){return e.getMinAltura?e.getMinAltura():140}function t(){return e.getMaxAltura?e.getMaxAltura():1600}function o(c,d=!1){if(c==null||c===""){e.hostElement.style.removeProperty("height"),e.hostElement.style.removeProperty("--ui-camadas-altura"),d&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:null}}));return}const p=typeof c=="number"?c:parseFloat(String(c));if(isNaN(p))return;const f=Math.max(i(),Math.min(t(),Math.round(p)));e.hostElement.style.height=`${f}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${f}px`),d&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:f}}))}let n=null;function s(){if(!e.resizerElement)return;let c=!1,d=0,p=0;const f=u=>{if(u.button!==0)return;u.preventDefault(),u.stopPropagation(),c=!0,d=u.clientY,p=e.hostElement.getBoundingClientRect().height,e.resizerElement.classList.add("ui-camadas-resizer--ativo"),e.hostElement.classList.add("ui-camadas--redimensionando");try{e.resizerElement.setPointerCapture(u.pointerId)}catch{}const g=y=>{if(!c)return;y.preventDefault();const L=y.clientY-d,C=Math.max(i(),Math.min(t(),Math.round(p+L)));e.hostElement.style.height=`${C}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${C}px`),e.onRedimensionando&&e.onRedimensionando(C),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionando-altura",{bubbles:!0,composed:!0,detail:{altura:C}}))},k=()=>{var y;c=!1,n=null,window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",x),(y=e.resizerElement)==null||y.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando")},x=y=>{if(!c)return;c=!1,e.resizerElement.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando");try{e.resizerElement.hasPointerCapture(y.pointerId)&&e.resizerElement.releasePointerCapture(y.pointerId)}catch{}window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",x);const L=e.hostElement.getBoundingClientRect().height,C=Math.round(L);e.onAlturaAlterada&&e.onAlturaAlterada(C),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:C}}))};n=k,window.addEventListener("pointermove",g),window.addEventListener("pointerup",x),window.addEventListener("pointercancel",x)},m=u=>{u.preventDefault(),u.stopPropagation(),o(null,!0),e.onAlturaAlterada&&e.onAlturaAlterada(null)};e.listeners.add(e.resizerElement,"pointerdown",f),e.listeners.add(e.resizerElement,"dblclick",m)}function l(){n==null||n(),e.listeners.cleanup()}return{init:s,definirAltura:o,destruir:l}}const R=class R extends J.SafeHTMLElement{constructor(){super();E(this,"shadow");E(this,"listeners",new na.ListenerBag);E(this,"dragDropManager");E(this,"resizerController");E(this,"alturaCustomizada",null);E(this,"conectado",!1);E(this,"profundidadeLote",0);E(this,"renderPendente",!1);E(this,"lembranca",new Ja(()=>({persistir:this.persistir,conectado:this.conectado,storageKey:this.storageKey,id:this.id,camadas:this.camadas,expandedLayers:this.expandedLayers,camadaAtivaId:this.camadaAtivaId,painelColapsado:this.colapsado,mapaBaseAtivo:this.mapaBaseAtivo,densidade:this.densidade,altura:this.alturaCustomizada})));E(this,"camadas",[]);E(this,"feicoes",[]);E(this,"mapasBase",[...pe]);E(this,"expandedLayers",new Set);E(this,"selectedFeatureIds",new Set);E(this,"lastClickedFeatureId",null);E(this,"activeSettingsLayerId",null);E(this,"editingLayerId",null);E(this,"editingFeatureId",null);E(this,"searchQuery","");E(this,"corpoElement");E(this,"btnExpandirFlutuante");this.shadow=this.attachShadow({mode:"open"}),this.shadow.innerHTML=`
323
+ <style>${wa}</style>
320
324
  <div class="ui-camadas-container" id="panel-container" role="region" aria-label="Painel de Camadas">
321
325
  <div class="ui-camadas-corpo" id="painel-corpo"></div>
322
326
  <div class="ui-camadas-resizer-altura" id="resizer-altura" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
@@ -324,6 +328,6 @@
324
328
  </div>
325
329
  </div>
326
330
  <button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
327
- ${b.camadas}
331
+ ${v.camadas}
328
332
  </button>
329
- `,this.corpoElement=this.shadow.getElementById("painel-corpo"),this.btnExpandirFlutuante=this.shadow.getElementById("btn-expandir-flutuante"),this.dragDropManager=new De(this,this.shadow);const a=this.shadow.getElementById("resizer-altura");this.resizerController=ar({hostElement:this,resizerElement:a,listeners:this.listeners,getMinAltura:()=>{const i=this.getAttribute("min-altura");return i&&parseFloat(i)||140},getMaxAltura:()=>{const i=this.getAttribute("max-altura");return i&&parseFloat(i)||1600},onAlturaAlterada:i=>{this.alturaCustomizada=i,this.salvarLembrancaEstado()}})}static get observedAttributes(){return["titulo","mapa-base-ativo","camada-ativa","aba-ativa","colapsavel","colapsado","flutuante","mostrar-mapas-base","mostrar-rodape","mostrar-busca","densidade","persistir","storage-key","redimensionavel","redimensionavel-altura","altura","min-altura","max-altura"]}connectedCallback(){if(this.persistir){const a=K(this.obterChaveStorageAtual());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))}this.hasAttribute("altura")&&this.resizerController.definirAltura(this.getAttribute("altura"),!1),this.persistir&&!this.storageKey&&!this.id&&(R.instanciasChavePadrao.size>0&&console.warn("[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."),R.instanciasChavePadrao.add(this)),this.resizerController.init(),this.render(),this.conectarEventosGerais(),ja(this,this,this.shadow,this.corpoElement,this.listeners),this.conectado=!0,this.camadas.length>0&&this.salvarLembrancaEstado()}disconnectedCallback(){var a,i;this.conectado=!1,R.instanciasChavePadrao.delete(this),(a=this.resizerController)==null||a.destruir(),(i=this.dragDropManager)==null||i.destruir(),Ia(this),this.listeners.cleanup()}attributeChangedCallback(a,i,t){var o;i!==t&&(a==="colapsado"?this.salvarLembrancaEstado():a==="camada-ativa"?(this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado()):a==="mapa-base-ativo"?t&&this.marcarMapaBaseAtivoNoDOM(t):a==="mostrar-mapas-base"||a==="mostrar-rodape"||a==="mostrar-busca"||a==="colapsavel"||a==="flutuante"?this.solicitarRenderizacao():a==="altura"&&((o=this.resizerController)==null||o.definirAltura(t,!1)))}get titulo(){return this.getAttribute("titulo")||"Camadas"}set titulo(a){this.setAttribute("titulo",a)}get camadaAtivaId(){var a;return this.getAttribute("camada-ativa")||(((a=this.camadas[0])==null?void 0:a.id)??null)}set camadaAtivaId(a){a?this.setAttribute("camada-ativa",a):this.removeAttribute("camada-ativa")}get mapaBaseAtivo(){return this.getAttribute("mapa-base-ativo")||"satelite"}set mapaBaseAtivo(a){this.setAttribute("mapa-base-ativo",a)}selecionarMapaBase(a,i=!1){!a||this.mapaBaseAtivo===a||(this.mapaBaseAtivo=a,this.marcarMapaBaseAtivoNoDOM(a),this.salvarLembrancaEstado(),i&&this.dispararEvento("ui-mapa-base-alterado",{mapaBaseId:a}))}marcarMapaBaseAtivoNoDOM(a){this.shadow.querySelectorAll("[data-basemap-id]").forEach(i=>{const t=i.getAttribute("data-basemap-id")===a;i.classList.toggle("active",t),i.setAttribute("aria-pressed",String(t))})}get abaAtiva(){return this.getAttribute("aba-ativa")||"camadas"}set abaAtiva(a){this.setAttribute("aba-ativa",a)}get colapsado(){return this.hasAttribute("colapsado")}set colapsado(a){a?this.setAttribute("colapsado",""):this.removeAttribute("colapsado")}get colapsavel(){return this.getAttribute("colapsavel")!=="false"}set colapsavel(a){this.setAttribute("colapsavel",String(a))}get flutuante(){return this.hasAttribute("flutuante")}set flutuante(a){a?this.setAttribute("flutuante",""):this.removeAttribute("flutuante")}get densidade(){return this.getAttribute("densidade")||"normal"}set densidade(a){this.setAttribute("densidade",a)}get mostrarMapasBase(){return this.getAttribute("mostrar-mapas-base")!=="false"}set mostrarMapasBase(a){this.setAttribute("mostrar-mapas-base",String(a))}get mostrarRodape(){return this.getAttribute("mostrar-rodape")!=="false"}set mostrarRodape(a){this.setAttribute("mostrar-rodape",String(a))}get mostrarBusca(){return this.getAttribute("mostrar-busca")!=="false"}set mostrarBusca(a){this.setAttribute("mostrar-busca",String(a))}get persistir(){return this.getAttribute("persistir")!=="false"}set persistir(a){this.setAttribute("persistir",String(a))}get storageKey(){return this.getAttribute("storage-key")}set storageKey(a){a?this.setAttribute("storage-key",a):this.removeAttribute("storage-key")}get redimensionavel(){return this.hasAttribute("redimensionavel")||this.hasAttribute("redimensionavel-altura")}set redimensionavel(a){a?this.setAttribute("redimensionavel",""):(this.removeAttribute("redimensionavel"),this.removeAttribute("redimensionavel-altura"))}get altura(){return this.getAttribute("altura")||this.style.height||null}set altura(a){a!=null?(this.setAttribute("altura",String(a)),this.definirAltura(a)):(this.removeAttribute("altura"),this.definirAltura(null))}definirAltura(a,i=!0){var o;(o=this.resizerController)==null||o.definirAltura(a,!1);const t=a!==null?parseFloat(String(a)):null;this.alturaCustomizada=isNaN(t)?null:t,i&&this.salvarLembrancaEstado()}obterChaveStorageAtual(){return this.lembranca.chaveAtual()}agendarSalvarLembranca(){this.lembranca.agendar()}salvarLembrancaEstado(){this.lembranca.salvar()}limparLembranca(){this.lembranca.limpar()}get layers(){return this.camadas}set layers(a){this.definirCamadas(a)}get features(){return this.feicoes}set features(a){this.definirFeicoes(a)}get basemaps(){return this.mapasBase}set basemaps(a){this.definirMapasBase(a)}definirCamadas(a,i){Ka(this,a,i)}definirFeicoes(a){Xa(this,a)}definirMapasBase(a){this.mapasBase=Array.isArray(a)?[...a]:[],this.solicitarRenderizacao()}definirCamadaAtiva(a,i=!1){!a||this.camadaAtivaId===a||(this.camadaAtivaId=a,this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado(),i&&this.dispararEvento("ui-camada-selecionada",{camadaId:a,camada:this.camadas.find(t=>t.id===a)}))}obterCamada(a){return this.camadas.find(i=>i.id===a)}obterCamadaAtiva(){return this.camadas.find(a=>a.id===this.camadaAtivaId)}obterFeicao(a){return this.feicoes.find(i=>i.id===a)}obterFeicoesSelecionadas(){return this.feicoes.filter(a=>this.selectedFeatureIds.has(a.id))}adicionarCamada(a){Qa(this,a)}removerCamada(a){Ja(this,a)}adicionarFeicao(a){Wa(this,a)}atualizarFeicao(a){Za(this,a)}removerFeicao(a){er(this,a)}selecionarFeicao(a,i=!1,t=!1,o=!1){Ga(this,a,i,t,o)}selecionarFeicoes(a,i=!1){Ua(this,a,i)}limparSelecao(a=!1){_a(this,a)}expandirTodas(){this.expandedLayers=new Set(this.camadas.map(a=>a.id)),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsarTodas(){this.expandedLayers.clear(),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}alternarVisibilidadeTodas(a=!1){const t=!this.camadas.some(o=>o.visible!==!1);this.camadas.forEach(o=>{o.visible=t,a&&this.dispararEvento("ui-camada-visibilidade",{camadaId:o.id,visivel:t})}),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsar(a=!1){this.definirColapso(!0,a)}expandir(a=!1){this.definirColapso(!1,a)}alternarColapso(a=!1){this.definirColapso(!this.colapsado,a)}definirColapso(a,i){this.colapsado!==a&&(this.colapsado=a,i&&this.dispararEvento("ui-colapso-alterado",{colapsado:a}))}solicitarRenderizacao(){if(this.profundidadeLote>0){this.renderPendente=!0;return}this.render()}emLote(a){this.profundidadeLote++;try{a()}finally{this.profundidadeLote--,this.profundidadeLote===0&&this.renderPendente&&(this.renderPendente=!1,this.render())}}dispararEvento(a,i){this.dispatchEvent(new CustomEvent(a,{detail:i,bubbles:!0,composed:!0}))}render(){this.corpoElement&&Ba(this,this.shadow,this.corpoElement,this.dragDropManager)}conectarEventosGerais(){this.listeners.add(this.btnExpandirFlutuante,"click",()=>this.expandir(!0))}sincronizarCamadaAtivaDOM(){Ha(this,this.shadow)}sincronizarSelecaoDOM(){Na(this,this.shadow)}notificarMudancaSelecao(){Ya(this)}};E(R,"instanciasChavePadrao",new Set);let O=R;class Ge extends O{}class Ue extends O{}X.definirCustomElement("ui-camadas",O);X.definirCustomElement("ui-painel-camadas",Ge);X.definirCustomElement("ui-layer-panel",Ue);function rr(e){var r;return{id:e.id,name:e.nome||e.id,color:((r=e.estilo)==null?void 0:r.corPrimaria)||"#00E08A",visible:e.visivel!==!1,locked:e.bloqueada===!0,opacity:typeof e.opacidade=="number"?e.opacidade:1,order:e.zIndex,description:e.categoria?`Categoria: ${e.categoria}`:void 0,categoria:e.categoria,tipo:e.tipo,estilo:e.estilo,dados:e.dados}}function tr(e,r="levantamento",a="feicoes"){return{id:e.id,nome:e.name,categoria:e.categoria||r,tipo:e.tipo||a,visivel:e.visible!==!1,opacidade:typeof e.opacity=="number"?e.opacity:1,zIndex:typeof e.order=="number"?e.order:500,bloqueada:e.locked===!0,interativo:!0,estilo:{corPrimaria:e.color||"#00E08A",scaleMode:"screen",...typeof e.estilo=="object"&&e.estilo!==null?e.estilo:{}},dados:typeof e.dados=="object"&&e.dados!==null?e.dados:void 0}}function ir(e,r=""){var o,n,s,l;const a=((o=e.geometria)==null?void 0:o.tipo)||((n=e.geometria)==null?void 0:n.type)||e.tipo||e.type||"Polygon",i=((s=e.geometria)==null?void 0:s.coordenadas)||((l=e.geometria)==null?void 0:l.coordinates)||e.coordinates,t=e.cor||e.color;return{id:String(e.id),name:e.nome||e.name||`Feição ${e.id}`,layerId:e.layerId||e.camadaId||r,type:a,geometryType:a,coordinates:i,color:t,visible:e.visivel!==void 0?e.visivel:e.visible!==!1,locked:e.bloqueada!==void 0?e.bloqueada:e.locked===!0,status:e.status||"oficial",category:e.categoria||e.category,properties:e.propriedades||e.properties||{}}}exports.UIMapaBase=Ae.UIMapaBase;exports.UISeletorMapaBase=Ae.UISeletorMapaBase;exports.CamadasDragDropManager=De;exports.ICONES=b;exports.LIMITE_FEICOES_POR_CAMADA=ue;exports.MAPAS_BASE_PADRAO=de;exports.UICamadas=O;exports.UILayerPanel=Ue;exports.UIPainelCamadas=Ge;exports.calcularAreaAnelSimples=Y;exports.calcularAreaPoligono=le;exports.calcularComprimentoLinha=se;exports.calcularDistanciaPontos=ke;exports.calcularSelecaoFeicao=Be;exports.carregarEstadoPersistido=K;exports.construirHierarquiaCamadas=ze;exports.converterCamadaItemParaCanvasLayer=tr;exports.converterCanvasLayerParaCamadaItem=rr;exports.converterFeicaoParaItem=ir;exports.escapeHtml=$;exports.filtrarFeicoesPorBusca=N;exports.formatarMetricaFeicoes=ce;exports.formatarOpcoesCamadasHierarquicas=Le;exports.gerarChaveStorage=Pe;exports.limparEstadoPersistido=Re;exports.montarEstadoPersistido=je;exports.obterIdsVisiveisFeicoes=Fe;exports.reidratarCamadasComOverrides=Oe;exports.removerSelecoesInvalidas=Q;exports.renderizarArvoreCamadas=qe;exports.renderizarGridMapasBase=Ce;exports.renderizarRodapeAcoes=$e;exports.renderizarThumbGeometria=Me;exports.salvarEstadoPersistido=Te;exports.snapshotCamada=pe;
333
+ `,this.corpoElement=this.shadow.getElementById("painel-corpo"),this.btnExpandirFlutuante=this.shadow.getElementById("btn-expandir-flutuante"),this.dragDropManager=new Oe(this,this.shadow);const a=this.shadow.getElementById("resizer-altura");this.resizerController=or({hostElement:this,resizerElement:a,listeners:this.listeners,getMinAltura:()=>{const i=this.getAttribute("min-altura");return i&&parseFloat(i)||140},getMaxAltura:()=>{const i=this.getAttribute("max-altura");return i&&parseFloat(i)||1600},onAlturaAlterada:i=>{this.alturaCustomizada=i,this.salvarLembrancaEstado()}})}static get observedAttributes(){return["titulo","mapa-base-ativo","camada-ativa","aba-ativa","colapsavel","colapsado","flutuante","mostrar-mapas-base","mapas-base-recolhido","mostrar-rodape","mostrar-busca","densidade","persistir","storage-key","redimensionavel","redimensionavel-altura","altura","min-altura","max-altura"]}connectedCallback(){if(this.persistir){const a=Q(this.obterChaveStorageAtual());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))}this.hasAttribute("altura")&&this.resizerController.definirAltura(this.getAttribute("altura"),!1),this.persistir&&!this.storageKey&&!this.id&&(R.instanciasChavePadrao.size>0&&console.warn("[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."),R.instanciasChavePadrao.add(this)),this.resizerController.init(),this.render(),this.conectarEventosGerais(),Ua(this,this,this.shadow,this.corpoElement,this.listeners),this.conectado=!0,this.camadas.length>0&&this.salvarLembrancaEstado()}disconnectedCallback(){var a,i;this.conectado=!1,R.instanciasChavePadrao.delete(this),(a=this.resizerController)==null||a.destruir(),(i=this.dragDropManager)==null||i.destruir(),Sa(this),this.listeners.cleanup()}attributeChangedCallback(a,i,t){var o;i!==t&&(a==="colapsado"?this.salvarLembrancaEstado():a==="camada-ativa"?(this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado()):a==="mapa-base-ativo"?t&&this.marcarMapaBaseAtivoNoDOM(t):a==="mostrar-mapas-base"||a==="mapas-base-recolhido"||a==="mostrar-rodape"||a==="mostrar-busca"||a==="colapsavel"||a==="flutuante"?this.solicitarRenderizacao():a==="altura"&&((o=this.resizerController)==null||o.definirAltura(t,!1)))}get titulo(){return this.getAttribute("titulo")||"Camadas"}set titulo(a){this.setAttribute("titulo",a)}get camadaAtivaId(){var a;return this.getAttribute("camada-ativa")||(((a=this.camadas[0])==null?void 0:a.id)??null)}set camadaAtivaId(a){a?this.setAttribute("camada-ativa",a):this.removeAttribute("camada-ativa")}get mapaBaseAtivo(){return this.getAttribute("mapa-base-ativo")||"satelite"}set mapaBaseAtivo(a){this.setAttribute("mapa-base-ativo",a)}selecionarMapaBase(a,i=!1){!a||this.mapaBaseAtivo===a||(this.mapaBaseAtivo=a,this.marcarMapaBaseAtivoNoDOM(a),this.salvarLembrancaEstado(),i&&this.dispararEvento("ui-mapa-base-alterado",{mapaBaseId:a}))}marcarMapaBaseAtivoNoDOM(a){this.shadow.querySelectorAll("[data-basemap-id]").forEach(t=>{const o=t.getAttribute("data-basemap-id")===a;t.classList.toggle("active",o),t.setAttribute("aria-pressed",String(o))});const i=this.shadow.querySelector("[data-basemap-atual]");i&&(i.textContent=fe(this.mapasBase,a))}get mapasBaseRecolhido(){return this.hasAttribute("mapas-base-recolhido")}set mapasBaseRecolhido(a){a?this.setAttribute("mapas-base-recolhido",""):this.removeAttribute("mapas-base-recolhido")}alternarMapasBaseRecolhido(a=!1){this.mapasBaseRecolhido=!this.mapasBaseRecolhido,a&&this.dispararEvento("ui-mapas-base-recolhimento",{recolhido:this.mapasBaseRecolhido})}get abaAtiva(){return this.getAttribute("aba-ativa")||"camadas"}set abaAtiva(a){this.setAttribute("aba-ativa",a)}get colapsado(){return this.hasAttribute("colapsado")}set colapsado(a){a?this.setAttribute("colapsado",""):this.removeAttribute("colapsado")}get colapsavel(){return this.getAttribute("colapsavel")!=="false"}set colapsavel(a){this.setAttribute("colapsavel",String(a))}get flutuante(){return this.hasAttribute("flutuante")}set flutuante(a){a?this.setAttribute("flutuante",""):this.removeAttribute("flutuante")}get densidade(){return this.getAttribute("densidade")||"normal"}set densidade(a){this.setAttribute("densidade",a)}get mostrarMapasBase(){return this.getAttribute("mostrar-mapas-base")!=="false"}set mostrarMapasBase(a){this.setAttribute("mostrar-mapas-base",String(a))}get mostrarRodape(){return this.getAttribute("mostrar-rodape")!=="false"}set mostrarRodape(a){this.setAttribute("mostrar-rodape",String(a))}get mostrarBusca(){return this.getAttribute("mostrar-busca")!=="false"}set mostrarBusca(a){this.setAttribute("mostrar-busca",String(a))}get persistir(){return this.getAttribute("persistir")!=="false"}set persistir(a){this.setAttribute("persistir",String(a))}get storageKey(){return this.getAttribute("storage-key")}set storageKey(a){a?this.setAttribute("storage-key",a):this.removeAttribute("storage-key")}get redimensionavel(){return this.hasAttribute("redimensionavel")||this.hasAttribute("redimensionavel-altura")}set redimensionavel(a){a?this.setAttribute("redimensionavel",""):(this.removeAttribute("redimensionavel"),this.removeAttribute("redimensionavel-altura"))}get altura(){return this.getAttribute("altura")||this.style.height||null}set altura(a){a!=null?(this.setAttribute("altura",String(a)),this.definirAltura(a)):(this.removeAttribute("altura"),this.definirAltura(null))}definirAltura(a,i=!0){var o;(o=this.resizerController)==null||o.definirAltura(a,!1);const t=a!==null?parseFloat(String(a)):null;this.alturaCustomizada=isNaN(t)?null:t,i&&this.salvarLembrancaEstado()}obterChaveStorageAtual(){return this.lembranca.chaveAtual()}agendarSalvarLembranca(){this.lembranca.agendar()}salvarLembrancaEstado(){this.lembranca.salvar()}limparLembranca(){this.lembranca.limpar()}get layers(){return this.camadas}set layers(a){this.definirCamadas(a)}get features(){return this.feicoes}set features(a){this.definirFeicoes(a)}get basemaps(){return this.mapasBase}set basemaps(a){this.definirMapasBase(a)}definirCamadas(a,i){Wa(this,a,i)}definirFeicoes(a){Za(this,a)}definirMapasBase(a){this.mapasBase=Array.isArray(a)?[...a]:[],this.solicitarRenderizacao()}definirCamadaAtiva(a,i=!1){!a||this.camadaAtivaId===a||(this.camadaAtivaId=a,this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado(),i&&this.dispararEvento("ui-camada-selecionada",{camadaId:a,camada:this.camadas.find(t=>t.id===a)}))}obterCamada(a){return this.camadas.find(i=>i.id===a)}obterCamadaAtiva(){return this.camadas.find(a=>a.id===this.camadaAtivaId)}obterFeicao(a){return this.feicoes.find(i=>i.id===a)}obterFeicoesSelecionadas(){return this.feicoes.filter(a=>this.selectedFeatureIds.has(a.id))}adicionarCamada(a){er(this,a)}removerCamada(a){ar(this,a)}adicionarFeicao(a){rr(this,a)}atualizarFeicao(a){tr(this,a)}removerFeicao(a){ir(this,a)}selecionarFeicao(a,i=!1,t=!1,o=!1){Ya(this,a,i,t,o)}selecionarFeicoes(a,i=!1){Ka(this,a,i)}limparSelecao(a=!1){Xa(this,a)}expandirTodas(){this.expandedLayers=new Set(this.camadas.map(a=>a.id)),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsarTodas(){this.expandedLayers.clear(),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}alternarVisibilidadeTodas(a=!1){const t=!this.camadas.some(o=>o.visible!==!1);this.camadas.forEach(o=>{o.visible=t,a&&this.dispararEvento("ui-camada-visibilidade",{camadaId:o.id,visivel:t})}),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsar(a=!1){this.definirColapso(!0,a)}expandir(a=!1){this.definirColapso(!1,a)}alternarColapso(a=!1){this.definirColapso(!this.colapsado,a)}definirColapso(a,i){this.colapsado!==a&&(this.colapsado=a,i&&this.dispararEvento("ui-colapso-alterado",{colapsado:a}))}solicitarRenderizacao(){if(this.profundidadeLote>0){this.renderPendente=!0;return}this.render()}emLote(a){this.profundidadeLote++;try{a()}finally{this.profundidadeLote--,this.profundidadeLote===0&&this.renderPendente&&(this.renderPendente=!1,this.render())}}dispararEvento(a,i){this.dispatchEvent(new CustomEvent(a,{detail:i,bubbles:!0,composed:!0}))}render(){this.corpoElement&&Ta(this,this.shadow,this.corpoElement,this.dragDropManager)}conectarEventosGerais(){this.listeners.add(this.btnExpandirFlutuante,"click",()=>this.expandir(!0))}sincronizarCamadaAtivaDOM(){Va(this,this.shadow)}sincronizarSelecaoDOM(){_a(this,this.shadow)}notificarMudancaSelecao(){Qa(this)}};E(R,"instanciasChavePadrao",new Set);let O=R;class Ye extends O{}class Ke extends O{}J.definirCustomElement("ui-camadas",O);J.definirCustomElement("ui-painel-camadas",Ye);J.definirCustomElement("ui-layer-panel",Ke);function nr(e){var r;return{id:e.id,name:e.nome||e.id,color:((r=e.estilo)==null?void 0:r.corPrimaria)||"#00E08A",visible:e.visivel!==!1,locked:e.bloqueada===!0,opacity:typeof e.opacidade=="number"?e.opacidade:1,order:e.zIndex,description:e.categoria?`Categoria: ${e.categoria}`:void 0,categoria:e.categoria,tipo:e.tipo,estilo:e.estilo,dados:e.dados}}function sr(e,r="levantamento",a="feicoes"){return{id:e.id,nome:e.name,categoria:e.categoria||r,tipo:e.tipo||a,visivel:e.visible!==!1,opacidade:typeof e.opacity=="number"?e.opacity:1,zIndex:typeof e.order=="number"?e.order:500,bloqueada:e.locked===!0,interativo:!0,estilo:{corPrimaria:e.color||"#00E08A",scaleMode:"screen",...typeof e.estilo=="object"&&e.estilo!==null?e.estilo:{}},dados:typeof e.dados=="object"&&e.dados!==null?e.dados:void 0}}function lr(e,r=""){var o,n,s,l;const a=((o=e.geometria)==null?void 0:o.tipo)||((n=e.geometria)==null?void 0:n.type)||e.tipo||e.type||"Polygon",i=((s=e.geometria)==null?void 0:s.coordenadas)||((l=e.geometria)==null?void 0:l.coordinates)||e.coordinates,t=e.cor||e.color;return{id:String(e.id),name:e.nome||e.name||`Feição ${e.id}`,layerId:e.layerId||e.camadaId||r,type:a,geometryType:a,coordinates:i,color:t,visible:e.visivel!==void 0?e.visivel:e.visible!==!1,locked:e.bloqueada!==void 0?e.bloqueada:e.locked===!0,status:e.status||"oficial",category:e.categoria||e.category,properties:e.propriedades||e.properties||{}}}exports.UIMapaBase=Le.UIMapaBase;exports.UISeletorMapaBase=Le.UISeletorMapaBase;exports.CamadasDragDropManager=Oe;exports.ICONES=v;exports.LIMITE_FEICOES_POR_CAMADA=me;exports.MAPAS_BASE_PADRAO=pe;exports.UICamadas=O;exports.UILayerPanel=Ke;exports.UIPainelCamadas=Ye;exports.calcularAreaAnelSimples=K;exports.calcularAreaPoligono=de;exports.calcularComprimentoLinha=ce;exports.calcularDistanciaPontos=$e;exports.calcularSelecaoFeicao=Te;exports.carregarEstadoPersistido=Q;exports.construirHierarquiaCamadas=Pe;exports.converterCamadaItemParaCanvasLayer=sr;exports.converterCanvasLayerParaCamadaItem=nr;exports.converterFeicaoParaItem=lr;exports.escapeHtml=S;exports.filtrarCamadasPorBusca=ge;exports.filtrarFeicoesPorBusca=N;exports.formatarMetricaFeicoes=ue;exports.formatarOpcoesCamadasHierarquicas=ze;exports.gerarChaveStorage=je;exports.limparEstadoPersistido=Ne;exports.montarEstadoPersistido=Ue;exports.nomeDoMapaBase=fe;exports.obterIdsVisiveisFeicoes=De;exports.reidratarCamadasComOverrides=Ge;exports.removerSelecoesInvalidas=W;exports.renderizarArvoreCamadas=Re;exports.renderizarGridMapasBase=Me;exports.renderizarRodapeAcoes=Fe;exports.renderizarThumbGeometria=qe;exports.salvarEstadoPersistido=He;exports.snapshotCamada=ve;