@thibezer/ui-components-kit 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +760 -760
- package/dist/camadas.cjs +68 -68
- package/dist/camadas.js +493 -458
- package/dist/components/ui-camadas/camadas-arvore-renderer.d.ts +1 -1
- package/dist/custom-elements.json +3880 -3873
- package/package.json +169 -169
- package/dist/ui-botao-OGJV6Vfk.js +0 -165
- package/dist/ui-botao-psS1juof.cjs +0 -12
package/dist/camadas.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Qe=Object.defineProperty;var Xe=(e,o,a)=>o in e?Qe(e,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[o]=a;var A=(e,o,a)=>Xe(e,typeof o!="symbol"?o+"":o,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const K=require("./ssr-safe-CiHD1adl.cjs"),Je=require("./listener-bag-D5omxZ9h.cjs"),be=require("./seletor-mapa-base.cjs"),g={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,23 +74,23 @@
|
|
|
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>`},
|
|
77
|
+
</svg>`},re=6378137;function xe(e,o){if(!e||!o)return 0;const a=e[0]*Math.PI/180,r=e[1]*Math.PI/180,i=o[0]*Math.PI/180,t=o[1]*Math.PI/180,n=i-a,s=t-r,l=Math.sin(n/2)*Math.sin(n/2)+Math.cos(a)*Math.cos(i)*Math.sin(s/2)*Math.sin(s/2);return re*2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))}function te(e){if(!Array.isArray(e)||e.length<2)return 0;if(Array.isArray(e[0])&&Array.isArray(e[0][0]))return e.reduce((a,r)=>a+te(r),0);let o=0;for(let a=0;a<e.length-1;a++){const r=e[a],i=e[a+1];Array.isArray(r)&&Array.isArray(i)&&r.length>=2&&i.length>=2&&(o+=xe([r[0],r[1]],[i[0],i[1]]))}return o}function G(e){if(!Array.isArray(e))return 0;const o=e.length;if(o<3)return 0;let a=0;for(let i=0;i<o;i++){const t=e[i],n=e[(i+1)%o],s=e[(i+2)%o];if(!Array.isArray(t)||!Array.isArray(n)||!Array.isArray(s))continue;const l=(n[1]-t[1])*(Math.PI/180),c=(n[0]-t[0])*(Math.PI/180),f=(s[1]-n[1])*(Math.PI/180),u=(s[0]-n[0])*(Math.PI/180);a+=l*u-c*f}const r=Math.abs(a*(re*re)/2);return isNaN(r)?0:r}function ie(e){if(!Array.isArray(e)||e.length===0)return 0;if(Array.isArray(e[0])&&typeof e[0][0]=="number")return G(e);if(Array.isArray(e[0])&&Array.isArray(e[0][0])){if(Array.isArray(e[0][0][0]))return e.reduce((r,i)=>r+ie(i),0);const o=G(e[0]);let a=0;for(let r=1;r<e.length;r++)a+=G(e[r]);return Math.max(0,o-a)}return 0}function oe(e){if(!e||e.length===0)return"";const o=e.filter(r=>r.type==="Polygon"||r.type==="MultiPolygon"||r.geometryType==="Polygon");if(o.length>0){const r=o.reduce((i,t)=>i+(ie(t.coordinates)||0),0);return r>=1e4?`${(r/1e4).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} ha`:`${Math.round(r).toLocaleString("pt-BR")} m²`}const a=e.filter(r=>r.type==="LineString"||r.type==="MultiLineString"||r.geometryType==="LineString");if(a.length>0){const r=a.reduce((i,t)=>i+(te(t.coordinates)||0),0);return r>=1e3?`${(r/1e3).toLocaleString("pt-BR",{minimumFractionDigits:1,maximumFractionDigits:2})} km`:`${Math.round(r).toLocaleString("pt-BR")} m`}return""}function $(e){return e==null?"":String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}const We=/^(#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|(?:rgb|hsl)a?\(\s*[\w.%\s,/+-]+\)|[a-z]{3,30})$/i;function V(e,o="#00E08A"){if(!e||typeof e!="string")return o;const a=e.trim();return We.test(a)?a:o}function ee(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function Ze(e,o,a){const r=o/100,i=a/100,t=l=>(l+e/30)%12,n=r*Math.min(i,1-i),s=l=>i-n*Math.max(-1,Math.min(t(l)-3,Math.min(9-t(l),1)));return[s(0)*255,s(8)*255,s(4)*255]}function ea(e,o="#000000"){if(!e||typeof e!="string")return o;const a=e.trim().toLowerCase(),r=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.exec(a);if(r){const t=r[1];return t.length<=4?`#${t[0]}${t[0]}${t[1]}${t[1]}${t[2]}${t[2]}`:`#${t.slice(0,6)}`}const i=/^(rgb|hsl)a?\(([^)]+)\)$/.exec(a);if(i){const t=i[2].split(/[\s,/]+/).filter(Boolean).map(n=>parseFloat(n));if(t.length>=3&&t.slice(0,3).every(n=>!isNaN(n))){const[n,s,l]=t,[c,f,u]=i[1]==="rgb"?[n,s,l]:Ze(n,s,l);return`#${ee(c)}${ee(f)}${ee(u)}`}}return o}function F(e,o,a){const r=e.querySelectorAll(`[${o}]`);for(let i=0;i<r.length;i++)if(r[i].getAttribute(o)===a)return r[i];return null}function ye(e,o=80){let a=null;return(...r)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(...r),a=null},o)}}function B(e,o){e.setAttribute("title",o),e.setAttribute("aria-label",o)}const ne=[{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=ne,o="satelite"){return!e||e.length===0?"":`
|
|
78
78
|
<div class="ui-basemap-section">
|
|
79
79
|
<div class="ui-basemap-title">Mapa Base</div>
|
|
80
80
|
<div class="ui-basemap-grid">
|
|
81
|
-
${e.map(r=>{const i=o===r.id,t
|
|
82
|
-
<div class="ui-basemap-card ${i?"active":""}" data-basemap-id="${t}" role="button" tabindex="0" aria-pressed="${i}" title="${
|
|
81
|
+
${e.map(r=>{const i=o===r.id,t=$(r.id),n=$(r.nome),s=$(r.descricao||r.nome);let l="";return r.thumbnailUrl?l=`<img class="ui-basemap-preview" src="${$(r.thumbnailUrl)}" alt="" loading="lazy" referrerpolicy="no-referrer" data-basemap-thumb />`:l=`<div class="ui-basemap-preview-none">${g.gradeCad}</div>`,`
|
|
82
|
+
<div class="ui-basemap-card ${i?"active":""}" data-basemap-id="${t}" role="button" tabindex="0" aria-pressed="${i}" title="${s}">
|
|
83
83
|
${l}
|
|
84
|
-
<span>${
|
|
84
|
+
<span>${n}</span>
|
|
85
85
|
</div>
|
|
86
86
|
`}).join("")}
|
|
87
87
|
</div>
|
|
88
88
|
</div>
|
|
89
|
-
`}function
|
|
89
|
+
`}function Ee(e){const o=new Map;e.forEach(t=>o.set(t.id,t));const a=new Map,r=[];e.forEach(t=>{t.parentId&&o.has(t.parentId)?(a.has(t.parentId)||a.set(t.parentId,[]),a.get(t.parentId).push(t)):r.push(t)});const i=(t,n)=>{const s=a.get(t.id)||(Array.isArray(t.children)?t.children:[]),l=n>0?" ".repeat(n)+"↳ ":s.length>0||t.isGroup?"📁 ":"",c=`<option value="${$(t.id)}">${l}${$(t.name)}</option>`,f=s.map(u=>i(u,n+1)).join("");return c+f};return r.map(t=>i(t,0)).join("")}function Ae(e,o,a){const r=o.filter(c=>a.has(c.id)),i=r.length>0,t=oe(r),n=i?r.length:e.length,s=i?r.length>1?"selecionados":"selecionado":e.length>1?"camadas":"camada",l=Ee(e);return`
|
|
90
90
|
<div class="ui-tree-footer ${i?"tem-selecao":"sem-selecao"}">
|
|
91
91
|
<div class="ui-footer-left">
|
|
92
|
-
<span class="ui-footer-count" id="footer-count">${
|
|
93
|
-
<span class="ui-footer-label" id="footer-label">${
|
|
92
|
+
<span class="ui-footer-count" id="footer-count">${n}</span>
|
|
93
|
+
<span class="ui-footer-label" id="footer-label">${s}</span>
|
|
94
94
|
<span class="ui-footer-metric" id="footer-metric" style="display: ${t?"inline-flex":"none"};">${t?`${g.reguaMetrica} ${t}`:""}</span>
|
|
95
95
|
</div>
|
|
96
96
|
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
${i?`<button class="ui-footer-btn btn-clear-footer" id="btn-footer-clear" title="Limpar seleção" aria-label="Limpar seleção">${g.fechar}</button>`:""}
|
|
136
136
|
</div>
|
|
137
137
|
</div>
|
|
138
|
-
`}const se=80;function Y(e,o){const a=(o||"").trim().toLowerCase();return a?e.filter(r=>(r.name||"").toLowerCase().includes(a)||(r.category||"").toLowerCase().includes(a)||(r.type||"").toLowerCase().includes(a)):e}function
|
|
138
|
+
`}const se=80;function Y(e,o){const a=(o||"").trim().toLowerCase();return a?e.filter(r=>(r.name||"").toLowerCase().includes(a)||(r.category||"").toLowerCase().includes(a)||(r.type||"").toLowerCase().includes(a)):e}function ke(e,o,a,r="",i=se){const t=(r||"").trim()!=="",n=[],s=new Map;for(let l=0;l<o.length;l++){const c=o[l],f=c.layerId||"";s.has(f)||s.set(f,[]),s.get(f).push(c)}for(let l=0;l<e.length;l++){const c=e[l];if(t||a.has(c.id)){const f=Y(s.get(c.id)||[],r).slice(0,i);for(let u=0;u<f.length;u++)n.push(f[u].id)}}return n}function Ie(e,o,a,r,i,t){if(!e.includes(r))return null;const n=new Set(o);let s=a;if(t&&a&&e.includes(a)){const l=e.indexOf(a),c=e.indexOf(r),f=Math.min(l,c),u=Math.max(l,c);i||n.clear();for(let p=f;p<=u;p++)n.add(e[p])}else i?(n.has(r)?n.delete(r):n.add(r),s=r):(n.clear(),n.add(r),s=r);return{selecionados:n,ultimoClicadoId:s}}function Le(e,o){if(e.size===0)return;const a=new Set(o.map(r=>r.id));for(const r of e)a.has(r)||e.delete(r)}const ae=64;function ge(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])}function Ce(e){return!Array.isArray(e)||e.length===0?[]:ge(e[0])?[e.filter(ge)]:e.flatMap(Ce)}function ve(e){if(e.length<=ae)return e;const o=e.length/ae,a=[];for(let r=0;r<ae;r++)a.push(e[Math.floor(r*o)]);return a.push(e[e.length-1]),a}function aa(e,o,a){const r=Ce(o).filter(w=>w.length>0);if(r.length===0)return"";let i=1/0,t=-1/0,n=1/0,s=-1/0;for(const w of r)for(const[E,M]of w)M<i&&(i=M),M>t&&(t=M),-E<n&&(n=-E),-E>s&&(s=-E);const l=16,c=2,f=l-c*2,u=t-i,p=s-n,d=Math.max(u,p),m=d>0?f/d:0,h=c+(f-u*m)/2,I=c+(f-p*m)/2,v=w=>Math.round(w*100)/100,b=([w,E])=>`${v(h+(E-i)*m)},${v(I+(-w-n)*m)}`,C=e==="polygon"||e==="multipolygon",x=e==="linestring"||e==="multilinestring",y=w=>`<svg viewBox="0 0 ${l} ${l}" width="100%" height="100%" aria-hidden="true">${w}</svg>`;if(C){const w=r.filter(E=>E.length>=3).map(E=>`M${ve(E).map(b).join("L")}Z`).join("");return w?y(`<path d="${w}" fill="${a}" fill-opacity="0.45" fill-rule="evenodd" stroke="${a}" stroke-width="1.2" stroke-linejoin="round"/>`):""}if(x){const w=r.filter(E=>E.length>=2).map(E=>`M${ve(E).map(b).join("L")}`).join("");return w?y(`<path d="${w}" fill="none" stroke="${a}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`):""}return""}function $e(e,o,a){const r=V(o,"#00E08A"),i=(e||"").toLowerCase(),t=a!==void 0?aa(i,a,r):"";return t||(i==="polygon"||i==="multipolygon"?`<svg viewBox="0 0 16 16" width="11" height="11"><polygon points="2,14 14,14 12,2 4,4" fill="${r}" fill-opacity="0.45" stroke="${r}" stroke-width="1.5"/></svg>`:i==="linestring"||i==="multilinestring"?`<svg viewBox="0 0 16 16" width="11" height="11"><polyline points="2,13 8,3 14,10" fill="none" stroke="${r}" stroke-width="2"/></svg>`:i==="text"?`<svg viewBox="0 0 16 16" width="11" height="11"><text x="8" y="12" font-size="12" font-weight="bold" fill="${r}" text-anchor="middle" font-family="sans-serif">T</text></svg>`:`<svg viewBox="0 0 16 16" width="11" height="11"><circle cx="8" cy="8" r="4.2" fill="${r}" stroke="#ffffff" stroke-width="1.2"/></svg>`)}function Se(e){const o=new Map;e.forEach(t=>o.set(t.id,t));const a=new Map,r=[];e.forEach(t=>{t.parentId&&o.has(t.parentId)&&t.parentId!==t.id?(a.has(t.parentId)||a.set(t.parentId,[]),a.get(t.parentId).push(t)):r.push(t)});function i(t,n){const s=a.get(t.id)||(Array.isArray(t.children)?t.children:[]);return{camada:t,depth:n,subcamadas:s.map(l=>i(l,n+1))}}return r.map(t=>i(t,0))}function Me(e){const{camadas:o,feicoes:a,camadaAtivaId:r,expandedLayers:i,selectedFeatureIds:t,activeSettingsLayerId:n,editingLayerId:s,editingFeatureId:l,searchQuery:c,limiteFeicoesPorCamada:f=se,mostrarBotaoColapsar:u=!1}=e,p=(c||"").trim().toLowerCase(),d=new Map;for(let x=0;x<a.length;x++){const y=a[x],w=y.layerId||"";d.has(w)||d.set(w,[]),d.get(w).push(y)}const m=o.every(x=>x.visible!==!1),h=o.length>0&&o.every(x=>i.has(x.id)),I=`
|
|
139
139
|
<div class="ui-tree-toolbar">
|
|
140
140
|
<div class="ui-tree-title-group">
|
|
141
141
|
<span class="ui-tree-section-title">CAMADAS</span>
|
|
@@ -160,45 +160,45 @@
|
|
|
160
160
|
|
|
161
161
|
<div class="ui-tree-search-wrapper">
|
|
162
162
|
<span class="ui-tree-search-icon">${g.busca}</span>
|
|
163
|
-
<input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${
|
|
163
|
+
<input type="text" class="ui-tree-search-input" id="input-layer-search" aria-label="Buscar camada ou feição" placeholder="Buscar camada ou feição..." value="${$(c)}" />
|
|
164
164
|
${c?`<button class="ui-tree-search-clear" id="btn-clear-layer-search" title="Limpar busca" aria-label="Limpar busca">${g.fechar}</button>`:""}
|
|
165
165
|
</div>
|
|
166
|
-
`,v=x=>{const
|
|
167
|
-
<div class="ui-feat-row ${
|
|
168
|
-
<div class="ui-col ui-col-eye" data-feat-eye="${
|
|
169
|
-
${
|
|
166
|
+
`,v=x=>{const y=x.camada,w=x.depth,E=x.subcamadas,M=!!(y.isGroup||E.length>0),L=$(y.id),le=$(y.name||(M?"Novo Grupo":"Camada")),q=V(y.color,"#00E08A"),j=y.visible!==!1,T=y.locked===!0,R=p?!0:i.has(y.id),Q=n===y.id,ce=r===y.id,S=Y(d.get(y.id)||[],p),de=S.length>0&&S.every(k=>t.has(k.id)),Re=!de&&S.some(k=>t.has(k.id)),Ne=S.slice(0,f),He=S.length>f,Ge=Ne.map(k=>{const z=$(k.id),pe=$(k.name||"Feição"),fe=V(k.color,q),N=k.visible!==!1,X=T,J=k.locked===!0||X,me=X?"Bloqueada pela camada":J?"Desbloquear Feição":"Bloquear Feição",W=t.has(k.id),he=k.status;let Z="";return he==="oficial"?Z='<span class="ui-geom-tag oficial" title="Geometria Oficial">OFICIAL</span>':he==="previa"&&(Z='<span class="ui-geom-tag previa" title="Geometria Prévia">PRÉVIA</span>'),`
|
|
167
|
+
<div class="ui-feat-row ${W?"selected-row":""} ${N?"":"hidden-row"}" data-feat-row="${z}" data-feat-select="${z}" data-feat-layer="${L}" role="treeitem" aria-selected="${W}" tabindex="-1" draggable="true" title="Clique para selecionar | Arraste para reordenar">
|
|
168
|
+
<div class="ui-col ui-col-eye" data-feat-eye="${z}" role="button" tabindex="0" aria-label="${N?"Ocultar Feição":"Exibir Feição"}" title="${N?"Ocultar Feição":"Exibir Feição"}">
|
|
169
|
+
${N?g.olhoAberto:g.olhoFechado}
|
|
170
170
|
</div>
|
|
171
171
|
|
|
172
|
-
<div class="ui-col ui-col-lock ${
|
|
173
|
-
${
|
|
172
|
+
<div class="ui-col ui-col-lock ${J?"":"ui-lock-open"}" data-feat-lock="${z}" ${X?'data-locked-by-layer="true"':""} role="button" tabindex="0" aria-label="${me}" title="${me}">
|
|
173
|
+
${J?g.cadeadoTrancado:g.cadeadoAberto}
|
|
174
174
|
</div>
|
|
175
175
|
|
|
176
|
-
<div class="ui-col ui-col-colorbar" style="background: ${
|
|
176
|
+
<div class="ui-col ui-col-colorbar" style="background: ${fe};"></div>
|
|
177
177
|
<div class="ui-col ui-col-branch"><span style="opacity: 0.35;">└─</span></div>
|
|
178
178
|
<div class="ui-col ui-col-thumb">
|
|
179
|
-
<div class="ui-thumb-box">${
|
|
179
|
+
<div class="ui-thumb-box">${$e(k.type||k.geometryType,fe,k.coordinates)}</div>
|
|
180
180
|
</div>
|
|
181
181
|
|
|
182
|
-
<div class="ui-col ui-col-name" data-feat-name-trigger="${
|
|
183
|
-
${l===
|
|
182
|
+
<div class="ui-col ui-col-name" data-feat-name-trigger="${z}" title="Duplo clique para renomear">
|
|
183
|
+
${l===k.id?`<input type="text" class="ui-inline-rename-input" data-inline-feat-input="${z}" value="${pe}" />`:`<span class="ui-name-text">${pe}</span>${Z}`}
|
|
184
184
|
</div>
|
|
185
185
|
|
|
186
186
|
<div class="ui-col ui-col-actions">
|
|
187
|
-
<button class="ui-micro-btn" data-feat-fit="${
|
|
187
|
+
<button class="ui-micro-btn" data-feat-fit="${z}" title="Enquadrar no mapa" aria-label="Enquadrar feição no mapa">${g.alvoEnquadrar}</button>
|
|
188
188
|
</div>
|
|
189
189
|
|
|
190
|
-
<div class="ui-col ui-col-target" data-feat-target="${
|
|
191
|
-
<div class="ui-target-circle ${
|
|
190
|
+
<div class="ui-col ui-col-target" data-feat-target="${z}" role="button" tabindex="0" aria-label="Selecionar feição" title="Selecionar feição">
|
|
191
|
+
<div class="ui-target-circle ${W?"selected":""}"></div>
|
|
192
192
|
</div>
|
|
193
193
|
</div>
|
|
194
|
-
`}).join(""),
|
|
195
|
-
<div class="ui-layer-settings-drawer" id="settings-drawer-${
|
|
194
|
+
`}).join(""),Ue=He?`<div style="padding: 4px 10px; font-size: 10px; color: var(--ui-cor-texto-secundario, #888899); font-style: italic; background: rgba(0,0,0,0.2);">Exibindo ${f} de ${S.length} feições. Use a busca acima para filtrar.</div>`:"",ue=y.opacity!==void 0?y.opacity:1,Ve=Math.round(ue*100),_e=o.filter(k=>k.id!==y.id).map(k=>`<option value="${$(k.id)}" ${y.parentId===k.id?"selected":""}>${k.isGroup?"📁 ":""}${$(k.name)}</option>`).join(""),Ke=Q?`
|
|
195
|
+
<div class="ui-layer-settings-drawer" id="settings-drawer-${L}" style="--drawer-cor-camada: ${q};">
|
|
196
196
|
<div class="ui-drawer-header">
|
|
197
197
|
<div class="ui-drawer-header-left">
|
|
198
198
|
<span class="ui-drawer-icon">${g.engrenagem}</span>
|
|
199
199
|
<span class="ui-drawer-title">Configurações da Camada</span>
|
|
200
200
|
</div>
|
|
201
|
-
<button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${
|
|
201
|
+
<button type="button" class="ui-drawer-btn-fechar" data-layer-settings-close="${L}" title="Fechar configurações (Esc)" aria-label="Fechar configurações">
|
|
202
202
|
${g.fechar}
|
|
203
203
|
</button>
|
|
204
204
|
</div>
|
|
@@ -211,9 +211,9 @@
|
|
|
211
211
|
</div>
|
|
212
212
|
<div class="ui-drawer-color-group">
|
|
213
213
|
<label class="ui-drawer-color-pill" title="Clique para alterar a cor da camada">
|
|
214
|
-
<span class="ui-drawer-color-sample" id="sample-color-${
|
|
215
|
-
<span class="ui-drawer-color-hex" id="hex-color-${
|
|
216
|
-
<input type="color" aria-label="Cor da camada" data-layer-color-picker="${
|
|
214
|
+
<span class="ui-drawer-color-sample" id="sample-color-${L}" style="background-color: ${q};"></span>
|
|
215
|
+
<span class="ui-drawer-color-hex" id="hex-color-${L}">${q.toUpperCase()}</span>
|
|
216
|
+
<input type="color" aria-label="Cor da camada" data-layer-color-picker="${L}" value="${ea(q,"#00e08a")}" class="ui-drawer-color-native" />
|
|
217
217
|
</label>
|
|
218
218
|
</div>
|
|
219
219
|
</div>
|
|
@@ -222,10 +222,10 @@
|
|
|
222
222
|
<div class="ui-drawer-row">
|
|
223
223
|
<div class="ui-drawer-row-label">
|
|
224
224
|
<span>Opacidade</span>
|
|
225
|
-
<span class="ui-drawer-badge" id="badge-op-${
|
|
225
|
+
<span class="ui-drawer-badge" id="badge-op-${L}">${Ve}%</span>
|
|
226
226
|
</div>
|
|
227
227
|
<div class="ui-drawer-slider-container">
|
|
228
|
-
<input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(
|
|
228
|
+
<input type="range" aria-label="Opacidade da camada" min="0.05" max="1" step="0.05" value="${Number(ue)||0}" data-layer-opacity-slider="${L}" class="ui-drawer-slider" />
|
|
229
229
|
</div>
|
|
230
230
|
</div>
|
|
231
231
|
|
|
@@ -235,9 +235,9 @@
|
|
|
235
235
|
<span>Pertence ao Grupo</span>
|
|
236
236
|
</div>
|
|
237
237
|
<div class="ui-drawer-select-wrapper">
|
|
238
|
-
<select class="ui-drawer-select" data-layer-parent-select="${
|
|
239
|
-
<option value="" ${
|
|
240
|
-
${
|
|
238
|
+
<select class="ui-drawer-select" data-layer-parent-select="${L}" aria-label="Grupo pai da camada">
|
|
239
|
+
<option value="" ${y.parentId?"":"selected"}>(Nenhum - Nível Principal)</option>
|
|
240
|
+
${_e}
|
|
241
241
|
</select>
|
|
242
242
|
</div>
|
|
243
243
|
</div>
|
|
@@ -245,74 +245,74 @@
|
|
|
245
245
|
|
|
246
246
|
<div class="ui-drawer-footer">
|
|
247
247
|
<div class="ui-drawer-meta-info">
|
|
248
|
-
<span>${
|
|
248
|
+
<span>${E.length>0?`${E.length} subcamadas · `:""}${S.length} ${S.length===1?"feição":"feições"}</span>
|
|
249
249
|
</div>
|
|
250
250
|
<div class="ui-drawer-actions">
|
|
251
|
-
<button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${
|
|
251
|
+
<button type="button" class="ui-drawer-btn-sublayer" data-add-sublayer="${L}" title="Adicionar nova camada dentro desta">
|
|
252
252
|
${g.mais} Subcamada
|
|
253
253
|
</button>
|
|
254
|
-
<button type="button" class="ui-drawer-btn-danger" data-delete-layer="${
|
|
254
|
+
<button type="button" class="ui-drawer-btn-danger" data-delete-layer="${L}" title="Excluir esta camada e suas feições">
|
|
255
255
|
${g.lixeira}
|
|
256
256
|
<span class="ui-btn-label">Excluir</span>
|
|
257
257
|
</button>
|
|
258
258
|
</div>
|
|
259
259
|
</div>
|
|
260
260
|
</div>
|
|
261
|
-
`:"",
|
|
262
|
-
<div class="ui-layer-group ${
|
|
263
|
-
<div class="ui-layer-row ${
|
|
261
|
+
`:"",Ye=E.map(k=>v(k)).join("");return`
|
|
262
|
+
<div class="ui-layer-group ${w>0?"is-sublayer-group":""}" data-layer-id="${L}" data-layer-depth="${w}" role="treeitem" aria-expanded="${R}">
|
|
263
|
+
<div class="ui-layer-row ${j?"":"hidden-layer"} ${ce?"active-drawing-layer":""} ${w>0?"is-sublayer":""} ${M?"is-group-row":""}" data-layer-row="${L}" data-layer-id="${L}" tabindex="-1" draggable="true" style="--layer-depth: ${w}; --layer-active-color: ${q};">
|
|
264
264
|
<div class="ui-col ui-col-drag" title="Arrastar para reordenar Z-Index">${g.dragHandle}</div>
|
|
265
265
|
|
|
266
|
-
<div class="ui-col ui-col-eye" data-layer-eye="${
|
|
267
|
-
${
|
|
266
|
+
<div class="ui-col ui-col-eye" data-layer-eye="${L}" role="button" tabindex="0" aria-label="${j?"Ocultar Camada":"Exibir Camada"}" title="${j?"Ocultar Camada":"Exibir Camada"}">
|
|
267
|
+
${j?g.olhoAberto:g.olhoFechado}
|
|
268
268
|
</div>
|
|
269
269
|
|
|
270
|
-
<div class="ui-col ui-col-lock ${T?"":"ui-lock-open"}" data-layer-lock="${
|
|
270
|
+
<div class="ui-col ui-col-lock ${T?"":"ui-lock-open"}" data-layer-lock="${L}" role="button" tabindex="0" aria-label="${T?"Desbloquear Camada":"Bloquear Camada"}" title="${T?"Desbloquear Camada":"Bloquear Camada"}">
|
|
271
271
|
${T?g.cadeadoTrancado:g.cadeadoAberto}
|
|
272
272
|
</div>
|
|
273
273
|
|
|
274
|
-
<div class="ui-col ui-col-colorbar" style="background: ${
|
|
274
|
+
<div class="ui-col ui-col-colorbar" style="background: ${q};"></div>
|
|
275
275
|
|
|
276
|
-
<div class="ui-col ui-col-chevron" data-layer-expand="${
|
|
277
|
-
<span class="ui-chevron-icon ${
|
|
276
|
+
<div class="ui-col ui-col-chevron" data-layer-expand="${L}" role="button" tabindex="0" aria-label="${R?"Recolher grupo":"Expandir grupo"}">
|
|
277
|
+
<span class="ui-chevron-icon ${R?"open":""}">${g.chevronDir}</span>
|
|
278
278
|
</div>
|
|
279
279
|
|
|
280
|
-
<div class="ui-col ui-col-name" data-layer-name-trigger="${
|
|
281
|
-
${
|
|
282
|
-
<span class="ui-name-text">${
|
|
283
|
-
${
|
|
284
|
-
${
|
|
285
|
-
${S.length>0||!
|
|
280
|
+
<div class="ui-col ui-col-name" data-layer-name-trigger="${L}" title="Clique para ativar camada de desenho | Duplo clique para renomear">
|
|
281
|
+
${s===y.id?`<input type="text" class="ui-inline-rename-input" data-inline-layer-input="${L}" value="${le}" />`:`${M?`<span class="ui-group-folder-icon" title="Grupo/Pasta">${g.moverPasta}</span>`:""}
|
|
282
|
+
<span class="ui-name-text">${le}</span>
|
|
283
|
+
${ce?'<span class="ui-active-badge" title="Camada ativa para novos desenhos">✓ Ativa</span>':""}
|
|
284
|
+
${E.length>0?`<span class="ui-group-badge" title="${E.length} subcamadas">${E.length} sub</span>`:""}
|
|
285
|
+
${S.length>0||!M?`<span class="ui-count-chip">${S.length}</span>`:""}`}
|
|
286
286
|
</div>
|
|
287
287
|
|
|
288
288
|
<div class="ui-col ui-col-actions">
|
|
289
|
-
<button class="ui-micro-btn" data-layer-fit="${
|
|
290
|
-
<button class="ui-micro-btn ${Q?"active":""}" data-layer-settings="${
|
|
289
|
+
<button class="ui-micro-btn" data-layer-fit="${L}" title="Enquadrar camada no mapa" aria-label="Enquadrar camada no mapa">${g.alvoEnquadrar}</button>
|
|
290
|
+
<button class="ui-micro-btn ${Q?"active":""}" data-layer-settings="${L}" title="Ajustar cor, hierarquia, opacidade e excluir" aria-label="Configurações da camada" aria-expanded="${Q}">${g.engrenagem}</button>
|
|
291
291
|
</div>
|
|
292
292
|
|
|
293
|
-
<div class="ui-col ui-col-target" data-layer-target="${
|
|
294
|
-
<div class="ui-target-circle ${
|
|
293
|
+
<div class="ui-col ui-col-target" data-layer-target="${L}" role="button" tabindex="0" aria-label="Selecionar todas as feições deste grupo" title="Selecionar todas as feições deste grupo">
|
|
294
|
+
<div class="ui-target-circle ${de?"selected":Re?"partial":""}"></div>
|
|
295
295
|
</div>
|
|
296
296
|
</div>
|
|
297
297
|
|
|
298
|
-
${
|
|
298
|
+
${Ke}
|
|
299
299
|
|
|
300
|
-
<div class="ui-children-container ${
|
|
300
|
+
<div class="ui-children-container ${w>0?"is-subchildren":""}" role="group" style="display: ${R?"block":"none"};">
|
|
301
|
+
${Ye}
|
|
302
|
+
${Ge}
|
|
301
303
|
${Ue}
|
|
302
|
-
${
|
|
303
|
-
${je}
|
|
304
|
-
${C.length===0&&S.length===0?`<div class="ui-empty-row"><span>${p?"Nenhum item correspondente":P?"Grupo vazio (adicione subcamadas ou feições)":"Nenhum elemento neste grupo"}</span></div>`:""}
|
|
304
|
+
${E.length===0&&S.length===0?`<div class="ui-empty-row"><span>${p?"Nenhum item correspondente":M?"Grupo vazio (adicione subcamadas ou feições)":"Nenhum elemento neste grupo"}</span></div>`:""}
|
|
305
305
|
</div>
|
|
306
306
|
</div>
|
|
307
|
-
`},
|
|
308
|
-
${
|
|
307
|
+
`},C=Se(o).map(x=>v(x)).join("");return`
|
|
308
|
+
${I}
|
|
309
309
|
<div class="ui-panel-box">
|
|
310
310
|
<div class="ui-layer-tree" id="ui-layer-tree-mount" role="tree" aria-label="Camadas e feições" aria-multiselectable="true">
|
|
311
|
-
${
|
|
311
|
+
${C}
|
|
312
312
|
</div>
|
|
313
313
|
</div>
|
|
314
|
-
`}function We(e,o,a){let r=e.find(i=>i.id===o);for(;r&&r.parentId;){if(r.parentId===a)return!0;r=e.find(i=>i.id===(r==null?void 0:r.parentId))}return!1}class Ce{constructor(o,a){y(this,"host");y(this,"shadow");this.host=o,this.shadow=a}bindAll(){this.bindInlineRename(),this.bindDragAndDrop(),this.bindTouchDragAndDrop()}bindInlineRename(){this.shadow.querySelectorAll("[data-layer-name-trigger]").forEach(o=>{o.addEventListener("dblclick",a=>{a.stopPropagation();const r=o.getAttribute("data-layer-name-trigger");if(!r)return;this.host.editingLayerId=r,this.host.solicitarRenderizacao();const i=z(this.shadow,"data-inline-layer-input",r);if(i){i.focus(),i.select();let t=!1;const s=n=>{var l,c;if(!t){if(t=!0,this.host.editingLayerId=null,n){const f=i.value.trim(),u=this.host.camadas.find(p=>p.id===r);f&&u&&u.name!==f&&(u.name=f,(c=(l=this.host).salvarLembrancaEstado)==null||c.call(l),this.host.dispararEvento("ui-camada-renomeada",{camadaId:r,novoNome:f,camada:u}))}this.host.solicitarRenderizacao()}};i.addEventListener("keydown",n=>{n.key==="Enter"?(n.preventDefault(),s(!0)):n.key==="Escape"&&(n.preventDefault(),s(!1))}),i.addEventListener("blur",()=>s(!0))}})}),this.shadow.querySelectorAll("[data-feat-name-trigger]").forEach(o=>{o.addEventListener("dblclick",a=>{a.stopPropagation();const r=o.getAttribute("data-feat-name-trigger");if(!r)return;this.host.editingFeatureId=r,this.host.solicitarRenderizacao();const i=z(this.shadow,"data-inline-feat-input",r);if(i){i.focus(),i.select();let t=!1;const s=n=>{if(!t){if(t=!0,this.host.editingFeatureId=null,n){const l=i.value.trim(),c=this.host.feicoes.find(f=>f.id===r);l&&c&&c.name!==l&&(c.name=l,this.host.dispararEvento("ui-feicao-renomeada",{feicaoId:r,novoNome:l,feicao:c}))}this.host.solicitarRenderizacao()}};i.addEventListener("keydown",n=>{n.key==="Enter"?(n.preventDefault(),s(!0)):n.key==="Escape"&&(n.preventDefault(),s(!1))}),i.addEventListener("blur",()=>s(!0))}})})}bindDragAndDrop(){let o=null,a=null,r=null;const i=()=>{this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(t=>{t.classList.remove("dragging","drop-above","drop-below","drop-into")})};this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach(t=>{const s=t.getAttribute("data-layer-id");s&&(t.addEventListener("dragstart",n=>{const l=n;if(l.target.closest("input, button, select")||this.host.editingLayerId||this.host.editingFeatureId){l.preventDefault();return}o="layer",a=s,l.dataTransfer&&(l.dataTransfer.setData("text/plain",JSON.stringify({type:"layer",id:s})),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"),o==="layer"){if(a===s)return;const c=t.getBoundingClientRect(),f=(l.clientY-c.top)/c.height;f<.25?(t.classList.add("drop-above"),t.classList.remove("drop-below","drop-into")):f>.75?(t.classList.add("drop-below"),t.classList.remove("drop-above","drop-into")):(t.classList.add("drop-into"),t.classList.remove("drop-above","drop-below"))}else o==="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 u,p;const l=n;l.preventDefault(),l.stopPropagation();const c=t.classList.contains("drop-above"),f=t.classList.contains("drop-into");if(i(),o==="layer"){if(!a||a===s)return;const d=this.host.camadas.find(h=>h.id===a),m=this.host.camadas.find(h=>h.id===s);if(!d||!m)return;if(f)We(this.host.camadas,m.id,d.id)||(d.parentId=m.id,"expandedLayers"in this.host&&this.host.expandedLayers&&this.host.expandedLayers.add(m.id),this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:d.id,novoParentId:m.id,camada:d}));else{const h=this.host.camadas.findIndex(v=>v.id===a);if(h===-1)return;this.host.camadas.splice(h,1);const k=this.host.camadas.findIndex(v=>v.id===s);k===-1?this.host.camadas.push(d):this.host.camadas.splice(c?k:k+1,0,d),d.parentId=m.parentId??null}(p=(u=this.host).salvarLembrancaEstado)==null||p.call(u),this.host.dispararEvento("ui-camadas-reordenadas",{camadas:[...this.host.camadas]}),this.host.solicitarRenderizacao()}else if(o==="feature"){if(!r)return;const d=this.host.feicoes.find(h=>h.id===r),m=this.host.camadas.find(h=>h.id===s);if(d&&m&&d.layerId!==s){const h=d.layerId;d.layerId=s,this.host.dispararEvento("ui-feicao-movida",{feicaoId:d.id,camadaOrigemId:h,camadaDestinoId:s,feicao:d}),this.host.solicitarRenderizacao()}}}),t.addEventListener("dragend",()=>{o=null,a=null,r=null,i()}))}),this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach(t=>{const s=t.getAttribute("data-feat-row"),n=t.getAttribute("data-feat-layer");s&&(t.addEventListener("dragstart",l=>{const c=l;if(c.target.closest("input, button, select")||this.host.editingLayerId||this.host.editingFeatureId){c.preventDefault();return}c.stopPropagation(),o="feature",r=s,a=n,c.dataTransfer&&(c.dataTransfer.setData("text/plain",JSON.stringify({type:"feature",id:s,layerId:n})),c.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",l=>{const c=l;if(o!=="feature"||r===s)return;c.preventDefault(),c.stopPropagation(),c.dataTransfer&&(c.dataTransfer.dropEffect="move");const f=t.getBoundingClientRect(),u=c.clientY-f.top<f.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(o!=="feature"||!r||r===s)return;c.preventDefault(),c.stopPropagation();const f=t.classList.contains("drop-above");i();const u=this.host.feicoes.findIndex(b=>b.id===r);if(u===-1)return;const p=this.host.feicoes.find(b=>b.id===s);if(!p)return;const[d]=this.host.feicoes.splice(u,1),m=d.layerId,h=p.layerId,k=m!==h;k&&(d.layerId=h);const v=this.host.feicoes.findIndex(b=>b.id===s);v===-1?this.host.feicoes.push(d):this.host.feicoes.splice(f?v:v+1,0,d),k&&this.host.dispararEvento("ui-feicao-movida",{feicaoId:d.id,camadaOrigemId:m,camadaDestinoId:h,feicao:d}),this.host.dispararEvento("ui-feicoes-reordenadas",{feicoes:[...this.host.feicoes]}),this.host.solicitarRenderizacao()}),t.addEventListener("dragend",l=>{l.stopPropagation(),o=null,r=null,a=null,i()}))})}bindTouchDragAndDrop(){this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach(o=>{const a=o.closest(".ui-layer-row");if(!a)return;const r=a.getAttribute("data-layer-id");r&&o.addEventListener("pointerdown",i=>{const t=i;if(t.pointerType==="mouse"&&t.button!==0||this.host.editingLayerId||this.host.editingFeatureId)return;let s=null,n=!1;const l=r,c=()=>{this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(p=>p.classList.remove("dragging","drop-above","drop-below"))},f=p=>{p.preventDefault(),a.classList.add("dragging");const d=this.shadow.elementFromPoint(p.clientX,p.clientY),m=d?d.closest(".ui-layer-row"):null;if(s&&s!==m&&s.classList.remove("drop-above","drop-below"),m&&m!==a){s=m;const h=m.getBoundingClientRect();n=p.clientY-h.top<h.height/2,m.classList.toggle("drop-above",n),m.classList.toggle("drop-below",!n)}else s=null},u=()=>{var p,d;if(window.removeEventListener("pointermove",f),window.removeEventListener("pointerup",u),window.removeEventListener("pointercancel",u),s){const m=s.getAttribute("data-layer-id");if(c(),m&&l&&m!==l){const h=this.host.camadas.findIndex(k=>k.id===l);if(h!==-1){const[k]=this.host.camadas.splice(h,1),v=this.host.camadas.findIndex(b=>b.id===m);v===-1?this.host.camadas.push(k):this.host.camadas.splice(n?v:v+1,0,k),(d=(p=this.host).salvarLembrancaEstado)==null||d.call(p),this.host.dispararEvento("ui-camadas-reordenadas",{camadas:[...this.host.camadas]}),this.host.solicitarRenderizacao()}}}else c()};window.addEventListener("pointermove",f,{passive:!1}),window.addEventListener("pointerup",u),window.addEventListener("pointercancel",u)})})}}const Xe="ui_camadas_estado_";function $e(e,o){const a=(e||o||"default").trim();return`${Xe}${a}`}function U(e){if(typeof window>"u"||typeof localStorage>"u")return null;try{const o=localStorage.getItem(e);if(!o)return null;const a=JSON.parse(o);if(a&&typeof a=="object")return a}catch(o){console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`,o)}return null}function Se(e,o){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.setItem(e,JSON.stringify(o))}catch(a){console.warn(`[UI-Camadas] Não foi possível salvar o estado persistido (${e}):`,a)}}function Me(e){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.removeItem(e)}catch{}}function _(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 ze(e,o,a,r){if(!Array.isArray(e))return;const i=(o==null?void 0:o.camadasOverrides)||{},t=new Set((o==null?void 0:o.expandedLayerIds)||[]),s=new Set((o==null?void 0:o.collapsedLayerIds)||[]),n=t.size>0||s.size>0;for(let u=0;u<e.length;u++){const p=e[u],d=i[p.id];if(r==null||r.set(p.id,_(p)),d){const m=d.origem,h=k=>{var b;const v=(b=r==null?void 0:r.get(p.id))==null?void 0:b[k];return m!==void 0&&m[k]!==v};typeof d.name=="string"&&d.name.trim()&&!h("name")&&(p.name=d.name),typeof d.visible=="boolean"&&!h("visible")&&(p.visible=d.visible),typeof d.locked=="boolean"&&!h("locked")&&(p.locked=d.locked),typeof d.opacity=="number"&&!h("opacity")&&(p.opacity=d.opacity),typeof d.color=="string"&&!h("color")&&(p.color=d.color),d.parentId!==void 0&&!h("parentId")&&(p.parentId=d.parentId)}n?t.has(p.id)?a.add(p.id):s.has(p.id)?a.delete(p.id):a.add(p.id):a.add(p.id)}const l=new Set(e.map(u=>u.id)),c=o==null?void 0:o.ordemOrigemIds;if(!(Array.isArray(c)&&(()=>{const u=new Set(c),p=d=>d.filter(m=>l.has(m)&&u.has(m)).join("|");return p(c)!==p(e.map(d=>d.id))})())&&Array.isArray(o==null?void 0:o.ordemCamadasIds)&&o.ordemCamadasIds.length>0){const u=new Map;o.ordemCamadasIds.forEach((p,d)=>u.set(p,d)),e.sort((p,d)=>{const m=u.has(p.id)?u.get(p.id):9999,h=u.has(d.id)?u.get(d.id):9999;return m-h})}}function Fe(e){const{estadoAnterior:o,camadas:a,expandedLayers:r}=e;let i=(o==null?void 0:o.expandedLayerIds)||[],t=(o==null?void 0:o.collapsedLayerIds)||[],s=(o==null?void 0:o.ordemCamadasIds)||[],n=o==null?void 0:o.ordemOrigemIds;const l={...(o==null?void 0:o.camadasOverrides)||{}};a.length>0&&(i=[],t=[],s=a.map(c=>c.id),n=e.origensCamadas?[...e.origensCamadas.keys()]:s,a.forEach(c=>{var f,u;r.has(c.id)?i.push(c.id):t.push(c.id),l[c.id]={name:c.name,visible:c.visible!==!1,locked:!!c.locked,opacity:typeof c.opacity=="number"?c.opacity:1,color:c.color||"#00E08A",origem:((f=e.origensCamadas)==null?void 0:f.get(c.id))??((u=l[c.id])==null?void 0:u.origem)}}));for(const c of e.camadasRemovidas??[])delete l[c];return{versao:1,expandedLayerIds:i,collapsedLayerIds:t,camadaAtivaId:e.camadaAtivaId,painelColapsado:e.painelColapsado,ordemCamadasIds:s,ordemOrigemIds:n,mapaBaseAtivo:e.mapaBaseAtivo,densidade:e.densidade,altura:e.altura,camadasOverrides:l,ultimaAtualizacao:Date.now()}}const Ze=':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 15px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 13px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:80px}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent)!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 7%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 18%,transparent)!important;outline:1px solid color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 50%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{padding-left:calc(6px + var(--layer-depth, 1) * 16px);background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent);border-left:2px solid color-mix(in srgb,var(--layer-active-color, #00E08A) 40%,transparent)}.ui-children-container.is-subchildren{position:relative;margin-left:calc(var(--layer-depth, 0) * 8px);border-left:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .1))}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-group-badge{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 4px;border-radius:3px;background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 15%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 30%,transparent);margin-left:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:14px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:18px;margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:2.5px;background:var(--ui-cor-fundo, #0d0d10);display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-active-badge{font-size:8px;font-weight:700;color:var(--ui-cor-texto-sobre-primaria, #000000);background:var(--ui-cor-primaria, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent);padding:1px 4px;border-radius:3px;display:inline-flex;align-items:center;gap:2px;white-space:nowrap;flex-shrink:0;animation:pulseBadge 2.8s infinite}@keyframes pulseBadge{0%{opacity:.85}50%{opacity:1;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 50%,transparent))}to{opacity:.85}}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);padding:0 4px;border-radius:8px}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--ui-cor-texto-info, #33b5ff);background:var(--ui-cor-texto-info, #33b5ff);box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--ui-cor-texto-info, #33b5ff);background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-geom-tag{font-size:8px;font-weight:700;letter-spacing:.4px;padding:1px 4px;border-radius:3px;margin-left:4px;text-transform:uppercase;flex-shrink:0}.ui-geom-tag.oficial{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 16%,transparent);color:var(--ui-cor-texto-sucesso, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 35%,transparent)}.ui-geom-tag.previa{background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 16%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 35%,transparent)}.ui-tree-footer{height:32px;min-height:32px;background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 8px;gap:6px;box-sizing:border-box;overflow:hidden;position:relative}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);padding:1px 5px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 24%,transparent);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 7px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#fff3}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border-color:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 32%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 22%,transparent);border-color:var(--ui-cor-primaria, #00E08A);color:#fff}.ui-footer-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-btn.btn-clear-footer{color:var(--ui-cor-texto-secundario, #888899);margin-left:2px}.ui-footer-btn.btn-clear-footer:hover{color:#fff;background:#ffffff1f}.ui-footer-color-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;flex-shrink:0}.ui-footer-color-preview{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 0 4px #0006;pointer-events:none;transition:transform .15s ease,border-color .15s ease}.ui-footer-color-wrapper:hover .ui-footer-color-preview{transform:scale(1.15);border-color:#fff}.ui-footer-color{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0;border:none}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;max-width:95px;flex-shrink:0}.ui-footer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10px;height:22px;padding:0 4px;cursor:pointer;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){border-color:#ffffff40}.ui-footer-select:focus{outline:none;border-color:var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#ffffff40}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';function ea(e,o){o.querySelectorAll("[data-layer-row]").forEach(i=>{i.addEventListener("click",t=>{if(t.target.closest("[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], input, button"))return;const n=i.getAttribute("data-layer-row");n&&e.definirCamadaAtiva(n,!0)})}),o.querySelectorAll("[data-layer-expand]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const s=i.getAttribute("data-layer-expand");if(!s)return;e.expandedLayers.has(s)?e.expandedLayers.delete(s):e.expandedLayers.add(s);const n=i.closest(".ui-layer-group"),l=i.querySelector(".ui-chevron-icon"),c=e.expandedLayers.has(s);if(l&&l.classList.toggle("open",c),n){const f=n.querySelector(".ui-children-container");f&&(f.style.display=c?"block":"none")}e.salvarLembrancaEstado()})}),o.querySelectorAll("[data-layer-eye]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const s=i.getAttribute("data-layer-eye"),n=e.camadas.find(l=>l.id===s);if(n){n.visible=n.visible===!1;const l=n.visible!==!1;i.innerHTML=l?g.olhoAberto:g.olhoFechado,F(i,l?"Ocultar Camada":"Exibir Camada");const c=i.closest(".ui-layer-row");c&&c.classList.toggle("hidden-layer",!l),aa(e,o),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-visibilidade",{camadaId:n.id,visivel:l})}})}),o.querySelectorAll("[data-layer-lock]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const s=i.getAttribute("data-layer-lock"),n=e.camadas.find(l=>l.id===s);n&&(n.locked=!n.locked,i.innerHTML=n.locked?g.cadeadoTrancado:g.cadeadoAberto,i.classList.toggle("ui-lock-open",!n.locked),F(i,n.locked?"Desbloquear Camada":"Bloquear Camada"),ra(e,o,n.id,n.locked===!0),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-bloqueio",{camadaId:n.id,bloqueado:n.locked}))})}),o.querySelectorAll("[data-layer-fit]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const s=i.getAttribute("data-layer-fit");s&&e.dispararEvento("ui-camada-enquadrar",{camadaId:s})})}),o.querySelectorAll("[data-layer-settings]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const s=i.getAttribute("data-layer-settings");e.activeSettingsLayerId=e.activeSettingsLayerId===s?null:s,e.solicitarRenderizacao()})}),o.querySelectorAll("[data-layer-settings-close]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation(),e.activeSettingsLayerId=null,e.solicitarRenderizacao()})});const a=(i,t,s)=>{const n=e.camadas.find(d=>d.id===i);if(!n)return;const l=V(t,n.color||"#00E08A");n.color=l;const c=o.getElementById(`sample-color-${i}`);c&&(c.style.backgroundColor=l);const f=o.getElementById(`hex-color-${i}`);f&&(f.textContent=l.toUpperCase());const u=o.getElementById(`settings-drawer-${i}`);u&&u.style.setProperty("--drawer-cor-camada",l);const p=z(o,"data-layer-row",i);if(p){p.style.setProperty("--layer-active-color",l);const d=p.querySelector(".ui-col-colorbar");d&&(d.style.backgroundColor=l)}s?e.salvarLembrancaEstado():e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-cor",{camadaId:n.id,cor:l})};o.querySelectorAll("[data-layer-color-picker]").forEach(i=>{const t=i,s=n=>l=>{const c=t.getAttribute("data-layer-color-picker");if(!c)return;const f=l.target.value;a(c,f,n)};t.addEventListener("input",s(!1)),t.addEventListener("change",s(!0))});const r=(i,t)=>{const s=e.camadas.find(c=>c.id===i);if(!s)return;s.opacity=t;const n=o.getElementById(`badge-op-${i}`);n&&(n.textContent=`${Math.round(t*100)}%`);const l=z(o,"data-layer-opacity-slider",i);l&&parseFloat(l.value)!==t&&(l.value=String(t)),e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-opacidade",{camadaId:s.id,opacidade:t})};o.querySelectorAll("[data-layer-opacity-slider]").forEach(i=>{i.addEventListener("input",t=>{const s=i.getAttribute("data-layer-opacity-slider");if(!s)return;const n=parseFloat(t.target.value);r(s,n)})}),o.querySelectorAll("[data-delete-layer]").forEach(i=>{let t=null;i.addEventListener("click",s=>{s.stopPropagation();const n=i.getAttribute("data-delete-layer");if(!n)return;if(i.classList.contains("confirming")){t&&clearTimeout(t),e.dispararEvento("ui-camada-excluida",{camadaId:n});const c=e.selectedFeatureIds.size;e.camadas.forEach(f=>{f.parentId===n&&(f.parentId=null)}),e.removerCamada(n),e.selectedFeatureIds.size!==c&&e.notificarMudancaSelecao()}else{i.classList.add("confirming");const c=i.querySelector(".ui-btn-label");c&&(c.textContent="Confirmar Exclusão?"),t=setTimeout(()=>{i.classList.remove("confirming"),c&&(c.textContent="Excluir Camada")},3500)}})}),o.querySelectorAll("[data-layer-parent-select]").forEach(i=>{i.addEventListener("change",t=>{const s=t.target,n=s.getAttribute("data-layer-parent-select"),l=s.value||null,c=e.camadas.find(f=>f.id===n);c&&(c.parentId=l,e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-mover-hierarquia",{camadaId:c.id,novoParentId:l,camada:c}),e.solicitarRenderizacao())})}),o.querySelectorAll("[data-add-sublayer]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const s=i.getAttribute("data-add-sublayer");e.dispararEvento("ui-camada-adicionar",{parentId:s})})}),o.querySelectorAll("[data-layer-target]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const s=t,n=i.getAttribute("data-layer-target"),l=Y(e.feicoes.filter(f=>f.layerId===n),e.searchQuery);if(l.length===0)return;l.every(f=>e.selectedFeatureIds.has(f.id))?l.forEach(f=>e.selectedFeatureIds.delete(f.id)):(!s.ctrlKey&&!s.metaKey&&e.selectedFeatureIds.clear(),l.forEach(f=>e.selectedFeatureIds.add(f.id))),e.lastClickedFeatureId=l[l.length-1].id,e.sincronizarSelecaoDOM(),e.notificarMudancaSelecao()})})}function aa(e,o){const a=o.getElementById("btn-toggle-all-vis");if(!a)return;const r=e.camadas.every(i=>i.visible!==!1);a.innerHTML=r?g.olhoAberto:g.olhoFechado,F(a,r?"Ocultar Todas as Camadas":"Exibir Todas as Camadas")}function ra(e,o,a,r){e.feicoes.filter(i=>i.layerId===a).forEach(i=>{const t=z(o,"data-feat-lock",i.id);if(!t)return;const s=i.locked===!0||r;t.innerHTML=s?g.cadeadoTrancado:g.cadeadoAberto,t.classList.toggle("ui-lock-open",!s),r?t.setAttribute("data-locked-by-layer","true"):t.removeAttribute("data-locked-by-layer"),F(t,r?"Bloqueada pela camada":s?"Desbloquear Feição":"Bloquear Feição")})}function ta(e,o){const a=o.getElementById("btn-footer-vis");a&&a.addEventListener("click",()=>{const u=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));if(u.length===0)return;const d=!u.some(m=>m.visible!==!1);u.forEach(m=>m.visible=d),e.dispararEvento("ui-acao-massa",{acao:"visibilidade",feicoesIds:u.map(m=>m.id),feicoes:u,valor:d}),e.solicitarRenderizacao()});const r=o.getElementById("btn-footer-lock");r&&r.addEventListener("click",()=>{const u=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));if(u.length===0)return;const d=!u.some(m=>m.locked===!0);u.forEach(m=>m.locked=d),e.dispararEvento("ui-acao-massa",{acao:"bloqueio",feicoesIds:u.map(m=>m.id),feicoes:u,valor:d}),e.solicitarRenderizacao()});const i=o.getElementById("input-footer-color"),t=o.getElementById("preview-footer-color");i&&(i.addEventListener("input",u=>{const p=u.target.value;t&&(t.style.backgroundColor=p)}),i.addEventListener("change",u=>{const p=u.target.value;t&&(t.style.backgroundColor=p);const d=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));d.length!==0&&(d.forEach(m=>{m.color=p,m.style={...m.style||{},fillColor:p,strokeColor:p}}),e.dispararEvento("ui-acao-massa",{acao:"cor",feicoesIds:d.map(m=>m.id),feicoes:d,valor:p}),e.solicitarRenderizacao())}));const s=o.getElementById("select-footer-move");s&&s.addEventListener("change",u=>{const p=u.target.value;if(!p)return;const d=e.feicoes.filter(h=>e.selectedFeatureIds.has(h.id));if(d.length===0)return;const m=new Map(d.map(h=>[h.id,h.layerId]));d.forEach(h=>h.layerId=p),d.forEach(h=>{m.get(h.id)!==p&&e.dispararEvento("ui-feicao-movida",{feicaoId:h.id,camadaOrigemId:m.get(h.id),camadaDestinoId:p,feicao:h})}),e.dispararEvento("ui-acao-massa",{acao:"mover",feicoesIds:d.map(h=>h.id),feicoes:d,valor:p}),e.solicitarRenderizacao()});const n=o.getElementById("btn-footer-new-layer");n&&n.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const l=o.getElementById("btn-footer-new-group");l&&l.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const c=o.getElementById("btn-footer-del");if(c){let u=null;const p="Excluir selecionados";c.addEventListener("click",()=>{const d=Array.from(e.selectedFeatureIds);if(d.length===0)return;if(!c.classList.contains("confirming")){c.classList.add("confirming"),F(c,`Clique novamente para excluir ${d.length} selecionado(s)`),u=setTimeout(()=>{c.classList.remove("confirming"),F(c,p)},3500);return}u&&clearTimeout(u);const m=e.feicoes.filter(h=>e.selectedFeatureIds.has(h.id));e.feicoes=e.feicoes.filter(h=>!e.selectedFeatureIds.has(h.id)),e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.dispararEvento("ui-acao-massa",{acao:"excluir",feicoesIds:d,feicoes:m}),e.notificarMudancaSelecao(),e.solicitarRenderizacao()})}const f=o.getElementById("btn-footer-clear");f&&f.addEventListener("click",()=>e.limparSelecao(!0))}function ia(e,o){const a=o.getElementById("btn-toggle-all-vis");a&&a.addEventListener("click",()=>e.alternarVisibilidadeTodas(!0));const r=o.getElementById("btn-toggle-all-expand");r&&r.addEventListener("click",n=>{n.stopPropagation(),e.camadas.length>0&&e.camadas.every(c=>e.expandedLayers.has(c.id))?e.colapsarTodas():e.expandirTodas()});const i=o.getElementById("btn-add-layer");i&&i.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const t=o.getElementById("btn-add-group");t&&t.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const s=o.getElementById("btn-colapsar");s&&s.addEventListener("click",()=>e.colapsar(!0)),oa(e,o)}function oa(e,o){const a=o.getElementById("input-layer-search"),r=o.getElementById("btn-clear-layer-search"),i=()=>{var t;e.searchQuery="",e.solicitarRenderizacao(),(t=o.getElementById("input-layer-search"))==null||t.focus()};if(a){const t=ve(()=>e.solicitarRenderizacao(),75);a.addEventListener("input",s=>{e.searchQuery=s.target.value,t()}),a.addEventListener("keydown",s=>{s.key==="Escape"&&e.searchQuery&&(s.preventDefault(),i())})}r&&r.addEventListener("click",i)}function sa(e,o){o.querySelectorAll("[data-feat-select]").forEach(a=>{a.addEventListener("click",r=>{if(e.editingFeatureId)return;const i=r;if(i.target.closest("[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"))return;const s=a.getAttribute("data-feat-select");s&&e.selecionarFeicao(s,i.ctrlKey||i.metaKey,i.shiftKey,!0)})}),o.querySelectorAll("[data-feat-target]").forEach(a=>{a.addEventListener("click",r=>{r.stopPropagation();const i=r,t=a.getAttribute("data-feat-target");t&&e.selecionarFeicao(t,i.ctrlKey||i.metaKey,i.shiftKey,!0)})}),o.querySelectorAll("[data-feat-eye]").forEach(a=>{a.addEventListener("click",r=>{r.stopPropagation();const i=a.getAttribute("data-feat-eye"),t=e.feicoes.find(s=>s.id===i);if(t){t.visible=t.visible===!1;const s=t.visible!==!1;a.innerHTML=s?g.olhoAberto:g.olhoFechado,F(a,s?"Ocultar Feição":"Exibir Feição");const n=a.closest(".ui-feat-row");n&&n.classList.toggle("hidden-row",!s),e.dispararEvento("ui-feicao-visibilidade",{feicaoId:t.id,visivel:s})}})}),o.querySelectorAll("[data-feat-lock]").forEach(a=>{a.addEventListener("click",r=>{if(r.stopPropagation(),a.hasAttribute("data-locked-by-layer"))return;const i=a.getAttribute("data-feat-lock"),t=e.feicoes.find(s=>s.id===i);t&&(t.locked=!t.locked,a.innerHTML=t.locked?g.cadeadoTrancado:g.cadeadoAberto,a.classList.toggle("ui-lock-open",!t.locked),F(a,t.locked?"Desbloquear Feição":"Bloquear Feição"),e.dispararEvento("ui-feicao-bloqueio",{feicaoId:t.id,bloqueado:t.locked}))})}),o.querySelectorAll("[data-feat-fit]").forEach(a=>{a.addEventListener("click",r=>{r.stopPropagation();const i=a.getAttribute("data-feat-fit");i&&e.dispararEvento("ui-feicao-enquadrar",{feicaoId:i})})})}function na(e,o){o.querySelectorAll("[data-basemap-thumb]").forEach(a=>{a.addEventListener("error",()=>{const r=document.createElement("div");r.className="ui-basemap-preview-none",r.innerHTML=g.mapa,a.replaceWith(r)},{once:!0})}),o.querySelectorAll("[data-basemap-id]").forEach(a=>{a.addEventListener("click",()=>{const r=a.getAttribute("data-basemap-id");r&&e.selecionarMapaBase(r,!0)})})}function la(e,o){ia(e,o),ea(e,o),sa(e,o),na(e,o),ta(e,o)}const ca='[role="button"][tabindex]',O="[data-layer-row], [data-feat-row]",da=["color","range","checkbox","radio","button"];function Be(e){return e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?!0:e instanceof HTMLInputElement&&!da.includes(e.type)}function ua(e){return Array.from(e.querySelectorAll(O)).filter(o=>{const a=o.closest(".ui-children-container");return!(a&&a.style.display==="none")&&!o.classList.contains("ui-search-hidden")})}function N(e,o){o&&(e.querySelectorAll(O).forEach(a=>a.setAttribute("tabindex","-1")),o.setAttribute("tabindex","0"),o.focus())}function pa(e,o){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,ctrlKey:o.ctrlKey||o.metaKey,shiftKey:o.shiftKey}))}function fa(e,o,a){var r;if(!Be(a.composedPath()[0])){if(e.activeSettingsLayerId){a.preventDefault();const i=e.activeSettingsLayerId;e.activeSettingsLayerId=null,e.solicitarRenderizacao(),(r=z(o,"data-layer-settings",i))==null||r.focus();return}e.selectedFeatureIds.size>0&&(a.preventDefault(),e.limparSelecao(!0))}}function ma(e,o,a){var s;const r=a.composedPath()[0];if(!(r instanceof HTMLElement)||Be(r))return;if((a.key==="Enter"||a.key===" ")&&r.matches(ca)){a.preventDefault(),r.click();return}if(!r.matches(O))return;const i=ua(e),t=i.indexOf(r);switch(a.key){case"ArrowDown":a.preventDefault(),N(e,i[Math.min(i.length-1,t+1)]);break;case"ArrowUp":a.preventDefault(),N(e,i[Math.max(0,t-1)]);break;case"Home":a.preventDefault(),N(e,i[0]);break;case"End":a.preventDefault(),N(e,i[i.length-1]);break;case"ArrowRight":case"ArrowLeft":{const n=r.getAttribute("data-layer-row");if(!n)return;const l=r.closest(".ui-layer-group"),c=(l==null?void 0:l.getAttribute("aria-expanded"))==="true";a.key==="ArrowRight"!==c&&(a.preventDefault(),(s=z(o,"data-layer-expand",n))==null||s.click());break}case"Enter":case" ":a.preventDefault(),pa(r,a);break}}function ha(e,o,a,r,i){i.add(o,"keydown",t=>{t.key==="Escape"&&fa(e,a,t)}),i.add(r,"keydown",t=>ma(r,a,t)),i.add(r,"focusin",t=>{const s=t.composedPath()[0];s instanceof HTMLElement&&s.matches(O)&&(r.querySelectorAll(O).forEach(n=>n.setAttribute("tabindex","-1")),s.setAttribute("tabindex","0"))})}function ga(e,o){o.querySelectorAll("[data-layer-row]").forEach(r=>{const t=r.getAttribute("data-layer-row")===e.camadaAtivaId;r.classList.toggle("active-drawing-layer",t);const s=r.querySelector(".ui-col-name");if(s){let n=s.querySelector(".ui-active-badge");if(t&&!n){n=document.createElement("span"),n.className="ui-active-badge",n.textContent="✓ Ativa";const l=s.querySelector(".ui-count-chip");l?s.insertBefore(n,l):s.appendChild(n)}else!t&&n&&n.remove()}})}function va(e,o){o.querySelectorAll(".ui-feat-row").forEach(v=>{const b=v.getAttribute("data-feat-row"),L=b?e.selectedFeatureIds.has(b):!1;v.classList.toggle("selected-row",L),v.setAttribute("aria-selected",String(L));const x=v.querySelector(".ui-target-circle");x&&x.classList.toggle("selected",L)}),o.querySelectorAll(".ui-layer-group").forEach(v=>{const b=v.getAttribute("data-layer-id"),L=e.feicoes.filter(w=>w.layerId===b),x=v.querySelector(".ui-layer-row .ui-target-circle");if(x&&L.length>0){const w=L.every(C=>e.selectedFeatureIds.has(C.id)),$=!w&&L.some(C=>e.selectedFeatureIds.has(C.id));x.classList.toggle("selected",w),x.classList.toggle("partial",$)}else x&&x.classList.remove("selected","partial")});const a=e.feicoes.filter(v=>e.selectedFeatureIds.has(v.id)),r=a.length>0,i=o.getElementById("footer-count"),t=o.getElementById("footer-label");i&&(i.textContent=String(r?a.length:e.camadas.length)),t&&(t.textContent=r?a.length>1?"selecionados":"selecionado":e.camadas.length>1?"camadas":"camada");const s=o.querySelector(".ui-footer-metric"),n=ie(a);s&&(n?(s.innerHTML=`${g.reguaMetrica} ${n}`,s.style.display="inline-flex"):s.style.display="none");const l=o.querySelector(".ui-tree-footer");l&&(l.classList.toggle("tem-selecao",r),l.classList.toggle("sem-selecao",!r));const c=o.querySelector(".ui-footer-actions-gerais");c&&(c.style.display=r?"none":"flex");const f=o.querySelector(".ui-footer-bulk-actions");f&&(f.style.display=r?"flex":"none"),["btn-footer-vis","btn-footer-lock","btn-footer-del"].forEach(v=>{const b=o.getElementById(v);b&&(b.disabled=!r,b.classList.toggle("disabled",!r))});const u=o.querySelector(".ui-footer-move-wrapper");u&&u.classList.toggle("disabled",!r);const p=o.getElementById("select-footer-move");p&&(p.disabled=!r);const d=o.querySelector(".ui-footer-color-wrapper");d&&d.classList.toggle("disabled",!r);const m=o.getElementById("input-footer-color");m&&(m.disabled=!r);let h=o.getElementById("btn-footer-clear");const k=o.querySelector(".ui-footer-right");r&&!h&&k?(h=document.createElement("button"),h.id="btn-footer-clear",h.className="ui-footer-btn btn-clear-footer",h.title="Limpar seleção",h.innerHTML=g.fechar,h.addEventListener("click",()=>e.limparSelecao(!0)),k.appendChild(h)):!r&&h&&h.remove()}function ba(e){function r(){return e.getMinAltura?e.getMinAltura():140}function i(){return e.getMaxAltura?e.getMaxAltura():1600}function t(c,f=!1){if(c==null||c===""){e.hostElement.style.removeProperty("height"),e.hostElement.style.removeProperty("--ui-camadas-altura"),f&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:null}}));return}const u=typeof c=="number"?c:parseFloat(String(c));if(isNaN(u))return;const p=Math.max(r(),Math.min(i(),Math.round(u)));e.hostElement.style.height=`${p}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${p}px`),f&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:p}}))}let s=null;function n(){if(!e.resizerElement)return;let c=!1,f=0,u=0;const p=m=>{if(m.button!==0)return;m.preventDefault(),m.stopPropagation(),c=!0,f=m.clientY,u=e.hostElement.getBoundingClientRect().height,e.resizerElement.classList.add("ui-camadas-resizer--ativo"),e.hostElement.classList.add("ui-camadas--redimensionando");try{e.resizerElement.setPointerCapture(m.pointerId)}catch{}const h=b=>{if(!c)return;b.preventDefault();const L=b.clientY-f,x=Math.max(r(),Math.min(i(),Math.round(u+L)));e.hostElement.style.height=`${x}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${x}px`),e.onRedimensionando&&e.onRedimensionando(x),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionando-altura",{bubbles:!0,composed:!0,detail:{altura:x}}))},k=()=>{var b;c=!1,s=null,window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",v),(b=e.resizerElement)==null||b.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando")},v=b=>{if(!c)return;c=!1,e.resizerElement.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando");try{e.resizerElement.hasPointerCapture(b.pointerId)&&e.resizerElement.releasePointerCapture(b.pointerId)}catch{}window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",v);const L=e.hostElement.getBoundingClientRect().height,x=Math.round(L);e.onAlturaAlterada&&e.onAlturaAlterada(x),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:x}}))};s=k,window.addEventListener("pointermove",h),window.addEventListener("pointerup",v),window.addEventListener("pointercancel",v)},d=m=>{m.preventDefault(),m.stopPropagation(),t(null,!0),e.onAlturaAlterada&&e.onAlturaAlterada(null)};e.listeners.add(e.resizerElement,"pointerdown",p),e.listeners.add(e.resizerElement,"dblclick",d)}function l(){s==null||s(),e.listeners.cleanup()}return{init:n,definirAltura:t,destruir:l}}const q=class q extends K.SafeHTMLElement{constructor(){super();y(this,"shadow");y(this,"listeners",new Ke.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,"camadasRemovidas",new Set);y(this,"origensCamadas",new Map);y(this,"salvarLembrancaDebounced",ve(()=>this.salvarLembrancaEstado(),200));y(this,"camadas",[]);y(this,"feicoes",[]);y(this,"mapasBase",[...oe]);y(this,"expandedLayers",new Set);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=`
|
|
315
|
-
<style>${
|
|
314
|
+
`}function ra(e,o,a){let r=e.find(i=>i.id===o);for(;r&&r.parentId;){if(r.parentId===a)return!0;r=e.find(i=>i.id===(r==null?void 0:r.parentId))}return!1}class ze{constructor(o,a){A(this,"host");A(this,"shadow");this.host=o,this.shadow=a}bindAll(){this.bindInlineRename(),this.bindDragAndDrop(),this.bindTouchDragAndDrop()}bindInlineRename(){this.shadow.querySelectorAll("[data-layer-name-trigger]").forEach(o=>{o.addEventListener("dblclick",a=>{a.stopPropagation();const r=o.getAttribute("data-layer-name-trigger");if(!r)return;this.host.editingLayerId=r,this.host.solicitarRenderizacao();const i=F(this.shadow,"data-inline-layer-input",r);if(i){i.focus(),i.select();let t=!1;const n=s=>{var l,c;if(!t){if(t=!0,this.host.editingLayerId=null,s){const f=i.value.trim(),u=this.host.camadas.find(p=>p.id===r);f&&u&&u.name!==f&&(u.name=f,(c=(l=this.host).salvarLembrancaEstado)==null||c.call(l),this.host.dispararEvento("ui-camada-renomeada",{camadaId:r,novoNome:f,camada:u}))}this.host.solicitarRenderizacao()}};i.addEventListener("keydown",s=>{s.key==="Enter"?(s.preventDefault(),n(!0)):s.key==="Escape"&&(s.preventDefault(),n(!1))}),i.addEventListener("blur",()=>n(!0))}})}),this.shadow.querySelectorAll("[data-feat-name-trigger]").forEach(o=>{o.addEventListener("dblclick",a=>{a.stopPropagation();const r=o.getAttribute("data-feat-name-trigger");if(!r)return;this.host.editingFeatureId=r,this.host.solicitarRenderizacao();const i=F(this.shadow,"data-inline-feat-input",r);if(i){i.focus(),i.select();let t=!1;const n=s=>{if(!t){if(t=!0,this.host.editingFeatureId=null,s){const l=i.value.trim(),c=this.host.feicoes.find(f=>f.id===r);l&&c&&c.name!==l&&(c.name=l,this.host.dispararEvento("ui-feicao-renomeada",{feicaoId:r,novoNome:l,feicao:c}))}this.host.solicitarRenderizacao()}};i.addEventListener("keydown",s=>{s.key==="Enter"?(s.preventDefault(),n(!0)):s.key==="Escape"&&(s.preventDefault(),n(!1))}),i.addEventListener("blur",()=>n(!0))}})})}bindDragAndDrop(){let o=null,a=null,r=null;const i=()=>{this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(t=>{t.classList.remove("dragging","drop-above","drop-below","drop-into")})};this.shadow.querySelectorAll('.ui-layer-row[draggable="true"]').forEach(t=>{const n=t.getAttribute("data-layer-id");n&&(t.addEventListener("dragstart",s=>{const l=s;if(l.target.closest("input, button, select")||this.host.editingLayerId||this.host.editingFeatureId){l.preventDefault();return}o="layer",a=n,l.dataTransfer&&(l.dataTransfer.setData("text/plain",JSON.stringify({type:"layer",id:n})),l.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",s=>{const l=s;if(l.preventDefault(),l.stopPropagation(),l.dataTransfer&&(l.dataTransfer.dropEffect="move"),o==="layer"){if(a===n)return;const c=t.getBoundingClientRect(),f=(l.clientY-c.top)/c.height;f<.25?(t.classList.add("drop-above"),t.classList.remove("drop-below","drop-into")):f>.75?(t.classList.add("drop-below"),t.classList.remove("drop-above","drop-into")):(t.classList.add("drop-into"),t.classList.remove("drop-above","drop-below"))}else o==="feature"&&t.classList.add("drop-into")}),t.addEventListener("dragleave",s=>{const l=s.relatedTarget;l&&t.contains(l)||t.classList.remove("drop-above","drop-below","drop-into")}),t.addEventListener("drop",s=>{var u,p;const l=s;l.preventDefault(),l.stopPropagation();const c=t.classList.contains("drop-above"),f=t.classList.contains("drop-into");if(i(),o==="layer"){if(!a||a===n)return;const d=this.host.camadas.find(h=>h.id===a),m=this.host.camadas.find(h=>h.id===n);if(!d||!m)return;if(f)ra(this.host.camadas,m.id,d.id)||(d.parentId=m.id,"expandedLayers"in this.host&&this.host.expandedLayers&&this.host.expandedLayers.add(m.id),this.host.dispararEvento("ui-camada-mover-hierarquia",{camadaId:d.id,novoParentId:m.id,camada:d}));else{const h=this.host.camadas.findIndex(v=>v.id===a);if(h===-1)return;this.host.camadas.splice(h,1);const I=this.host.camadas.findIndex(v=>v.id===n);I===-1?this.host.camadas.push(d):this.host.camadas.splice(c?I:I+1,0,d),d.parentId=m.parentId??null}(p=(u=this.host).salvarLembrancaEstado)==null||p.call(u),this.host.dispararEvento("ui-camadas-reordenadas",{camadas:[...this.host.camadas]}),this.host.solicitarRenderizacao()}else if(o==="feature"){if(!r)return;const d=this.host.feicoes.find(h=>h.id===r),m=this.host.camadas.find(h=>h.id===n);if(d&&m&&d.layerId!==n){const h=d.layerId;d.layerId=n,this.host.dispararEvento("ui-feicao-movida",{feicaoId:d.id,camadaOrigemId:h,camadaDestinoId:n,feicao:d}),this.host.solicitarRenderizacao()}}}),t.addEventListener("dragend",()=>{o=null,a=null,r=null,i()}))}),this.shadow.querySelectorAll('.ui-feat-row[draggable="true"]').forEach(t=>{const n=t.getAttribute("data-feat-row"),s=t.getAttribute("data-feat-layer");n&&(t.addEventListener("dragstart",l=>{const c=l;if(c.target.closest("input, button, select")||this.host.editingLayerId||this.host.editingFeatureId){c.preventDefault();return}c.stopPropagation(),o="feature",r=n,a=s,c.dataTransfer&&(c.dataTransfer.setData("text/plain",JSON.stringify({type:"feature",id:n,layerId:s})),c.dataTransfer.effectAllowed="move"),t.classList.add("dragging")}),t.addEventListener("dragover",l=>{const c=l;if(o!=="feature"||r===n)return;c.preventDefault(),c.stopPropagation(),c.dataTransfer&&(c.dataTransfer.dropEffect="move");const f=t.getBoundingClientRect(),u=c.clientY-f.top<f.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(o!=="feature"||!r||r===n)return;c.preventDefault(),c.stopPropagation();const f=t.classList.contains("drop-above");i();const u=this.host.feicoes.findIndex(b=>b.id===r);if(u===-1)return;const p=this.host.feicoes.find(b=>b.id===n);if(!p)return;const[d]=this.host.feicoes.splice(u,1),m=d.layerId,h=p.layerId,I=m!==h;I&&(d.layerId=h);const v=this.host.feicoes.findIndex(b=>b.id===n);v===-1?this.host.feicoes.push(d):this.host.feicoes.splice(f?v:v+1,0,d),I&&this.host.dispararEvento("ui-feicao-movida",{feicaoId:d.id,camadaOrigemId:m,camadaDestinoId:h,feicao:d}),this.host.dispararEvento("ui-feicoes-reordenadas",{feicoes:[...this.host.feicoes]}),this.host.solicitarRenderizacao()}),t.addEventListener("dragend",l=>{l.stopPropagation(),o=null,r=null,a=null,i()}))})}bindTouchDragAndDrop(){this.shadow.querySelectorAll(".ui-layer-row .ui-col-drag").forEach(o=>{const a=o.closest(".ui-layer-row");if(!a)return;const r=a.getAttribute("data-layer-id");r&&o.addEventListener("pointerdown",i=>{const t=i;if(t.pointerType==="mouse"&&t.button!==0||this.host.editingLayerId||this.host.editingFeatureId)return;let n=null,s=!1;const l=r,c=()=>{this.shadow.querySelectorAll(".ui-layer-row, .ui-feat-row, .ui-layer-group").forEach(p=>p.classList.remove("dragging","drop-above","drop-below"))},f=p=>{p.preventDefault(),a.classList.add("dragging");const d=this.shadow.elementFromPoint(p.clientX,p.clientY),m=d?d.closest(".ui-layer-row"):null;if(n&&n!==m&&n.classList.remove("drop-above","drop-below"),m&&m!==a){n=m;const h=m.getBoundingClientRect();s=p.clientY-h.top<h.height/2,m.classList.toggle("drop-above",s),m.classList.toggle("drop-below",!s)}else n=null},u=()=>{var p,d;if(window.removeEventListener("pointermove",f),window.removeEventListener("pointerup",u),window.removeEventListener("pointercancel",u),n){const m=n.getAttribute("data-layer-id");if(c(),m&&l&&m!==l){const h=this.host.camadas.findIndex(I=>I.id===l);if(h!==-1){const[I]=this.host.camadas.splice(h,1),v=this.host.camadas.findIndex(b=>b.id===m);v===-1?this.host.camadas.push(I):this.host.camadas.splice(s?v:v+1,0,I),(d=(p=this.host).salvarLembrancaEstado)==null||d.call(p),this.host.dispararEvento("ui-camadas-reordenadas",{camadas:[...this.host.camadas]}),this.host.solicitarRenderizacao()}}}else c()};window.addEventListener("pointermove",f,{passive:!1}),window.addEventListener("pointerup",u),window.addEventListener("pointercancel",u)})})}}const ta="ui_camadas_estado_";function Fe(e,o){const a=(e||o||"default").trim();return`${ta}${a}`}function U(e){if(typeof window>"u"||typeof localStorage>"u")return null;try{const o=localStorage.getItem(e);if(!o)return null;const a=JSON.parse(o);if(a&&typeof a=="object")return a}catch(o){console.warn(`[UI-Camadas] Não foi possível carregar o estado persistido (${e}):`,o)}return null}function Be(e,o){if(!(typeof window>"u"||typeof localStorage>"u"))try{localStorage.setItem(e,JSON.stringify(o))}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 _(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 Pe(e,o,a,r){if(!Array.isArray(e))return;const i=(o==null?void 0:o.camadasOverrides)||{},t=new Set((o==null?void 0:o.expandedLayerIds)||[]),n=new Set((o==null?void 0:o.collapsedLayerIds)||[]),s=t.size>0||n.size>0;for(let u=0;u<e.length;u++){const p=e[u],d=i[p.id];if(r==null||r.set(p.id,_(p)),d){const m=d.origem,h=I=>{var b;const v=(b=r==null?void 0:r.get(p.id))==null?void 0:b[I];return m!==void 0&&m[I]!==v};typeof d.name=="string"&&d.name.trim()&&!h("name")&&(p.name=d.name),typeof d.visible=="boolean"&&!h("visible")&&(p.visible=d.visible),typeof d.locked=="boolean"&&!h("locked")&&(p.locked=d.locked),typeof d.opacity=="number"&&!h("opacity")&&(p.opacity=d.opacity),typeof d.color=="string"&&!h("color")&&(p.color=d.color),d.parentId!==void 0&&!h("parentId")&&(p.parentId=d.parentId)}s?t.has(p.id)?a.add(p.id):n.has(p.id)?a.delete(p.id):a.add(p.id):a.add(p.id)}const l=new Set(e.map(u=>u.id)),c=o==null?void 0:o.ordemOrigemIds;if(!(Array.isArray(c)&&(()=>{const u=new Set(c),p=d=>d.filter(m=>l.has(m)&&u.has(m)).join("|");return p(c)!==p(e.map(d=>d.id))})())&&Array.isArray(o==null?void 0:o.ordemCamadasIds)&&o.ordemCamadasIds.length>0){const u=new Map;o.ordemCamadasIds.forEach((p,d)=>u.set(p,d)),e.sort((p,d)=>{const m=u.has(p.id)?u.get(p.id):9999,h=u.has(d.id)?u.get(d.id):9999;return m-h})}}function De(e){const{estadoAnterior:o,camadas:a,expandedLayers:r}=e;let i=(o==null?void 0:o.expandedLayerIds)||[],t=(o==null?void 0:o.collapsedLayerIds)||[],n=(o==null?void 0:o.ordemCamadasIds)||[],s=o==null?void 0:o.ordemOrigemIds;const l={...(o==null?void 0:o.camadasOverrides)||{}};a.length>0&&(i=[],t=[],n=a.map(c=>c.id),s=e.origensCamadas?[...e.origensCamadas.keys()]:n,a.forEach(c=>{var f,u;r.has(c.id)?i.push(c.id):t.push(c.id),l[c.id]={name:c.name,visible:c.visible!==!1,locked:!!c.locked,opacity:typeof c.opacity=="number"?c.opacity:1,color:c.color||"#00E08A",origem:((f=e.origensCamadas)==null?void 0:f.get(c.id))??((u=l[c.id])==null?void 0:u.origem)}}));for(const c of e.camadasRemovidas??[])delete l[c];return{versao:1,expandedLayerIds:i,collapsedLayerIds:t,camadaAtivaId:e.camadaAtivaId,painelColapsado:e.painelColapsado,ordemCamadasIds:n,ordemOrigemIds:s,mapaBaseAtivo:e.mapaBaseAtivo,densidade:e.densidade,altura:e.altura,camadasOverrides:l,ultimaAtualizacao:Date.now()}}const ia=':host{display:flex;flex-direction:column;box-sizing:border-box;font-family:inherit;font-size:11px;color:var(--ui-cor-texto, #e1e1e6);-webkit-user-select:none;user-select:none;width:100%;height:var(--ui-camadas-altura, 100%);min-height:var(--ui-camadas-min-altura, 140px);position:relative;--camada-linha-altura: 25px;--camada-thumb-tamanho: 20px;--camada-transicao: .16s cubic-bezier(.16, 1, .3, 1)}:host([densidade="compacto"]){--camada-linha-altura: 22px;--camada-thumb-tamanho: 17px;font-size:10px}:host([flutuante]){position:absolute;top:10px;right:10px;bottom:46px;z-index:var(--ui-z-workspace-hud, 500);width:auto;height:var(--ui-camadas-altura, auto)}*,*:before,*:after{box-sizing:border-box}:host(:not([flutuante])) .ui-camadas-container{max-width:100%;min-width:0;border:none;box-shadow:none;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.ui-camadas-container{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;width:100%;max-width:380px;min-width:270px;background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));border-radius:var(--ui-raio-borda, 8px);box-shadow:var(--ui-sombra-lg, 0 10px 30px -4px rgba(0, 0, 0, .5)),0 0 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 5%,transparent);overflow:hidden;position:relative;transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .2s ease;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}:host([colapsado]) .ui-camadas-container{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.ui-camadas-toggle-flutuante{display:none;position:absolute;top:10px;right:10px;z-index:calc(var(--ui-z-workspace-hud, 500) - 1);background:var(--ui-cor-superficie, #141417);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .18));border-radius:var(--ui-raio-borda, 6px);color:var(--ui-cor-texto, #ffffff);width:34px;height:34px;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--ui-sombra-md, 0 8px 20px rgba(0, 0, 0, .45));transition:all var(--camada-transicao)}:host([colapsado][flutuante]) .ui-camadas-toggle-flutuante{display:flex}.ui-camadas-toggle-flutuante:hover{border-color:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-primaria, #00E08A);transform:scale(1.08);box-shadow:0 0 14px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-camadas-header{height:32px;min-height:32px;max-height:32px;display:flex;align-items:center;justify-content:space-between;padding:0 5px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));background:var(--ui-cor-fundo-elevado, rgba(0, 0, 0, .28));gap:4px}.ui-camadas-tabs{display:flex;gap:3px;flex:1}.ui-camadas-tab-btn{flex:1;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);height:24px;padding:0 6px;font-size:11px;font-weight:500;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:all var(--camada-transicao)}.ui-camadas-tab-btn:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .07))}.ui-camadas-tab-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent);font-weight:600}.ui-camadas-btn-colapsar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;cursor:pointer;border-radius:var(--ui-raio-sm, 4px);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--camada-transicao)}.ui-camadas-btn-colapsar:hover{color:var(--ui-cor-texto, #ffffff);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-camadas-corpo{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 6px 4px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent) transparent}.ui-camadas-corpo::-webkit-scrollbar{width:4px}.ui-camadas-corpo::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 18%,transparent);border-radius:var(--ui-raio-sm, 4px)}.ui-camadas-corpo::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent)}.ui-tree-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1px 2px 3px;border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .06))}.ui-tree-title-group{display:flex;align-items:center;gap:5px}.ui-tree-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-tree-count-badge{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);color:var(--ui-cor-texto-secundario, #888899);padding:1px 5px;border-radius:8px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent)}.ui-tree-actions{display:flex;align-items:center;gap:3px}.ui-tree-action-btn{background:transparent;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #888899);border-radius:var(--ui-raio-sm, 4px);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-tree-action-btn:hover{color:var(--ui-cor-texto, #ffffff);border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .09))}.ui-tree-btn-new{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent);color:var(--ui-cor-primaria, #00E08A);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 8px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-new:hover{background:var(--ui-cor-primaria, #00E08A);color:var(--ui-cor-texto-sobre-primaria, #000000);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-tree-search-wrapper{position:relative;display:flex;align-items:center;margin:1px 0}.ui-tree-search-icon{position:absolute;left:8px;color:var(--ui-cor-texto-secundario, #888899);pointer-events:none;display:flex;align-items:center}.ui-tree-search-input{width:100%;height:25px;background:var(--ui-cor-fundo, #0a0a0c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));border-radius:var(--ui-raio-borda, 5px);padding:0 24px 0 26px;color:var(--ui-cor-texto, #ffffff);font-size:10.5px;outline:none;transition:border-color var(--camada-transicao),box-shadow var(--camada-transicao)}.ui-tree-search-input:focus{border-color:var(--ui-cor-primaria, #00E08A);box-shadow:0 0 0 2px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-tree-search-clear{position:absolute;right:5px;background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);cursor:pointer;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all var(--camada-transicao)}.ui-tree-search-clear:hover{color:var(--ui-cor-texto, #ffffff);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent)}.ui-panel-box{background:var(--ui-cor-fundo, #0c0c0f);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));border-radius:var(--ui-raio-borda, 6px);overflow:hidden;display:flex;flex-direction:column;flex:1 1 0%;min-height:80px}.ui-layer-tree{flex:1 1 0%;min-height:40px;overflow-y:auto;overflow-x:hidden}.ui-layer-group{border-bottom:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .04));transition:background var(--camada-transicao)}.ui-layer-group.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A);outline-offset:-1.5px}.ui-layer-row,.ui-feat-row{display:flex;align-items:center;height:var(--camada-linha-altura);min-height:var(--camada-linha-altura);max-height:var(--camada-linha-altura);padding:0 4px;-webkit-user-select:none;user-select:none;cursor:default;transition:background .1s ease;position:relative}.ui-layer-row{background:var(--ui-cor-fundo-elevado, #18181d);font-weight:600;cursor:pointer;border-left:3px solid transparent}.ui-layer-row:hover{background:var(--ui-cor-hover-menu, #22222a)}.ui-layer-row.active-drawing-layer{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent)!important;border-left:3px solid var(--layer-active-color, var(--ui-cor-primaria, #00E08A))!important;box-shadow:inset 0 0 12px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 7%,transparent)}.ui-layer-row.active-drawing-layer .ui-name-text{color:var(--ui-cor-texto, #e1e1e6);font-weight:700}.ui-feat-row{background:var(--ui-cor-fundo, #101014);font-weight:400;cursor:pointer}.ui-feat-row:hover{background:var(--ui-cor-hover-menu, #19191f)}.ui-feat-row.selected-row{background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 18%,transparent)!important;outline:1px solid color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 50%,transparent)!important;outline-offset:-1px}.ui-layer-row.hidden-layer,.ui-feat-row.hidden-row{opacity:.52}.ui-layer-row.hidden-layer .ui-col-eye,.ui-feat-row.hidden-row .ui-col-eye{color:var(--ui-cor-texto-alerta, #ffb86c);opacity:.95}.ui-layer-row.dragging,.ui-feat-row.dragging{opacity:.35;background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 16%,transparent)!important}.ui-layer-row.drop-above:before,.ui-feat-row.drop-above:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-below:after,.ui-feat-row.drop-below:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ui-cor-texto-info, #33b5ff);box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 100%,transparent);z-index:20;pointer-events:none}.ui-layer-row.drop-into{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 16%,transparent)!important;outline:1.5px dashed var(--ui-cor-primaria, #00E08A)!important;outline-offset:-2px;border-radius:var(--ui-raio-sm, 4px)}.ui-layer-row.is-sublayer{padding-left:calc(6px + var(--layer-depth, 1) * 16px);background:color-mix(in srgb,var(--ui-cor-fundo-elevado, #18181d) 70%,transparent);border-left:2px solid color-mix(in srgb,var(--layer-active-color, #00E08A) 40%,transparent)}.ui-children-container.is-subchildren{position:relative;margin-left:calc(var(--layer-depth, 0) * 8px);border-left:1px dashed var(--ui-cor-borda, rgba(255, 255, 255, .1))}.ui-group-folder-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-cor-texto-alerta, #ffb86c);margin-right:4px;flex-shrink:0}.ui-group-badge{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:1px 4px;border-radius:3px;background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 15%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 30%,transparent);margin-left:4px;flex-shrink:0}.ui-col{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--camada-linha-altura)}.ui-col-drag{width:14px;cursor:grab;color:var(--ui-cor-texto-secundario, #888899);opacity:.35;touch-action:none;transition:opacity var(--camada-transicao),color var(--camada-transicao)}.ui-layer-row:hover .ui-col-drag,.ui-feat-row:hover .ui-col-drag{opacity:.9;color:var(--ui-cor-primaria, #00E08A)}.ui-col-drag:active{cursor:grabbing}.ui-col-eye{width:20px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-eye:hover{color:var(--ui-cor-primaria, #00E08A)}.ui-col-lock{width:18px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);transition:color var(--camada-transicao)}.ui-col-lock:hover{color:var(--ui-cor-texto-alerta, #ffb86c)}.ui-col-colorbar{width:3.5px;height:16px;margin:0 3px 0 2px;border-radius:1.5px;flex-shrink:0}.ui-col-chevron{width:14px;cursor:pointer;color:var(--ui-cor-texto-secundario, #888899);display:flex;align-items:center;justify-content:center}.ui-chevron-icon{display:inline-flex;align-items:center;justify-content:center;transition:transform var(--camada-transicao)}.ui-chevron-icon.open{transform:rotate(90deg)}.ui-col-branch{width:14px;display:flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.ui-col-thumb{width:calc(var(--camada-thumb-tamanho) + 3px);margin-right:4px;display:flex;align-items:center;justify-content:center}.ui-thumb-box{width:var(--camada-thumb-tamanho);height:var(--camada-thumb-tamanho);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 15%,transparent);border-radius:3px;background:var(--ui-cor-fundo, #0d0d10);box-sizing:border-box;overflow:hidden;display:flex;align-items:center;justify-content:center}.ui-col-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ui-cor-texto, #e1e1e6);padding-left:2px;padding-right:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;text-align:left;gap:4px}.ui-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-active-badge{font-size:8px;font-weight:700;color:var(--ui-cor-texto-sobre-primaria, #000000);background:var(--ui-cor-primaria, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent);padding:1px 4px;border-radius:3px;display:inline-flex;align-items:center;gap:2px;white-space:nowrap;flex-shrink:0;animation:pulseBadge 2.8s infinite}@keyframes pulseBadge{0%{opacity:.85}50%{opacity:1;filter:drop-shadow(0 0 4px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 50%,transparent))}to{opacity:.85}}.ui-count-chip{font-size:9px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent);padding:0 4px;border-radius:8px}.ui-col-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--camada-transicao)}.ui-layer-row:hover .ui-col-actions,.ui-feat-row:hover .ui-col-actions{opacity:1}.ui-micro-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:18px;height:18px;padding:0;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-micro-btn:hover{color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-micro-btn.active{color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 18%,transparent)}.ui-col-target{width:22px;cursor:pointer}.ui-target-circle{width:11px;height:11px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 32%,transparent);background:transparent;transition:all .12s ease}.ui-col-target:hover .ui-target-circle{border-color:var(--ui-cor-texto-info, #33b5ff);transform:scale(1.18)}.ui-target-circle.selected{border:2px solid var(--ui-cor-texto-info, #33b5ff);background:var(--ui-cor-texto-info, #33b5ff);box-shadow:inset 0 0 0 2px var(--ui-cor-superficie, #141418)}.ui-target-circle.partial{border:2px solid var(--ui-cor-texto-info, #33b5ff);background:color-mix(in srgb,var(--ui-cor-texto-info, #33b5ff) 40%,transparent)}.ui-inline-rename-input{width:100%;height:20px;background:var(--ui-cor-fundo, #0d0d10);color:var(--ui-cor-texto, #e1e1e6);border:1px solid var(--ui-cor-primaria, #00E08A);border-radius:3px;font-size:10.5px;padding:0 4px;outline:none;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 40%,transparent)}.ui-layer-settings-drawer{background:linear-gradient(180deg,var(--ui-cor-fundo-elevado, #17171e) 0%,var(--ui-cor-superficie, #0f0f13) 100%);padding:10px 14px 12px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent);border-left:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;flex-direction:column;gap:10px;box-shadow:inset 0 1px color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 6%,transparent),0 6px 16px #00000073;animation:drawerSlideDown .18s cubic-bezier(.16,1,.3,1);position:relative;z-index:10}@keyframes drawerSlideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.ui-drawer-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-header-left{display:flex;align-items:center;gap:7px;min-width:0}.ui-drawer-icon{color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));display:flex;align-items:center;flex-shrink:0}.ui-drawer-title{font-size:10.5px;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.ui-drawer-layer-chip{font-size:9.5px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-drawer-btn-fechar{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:20px;height:20px;padding:0;border-radius:var(--ui-raio-sm, 4px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--camada-transicao)}.ui-drawer-btn-fechar:hover{color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-body{display:flex;flex-direction:column;gap:10px}.ui-drawer-row{display:flex;flex-direction:column;gap:5px}.ui-drawer-row-label{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--ui-cor-texto-secundario, #888899)}.ui-drawer-color-group{display:flex;align-items:center;justify-content:space-between;gap:8px}.ui-drawer-color-pill{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 5px;background:var(--ui-cor-fundo, #0b0b0d);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 16%,transparent);border-radius:var(--ui-raio-sm, 4px);cursor:pointer;transition:all var(--camada-transicao);-webkit-user-select:none;user-select:none}.ui-drawer-color-pill:hover{border-color:var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 25%,transparent)}.ui-drawer-color-sample{width:14px;height:14px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 35%,transparent);box-shadow:var(--ui-sombra-sm, 0 1px 3px rgba(0, 0, 0, .5));flex-shrink:0;transition:background-color .1s ease}.ui-drawer-color-hex{font-size:10px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);letter-spacing:.5px}.ui-drawer-color-native{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.ui-drawer-badge{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-texto, #e1e1e6);background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 10%,transparent);padding:1px 6px;border-radius:var(--ui-raio-sm, 4px);border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider-container{display:flex;flex-direction:column;gap:4px}.ui-drawer-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 8%,transparent) 0%,var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A)) 100%);border-radius:3px;outline:none;margin:3px 0;cursor:pointer;border:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 12%,transparent)}.ui-drawer-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer;transition:transform .12s ease}.ui-drawer-slider::-webkit-slider-thumb:hover{transform:scale(1.22)}.ui-drawer-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--drawer-cor-camada, var(--ui-cor-primaria, #00E08A));box-shadow:0 0 6px #0009,0 0 10px var(--drawer-cor-camada, rgba(0, 224, 138, .6));cursor:pointer}.ui-drawer-footer{display:flex;align-items:center;justify-content:space-between;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 7%,transparent)}.ui-drawer-meta-info{font-size:9.5px;color:var(--ui-cor-texto-secundario, #888899);font-style:italic}.ui-drawer-actions{display:flex;align-items:center;gap:6px}.ui-drawer-btn-danger{background:color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 10%,transparent);border:1px solid color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 35%,transparent);color:var(--ui-cor-texto-erro, #ff5555);border-radius:var(--ui-raio-sm, 4px);height:24px;padding:0 10px;font-size:10px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:all var(--camada-transicao)}.ui-drawer-btn-danger:hover{background:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-fundo, #d32f2f);box-shadow:0 0 10px color-mix(in srgb,var(--ui-cor-texto-erro, #ff5555) 45%,transparent);transform:translateY(-.5px)}.ui-drawer-btn-danger.confirming{background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);color:var(--ui-cor-botao-destrutivo-texto, #ffffff);border-color:var(--ui-cor-botao-destrutivo-hover, #b71c1c);animation:pulseDanger 1.2s infinite}@keyframes pulseDanger{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.ui-geom-tag{font-size:8px;font-weight:700;letter-spacing:.4px;padding:1px 4px;border-radius:3px;margin-left:4px;text-transform:uppercase;flex-shrink:0}.ui-geom-tag.oficial{background:color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 16%,transparent);color:var(--ui-cor-texto-sucesso, #00E08A);border:1px solid color-mix(in srgb,var(--ui-cor-texto-sucesso, #00E08A) 35%,transparent)}.ui-geom-tag.previa{background:color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 16%,transparent);color:var(--ui-cor-texto-alerta, #ffb86c);border:1px solid color-mix(in srgb,var(--ui-cor-texto-alerta, #ffb86c) 35%,transparent)}.ui-tree-footer{height:32px;min-height:32px;background:var(--ui-cor-fundo-elevado, #121216);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));display:flex;align-items:center;justify-content:space-between;padding:0 8px;gap:6px;box-sizing:border-box;overflow:hidden;position:relative}.ui-footer-left{display:flex;align-items:center;gap:5px;white-space:nowrap;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis}.ui-footer-count{font-size:11px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;font-weight:700;color:var(--ui-cor-primaria, #00E08A);flex-shrink:0}.ui-footer-label{font-size:10px;font-weight:500;color:var(--ui-cor-texto-secundario, #888899);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-metric{font-size:9.5px;font-family:var(--ui-fonte-codigo, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--ui-cor-primaria, #00E08A);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);padding:1px 5px;border-radius:3px;border:1px solid color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 24%,transparent);flex-shrink:0}.ui-footer-actions-gerais{display:flex;align-items:center;gap:4px;flex-shrink:0}.ui-footer-chip-btn{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .1));color:var(--ui-cor-texto-secundario, #a0a0b0);font-size:10px;font-weight:600;height:22px;padding:0 7px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-footer-chip-btn:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#fff3}.ui-footer-chip-btn.primario{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);border-color:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 32%,transparent);color:var(--ui-cor-primaria, #00E08A)}.ui-footer-chip-btn.primario:hover{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 22%,transparent);border-color:var(--ui-cor-primaria, #00E08A);color:#fff}.ui-footer-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.ui-footer-btn{background:transparent;border:none;color:var(--ui-cor-texto-secundario, #888899);width:22px;height:22px;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all var(--camada-transicao);flex-shrink:0}.ui-footer-btn:hover:not(.disabled){color:var(--ui-cor-texto, #e1e1e6);background:var(--ui-cor-hover-menu, rgba(255, 255, 255, .12))}.ui-footer-btn.disabled{opacity:.25;cursor:not-allowed}.ui-footer-btn.btn-danger-footer:hover:not(.disabled){color:#f55;background:#ff555526}.ui-footer-btn.confirming{background:#f55!important;color:#fff!important}.ui-footer-btn.btn-clear-footer{color:var(--ui-cor-texto-secundario, #888899);margin-left:2px}.ui-footer-btn.btn-clear-footer:hover{color:#fff;background:#ffffff1f}.ui-footer-color-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:18px;height:18px;cursor:pointer;flex-shrink:0}.ui-footer-color-preview{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 0 4px #0006;pointer-events:none;transition:transform .15s ease,border-color .15s ease}.ui-footer-color-wrapper:hover .ui-footer-color-preview{transform:scale(1.15);border-color:#fff}.ui-footer-color{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0;border:none}.ui-footer-move-wrapper{position:relative;display:flex;align-items:center;max-width:95px;flex-shrink:0}.ui-footer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10px;height:22px;padding:0 4px;cursor:pointer;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-footer-select:hover:not(:disabled){border-color:#ffffff40}.ui-footer-select:focus{outline:none;border-color:var(--ui-cor-primaria, #00E08A)}.ui-tree-btn-group{background:#ffffff0a;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto-secundario, #a0a0b0);border-radius:var(--ui-raio-sm, 4px);height:22px;padding:0 7px;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-tree-btn-group:hover{background:#ffffff1a;color:var(--ui-cor-texto, #ffffff);border-color:#ffffff40}.ui-drawer-btn-sublayer{background:#ffffff0f;border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .12));color:var(--ui-cor-texto, #e1e1e6);font-size:10.5px;font-weight:500;padding:4px 8px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:all var(--camada-transicao)}.ui-drawer-btn-sublayer:hover{background:#ffffff1f;color:var(--ui-cor-primaria, #00E08A);border-color:var(--ui-cor-primaria, #00E08A)}.ui-drawer-select-wrapper{display:flex;align-items:center}.ui-drawer-select{background:var(--ui-cor-fundo, #16161c);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .15));color:var(--ui-cor-texto, #e1e1e6);border-radius:4px;font-size:10.5px;height:24px;padding:0 6px;cursor:pointer;max-width:140px}.ui-basemap-section{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.ui-basemap-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.ui-basemap-card{display:flex;flex-direction:column;align-items:center;gap:2px;padding:3px;border-radius:var(--ui-raio-borda, 5px);background:var(--ui-cor-fundo, #101014);border:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:pointer;transition:all var(--camada-transicao);text-align:center;overflow:hidden}.ui-basemap-card:hover{border-color:var(--ui-cor-primaria, #00E08A);background:var(--ui-cor-fundo-elevado, #17171c)}.ui-basemap-card.active{border-color:var(--ui-cor-primaria, #00E08A);background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 12%,transparent);color:var(--ui-cor-primaria, #00E08A);font-weight:600;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 35%,transparent)}.ui-basemap-preview{width:100%;height:22px;border-radius:3px;object-fit:cover;opacity:.85;transition:opacity var(--camada-transicao)}.ui-basemap-preview-none{width:100%;height:22px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 4%,transparent);border-radius:3px;color:var(--ui-cor-texto-secundario, #888899)}.ui-basemap-card:hover .ui-basemap-preview,.ui-basemap-card.active .ui-basemap-preview{opacity:1}.ui-basemap-card span{font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ui-search-hidden{display:none!important}.ui-empty-row{height:22px;display:flex;align-items:center;padding-left:36px;font-size:10px;color:var(--ui-cor-texto-secundario, #666677);font-style:italic;background:var(--ui-cor-fundo-recuado, rgba(0, 0, 0, .15))}.ui-camadas-resizer-altura{display:none;flex-shrink:0;width:100%;height:9px;background:var(--ui-cor-superficie, #141417);border-top:1px solid var(--ui-cor-borda, rgba(255, 255, 255, .08));cursor:ns-resize;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;touch-action:none;transition:background .15s ease,border-color .15s ease;position:relative;z-index:10}:host([redimensionavel]) .ui-camadas-resizer-altura,:host([redimensionavel-altura]) .ui-camadas-resizer-altura{display:flex}.ui-camadas-resizer-altura:hover,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo{background:color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 9%,transparent);border-top-color:var(--ui-cor-primaria, #00E08A)}.ui-camadas-resizer-grip{width:32px;height:3px;border-radius:2px;background:color-mix(in srgb,var(--ui-cor-texto, #e1e1e6) 22%,transparent);transition:all .15s ease}.ui-camadas-resizer-altura:hover .ui-camadas-resizer-grip,.ui-camadas-resizer-altura.ui-camadas-resizer--ativo .ui-camadas-resizer-grip{background:var(--ui-cor-primaria, #00E08A);width:46px;box-shadow:0 0 8px color-mix(in srgb,var(--ui-cor-primaria, #00E08A) 45%,transparent)}:host(.ui-camadas--redimensionando){-webkit-user-select:none!important;user-select:none!important;cursor:ns-resize!important}:host(.ui-camadas--redimensionando) *{-webkit-user-select:none!important;user-select:none!important}.ui-col-lock.ui-lock-open{opacity:.28}.ui-col-lock.ui-lock-open:hover,.ui-col-lock.ui-lock-open:focus-visible{opacity:.8}.ui-col-lock[data-locked-by-layer]{cursor:not-allowed}.ui-col[role=button]:focus-visible,.ui-basemap-card:focus-visible,.ui-feat-row:focus-visible,.ui-layer-row:focus-visible{outline:2px solid var(--ui-cor-primaria, #00E08A);outline-offset:-2px}.ui-footer-btn.confirming{color:var(--ui-cor-botao-destrutivo-texto, #ffffff);background:var(--ui-cor-botao-destrutivo-hover, #b71c1c);width:auto;padding:0 6px}';function oa(e,o){o.querySelectorAll("[data-layer-row]").forEach(i=>{i.addEventListener("click",t=>{if(t.target.closest("[data-layer-eye], [data-layer-lock], [data-layer-expand], [data-layer-target], [data-layer-fit], [data-layer-settings], input, button"))return;const s=i.getAttribute("data-layer-row");s&&e.definirCamadaAtiva(s,!0)})}),o.querySelectorAll("[data-layer-expand]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const n=i.getAttribute("data-layer-expand");if(!n)return;e.expandedLayers.has(n)?e.expandedLayers.delete(n):e.expandedLayers.add(n);const s=i.closest(".ui-layer-group"),l=i.querySelector(".ui-chevron-icon"),c=e.expandedLayers.has(n);if(l&&l.classList.toggle("open",c),s){const f=s.querySelector(".ui-children-container");f&&(f.style.display=c?"block":"none")}e.salvarLembrancaEstado()})}),o.querySelectorAll("[data-layer-eye]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const n=i.getAttribute("data-layer-eye"),s=e.camadas.find(l=>l.id===n);if(s){s.visible=s.visible===!1;const l=s.visible!==!1;i.innerHTML=l?g.olhoAberto:g.olhoFechado,B(i,l?"Ocultar Camada":"Exibir Camada");const c=i.closest(".ui-layer-row");c&&c.classList.toggle("hidden-layer",!l),na(e,o),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-visibilidade",{camadaId:s.id,visivel:l})}})}),o.querySelectorAll("[data-layer-lock]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const n=i.getAttribute("data-layer-lock"),s=e.camadas.find(l=>l.id===n);s&&(s.locked=!s.locked,i.innerHTML=s.locked?g.cadeadoTrancado:g.cadeadoAberto,i.classList.toggle("ui-lock-open",!s.locked),B(i,s.locked?"Desbloquear Camada":"Bloquear Camada"),sa(e,o,s.id,s.locked===!0),e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-bloqueio",{camadaId:s.id,bloqueado:s.locked}))})}),o.querySelectorAll("[data-layer-fit]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const n=i.getAttribute("data-layer-fit");n&&e.dispararEvento("ui-camada-enquadrar",{camadaId:n})})}),o.querySelectorAll("[data-layer-settings]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const n=i.getAttribute("data-layer-settings");e.activeSettingsLayerId=e.activeSettingsLayerId===n?null:n,e.solicitarRenderizacao()})}),o.querySelectorAll("[data-layer-settings-close]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation(),e.activeSettingsLayerId=null,e.solicitarRenderizacao()})});const a=(i,t,n)=>{const s=e.camadas.find(d=>d.id===i);if(!s)return;const l=V(t,s.color||"#00E08A");s.color=l;const c=o.getElementById(`sample-color-${i}`);c&&(c.style.backgroundColor=l);const f=o.getElementById(`hex-color-${i}`);f&&(f.textContent=l.toUpperCase());const u=o.getElementById(`settings-drawer-${i}`);u&&u.style.setProperty("--drawer-cor-camada",l);const p=F(o,"data-layer-row",i);if(p){p.style.setProperty("--layer-active-color",l);const d=p.querySelector(".ui-col-colorbar");d&&(d.style.backgroundColor=l)}n?e.salvarLembrancaEstado():e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-cor",{camadaId:s.id,cor:l})};o.querySelectorAll("[data-layer-color-picker]").forEach(i=>{const t=i,n=s=>l=>{const c=t.getAttribute("data-layer-color-picker");if(!c)return;const f=l.target.value;a(c,f,s)};t.addEventListener("input",n(!1)),t.addEventListener("change",n(!0))});const r=(i,t)=>{const n=e.camadas.find(c=>c.id===i);if(!n)return;n.opacity=t;const s=o.getElementById(`badge-op-${i}`);s&&(s.textContent=`${Math.round(t*100)}%`);const l=F(o,"data-layer-opacity-slider",i);l&&parseFloat(l.value)!==t&&(l.value=String(t)),e.agendarSalvarLembranca(),e.dispararEvento("ui-camada-opacidade",{camadaId:n.id,opacidade:t})};o.querySelectorAll("[data-layer-opacity-slider]").forEach(i=>{i.addEventListener("input",t=>{const n=i.getAttribute("data-layer-opacity-slider");if(!n)return;const s=parseFloat(t.target.value);r(n,s)})}),o.querySelectorAll("[data-delete-layer]").forEach(i=>{let t=null;i.addEventListener("click",n=>{n.stopPropagation();const s=i.getAttribute("data-delete-layer");if(!s)return;if(i.classList.contains("confirming")){t&&clearTimeout(t),e.dispararEvento("ui-camada-excluida",{camadaId:s});const c=e.selectedFeatureIds.size;e.camadas.forEach(f=>{f.parentId===s&&(f.parentId=null)}),e.removerCamada(s),e.selectedFeatureIds.size!==c&&e.notificarMudancaSelecao()}else{i.classList.add("confirming");const c=i.querySelector(".ui-btn-label");c&&(c.textContent="Confirmar Exclusão?"),t=setTimeout(()=>{i.classList.remove("confirming"),c&&(c.textContent="Excluir Camada")},3500)}})}),o.querySelectorAll("[data-layer-parent-select]").forEach(i=>{i.addEventListener("change",t=>{const n=t.target,s=n.getAttribute("data-layer-parent-select"),l=n.value||null,c=e.camadas.find(f=>f.id===s);c&&(c.parentId=l,e.salvarLembrancaEstado(),e.dispararEvento("ui-camada-mover-hierarquia",{camadaId:c.id,novoParentId:l,camada:c}),e.solicitarRenderizacao())})}),o.querySelectorAll("[data-add-sublayer]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const n=i.getAttribute("data-add-sublayer");e.dispararEvento("ui-camada-adicionar",{parentId:n})})}),o.querySelectorAll("[data-layer-target]").forEach(i=>{i.addEventListener("click",t=>{t.stopPropagation();const n=t,s=i.getAttribute("data-layer-target"),l=Y(e.feicoes.filter(f=>f.layerId===s),e.searchQuery);if(l.length===0)return;l.every(f=>e.selectedFeatureIds.has(f.id))?l.forEach(f=>e.selectedFeatureIds.delete(f.id)):(!n.ctrlKey&&!n.metaKey&&e.selectedFeatureIds.clear(),l.forEach(f=>e.selectedFeatureIds.add(f.id))),e.lastClickedFeatureId=l[l.length-1].id,e.sincronizarSelecaoDOM(),e.notificarMudancaSelecao()})})}function na(e,o){const a=o.getElementById("btn-toggle-all-vis");if(!a)return;const r=e.camadas.every(i=>i.visible!==!1);a.innerHTML=r?g.olhoAberto:g.olhoFechado,B(a,r?"Ocultar Todas as Camadas":"Exibir Todas as Camadas")}function sa(e,o,a,r){e.feicoes.filter(i=>i.layerId===a).forEach(i=>{const t=F(o,"data-feat-lock",i.id);if(!t)return;const n=i.locked===!0||r;t.innerHTML=n?g.cadeadoTrancado:g.cadeadoAberto,t.classList.toggle("ui-lock-open",!n),r?t.setAttribute("data-locked-by-layer","true"):t.removeAttribute("data-locked-by-layer"),B(t,r?"Bloqueada pela camada":n?"Desbloquear Feição":"Bloquear Feição")})}function la(e,o){const a=o.getElementById("btn-footer-vis");a&&a.addEventListener("click",()=>{const u=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));if(u.length===0)return;const d=!u.some(m=>m.visible!==!1);u.forEach(m=>m.visible=d),e.dispararEvento("ui-acao-massa",{acao:"visibilidade",feicoesIds:u.map(m=>m.id),feicoes:u,valor:d}),e.solicitarRenderizacao()});const r=o.getElementById("btn-footer-lock");r&&r.addEventListener("click",()=>{const u=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));if(u.length===0)return;const d=!u.some(m=>m.locked===!0);u.forEach(m=>m.locked=d),e.dispararEvento("ui-acao-massa",{acao:"bloqueio",feicoesIds:u.map(m=>m.id),feicoes:u,valor:d}),e.solicitarRenderizacao()});const i=o.getElementById("input-footer-color"),t=o.getElementById("preview-footer-color");i&&(i.addEventListener("input",u=>{const p=u.target.value;t&&(t.style.backgroundColor=p)}),i.addEventListener("change",u=>{const p=u.target.value;t&&(t.style.backgroundColor=p);const d=e.feicoes.filter(m=>e.selectedFeatureIds.has(m.id));d.length!==0&&(d.forEach(m=>{m.color=p,m.style={...m.style||{},fillColor:p,strokeColor:p}}),e.dispararEvento("ui-acao-massa",{acao:"cor",feicoesIds:d.map(m=>m.id),feicoes:d,valor:p}),e.solicitarRenderizacao())}));const n=o.getElementById("select-footer-move");n&&n.addEventListener("change",u=>{const p=u.target.value;if(!p)return;const d=e.feicoes.filter(h=>e.selectedFeatureIds.has(h.id));if(d.length===0)return;const m=new Map(d.map(h=>[h.id,h.layerId]));d.forEach(h=>h.layerId=p),d.forEach(h=>{m.get(h.id)!==p&&e.dispararEvento("ui-feicao-movida",{feicaoId:h.id,camadaOrigemId:m.get(h.id),camadaDestinoId:p,feicao:h})}),e.dispararEvento("ui-acao-massa",{acao:"mover",feicoesIds:d.map(h=>h.id),feicoes:d,valor:p}),e.solicitarRenderizacao()});const s=o.getElementById("btn-footer-new-layer");s&&s.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const l=o.getElementById("btn-footer-new-group");l&&l.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const c=o.getElementById("btn-footer-del");if(c){let u=null;const p="Excluir selecionados";c.addEventListener("click",()=>{const d=Array.from(e.selectedFeatureIds);if(d.length===0)return;if(!c.classList.contains("confirming")){c.classList.add("confirming"),B(c,`Clique novamente para excluir ${d.length} selecionado(s)`),u=setTimeout(()=>{c.classList.remove("confirming"),B(c,p)},3500);return}u&&clearTimeout(u);const m=e.feicoes.filter(h=>e.selectedFeatureIds.has(h.id));e.feicoes=e.feicoes.filter(h=>!e.selectedFeatureIds.has(h.id)),e.selectedFeatureIds.clear(),e.lastClickedFeatureId=null,e.dispararEvento("ui-acao-massa",{acao:"excluir",feicoesIds:d,feicoes:m}),e.notificarMudancaSelecao(),e.solicitarRenderizacao()})}const f=o.getElementById("btn-footer-clear");f&&f.addEventListener("click",()=>e.limparSelecao(!0))}function ca(e,o){const a=o.getElementById("btn-toggle-all-vis");a&&a.addEventListener("click",()=>e.alternarVisibilidadeTodas(!0));const r=o.getElementById("btn-toggle-all-expand");r&&r.addEventListener("click",s=>{s.stopPropagation(),e.camadas.length>0&&e.camadas.every(c=>e.expandedLayers.has(c.id))?e.colapsarTodas():e.expandirTodas()});const i=o.getElementById("btn-add-layer");i&&i.addEventListener("click",()=>{e.dispararEvento("ui-camada-adicionar",{})});const t=o.getElementById("btn-add-group");t&&t.addEventListener("click",()=>{e.dispararEvento("ui-camada-grupo-adicionar",{isGroup:!0})});const n=o.getElementById("btn-colapsar");n&&n.addEventListener("click",()=>e.colapsar(!0)),da(e,o)}function da(e,o){const a=o.getElementById("input-layer-search"),r=o.getElementById("btn-clear-layer-search"),i=()=>{var t;e.searchQuery="",e.solicitarRenderizacao(),(t=o.getElementById("input-layer-search"))==null||t.focus()};if(a){const t=ye(()=>e.solicitarRenderizacao(),75);a.addEventListener("input",n=>{e.searchQuery=n.target.value,t()}),a.addEventListener("keydown",n=>{n.key==="Escape"&&e.searchQuery&&(n.preventDefault(),i())})}r&&r.addEventListener("click",i)}function ua(e,o){o.querySelectorAll("[data-feat-select]").forEach(a=>{a.addEventListener("click",r=>{if(e.editingFeatureId)return;const i=r;if(i.target.closest("[data-feat-eye], [data-feat-lock], [data-feat-fit], [data-feat-target], input, button"))return;const n=a.getAttribute("data-feat-select");n&&e.selecionarFeicao(n,i.ctrlKey||i.metaKey,i.shiftKey,!0)})}),o.querySelectorAll("[data-feat-target]").forEach(a=>{a.addEventListener("click",r=>{r.stopPropagation();const i=r,t=a.getAttribute("data-feat-target");t&&e.selecionarFeicao(t,i.ctrlKey||i.metaKey,i.shiftKey,!0)})}),o.querySelectorAll("[data-feat-eye]").forEach(a=>{a.addEventListener("click",r=>{r.stopPropagation();const i=a.getAttribute("data-feat-eye"),t=e.feicoes.find(n=>n.id===i);if(t){t.visible=t.visible===!1;const n=t.visible!==!1;a.innerHTML=n?g.olhoAberto:g.olhoFechado,B(a,n?"Ocultar Feição":"Exibir Feição");const s=a.closest(".ui-feat-row");s&&s.classList.toggle("hidden-row",!n),e.dispararEvento("ui-feicao-visibilidade",{feicaoId:t.id,visivel:n})}})}),o.querySelectorAll("[data-feat-lock]").forEach(a=>{a.addEventListener("click",r=>{if(r.stopPropagation(),a.hasAttribute("data-locked-by-layer"))return;const i=a.getAttribute("data-feat-lock"),t=e.feicoes.find(n=>n.id===i);t&&(t.locked=!t.locked,a.innerHTML=t.locked?g.cadeadoTrancado:g.cadeadoAberto,a.classList.toggle("ui-lock-open",!t.locked),B(a,t.locked?"Desbloquear Feição":"Bloquear Feição"),e.dispararEvento("ui-feicao-bloqueio",{feicaoId:t.id,bloqueado:t.locked}))})}),o.querySelectorAll("[data-feat-fit]").forEach(a=>{a.addEventListener("click",r=>{r.stopPropagation();const i=a.getAttribute("data-feat-fit");i&&e.dispararEvento("ui-feicao-enquadrar",{feicaoId:i})})})}function pa(e,o){o.querySelectorAll("[data-basemap-thumb]").forEach(a=>{a.addEventListener("error",()=>{const r=document.createElement("div");r.className="ui-basemap-preview-none",r.innerHTML=g.mapa,a.replaceWith(r)},{once:!0})}),o.querySelectorAll("[data-basemap-id]").forEach(a=>{a.addEventListener("click",()=>{const r=a.getAttribute("data-basemap-id");r&&e.selecionarMapaBase(r,!0)})})}function fa(e,o){ca(e,o),oa(e,o),ua(e,o),pa(e,o),la(e,o)}const ma='[role="button"][tabindex]',O="[data-layer-row], [data-feat-row]",ha=["color","range","checkbox","radio","button"];function Te(e){return e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?!0:e instanceof HTMLInputElement&&!ha.includes(e.type)}function ga(e){return Array.from(e.querySelectorAll(O)).filter(o=>{const a=o.closest(".ui-children-container");return!(a&&a.style.display==="none")&&!o.classList.contains("ui-search-hidden")})}function H(e,o){o&&(e.querySelectorAll(O).forEach(a=>a.setAttribute("tabindex","-1")),o.setAttribute("tabindex","0"),o.focus())}function va(e,o){e.dispatchEvent(new MouseEvent("click",{bubbles:!0,ctrlKey:o.ctrlKey||o.metaKey,shiftKey:o.shiftKey}))}function ba(e,o,a){var r;if(!Te(a.composedPath()[0])){if(e.activeSettingsLayerId){a.preventDefault();const i=e.activeSettingsLayerId;e.activeSettingsLayerId=null,e.solicitarRenderizacao(),(r=F(o,"data-layer-settings",i))==null||r.focus();return}e.selectedFeatureIds.size>0&&(a.preventDefault(),e.limparSelecao(!0))}}function xa(e,o,a){var n;const r=a.composedPath()[0];if(!(r instanceof HTMLElement)||Te(r))return;if((a.key==="Enter"||a.key===" ")&&r.matches(ma)){a.preventDefault(),r.click();return}if(!r.matches(O))return;const i=ga(e),t=i.indexOf(r);switch(a.key){case"ArrowDown":a.preventDefault(),H(e,i[Math.min(i.length-1,t+1)]);break;case"ArrowUp":a.preventDefault(),H(e,i[Math.max(0,t-1)]);break;case"Home":a.preventDefault(),H(e,i[0]);break;case"End":a.preventDefault(),H(e,i[i.length-1]);break;case"ArrowRight":case"ArrowLeft":{const s=r.getAttribute("data-layer-row");if(!s)return;const l=r.closest(".ui-layer-group"),c=(l==null?void 0:l.getAttribute("aria-expanded"))==="true";a.key==="ArrowRight"!==c&&(a.preventDefault(),(n=F(o,"data-layer-expand",s))==null||n.click());break}case"Enter":case" ":a.preventDefault(),va(r,a);break}}function ya(e,o,a,r,i){i.add(o,"keydown",t=>{t.key==="Escape"&&ba(e,a,t)}),i.add(r,"keydown",t=>xa(r,a,t)),i.add(r,"focusin",t=>{const n=t.composedPath()[0];n instanceof HTMLElement&&n.matches(O)&&(r.querySelectorAll(O).forEach(s=>s.setAttribute("tabindex","-1")),n.setAttribute("tabindex","0"))})}function wa(e,o){o.querySelectorAll("[data-layer-row]").forEach(r=>{const t=r.getAttribute("data-layer-row")===e.camadaAtivaId;r.classList.toggle("active-drawing-layer",t);const n=r.querySelector(".ui-col-name");if(n){let s=n.querySelector(".ui-active-badge");if(t&&!s){s=document.createElement("span"),s.className="ui-active-badge",s.textContent="✓ Ativa";const l=n.querySelector(".ui-count-chip");l?n.insertBefore(s,l):n.appendChild(s)}else!t&&s&&s.remove()}})}function Ea(e,o){o.querySelectorAll(".ui-feat-row").forEach(v=>{const b=v.getAttribute("data-feat-row"),C=b?e.selectedFeatureIds.has(b):!1;v.classList.toggle("selected-row",C),v.setAttribute("aria-selected",String(C));const x=v.querySelector(".ui-target-circle");x&&x.classList.toggle("selected",C)}),o.querySelectorAll(".ui-layer-group").forEach(v=>{const b=v.getAttribute("data-layer-id"),C=e.feicoes.filter(y=>y.layerId===b),x=v.querySelector(".ui-layer-row .ui-target-circle");if(x&&C.length>0){const y=C.every(E=>e.selectedFeatureIds.has(E.id)),w=!y&&C.some(E=>e.selectedFeatureIds.has(E.id));x.classList.toggle("selected",y),x.classList.toggle("partial",w)}else x&&x.classList.remove("selected","partial")});const a=e.feicoes.filter(v=>e.selectedFeatureIds.has(v.id)),r=a.length>0,i=o.getElementById("footer-count"),t=o.getElementById("footer-label");i&&(i.textContent=String(r?a.length:e.camadas.length)),t&&(t.textContent=r?a.length>1?"selecionados":"selecionado":e.camadas.length>1?"camadas":"camada");const n=o.querySelector(".ui-footer-metric"),s=oe(a);n&&(s?(n.innerHTML=`${g.reguaMetrica} ${s}`,n.style.display="inline-flex"):n.style.display="none");const l=o.querySelector(".ui-tree-footer");l&&(l.classList.toggle("tem-selecao",r),l.classList.toggle("sem-selecao",!r));const c=o.querySelector(".ui-footer-actions-gerais");c&&(c.style.display=r?"none":"flex");const f=o.querySelector(".ui-footer-bulk-actions");f&&(f.style.display=r?"flex":"none"),["btn-footer-vis","btn-footer-lock","btn-footer-del"].forEach(v=>{const b=o.getElementById(v);b&&(b.disabled=!r,b.classList.toggle("disabled",!r))});const u=o.querySelector(".ui-footer-move-wrapper");u&&u.classList.toggle("disabled",!r);const p=o.getElementById("select-footer-move");p&&(p.disabled=!r);const d=o.querySelector(".ui-footer-color-wrapper");d&&d.classList.toggle("disabled",!r);const m=o.getElementById("input-footer-color");m&&(m.disabled=!r);let h=o.getElementById("btn-footer-clear");const I=o.querySelector(".ui-footer-right");r&&!h&&I?(h=document.createElement("button"),h.id="btn-footer-clear",h.className="ui-footer-btn btn-clear-footer",h.title="Limpar seleção",h.innerHTML=g.fechar,h.addEventListener("click",()=>e.limparSelecao(!0)),I.appendChild(h)):!r&&h&&h.remove()}function Aa(e){function r(){return e.getMinAltura?e.getMinAltura():140}function i(){return e.getMaxAltura?e.getMaxAltura():1600}function t(c,f=!1){if(c==null||c===""){e.hostElement.style.removeProperty("height"),e.hostElement.style.removeProperty("--ui-camadas-altura"),f&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:null}}));return}const u=typeof c=="number"?c:parseFloat(String(c));if(isNaN(u))return;const p=Math.max(r(),Math.min(i(),Math.round(u)));e.hostElement.style.height=`${p}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${p}px`),f&&e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:p}}))}let n=null;function s(){if(!e.resizerElement)return;let c=!1,f=0,u=0;const p=m=>{if(m.button!==0)return;m.preventDefault(),m.stopPropagation(),c=!0,f=m.clientY,u=e.hostElement.getBoundingClientRect().height,e.resizerElement.classList.add("ui-camadas-resizer--ativo"),e.hostElement.classList.add("ui-camadas--redimensionando");try{e.resizerElement.setPointerCapture(m.pointerId)}catch{}const h=b=>{if(!c)return;b.preventDefault();const C=b.clientY-f,x=Math.max(r(),Math.min(i(),Math.round(u+C)));e.hostElement.style.height=`${x}px`,e.hostElement.style.setProperty("--ui-camadas-altura",`${x}px`),e.onRedimensionando&&e.onRedimensionando(x),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionando-altura",{bubbles:!0,composed:!0,detail:{altura:x}}))},I=()=>{var b;c=!1,n=null,window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",v),(b=e.resizerElement)==null||b.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando")},v=b=>{if(!c)return;c=!1,e.resizerElement.classList.remove("ui-camadas-resizer--ativo"),e.hostElement.classList.remove("ui-camadas--redimensionando");try{e.resizerElement.hasPointerCapture(b.pointerId)&&e.resizerElement.releasePointerCapture(b.pointerId)}catch{}window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",v);const C=e.hostElement.getBoundingClientRect().height,x=Math.round(C);e.onAlturaAlterada&&e.onAlturaAlterada(x),e.hostElement.dispatchEvent(new CustomEvent("ui-redimensionar-altura",{bubbles:!0,composed:!0,detail:{altura:x}}))};n=I,window.addEventListener("pointermove",h),window.addEventListener("pointerup",v),window.addEventListener("pointercancel",v)},d=m=>{m.preventDefault(),m.stopPropagation(),t(null,!0),e.onAlturaAlterada&&e.onAlturaAlterada(null)};e.listeners.add(e.resizerElement,"pointerdown",p),e.listeners.add(e.resizerElement,"dblclick",d)}function l(){n==null||n(),e.listeners.cleanup()}return{init:s,definirAltura:t,destruir:l}}const P=class P extends K.SafeHTMLElement{constructor(){super();A(this,"shadow");A(this,"listeners",new Je.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,"camadasRemovidas",new Set);A(this,"origensCamadas",new Map);A(this,"salvarLembrancaDebounced",ye(()=>this.salvarLembrancaEstado(),200));A(this,"camadas",[]);A(this,"feicoes",[]);A(this,"mapasBase",[...ne]);A(this,"expandedLayers",new Set);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=`
|
|
315
|
+
<style>${ia}</style>
|
|
316
316
|
<div class="ui-camadas-container" id="panel-container" role="region" aria-label="Painel de Camadas">
|
|
317
317
|
<div class="ui-camadas-corpo" id="painel-corpo"></div>
|
|
318
318
|
<div class="ui-camadas-resizer-altura" id="resizer-altura" title="Arraste para redimensionar a altura (duplo-clique para resetar)" aria-label="Redimensionar altura">
|
|
@@ -322,8 +322,8 @@
|
|
|
322
322
|
<button class="ui-camadas-toggle-flutuante" id="btn-expandir-flutuante" title="Expandir Painel de Camadas" aria-label="Expandir Painel de Camadas">
|
|
323
323
|
${g.camadas}
|
|
324
324
|
</button>
|
|
325
|
-
`,this.corpoElement=this.shadow.getElementById("painel-corpo"),this.btnExpandirFlutuante=this.shadow.getElementById("btn-expandir-flutuante"),this.dragDropManager=new Ce(this,this.shadow);const a=this.shadow.getElementById("resizer-altura");this.resizerController=ba({hostElement:this,resizerElement:a,listeners:this.listeners,getMinAltura:()=>{const r=this.getAttribute("min-altura");return r&&parseFloat(r)||140},getMaxAltura:()=>{const r=this.getAttribute("max-altura");return r&&parseFloat(r)||1600},onAlturaAlterada:r=>{this.alturaCustomizada=r,this.salvarLembrancaEstado()}})}static get observedAttributes(){return["titulo","mapa-base-ativo","camada-ativa","aba-ativa","colapsavel","colapsado","flutuante","mostrar-mapas-base","mostrar-rodape","mostrar-busca","densidade","persistir","storage-key","redimensionavel","redimensionavel-altura","altura","min-altura","max-altura"]}connectedCallback(){if(this.persistir){const a=U(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&&(q.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."),q.instanciasChavePadrao.add(this)),this.resizerController.init(),this.render(),this.conectarEventosGerais(),ha(this,this,this.shadow,this.corpoElement,this.listeners),this.conectado=!0,this.camadas.length>0&&this.salvarLembrancaEstado()}disconnectedCallback(){var a;this.conectado=!1,q.instanciasChavePadrao.delete(this),(a=this.resizerController)==null||a.destruir(),this.listeners.cleanup()}attributeChangedCallback(a,r,i){var t;r!==i&&(a==="colapsado"?this.salvarLembrancaEstado():a==="camada-ativa"?(this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado()):a==="mapa-base-ativo"?i&&this.marcarMapaBaseAtivoNoDOM(i):a==="mostrar-mapas-base"||a==="mostrar-rodape"||a==="mostrar-busca"||a==="colapsavel"||a==="flutuante"?this.solicitarRenderizacao():a==="altura"&&((t=this.resizerController)==null||t.definirAltura(i,!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,r=!1){!a||this.mapaBaseAtivo===a||(this.mapaBaseAtivo=a,this.marcarMapaBaseAtivoNoDOM(a),this.salvarLembrancaEstado(),r&&this.dispararEvento("ui-mapa-base-alterado",{mapaBaseId:a}))}marcarMapaBaseAtivoNoDOM(a){this.shadow.querySelectorAll("[data-basemap-id]").forEach(r=>{const i=r.getAttribute("data-basemap-id")===a;r.classList.toggle("active",i),r.setAttribute("aria-pressed",String(i))})}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,r=!0){var t;(t=this.resizerController)==null||t.definirAltura(a,!1);const i=a!==null?parseFloat(String(a)):null;this.alturaCustomizada=isNaN(i)?null:i,r&&this.salvarLembrancaEstado()}obterChaveStorageAtual(){return $e(this.storageKey,this.id)}agendarSalvarLembranca(){this.salvarLembrancaDebounced()}salvarLembrancaEstado(){if(!this.persistir||!this.conectado)return;const a=this.obterChaveStorageAtual(),r=Fe({estadoAnterior:U(a),origensCamadas:this.origensCamadas,camadas:this.camadas,expandedLayers:this.expandedLayers,camadaAtivaId:this.camadaAtivaId,painelColapsado:this.colapsado,mapaBaseAtivo:this.mapaBaseAtivo,densidade:this.densidade,altura:this.alturaCustomizada,camadasRemovidas:this.camadasRemovidas});this.camadasRemovidas.clear(),Se(a,r)}limparLembranca(){Me(this.obterChaveStorageAtual())}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)}achatarCamadas(a,r=null){const i=[];for(const t of a){const s={...t};r&&s.parentId===void 0&&(s.parentId=r),i.push(s),Array.isArray(t.children)&&t.children.length>0&&i.push(...this.achatarCamadas(t.children,t.id))}return i}definirCamadas(a,r){if(this.camadas=Array.isArray(a)?this.achatarCamadas(a):[],this.origensCamadas.clear(),this.persistir){const t=U(this.obterChaveStorageAtual());ze(this.camadas,t,this.expandedLayers,this.origensCamadas),t!=null&&t.camadaAtivaId&&this.camadas.some(s=>s.id===t.camadaAtivaId)&&(this.camadaAtivaId=t.camadaAtivaId)}else this.camadas.forEach(t=>{this.origensCamadas.set(t.id,_(t)),this.expandedLayers.has(t.id)||this.expandedLayers.add(t.id)});if(Array.isArray(r)){this.feicoes=r.map(n=>({...n}));const t=new Set(this.camadas.map(n=>n.id)),s=this.feicoes.filter(n=>n.layerId&&!t.has(n.layerId));s.length>0&&console.warn(`[UI-Camadas] ${s.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,s.map(n=>({id:n.id,nome:n.name,layerId:n.layerId}))),this.sincronizarSelecoesComFeicoesValidas()}const i=this.getAttribute("camada-ativa");this.camadas.length>0&&(!i||!this.camadas.some(t=>t.id===i))&&(this.camadaAtivaId=this.camadas[0].id),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}definirFeicoes(a){this.feicoes=Array.isArray(a)?a.map(r=>({...r})):[],this.sincronizarSelecoesComFeicoesValidas(),this.solicitarRenderizacao()}definirMapasBase(a){this.mapasBase=Array.isArray(a)?[...a]:[],this.solicitarRenderizacao()}definirCamadaAtiva(a,r=!1){!a||this.camadaAtivaId===a||(this.camadaAtivaId=a,this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado(),r&&this.dispararEvento("ui-camada-selecionada",{camadaId:a,camada:this.camadas.find(i=>i.id===a)}))}obterCamada(a){return this.camadas.find(r=>r.id===a)}obterCamadaAtiva(){return this.camadas.find(a=>a.id===this.camadaAtivaId)}obterFeicao(a){return this.feicoes.find(r=>r.id===a)}obterFeicoesSelecionadas(){return this.feicoes.filter(a=>this.selectedFeatureIds.has(a.id))}adicionarCamada(a){if(!a||!a.id)return;if(this.camadas.some(i=>i.id===a.id)){console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${a.id}'.`);return}const r={...a};this.camadas.push(r),this.origensCamadas.set(r.id,_(r)),this.expandedLayers.add(r.id),r.parentId&&this.expandedLayers.add(r.parentId),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}removerCamada(a){var r;this.camadas.forEach(i=>{i.parentId===a&&(i.parentId=null)}),this.camadas=this.camadas.filter(i=>i.id!==a),this.feicoes=this.feicoes.filter(i=>i.layerId!==a),this.origensCamadas.delete(a),this.camadasRemovidas.add(a),this.expandedLayers.delete(a),this.activeSettingsLayerId===a&&(this.activeSettingsLayerId=null),this.sincronizarSelecoesComFeicoesValidas(),this.selectedFeatureIds.size===0&&(this.lastClickedFeatureId=null),this.camadaAtivaId===a&&(this.camadaAtivaId=((r=this.camadas[0])==null?void 0:r.id)??null),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}adicionarFeicao(a){if(!(!a||!a.id)){if(this.feicoes.some(r=>r.id===a.id)){console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${a.id}'.`);return}this.feicoes.push({...a}),this.solicitarRenderizacao()}}atualizarFeicao(a){const r=this.feicoes.findIndex(i=>i.id===a.id);r!==-1&&(this.feicoes[r]={...this.feicoes[r],...a},this.solicitarRenderizacao())}removerFeicao(a){this.feicoes=this.feicoes.filter(r=>r.id!==a),this.selectedFeatureIds.delete(a),this.solicitarRenderizacao()}selecionarFeicao(a,r=!1,i=!1,t=!1){const s=we(this.camadas,this.feicoes,this.expandedLayers,this.searchQuery),n=!i&&!s.includes(a)&&this.feicoes.some(c=>c.id===a),l=Ee(n?[...s,a]:s,this.selectedFeatureIds,this.lastClickedFeatureId,a,r,i);l&&(this.selectedFeatureIds=l.selecionados,this.lastClickedFeatureId=l.ultimoClicadoId,this.sincronizarSelecaoDOM(),t&&this.notificarMudancaSelecao())}selecionarFeicoes(a,r=!1){const i=a||[];i.length===this.selectedFeatureIds.size&&i.every(n=>this.selectedFeatureIds.has(n))||(this.selectedFeatureIds.clear(),i.forEach(n=>this.selectedFeatureIds.add(n)),this.lastClickedFeatureId=i.length>0?i[i.length-1]:null,this.sincronizarSelecaoDOM(),r&&this.notificarMudancaSelecao())}limparSelecao(a=!1){this.selectedFeatureIds.size!==0&&(this.selectedFeatureIds.clear(),this.lastClickedFeatureId=null,this.sincronizarSelecaoDOM(),a&&this.notificarMudancaSelecao())}expandirTodas(){this.expandedLayers=new Set(this.camadas.map(a=>a.id)),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsarTodas(){this.expandedLayers.clear(),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}alternarVisibilidadeTodas(a=!1){const i=!this.camadas.some(t=>t.visible!==!1);this.camadas.forEach(t=>{t.visible=i,a&&this.dispararEvento("ui-camada-visibilidade",{camadaId:t.id,visivel:i})}),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsar(a=!1){this.definirColapso(!0,a)}expandir(a=!1){this.definirColapso(!1,a)}alternarColapso(a=!1){this.definirColapso(!this.colapsado,a)}definirColapso(a,r){this.colapsado!==a&&(this.colapsado=a,r&&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,r){this.dispatchEvent(new CustomEvent(a,{detail:r,bubbles:!0,composed:!0}))}render(){var d,m;if(!this.corpoElement)return;const a=Le({camadas:this.camadas,feicoes:this.feicoes,camadaAtivaId:this.camadaAtivaId,expandedLayers:this.expandedLayers,selectedFeatureIds:this.selectedFeatureIds,activeSettingsLayerId:this.activeSettingsLayerId,editingLayerId:this.editingLayerId,editingFeatureId:this.editingFeatureId,searchQuery:this.searchQuery,mostrarBotaoColapsar:this.flutuante&&this.getAttribute("colapsavel")!=="false"}),r=this.mostrarMapasBase?be(this.mapasBase,this.mapaBaseAtivo):"",i=this.mostrarRodape?ye(this.camadas,this.feicoes,this.selectedFeatureIds):"",t=this.shadow.getElementById("ui-layer-tree-mount"),s=this.corpoElement.scrollTop,n=t?t.scrollTop:0,l=this.shadow.activeElement,c=l&&this.corpoElement.contains(l)?l.id:"",f=l&&!c&&this.corpoElement.contains(l)?Array.from(l.attributes).find(h=>h.name.startsWith("data-")&&h.value!==""):void 0,u=l&&"selectionStart"in l?l.selectionStart:null;this.corpoElement.innerHTML=`
|
|
325
|
+
`,this.corpoElement=this.shadow.getElementById("painel-corpo"),this.btnExpandirFlutuante=this.shadow.getElementById("btn-expandir-flutuante"),this.dragDropManager=new ze(this,this.shadow);const a=this.shadow.getElementById("resizer-altura");this.resizerController=Aa({hostElement:this,resizerElement:a,listeners:this.listeners,getMinAltura:()=>{const r=this.getAttribute("min-altura");return r&&parseFloat(r)||140},getMaxAltura:()=>{const r=this.getAttribute("max-altura");return r&&parseFloat(r)||1600},onAlturaAlterada:r=>{this.alturaCustomizada=r,this.salvarLembrancaEstado()}})}static get observedAttributes(){return["titulo","mapa-base-ativo","camada-ativa","aba-ativa","colapsavel","colapsado","flutuante","mostrar-mapas-base","mostrar-rodape","mostrar-busca","densidade","persistir","storage-key","redimensionavel","redimensionavel-altura","altura","min-altura","max-altura"]}connectedCallback(){if(this.persistir){const a=U(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&&(P.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."),P.instanciasChavePadrao.add(this)),this.resizerController.init(),this.render(),this.conectarEventosGerais(),ya(this,this,this.shadow,this.corpoElement,this.listeners),this.conectado=!0,this.camadas.length>0&&this.salvarLembrancaEstado()}disconnectedCallback(){var a;this.conectado=!1,P.instanciasChavePadrao.delete(this),(a=this.resizerController)==null||a.destruir(),this.listeners.cleanup()}attributeChangedCallback(a,r,i){var t;r!==i&&(a==="colapsado"?this.salvarLembrancaEstado():a==="camada-ativa"?(this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado()):a==="mapa-base-ativo"?i&&this.marcarMapaBaseAtivoNoDOM(i):a==="mostrar-mapas-base"||a==="mostrar-rodape"||a==="mostrar-busca"||a==="colapsavel"||a==="flutuante"?this.solicitarRenderizacao():a==="altura"&&((t=this.resizerController)==null||t.definirAltura(i,!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,r=!1){!a||this.mapaBaseAtivo===a||(this.mapaBaseAtivo=a,this.marcarMapaBaseAtivoNoDOM(a),this.salvarLembrancaEstado(),r&&this.dispararEvento("ui-mapa-base-alterado",{mapaBaseId:a}))}marcarMapaBaseAtivoNoDOM(a){this.shadow.querySelectorAll("[data-basemap-id]").forEach(r=>{const i=r.getAttribute("data-basemap-id")===a;r.classList.toggle("active",i),r.setAttribute("aria-pressed",String(i))})}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,r=!0){var t;(t=this.resizerController)==null||t.definirAltura(a,!1);const i=a!==null?parseFloat(String(a)):null;this.alturaCustomizada=isNaN(i)?null:i,r&&this.salvarLembrancaEstado()}obterChaveStorageAtual(){return Fe(this.storageKey,this.id)}agendarSalvarLembranca(){this.salvarLembrancaDebounced()}salvarLembrancaEstado(){if(!this.persistir||!this.conectado)return;const a=this.obterChaveStorageAtual(),r=De({estadoAnterior:U(a),origensCamadas:this.origensCamadas,camadas:this.camadas,expandedLayers:this.expandedLayers,camadaAtivaId:this.camadaAtivaId,painelColapsado:this.colapsado,mapaBaseAtivo:this.mapaBaseAtivo,densidade:this.densidade,altura:this.alturaCustomizada,camadasRemovidas:this.camadasRemovidas});this.camadasRemovidas.clear(),Be(a,r)}limparLembranca(){qe(this.obterChaveStorageAtual())}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)}achatarCamadas(a,r=null){const i=[];for(const t of a){const n={...t};r&&n.parentId===void 0&&(n.parentId=r),i.push(n),Array.isArray(t.children)&&t.children.length>0&&i.push(...this.achatarCamadas(t.children,t.id))}return i}definirCamadas(a,r){if(this.camadas=Array.isArray(a)?this.achatarCamadas(a):[],this.origensCamadas.clear(),this.persistir){const t=U(this.obterChaveStorageAtual());Pe(this.camadas,t,this.expandedLayers,this.origensCamadas),t!=null&&t.camadaAtivaId&&this.camadas.some(n=>n.id===t.camadaAtivaId)&&(this.camadaAtivaId=t.camadaAtivaId)}else this.camadas.forEach(t=>{this.origensCamadas.set(t.id,_(t)),this.expandedLayers.has(t.id)||this.expandedLayers.add(t.id)});if(Array.isArray(r)){this.feicoes=r.map(s=>({...s}));const t=new Set(this.camadas.map(s=>s.id)),n=this.feicoes.filter(s=>s.layerId&&!t.has(s.layerId));n.length>0&&console.warn(`[UI-Camadas] ${n.length} feição(ões) possuem 'layerId' não cadastrado nas camadas:`,n.map(s=>({id:s.id,nome:s.name,layerId:s.layerId}))),this.sincronizarSelecoesComFeicoesValidas()}const i=this.getAttribute("camada-ativa");this.camadas.length>0&&(!i||!this.camadas.some(t=>t.id===i))&&(this.camadaAtivaId=this.camadas[0].id),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}definirFeicoes(a){this.feicoes=Array.isArray(a)?a.map(r=>({...r})):[],this.sincronizarSelecoesComFeicoesValidas(),this.solicitarRenderizacao()}definirMapasBase(a){this.mapasBase=Array.isArray(a)?[...a]:[],this.solicitarRenderizacao()}definirCamadaAtiva(a,r=!1){!a||this.camadaAtivaId===a||(this.camadaAtivaId=a,this.sincronizarCamadaAtivaDOM(),this.salvarLembrancaEstado(),r&&this.dispararEvento("ui-camada-selecionada",{camadaId:a,camada:this.camadas.find(i=>i.id===a)}))}obterCamada(a){return this.camadas.find(r=>r.id===a)}obterCamadaAtiva(){return this.camadas.find(a=>a.id===this.camadaAtivaId)}obterFeicao(a){return this.feicoes.find(r=>r.id===a)}obterFeicoesSelecionadas(){return this.feicoes.filter(a=>this.selectedFeatureIds.has(a.id))}adicionarCamada(a){if(!a||!a.id)return;if(this.camadas.some(i=>i.id===a.id)){console.warn(`[UI-Camadas] adicionarCamada ignorado: já existe uma camada com id '${a.id}'.`);return}const r={...a};this.camadas.push(r),this.origensCamadas.set(r.id,_(r)),this.expandedLayers.add(r.id),r.parentId&&this.expandedLayers.add(r.parentId),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}removerCamada(a){var r;this.camadas.forEach(i=>{i.parentId===a&&(i.parentId=null)}),this.camadas=this.camadas.filter(i=>i.id!==a),this.feicoes=this.feicoes.filter(i=>i.layerId!==a),this.origensCamadas.delete(a),this.camadasRemovidas.add(a),this.expandedLayers.delete(a),this.activeSettingsLayerId===a&&(this.activeSettingsLayerId=null),this.sincronizarSelecoesComFeicoesValidas(),this.selectedFeatureIds.size===0&&(this.lastClickedFeatureId=null),this.camadaAtivaId===a&&(this.camadaAtivaId=((r=this.camadas[0])==null?void 0:r.id)??null),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}adicionarFeicao(a){if(!(!a||!a.id)){if(this.feicoes.some(r=>r.id===a.id)){console.warn(`[UI-Camadas] adicionarFeicao ignorado: já existe uma feição com id '${a.id}'.`);return}this.feicoes.push({...a}),this.solicitarRenderizacao()}}atualizarFeicao(a){const r=this.feicoes.findIndex(i=>i.id===a.id);r!==-1&&(this.feicoes[r]={...this.feicoes[r],...a},this.solicitarRenderizacao())}removerFeicao(a){this.feicoes=this.feicoes.filter(r=>r.id!==a),this.selectedFeatureIds.delete(a),this.solicitarRenderizacao()}selecionarFeicao(a,r=!1,i=!1,t=!1){const n=ke(this.camadas,this.feicoes,this.expandedLayers,this.searchQuery),s=!i&&!n.includes(a)&&this.feicoes.some(c=>c.id===a),l=Ie(s?[...n,a]:n,this.selectedFeatureIds,this.lastClickedFeatureId,a,r,i);l&&(this.selectedFeatureIds=l.selecionados,this.lastClickedFeatureId=l.ultimoClicadoId,this.sincronizarSelecaoDOM(),t&&this.notificarMudancaSelecao())}selecionarFeicoes(a,r=!1){const i=a||[];i.length===this.selectedFeatureIds.size&&i.every(s=>this.selectedFeatureIds.has(s))||(this.selectedFeatureIds.clear(),i.forEach(s=>this.selectedFeatureIds.add(s)),this.lastClickedFeatureId=i.length>0?i[i.length-1]:null,this.sincronizarSelecaoDOM(),r&&this.notificarMudancaSelecao())}limparSelecao(a=!1){this.selectedFeatureIds.size!==0&&(this.selectedFeatureIds.clear(),this.lastClickedFeatureId=null,this.sincronizarSelecaoDOM(),a&&this.notificarMudancaSelecao())}expandirTodas(){this.expandedLayers=new Set(this.camadas.map(a=>a.id)),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsarTodas(){this.expandedLayers.clear(),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}alternarVisibilidadeTodas(a=!1){const i=!this.camadas.some(t=>t.visible!==!1);this.camadas.forEach(t=>{t.visible=i,a&&this.dispararEvento("ui-camada-visibilidade",{camadaId:t.id,visivel:i})}),this.salvarLembrancaEstado(),this.solicitarRenderizacao()}colapsar(a=!1){this.definirColapso(!0,a)}expandir(a=!1){this.definirColapso(!1,a)}alternarColapso(a=!1){this.definirColapso(!this.colapsado,a)}definirColapso(a,r){this.colapsado!==a&&(this.colapsado=a,r&&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,r){this.dispatchEvent(new CustomEvent(a,{detail:r,bubbles:!0,composed:!0}))}render(){var d,m;if(!this.corpoElement)return;const a=Me({camadas:this.camadas,feicoes:this.feicoes,camadaAtivaId:this.camadaAtivaId,expandedLayers:this.expandedLayers,selectedFeatureIds:this.selectedFeatureIds,activeSettingsLayerId:this.activeSettingsLayerId,editingLayerId:this.editingLayerId,editingFeatureId:this.editingFeatureId,searchQuery:this.searchQuery,mostrarBotaoColapsar:this.flutuante&&this.getAttribute("colapsavel")!=="false"}),r=this.mostrarMapasBase?we(this.mapasBase,this.mapaBaseAtivo):"",i=this.mostrarRodape?Ae(this.camadas,this.feicoes,this.selectedFeatureIds):"",t=this.shadow.getElementById("ui-layer-tree-mount"),n=this.corpoElement.scrollTop,s=t?t.scrollTop:0,l=this.shadow.activeElement,c=l&&this.corpoElement.contains(l)?l.id:"",f=l&&!c&&this.corpoElement.contains(l)?Array.from(l.attributes).find(h=>h.name.startsWith("data-")&&h.value!==""):void 0,u=l&&"selectionStart"in l?l.selectionStart:null;this.corpoElement.innerHTML=`
|
|
326
326
|
${a}
|
|
327
327
|
${i}
|
|
328
328
|
${r}
|
|
329
|
-
`,this.corpoElement.scrollTop=
|
|
329
|
+
`,this.corpoElement.scrollTop=n;const p=this.shadow.getElementById("ui-layer-tree-mount");if(p&&(p.scrollTop=s),c){const h=this.shadow.getElementById(c);if(h&&(h.focus({preventScroll:!0}),u!==null&&typeof h.setSelectionRange=="function"))try{h.setSelectionRange(u,u)}catch{}}!c&&f&&((d=F(this.corpoElement,f.name,f.value))==null||d.focus({preventScroll:!0})),(m=this.shadow.querySelector("[data-layer-row], [data-feat-row]"))==null||m.setAttribute("tabindex","0"),fa(this,this.shadow),this.dragDropManager.bindAll()}conectarEventosGerais(){this.listeners.add(this.btnExpandirFlutuante,"click",()=>this.expandir(!0))}sincronizarCamadaAtivaDOM(){wa(this,this.shadow)}sincronizarSelecaoDOM(){Ea(this,this.shadow)}sincronizarSelecoesComFeicoesValidas(){Le(this.selectedFeatureIds,this.feicoes)}notificarMudancaSelecao(){const a=this.feicoes.filter(r=>this.selectedFeatureIds.has(r.id));this.dispararEvento("ui-feicoes-selecionadas",{feicoesIds:Array.from(this.selectedFeatureIds),feicoes:a}),a.length===1?this.dispararEvento("ui-feicao-selecionada",{feicaoId:a[0].id,feicao:a[0]}):a.length===0&&this.dispararEvento("ui-feicao-selecionada",{feicaoId:null,feicao:null})}};A(P,"instanciasChavePadrao",new Set);let D=P;class Oe extends D{}class je extends D{}K.definirCustomElement("ui-camadas",D);K.definirCustomElement("ui-painel-camadas",Oe);K.definirCustomElement("ui-layer-panel",je);function ka(e){var o;return{id:e.id,name:e.nome||e.id,color:((o=e.estilo)==null?void 0:o.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 Ia(e,o="levantamento",a="feicoes"){return{id:e.id,nome:e.name,categoria:e.categoria||o,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 La(e,o=""){var t,n,s,l;const a=((t=e.geometria)==null?void 0:t.tipo)||((n=e.geometria)==null?void 0:n.type)||e.tipo||e.type||"Polygon",r=((s=e.geometria)==null?void 0:s.coordenadas)||((l=e.geometria)==null?void 0:l.coordinates)||e.coordinates,i=e.cor||e.color;return{id:String(e.id),name:e.nome||e.name||`Feição ${e.id}`,layerId:e.layerId||e.camadaId||o,type:a,geometryType:a,coordinates:r,color:i,visible:e.visivel!==void 0?e.visivel:e.visible!==!1,locked:e.bloqueada!==void 0?e.bloqueada:e.locked===!0,status:e.status||"oficial",category:e.categoria||e.category,properties:e.propriedades||e.properties||{}}}exports.UIMapaBase=be.UIMapaBase;exports.UISeletorMapaBase=be.UISeletorMapaBase;exports.CamadasDragDropManager=ze;exports.ICONES=g;exports.LIMITE_FEICOES_POR_CAMADA=se;exports.MAPAS_BASE_PADRAO=ne;exports.UICamadas=D;exports.UILayerPanel=je;exports.UIPainelCamadas=Oe;exports.calcularAreaAnelSimples=G;exports.calcularAreaPoligono=ie;exports.calcularComprimentoLinha=te;exports.calcularDistanciaPontos=xe;exports.calcularSelecaoFeicao=Ie;exports.carregarEstadoPersistido=U;exports.construirHierarquiaCamadas=Se;exports.converterCamadaItemParaCanvasLayer=Ia;exports.converterCanvasLayerParaCamadaItem=ka;exports.converterFeicaoParaItem=La;exports.escapeHtml=$;exports.filtrarFeicoesPorBusca=Y;exports.formatarMetricaFeicoes=oe;exports.formatarOpcoesCamadasHierarquicas=Ee;exports.gerarChaveStorage=Fe;exports.limparEstadoPersistido=qe;exports.montarEstadoPersistido=De;exports.obterIdsVisiveisFeicoes=ke;exports.reidratarCamadasComOverrides=Pe;exports.removerSelecoesInvalidas=Le;exports.renderizarArvoreCamadas=Me;exports.renderizarGridMapasBase=we;exports.renderizarRodapeAcoes=Ae;exports.renderizarThumbGeometria=$e;exports.salvarEstadoPersistido=Be;exports.snapshotCamada=_;
|