@thibezer/ui-components-kit 2.14.0 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +63 -9
  2. package/README.md +4 -2
  3. package/dist/botao.cjs +1 -1
  4. package/dist/botao.js +1 -1
  5. package/dist/camadas.cjs +50 -50
  6. package/dist/camadas.js +381 -373
  7. package/dist/campo-texto.cjs +1 -1
  8. package/dist/campo-texto.js +1 -1
  9. package/dist/canvas.cjs +24 -24
  10. package/dist/canvas.js +757 -751
  11. package/dist/card.cjs +1 -1
  12. package/dist/card.js +1 -1
  13. package/dist/components/ui-avatar/ui-avatar.d.ts +7 -0
  14. package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +2 -0
  15. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +7 -0
  16. package/dist/components/ui-mapa/ui-mapa.d.ts +1 -0
  17. package/dist/components/ui-seletor-mapa-base/ui-seletor-mapa-base.d.ts +6 -0
  18. package/dist/components/ui-skeleton/ui-skeleton.d.ts +9 -0
  19. package/dist/components/ui-stat/ui-stat.d.ts +12 -0
  20. package/dist/components/ui-tabela/tabela-corpo.d.ts +5 -0
  21. package/dist/components/ui-tabela/tabela-foco.d.ts +28 -0
  22. package/dist/components/ui-tabela/tabela-orquestrador-dados.d.ts +3 -0
  23. package/dist/components/ui-tabela/tabela-renderizador.d.ts +3 -0
  24. package/dist/components/ui-tabela/tipos.d.ts +7 -1
  25. package/dist/components/ui-tabela/ui-tabela.d.ts +6 -1
  26. package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +2 -1
  27. package/dist/components/ui-tabela-propriedades/propriedades-persistencia.d.ts +63 -0
  28. package/dist/components/ui-tabela-propriedades/propriedades-render-arvore.d.ts +1 -0
  29. package/dist/components/ui-tabela-propriedades/tipos.d.ts +16 -0
  30. package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +40 -1
  31. package/dist/core/degrade.d.ts +34 -0
  32. package/dist/core/index.d.ts +1 -0
  33. package/dist/core.cjs +1 -1
  34. package/dist/core.js +33 -24
  35. package/dist/cores.cjs +1 -1
  36. package/dist/cores.js +1 -1
  37. package/dist/custom-elements.json +20309 -18611
  38. package/dist/data.cjs +1 -1
  39. package/dist/data.js +89 -79
  40. package/dist/degrade-CIxvOTUv.cjs +1 -0
  41. package/dist/degrade-gDa5sW__.js +119 -0
  42. package/dist/feedback.cjs +1 -1
  43. package/dist/feedback.js +2 -2
  44. package/dist/forms.cjs +1 -1
  45. package/dist/forms.js +2 -2
  46. package/dist/index.cjs +1 -1
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.js +215 -196
  49. package/dist/mapa.cjs +1 -1
  50. package/dist/mapa.js +1 -1
  51. package/dist/modal.cjs +1 -1
  52. package/dist/modal.js +1 -1
  53. package/dist/register.cjs +1 -1
  54. package/dist/register.js +11 -11
  55. package/dist/seletor-mapa-base.cjs +10 -10
  56. package/dist/seletor-mapa-base.js +34 -28
  57. package/dist/tabela.cjs +1 -1
  58. package/dist/tabela.js +83 -73
  59. package/dist/tipos-elementos.d.ts +33 -3
  60. package/dist/tipos-vue.d.ts +30 -3
  61. package/dist/tools.cjs +1 -1
  62. package/dist/tools.js +1 -1
  63. package/dist/ui-badge-1UU8vT-b.js +198 -0
  64. package/dist/ui-badge-CKKKPdt8.cjs +28 -0
  65. package/dist/ui-badge-DE58YSBY.cjs +28 -0
  66. package/dist/ui-badge-KgmI3jOD.js +201 -0
  67. package/dist/ui-botao-Dz8YvmiA.cjs +12 -0
  68. package/dist/ui-botao-bU_bf6SU.js +166 -0
  69. package/dist/ui-botao-xTbH5mpH.cjs +12 -0
  70. package/dist/ui-botao-zLkcMMyP.js +168 -0
  71. package/dist/ui-campo-texto-DVU_sWV1.cjs +16 -0
  72. package/dist/ui-campo-texto-Dliyt9qr.cjs +16 -0
  73. package/dist/ui-campo-texto-W5M0gNE4.js +377 -0
  74. package/dist/ui-campo-texto-btevggO3.js +379 -0
  75. package/dist/ui-card-BYyYxxY1.cjs +20 -0
  76. package/dist/ui-card-CojoGXaT.js +144 -0
  77. package/dist/ui-card-DFnRp9bl.js +146 -0
  78. package/dist/ui-card-DrWVJQKw.cjs +20 -0
  79. package/dist/ui-controle-cores-Bq_XUrIQ.cjs +32 -0
  80. package/dist/ui-controle-cores-BtA6yzu3.js +291 -0
  81. package/dist/ui-kit.css +1 -1
  82. package/dist/ui-linha-2kY7TNUJ.cjs +38 -0
  83. package/dist/ui-linha-DAz6DBcl.cjs +38 -0
  84. package/dist/ui-linha-DkxwMhD-.js +749 -0
  85. package/dist/ui-linha-KFF86FW5.js +752 -0
  86. package/dist/ui-modal-4nU-tXjO.cjs +18 -0
  87. package/dist/ui-modal-BrXzVZ65.js +216 -0
  88. package/dist/ui-modal-BwB9fksp.js +214 -0
  89. package/dist/ui-modal-lARKzEVZ.cjs +18 -0
  90. package/dist/ui-paleta-ferramentas-Bu6JaT0s.js +1245 -0
  91. package/dist/ui-paleta-ferramentas-D3Jhwt26.cjs +21 -0
  92. package/dist/ui-skeleton-BLEV6h3k.js +653 -0
  93. package/dist/ui-skeleton-B_XTaGrX.cjs +52 -0
  94. package/dist/ui-skeleton-DEHwpDqa.js +648 -0
  95. package/dist/ui-skeleton-sIphhOSx.cjs +52 -0
  96. package/dist/ui-switch-BXIDwC-Y.cjs +66 -0
  97. package/dist/ui-switch-Ctxk-jKS.js +1212 -0
  98. package/dist/ui-switch-DAIgOhqr.cjs +66 -0
  99. package/dist/ui-switch-_F8yubdX.js +1203 -0
  100. package/dist/ui-tabela-propriedades-2bq2nX-b.js +3202 -0
  101. package/dist/ui-tabela-propriedades-8IAYmk3P.cjs +142 -0
  102. package/dist/ui-tabela-propriedades-BoYXzP5Z.js +3191 -0
  103. package/dist/ui-tabela-propriedades-CJyo568n.js +3517 -0
  104. package/dist/ui-tabela-propriedades-CnfW9DZG.cjs +142 -0
  105. package/dist/ui-tabela-propriedades-Wa34hfIr.cjs +142 -0
  106. package/package.json +187 -187
package/dist/camadas.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Da=Object.defineProperty;var Ta=(e,r,a)=>r in e?Da(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a;var A=(e,r,a)=>Ta(e,typeof r!="symbol"?r+"":r,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const ce=require("./ssr-safe-CiHD1adl.cjs"),Ra=require("./listener-bag-D5omxZ9h.cjs"),He=require("./parts-vQa2873h.cjs"),Oa=require("./ui-seletor-cor-DPKqf5wb.cjs"),ja=require("./alvo-digitavel-DbH0hYFf.cjs"),Ge=require("./seletor-mapa-base.cjs"),h={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 Ta=Object.defineProperty;var Ra=(e,r,a)=>r in e?Ta(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a;var A=(e,r,a)=>Ra(e,typeof r!="symbol"?r+"":r,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const de=require("./ssr-safe-CiHD1adl.cjs"),te=require("./degrade-CIxvOTUv.cjs"),Oa=require("./listener-bag-D5omxZ9h.cjs"),Ge=require("./parts-vQa2873h.cjs"),ja=require("./ui-seletor-cor-DPKqf5wb.cjs"),Na=require("./alvo-digitavel-DbH0hYFf.cjs"),_e=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">
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,7 +74,7 @@
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>`},_=6378137;function Ue(e,r){if(!Array.isArray(e)||!Array.isArray(r)||e.length<2||r.length<2||!Number.isFinite(e[0])||!Number.isFinite(e[1])||!Number.isFinite(r[0])||!Number.isFinite(r[1]))return 0;const a=e[0]*Math.PI/180,t=e[1]*Math.PI/180,i=r[0]*Math.PI/180,o=r[1]*Math.PI/180,n=i-a,l=o-t,c=Math.min(1,Math.max(0,Math.sin(n/2)*Math.sin(n/2)+Math.cos(a)*Math.cos(i)*Math.sin(l/2)*Math.sin(l/2))),s=_*2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c));return Number.isFinite(s)?s:0}function Ae(e){if(!Array.isArray(e)||e.length<2)return 0;if(Array.isArray(e[0])&&Array.isArray(e[0][0]))return e.reduce((a,t)=>a+Ae(t),0);let r=0;for(let a=0;a<e.length-1;a++){const t=e[a],i=e[a+1];Array.isArray(t)&&Array.isArray(i)&&t.length>=2&&i.length>=2&&(r+=Ue([t[0],t[1]],[i[0],i[1]]))}return r}function oe(e){if(!Array.isArray(e))return 0;const r=[];for(let u=0;u<e.length;u++){const d=e[u];Array.isArray(d)&&d.length>=2&&Number.isFinite(d[0])&&Number.isFinite(d[1])&&r.push([d[0],d[1]])}r.length>3&&r[0][0]===r[r.length-1][0]&&r[0][1]===r[r.length-1][1]&&r.pop();const a=r.length;if(a<3)return 0;let t=0;for(let u=0;u<a;u++)t+=r[u][0];const i=t/a*Math.PI/180,o=Math.cos(i),n=Math.PI/180,l=r[0][0],c=r[0][1];let s=0;for(let u=0;u<a;u++){const d=r[u],m=r[(u+1)%a],f=(d[1]-c)*n*_*o,g=(d[0]-l)*n*_,v=(m[1]-c)*n*_*o,y=(m[0]-l)*n*_;s+=f*y-v*g}const p=Math.abs(s)/2;return Number.isFinite(p)?p:0}function Ee(e){if(!Array.isArray(e)||e.length===0)return 0;if(Array.isArray(e[0])&&typeof e[0][0]=="number")return oe(e);if(Array.isArray(e[0])&&Array.isArray(e[0][0])){if(Array.isArray(e[0][0][0]))return e.reduce((t,i)=>t+Ee(i),0);const r=oe(e[0]);let a=0;for(let t=1;t<e.length;t++)a+=oe(e[t]);return Math.max(0,r-a)}return 0}function Na(e){if(!e||e.length===0)return"";const r=e.filter(t=>t.type==="Polygon"||t.type==="MultiPolygon"||t.geometryType==="Polygon");if(r.length>0){const t=r.reduce((i,o)=>i+(Ee(o.coordinates)||0),0);return t>=1e4?`${(t/1e4).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} ha`:`${Math.round(t).toLocaleString("pt-BR")} m²`}const a=e.filter(t=>t.type==="LineString"||t.type==="MultiLineString"||t.geometryType==="LineString");if(a.length>0){const t=a.reduce((i,o)=>i+(Ae(o.coordinates)||0),0);return t>=1e3?`${(t/1e3).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} km`:`${Math.round(t).toLocaleString("pt-BR")} m`}return""}function z(e){return e==null?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}const Ha=/^(#(?:[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 H(e,r="#00E08A"){if(!e||typeof e!="string")return r;const a=e.trim();return Ha.test(a)?a:r}function ve(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function Ga(e,r,a){const t=r/100,i=a/100,o=c=>(c+e/30)%12,n=t*Math.min(i,1-i),l=c=>i-n*Math.max(-1,Math.min(o(c)-3,Math.min(9-o(c),1)));return[l(0)*255,l(8)*255,l(4)*255]}function Ua(e,r="#000000"){if(!e||typeof e!="string")return r;const a=e.trim().toLowerCase(),t=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);if(t){const o=t[1];return o.length<=4?`#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}`:`#${o.slice(0,6)}`}const i=/^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);if(i){const o=i[2].split(/[\s,/]+/).filter(Boolean).map(n=>parseFloat(n));if(o.length>=3&&o.slice(0,3).every(n=>!isNaN(n))){const[n,l,c]=o,[s,p,u]=i[1]==="rgb"?[n,l,c]:Ga(n,l,c);return`#${ve(s)}${ve(p)}${ve(u)}`}}return r}function T(e,r,a){const t=e.querySelectorAll(`[${r}]`);for(let i=0;i<t.length;i++)if(t[i].getAttribute(r)===a)return t[i];return null}function _e(e,r=80){let a=null;return(...t)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(...t),a=null},r)}}function q(e,r){e.setAttribute("title",r),e.setAttribute("aria-label",r)}const ke=[{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 Ie(e,r){const a=Array.isArray(e)?e.find(t=>t.id===r):void 0;return a&&typeof a.nome=="string"?a.nome:""}function Ve(e=ke,r="satelite",a=!1){if(!e||e.length===0)return"";const t=e.map(i=>{const o=r===i.id,n=z(i.id),l=z(i.nome),c=z(i.descricao||i.nome);let s="";return i.thumbnailUrl?s=`<img class="ui-basemap-preview" src="${z(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />`:s=`<div class="ui-basemap-preview-none">${h.gradeCad}</div>`,`
77
+ </svg>`},U=6378137;function Ue(e,r){if(!Array.isArray(e)||!Array.isArray(r)||e.length<2||r.length<2||!Number.isFinite(e[0])||!Number.isFinite(e[1])||!Number.isFinite(r[0])||!Number.isFinite(r[1]))return 0;const a=e[0]*Math.PI/180,t=e[1]*Math.PI/180,i=r[0]*Math.PI/180,o=r[1]*Math.PI/180,n=i-a,l=o-t,c=Math.min(1,Math.max(0,Math.sin(n/2)*Math.sin(n/2)+Math.cos(a)*Math.cos(i)*Math.sin(l/2)*Math.sin(l/2))),s=U*2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c));return Number.isFinite(s)?s:0}function Ee(e){if(!Array.isArray(e)||e.length<2)return 0;if(Array.isArray(e[0])&&Array.isArray(e[0][0]))return e.reduce((a,t)=>a+Ee(t),0);let r=0;for(let a=0;a<e.length-1;a++){const t=e[a],i=e[a+1];Array.isArray(t)&&Array.isArray(i)&&t.length>=2&&i.length>=2&&(r+=Ue([t[0],t[1]],[i[0],i[1]]))}return r}function ne(e){if(!Array.isArray(e))return 0;const r=[];for(let u=0;u<e.length;u++){const d=e[u];Array.isArray(d)&&d.length>=2&&Number.isFinite(d[0])&&Number.isFinite(d[1])&&r.push([d[0],d[1]])}r.length>3&&r[0][0]===r[r.length-1][0]&&r[0][1]===r[r.length-1][1]&&r.pop();const a=r.length;if(a<3)return 0;let t=0;for(let u=0;u<a;u++)t+=r[u][0];const i=t/a*Math.PI/180,o=Math.cos(i),n=Math.PI/180,l=r[0][0],c=r[0][1];let s=0;for(let u=0;u<a;u++){const d=r[u],m=r[(u+1)%a],f=(d[1]-c)*n*U*o,g=(d[0]-l)*n*U,v=(m[1]-c)*n*U*o,y=(m[0]-l)*n*U;s+=f*y-v*g}const p=Math.abs(s)/2;return Number.isFinite(p)?p:0}function Ie(e){if(!Array.isArray(e)||e.length===0)return 0;if(Array.isArray(e[0])&&typeof e[0][0]=="number")return ne(e);if(Array.isArray(e[0])&&Array.isArray(e[0][0])){if(Array.isArray(e[0][0][0]))return e.reduce((t,i)=>t+Ie(i),0);const r=ne(e[0]);let a=0;for(let t=1;t<e.length;t++)a+=ne(e[t]);return Math.max(0,r-a)}return 0}function Ha(e){if(!e||e.length===0)return"";const r=e.filter(t=>t.type==="Polygon"||t.type==="MultiPolygon"||t.geometryType==="Polygon");if(r.length>0){const t=r.reduce((i,o)=>i+(Ie(o.coordinates)||0),0);return t>=1e4?`${(t/1e4).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} ha`:`${Math.round(t).toLocaleString("pt-BR")} m²`}const a=e.filter(t=>t.type==="LineString"||t.type==="MultiLineString"||t.geometryType==="LineString");if(a.length>0){const t=a.reduce((i,o)=>i+(Ee(o.coordinates)||0),0);return t>=1e3?`${(t/1e3).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} km`:`${Math.round(t).toLocaleString("pt-BR")} m`}return""}function z(e){return e==null?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}const Ga=/^(#(?:[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 H(e,r="#00E08A"){if(!e||typeof e!="string")return r;const a=e.trim();return Ga.test(a)?a:r}function he(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function _a(e,r,a){const t=r/100,i=a/100,o=c=>(c+e/30)%12,n=t*Math.min(i,1-i),l=c=>i-n*Math.max(-1,Math.min(o(c)-3,Math.min(9-o(c),1)));return[l(0)*255,l(8)*255,l(4)*255]}function Ua(e,r="#000000"){if(!e||typeof e!="string")return r;const a=e.trim().toLowerCase(),t=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);if(t){const o=t[1];return o.length<=4?`#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}`:`#${o.slice(0,6)}`}const i=/^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);if(i){const o=i[2].split(/[\s,/]+/).filter(Boolean).map(n=>parseFloat(n));if(o.length>=3&&o.slice(0,3).every(n=>!isNaN(n))){const[n,l,c]=o,[s,p,u]=i[1]==="rgb"?[n,l,c]:_a(n,l,c);return`#${he(s)}${he(p)}${he(u)}`}}return r}function T(e,r,a){const t=e.querySelectorAll(`[${r}]`);for(let i=0;i<t.length;i++)if(t[i].getAttribute(r)===a)return t[i];return null}function Ve(e,r=80){let a=null;return(...t)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(...t),a=null},r)}}function q(e,r){e.setAttribute("title",r),e.setAttribute("aria-label",r)}const ke=[{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,r){const a=Array.isArray(e)?e.find(t=>t.id===r):void 0;return a&&typeof a.nome=="string"?a.nome:""}function Ye(e=ke,r="satelite",a=!1){if(!e||e.length===0)return"";const t=e.map(i=>{const o=r===i.id,n=z(i.id),l=z(i.nome),c=z(i.descricao||i.nome);let s="";return i.thumbnailUrl?s=`<img class="ui-basemap-preview" src="${z(i.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />`:s=`<div class="ui-basemap-preview-none">${b.gradeCad}</div>`,`
78
78
  <div class="ui-basemap-card ${o?"active":""}" data-basemap-id="${n}" role="button" tabindex="0" aria-pressed="${o}" title="${c}">
79
79
  ${s}
80
80
  <span>${l}</span>
@@ -83,14 +83,14 @@
83
83
  <div class="ui-basemap-section ${a?"recolhido":""}" part="mapas-base">
84
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
85
  <span class="ui-basemap-title">Mapa Base</span>
86
- <span class="ui-basemap-atual" data-basemap-atual>${z(Ie(e,r))}</span>
87
- <span class="ui-chevron-icon ${a?"":"open"}">${h.chevronDir}</span>
86
+ <span class="ui-basemap-atual" data-basemap-atual>${z(Ce(e,r))}</span>
87
+ <span class="ui-chevron-icon ${a?"":"open"}">${b.chevronDir}</span>
88
88
  </button>
89
89
  ${a?"":`<div class="ui-basemap-grid" id="ui-basemap-grid">
90
90
  ${t}
91
91
  </div>`}
92
92
  </div>
93
- `}function X(e){if(!Array.isArray(e)||e.length===0)return[];const r=e.filter(s=>!!(s&&typeof s=="object"&&s.id)),a=new Map,t=new Map;r.forEach((s,p)=>{a.set(s.id,s),t.set(s.id,p)});const i=new Set,o=new Set;for(const s of r){if(o.has(s.id))continue;const p=[],u=new Map;let d=s;for(;d&&d.parentId&&a.has(d.parentId)&&d.parentId!==d.id;){if(u.has(d.id)){const m=u.get(d.id),f=p.slice(m);let g=f[0];for(const v of f)(t.get(v)??1/0)<(t.get(g)??1/0)&&(g=v);i.add(g);break}if(o.has(d.id))break;u.set(d.id,p.length),p.push(d.id),d=a.get(d.parentId)}for(const m of p)o.add(m)}const n=new Map,l=[];r.forEach(s=>{!i.has(s.id)&&!!(s.parentId&&a.has(s.parentId)&&s.parentId!==s.id)&&s.parentId?(n.has(s.parentId)||n.set(s.parentId,[]),n.get(s.parentId).push(s)):l.push(s)});function c(s,p,u){const d=new Set(u);d.add(s.id);const f=(n.get(s.id)||(Array.isArray(s.children)?s.children:[])).filter(g=>!!(g&&typeof g=="object"&&g.id&&!d.has(g.id)));return{camada:s,depth:p,subcamadas:f.map(g=>c(g,p+1,d))}}return l.map(s=>c(s,0,new Set))}function _a(e,r){const a=new Set;if(!r||!Array.isArray(e))return a;const t=new Map;for(const o of e)!o||typeof o!="object"||!o.id||o.parentId&&o.parentId!==o.id&&(t.has(o.parentId)||t.set(o.parentId,[]),t.get(o.parentId).push(o.id));const i=[r];for(;i.length>0;){const o=i.pop();if(a.has(o))continue;a.add(o);const n=t.get(o);if(n)for(const l of n)a.has(l)||i.push(l)}return a}function W(e,r,a){if(!a||!Array.isArray(r)||r.length===0)return[];const t=_a(e,a);return r.filter(i=>!!(i&&i.layerId&&t.has(i.layerId)))}function de(e){const r=new Map;e.forEach(t=>t&&t.id&&r.set(t.id,t));const a=new Map;for(const t of r.values()){let i=!1,o=!1;const n=new Set([t.id]);let l=t.parentId?r.get(t.parentId):void 0;for(;l&&!n.has(l.id);)n.add(l.id),l.visible===!1&&(i=!0),l.locked===!0&&(o=!0),l=l.parentId?r.get(l.parentId):void 0;a.set(t.id,{ocultaPorAncestral:i,travadaPorAncestral:o})}return a}function Ce(e){const r=de(e);return new Set(e.filter(a=>{var t;return a&&(a.locked===!0||((t=r.get(a.id))==null?void 0:t.travadaPorAncestral)===!0)}).map(a=>a.id))}function Ye(e){const r=X(e),a=Ce(e),t=i=>{const o=i.camada,n=i.depth,l=i.subcamadas,c=n>0?"&nbsp;&nbsp;".repeat(n)+"↳ ":l.length>0||o.isGroup?"📁 ":"",s=a.has(o.id),p=`<option value="${z(o.id)}"${s?" disabled":""}>${c}${z(o.name)}${s?" 🔒":""}</option>`,u=l.map(d=>t(d)).join("");return p+u};return r.map(i=>t(i)).join("")}function Le(e,r){return r>0?{icone:h.alvoEnquadrar,texto:`${r} ${r>1?"selecionados":"selecionado"}`}:{icone:h.camadas,texto:`${e} ${e>1?"camadas":"camada"}`}}function Ke(e,r,a){const t=r.filter(c=>a.has(c.id)),i=t.length>0,o=i?t.length:e.length,n=Le(e.length,t.length),l=Ye(e);return`
93
+ `}function X(e){if(!Array.isArray(e)||e.length===0)return[];const r=e.filter(s=>!!(s&&typeof s=="object"&&s.id)),a=new Map,t=new Map;r.forEach((s,p)=>{a.set(s.id,s),t.set(s.id,p)});const i=new Set,o=new Set;for(const s of r){if(o.has(s.id))continue;const p=[],u=new Map;let d=s;for(;d&&d.parentId&&a.has(d.parentId)&&d.parentId!==d.id;){if(u.has(d.id)){const m=u.get(d.id),f=p.slice(m);let g=f[0];for(const v of f)(t.get(v)??1/0)<(t.get(g)??1/0)&&(g=v);i.add(g);break}if(o.has(d.id))break;u.set(d.id,p.length),p.push(d.id),d=a.get(d.parentId)}for(const m of p)o.add(m)}const n=new Map,l=[];r.forEach(s=>{!i.has(s.id)&&!!(s.parentId&&a.has(s.parentId)&&s.parentId!==s.id)&&s.parentId?(n.has(s.parentId)||n.set(s.parentId,[]),n.get(s.parentId).push(s)):l.push(s)});function c(s,p,u){const d=new Set(u);d.add(s.id);const f=(n.get(s.id)||(Array.isArray(s.children)?s.children:[])).filter(g=>!!(g&&typeof g=="object"&&g.id&&!d.has(g.id)));return{camada:s,depth:p,subcamadas:f.map(g=>c(g,p+1,d))}}return l.map(s=>c(s,0,new Set))}function Va(e,r){const a=new Set;if(!r||!Array.isArray(e))return a;const t=new Map;for(const o of e)!o||typeof o!="object"||!o.id||o.parentId&&o.parentId!==o.id&&(t.has(o.parentId)||t.set(o.parentId,[]),t.get(o.parentId).push(o.id));const i=[r];for(;i.length>0;){const o=i.pop();if(a.has(o))continue;a.add(o);const n=t.get(o);if(n)for(const l of n)a.has(l)||i.push(l)}return a}function W(e,r,a){if(!a||!Array.isArray(r)||r.length===0)return[];const t=Va(e,a);return r.filter(i=>!!(i&&i.layerId&&t.has(i.layerId)))}function ue(e){const r=new Map;e.forEach(t=>t&&t.id&&r.set(t.id,t));const a=new Map;for(const t of r.values()){let i=!1,o=!1;const n=new Set([t.id]);let l=t.parentId?r.get(t.parentId):void 0;for(;l&&!n.has(l.id);)n.add(l.id),l.visible===!1&&(i=!0),l.locked===!0&&(o=!0),l=l.parentId?r.get(l.parentId):void 0;a.set(t.id,{ocultaPorAncestral:i,travadaPorAncestral:o})}return a}function Le(e){const r=ue(e);return new Set(e.filter(a=>{var t;return a&&(a.locked===!0||((t=r.get(a.id))==null?void 0:t.travadaPorAncestral)===!0)}).map(a=>a.id))}function Ke(e){const r=X(e),a=Le(e),t=i=>{const o=i.camada,n=i.depth,l=i.subcamadas,c=n>0?"&nbsp;&nbsp;".repeat(n)+"↳ ":l.length>0||o.isGroup?"📁 ":"",s=a.has(o.id),p=`<option value="${z(o.id)}"${s?" disabled":""}>${c}${z(o.name)}${s?" 🔒":""}</option>`,u=l.map(d=>t(d)).join("");return p+u};return r.map(i=>t(i)).join("")}function Se(e,r){return r>0?{icone:b.alvoEnquadrar,texto:`${r} ${r>1?"selecionados":"selecionado"}`}:{icone:b.camadas,texto:`${e} ${e>1?"camadas":"camada"}`}}function Qe(e,r,a){const t=r.filter(c=>a.has(c.id)),i=t.length>0,o=i?t.length:e.length,n=Se(e.length,t.length),l=Ke(e);return`
94
94
  <div class="ui-tree-footer ${i?"tem-selecao":"sem-selecao"}" part="rodape">
95
95
  <div class="ui-footer-left">
96
96
  <span class="ui-footer-count" id="footer-count">${o}</span>
@@ -100,11 +100,11 @@
100
100
  <!-- Criação de camadas/grupos quando não há nada selecionado -->
101
101
  <div class="ui-footer-actions-gerais" style="display: ${i?"none":"flex"};">
102
102
  <button class="ui-footer-chip-btn" id="btn-footer-new-group" title="Criar Nova Pasta/Grupo de Camadas" aria-label="Criar Grupo de Camadas">
103
- ${h.moverPasta}
103
+ ${b.moverPasta}
104
104
  <span>Grupo</span>
105
105
  </button>
106
106
  <button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
107
- ${h.mais}
107
+ ${b.mais}
108
108
  <span>Camada</span>
109
109
  </button>
110
110
  </div>
@@ -119,27 +119,27 @@
119
119
  </div>
120
120
 
121
121
  <button class="ui-footer-btn btn-danger-footer ${i?"":"disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${i?"":"disabled"}>
122
- ${h.lixeira}
122
+ ${b.lixeira}
123
123
  </button>
124
124
  </div>
125
125
  </div>
126
- `}const be=64;function De(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])}function Qe(e){return!Array.isArray(e)||e.length===0?[]:De(e[0])?[e.filter(De)]:e.flatMap(Qe)}function Te(e){if(e.length<=be)return e;const r=e.length/be,a=[];for(let t=0;t<be;t++)a.push(e[Math.floor(t*r)]);return a.push(e[e.length-1]),a}function Va(e,r,a){const t=Qe(r).filter(L=>L.length>0);if(t.length===0)return"";let i=1/0,o=-1/0,n=1/0,l=-1/0;for(const L of t)for(const[b,$]of L)$<i&&(i=$),$>o&&(o=$),-b<n&&(n=-b),-b>l&&(l=-b);const c=16,s=2,p=c-s*2,u=o-i,d=l-n,m=Math.max(u,d),f=m>0?p/m:0,g=s+(p-u*f)/2,v=s+(p-d*f)/2,y=L=>Math.round(L*100)/100,k=([L,b])=>`${y(g+(b-i)*f)},${y(v+(-L-n)*f)}`,M=e==="polygon"||e==="multipolygon",S=e==="linestring"||e==="multilinestring",w=L=>`<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${L}</svg>`;if(M){const L=t.filter(b=>b.length>=3).map(b=>`M${Te(b).map(k).join("L")}Z`).join("");return L?w(`<path d="${L}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`):""}if(S){const L=t.filter(b=>b.length>=2).map(b=>`M${Te(b).map(k).join("L")}`).join("");return L?w(`<path d="${L}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`):""}return""}function Xe(e,r,a){const t=H(r,"#00E08A"),i=(e||"").toLowerCase(),o=a!==void 0?Va(i,a,t):"";return o||(i==="polygon"||i==="multipolygon"?`<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${t}" fill-opacity="0.45" stroke="${t}" stroke-width="1.5"/></svg>`:i==="linestring"||i==="multilinestring"?`<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${t}" stroke-width="2"/></svg>`:i==="text"?`<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${t}" text-anchor="middle" font-family="sans-serif">T</text></svg>`:`<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${t}" stroke="#ffffff" stroke-width="1.2"/></svg>`)}function We(e,r,a){return{camadaIdSeguro:z(e.id),corCamada:H(e.color,"#00E08A"),profundidade:r,esmaecida:e.visible===!1||(a==null?void 0:a.ocultaPorAncestral)===!0,travadaPelaCamada:e.locked===!0||(a==null?void 0:a.travadaPorAncestral)===!0}}const he=(e,r,a)=>`${e} ${e===1?r:a}`;function Je(e,r,a){return a===0?he(e,"feição","feições"):`${he(e,"feição","feições")} no grupo (${r} nesta camada) · ${he(a,"subcamada","subcamadas")}`}function Ze(e,r,a,t){return e===0&&t?"":`<span class="ui-count-chip" title="${Je(e,r,a)}">${e}</span>`}function ea(e,r){const a=r-e;return{resumo:`Exibindo ${e} de ${r} feições. Use a busca acima para filtrar.`,botao:`Mostrar mais (+${Math.min(80,a)})`}}function aa(e,r,a){const t=ea(r,a);return`<div class="ui-truncate-notice" role="note">
126
+ `}const be=64;function Te(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])}function Xe(e){return!Array.isArray(e)||e.length===0?[]:Te(e[0])?[e.filter(Te)]:e.flatMap(Xe)}function Re(e){if(e.length<=be)return e;const r=e.length/be,a=[];for(let t=0;t<be;t++)a.push(e[Math.floor(t*r)]);return a.push(e[e.length-1]),a}function Ya(e,r,a){const t=Xe(r).filter(L=>L.length>0);if(t.length===0)return"";let i=1/0,o=-1/0,n=1/0,l=-1/0;for(const L of t)for(const[h,$]of L)$<i&&(i=$),$>o&&(o=$),-h<n&&(n=-h),-h>l&&(l=-h);const c=16,s=2,p=c-s*2,u=o-i,d=l-n,m=Math.max(u,d),f=m>0?p/m:0,g=s+(p-u*f)/2,v=s+(p-d*f)/2,y=L=>Math.round(L*100)/100,I=([L,h])=>`${y(g+(h-i)*f)},${y(v+(-L-n)*f)}`,M=e==="polygon"||e==="multipolygon",S=e==="linestring"||e==="multilinestring",w=L=>`<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${L}</svg>`;if(M){const L=t.filter(h=>h.length>=3).map(h=>`M${Re(h).map(I).join("L")}Z`).join("");return L?w(`<path d="${L}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`):""}if(S){const L=t.filter(h=>h.length>=2).map(h=>`M${Re(h).map(I).join("L")}`).join("");return L?w(`<path d="${L}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`):""}return""}function We(e,r,a){const t=H(r,"#00E08A"),i=(e||"").toLowerCase(),o=a!==void 0?Ya(i,a,t):"";return o||(i==="polygon"||i==="multipolygon"?`<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${t}" fill-opacity="0.45" stroke="${t}" stroke-width="1.5"/></svg>`:i==="linestring"||i==="multilinestring"?`<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${t}" stroke-width="2"/></svg>`:i==="text"?`<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${t}" text-anchor="middle" font-family="sans-serif">T</text></svg>`:`<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${t}" stroke="#ffffff" stroke-width="1.2"/></svg>`)}function Je(e,r,a){return{camadaIdSeguro:z(e.id),corCamada:H(e.color,"#00E08A"),profundidade:r,esmaecida:e.visible===!1||(a==null?void 0:a.ocultaPorAncestral)===!0,travadaPelaCamada:e.locked===!0||(a==null?void 0:a.travadaPorAncestral)===!0}}const ye=(e,r,a)=>`${e} ${e===1?r:a}`;function Ze(e,r,a){return a===0?ye(e,"feição","feições"):`${ye(e,"feição","feições")} no grupo (${r} nesta camada) · ${ye(a,"subcamada","subcamadas")}`}function ea(e,r,a,t){return e===0&&t?"":`<span class="ui-count-chip" title="${Ze(e,r,a)}">${e}</span>`}function aa(e,r){const a=r-e;return{resumo:`Exibindo ${e} de ${r} feições. Use a busca acima para filtrar.`,botao:`Mostrar mais (+${Math.min(80,a)})`}}function ra(e,r,a){const t=aa(r,a);return`<div class="ui-truncate-notice" role="note">
127
127
  <span>${t.resumo}</span>
128
128
  <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${e}">${t.botao}</button>
129
- </div>`}function ra(e){return`<div class="ui-empty-row"><span>${e?"Grupo vazio (adicione subcamadas ou feições)":"Camada vazia"}</span></div>`}const Ya=["name","color","visible","locked","status","type","geometryType","coordinates","layerId"];function Ka(e,r){return Ya.every(a=>e[a]===r[a])}function ta(e,r,a,t){const{camadaIdSeguro:i,corCamada:o,profundidade:n}=r,l=z(e.id),c=z(e.name||"Feição"),s=H(e.color,o),p=e.visible!==!1,u=r.travadaPelaCamada,d=e.locked===!0||u,m=u?"Bloqueada pela camada":d?"Desbloquear Feição":"Bloquear Feição",f=e.status==="previa"?'<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>':"";return`
129
+ </div>`}function ta(e){return`<div class="ui-empty-row"><span>${e?"Grupo vazio (adicione subcamadas ou feições)":"Camada vazia"}</span></div>`}const Ka=["name","color","visible","locked","status","type","geometryType","coordinates","layerId"];function Qa(e,r){return Ka.every(a=>e[a]===r[a])}function ia(e,r,a,t){const{camadaIdSeguro:i,corCamada:o,profundidade:n}=r,l=z(e.id),c=z(e.name||"Feição"),s=H(e.color,o),p=e.visible!==!1,u=r.travadaPelaCamada,d=e.locked===!0||u,m=u?"Bloqueada pela camada":d?"Desbloquear Feição":"Bloquear Feição",f=e.status==="previa"?'<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>':"";return`
130
130
  <div class="ui-feat-row ${a?"selected-row":""} ${p?"":"hidden-row"} ${r.esmaecida?"herdado-oculto":""}" data-feat-row="${l}" data-feat-select="${l}" data-feat-layer="${i}" role="treeitem" aria-level="${n+2}" aria-selected="${a}" tabindex="-1" draggable="true" part="${a?"feicao feicao-selecionada":"feicao"}" style="--layer-depth: ${n+1};" title="Clique para selecionar | Arraste para reordenar">
131
131
  <div class="ui-col ui-col-eye" data-feat-eye="${l}" role="button" tabindex="0" aria-label="${p?"Ocultar Feição":"Exibir Feição"}" title="${p?"Ocultar Feição":"Exibir Feição"}">
132
- ${p?h.olhoAberto:h.olhoFechado}
132
+ ${p?b.olhoAberto:b.olhoFechado}
133
133
  </div>
134
134
 
135
135
  <div class="ui-col ui-col-lock ${d?"":"ui-lock-open"}" data-feat-lock="${l}" ${u?'data-locked-by-layer="true"':""} role="button" tabindex="0" aria-label="${m}" title="${m}">
136
- ${d?h.cadeadoTrancado:h.cadeadoAberto}
136
+ ${d?b.cadeadoTrancado:b.cadeadoAberto}
137
137
  </div>
138
138
 
139
139
  <div class="ui-col ui-col-colorbar" style="background: ${s};"></div>
140
140
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
141
141
  <div class="ui-col ui-col-thumb">
142
- <div class="ui-thumb-box">${Xe(e.type||e.geometryType,s,e.coordinates)}</div>
142
+ <div class="ui-thumb-box">${We(e.type||e.geometryType,s,e.coordinates)}</div>
143
143
  </div>
144
144
 
145
145
  <div class="ui-col ui-col-name" data-feat-name-trigger="${l}" title="Duplo clique para renomear">
@@ -147,18 +147,18 @@
147
147
  </div>
148
148
 
149
149
  <div class="ui-col ui-col-actions">
150
- <button class="ui-micro-btn" data-feat-fit="${l}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${h.alvoEnquadrar}</button>
150
+ <button class="ui-micro-btn" data-feat-fit="${l}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${b.alvoEnquadrar}</button>
151
151
  </div>
152
152
 
153
153
  <div class="ui-col ui-col-target" data-feat-target="${l}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
154
154
  <div class="ui-target-circle ${a?"selected":""}"></div>
155
155
  </div>
156
156
  </div>
157
- `}const ue=80;function V(e,r){const a=(r||"").trim().toLowerCase();return a?e.filter(t=>(t.name||"").toLowerCase().includes(a)||(t.category||"").toLowerCase().includes(a)||(t.type||"").toLowerCase().includes(a)):e}function Se(e,r,a){var d,m;const t=(a||"").trim().toLowerCase();if(!t)return null;const i=new Map,o=new Map;for(const f of e)i.set(f.id,f),f.parentId&&f.parentId!==f.id&&(o.has(f.parentId)||o.set(f.parentId,[]),o.get(f.parentId).push(f.id));const n=new Map;for(const f of r){const g=f.layerId||"";n.has(g)||n.set(g,[]),n.get(g).push(f)}const l=new Set,c=new Set;for(const f of e)(typeof f.name=="string"?f.name.toLowerCase():"").includes(t)?(l.add(f.id),c.add(f.id)):V(n.get(f.id)||[],t).length>0&&c.add(f.id);const s=new Set(c);for(const f of c){const g=new Set([f]);let v=(d=i.get(f))==null?void 0:d.parentId;for(;v&&i.has(v)&&!g.has(v);)g.add(v),s.add(v),v=(m=i.get(v))==null?void 0:m.parentId}const p=[...l];for(;p.length>0;){const f=p.pop();for(const g of o.get(f)||[])s.has(g)||(s.add(g),p.push(g))}const u=new Map;for(const f of s){const g=n.get(f)||[];u.set(f,l.has(f)?g:V(g,t))}return{camadasVisiveis:s,feicoesPorCamada:u}}function $e(e,r,a,t="",i=ue,o){const n=Se(e,r,t),l=[],c=new Map;for(let u=0;u<r.length;u++){const d=r[u];if(!d||!d.id)continue;const m=d.layerId||"";c.has(m)||c.set(m,[]),c.get(m).push(d)}const s=X(e);function p(u){const d=u.camada;if(n&&!n.camadasVisiveis.has(d.id)||!(n?!0:a.has(d.id)))return;for(const y of u.subcamadas)p(y);const f=n?n.feicoesPorCamada.get(d.id)||[]:c.get(d.id)||[],g=(o==null?void 0:o.get(d.id))??i,v=f.slice(0,g);for(let y=0;y<v.length;y++)l.push(v[y].id)}for(const u of s)p(u);return l}function ia(e,r,a,t,i,o){if(!e.includes(t))return null;const n=new Set(r);let l=a;if(o&&a&&e.includes(a)){const c=e.indexOf(a),s=e.indexOf(t),p=Math.min(c,s),u=Math.max(c,s);i||n.clear();for(let d=p;d<=u;d++)n.add(e[d])}else i?(n.has(t)?n.delete(t):n.add(t),l=t):(n.clear(),n.add(t),l=t);return{selecionados:n,ultimoClicadoId:l}}function pe(e,r){if(e.size===0)return;const a=new Set(r.map(t=>t.id));for(const t of e)a.has(t)||e.delete(t)}function Y(e,r,a){const t=new Set;let i=e.find(o=>o.id===r);for(;i&&i.parentId;){if(t.has(i.id)||(t.add(i.id),i.parentId===a))return!0;i=e.find(o=>o.id===(i==null?void 0:i.parentId))}return!1}function Qa(e){return Number.isFinite(e)?e<.25?"acima":e>.75?"abaixo":"dentro":"dentro"}function Xa(e,r,a,t){if(!r||!a||r===a)return null;const i=e.find(s=>s.id===r),o=e.find(s=>s.id===a);if(!i||!o)return null;const n=i.parentId!==void 0?i.parentId:null;if(t==="dentro")return Y(e,o.id,i.id)?null:(i.parentId=o.id,{tipo:"hierarquia",camada:i,novoParentId:o.id,parentAnteriorId:n});if(Y(e,o.id,i.id))return null;const l=e.findIndex(s=>s.id===r);e.splice(l,1);const c=e.findIndex(s=>s.id===a);return c===-1?e.push(i):e.splice(t==="acima"?c:c+1,0,i),i.parentId=o.parentId??null,{tipo:"ordem",camada:i,parentAnteriorId:n,novoParentId:i.parentId}}function Wa(e,r,a,t){if(!r||!a||r===a)return!1;const i=e.findIndex(l=>l.id===r);if(i===-1)return!1;const[o]=e.splice(i,1),n=e.findIndex(l=>l.id===a);return n===-1?e.push(o):e.splice(t?n:n+1,0,o),!0}function Ja(e,r,a,t){const i=e.find(l=>l.id===a),o=r.find(l=>l.id===t);if(!i||!o||i.layerId===t)return null;const n=i.layerId;return i.layerId=t,{feicao:i,camadaOrigemId:n,camadaDestinoId:t,mudouDeCamada:!0}}function Za(e,r,a,t){if(!r||!a||r===a)return null;const i=e.findIndex(u=>u.id===r);if(i===-1)return null;const o=e.find(u=>u.id===a);if(!o)return null;const[n]=e.splice(i,1),l=n.layerId,c=o.layerId,s=l!==c;s&&(n.layerId=c);const p=e.findIndex(u=>u.id===a);return p===-1?e.push(n):e.splice(t?p:p+1,0,n),{feicao:n,camadaOrigemId:l,camadaDestinoId:c,mudouDeCamada:s}}function oa(e){const{camadas:r,feicoes:a,camadaAtivaId:t,expandedLayers:i,selectedFeatureIds:o,activeSettingsLayerId:n,editingLayerId:l,editingFeatureId:c,searchQuery:s,titulo:p="CAMADAS",mostrarBusca:u=!0,limitesPorCamada:d,limiteFeicoesPorCamada:m=ue,mostrarBotaoColapsar:f=!1}=e,g=(s||"").trim().toLowerCase(),v=Se(r,a,g),y=new Map;for(let E=0;E<a.length;E++){const x=a[E];if(!x||!x.id)continue;const B=x.layerId||"";y.has(B)||y.set(B,[]),y.get(B).push(x)}const k=de(r),M=r.every(E=>E.visible!==!1),S=r.length>0&&r.every(E=>i.has(E.id)),w=u?`
157
+ `}const pe=80;function V(e,r){const a=(r||"").trim().toLowerCase();return a?e.filter(t=>(t.name||"").toLowerCase().includes(a)||(t.category||"").toLowerCase().includes(a)||(t.type||"").toLowerCase().includes(a)):e}function $e(e,r,a){var d,m;const t=(a||"").trim().toLowerCase();if(!t)return null;const i=new Map,o=new Map;for(const f of e)i.set(f.id,f),f.parentId&&f.parentId!==f.id&&(o.has(f.parentId)||o.set(f.parentId,[]),o.get(f.parentId).push(f.id));const n=new Map;for(const f of r){const g=f.layerId||"";n.has(g)||n.set(g,[]),n.get(g).push(f)}const l=new Set,c=new Set;for(const f of e)(typeof f.name=="string"?f.name.toLowerCase():"").includes(t)?(l.add(f.id),c.add(f.id)):V(n.get(f.id)||[],t).length>0&&c.add(f.id);const s=new Set(c);for(const f of c){const g=new Set([f]);let v=(d=i.get(f))==null?void 0:d.parentId;for(;v&&i.has(v)&&!g.has(v);)g.add(v),s.add(v),v=(m=i.get(v))==null?void 0:m.parentId}const p=[...l];for(;p.length>0;){const f=p.pop();for(const g of o.get(f)||[])s.has(g)||(s.add(g),p.push(g))}const u=new Map;for(const f of s){const g=n.get(f)||[];u.set(f,l.has(f)?g:V(g,t))}return{camadasVisiveis:s,feicoesPorCamada:u}}function Me(e,r,a,t="",i=pe,o){const n=$e(e,r,t),l=[],c=new Map;for(let u=0;u<r.length;u++){const d=r[u];if(!d||!d.id)continue;const m=d.layerId||"";c.has(m)||c.set(m,[]),c.get(m).push(d)}const s=X(e);function p(u){const d=u.camada;if(n&&!n.camadasVisiveis.has(d.id)||!(n?!0:a.has(d.id)))return;for(const y of u.subcamadas)p(y);const f=n?n.feicoesPorCamada.get(d.id)||[]:c.get(d.id)||[],g=(o==null?void 0:o.get(d.id))??i,v=f.slice(0,g);for(let y=0;y<v.length;y++)l.push(v[y].id)}for(const u of s)p(u);return l}function oa(e,r,a,t,i,o){if(!e.includes(t))return null;const n=new Set(r);let l=a;if(o&&a&&e.includes(a)){const c=e.indexOf(a),s=e.indexOf(t),p=Math.min(c,s),u=Math.max(c,s);i||n.clear();for(let d=p;d<=u;d++)n.add(e[d])}else i?(n.has(t)?n.delete(t):n.add(t),l=t):(n.clear(),n.add(t),l=t);return{selecionados:n,ultimoClicadoId:l}}function fe(e,r){if(e.size===0)return;const a=new Set(r.map(t=>t.id));for(const t of e)a.has(t)||e.delete(t)}function Y(e,r,a){const t=new Set;let i=e.find(o=>o.id===r);for(;i&&i.parentId;){if(t.has(i.id)||(t.add(i.id),i.parentId===a))return!0;i=e.find(o=>o.id===(i==null?void 0:i.parentId))}return!1}function Xa(e){return Number.isFinite(e)?e<.25?"acima":e>.75?"abaixo":"dentro":"dentro"}function Wa(e,r,a,t){if(!r||!a||r===a)return null;const i=e.find(s=>s.id===r),o=e.find(s=>s.id===a);if(!i||!o)return null;const n=i.parentId!==void 0?i.parentId:null;if(t==="dentro")return Y(e,o.id,i.id)?null:(i.parentId=o.id,{tipo:"hierarquia",camada:i,novoParentId:o.id,parentAnteriorId:n});if(Y(e,o.id,i.id))return null;const l=e.findIndex(s=>s.id===r);e.splice(l,1);const c=e.findIndex(s=>s.id===a);return c===-1?e.push(i):e.splice(t==="acima"?c:c+1,0,i),i.parentId=o.parentId??null,{tipo:"ordem",camada:i,parentAnteriorId:n,novoParentId:i.parentId}}function Ja(e,r,a,t){if(!r||!a||r===a)return!1;const i=e.findIndex(l=>l.id===r);if(i===-1)return!1;const[o]=e.splice(i,1),n=e.findIndex(l=>l.id===a);return n===-1?e.push(o):e.splice(t?n:n+1,0,o),!0}function Za(e,r,a,t){const i=e.find(l=>l.id===a),o=r.find(l=>l.id===t);if(!i||!o||i.layerId===t)return null;const n=i.layerId;return i.layerId=t,{feicao:i,camadaOrigemId:n,camadaDestinoId:t,mudouDeCamada:!0}}function er(e,r,a,t){if(!r||!a||r===a)return null;const i=e.findIndex(u=>u.id===r);if(i===-1)return null;const o=e.find(u=>u.id===a);if(!o)return null;const[n]=e.splice(i,1),l=n.layerId,c=o.layerId,s=l!==c;s&&(n.layerId=c);const p=e.findIndex(u=>u.id===a);return p===-1?e.push(n):e.splice(t?p:p+1,0,n),{feicao:n,camadaOrigemId:l,camadaDestinoId:c,mudouDeCamada:s}}function na(e){const{camadas:r,feicoes:a,camadaAtivaId:t,expandedLayers:i,selectedFeatureIds:o,activeSettingsLayerId:n,editingLayerId:l,editingFeatureId:c,searchQuery:s,titulo:p="CAMADAS",mostrarBusca:u=!0,limitesPorCamada:d,limiteFeicoesPorCamada:m=pe,mostrarBotaoColapsar:f=!1}=e,g=(s||"").trim().toLowerCase(),v=$e(r,a,g),y=new Map;for(let E=0;E<a.length;E++){const x=a[E];if(!x||!x.id)continue;const B=x.layerId||"";y.has(B)||y.set(B,[]),y.get(B).push(x)}const I=ue(r),M=r.every(E=>E.visible!==!1),S=r.length>0&&r.every(E=>i.has(E.id)),w=u?`
158
158
  <div class="ui-tree-search-wrapper" part="busca">
159
- <span class="ui-tree-search-icon">${h.busca}</span>
159
+ <span class="ui-tree-search-icon">${b.busca}</span>
160
160
  <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${z(s)}" />
161
- ${s?`<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${h.fechar}</button>`:""}
161
+ ${s?`<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${b.fechar}</button>`:""}
162
162
  </div>
163
163
  `:"",L=`
164
164
  <div class="ui-tree-toolbar" part="toolbar">
@@ -168,25 +168,25 @@
168
168
  </div>
169
169
  <div class="ui-tree-actions">
170
170
  <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"}">
171
- ${M?h.olhoAberto:h.olhoFechado}
171
+ ${M?b.olhoAberto:b.olhoFechado}
172
172
  </button>
173
173
  <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${S?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}" title="${S?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}">
174
- <span class="ui-chevron-icon ${S?"open":""}">${h.chevronDir}</span>
174
+ <span class="ui-chevron-icon ${S?"open":""}">${b.chevronDir}</span>
175
175
  </button>
176
- ${f?`<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${h.recolherPainel}</button>`:""}
176
+ ${f?`<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>`:""}
177
177
  </div>
178
178
  </div>
179
179
  ${w}
180
- `,b=E=>{const x=E.camada;if(v&&!v.camadasVisiveis.has(x.id))return"";const B=E.depth,D=E.subcamadas,ze=v?D.filter(F=>v.camadasVisiveis.has(F.camada.id)):D,U=!!(x.isGroup||D.length>0),C=z(x.id),J=z(x.name||(U?"Novo Grupo":"Camada")),j=H(x.color,"#00E08A"),Z=x.visible!==!1,ee=x.locked===!0,ae=g?!0:i.has(x.id),fe=n===x.id,me=t===x.id,O=k.get(x.id),ka=(O==null?void 0:O.ocultaPorAncestral)===!0,Ia=(O==null?void 0:O.travadaPorAncestral)===!0,R=v?v.feicoesPorCamada.get(x.id)||[]:y.get(x.id)||[],re=v?R:W(r,a,x.id),Be=re.length>0&&re.every(F=>o.has(F.id)),Ca=!Be&&re.some(F=>o.has(F.id)),ge=(d==null?void 0:d.get(x.id))??m,La=R.slice(0,ge),Sa=R.length>ge,$a=We(x,B,O),Ma=La.map(F=>ta(F,$a,o.has(F.id),c===F.id)).join(""),Fa=Sa?aa(C,ge,R.length):"",Pe=Number(x.opacity??1),qe=Number.isFinite(Pe)?Math.min(1,Math.max(0,Pe)):1,za=Math.round(qe*100),Ba=r.filter(F=>F.id!==x.id&&!Y(r,F.id,x.id)).map(F=>`<option value="${z(F.id)}" ${x.parentId===F.id?"selected":""}>${F.isGroup?"📁 ":""}${z(F.name)}</option>`).join(""),Pa=fe?`
180
+ `,h=E=>{const x=E.camada;if(v&&!v.camadasVisiveis.has(x.id))return"";const B=E.depth,D=E.subcamadas,Be=v?D.filter(F=>v.camadasVisiveis.has(F.camada.id)):D,_=!!(x.isGroup||D.length>0),C=z(x.id),J=z(x.name||(_?"Novo Grupo":"Camada")),j=H(x.color,"#00E08A"),Z=x.visible!==!1,ee=x.locked===!0,ae=g?!0:i.has(x.id),me=n===x.id,ge=t===x.id,O=I.get(x.id),ka=(O==null?void 0:O.ocultaPorAncestral)===!0,Ca=(O==null?void 0:O.travadaPorAncestral)===!0,R=v?v.feicoesPorCamada.get(x.id)||[]:y.get(x.id)||[],re=v?R:W(r,a,x.id),Pe=re.length>0&&re.every(F=>o.has(F.id)),La=!Pe&&re.some(F=>o.has(F.id)),ve=(d==null?void 0:d.get(x.id))??m,Sa=R.slice(0,ve),$a=R.length>ve,Ma=Je(x,B,O),Fa=Sa.map(F=>ia(F,Ma,o.has(F.id),c===F.id)).join(""),za=$a?ra(C,ve,R.length):"",qe=Number(x.opacity??1),De=Number.isFinite(qe)?Math.min(1,Math.max(0,qe)):1,Ba=Math.round(De*100),Pa=r.filter(F=>F.id!==x.id&&!Y(r,F.id,x.id)).map(F=>`<option value="${z(F.id)}" ${x.parentId===F.id?"selected":""}>${F.isGroup?"📁 ":""}${z(F.name)}</option>`).join(""),qa=me?`
181
181
  <div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${j};">
182
182
  <div class="ui-drawer-header">
183
183
  <div class="ui-drawer-header-left">
184
- <span class="ui-drawer-icon">${h.engrenagem}</span>
184
+ <span class="ui-drawer-icon">${b.engrenagem}</span>
185
185
  <span class="ui-drawer-title">Configurações da Camada</span>
186
186
  <span class="ui-drawer-layer-chip" title="${J}">${J}</span>
187
187
  </div>
188
188
  <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${C}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
189
- ${h.fechar}
189
+ ${b.fechar}
190
190
  </button>
191
191
  </div>
192
192
 
@@ -209,10 +209,10 @@
209
209
  <div class="ui-drawer-row">
210
210
  <div class="ui-drawer-row-label">
211
211
  <span>Opacidade</span>
212
- <span class="ui-drawer-badge" id="badge-op-${C}">${za}%</span>
212
+ <span class="ui-drawer-badge" id="badge-op-${C}">${Ba}%</span>
213
213
  </div>
214
214
  <div class="ui-drawer-slider-container">
215
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(qe)||0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
215
+ <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(De)||0}" data-layer-opacity-slider="${C}" class="ui-drawer-slider" />
216
216
  </div>
217
217
  </div>
218
218
 
@@ -224,7 +224,7 @@
224
224
  <div class="ui-drawer-select-wrapper">
225
225
  <select class="ui-drawer-select" data-layer-parent-select="${C}" aria-label="Grupo pai da camada">
226
226
  <option value="" ${x.parentId?"":"selected"}>(Nenhum - Nível Principal)</option>
227
- ${Ba}
227
+ ${Pa}
228
228
  </select>
229
229
  </div>
230
230
  </div>
@@ -236,72 +236,72 @@
236
236
  </div>
237
237
  <div class="ui-drawer-actions">
238
238
  <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${C}" title="Adicionar nova camada dentro desta">
239
- ${h.mais} Subcamada
239
+ ${b.mais} Subcamada
240
240
  </button>
241
241
  <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${C}" title="Excluir esta camada e suas feições">
242
- ${h.lixeira}
242
+ ${b.lixeira}
243
243
  <span class="ui-btn-label">Excluir</span>
244
244
  </button>
245
245
  </div>
246
246
  </div>
247
247
  </div>
248
- `:"",qa=ze.map(F=>b(F)).join("");return`
248
+ `:"",Da=Be.map(F=>h(F)).join("");return`
249
249
  <div class="ui-layer-group ${B>0?"is-sublayer-group":""}" data-layer-id="${C}" data-layer-depth="${B}" role="treeitem" aria-level="${B+1}" aria-expanded="${ae}" part="grupo" style="--layer-active-color: ${j};">
250
- <div class="ui-layer-row ${Z?"":"hidden-layer"} ${me?"active-drawing-layer":""} ${B>0?"is-sublayer":""} ${U?"is-group-row":""} ${ka?"herdado-oculto":""} ${Ia?"herdado-travado":""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${me?"camada camada-ativa":"camada"}" ${me?'aria-current="true"':""} style="--layer-depth: ${B};">
251
- <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${h.dragHandle}</div>
250
+ <div class="ui-layer-row ${Z?"":"hidden-layer"} ${ge?"active-drawing-layer":""} ${B>0?"is-sublayer":""} ${_?"is-group-row":""} ${ka?"herdado-oculto":""} ${Ca?"herdado-travado":""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${ge?"camada camada-ativa":"camada"}" ${ge?'aria-current="true"':""} style="--layer-depth: ${B};">
251
+ <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${b.dragHandle}</div>
252
252
 
253
253
  <div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${Z?"Ocultar Camada":"Exibir Camada"}" title="${Z?"Ocultar Camada":"Exibir Camada"}">
254
- ${Z?h.olhoAberto:h.olhoFechado}
254
+ ${Z?b.olhoAberto:b.olhoFechado}
255
255
  </div>
256
256
 
257
257
  <div class="ui-col ui-col-lock ${ee?"":"ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${ee?"Desbloquear Camada":"Bloquear Camada"}" title="${ee?"Desbloquear Camada":"Bloquear Camada"}">
258
- ${ee?h.cadeadoTrancado:h.cadeadoAberto}
258
+ ${ee?b.cadeadoTrancado:b.cadeadoAberto}
259
259
  </div>
260
260
 
261
261
  <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" role="button" tabindex="0" style="background: ${j};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
262
262
 
263
263
  <div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${ae?"Recolher grupo":"Expandir grupo"}">
264
- <span class="ui-chevron-icon ${ae?"open":""}">${h.chevronDir}</span>
264
+ <span class="ui-chevron-icon ${ae?"open":""}">${b.chevronDir}</span>
265
265
  </div>
266
266
 
267
267
  <div class="ui-col ui-col-name" data-layer-name-trigger="${C}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
268
- ${l===x.id?`<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${J}" />`:`${U?`<span class="ui-group-folder-icon" title="Grupo/Pasta">${h.moverPasta}</span>`:""}
268
+ ${l===x.id?`<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${J}" />`:`${_?`<span class="ui-group-folder-icon" title="Grupo/Pasta">${b.moverPasta}</span>`:""}
269
269
  <span class="ui-name-text">${J}</span>
270
- ${Ze(re.length,R.length,D.length,U)}`}
270
+ ${ea(re.length,R.length,D.length,_)}`}
271
271
  </div>
272
272
 
273
273
  <div class="ui-col ui-col-actions">
274
- <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${h.alvoEnquadrar}</button>
275
- <button class="ui-micro-btn ${fe?"active":""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${fe}">${h.engrenagem}</button>
274
+ <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
275
+ <button class="ui-micro-btn ${me?"active":""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${me}">${b.engrenagem}</button>
276
276
  </div>
277
277
 
278
278
  <div class="ui-col ui-col-target" data-layer-target="${C}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
279
- <div class="ui-target-circle ${Be?"selected":Ca?"partial":""}"></div>
279
+ <div class="ui-target-circle ${Pe?"selected":La?"partial":""}"></div>
280
280
  </div>
281
281
  </div>
282
282
 
283
- ${Pa}
283
+ ${qa}
284
284
 
285
285
  <div class="ui-children-container ${B>0?"is-subchildren":""}" role="group" style="display: ${ae?"block":"none"};">
286
- ${qa}
287
- ${Ma}
286
+ ${Da}
288
287
  ${Fa}
289
- ${ze.length===0&&R.length===0?ra(U):""}
288
+ ${za}
289
+ ${Be.length===0&&R.length===0?ta(_):""}
290
290
  </div>
291
291
  </div>
292
- `},$=X(r),I=v&&v.camadasVisiveis.size===0?`<div class="ui-search-empty" role="status">Nenhum resultado para “${z((s||"").trim())}”</div>`:$.map(E=>b(E)).join("");return`
292
+ `},$=X(r),k=v&&v.camadasVisiveis.size===0?`<div class="ui-search-empty" role="status">Nenhum resultado para “${z((s||"").trim())}”</div>`:$.map(E=>h(E)).join("");return`
293
293
  ${L}
294
294
  <div class="ui-panel-box">
295
295
  <div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true" part="arvore">
296
- ${I}
296
+ ${k}
297
297
  </div>
298
298
  </div>
299
- `}function er(e){return[{gatilho:"data-layer-name-trigger",input:"data-inline-layer-input",linha:"data-layer-row",marcarEditando:r=>{e.editingLayerId=r},aplicar:(r,a)=>{const t=e.camadas.find(i=>i.id===r);return!a||!t||t.name===a?null:(t.name=a,{detalhe:{camadaId:r,novoNome:a,camada:t},salvar:!0})},emitir:r=>e.dispararEvento("ui-camada-renomeada",r)},{gatilho:"data-feat-name-trigger",input:"data-inline-feat-input",linha:"data-feat-row",marcarEditando:r=>{e.editingFeatureId=r},aplicar:(r,a)=>{const t=e.feicoes.find(i=>i.id===r);return!a||!t||t.name===a?null:(t.name=a,{detalhe:{feicaoId:r,novoNome:a,feicao:t},salvar:!1})},emitir:r=>e.dispararEvento("ui-feicao-renomeada",r)}]}function Re(e,r,a=r){for(const t of er(e))a.querySelectorAll(`[${t.gatilho}]`).forEach(i=>{i.addEventListener("dblclick",o=>{o.stopPropagation();const n=i.getAttribute(t.gatilho);if(!n)return;t.marcarEditando(n),e.solicitarRenderizacao();const l=T(r,t.input,n);if(!l)return;l.focus(),l.select();let c=!1;const s=(p,u=!1)=>{var d,m;if(!c){if(c=!0,t.marcarEditando(null),p){const f=t.aplicar(n,l.value.trim());f&&(f.salvar&&((d=e.salvarLembrancaEstado)==null||d.call(e)),t.emitir(f.detalhe))}e.solicitarRenderizacao(),u&&((m=T(r,t.linha,n))==null||m.focus())}};l.addEventListener("keydown",p=>{p.key==="Enter"?(p.preventDefault(),s(!0,!0)):p.key==="Escape"&&(p.preventDefault(),s(!1,!0))}),l.addEventListener("blur",()=>s(!0))})})}const ar=["dragging","drop-above","drop-below","drop-into"];class na{constructor(r,a){A(this,"host");A(this,"shadow");A(this,"cancelarToque",null);A(this,"arraste",{tipo:null,camadaId:null,feicaoId: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(){Re(this.host,this.shadow)}limparClassesDeArraste(){this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(r=>{r.classList.remove(...ar)})}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})}trocaEntreCamadasTravada(r,a){var o;const t=(o=this.host.feicoes.find(n=>n.id===r))==null?void 0:o.layerId;if(!a||t===a)return!1;const i=Ce(this.host.camadas);return i.has(a)||!!t&&i.has(t)}arrasteBloqueado(r){return!!r.closest("input, button, select")||!!this.host.editingLayerId||!!this.host.editingFeatureId}bindDragAndDrop(){this.arraste={tipo:null,camadaId:null,feicaoId:null},this.vincularArrasteCamadas(this.shadow),this.vincularArrasteFeicoes(this.shadow)}bindLinhasFeicao(r){Re(this.host,this.shadow,r),this.vincularArrasteFeicoes(r)}vincularArrasteCamadas(r){r.querySelectorAll('.ui-layer-row[draggable="true"]').forEach(a=>{const t=a.getAttribute("data-layer-id");t&&(a.addEventListener("dragstart",i=>{const o=i;if(this.arrasteBloqueado(o.target)){o.preventDefault();return}this.arraste.tipo="layer",this.arraste.camadaId=t,o.dataTransfer&&(o.dataTransfer.setData("text/plain",JSON.stringify({type:"layer",id:t})),o.dataTransfer.effectAllowed="move"),a.classList.add("dragging")}),a.addEventListener("dragover",i=>{const o=i;if(o.preventDefault(),o.stopPropagation(),o.dataTransfer&&(o.dataTransfer.dropEffect="move"),this.arraste.tipo==="layer"){if(this.arraste.camadaId===t)return;const n=a.getBoundingClientRect(),l=Qa((o.clientY-n.top)/n.height);a.classList.toggle("drop-above",l==="acima"),a.classList.toggle("drop-below",l==="abaixo"),a.classList.toggle("drop-into",l==="dentro")}else this.arraste.tipo==="feature"&&a.classList.add("drop-into")}),a.addEventListener("dragleave",i=>{const o=i.relatedTarget;o&&a.contains(o)||a.classList.remove("drop-above","drop-below","drop-into")}),a.addEventListener("drop",i=>{var l;const o=i;o.preventDefault(),o.stopPropagation();const n=a.classList.contains("drop-into")?"dentro":a.classList.contains("drop-above")?"acima":"abaixo";if(this.limparClassesDeArraste(),this.arraste.tipo==="layer"){if(!this.arraste.camadaId||this.arraste.camadaId===t||!this.host.camadas.some(s=>s.id===this.arraste.camadaId)||!this.host.camadas.some(s=>s.id===t))return;const c=Xa(this.host.camadas,this.arraste.camadaId,t,n);(c==null?void 0:c.tipo)==="hierarquia"?((l=this.host.expandedLayers)==null||l.add(c.novoParentId),this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:c.camada.id,novoParentId:c.novoParentId,parentAnteriorId:c.parentAnteriorId,camada:c.camada})):c&&c.parentAnteriorId!==c.novoParentId&&this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:c.camada.id,novoParentId:c.novoParentId,parentAnteriorId:c.parentAnteriorId,camada:c.camada}),this.aposReordenarCamadas()}else if(this.arraste.tipo==="feature"){if(!this.arraste.feicaoId||this.trocaEntreCamadasTravada(this.arraste.feicaoId,t))return;const c=Ja(this.host.feicoes,this.host.camadas,this.arraste.feicaoId,t);c&&(this.emitirFeicaoMovida(c),this.host.solicitarRenderizacao())}}),a.addEventListener("dragend",()=>{this.arraste.tipo=null,this.arraste.camadaId=null,this.arraste.feicaoId=null,this.limparClassesDeArraste()}))})}vincularArrasteFeicoes(r){r.querySelectorAll('.ui-feat-row[draggable="true"]').forEach(a=>{const t=a.getAttribute("data-feat-row"),i=a.getAttribute("data-feat-layer");t&&(a.addEventListener("dragstart",o=>{const n=o;if(this.arrasteBloqueado(n.target)){n.preventDefault();return}n.stopPropagation(),this.arraste.tipo="feature",this.arraste.feicaoId=t,this.arraste.camadaId=i,n.dataTransfer&&(n.dataTransfer.setData("text/plain",JSON.stringify({type:"feature",id:t,layerId:i})),n.dataTransfer.effectAllowed="move"),a.classList.add("dragging")}),a.addEventListener("dragover",o=>{const n=o;if(this.arraste.tipo!=="feature"||this.arraste.feicaoId===t)return;n.preventDefault(),n.stopPropagation(),n.dataTransfer&&(n.dataTransfer.dropEffect="move");const l=a.getBoundingClientRect(),c=n.clientY-l.top<l.height/2;a.classList.toggle("drop-above",c),a.classList.toggle("drop-below",!c)}),a.addEventListener("dragleave",o=>{const n=o.relatedTarget;n&&a.contains(n)||a.classList.remove("drop-above","drop-below")}),a.addEventListener("drop",o=>{const n=o;if(this.arraste.tipo!=="feature"||!this.arraste.feicaoId||this.arraste.feicaoId===t)return;n.preventDefault(),n.stopPropagation();const l=a.classList.contains("drop-above");if(this.limparClassesDeArraste(),this.trocaEntreCamadasTravada(this.arraste.feicaoId,i))return;const c=Za(this.host.feicoes,this.arraste.feicaoId,t,l);c&&(c.mudouDeCamada&&this.emitirFeicaoMovida(c),this.host.dispararEvento("ui-feicoes-reordenadas",{feicoes:[...this.host.feicoes]}),this.host.solicitarRenderizacao())}),a.addEventListener("dragend",o=>{o.stopPropagation(),this.arraste.tipo=null,this.arraste.feicaoId=null,this.arraste.camadaId=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 t=a.getAttribute("data-layer-id");t&&r.addEventListener("pointerdown",i=>{var u;const o=i;if(o.pointerType==="mouse"&&o.button!==0||this.host.editingLayerId||this.host.editingFeatureId)return;(u=this.cancelarToque)==null||u.call(this);let n=null,l=!1;const c=d=>{d.preventDefault(),a.classList.add("dragging");const m=this.shadow.elementFromPoint(d.clientX,d.clientY),f=m?m.closest(".ui-layer-row"):null;if(n&&n!==f&&n.classList.remove("drop-above","drop-below"),f&&f!==a){n=f;const g=f.getBoundingClientRect();l=d.clientY-g.top<g.height/2,f.classList.toggle("drop-above",l),f.classList.toggle("drop-below",!l)}else n=null},s=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",p),window.removeEventListener("pointercancel",p),this.cancelarToque=null},p=()=>{s();const d=n==null?void 0:n.getAttribute("data-layer-id");this.limparClassesDeArraste(),d&&Wa(this.host.camadas,t,d,l)&&this.aposReordenarCamadas()};this.cancelarToque=()=>{s(),this.limparClassesDeArraste()},window.addEventListener("pointermove",c,{passive:!1}),window.addEventListener("pointerup",p),window.addEventListener("pointercancel",p)})})}}const rr="ui_camadas_estado_";function sa(e,r){const a=(e||r||"default").trim();return`${rr}${a}`}function xe(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function te(e){return Array.isArray(e)?e.filter(r=>typeof r=="string"):[]}function Oe(e){if(!xe(e))return;const r={};return typeof e.name=="string"&&(r.name=e.name),typeof e.visible=="boolean"&&(r.visible=e.visible),typeof e.locked=="boolean"&&(r.locked=e.locked),typeof e.opacity=="number"&&Number.isFinite(e.opacity)&&e.opacity>=0&&e.opacity<=1&&(r.opacity=e.opacity),typeof e.color=="string"&&(r.color=e.color),(typeof e.parentId=="string"||e.parentId===null)&&(r.parentId=e.parentId),r}function la(e){if(!xe(e))return null;const r={};if(xe(e.camadasOverrides))for(const[t,i]of Object.entries(e.camadasOverrides)){const o=Oe(i);if(!o)continue;const n=Oe(i.origem);r[t]=n?{...o,origem:n}:o}const a=e.altura;return{versao:typeof e.versao=="number"?e.versao:1,expandedLayerIds:te(e.expandedLayerIds),collapsedLayerIds:te(e.collapsedLayerIds),camadaAtivaId:typeof e.camadaAtivaId=="string"?e.camadaAtivaId:null,painelColapsado:typeof e.painelColapsado=="boolean"?e.painelColapsado:void 0,ordemCamadasIds:te(e.ordemCamadasIds),ordemOrigemIds:Array.isArray(e.ordemOrigemIds)?te(e.ordemOrigemIds):void 0,mapaBaseAtivo:typeof e.mapaBaseAtivo=="string"?e.mapaBaseAtivo:void 0,densidade:e.densidade==="compacto"||e.densidade==="normal"?e.densidade:void 0,altura:typeof a=="number"&&Number.isFinite(a)&&a>0?a:null,camadasOverrides:r,ultimaAtualizacao:typeof e.ultimaAtualizacao=="number"?e.ultimaAtualizacao:void 0}}function ne(e){if(typeof window>"u"||typeof localStorage>"u")return null;try{const r=localStorage.getItem(e);return r?la(JSON.parse(r)):null}catch(r){console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`,r)}return null}function ca(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 da(e){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.removeItem(e)}catch{}}function Me(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 ua(e,r,a,t){var u;if(!Array.isArray(e))return;const i=(r==null?void 0:r.camadasOverrides)||{},o=new Set((r==null?void 0:r.expandedLayerIds)||[]),n=new Set((r==null?void 0:r.collapsedLayerIds)||[]),l=o.size>0||n.size>0;for(let d=0;d<e.length;d++){const m=e[d],f=i[m.id];if(t==null||t.set(m.id,Me(m)),f){const g=f.origem,v=y=>{var M;const k=(M=t==null?void 0:t.get(m.id))==null?void 0:M[y];return g!==void 0&&g[y]!==k};typeof f.name=="string"&&f.name.trim()&&!v("name")&&(m.name=f.name),typeof f.visible=="boolean"&&!v("visible")&&(m.visible=f.visible),typeof f.locked=="boolean"&&!v("locked")&&(m.locked=f.locked),typeof f.opacity=="number"&&!v("opacity")&&(m.opacity=f.opacity),typeof f.color=="string"&&!v("color")&&(m.color=f.color),f.parentId!==void 0&&!v("parentId")&&(m.parentId=f.parentId)}l?o.has(m.id)?a.add(m.id):n.has(m.id)?a.delete(m.id):a.add(m.id):a.add(m.id)}for(let d=0;d<e.length;d++){const m=e[d];m.parentId&&(m.parentId===m.id||Y(e,m.parentId,m.id))&&(m.parentId=((u=t==null?void 0:t.get(m.id))==null?void 0:u.parentId)??null)}const c=new Set(e.map(d=>d.id)),s=r==null?void 0:r.ordemOrigemIds;if(!(Array.isArray(s)&&(()=>{const d=new Set(s),m=f=>f.filter(g=>c.has(g)&&d.has(g)).join("|");return m(s)!==m(e.map(f=>f.id))})())&&Array.isArray(r==null?void 0:r.ordemCamadasIds)&&r.ordemCamadasIds.length>0){const d=new Map;r.ordemCamadasIds.forEach((m,f)=>d.set(m,f)),e.sort((m,f)=>{const g=d.has(m.id)?d.get(m.id):9999,v=d.has(f.id)?d.get(f.id):9999;return g-v})}}function pa(e){const{estadoAnterior:r,camadas:a,expandedLayers:t}=e;let i=(r==null?void 0:r.expandedLayerIds)||[],o=(r==null?void 0:r.collapsedLayerIds)||[],n=(r==null?void 0:r.ordemCamadasIds)||[],l=r==null?void 0:r.ordemOrigemIds;const c={...(r==null?void 0:r.camadasOverrides)||{}};a.length>0&&(i=[],o=[],n=a.map(s=>s.id),l=e.origensCamadas?[...e.origensCamadas.keys()]:n,a.forEach(s=>{var p,u;t.has(s.id)?i.push(s.id):o.push(s.id),c[s.id]={name:s.name,visible:s.visible!==!1,locked:!!s.locked,opacity:typeof s.opacity=="number"?s.opacity:1,color:s.color||"#00E08A",parentId:s.parentId!==void 0?s.parentId:null,origem:((p=e.origensCamadas)==null?void 0:p.get(s.id))??((u=c[s.id])==null?void 0:u.origem)}}));for(const s of e.camadasRemovidas??[])delete c[s];return{versao:1,expandedLayerIds:i,collapsedLayerIds:o,camadaAtivaId:e.camadaAtivaId,painelColapsado:e.painelColapsado,ordemCamadasIds:n,ordemOrigemIds:l,mapaBaseAtivo:e.mapaBaseAtivo,densidade:e.densidade,altura:e.altura,camadasOverrides:c,ultimaAtualizacao:Date.now()}}const tr=`:host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-respiro: 8px;--camada-barra-altura: 28px;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);max-height:var(--camada-barra-altura);display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 var(--camada-respiro) var(--camada-respiro);display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro));padding:0 var(--camada-respiro);gap:8px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:24px;height:24px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);border:none;color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 var(--camada-respiro);gap:6px;box-sizing:border-box;overflow:hidden;position:relative;flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro))}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{display:inline-flex;align-items:center;color:var(--ui-cor-texto-secundario, #888899);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 8px;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-footer-right{display:flex;align-items:center;gap:4px;flex:1 1 auto;min-width:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0}.ui-footer-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;background-size:10px;border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background-color:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.ui-truncate-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;margin:4px 8px 6px;background:color-mix(in srgb,var(--ui-cor-superficie-elevada, #1c1c21) 70%,transparent);border:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 4px);font-size:10px;color:var(--ui-cor-texto-secundario, #9ca3af)}.ui-truncate-notice span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-truncate-more-btn{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--ui-cor-superficie, #27272a);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 4px);color:var(--ui-cor-primaria, #00E08A);font-size:10px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--camada-transicao)}.ui-truncate-more-btn:hover{background:var(--ui-cor-superficie-hover, #3f3f46);border-color:var(--ui-cor-primaria, #00E08A)}.ui-truncate-more-btn:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}`;function ir(e,r){r.querySelectorAll("[data-layer-row]").forEach(t=>{const o=t.getAttribute("data-layer-row")===e.camadaAtivaId;t.classList.toggle("active-drawing-layer",o),He.alternarPart(t,"camada-ativa",o),o?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")})}function or(e,r){r.querySelectorAll(".ui-feat-row").forEach(a=>{const t=a.getAttribute("data-feat-row"),i=t?e.selectedFeatureIds.has(t):!1;a.classList.toggle("selected-row",i),He.alternarPart(a,"feicao-selecionada",i),a.setAttribute("aria-selected",String(i));const o=a.querySelector(".ui-target-circle");o&&o.classList.toggle("selected",i)}),r.querySelectorAll(".ui-layer-group").forEach(a=>{const t=a.getAttribute("data-layer-id"),i=W(e.camadas,e.feicoes,t??"");fa(a.querySelector(".ui-layer-row .ui-target-circle"),i,e.selectedFeatureIds)}),ma(e,r)}function fa(e,r,a){if(!e)return;if(r.length===0){e.classList.remove("selected","partial");return}const t=r.every(o=>a.has(o.id)),i=!t&&r.some(o=>a.has(o.id));e.classList.toggle("selected",t),e.classList.toggle("partial",i)}function ma(e,r){const a=e.feicoes.filter(u=>e.selectedFeatureIds.has(u.id)),t=a.length>0,i=r.getElementById("footer-count"),o=r.getElementById("footer-label");if(i&&(i.textContent=String(t?a.length:e.camadas.length)),o){const u=Le(e.camadas.length,a.length);o.innerHTML=u.icone,o.title=u.texto,o.setAttribute("aria-label",u.texto)}const n=r.querySelector(".ui-tree-footer");n&&(n.classList.toggle("tem-selecao",t),n.classList.toggle("sem-selecao",!t));const l=r.querySelector(".ui-footer-actions-gerais");l&&(l.style.display=t?"none":"flex");const c=r.querySelector(".ui-footer-bulk-actions");c&&(c.style.display=t?"flex":"none"),["btn-footer-del"].forEach(u=>{const d=r.getElementById(u);d&&(d.disabled=!t,d.classList.toggle("disabled",!t))});const s=r.querySelector(".ui-footer-move-wrapper");s&&s.classList.toggle("disabled",!t);const p=r.getElementById("select-footer-move");p&&(p.disabled=!t)}function je(e,r){const a=de(e.camadas),t=new Map(e.camadas.map(o=>[o.id,o]));r.querySelectorAll(".ui-layer-row").forEach(o=>{const n=a.get(o.getAttribute("data-layer-row")||"");o.classList.toggle("herdado-oculto",(n==null?void 0:n.ocultaPorAncestral)===!0),o.classList.toggle("herdado-travado",(n==null?void 0:n.travadaPorAncestral)===!0)});const i=new Map(e.feicoes.map(o=>[o.id,o]));r.querySelectorAll(".ui-feat-row").forEach(o=>{const n=o.getAttribute("data-feat-layer")||"",l=t.get(n),c=a.get(n);o.classList.toggle("herdado-oculto",(l==null?void 0:l.visible)===!1||(c==null?void 0:c.ocultaPorAncestral)===!0);const s=o.querySelector("[data-feat-lock]"),p=i.get(o.getAttribute("data-feat-row")||"");if(!s||!p)return;const u=(l==null?void 0:l.locked)===!0||(c==null?void 0:c.travadaPorAncestral)===!0,d=p.locked===!0||u;s.innerHTML=d?h.cadeadoTrancado:h.cadeadoAberto,s.classList.toggle("ui-lock-open",!d),u?s.setAttribute("data-locked-by-layer","true"):s.removeAttribute("data-locked-by-layer"),q(s,u?"Bloqueada pela camada":d?"Desbloquear Feição":"Bloquear Feição")})}function nr(e,r){r.querySelectorAll("[data-layer-row]").forEach(i=>{i.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], [data-layer-color], input, button"))return;const l=i.getAttribute("data-layer-row");l&&e.definirCamadaAtiva(l,!0)})}),r.querySelectorAll("[data-layer-expand]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-expand");if(!n)return;e.expandedLayers.has(n)?e.expandedLayers.delete(n):e.expandedLayers.add(n);const l=i.closest(".ui-layer-group"),c=i.querySelector(".ui-chevron-icon"),s=e.expandedLayers.has(n);if(c&&c.classList.toggle("open",s),l){l.setAttribute("aria-expanded",String(s));const p=l.querySelector(".ui-children-container");p&&(p.style.display=s?"block":"none")}q(i,s?"Recolher grupo":"Expandir grupo"),sr(e,r),e.salvarLembrancaEstado()})}),r.querySelectorAll("[data-layer-eye]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-eye"),l=e.camadas.find(c=>c.id===n);if(l){l.visible=l.visible===!1;const c=l.visible!==!1;i.innerHTML=c?h.olhoAberto:h.olhoFechado,q(i,c?"Ocultar Camada":"Exibir Camada");const s=i.closest(".ui-layer-row");s&&s.classList.toggle("hidden-layer",!c),lr(e,r),je(e,r),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-visibilidade",{camadaId:l.id,visivel:c})}})}),r.querySelectorAll("[data-layer-lock]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-lock"),l=e.camadas.find(c=>c.id===n);l&&(l.locked=!l.locked,i.innerHTML=l.locked?h.cadeadoTrancado:h.cadeadoAberto,i.classList.toggle("ui-lock-open",!l.locked),q(i,l.locked?"Desbloquear Camada":"Bloquear Camada"),je(e,r),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-bloqueio",{camadaId:l.id,bloqueado:l.locked}))})}),r.querySelectorAll("[data-layer-fit]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-fit");n&&e.dispararEvento("ui-camada-enquadrar",{camadaId:n})})}),r.querySelectorAll("[data-layer-settings]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-settings");e.activeSettingsLayerId=e.activeSettingsLayerId===n?null:n,e.solicitarRenderizacao()})}),r.querySelectorAll("[data-layer-settings-close]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation(),e.activeSettingsLayerId=null,e.solicitarRenderizacao()})});const a=(i,o,n)=>{var m;const l=e.camadas.find(f=>f.id===i);if(!l)return;const c=H(o,l.color||"#00E08A");l.color=c;const s=r.getElementById(`sample-color-${i}`);s&&(s.style.backgroundColor=c);const p=r.getElementById(`hex-color-${i}`);p&&(p.textContent=c.toUpperCase());const u=r.getElementById(`settings-drawer-${i}`);u&&u.style.setProperty("--drawer-cor-camada",c);const d=T(r,"data-layer-row",i);if(d){(m=d.closest(".ui-layer-group"))==null||m.style.setProperty("--layer-active-color",c);const f=d.querySelector(".ui-col-colorbar");f&&(f.style.backgroundColor=c)}n?e.salvarLembrancaEstado():e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-cor",{camadaId:l.id,cor:c})};r.querySelectorAll("[data-layer-color-picker]").forEach(i=>{const o=i,n=l=>c=>{const s=o.getAttribute("data-layer-color-picker");if(!s)return;const p=c.target.value;a(s,p,l)};o.addEventListener("input",n(!1)),o.addEventListener("change",n(!0))}),r.querySelectorAll("[data-layer-color]").forEach(i=>{const o=n=>{n.stopPropagation();const l=i.getAttribute("data-layer-color"),c=e.camadas.find(s=>s.id===l);!l||!c||Oa.abrirSeletorCor({ancora:i,titulo:`Cor · ${c.name||"Camada"}`,modo:"simples",cor:H(c.color,"#00E08A"),mostrarOpacidade:!1,aoAlterar:s=>a(l,s.cor,!1),aoConfirmar:s=>a(l,s.cor,!0),aoCancelar:s=>a(l,s.cor,!0)})};i.addEventListener("click",o),i.addEventListener("keydown",n=>{const l=n.key;(l==="Enter"||l===" ")&&(n.preventDefault(),o(n))})});const t=(i,o)=>{const n=e.camadas.find(s=>s.id===i);if(!n)return;n.opacity=o;const l=r.getElementById(`badge-op-${i}`);l&&(l.textContent=`${Math.round(o*100)}%`);const c=T(r,"data-layer-opacity-slider",i);c&&parseFloat(c.value)!==o&&(c.value=String(o)),e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-opacidade",{camadaId:n.id,opacidade:o})};r.querySelectorAll("[data-layer-opacity-slider]").forEach(i=>{i.addEventListener("input",o=>{const n=i.getAttribute("data-layer-opacity-slider");if(!n)return;const l=parseFloat(o.target.value);Number.isFinite(l)&&t(n,Math.min(1,Math.max(0,l)))})}),r.querySelectorAll("[data-delete-layer]").forEach(i=>{let o=null;i.addEventListener("click",n=>{n.stopPropagation();const l=i.getAttribute("data-delete-layer");if(!l)return;if(i.classList.contains("confirming")){o&&clearTimeout(o),e.dispararEvento("ui-camada-excluida",{camadaId:l});const s=e.selectedFeatureIds.size;e.camadas.forEach(p=>{p.parentId===l&&(p.parentId=null)}),e.removerCamada(l),e.selectedFeatureIds.size!==s&&e.notificarMudancaSelecao()}else{i.classList.add("confirming");const s=i.querySelector(".ui-btn-label");s&&(s.textContent="Confirmar Exclusão?"),o=setTimeout(()=>{i.classList.remove("confirming"),s&&(s.textContent="Excluir")},3500)}})}),r.querySelectorAll("[data-layer-parent-select]").forEach(i=>{i.addEventListener("change",o=>{const n=o.target,l=n.getAttribute("data-layer-parent-select"),c=n.value||null,s=e.camadas.find(p=>p.id===l);if(s){if(c&&(c===s.id||Y(e.camadas,c,s.id))){n.value=s.parentId||"";return}const p=s.parentId??null;s.parentId=c,c&&e.expandedLayers.add(c),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-mover-hierarquia",{camadaId:s.id,novoParentId:c,parentAnteriorId:p,camada:s}),e.solicitarRenderizacao()}})}),r.querySelectorAll("[data-add-sublayer]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-add-sublayer");e.dispararEvento("ui-camada-adicionar",{parentId:n})})}),ga(e,r),r.querySelectorAll("[data-layer-target]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=o,l=i.getAttribute("data-layer-target");if(!l)return;const c=W(e.camadas,e.feicoes,l),s=V(c,e.searchQuery);if(s.length===0)return;s.every(u=>e.selectedFeatureIds.has(u.id))?s.forEach(u=>e.selectedFeatureIds.delete(u.id)):(!n.ctrlKey&&!n.metaKey&&e.selectedFeatureIds.clear(),s.forEach(u=>e.selectedFeatureIds.add(u.id))),e.lastClickedFeatureId=s[s.length-1].id,e.sincronizarSelecaoDOM(),e.notificarMudancaSelecao()})})}function ga(e,r){r.querySelectorAll("[data-layer-show-more]").forEach(a=>{a.addEventListener("click",t=>{t.stopPropagation();const i=a.getAttribute("data-layer-show-more");i&&e.incrementarLimiteFeicoes(i)})})}function sr(e,r){const a=r.getElementById("btn-toggle-all-expand");if(!a)return;const t=e.camadas.length>0&&e.camadas.every(o=>e.expandedLayers.has(o.id)),i=a.querySelector(".ui-chevron-icon");i&&i.classList.toggle("open",t),q(a,t?"Recolher Todos os Grupos":"Expandir Todos os Grupos")}function lr(e,r){const a=r.getElementById("btn-toggle-all-vis");if(!a)return;const t=e.camadas.every(i=>i.visible!==!1);a.innerHTML=t?h.olhoAberto:h.olhoFechado,q(a,t?"Ocultar Todas as Camadas":"Exibir Todas as Camadas")}function cr(e,r){const a=r.getElementById("select-footer-move");a&&a.addEventListener("change",n=>{const l=n.target.value;if(!l)return;const c=Ce(e.camadas);if(c.has(l)){a.value="";return}const s=e.feicoes.filter(u=>e.selectedFeatureIds.has(u.id)&&!c.has(u.layerId));if(s.length===0)return;const p=new Map(s.map(u=>[u.id,u.layerId]));s.forEach(u=>u.layerId=l),s.forEach(u=>{p.get(u.id)!==l&&e.dispararEvento("ui-feicao-movida",{feicaoId:u.id,camadaOrigemId:p.get(u.id),camadaDestinoId:l,feicao:u})}),e.dispararEvento("ui-acao-massa",{acao:"mover",feicoesIds:s.map(u=>u.id),feicoes:s,valor:l}),e.solicitarRenderizacao()});const t=r.getElementById("btn-footer-new-layer");t&&t.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const i=r.getElementById("btn-footer-new-group");i&&i.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const o=r.getElementById("btn-footer-del");if(o){let n=null;const l="Excluir selecionados";o.addEventListener("click",()=>{const c=Array.from(e.selectedFeatureIds);if(c.length===0)return;if(!o.classList.contains("confirming")){o.classList.add("confirming"),q(o,`Clique novamente para excluir ${c.length} selecionado(s)`),n=setTimeout(()=>{o.classList.remove("confirming"),q(o,l)},3500);return}n&&clearTimeout(n);const s=e.feicoes.filter(p=>e.selectedFeatureIds.has(p.id));e.feicoes=e.feicoes.filter(p=>!e.selectedFeatureIds.has(p.id)),e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.dispararEvento("ui-acao-massa",{acao:"excluir",feicoesIds:c,feicoes:s}),e.notificarMudancaSelecao(),e.solicitarRenderizacao()})}}const dr=[{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"}],we={olho:"[data-layer-eye], [data-feat-eye]",cadeado:"[data-layer-lock], [data-feat-lock]",selecao:"[data-layer-target], [data-feat-target]"},ur=3;function pr(e){return dr.find(r=>e.hasAttribute(r.atributo))??null}function ye(e,r){const a=pr(r);if(!a)return null;const t=r.getAttribute(a.atributo);if(!t)return null;if(a.tipo==="olho"){const o=a.entidade==="camada"?e.camadas.find(n=>n.id===t):e.feicoes.find(n=>n.id===t);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===t):e.feicoes.find(n=>n.id===t);return o?o.locked===!0:null}if(a.entidade==="feicao")return e.selectedFeatureIds.has(t);const i=V(W(e.camadas,e.feicoes,t),e.searchQuery);return i.length===0?null:i.every(o=>e.selectedFeatureIds.has(o.id))}function Ne(e,r,a=!1){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,ctrlKey:r,shiftKey:a}))}let P=null;function fr(e){(P==null?void 0:P.host)===e&&P.cancelar()}function va(e,r,a=r){Object.keys(we).forEach(t=>{a.querySelectorAll(we[t]).forEach(i=>{i.addEventListener("pointerdown",o=>mr(e,r,t,i,o))})})}function mr(e,r,a,t,i){if(i.pointerType==="mouse"&&i.button!==0||e.editingLayerId||e.editingFeatureId||ye(e,t)===null)return;P==null||P.cancelar();const o=we[a],n=i.ctrlKey||i.metaKey,l=i.shiftKey;let c=!1,s=!1,p=i.clientY;const u=new Set([t]),d=w=>{w.preventDefault(),w.stopImmediatePropagation()},m=w=>{w.stopPropagation(),w.preventDefault()},f=w=>w.preventDefault(),g=w=>{u.has(w)||(u.add(w),ye(e,w)!==s&&Ne(w,a==="selecao"))},v=()=>{c=!0,Ne(t,n,l),s=ye(e,t)===!0,r.addEventListener("selectstart",f),document.body.style.userSelect="none"},y=w=>{var I,E;if(!c){if(Math.hypot(w.clientX-i.clientX,w.clientY-i.clientY)<ur)return;const x=(I=r.elementFromPoint(w.clientX,w.clientY))==null?void 0:I.closest(o);if(!x||x===t)return;v()}w.preventDefault();const L=Math.min(p,w.clientY),b=Math.max(p,w.clientY);r.querySelectorAll(o).forEach(x=>{const B=x.getBoundingClientRect();if(B.height===0)return;const D=B.top+B.height/2;D>=L&&D<=b&&g(x)});const $=(E=r.elementFromPoint(w.clientX,w.clientY))==null?void 0:E.closest(o);$&&g($),p=w.clientY},k=(w=!1)=>{(P==null?void 0:P.cancelar)===S&&(P=null),window.removeEventListener("pointermove",y),window.removeEventListener("pointerup",M),window.removeEventListener("pointercancel",M),window.removeEventListener("dragstart",d,!0),r.removeEventListener("selectstart",f),c&&(document.body.style.userSelect="",w||(window.addEventListener("click",m,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",m,!0),0)))},M=()=>k(),S=()=>k(!0);P={host:e,cancelar:S},window.addEventListener("dragstart",d,!0),window.addEventListener("pointermove",y,{passive:!1}),window.addEventListener("pointerup",M),window.addEventListener("pointercancel",M)}function gr(e,r){const a=r.getElementById("btn-toggle-all-vis");a&&a.addEventListener("click",()=>e.alternarVisibilidadeTodas(!0));const t=r.getElementById("btn-toggle-all-expand");t&&t.addEventListener("click",o=>{o.stopPropagation(),e.camadas.length>0&&e.camadas.every(l=>e.expandedLayers.has(l.id))?e.colapsarTodas():e.expandirTodas()});const i=r.getElementById("btn-colapsar");i&&i.addEventListener("click",()=>e.colapsar(!0)),vr(e,r)}function vr(e,r){const a=r.getElementById("input-layer-search"),t=r.getElementById("btn-clear-layer-search"),i=()=>{var o;e.searchQuery="",e.solicitarRenderizacao(),(o=r.getElementById("input-layer-search"))==null||o.focus()};if(a){const o=_e(()=>e.solicitarRenderizacao(),75);a.addEventListener("input",n=>{e.searchQuery=n.target.value,o()}),a.addEventListener("keydown",n=>{n.key==="Escape"&&e.searchQuery&&(n.preventDefault(),i())})}t&&t.addEventListener("click",i)}function ba(e,r){r.querySelectorAll("[data-feat-select]").forEach(a=>{a.addEventListener("click",t=>{if(e.editingFeatureId)return;const i=t;if(i.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,i.ctrlKey||i.metaKey,i.shiftKey,!0)})}),r.querySelectorAll("[data-feat-target]").forEach(a=>{a.addEventListener("click",t=>{t.stopPropagation();const i=t,o=a.getAttribute("data-feat-target");o&&e.selecionarFeicao(o,i.ctrlKey||i.metaKey,i.shiftKey,!0)})}),r.querySelectorAll("[data-feat-eye]").forEach(a=>{a.addEventListener("click",t=>{t.stopPropagation();const i=a.getAttribute("data-feat-eye"),o=e.feicoes.find(n=>n.id===i);if(o){o.visible=o.visible===!1;const n=o.visible!==!1;a.innerHTML=n?h.olhoAberto:h.olhoFechado,q(a,n?"Ocultar Feição":"Exibir Feição");const l=a.closest(".ui-feat-row");l&&l.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",t=>{if(t.stopPropagation(),a.hasAttribute("data-locked-by-layer"))return;const i=a.getAttribute("data-feat-lock"),o=e.feicoes.find(n=>n.id===i);o&&(o.locked=!o.locked,a.innerHTML=o.locked?h.cadeadoTrancado:h.cadeadoAberto,a.classList.toggle("ui-lock-open",!o.locked),q(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",t=>{t.stopPropagation();const i=a.getAttribute("data-feat-fit");i&&e.dispararEvento("ui-feicao-enquadrar",{feicaoId:i})})})}function br(e,r){var a;r.querySelectorAll("[data-basemap-thumb]").forEach(t=>{t.addEventListener("error",()=>{const i=document.createElement("div");i.className="ui-basemap-preview-none",i.innerHTML=h.mapa,t.replaceWith(i)},{once:!0})}),(a=r.querySelector("[data-basemap-toggle]"))==null||a.addEventListener("click",()=>{e.alternarMapasBaseRecolhido(!0)}),r.querySelectorAll("[data-basemap-id]").forEach(t=>{t.addEventListener("click",()=>{const i=t.getAttribute("data-basemap-id");i&&e.selecionarMapaBase(i,!0)})})}function hr(e,r){gr(e,r),nr(e,r),ba(e,r),br(e,r),cr(e,r),va(e,r)}function yr(e){if(!e.arvoreRenderizada)return{incremental:!1,motivo:"arvore-nao-renderizada"};if(e.buscaAtiva)return{incremental:!1,motivo:"busca-ativa"};if(e.editandoCamada||e.editandoFeicao)return{incremental:!1,motivo:"edicao-inline"};for(const r of e.camadasAfetadas){if(!r.existeNoModelo)return{incremental:!1,motivo:"camada-orfa"};if(!r.renderizadaNoDom)return{incremental:!1,motivo:"camada-fora-do-dom"};if(r.drawerAberto)return{incremental:!1,motivo:"drawer-aberto"}}return e.idsDuplicados?{incremental:!1,motivo:"ids-duplicados"}:{incremental:!0}}function ha(e,r=new Map){for(const a of e)r.set(a.camada.id,a),ha(a.subcamadas,r);return r}function xr(e){const r=new Map;for(let a=0;a<e.length;a++){const t=e[a];if(!t||!t.id)continue;const i=t.layerId||"",o=r.get(i);o?o.push(t):r.set(i,[t])}return r}function K(e,r){for(let a=e.firstElementChild;a;a=a.nextElementSibling)if(a.classList.contains(r))return a;return null}function wr(e){const r=new Map,a=t=>{for(let i=t.firstElementChild;i&&i.classList.contains("ui-layer-group");i=i.nextElementSibling){const o=i.getAttribute("data-layer-id");o!==null&&r.set(o,i);const n=K(i,"ui-children-container");n&&a(n)}};return a(e),r}function Ar(e){if(!e||e.length<2)return!1;const r=new Set;for(const a of e){if(r.has(a.id))return!0;r.add(a.id)}return!1}function Er(e,r){var i;const a=new Map(r.map(o=>[o.id,o])),t=new Set;for(const o of e){let n=o;for(;n&&a.has(n)&&!t.has(n);)t.add(n),n=(i=a.get(n))==null?void 0:i.parentId}return t}function se(e){const r=document.createElement("template");return r.innerHTML=e,{modelo:r,elementos:Array.from(r.content.children)}}function le(e){var a;const r=e.nextSibling;r&&r.nodeType===3&&!(r.textContent??"").trim()&&((a=r.parentNode)==null||a.removeChild(r)),e.remove()}function kr(e,r){if(!e||!r.contains(e))return null;const a=Array.from(e.attributes).find(t=>t.name.startsWith("data-")&&t.value!=="");return a?{nome:a.name,valor:a.value}:null}function Ir(e,r){const{host:a,shadow:t,mudanca:i}=e,o=e.grupos.get(r),n=e.nodos.get(r),l=o?K(o,"ui-children-container"):null;if(!o||!n||!l)return!1;const c=n.camada,s=e.porCamada.get(r)??[],p=a.expandedFeatureLimits.get(r)??ue,u=s.slice(0,p),d=new Set(u.map(b=>b.id)),m=new Map,f=new Map,g=t.activeElement;let v=null;for(let b=l.firstElementChild,$;b;b=$){$=b.nextElementSibling;const I=b.getAttribute("data-feat-row");if(I===null){!v&&!b.classList.contains("ui-layer-group")&&(v=b);continue}const E=i.idsAlterados.has(I)&&d.has(I)&&!m.has(I);!d.has(I)||m.has(I)||E?(E&&f.set(I,{tabindex:b.getAttribute("tabindex"),foco:kr(g,b)}),le(b)):(m.set(I,b),v||(v=b))}const y=We(c,n.depth,e.herdado.get(r)),k=u.filter(b=>!m.has(b.id));let M=[];if(k.length>0){const b=k.map(E=>ta(E,y,a.selectedFeatureIds.has(E.id),a.editingFeatureId===E.id)).join(""),{modelo:$,elementos:I}=se(b);if(I.length!==k.length)return!1;e.ligar($.content),M=I}let S=v,w=0;const L=new Map;for(const b of u){const $=m.get(b.id);if($)$===S?S=$.nextElementSibling:l.insertBefore($,S);else{const I=M[w++];l.insertBefore(I,S),L.set(b.id,I)}}return f.forEach((b,$)=>{const I=L.get($);if(!I||(b.tabindex!==null&&I.setAttribute("tabindex",b.tabindex),!b.foco))return;const E=I.getAttribute(b.foco.nome)===b.foco.valor?I:Array.from(I.querySelectorAll(`[${b.foco.nome}]`)).find(x=>x.getAttribute(b.foco.nome)===b.foco.valor);E==null||E.focus({preventScroll:!0})}),Cr(e,l,n,p,s.length)}function Cr(e,r,a,t,i){const o=z(a.camada.id),n=!!(a.camada.isGroup||a.subcamadas.length>0),l=i>t,c=a.subcamadas.length===0&&i===0,s=K(r,"ui-truncate-notice"),p=K(r,"ui-empty-row");if(p&&!c&&le(p),s&&!l&&le(s),l)if(s){const u=ea(t,i),d=s.querySelector("span"),m=s.querySelector(".ui-truncate-more-btn");if(!d||!m)return!1;d.textContent!==u.resumo&&(d.textContent=u.resumo),m.textContent!==u.botao&&(m.textContent=u.botao)}else{const{modelo:u,elementos:d}=se(aa(o,t,i));if(d.length!==1)return!1;e.ligar(u.content),r.appendChild(d[0])}if(c&&!p){const{elementos:u}=se(ra(n));if(u.length!==1)return!1;r.appendChild(u[0])}return!0}function Lr(e,r){const a=e.grupos.get(r),t=e.nodos.get(r),i=a?K(a,"ui-layer-row"):null,o=i==null?void 0:i.querySelector(".ui-col-name");if(!a||!t||!i||!o)return!1;const{host:n}=e,l=W(n.camadas,n.feicoes,r),c=(e.porCamada.get(r)??[]).length,s=t.subcamadas.length,p=!!(t.camada.isGroup||s>0),u=o.querySelector(".ui-count-chip");if(u)if(l.length===0&&p)le(u);else{const d=String(l.length),m=Je(l.length,c,s);u.textContent!==d&&(u.textContent=d),u.getAttribute("title")!==m&&u.setAttribute("title",m)}else{const d=Ze(l.length,c,s,p);if(d){const{elementos:m}=se(d);if(m.length!==1)return!1;o.appendChild(m[0])}}return fa(i.querySelector(".ui-target-circle"),l,n.selectedFeatureIds),!0}function Sr(e,r,a,t){const i=r.getElementById("ui-layer-tree-mount"),o=ha(X(e.camadas)),n=i?wr(i):new Map,l=xr(e.feicoes),c=a.camadas==="todas"?Array.from(o.keys()):Array.from(a.camadas),s=c.map(d=>({existeNoModelo:o.has(d),renderizadaNoDom:n.has(d),drawerAberto:e.activeSettingsLayerId===d}));if(!yr({arvoreRenderizada:i!==null,buscaAtiva:(e.searchQuery||"").trim()!=="",editandoCamada:e.editingLayerId!==null,editandoFeicao:e.editingFeatureId!==null,idsDuplicados:c.some(d=>Ar(l.get(d))),camadasAfetadas:s}).incremental)return!1;const u={host:e,shadow:r,mudanca:a,porCamada:l,nodos:o,grupos:n,herdado:de(e.camadas),ligar:t};for(const d of c)if(!Ir(u,d))return!1;for(const d of Er(c,e.camadas))if(!Lr(u,d))return!1;return(a.selecaoAfetada||e.selectedFeatureIds.size>0)&&ma(e,r),!0}function $r(e){if(!e.isConnected)return;const r=document.createElement("div");r.className="ui-basemap-preview-none",r.innerHTML=h.gradeCad,e.replaceWith(r)}function Mr(e,r,a,t){var g,v;const i=oa({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,titulo:e.titulo,mostrarBusca:e.mostrarBusca,limitesPorCamada:e.expandedFeatureLimits,mostrarBotaoColapsar:e.flutuante&&e.getAttribute("colapsavel")!=="false"}),o=e.mostrarMapasBase?Ve(e.mapasBase,e.mapaBaseAtivo,e.mapasBaseRecolhido):"",n=e.mostrarRodape?Ke(e.camadas,e.feicoes,e.selectedFeatureIds):"",l=r.getElementById("ui-layer-tree-mount"),c=a.scrollTop,s=l?l.scrollTop:0,p=r.activeElement,u=p&&a.contains(p)?p.id:"",d=p&&!u&&a.contains(p)?Array.from(p.attributes).find(y=>y.name.startsWith("data-")&&y.value!==""):void 0,m=p&&"selectionStart"in p?p.selectionStart:null;a.innerHTML=`
299
+ `}function ar(e){return[{gatilho:"data-layer-name-trigger",input:"data-inline-layer-input",linha:"data-layer-row",marcarEditando:r=>{e.editingLayerId=r},aplicar:(r,a)=>{const t=e.camadas.find(i=>i.id===r);return!a||!t||t.name===a?null:(t.name=a,{detalhe:{camadaId:r,novoNome:a,camada:t},salvar:!0})},emitir:r=>e.dispararEvento("ui-camada-renomeada",r)},{gatilho:"data-feat-name-trigger",input:"data-inline-feat-input",linha:"data-feat-row",marcarEditando:r=>{e.editingFeatureId=r},aplicar:(r,a)=>{const t=e.feicoes.find(i=>i.id===r);return!a||!t||t.name===a?null:(t.name=a,{detalhe:{feicaoId:r,novoNome:a,feicao:t},salvar:!1})},emitir:r=>e.dispararEvento("ui-feicao-renomeada",r)}]}function Oe(e,r,a=r){for(const t of ar(e))a.querySelectorAll(`[${t.gatilho}]`).forEach(i=>{i.addEventListener("dblclick",o=>{o.stopPropagation();const n=i.getAttribute(t.gatilho);if(!n)return;t.marcarEditando(n),e.solicitarRenderizacao();const l=T(r,t.input,n);if(!l)return;l.focus(),l.select();let c=!1;const s=(p,u=!1)=>{var d,m;if(!c){if(c=!0,t.marcarEditando(null),p){const f=t.aplicar(n,l.value.trim());f&&(f.salvar&&((d=e.salvarLembrancaEstado)==null||d.call(e)),t.emitir(f.detalhe))}e.solicitarRenderizacao(),u&&((m=T(r,t.linha,n))==null||m.focus())}};l.addEventListener("keydown",p=>{p.key==="Enter"?(p.preventDefault(),s(!0,!0)):p.key==="Escape"&&(p.preventDefault(),s(!1,!0))}),l.addEventListener("blur",()=>s(!0))})})}const rr=["dragging","drop-above","drop-below","drop-into"];class sa{constructor(r,a){A(this,"host");A(this,"shadow");A(this,"cancelarToque",null);A(this,"arraste",{tipo:null,camadaId:null,feicaoId: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(){Oe(this.host,this.shadow)}limparClassesDeArraste(){this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(r=>{r.classList.remove(...rr)})}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})}trocaEntreCamadasTravada(r,a){var o;const t=(o=this.host.feicoes.find(n=>n.id===r))==null?void 0:o.layerId;if(!a||t===a)return!1;const i=Le(this.host.camadas);return i.has(a)||!!t&&i.has(t)}arrasteBloqueado(r){return!!r.closest("input, button, select")||!!this.host.editingLayerId||!!this.host.editingFeatureId}bindDragAndDrop(){this.arraste={tipo:null,camadaId:null,feicaoId:null},this.vincularArrasteCamadas(this.shadow),this.vincularArrasteFeicoes(this.shadow)}bindLinhasFeicao(r){Oe(this.host,this.shadow,r),this.vincularArrasteFeicoes(r)}vincularArrasteCamadas(r){r.querySelectorAll('.ui-layer-row[draggable="true"]').forEach(a=>{const t=a.getAttribute("data-layer-id");t&&(a.addEventListener("dragstart",i=>{const o=i;if(this.arrasteBloqueado(o.target)){o.preventDefault();return}this.arraste.tipo="layer",this.arraste.camadaId=t,o.dataTransfer&&(o.dataTransfer.setData("text/plain",JSON.stringify({type:"layer",id:t})),o.dataTransfer.effectAllowed="move"),a.classList.add("dragging")}),a.addEventListener("dragover",i=>{const o=i;if(o.preventDefault(),o.stopPropagation(),o.dataTransfer&&(o.dataTransfer.dropEffect="move"),this.arraste.tipo==="layer"){if(this.arraste.camadaId===t)return;const n=a.getBoundingClientRect(),l=Xa((o.clientY-n.top)/n.height);a.classList.toggle("drop-above",l==="acima"),a.classList.toggle("drop-below",l==="abaixo"),a.classList.toggle("drop-into",l==="dentro")}else this.arraste.tipo==="feature"&&a.classList.add("drop-into")}),a.addEventListener("dragleave",i=>{const o=i.relatedTarget;o&&a.contains(o)||a.classList.remove("drop-above","drop-below","drop-into")}),a.addEventListener("drop",i=>{var l;const o=i;o.preventDefault(),o.stopPropagation();const n=a.classList.contains("drop-into")?"dentro":a.classList.contains("drop-above")?"acima":"abaixo";if(this.limparClassesDeArraste(),this.arraste.tipo==="layer"){if(!this.arraste.camadaId||this.arraste.camadaId===t||!this.host.camadas.some(s=>s.id===this.arraste.camadaId)||!this.host.camadas.some(s=>s.id===t))return;const c=Wa(this.host.camadas,this.arraste.camadaId,t,n);(c==null?void 0:c.tipo)==="hierarquia"?((l=this.host.expandedLayers)==null||l.add(c.novoParentId),this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:c.camada.id,novoParentId:c.novoParentId,parentAnteriorId:c.parentAnteriorId,camada:c.camada})):c&&c.parentAnteriorId!==c.novoParentId&&this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:c.camada.id,novoParentId:c.novoParentId,parentAnteriorId:c.parentAnteriorId,camada:c.camada}),this.aposReordenarCamadas()}else if(this.arraste.tipo==="feature"){if(!this.arraste.feicaoId||this.trocaEntreCamadasTravada(this.arraste.feicaoId,t))return;const c=Za(this.host.feicoes,this.host.camadas,this.arraste.feicaoId,t);c&&(this.emitirFeicaoMovida(c),this.host.solicitarRenderizacao())}}),a.addEventListener("dragend",()=>{this.arraste.tipo=null,this.arraste.camadaId=null,this.arraste.feicaoId=null,this.limparClassesDeArraste()}))})}vincularArrasteFeicoes(r){r.querySelectorAll('.ui-feat-row[draggable="true"]').forEach(a=>{const t=a.getAttribute("data-feat-row"),i=a.getAttribute("data-feat-layer");t&&(a.addEventListener("dragstart",o=>{const n=o;if(this.arrasteBloqueado(n.target)){n.preventDefault();return}n.stopPropagation(),this.arraste.tipo="feature",this.arraste.feicaoId=t,this.arraste.camadaId=i,n.dataTransfer&&(n.dataTransfer.setData("text/plain",JSON.stringify({type:"feature",id:t,layerId:i})),n.dataTransfer.effectAllowed="move"),a.classList.add("dragging")}),a.addEventListener("dragover",o=>{const n=o;if(this.arraste.tipo!=="feature"||this.arraste.feicaoId===t)return;n.preventDefault(),n.stopPropagation(),n.dataTransfer&&(n.dataTransfer.dropEffect="move");const l=a.getBoundingClientRect(),c=n.clientY-l.top<l.height/2;a.classList.toggle("drop-above",c),a.classList.toggle("drop-below",!c)}),a.addEventListener("dragleave",o=>{const n=o.relatedTarget;n&&a.contains(n)||a.classList.remove("drop-above","drop-below")}),a.addEventListener("drop",o=>{const n=o;if(this.arraste.tipo!=="feature"||!this.arraste.feicaoId||this.arraste.feicaoId===t)return;n.preventDefault(),n.stopPropagation();const l=a.classList.contains("drop-above");if(this.limparClassesDeArraste(),this.trocaEntreCamadasTravada(this.arraste.feicaoId,i))return;const c=er(this.host.feicoes,this.arraste.feicaoId,t,l);c&&(c.mudouDeCamada&&this.emitirFeicaoMovida(c),this.host.dispararEvento("ui-feicoes-reordenadas",{feicoes:[...this.host.feicoes]}),this.host.solicitarRenderizacao())}),a.addEventListener("dragend",o=>{o.stopPropagation(),this.arraste.tipo=null,this.arraste.feicaoId=null,this.arraste.camadaId=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 t=a.getAttribute("data-layer-id");t&&r.addEventListener("pointerdown",i=>{var u;const o=i;if(o.pointerType==="mouse"&&o.button!==0||this.host.editingLayerId||this.host.editingFeatureId)return;(u=this.cancelarToque)==null||u.call(this);let n=null,l=!1;const c=d=>{d.preventDefault(),a.classList.add("dragging");const m=this.shadow.elementFromPoint(d.clientX,d.clientY),f=m?m.closest(".ui-layer-row"):null;if(n&&n!==f&&n.classList.remove("drop-above","drop-below"),f&&f!==a){n=f;const g=f.getBoundingClientRect();l=d.clientY-g.top<g.height/2,f.classList.toggle("drop-above",l),f.classList.toggle("drop-below",!l)}else n=null},s=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",p),window.removeEventListener("pointercancel",p),this.cancelarToque=null},p=()=>{s();const d=n==null?void 0:n.getAttribute("data-layer-id");this.limparClassesDeArraste(),d&&Ja(this.host.camadas,t,d,l)&&this.aposReordenarCamadas()};this.cancelarToque=()=>{s(),this.limparClassesDeArraste()},window.addEventListener("pointermove",c,{passive:!1}),window.addEventListener("pointerup",p),window.addEventListener("pointercancel",p)})})}}const tr="ui_camadas_estado_";function la(e,r){const a=(e||r||"default").trim();return`${tr}${a}`}function we(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function ie(e){return Array.isArray(e)?e.filter(r=>typeof r=="string"):[]}function je(e){if(!we(e))return;const r={};return typeof e.name=="string"&&(r.name=e.name),typeof e.visible=="boolean"&&(r.visible=e.visible),typeof e.locked=="boolean"&&(r.locked=e.locked),typeof e.opacity=="number"&&Number.isFinite(e.opacity)&&e.opacity>=0&&e.opacity<=1&&(r.opacity=e.opacity),typeof e.color=="string"&&(r.color=e.color),(typeof e.parentId=="string"||e.parentId===null)&&(r.parentId=e.parentId),r}function ca(e){if(!we(e))return null;const r={};if(we(e.camadasOverrides))for(const[t,i]of Object.entries(e.camadasOverrides)){const o=je(i);if(!o)continue;const n=je(i.origem);r[t]=n?{...o,origem:n}:o}const a=e.altura;return{versao:typeof e.versao=="number"?e.versao:1,expandedLayerIds:ie(e.expandedLayerIds),collapsedLayerIds:ie(e.collapsedLayerIds),camadaAtivaId:typeof e.camadaAtivaId=="string"?e.camadaAtivaId:null,painelColapsado:typeof e.painelColapsado=="boolean"?e.painelColapsado:void 0,ordemCamadasIds:ie(e.ordemCamadasIds),ordemOrigemIds:Array.isArray(e.ordemOrigemIds)?ie(e.ordemOrigemIds):void 0,mapaBaseAtivo:typeof e.mapaBaseAtivo=="string"?e.mapaBaseAtivo:void 0,densidade:e.densidade==="compacto"||e.densidade==="normal"?e.densidade:void 0,altura:typeof a=="number"&&Number.isFinite(a)&&a>0?a:null,camadasOverrides:r,ultimaAtualizacao:typeof e.ultimaAtualizacao=="number"?e.ultimaAtualizacao:void 0}}function se(e){if(typeof window>"u"||typeof localStorage>"u")return null;try{const r=localStorage.getItem(e);return r?ca(JSON.parse(r)):null}catch(r){console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`,r)}return null}function da(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 ua(e){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.removeItem(e)}catch{}}function Fe(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 pa(e,r,a,t){var u;if(!Array.isArray(e))return;const i=(r==null?void 0:r.camadasOverrides)||{},o=new Set((r==null?void 0:r.expandedLayerIds)||[]),n=new Set((r==null?void 0:r.collapsedLayerIds)||[]),l=o.size>0||n.size>0;for(let d=0;d<e.length;d++){const m=e[d],f=i[m.id];if(t==null||t.set(m.id,Fe(m)),f){const g=f.origem,v=y=>{var M;const I=(M=t==null?void 0:t.get(m.id))==null?void 0:M[y];return g!==void 0&&g[y]!==I};typeof f.name=="string"&&f.name.trim()&&!v("name")&&(m.name=f.name),typeof f.visible=="boolean"&&!v("visible")&&(m.visible=f.visible),typeof f.locked=="boolean"&&!v("locked")&&(m.locked=f.locked),typeof f.opacity=="number"&&!v("opacity")&&(m.opacity=f.opacity),typeof f.color=="string"&&!v("color")&&(m.color=f.color),f.parentId!==void 0&&!v("parentId")&&(m.parentId=f.parentId)}l?o.has(m.id)?a.add(m.id):n.has(m.id)?a.delete(m.id):a.add(m.id):a.add(m.id)}for(let d=0;d<e.length;d++){const m=e[d];m.parentId&&(m.parentId===m.id||Y(e,m.parentId,m.id))&&(m.parentId=((u=t==null?void 0:t.get(m.id))==null?void 0:u.parentId)??null)}const c=new Set(e.map(d=>d.id)),s=r==null?void 0:r.ordemOrigemIds;if(!(Array.isArray(s)&&(()=>{const d=new Set(s),m=f=>f.filter(g=>c.has(g)&&d.has(g)).join("|");return m(s)!==m(e.map(f=>f.id))})())&&Array.isArray(r==null?void 0:r.ordemCamadasIds)&&r.ordemCamadasIds.length>0){const d=new Map;r.ordemCamadasIds.forEach((m,f)=>d.set(m,f)),e.sort((m,f)=>{const g=d.has(m.id)?d.get(m.id):9999,v=d.has(f.id)?d.get(f.id):9999;return g-v})}}function fa(e){const{estadoAnterior:r,camadas:a,expandedLayers:t}=e;let i=(r==null?void 0:r.expandedLayerIds)||[],o=(r==null?void 0:r.collapsedLayerIds)||[],n=(r==null?void 0:r.ordemCamadasIds)||[],l=r==null?void 0:r.ordemOrigemIds;const c={...(r==null?void 0:r.camadasOverrides)||{}};a.length>0&&(i=[],o=[],n=a.map(s=>s.id),l=e.origensCamadas?[...e.origensCamadas.keys()]:n,a.forEach(s=>{var p,u;t.has(s.id)?i.push(s.id):o.push(s.id),c[s.id]={name:s.name,visible:s.visible!==!1,locked:!!s.locked,opacity:typeof s.opacity=="number"?s.opacity:1,color:s.color||"#00E08A",parentId:s.parentId!==void 0?s.parentId:null,origem:((p=e.origensCamadas)==null?void 0:p.get(s.id))??((u=c[s.id])==null?void 0:u.origem)}}));for(const s of e.camadasRemovidas??[])delete c[s];return{versao:1,expandedLayerIds:i,collapsedLayerIds:o,camadaAtivaId:e.camadaAtivaId,painelColapsado:e.painelColapsado,ordemCamadasIds:n,ordemOrigemIds:l,mapaBaseAtivo:e.mapaBaseAtivo,densidade:e.densidade,altura:e.altura,camadasOverrides:c,ultimaAtualizacao:Date.now()}}const ir=`:host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-respiro: 8px;--camada-barra-altura: 28px;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-degrade-interno, var(--ui-camadas-fundo, var(--ui-fundo-superficie, var(--ui-cor-superficie, #141417))));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-camadas-toggle-fundo, var(--ui-fundo-superficie, var(--ui-cor-superficie, #141417)));border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);max-height:var(--camada-barra-altura);display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 var(--camada-respiro) var(--camada-respiro);display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro));padding:0 var(--camada-respiro);gap:8px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:24px;height:24px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);border:none;color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:140px}.ui-search-empty{padding:14px 10px;text-align:center;font-size:11px;color:var(--ui-cor-texto-secundario, #888899);overflow-wrap:anywhere}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 18%,var(--ui-cor-fundo-elevado, #18181d))!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--layer-active-color, var(--ui-cor-primaria, #00E08A)) 10%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{border-left:3px solid transparent;padding-left:13px;background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 20%,var(--ui-cor-fundo, #101014))!important;outline:1px solid color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 55%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent)}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:8px;margin-right:1px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-colorbar-editavel{position:relative;width:5px;height:18px;cursor:pointer}.ui-col-colorbar-editavel:before{content:"";position:absolute;top:-3px;right:-4px;bottom:-3px;left:-4px}.ui-col-colorbar-editavel:hover,.ui-col-colorbar-editavel:focus-visible{filter:brightness(1.3);outline:none}.ui-col-chevron,.ui-col-branch{margin-left:calc(var(--layer-depth, 0) * 12px)}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto-secundario, #888899);font-weight:400;padding:0 2px;flex-shrink:0}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff));background:color-mix(in srgb,var(--layer-active-color, var(--ui-cor-texto-info, #33b5ff)) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-previa-dot{width:6px;height:6px;margin-left:4px;border-radius:50%;flex-shrink:0;background:var(--ui-cor-texto-alerta, #ffb86c);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 25%,transparent)}.ui-tree-footer{height:var(--camada-barra-altura);min-height:var(--camada-barra-altura);background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 var(--camada-respiro);gap:6px;box-sizing:border-box;overflow:hidden;position:relative;flex-shrink:0;margin:0 calc(-1 * var(--camada-respiro))}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{display:inline-flex;align-items:center;color:var(--ui-cor-texto-secundario, #888899);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 8px;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 14%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000)}.ui-footer-right{display:flex;align-items:center;gap:4px;flex:1 1 auto;min-width:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0}.ui-footer-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;--_chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888899' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background:var(--_chevron) right 6px center / 10px no-repeat,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto, #e1e1e6);border-radius:var(--ui-raio-sm, 4px);font:inherit;font-size:10px;font-weight:500;height:22px;padding:0 22px 0 8px;cursor:pointer;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){background:var(--_chevron) right 6px center / 10px no-repeat,var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-select:focus-visible{outline:1px solid var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);border:none;color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #ffffff)}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-section{container-type:inline-size}@container (min-width: 260px){.ui-basemap-grid{grid-template-columns:repeat(3,1fr)}}@container (min-width: 340px){.ui-basemap-grid{grid-template-columns:repeat(4,1fr)}}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-layer-row.herdado-oculto,.ui-feat-row.herdado-oculto{opacity:.52}.ui-layer-row.herdado-travado .ui-col-lock.ui-lock-open{color:var(--ui-cor-texto-secundario, #888899);opacity:.7}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.ui-truncate-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px;margin:4px 8px 6px;background:color-mix(in srgb,var(--ui-cor-superficie-elevada, #1c1c21) 70%,transparent);border:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 4px);font-size:10px;color:var(--ui-cor-texto-secundario, #9ca3af)}.ui-truncate-notice span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-truncate-more-btn{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--ui-cor-superficie, #27272a);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 4px);color:var(--ui-cor-primaria, #00E08A);font-size:10px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--camada-transicao)}.ui-truncate-more-btn:hover{background:var(--ui-cor-superficie-hover, #3f3f46);border-color:var(--ui-cor-primaria, #00E08A)}.ui-truncate-more-btn:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}:host(.degrade),:host(.gradiente),:host([data-degrade]:not([data-degrade="false"])),.ui-camadas-container[data-degrade]:not([data-degrade=false]){--ui-camadas-fundo: var(--ui-gradiente-superficie);--ui-camadas-toggle-fundo: var(--ui-gradiente-superficie)}`;function or(e,r){r.querySelectorAll("[data-layer-row]").forEach(t=>{const o=t.getAttribute("data-layer-row")===e.camadaAtivaId;t.classList.toggle("active-drawing-layer",o),Ge.alternarPart(t,"camada-ativa",o),o?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")})}function nr(e,r){r.querySelectorAll(".ui-feat-row").forEach(a=>{const t=a.getAttribute("data-feat-row"),i=t?e.selectedFeatureIds.has(t):!1;a.classList.toggle("selected-row",i),Ge.alternarPart(a,"feicao-selecionada",i),a.setAttribute("aria-selected",String(i));const o=a.querySelector(".ui-target-circle");o&&o.classList.toggle("selected",i)}),r.querySelectorAll(".ui-layer-group").forEach(a=>{const t=a.getAttribute("data-layer-id"),i=W(e.camadas,e.feicoes,t??"");ma(a.querySelector(".ui-layer-row .ui-target-circle"),i,e.selectedFeatureIds)}),ga(e,r)}function ma(e,r,a){if(!e)return;if(r.length===0){e.classList.remove("selected","partial");return}const t=r.every(o=>a.has(o.id)),i=!t&&r.some(o=>a.has(o.id));e.classList.toggle("selected",t),e.classList.toggle("partial",i)}function ga(e,r){const a=e.feicoes.filter(u=>e.selectedFeatureIds.has(u.id)),t=a.length>0,i=r.getElementById("footer-count"),o=r.getElementById("footer-label");if(i&&(i.textContent=String(t?a.length:e.camadas.length)),o){const u=Se(e.camadas.length,a.length);o.innerHTML=u.icone,o.title=u.texto,o.setAttribute("aria-label",u.texto)}const n=r.querySelector(".ui-tree-footer");n&&(n.classList.toggle("tem-selecao",t),n.classList.toggle("sem-selecao",!t));const l=r.querySelector(".ui-footer-actions-gerais");l&&(l.style.display=t?"none":"flex");const c=r.querySelector(".ui-footer-bulk-actions");c&&(c.style.display=t?"flex":"none"),["btn-footer-del"].forEach(u=>{const d=r.getElementById(u);d&&(d.disabled=!t,d.classList.toggle("disabled",!t))});const s=r.querySelector(".ui-footer-move-wrapper");s&&s.classList.toggle("disabled",!t);const p=r.getElementById("select-footer-move");p&&(p.disabled=!t)}function Ne(e,r){const a=ue(e.camadas),t=new Map(e.camadas.map(o=>[o.id,o]));r.querySelectorAll(".ui-layer-row").forEach(o=>{const n=a.get(o.getAttribute("data-layer-row")||"");o.classList.toggle("herdado-oculto",(n==null?void 0:n.ocultaPorAncestral)===!0),o.classList.toggle("herdado-travado",(n==null?void 0:n.travadaPorAncestral)===!0)});const i=new Map(e.feicoes.map(o=>[o.id,o]));r.querySelectorAll(".ui-feat-row").forEach(o=>{const n=o.getAttribute("data-feat-layer")||"",l=t.get(n),c=a.get(n);o.classList.toggle("herdado-oculto",(l==null?void 0:l.visible)===!1||(c==null?void 0:c.ocultaPorAncestral)===!0);const s=o.querySelector("[data-feat-lock]"),p=i.get(o.getAttribute("data-feat-row")||"");if(!s||!p)return;const u=(l==null?void 0:l.locked)===!0||(c==null?void 0:c.travadaPorAncestral)===!0,d=p.locked===!0||u;s.innerHTML=d?b.cadeadoTrancado:b.cadeadoAberto,s.classList.toggle("ui-lock-open",!d),u?s.setAttribute("data-locked-by-layer","true"):s.removeAttribute("data-locked-by-layer"),q(s,u?"Bloqueada pela camada":d?"Desbloquear Feição":"Bloquear Feição")})}function sr(e,r){r.querySelectorAll("[data-layer-row]").forEach(i=>{i.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], [data-layer-color], input, button"))return;const l=i.getAttribute("data-layer-row");l&&e.definirCamadaAtiva(l,!0)})}),r.querySelectorAll("[data-layer-expand]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-expand");if(!n)return;e.expandedLayers.has(n)?e.expandedLayers.delete(n):e.expandedLayers.add(n);const l=i.closest(".ui-layer-group"),c=i.querySelector(".ui-chevron-icon"),s=e.expandedLayers.has(n);if(c&&c.classList.toggle("open",s),l){l.setAttribute("aria-expanded",String(s));const p=l.querySelector(".ui-children-container");p&&(p.style.display=s?"block":"none")}q(i,s?"Recolher grupo":"Expandir grupo"),lr(e,r),e.salvarLembrancaEstado()})}),r.querySelectorAll("[data-layer-eye]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-eye"),l=e.camadas.find(c=>c.id===n);if(l){l.visible=l.visible===!1;const c=l.visible!==!1;i.innerHTML=c?b.olhoAberto:b.olhoFechado,q(i,c?"Ocultar Camada":"Exibir Camada");const s=i.closest(".ui-layer-row");s&&s.classList.toggle("hidden-layer",!c),cr(e,r),Ne(e,r),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-visibilidade",{camadaId:l.id,visivel:c})}})}),r.querySelectorAll("[data-layer-lock]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-lock"),l=e.camadas.find(c=>c.id===n);l&&(l.locked=!l.locked,i.innerHTML=l.locked?b.cadeadoTrancado:b.cadeadoAberto,i.classList.toggle("ui-lock-open",!l.locked),q(i,l.locked?"Desbloquear Camada":"Bloquear Camada"),Ne(e,r),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-bloqueio",{camadaId:l.id,bloqueado:l.locked}))})}),r.querySelectorAll("[data-layer-fit]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-fit");n&&e.dispararEvento("ui-camada-enquadrar",{camadaId:n})})}),r.querySelectorAll("[data-layer-settings]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-layer-settings");e.activeSettingsLayerId=e.activeSettingsLayerId===n?null:n,e.solicitarRenderizacao()})}),r.querySelectorAll("[data-layer-settings-close]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation(),e.activeSettingsLayerId=null,e.solicitarRenderizacao()})});const a=(i,o,n)=>{var m;const l=e.camadas.find(f=>f.id===i);if(!l)return;const c=H(o,l.color||"#00E08A");l.color=c;const s=r.getElementById(`sample-color-${i}`);s&&(s.style.backgroundColor=c);const p=r.getElementById(`hex-color-${i}`);p&&(p.textContent=c.toUpperCase());const u=r.getElementById(`settings-drawer-${i}`);u&&u.style.setProperty("--drawer-cor-camada",c);const d=T(r,"data-layer-row",i);if(d){(m=d.closest(".ui-layer-group"))==null||m.style.setProperty("--layer-active-color",c);const f=d.querySelector(".ui-col-colorbar");f&&(f.style.backgroundColor=c)}n?e.salvarLembrancaEstado():e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-cor",{camadaId:l.id,cor:c})};r.querySelectorAll("[data-layer-color-picker]").forEach(i=>{const o=i,n=l=>c=>{const s=o.getAttribute("data-layer-color-picker");if(!s)return;const p=c.target.value;a(s,p,l)};o.addEventListener("input",n(!1)),o.addEventListener("change",n(!0))}),r.querySelectorAll("[data-layer-color]").forEach(i=>{const o=n=>{n.stopPropagation();const l=i.getAttribute("data-layer-color"),c=e.camadas.find(s=>s.id===l);!l||!c||ja.abrirSeletorCor({ancora:i,titulo:`Cor · ${c.name||"Camada"}`,modo:"simples",cor:H(c.color,"#00E08A"),mostrarOpacidade:!1,aoAlterar:s=>a(l,s.cor,!1),aoConfirmar:s=>a(l,s.cor,!0),aoCancelar:s=>a(l,s.cor,!0)})};i.addEventListener("click",o),i.addEventListener("keydown",n=>{const l=n.key;(l==="Enter"||l===" ")&&(n.preventDefault(),o(n))})});const t=(i,o)=>{const n=e.camadas.find(s=>s.id===i);if(!n)return;n.opacity=o;const l=r.getElementById(`badge-op-${i}`);l&&(l.textContent=`${Math.round(o*100)}%`);const c=T(r,"data-layer-opacity-slider",i);c&&parseFloat(c.value)!==o&&(c.value=String(o)),e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-opacidade",{camadaId:n.id,opacidade:o})};r.querySelectorAll("[data-layer-opacity-slider]").forEach(i=>{i.addEventListener("input",o=>{const n=i.getAttribute("data-layer-opacity-slider");if(!n)return;const l=parseFloat(o.target.value);Number.isFinite(l)&&t(n,Math.min(1,Math.max(0,l)))})}),r.querySelectorAll("[data-delete-layer]").forEach(i=>{let o=null;i.addEventListener("click",n=>{n.stopPropagation();const l=i.getAttribute("data-delete-layer");if(!l)return;if(i.classList.contains("confirming")){o&&clearTimeout(o),e.dispararEvento("ui-camada-excluida",{camadaId:l});const s=e.selectedFeatureIds.size;e.camadas.forEach(p=>{p.parentId===l&&(p.parentId=null)}),e.removerCamada(l),e.selectedFeatureIds.size!==s&&e.notificarMudancaSelecao()}else{i.classList.add("confirming");const s=i.querySelector(".ui-btn-label");s&&(s.textContent="Confirmar Exclusão?"),o=setTimeout(()=>{i.classList.remove("confirming"),s&&(s.textContent="Excluir")},3500)}})}),r.querySelectorAll("[data-layer-parent-select]").forEach(i=>{i.addEventListener("change",o=>{const n=o.target,l=n.getAttribute("data-layer-parent-select"),c=n.value||null,s=e.camadas.find(p=>p.id===l);if(s){if(c&&(c===s.id||Y(e.camadas,c,s.id))){n.value=s.parentId||"";return}const p=s.parentId??null;s.parentId=c,c&&e.expandedLayers.add(c),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-mover-hierarquia",{camadaId:s.id,novoParentId:c,parentAnteriorId:p,camada:s}),e.solicitarRenderizacao()}})}),r.querySelectorAll("[data-add-sublayer]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=i.getAttribute("data-add-sublayer");e.dispararEvento("ui-camada-adicionar",{parentId:n})})}),va(e,r),r.querySelectorAll("[data-layer-target]").forEach(i=>{i.addEventListener("click",o=>{o.stopPropagation();const n=o,l=i.getAttribute("data-layer-target");if(!l)return;const c=W(e.camadas,e.feicoes,l),s=V(c,e.searchQuery);if(s.length===0)return;s.every(u=>e.selectedFeatureIds.has(u.id))?s.forEach(u=>e.selectedFeatureIds.delete(u.id)):(!n.ctrlKey&&!n.metaKey&&e.selectedFeatureIds.clear(),s.forEach(u=>e.selectedFeatureIds.add(u.id))),e.lastClickedFeatureId=s[s.length-1].id,e.sincronizarSelecaoDOM(),e.notificarMudancaSelecao()})})}function va(e,r){r.querySelectorAll("[data-layer-show-more]").forEach(a=>{a.addEventListener("click",t=>{t.stopPropagation();const i=a.getAttribute("data-layer-show-more");i&&e.incrementarLimiteFeicoes(i)})})}function lr(e,r){const a=r.getElementById("btn-toggle-all-expand");if(!a)return;const t=e.camadas.length>0&&e.camadas.every(o=>e.expandedLayers.has(o.id)),i=a.querySelector(".ui-chevron-icon");i&&i.classList.toggle("open",t),q(a,t?"Recolher Todos os Grupos":"Expandir Todos os Grupos")}function cr(e,r){const a=r.getElementById("btn-toggle-all-vis");if(!a)return;const t=e.camadas.every(i=>i.visible!==!1);a.innerHTML=t?b.olhoAberto:b.olhoFechado,q(a,t?"Ocultar Todas as Camadas":"Exibir Todas as Camadas")}function dr(e,r){const a=r.getElementById("select-footer-move");a&&a.addEventListener("change",n=>{const l=n.target.value;if(!l)return;const c=Le(e.camadas);if(c.has(l)){a.value="";return}const s=e.feicoes.filter(u=>e.selectedFeatureIds.has(u.id)&&!c.has(u.layerId));if(s.length===0)return;const p=new Map(s.map(u=>[u.id,u.layerId]));s.forEach(u=>u.layerId=l),s.forEach(u=>{p.get(u.id)!==l&&e.dispararEvento("ui-feicao-movida",{feicaoId:u.id,camadaOrigemId:p.get(u.id),camadaDestinoId:l,feicao:u})}),e.dispararEvento("ui-acao-massa",{acao:"mover",feicoesIds:s.map(u=>u.id),feicoes:s,valor:l}),e.solicitarRenderizacao()});const t=r.getElementById("btn-footer-new-layer");t&&t.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const i=r.getElementById("btn-footer-new-group");i&&i.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const o=r.getElementById("btn-footer-del");if(o){let n=null;const l="Excluir selecionados";o.addEventListener("click",()=>{const c=Array.from(e.selectedFeatureIds);if(c.length===0)return;if(!o.classList.contains("confirming")){o.classList.add("confirming"),q(o,`Clique novamente para excluir ${c.length} selecionado(s)`),n=setTimeout(()=>{o.classList.remove("confirming"),q(o,l)},3500);return}n&&clearTimeout(n);const s=e.feicoes.filter(p=>e.selectedFeatureIds.has(p.id));e.feicoes=e.feicoes.filter(p=>!e.selectedFeatureIds.has(p.id)),e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.dispararEvento("ui-acao-massa",{acao:"excluir",feicoesIds:c,feicoes:s}),e.notificarMudancaSelecao(),e.solicitarRenderizacao()})}}const ur=[{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"}],Ae={olho:"[data-layer-eye], [data-feat-eye]",cadeado:"[data-layer-lock], [data-feat-lock]",selecao:"[data-layer-target], [data-feat-target]"},pr=3;function fr(e){return ur.find(r=>e.hasAttribute(r.atributo))??null}function xe(e,r){const a=fr(r);if(!a)return null;const t=r.getAttribute(a.atributo);if(!t)return null;if(a.tipo==="olho"){const o=a.entidade==="camada"?e.camadas.find(n=>n.id===t):e.feicoes.find(n=>n.id===t);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===t):e.feicoes.find(n=>n.id===t);return o?o.locked===!0:null}if(a.entidade==="feicao")return e.selectedFeatureIds.has(t);const i=V(W(e.camadas,e.feicoes,t),e.searchQuery);return i.length===0?null:i.every(o=>e.selectedFeatureIds.has(o.id))}function He(e,r,a=!1){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,ctrlKey:r,shiftKey:a}))}let P=null;function mr(e){(P==null?void 0:P.host)===e&&P.cancelar()}function ha(e,r,a=r){Object.keys(Ae).forEach(t=>{a.querySelectorAll(Ae[t]).forEach(i=>{i.addEventListener("pointerdown",o=>gr(e,r,t,i,o))})})}function gr(e,r,a,t,i){if(i.pointerType==="mouse"&&i.button!==0||e.editingLayerId||e.editingFeatureId||xe(e,t)===null)return;P==null||P.cancelar();const o=Ae[a],n=i.ctrlKey||i.metaKey,l=i.shiftKey;let c=!1,s=!1,p=i.clientY;const u=new Set([t]),d=w=>{w.preventDefault(),w.stopImmediatePropagation()},m=w=>{w.stopPropagation(),w.preventDefault()},f=w=>w.preventDefault(),g=w=>{u.has(w)||(u.add(w),xe(e,w)!==s&&He(w,a==="selecao"))},v=()=>{c=!0,He(t,n,l),s=xe(e,t)===!0,r.addEventListener("selectstart",f),document.body.style.userSelect="none"},y=w=>{var k,E;if(!c){if(Math.hypot(w.clientX-i.clientX,w.clientY-i.clientY)<pr)return;const x=(k=r.elementFromPoint(w.clientX,w.clientY))==null?void 0:k.closest(o);if(!x||x===t)return;v()}w.preventDefault();const L=Math.min(p,w.clientY),h=Math.max(p,w.clientY);r.querySelectorAll(o).forEach(x=>{const B=x.getBoundingClientRect();if(B.height===0)return;const D=B.top+B.height/2;D>=L&&D<=h&&g(x)});const $=(E=r.elementFromPoint(w.clientX,w.clientY))==null?void 0:E.closest(o);$&&g($),p=w.clientY},I=(w=!1)=>{(P==null?void 0:P.cancelar)===S&&(P=null),window.removeEventListener("pointermove",y),window.removeEventListener("pointerup",M),window.removeEventListener("pointercancel",M),window.removeEventListener("dragstart",d,!0),r.removeEventListener("selectstart",f),c&&(document.body.style.userSelect="",w||(window.addEventListener("click",m,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",m,!0),0)))},M=()=>I(),S=()=>I(!0);P={host:e,cancelar:S},window.addEventListener("dragstart",d,!0),window.addEventListener("pointermove",y,{passive:!1}),window.addEventListener("pointerup",M),window.addEventListener("pointercancel",M)}function vr(e,r){const a=r.getElementById("btn-toggle-all-vis");a&&a.addEventListener("click",()=>e.alternarVisibilidadeTodas(!0));const t=r.getElementById("btn-toggle-all-expand");t&&t.addEventListener("click",o=>{o.stopPropagation(),e.camadas.length>0&&e.camadas.every(l=>e.expandedLayers.has(l.id))?e.colapsarTodas():e.expandirTodas()});const i=r.getElementById("btn-colapsar");i&&i.addEventListener("click",()=>e.colapsar(!0)),hr(e,r)}function hr(e,r){const a=r.getElementById("input-layer-search"),t=r.getElementById("btn-clear-layer-search"),i=()=>{var o;e.searchQuery="",e.solicitarRenderizacao(),(o=r.getElementById("input-layer-search"))==null||o.focus()};if(a){const o=Ve(()=>e.solicitarRenderizacao(),75);a.addEventListener("input",n=>{e.searchQuery=n.target.value,o()}),a.addEventListener("keydown",n=>{n.key==="Escape"&&e.searchQuery&&(n.preventDefault(),i())})}t&&t.addEventListener("click",i)}function ba(e,r){r.querySelectorAll("[data-feat-select]").forEach(a=>{a.addEventListener("click",t=>{if(e.editingFeatureId)return;const i=t;if(i.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,i.ctrlKey||i.metaKey,i.shiftKey,!0)})}),r.querySelectorAll("[data-feat-target]").forEach(a=>{a.addEventListener("click",t=>{t.stopPropagation();const i=t,o=a.getAttribute("data-feat-target");o&&e.selecionarFeicao(o,i.ctrlKey||i.metaKey,i.shiftKey,!0)})}),r.querySelectorAll("[data-feat-eye]").forEach(a=>{a.addEventListener("click",t=>{t.stopPropagation();const i=a.getAttribute("data-feat-eye"),o=e.feicoes.find(n=>n.id===i);if(o){o.visible=o.visible===!1;const n=o.visible!==!1;a.innerHTML=n?b.olhoAberto:b.olhoFechado,q(a,n?"Ocultar Feição":"Exibir Feição");const l=a.closest(".ui-feat-row");l&&l.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",t=>{if(t.stopPropagation(),a.hasAttribute("data-locked-by-layer"))return;const i=a.getAttribute("data-feat-lock"),o=e.feicoes.find(n=>n.id===i);o&&(o.locked=!o.locked,a.innerHTML=o.locked?b.cadeadoTrancado:b.cadeadoAberto,a.classList.toggle("ui-lock-open",!o.locked),q(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",t=>{t.stopPropagation();const i=a.getAttribute("data-feat-fit");i&&e.dispararEvento("ui-feicao-enquadrar",{feicaoId:i})})})}function br(e,r){var a;r.querySelectorAll("[data-basemap-thumb]").forEach(t=>{t.addEventListener("error",()=>{const i=document.createElement("div");i.className="ui-basemap-preview-none",i.innerHTML=b.mapa,t.replaceWith(i)},{once:!0})}),(a=r.querySelector("[data-basemap-toggle]"))==null||a.addEventListener("click",()=>{e.alternarMapasBaseRecolhido(!0)}),r.querySelectorAll("[data-basemap-id]").forEach(t=>{t.addEventListener("click",()=>{const i=t.getAttribute("data-basemap-id");i&&e.selecionarMapaBase(i,!0)})})}function yr(e,r){vr(e,r),sr(e,r),ba(e,r),br(e,r),dr(e,r),ha(e,r)}function xr(e){if(!e.arvoreRenderizada)return{incremental:!1,motivo:"arvore-nao-renderizada"};if(e.buscaAtiva)return{incremental:!1,motivo:"busca-ativa"};if(e.editandoCamada||e.editandoFeicao)return{incremental:!1,motivo:"edicao-inline"};for(const r of e.camadasAfetadas){if(!r.existeNoModelo)return{incremental:!1,motivo:"camada-orfa"};if(!r.renderizadaNoDom)return{incremental:!1,motivo:"camada-fora-do-dom"};if(r.drawerAberto)return{incremental:!1,motivo:"drawer-aberto"}}return e.idsDuplicados?{incremental:!1,motivo:"ids-duplicados"}:{incremental:!0}}function ya(e,r=new Map){for(const a of e)r.set(a.camada.id,a),ya(a.subcamadas,r);return r}function wr(e){const r=new Map;for(let a=0;a<e.length;a++){const t=e[a];if(!t||!t.id)continue;const i=t.layerId||"",o=r.get(i);o?o.push(t):r.set(i,[t])}return r}function K(e,r){for(let a=e.firstElementChild;a;a=a.nextElementSibling)if(a.classList.contains(r))return a;return null}function Ar(e){const r=new Map,a=t=>{for(let i=t.firstElementChild;i&&i.classList.contains("ui-layer-group");i=i.nextElementSibling){const o=i.getAttribute("data-layer-id");o!==null&&r.set(o,i);const n=K(i,"ui-children-container");n&&a(n)}};return a(e),r}function Er(e){if(!e||e.length<2)return!1;const r=new Set;for(const a of e){if(r.has(a.id))return!0;r.add(a.id)}return!1}function Ir(e,r){var i;const a=new Map(r.map(o=>[o.id,o])),t=new Set;for(const o of e){let n=o;for(;n&&a.has(n)&&!t.has(n);)t.add(n),n=(i=a.get(n))==null?void 0:i.parentId}return t}function le(e){const r=document.createElement("template");return r.innerHTML=e,{modelo:r,elementos:Array.from(r.content.children)}}function ce(e){var a;const r=e.nextSibling;r&&r.nodeType===3&&!(r.textContent??"").trim()&&((a=r.parentNode)==null||a.removeChild(r)),e.remove()}function kr(e,r){if(!e||!r.contains(e))return null;const a=Array.from(e.attributes).find(t=>t.name.startsWith("data-")&&t.value!=="");return a?{nome:a.name,valor:a.value}:null}function Cr(e,r){const{host:a,shadow:t,mudanca:i}=e,o=e.grupos.get(r),n=e.nodos.get(r),l=o?K(o,"ui-children-container"):null;if(!o||!n||!l)return!1;const c=n.camada,s=e.porCamada.get(r)??[],p=a.expandedFeatureLimits.get(r)??pe,u=s.slice(0,p),d=new Set(u.map(h=>h.id)),m=new Map,f=new Map,g=t.activeElement;let v=null;for(let h=l.firstElementChild,$;h;h=$){$=h.nextElementSibling;const k=h.getAttribute("data-feat-row");if(k===null){!v&&!h.classList.contains("ui-layer-group")&&(v=h);continue}const E=i.idsAlterados.has(k)&&d.has(k)&&!m.has(k);!d.has(k)||m.has(k)||E?(E&&f.set(k,{tabindex:h.getAttribute("tabindex"),foco:kr(g,h)}),ce(h)):(m.set(k,h),v||(v=h))}const y=Je(c,n.depth,e.herdado.get(r)),I=u.filter(h=>!m.has(h.id));let M=[];if(I.length>0){const h=I.map(E=>ia(E,y,a.selectedFeatureIds.has(E.id),a.editingFeatureId===E.id)).join(""),{modelo:$,elementos:k}=le(h);if(k.length!==I.length)return!1;e.ligar($.content),M=k}let S=v,w=0;const L=new Map;for(const h of u){const $=m.get(h.id);if($)$===S?S=$.nextElementSibling:l.insertBefore($,S);else{const k=M[w++];l.insertBefore(k,S),L.set(h.id,k)}}return f.forEach((h,$)=>{const k=L.get($);if(!k||(h.tabindex!==null&&k.setAttribute("tabindex",h.tabindex),!h.foco))return;const E=k.getAttribute(h.foco.nome)===h.foco.valor?k:Array.from(k.querySelectorAll(`[${h.foco.nome}]`)).find(x=>x.getAttribute(h.foco.nome)===h.foco.valor);E==null||E.focus({preventScroll:!0})}),Lr(e,l,n,p,s.length)}function Lr(e,r,a,t,i){const o=z(a.camada.id),n=!!(a.camada.isGroup||a.subcamadas.length>0),l=i>t,c=a.subcamadas.length===0&&i===0,s=K(r,"ui-truncate-notice"),p=K(r,"ui-empty-row");if(p&&!c&&ce(p),s&&!l&&ce(s),l)if(s){const u=aa(t,i),d=s.querySelector("span"),m=s.querySelector(".ui-truncate-more-btn");if(!d||!m)return!1;d.textContent!==u.resumo&&(d.textContent=u.resumo),m.textContent!==u.botao&&(m.textContent=u.botao)}else{const{modelo:u,elementos:d}=le(ra(o,t,i));if(d.length!==1)return!1;e.ligar(u.content),r.appendChild(d[0])}if(c&&!p){const{elementos:u}=le(ta(n));if(u.length!==1)return!1;r.appendChild(u[0])}return!0}function Sr(e,r){const a=e.grupos.get(r),t=e.nodos.get(r),i=a?K(a,"ui-layer-row"):null,o=i==null?void 0:i.querySelector(".ui-col-name");if(!a||!t||!i||!o)return!1;const{host:n}=e,l=W(n.camadas,n.feicoes,r),c=(e.porCamada.get(r)??[]).length,s=t.subcamadas.length,p=!!(t.camada.isGroup||s>0),u=o.querySelector(".ui-count-chip");if(u)if(l.length===0&&p)ce(u);else{const d=String(l.length),m=Ze(l.length,c,s);u.textContent!==d&&(u.textContent=d),u.getAttribute("title")!==m&&u.setAttribute("title",m)}else{const d=ea(l.length,c,s,p);if(d){const{elementos:m}=le(d);if(m.length!==1)return!1;o.appendChild(m[0])}}return ma(i.querySelector(".ui-target-circle"),l,n.selectedFeatureIds),!0}function $r(e,r,a,t){const i=r.getElementById("ui-layer-tree-mount"),o=ya(X(e.camadas)),n=i?Ar(i):new Map,l=wr(e.feicoes),c=a.camadas==="todas"?Array.from(o.keys()):Array.from(a.camadas),s=c.map(d=>({existeNoModelo:o.has(d),renderizadaNoDom:n.has(d),drawerAberto:e.activeSettingsLayerId===d}));if(!xr({arvoreRenderizada:i!==null,buscaAtiva:(e.searchQuery||"").trim()!=="",editandoCamada:e.editingLayerId!==null,editandoFeicao:e.editingFeatureId!==null,idsDuplicados:c.some(d=>Er(l.get(d))),camadasAfetadas:s}).incremental)return!1;const u={host:e,shadow:r,mudanca:a,porCamada:l,nodos:o,grupos:n,herdado:ue(e.camadas),ligar:t};for(const d of c)if(!Cr(u,d))return!1;for(const d of Ir(c,e.camadas))if(!Sr(u,d))return!1;return(a.selecaoAfetada||e.selectedFeatureIds.size>0)&&ga(e,r),!0}function Mr(e){if(!e.isConnected)return;const r=document.createElement("div");r.className="ui-basemap-preview-none",r.innerHTML=b.gradeCad,e.replaceWith(r)}function Fr(e,r,a,t){var g,v;const i=na({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,titulo:e.titulo,mostrarBusca:e.mostrarBusca,limitesPorCamada:e.expandedFeatureLimits,mostrarBotaoColapsar:e.flutuante&&e.getAttribute("colapsavel")!=="false"}),o=e.mostrarMapasBase?Ye(e.mapasBase,e.mapaBaseAtivo,e.mapasBaseRecolhido):"",n=e.mostrarRodape?Qe(e.camadas,e.feicoes,e.selectedFeatureIds):"",l=r.getElementById("ui-layer-tree-mount"),c=a.scrollTop,s=l?l.scrollTop:0,p=r.activeElement,u=p&&a.contains(p)?p.id:"",d=p&&!u&&a.contains(p)?Array.from(p.attributes).find(y=>y.name.startsWith("data-")&&y.value!==""):void 0,m=p&&"selectionStart"in p?p.selectionStart:null;a.innerHTML=`
300
300
  ${i}
301
301
  ${n}
302
302
  ${o}
303
- `,a.scrollTop=c;const f=r.getElementById("ui-layer-tree-mount");if(f&&(f.scrollTop=s),u){const y=r.getElementById(u);if(y&&(y.focus({preventScroll:!0}),m!==null&&typeof y.setSelectionRange=="function"))try{y.setSelectionRange(m,m)}catch{}}!u&&d&&((g=T(a,d.name,d.value))==null||g.focus({preventScroll:!0})),(v=r.querySelector("[data-layer-row], [data-feat-row]"))==null||v.setAttribute("tabindex","0"),a.querySelectorAll("img[data-basemap-thumb]").forEach(y=>{const k=()=>$r(y);y.addEventListener("error",k,{once:!0}),y.complete&&y.naturalWidth===0&&y.getAttribute("src")&&k()}),hr(e,r),t.bindAll()}function Fr(e,r,a,t){try{return Sr(e,r,t,i=>{ba(e,i),ga(e,i),va(e,r,i),a.bindLinhasFeicao(i)})}catch(i){return console.warn("[UI-Camadas] atualização incremental falhou; redesenhando o painel.",i),!1}}const zr='[role="button"][tabindex]',Q="[data-layer-row], [data-feat-row]",Br=["color","range","checkbox","radio","button"];function ya(e){return!e||!(e instanceof Element)||e instanceof HTMLInputElement&&Br.includes(e.type)?!1:ja.focoEmCampoDeTexto({composedPath:()=>[e]})}function Pr(e){return Array.from(e.querySelectorAll(Q)).filter(r=>{const a=r.closest(".ui-children-container");return!(a&&a.style.display==="none")&&!r.classList.contains("ui-search-hidden")})}function ie(e,r){r&&(e.querySelectorAll(Q).forEach(a=>a.setAttribute("tabindex","-1")),r.setAttribute("tabindex","0"),r.focus())}function qr(e,r){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,ctrlKey:r.ctrlKey||r.metaKey,shiftKey:r.shiftKey}))}function Dr(e,r,a){var i;if(ya(a.composedPath()[0]))return;const t=r.querySelector(".confirming");if(t){a.preventDefault(),t.classList.remove("confirming");return}if(e.activeSettingsLayerId){a.preventDefault();const o=e.activeSettingsLayerId;e.activeSettingsLayerId=null,e.solicitarRenderizacao(),(i=T(r,"data-layer-settings",o))==null||i.focus();return}e.selectedFeatureIds.size>0&&(a.preventDefault(),e.limparSelecao(!0))}function Tr(e,r,a,t){var l;const i=t.composedPath()[0];if(!(i instanceof HTMLElement)||ya(i))return;if((t.key==="Enter"||t.key===" ")&&i.matches(zr)){t.preventDefault(),i.click();return}if(!i.matches(Q))return;const o=Pr(r),n=o.indexOf(i);if(t.key==="F2"){t.preventDefault();const c=i.getAttribute("data-layer-row"),s=i.getAttribute("data-feat-row"),p=c?T(i,"data-layer-name-trigger",c):s?T(i,"data-feat-name-trigger",s):null;p&&p.dispatchEvent(new MouseEvent("dblclick",{bubbles:!0}));return}if((t.ctrlKey||t.metaKey)&&(t.key==="a"||t.key==="A")){t.preventDefault();const c=$e(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery,void 0,e.expandedFeatureLimits);c.length>0&&e.selecionarFeicoes(c,!0);return}if(t.key==="Delete"){const c=a.getElementById("btn-footer-del");if(c&&!c.hasAttribute("disabled")&&e.selectedFeatureIds.size>0){t.preventDefault(),c.click();return}}switch(t.key){case"ArrowDown":t.preventDefault(),ie(r,o[Math.min(o.length-1,n+1)]);break;case"ArrowUp":t.preventDefault(),ie(r,o[Math.max(0,n-1)]);break;case"Home":t.preventDefault(),ie(r,o[0]);break;case"End":t.preventDefault(),ie(r,o[o.length-1]);break;case"ArrowRight":case"ArrowLeft":{const c=i.getAttribute("data-layer-row");if(!c)return;const s=i.closest(".ui-layer-group"),p=(s==null?void 0:s.getAttribute("aria-expanded"))==="true";t.key==="ArrowRight"!==p&&(t.preventDefault(),(l=T(a,"data-layer-expand",c))==null||l.click());break}case"Enter":case" ":t.preventDefault(),qr(i,t);break}}function Rr(e,r,a,t,i){i.add(r,"keydown",o=>{o.key==="Escape"&&Dr(e,a,o)}),i.add(t,"keydown",o=>Tr(e,t,a,o)),i.add(t,"focusin",o=>{const n=o.composedPath()[0];n instanceof HTMLElement&&n.matches(Q)&&(t.querySelectorAll(Q).forEach(l=>l.setAttribute("tabindex","-1")),n.setAttribute("tabindex","0"))})}function Or(e,r,a,t,i){const o=$e(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery),n=!t&&!o.includes(r)&&e.feicoes.some(c=>c.id===r),l=ia(n?[...o,r]:o,e.selectedFeatureIds,e.lastClickedFeatureId,r,a,t);l&&(e.selectedFeatureIds=l.selecionados,e.lastClickedFeatureId=l.ultimoClicadoId,e.sincronizarSelecaoDOM(),i&&e.notificarMudancaSelecao())}function jr(e,r,a){const t=r||[];t.length===e.selectedFeatureIds.size&&t.every(n=>e.selectedFeatureIds.has(n))||(e.selectedFeatureIds.clear(),t.forEach(n=>e.selectedFeatureIds.add(n)),e.lastClickedFeatureId=t.length>0?t[t.length-1]:null,e.sincronizarSelecaoDOM(),a&&e.notificarMudancaSelecao())}function Nr(e,r){e.selectedFeatureIds.size!==0&&(e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.sincronizarSelecaoDOM(),r&&e.notificarMudancaSelecao())}function Hr(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 Gr{constructor(r){A(this,"origens",new Map);A(this,"removidas",new Set);A(this,"salvarComDebounce",_e(()=>this.salvar(),200));this.instantaneo=r}chaveAtual(){const r=this.instantaneo();return sa(r.storageKey,r.id)}carregar(){return ne(this.chaveAtual())}agendar(){this.salvarComDebounce()}salvar(){const r=this.instantaneo();if(!r.persistir||!r.conectado)return;const a=this.chaveAtual(),t=pa({estadoAnterior:ne(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(),ca(a,t)}limpar(){da(this.chaveAtual())}limparOrigens(){this.origens.clear()}registrarOrigem(r){this.origens.set(r.id,Me(r))}esquecerCamada(r){this.origens.delete(r),this.removidas.add(r)}reidratar(r,a,t){ua(r,a,t,this.origens)}}function Fe(e,r=null,a=new Set){const t=[];if(!Array.isArray(e))return t;for(const i of e){if(!i||typeof i!="object"||!i.id)continue;const o=String(i.id);if(a.has(o))continue;a.add(o);const n={...i,id:o};delete n.children,r&&n.parentId===void 0&&(n.parentId=r),t.push(n),Array.isArray(i.children)&&i.children.length>0&&t.push(...Fe(i.children,o,a))}return t}function xa(e){const r=e.lastClickedFeatureId;r&&!e.feicoes.some(a=>a.id===r)&&(e.lastClickedFeatureId=null)}function wa(e){if(!Array.isArray(e))return[];const r=new Set,a=[];for(const t of e){if(!t||typeof t!="object"||!t.id)continue;const i=String(t.id);r.has(i)||(r.add(i),a.push({...t,id:i}))}return a}function Ur(e,r,a){if(e.camadas=Array.isArray(r)?Fe(r):[],e.lembranca.limparOrigens(),e.persistir){const i=e.lembranca.carregar();e.lembranca.reidratar(e.camadas,i,e.expandedLayers),i!=null&&i.camadaAtivaId&&e.camadas.some(o=>o.id===i.camadaAtivaId)&&(e.camadaAtivaId=i.camadaAtivaId)}else e.camadas.forEach(i=>{e.lembranca.registrarOrigem(i),e.expandedLayers.has(i.id)||e.expandedLayers.add(i.id)});if(Array.isArray(a)){e.feicoes=wa(a);const i=new Set(e.camadas.map(n=>n.id)),o=e.feicoes.filter(n=>n.layerId&&!i.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}))),pe(e.selectedFeatureIds,e.feicoes),xa(e)}const t=e.getAttribute("camada-ativa");e.camadas.length>0&&(!t||!e.camadas.some(i=>i.id===t))&&(e.camadaAtivaId=e.camadas[0].id),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function _r(e,r){const a=new Map(e.map(i=>[i.id,i])),t=new Set;for(const i of r){const o=a.get(i.id);(!o||!Ka(o,i))&&t.add(i.id)}return t}function Vr(e,r){const a=e.feicoes;e.feicoes=wa(r);const t=e.selectedFeatureIds.size;pe(e.selectedFeatureIds,e.feicoes),xa(e),e.solicitarAtualizacaoFeicoes({camadas:"todas",idsAlterados:_r(a,e.feicoes),selecaoAfetada:e.selectedFeatureIds.size!==t})}function Yr(e,r){if(!r||!r.id)return;if(e.camadas.some(t=>t.id===r.id)){console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);return}const a=new Set(e.camadas.map(t=>t.id));for(const t of Fe([r])){if(a.has(t.id)){console.warn(`[UI-Camadas] adicionarCamada: subcamada '${t.id}' ignorada, o id já existe.`);continue}a.add(t.id),e.camadas.push(t),e.lembranca.registrarOrigem(t),e.expandedLayers.add(t.id),t.parentId&&e.expandedLayers.add(t.parentId)}e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function Kr(e,r){var a;e.camadas.forEach(t=>{t.parentId===r&&(t.parentId=null)}),e.camadas=e.camadas.filter(t=>t.id!==r),e.feicoes=e.feicoes.filter(t=>t.layerId!==r),e.lembranca.esquecerCamada(r),e.expandedLayers.delete(r),e.activeSettingsLayerId===r&&(e.activeSettingsLayerId=null),pe(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 Qr(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.solicitarAtualizacaoFeicoes({camadas:new Set([r.layerId||""]),idsAlterados:new Set,selecaoAfetada:e.selectedFeatureIds.has(r.id)})}}function Xr(e,r){if(!r||typeof r!="object"||!r.id)return;const a=e.feicoes.findIndex(t=>t.id===r.id);if(a!==-1){const t=e.feicoes[a].layerId||"";e.feicoes[a]={...e.feicoes[a],...r},e.solicitarAtualizacaoFeicoes({camadas:new Set([t,e.feicoes[a].layerId||""]),idsAlterados:new Set([r.id]),selecaoAfetada:!1})}}function Wr(e,r){const a=e.feicoes.find(i=>i.id===r);e.feicoes=e.feicoes.filter(i=>i.id!==r);const t=e.selectedFeatureIds.delete(r);e.lastClickedFeatureId===r&&(e.lastClickedFeatureId=null),e.solicitarAtualizacaoFeicoes({camadas:new Set(a?[a.layerId||""]:[]),idsAlterados:new Set,selecaoAfetada:t})}function Jr(e){function t(){return e.getMinAltura?e.getMinAltura():140}function i(){return e.getMaxAltura?e.getMaxAltura():1600}function o(s,p=!1){if(s==null||s===""){e.hostElement.style.removeProperty("height"),e.hostElement.style.removeProperty("--ui-camadas-altura"),p&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:null}}));return}const u=typeof s=="number"?s:parseFloat(String(s));if(isNaN(u))return;const d=Math.max(t(),Math.min(i(),Math.round(u)));e.hostElement.style.height=`${d}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${d}px`),p&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:d}}))}let n=null;function l(){if(!e.resizerElement)return;let s=!1,p=0,u=0;const d=f=>{if(f.button!==0)return;f.preventDefault(),f.stopPropagation(),s=!0,p=f.clientY,u=e.hostElement.getBoundingClientRect().height,e.resizerElement.classList.add("ui-camadas-resizer--ativo"),e.hostElement.classList.add("ui-camadas--redimensionando");try{e.resizerElement.setPointerCapture(f.pointerId)}catch{}const g=k=>{if(!s)return;k.preventDefault();const M=k.clientY-p,S=Math.max(t(),Math.min(i(),Math.round(u+M)));e.hostElement.style.height=`${S}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${S}px`),e.onRedimensionando&&e.onRedimensionando(S),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionando-altura",{bubbles:!0,composed:!0,detail:{altura:S}}))},v=()=>{var k;s=!1,n=null,window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",y),window.removeEventListener("pointercancel",y),(k=e.resizerElement)==null||k.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando")},y=k=>{if(!s)return;s=!1,e.resizerElement.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando");try{e.resizerElement.hasPointerCapture(k.pointerId)&&e.resizerElement.releasePointerCapture(k.pointerId)}catch{}window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",y),window.removeEventListener("pointercancel",y);const M=e.hostElement.getBoundingClientRect().height,S=Math.round(M);e.onAlturaAlterada&&e.onAlturaAlterada(S),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:S}}))};n=v,window.addEventListener("pointermove",g),window.addEventListener("pointerup",y),window.addEventListener("pointercancel",y)},m=f=>{f.preventDefault(),f.stopPropagation(),o(null,!0),e.onAlturaAlterada&&e.onAlturaAlterada(null)};e.listeners.add(e.resizerElement,"pointerdown",d),e.listeners.add(e.resizerElement,"dblclick",m)}function c(){n==null||n(),e.listeners.cleanup()}return{init:l,definirAltura:o,destruir:c}}const N=class N extends ce.SafeHTMLElement{constructor(){super();A(this,"shadow");A(this,"listeners",new Ra.ListenerBag);A(this,"dragDropManager");A(this,"resizerController");A(this,"alturaCustomizada",null);A(this,"conectado",!1);A(this,"profundidadeLote",0);A(this,"renderPendente",!1);A(this,"mudancaFeicoes",null);A(this,"lembranca",new Gr(()=>({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})));A(this,"camadas",[]);A(this,"feicoes",[]);A(this,"mapasBase",[...ke]);A(this,"expandedLayers",new Set);A(this,"expandedFeatureLimits",new Map);A(this,"selectedFeatureIds",new Set);A(this,"lastClickedFeatureId",null);A(this,"activeSettingsLayerId",null);A(this,"editingLayerId",null);A(this,"editingFeatureId",null);A(this,"searchQuery","");A(this,"corpoElement");A(this,"btnExpandirFlutuante");this.shadow=this.attachShadow({mode:"open"}),this.shadow.innerHTML=`
304
- <style>${tr}</style>
303
+ `,a.scrollTop=c;const f=r.getElementById("ui-layer-tree-mount");if(f&&(f.scrollTop=s),u){const y=r.getElementById(u);if(y&&(y.focus({preventScroll:!0}),m!==null&&typeof y.setSelectionRange=="function"))try{y.setSelectionRange(m,m)}catch{}}!u&&d&&((g=T(a,d.name,d.value))==null||g.focus({preventScroll:!0})),(v=r.querySelector("[data-layer-row], [data-feat-row]"))==null||v.setAttribute("tabindex","0"),a.querySelectorAll("img[data-basemap-thumb]").forEach(y=>{const I=()=>Mr(y);y.addEventListener("error",I,{once:!0}),y.complete&&y.naturalWidth===0&&y.getAttribute("src")&&I()}),yr(e,r),t.bindAll()}function zr(e,r,a,t){try{return $r(e,r,t,i=>{ba(e,i),va(e,i),ha(e,r,i),a.bindLinhasFeicao(i)})}catch(i){return console.warn("[UI-Camadas] atualização incremental falhou; redesenhando o painel.",i),!1}}const Br='[role="button"][tabindex]',Q="[data-layer-row], [data-feat-row]",Pr=["color","range","checkbox","radio","button"];function xa(e){return!e||!(e instanceof Element)||e instanceof HTMLInputElement&&Pr.includes(e.type)?!1:Na.focoEmCampoDeTexto({composedPath:()=>[e]})}function qr(e){return Array.from(e.querySelectorAll(Q)).filter(r=>{const a=r.closest(".ui-children-container");return!(a&&a.style.display==="none")&&!r.classList.contains("ui-search-hidden")})}function oe(e,r){r&&(e.querySelectorAll(Q).forEach(a=>a.setAttribute("tabindex","-1")),r.setAttribute("tabindex","0"),r.focus())}function Dr(e,r){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,ctrlKey:r.ctrlKey||r.metaKey,shiftKey:r.shiftKey}))}function Tr(e,r,a){var i;if(xa(a.composedPath()[0]))return;const t=r.querySelector(".confirming");if(t){a.preventDefault(),t.classList.remove("confirming");return}if(e.activeSettingsLayerId){a.preventDefault();const o=e.activeSettingsLayerId;e.activeSettingsLayerId=null,e.solicitarRenderizacao(),(i=T(r,"data-layer-settings",o))==null||i.focus();return}e.selectedFeatureIds.size>0&&(a.preventDefault(),e.limparSelecao(!0))}function Rr(e,r,a,t){var l;const i=t.composedPath()[0];if(!(i instanceof HTMLElement)||xa(i))return;if((t.key==="Enter"||t.key===" ")&&i.matches(Br)){t.preventDefault(),i.click();return}if(!i.matches(Q))return;const o=qr(r),n=o.indexOf(i);if(t.key==="F2"){t.preventDefault();const c=i.getAttribute("data-layer-row"),s=i.getAttribute("data-feat-row"),p=c?T(i,"data-layer-name-trigger",c):s?T(i,"data-feat-name-trigger",s):null;p&&p.dispatchEvent(new MouseEvent("dblclick",{bubbles:!0}));return}if((t.ctrlKey||t.metaKey)&&(t.key==="a"||t.key==="A")){t.preventDefault();const c=Me(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery,void 0,e.expandedFeatureLimits);c.length>0&&e.selecionarFeicoes(c,!0);return}if(t.key==="Delete"){const c=a.getElementById("btn-footer-del");if(c&&!c.hasAttribute("disabled")&&e.selectedFeatureIds.size>0){t.preventDefault(),c.click();return}}switch(t.key){case"ArrowDown":t.preventDefault(),oe(r,o[Math.min(o.length-1,n+1)]);break;case"ArrowUp":t.preventDefault(),oe(r,o[Math.max(0,n-1)]);break;case"Home":t.preventDefault(),oe(r,o[0]);break;case"End":t.preventDefault(),oe(r,o[o.length-1]);break;case"ArrowRight":case"ArrowLeft":{const c=i.getAttribute("data-layer-row");if(!c)return;const s=i.closest(".ui-layer-group"),p=(s==null?void 0:s.getAttribute("aria-expanded"))==="true";t.key==="ArrowRight"!==p&&(t.preventDefault(),(l=T(a,"data-layer-expand",c))==null||l.click());break}case"Enter":case" ":t.preventDefault(),Dr(i,t);break}}function Or(e,r,a,t,i){i.add(r,"keydown",o=>{o.key==="Escape"&&Tr(e,a,o)}),i.add(t,"keydown",o=>Rr(e,t,a,o)),i.add(t,"focusin",o=>{const n=o.composedPath()[0];n instanceof HTMLElement&&n.matches(Q)&&(t.querySelectorAll(Q).forEach(l=>l.setAttribute("tabindex","-1")),n.setAttribute("tabindex","0"))})}function jr(e,r,a,t,i){const o=Me(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery),n=!t&&!o.includes(r)&&e.feicoes.some(c=>c.id===r),l=oa(n?[...o,r]:o,e.selectedFeatureIds,e.lastClickedFeatureId,r,a,t);l&&(e.selectedFeatureIds=l.selecionados,e.lastClickedFeatureId=l.ultimoClicadoId,e.sincronizarSelecaoDOM(),i&&e.notificarMudancaSelecao())}function Nr(e,r,a){const t=r||[];t.length===e.selectedFeatureIds.size&&t.every(n=>e.selectedFeatureIds.has(n))||(e.selectedFeatureIds.clear(),t.forEach(n=>e.selectedFeatureIds.add(n)),e.lastClickedFeatureId=t.length>0?t[t.length-1]:null,e.sincronizarSelecaoDOM(),a&&e.notificarMudancaSelecao())}function Hr(e,r){e.selectedFeatureIds.size!==0&&(e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.sincronizarSelecaoDOM(),r&&e.notificarMudancaSelecao())}function Gr(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 _r{constructor(r){A(this,"origens",new Map);A(this,"removidas",new Set);A(this,"salvarComDebounce",Ve(()=>this.salvar(),200));this.instantaneo=r}chaveAtual(){const r=this.instantaneo();return la(r.storageKey,r.id)}carregar(){return se(this.chaveAtual())}agendar(){this.salvarComDebounce()}salvar(){const r=this.instantaneo();if(!r.persistir||!r.conectado)return;const a=this.chaveAtual(),t=fa({estadoAnterior:se(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(),da(a,t)}limpar(){ua(this.chaveAtual())}limparOrigens(){this.origens.clear()}registrarOrigem(r){this.origens.set(r.id,Fe(r))}esquecerCamada(r){this.origens.delete(r),this.removidas.add(r)}reidratar(r,a,t){pa(r,a,t,this.origens)}}function ze(e,r=null,a=new Set){const t=[];if(!Array.isArray(e))return t;for(const i of e){if(!i||typeof i!="object"||!i.id)continue;const o=String(i.id);if(a.has(o))continue;a.add(o);const n={...i,id:o};delete n.children,r&&n.parentId===void 0&&(n.parentId=r),t.push(n),Array.isArray(i.children)&&i.children.length>0&&t.push(...ze(i.children,o,a))}return t}function wa(e){const r=e.lastClickedFeatureId;r&&!e.feicoes.some(a=>a.id===r)&&(e.lastClickedFeatureId=null)}function Aa(e){if(!Array.isArray(e))return[];const r=new Set,a=[];for(const t of e){if(!t||typeof t!="object"||!t.id)continue;const i=String(t.id);r.has(i)||(r.add(i),a.push({...t,id:i}))}return a}function Ur(e,r,a){if(e.camadas=Array.isArray(r)?ze(r):[],e.lembranca.limparOrigens(),e.persistir){const i=e.lembranca.carregar();e.lembranca.reidratar(e.camadas,i,e.expandedLayers),i!=null&&i.camadaAtivaId&&e.camadas.some(o=>o.id===i.camadaAtivaId)&&(e.camadaAtivaId=i.camadaAtivaId)}else e.camadas.forEach(i=>{e.lembranca.registrarOrigem(i),e.expandedLayers.has(i.id)||e.expandedLayers.add(i.id)});if(Array.isArray(a)){e.feicoes=Aa(a);const i=new Set(e.camadas.map(n=>n.id)),o=e.feicoes.filter(n=>n.layerId&&!i.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}))),fe(e.selectedFeatureIds,e.feicoes),wa(e)}const t=e.getAttribute("camada-ativa");e.camadas.length>0&&(!t||!e.camadas.some(i=>i.id===t))&&(e.camadaAtivaId=e.camadas[0].id),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function Vr(e,r){const a=new Map(e.map(i=>[i.id,i])),t=new Set;for(const i of r){const o=a.get(i.id);(!o||!Qa(o,i))&&t.add(i.id)}return t}function Yr(e,r){const a=e.feicoes;e.feicoes=Aa(r);const t=e.selectedFeatureIds.size;fe(e.selectedFeatureIds,e.feicoes),wa(e),e.solicitarAtualizacaoFeicoes({camadas:"todas",idsAlterados:Vr(a,e.feicoes),selecaoAfetada:e.selectedFeatureIds.size!==t})}function Kr(e,r){if(!r||!r.id)return;if(e.camadas.some(t=>t.id===r.id)){console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);return}const a=new Set(e.camadas.map(t=>t.id));for(const t of ze([r])){if(a.has(t.id)){console.warn(`[UI-Camadas] adicionarCamada: subcamada '${t.id}' ignorada, o id já existe.`);continue}a.add(t.id),e.camadas.push(t),e.lembranca.registrarOrigem(t),e.expandedLayers.add(t.id),t.parentId&&e.expandedLayers.add(t.parentId)}e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function Qr(e,r){var a;e.camadas.forEach(t=>{t.parentId===r&&(t.parentId=null)}),e.camadas=e.camadas.filter(t=>t.id!==r),e.feicoes=e.feicoes.filter(t=>t.layerId!==r),e.lembranca.esquecerCamada(r),e.expandedLayers.delete(r),e.activeSettingsLayerId===r&&(e.activeSettingsLayerId=null),fe(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 Xr(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.solicitarAtualizacaoFeicoes({camadas:new Set([r.layerId||""]),idsAlterados:new Set,selecaoAfetada:e.selectedFeatureIds.has(r.id)})}}function Wr(e,r){if(!r||typeof r!="object"||!r.id)return;const a=e.feicoes.findIndex(t=>t.id===r.id);if(a!==-1){const t=e.feicoes[a].layerId||"";e.feicoes[a]={...e.feicoes[a],...r},e.solicitarAtualizacaoFeicoes({camadas:new Set([t,e.feicoes[a].layerId||""]),idsAlterados:new Set([r.id]),selecaoAfetada:!1})}}function Jr(e,r){const a=e.feicoes.find(i=>i.id===r);e.feicoes=e.feicoes.filter(i=>i.id!==r);const t=e.selectedFeatureIds.delete(r);e.lastClickedFeatureId===r&&(e.lastClickedFeatureId=null),e.solicitarAtualizacaoFeicoes({camadas:new Set(a?[a.layerId||""]:[]),idsAlterados:new Set,selecaoAfetada:t})}function Zr(e){function t(){return e.getMinAltura?e.getMinAltura():140}function i(){return e.getMaxAltura?e.getMaxAltura():1600}function o(s,p=!1){if(s==null||s===""){e.hostElement.style.removeProperty("height"),e.hostElement.style.removeProperty("--ui-camadas-altura"),p&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:null}}));return}const u=typeof s=="number"?s:parseFloat(String(s));if(isNaN(u))return;const d=Math.max(t(),Math.min(i(),Math.round(u)));e.hostElement.style.height=`${d}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${d}px`),p&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:d}}))}let n=null;function l(){if(!e.resizerElement)return;let s=!1,p=0,u=0;const d=f=>{if(f.button!==0)return;f.preventDefault(),f.stopPropagation(),s=!0,p=f.clientY,u=e.hostElement.getBoundingClientRect().height,e.resizerElement.classList.add("ui-camadas-resizer--ativo"),e.hostElement.classList.add("ui-camadas--redimensionando");try{e.resizerElement.setPointerCapture(f.pointerId)}catch{}const g=I=>{if(!s)return;I.preventDefault();const M=I.clientY-p,S=Math.max(t(),Math.min(i(),Math.round(u+M)));e.hostElement.style.height=`${S}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${S}px`),e.onRedimensionando&&e.onRedimensionando(S),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionando-altura",{bubbles:!0,composed:!0,detail:{altura:S}}))},v=()=>{var I;s=!1,n=null,window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",y),window.removeEventListener("pointercancel",y),(I=e.resizerElement)==null||I.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando")},y=I=>{if(!s)return;s=!1,e.resizerElement.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando");try{e.resizerElement.hasPointerCapture(I.pointerId)&&e.resizerElement.releasePointerCapture(I.pointerId)}catch{}window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",y),window.removeEventListener("pointercancel",y);const M=e.hostElement.getBoundingClientRect().height,S=Math.round(M);e.onAlturaAlterada&&e.onAlturaAlterada(S),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:S}}))};n=v,window.addEventListener("pointermove",g),window.addEventListener("pointerup",y),window.addEventListener("pointercancel",y)},m=f=>{f.preventDefault(),f.stopPropagation(),o(null,!0),e.onAlturaAlterada&&e.onAlturaAlterada(null)};e.listeners.add(e.resizerElement,"pointerdown",d),e.listeners.add(e.resizerElement,"dblclick",m)}function c(){n==null||n(),e.listeners.cleanup()}return{init:l,definirAltura:o,destruir:c}}const N=class N extends de.SafeHTMLElement{constructor(){super();A(this,"shadow");A(this,"listeners",new Oa.ListenerBag);A(this,"dragDropManager");A(this,"resizerController");A(this,"alturaCustomizada",null);A(this,"conectado",!1);A(this,"profundidadeLote",0);A(this,"renderPendente",!1);A(this,"mudancaFeicoes",null);A(this,"lembranca",new _r(()=>({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})));A(this,"camadas",[]);A(this,"feicoes",[]);A(this,"mapasBase",[...ke]);A(this,"expandedLayers",new Set);A(this,"expandedFeatureLimits",new Map);A(this,"selectedFeatureIds",new Set);A(this,"lastClickedFeatureId",null);A(this,"activeSettingsLayerId",null);A(this,"editingLayerId",null);A(this,"editingFeatureId",null);A(this,"searchQuery","");A(this,"corpoElement");A(this,"btnExpandirFlutuante");this.shadow=this.attachShadow({mode:"open"}),this.shadow.innerHTML=`
304
+ <style>${ir}</style>
305
305
  <div class="ui-camadas-container" id="panel-container" part="base" role="region" aria-label="Painel de Camadas">
306
306
  <div class="ui-camadas-corpo" id="painel-corpo" part="corpo"></div>
307
307
  <div class="ui-camadas-resizer-altura" id="resizer-altura" part="resizer" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
@@ -309,6 +309,6 @@
309
309
  </div>
310
310
  </div>
311
311
  <button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" part="botao-expandir" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
312
- ${h.camadas}
312
+ ${b.camadas}
313
313
  </button>
314
- `,this.corpoElement=this.shadow.getElementById("painel-corpo"),this.btnExpandirFlutuante=this.shadow.getElementById("btn-expandir-flutuante"),this.dragDropManager=new na(this,this.shadow);const a=this.shadow.getElementById("resizer-altura");this.resizerController=Jr({hostElement:this,resizerElement:a,listeners:this.listeners,getMinAltura:()=>{const t=this.getAttribute("min-altura");return t&&parseFloat(t)||140},getMaxAltura:()=>{const t=this.getAttribute("max-altura");return t&&parseFloat(t)||1600},onAlturaAlterada:t=>{this.alturaCustomizada=t,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=ne(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&&(N.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."),N.instanciasChavePadrao.add(this)),this.resizerController.init(),this.render(),this.conectarEventosGerais(),Rr(this,this,this.shadow,this.corpoElement,this.listeners),this.conectado=!0,this.camadas.length>0&&this.salvarLembrancaEstado()}disconnectedCallback(){var a,t;this.conectado=!1,N.instanciasChavePadrao.delete(this),(a=this.resizerController)==null||a.destruir(),(t=this.dragDropManager)==null||t.destruir(),fr(this),this.listeners.cleanup()}attributeChangedCallback(a,t,i){var o,n;t!==i&&(a==="colapsado"?this.salvarLembrancaEstado():a==="camada-ativa"?(this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado()):a==="densidade"?this.salvarLembrancaEstado():a==="mapa-base-ativo"?i&&this.marcarMapaBaseAtivoNoDOM(i):a==="titulo"||a==="mostrar-mapas-base"||a==="mapas-base-recolhido"||a==="mostrar-rodape"||a==="mostrar-busca"||a==="colapsavel"||a==="flutuante"?this.solicitarRenderizacao():a==="altura"?(o=this.resizerController)==null||o.definirAltura(i,!1):(a==="min-altura"||a==="max-altura")&&this.alturaCustomizada!==null&&((n=this.resizerController)==null||n.definirAltura(this.alturaCustomizada,!1)))}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,t=!1){!a||this.mapaBaseAtivo===a||(this.mapaBaseAtivo=a,this.marcarMapaBaseAtivoNoDOM(a),this.salvarLembrancaEstado(),t&&this.dispararEvento("ui-mapa-base-alterado",{mapaBaseId:a}))}marcarMapaBaseAtivoNoDOM(a){this.shadow.querySelectorAll("[data-basemap-id]").forEach(i=>{const o=i.getAttribute("data-basemap-id")===a;i.classList.toggle("active",o),i.setAttribute("aria-pressed",String(o))});const t=this.shadow.querySelector("[data-basemap-atual]");t&&(t.textContent=Ie(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,t=!0){var o;(o=this.resizerController)==null||o.definirAltura(a,!1);const i=a!==null?parseFloat(String(a)):null;this.alturaCustomizada=isNaN(i)?null:i,t&&this.salvarLembrancaEstado()}obterChaveStorageAtual(){return this.lembranca.chaveAtual()}agendarSalvarLembranca(){this.lembranca.agendar()}salvarLembrancaEstado(){this.lembranca.salvar()}limparLembranca(){this.expandedFeatureLimits.clear(),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,t){Ur(this,a,t)}definirFeicoes(a){Vr(this,a)}definirMapasBase(a){this.mapasBase=Array.isArray(a)?[...a]:[],this.solicitarRenderizacao()}definirCamadaAtiva(a,t=!1){!a||this.camadaAtivaId===a||(this.camadaAtivaId=a,this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado(),t&&this.dispararEvento("ui-camada-selecionada",{camadaId:a,camada:this.camadas.find(i=>i.id===a)}))}obterCamada(a){return this.camadas.find(t=>t.id===a)}obterCamadaAtiva(){return this.camadas.find(a=>a.id===this.camadaAtivaId)}obterFeicao(a){return this.feicoes.find(t=>t.id===a)}obterFeicoesSelecionadas(){return this.feicoes.filter(a=>this.selectedFeatureIds.has(a.id))}adicionarCamada(a){Yr(this,a)}removerCamada(a){Kr(this,a)}adicionarFeicao(a){Qr(this,a)}atualizarFeicao(a){Xr(this,a)}removerFeicao(a){Wr(this,a)}selecionarFeicao(a,t=!1,i=!1,o=!1){Or(this,a,t,i,o)}selecionarFeicoes(a,t=!1){jr(this,a,t)}limparSelecao(a=!1){Nr(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()}alternarExpansao(a){a&&(this.expandedLayers.has(a)?this.expandedLayers.delete(a):this.expandedLayers.add(a),this.salvarLembrancaEstado(),this.solicitarRenderizacao())}incrementarLimiteFeicoes(a){if(!a)return;const t=this.expandedFeatureLimits.get(a)??80;this.expandedFeatureLimits.set(a,t+80),this.solicitarRenderizacao()}alternarVisibilidadeTodas(a=!1){const i=!this.camadas.some(o=>o.visible!==!1);this.camadas.forEach(o=>{o.visible=i,a&&this.dispararEvento("ui-camada-visibilidade",{camadaId:o.id,visivel:i})}),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,t){this.colapsado!==a&&(this.colapsado=a,t&&this.dispararEvento("ui-colapso-alterado",{colapsado:a}))}solicitarRenderizacao(){if(this.profundidadeLote>0){this.renderPendente=!0;return}this.render()}solicitarAtualizacaoFeicoes(a){if(this.profundidadeLote>0){this.renderPendente=!0;return}this.mudancaFeicoes=a,this.render()}emLote(a){this.profundidadeLote++;try{a()}finally{this.profundidadeLote--,this.profundidadeLote===0&&this.renderPendente&&(this.renderPendente=!1,this.render())}}dispararEvento(a,t){this.dispatchEvent(new CustomEvent(a,{detail:t,bubbles:!0,composed:!0}))}render(){const a=this.mudancaFeicoes;this.mudancaFeicoes=null,this.corpoElement&&(a&&Fr(this,this.shadow,this.dragDropManager,a)||Mr(this,this.shadow,this.corpoElement,this.dragDropManager))}conectarEventosGerais(){this.listeners.add(this.btnExpandirFlutuante,"click",()=>this.expandir(!0))}sincronizarCamadaAtivaDOM(){ir(this,this.shadow)}sincronizarSelecaoDOM(){or(this,this.shadow)}notificarMudancaSelecao(){Hr(this)}};A(N,"instanciasChavePadrao",new Set);let G=N;class Aa extends G{}class Ea extends G{}ce.definirCustomElement("ui-camadas",G);ce.definirCustomElement("ui-painel-camadas",Aa);ce.definirCustomElement("ui-layer-panel",Ea);function Zr(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 et(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 at(e,r=""){var o,n,l,c;const a=((o=e.geometria)==null?void 0:o.tipo)||((n=e.geometria)==null?void 0:n.type)||e.tipo||e.type||"Polygon",t=((l=e.geometria)==null?void 0:l.coordenadas)||((c=e.geometria)==null?void 0:c.coordinates)||e.coordinates,i=e.cor||e.color;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:t,color:i,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=Ge.UIMapaBase;exports.UISeletorMapaBase=Ge.UISeletorMapaBase;exports.CamadasDragDropManager=na;exports.ICONES=h;exports.LIMITE_FEICOES_POR_CAMADA=ue;exports.MAPAS_BASE_PADRAO=ke;exports.UICamadas=G;exports.UILayerPanel=Ea;exports.UIPainelCamadas=Aa;exports.calcularAreaAnelSimples=oe;exports.calcularAreaPoligono=Ee;exports.calcularComprimentoLinha=Ae;exports.calcularDistanciaPontos=Ue;exports.calcularSelecaoFeicao=ia;exports.carregarEstadoPersistido=ne;exports.construirHierarquiaCamadas=X;exports.converterCamadaItemParaCanvasLayer=et;exports.converterCanvasLayerParaCamadaItem=Zr;exports.converterFeicaoParaItem=at;exports.escapeHtml=z;exports.filtrarCamadasPorBusca=Se;exports.filtrarFeicoesPorBusca=V;exports.formatarMetricaFeicoes=Na;exports.formatarOpcoesCamadasHierarquicas=Ye;exports.gerarChaveStorage=sa;exports.limparEstadoPersistido=da;exports.montarEstadoPersistido=pa;exports.nomeDoMapaBase=Ie;exports.normalizarEstadoPersistido=la;exports.obterIdsVisiveisFeicoes=$e;exports.reidratarCamadasComOverrides=ua;exports.removerSelecoesInvalidas=pe;exports.renderizarArvoreCamadas=oa;exports.renderizarGridMapasBase=Ve;exports.renderizarRodapeAcoes=Ke;exports.renderizarThumbGeometria=Xe;exports.rotuloRodape=Le;exports.salvarEstadoPersistido=ca;exports.snapshotCamada=Me;
314
+ `,this.corpoElement=this.shadow.getElementById("painel-corpo"),this.btnExpandirFlutuante=this.shadow.getElementById("btn-expandir-flutuante"),this.dragDropManager=new sa(this,this.shadow);const a=this.shadow.getElementById("resizer-altura");this.resizerController=Zr({hostElement:this,resizerElement:a,listeners:this.listeners,getMinAltura:()=>{const t=this.getAttribute("min-altura");return t&&parseFloat(t)||140},getMaxAltura:()=>{const t=this.getAttribute("max-altura");return t&&parseFloat(t)||1600},onAlturaAlterada:t=>{this.alturaCustomizada=t,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",...te.ATRIBUTOS_DEGRADE]}connectedCallback(){if(this.persistir){const a=se(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&&(N.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."),N.instanciasChavePadrao.add(this)),this.resizerController.init(),te.aplicarDegradeNoElemento(this,this.shadow.getElementById("panel-container")),this.render(),this.conectarEventosGerais(),Or(this,this,this.shadow,this.corpoElement,this.listeners),this.conectado=!0,this.camadas.length>0&&this.salvarLembrancaEstado()}disconnectedCallback(){var a,t;this.conectado=!1,N.instanciasChavePadrao.delete(this),(a=this.resizerController)==null||a.destruir(),(t=this.dragDropManager)==null||t.destruir(),mr(this),this.listeners.cleanup()}attributeChangedCallback(a,t,i){var o,n;if(t!==i){if(te.ehAtributoDegrade(a)){te.aplicarDegradeNoElemento(this,this.shadow.getElementById("panel-container"));return}a==="colapsado"?this.salvarLembrancaEstado():a==="camada-ativa"?(this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado()):a==="densidade"?this.salvarLembrancaEstado():a==="mapa-base-ativo"?i&&this.marcarMapaBaseAtivoNoDOM(i):a==="titulo"||a==="mostrar-mapas-base"||a==="mapas-base-recolhido"||a==="mostrar-rodape"||a==="mostrar-busca"||a==="colapsavel"||a==="flutuante"?this.solicitarRenderizacao():a==="altura"?(o=this.resizerController)==null||o.definirAltura(i,!1):(a==="min-altura"||a==="max-altura")&&this.alturaCustomizada!==null&&((n=this.resizerController)==null||n.definirAltura(this.alturaCustomizada,!1))}}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,t=!1){!a||this.mapaBaseAtivo===a||(this.mapaBaseAtivo=a,this.marcarMapaBaseAtivoNoDOM(a),this.salvarLembrancaEstado(),t&&this.dispararEvento("ui-mapa-base-alterado",{mapaBaseId:a}))}marcarMapaBaseAtivoNoDOM(a){this.shadow.querySelectorAll("[data-basemap-id]").forEach(i=>{const o=i.getAttribute("data-basemap-id")===a;i.classList.toggle("active",o),i.setAttribute("aria-pressed",String(o))});const t=this.shadow.querySelector("[data-basemap-atual]");t&&(t.textContent=Ce(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,t=!0){var o;(o=this.resizerController)==null||o.definirAltura(a,!1);const i=a!==null?parseFloat(String(a)):null;this.alturaCustomizada=isNaN(i)?null:i,t&&this.salvarLembrancaEstado()}obterChaveStorageAtual(){return this.lembranca.chaveAtual()}agendarSalvarLembranca(){this.lembranca.agendar()}salvarLembrancaEstado(){this.lembranca.salvar()}limparLembranca(){this.expandedFeatureLimits.clear(),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,t){Ur(this,a,t)}definirFeicoes(a){Yr(this,a)}definirMapasBase(a){this.mapasBase=Array.isArray(a)?[...a]:[],this.solicitarRenderizacao()}definirCamadaAtiva(a,t=!1){!a||this.camadaAtivaId===a||(this.camadaAtivaId=a,this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado(),t&&this.dispararEvento("ui-camada-selecionada",{camadaId:a,camada:this.camadas.find(i=>i.id===a)}))}obterCamada(a){return this.camadas.find(t=>t.id===a)}obterCamadaAtiva(){return this.camadas.find(a=>a.id===this.camadaAtivaId)}obterFeicao(a){return this.feicoes.find(t=>t.id===a)}obterFeicoesSelecionadas(){return this.feicoes.filter(a=>this.selectedFeatureIds.has(a.id))}adicionarCamada(a){Kr(this,a)}removerCamada(a){Qr(this,a)}adicionarFeicao(a){Xr(this,a)}atualizarFeicao(a){Wr(this,a)}removerFeicao(a){Jr(this,a)}selecionarFeicao(a,t=!1,i=!1,o=!1){jr(this,a,t,i,o)}selecionarFeicoes(a,t=!1){Nr(this,a,t)}limparSelecao(a=!1){Hr(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()}alternarExpansao(a){a&&(this.expandedLayers.has(a)?this.expandedLayers.delete(a):this.expandedLayers.add(a),this.salvarLembrancaEstado(),this.solicitarRenderizacao())}incrementarLimiteFeicoes(a){if(!a)return;const t=this.expandedFeatureLimits.get(a)??80;this.expandedFeatureLimits.set(a,t+80),this.solicitarRenderizacao()}alternarVisibilidadeTodas(a=!1){const i=!this.camadas.some(o=>o.visible!==!1);this.camadas.forEach(o=>{o.visible=i,a&&this.dispararEvento("ui-camada-visibilidade",{camadaId:o.id,visivel:i})}),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,t){this.colapsado!==a&&(this.colapsado=a,t&&this.dispararEvento("ui-colapso-alterado",{colapsado:a}))}solicitarRenderizacao(){if(this.profundidadeLote>0){this.renderPendente=!0;return}this.render()}solicitarAtualizacaoFeicoes(a){if(this.profundidadeLote>0){this.renderPendente=!0;return}this.mudancaFeicoes=a,this.render()}emLote(a){this.profundidadeLote++;try{a()}finally{this.profundidadeLote--,this.profundidadeLote===0&&this.renderPendente&&(this.renderPendente=!1,this.render())}}dispararEvento(a,t){this.dispatchEvent(new CustomEvent(a,{detail:t,bubbles:!0,composed:!0}))}render(){const a=this.mudancaFeicoes;this.mudancaFeicoes=null,this.corpoElement&&(a&&zr(this,this.shadow,this.dragDropManager,a)||Fr(this,this.shadow,this.corpoElement,this.dragDropManager))}conectarEventosGerais(){this.listeners.add(this.btnExpandirFlutuante,"click",()=>this.expandir(!0))}sincronizarCamadaAtivaDOM(){or(this,this.shadow)}sincronizarSelecaoDOM(){nr(this,this.shadow)}notificarMudancaSelecao(){Gr(this)}};A(N,"instanciasChavePadrao",new Set);let G=N;class Ea extends G{}class Ia extends G{}de.definirCustomElement("ui-camadas",G);de.definirCustomElement("ui-painel-camadas",Ea);de.definirCustomElement("ui-layer-panel",Ia);function et(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 at(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 rt(e,r=""){var o,n,l,c;const a=((o=e.geometria)==null?void 0:o.tipo)||((n=e.geometria)==null?void 0:n.type)||e.tipo||e.type||"Polygon",t=((l=e.geometria)==null?void 0:l.coordenadas)||((c=e.geometria)==null?void 0:c.coordinates)||e.coordinates,i=e.cor||e.color;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:t,color:i,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=_e.UIMapaBase;exports.UISeletorMapaBase=_e.UISeletorMapaBase;exports.CamadasDragDropManager=sa;exports.ICONES=b;exports.LIMITE_FEICOES_POR_CAMADA=pe;exports.MAPAS_BASE_PADRAO=ke;exports.UICamadas=G;exports.UILayerPanel=Ia;exports.UIPainelCamadas=Ea;exports.calcularAreaAnelSimples=ne;exports.calcularAreaPoligono=Ie;exports.calcularComprimentoLinha=Ee;exports.calcularDistanciaPontos=Ue;exports.calcularSelecaoFeicao=oa;exports.carregarEstadoPersistido=se;exports.construirHierarquiaCamadas=X;exports.converterCamadaItemParaCanvasLayer=at;exports.converterCanvasLayerParaCamadaItem=et;exports.converterFeicaoParaItem=rt;exports.escapeHtml=z;exports.filtrarCamadasPorBusca=$e;exports.filtrarFeicoesPorBusca=V;exports.formatarMetricaFeicoes=Ha;exports.formatarOpcoesCamadasHierarquicas=Ke;exports.gerarChaveStorage=la;exports.limparEstadoPersistido=ua;exports.montarEstadoPersistido=fa;exports.nomeDoMapaBase=Ce;exports.normalizarEstadoPersistido=ca;exports.obterIdsVisiveisFeicoes=Me;exports.reidratarCamadasComOverrides=pa;exports.removerSelecoesInvalidas=fe;exports.renderizarArvoreCamadas=na;exports.renderizarGridMapasBase=Ye;exports.renderizarRodapeAcoes=Qe;exports.renderizarThumbGeometria=We;exports.rotuloRodape=Se;exports.salvarEstadoPersistido=da;exports.snapshotCamada=Fe;