@thibezer/ui-components-kit 2.12.0 → 2.12.2

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.
package/dist/camadas.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var ga=Object.defineProperty;var va=(e,r,a)=>r in e?ga(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a;var A=(e,r,a)=>va(e,typeof r!="symbol"?r+"":r,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const ie=require("./ssr-safe-CiHD1adl.cjs"),ba=require("./listener-bag-D5omxZ9h.cjs"),ha=require("./ui-seletor-cor-C4U2eqxY.cjs"),xa=require("./alvo-digitavel-DbH0hYFf.cjs"),De=require("./parts-vQa2873h.cjs"),Pe=require("./seletor-mapa-base.cjs"),b={camadas:`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1
+ "use strict";var ma=Object.defineProperty;var ga=(e,r,a)=>r in e?ma(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a;var y=(e,r,a)=>ga(e,typeof r!="symbol"?r+"":r,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const ie=require("./ssr-safe-CiHD1adl.cjs"),va=require("./listener-bag-D5omxZ9h.cjs"),ba=require("./ui-seletor-cor-C4U2eqxY.cjs"),ha=require("./alvo-digitavel-DbH0hYFf.cjs"),De=require("./parts-vQa2873h.cjs"),Pe=require("./seletor-mapa-base.cjs"),v={camadas:`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
2
  <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
3
3
  <polyline points="2 17 12 22 22 17"></polyline>
4
4
  <polyline points="2 12 12 17 22 12"></polyline>
@@ -74,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 Te(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,i=e[1]*Math.PI/180,t=r[0]*Math.PI/180,o=r[1]*Math.PI/180,n=t-a,l=o-i,c=Math.min(1,Math.max(0,Math.sin(n/2)*Math.sin(n/2)+Math.cos(a)*Math.cos(t)*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 he(e){if(!Array.isArray(e)||e.length<2)return 0;if(Array.isArray(e[0])&&Array.isArray(e[0][0]))return e.reduce((a,i)=>a+he(i),0);let r=0;for(let a=0;a<e.length-1;a++){const i=e[a],t=e[a+1];Array.isArray(i)&&Array.isArray(t)&&i.length>=2&&t.length>=2&&(r+=Te([i[0],i[1]],[t[0],t[1]]))}return r}function re(e){if(!Array.isArray(e))return 0;const r=[];for(let f=0;f<e.length;f++){const p=e[f];Array.isArray(p)&&p.length>=2&&Number.isFinite(p[0])&&Number.isFinite(p[1])&&r.push([p[0],p[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 i=0;for(let f=0;f<a;f++)i+=r[f][0];const t=i/a*Math.PI/180,o=Math.cos(t),n=Math.PI/180,l=r[0][0],c=r[0][1];let s=0;for(let f=0;f<a;f++){const p=r[f],m=r[(f+1)%a],d=(p[1]-c)*n*_*o,g=(p[0]-l)*n*_,v=(m[1]-c)*n*_*o,x=(m[0]-l)*n*_;s+=d*x-v*g}const u=Math.abs(s)/2;return Number.isFinite(u)?u:0}function xe(e){if(!Array.isArray(e)||e.length===0)return 0;if(Array.isArray(e[0])&&typeof e[0][0]=="number")return re(e);if(Array.isArray(e[0])&&Array.isArray(e[0][0])){if(Array.isArray(e[0][0][0]))return e.reduce((i,t)=>i+xe(t),0);const r=re(e[0]);let a=0;for(let i=1;i<e.length;i++)a+=re(e[i]);return Math.max(0,r-a)}return 0}function ye(e){if(!e||e.length===0)return"";const r=e.filter(i=>i.type==="Polygon"||i.type==="MultiPolygon"||i.geometryType==="Polygon");if(r.length>0){const i=r.reduce((t,o)=>t+(xe(o.coordinates)||0),0);return i>=1e4?`${(i/1e4).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} ha`:`${Math.round(i).toLocaleString("pt-BR")} m²`}const a=e.filter(i=>i.type==="LineString"||i.type==="MultiLineString"||i.geometryType==="LineString");if(a.length>0){const i=a.reduce((t,o)=>t+(he(o.coordinates)||0),0);return i>=1e3?`${(i/1e3).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} km`:`${Math.round(i).toLocaleString("pt-BR")} m`}return""}function M(e){return e==null?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}const ya=/^(#(?:[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 N(e,r="#00E08A"){if(!e||typeof e!="string")return r;const a=e.trim();return ya.test(a)?a:r}function me(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function wa(e,r,a){const i=r/100,t=a/100,o=c=>(c+e/30)%12,n=i*Math.min(t,1-t),l=c=>t-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 Re(e,r="#000000"){if(!e||typeof e!="string")return r;const a=e.trim().toLowerCase(),i=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);if(i){const o=i[1];return o.length<=4?`#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}`:`#${o.slice(0,6)}`}const t=/^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);if(t){const o=t[2].split(/[\s,/]+/).filter(Boolean).map(n=>parseFloat(n));if(o.length>=3&&o.slice(0,3).every(n=>!isNaN(n))){const[n,l,c]=o,[s,u,f]=t[1]==="rgb"?[n,l,c]:wa(n,l,c);return`#${me(s)}${me(u)}${me(f)}`}}return r}function T(e,r,a){const i=e.querySelectorAll(`[${r}]`);for(let t=0;t<i.length;t++)if(i[t].getAttribute(r)===a)return i[t];return null}function Oe(e,r=80){let a=null;return(...i)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(...i),a=null},r)}}function P(e,r){e.setAttribute("title",r),e.setAttribute("aria-label",r)}const we=[{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 Ae(e,r){const a=Array.isArray(e)?e.find(i=>i.id===r):void 0;return a&&typeof a.nome=="string"?a.nome:""}function je(e=we,r="satelite",a=!1){if(!e||e.length===0)return"";const i=e.map(t=>{const o=r===t.id,n=M(t.id),l=M(t.nome),c=M(t.descricao||t.nome);let s="";return t.thumbnailUrl?s=`<img class="ui-basemap-preview" src="${M(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />`:s=`<div class="ui-basemap-preview-none">${b.gradeCad}</div>`,`
77
+ </svg>`},_=6378137;function Te(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,i=e[1]*Math.PI/180,t=r[0]*Math.PI/180,o=r[1]*Math.PI/180,n=t-a,l=o-i,c=Math.min(1,Math.max(0,Math.sin(n/2)*Math.sin(n/2)+Math.cos(a)*Math.cos(t)*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 he(e){if(!Array.isArray(e)||e.length<2)return 0;if(Array.isArray(e[0])&&Array.isArray(e[0][0]))return e.reduce((a,i)=>a+he(i),0);let r=0;for(let a=0;a<e.length-1;a++){const i=e[a],t=e[a+1];Array.isArray(i)&&Array.isArray(t)&&i.length>=2&&t.length>=2&&(r+=Te([i[0],i[1]],[t[0],t[1]]))}return r}function re(e){if(!Array.isArray(e))return 0;const r=[];for(let f=0;f<e.length;f++){const p=e[f];Array.isArray(p)&&p.length>=2&&Number.isFinite(p[0])&&Number.isFinite(p[1])&&r.push([p[0],p[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 i=0;for(let f=0;f<a;f++)i+=r[f][0];const t=i/a*Math.PI/180,o=Math.cos(t),n=Math.PI/180,l=r[0][0],c=r[0][1];let s=0;for(let f=0;f<a;f++){const p=r[f],m=r[(f+1)%a],u=(p[1]-c)*n*_*o,g=(p[0]-l)*n*_,b=(m[1]-c)*n*_*o,h=(m[0]-l)*n*_;s+=u*h-b*g}const d=Math.abs(s)/2;return Number.isFinite(d)?d:0}function xe(e){if(!Array.isArray(e)||e.length===0)return 0;if(Array.isArray(e[0])&&typeof e[0][0]=="number")return re(e);if(Array.isArray(e[0])&&Array.isArray(e[0][0])){if(Array.isArray(e[0][0][0]))return e.reduce((i,t)=>i+xe(t),0);const r=re(e[0]);let a=0;for(let i=1;i<e.length;i++)a+=re(e[i]);return Math.max(0,r-a)}return 0}function xa(e){if(!e||e.length===0)return"";const r=e.filter(i=>i.type==="Polygon"||i.type==="MultiPolygon"||i.geometryType==="Polygon");if(r.length>0){const i=r.reduce((t,o)=>t+(xe(o.coordinates)||0),0);return i>=1e4?`${(i/1e4).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} ha`:`${Math.round(i).toLocaleString("pt-BR")} m²`}const a=e.filter(i=>i.type==="LineString"||i.type==="MultiLineString"||i.geometryType==="LineString");if(a.length>0){const i=a.reduce((t,o)=>t+(he(o.coordinates)||0),0);return i>=1e3?`${(i/1e3).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} km`:`${Math.round(i).toLocaleString("pt-BR")} m`}return""}function $(e){return e==null?"":String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}const ya=/^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;function V(e,r="#00E08A"){if(!e||typeof e!="string")return r;const a=e.trim();return ya.test(a)?a:r}function me(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function wa(e,r,a){const i=r/100,t=a/100,o=c=>(c+e/30)%12,n=i*Math.min(t,1-t),l=c=>t-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 Aa(e,r="#000000"){if(!e||typeof e!="string")return r;const a=e.trim().toLowerCase(),i=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);if(i){const o=i[1];return o.length<=4?`#${o[0]}${o[0]}${o[1]}${o[1]}${o[2]}${o[2]}`:`#${o.slice(0,6)}`}const t=/^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);if(t){const o=t[2].split(/[\s,/]+/).filter(Boolean).map(n=>parseFloat(n));if(o.length>=3&&o.slice(0,3).every(n=>!isNaN(n))){const[n,l,c]=o,[s,d,f]=t[1]==="rgb"?[n,l,c]:wa(n,l,c);return`#${me(s)}${me(d)}${me(f)}`}}return r}function T(e,r,a){const i=e.querySelectorAll(`[${r}]`);for(let t=0;t<i.length;t++)if(i[t].getAttribute(r)===a)return i[t];return null}function Re(e,r=80){let a=null;return(...i)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(...i),a=null},r)}}function D(e,r){e.setAttribute("title",r),e.setAttribute("aria-label",r)}const ye=[{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 we(e,r){const a=Array.isArray(e)?e.find(i=>i.id===r):void 0;return a&&typeof a.nome=="string"?a.nome:""}function Oe(e=ye,r="satelite",a=!1){if(!e||e.length===0)return"";const i=e.map(t=>{const o=r===t.id,n=$(t.id),l=$(t.nome),c=$(t.descricao||t.nome);let s="";return t.thumbnailUrl?s=`<img class="ui-basemap-preview" src="${$(t.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />`:s=`<div class="ui-basemap-preview-none">${v.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,132 +83,110 @@
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>${M(Ae(e,r))}</span>
87
- <span class="ui-chevron-icon ${a?"":"open"}">${b.chevronDir}</span>
86
+ <span class="ui-basemap-atual" data-basemap-atual>${$(we(e,r))}</span>
87
+ <span class="ui-chevron-icon ${a?"":"open"}">${v.chevronDir}</span>
88
88
  </button>
89
89
  ${a?"":`<div class="ui-basemap-grid" id="ui-basemap-grid">
90
90
  ${i}
91
91
  </div>`}
92
92
  </div>
93
- `}function oe(e){if(!Array.isArray(e)||e.length===0)return[];const r=e.filter(s=>!!(s&&typeof s=="object"&&s.id)),a=new Map,i=new Map;r.forEach((s,u)=>{a.set(s.id,s),i.set(s.id,u)});const t=new Set,o=new Set;for(const s of r){if(o.has(s.id))continue;const u=[],f=new Map;let p=s;for(;p&&p.parentId&&a.has(p.parentId)&&p.parentId!==p.id;){if(f.has(p.id)){const m=f.get(p.id),d=u.slice(m);let g=d[0];for(const v of d)(i.get(v)??1/0)<(i.get(g)??1/0)&&(g=v);t.add(g);break}if(o.has(p.id))break;f.set(p.id,u.length),u.push(p.id),p=a.get(p.parentId)}for(const m of u)o.add(m)}const n=new Map,l=[];r.forEach(s=>{!t.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,u,f){const p=new Set(f);p.add(s.id);const d=(n.get(s.id)||(Array.isArray(s.children)?s.children:[])).filter(g=>!!(g&&typeof g=="object"&&g.id&&!p.has(g.id)));return{camada:s,depth:u,subcamadas:d.map(g=>c(g,u+1,p))}}return l.map(s=>c(s,0,new Set))}function Aa(e,r){const a=new Set;if(!r||!Array.isArray(e))return a;const i=new Map;for(const o of e)!o||typeof o!="object"||!o.id||o.parentId&&o.parentId!==o.id&&(i.has(o.parentId)||i.set(o.parentId,[]),i.get(o.parentId).push(o.id));const t=[r];for(;t.length>0;){const o=t.pop();if(a.has(o))continue;a.add(o);const n=i.get(o);if(n)for(const l of n)a.has(l)||t.push(l)}return a}function ne(e,r,a){if(!a||!Array.isArray(r)||r.length===0)return[];const i=Aa(e,a);return r.filter(t=>!!(t&&t.layerId&&i.has(t.layerId)))}function Ne(e){const r=oe(e),a=i=>{const t=i.camada,o=i.depth,n=i.subcamadas,l=o>0?"&nbsp;&nbsp;".repeat(o)+"↳ ":n.length>0||t.isGroup?"📁 ":"",c=`<option value="${M(t.id)}">${l}${M(t.name)}</option>`,s=n.map(u=>a(u)).join("");return c+s};return r.map(i=>a(i)).join("")}function He(e,r,a){var f;const i=r.filter(p=>a.has(p.id)),t=i.length>0,o=ye(i),n=N((f=i[0])==null?void 0:f.color,"#00E08A"),l=Re(n,"#00E08A"),c=t?i.length:e.length,s=t?i.length>1?"selecionados":"selecionado":e.length>1?"camadas":"camada",u=Ne(e);return`
93
+ `}function oe(e){if(!Array.isArray(e)||e.length===0)return[];const r=e.filter(s=>!!(s&&typeof s=="object"&&s.id)),a=new Map,i=new Map;r.forEach((s,d)=>{a.set(s.id,s),i.set(s.id,d)});const t=new Set,o=new Set;for(const s of r){if(o.has(s.id))continue;const d=[],f=new Map;let p=s;for(;p&&p.parentId&&a.has(p.parentId)&&p.parentId!==p.id;){if(f.has(p.id)){const m=f.get(p.id),u=d.slice(m);let g=u[0];for(const b of u)(i.get(b)??1/0)<(i.get(g)??1/0)&&(g=b);t.add(g);break}if(o.has(p.id))break;f.set(p.id,d.length),d.push(p.id),p=a.get(p.parentId)}for(const m of d)o.add(m)}const n=new Map,l=[];r.forEach(s=>{!t.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,d,f){const p=new Set(f);p.add(s.id);const u=(n.get(s.id)||(Array.isArray(s.children)?s.children:[])).filter(g=>!!(g&&typeof g=="object"&&g.id&&!p.has(g.id)));return{camada:s,depth:d,subcamadas:u.map(g=>c(g,d+1,p))}}return l.map(s=>c(s,0,new Set))}function Ea(e,r){const a=new Set;if(!r||!Array.isArray(e))return a;const i=new Map;for(const o of e)!o||typeof o!="object"||!o.id||o.parentId&&o.parentId!==o.id&&(i.has(o.parentId)||i.set(o.parentId,[]),i.get(o.parentId).push(o.id));const t=[r];for(;t.length>0;){const o=t.pop();if(a.has(o))continue;a.add(o);const n=i.get(o);if(n)for(const l of n)a.has(l)||t.push(l)}return a}function ne(e,r,a){if(!a||!Array.isArray(r)||r.length===0)return[];const i=Ea(e,a);return r.filter(t=>!!(t&&t.layerId&&i.has(t.layerId)))}function je(e){const r=oe(e),a=i=>{const t=i.camada,o=i.depth,n=i.subcamadas,l=o>0?"&nbsp;&nbsp;".repeat(o)+"↳ ":n.length>0||t.isGroup?"📁 ":"",c=`<option value="${$(t.id)}">${l}${$(t.name)}</option>`,s=n.map(d=>a(d)).join("");return c+s};return r.map(i=>a(i)).join("")}function Ae(e,r){return r>0?{icone:v.alvoEnquadrar,texto:`${r} ${r>1?"selecionados":"selecionado"}`}:{icone:v.camadas,texto:`${e} ${e>1?"camadas":"camada"}`}}function Ne(e,r,a){const i=r.filter(c=>a.has(c.id)),t=i.length>0,o=t?i.length:e.length,n=Ae(e.length,i.length),l=je(e);return`
94
94
  <div class="ui-tree-footer ${t?"tem-selecao":"sem-selecao"}" part="rodape">
95
95
  <div class="ui-footer-left">
96
- <span class="ui-footer-count" id="footer-count">${c}</span>
97
- <span class="ui-footer-label" id="footer-label">${s}</span>
98
- <span class="ui-footer-metric" id="footer-metric" style="display: ${o?"inline-flex":"none"};">${o?`${b.reguaMetrica} ${o}`:""}</span>
96
+ <span class="ui-footer-count" id="footer-count">${o}</span>
97
+ <span class="ui-footer-label" id="footer-label" role="img" title="${n.texto}" aria-label="${n.texto}">${n.icone}</span>
99
98
  </div>
100
99
 
101
- <!-- Ações de topo/gerais quando não há nada selecionado -->
100
+ <!-- Criação de camadas/grupos quando não há nada selecionado -->
102
101
  <div class="ui-footer-actions-gerais" style="display: ${t?"none":"flex"};">
103
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">
104
- ${b.moverPasta}
105
- <span>+ Grupo</span>
103
+ ${v.moverPasta}
104
+ <span>Grupo</span>
106
105
  </button>
107
106
  <button class="ui-footer-chip-btn primario" id="btn-footer-new-layer" title="Criar Nova Camada Vetorial" aria-label="Criar Nova Camada">
108
- ${b.mais}
109
- <span>+ Camada</span>
107
+ ${v.mais}
108
+ <span>Camada</span>
110
109
  </button>
111
110
  </div>
112
111
 
113
112
  <!-- Ações em massa ativadas quando há seleção -->
114
113
  <div class="ui-footer-right ui-footer-bulk-actions" style="display: ${t?"flex":"none"};">
115
- <button class="ui-footer-btn ${t?"":"disabled"}" id="btn-footer-vis" title="Alternar visibilidade coletiva" aria-label="Alternar visibilidade coletiva" ${t?"":"disabled"}>
116
- ${b.olhoAberto}
117
- </button>
118
-
119
- <button class="ui-footer-btn ${t?"":"disabled"}" id="btn-footer-lock" title="Alternar bloqueio coletivo" aria-label="Alternar bloqueio coletivo" ${t?"":"disabled"}>
120
- ${b.cadeadoTrancado}
121
- </button>
122
-
123
- <div class="ui-footer-color-wrapper ${t?"":"disabled"}" title="Alterar cor dos selecionados">
124
- <span class="ui-footer-color-preview" id="preview-footer-color" style="background-color: ${n};"></span>
125
- <input type="color" id="input-footer-color" aria-label="Cor dos selecionados" value="${l}" class="ui-footer-color" ${t?"":"disabled"} />
126
- </div>
127
-
128
114
  <div class="ui-footer-move-wrapper ${t?"":"disabled"}" title="Mover selecionados para outra camada">
129
115
  <select id="select-footer-move" aria-label="Mover selecionados para outra camada" class="ui-footer-select" ${t?"":"disabled"}>
130
- <option value="" disabled selected>📂 Mover para...</option>
131
- ${u}
116
+ <option value="" disabled selected>Mover para...</option>
117
+ ${l}
132
118
  </select>
133
119
  </div>
134
120
 
135
121
  <button class="ui-footer-btn btn-danger-footer ${t?"":"disabled"}" id="btn-footer-del" title="Excluir selecionados" aria-label="Excluir selecionados" ${t?"":"disabled"}>
136
- ${b.lixeira}
122
+ ${v.lixeira}
137
123
  </button>
138
-
139
- ${t?`<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${b.fechar}</button>`:""}
140
124
  </div>
141
125
  </div>
142
- `}const ge=64;function ze(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])}function Ge(e){return!Array.isArray(e)||e.length===0?[]:ze(e[0])?[e.filter(ze)]:e.flatMap(Ge)}function Be(e){if(e.length<=ge)return e;const r=e.length/ge,a=[];for(let i=0;i<ge;i++)a.push(e[Math.floor(i*r)]);return a.push(e[e.length-1]),a}function Ea(e,r,a){const i=Ge(r).filter(E=>E.length>0);if(i.length===0)return"";let t=1/0,o=-1/0,n=1/0,l=-1/0;for(const E of i)for(const[k,z]of E)z<t&&(t=z),z>o&&(o=z),-k<n&&(n=-k),-k>l&&(l=-k);const c=16,s=2,u=c-s*2,f=o-t,p=l-n,m=Math.max(f,p),d=m>0?u/m:0,g=s+(u-f*d)/2,v=s+(u-p*d)/2,x=E=>Math.round(E*100)/100,L=([E,k])=>`${x(g+(k-t)*d)},${x(v+(-E-n)*d)}`,$=e==="polygon"||e==="multipolygon",y=e==="linestring"||e==="multilinestring",h=E=>`<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${E}</svg>`;if($){const E=i.filter(k=>k.length>=3).map(k=>`M${Be(k).map(L).join("L")}Z`).join("");return E?h(`<path d="${E}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`):""}if(y){const E=i.filter(k=>k.length>=2).map(k=>`M${Be(k).map(L).join("L")}`).join("");return E?h(`<path d="${E}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`):""}return""}function Ue(e,r,a){const i=N(r,"#00E08A"),t=(e||"").toLowerCase(),o=a!==void 0?Ea(t,a,i):"";return o||(t==="polygon"||t==="multipolygon"?`<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${i}" fill-opacity="0.45" stroke="${i}" stroke-width="1.5"/></svg>`:t==="linestring"||t==="multilinestring"?`<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${i}" stroke-width="2"/></svg>`:t==="text"?`<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${i}" text-anchor="middle" font-family="sans-serif">T</text></svg>`:`<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${i}" stroke="#ffffff" stroke-width="1.2"/></svg>`)}const Ee=80;function Y(e,r){const a=(r||"").trim().toLowerCase();return a?e.filter(i=>(i.name||"").toLowerCase().includes(a)||(i.category||"").toLowerCase().includes(a)||(i.type||"").toLowerCase().includes(a)):e}function ke(e,r,a){var p,m;const i=(a||"").trim().toLowerCase();if(!i)return null;const t=new Map,o=new Map;for(const d of e)t.set(d.id,d),d.parentId&&d.parentId!==d.id&&(o.has(d.parentId)||o.set(d.parentId,[]),o.get(d.parentId).push(d.id));const n=new Map;for(const d of r){const g=d.layerId||"";n.has(g)||n.set(g,[]),n.get(g).push(d)}const l=new Set,c=new Set;for(const d of e)(typeof d.name=="string"?d.name.toLowerCase():"").includes(i)?(l.add(d.id),c.add(d.id)):Y(n.get(d.id)||[],i).length>0&&c.add(d.id);const s=new Set(c);for(const d of c){const g=new Set([d]);let v=(p=t.get(d))==null?void 0:p.parentId;for(;v&&t.has(v)&&!g.has(v);)g.add(v),s.add(v),v=(m=t.get(v))==null?void 0:m.parentId}const u=[...l];for(;u.length>0;){const d=u.pop();for(const g of o.get(d)||[])s.has(g)||(s.add(g),u.push(g))}const f=new Map;for(const d of s){const g=n.get(d)||[];f.set(d,l.has(d)?g:Y(g,i))}return{camadasVisiveis:s,feicoesPorCamada:f}}function Ie(e,r,a,i="",t=Ee,o){const n=ke(e,r,i),l=[],c=new Map;for(let f=0;f<r.length;f++){const p=r[f];if(!p||!p.id)continue;const m=p.layerId||"";c.has(m)||c.set(m,[]),c.get(m).push(p)}const s=oe(e);function u(f){const p=f.camada;if(n&&!n.camadasVisiveis.has(p.id)||!(n?!0:a.has(p.id)))return;for(const x of f.subcamadas)u(x);const d=n?n.feicoesPorCamada.get(p.id)||[]:c.get(p.id)||[],g=(o==null?void 0:o.get(p.id))??t,v=d.slice(0,g);for(let x=0;x<v.length;x++)l.push(v[x].id)}for(const f of s)u(f);return l}function Ve(e,r,a,i,t,o){if(!e.includes(i))return null;const n=new Set(r);let l=a;if(o&&a&&e.includes(a)){const c=e.indexOf(a),s=e.indexOf(i),u=Math.min(c,s),f=Math.max(c,s);t||n.clear();for(let p=u;p<=f;p++)n.add(e[p])}else t?(n.has(i)?n.delete(i):n.add(i),l=i):(n.clear(),n.add(i),l=i);return{selecionados:n,ultimoClicadoId:l}}function se(e,r){if(e.size===0)return;const a=new Set(r.map(i=>i.id));for(const i of e)a.has(i)||e.delete(i)}function le(e,r,a){const i=new Set;let t=e.find(o=>o.id===r);for(;t&&t.parentId;){if(i.has(t.id)||(i.add(t.id),t.parentId===a))return!0;t=e.find(o=>o.id===(t==null?void 0:t.parentId))}return!1}function ka(e){return Number.isFinite(e)?e<.25?"acima":e>.75?"abaixo":"dentro":"dentro"}function Ia(e,r,a,i){if(!r||!a||r===a)return null;const t=e.find(s=>s.id===r),o=e.find(s=>s.id===a);if(!t||!o)return null;const n=t.parentId!==void 0?t.parentId:null;if(i==="dentro")return le(e,o.id,t.id)?null:(t.parentId=o.id,{tipo:"hierarquia",camada:t,novoParentId:o.id,parentAnteriorId:n});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(t):e.splice(i==="acima"?c:c+1,0,t),t.parentId=o.parentId??null,{tipo:"ordem",camada:t,parentAnteriorId:n,novoParentId:t.parentId}}function La(e,r,a,i){if(!r||!a||r===a)return!1;const t=e.findIndex(l=>l.id===r);if(t===-1)return!1;const[o]=e.splice(t,1),n=e.findIndex(l=>l.id===a);return n===-1?e.push(o):e.splice(i?n:n+1,0,o),!0}function Ca(e,r,a,i){const t=e.find(l=>l.id===a),o=r.find(l=>l.id===i);if(!t||!o||t.layerId===i)return null;const n=t.layerId;return t.layerId=i,{feicao:t,camadaOrigemId:n,camadaDestinoId:i,mudouDeCamada:!0}}function $a(e,r,a,i){if(!r||!a||r===a)return null;const t=e.findIndex(f=>f.id===r);if(t===-1)return null;const o=e.find(f=>f.id===a);if(!o)return null;const[n]=e.splice(t,1),l=n.layerId,c=o.layerId,s=l!==c;s&&(n.layerId=c);const u=e.findIndex(f=>f.id===a);return u===-1?e.push(n):e.splice(i?u:u+1,0,n),{feicao:n,camadaOrigemId:l,camadaDestinoId:c,mudouDeCamada:s}}function _e(e){const{camadas:r,feicoes:a,camadaAtivaId:i,expandedLayers:t,selectedFeatureIds:o,activeSettingsLayerId:n,editingLayerId:l,editingFeatureId:c,searchQuery:s,titulo:u="CAMADAS",mostrarBusca:f=!0,limitesPorCamada:p,limiteFeicoesPorCamada:m=Ee,mostrarBotaoColapsar:d=!1}=e,g=(s||"").trim().toLowerCase(),v=ke(r,a,g),x=new Map;for(let S=0;S<a.length;S++){const w=a[S];if(!w||!w.id)continue;const F=w.layerId||"";x.has(F)||x.set(F,[]),x.get(F).push(w)}const L=r.every(S=>S.visible!==!1),$=r.length>0&&r.every(S=>t.has(S.id)),y=f?`
126
+ `}const ge=64;function ze(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])}function He(e){return!Array.isArray(e)||e.length===0?[]:ze(e[0])?[e.filter(ze)]:e.flatMap(He)}function Be(e){if(e.length<=ge)return e;const r=e.length/ge,a=[];for(let i=0;i<ge;i++)a.push(e[Math.floor(i*r)]);return a.push(e[e.length-1]),a}function ka(e,r,a){const i=He(r).filter(I=>I.length>0);if(i.length===0)return"";let t=1/0,o=-1/0,n=1/0,l=-1/0;for(const I of i)for(const[L,P]of I)P<t&&(t=P),P>o&&(o=P),-L<n&&(n=-L),-L>l&&(l=-L);const c=16,s=2,d=c-s*2,f=o-t,p=l-n,m=Math.max(f,p),u=m>0?d/m:0,g=s+(d-f*u)/2,b=s+(d-p*u)/2,h=I=>Math.round(I*100)/100,k=([I,L])=>`${h(g+(L-t)*u)},${h(b+(-I-n)*u)}`,C=e==="polygon"||e==="multipolygon",F=e==="linestring"||e==="multilinestring",x=I=>`<svg viewBox="0 0 ${c} ${c}" width="100%" height="100%" aria-hidden="true">${I}</svg>`;if(C){const I=i.filter(L=>L.length>=3).map(L=>`M${Be(L).map(k).join("L")}Z`).join("");return I?x(`<path d="${I}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`):""}if(F){const I=i.filter(L=>L.length>=2).map(L=>`M${Be(L).map(k).join("L")}`).join("");return I?x(`<path d="${I}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`):""}return""}function Ge(e,r,a){const i=V(r,"#00E08A"),t=(e||"").toLowerCase(),o=a!==void 0?ka(t,a,i):"";return o||(t==="polygon"||t==="multipolygon"?`<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${i}" fill-opacity="0.45" stroke="${i}" stroke-width="1.5"/></svg>`:t==="linestring"||t==="multilinestring"?`<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${i}" stroke-width="2"/></svg>`:t==="text"?`<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${i}" text-anchor="middle" font-family="sans-serif">T</text></svg>`:`<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${i}" stroke="#ffffff" stroke-width="1.2"/></svg>`)}const Ee=80;function Y(e,r){const a=(r||"").trim().toLowerCase();return a?e.filter(i=>(i.name||"").toLowerCase().includes(a)||(i.category||"").toLowerCase().includes(a)||(i.type||"").toLowerCase().includes(a)):e}function ke(e,r,a){var p,m;const i=(a||"").trim().toLowerCase();if(!i)return null;const t=new Map,o=new Map;for(const u of e)t.set(u.id,u),u.parentId&&u.parentId!==u.id&&(o.has(u.parentId)||o.set(u.parentId,[]),o.get(u.parentId).push(u.id));const n=new Map;for(const u of r){const g=u.layerId||"";n.has(g)||n.set(g,[]),n.get(g).push(u)}const l=new Set,c=new Set;for(const u of e)(typeof u.name=="string"?u.name.toLowerCase():"").includes(i)?(l.add(u.id),c.add(u.id)):Y(n.get(u.id)||[],i).length>0&&c.add(u.id);const s=new Set(c);for(const u of c){const g=new Set([u]);let b=(p=t.get(u))==null?void 0:p.parentId;for(;b&&t.has(b)&&!g.has(b);)g.add(b),s.add(b),b=(m=t.get(b))==null?void 0:m.parentId}const d=[...l];for(;d.length>0;){const u=d.pop();for(const g of o.get(u)||[])s.has(g)||(s.add(g),d.push(g))}const f=new Map;for(const u of s){const g=n.get(u)||[];f.set(u,l.has(u)?g:Y(g,i))}return{camadasVisiveis:s,feicoesPorCamada:f}}function Ie(e,r,a,i="",t=Ee,o){const n=ke(e,r,i),l=[],c=new Map;for(let f=0;f<r.length;f++){const p=r[f];if(!p||!p.id)continue;const m=p.layerId||"";c.has(m)||c.set(m,[]),c.get(m).push(p)}const s=oe(e);function d(f){const p=f.camada;if(n&&!n.camadasVisiveis.has(p.id)||!(n?!0:a.has(p.id)))return;for(const h of f.subcamadas)d(h);const u=n?n.feicoesPorCamada.get(p.id)||[]:c.get(p.id)||[],g=(o==null?void 0:o.get(p.id))??t,b=u.slice(0,g);for(let h=0;h<b.length;h++)l.push(b[h].id)}for(const f of s)d(f);return l}function Ue(e,r,a,i,t,o){if(!e.includes(i))return null;const n=new Set(r);let l=a;if(o&&a&&e.includes(a)){const c=e.indexOf(a),s=e.indexOf(i),d=Math.min(c,s),f=Math.max(c,s);t||n.clear();for(let p=d;p<=f;p++)n.add(e[p])}else t?(n.has(i)?n.delete(i):n.add(i),l=i):(n.clear(),n.add(i),l=i);return{selecionados:n,ultimoClicadoId:l}}function se(e,r){if(e.size===0)return;const a=new Set(r.map(i=>i.id));for(const i of e)a.has(i)||e.delete(i)}function le(e,r,a){const i=new Set;let t=e.find(o=>o.id===r);for(;t&&t.parentId;){if(i.has(t.id)||(i.add(t.id),t.parentId===a))return!0;t=e.find(o=>o.id===(t==null?void 0:t.parentId))}return!1}function Ia(e){return Number.isFinite(e)?e<.25?"acima":e>.75?"abaixo":"dentro":"dentro"}function La(e,r,a,i){if(!r||!a||r===a)return null;const t=e.find(s=>s.id===r),o=e.find(s=>s.id===a);if(!t||!o)return null;const n=t.parentId!==void 0?t.parentId:null;if(i==="dentro")return le(e,o.id,t.id)?null:(t.parentId=o.id,{tipo:"hierarquia",camada:t,novoParentId:o.id,parentAnteriorId:n});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(t):e.splice(i==="acima"?c:c+1,0,t),t.parentId=o.parentId??null,{tipo:"ordem",camada:t,parentAnteriorId:n,novoParentId:t.parentId}}function Ca(e,r,a,i){if(!r||!a||r===a)return!1;const t=e.findIndex(l=>l.id===r);if(t===-1)return!1;const[o]=e.splice(t,1),n=e.findIndex(l=>l.id===a);return n===-1?e.push(o):e.splice(i?n:n+1,0,o),!0}function $a(e,r,a,i){const t=e.find(l=>l.id===a),o=r.find(l=>l.id===i);if(!t||!o||t.layerId===i)return null;const n=t.layerId;return t.layerId=i,{feicao:t,camadaOrigemId:n,camadaDestinoId:i,mudouDeCamada:!0}}function Sa(e,r,a,i){if(!r||!a||r===a)return null;const t=e.findIndex(f=>f.id===r);if(t===-1)return null;const o=e.find(f=>f.id===a);if(!o)return null;const[n]=e.splice(t,1),l=n.layerId,c=o.layerId,s=l!==c;s&&(n.layerId=c);const d=e.findIndex(f=>f.id===a);return d===-1?e.push(n):e.splice(i?d:d+1,0,n),{feicao:n,camadaOrigemId:l,camadaDestinoId:c,mudouDeCamada:s}}function _e(e){const{camadas:r,feicoes:a,camadaAtivaId:i,expandedLayers:t,selectedFeatureIds:o,activeSettingsLayerId:n,editingLayerId:l,editingFeatureId:c,searchQuery:s,titulo:d="CAMADAS",mostrarBusca:f=!0,limitesPorCamada:p,limiteFeicoesPorCamada:m=Ee,mostrarBotaoColapsar:u=!1}=e,g=(s||"").trim().toLowerCase(),b=ke(r,a,g),h=new Map;for(let S=0;S<a.length;S++){const w=a[S];if(!w||!w.id)continue;const M=w.layerId||"";h.has(M)||h.set(M,[]),h.get(M).push(w)}const k=r.every(S=>S.visible!==!1),C=r.length>0&&r.every(S=>t.has(S.id)),F=f?`
143
127
  <div class="ui-tree-search-wrapper" part="busca">
144
- <span class="ui-tree-search-icon">${b.busca}</span>
145
- <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${M(s)}" />
146
- ${s?`<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${b.fechar}</button>`:""}
128
+ <span class="ui-tree-search-icon">${v.busca}</span>
129
+ <input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${$(s)}" />
130
+ ${s?`<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${v.fechar}</button>`:""}
147
131
  </div>
148
- `:"",h=`
132
+ `:"",x=`
149
133
  <div class="ui-tree-toolbar" part="toolbar">
150
134
  <div class="ui-tree-title-group">
151
- <span class="ui-tree-section-title">${M(u||"CAMADAS")}</span>
135
+ <span class="ui-tree-section-title">${$(d||"CAMADAS")}</span>
152
136
  <span class="ui-tree-count-badge">${r.length}</span>
153
137
  </div>
154
138
  <div class="ui-tree-actions">
155
- <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${L?"Ocultar Todas as Camadas":"Exibir Todas as Camadas"}" aria-label="${L?"Ocultar Todas as Camadas":"Exibir Todas as Camadas"}">
156
- ${L?b.olhoAberto:b.olhoFechado}
157
- </button>
158
- <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${$?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}" title="${$?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}">
159
- <span class="ui-chevron-icon ${$?"open":""}">${b.chevronDir}</span>
160
- </button>
161
- <button id="btn-add-group" class="ui-tree-btn-group" title="Criar grupo / pasta de camadas" aria-label="Criar grupo de camadas">
162
- ${b.moverPasta} Grupo
139
+ <button id="btn-toggle-all-vis" class="ui-tree-action-btn" title="${k?"Ocultar Todas as Camadas":"Exibir Todas as Camadas"}" aria-label="${k?"Ocultar Todas as Camadas":"Exibir Todas as Camadas"}">
140
+ ${k?v.olhoAberto:v.olhoFechado}
163
141
  </button>
164
- <button id="btn-add-layer" class="ui-tree-btn-new" title="Adicionar nova camada vetorial">
165
- ${b.mais} Camada
142
+ <button id="btn-toggle-all-expand" class="ui-tree-action-btn" aria-label="${C?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}" title="${C?"Recolher Todos os Grupos":"Expandir Todos os Grupos"}">
143
+ <span class="ui-chevron-icon ${C?"open":""}">${v.chevronDir}</span>
166
144
  </button>
167
- ${d?`<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${b.recolherPainel}</button>`:""}
145
+ ${u?`<button id="btn-colapsar" class="ui-camadas-btn-colapsar" title="Recolher painel" aria-label="Recolher painel">${v.recolherPainel}</button>`:""}
168
146
  </div>
169
147
  </div>
170
- ${y}
171
- `,E=S=>{const w=S.camada;if(v&&!v.camadasVisiveis.has(w.id))return"";const F=S.depth,D=S.subcamadas,G=v?D.filter(I=>v.camadasVisiveis.has(I.camada.id)):D,U=!!(w.isGroup||D.length>0),C=M(w.id),X=M(w.name||(U?"Novo Grupo":"Camada")),O=N(w.color,"#00E08A"),Q=w.visible!==!1,V=w.locked===!0,W=g?!0:t.has(w.id),ce=n===w.id,de=i===w.id,B=v?v.feicoesPorCamada.get(w.id)||[]:x.get(w.id)||[],ue=v?B:ne(r,a,w.id),Ce=ue.length>0&&ue.every(I=>o.has(I.id)),ia=!Ce&&ue.some(I=>o.has(I.id)),J=(p==null?void 0:p.get(w.id))??m,oa=B.slice(0,J),na=B.length>J,sa=B.length-J,la=oa.map(I=>{const R=M(I.id),Se=M(I.name||"Feição"),Me=N(I.color,O),Z=I.visible!==!1,pe=V,fe=I.locked===!0||pe,Fe=pe?"Bloqueada pela camada":fe?"Desbloquear Feição":"Bloquear Feição",ee=o.has(I.id),ma=I.status==="previa"?'<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>':"";return`
172
- <div class="ui-feat-row ${ee?"selected-row":""} ${Z?"":"hidden-row"}" data-feat-row="${R}" data-feat-select="${R}" data-feat-layer="${C}" role="treeitem" aria-selected="${ee}" tabindex="-1" draggable="true" part="${ee?"feicao feicao-selecionada":"feicao"}" style="--layer-depth: ${F+1};" title="Clique para selecionar | Arraste para reordenar">
148
+ ${F}
149
+ `,I=S=>{const w=S.camada;if(b&&!b.camadasVisiveis.has(w.id))return"";const M=S.depth,q=S.subcamadas,H=b?q.filter(A=>b.camadasVisiveis.has(A.camada.id)):q,G=!!(w.isGroup||q.length>0),E=$(w.id),X=$(w.name||(G?"Novo Grupo":"Camada")),O=V(w.color,"#00E08A"),Q=w.visible!==!1,U=w.locked===!0,J=g?!0:t.has(w.id),ce=n===w.id,de=i===w.id,z=b?b.feicoesPorCamada.get(w.id)||[]:h.get(w.id)||[],ue=b?z:ne(r,a,w.id),Ce=ue.length>0&&ue.every(A=>o.has(A.id)),ta=!Ce&&ue.some(A=>o.has(A.id)),W=(p==null?void 0:p.get(w.id))??m,ia=z.slice(0,W),oa=z.length>W,na=z.length-W,sa=ia.map(A=>{const R=$(A.id),Se=$(A.name||"Feição"),Me=V(A.color,O),Z=A.visible!==!1,pe=U,fe=A.locked===!0||pe,Fe=pe?"Bloqueada pela camada":fe?"Desbloquear Feição":"Bloquear Feição",ee=o.has(A.id),fa=A.status==="previa"?'<span class="ui-previa-dot" title="Geometria prévia" aria-label="Geometria prévia"></span>':"";return`
150
+ <div class="ui-feat-row ${ee?"selected-row":""} ${Z?"":"hidden-row"}" data-feat-row="${R}" data-feat-select="${R}" data-feat-layer="${E}" role="treeitem" aria-selected="${ee}" tabindex="-1" draggable="true" part="${ee?"feicao feicao-selecionada":"feicao"}" style="--layer-depth: ${M+1};" title="Clique para selecionar | Arraste para reordenar">
173
151
  <div class="ui-col ui-col-eye" data-feat-eye="${R}" role="button" tabindex="0" aria-label="${Z?"Ocultar Feição":"Exibir Feição"}" title="${Z?"Ocultar Feição":"Exibir Feição"}">
174
- ${Z?b.olhoAberto:b.olhoFechado}
152
+ ${Z?v.olhoAberto:v.olhoFechado}
175
153
  </div>
176
154
 
177
155
  <div class="ui-col ui-col-lock ${fe?"":"ui-lock-open"}" data-feat-lock="${R}" ${pe?'data-locked-by-layer="true"':""} role="button" tabindex="0" aria-label="${Fe}" title="${Fe}">
178
- ${fe?b.cadeadoTrancado:b.cadeadoAberto}
156
+ ${fe?v.cadeadoTrancado:v.cadeadoAberto}
179
157
  </div>
180
158
 
181
159
  <div class="ui-col ui-col-colorbar" style="background: ${Me};"></div>
182
160
  <div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
183
161
  <div class="ui-col ui-col-thumb">
184
- <div class="ui-thumb-box">${Ue(I.type||I.geometryType,Me,I.coordinates)}</div>
162
+ <div class="ui-thumb-box">${Ge(A.type||A.geometryType,Me,A.coordinates)}</div>
185
163
  </div>
186
164
 
187
165
  <div class="ui-col ui-col-name" data-feat-name-trigger="${R}" title="Duplo clique para renomear">
188
- ${c===I.id?`<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${R}" value="${Se}" />`:`<span class="ui-name-text">${Se}</span>${ma}`}
166
+ ${c===A.id?`<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${R}" value="${Se}" />`:`<span class="ui-name-text">${Se}</span>${fa}`}
189
167
  </div>
190
168
 
191
169
  <div class="ui-col ui-col-actions">
192
- <button class="ui-micro-btn" data-feat-fit="${R}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${b.alvoEnquadrar}</button>
170
+ <button class="ui-micro-btn" data-feat-fit="${R}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${v.alvoEnquadrar}</button>
193
171
  </div>
194
172
 
195
173
  <div class="ui-col ui-col-target" data-feat-target="${R}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
196
174
  <div class="ui-target-circle ${ee?"selected":""}"></div>
197
175
  </div>
198
176
  </div>
199
- `}).join(""),ca=na?`<div class="ui-truncate-notice" style="display: flex; align-items: center; justify-content: space-between; padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: var(--ui-cor-fundo-recuado, rgba(0,0,0,0.15));">
200
- <span>Exibindo ${J} de ${B.length} feições. Use a busca acima para filtrar.</span>
201
- <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${C}" style="background: transparent; border: 1px solid var(--ui-cor-borda, rgba(255,255,255,0.15)); color: var(--ui-cor-primaria, #00E08A); border-radius: 3px; font-size: 9.5px; font-style: normal; padding: 1px 6px; cursor: pointer; white-space: nowrap;">Mostrar mais (+${Math.min(80,sa)})</button>
202
- </div>`:"",$e=w.opacity!==void 0?w.opacity:1,da=Math.round($e*100),ua=r.filter(I=>I.id!==w.id&&!le(r,I.id,w.id)).map(I=>`<option value="${M(I.id)}" ${w.parentId===I.id?"selected":""}>${I.isGroup?"📁 ":""}${M(I.name)}</option>`).join(""),pa=ce?`
203
- <div class="ui-layer-settings-drawer" id="settings-drawer-${C}" part="drawer" style="--drawer-cor-camada: ${O};">
177
+ `}).join(""),la=oa?`<div class="ui-truncate-notice" style="display: flex; align-items: center; justify-content: space-between; padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: var(--ui-cor-fundo-recuado, rgba(0,0,0,0.15));">
178
+ <span>Exibindo ${W} de ${z.length} feições. Use a busca acima para filtrar.</span>
179
+ <button type="button" class="ui-truncate-more-btn" data-layer-show-more="${E}" style="background: transparent; border: 1px solid var(--ui-cor-borda, rgba(255,255,255,0.15)); color: var(--ui-cor-primaria, #00E08A); border-radius: 3px; font-size: 9.5px; font-style: normal; padding: 1px 6px; cursor: pointer; white-space: nowrap;">Mostrar mais (+${Math.min(80,na)})</button>
180
+ </div>`:"",$e=w.opacity!==void 0?w.opacity:1,ca=Math.round($e*100),da=r.filter(A=>A.id!==w.id&&!le(r,A.id,w.id)).map(A=>`<option value="${$(A.id)}" ${w.parentId===A.id?"selected":""}>${A.isGroup?"📁 ":""}${$(A.name)}</option>`).join(""),ua=ce?`
181
+ <div class="ui-layer-settings-drawer" id="settings-drawer-${E}" part="drawer" style="--drawer-cor-camada: ${O};">
204
182
  <div class="ui-drawer-header">
205
183
  <div class="ui-drawer-header-left">
206
- <span class="ui-drawer-icon">${b.engrenagem}</span>
184
+ <span class="ui-drawer-icon">${v.engrenagem}</span>
207
185
  <span class="ui-drawer-title">Configurações da Camada</span>
208
186
  <span class="ui-drawer-layer-chip" title="${X}">${X}</span>
209
187
  </div>
210
- <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${C}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
211
- ${b.fechar}
188
+ <button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${E}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
189
+ ${v.fechar}
212
190
  </button>
213
191
  </div>
214
192
 
@@ -220,9 +198,9 @@
220
198
  </div>
221
199
  <div class="ui-drawer-color-group">
222
200
  <label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
223
- <span class="ui-drawer-color-sample" id="sample-color-${C}" style="background-color: ${O};"></span>
224
- <span class="ui-drawer-color-hex" id="hex-color-${C}">${O.toUpperCase()}</span>
225
- <input type="color" aria-label="Cor da camada" data-layer-color-picker="${C}" value="${Re(O,"#00e08a")}" class="ui-drawer-color-native" />
201
+ <span class="ui-drawer-color-sample" id="sample-color-${E}" style="background-color: ${O};"></span>
202
+ <span class="ui-drawer-color-hex" id="hex-color-${E}">${O.toUpperCase()}</span>
203
+ <input type="color" aria-label="Cor da camada" data-layer-color-picker="${E}" value="${Aa(O,"#00e08a")}" class="ui-drawer-color-native" />
226
204
  </label>
227
205
  </div>
228
206
  </div>
@@ -231,10 +209,10 @@
231
209
  <div class="ui-drawer-row">
232
210
  <div class="ui-drawer-row-label">
233
211
  <span>Opacidade</span>
234
- <span class="ui-drawer-badge" id="badge-op-${C}">${da}%</span>
212
+ <span class="ui-drawer-badge" id="badge-op-${E}">${ca}%</span>
235
213
  </div>
236
214
  <div class="ui-drawer-slider-container">
237
- <input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number($e)||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($e)||0}" data-layer-opacity-slider="${E}" class="ui-drawer-slider" />
238
216
  </div>
239
217
  </div>
240
218
 
@@ -244,9 +222,9 @@
244
222
  <span>Pertence ao Grupo</span>
245
223
  </div>
246
224
  <div class="ui-drawer-select-wrapper">
247
- <select class="ui-drawer-select" data-layer-parent-select="${C}" aria-label="Grupo pai da camada">
225
+ <select class="ui-drawer-select" data-layer-parent-select="${E}" aria-label="Grupo pai da camada">
248
226
  <option value="" ${w.parentId?"":"selected"}>(Nenhum - Nível Principal)</option>
249
- ${ua}
227
+ ${da}
250
228
  </select>
251
229
  </div>
252
230
  </div>
@@ -254,76 +232,76 @@
254
232
 
255
233
  <div class="ui-drawer-footer">
256
234
  <div class="ui-drawer-meta-info">
257
- <span>${D.length>0?`${D.length} subcamadas · `:""}${B.length} ${B.length===1?"feição":"feições"}</span>
235
+ <span>${q.length>0?`${q.length} subcamadas · `:""}${z.length} ${z.length===1?"feição":"feições"}</span>
258
236
  </div>
259
237
  <div class="ui-drawer-actions">
260
- <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${C}" title="Adicionar nova camada dentro desta">
261
- ${b.mais} Subcamada
238
+ <button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${E}" title="Adicionar nova camada dentro desta">
239
+ ${v.mais} Subcamada
262
240
  </button>
263
- <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${C}" title="Excluir esta camada e suas feições">
264
- ${b.lixeira}
241
+ <button type="button" class="ui-drawer-btn-danger" data-delete-layer="${E}" title="Excluir esta camada e suas feições">
242
+ ${v.lixeira}
265
243
  <span class="ui-btn-label">Excluir</span>
266
244
  </button>
267
245
  </div>
268
246
  </div>
269
247
  </div>
270
- `:"",fa=G.map(I=>E(I)).join("");return`
271
- <div class="ui-layer-group ${F>0?"is-sublayer-group":""}" data-layer-id="${C}" data-layer-depth="${F}" role="treeitem" aria-expanded="${W}" part="grupo" style="--layer-active-color: ${O};">
272
- <div class="ui-layer-row ${Q?"":"hidden-layer"} ${de?"active-drawing-layer":""} ${F>0?"is-sublayer":""} ${U?"is-group-row":""}" data-layer-row="${C}" data-layer-id="${C}" tabindex="-1" draggable="true" part="${de?"camada camada-ativa":"camada"}" ${de?'aria-current="true"':""} style="--layer-depth: ${F};">
273
- <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${b.dragHandle}</div>
248
+ `:"",pa=H.map(A=>I(A)).join("");return`
249
+ <div class="ui-layer-group ${M>0?"is-sublayer-group":""}" data-layer-id="${E}" data-layer-depth="${M}" role="treeitem" aria-expanded="${J}" part="grupo" style="--layer-active-color: ${O};">
250
+ <div class="ui-layer-row ${Q?"":"hidden-layer"} ${de?"active-drawing-layer":""} ${M>0?"is-sublayer":""} ${G?"is-group-row":""}" data-layer-row="${E}" data-layer-id="${E}" tabindex="-1" draggable="true" part="${de?"camada camada-ativa":"camada"}" ${de?'aria-current="true"':""} style="--layer-depth: ${M};">
251
+ <div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${v.dragHandle}</div>
274
252
 
275
- <div class="ui-col ui-col-eye" data-layer-eye="${C}" role="button" tabindex="0" aria-label="${Q?"Ocultar Camada":"Exibir Camada"}" title="${Q?"Ocultar Camada":"Exibir Camada"}">
276
- ${Q?b.olhoAberto:b.olhoFechado}
253
+ <div class="ui-col ui-col-eye" data-layer-eye="${E}" role="button" tabindex="0" aria-label="${Q?"Ocultar Camada":"Exibir Camada"}" title="${Q?"Ocultar Camada":"Exibir Camada"}">
254
+ ${Q?v.olhoAberto:v.olhoFechado}
277
255
  </div>
278
256
 
279
- <div class="ui-col ui-col-lock ${V?"":"ui-lock-open"}" data-layer-lock="${C}" role="button" tabindex="0" aria-label="${V?"Desbloquear Camada":"Bloquear Camada"}" title="${V?"Desbloquear Camada":"Bloquear Camada"}">
280
- ${V?b.cadeadoTrancado:b.cadeadoAberto}
257
+ <div class="ui-col ui-col-lock ${U?"":"ui-lock-open"}" data-layer-lock="${E}" role="button" tabindex="0" aria-label="${U?"Desbloquear Camada":"Bloquear Camada"}" title="${U?"Desbloquear Camada":"Bloquear Camada"}">
258
+ ${U?v.cadeadoTrancado:v.cadeadoAberto}
281
259
  </div>
282
260
 
283
- <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${C}" role="button" tabindex="0" style="background: ${O};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
261
+ <div class="ui-col ui-col-colorbar ui-col-colorbar-editavel" data-layer-color="${E}" role="button" tabindex="0" style="background: ${O};" aria-label="Alterar cor da camada" title="Alterar cor da camada (usada no destaque de seleção)"></div>
284
262
 
285
- <div class="ui-col ui-col-chevron" data-layer-expand="${C}" role="button" tabindex="0" aria-label="${W?"Recolher grupo":"Expandir grupo"}">
286
- <span class="ui-chevron-icon ${W?"open":""}">${b.chevronDir}</span>
263
+ <div class="ui-col ui-col-chevron" data-layer-expand="${E}" role="button" tabindex="0" aria-label="${J?"Recolher grupo":"Expandir grupo"}">
264
+ <span class="ui-chevron-icon ${J?"open":""}">${v.chevronDir}</span>
287
265
  </div>
288
266
 
289
- <div class="ui-col ui-col-name" data-layer-name-trigger="${C}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
290
- ${l===w.id?`<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${C}" value="${X}" />`:`${U?`<span class="ui-group-folder-icon" title="Grupo/Pasta">${b.moverPasta}</span>`:""}
267
+ <div class="ui-col ui-col-name" data-layer-name-trigger="${E}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
268
+ ${l===w.id?`<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${E}" value="${X}" />`:`${G?`<span class="ui-group-folder-icon" title="Grupo/Pasta">${v.moverPasta}</span>`:""}
291
269
  <span class="ui-name-text">${X}</span>
292
- ${B.length>0||!U?`<span class="ui-count-chip" title="${B.length} ${B.length===1?"feição":"feições"}${D.length>0?` · ${D.length} subcamadas`:""}">${B.length}</span>`:""}`}
270
+ ${z.length>0||!G?`<span class="ui-count-chip" title="${z.length} ${z.length===1?"feição":"feições"}${q.length>0?` · ${q.length} subcamadas`:""}">${z.length}</span>`:""}`}
293
271
  </div>
294
272
 
295
273
  <div class="ui-col ui-col-actions">
296
- <button class="ui-micro-btn" data-layer-fit="${C}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${b.alvoEnquadrar}</button>
297
- <button class="ui-micro-btn ${ce?"active":""}" data-layer-settings="${C}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${ce}">${b.engrenagem}</button>
274
+ <button class="ui-micro-btn" data-layer-fit="${E}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${v.alvoEnquadrar}</button>
275
+ <button class="ui-micro-btn ${ce?"active":""}" data-layer-settings="${E}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${ce}">${v.engrenagem}</button>
298
276
  </div>
299
277
 
300
- <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">
301
- <div class="ui-target-circle ${Ce?"selected":ia?"partial":""}"></div>
278
+ <div class="ui-col ui-col-target" data-layer-target="${E}" 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 ${Ce?"selected":ta?"partial":""}"></div>
302
280
  </div>
303
281
  </div>
304
282
 
305
- ${pa}
283
+ ${ua}
306
284
 
307
- <div class="ui-children-container ${F>0?"is-subchildren":""}" role="group" style="display: ${W?"block":"none"};">
308
- ${fa}
285
+ <div class="ui-children-container ${M>0?"is-subchildren":""}" role="group" style="display: ${J?"block":"none"};">
286
+ ${pa}
287
+ ${sa}
309
288
  ${la}
310
- ${ca}
311
- ${G.length===0&&B.length===0?`<div class="ui-empty-row"><span>${U?"Grupo vazio (adicione subcamadas ou feições)":"Nenhum elemento neste grupo"}</span></div>`:""}
289
+ ${H.length===0&&z.length===0?`<div class="ui-empty-row"><span>${G?"Grupo vazio (adicione subcamadas ou feições)":"Nenhum elemento neste grupo"}</span></div>`:""}
312
290
  </div>
313
291
  </div>
314
- `},k=oe(r),z=v&&v.camadasVisiveis.size===0?`<div class="ui-search-empty" role="status">Nenhum resultado para “${M((s||"").trim())}”</div>`:k.map(S=>E(S)).join("");return`
315
- ${h}
292
+ `},L=oe(r),P=b&&b.camadasVisiveis.size===0?`<div class="ui-search-empty" role="status">Nenhum resultado para “${$((s||"").trim())}”</div>`:L.map(S=>I(S)).join("");return`
293
+ ${x}
316
294
  <div class="ui-panel-box">
317
295
  <div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true" part="arvore">
318
- ${z}
296
+ ${P}
319
297
  </div>
320
298
  </div>
321
- `}function Sa(e){return[{gatilho:"data-layer-name-trigger",input:"data-inline-layer-input",marcarEditando:r=>{e.editingLayerId=r},aplicar:(r,a)=>{const i=e.camadas.find(t=>t.id===r);return!a||!i||i.name===a?null:(i.name=a,{detalhe:{camadaId:r,novoNome:a,camada:i},salvar:!0})},emitir:r=>e.dispararEvento("ui-camada-renomeada",r)},{gatilho:"data-feat-name-trigger",input:"data-inline-feat-input",marcarEditando:r=>{e.editingFeatureId=r},aplicar:(r,a)=>{const i=e.feicoes.find(t=>t.id===r);return!a||!i||i.name===a?null:(i.name=a,{detalhe:{feicaoId:r,novoNome:a,feicao:i},salvar:!1})},emitir:r=>e.dispararEvento("ui-feicao-renomeada",r)}]}function Ma(e,r){for(const a of Sa(e))r.querySelectorAll(`[${a.gatilho}]`).forEach(i=>{i.addEventListener("dblclick",t=>{t.stopPropagation();const o=i.getAttribute(a.gatilho);if(!o)return;a.marcarEditando(o),e.solicitarRenderizacao();const n=T(r,a.input,o);if(!n)return;n.focus(),n.select();let l=!1;const c=s=>{var u;if(!l){if(l=!0,a.marcarEditando(null),s){const f=a.aplicar(o,n.value.trim());f&&(f.salvar&&((u=e.salvarLembrancaEstado)==null||u.call(e)),a.emitir(f.detalhe))}e.solicitarRenderizacao()}};n.addEventListener("keydown",s=>{s.key==="Enter"?(s.preventDefault(),c(!0)):s.key==="Escape"&&(s.preventDefault(),c(!1))}),n.addEventListener("blur",()=>c(!0))})})}const Fa=["dragging","drop-above","drop-below","drop-into"];class Ye{constructor(r,a){A(this,"host");A(this,"shadow");A(this,"cancelarToque",null);this.host=r,this.shadow=a}bindAll(){this.bindInlineRename(),this.bindDragAndDrop(),this.bindTouchDragAndDrop()}destruir(){var r;(r=this.cancelarToque)==null||r.call(this),this.cancelarToque=null}bindInlineRename(){Ma(this.host,this.shadow)}limparClassesDeArraste(){this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(r=>{r.classList.remove(...Fa)})}aposReordenarCamadas(){var r,a;(a=(r=this.host).salvarLembrancaEstado)==null||a.call(r),this.host.dispararEvento("ui-camadas-reordenadas",{camadas:[...this.host.camadas]}),this.host.solicitarRenderizacao()}emitirFeicaoMovida(r){this.host.dispararEvento("ui-feicao-movida",{feicaoId:r.feicao.id,camadaOrigemId:r.camadaOrigemId,camadaDestinoId:r.camadaDestinoId,feicao:r.feicao})}arrasteBloqueado(r){return!!r.closest("input, button, select")||!!this.host.editingLayerId||!!this.host.editingFeatureId}bindDragAndDrop(){let r=null,a=null,i=null;this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach(t=>{const o=t.getAttribute("data-layer-id");o&&(t.addEventListener("dragstart",n=>{const l=n;if(this.arrasteBloqueado(l.target)){l.preventDefault();return}r="layer",a=o,l.dataTransfer&&(l.dataTransfer.setData("text/plain",JSON.stringify({type:"layer",id:o})),l.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",n=>{const l=n;if(l.preventDefault(),l.stopPropagation(),l.dataTransfer&&(l.dataTransfer.dropEffect="move"),r==="layer"){if(a===o)return;const c=t.getBoundingClientRect(),s=ka((l.clientY-c.top)/c.height);t.classList.toggle("drop-above",s==="acima"),t.classList.toggle("drop-below",s==="abaixo"),t.classList.toggle("drop-into",s==="dentro")}else r==="feature"&&t.classList.add("drop-into")}),t.addEventListener("dragleave",n=>{const l=n.relatedTarget;l&&t.contains(l)||t.classList.remove("drop-above","drop-below","drop-into")}),t.addEventListener("drop",n=>{var s;const l=n;l.preventDefault(),l.stopPropagation();const c=t.classList.contains("drop-into")?"dentro":t.classList.contains("drop-above")?"acima":"abaixo";if(this.limparClassesDeArraste(),r==="layer"){if(!a||a===o||!this.host.camadas.some(f=>f.id===a)||!this.host.camadas.some(f=>f.id===o))return;const u=Ia(this.host.camadas,a,o,c);(u==null?void 0:u.tipo)==="hierarquia"?((s=this.host.expandedLayers)==null||s.add(u.novoParentId),this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:u.camada.id,novoParentId:u.novoParentId,parentAnteriorId:u.parentAnteriorId,camada:u.camada})):u&&u.parentAnteriorId!==u.novoParentId&&this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:u.camada.id,novoParentId:u.novoParentId,parentAnteriorId:u.parentAnteriorId,camada:u.camada}),this.aposReordenarCamadas()}else if(r==="feature"){if(!i)return;const u=Ca(this.host.feicoes,this.host.camadas,i,o);u&&(this.emitirFeicaoMovida(u),this.host.solicitarRenderizacao())}}),t.addEventListener("dragend",()=>{r=null,a=null,i=null,this.limparClassesDeArraste()}))}),this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach(t=>{const o=t.getAttribute("data-feat-row"),n=t.getAttribute("data-feat-layer");o&&(t.addEventListener("dragstart",l=>{const c=l;if(this.arrasteBloqueado(c.target)){c.preventDefault();return}c.stopPropagation(),r="feature",i=o,a=n,c.dataTransfer&&(c.dataTransfer.setData("text/plain",JSON.stringify({type:"feature",id:o,layerId:n})),c.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",l=>{const c=l;if(r!=="feature"||i===o)return;c.preventDefault(),c.stopPropagation(),c.dataTransfer&&(c.dataTransfer.dropEffect="move");const s=t.getBoundingClientRect(),u=c.clientY-s.top<s.height/2;t.classList.toggle("drop-above",u),t.classList.toggle("drop-below",!u)}),t.addEventListener("dragleave",l=>{const c=l.relatedTarget;c&&t.contains(c)||t.classList.remove("drop-above","drop-below")}),t.addEventListener("drop",l=>{const c=l;if(r!=="feature"||!i||i===o)return;c.preventDefault(),c.stopPropagation();const s=t.classList.contains("drop-above");this.limparClassesDeArraste();const u=$a(this.host.feicoes,i,o,s);u&&(u.mudouDeCamada&&this.emitirFeicaoMovida(u),this.host.dispararEvento("ui-feicoes-reordenadas",{feicoes:[...this.host.feicoes]}),this.host.solicitarRenderizacao())}),t.addEventListener("dragend",l=>{l.stopPropagation(),r=null,i=null,a=null,this.limparClassesDeArraste()}))})}bindTouchDragAndDrop(){this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach(r=>{const a=r.closest(".ui-layer-row");if(!a)return;const i=a.getAttribute("data-layer-id");i&&r.addEventListener("pointerdown",t=>{var f;const o=t;if(o.pointerType==="mouse"&&o.button!==0||this.host.editingLayerId||this.host.editingFeatureId)return;(f=this.cancelarToque)==null||f.call(this);let n=null,l=!1;const c=p=>{p.preventDefault(),a.classList.add("dragging");const m=this.shadow.elementFromPoint(p.clientX,p.clientY),d=m?m.closest(".ui-layer-row"):null;if(n&&n!==d&&n.classList.remove("drop-above","drop-below"),d&&d!==a){n=d;const g=d.getBoundingClientRect();l=p.clientY-g.top<g.height/2,d.classList.toggle("drop-above",l),d.classList.toggle("drop-below",!l)}else n=null},s=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",u),window.removeEventListener("pointercancel",u),this.cancelarToque=null},u=()=>{s();const p=n==null?void 0:n.getAttribute("data-layer-id");this.limparClassesDeArraste(),p&&La(this.host.camadas,i,p,l)&&this.aposReordenarCamadas()};this.cancelarToque=()=>{s(),this.limparClassesDeArraste()},window.addEventListener("pointermove",c,{passive:!1}),window.addEventListener("pointerup",u),window.addEventListener("pointercancel",u)})})}}const za="ui_camadas_estado_";function Ke(e,r){const a=(e||r||"default").trim();return`${za}${a}`}function te(e){if(typeof window>"u"||typeof localStorage>"u")return null;try{const r=localStorage.getItem(e);if(!r)return null;const a=JSON.parse(r);if(a&&typeof a=="object")return a}catch(r){console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`,r)}return null}function Xe(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 Qe(e){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.removeItem(e)}catch{}}function Le(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 We(e,r,a,i){var f;if(!Array.isArray(e))return;const t=(r==null?void 0:r.camadasOverrides)||{},o=new Set((r==null?void 0:r.expandedLayerIds)||[]),n=new Set((r==null?void 0:r.collapsedLayerIds)||[]),l=o.size>0||n.size>0;for(let p=0;p<e.length;p++){const m=e[p],d=t[m.id];if(i==null||i.set(m.id,Le(m)),d){const g=d.origem,v=x=>{var $;const L=($=i==null?void 0:i.get(m.id))==null?void 0:$[x];return g!==void 0&&g[x]!==L};typeof d.name=="string"&&d.name.trim()&&!v("name")&&(m.name=d.name),typeof d.visible=="boolean"&&!v("visible")&&(m.visible=d.visible),typeof d.locked=="boolean"&&!v("locked")&&(m.locked=d.locked),typeof d.opacity=="number"&&!v("opacity")&&(m.opacity=d.opacity),typeof d.color=="string"&&!v("color")&&(m.color=d.color),d.parentId!==void 0&&!v("parentId")&&(m.parentId=d.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 p=0;p<e.length;p++){const m=e[p];m.parentId&&(m.parentId===m.id||le(e,m.parentId,m.id))&&(m.parentId=((f=i==null?void 0:i.get(m.id))==null?void 0:f.parentId)??null)}const c=new Set(e.map(p=>p.id)),s=r==null?void 0:r.ordemOrigemIds;if(!(Array.isArray(s)&&(()=>{const p=new Set(s),m=d=>d.filter(g=>c.has(g)&&p.has(g)).join("|");return m(s)!==m(e.map(d=>d.id))})())&&Array.isArray(r==null?void 0:r.ordemCamadasIds)&&r.ordemCamadasIds.length>0){const p=new Map;r.ordemCamadasIds.forEach((m,d)=>p.set(m,d)),e.sort((m,d)=>{const g=p.has(m.id)?p.get(m.id):9999,v=p.has(d.id)?p.get(d.id):9999;return g-v})}}function Je(e){const{estadoAnterior:r,camadas:a,expandedLayers:i}=e;let t=(r==null?void 0:r.expandedLayerIds)||[],o=(r==null?void 0:r.collapsedLayerIds)||[],n=(r==null?void 0:r.ordemCamadasIds)||[],l=r==null?void 0:r.ordemOrigemIds;const c={...(r==null?void 0:r.camadasOverrides)||{}};a.length>0&&(t=[],o=[],n=a.map(s=>s.id),l=e.origensCamadas?[...e.origensCamadas.keys()]:n,a.forEach(s=>{var u,f;i.has(s.id)?t.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:((u=e.origensCamadas)==null?void 0:u.get(s.id))??((f=c[s.id])==null?void 0:f.origem)}}));for(const s of e.camadasRemovidas??[])delete c[s];return{versao:1,expandedLayerIds:t,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 Ba=':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height: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:32px;min-height:32px;background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 8px;gap:6px;box-sizing:border-box;overflow:hidden;position:relative}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);padding:1px 5px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 24%,transparent);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 7px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#fff3}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border-color:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 32%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 22%,transparent);border-color:var(--ui-cor-primaria, #00E08A);color:#fff}.ui-footer-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-btn.btn-clear-footer{color:var(--ui-cor-texto-secundario, #888899);margin-left:2px}.ui-footer-btn.btn-clear-footer:hover{color:#fff;background:#ffffff1f}.ui-footer-color-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;flex-shrink:0}.ui-footer-color-preview{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 0 4px #0006;pointer-events:none;transition:transform .15s ease,border-color .15s ease}.ui-footer-color-wrapper:hover .ui-footer-color-preview{transform:scale(1.15);border-color:#fff}.ui-footer-color{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0;border:none}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;max-width:95px;flex-shrink:0}.ui-footer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10px;height:22px;padding:0 4px;cursor:pointer;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){border-color:#ffffff40}.ui-footer-select:focus{outline:none;border-color:var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#ffffff40}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-toggle{display:flex;align-items:center;gap:6px;width:100%;padding:2px;background:transparent;border:0;border-radius:var(--ui-raio-sm, 4px);font:inherit;color:inherit;cursor:pointer;text-align:left}.ui-basemap-toggle:hover .ui-basemap-title{color:var(--ui-cor-texto, #e1e1e6)}.ui-basemap-toggle:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:1px}.ui-basemap-atual{flex:1 1 auto;min-width:0;font-size:10px;color:var(--ui-cor-primaria, #00E08A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.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 qa(e,r){r.querySelectorAll("[data-layer-row]").forEach(t=>{t.addEventListener("click",o=>{if(o.target.closest("[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], [data-layer-color], input, button"))return;const l=t.getAttribute("data-layer-row");l&&e.definirCamadaAtiva(l,!0)})}),r.querySelectorAll("[data-layer-expand]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-expand");if(!n)return;e.expandedLayers.has(n)?e.expandedLayers.delete(n):e.expandedLayers.add(n);const l=t.closest(".ui-layer-group"),c=t.querySelector(".ui-chevron-icon"),s=e.expandedLayers.has(n);if(c&&c.classList.toggle("open",s),l){l.setAttribute("aria-expanded",String(s));const u=l.querySelector(".ui-children-container");u&&(u.style.display=s?"block":"none")}P(t,s?"Recolher grupo":"Expandir grupo"),Da(e,r),e.salvarLembrancaEstado()})}),r.querySelectorAll("[data-layer-eye]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-eye"),l=e.camadas.find(c=>c.id===n);if(l){l.visible=l.visible===!1;const c=l.visible!==!1;t.innerHTML=c?b.olhoAberto:b.olhoFechado,P(t,c?"Ocultar Camada":"Exibir Camada");const s=t.closest(".ui-layer-row");s&&s.classList.toggle("hidden-layer",!c),Pa(e,r),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-visibilidade",{camadaId:l.id,visivel:c})}})}),r.querySelectorAll("[data-layer-lock]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-lock"),l=e.camadas.find(c=>c.id===n);l&&(l.locked=!l.locked,t.innerHTML=l.locked?b.cadeadoTrancado:b.cadeadoAberto,t.classList.toggle("ui-lock-open",!l.locked),P(t,l.locked?"Desbloquear Camada":"Bloquear Camada"),Ta(e,r,l.id,l.locked===!0),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-bloqueio",{camadaId:l.id,bloqueado:l.locked}))})}),r.querySelectorAll("[data-layer-fit]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-fit");n&&e.dispararEvento("ui-camada-enquadrar",{camadaId:n})})}),r.querySelectorAll("[data-layer-settings]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-settings");e.activeSettingsLayerId=e.activeSettingsLayerId===n?null:n,e.solicitarRenderizacao()})}),r.querySelectorAll("[data-layer-settings-close]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation(),e.activeSettingsLayerId=null,e.solicitarRenderizacao()})});const a=(t,o,n)=>{var m;const l=e.camadas.find(d=>d.id===t);if(!l)return;const c=N(o,l.color||"#00E08A");l.color=c;const s=r.getElementById(`sample-color-${t}`);s&&(s.style.backgroundColor=c);const u=r.getElementById(`hex-color-${t}`);u&&(u.textContent=c.toUpperCase());const f=r.getElementById(`settings-drawer-${t}`);f&&f.style.setProperty("--drawer-cor-camada",c);const p=T(r,"data-layer-row",t);if(p){(m=p.closest(".ui-layer-group"))==null||m.style.setProperty("--layer-active-color",c);const d=p.querySelector(".ui-col-colorbar");d&&(d.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(t=>{const o=t,n=l=>c=>{const s=o.getAttribute("data-layer-color-picker");if(!s)return;const u=c.target.value;a(s,u,l)};o.addEventListener("input",n(!1)),o.addEventListener("change",n(!0))}),r.querySelectorAll("[data-layer-color]").forEach(t=>{const o=n=>{n.stopPropagation();const l=t.getAttribute("data-layer-color"),c=e.camadas.find(s=>s.id===l);!l||!c||ha.abrirSeletorCor({ancora:t,titulo:`Cor · ${c.name||"Camada"}`,modo:"simples",cor:N(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)})};t.addEventListener("click",o),t.addEventListener("keydown",n=>{const l=n.key;(l==="Enter"||l===" ")&&(n.preventDefault(),o(n))})});const i=(t,o)=>{const n=e.camadas.find(s=>s.id===t);if(!n)return;n.opacity=o;const l=r.getElementById(`badge-op-${t}`);l&&(l.textContent=`${Math.round(o*100)}%`);const c=T(r,"data-layer-opacity-slider",t);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(t=>{t.addEventListener("input",o=>{const n=t.getAttribute("data-layer-opacity-slider");if(!n)return;const l=parseFloat(o.target.value);i(n,l)})}),r.querySelectorAll("[data-delete-layer]").forEach(t=>{let o=null;t.addEventListener("click",n=>{n.stopPropagation();const l=t.getAttribute("data-delete-layer");if(!l)return;if(t.classList.contains("confirming")){o&&clearTimeout(o),e.dispararEvento("ui-camada-excluida",{camadaId:l});const s=e.selectedFeatureIds.size;e.camadas.forEach(u=>{u.parentId===l&&(u.parentId=null)}),e.removerCamada(l),e.selectedFeatureIds.size!==s&&e.notificarMudancaSelecao()}else{t.classList.add("confirming");const s=t.querySelector(".ui-btn-label");s&&(s.textContent="Confirmar Exclusão?"),o=setTimeout(()=>{t.classList.remove("confirming"),s&&(s.textContent="Excluir Camada")},3500)}})}),r.querySelectorAll("[data-layer-parent-select]").forEach(t=>{t.addEventListener("change",o=>{const n=o.target,l=n.getAttribute("data-layer-parent-select"),c=n.value||null,s=e.camadas.find(u=>u.id===l);if(s){if(c&&(c===s.id||le(e.camadas,c,s.id))){n.value=s.parentId||"";return}const u=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:u,camada:s}),e.solicitarRenderizacao()}})}),r.querySelectorAll("[data-add-sublayer]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-add-sublayer");e.dispararEvento("ui-camada-adicionar",{parentId:n})})}),r.querySelectorAll("[data-layer-show-more]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-show-more");n&&e.incrementarLimiteFeicoes(n)})}),r.querySelectorAll("[data-layer-target]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=o,l=t.getAttribute("data-layer-target");if(!l)return;const c=ne(e.camadas,e.feicoes,l),s=Y(c,e.searchQuery);if(s.length===0)return;s.every(f=>e.selectedFeatureIds.has(f.id))?s.forEach(f=>e.selectedFeatureIds.delete(f.id)):(!n.ctrlKey&&!n.metaKey&&e.selectedFeatureIds.clear(),s.forEach(f=>e.selectedFeatureIds.add(f.id))),e.lastClickedFeatureId=s[s.length-1].id,e.sincronizarSelecaoDOM(),e.notificarMudancaSelecao()})})}function Da(e,r){const a=r.getElementById("btn-toggle-all-expand");if(!a)return;const i=e.camadas.length>0&&e.camadas.every(o=>e.expandedLayers.has(o.id)),t=a.querySelector(".ui-chevron-icon");t&&t.classList.toggle("open",i),P(a,i?"Recolher Todos os Grupos":"Expandir Todos os Grupos")}function Pa(e,r){const a=r.getElementById("btn-toggle-all-vis");if(!a)return;const i=e.camadas.every(t=>t.visible!==!1);a.innerHTML=i?b.olhoAberto:b.olhoFechado,P(a,i?"Ocultar Todas as Camadas":"Exibir Todas as Camadas")}function Ta(e,r,a,i){e.feicoes.filter(t=>t.layerId===a).forEach(t=>{const o=T(r,"data-feat-lock",t.id);if(!o)return;const n=t.locked===!0||i;o.innerHTML=n?b.cadeadoTrancado:b.cadeadoAberto,o.classList.toggle("ui-lock-open",!n),i?o.setAttribute("data-locked-by-layer","true"):o.removeAttribute("data-locked-by-layer"),P(o,i?"Bloqueada pela camada":n?"Desbloquear Feição":"Bloquear Feição")})}function Ra(e,r){const a=r.getElementById("btn-footer-vis");a&&a.addEventListener("click",()=>{const f=e.feicoes.filter(d=>e.selectedFeatureIds.has(d.id));if(f.length===0)return;const m=!f.some(d=>d.visible!==!1);f.forEach(d=>d.visible=m),e.dispararEvento("ui-acao-massa",{acao:"visibilidade",feicoesIds:f.map(d=>d.id),feicoes:f,valor:m}),e.solicitarRenderizacao()});const i=r.getElementById("btn-footer-lock");i&&i.addEventListener("click",()=>{const f=e.feicoes.filter(d=>e.selectedFeatureIds.has(d.id));if(f.length===0)return;const m=!f.some(d=>d.locked===!0);f.forEach(d=>d.locked=m),e.dispararEvento("ui-acao-massa",{acao:"bloqueio",feicoesIds:f.map(d=>d.id),feicoes:f,valor:m}),e.solicitarRenderizacao()});const t=r.getElementById("input-footer-color"),o=r.getElementById("preview-footer-color");t&&(t.addEventListener("input",f=>{const p=f.target.value;o&&(o.style.backgroundColor=p)}),t.addEventListener("change",f=>{const p=f.target.value;o&&(o.style.backgroundColor=p);const m=e.feicoes.filter(d=>e.selectedFeatureIds.has(d.id));m.length!==0&&(m.forEach(d=>{d.color=p,d.style={...d.style||{},fillColor:p,strokeColor:p}}),e.dispararEvento("ui-acao-massa",{acao:"cor",feicoesIds:m.map(d=>d.id),feicoes:m,valor:p}),e.solicitarRenderizacao())}));const n=r.getElementById("select-footer-move");n&&n.addEventListener("change",f=>{const p=f.target.value;if(!p)return;const m=e.feicoes.filter(g=>e.selectedFeatureIds.has(g.id));if(m.length===0)return;const d=new Map(m.map(g=>[g.id,g.layerId]));m.forEach(g=>g.layerId=p),m.forEach(g=>{d.get(g.id)!==p&&e.dispararEvento("ui-feicao-movida",{feicaoId:g.id,camadaOrigemId:d.get(g.id),camadaDestinoId:p,feicao:g})}),e.dispararEvento("ui-acao-massa",{acao:"mover",feicoesIds:m.map(g=>g.id),feicoes:m,valor:p}),e.solicitarRenderizacao()});const l=r.getElementById("btn-footer-new-layer");l&&l.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const c=r.getElementById("btn-footer-new-group");c&&c.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const s=r.getElementById("btn-footer-del");if(s){let f=null;const p="Excluir selecionados";s.addEventListener("click",()=>{const m=Array.from(e.selectedFeatureIds);if(m.length===0)return;if(!s.classList.contains("confirming")){s.classList.add("confirming"),P(s,`Clique novamente para excluir ${m.length} selecionado(s)`),f=setTimeout(()=>{s.classList.remove("confirming"),P(s,p)},3500);return}f&&clearTimeout(f);const d=e.feicoes.filter(g=>e.selectedFeatureIds.has(g.id));e.feicoes=e.feicoes.filter(g=>!e.selectedFeatureIds.has(g.id)),e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.dispararEvento("ui-acao-massa",{acao:"excluir",feicoesIds:m,feicoes:d}),e.notificarMudancaSelecao(),e.solicitarRenderizacao()})}const u=r.getElementById("btn-footer-clear");u&&u.addEventListener("click",()=>e.limparSelecao(!0))}const Oa=[{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"}],be={olho:"[data-layer-eye], [data-feat-eye]",cadeado:"[data-layer-lock], [data-feat-lock]",selecao:"[data-layer-target], [data-feat-target]"},ja=3;function Na(e){return Oa.find(r=>e.hasAttribute(r.atributo))??null}function ve(e,r){const a=Na(r);if(!a)return null;const i=r.getAttribute(a.atributo);if(!i)return null;if(a.tipo==="olho"){const o=a.entidade==="camada"?e.camadas.find(n=>n.id===i):e.feicoes.find(n=>n.id===i);return o?o.visible!==!1:null}if(a.tipo==="cadeado"){if(r.hasAttribute("data-locked-by-layer"))return null;const o=a.entidade==="camada"?e.camadas.find(n=>n.id===i):e.feicoes.find(n=>n.id===i);return o?o.locked===!0:null}if(a.entidade==="feicao")return e.selectedFeatureIds.has(i);const t=Y(ne(e.camadas,e.feicoes,i),e.searchQuery);return t.length===0?null:t.every(o=>e.selectedFeatureIds.has(o.id))}function qe(e,r,a=!1){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,ctrlKey:r,shiftKey:a}))}let q=null;function Ha(e){(q==null?void 0:q.host)===e&&q.cancelar()}function Ga(e,r){Object.keys(be).forEach(a=>{r.querySelectorAll(be[a]).forEach(i=>{i.addEventListener("pointerdown",t=>Ua(e,r,a,i,t))})})}function Ua(e,r,a,i,t){if(t.pointerType==="mouse"&&t.button!==0||e.editingLayerId||e.editingFeatureId||ve(e,i)===null)return;q==null||q.cancelar();const o=be[a],n=t.ctrlKey||t.metaKey,l=t.shiftKey;let c=!1,s=!1,u=t.clientY;const f=new Set([i]),p=h=>{h.preventDefault(),h.stopImmediatePropagation()},m=h=>{h.stopPropagation(),h.preventDefault()},d=h=>h.preventDefault(),g=h=>{f.has(h)||(f.add(h),ve(e,h)!==s&&qe(h,a==="selecao"))},v=()=>{c=!0,qe(i,n,l),s=ve(e,i)===!0,r.addEventListener("selectstart",d),document.body.style.userSelect="none"},x=h=>{var S,w;if(!c){if(Math.hypot(h.clientX-t.clientX,h.clientY-t.clientY)<ja)return;const F=(S=r.elementFromPoint(h.clientX,h.clientY))==null?void 0:S.closest(o);if(!F||F===i)return;v()}h.preventDefault();const E=Math.min(u,h.clientY),k=Math.max(u,h.clientY);r.querySelectorAll(o).forEach(F=>{const D=F.getBoundingClientRect();if(D.height===0)return;const G=D.top+D.height/2;G>=E&&G<=k&&g(F)});const z=(w=r.elementFromPoint(h.clientX,h.clientY))==null?void 0:w.closest(o);z&&g(z),u=h.clientY},L=(h=!1)=>{(q==null?void 0:q.cancelar)===y&&(q=null),window.removeEventListener("pointermove",x),window.removeEventListener("pointerup",$),window.removeEventListener("pointercancel",$),window.removeEventListener("dragstart",p,!0),r.removeEventListener("selectstart",d),c&&(document.body.style.userSelect="",h||(window.addEventListener("click",m,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",m,!0),0)))},$=()=>L(),y=()=>L(!0);q={host:e,cancelar:y},window.addEventListener("dragstart",p,!0),window.addEventListener("pointermove",x,{passive:!1}),window.addEventListener("pointerup",$),window.addEventListener("pointercancel",$)}function Va(e,r){const a=r.getElementById("btn-toggle-all-vis");a&&a.addEventListener("click",()=>e.alternarVisibilidadeTodas(!0));const i=r.getElementById("btn-toggle-all-expand");i&&i.addEventListener("click",l=>{l.stopPropagation(),e.camadas.length>0&&e.camadas.every(s=>e.expandedLayers.has(s.id))?e.colapsarTodas():e.expandirTodas()});const t=r.getElementById("btn-add-layer");t&&t.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const o=r.getElementById("btn-add-group");o&&o.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const n=r.getElementById("btn-colapsar");n&&n.addEventListener("click",()=>e.colapsar(!0)),_a(e,r)}function _a(e,r){const a=r.getElementById("input-layer-search"),i=r.getElementById("btn-clear-layer-search"),t=()=>{var o;e.searchQuery="",e.solicitarRenderizacao(),(o=r.getElementById("input-layer-search"))==null||o.focus()};if(a){const o=Oe(()=>e.solicitarRenderizacao(),75);a.addEventListener("input",n=>{e.searchQuery=n.target.value,o()}),a.addEventListener("keydown",n=>{n.key==="Escape"&&e.searchQuery&&(n.preventDefault(),t())})}i&&i.addEventListener("click",t)}function Ya(e,r){r.querySelectorAll("[data-feat-select]").forEach(a=>{a.addEventListener("click",i=>{if(e.editingFeatureId)return;const t=i;if(t.target.closest("[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"))return;const n=a.getAttribute("data-feat-select");n&&e.selecionarFeicao(n,t.ctrlKey||t.metaKey,t.shiftKey,!0)})}),r.querySelectorAll("[data-feat-target]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=i,o=a.getAttribute("data-feat-target");o&&e.selecionarFeicao(o,t.ctrlKey||t.metaKey,t.shiftKey,!0)})}),r.querySelectorAll("[data-feat-eye]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=a.getAttribute("data-feat-eye"),o=e.feicoes.find(n=>n.id===t);if(o){o.visible=o.visible===!1;const n=o.visible!==!1;a.innerHTML=n?b.olhoAberto:b.olhoFechado,P(a,n?"Ocultar Feição":"Exibir Feição");const 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",i=>{if(i.stopPropagation(),a.hasAttribute("data-locked-by-layer"))return;const t=a.getAttribute("data-feat-lock"),o=e.feicoes.find(n=>n.id===t);o&&(o.locked=!o.locked,a.innerHTML=o.locked?b.cadeadoTrancado:b.cadeadoAberto,a.classList.toggle("ui-lock-open",!o.locked),P(a,o.locked?"Desbloquear Feição":"Bloquear Feição"),e.dispararEvento("ui-feicao-bloqueio",{feicaoId:o.id,bloqueado:o.locked}))})}),r.querySelectorAll("[data-feat-fit]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=a.getAttribute("data-feat-fit");t&&e.dispararEvento("ui-feicao-enquadrar",{feicaoId:t})})})}function Ka(e,r){var a;r.querySelectorAll("[data-basemap-thumb]").forEach(i=>{i.addEventListener("error",()=>{const t=document.createElement("div");t.className="ui-basemap-preview-none",t.innerHTML=b.mapa,i.replaceWith(t)},{once:!0})}),(a=r.querySelector("[data-basemap-toggle]"))==null||a.addEventListener("click",()=>{e.alternarMapasBaseRecolhido(!0)}),r.querySelectorAll("[data-basemap-id]").forEach(i=>{i.addEventListener("click",()=>{const t=i.getAttribute("data-basemap-id");t&&e.selecionarMapaBase(t,!0)})})}function Xa(e,r){Va(e,r),qa(e,r),Ya(e,r),Ka(e,r),Ra(e,r),Ga(e,r)}function Qa(e,r,a,i){var g,v;const t=_e({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?je(e.mapasBase,e.mapaBaseAtivo,e.mapasBaseRecolhido):"",n=e.mostrarRodape?He(e.camadas,e.feicoes,e.selectedFeatureIds):"",l=r.getElementById("ui-layer-tree-mount"),c=a.scrollTop,s=l?l.scrollTop:0,u=r.activeElement,f=u&&a.contains(u)?u.id:"",p=u&&!f&&a.contains(u)?Array.from(u.attributes).find(x=>x.name.startsWith("data-")&&x.value!==""):void 0,m=u&&"selectionStart"in u?u.selectionStart:null;a.innerHTML=`
299
+ `}function Ma(e){return[{gatilho:"data-layer-name-trigger",input:"data-inline-layer-input",marcarEditando:r=>{e.editingLayerId=r},aplicar:(r,a)=>{const i=e.camadas.find(t=>t.id===r);return!a||!i||i.name===a?null:(i.name=a,{detalhe:{camadaId:r,novoNome:a,camada:i},salvar:!0})},emitir:r=>e.dispararEvento("ui-camada-renomeada",r)},{gatilho:"data-feat-name-trigger",input:"data-inline-feat-input",marcarEditando:r=>{e.editingFeatureId=r},aplicar:(r,a)=>{const i=e.feicoes.find(t=>t.id===r);return!a||!i||i.name===a?null:(i.name=a,{detalhe:{feicaoId:r,novoNome:a,feicao:i},salvar:!1})},emitir:r=>e.dispararEvento("ui-feicao-renomeada",r)}]}function Fa(e,r){for(const a of Ma(e))r.querySelectorAll(`[${a.gatilho}]`).forEach(i=>{i.addEventListener("dblclick",t=>{t.stopPropagation();const o=i.getAttribute(a.gatilho);if(!o)return;a.marcarEditando(o),e.solicitarRenderizacao();const n=T(r,a.input,o);if(!n)return;n.focus(),n.select();let l=!1;const c=s=>{var d;if(!l){if(l=!0,a.marcarEditando(null),s){const f=a.aplicar(o,n.value.trim());f&&(f.salvar&&((d=e.salvarLembrancaEstado)==null||d.call(e)),a.emitir(f.detalhe))}e.solicitarRenderizacao()}};n.addEventListener("keydown",s=>{s.key==="Enter"?(s.preventDefault(),c(!0)):s.key==="Escape"&&(s.preventDefault(),c(!1))}),n.addEventListener("blur",()=>c(!0))})})}const za=["dragging","drop-above","drop-below","drop-into"];class Ve{constructor(r,a){y(this,"host");y(this,"shadow");y(this,"cancelarToque",null);this.host=r,this.shadow=a}bindAll(){this.bindInlineRename(),this.bindDragAndDrop(),this.bindTouchDragAndDrop()}destruir(){var r;(r=this.cancelarToque)==null||r.call(this),this.cancelarToque=null}bindInlineRename(){Fa(this.host,this.shadow)}limparClassesDeArraste(){this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(r=>{r.classList.remove(...za)})}aposReordenarCamadas(){var r,a;(a=(r=this.host).salvarLembrancaEstado)==null||a.call(r),this.host.dispararEvento("ui-camadas-reordenadas",{camadas:[...this.host.camadas]}),this.host.solicitarRenderizacao()}emitirFeicaoMovida(r){this.host.dispararEvento("ui-feicao-movida",{feicaoId:r.feicao.id,camadaOrigemId:r.camadaOrigemId,camadaDestinoId:r.camadaDestinoId,feicao:r.feicao})}arrasteBloqueado(r){return!!r.closest("input, button, select")||!!this.host.editingLayerId||!!this.host.editingFeatureId}bindDragAndDrop(){let r=null,a=null,i=null;this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach(t=>{const o=t.getAttribute("data-layer-id");o&&(t.addEventListener("dragstart",n=>{const l=n;if(this.arrasteBloqueado(l.target)){l.preventDefault();return}r="layer",a=o,l.dataTransfer&&(l.dataTransfer.setData("text/plain",JSON.stringify({type:"layer",id:o})),l.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",n=>{const l=n;if(l.preventDefault(),l.stopPropagation(),l.dataTransfer&&(l.dataTransfer.dropEffect="move"),r==="layer"){if(a===o)return;const c=t.getBoundingClientRect(),s=Ia((l.clientY-c.top)/c.height);t.classList.toggle("drop-above",s==="acima"),t.classList.toggle("drop-below",s==="abaixo"),t.classList.toggle("drop-into",s==="dentro")}else r==="feature"&&t.classList.add("drop-into")}),t.addEventListener("dragleave",n=>{const l=n.relatedTarget;l&&t.contains(l)||t.classList.remove("drop-above","drop-below","drop-into")}),t.addEventListener("drop",n=>{var s;const l=n;l.preventDefault(),l.stopPropagation();const c=t.classList.contains("drop-into")?"dentro":t.classList.contains("drop-above")?"acima":"abaixo";if(this.limparClassesDeArraste(),r==="layer"){if(!a||a===o||!this.host.camadas.some(f=>f.id===a)||!this.host.camadas.some(f=>f.id===o))return;const d=La(this.host.camadas,a,o,c);(d==null?void 0:d.tipo)==="hierarquia"?((s=this.host.expandedLayers)==null||s.add(d.novoParentId),this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:d.camada.id,novoParentId:d.novoParentId,parentAnteriorId:d.parentAnteriorId,camada:d.camada})):d&&d.parentAnteriorId!==d.novoParentId&&this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:d.camada.id,novoParentId:d.novoParentId,parentAnteriorId:d.parentAnteriorId,camada:d.camada}),this.aposReordenarCamadas()}else if(r==="feature"){if(!i)return;const d=$a(this.host.feicoes,this.host.camadas,i,o);d&&(this.emitirFeicaoMovida(d),this.host.solicitarRenderizacao())}}),t.addEventListener("dragend",()=>{r=null,a=null,i=null,this.limparClassesDeArraste()}))}),this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach(t=>{const o=t.getAttribute("data-feat-row"),n=t.getAttribute("data-feat-layer");o&&(t.addEventListener("dragstart",l=>{const c=l;if(this.arrasteBloqueado(c.target)){c.preventDefault();return}c.stopPropagation(),r="feature",i=o,a=n,c.dataTransfer&&(c.dataTransfer.setData("text/plain",JSON.stringify({type:"feature",id:o,layerId:n})),c.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",l=>{const c=l;if(r!=="feature"||i===o)return;c.preventDefault(),c.stopPropagation(),c.dataTransfer&&(c.dataTransfer.dropEffect="move");const s=t.getBoundingClientRect(),d=c.clientY-s.top<s.height/2;t.classList.toggle("drop-above",d),t.classList.toggle("drop-below",!d)}),t.addEventListener("dragleave",l=>{const c=l.relatedTarget;c&&t.contains(c)||t.classList.remove("drop-above","drop-below")}),t.addEventListener("drop",l=>{const c=l;if(r!=="feature"||!i||i===o)return;c.preventDefault(),c.stopPropagation();const s=t.classList.contains("drop-above");this.limparClassesDeArraste();const d=Sa(this.host.feicoes,i,o,s);d&&(d.mudouDeCamada&&this.emitirFeicaoMovida(d),this.host.dispararEvento("ui-feicoes-reordenadas",{feicoes:[...this.host.feicoes]}),this.host.solicitarRenderizacao())}),t.addEventListener("dragend",l=>{l.stopPropagation(),r=null,i=null,a=null,this.limparClassesDeArraste()}))})}bindTouchDragAndDrop(){this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach(r=>{const a=r.closest(".ui-layer-row");if(!a)return;const i=a.getAttribute("data-layer-id");i&&r.addEventListener("pointerdown",t=>{var f;const o=t;if(o.pointerType==="mouse"&&o.button!==0||this.host.editingLayerId||this.host.editingFeatureId)return;(f=this.cancelarToque)==null||f.call(this);let n=null,l=!1;const c=p=>{p.preventDefault(),a.classList.add("dragging");const m=this.shadow.elementFromPoint(p.clientX,p.clientY),u=m?m.closest(".ui-layer-row"):null;if(n&&n!==u&&n.classList.remove("drop-above","drop-below"),u&&u!==a){n=u;const g=u.getBoundingClientRect();l=p.clientY-g.top<g.height/2,u.classList.toggle("drop-above",l),u.classList.toggle("drop-below",!l)}else n=null},s=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d),this.cancelarToque=null},d=()=>{s();const p=n==null?void 0:n.getAttribute("data-layer-id");this.limparClassesDeArraste(),p&&Ca(this.host.camadas,i,p,l)&&this.aposReordenarCamadas()};this.cancelarToque=()=>{s(),this.limparClassesDeArraste()},window.addEventListener("pointermove",c,{passive:!1}),window.addEventListener("pointerup",d),window.addEventListener("pointercancel",d)})})}}const Ba="ui_camadas_estado_";function Ye(e,r){const a=(e||r||"default").trim();return`${Ba}${a}`}function te(e){if(typeof window>"u"||typeof localStorage>"u")return null;try{const r=localStorage.getItem(e);if(!r)return null;const a=JSON.parse(r);if(a&&typeof a=="object")return a}catch(r){console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`,r)}return null}function Ke(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 Xe(e){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.removeItem(e)}catch{}}function Le(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 Qe(e,r,a,i){var f;if(!Array.isArray(e))return;const t=(r==null?void 0:r.camadasOverrides)||{},o=new Set((r==null?void 0:r.expandedLayerIds)||[]),n=new Set((r==null?void 0:r.collapsedLayerIds)||[]),l=o.size>0||n.size>0;for(let p=0;p<e.length;p++){const m=e[p],u=t[m.id];if(i==null||i.set(m.id,Le(m)),u){const g=u.origem,b=h=>{var C;const k=(C=i==null?void 0:i.get(m.id))==null?void 0:C[h];return g!==void 0&&g[h]!==k};typeof u.name=="string"&&u.name.trim()&&!b("name")&&(m.name=u.name),typeof u.visible=="boolean"&&!b("visible")&&(m.visible=u.visible),typeof u.locked=="boolean"&&!b("locked")&&(m.locked=u.locked),typeof u.opacity=="number"&&!b("opacity")&&(m.opacity=u.opacity),typeof u.color=="string"&&!b("color")&&(m.color=u.color),u.parentId!==void 0&&!b("parentId")&&(m.parentId=u.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 p=0;p<e.length;p++){const m=e[p];m.parentId&&(m.parentId===m.id||le(e,m.parentId,m.id))&&(m.parentId=((f=i==null?void 0:i.get(m.id))==null?void 0:f.parentId)??null)}const c=new Set(e.map(p=>p.id)),s=r==null?void 0:r.ordemOrigemIds;if(!(Array.isArray(s)&&(()=>{const p=new Set(s),m=u=>u.filter(g=>c.has(g)&&p.has(g)).join("|");return m(s)!==m(e.map(u=>u.id))})())&&Array.isArray(r==null?void 0:r.ordemCamadasIds)&&r.ordemCamadasIds.length>0){const p=new Map;r.ordemCamadasIds.forEach((m,u)=>p.set(m,u)),e.sort((m,u)=>{const g=p.has(m.id)?p.get(m.id):9999,b=p.has(u.id)?p.get(u.id):9999;return g-b})}}function Je(e){const{estadoAnterior:r,camadas:a,expandedLayers:i}=e;let t=(r==null?void 0:r.expandedLayerIds)||[],o=(r==null?void 0:r.collapsedLayerIds)||[],n=(r==null?void 0:r.ordemCamadasIds)||[],l=r==null?void 0:r.ordemOrigemIds;const c={...(r==null?void 0:r.camadasOverrides)||{}};a.length>0&&(t=[],o=[],n=a.map(s=>s.id),l=e.origensCamadas?[...e.origensCamadas.keys()]:n,a.forEach(s=>{var d,f;i.has(s.id)?t.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:((d=e.origensCamadas)==null?void 0:d.get(s.id))??((f=c[s.id])==null?void 0:f.origem)}}));for(const s of e.camadasRemovidas??[])delete c[s];return{versao:1,expandedLayerIds:t,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 qa=`: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-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}.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 Da(e,r){r.querySelectorAll("[data-layer-row]").forEach(t=>{t.addEventListener("click",o=>{if(o.target.closest("[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], [data-layer-color], input, button"))return;const l=t.getAttribute("data-layer-row");l&&e.definirCamadaAtiva(l,!0)})}),r.querySelectorAll("[data-layer-expand]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-expand");if(!n)return;e.expandedLayers.has(n)?e.expandedLayers.delete(n):e.expandedLayers.add(n);const l=t.closest(".ui-layer-group"),c=t.querySelector(".ui-chevron-icon"),s=e.expandedLayers.has(n);if(c&&c.classList.toggle("open",s),l){l.setAttribute("aria-expanded",String(s));const d=l.querySelector(".ui-children-container");d&&(d.style.display=s?"block":"none")}D(t,s?"Recolher grupo":"Expandir grupo"),Pa(e,r),e.salvarLembrancaEstado()})}),r.querySelectorAll("[data-layer-eye]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-eye"),l=e.camadas.find(c=>c.id===n);if(l){l.visible=l.visible===!1;const c=l.visible!==!1;t.innerHTML=c?v.olhoAberto:v.olhoFechado,D(t,c?"Ocultar Camada":"Exibir Camada");const s=t.closest(".ui-layer-row");s&&s.classList.toggle("hidden-layer",!c),Ta(e,r),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-visibilidade",{camadaId:l.id,visivel:c})}})}),r.querySelectorAll("[data-layer-lock]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-lock"),l=e.camadas.find(c=>c.id===n);l&&(l.locked=!l.locked,t.innerHTML=l.locked?v.cadeadoTrancado:v.cadeadoAberto,t.classList.toggle("ui-lock-open",!l.locked),D(t,l.locked?"Desbloquear Camada":"Bloquear Camada"),Ra(e,r,l.id,l.locked===!0),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-bloqueio",{camadaId:l.id,bloqueado:l.locked}))})}),r.querySelectorAll("[data-layer-fit]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-fit");n&&e.dispararEvento("ui-camada-enquadrar",{camadaId:n})})}),r.querySelectorAll("[data-layer-settings]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-settings");e.activeSettingsLayerId=e.activeSettingsLayerId===n?null:n,e.solicitarRenderizacao()})}),r.querySelectorAll("[data-layer-settings-close]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation(),e.activeSettingsLayerId=null,e.solicitarRenderizacao()})});const a=(t,o,n)=>{var m;const l=e.camadas.find(u=>u.id===t);if(!l)return;const c=V(o,l.color||"#00E08A");l.color=c;const s=r.getElementById(`sample-color-${t}`);s&&(s.style.backgroundColor=c);const d=r.getElementById(`hex-color-${t}`);d&&(d.textContent=c.toUpperCase());const f=r.getElementById(`settings-drawer-${t}`);f&&f.style.setProperty("--drawer-cor-camada",c);const p=T(r,"data-layer-row",t);if(p){(m=p.closest(".ui-layer-group"))==null||m.style.setProperty("--layer-active-color",c);const u=p.querySelector(".ui-col-colorbar");u&&(u.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(t=>{const o=t,n=l=>c=>{const s=o.getAttribute("data-layer-color-picker");if(!s)return;const d=c.target.value;a(s,d,l)};o.addEventListener("input",n(!1)),o.addEventListener("change",n(!0))}),r.querySelectorAll("[data-layer-color]").forEach(t=>{const o=n=>{n.stopPropagation();const l=t.getAttribute("data-layer-color"),c=e.camadas.find(s=>s.id===l);!l||!c||ba.abrirSeletorCor({ancora:t,titulo:`Cor · ${c.name||"Camada"}`,modo:"simples",cor:V(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)})};t.addEventListener("click",o),t.addEventListener("keydown",n=>{const l=n.key;(l==="Enter"||l===" ")&&(n.preventDefault(),o(n))})});const i=(t,o)=>{const n=e.camadas.find(s=>s.id===t);if(!n)return;n.opacity=o;const l=r.getElementById(`badge-op-${t}`);l&&(l.textContent=`${Math.round(o*100)}%`);const c=T(r,"data-layer-opacity-slider",t);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(t=>{t.addEventListener("input",o=>{const n=t.getAttribute("data-layer-opacity-slider");if(!n)return;const l=parseFloat(o.target.value);i(n,l)})}),r.querySelectorAll("[data-delete-layer]").forEach(t=>{let o=null;t.addEventListener("click",n=>{n.stopPropagation();const l=t.getAttribute("data-delete-layer");if(!l)return;if(t.classList.contains("confirming")){o&&clearTimeout(o),e.dispararEvento("ui-camada-excluida",{camadaId:l});const s=e.selectedFeatureIds.size;e.camadas.forEach(d=>{d.parentId===l&&(d.parentId=null)}),e.removerCamada(l),e.selectedFeatureIds.size!==s&&e.notificarMudancaSelecao()}else{t.classList.add("confirming");const s=t.querySelector(".ui-btn-label");s&&(s.textContent="Confirmar Exclusão?"),o=setTimeout(()=>{t.classList.remove("confirming"),s&&(s.textContent="Excluir Camada")},3500)}})}),r.querySelectorAll("[data-layer-parent-select]").forEach(t=>{t.addEventListener("change",o=>{const n=o.target,l=n.getAttribute("data-layer-parent-select"),c=n.value||null,s=e.camadas.find(d=>d.id===l);if(s){if(c&&(c===s.id||le(e.camadas,c,s.id))){n.value=s.parentId||"";return}const d=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:d,camada:s}),e.solicitarRenderizacao()}})}),r.querySelectorAll("[data-add-sublayer]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-add-sublayer");e.dispararEvento("ui-camada-adicionar",{parentId:n})})}),r.querySelectorAll("[data-layer-show-more]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=t.getAttribute("data-layer-show-more");n&&e.incrementarLimiteFeicoes(n)})}),r.querySelectorAll("[data-layer-target]").forEach(t=>{t.addEventListener("click",o=>{o.stopPropagation();const n=o,l=t.getAttribute("data-layer-target");if(!l)return;const c=ne(e.camadas,e.feicoes,l),s=Y(c,e.searchQuery);if(s.length===0)return;s.every(f=>e.selectedFeatureIds.has(f.id))?s.forEach(f=>e.selectedFeatureIds.delete(f.id)):(!n.ctrlKey&&!n.metaKey&&e.selectedFeatureIds.clear(),s.forEach(f=>e.selectedFeatureIds.add(f.id))),e.lastClickedFeatureId=s[s.length-1].id,e.sincronizarSelecaoDOM(),e.notificarMudancaSelecao()})})}function Pa(e,r){const a=r.getElementById("btn-toggle-all-expand");if(!a)return;const i=e.camadas.length>0&&e.camadas.every(o=>e.expandedLayers.has(o.id)),t=a.querySelector(".ui-chevron-icon");t&&t.classList.toggle("open",i),D(a,i?"Recolher Todos os Grupos":"Expandir Todos os Grupos")}function Ta(e,r){const a=r.getElementById("btn-toggle-all-vis");if(!a)return;const i=e.camadas.every(t=>t.visible!==!1);a.innerHTML=i?v.olhoAberto:v.olhoFechado,D(a,i?"Ocultar Todas as Camadas":"Exibir Todas as Camadas")}function Ra(e,r,a,i){e.feicoes.filter(t=>t.layerId===a).forEach(t=>{const o=T(r,"data-feat-lock",t.id);if(!o)return;const n=t.locked===!0||i;o.innerHTML=n?v.cadeadoTrancado:v.cadeadoAberto,o.classList.toggle("ui-lock-open",!n),i?o.setAttribute("data-locked-by-layer","true"):o.removeAttribute("data-locked-by-layer"),D(o,i?"Bloqueada pela camada":n?"Desbloquear Feição":"Bloquear Feição")})}function Oa(e,r){const a=r.getElementById("select-footer-move");a&&a.addEventListener("change",n=>{const l=n.target.value;if(!l)return;const c=e.feicoes.filter(d=>e.selectedFeatureIds.has(d.id));if(c.length===0)return;const s=new Map(c.map(d=>[d.id,d.layerId]));c.forEach(d=>d.layerId=l),c.forEach(d=>{s.get(d.id)!==l&&e.dispararEvento("ui-feicao-movida",{feicaoId:d.id,camadaOrigemId:s.get(d.id),camadaDestinoId:l,feicao:d})}),e.dispararEvento("ui-acao-massa",{acao:"mover",feicoesIds:c.map(d=>d.id),feicoes:c,valor:l}),e.solicitarRenderizacao()});const i=r.getElementById("btn-footer-new-layer");i&&i.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const t=r.getElementById("btn-footer-new-group");t&&t.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"),D(o,`Clique novamente para excluir ${c.length} selecionado(s)`),n=setTimeout(()=>{o.classList.remove("confirming"),D(o,l)},3500);return}n&&clearTimeout(n);const s=e.feicoes.filter(d=>e.selectedFeatureIds.has(d.id));e.feicoes=e.feicoes.filter(d=>!e.selectedFeatureIds.has(d.id)),e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.dispararEvento("ui-acao-massa",{acao:"excluir",feicoesIds:c,feicoes:s}),e.notificarMudancaSelecao(),e.solicitarRenderizacao()})}}const ja=[{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"}],be={olho:"[data-layer-eye], [data-feat-eye]",cadeado:"[data-layer-lock], [data-feat-lock]",selecao:"[data-layer-target], [data-feat-target]"},Na=3;function Ha(e){return ja.find(r=>e.hasAttribute(r.atributo))??null}function ve(e,r){const a=Ha(r);if(!a)return null;const i=r.getAttribute(a.atributo);if(!i)return null;if(a.tipo==="olho"){const o=a.entidade==="camada"?e.camadas.find(n=>n.id===i):e.feicoes.find(n=>n.id===i);return o?o.visible!==!1:null}if(a.tipo==="cadeado"){if(r.hasAttribute("data-locked-by-layer"))return null;const o=a.entidade==="camada"?e.camadas.find(n=>n.id===i):e.feicoes.find(n=>n.id===i);return o?o.locked===!0:null}if(a.entidade==="feicao")return e.selectedFeatureIds.has(i);const t=Y(ne(e.camadas,e.feicoes,i),e.searchQuery);return t.length===0?null:t.every(o=>e.selectedFeatureIds.has(o.id))}function qe(e,r,a=!1){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,ctrlKey:r,shiftKey:a}))}let B=null;function Ga(e){(B==null?void 0:B.host)===e&&B.cancelar()}function Ua(e,r){Object.keys(be).forEach(a=>{r.querySelectorAll(be[a]).forEach(i=>{i.addEventListener("pointerdown",t=>_a(e,r,a,i,t))})})}function _a(e,r,a,i,t){if(t.pointerType==="mouse"&&t.button!==0||e.editingLayerId||e.editingFeatureId||ve(e,i)===null)return;B==null||B.cancelar();const o=be[a],n=t.ctrlKey||t.metaKey,l=t.shiftKey;let c=!1,s=!1,d=t.clientY;const f=new Set([i]),p=x=>{x.preventDefault(),x.stopImmediatePropagation()},m=x=>{x.stopPropagation(),x.preventDefault()},u=x=>x.preventDefault(),g=x=>{f.has(x)||(f.add(x),ve(e,x)!==s&&qe(x,a==="selecao"))},b=()=>{c=!0,qe(i,n,l),s=ve(e,i)===!0,r.addEventListener("selectstart",u),document.body.style.userSelect="none"},h=x=>{var S,w;if(!c){if(Math.hypot(x.clientX-t.clientX,x.clientY-t.clientY)<Na)return;const M=(S=r.elementFromPoint(x.clientX,x.clientY))==null?void 0:S.closest(o);if(!M||M===i)return;b()}x.preventDefault();const I=Math.min(d,x.clientY),L=Math.max(d,x.clientY);r.querySelectorAll(o).forEach(M=>{const q=M.getBoundingClientRect();if(q.height===0)return;const H=q.top+q.height/2;H>=I&&H<=L&&g(M)});const P=(w=r.elementFromPoint(x.clientX,x.clientY))==null?void 0:w.closest(o);P&&g(P),d=x.clientY},k=(x=!1)=>{(B==null?void 0:B.cancelar)===F&&(B=null),window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",C),window.removeEventListener("pointercancel",C),window.removeEventListener("dragstart",p,!0),r.removeEventListener("selectstart",u),c&&(document.body.style.userSelect="",x||(window.addEventListener("click",m,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",m,!0),0)))},C=()=>k(),F=()=>k(!0);B={host:e,cancelar:F},window.addEventListener("dragstart",p,!0),window.addEventListener("pointermove",h,{passive:!1}),window.addEventListener("pointerup",C),window.addEventListener("pointercancel",C)}function Va(e,r){const a=r.getElementById("btn-toggle-all-vis");a&&a.addEventListener("click",()=>e.alternarVisibilidadeTodas(!0));const i=r.getElementById("btn-toggle-all-expand");i&&i.addEventListener("click",o=>{o.stopPropagation(),e.camadas.length>0&&e.camadas.every(l=>e.expandedLayers.has(l.id))?e.colapsarTodas():e.expandirTodas()});const t=r.getElementById("btn-colapsar");t&&t.addEventListener("click",()=>e.colapsar(!0)),Ya(e,r)}function Ya(e,r){const a=r.getElementById("input-layer-search"),i=r.getElementById("btn-clear-layer-search"),t=()=>{var o;e.searchQuery="",e.solicitarRenderizacao(),(o=r.getElementById("input-layer-search"))==null||o.focus()};if(a){const o=Re(()=>e.solicitarRenderizacao(),75);a.addEventListener("input",n=>{e.searchQuery=n.target.value,o()}),a.addEventListener("keydown",n=>{n.key==="Escape"&&e.searchQuery&&(n.preventDefault(),t())})}i&&i.addEventListener("click",t)}function Ka(e,r){r.querySelectorAll("[data-feat-select]").forEach(a=>{a.addEventListener("click",i=>{if(e.editingFeatureId)return;const t=i;if(t.target.closest("[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"))return;const n=a.getAttribute("data-feat-select");n&&e.selecionarFeicao(n,t.ctrlKey||t.metaKey,t.shiftKey,!0)})}),r.querySelectorAll("[data-feat-target]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=i,o=a.getAttribute("data-feat-target");o&&e.selecionarFeicao(o,t.ctrlKey||t.metaKey,t.shiftKey,!0)})}),r.querySelectorAll("[data-feat-eye]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=a.getAttribute("data-feat-eye"),o=e.feicoes.find(n=>n.id===t);if(o){o.visible=o.visible===!1;const n=o.visible!==!1;a.innerHTML=n?v.olhoAberto:v.olhoFechado,D(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",i=>{if(i.stopPropagation(),a.hasAttribute("data-locked-by-layer"))return;const t=a.getAttribute("data-feat-lock"),o=e.feicoes.find(n=>n.id===t);o&&(o.locked=!o.locked,a.innerHTML=o.locked?v.cadeadoTrancado:v.cadeadoAberto,a.classList.toggle("ui-lock-open",!o.locked),D(a,o.locked?"Desbloquear Feição":"Bloquear Feição"),e.dispararEvento("ui-feicao-bloqueio",{feicaoId:o.id,bloqueado:o.locked}))})}),r.querySelectorAll("[data-feat-fit]").forEach(a=>{a.addEventListener("click",i=>{i.stopPropagation();const t=a.getAttribute("data-feat-fit");t&&e.dispararEvento("ui-feicao-enquadrar",{feicaoId:t})})})}function Xa(e,r){var a;r.querySelectorAll("[data-basemap-thumb]").forEach(i=>{i.addEventListener("error",()=>{const t=document.createElement("div");t.className="ui-basemap-preview-none",t.innerHTML=v.mapa,i.replaceWith(t)},{once:!0})}),(a=r.querySelector("[data-basemap-toggle]"))==null||a.addEventListener("click",()=>{e.alternarMapasBaseRecolhido(!0)}),r.querySelectorAll("[data-basemap-id]").forEach(i=>{i.addEventListener("click",()=>{const t=i.getAttribute("data-basemap-id");t&&e.selecionarMapaBase(t,!0)})})}function Qa(e,r){Va(e,r),Da(e,r),Ka(e,r),Xa(e,r),Oa(e,r),Ua(e,r)}function Ja(e,r,a,i){var g,b;const t=_e({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?Oe(e.mapasBase,e.mapaBaseAtivo,e.mapasBaseRecolhido):"",n=e.mostrarRodape?Ne(e.camadas,e.feicoes,e.selectedFeatureIds):"",l=r.getElementById("ui-layer-tree-mount"),c=a.scrollTop,s=l?l.scrollTop:0,d=r.activeElement,f=d&&a.contains(d)?d.id:"",p=d&&!f&&a.contains(d)?Array.from(d.attributes).find(h=>h.name.startsWith("data-")&&h.value!==""):void 0,m=d&&"selectionStart"in d?d.selectionStart:null;a.innerHTML=`
322
300
  ${t}
323
301
  ${n}
324
302
  ${o}
325
- `,a.scrollTop=c;const d=r.getElementById("ui-layer-tree-mount");if(d&&(d.scrollTop=s),f){const x=r.getElementById(f);if(x&&(x.focus({preventScroll:!0}),m!==null&&typeof x.setSelectionRange=="function"))try{x.setSelectionRange(m,m)}catch{}}!f&&p&&((g=T(a,p.name,p.value))==null||g.focus({preventScroll:!0})),(v=r.querySelector("[data-layer-row], [data-feat-row]"))==null||v.setAttribute("tabindex","0"),Xa(e,r),i.bindAll()}const Wa='[role="button"][tabindex]',K="[data-layer-row], [data-feat-row]",Ja=["color","range","checkbox","radio","button"];function Ze(e){return!e||!(e instanceof Element)||e instanceof HTMLInputElement&&Ja.includes(e.type)?!1:xa.focoEmCampoDeTexto({composedPath:()=>[e]})}function Za(e){return Array.from(e.querySelectorAll(K)).filter(r=>{const a=r.closest(".ui-children-container");return!(a&&a.style.display==="none")&&!r.classList.contains("ui-search-hidden")})}function ae(e,r){r&&(e.querySelectorAll(K).forEach(a=>a.setAttribute("tabindex","-1")),r.setAttribute("tabindex","0"),r.focus())}function er(e,r){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,ctrlKey:r.ctrlKey||r.metaKey,shiftKey:r.shiftKey}))}function ar(e,r,a){var t;if(Ze(a.composedPath()[0]))return;const i=r.querySelector(".confirming");if(i){a.preventDefault(),i.classList.remove("confirming");return}if(e.activeSettingsLayerId){a.preventDefault();const o=e.activeSettingsLayerId;e.activeSettingsLayerId=null,e.solicitarRenderizacao(),(t=T(r,"data-layer-settings",o))==null||t.focus();return}e.selectedFeatureIds.size>0&&(a.preventDefault(),e.limparSelecao(!0))}function rr(e,r,a,i){var l;const t=i.composedPath()[0];if(!(t instanceof HTMLElement)||Ze(t))return;if((i.key==="Enter"||i.key===" ")&&t.matches(Wa)){i.preventDefault(),t.click();return}if(!t.matches(K))return;const o=Za(r),n=o.indexOf(t);if(i.key==="F2"){i.preventDefault();const c=t.getAttribute("data-layer-row"),s=t.getAttribute("data-feat-row"),u=c?T(t,"data-layer-name-trigger",c):s?T(t,"data-feat-name-trigger",s):null;u&&u.dispatchEvent(new MouseEvent("dblclick",{bubbles:!0}));return}if((i.ctrlKey||i.metaKey)&&(i.key==="a"||i.key==="A")){i.preventDefault();const c=Ie(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery,void 0,e.expandedFeatureLimits);c.length>0&&e.selecionarFeicoes(c,!0);return}if(i.key==="Delete"){const c=a.getElementById("btn-footer-del");if(c&&!c.hasAttribute("disabled")&&e.selectedFeatureIds.size>0){i.preventDefault(),c.click();return}}switch(i.key){case"ArrowDown":i.preventDefault(),ae(r,o[Math.min(o.length-1,n+1)]);break;case"ArrowUp":i.preventDefault(),ae(r,o[Math.max(0,n-1)]);break;case"Home":i.preventDefault(),ae(r,o[0]);break;case"End":i.preventDefault(),ae(r,o[o.length-1]);break;case"ArrowRight":case"ArrowLeft":{const c=t.getAttribute("data-layer-row");if(!c)return;const s=t.closest(".ui-layer-group"),u=(s==null?void 0:s.getAttribute("aria-expanded"))==="true";i.key==="ArrowRight"!==u&&(i.preventDefault(),(l=T(a,"data-layer-expand",c))==null||l.click());break}case"Enter":case" ":i.preventDefault(),er(t,i);break}}function tr(e,r,a,i,t){t.add(r,"keydown",o=>{o.key==="Escape"&&ar(e,a,o)}),t.add(i,"keydown",o=>rr(e,i,a,o)),t.add(i,"focusin",o=>{const n=o.composedPath()[0];n instanceof HTMLElement&&n.matches(K)&&(i.querySelectorAll(K).forEach(l=>l.setAttribute("tabindex","-1")),n.setAttribute("tabindex","0"))})}function ir(e,r){r.querySelectorAll("[data-layer-row]").forEach(i=>{const o=i.getAttribute("data-layer-row")===e.camadaAtivaId;i.classList.toggle("active-drawing-layer",o),De.alternarPart(i,"camada-ativa",o),o?i.setAttribute("aria-current","true"):i.removeAttribute("aria-current")})}function or(e,r){var L,$;r.querySelectorAll(".ui-feat-row").forEach(y=>{const h=y.getAttribute("data-feat-row"),E=h?e.selectedFeatureIds.has(h):!1;y.classList.toggle("selected-row",E),De.alternarPart(y,"feicao-selecionada",E),y.setAttribute("aria-selected",String(E));const k=y.querySelector(".ui-target-circle");k&&k.classList.toggle("selected",E)}),r.querySelectorAll(".ui-layer-group").forEach(y=>{const h=y.getAttribute("data-layer-id"),E=ne(e.camadas,e.feicoes,h??""),k=y.querySelector(".ui-layer-row .ui-target-circle");if(k&&E.length>0){const z=E.every(w=>e.selectedFeatureIds.has(w.id)),S=!z&&E.some(w=>e.selectedFeatureIds.has(w.id));k.classList.toggle("selected",z),k.classList.toggle("partial",S)}else k&&k.classList.remove("selected","partial")});const a=e.feicoes.filter(y=>e.selectedFeatureIds.has(y.id)),i=a.length>0,t=r.getElementById("footer-count"),o=r.getElementById("footer-label");t&&(t.textContent=String(i?a.length:e.camadas.length)),o&&(o.textContent=i?a.length>1?"selecionados":"selecionado":e.camadas.length>1?"camadas":"camada");const n=r.querySelector(".ui-footer-metric"),l=ye(a);n&&(l?(n.innerHTML=`${b.reguaMetrica} ${l}`,n.style.display="inline-flex"):n.style.display="none");const c=r.querySelector(".ui-tree-footer");c&&(c.classList.toggle("tem-selecao",i),c.classList.toggle("sem-selecao",!i));const s=r.querySelector(".ui-footer-actions-gerais");s&&(s.style.display=i?"none":"flex");const u=r.querySelector(".ui-footer-bulk-actions");u&&(u.style.display=i?"flex":"none"),["btn-footer-vis","btn-footer-lock","btn-footer-del"].forEach(y=>{const h=r.getElementById(y);h&&(h.disabled=!i,h.classList.toggle("disabled",!i))});const f=r.querySelector(".ui-footer-move-wrapper");f&&f.classList.toggle("disabled",!i);const p=r.getElementById("select-footer-move");p&&(p.disabled=!i);const m=r.querySelector(".ui-footer-color-wrapper");m&&m.classList.toggle("disabled",!i);const d=r.getElementById("input-footer-color"),g=r.getElementById("preview-footer-color");if(d&&(d.disabled=!i,i)){const y=a[0],h=((L=y==null?void 0:y.properties)==null?void 0:L.color)||(($=y==null?void 0:y.properties)==null?void 0:$.cor)||"#3b82f6";d.value=h.startsWith("#")&&h.length===7?h:"#3b82f6",g&&(g.style.backgroundColor=d.value)}let v=r.getElementById("btn-footer-clear");const x=r.querySelector(".ui-footer-right");i&&!v&&x?(v=document.createElement("button"),v.id="btn-footer-clear",v.className="ui-footer-btn btn-clear-footer",v.title="Limpar seleção",v.innerHTML=b.fechar,v.addEventListener("click",()=>e.limparSelecao(!0)),x.appendChild(v)):!i&&v&&v.remove()}function nr(e,r,a,i,t){const o=Ie(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery),n=!i&&!o.includes(r)&&e.feicoes.some(c=>c.id===r),l=Ve(n?[...o,r]:o,e.selectedFeatureIds,e.lastClickedFeatureId,r,a,i);l&&(e.selectedFeatureIds=l.selecionados,e.lastClickedFeatureId=l.ultimoClicadoId,e.sincronizarSelecaoDOM(),t&&e.notificarMudancaSelecao())}function sr(e,r,a){const i=r||[];i.length===e.selectedFeatureIds.size&&i.every(n=>e.selectedFeatureIds.has(n))||(e.selectedFeatureIds.clear(),i.forEach(n=>e.selectedFeatureIds.add(n)),e.lastClickedFeatureId=i.length>0?i[i.length-1]:null,e.sincronizarSelecaoDOM(),a&&e.notificarMudancaSelecao())}function lr(e,r){e.selectedFeatureIds.size!==0&&(e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.sincronizarSelecaoDOM(),r&&e.notificarMudancaSelecao())}function cr(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 dr{constructor(r){A(this,"origens",new Map);A(this,"removidas",new Set);A(this,"salvarComDebounce",Oe(()=>this.salvar(),200));this.instantaneo=r}chaveAtual(){const r=this.instantaneo();return Ke(r.storageKey,r.id)}carregar(){return te(this.chaveAtual())}agendar(){this.salvarComDebounce()}salvar(){const r=this.instantaneo();if(!r.persistir||!r.conectado)return;const a=this.chaveAtual(),i=Je({estadoAnterior:te(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(),Xe(a,i)}limpar(){Qe(this.chaveAtual())}limparOrigens(){this.origens.clear()}registrarOrigem(r){this.origens.set(r.id,Le(r))}esquecerCamada(r){this.origens.delete(r),this.removidas.add(r)}reidratar(r,a,i){We(r,a,i,this.origens)}}function ea(e,r=null,a=new Set){const i=[];if(!Array.isArray(e))return i;for(const t of e){if(!t||typeof t!="object"||!t.id)continue;const o=String(t.id);if(a.has(o))continue;a.add(o);const n={...t,id:o};delete n.children,r&&n.parentId===void 0&&(n.parentId=r),i.push(n),Array.isArray(t.children)&&t.children.length>0&&i.push(...ea(t.children,o,a))}return i}function aa(e){if(!Array.isArray(e))return[];const r=new Set,a=[];for(const i of e){if(!i||typeof i!="object"||!i.id)continue;const t=String(i.id);r.has(t)||(r.add(t),a.push({...i,id:t}))}return a}function ur(e,r,a){if(e.camadas=Array.isArray(r)?ea(r):[],e.lembranca.limparOrigens(),e.persistir){const t=e.lembranca.carregar();e.lembranca.reidratar(e.camadas,t,e.expandedLayers),t!=null&&t.camadaAtivaId&&e.camadas.some(o=>o.id===t.camadaAtivaId)&&(e.camadaAtivaId=t.camadaAtivaId)}else e.camadas.forEach(t=>{e.lembranca.registrarOrigem(t),e.expandedLayers.has(t.id)||e.expandedLayers.add(t.id)});if(Array.isArray(a)){e.feicoes=aa(a);const t=new Set(e.camadas.map(n=>n.id)),o=e.feicoes.filter(n=>n.layerId&&!t.has(n.layerId));o.length>0&&console.warn(`[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,o.map(n=>({id:n.id,nome:n.name,layerId:n.layerId}))),se(e.selectedFeatureIds,e.feicoes)}const i=e.getAttribute("camada-ativa");e.camadas.length>0&&(!i||!e.camadas.some(t=>t.id===i))&&(e.camadaAtivaId=e.camadas[0].id),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function pr(e,r){e.feicoes=aa(r),se(e.selectedFeatureIds,e.feicoes),e.solicitarRenderizacao()}function fr(e,r){if(!r||!r.id)return;if(e.camadas.some(i=>i.id===r.id)){console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);return}const a={...r};e.camadas.push(a),e.lembranca.registrarOrigem(a),e.expandedLayers.add(a.id),a.parentId&&e.expandedLayers.add(a.parentId),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function mr(e,r){var a;e.camadas.forEach(i=>{i.parentId===r&&(i.parentId=null)}),e.camadas=e.camadas.filter(i=>i.id!==r),e.feicoes=e.feicoes.filter(i=>i.layerId!==r),e.lembranca.esquecerCamada(r),e.expandedLayers.delete(r),e.activeSettingsLayerId===r&&(e.activeSettingsLayerId=null),se(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 gr(e,r){if(!(!r||!r.id)){if(e.feicoes.some(a=>a.id===r.id)){console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);return}e.feicoes.push({...r}),e.solicitarRenderizacao()}}function vr(e,r){if(!r||typeof r!="object"||!r.id)return;const a=e.feicoes.findIndex(i=>i.id===r.id);a!==-1&&(e.feicoes[a]={...e.feicoes[a],...r},e.solicitarRenderizacao())}function br(e,r){e.feicoes=e.feicoes.filter(a=>a.id!==r),e.selectedFeatureIds.delete(r),e.solicitarRenderizacao()}function hr(e){function i(){return e.getMinAltura?e.getMinAltura():140}function t(){return e.getMaxAltura?e.getMaxAltura():1600}function o(s,u=!1){if(s==null||s===""){e.hostElement.style.removeProperty("height"),e.hostElement.style.removeProperty("--ui-camadas-altura"),u&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:null}}));return}const f=typeof s=="number"?s:parseFloat(String(s));if(isNaN(f))return;const p=Math.max(i(),Math.min(t(),Math.round(f)));e.hostElement.style.height=`${p}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${p}px`),u&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:p}}))}let n=null;function l(){if(!e.resizerElement)return;let s=!1,u=0,f=0;const p=d=>{if(d.button!==0)return;d.preventDefault(),d.stopPropagation(),s=!0,u=d.clientY,f=e.hostElement.getBoundingClientRect().height,e.resizerElement.classList.add("ui-camadas-resizer--ativo"),e.hostElement.classList.add("ui-camadas--redimensionando");try{e.resizerElement.setPointerCapture(d.pointerId)}catch{}const g=L=>{if(!s)return;L.preventDefault();const $=L.clientY-u,y=Math.max(i(),Math.min(t(),Math.round(f+$)));e.hostElement.style.height=`${y}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${y}px`),e.onRedimensionando&&e.onRedimensionando(y),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionando-altura",{bubbles:!0,composed:!0,detail:{altura:y}}))},v=()=>{var L;s=!1,n=null,window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",x),(L=e.resizerElement)==null||L.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando")},x=L=>{if(!s)return;s=!1,e.resizerElement.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando");try{e.resizerElement.hasPointerCapture(L.pointerId)&&e.resizerElement.releasePointerCapture(L.pointerId)}catch{}window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",x);const $=e.hostElement.getBoundingClientRect().height,y=Math.round($);e.onAlturaAlterada&&e.onAlturaAlterada(y),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:y}}))};n=v,window.addEventListener("pointermove",g),window.addEventListener("pointerup",x),window.addEventListener("pointercancel",x)},m=d=>{d.preventDefault(),d.stopPropagation(),o(null,!0),e.onAlturaAlterada&&e.onAlturaAlterada(null)};e.listeners.add(e.resizerElement,"pointerdown",p),e.listeners.add(e.resizerElement,"dblclick",m)}function c(){n==null||n(),e.listeners.cleanup()}return{init:l,definirAltura:o,destruir:c}}const j=class j extends ie.SafeHTMLElement{constructor(){super();A(this,"shadow");A(this,"listeners",new ba.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,"lembranca",new dr(()=>({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",[...we]);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=`
326
- <style>${Ba}</style>
303
+ `,a.scrollTop=c;const u=r.getElementById("ui-layer-tree-mount");if(u&&(u.scrollTop=s),f){const h=r.getElementById(f);if(h&&(h.focus({preventScroll:!0}),m!==null&&typeof h.setSelectionRange=="function"))try{h.setSelectionRange(m,m)}catch{}}!f&&p&&((g=T(a,p.name,p.value))==null||g.focus({preventScroll:!0})),(b=r.querySelector("[data-layer-row], [data-feat-row]"))==null||b.setAttribute("tabindex","0"),Qa(e,r),i.bindAll()}const Wa='[role="button"][tabindex]',K="[data-layer-row], [data-feat-row]",Za=["color","range","checkbox","radio","button"];function We(e){return!e||!(e instanceof Element)||e instanceof HTMLInputElement&&Za.includes(e.type)?!1:ha.focoEmCampoDeTexto({composedPath:()=>[e]})}function er(e){return Array.from(e.querySelectorAll(K)).filter(r=>{const a=r.closest(".ui-children-container");return!(a&&a.style.display==="none")&&!r.classList.contains("ui-search-hidden")})}function ae(e,r){r&&(e.querySelectorAll(K).forEach(a=>a.setAttribute("tabindex","-1")),r.setAttribute("tabindex","0"),r.focus())}function ar(e,r){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,ctrlKey:r.ctrlKey||r.metaKey,shiftKey:r.shiftKey}))}function rr(e,r,a){var t;if(We(a.composedPath()[0]))return;const i=r.querySelector(".confirming");if(i){a.preventDefault(),i.classList.remove("confirming");return}if(e.activeSettingsLayerId){a.preventDefault();const o=e.activeSettingsLayerId;e.activeSettingsLayerId=null,e.solicitarRenderizacao(),(t=T(r,"data-layer-settings",o))==null||t.focus();return}e.selectedFeatureIds.size>0&&(a.preventDefault(),e.limparSelecao(!0))}function tr(e,r,a,i){var l;const t=i.composedPath()[0];if(!(t instanceof HTMLElement)||We(t))return;if((i.key==="Enter"||i.key===" ")&&t.matches(Wa)){i.preventDefault(),t.click();return}if(!t.matches(K))return;const o=er(r),n=o.indexOf(t);if(i.key==="F2"){i.preventDefault();const c=t.getAttribute("data-layer-row"),s=t.getAttribute("data-feat-row"),d=c?T(t,"data-layer-name-trigger",c):s?T(t,"data-feat-name-trigger",s):null;d&&d.dispatchEvent(new MouseEvent("dblclick",{bubbles:!0}));return}if((i.ctrlKey||i.metaKey)&&(i.key==="a"||i.key==="A")){i.preventDefault();const c=Ie(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery,void 0,e.expandedFeatureLimits);c.length>0&&e.selecionarFeicoes(c,!0);return}if(i.key==="Delete"){const c=a.getElementById("btn-footer-del");if(c&&!c.hasAttribute("disabled")&&e.selectedFeatureIds.size>0){i.preventDefault(),c.click();return}}switch(i.key){case"ArrowDown":i.preventDefault(),ae(r,o[Math.min(o.length-1,n+1)]);break;case"ArrowUp":i.preventDefault(),ae(r,o[Math.max(0,n-1)]);break;case"Home":i.preventDefault(),ae(r,o[0]);break;case"End":i.preventDefault(),ae(r,o[o.length-1]);break;case"ArrowRight":case"ArrowLeft":{const c=t.getAttribute("data-layer-row");if(!c)return;const s=t.closest(".ui-layer-group"),d=(s==null?void 0:s.getAttribute("aria-expanded"))==="true";i.key==="ArrowRight"!==d&&(i.preventDefault(),(l=T(a,"data-layer-expand",c))==null||l.click());break}case"Enter":case" ":i.preventDefault(),ar(t,i);break}}function ir(e,r,a,i,t){t.add(r,"keydown",o=>{o.key==="Escape"&&rr(e,a,o)}),t.add(i,"keydown",o=>tr(e,i,a,o)),t.add(i,"focusin",o=>{const n=o.composedPath()[0];n instanceof HTMLElement&&n.matches(K)&&(i.querySelectorAll(K).forEach(l=>l.setAttribute("tabindex","-1")),n.setAttribute("tabindex","0"))})}function or(e,r){r.querySelectorAll("[data-layer-row]").forEach(i=>{const o=i.getAttribute("data-layer-row")===e.camadaAtivaId;i.classList.toggle("active-drawing-layer",o),De.alternarPart(i,"camada-ativa",o),o?i.setAttribute("aria-current","true"):i.removeAttribute("aria-current")})}function nr(e,r){r.querySelectorAll(".ui-feat-row").forEach(f=>{const p=f.getAttribute("data-feat-row"),m=p?e.selectedFeatureIds.has(p):!1;f.classList.toggle("selected-row",m),De.alternarPart(f,"feicao-selecionada",m),f.setAttribute("aria-selected",String(m));const u=f.querySelector(".ui-target-circle");u&&u.classList.toggle("selected",m)}),r.querySelectorAll(".ui-layer-group").forEach(f=>{const p=f.getAttribute("data-layer-id"),m=ne(e.camadas,e.feicoes,p??""),u=f.querySelector(".ui-layer-row .ui-target-circle");if(u&&m.length>0){const g=m.every(h=>e.selectedFeatureIds.has(h.id)),b=!g&&m.some(h=>e.selectedFeatureIds.has(h.id));u.classList.toggle("selected",g),u.classList.toggle("partial",b)}else u&&u.classList.remove("selected","partial")});const a=e.feicoes.filter(f=>e.selectedFeatureIds.has(f.id)),i=a.length>0,t=r.getElementById("footer-count"),o=r.getElementById("footer-label");if(t&&(t.textContent=String(i?a.length:e.camadas.length)),o){const f=Ae(e.camadas.length,a.length);o.innerHTML=f.icone,o.title=f.texto,o.setAttribute("aria-label",f.texto)}const n=r.querySelector(".ui-tree-footer");n&&(n.classList.toggle("tem-selecao",i),n.classList.toggle("sem-selecao",!i));const l=r.querySelector(".ui-footer-actions-gerais");l&&(l.style.display=i?"none":"flex");const c=r.querySelector(".ui-footer-bulk-actions");c&&(c.style.display=i?"flex":"none"),["btn-footer-del"].forEach(f=>{const p=r.getElementById(f);p&&(p.disabled=!i,p.classList.toggle("disabled",!i))});const s=r.querySelector(".ui-footer-move-wrapper");s&&s.classList.toggle("disabled",!i);const d=r.getElementById("select-footer-move");d&&(d.disabled=!i)}function sr(e,r,a,i,t){const o=Ie(e.camadas,e.feicoes,e.expandedLayers,e.searchQuery),n=!i&&!o.includes(r)&&e.feicoes.some(c=>c.id===r),l=Ue(n?[...o,r]:o,e.selectedFeatureIds,e.lastClickedFeatureId,r,a,i);l&&(e.selectedFeatureIds=l.selecionados,e.lastClickedFeatureId=l.ultimoClicadoId,e.sincronizarSelecaoDOM(),t&&e.notificarMudancaSelecao())}function lr(e,r,a){const i=r||[];i.length===e.selectedFeatureIds.size&&i.every(n=>e.selectedFeatureIds.has(n))||(e.selectedFeatureIds.clear(),i.forEach(n=>e.selectedFeatureIds.add(n)),e.lastClickedFeatureId=i.length>0?i[i.length-1]:null,e.sincronizarSelecaoDOM(),a&&e.notificarMudancaSelecao())}function cr(e,r){e.selectedFeatureIds.size!==0&&(e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.sincronizarSelecaoDOM(),r&&e.notificarMudancaSelecao())}function dr(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 ur{constructor(r){y(this,"origens",new Map);y(this,"removidas",new Set);y(this,"salvarComDebounce",Re(()=>this.salvar(),200));this.instantaneo=r}chaveAtual(){const r=this.instantaneo();return Ye(r.storageKey,r.id)}carregar(){return te(this.chaveAtual())}agendar(){this.salvarComDebounce()}salvar(){const r=this.instantaneo();if(!r.persistir||!r.conectado)return;const a=this.chaveAtual(),i=Je({estadoAnterior:te(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(),Ke(a,i)}limpar(){Xe(this.chaveAtual())}limparOrigens(){this.origens.clear()}registrarOrigem(r){this.origens.set(r.id,Le(r))}esquecerCamada(r){this.origens.delete(r),this.removidas.add(r)}reidratar(r,a,i){Qe(r,a,i,this.origens)}}function Ze(e,r=null,a=new Set){const i=[];if(!Array.isArray(e))return i;for(const t of e){if(!t||typeof t!="object"||!t.id)continue;const o=String(t.id);if(a.has(o))continue;a.add(o);const n={...t,id:o};delete n.children,r&&n.parentId===void 0&&(n.parentId=r),i.push(n),Array.isArray(t.children)&&t.children.length>0&&i.push(...Ze(t.children,o,a))}return i}function ea(e){if(!Array.isArray(e))return[];const r=new Set,a=[];for(const i of e){if(!i||typeof i!="object"||!i.id)continue;const t=String(i.id);r.has(t)||(r.add(t),a.push({...i,id:t}))}return a}function pr(e,r,a){if(e.camadas=Array.isArray(r)?Ze(r):[],e.lembranca.limparOrigens(),e.persistir){const t=e.lembranca.carregar();e.lembranca.reidratar(e.camadas,t,e.expandedLayers),t!=null&&t.camadaAtivaId&&e.camadas.some(o=>o.id===t.camadaAtivaId)&&(e.camadaAtivaId=t.camadaAtivaId)}else e.camadas.forEach(t=>{e.lembranca.registrarOrigem(t),e.expandedLayers.has(t.id)||e.expandedLayers.add(t.id)});if(Array.isArray(a)){e.feicoes=ea(a);const t=new Set(e.camadas.map(n=>n.id)),o=e.feicoes.filter(n=>n.layerId&&!t.has(n.layerId));o.length>0&&console.warn(`[UI-Camadas] ${o.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,o.map(n=>({id:n.id,nome:n.name,layerId:n.layerId}))),se(e.selectedFeatureIds,e.feicoes)}const i=e.getAttribute("camada-ativa");e.camadas.length>0&&(!i||!e.camadas.some(t=>t.id===i))&&(e.camadaAtivaId=e.camadas[0].id),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function fr(e,r){e.feicoes=ea(r),se(e.selectedFeatureIds,e.feicoes),e.solicitarRenderizacao()}function mr(e,r){if(!r||!r.id)return;if(e.camadas.some(i=>i.id===r.id)){console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${r.id}'.`);return}const a={...r};e.camadas.push(a),e.lembranca.registrarOrigem(a),e.expandedLayers.add(a.id),a.parentId&&e.expandedLayers.add(a.parentId),e.salvarLembrancaEstado(),e.solicitarRenderizacao()}function gr(e,r){var a;e.camadas.forEach(i=>{i.parentId===r&&(i.parentId=null)}),e.camadas=e.camadas.filter(i=>i.id!==r),e.feicoes=e.feicoes.filter(i=>i.layerId!==r),e.lembranca.esquecerCamada(r),e.expandedLayers.delete(r),e.activeSettingsLayerId===r&&(e.activeSettingsLayerId=null),se(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 vr(e,r){if(!(!r||!r.id)){if(e.feicoes.some(a=>a.id===r.id)){console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${r.id}'.`);return}e.feicoes.push({...r}),e.solicitarRenderizacao()}}function br(e,r){if(!r||typeof r!="object"||!r.id)return;const a=e.feicoes.findIndex(i=>i.id===r.id);a!==-1&&(e.feicoes[a]={...e.feicoes[a],...r},e.solicitarRenderizacao())}function hr(e,r){e.feicoes=e.feicoes.filter(a=>a.id!==r),e.selectedFeatureIds.delete(r),e.solicitarRenderizacao()}function xr(e){function i(){return e.getMinAltura?e.getMinAltura():140}function t(){return e.getMaxAltura?e.getMaxAltura():1600}function o(s,d=!1){if(s==null||s===""){e.hostElement.style.removeProperty("height"),e.hostElement.style.removeProperty("--ui-camadas-altura"),d&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:null}}));return}const f=typeof s=="number"?s:parseFloat(String(s));if(isNaN(f))return;const p=Math.max(i(),Math.min(t(),Math.round(f)));e.hostElement.style.height=`${p}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${p}px`),d&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:p}}))}let n=null;function l(){if(!e.resizerElement)return;let s=!1,d=0,f=0;const p=u=>{if(u.button!==0)return;u.preventDefault(),u.stopPropagation(),s=!0,d=u.clientY,f=e.hostElement.getBoundingClientRect().height,e.resizerElement.classList.add("ui-camadas-resizer--ativo"),e.hostElement.classList.add("ui-camadas--redimensionando");try{e.resizerElement.setPointerCapture(u.pointerId)}catch{}const g=k=>{if(!s)return;k.preventDefault();const C=k.clientY-d,F=Math.max(i(),Math.min(t(),Math.round(f+C)));e.hostElement.style.height=`${F}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${F}px`),e.onRedimensionando&&e.onRedimensionando(F),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionando-altura",{bubbles:!0,composed:!0,detail:{altura:F}}))},b=()=>{var k;s=!1,n=null,window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h),(k=e.resizerElement)==null||k.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando")},h=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",h),window.removeEventListener("pointercancel",h);const C=e.hostElement.getBoundingClientRect().height,F=Math.round(C);e.onAlturaAlterada&&e.onAlturaAlterada(F),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:F}}))};n=b,window.addEventListener("pointermove",g),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h)},m=u=>{u.preventDefault(),u.stopPropagation(),o(null,!0),e.onAlturaAlterada&&e.onAlturaAlterada(null)};e.listeners.add(e.resizerElement,"pointerdown",p),e.listeners.add(e.resizerElement,"dblclick",m)}function c(){n==null||n(),e.listeners.cleanup()}return{init:l,definirAltura:o,destruir:c}}const j=class j extends ie.SafeHTMLElement{constructor(){super();y(this,"shadow");y(this,"listeners",new va.ListenerBag);y(this,"dragDropManager");y(this,"resizerController");y(this,"alturaCustomizada",null);y(this,"conectado",!1);y(this,"profundidadeLote",0);y(this,"renderPendente",!1);y(this,"lembranca",new ur(()=>({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})));y(this,"camadas",[]);y(this,"feicoes",[]);y(this,"mapasBase",[...ye]);y(this,"expandedLayers",new Set);y(this,"expandedFeatureLimits",new Map);y(this,"selectedFeatureIds",new Set);y(this,"lastClickedFeatureId",null);y(this,"activeSettingsLayerId",null);y(this,"editingLayerId",null);y(this,"editingFeatureId",null);y(this,"searchQuery","");y(this,"corpoElement");y(this,"btnExpandirFlutuante");this.shadow=this.attachShadow({mode:"open"}),this.shadow.innerHTML=`
304
+ <style>${qa}</style>
327
305
  <div class="ui-camadas-container" id="panel-container" part="base" role="region" aria-label="Painel de Camadas">
328
306
  <div class="ui-camadas-corpo" id="painel-corpo" part="corpo"></div>
329
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">
@@ -331,6 +309,6 @@
331
309
  </div>
332
310
  </div>
333
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">
334
- ${b.camadas}
312
+ ${v.camadas}
335
313
  </button>
336
- `,this.corpoElement=this.shadow.getElementById("painel-corpo"),this.btnExpandirFlutuante=this.shadow.getElementById("btn-expandir-flutuante"),this.dragDropManager=new Ye(this,this.shadow);const a=this.shadow.getElementById("resizer-altura");this.resizerController=hr({hostElement:this,resizerElement:a,listeners:this.listeners,getMinAltura:()=>{const i=this.getAttribute("min-altura");return i&&parseFloat(i)||140},getMaxAltura:()=>{const i=this.getAttribute("max-altura");return i&&parseFloat(i)||1600},onAlturaAlterada:i=>{this.alturaCustomizada=i,this.salvarLembrancaEstado()}})}static get observedAttributes(){return["titulo","mapa-base-ativo","camada-ativa","aba-ativa","colapsavel","colapsado","flutuante","mostrar-mapas-base","mapas-base-recolhido","mostrar-rodape","mostrar-busca","densidade","persistir","storage-key","redimensionavel","redimensionavel-altura","altura","min-altura","max-altura"]}connectedCallback(){if(this.persistir){const a=te(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&&(j.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."),j.instanciasChavePadrao.add(this)),this.resizerController.init(),this.render(),this.conectarEventosGerais(),tr(this,this,this.shadow,this.corpoElement,this.listeners),this.conectado=!0,this.camadas.length>0&&this.salvarLembrancaEstado()}disconnectedCallback(){var a,i;this.conectado=!1,j.instanciasChavePadrao.delete(this),(a=this.resizerController)==null||a.destruir(),(i=this.dragDropManager)==null||i.destruir(),Ha(this),this.listeners.cleanup()}attributeChangedCallback(a,i,t){var o,n;i!==t&&(a==="colapsado"?this.salvarLembrancaEstado():a==="camada-ativa"?(this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado()):a==="densidade"?this.salvarLembrancaEstado():a==="mapa-base-ativo"?t&&this.marcarMapaBaseAtivoNoDOM(t):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(t,!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,i=!1){!a||this.mapaBaseAtivo===a||(this.mapaBaseAtivo=a,this.marcarMapaBaseAtivoNoDOM(a),this.salvarLembrancaEstado(),i&&this.dispararEvento("ui-mapa-base-alterado",{mapaBaseId:a}))}marcarMapaBaseAtivoNoDOM(a){this.shadow.querySelectorAll("[data-basemap-id]").forEach(t=>{const o=t.getAttribute("data-basemap-id")===a;t.classList.toggle("active",o),t.setAttribute("aria-pressed",String(o))});const i=this.shadow.querySelector("[data-basemap-atual]");i&&(i.textContent=Ae(this.mapasBase,a))}get mapasBaseRecolhido(){return this.hasAttribute("mapas-base-recolhido")}set mapasBaseRecolhido(a){a?this.setAttribute("mapas-base-recolhido",""):this.removeAttribute("mapas-base-recolhido")}alternarMapasBaseRecolhido(a=!1){this.mapasBaseRecolhido=!this.mapasBaseRecolhido,a&&this.dispararEvento("ui-mapas-base-recolhimento",{recolhido:this.mapasBaseRecolhido})}get abaAtiva(){return this.getAttribute("aba-ativa")||"camadas"}set abaAtiva(a){this.setAttribute("aba-ativa",a)}get colapsado(){return this.hasAttribute("colapsado")}set colapsado(a){a?this.setAttribute("colapsado",""):this.removeAttribute("colapsado")}get colapsavel(){return this.getAttribute("colapsavel")!=="false"}set colapsavel(a){this.setAttribute("colapsavel",String(a))}get flutuante(){return this.hasAttribute("flutuante")}set flutuante(a){a?this.setAttribute("flutuante",""):this.removeAttribute("flutuante")}get densidade(){return this.getAttribute("densidade")||"normal"}set densidade(a){this.setAttribute("densidade",a)}get mostrarMapasBase(){return this.getAttribute("mostrar-mapas-base")!=="false"}set mostrarMapasBase(a){this.setAttribute("mostrar-mapas-base",String(a))}get mostrarRodape(){return this.getAttribute("mostrar-rodape")!=="false"}set mostrarRodape(a){this.setAttribute("mostrar-rodape",String(a))}get mostrarBusca(){return this.getAttribute("mostrar-busca")!=="false"}set mostrarBusca(a){this.setAttribute("mostrar-busca",String(a))}get persistir(){return this.getAttribute("persistir")!=="false"}set persistir(a){this.setAttribute("persistir",String(a))}get storageKey(){return this.getAttribute("storage-key")}set storageKey(a){a?this.setAttribute("storage-key",a):this.removeAttribute("storage-key")}get redimensionavel(){return this.hasAttribute("redimensionavel")||this.hasAttribute("redimensionavel-altura")}set redimensionavel(a){a?this.setAttribute("redimensionavel",""):(this.removeAttribute("redimensionavel"),this.removeAttribute("redimensionavel-altura"))}get altura(){return this.getAttribute("altura")||this.style.height||null}set altura(a){a!=null?(this.setAttribute("altura",String(a)),this.definirAltura(a)):(this.removeAttribute("altura"),this.definirAltura(null))}definirAltura(a,i=!0){var o;(o=this.resizerController)==null||o.definirAltura(a,!1);const t=a!==null?parseFloat(String(a)):null;this.alturaCustomizada=isNaN(t)?null:t,i&&this.salvarLembrancaEstado()}obterChaveStorageAtual(){return this.lembranca.chaveAtual()}agendarSalvarLembranca(){this.lembranca.agendar()}salvarLembrancaEstado(){this.lembranca.salvar()}limparLembranca(){this.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,i){ur(this,a,i)}definirFeicoes(a){pr(this,a)}definirMapasBase(a){this.mapasBase=Array.isArray(a)?[...a]:[],this.solicitarRenderizacao()}definirCamadaAtiva(a,i=!1){!a||this.camadaAtivaId===a||(this.camadaAtivaId=a,this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado(),i&&this.dispararEvento("ui-camada-selecionada",{camadaId:a,camada:this.camadas.find(t=>t.id===a)}))}obterCamada(a){return this.camadas.find(i=>i.id===a)}obterCamadaAtiva(){return this.camadas.find(a=>a.id===this.camadaAtivaId)}obterFeicao(a){return this.feicoes.find(i=>i.id===a)}obterFeicoesSelecionadas(){return this.feicoes.filter(a=>this.selectedFeatureIds.has(a.id))}adicionarCamada(a){fr(this,a)}removerCamada(a){mr(this,a)}adicionarFeicao(a){gr(this,a)}atualizarFeicao(a){vr(this,a)}removerFeicao(a){br(this,a)}selecionarFeicao(a,i=!1,t=!1,o=!1){nr(this,a,i,t,o)}selecionarFeicoes(a,i=!1){sr(this,a,i)}limparSelecao(a=!1){lr(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 i=this.expandedFeatureLimits.get(a)??80;this.expandedFeatureLimits.set(a,i+80),this.solicitarRenderizacao()}alternarVisibilidadeTodas(a=!1){const t=!this.camadas.some(o=>o.visible!==!1);this.camadas.forEach(o=>{o.visible=t,a&&this.dispararEvento("ui-camada-visibilidade",{camadaId:o.id,visivel:t})}),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsar(a=!1){this.definirColapso(!0,a)}expandir(a=!1){this.definirColapso(!1,a)}alternarColapso(a=!1){this.definirColapso(!this.colapsado,a)}definirColapso(a,i){this.colapsado!==a&&(this.colapsado=a,i&&this.dispararEvento("ui-colapso-alterado",{colapsado:a}))}solicitarRenderizacao(){if(this.profundidadeLote>0){this.renderPendente=!0;return}this.render()}emLote(a){this.profundidadeLote++;try{a()}finally{this.profundidadeLote--,this.profundidadeLote===0&&this.renderPendente&&(this.renderPendente=!1,this.render())}}dispararEvento(a,i){this.dispatchEvent(new CustomEvent(a,{detail:i,bubbles:!0,composed:!0}))}render(){this.corpoElement&&Qa(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(){cr(this)}};A(j,"instanciasChavePadrao",new Set);let H=j;class ra extends H{}class ta extends H{}ie.definirCustomElement("ui-camadas",H);ie.definirCustomElement("ui-painel-camadas",ra);ie.definirCustomElement("ui-layer-panel",ta);function xr(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 yr(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 wr(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",i=((l=e.geometria)==null?void 0:l.coordenadas)||((c=e.geometria)==null?void 0:c.coordinates)||e.coordinates,t=e.cor||e.color;return{id:String(e.id),name:e.nome||e.name||`Feição ${e.id}`,layerId:e.layerId||e.camadaId||r,type:a,geometryType:a,coordinates:i,color:t,visible:e.visivel!==void 0?e.visivel:e.visible!==!1,locked:e.bloqueada!==void 0?e.bloqueada:e.locked===!0,status:e.status||"oficial",category:e.categoria||e.category,properties:e.propriedades||e.properties||{}}}exports.UIMapaBase=Pe.UIMapaBase;exports.UISeletorMapaBase=Pe.UISeletorMapaBase;exports.CamadasDragDropManager=Ye;exports.ICONES=b;exports.LIMITE_FEICOES_POR_CAMADA=Ee;exports.MAPAS_BASE_PADRAO=we;exports.UICamadas=H;exports.UILayerPanel=ta;exports.UIPainelCamadas=ra;exports.calcularAreaAnelSimples=re;exports.calcularAreaPoligono=xe;exports.calcularComprimentoLinha=he;exports.calcularDistanciaPontos=Te;exports.calcularSelecaoFeicao=Ve;exports.carregarEstadoPersistido=te;exports.construirHierarquiaCamadas=oe;exports.converterCamadaItemParaCanvasLayer=yr;exports.converterCanvasLayerParaCamadaItem=xr;exports.converterFeicaoParaItem=wr;exports.escapeHtml=M;exports.filtrarCamadasPorBusca=ke;exports.filtrarFeicoesPorBusca=Y;exports.formatarMetricaFeicoes=ye;exports.formatarOpcoesCamadasHierarquicas=Ne;exports.gerarChaveStorage=Ke;exports.limparEstadoPersistido=Qe;exports.montarEstadoPersistido=Je;exports.nomeDoMapaBase=Ae;exports.obterIdsVisiveisFeicoes=Ie;exports.reidratarCamadasComOverrides=We;exports.removerSelecoesInvalidas=se;exports.renderizarArvoreCamadas=_e;exports.renderizarGridMapasBase=je;exports.renderizarRodapeAcoes=He;exports.renderizarThumbGeometria=Ue;exports.salvarEstadoPersistido=Xe;exports.snapshotCamada=Le;
314
+ `,this.corpoElement=this.shadow.getElementById("painel-corpo"),this.btnExpandirFlutuante=this.shadow.getElementById("btn-expandir-flutuante"),this.dragDropManager=new Ve(this,this.shadow);const a=this.shadow.getElementById("resizer-altura");this.resizerController=xr({hostElement:this,resizerElement:a,listeners:this.listeners,getMinAltura:()=>{const i=this.getAttribute("min-altura");return i&&parseFloat(i)||140},getMaxAltura:()=>{const i=this.getAttribute("max-altura");return i&&parseFloat(i)||1600},onAlturaAlterada:i=>{this.alturaCustomizada=i,this.salvarLembrancaEstado()}})}static get observedAttributes(){return["titulo","mapa-base-ativo","camada-ativa","aba-ativa","colapsavel","colapsado","flutuante","mostrar-mapas-base","mapas-base-recolhido","mostrar-rodape","mostrar-busca","densidade","persistir","storage-key","redimensionavel","redimensionavel-altura","altura","min-altura","max-altura"]}connectedCallback(){if(this.persistir){const a=te(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&&(j.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."),j.instanciasChavePadrao.add(this)),this.resizerController.init(),this.render(),this.conectarEventosGerais(),ir(this,this,this.shadow,this.corpoElement,this.listeners),this.conectado=!0,this.camadas.length>0&&this.salvarLembrancaEstado()}disconnectedCallback(){var a,i;this.conectado=!1,j.instanciasChavePadrao.delete(this),(a=this.resizerController)==null||a.destruir(),(i=this.dragDropManager)==null||i.destruir(),Ga(this),this.listeners.cleanup()}attributeChangedCallback(a,i,t){var o,n;i!==t&&(a==="colapsado"?this.salvarLembrancaEstado():a==="camada-ativa"?(this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado()):a==="densidade"?this.salvarLembrancaEstado():a==="mapa-base-ativo"?t&&this.marcarMapaBaseAtivoNoDOM(t):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(t,!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,i=!1){!a||this.mapaBaseAtivo===a||(this.mapaBaseAtivo=a,this.marcarMapaBaseAtivoNoDOM(a),this.salvarLembrancaEstado(),i&&this.dispararEvento("ui-mapa-base-alterado",{mapaBaseId:a}))}marcarMapaBaseAtivoNoDOM(a){this.shadow.querySelectorAll("[data-basemap-id]").forEach(t=>{const o=t.getAttribute("data-basemap-id")===a;t.classList.toggle("active",o),t.setAttribute("aria-pressed",String(o))});const i=this.shadow.querySelector("[data-basemap-atual]");i&&(i.textContent=we(this.mapasBase,a))}get mapasBaseRecolhido(){return this.hasAttribute("mapas-base-recolhido")}set mapasBaseRecolhido(a){a?this.setAttribute("mapas-base-recolhido",""):this.removeAttribute("mapas-base-recolhido")}alternarMapasBaseRecolhido(a=!1){this.mapasBaseRecolhido=!this.mapasBaseRecolhido,a&&this.dispararEvento("ui-mapas-base-recolhimento",{recolhido:this.mapasBaseRecolhido})}get abaAtiva(){return this.getAttribute("aba-ativa")||"camadas"}set abaAtiva(a){this.setAttribute("aba-ativa",a)}get colapsado(){return this.hasAttribute("colapsado")}set colapsado(a){a?this.setAttribute("colapsado",""):this.removeAttribute("colapsado")}get colapsavel(){return this.getAttribute("colapsavel")!=="false"}set colapsavel(a){this.setAttribute("colapsavel",String(a))}get flutuante(){return this.hasAttribute("flutuante")}set flutuante(a){a?this.setAttribute("flutuante",""):this.removeAttribute("flutuante")}get densidade(){return this.getAttribute("densidade")||"normal"}set densidade(a){this.setAttribute("densidade",a)}get mostrarMapasBase(){return this.getAttribute("mostrar-mapas-base")!=="false"}set mostrarMapasBase(a){this.setAttribute("mostrar-mapas-base",String(a))}get mostrarRodape(){return this.getAttribute("mostrar-rodape")!=="false"}set mostrarRodape(a){this.setAttribute("mostrar-rodape",String(a))}get mostrarBusca(){return this.getAttribute("mostrar-busca")!=="false"}set mostrarBusca(a){this.setAttribute("mostrar-busca",String(a))}get persistir(){return this.getAttribute("persistir")!=="false"}set persistir(a){this.setAttribute("persistir",String(a))}get storageKey(){return this.getAttribute("storage-key")}set storageKey(a){a?this.setAttribute("storage-key",a):this.removeAttribute("storage-key")}get redimensionavel(){return this.hasAttribute("redimensionavel")||this.hasAttribute("redimensionavel-altura")}set redimensionavel(a){a?this.setAttribute("redimensionavel",""):(this.removeAttribute("redimensionavel"),this.removeAttribute("redimensionavel-altura"))}get altura(){return this.getAttribute("altura")||this.style.height||null}set altura(a){a!=null?(this.setAttribute("altura",String(a)),this.definirAltura(a)):(this.removeAttribute("altura"),this.definirAltura(null))}definirAltura(a,i=!0){var o;(o=this.resizerController)==null||o.definirAltura(a,!1);const t=a!==null?parseFloat(String(a)):null;this.alturaCustomizada=isNaN(t)?null:t,i&&this.salvarLembrancaEstado()}obterChaveStorageAtual(){return this.lembranca.chaveAtual()}agendarSalvarLembranca(){this.lembranca.agendar()}salvarLembrancaEstado(){this.lembranca.salvar()}limparLembranca(){this.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,i){pr(this,a,i)}definirFeicoes(a){fr(this,a)}definirMapasBase(a){this.mapasBase=Array.isArray(a)?[...a]:[],this.solicitarRenderizacao()}definirCamadaAtiva(a,i=!1){!a||this.camadaAtivaId===a||(this.camadaAtivaId=a,this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado(),i&&this.dispararEvento("ui-camada-selecionada",{camadaId:a,camada:this.camadas.find(t=>t.id===a)}))}obterCamada(a){return this.camadas.find(i=>i.id===a)}obterCamadaAtiva(){return this.camadas.find(a=>a.id===this.camadaAtivaId)}obterFeicao(a){return this.feicoes.find(i=>i.id===a)}obterFeicoesSelecionadas(){return this.feicoes.filter(a=>this.selectedFeatureIds.has(a.id))}adicionarCamada(a){mr(this,a)}removerCamada(a){gr(this,a)}adicionarFeicao(a){vr(this,a)}atualizarFeicao(a){br(this,a)}removerFeicao(a){hr(this,a)}selecionarFeicao(a,i=!1,t=!1,o=!1){sr(this,a,i,t,o)}selecionarFeicoes(a,i=!1){lr(this,a,i)}limparSelecao(a=!1){cr(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 i=this.expandedFeatureLimits.get(a)??80;this.expandedFeatureLimits.set(a,i+80),this.solicitarRenderizacao()}alternarVisibilidadeTodas(a=!1){const t=!this.camadas.some(o=>o.visible!==!1);this.camadas.forEach(o=>{o.visible=t,a&&this.dispararEvento("ui-camada-visibilidade",{camadaId:o.id,visivel:t})}),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsar(a=!1){this.definirColapso(!0,a)}expandir(a=!1){this.definirColapso(!1,a)}alternarColapso(a=!1){this.definirColapso(!this.colapsado,a)}definirColapso(a,i){this.colapsado!==a&&(this.colapsado=a,i&&this.dispararEvento("ui-colapso-alterado",{colapsado:a}))}solicitarRenderizacao(){if(this.profundidadeLote>0){this.renderPendente=!0;return}this.render()}emLote(a){this.profundidadeLote++;try{a()}finally{this.profundidadeLote--,this.profundidadeLote===0&&this.renderPendente&&(this.renderPendente=!1,this.render())}}dispararEvento(a,i){this.dispatchEvent(new CustomEvent(a,{detail:i,bubbles:!0,composed:!0}))}render(){this.corpoElement&&Ja(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(){dr(this)}};y(j,"instanciasChavePadrao",new Set);let N=j;class aa extends N{}class ra extends N{}ie.definirCustomElement("ui-camadas",N);ie.definirCustomElement("ui-painel-camadas",aa);ie.definirCustomElement("ui-layer-panel",ra);function yr(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 wr(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 Ar(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",i=((l=e.geometria)==null?void 0:l.coordenadas)||((c=e.geometria)==null?void 0:c.coordinates)||e.coordinates,t=e.cor||e.color;return{id:String(e.id),name:e.nome||e.name||`Feição ${e.id}`,layerId:e.layerId||e.camadaId||r,type:a,geometryType:a,coordinates:i,color:t,visible:e.visivel!==void 0?e.visivel:e.visible!==!1,locked:e.bloqueada!==void 0?e.bloqueada:e.locked===!0,status:e.status||"oficial",category:e.categoria||e.category,properties:e.propriedades||e.properties||{}}}exports.UIMapaBase=Pe.UIMapaBase;exports.UISeletorMapaBase=Pe.UISeletorMapaBase;exports.CamadasDragDropManager=Ve;exports.ICONES=v;exports.LIMITE_FEICOES_POR_CAMADA=Ee;exports.MAPAS_BASE_PADRAO=ye;exports.UICamadas=N;exports.UILayerPanel=ra;exports.UIPainelCamadas=aa;exports.calcularAreaAnelSimples=re;exports.calcularAreaPoligono=xe;exports.calcularComprimentoLinha=he;exports.calcularDistanciaPontos=Te;exports.calcularSelecaoFeicao=Ue;exports.carregarEstadoPersistido=te;exports.construirHierarquiaCamadas=oe;exports.converterCamadaItemParaCanvasLayer=wr;exports.converterCanvasLayerParaCamadaItem=yr;exports.converterFeicaoParaItem=Ar;exports.escapeHtml=$;exports.filtrarCamadasPorBusca=ke;exports.filtrarFeicoesPorBusca=Y;exports.formatarMetricaFeicoes=xa;exports.formatarOpcoesCamadasHierarquicas=je;exports.gerarChaveStorage=Ye;exports.limparEstadoPersistido=Xe;exports.montarEstadoPersistido=Je;exports.nomeDoMapaBase=we;exports.obterIdsVisiveisFeicoes=Ie;exports.reidratarCamadasComOverrides=Qe;exports.removerSelecoesInvalidas=se;exports.renderizarArvoreCamadas=_e;exports.renderizarGridMapasBase=Oe;exports.renderizarRodapeAcoes=Ne;exports.renderizarThumbGeometria=Ge;exports.rotuloRodape=Ae;exports.salvarEstadoPersistido=Ke;exports.snapshotCamada=Le;